From 608721bdf9b5df38570e2dc99f5191592e7fe7f3 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 13:42:53 +0200 Subject: [PATCH 001/312] Bind with CrysFML --- .gitignore | 42 ++++ CHANGELOG.md | 1 + easyDiffractionLib/changes.yml | 13 ++ easyDiffractionLib/main.py | 15 ++ fort.1 | 275 +++++++++++++++++++++++ poetry.lock | 394 +++++++++++++++++++++++++++++++++ pyproject.toml | 31 +++ tests/description.txt | 0 8 files changed, 771 insertions(+) create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 easyDiffractionLib/changes.yml create mode 100644 easyDiffractionLib/main.py create mode 100644 fort.1 create mode 100644 poetry.lock create mode 100644 pyproject.toml create mode 100644 tests/description.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..8efa07b3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# QtCreator +*.autosave + +# QtCreator Qml +*.qmlproject.user +*.qmlproject.user.* + +# QtCreator Python +*.pyproject.user +*.pyproject.user.* + +# QtCreator CMake +CMakeLists.txt.user* + +# Python +__pycache__ +.venv +.coverage +.pyc + +# Poetry +dist +*.egg-info + +# PyInstaller +build +*.spec + +# Jupyter +.ipynb_checkpoints + +# macOS +.DS_Store +*.app +*.dmg + +# Misc +..* +*.log +*.zip +.ci/ +.idea/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1 @@ + diff --git a/easyDiffractionLib/changes.yml b/easyDiffractionLib/changes.yml new file mode 100644 index 00000000..f237908f --- /dev/null +++ b/easyDiffractionLib/changes.yml @@ -0,0 +1,13 @@ +added: + - Implement in-app CIF editor + - Add CIF syntax highlighting + - Add Bragg peaks info tooltips + - Add license page to the installer + - Add calculation results to the project + - Add more neutron diffraction examples +fixed: + - Fix axes ratio on the structure view +improved: + - Impove redability of the Fitables table + - Update project description tab + - Rename main and phases to project and samples diff --git a/easyDiffractionLib/main.py b/easyDiffractionLib/main.py new file mode 100644 index 00000000..7f8d4bd4 --- /dev/null +++ b/easyDiffractionLib/main.py @@ -0,0 +1,15 @@ +import os, sys + +import CFML_api +import matplotlib.pyplot as plt + + +def main(): + print("AAA") + powder_pattern = CFML_api.PowderPatternSimulator() + powder_pattern.compute("../CFML_api/Examples/Data/SrTiO3.cif") + plt.plot(powder_pattern.x, powder_pattern.y, label="CIF with default conditions") + plt.show() + +if __name__ == '__main__': + main() diff --git a/fort.1 b/fort.1 new file mode 100644 index 00000000..e880dd4d --- /dev/null +++ b/fort.1 @@ -0,0 +1,275 @@ + + INFORMATION FROM TABULATED NEUTRON SCATTERING FACTORS + =================================================== + + FERMI LENGTHS + Number of chemically different species: 3 + + Atom Fermi Length [10^(-12) cm] + SR 0.702000 + TI -0.343800 + O 0.580300 + + + + + + LIST OF REFLECTIONS AND STRUCTURE FACTORS(NEUTRONS) + =================================================== + + H K L Mult SinTh/Lda dspc |Fc| Phase F-Real F-Imag |Fc|^2 Num + + 1 0 1 4 0.11093 4.50722 0.00000 180.00000 -0.00000 0.00000 0.000 1 + 1 1 0 4 0.12809 3.90337 1.87994 0.00000 1.87994 0.00000 3.534 2 + 0 0 2 2 0.12810 3.90335 1.90226 180.00000 -1.90226 0.00000 3.619 3 + 1 1 1 8 0.14321 3.49128 0.00000 180.00000 -0.00000 0.00000 0.000 4 + 2 0 0 2 0.18115 2.76010 0.77384 180.00000 -0.77384 0.00000 0.599 5 + 0 2 0 2 0.18115 2.76010 0.77384 180.00000 -0.77384 0.00000 0.599 6 + 1 1 2 8 0.18115 2.76009 0.81743 0.00000 0.81743 0.00000 0.668 7 + 0 2 1 4 0.19214 2.60225 0.00000 0.00000 0.00000 0.00000 0.000 8 + 1 2 0 4 0.20254 2.46871 0.00000 0.00000 0.00000 0.00000 0.000 9 + 2 1 0 4 0.20254 2.46871 0.00000 180.00000 -0.00000 0.00000 0.000 10 + 1 2 1 8 0.21242 2.35382 0.00000 180.00000 -0.00000 0.00000 0.000 11 + 2 1 1 8 0.21242 2.35382 0.00000 180.00000 -0.00000 0.00000 0.000 12 + 1 0 3 4 0.21242 2.35381 0.00000 0.00000 0.00000 0.00000 0.000 13 + 0 2 2 4 0.22187 2.25361 10.55901 180.00000 -10.55901 0.00000 111.493 14 + 2 0 2 4 0.22187 2.25361 10.55901 180.00000 -10.55901 0.00000 111.493 15 + 1 1 3 8 0.23093 2.16519 0.00000 180.00000 -0.00000 0.00000 0.000 16 + 2 1 2 8 0.23964 2.08644 0.00000 180.00000 -0.00000 0.00000 0.000 17 + 1 2 2 8 0.23964 2.08644 0.00000 180.00000 -0.00000 0.00000 0.000 18 + 2 2 0 4 0.25619 1.95169 7.69249 0.00000 7.69249 0.00000 59.174 19 + 0 0 4 2 0.25619 1.95168 7.69248 0.00000 7.69248 0.00000 59.174 20 + 2 2 1 8 0.26407 1.89341 0.00000 180.00000 -0.00000 0.00000 0.000 21 + 0 2 3 4 0.26407 1.89341 0.00000 180.00000 -0.00000 0.00000 0.000 22 + 3 0 1 4 0.27918 1.79099 0.00000 180.00000 -0.00000 0.00000 0.000 23 + 2 1 3 8 0.27918 1.79098 0.00000 180.00000 -0.00000 0.00000 0.000 24 + 1 2 3 8 0.27918 1.79098 0.00000 180.00000 -0.00000 0.00000 0.000 25 + 1 3 0 4 0.28643 1.74564 1.94388 0.00000 1.94388 0.00000 3.779 26 + 3 1 0 4 0.28643 1.74564 1.94388 0.00000 1.94388 0.00000 3.779 27 + 2 2 2 8 0.28643 1.74564 2.04535 180.00000 -2.04535 0.00000 4.183 28 + 1 1 4 8 0.28643 1.74563 1.94388 0.00000 1.94388 0.00000 3.779 29 + 3 1 1 8 0.29350 1.70357 0.00000 180.00000 -0.00000 0.00000 0.000 30 + 1 3 1 8 0.29350 1.70357 0.00000 180.00000 -0.00000 0.00000 0.000 31 + 3 1 2 8 0.31377 1.59354 0.68610 0.00000 0.68610 0.00000 0.471 32 + 1 3 2 8 0.31377 1.59354 0.68610 0.00000 0.68610 0.00000 0.471 33 + 0 2 4 4 0.31377 1.59354 0.56721 180.00000 -0.56721 0.00000 0.322 34 + 2 0 4 4 0.31377 1.59354 0.56721 180.00000 -0.56721 0.00000 0.322 35 + 2 2 3 8 0.32024 1.56135 0.00000 180.00000 -0.00000 0.00000 0.000 36 + 2 3 0 4 0.32658 1.53103 0.00000 180.00000 -0.00000 0.00000 0.000 37 + 3 2 0 4 0.32658 1.53103 0.00000 180.00000 -0.00000 0.00000 0.000 38 + 1 2 4 8 0.32658 1.53102 0.00000 180.00000 -0.00000 0.00000 0.000 39 + 2 1 4 8 0.32658 1.53102 0.00000 180.00000 -0.00000 0.00000 0.000 40 + 2 3 1 8 0.33280 1.50241 0.00000 180.00000 -0.00000 0.00000 0.000 41 + 3 2 1 8 0.33280 1.50241 0.00000 180.00000 -0.00000 0.00000 0.000 42 + 3 0 3 4 0.33280 1.50241 0.00000 180.00000 -0.00000 0.00000 0.000 43 + 1 0 5 4 0.33280 1.50240 0.00000 180.00000 -0.00000 0.00000 0.000 44 + 1 3 3 8 0.34491 1.44967 0.00000 180.00000 -0.00000 0.00000 0.000 45 + 3 1 3 8 0.34491 1.44967 0.00000 180.00000 -0.00000 0.00000 0.000 46 + 1 1 5 8 0.34491 1.44967 0.00000 180.00000 -0.00000 0.00000 0.000 47 + 3 2 2 8 0.35080 1.42531 0.00000 180.00000 -0.00000 0.00000 0.000 48 + 2 3 2 8 0.35080 1.42531 0.00000 180.00000 -0.00000 0.00000 0.000 49 + 0 4 0 2 0.36231 1.38005 7.05199 0.00000 7.05199 0.00000 49.731 50 + 4 0 0 2 0.36231 1.38005 7.05199 0.00000 7.05199 0.00000 49.731 51 + 2 2 4 8 0.36231 1.38005 7.05198 0.00000 7.05198 0.00000 49.730 52 + 0 4 1 4 0.36792 1.35898 0.00000 0.00000 0.00000 0.00000 0.000 53 + 0 2 5 4 0.36792 1.35897 0.00000 180.00000 -0.00000 0.00000 0.000 54 + 1 4 0 4 0.37346 1.33885 0.00000 180.00000 -0.00000 0.00000 0.000 55 + 4 1 0 4 0.37346 1.33885 0.00000 0.00000 0.00000 0.00000 0.000 56 + 1 4 1 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 57 + 4 1 1 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 58 + 3 2 3 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 59 + 2 3 3 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 60 + 1 2 5 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 61 + 2 1 5 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 62 + 3 3 0 4 0.38428 1.30112 1.99623 0.00000 1.99623 0.00000 3.985 63 + 4 0 2 4 0.38428 1.30112 2.16230 180.00000 -2.16230 0.00000 4.676 64 + 0 4 2 4 0.38428 1.30112 2.16230 180.00000 -2.16230 0.00000 4.676 65 + 3 1 4 8 0.38428 1.30112 1.99624 0.00000 1.99624 0.00000 3.985 66 + 1 3 4 8 0.38428 1.30112 1.99624 0.00000 1.99624 0.00000 3.985 67 + 0 0 6 2 0.38429 1.30112 2.16230 180.00000 -2.16230 0.00000 4.676 68 + 3 3 1 8 0.38958 1.28342 0.00000 180.00000 -0.00000 0.00000 0.000 69 + 1 4 2 8 0.39481 1.26642 0.00000 180.00000 -0.00000 0.00000 0.000 70 + 4 1 2 8 0.39481 1.26642 0.00000 0.00000 0.00000 0.00000 0.000 71 + 4 2 0 4 0.40507 1.23435 0.38772 180.00000 -0.38772 0.00000 0.150 72 + 2 4 0 4 0.40507 1.23435 0.38772 180.00000 -0.38772 0.00000 0.150 73 + 3 3 2 8 0.40507 1.23435 0.56790 0.00000 0.56790 0.00000 0.323 74 + 1 1 6 8 0.40507 1.23435 0.56790 0.00000 0.56790 0.00000 0.323 75 + 2 4 1 8 0.41010 1.21921 0.00000 0.00000 0.00000 0.00000 0.000 76 + 4 2 1 8 0.41010 1.21921 0.00000 180.00000 -0.00000 0.00000 0.000 77 + 0 4 3 4 0.41010 1.21921 0.00000 180.00000 -0.00000 0.00000 0.000 78 + 2 2 5 8 0.41010 1.21920 0.00000 180.00000 -0.00000 0.00000 0.000 79 + 3 2 4 8 0.41507 1.20460 0.00000 180.00000 -0.00000 0.00000 0.000 80 + 2 3 4 8 0.41507 1.20460 0.00000 180.00000 -0.00000 0.00000 0.000 81 + 4 1 3 8 0.41999 1.19052 0.00000 0.00000 0.00000 0.00000 0.000 82 + 1 4 3 8 0.41999 1.19052 0.00000 0.00000 0.00000 0.00000 0.000 83 + 3 0 5 4 0.41999 1.19051 0.00000 180.00000 -0.00000 0.00000 0.000 84 + 4 2 2 8 0.42484 1.17691 9.16832 180.00000 -9.16832 0.00000 84.058 85 + 2 4 2 8 0.42484 1.17691 9.16832 180.00000 -9.16832 0.00000 84.058 86 + 2 0 6 4 0.42484 1.17691 9.16831 180.00000 -9.16831 0.00000 84.058 87 + 0 2 6 4 0.42484 1.17691 9.16831 180.00000 -9.16831 0.00000 84.058 88 + 3 3 3 8 0.42964 1.16376 0.00000 0.00000 0.00000 0.00000 0.000 89 + 3 1 5 8 0.42964 1.16376 0.00000 180.00000 -0.00000 0.00000 0.000 90 + 1 3 5 8 0.42964 1.16376 0.00000 180.00000 -0.00000 0.00000 0.000 91 + 2 1 6 8 0.43439 1.15104 0.00000 180.00000 -0.00000 0.00000 0.000 92 + 1 2 6 8 0.43439 1.15104 0.00000 0.00000 0.00000 0.00000 0.000 93 + 0 4 4 4 0.44373 1.12680 6.46896 0.00000 6.46896 0.00000 41.847 94 + 4 0 4 4 0.44373 1.12680 6.46896 0.00000 6.46896 0.00000 41.847 95 + 2 4 3 8 0.44833 1.11525 0.00000 180.00000 -0.00000 0.00000 0.000 96 + 4 2 3 8 0.44833 1.11525 0.00000 0.00000 0.00000 0.00000 0.000 97 + 4 3 0 4 0.45288 1.10404 0.00000 180.00000 -0.00000 0.00000 0.000 98 + 3 4 0 4 0.45288 1.10404 0.00000 180.00000 -0.00000 0.00000 0.000 99 + 4 1 4 8 0.45288 1.10404 0.00000 0.00000 0.00000 0.00000 0.000 100 + 1 4 4 8 0.45288 1.10404 0.00000 0.00000 0.00000 0.00000 0.000 101 + 4 3 1 8 0.45739 1.09316 0.00000 180.00000 -0.00000 0.00000 0.000 102 + 5 0 1 4 0.45739 1.09316 0.00000 180.00000 -0.00000 0.00000 0.000 103 + 3 4 1 8 0.45739 1.09316 0.00000 180.00000 -0.00000 0.00000 0.000 104 + 2 3 5 8 0.45739 1.09316 0.00000 0.00000 0.00000 0.00000 0.000 105 + 3 2 5 8 0.45739 1.09316 0.00000 180.00000 -0.00000 0.00000 0.000 106 + 1 0 7 4 0.45739 1.09316 0.00000 0.00000 0.00000 0.00000 0.000 107 + 5 1 0 4 0.46185 1.08260 2.03813 0.00000 2.03813 0.00000 4.154 108 + 1 5 0 4 0.46185 1.08260 2.03813 0.00000 2.03813 0.00000 4.154 109 + 3 3 4 8 0.46185 1.08260 2.03813 0.00000 2.03813 0.00000 4.154 110 + 2 2 6 8 0.46185 1.08260 2.25626 180.00000 -2.25626 0.00000 5.091 111 + 1 5 1 8 0.46627 1.07234 0.00000 180.00000 -0.00000 0.00000 0.000 112 + 5 1 1 8 0.46627 1.07234 0.00000 180.00000 -0.00000 0.00000 0.000 113 + 1 1 7 8 0.46627 1.07233 0.00000 0.00000 0.00000 0.00000 0.000 114 + 4 3 2 8 0.47065 1.06236 0.00000 180.00000 -0.00000 0.00000 0.000 115 + 3 4 2 8 0.47065 1.06236 0.00000 180.00000 -0.00000 0.00000 0.000 116 + 5 1 2 8 0.47929 1.04322 0.46167 0.00000 0.46167 0.00000 0.213 117 + 1 5 2 8 0.47929 1.04322 0.46167 0.00000 0.46167 0.00000 0.213 118 + 2 4 4 8 0.47929 1.04322 0.23228 180.00000 -0.23228 0.00000 0.054 119 + 4 2 4 8 0.47929 1.04322 0.23228 180.00000 -0.23228 0.00000 0.054 120 + 1 3 6 8 0.47929 1.04322 0.46166 0.00000 0.46166 0.00000 0.213 121 + 3 1 6 8 0.47929 1.04322 0.46166 0.00000 0.46166 0.00000 0.213 122 + 0 4 5 4 0.48355 1.03403 0.00000 0.00000 0.00000 0.00000 0.000 123 + 0 2 7 4 0.48355 1.03402 0.00000 0.00000 0.00000 0.00000 0.000 124 + 5 2 0 4 0.48777 1.02508 0.00000 180.00000 -0.00000 0.00000 0.000 125 + 2 5 0 4 0.48777 1.02508 0.00000 180.00000 -0.00000 0.00000 0.000 126 + 5 2 1 8 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 127 + 2 5 1 8 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 128 + 3 4 3 8 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 129 + 5 0 3 4 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 130 + 4 3 3 8 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 131 + 1 4 5 8 0.49196 1.01635 0.00000 0.00000 0.00000 0.00000 0.000 132 + 4 1 5 8 0.49196 1.01635 0.00000 0.00000 0.00000 0.00000 0.000 133 + 2 1 7 8 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 134 + 1 2 7 8 0.49196 1.01635 0.00000 0.00000 0.00000 0.00000 0.000 135 + 5 1 3 8 0.50023 0.99955 0.00000 0.00000 0.00000 0.00000 0.000 136 + 1 5 3 8 0.50023 0.99955 0.00000 180.00000 -0.00000 0.00000 0.000 137 + 3 3 5 8 0.50023 0.99955 0.00000 180.00000 -0.00000 0.00000 0.000 138 + 2 5 2 8 0.50431 0.99146 0.00000 180.00000 -0.00000 0.00000 0.000 139 + 5 2 2 8 0.50431 0.99146 0.00000 180.00000 -0.00000 0.00000 0.000 140 + 3 2 6 8 0.50431 0.99145 0.00000 180.00000 -0.00000 0.00000 0.000 141 + 2 3 6 8 0.50431 0.99145 0.00000 180.00000 -0.00000 0.00000 0.000 142 + 4 4 0 4 0.51238 0.97584 5.93807 0.00000 5.93807 0.00000 35.261 143 + 0 0 8 2 0.51238 0.97584 5.93805 0.00000 5.93805 0.00000 35.260 144 + 4 4 1 8 0.51637 0.96831 0.00000 180.00000 -0.00000 0.00000 0.000 145 + 2 4 5 8 0.51637 0.96831 0.00000 180.00000 -0.00000 0.00000 0.000 146 + 4 2 5 8 0.51637 0.96831 0.00000 0.00000 0.00000 0.00000 0.000 147 + 2 2 7 8 0.51637 0.96830 0.00000 0.00000 0.00000 0.00000 0.000 148 + 4 3 4 8 0.52032 0.96094 0.00000 180.00000 -0.00000 0.00000 0.000 149 + 3 4 4 8 0.52032 0.96094 0.00000 0.00000 0.00000 0.00000 0.000 150 + 5 2 3 8 0.52425 0.95374 0.00000 180.00000 -0.00000 0.00000 0.000 151 + 2 5 3 8 0.52425 0.95374 0.00000 180.00000 -0.00000 0.00000 0.000 152 + 3 0 7 4 0.52425 0.95374 0.00000 0.00000 0.00000 0.00000 0.000 153 + 3 5 0 4 0.52815 0.94671 2.07061 0.00000 2.07061 0.00000 4.287 154 + 5 3 0 4 0.52815 0.94671 2.07061 0.00000 2.07061 0.00000 4.287 155 + 4 4 2 8 0.52815 0.94671 2.32999 180.00000 -2.32999 0.00000 5.429 156 + 5 1 4 8 0.52815 0.94671 2.07061 0.00000 2.07061 0.00000 4.287 157 + 1 5 4 8 0.52815 0.94671 2.07061 0.00000 2.07061 0.00000 4.287 158 + 0 4 6 4 0.52815 0.94670 2.32999 180.00000 -2.32999 0.00000 5.429 159 + 4 0 6 4 0.52815 0.94670 2.32999 180.00000 -2.32999 0.00000 5.429 160 + 1 1 8 8 0.52815 0.94670 2.07061 0.00000 2.07061 0.00000 4.287 161 + 5 3 1 8 0.53202 0.93982 0.00000 0.00000 0.00000 0.00000 0.000 162 + 3 5 1 8 0.53202 0.93982 0.00000 180.00000 -0.00000 0.00000 0.000 163 + 3 1 7 8 0.53202 0.93982 0.00000 0.00000 0.00000 0.00000 0.000 164 + 1 3 7 8 0.53202 0.93982 0.00000 0.00000 0.00000 0.00000 0.000 165 + 1 4 6 8 0.53586 0.93308 0.00000 180.00000 -0.00000 0.00000 0.000 166 + 4 1 6 8 0.53586 0.93308 0.00000 0.00000 0.00000 0.00000 0.000 167 + 6 0 0 2 0.54346 0.92003 0.09814 180.00000 -0.09814 0.00000 0.010 168 + 0 6 0 2 0.54346 0.92003 0.09814 180.00000 -0.09814 0.00000 0.010 169 + 5 3 2 8 0.54346 0.92003 0.36634 0.00000 0.36634 0.00000 0.134 170 + 3 5 2 8 0.54346 0.92003 0.36634 0.00000 0.36634 0.00000 0.134 171 + 3 3 6 8 0.54346 0.92003 0.36634 0.00000 0.36634 0.00000 0.134 172 + 0 2 8 4 0.54346 0.92003 0.09814 180.00000 -0.09814 0.00000 0.010 173 + 2 0 8 4 0.54346 0.92003 0.09814 180.00000 -0.09814 0.00000 0.010 174 + 0 6 1 4 0.54722 0.91371 0.00000 180.00000 -0.00000 0.00000 0.000 175 + 4 4 3 8 0.54722 0.91371 0.00000 180.00000 -0.00000 0.00000 0.000 176 + 1 6 0 4 0.55095 0.90752 0.00000 180.00000 -0.00000 0.00000 0.000 177 + 6 1 0 4 0.55095 0.90752 0.00000 0.00000 0.00000 0.00000 0.000 178 + 5 2 4 8 0.55096 0.90751 0.00000 180.00000 -0.00000 0.00000 0.000 179 + 2 5 4 8 0.55096 0.90751 0.00000 0.00000 0.00000 0.00000 0.000 180 + 1 2 8 8 0.55096 0.90751 0.00000 0.00000 0.00000 0.00000 0.000 181 + 2 1 8 8 0.55096 0.90751 0.00000 180.00000 -0.00000 0.00000 0.000 182 + 1 6 1 8 0.55467 0.90144 0.00000 180.00000 -0.00000 0.00000 0.000 183 + 6 1 1 8 0.55467 0.90144 0.00000 0.00000 0.00000 0.00000 0.000 184 + 3 4 5 8 0.55467 0.90144 0.00000 180.00000 -0.00000 0.00000 0.000 185 + 4 3 5 8 0.55467 0.90144 0.00000 180.00000 -0.00000 0.00000 0.000 186 + 5 0 5 4 0.55467 0.90144 0.00000 0.00000 0.00000 0.00000 0.000 187 + 3 2 7 8 0.55467 0.90144 0.00000 0.00000 0.00000 0.00000 0.000 188 + 2 3 7 8 0.55467 0.90144 0.00000 0.00000 0.00000 0.00000 0.000 189 + 6 0 2 4 0.55835 0.89549 7.99888 180.00000 -7.99888 0.00000 63.982 190 + 0 6 2 4 0.55835 0.89549 7.99888 180.00000 -7.99888 0.00000 63.982 191 + 2 4 6 8 0.55835 0.89549 7.99887 180.00000 -7.99887 0.00000 63.982 192 + 4 2 6 8 0.55835 0.89549 7.99887 180.00000 -7.99887 0.00000 63.982 193 + 3 5 3 8 0.56201 0.88966 0.00000 180.00000 -0.00000 0.00000 0.000 194 + 5 3 3 8 0.56201 0.88966 0.00000 180.00000 -0.00000 0.00000 0.000 195 + 5 1 5 8 0.56201 0.88966 0.00000 0.00000 0.00000 0.00000 0.000 196 + 1 5 5 8 0.56201 0.88966 0.00000 180.00000 -0.00000 0.00000 0.000 197 + 6 1 2 8 0.56565 0.88394 0.00000 0.00000 0.00000 0.00000 0.000 198 + 1 6 2 8 0.56565 0.88394 0.00000 0.00000 0.00000 0.00000 0.000 199 + 6 2 0 4 0.57286 0.87282 5.45445 0.00000 5.45445 0.00000 29.751 200 + 2 6 0 4 0.57286 0.87282 5.45445 0.00000 5.45445 0.00000 29.751 201 + 4 4 4 8 0.57286 0.87282 5.45445 0.00000 5.45445 0.00000 29.751 202 + 2 2 8 8 0.57286 0.87282 5.45443 0.00000 5.45443 0.00000 29.751 203 + 2 6 1 8 0.57642 0.86742 0.00000 0.00000 0.00000 0.00000 0.000 204 + 6 2 1 8 0.57642 0.86742 0.00000 0.00000 0.00000 0.00000 0.000 205 + 0 6 3 4 0.57643 0.86742 0.00000 180.00000 -0.00000 0.00000 0.000 206 + 0 4 7 4 0.57643 0.86741 0.00000 0.00000 0.00000 0.00000 0.000 207 + 4 5 0 4 0.57997 0.86211 0.00000 180.00000 -0.00000 0.00000 0.000 208 + 5 4 0 4 0.57997 0.86211 0.00000 0.00000 0.00000 0.00000 0.000 209 + 5 4 1 8 0.58350 0.85690 0.00000 0.00000 0.00000 0.00000 0.000 210 + 4 5 1 8 0.58350 0.85690 0.00000 180.00000 -0.00000 0.00000 0.000 211 + 1 6 3 8 0.58350 0.85690 0.00000 180.00000 -0.00000 0.00000 0.000 212 + 6 1 3 8 0.58350 0.85690 0.00000 0.00000 0.00000 0.00000 0.000 213 + 5 2 5 8 0.58350 0.85690 0.00000 180.00000 -0.00000 0.00000 0.000 214 + 2 5 5 8 0.58350 0.85690 0.00000 0.00000 0.00000 0.00000 0.000 215 + 1 4 7 8 0.58350 0.85690 0.00000 180.00000 -0.00000 0.00000 0.000 216 + 4 1 7 8 0.58350 0.85690 0.00000 0.00000 0.00000 0.00000 0.000 217 + 1 0 9 4 0.58350 0.85690 0.00000 180.00000 -0.00000 0.00000 0.000 218 + 2 6 2 8 0.58700 0.85179 2.38599 180.00000 -2.38599 0.00000 5.693 219 + 6 2 2 8 0.58700 0.85179 2.38599 180.00000 -2.38599 0.00000 5.693 220 + 3 5 4 8 0.58700 0.85178 2.09461 0.00000 2.09461 0.00000 4.387 221 + 5 3 4 8 0.58700 0.85178 2.09461 0.00000 2.09461 0.00000 4.387 222 + 3 1 8 8 0.58700 0.85178 2.09461 0.00000 2.09461 0.00000 4.387 223 + 1 3 8 8 0.58700 0.85178 2.09461 0.00000 2.09461 0.00000 4.387 224 + 3 3 7 8 0.59049 0.84676 0.00000 0.00000 0.00000 0.00000 0.000 225 + 1 1 9 8 0.59049 0.84676 0.00000 180.00000 -0.00000 0.00000 0.000 226 + 5 4 2 8 0.59395 0.84182 0.00000 0.00000 0.00000 0.00000 0.000 227 + 4 5 2 8 0.59395 0.84182 0.00000 180.00000 -0.00000 0.00000 0.000 228 + 3 4 6 8 0.59395 0.84182 0.00000 0.00000 0.00000 0.00000 0.000 229 + 4 3 6 8 0.59395 0.84182 0.00000 0.00000 0.00000 0.00000 0.000 230 + 0 6 4 4 0.60082 0.83220 0.01715 0.00000 0.01715 0.00000 0.000 231 + 6 0 4 4 0.60082 0.83220 0.01715 0.00000 0.01715 0.00000 0.000 232 + 5 1 6 8 0.60082 0.83220 0.28094 0.00000 0.28094 0.00000 0.079 233 + 1 5 6 8 0.60082 0.83220 0.28094 0.00000 0.28094 0.00000 0.079 234 + 2 6 3 8 0.60422 0.82751 0.00000 0.00000 0.00000 0.00000 0.000 235 + 6 2 3 8 0.60422 0.82751 0.00000 180.00000 -0.00000 0.00000 0.000 236 + 4 4 5 8 0.60422 0.82751 0.00000 0.00000 0.00000 0.00000 0.000 237 + 2 4 7 8 0.60422 0.82751 0.00000 0.00000 0.00000 0.00000 0.000 238 + 4 2 7 8 0.60422 0.82751 0.00000 0.00000 0.00000 0.00000 0.000 239 + 0 2 9 4 0.60422 0.82751 0.00000 180.00000 -0.00000 0.00000 0.000 240 + 6 3 0 4 0.60761 0.82290 0.00000 0.00000 0.00000 0.00000 0.000 241 + 3 6 0 4 0.60761 0.82290 0.00000 0.00000 0.00000 0.00000 0.000 242 + 1 6 4 8 0.60761 0.82290 0.00000 180.00000 -0.00000 0.00000 0.000 243 + 6 1 4 8 0.60761 0.82290 0.00000 0.00000 0.00000 0.00000 0.000 244 + 3 2 8 8 0.60761 0.82290 0.00000 0.00000 0.00000 0.00000 0.000 245 + 2 3 8 8 0.60761 0.82290 0.00000 180.00000 -0.00000 0.00000 0.000 246 + 3 6 1 8 0.61097 0.81837 0.00000 0.00000 0.00000 0.00000 0.000 247 + 6 3 1 8 0.61097 0.81837 0.00000 0.00000 0.00000 0.00000 0.000 248 + 5 4 3 8 0.61097 0.81837 0.00000 0.00000 0.00000 0.00000 0.000 249 + 4 5 3 8 0.61097 0.81837 0.00000 0.00000 0.00000 0.00000 0.000 250 + 1 2 9 8 0.61097 0.81837 0.00000 180.00000 -0.00000 0.00000 0.000 251 + 2 1 9 8 0.61097 0.81837 0.00000 180.00000 -0.00000 0.00000 0.000 252 + 5 3 5 8 0.61765 0.80952 0.00000 0.00000 0.00000 0.00000 0.000 253 + 3 5 5 8 0.61765 0.80952 0.00000 0.00000 0.00000 0.00000 0.000 254 diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 00000000..9be58764 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,394 @@ +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "20.2.0" +description = "Classes Without Boilerplate" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "sphinx-rtd-theme", "pre-commit"] +docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] + +[[package]] +name = "certifi" +version = "2020.6.20" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "cfml-api" +version = "0.0.1" +description = "" +category = "dev" +optional = false +python-versions = "^3.7" +develop = false + +[package.source] +type = "directory" +url = "../CFML_api" + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "cycler" +version = "0.10.0" +description = "Composable style cycles" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +six = "*" + +[[package]] +name = "importlib-metadata" +version = "2.0.0" +description = "Read metadata from Python packages" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "rst.linker"] +testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] + +[[package]] +name = "kiwisolver" +version = "1.2.0" +description = "A fast implementation of the Cassowary constraint solver" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "matplotlib" +version = "3.3.2" +description = "Python plotting package" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +certifi = ">=2020.06.20" +cycler = ">=0.10" +kiwisolver = ">=1.0.1" +numpy = ">=1.15" +pillow = ">=6.2.0" +pyparsing = ">=2.0.3,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" +python-dateutil = ">=2.1" + +[[package]] +name = "more-itertools" +version = "8.5.0" +description = "More routines for operating on iterables, beyond itertools" +category = "dev" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "numpy" +version = "1.19.2" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "packaging" +version = "20.4" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +pyparsing = ">=2.0.2" +six = "*" + +[[package]] +name = "pillow" +version = "7.2.0" +description = "Python Imaging Library (Fork)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "pluggy" +version = "0.13.1" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} + +[package.extras] +dev = ["pre-commit", "tox"] + +[[package]] +name = "py" +version = "1.9.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pyparsing" +version = "2.4.7" +description = "Python parsing module" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "pytest" +version = "5.4.3" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=17.4.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.extras] +checkqa-mypy = ["mypy (v0.761)"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +name = "python-dateutil" +version = "2.8.1" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "six" +version = "1.15.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "zipp" +version = "3.3.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] + +[metadata] +lock-version = "1.1" +python-versions = "^3.7" +content-hash = "dd1f47ec0b8f96de4c0b53ebb6beabb9ff94c08584717f83f78f57ca369a5f18" + +[metadata.files] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-20.2.0-py2.py3-none-any.whl", hash = "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc"}, + {file = "attrs-20.2.0.tar.gz", hash = "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594"}, +] +certifi = [ + {file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"}, + {file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"}, +] +cfml-api = [] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, +] +cycler = [ + {file = "cycler-0.10.0-py2.py3-none-any.whl", hash = "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d"}, + {file = "cycler-0.10.0.tar.gz", hash = "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"}, +] +importlib-metadata = [ + {file = "importlib_metadata-2.0.0-py2.py3-none-any.whl", hash = "sha256:cefa1a2f919b866c5beb7c9f7b0ebb4061f30a8a9bf16d609b000e2dfaceb9c3"}, + {file = "importlib_metadata-2.0.0.tar.gz", hash = "sha256:77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da"}, +] +kiwisolver = [ + {file = "kiwisolver-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:443c2320520eda0a5b930b2725b26f6175ca4453c61f739fef7a5847bd262f74"}, + {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:efcf3397ae1e3c3a4a0a0636542bcad5adad3b1dd3e8e629d0b6e201347176c8"}, + {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fccefc0d36a38c57b7bd233a9b485e2f1eb71903ca7ad7adacad6c28a56d62d2"}, + {file = "kiwisolver-1.2.0-cp36-none-win32.whl", hash = "sha256:60a78858580761fe611d22127868f3dc9f98871e6fdf0a15cc4203ed9ba6179b"}, + {file = "kiwisolver-1.2.0-cp36-none-win_amd64.whl", hash = "sha256:556da0a5f60f6486ec4969abbc1dd83cf9b5c2deadc8288508e55c0f5f87d29c"}, + {file = "kiwisolver-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cc095a4661bdd8a5742aaf7c10ea9fac142d76ff1770a0f84394038126d8fc7"}, + {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c955791d80e464da3b471ab41eb65cf5a40c15ce9b001fdc5bbc241170de58ec"}, + {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:603162139684ee56bcd57acc74035fceed7dd8d732f38c0959c8bd157f913fec"}, + {file = "kiwisolver-1.2.0-cp37-none-win32.whl", hash = "sha256:03662cbd3e6729f341a97dd2690b271e51a67a68322affab12a5b011344b973c"}, + {file = "kiwisolver-1.2.0-cp37-none-win_amd64.whl", hash = "sha256:4eadb361baf3069f278b055e3bb53fa189cea2fd02cb2c353b7a99ebb4477ef1"}, + {file = "kiwisolver-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c31bc3c8e903d60a1ea31a754c72559398d91b5929fcb329b1c3a3d3f6e72113"}, + {file = "kiwisolver-1.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d52b989dc23cdaa92582ceb4af8d5bcc94d74b2c3e64cd6785558ec6a879793e"}, + {file = "kiwisolver-1.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:e586b28354d7b6584d8973656a7954b1c69c93f708c0c07b77884f91640b7657"}, + {file = "kiwisolver-1.2.0-cp38-none-win32.whl", hash = "sha256:d069ef4b20b1e6b19f790d00097a5d5d2c50871b66d10075dab78938dc2ee2cf"}, + {file = "kiwisolver-1.2.0-cp38-none-win_amd64.whl", hash = "sha256:18d749f3e56c0480dccd1714230da0f328e6e4accf188dd4e6884bdd06bf02dd"}, + {file = "kiwisolver-1.2.0.tar.gz", hash = "sha256:247800260cd38160c362d211dcaf4ed0f7816afb5efe56544748b21d6ad6d17f"}, +] +matplotlib = [ + {file = "matplotlib-3.3.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:27f9de4784ae6fb97679556c5542cf36c0751dccb4d6407f7c62517fa2078868"}, + {file = "matplotlib-3.3.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:06866c138d81a593b535d037b2727bec9b0818cadfe6a81f6ec5715b8dd38a89"}, + {file = "matplotlib-3.3.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5ccecb5f78b51b885f0028b646786889f49c54883e554fca41a2a05998063f23"}, + {file = "matplotlib-3.3.2-cp36-cp36m-win32.whl", hash = "sha256:69cf76d673682140f46c6cb5e073332c1f1b2853c748dc1cb04f7d00023567f7"}, + {file = "matplotlib-3.3.2-cp36-cp36m-win_amd64.whl", hash = "sha256:371518c769d84af8ec9b7dcb871ac44f7a67ef126dd3a15c88c25458e6b6d205"}, + {file = "matplotlib-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:793e061054662aa27acaff9201cdd510a698541c6e8659eeceb31d66c16facc6"}, + {file = "matplotlib-3.3.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:16b241c3d17be786966495229714de37de04472da472277869b8d5b456a8df00"}, + {file = "matplotlib-3.3.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:3fb0409754b26f48045bacd6818e44e38ca9338089f8ba689e2f9344ff2847c7"}, + {file = "matplotlib-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:548cfe81476dbac44db96e9c0b074b6fb333b4d1f12b1ae68dbed47e45166384"}, + {file = "matplotlib-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:f0268613073df055bcc6a490de733012f2cf4fe191c1adb74e41cec8add1a165"}, + {file = "matplotlib-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:57be9e21073fc367237b03ecac0d9e4b8ddbe38e86ec4a316857d8d93ac9286c"}, + {file = "matplotlib-3.3.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:be2f0ec62e0939a9dcfd3638c140c5a74fc929ee3fd1f31408ab8633db6e1523"}, + {file = "matplotlib-3.3.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:c5d0c2ae3e3ed4e9f46b7c03b40d443601012ffe8eb8dfbb2bd6b2d00509f797"}, + {file = "matplotlib-3.3.2-cp38-cp38-win32.whl", hash = "sha256:a522de31e07ed7d6f954cda3fbd5ca4b8edbfc592a821a7b00291be6f843292e"}, + {file = "matplotlib-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:8bc1d3284dee001f41ec98f59675f4d723683e1cc082830b440b5f081d8e0ade"}, + {file = "matplotlib-3.3.2-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:799c421bc245a0749c1515b6dea6dc02db0a8c1f42446a0f03b3b82a60a900dc"}, + {file = "matplotlib-3.3.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:2f5eefc17dc2a71318d5a3496313be5c351c0731e8c4c6182c9ac3782cfc4076"}, + {file = "matplotlib-3.3.2.tar.gz", hash = "sha256:3d2edbf59367f03cd9daf42939ca06383a7d7803e3993eb5ff1bee8e8a3fbb6b"}, +] +more-itertools = [ + {file = "more-itertools-8.5.0.tar.gz", hash = "sha256:6f83822ae94818eae2612063a5101a7311e68ae8002005b5e05f03fd74a86a20"}, + {file = "more_itertools-8.5.0-py3-none-any.whl", hash = "sha256:9b30f12df9393f0d28af9210ff8efe48d10c94f73e5daf886f10c4b0b0b4f03c"}, +] +numpy = [ + {file = "numpy-1.19.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b594f76771bc7fc8a044c5ba303427ee67c17a09b36e1fa32bde82f5c419d17a"}, + {file = "numpy-1.19.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:e6ddbdc5113628f15de7e4911c02aed74a4ccff531842c583e5032f6e5a179bd"}, + {file = "numpy-1.19.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:3733640466733441295b0d6d3dcbf8e1ffa7e897d4d82903169529fd3386919a"}, + {file = "numpy-1.19.2-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:4339741994c775396e1a274dba3609c69ab0f16056c1077f18979bec2a2c2e6e"}, + {file = "numpy-1.19.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7c6646314291d8f5ea900a7ea9c4261f834b5b62159ba2abe3836f4fa6705526"}, + {file = "numpy-1.19.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:7118f0a9f2f617f921ec7d278d981244ba83c85eea197be7c5a4f84af80a9c3c"}, + {file = "numpy-1.19.2-cp36-cp36m-win32.whl", hash = "sha256:9a3001248b9231ed73894c773142658bab914645261275f675d86c290c37f66d"}, + {file = "numpy-1.19.2-cp36-cp36m-win_amd64.whl", hash = "sha256:967c92435f0b3ba37a4257c48b8715b76741410467e2bdb1097e8391fccfae15"}, + {file = "numpy-1.19.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d526fa58ae4aead839161535d59ea9565863bb0b0bdb3cc63214613fb16aced4"}, + {file = "numpy-1.19.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:eb25c381d168daf351147713f49c626030dcff7a393d5caa62515d415a6071d8"}, + {file = "numpy-1.19.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:62139af94728d22350a571b7c82795b9d59be77fc162414ada6c8b6a10ef5d02"}, + {file = "numpy-1.19.2-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:0c66da1d202c52051625e55a249da35b31f65a81cb56e4c69af0dfb8fb0125bf"}, + {file = "numpy-1.19.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:2117536e968abb7357d34d754e3733b0d7113d4c9f1d921f21a3d96dec5ff716"}, + {file = "numpy-1.19.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:54045b198aebf41bf6bf4088012777c1d11703bf74461d70cd350c0af2182e45"}, + {file = "numpy-1.19.2-cp37-cp37m-win32.whl", hash = "sha256:aba1d5daf1144b956bc87ffb87966791f5e9f3e1f6fab3d7f581db1f5b598f7a"}, + {file = "numpy-1.19.2-cp37-cp37m-win_amd64.whl", hash = "sha256:addaa551b298052c16885fc70408d3848d4e2e7352de4e7a1e13e691abc734c1"}, + {file = "numpy-1.19.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:58d66a6b3b55178a1f8a5fe98df26ace76260a70de694d99577ddeab7eaa9a9d"}, + {file = "numpy-1.19.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:59f3d687faea7a4f7f93bd9665e5b102f32f3fa28514f15b126f099b7997203d"}, + {file = "numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cebd4f4e64cfe87f2039e4725781f6326a61f095bc77b3716502bed812b385a9"}, + {file = "numpy-1.19.2-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:c35a01777f81e7333bcf276b605f39c872e28295441c265cd0c860f4b40148c1"}, + {file = "numpy-1.19.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d7ac33585e1f09e7345aa902c281bd777fdb792432d27fca857f39b70e5dd31c"}, + {file = "numpy-1.19.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:04c7d4ebc5ff93d9822075ddb1751ff392a4375e5885299445fcebf877f179d5"}, + {file = "numpy-1.19.2-cp38-cp38-win32.whl", hash = "sha256:51ee93e1fac3fe08ef54ff1c7f329db64d8a9c5557e6c8e908be9497ac76374b"}, + {file = "numpy-1.19.2-cp38-cp38-win_amd64.whl", hash = "sha256:1669ec8e42f169ff715a904c9b2105b6640f3f2a4c4c2cb4920ae8b2785dac65"}, + {file = "numpy-1.19.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:0bfd85053d1e9f60234f28f63d4a5147ada7f432943c113a11afcf3e65d9d4c8"}, + {file = "numpy-1.19.2.zip", hash = "sha256:0d310730e1e793527065ad7dde736197b705d0e4c9999775f212b03c44a8484c"}, +] +packaging = [ + {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, + {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, +] +pillow = [ + {file = "Pillow-7.2.0-cp35-cp35m-macosx_10_10_intel.whl", hash = "sha256:1ca594126d3c4def54babee699c055a913efb01e106c309fa6b04405d474d5ae"}, + {file = "Pillow-7.2.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c92302a33138409e8f1ad16731568c55c9053eee71bb05b6b744067e1b62380f"}, + {file = "Pillow-7.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:8dad18b69f710bf3a001d2bf3afab7c432785d94fcf819c16b5207b1cfd17d38"}, + {file = "Pillow-7.2.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:431b15cffbf949e89df2f7b48528be18b78bfa5177cb3036284a5508159492b5"}, + {file = "Pillow-7.2.0-cp35-cp35m-win32.whl", hash = "sha256:09d7f9e64289cb40c2c8d7ad674b2ed6105f55dc3b09aa8e4918e20a0311e7ad"}, + {file = "Pillow-7.2.0-cp35-cp35m-win_amd64.whl", hash = "sha256:0295442429645fa16d05bd567ef5cff178482439c9aad0411d3f0ce9b88b3a6f"}, + {file = "Pillow-7.2.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:ec29604081f10f16a7aea809ad42e27764188fc258b02259a03a8ff7ded3808d"}, + {file = "Pillow-7.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:612cfda94e9c8346f239bf1a4b082fdd5c8143cf82d685ba2dba76e7adeeb233"}, + {file = "Pillow-7.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0a80dd307a5d8440b0a08bd7b81617e04d870e40a3e46a32d9c246e54705e86f"}, + {file = "Pillow-7.2.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:06aba4169e78c439d528fdeb34762c3b61a70813527a2c57f0540541e9f433a8"}, + {file = "Pillow-7.2.0-cp36-cp36m-win32.whl", hash = "sha256:f7e30c27477dffc3e85c2463b3e649f751789e0f6c8456099eea7ddd53be4a8a"}, + {file = "Pillow-7.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:ffe538682dc19cc542ae7c3e504fdf54ca7f86fb8a135e59dd6bc8627eae6cce"}, + {file = "Pillow-7.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:94cf49723928eb6070a892cb39d6c156f7b5a2db4e8971cb958f7b6b104fb4c4"}, + {file = "Pillow-7.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6edb5446f44d901e8683ffb25ebdfc26988ee813da3bf91e12252b57ac163727"}, + {file = "Pillow-7.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:52125833b070791fcb5710fabc640fc1df07d087fc0c0f02d3661f76c23c5b8b"}, + {file = "Pillow-7.2.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:9ad7f865eebde135d526bb3163d0b23ffff365cf87e767c649550964ad72785d"}, + {file = "Pillow-7.2.0-cp37-cp37m-win32.whl", hash = "sha256:c79f9c5fb846285f943aafeafda3358992d64f0ef58566e23484132ecd8d7d63"}, + {file = "Pillow-7.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d350f0f2c2421e65fbc62690f26b59b0bcda1b614beb318c81e38647e0f673a1"}, + {file = "Pillow-7.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:6d7741e65835716ceea0fd13a7d0192961212fd59e741a46bbed7a473c634ed6"}, + {file = "Pillow-7.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:edf31f1150778abd4322444c393ab9c7bd2af271dd4dafb4208fb613b1f3cdc9"}, + {file = "Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d08b23fdb388c0715990cbc06866db554e1822c4bdcf6d4166cf30ac82df8c41"}, + {file = "Pillow-7.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:5e51ee2b8114def244384eda1c82b10e307ad9778dac5c83fb0943775a653cd8"}, + {file = "Pillow-7.2.0-cp38-cp38-win32.whl", hash = "sha256:725aa6cfc66ce2857d585f06e9519a1cc0ef6d13f186ff3447ab6dff0a09bc7f"}, + {file = "Pillow-7.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:a060cf8aa332052df2158e5a119303965be92c3da6f2d93b6878f0ebca80b2f6"}, + {file = "Pillow-7.2.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:25930fadde8019f374400f7986e8404c8b781ce519da27792cbe46eabec00c4d"}, + {file = "Pillow-7.2.0.tar.gz", hash = "sha256:97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626"}, +] +pluggy = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] +py = [ + {file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"}, + {file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"}, +] +pyparsing = [ + {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, + {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, +] +pytest = [ + {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, + {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, + {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, +] +six = [ + {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, + {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] +zipp = [ + {file = "zipp-3.3.0-py3-none-any.whl", hash = "sha256:eed8ec0b8d1416b2ca33516a37a08892442f3954dee131e92cfd92d8fe3e7066"}, + {file = "zipp-3.3.0.tar.gz", hash = "sha256:64ad89efee774d1897a58607895d80789c59778ea02185dd846ac38394a8642b"}, +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..c7ac7743 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,31 @@ +# POETRY CONFIG + +[build-system] +requires = ["poetry>=1.0"] +build-backend = "poetry.masonry.api" + +[tool.poetry] +name = "easyDiffractionLib" +version = "0.0.1" +description = 'Making diffraction data analysis and modelling easy.' +license = "GPL-3.0-only" +authors = ["Andrew Sazonov", "Simon Ward"] +readme = "README.md" +homepage = "https://github.com/easyScience/easyDiffractionLib" +documentation = "https://github.com/easyScience/easyDiffractionLib" +include = ["CHANGELOG.md"] +packages = [ { include = "easyDiffractionLib" } ] + +[tool.poetry.dependencies] +#python = "^3.8, <3.9" +python = "^3.6, >=3.6.1" +matplotlib = "^3.3" + +[tool.poetry.dev-dependencies] +pytest = "^5.2" +CFML_api = { path = '../CFML_api/' } + +[tool.poetry.scripts] +easyDiffractionLib = "easyDiffractionLib.main:main" + +# CUSTOM CONFIG diff --git a/tests/description.txt b/tests/description.txt new file mode 100644 index 00000000..e69de29b From 158c2aedb4be8818311985b72abcc5fef124c129 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 14:03:29 +0200 Subject: [PATCH 002/312] Fix python to be 3.7 --- poetry.lock | 15 ++++++++------- pyproject.toml | 6 +++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/poetry.lock b/poetry.lock index 9be58764..3b9281c0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -32,14 +32,15 @@ python-versions = "*" name = "cfml-api" version = "0.0.1" description = "" -category = "dev" +category = "main" optional = false -python-versions = "^3.7" -develop = false +python-versions = ">=3.7,<3.8" [package.source] -type = "directory" -url = "../CFML_api" +type = "git" +url = 'ssh://git@github.com/easyScience/CFML_api.git' +reference = 'main' +resolved_reference = "0e47d12c6157d5518f09b50ed5451ec4e7035b60" [[package]] name = "colorama" @@ -230,8 +231,8 @@ testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pyt [metadata] lock-version = "1.1" -python-versions = "^3.7" -content-hash = "dd1f47ec0b8f96de4c0b53ebb6beabb9ff94c08584717f83f78f57ca369a5f18" +python-versions = "^3.7, <3.8" +content-hash = "005b35284888e1eac3168de98b46cbca25ed35a9f0a583a49f702e7711d6c6fa" [metadata.files] atomicwrites = [ diff --git a/pyproject.toml b/pyproject.toml index c7ac7743..de5caacf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,13 +17,13 @@ include = ["CHANGELOG.md"] packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] -#python = "^3.8, <3.9" -python = "^3.6, >=3.6.1" +python = "^3.7, <3.8" matplotlib = "^3.3" +CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } [tool.poetry.dev-dependencies] pytest = "^5.2" -CFML_api = { path = '../CFML_api/' } +#CFML_api = { path = '../CFML_api/' } [tool.poetry.scripts] easyDiffractionLib = "easyDiffractionLib.main:main" From fa00a9338df6ea24c1c34fa01b879ef240f95e97 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 14:40:11 +0200 Subject: [PATCH 003/312] Add test action --- .github/workflows/test.yml | 46 ++++++++++++++++++++++++++++++++++ easyDiffractionLib/changes.yml | 13 ---------- easyDiffractionLib/main.py | 17 +++++++++---- 3 files changed, 58 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/test.yml delete mode 100644 easyDiffractionLib/changes.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..c663f8c5 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,46 @@ +name: test macOS + +# Trigger the workflow on push or pull request +on: [push, pull_request] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + # This workflow contains a single job called "build" + build: + + # CI skip conditions + if: "!contains(github.event.head_commit.message, '[ci skip]')" + + # The type of runner that the job will run on + runs-on: ${{ matrix.os }} + + # Build matrix for different platforms + strategy: + matrix: + os: [macos-latest] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + + - name: Check-out repository + uses: actions/checkout@v2 + + - name: Set up Python environment + uses: actions/setup-python@v2 + with: + python-version: 3.7 + + #- name: Set up access to private repos + # uses: webfactory/ssh-agent@v0.4.1 + # with: + # ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + + - name: Set up python packages manager + uses: Gr1N/setup-poetry@v2 + + - name: Create venv and install dependences + run: poetry install + + - name: Run main.py + run: poetry run easyDiffractionLib diff --git a/easyDiffractionLib/changes.yml b/easyDiffractionLib/changes.yml deleted file mode 100644 index f237908f..00000000 --- a/easyDiffractionLib/changes.yml +++ /dev/null @@ -1,13 +0,0 @@ -added: - - Implement in-app CIF editor - - Add CIF syntax highlighting - - Add Bragg peaks info tooltips - - Add license page to the installer - - Add calculation results to the project - - Add more neutron diffraction examples -fixed: - - Fix axes ratio on the structure view -improved: - - Impove redability of the Fitables table - - Update project description tab - - Rename main and phases to project and samples diff --git a/easyDiffractionLib/main.py b/easyDiffractionLib/main.py index 7f8d4bd4..263f83f3 100644 --- a/easyDiffractionLib/main.py +++ b/easyDiffractionLib/main.py @@ -1,15 +1,22 @@ import os, sys -import CFML_api -import matplotlib.pyplot as plt +#import CFML_api def main(): - print("AAA") + print("without CFML_api") + exit() + + simulation_conditions = CFML_api.PowderPatternSimulationConditions() + print("simulation_conditions.theta_max", simulation_conditions.theta_max) + powder_pattern = CFML_api.PowderPatternSimulator() + print("powder_pattern.x", powder_pattern.x) + print("powder_pattern.y", powder_pattern.y) + powder_pattern.compute("../CFML_api/Examples/Data/SrTiO3.cif") - plt.plot(powder_pattern.x, powder_pattern.y, label="CIF with default conditions") - plt.show() + print("powder_pattern.x", powder_pattern.x) + print("powder_pattern.y", powder_pattern.y) if __name__ == '__main__': main() From 8a8d84201293ae036a6a0ba5716c974eb365c714 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 14:42:06 +0200 Subject: [PATCH 004/312] Disable CFML --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index de5caacf..544adadd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.8" matplotlib = "^3.3" -CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } +#CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } [tool.poetry.dev-dependencies] pytest = "^5.2" From a9e441a08a8e24b2e3850abc7bc598a33afb312a Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 14:51:38 +0200 Subject: [PATCH 005/312] Set up access to private repos --- .github/workflows/test.yml | 8 ++++---- easyDiffractionLib/main.py | 10 +++++----- pyproject.toml | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c663f8c5..dd3a8614 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,10 +31,10 @@ jobs: with: python-version: 3.7 - #- name: Set up access to private repos - # uses: webfactory/ssh-agent@v0.4.1 - # with: - # ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + - name: Set up access to private repos + uses: webfactory/ssh-agent@v0.4.1 + with: + ssh-private-key: ${{ secrets.GH_WEBFACTORY_KEY }} - name: Set up python packages manager uses: Gr1N/setup-poetry@v2 diff --git a/easyDiffractionLib/main.py b/easyDiffractionLib/main.py index 263f83f3..b8e02922 100644 --- a/easyDiffractionLib/main.py +++ b/easyDiffractionLib/main.py @@ -1,11 +1,11 @@ import os, sys -#import CFML_api +import CFML_api def main(): print("without CFML_api") - exit() + #exit() simulation_conditions = CFML_api.PowderPatternSimulationConditions() print("simulation_conditions.theta_max", simulation_conditions.theta_max) @@ -14,9 +14,9 @@ def main(): print("powder_pattern.x", powder_pattern.x) print("powder_pattern.y", powder_pattern.y) - powder_pattern.compute("../CFML_api/Examples/Data/SrTiO3.cif") - print("powder_pattern.x", powder_pattern.x) - print("powder_pattern.y", powder_pattern.y) + #powder_pattern.compute("../CFML_api/Examples/Data/SrTiO3.cif") + #print("powder_pattern.x", powder_pattern.x) + #print("powder_pattern.y", powder_pattern.y) if __name__ == '__main__': main() diff --git a/pyproject.toml b/pyproject.toml index 544adadd..de5caacf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.8" matplotlib = "^3.3" -#CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } +CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } [tool.poetry.dev-dependencies] pytest = "^5.2" From 3115bdaf5576ed08548d2dfd4298f90ee86bcb18 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 15:19:40 +0200 Subject: [PATCH 006/312] Try CI --- easyDiffractionLib/main.py | 2 +- poetry.lock | 154 ++----------------------------------- pyproject.toml | 2 +- 3 files changed, 10 insertions(+), 148 deletions(-) diff --git a/easyDiffractionLib/main.py b/easyDiffractionLib/main.py index b8e02922..439a6e59 100644 --- a/easyDiffractionLib/main.py +++ b/easyDiffractionLib/main.py @@ -4,7 +4,7 @@ def main(): - print("without CFML_api") + print("with CFML_api") #exit() simulation_conditions = CFML_api.PowderPatternSimulationConditions() diff --git a/poetry.lock b/poetry.lock index 3b9281c0..5182a513 100644 --- a/poetry.lock +++ b/poetry.lock @@ -20,27 +20,22 @@ docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] -[[package]] -name = "certifi" -version = "2020.6.20" -description = "Python package for providing Mozilla's CA Bundle." -category = "main" -optional = false -python-versions = "*" - [[package]] name = "cfml-api" version = "0.0.1" description = "" category = "main" optional = false -python-versions = ">=3.7,<3.8" +python-versions = "^3.7, <3.8" + +[package.dependencies] +numpy = "^1.19" [package.source] type = "git" url = 'ssh://git@github.com/easyScience/CFML_api.git' reference = 'main' -resolved_reference = "0e47d12c6157d5518f09b50ed5451ec4e7035b60" +resolved_reference = "490209d55fbf0392ebf899a66986b131d92c015f" [[package]] name = "colorama" @@ -50,17 +45,6 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -[[package]] -name = "cycler" -version = "0.10.0" -description = "Composable style cycles" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -six = "*" - [[package]] name = "importlib-metadata" version = "2.0.0" @@ -76,31 +60,6 @@ zipp = ">=0.5" docs = ["sphinx", "rst.linker"] testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] -[[package]] -name = "kiwisolver" -version = "1.2.0" -description = "A fast implementation of the Cassowary constraint solver" -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "matplotlib" -version = "3.3.2" -description = "Python plotting package" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -certifi = ">=2020.06.20" -cycler = ">=0.10" -kiwisolver = ">=1.0.1" -numpy = ">=1.15" -pillow = ">=6.2.0" -pyparsing = ">=2.0.3,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" -python-dateutil = ">=2.1" - [[package]] name = "more-itertools" version = "8.5.0" @@ -129,14 +88,6 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" pyparsing = ">=2.0.2" six = "*" -[[package]] -name = "pillow" -version = "7.2.0" -description = "Python Imaging Library (Fork)" -category = "main" -optional = false -python-versions = ">=3.5" - [[package]] name = "pluggy" version = "0.13.1" @@ -163,7 +114,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" name = "pyparsing" version = "2.4.7" description = "Python parsing module" -category = "main" +category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" @@ -190,22 +141,11 @@ wcwidth = "*" checkqa-mypy = ["mypy (v0.761)"] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] -[[package]] -name = "python-dateutil" -version = "2.8.1" -description = "Extensions to the standard Python datetime module" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" - -[package.dependencies] -six = ">=1.5" - [[package]] name = "six" version = "1.15.0" description = "Python 2 and 3 compatibility utilities" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" @@ -232,7 +172,7 @@ testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pyt [metadata] lock-version = "1.1" python-versions = "^3.7, <3.8" -content-hash = "005b35284888e1eac3168de98b46cbca25ed35a9f0a583a49f702e7711d6c6fa" +content-hash = "2c00bd9d5537b20a298ff6d26c0cd9601dd45cbc4e6afd3e809e88a53c345cc6" [metadata.files] atomicwrites = [ @@ -243,60 +183,14 @@ attrs = [ {file = "attrs-20.2.0-py2.py3-none-any.whl", hash = "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc"}, {file = "attrs-20.2.0.tar.gz", hash = "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594"}, ] -certifi = [ - {file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"}, - {file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"}, -] cfml-api = [] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, ] -cycler = [ - {file = "cycler-0.10.0-py2.py3-none-any.whl", hash = "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d"}, - {file = "cycler-0.10.0.tar.gz", hash = "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"}, -] importlib-metadata = [ {file = "importlib_metadata-2.0.0-py2.py3-none-any.whl", hash = "sha256:cefa1a2f919b866c5beb7c9f7b0ebb4061f30a8a9bf16d609b000e2dfaceb9c3"}, {file = "importlib_metadata-2.0.0.tar.gz", hash = "sha256:77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da"}, ] -kiwisolver = [ - {file = "kiwisolver-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:443c2320520eda0a5b930b2725b26f6175ca4453c61f739fef7a5847bd262f74"}, - {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:efcf3397ae1e3c3a4a0a0636542bcad5adad3b1dd3e8e629d0b6e201347176c8"}, - {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fccefc0d36a38c57b7bd233a9b485e2f1eb71903ca7ad7adacad6c28a56d62d2"}, - {file = "kiwisolver-1.2.0-cp36-none-win32.whl", hash = "sha256:60a78858580761fe611d22127868f3dc9f98871e6fdf0a15cc4203ed9ba6179b"}, - {file = "kiwisolver-1.2.0-cp36-none-win_amd64.whl", hash = "sha256:556da0a5f60f6486ec4969abbc1dd83cf9b5c2deadc8288508e55c0f5f87d29c"}, - {file = "kiwisolver-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cc095a4661bdd8a5742aaf7c10ea9fac142d76ff1770a0f84394038126d8fc7"}, - {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c955791d80e464da3b471ab41eb65cf5a40c15ce9b001fdc5bbc241170de58ec"}, - {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:603162139684ee56bcd57acc74035fceed7dd8d732f38c0959c8bd157f913fec"}, - {file = "kiwisolver-1.2.0-cp37-none-win32.whl", hash = "sha256:03662cbd3e6729f341a97dd2690b271e51a67a68322affab12a5b011344b973c"}, - {file = "kiwisolver-1.2.0-cp37-none-win_amd64.whl", hash = "sha256:4eadb361baf3069f278b055e3bb53fa189cea2fd02cb2c353b7a99ebb4477ef1"}, - {file = "kiwisolver-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c31bc3c8e903d60a1ea31a754c72559398d91b5929fcb329b1c3a3d3f6e72113"}, - {file = "kiwisolver-1.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d52b989dc23cdaa92582ceb4af8d5bcc94d74b2c3e64cd6785558ec6a879793e"}, - {file = "kiwisolver-1.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:e586b28354d7b6584d8973656a7954b1c69c93f708c0c07b77884f91640b7657"}, - {file = "kiwisolver-1.2.0-cp38-none-win32.whl", hash = "sha256:d069ef4b20b1e6b19f790d00097a5d5d2c50871b66d10075dab78938dc2ee2cf"}, - {file = "kiwisolver-1.2.0-cp38-none-win_amd64.whl", hash = "sha256:18d749f3e56c0480dccd1714230da0f328e6e4accf188dd4e6884bdd06bf02dd"}, - {file = "kiwisolver-1.2.0.tar.gz", hash = "sha256:247800260cd38160c362d211dcaf4ed0f7816afb5efe56544748b21d6ad6d17f"}, -] -matplotlib = [ - {file = "matplotlib-3.3.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:27f9de4784ae6fb97679556c5542cf36c0751dccb4d6407f7c62517fa2078868"}, - {file = "matplotlib-3.3.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:06866c138d81a593b535d037b2727bec9b0818cadfe6a81f6ec5715b8dd38a89"}, - {file = "matplotlib-3.3.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5ccecb5f78b51b885f0028b646786889f49c54883e554fca41a2a05998063f23"}, - {file = "matplotlib-3.3.2-cp36-cp36m-win32.whl", hash = "sha256:69cf76d673682140f46c6cb5e073332c1f1b2853c748dc1cb04f7d00023567f7"}, - {file = "matplotlib-3.3.2-cp36-cp36m-win_amd64.whl", hash = "sha256:371518c769d84af8ec9b7dcb871ac44f7a67ef126dd3a15c88c25458e6b6d205"}, - {file = "matplotlib-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:793e061054662aa27acaff9201cdd510a698541c6e8659eeceb31d66c16facc6"}, - {file = "matplotlib-3.3.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:16b241c3d17be786966495229714de37de04472da472277869b8d5b456a8df00"}, - {file = "matplotlib-3.3.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:3fb0409754b26f48045bacd6818e44e38ca9338089f8ba689e2f9344ff2847c7"}, - {file = "matplotlib-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:548cfe81476dbac44db96e9c0b074b6fb333b4d1f12b1ae68dbed47e45166384"}, - {file = "matplotlib-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:f0268613073df055bcc6a490de733012f2cf4fe191c1adb74e41cec8add1a165"}, - {file = "matplotlib-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:57be9e21073fc367237b03ecac0d9e4b8ddbe38e86ec4a316857d8d93ac9286c"}, - {file = "matplotlib-3.3.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:be2f0ec62e0939a9dcfd3638c140c5a74fc929ee3fd1f31408ab8633db6e1523"}, - {file = "matplotlib-3.3.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:c5d0c2ae3e3ed4e9f46b7c03b40d443601012ffe8eb8dfbb2bd6b2d00509f797"}, - {file = "matplotlib-3.3.2-cp38-cp38-win32.whl", hash = "sha256:a522de31e07ed7d6f954cda3fbd5ca4b8edbfc592a821a7b00291be6f843292e"}, - {file = "matplotlib-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:8bc1d3284dee001f41ec98f59675f4d723683e1cc082830b440b5f081d8e0ade"}, - {file = "matplotlib-3.3.2-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:799c421bc245a0749c1515b6dea6dc02db0a8c1f42446a0f03b3b82a60a900dc"}, - {file = "matplotlib-3.3.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:2f5eefc17dc2a71318d5a3496313be5c351c0731e8c4c6182c9ac3782cfc4076"}, - {file = "matplotlib-3.3.2.tar.gz", hash = "sha256:3d2edbf59367f03cd9daf42939ca06383a7d7803e3993eb5ff1bee8e8a3fbb6b"}, -] more-itertools = [ {file = "more-itertools-8.5.0.tar.gz", hash = "sha256:6f83822ae94818eae2612063a5101a7311e68ae8002005b5e05f03fd74a86a20"}, {file = "more_itertools-8.5.0-py3-none-any.whl", hash = "sha256:9b30f12df9393f0d28af9210ff8efe48d10c94f73e5daf886f10c4b0b0b4f03c"}, @@ -333,34 +227,6 @@ packaging = [ {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, ] -pillow = [ - {file = "Pillow-7.2.0-cp35-cp35m-macosx_10_10_intel.whl", hash = "sha256:1ca594126d3c4def54babee699c055a913efb01e106c309fa6b04405d474d5ae"}, - {file = "Pillow-7.2.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c92302a33138409e8f1ad16731568c55c9053eee71bb05b6b744067e1b62380f"}, - {file = "Pillow-7.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:8dad18b69f710bf3a001d2bf3afab7c432785d94fcf819c16b5207b1cfd17d38"}, - {file = "Pillow-7.2.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:431b15cffbf949e89df2f7b48528be18b78bfa5177cb3036284a5508159492b5"}, - {file = "Pillow-7.2.0-cp35-cp35m-win32.whl", hash = "sha256:09d7f9e64289cb40c2c8d7ad674b2ed6105f55dc3b09aa8e4918e20a0311e7ad"}, - {file = "Pillow-7.2.0-cp35-cp35m-win_amd64.whl", hash = "sha256:0295442429645fa16d05bd567ef5cff178482439c9aad0411d3f0ce9b88b3a6f"}, - {file = "Pillow-7.2.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:ec29604081f10f16a7aea809ad42e27764188fc258b02259a03a8ff7ded3808d"}, - {file = "Pillow-7.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:612cfda94e9c8346f239bf1a4b082fdd5c8143cf82d685ba2dba76e7adeeb233"}, - {file = "Pillow-7.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0a80dd307a5d8440b0a08bd7b81617e04d870e40a3e46a32d9c246e54705e86f"}, - {file = "Pillow-7.2.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:06aba4169e78c439d528fdeb34762c3b61a70813527a2c57f0540541e9f433a8"}, - {file = "Pillow-7.2.0-cp36-cp36m-win32.whl", hash = "sha256:f7e30c27477dffc3e85c2463b3e649f751789e0f6c8456099eea7ddd53be4a8a"}, - {file = "Pillow-7.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:ffe538682dc19cc542ae7c3e504fdf54ca7f86fb8a135e59dd6bc8627eae6cce"}, - {file = "Pillow-7.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:94cf49723928eb6070a892cb39d6c156f7b5a2db4e8971cb958f7b6b104fb4c4"}, - {file = "Pillow-7.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6edb5446f44d901e8683ffb25ebdfc26988ee813da3bf91e12252b57ac163727"}, - {file = "Pillow-7.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:52125833b070791fcb5710fabc640fc1df07d087fc0c0f02d3661f76c23c5b8b"}, - {file = "Pillow-7.2.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:9ad7f865eebde135d526bb3163d0b23ffff365cf87e767c649550964ad72785d"}, - {file = "Pillow-7.2.0-cp37-cp37m-win32.whl", hash = "sha256:c79f9c5fb846285f943aafeafda3358992d64f0ef58566e23484132ecd8d7d63"}, - {file = "Pillow-7.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d350f0f2c2421e65fbc62690f26b59b0bcda1b614beb318c81e38647e0f673a1"}, - {file = "Pillow-7.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:6d7741e65835716ceea0fd13a7d0192961212fd59e741a46bbed7a473c634ed6"}, - {file = "Pillow-7.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:edf31f1150778abd4322444c393ab9c7bd2af271dd4dafb4208fb613b1f3cdc9"}, - {file = "Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d08b23fdb388c0715990cbc06866db554e1822c4bdcf6d4166cf30ac82df8c41"}, - {file = "Pillow-7.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:5e51ee2b8114def244384eda1c82b10e307ad9778dac5c83fb0943775a653cd8"}, - {file = "Pillow-7.2.0-cp38-cp38-win32.whl", hash = "sha256:725aa6cfc66ce2857d585f06e9519a1cc0ef6d13f186ff3447ab6dff0a09bc7f"}, - {file = "Pillow-7.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:a060cf8aa332052df2158e5a119303965be92c3da6f2d93b6878f0ebca80b2f6"}, - {file = "Pillow-7.2.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:25930fadde8019f374400f7986e8404c8b781ce519da27792cbe46eabec00c4d"}, - {file = "Pillow-7.2.0.tar.gz", hash = "sha256:97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626"}, -] pluggy = [ {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, @@ -377,10 +243,6 @@ pytest = [ {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, ] -python-dateutil = [ - {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, - {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, -] six = [ {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, diff --git a/pyproject.toml b/pyproject.toml index de5caacf..f5f62402 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,11 +18,11 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.8" -matplotlib = "^3.3" CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } [tool.poetry.dev-dependencies] pytest = "^5.2" +#matplotlib = "^3.3" #CFML_api = { path = '../CFML_api/' } [tool.poetry.scripts] From a338b1adc568023a23c05655e4638a9778c34a36 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 15:38:00 +0200 Subject: [PATCH 007/312] Print some debug info --- .github/workflows/test.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dd3a8614..2316d964 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,5 +42,11 @@ jobs: - name: Create venv and install dependences run: poetry install + - name: Print some debug info + run: | + which python + poetry run which python + poetry env info + - name: Run main.py run: poetry run easyDiffractionLib From d9227fe6a89339f37a7cbfe3b7a59c7bb5878540 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 15:48:12 +0200 Subject: [PATCH 008/312] Disable automatic creation of virtualenvs --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2316d964..10acdfa3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,6 +42,9 @@ jobs: - name: Create venv and install dependences run: poetry install + - name: Disable automatic creation of virtualenvs + run: poetry config virtualenvs.create false + - name: Print some debug info run: | which python From a520b78b35b38ad24936568d235bc97f27b98c3f Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 15:51:49 +0200 Subject: [PATCH 009/312] Up --- .github/workflows/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 10acdfa3..d1f107c2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -39,12 +39,12 @@ jobs: - name: Set up python packages manager uses: Gr1N/setup-poetry@v2 - - name: Create venv and install dependences - run: poetry install - - name: Disable automatic creation of virtualenvs run: poetry config virtualenvs.create false + - name: Create venv and install dependences + run: poetry install + - name: Print some debug info run: | which python From 6f532c363b278035e34d067183477c6ee27b0bcf Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 16:04:42 +0200 Subject: [PATCH 010/312] Set up PYTHONPATH --- .github/workflows/test.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d1f107c2..7bdeef66 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -39,6 +39,13 @@ jobs: - name: Set up python packages manager uses: Gr1N/setup-poetry@v2 + - name: Set up some env variables + shell: bash + run: | + echo "PYTHONPATH=${pythonLocation}" >> $GITHUB_ENV + echo $pythonLocation + echo $PYTHONPATH + - name: Disable automatic creation of virtualenvs run: poetry config virtualenvs.create false From f0eddf6fba7325842019b0818c2e91923d8950a6 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 16:12:46 +0200 Subject: [PATCH 011/312] Print some more debug info --- .github/workflows/test.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7bdeef66..28925141 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -46,8 +46,8 @@ jobs: echo $pythonLocation echo $PYTHONPATH - - name: Disable automatic creation of virtualenvs - run: poetry config virtualenvs.create false + #- name: Disable automatic creation of virtualenvs + # run: poetry config virtualenvs.create false - name: Create venv and install dependences run: poetry install @@ -57,6 +57,11 @@ jobs: which python poetry run which python poetry env info + ls /Library + ls /Library/Frameworks + ls /Library/Frameworks/Python.framework + ls /Library/Frameworks/Python.framework/Versions + ls /Library/Frameworks/Python.framework/Versions/3.7 - name: Run main.py run: poetry run easyDiffractionLib From b26d65faa0042ae8927fd11091723c5e9a7bd647 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 16:18:15 +0200 Subject: [PATCH 012/312] Up --- .github/workflows/test.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 28925141..3471f541 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,11 +57,14 @@ jobs: which python poetry run which python poetry env info - ls /Library + echo "" ls /Library/Frameworks - ls /Library/Frameworks/Python.framework - ls /Library/Frameworks/Python.framework/Versions - ls /Library/Frameworks/Python.framework/Versions/3.7 + echo "" + ls /Users/runner/hostedtoolcache/Python + echo "" + ls /Users/runner/hostedtoolcache/Python/3.7.9 + echo "" + ls /Users/runner/hostedtoolcache/Python/3.7.9/x64 - name: Run main.py run: poetry run easyDiffractionLib From 77d710528bdcfdea4e2058362ac5690a3da6cb27 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 16:24:02 +0200 Subject: [PATCH 013/312] Up --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3471f541..938e09ff 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,13 +58,13 @@ jobs: poetry run which python poetry env info echo "" - ls /Library/Frameworks + ls -l /Library/Frameworks echo "" - ls /Users/runner/hostedtoolcache/Python + ls -l /Users/runner/hostedtoolcache/Python echo "" - ls /Users/runner/hostedtoolcache/Python/3.7.9 + ls -l /Users/runner/hostedtoolcache/Python/3.7.9 echo "" - ls /Users/runner/hostedtoolcache/Python/3.7.9/x64 + ls -l /Users/runner/hostedtoolcache/Python/3.7.9/x64 - name: Run main.py run: poetry run easyDiffractionLib From 2b77a0811ebd4052b2009a227e8e1aaaf30bf204 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 13 Oct 2020 16:53:44 +0200 Subject: [PATCH 014/312] Install python manually --- .github/workflows/test.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 938e09ff..99a40b39 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,9 +27,13 @@ jobs: uses: actions/checkout@v2 - name: Set up Python environment - uses: actions/setup-python@v2 - with: - python-version: 3.7 + #uses: actions/setup-python@v2 + #with: + # python-version: 3.7 + run: | + mkdir -p .ci/download + curl -o .ci/download/python-3.7.9-macosx10.9.pkg https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg + sudo installer -store -pkg .ci/download/python-3.7.9-macosx10.9.pkg -target / - name: Set up access to private repos uses: webfactory/ssh-agent@v0.4.1 From 3b6d6339c18c948bc38c7a03da676b714d1d93e1 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 14 Oct 2020 15:06:46 +0200 Subject: [PATCH 015/312] Seeding code --- easyDiffractionLib/Calculators/CFML.py | 35 ++ easyDiffractionLib/Calculators/__init__.py | 2 + .../Elements/Backgrounds/Linear.py | 20 + .../Elements/Backgrounds/__init__.py | 2 + .../Elements/Instruments/Instrument.py | 58 +++ .../Elements/Instruments/__init__.py | 2 + easyDiffractionLib/Elements/__init__.py | 2 + easyDiffractionLib/Interfaces/CFML.py | 118 ++++++ easyDiffractionLib/Interfaces/__init__.py | 10 + .../Interfaces/interfaceTemplate.py | 44 +++ easyDiffractionLib/__init__.py | 4 + easyDiffractionLib/interface.py | 139 +++++++ easyDiffractionLib/main.py | 11 +- easyDiffractionLib/model.py | 5 + easyDiffractionLib/sample.py | 56 +++ poetry.lock | 361 ++++++++++++++---- pyproject.toml | 6 +- tests/SrTiO3.cif | 68 ++++ tests/test1.py | 37 ++ 19 files changed, 900 insertions(+), 80 deletions(-) create mode 100644 easyDiffractionLib/Calculators/CFML.py create mode 100644 easyDiffractionLib/Calculators/__init__.py create mode 100644 easyDiffractionLib/Elements/Backgrounds/Linear.py create mode 100644 easyDiffractionLib/Elements/Backgrounds/__init__.py create mode 100644 easyDiffractionLib/Elements/Instruments/Instrument.py create mode 100644 easyDiffractionLib/Elements/Instruments/__init__.py create mode 100644 easyDiffractionLib/Elements/__init__.py create mode 100644 easyDiffractionLib/Interfaces/CFML.py create mode 100644 easyDiffractionLib/Interfaces/__init__.py create mode 100644 easyDiffractionLib/Interfaces/interfaceTemplate.py create mode 100644 easyDiffractionLib/__init__.py create mode 100644 easyDiffractionLib/interface.py create mode 100644 easyDiffractionLib/model.py create mode 100644 easyDiffractionLib/sample.py create mode 100644 tests/SrTiO3.cif create mode 100644 tests/test1.py diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py new file mode 100644 index 00000000..b0942017 --- /dev/null +++ b/easyDiffractionLib/Calculators/CFML.py @@ -0,0 +1,35 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +from easyCore import np +from CFML_api import PowderPatternSimulation as CFML_api + + +class CFML: + def __init__(self, filename: str = None): + self.filename = filename + self.simulator = CFML_api.PowderPatternSimulator() + self.conditions = CFML_api.PowderPatternSimulationConditions() + self.conditions.bkg = 0.0 + + def calculate(self, x_array: np.ndarray) -> np.ndarray: + """ + For a given x calculate the corresponding y + :param x_array: array of data points to be calculated + :type x_array: np.ndarray + :return: points calculated at `x` + :rtype: np.ndarray + """ + if self.filename is None: + raise AttributeError + + x0 = x_array[0] + xF = x_array[-1] + nX = np.prod(x_array.shape) + + self.conditions.theta_min = x0 + self.conditions.theta_max = xF + self.conditions.theta_step = (xF-x0)/(nX - 1) + + self.simulator.compute(self.filename, simulation_conditions=self.conditions) + return self.simulator.y diff --git a/easyDiffractionLib/Calculators/__init__.py b/easyDiffractionLib/Calculators/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/easyDiffractionLib/Calculators/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/easyDiffractionLib/Elements/Backgrounds/Linear.py b/easyDiffractionLib/Elements/Backgrounds/Linear.py new file mode 100644 index 00000000..767785bc --- /dev/null +++ b/easyDiffractionLib/Elements/Backgrounds/Linear.py @@ -0,0 +1,20 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCore import np + + +class Factorial: + def __init__(self, *args): + self._args = args + + def calculate(self, x_data: np.ndarray) -> np.ndarray: + y_data = np.ones_like(x_data) * self._args[-1] + for pow, arg in self._args[-2::-1]: + y_data += arg * x_data ** pow + return y_data + + +class Line(Factorial): + def __init__(self, m=0, c=0): + super(Line, self).__init__(m, c) \ No newline at end of file diff --git a/easyDiffractionLib/Elements/Backgrounds/__init__.py b/easyDiffractionLib/Elements/Backgrounds/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/easyDiffractionLib/Elements/Backgrounds/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/easyDiffractionLib/Elements/Instruments/Instrument.py b/easyDiffractionLib/Elements/Instruments/Instrument.py new file mode 100644 index 00000000..42f51d28 --- /dev/null +++ b/easyDiffractionLib/Elements/Instruments/Instrument.py @@ -0,0 +1,58 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCore.Objects.Base import BaseObj +from easyCore.Utils.json import MontyDecoder + +_decoder = MontyDecoder() + + +class Pattern(BaseObj): + _name = 'instrument' + _defaults = [ + { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'u_resolution', + 'value': 0.0002 + }, + { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'v_resolution', + 'value': -0.0002 + }, + { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'w_resolution', + 'value': 0.012 + }, + { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'x_resolution', + 'value': 0.012 + }, + { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'wavelength', + 'units': 'angstrom', + 'value': 1.54056 + }, + ] + + def __init__(self, interface=None): + super().__init__(self.__class__.__name__, *[_decoder.process_decoded(default) for default in self._defaults]) + self.name = self._name + self.interface = interface + + def __repr__(self): + return f'{self.__class__.__name__}: x_shift={self.zero_point}, ' \ + f'y_shift={self.background} ' diff --git a/easyDiffractionLib/Elements/Instruments/__init__.py b/easyDiffractionLib/Elements/Instruments/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/easyDiffractionLib/Elements/Instruments/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/easyDiffractionLib/Elements/__init__.py b/easyDiffractionLib/Elements/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/easyDiffractionLib/Elements/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py new file mode 100644 index 00000000..179c1a18 --- /dev/null +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -0,0 +1,118 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +from typing import List + +import numpy as np + +from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate +from easyDiffractionLib.Calculators.CFML import CFML as CFML_calc + + +class CFML(InterfaceTemplate): + """ + A simple example interface using Calculator1 + """ + + _sample_link = { + 'filename': 'filename'} + + _instrument_link = { + 'u_resolution': 'u_resolution', + 'v_resolution': 'v_resolution', + 'w_resolution': 'w_resolution', + 'x_resolution': 'x_resolution', + 'wavelength': 'lamb' + } + + name = 'CrysFML' + + def __init__(self): + self.calculator = CFML_calc() + self._namespace = {} + + def get_value(self, value_label: str) -> float: + """ + Method to get a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :return: associated value + :rtype: float + """ + if value_label in self._sample_link.keys(): + value_label = self._sample_link[value_label] + return getattr(self.calculator, value_label, None) + + def set_value(self, value_label: str, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + if self._borg.debug: + print(f'Interface1: Value of {value_label} set to {value}') + if value_label in self._sample_link.keys(): + value_label = self._sample_link[value_label] + setattr(self.calculator, value_label, value) + + def get_instrument_value(self, value_label: str) -> float: + """ + Method to get a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :return: associated value + :rtype: float + """ + if value_label in self._instrument_link.keys(): + value_label = self._instrument_link[value_label] + return getattr(self.calculator.conditions, value_label, None) + + def set_instrument_value(self, value_label: str, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + if self._borg.debug: + print(f'Interface1: Value of {value_label} set to {value}') + if value_label in self._instrument_link.keys(): + value_label = self._instrument_link[value_label] + setattr(self.calculator.conditions, value_label, value) + + def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): + """ + Perform an update of multiple values at once to save time on expensive updates + + :param value_label_list: list of parameters to set + :type value_label_list: List[str] + :param value_list: list of new numeric values + :type value_list: List[float] + :param external: should we lookup a name conversion to internal labeling? + :type external: bool + :return: None + :rtype: noneType + """ + for label, value in zip(value_label_list, value_list): + # This is a simple case so we will serially update + if label in self._sample_link: + self.set_value(label, value) + elif label in self._instrument_link: + self.set_instrument_value(label, value) + + def fit_func(self, x_array: np.ndarray) -> np.ndarray: + """ + Function to perform a fit + :param x_array: points to be calculated at + :type x_array: np.ndarray + :return: calculated points + :rtype: np.ndarray + """ + return self.calculator.calculate(x_array) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py new file mode 100644 index 00000000..89739a5f --- /dev/null +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -0,0 +1,10 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +try: + from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 +except ImportError: + # TODO make this a proper message (use logging?) + print('CFML is not installed') + +from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate diff --git a/easyDiffractionLib/Interfaces/interfaceTemplate.py b/easyDiffractionLib/Interfaces/interfaceTemplate.py new file mode 100644 index 00000000..fe1dc50a --- /dev/null +++ b/easyDiffractionLib/Interfaces/interfaceTemplate.py @@ -0,0 +1,44 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +import numpy as np +from abc import ABCMeta, abstractmethod + +from easyCore import borg +from easyCore.Utils.json import MSONable + + +class InterfaceTemplate(MSONable, metaclass=ABCMeta): + """ + This class is a template and defines all properties that an interface should have. + """ + _interfaces = [] + _borg = borg + _link = {} + + def __init_subclass__(cls, is_abstract: bool = False, **kwargs): + """ + Initialise all subclasses so that they can be created in the factory + + :param is_abstract: Is this a subclass which shouldn't be dded + :type is_abstract: bool + :param kwargs: key word arguments + :type kwargs: dict + :return: None + :rtype: noneType + """ + super().__init_subclass__(**kwargs) + if not is_abstract: + cls._interfaces.append(cls) + + @abstractmethod + def fit_func(self, x_array: np.ndarray) -> np.ndarray: + """ + Function to perform a fit + + :param x_array: points to be calculated at + :type x_array: np.ndarray + :return: calculated points + :rtype: np.ndarray + """ + pass diff --git a/easyDiffractionLib/__init__.py b/easyDiffractionLib/__init__.py new file mode 100644 index 00000000..c5c594e1 --- /dev/null +++ b/easyDiffractionLib/__init__.py @@ -0,0 +1,4 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCore.Elements.HigherLevel.Crystal import Crystal, Crystals, Atoms, Site, SpaceGroup, Cell \ No newline at end of file diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py new file mode 100644 index 00000000..b3183955 --- /dev/null +++ b/easyDiffractionLib/interface.py @@ -0,0 +1,139 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +from typing import Callable + +from easyDiffractionLib.Interfaces import InterfaceTemplate +from easyCore.Objects.Inferface import InterfaceFactoryTemplate + + +class InterfaceFactory(InterfaceFactoryTemplate): + def __init__(self): + super(InterfaceFactory, self).__init__(InterfaceTemplate._interfaces) + + def generate_sample_binding(self, name, *args) -> property: + """ + Automatically bind a `Parameter` to the corresponding interface. + :param name: parameter name + :type name: str + :return: binding property + :rtype: property + """ + fun = self.__set_item(self, 'filename') + fun(args[0].filename) + return property(fget=None, + fset=self.__set_sample_item(self, name, *args)) + + def generate_instrument_binding(self, name) -> property: + """ + Automatically bind a `Parameter` to the corresponding interface. + :param name: parameter name + :type name: str + :return: binding property + :rtype: property + """ + return property(fget=self.__get_instrument_item(self, name), + fset=self.__set_instrument_item(self, name)) + + def generate_binding(self, name, *args, **kwargs) -> property: + """ + Automatically bind a `Parameter` to the corresponding interface. + :param name: parameter name + :type name: str + :return: binding property + :rtype: property + """ + return property(self.__get_item(self, name), self.__set_item(self, name)) + + @staticmethod + def __get_item(obj, key: str, external: bool = True) -> Callable: + """ + Access the value of a key by a callable object + :param key: name of parameter to be retrieved + :type key: str + :return: function to get key + :rtype: Callable + """ + + def inner(): + return obj().get_value(key, external) + + return inner + + @staticmethod + def __set_item(obj, key) -> Callable: + """ + Set the value of a key by a callable object + :param obj: object to be created from + :type obj: InterfaceFactory + :param key: name of parameter to be set + :type key: str + :return: function to set key + :rtype: Callable + """ + + def inner(value): + obj().set_value(key, value) + return inner + + @staticmethod + def __get_sample_item(obj, key: str, holder) -> Callable: + """ + Access the value of a key by a callable object + :param key: name of parameter to be retrieved + :type key: str + :return: function to get key + :rtype: Callable + """ + + def inner(): + # return obj().get_value(key) + return None + return inner + + @staticmethod + def __set_sample_item(obj, key, holder) -> Callable: + """ + Set the value of a key by a callable object + :param obj: object to be created from + :type obj: InterfaceFactory + :param key: name of parameter to be set + :type key: str + :return: function to set key + :rtype: Callable + """ + + def inner(value): + holder.phase.cif.to_file(holder.filename) + # obj().set_value(key, value) + return inner + + @staticmethod + def __get_instrument_item(obj, key: str) -> Callable: + """ + Access the value of a key by a callable object + :param key: name of parameter to be retrieved + :type key: str + :return: function to get key + :rtype: Callable + """ + + def inner(): + return obj().get_instrument_value(key) + return inner + + @staticmethod + def __set_instrument_item(obj, key) -> Callable: + """ + Set the value of a key by a callable object + :param obj: object to be created from + :type obj: InterfaceFactory + :param key: name of parameter to be set + :type key: str + :return: function to set key + :rtype: Callable + """ + + def inner(value): + obj().set_instrument_value(key, value) + return inner diff --git a/easyDiffractionLib/main.py b/easyDiffractionLib/main.py index 263f83f3..7dac8f5b 100644 --- a/easyDiffractionLib/main.py +++ b/easyDiffractionLib/main.py @@ -1,11 +1,10 @@ import os, sys -#import CFML_api - +from CFML_api import PowderPatternSimulation as CFML_api def main(): print("without CFML_api") - exit() + # exit() simulation_conditions = CFML_api.PowderPatternSimulationConditions() print("simulation_conditions.theta_max", simulation_conditions.theta_max) @@ -14,9 +13,9 @@ def main(): print("powder_pattern.x", powder_pattern.x) print("powder_pattern.y", powder_pattern.y) - powder_pattern.compute("../CFML_api/Examples/Data/SrTiO3.cif") - print("powder_pattern.x", powder_pattern.x) - print("powder_pattern.y", powder_pattern.y) + # powder_pattern.compute("../CFML_api/Examples/Data/SrTiO3.cif") + # print("powder_pattern.x", powder_pattern.x) + # print("powder_pattern.y", powder_pattern.y) if __name__ == '__main__': main() diff --git a/easyDiffractionLib/model.py b/easyDiffractionLib/model.py new file mode 100644 index 00000000..899c3e40 --- /dev/null +++ b/easyDiffractionLib/model.py @@ -0,0 +1,5 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from typing import Union, List +import numpy as np diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py new file mode 100644 index 00000000..67834548 --- /dev/null +++ b/easyDiffractionLib/sample.py @@ -0,0 +1,56 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyDiffractionLib import Crystal +from easyDiffractionLib.Elements.Instruments.Instrument import Pattern +from easyDiffractionLib.Elements.Backgrounds.Linear import Line +from tempfile import NamedTemporaryFile + + +class Sample: + def __init__(self, phase=None, parameters=None, interface=None): + self._phase = phase + self.background = Line() + self._parameters = parameters + self.interface = interface + self.filename = './temp.cif' + self._updateInterface() + + def _updateInterface(self): + if self.interface is not None: + if self._phase is not None: + self.interface.generate_bindings(self._phase, self, ifun=self.interface.generate_sample_binding) + if self._parameters is not None: + self.interface.generate_bindings(self._parameters, ifun=self.interface.generate_instrument_binding) + + @property + def phase(self): + return self._phase + + @phase.setter + def phase(self, value): + if not isinstance(value, Crystal): + raise ValueError + self._phase = value + self._updateInterface() + + @property + def parameters(self): + return self._parameters + + @phase.setter + def phase(self, value): + if not isinstance(value, Pattern): + raise ValueError + self._parameters = value + self._updateInterface() + + @property + def name(self): + name = '' + if isinstance(self.phase, Crystal): + name = self.phase.name + return name + + def update_bindings(self): + self._updateInterface() diff --git a/poetry.lock b/poetry.lock index 3b9281c0..0e2ea9da 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,73 +1,137 @@ [[package]] -name = "atomicwrites" -version = "1.4.0" -description = "Atomic file writes." +category = "main" +description = "Safe, minimalistic evaluator of python expression using ast module" +name = "asteval" +optional = false +python-versions = ">=3.5" +version = "0.9.19" + +[[package]] category = "dev" +description = "Atomic file writes." +marker = "sys_platform == \"win32\"" +name = "atomicwrites" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.4.0" [[package]] -name = "attrs" -version = "20.2.0" -description = "Classes Without Boilerplate" category = "dev" +description = "Classes Without Boilerplate" +name = "attrs" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "20.2.0" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "sphinx-rtd-theme", "pre-commit"] +dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "sphinx-rtd-theme", "pre-commit"] docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] +tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] [[package]] -name = "certifi" -version = "2020.6.20" -description = "Python package for providing Mozilla's CA Bundle." category = "main" +description = "Data fitting with bayesian uncertainty analysis" +name = "bumps" optional = false python-versions = "*" +version = "0.7.16" + +[package.dependencies] +six = "*" + +[[package]] +category = "main" +description = "Python package for providing Mozilla's CA Bundle." +name = "certifi" +optional = false +python-versions = "*" +version = "2020.6.20" [[package]] -name = "cfml-api" -version = "0.0.1" -description = "" category = "main" +description = "" +name = "cfml-api" optional = false -python-versions = ">=3.7,<3.8" +python-versions = "^3.7, <3.8" +version = "0.0.1" + +[package.dependencies] +icc_rt = "^2020.0.133" +mkl = "^2019.0" +numpy = "^1.19" [package.source] +reference = "95f1aa7611f4d75a85a9f7ba9dc6b650890008be" type = "git" url = 'ssh://git@github.com/easyScience/CFML_api.git' -reference = 'main' -resolved_reference = "0e47d12c6157d5518f09b50ed5451ec4e7035b60" - [[package]] -name = "colorama" -version = "0.4.4" -description = "Cross-platform colored terminal text." category = "dev" +description = "Cross-platform colored terminal text." +marker = "sys_platform == \"win32\"" +name = "colorama" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.4.4" [[package]] +category = "main" +description = "Composable style cycles" name = "cycler" +optional = false +python-versions = "*" version = "0.10.0" -description = "Composable style cycles" + +[package.dependencies] +six = "*" + +[[package]] +category = "main" +description = "" +name = "easycore" +optional = false +python-versions = "^3.6, >=3.6.1" # "^3.8" generates error when installing PySide2 in easyAppGui +version = "0.0.1" + +[package.dependencies] +asteval = "^0.9.19" +bumps = "^0.7" +lmfit = "^1.0" +numpy = "^1.19" +pint = "^0.16" +uncertainties = "^3.1" + +[package.source] +reference = "975f3e89d0b78b69d40a9e7337c5d4a88126acad" +type = "git" +url = 'https://github.com/easyScience/easyCore.git' +[[package]] +category = "main" +description = "Clean single-source support for Python 3 and 2" +name = "future" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "0.18.2" + +[[package]] category = "main" +description = "Intel(R) Compiler Runtime" +name = "icc-rt" optional = false python-versions = "*" +version = "2020.0.133" [package.dependencies] -six = "*" +intel-openmp = ">=2020.0.0,<2021.0.0" [[package]] -name = "importlib-metadata" -version = "2.0.0" +category = "main" description = "Read metadata from Python packages" -category = "dev" +marker = "python_version < \"3.8\"" +name = "importlib-metadata" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +version = "2.0.0" [package.dependencies] zipp = ">=0.5" @@ -77,20 +141,42 @@ docs = ["sphinx", "rst.linker"] testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] [[package]] +category = "main" +description = "Intel(R) OpenMP Runtime Library" +name = "intel-openmp" +optional = false +python-versions = "*" +version = "2020.0.133" + +[[package]] +category = "main" +description = "A fast implementation of the Cassowary constraint solver" name = "kiwisolver" +optional = false +python-versions = ">=3.6" version = "1.2.0" -description = "A fast implementation of the Cassowary constraint solver" + +[[package]] category = "main" +description = "Least-Squares Minimization with Bounds and Constraints" +name = "lmfit" optional = false -python-versions = ">=3.6" +python-versions = ">=3.5" +version = "1.0.1" + +[package.dependencies] +asteval = ">=0.9.16" +numpy = ">=1.16" +scipy = ">=1.2" +uncertainties = ">=3.0.1" [[package]] -name = "matplotlib" -version = "3.3.2" -description = "Python plotting package" category = "main" +description = "Python plotting package" +name = "matplotlib" optional = false python-versions = ">=3.6" +version = "3.3.2" [package.dependencies] certifi = ">=2020.06.20" @@ -102,139 +188,217 @@ pyparsing = ">=2.0.3,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" python-dateutil = ">=2.1" [[package]] -name = "more-itertools" -version = "8.5.0" -description = "More routines for operating on iterables, beyond itertools" +category = "main" +description = "Math library for Intel and compatible processors" +name = "mkl" +optional = false +python-versions = "*" +version = "2019.0" + +[package.dependencies] +intel-openmp = "*" + +[[package]] +category = "main" +description = "Monty is the missing complement to Python." +name = "monty" +optional = false +python-versions = ">=3.5" +version = "4.0.2" + +[package.extras] +yaml = ["ruamel.yaml"] + +[[package]] category = "dev" +description = "More routines for operating on iterables, beyond itertools" +name = "more-itertools" optional = false python-versions = ">=3.5" +version = "8.5.0" [[package]] -name = "numpy" -version = "1.19.2" -description = "NumPy is the fundamental package for array computing with Python." category = "main" +description = "NumPy is the fundamental package for array computing with Python." +name = "numpy" optional = false python-versions = ">=3.6" +version = "1.19.2" [[package]] -name = "packaging" -version = "20.4" +category = "main" description = "Core utilities for Python packages" -category = "dev" +name = "packaging" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "20.4" [package.dependencies] pyparsing = ">=2.0.2" six = "*" [[package]] +category = "main" +description = "Python Imaging Library (Fork)" name = "pillow" +optional = false +python-versions = ">=3.5" version = "7.2.0" -description = "Python Imaging Library (Fork)" + +[[package]] category = "main" +description = "Physical quantities module" +name = "pint" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" +version = "0.16.1" + +[package.dependencies] +packaging = "*" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = "*" + +[package.extras] +numpy = ["numpy (>=1.14)"] +test = ["pytest", "pytest-mpl", "pytest-cov"] +uncertainties = ["uncertainties (>=3.0)"] [[package]] -name = "pluggy" -version = "0.13.1" -description = "plugin and hook calling mechanisms for python" category = "dev" +description = "plugin and hook calling mechanisms for python" +name = "pluggy" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.13.1" [package.dependencies] -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" [package.extras] dev = ["pre-commit", "tox"] [[package]] -name = "py" -version = "1.9.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" category = "dev" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +name = "py" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.9.0" [[package]] -name = "pyparsing" -version = "2.4.7" -description = "Python parsing module" category = "main" +description = "Python parsing module" +name = "pyparsing" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.4.7" [[package]] -name = "pytest" -version = "5.4.3" -description = "pytest: simple powerful testing with Python" category = "dev" +description = "pytest: simple powerful testing with Python" +name = "pytest" optional = false python-versions = ">=3.5" +version = "5.4.3" [package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +atomicwrites = ">=1.0" attrs = ">=17.4.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +colorama = "*" more-itertools = ">=4.0.0" packaging = "*" pluggy = ">=0.12,<1.0" py = ">=1.5.0" wcwidth = "*" +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + [package.extras] checkqa-mypy = ["mypy (v0.761)"] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] [[package]] -name = "python-dateutil" -version = "2.8.1" -description = "Extensions to the standard Python datetime module" category = "main" +description = "Extensions to the standard Python datetime module" +name = "python-dateutil" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +version = "2.8.1" [package.dependencies] six = ">=1.5" [[package]] +category = "main" +description = "SciPy: Scientific Library for Python" +name = "scipy" +optional = false +python-versions = ">=3.6" +version = "1.5.2" + +[package.dependencies] +numpy = ">=1.14.5" + +[[package]] +category = "main" +description = "Python 2 and 3 compatibility utilities" name = "six" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" version = "1.15.0" -description = "Python 2 and 3 compatibility utilities" + +[[package]] category = "main" +description = "Transparent calculations with uncertainties on the quantities involved (aka error propagation); fast calculation of derivatives" +name = "uncertainties" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "*" +version = "3.1.4" + +[package.dependencies] +future = "*" + +[package.extras] +all = ["numpy", "sphinx", "nose"] +docs = ["sphinx"] +optional = ["numpy"] +tests = ["nose", "numpy"] [[package]] -name = "wcwidth" -version = "0.2.5" -description = "Measures the displayed width of unicode strings in a terminal" category = "dev" +description = "Measures the displayed width of unicode strings in a terminal" +name = "wcwidth" optional = false python-versions = "*" +version = "0.2.5" [[package]] -name = "zipp" -version = "3.3.0" +category = "main" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" +marker = "python_version < \"3.8\"" +name = "zipp" optional = false python-versions = ">=3.6" +version = "3.3.0" [package.extras] docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] [metadata] -lock-version = "1.1" +content-hash = "09013ef51804f8b2132d27a70c34916f2acb07010e0b7dd3ab92d17f4aa6ed1a" python-versions = "^3.7, <3.8" -content-hash = "005b35284888e1eac3168de98b46cbca25ed35a9f0a583a49f702e7711d6c6fa" [metadata.files] +asteval = [ + {file = "asteval-0.9.19.tar.gz", hash = "sha256:445f3a59df692c0c0ff2868c0bbf9b293884db4a9f9a13c73555485ba75ed08b"}, +] atomicwrites = [ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, @@ -243,6 +407,9 @@ attrs = [ {file = "attrs-20.2.0-py2.py3-none-any.whl", hash = "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc"}, {file = "attrs-20.2.0.tar.gz", hash = "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594"}, ] +bumps = [ + {file = "bumps-0.7.16.tar.gz", hash = "sha256:3594452487b8404f1efaace9b70aefaeb345fa44dd74349f7829a61161d2f69a"}, +] certifi = [ {file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"}, {file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"}, @@ -255,10 +422,20 @@ cycler = [ {file = "cycler-0.10.0-py2.py3-none-any.whl", hash = "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d"}, {file = "cycler-0.10.0.tar.gz", hash = "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"}, ] +easycore = [] +future = [ + {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, +] +icc-rt = [ + {file = "icc_rt-2020.0.133-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:17a173e65cee0c516358172b9cc96fe297dd54f4d6b23d57f79c62d9e105e3cf"}, +] importlib-metadata = [ {file = "importlib_metadata-2.0.0-py2.py3-none-any.whl", hash = "sha256:cefa1a2f919b866c5beb7c9f7b0ebb4061f30a8a9bf16d609b000e2dfaceb9c3"}, {file = "importlib_metadata-2.0.0.tar.gz", hash = "sha256:77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da"}, ] +intel-openmp = [ + {file = "intel_openmp-2020.0.133-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:cb9a12b0a1cb3f9c44a75959f687e548dc642a9470be3c63f73bccf291b8dcc8"}, +] kiwisolver = [ {file = "kiwisolver-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:443c2320520eda0a5b930b2725b26f6175ca4453c61f739fef7a5847bd262f74"}, {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:efcf3397ae1e3c3a4a0a0636542bcad5adad3b1dd3e8e629d0b6e201347176c8"}, @@ -277,6 +454,9 @@ kiwisolver = [ {file = "kiwisolver-1.2.0-cp38-none-win_amd64.whl", hash = "sha256:18d749f3e56c0480dccd1714230da0f328e6e4accf188dd4e6884bdd06bf02dd"}, {file = "kiwisolver-1.2.0.tar.gz", hash = "sha256:247800260cd38160c362d211dcaf4ed0f7816afb5efe56544748b21d6ad6d17f"}, ] +lmfit = [ + {file = "lmfit-1.0.1.tar.gz", hash = "sha256:d249eb756899360f4d2a544c9458f47fc8f765ac22c09e099530585fd64e286e"}, +] matplotlib = [ {file = "matplotlib-3.3.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:27f9de4784ae6fb97679556c5542cf36c0751dccb4d6407f7c62517fa2078868"}, {file = "matplotlib-3.3.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:06866c138d81a593b535d037b2727bec9b0818cadfe6a81f6ec5715b8dd38a89"}, @@ -297,6 +477,15 @@ matplotlib = [ {file = "matplotlib-3.3.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:2f5eefc17dc2a71318d5a3496313be5c351c0731e8c4c6182c9ac3782cfc4076"}, {file = "matplotlib-3.3.2.tar.gz", hash = "sha256:3d2edbf59367f03cd9daf42939ca06383a7d7803e3993eb5ff1bee8e8a3fbb6b"}, ] +mkl = [ + {file = "mkl-2019.0-py2.py3-none-macosx_10_12_intel.macosx_10_12_x86_64.whl", hash = "sha256:23c8e8ba2cac703d8bc357d2bf10519e91dc4371e7dd1decf461f70db20b9783"}, + {file = "mkl-2019.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:065e3c415029da2b2cdf2097cecb05f67e834354b358448aca683da7f4e3d344"}, + {file = "mkl-2019.0-py2.py3-none-win_amd64.whl", hash = "sha256:288098fb4762243a83752f8343a89558ea5f9c33eef79221614c6f9534a56445"}, +] +monty = [ + {file = "monty-4.0.2-py3-none-any.whl", hash = "sha256:e529d9fd270880fbb64fe3baaaee5bdeaad32d6f246255a51044ca7c27f14886"}, + {file = "monty-4.0.2.tar.gz", hash = "sha256:82d2a68af3418c10e6af5f2350494a41c1036cc9b5cbce49860a755803695365"}, +] more-itertools = [ {file = "more-itertools-8.5.0.tar.gz", hash = "sha256:6f83822ae94818eae2612063a5101a7311e68ae8002005b5e05f03fd74a86a20"}, {file = "more_itertools-8.5.0-py3-none-any.whl", hash = "sha256:9b30f12df9393f0d28af9210ff8efe48d10c94f73e5daf886f10c4b0b0b4f03c"}, @@ -358,9 +547,15 @@ pillow = [ {file = "Pillow-7.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:5e51ee2b8114def244384eda1c82b10e307ad9778dac5c83fb0943775a653cd8"}, {file = "Pillow-7.2.0-cp38-cp38-win32.whl", hash = "sha256:725aa6cfc66ce2857d585f06e9519a1cc0ef6d13f186ff3447ab6dff0a09bc7f"}, {file = "Pillow-7.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:a060cf8aa332052df2158e5a119303965be92c3da6f2d93b6878f0ebca80b2f6"}, + {file = "Pillow-7.2.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:9c87ef410a58dd54b92424ffd7e28fd2ec65d2f7fc02b76f5e9b2067e355ebf6"}, + {file = "Pillow-7.2.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:e901964262a56d9ea3c2693df68bc9860b8bdda2b04768821e4c44ae797de117"}, {file = "Pillow-7.2.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:25930fadde8019f374400f7986e8404c8b781ce519da27792cbe46eabec00c4d"}, {file = "Pillow-7.2.0.tar.gz", hash = "sha256:97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626"}, ] +pint = [ + {file = "Pint-0.16.1-py2.py3-none-any.whl", hash = "sha256:63ccb7153754923fd95477be69dcf8d7d0764ec2ebb3f6945f920c31fdf13392"}, + {file = "Pint-0.16.1.tar.gz", hash = "sha256:d43a2e9ae003164978b60fdf8cd920d8581e1a5991df8dded29b00f4850ec83a"}, +] pluggy = [ {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, @@ -381,10 +576,32 @@ python-dateutil = [ {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, ] +scipy = [ + {file = "scipy-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cca9fce15109a36a0a9f9cfc64f870f1c140cb235ddf27fe0328e6afb44dfed0"}, + {file = "scipy-1.5.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:1c7564a4810c1cd77fcdee7fa726d7d39d4e2695ad252d7c86c3ea9d85b7fb8f"}, + {file = "scipy-1.5.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:07e52b316b40a4f001667d1ad4eb5f2318738de34597bd91537851365b6c61f1"}, + {file = "scipy-1.5.2-cp36-cp36m-win32.whl", hash = "sha256:d56b10d8ed72ec1be76bf10508446df60954f08a41c2d40778bc29a3a9ad9bce"}, + {file = "scipy-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:8e28e74b97fc8d6aa0454989db3b5d36fc27e69cef39a7ee5eaf8174ca1123cb"}, + {file = "scipy-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6e86c873fe1335d88b7a4bfa09d021f27a9e753758fd75f3f92d714aa4093768"}, + {file = "scipy-1.5.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:a0afbb967fd2c98efad5f4c24439a640d39463282040a88e8e928db647d8ac3d"}, + {file = "scipy-1.5.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:eecf40fa87eeda53e8e11d265ff2254729d04000cd40bae648e76ff268885d66"}, + {file = "scipy-1.5.2-cp37-cp37m-win32.whl", hash = "sha256:315aa2165aca31375f4e26c230188db192ed901761390be908c9b21d8b07df62"}, + {file = "scipy-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:ec5fe57e46828d034775b00cd625c4a7b5c7d2e354c3b258d820c6c72212a6ec"}, + {file = "scipy-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fc98f3eac993b9bfdd392e675dfe19850cc8c7246a8fd2b42443e506344be7d9"}, + {file = "scipy-1.5.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:a785409c0fa51764766840185a34f96a0a93527a0ff0230484d33a8ed085c8f8"}, + {file = "scipy-1.5.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0a0e9a4e58a4734c2eba917f834b25b7e3b6dc333901ce7784fd31aefbd37b2f"}, + {file = "scipy-1.5.2-cp38-cp38-win32.whl", hash = "sha256:dac09281a0eacd59974e24525a3bc90fa39b4e95177e638a31b14db60d3fa806"}, + {file = "scipy-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:92eb04041d371fea828858e4fff182453c25ae3eaa8782d9b6c32b25857d23bc"}, + {file = "scipy-1.5.2.tar.gz", hash = "sha256:066c513d90eb3fd7567a9e150828d39111ebd88d3e924cdfc9f8ce19ab6f90c9"}, +] six = [ {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, ] +uncertainties = [ + {file = "uncertainties-3.1.4-py2.py3-none-any.whl", hash = "sha256:342703c36eabf99251b35fbd30d748d6220451fc88f586924bdec91cfe6bc6c0"}, + {file = "uncertainties-3.1.4.tar.gz", hash = "sha256:63548a94899f2a51eeb89b640f6ac311f481a8016b37dce157186e44619bc968"}, +] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, diff --git a/pyproject.toml b/pyproject.toml index 544adadd..a075e2d9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,11 +19,13 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.8" matplotlib = "^3.3" -#CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } +easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } +CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } +monty = "^4.0.2" [tool.poetry.dev-dependencies] pytest = "^5.2" -#CFML_api = { path = '../CFML_api/' } +#CFML_api = { path = '/home/simonward/PycharmProjects/easyScience/CFML_api/' } [tool.poetry.scripts] easyDiffractionLib = "easyDiffractionLib.main:main" diff --git a/tests/SrTiO3.cif b/tests/SrTiO3.cif new file mode 100644 index 00000000..4578b508 --- /dev/null +++ b/tests/SrTiO3.cif @@ -0,0 +1,68 @@ +#------------------------------------------------------------------------------ +#$Date: 2016-02-16 14:49:47 +0200 (Tue, 16 Feb 2016) $ +#$Revision: 176465 $ +#$URL: file:///home/coder/svn-repositories/cod/cif/9/00/28/9002806.cif $ +#------------------------------------------------------------------------------ +# +# This file is available in the Crystallography Open Database (COD), +# http://www.crystallography.net/. The original data for this entry +# were provided the American Mineralogist Crystal Structure Database, +# http://rruff.geo.arizona.edu/AMS/amcsd.php +# +# The file may be used within the scientific community so long as +# proper attribution is given to the journal article from which the +# data were obtained. +# +data_9002806 +loop_ +_publ_author_name +'Yamanaka, T.' +'Hirai, M.' +'Komatsu, Y.' +_publ_section_title +; + Structure change of Ca1-xSrxTiO3 perovskite with composition and pressure + Sample: SrTiO3, x = 1.0 +; +_journal_name_full 'American Mineralogist' +_journal_page_first 1183 +_journal_page_last 1189 +_journal_volume 87 +_journal_year 2002 +_chemical_formula_sum 'O3 Sr Ti' +_chemical_name_mineral Tausonite +_space_group_IT_number 62 +_symmetry_space_group_name_Hall '-P 2c 2ab' +_symmetry_space_group_name_H-M 'P b n m' +_cell_angle_alpha 90 +_cell_angle_beta 90 +_cell_angle_gamma 90 +_cell_length_a 5.5202 +_cell_length_b 5.5202 +_cell_length_c 7.8067 +_cell_volume 237.891 +_exptl_crystal_density_diffrn 5.123 +_cod_original_cell_volume 237.890 +_cod_original_formula_sum 'Sr Ti O3' +_cod_database_code 9002806 +loop_ +_symmetry_equiv_pos_as_xyz +x,y,z +x,y,1/2-z +-x,-y,1/2+z +1/2+x,1/2-y,1/2+z +1/2-x,1/2+y,1/2-z +1/2-x,1/2+y,z +1/2+x,1/2-y,-z +-x,-y,-z +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +_atom_site_U_iso_or_equiv +Sr Sr 0.00000 0.00000 0.25000 0.00608 +Ti Ti 0.50000 0.00000 0.00000 0.00507 +O1 O 0.00000 0.50000 0.25000 0.01646 +O2 O 0.75000 0.25000 0.00000 0.02026 diff --git a/tests/test1.py b/tests/test1.py new file mode 100644 index 00000000..f803fd42 --- /dev/null +++ b/tests/test1.py @@ -0,0 +1,37 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCore import np + +from easyDiffractionLib.sample import Sample +from easyDiffractionLib import Crystal +from easyDiffractionLib.interface import InterfaceFactory +from easyDiffractionLib.Elements.Instruments.Instrument import Pattern + +import matplotlib.pyplot as plt + + +i = InterfaceFactory() + +c = Crystal.from_cif_file('tests/SrTiO3.cif') + +S = Sample(phase=c, parameters=Pattern(), interface=i) +# S.phase.cell.length_a = 5 +# S.parameters.wavelength = 1.25 +# print(S) + +x_data = np.linspace(5, 150, 100) +y_data = i.fit_func(x_data) + +plt.plot(x_data, y_data, label="CFL") +plt.show() + +S.parameters.wavelength = 2.5 +y_data = i.fit_func(x_data) +plt.plot(x_data, y_data, label="CFL") +plt.show() + +S.phase.cell.length_a = 10 +y_data = i.fit_func(x_data) +plt.plot(x_data, y_data, label="CFL") +plt.show() \ No newline at end of file From 7f4d47350cb776a17d15a8158b6fdaf64acda8b2 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 14 Oct 2020 16:25:36 +0200 Subject: [PATCH 016/312] Fix adding phase to sample --- easyDiffractionLib/sample.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 67834548..3e5a3d6c 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -38,8 +38,8 @@ def phase(self, value): def parameters(self): return self._parameters - @phase.setter - def phase(self, value): + @parameters.setter + def parameters(self, value): if not isinstance(value, Pattern): raise ValueError self._parameters = value From 7866685e927524b01687922da96217a73e6f0ae0 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 16 Oct 2020 13:47:41 +0200 Subject: [PATCH 017/312] Support for multi-phases --- easyDiffractionLib/interface.py | 2 +- easyDiffractionLib/sample.py | 35 ++++++++++++++++++++++----------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index b3183955..3e5ed797 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -104,7 +104,7 @@ def __set_sample_item(obj, key, holder) -> Callable: """ def inner(value): - holder.phase.cif.to_file(holder.filename) + holder.phases.cif.to_file(holder.filename) # obj().set_value(key, value) return inner diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 3e5a3d6c..2f114d77 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -1,15 +1,22 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -from easyDiffractionLib import Crystal +from easyDiffractionLib import Crystal, Crystals from easyDiffractionLib.Elements.Instruments.Instrument import Pattern from easyDiffractionLib.Elements.Backgrounds.Linear import Line from tempfile import NamedTemporaryFile class Sample: - def __init__(self, phase=None, parameters=None, interface=None): - self._phase = phase + def __init__(self, phases=None, parameters=None, interface=None): + if isinstance(phases, Crystal): + phases = Crystals('Generated', phases) + elif phases is None: + phases = Crystals('Generated') + + if not isinstance(phases, Crystals): + raise AttributeError('`phases` must be a Crystal or Crystals') + self._phases = phases self.background = Line() self._parameters = parameters self.interface = interface @@ -18,20 +25,26 @@ def __init__(self, phase=None, parameters=None, interface=None): def _updateInterface(self): if self.interface is not None: - if self._phase is not None: - self.interface.generate_bindings(self._phase, self, ifun=self.interface.generate_sample_binding) + if self._phases is not None: + self.interface.generate_bindings(self._phases, self, ifun=self.interface.generate_sample_binding) if self._parameters is not None: self.interface.generate_bindings(self._parameters, ifun=self.interface.generate_instrument_binding) + def get_phase(self, phase_index): + return self._phases[phase_index] + @property - def phase(self): - return self._phase + def phases(self): + return self._phases - @phase.setter - def phase(self, value): - if not isinstance(value, Crystal): + @phases.setter + def phases(self, value): + if isinstance(value, Crystal): + self._phases.append(value) + elif isinstance(value, Crystals): + self._phases = value + else: raise ValueError - self._phase = value self._updateInterface() @property From 389840780347ded50949c872dc2ecad46fd27de9 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 16 Oct 2020 14:59:10 +0200 Subject: [PATCH 018/312] Modify interface for multiphase --- easyDiffractionLib/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index b3183955..3e5ed797 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -104,7 +104,7 @@ def __set_sample_item(obj, key, holder) -> Callable: """ def inner(value): - holder.phase.cif.to_file(holder.filename) + holder.phases.cif.to_file(holder.filename) # obj().set_value(key, value) return inner From b416b17738726731d68e5664f28c6f0aa5b56695 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 16 Oct 2020 16:24:26 +0200 Subject: [PATCH 019/312] Add ability to select phase for output --- easyDiffractionLib/Interfaces/CFML.py | 2 +- easyDiffractionLib/interface.py | 2 +- easyDiffractionLib/sample.py | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 179c1a18..43f88eeb 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -11,7 +11,7 @@ class CFML(InterfaceTemplate): """ - A simple example interface using Calculator1 + A simple example interface using CFML """ _sample_link = { diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 3e5ed797..47566b79 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -104,7 +104,7 @@ def __set_sample_item(obj, key, holder) -> Callable: """ def inner(value): - holder.phases.cif.to_file(holder.filename) + holder.phases.cif.to_file(holder.filename, holder.output_index) # obj().set_value(key, value) return inner diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 2f114d77..76f14ad3 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -21,6 +21,7 @@ def __init__(self, phases=None, parameters=None, interface=None): self._parameters = parameters self.interface = interface self.filename = './temp.cif' + self.output_index = None self._updateInterface() def _updateInterface(self): From 88e74465799a224965f4fdafef7cad2e495206b3 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Sat, 17 Oct 2020 14:58:48 +0200 Subject: [PATCH 020/312] First implementation of cryspy --- easyDiffractionLib/Calculators/cryspy.py | 44 ++++++++ easyDiffractionLib/Interfaces/__init__.py | 6 ++ easyDiffractionLib/Interfaces/cryspy.py | 123 ++++++++++++++++++++++ easyDiffractionLib/interface.py | 7 +- poetry.lock | 108 ++++++++++++------- pyproject.toml | 1 + tests/test1.py | 25 ++++- 7 files changed, 274 insertions(+), 40 deletions(-) create mode 100644 easyDiffractionLib/Calculators/cryspy.py create mode 100644 easyDiffractionLib/Interfaces/cryspy.py diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py new file mode 100644 index 00000000..ff7567f1 --- /dev/null +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -0,0 +1,44 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +from easyCore import np +import cryspy + + +class Cryspy: + + def __init__(self): + self.cif_str = "" + self.conditions = { + 'wavelength': 1.25, + 'resolution': { + 'u': 0.001, + 'v': 0.001, + 'w': 0.001, + 'x': 0.001, + 'y': 0.001 + } + + } + + def calculate(self, x_array: np.ndarray) -> np.ndarray: + """ + For a given x calculate the corresponding y + :param x_array: array of data points to be calculated + :type x_array: np.ndarray + :return: points calculated at `x` + :rtype: np.ndarray + """ + if not self.cif_str: + raise AttributeError + + crystal = cryspy.Crystal.from_cif(self.cif_str) + phase_list = cryspy.PhaseL() + phase = cryspy.Phase(label=crystal.data_name, scale=1, igsize=0) + phase_list.items.append(phase) + setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) + background = cryspy.PdBackgroundL() + resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) + pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) + profile = pd.calc_profile(x_array, [crystal], True, False) + return profile.intensity_total diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index 89739a5f..ad2c0cb9 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -6,5 +6,11 @@ except ImportError: # TODO make this a proper message (use logging?) print('CFML is not installed') +try: + from easyDiffractionLib.Interfaces.cryspy import Cryspy # noqa: F401 +except ImportError: + # TODO make this a proper message (use logging?) + print('Cryspy is not installed') + from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py new file mode 100644 index 00000000..5878f8d6 --- /dev/null +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -0,0 +1,123 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +from typing import List + +import numpy as np + +from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate +from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc + + +class Cryspy(InterfaceTemplate): + """ + A simple example interface using CFML + """ + + _sample_link = { + 'cif_str': 'cif_str'} + + _instrument_link = { + 'u_resolution': 'u', + 'v_resolution': 'v', + 'w_resolution': 'w', + 'x_resolution': 'x', + 'wavelength': 'wavelength' + } + + name = 'Cryspy' + + def __init__(self): + self.calculator = Cryspy_calc() + self._namespace = {} + + def get_value(self, value_label: str) -> float: + """ + Method to get a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :return: associated value + :rtype: float + """ + if value_label in self._sample_link.keys(): + value_label = self._sample_link[value_label] + return getattr(self.calculator, value_label, None) + + def set_value(self, value_label: str, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + if self._borg.debug: + print(f'Interface1: Value of {value_label} set to {value}') + if value_label in self._sample_link.keys(): + value_label = self._sample_link[value_label] + setattr(self.calculator, 'cif_str', value) + + def get_instrument_value(self, value_label: str) -> float: + """ + Method to get a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :return: associated value + :rtype: float + """ + if value_label in self._instrument_link.keys(): + value_label = self._instrument_link[value_label] + if value_label == 'wavelength': + return self.calculator.conditions.get(value_label, None) + return self.calculator.conditions['resolution'].get(value_label, None) + + def set_instrument_value(self, value_label: str, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + if self._borg.debug: + print(f'Interface1: Value of {value_label} set to {value}') + if value_label in self._instrument_link.keys(): + value_label = self._instrument_link[value_label] + if value_label == 'wavelength': + self.calculator.conditions[value_label] = value + return + self.calculator.conditions['resolution'][value_label] = value + + def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): + """ + Perform an update of multiple values at once to save time on expensive updates + + :param value_label_list: list of parameters to set + :type value_label_list: List[str] + :param value_list: list of new numeric values + :type value_list: List[float] + :param external: should we lookup a name conversion to internal labeling? + :type external: bool + :return: None + :rtype: noneType + """ + for label, value in zip(value_label_list, value_list): + # This is a simple case so we will serially update + if label in self._sample_link: + self.set_value(label, value) + elif label in self._instrument_link: + self.set_instrument_value(label, value) + + def fit_func(self, x_array: np.ndarray) -> np.ndarray: + """ + Function to perform a fit + :param x_array: points to be calculated at + :type x_array: np.ndarray + :return: calculated points + :rtype: np.ndarray + """ + return self.calculator.calculate(x_array) diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 47566b79..ddb9f318 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -104,7 +104,12 @@ def __set_sample_item(obj, key, holder) -> Callable: """ def inner(value): - holder.phases.cif.to_file(holder.filename, holder.output_index) + # !!! THIS IS NOT THE WAY TO DO IT !!! + # !!! FOR TESTING ONLY !!!! + if obj.current_interface_name == 'Cryspy': + obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) + else: + holder.phases.cif.to_file(holder.filename, holder.output_index) # obj().set_value(key, value) return inner diff --git a/poetry.lock b/poetry.lock index 0e2ea9da..11b3b88e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -57,14 +57,15 @@ python-versions = "^3.7, <3.8" version = "0.0.1" [package.dependencies] -icc_rt = "^2020.0.133" +icc_rt = "^2020.0" mkl = "^2019.0" numpy = "^1.19" [package.source] -reference = "95f1aa7611f4d75a85a9f7ba9dc6b650890008be" +reference = "36b10bce6a8f1b7a9739be6d9085843787227561" type = "git" url = 'ssh://git@github.com/easyScience/CFML_api.git' + [[package]] category = "dev" description = "Cross-platform colored terminal text." @@ -74,6 +75,19 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" version = "0.4.4" +[[package]] +category = "main" +description = "PNPD data analysis" +name = "cryspy" +optional = false +python-versions = "*" +version = "0.4.11" + +[package.dependencies] +numpy = "*" +pycifstar = "*" +scipy = "*" + [[package]] category = "main" description = "Composable style cycles" @@ -102,9 +116,10 @@ pint = "^0.16" uncertainties = "^3.1" [package.source] -reference = "975f3e89d0b78b69d40a9e7337c5d4a88126acad" +reference = "601c5294e7d2017dede1af36ea846f766df9d4bf" type = "git" url = 'https://github.com/easyScience/easyCore.git' + [[package]] category = "main" description = "Clean single-source support for Python 3 and 2" @@ -143,6 +158,7 @@ testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] [[package]] category = "main" description = "Intel(R) OpenMP Runtime Library" +marker = "sys_platform == \"linux\"" name = "intel-openmp" optional = false python-versions = "*" @@ -242,8 +258,8 @@ category = "main" description = "Python Imaging Library (Fork)" name = "pillow" optional = false -python-versions = ">=3.5" -version = "7.2.0" +python-versions = ">=3.6" +version = "8.0.0" [[package]] category = "main" @@ -289,6 +305,14 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "1.9.0" +[[package]] +category = "main" +description = "PyCifStar is a class library for data manipulation provided in the CIF/STAR File." +name = "pycifstar" +optional = false +python-versions = "*" +version = "0.2.6" + [[package]] category = "main" description = "Python parsing module" @@ -385,14 +409,14 @@ marker = "python_version < \"3.8\"" name = "zipp" optional = false python-versions = ">=3.6" -version = "3.3.0" +version = "3.3.1" [package.extras] docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] [metadata] -content-hash = "09013ef51804f8b2132d27a70c34916f2acb07010e0b7dd3ab92d17f4aa6ed1a" +content-hash = "c430e6eba950edaf85cc34045eccca6344b7cf70a98aca74c2b4ae385edac535" python-versions = "^3.7, <3.8" [metadata.files] @@ -417,6 +441,11 @@ certifi = [ cfml-api = [] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +cryspy = [ + {file = "cryspy-0.4.11-py3-none-any.whl", hash = "sha256:e67d3817cd647827600bcfb8284fe85385eee9e5df2b65fc73f10b7cd8294871"}, + {file = "cryspy-0.4.11.tar.gz", hash = "sha256:3d00b5df0223e9e66109768ef2b036500f74b661aa1ce9d4e6895220238f2abc"}, ] cycler = [ {file = "cycler-0.10.0-py2.py3-none-any.whl", hash = "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d"}, @@ -523,34 +552,35 @@ packaging = [ {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, ] pillow = [ - {file = "Pillow-7.2.0-cp35-cp35m-macosx_10_10_intel.whl", hash = "sha256:1ca594126d3c4def54babee699c055a913efb01e106c309fa6b04405d474d5ae"}, - {file = "Pillow-7.2.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c92302a33138409e8f1ad16731568c55c9053eee71bb05b6b744067e1b62380f"}, - {file = "Pillow-7.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:8dad18b69f710bf3a001d2bf3afab7c432785d94fcf819c16b5207b1cfd17d38"}, - {file = "Pillow-7.2.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:431b15cffbf949e89df2f7b48528be18b78bfa5177cb3036284a5508159492b5"}, - {file = "Pillow-7.2.0-cp35-cp35m-win32.whl", hash = "sha256:09d7f9e64289cb40c2c8d7ad674b2ed6105f55dc3b09aa8e4918e20a0311e7ad"}, - {file = "Pillow-7.2.0-cp35-cp35m-win_amd64.whl", hash = "sha256:0295442429645fa16d05bd567ef5cff178482439c9aad0411d3f0ce9b88b3a6f"}, - {file = "Pillow-7.2.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:ec29604081f10f16a7aea809ad42e27764188fc258b02259a03a8ff7ded3808d"}, - {file = "Pillow-7.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:612cfda94e9c8346f239bf1a4b082fdd5c8143cf82d685ba2dba76e7adeeb233"}, - {file = "Pillow-7.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0a80dd307a5d8440b0a08bd7b81617e04d870e40a3e46a32d9c246e54705e86f"}, - {file = "Pillow-7.2.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:06aba4169e78c439d528fdeb34762c3b61a70813527a2c57f0540541e9f433a8"}, - {file = "Pillow-7.2.0-cp36-cp36m-win32.whl", hash = "sha256:f7e30c27477dffc3e85c2463b3e649f751789e0f6c8456099eea7ddd53be4a8a"}, - {file = "Pillow-7.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:ffe538682dc19cc542ae7c3e504fdf54ca7f86fb8a135e59dd6bc8627eae6cce"}, - {file = "Pillow-7.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:94cf49723928eb6070a892cb39d6c156f7b5a2db4e8971cb958f7b6b104fb4c4"}, - {file = "Pillow-7.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6edb5446f44d901e8683ffb25ebdfc26988ee813da3bf91e12252b57ac163727"}, - {file = "Pillow-7.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:52125833b070791fcb5710fabc640fc1df07d087fc0c0f02d3661f76c23c5b8b"}, - {file = "Pillow-7.2.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:9ad7f865eebde135d526bb3163d0b23ffff365cf87e767c649550964ad72785d"}, - {file = "Pillow-7.2.0-cp37-cp37m-win32.whl", hash = "sha256:c79f9c5fb846285f943aafeafda3358992d64f0ef58566e23484132ecd8d7d63"}, - {file = "Pillow-7.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d350f0f2c2421e65fbc62690f26b59b0bcda1b614beb318c81e38647e0f673a1"}, - {file = "Pillow-7.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:6d7741e65835716ceea0fd13a7d0192961212fd59e741a46bbed7a473c634ed6"}, - {file = "Pillow-7.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:edf31f1150778abd4322444c393ab9c7bd2af271dd4dafb4208fb613b1f3cdc9"}, - {file = "Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d08b23fdb388c0715990cbc06866db554e1822c4bdcf6d4166cf30ac82df8c41"}, - {file = "Pillow-7.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:5e51ee2b8114def244384eda1c82b10e307ad9778dac5c83fb0943775a653cd8"}, - {file = "Pillow-7.2.0-cp38-cp38-win32.whl", hash = "sha256:725aa6cfc66ce2857d585f06e9519a1cc0ef6d13f186ff3447ab6dff0a09bc7f"}, - {file = "Pillow-7.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:a060cf8aa332052df2158e5a119303965be92c3da6f2d93b6878f0ebca80b2f6"}, - {file = "Pillow-7.2.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:9c87ef410a58dd54b92424ffd7e28fd2ec65d2f7fc02b76f5e9b2067e355ebf6"}, - {file = "Pillow-7.2.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:e901964262a56d9ea3c2693df68bc9860b8bdda2b04768821e4c44ae797de117"}, - {file = "Pillow-7.2.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:25930fadde8019f374400f7986e8404c8b781ce519da27792cbe46eabec00c4d"}, - {file = "Pillow-7.2.0.tar.gz", hash = "sha256:97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626"}, + {file = "Pillow-8.0.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:b04569ff215b85ce3e2954979d2d5e0bf84007e43ddcf84b632fc6bc18e07909"}, + {file = "Pillow-8.0.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:594f2f25b7bcfd9542c41b9df156fb5104f19f5fcefa51b1447f1d9f64c9cc14"}, + {file = "Pillow-8.0.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:87a855b64a9b692604f6339baa4f9913d06838df1b4ccf0cb899dd18f56ec03c"}, + {file = "Pillow-8.0.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b731d45764349313bd956c07bdc1d43803bb0ad2b11354328a074e416c7d84bc"}, + {file = "Pillow-8.0.0-cp36-cp36m-win32.whl", hash = "sha256:30615e9115f976e00a938a28c7152562e8cf8e221ddacf4446dd8b20c0d97333"}, + {file = "Pillow-8.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:e6ac40f1a62a227eb00226eb64c9c82bc878a3ed700b5414d34c9be57be87e87"}, + {file = "Pillow-8.0.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:2696f1a6402c1a42ed12c5cd8adfb4b381c32d41e35a34b8ee544309ef854172"}, + {file = "Pillow-8.0.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:5b5dde5dcedc4e6f5a71d7654a3c6e189ced82e97d7896b1ca5a5c5e4e0e916f"}, + {file = "Pillow-8.0.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:04d984e45a0b9815f4b407e8aadb50f25fbb82a605d89db927376e94c3adf371"}, + {file = "Pillow-8.0.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:6bcea85f93fb2c94a1bcd35704c348a929a7fb24a0ec0cc2b9fcbb0046b87176"}, + {file = "Pillow-8.0.0-cp37-cp37m-win32.whl", hash = "sha256:233513465a2f25fce537b965621866da3d1f02e15708f371dd4e19f0fb7b7711"}, + {file = "Pillow-8.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d904570afcdbec40eb6bdbe24cba8d95c0215a2c0cbbc9c16301045bc8504c1f"}, + {file = "Pillow-8.0.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8c006d52365c0a6bb41a07f9c8f9f458ae8170e0af3b8c49bf7089347066b97b"}, + {file = "Pillow-8.0.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9b5b41737853bc49943864d5980dfb401a09e78ddb471e71291810ccdeadd712"}, + {file = "Pillow-8.0.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:3a77e7b9f8991b81d7be8e0b2deab05013cf3ebb24ac2b863d2979acb68c73dd"}, + {file = "Pillow-8.0.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:c41442c3814afeba1f6f16fd70cdf312a2c73c6dee8dc3ac8926bb115713ad1d"}, + {file = "Pillow-8.0.0-cp38-cp38-win32.whl", hash = "sha256:718d7f0eb3351052023b33fe0f83fc9e3beeb7cbacbd0ff2b52524e2153e4598"}, + {file = "Pillow-8.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:7c4a7ee37027ca716f42726b6f9fc491c13c843c7af559e0767dfab1ae9682d4"}, + {file = "Pillow-8.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:54667c8ab16658cc0b7d824d8706b440d4db8382a3561042758bdfd48ca99298"}, + {file = "Pillow-8.0.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:1f59596af2b3d64a9e43f9d6509b7a51db744d0eecc23297617c604e6823c6ae"}, + {file = "Pillow-8.0.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5270369c799b4405ed47d45c88c09fbd7942fc9fb9891c0dabf0b8c751b625d"}, + {file = "Pillow-8.0.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:8e29701229705615d3dcfc439c7c46f40f913e57c7fe322b1efc30d3f37d1287"}, + {file = "Pillow-8.0.0-cp39-cp39-win32.whl", hash = "sha256:c12e33cb17e2e12049a49b77696ee479791a4e44e541fdc393ae043e1246389f"}, + {file = "Pillow-8.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:06e730451b70471c08b8a0ee7f18e7e1df310dba9c780bbfb730a13102b143db"}, + {file = "Pillow-8.0.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c4d743c5c91424965707c9c8edc58b7cb43c127dcaf191fbcd304e2082eef56a"}, + {file = "Pillow-8.0.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:2ca55a4443b463eec90528ac27be14d226b1c2b972178bc7d4d282ce89e47b6a"}, + {file = "Pillow-8.0.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:e674be2f349ea810e221b0113bd4491f53584ac848d5bcc3b62443cfa11d9c40"}, + {file = "Pillow-8.0.0-pp37-pypy37_pp73-win32.whl", hash = "sha256:d6766fd28f4f47cf93280a57e3dc6a9d11bdada1a6e9f019b8c62b12bbc86f6a"}, + {file = "Pillow-8.0.0.tar.gz", hash = "sha256:59304c67d12394815331eda95ec892bf54ad95e0aa7bc1ccd8e0a4a5a25d4bf3"}, ] pint = [ {file = "Pint-0.16.1-py2.py3-none-any.whl", hash = "sha256:63ccb7153754923fd95477be69dcf8d7d0764ec2ebb3f6945f920c31fdf13392"}, @@ -564,6 +594,10 @@ py = [ {file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"}, {file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"}, ] +pycifstar = [ + {file = "pycifstar-0.2.6-py3-none-any.whl", hash = "sha256:4c256d346910e4641a8749cd4ae07143ed9fb3603d70466835e792f0a9e532b7"}, + {file = "pycifstar-0.2.6.tar.gz", hash = "sha256:9bbeb9afb938d41f24b7430cf66812cb139c48855fdeefdae50c24eff23c28cc"}, +] pyparsing = [ {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, @@ -607,6 +641,6 @@ wcwidth = [ {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, ] zipp = [ - {file = "zipp-3.3.0-py3-none-any.whl", hash = "sha256:eed8ec0b8d1416b2ca33516a37a08892442f3954dee131e92cfd92d8fe3e7066"}, - {file = "zipp-3.3.0.tar.gz", hash = "sha256:64ad89efee774d1897a58607895d80789c59778ea02185dd846ac38394a8642b"}, + {file = "zipp-3.3.1-py3-none-any.whl", hash = "sha256:16522f69653f0d67be90e8baa4a46d66389145b734345d68a257da53df670903"}, + {file = "zipp-3.3.1.tar.gz", hash = "sha256:c1532a8030c32fd52ff6a288d855fe7adef5823ba1d26a29a68fd6314aa72baa"}, ] diff --git a/pyproject.toml b/pyproject.toml index adfcf52b..f221da24 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } monty = "^4.0.2" +cryspy = "^0.4.11" [tool.poetry.dev-dependencies] pytest = "^5.2" #CFML_api = { path = '../CFML_api/' } diff --git a/tests/test1.py b/tests/test1.py index f803fd42..8930e476 100644 --- a/tests/test1.py +++ b/tests/test1.py @@ -15,11 +15,32 @@ c = Crystal.from_cif_file('tests/SrTiO3.cif') -S = Sample(phase=c, parameters=Pattern(), interface=i) +S = Sample(phases=c, parameters=Pattern(), interface=i) # S.phase.cell.length_a = 5 # S.parameters.wavelength = 1.25 # print(S) +x_data = np.linspace(5, 150, 100) +y_data = i.fit_func(x_data) + +plt.plot(x_data, y_data, label="CFL") +plt.show() + +S.parameters.wavelength = 2.5 +y_data = i.fit_func(x_data) +plt.plot(x_data, y_data, label="CFL") +plt.show() + +S.phases[0].cell.length_a = 10 +y_data = i.fit_func(x_data) +plt.plot(x_data, y_data, label="CFL") +plt.show() +i.switch('Cryspy') +S._updateInterface() + +# S.phase.cell.length_a = 5 +# S.parameters.wavelength = 1.25 +# print(S) x_data = np.linspace(5, 150, 100) y_data = i.fit_func(x_data) @@ -31,7 +52,7 @@ plt.plot(x_data, y_data, label="CFL") plt.show() -S.phase.cell.length_a = 10 +S.phases[0].cell.length_a = 10 y_data = i.fit_func(x_data) plt.plot(x_data, y_data, label="CFL") plt.show() \ No newline at end of file From 6cddb494a7b8cd9ff7ab6ab28417dd9541207da9 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 19 Oct 2020 13:56:02 +0200 Subject: [PATCH 021/312] Update sample --- easyDiffractionLib/sample.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 76f14ad3..26113aac 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -1,24 +1,29 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' +from typing import Union + +from easyCore.Objects.Base import BaseObj from easyDiffractionLib import Crystal, Crystals from easyDiffractionLib.Elements.Instruments.Instrument import Pattern from easyDiffractionLib.Elements.Backgrounds.Linear import Line -from tempfile import NamedTemporaryFile -class Sample: - def __init__(self, phases=None, parameters=None, interface=None): +class Sample(BaseObj): + def __init__(self, name: str = '', phases: Union[Crystal, Crystals] = None, parameters=None, interface=None): if isinstance(phases, Crystal): phases = Crystals('Generated', phases) elif phases is None: phases = Crystals('Generated') + if not name: + name = 'easySample' + if not isinstance(phases, Crystals): raise AttributeError('`phases` must be a Crystal or Crystals') - self._phases = phases + + super(Sample, self).__init__(name, _phases=phases, _parameters=parameters) self.background = Line() - self._parameters = parameters self.interface = interface self.filename = './temp.cif' self.output_index = None @@ -59,12 +64,5 @@ def parameters(self, value): self._parameters = value self._updateInterface() - @property - def name(self): - name = '' - if isinstance(self.phase, Crystal): - name = self.phase.name - return name - def update_bindings(self): self._updateInterface() From 88c79142ed220b17fb5d34e3ba2281cd68ca52b9 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 19 Oct 2020 14:35:42 +0200 Subject: [PATCH 022/312] Fixup naming conventions --- easyDiffractionLib/Elements/Instruments/Instrument.py | 8 ++------ easyDiffractionLib/sample.py | 9 +++------ 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/easyDiffractionLib/Elements/Instruments/Instrument.py b/easyDiffractionLib/Elements/Instruments/Instrument.py index 42f51d28..39e3e251 100644 --- a/easyDiffractionLib/Elements/Instruments/Instrument.py +++ b/easyDiffractionLib/Elements/Instruments/Instrument.py @@ -8,7 +8,7 @@ class Pattern(BaseObj): - _name = 'instrument' + _name = 'Instrument' _defaults = [ { '@module': 'easyCore.Objects.Base', @@ -51,8 +51,4 @@ class Pattern(BaseObj): def __init__(self, interface=None): super().__init__(self.__class__.__name__, *[_decoder.process_decoded(default) for default in self._defaults]) self.name = self._name - self.interface = interface - - def __repr__(self): - return f'{self.__class__.__name__}: x_shift={self.zero_point}, ' \ - f'y_shift={self.background} ' + self.interface = interface \ No newline at end of file diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 26113aac..39f2921d 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -10,14 +10,11 @@ class Sample(BaseObj): - def __init__(self, name: str = '', phases: Union[Crystal, Crystals] = None, parameters=None, interface=None): + def __init__(self, phases: Union[Crystal, Crystals] = None, parameters=None, interface=None, name: str = 'easySample'): if isinstance(phases, Crystal): - phases = Crystals('Generated', phases) + phases = Crystals('Phases', phases) elif phases is None: - phases = Crystals('Generated') - - if not name: - name = 'easySample' + phases = Crystals('Phases') if not isinstance(phases, Crystals): raise AttributeError('`phases` must be a Crystal or Crystals') From c55b9c2138868fd22b953eddb69c2fc3257656d0 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 19 Oct 2020 14:47:20 +0200 Subject: [PATCH 023/312] Recursive path gen update --- easyDiffractionLib/sample.py | 1 + 1 file changed, 1 insertion(+) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 39f2921d..27b34947 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -46,6 +46,7 @@ def phases(self, value): self._phases.append(value) elif isinstance(value, Crystals): self._phases = value + self._borg.map.add_edge(self, value) else: raise ValueError self._updateInterface() From ee88c96b7e8d909525e43019a70e1688d4b25f79 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 19 Oct 2020 16:54:30 +0200 Subject: [PATCH 024/312] Add debuging REmove plot debugging --- easyDiffractionLib/Calculators/CFML.py | 12 +++++++ easyDiffractionLib/Calculators/cryspy.py | 7 +++++ tests/test3.py | 40 ++++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 tests/test3.py diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index b0942017..d4b7a243 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -2,6 +2,7 @@ __version__ = "0.0.1" from easyCore import np +from easyCore import borg from CFML_api import PowderPatternSimulation as CFML_api @@ -23,6 +24,16 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if self.filename is None: raise AttributeError + if borg.debug: + print('CALLING FROM CrysFML\n----------------------') + print({'wavelength': self.conditions.lamb, + 'u': self.conditions.u_resolution, + 'v': self.conditions.v_resolution, + 'w': self.conditions.w_resolution, + 'x': self.conditions.x_resolution}) + with open(self.filename, 'r') as r: + print(r.read()) + x0 = x_array[0] xF = x_array[-1] nX = np.prod(x_array.shape) @@ -32,4 +43,5 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: self.conditions.theta_step = (xF-x0)/(nX - 1) self.simulator.compute(self.filename, simulation_conditions=self.conditions) + return self.simulator.y diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index ff7567f1..b83c7942 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -2,6 +2,7 @@ __version__ = "0.0.1" from easyCore import np +from easyCore import borg import cryspy @@ -32,6 +33,11 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if not self.cif_str: raise AttributeError + if borg.debug: + print('CALLING FROM Cryspy\n----------------------') + print(self.conditions) + print(self.cif_str) + crystal = cryspy.Crystal.from_cif(self.cif_str) phase_list = cryspy.PhaseL() phase = cryspy.Phase(label=crystal.data_name, scale=1, igsize=0) @@ -41,4 +47,5 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) profile = pd.calc_profile(x_array, [crystal], True, False) + return profile.intensity_total diff --git a/tests/test3.py b/tests/test3.py new file mode 100644 index 00000000..23b83706 --- /dev/null +++ b/tests/test3.py @@ -0,0 +1,40 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCore import np + +from easyDiffractionLib.sample import Sample +from easyDiffractionLib import Crystal, Crystals +from easyDiffractionLib.interface import InterfaceFactory +from easyDiffractionLib.Elements.Instruments.Instrument import Pattern + +import matplotlib.pyplot as plt + + +i = InterfaceFactory() + +c = Crystals.from_cif_file('/home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/SrTiO3.cif') + +S = Sample(phases=c, parameters=Pattern(), interface=i) + +x_data = np.linspace(5, 150, 10000) +y_data = i.fit_func(x_data) + +i.switch('Cryspy') +S._updateInterface() + +y_data2 = np.array(i.fit_func(x_data)) + +fig = plt.figure() +axprops = dict() +ax1 = fig.add_axes([0.1, 0.5, 0.8, 0.4], **axprops) +ax1.plot(x_data, y_data, label="CrysFML") +ax1.legend() +axprops['sharex'] = ax1 +# axprops['sharey'] = ax1 +# force x axes to remain in register, even with toolbar navigation +ax2 = fig.add_axes([0.1, 0.1, 0.8, 0.4], **axprops) +ax2.plot(x_data, y_data2, label="Cryspy") +ax2.legend() +fig.show() +fig.savefig('CFML_Cryspy.png') From dae6b996e826f1b8219f48c68db4c0ebabc89f9a Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 19 Oct 2020 18:08:21 +0200 Subject: [PATCH 025/312] Add a Jupyter notebook --- easyDiffractionLib/Calculators/cryspy.py | 2 +- tests/workedExample1.ipynb | 4324 ++++++++++++++++++++++ 2 files changed, 4325 insertions(+), 1 deletion(-) create mode 100644 tests/workedExample1.ipynb diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index b83c7942..7b6d562b 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -48,4 +48,4 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) profile = pd.calc_profile(x_array, [crystal], True, False) - return profile.intensity_total + return np.array(profile.intensity_total) diff --git a/tests/workedExample1.ipynb b/tests/workedExample1.ipynb new file mode 100644 index 00000000..6efadcee --- /dev/null +++ b/tests/workedExample1.ipynb @@ -0,0 +1,4324 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# easyDiffractionLib walkthrough" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from easyDiffractionLib import Crystal\n", + "from easyDiffractionLib.sample import Sample\n", + "from easyDiffractionLib.interface import InterfaceFactory\n", + "from easyDiffractionLib.Elements.Instruments.Instrument import Pattern" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Working with CIF files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can load a cif file from the disk to create a `Crystal` object. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "phase = Crystal.from_cif_file('SrTiO3.cif')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can check that it has loaded the cell:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cell: (a:5.52, b:5.52, c:7.81, alpha:90.00, beta:90.00, gamma:90.00) \n" + ] + } + ], + "source": [ + "print(phase.cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Interfacing with a calculator" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By default we are using the CrysFML calculator. We can start an interface with the interface factory" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CrysFML\n" + ] + } + ], + "source": [ + "interface = InterfaceFactory()\n", + "print(interface.current_interface_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we can simulate a pattern we have to create a `Pattern` with instrumental parameters. At the moment this is just the wavelength and reolution parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "pattern = Pattern()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Simulating a pattern" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "sample = Sample(phases=phase, parameters=pattern, interface=interface)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can define a 2-theta range and simulate" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "ttheta = np.linspace(5, 150, 1000)\n", + "intensity = interface.fit_func(ttheta)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And plot it:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " if (this.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n", + " }\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " var resizeObserver = new ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " resizeObserver.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = 'image/png';\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.which === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.which;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which !== 17) {\n", + " value += 'ctrl+';\n", + " }\n", + " if (event.altKey && event.which !== 18) {\n", + " value += 'alt+';\n", + " }\n", + " if (event.shiftKey && event.which !== 16) {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data']);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.one(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%matplotlib notebook\n", + "import matplotlib.pyplot as plt\n", + "plt.plot(ttheta, intensity)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Starting from Scratch" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "from easyDiffractionLib import Cell, Site, Atoms, SpaceGroup" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we are going to make all the components of a phase. All classes have a `from_pars` and `default` option for ease of creation." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a cell by parameters\n", + "cell = Cell.from_pars(7, 7, 7, 90, 90, 90)\n", + "# Create a default spacegroup. This will be P1 by default.\n", + "sg = SpaceGroup.default()\n", + "# Now create some atoms to add to the `Atoms` object. Note that any names can be excluded.\n", + "atom1 = Site.from_pars(label='Fe', specie='Fe3+', fract_x=0, fract_y=0.25, fract_z=0.25)\n", + "# The site default creator puts an atom at (0, 0, 0) and needs a unique label and a specie.\n", + "atom2 = Site.default('Cu', 'Cu2+')\n", + "atoms = Atoms('my_atoms', atom1, atom2)\n", + "\n", + "# A new phase has to have a label\n", + "new_phase = Crystal('strangeComposition', spacegroup=sg, cell=cell, atoms=atoms)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This `new_phase` can now be used for generating a pattern" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " if (this.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n", + " }\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " var resizeObserver = new ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " resizeObserver.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = 'image/png';\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.which === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.which;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which !== 17) {\n", + " value += 'ctrl+';\n", + " }\n", + " if (event.altKey && event.which !== 18) {\n", + " value += 'alt+';\n", + " }\n", + " if (event.shiftKey && event.which !== 16) {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data']);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.one(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# We can generate a sample without a phase and add it later\n", + "sample_new = Sample(parameters=pattern, interface=interface)\n", + "sample_new.phases = new_phase\n", + "\n", + "# Plotting the results\n", + "intensity = interface.fit_func(ttheta)\n", + "%matplotlib notebook\n", + "import matplotlib.pyplot as plt\n", + "plt.plot(ttheta, intensity)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can even play around with any parameter i.e.wavelength" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "efc2d21c03da4034be57395a312b77af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(IntSlider(value=3, description='wavelength', max=5, min=1), Output()), _dom_classes=('wi…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "from ipywidgets import interactive\n", + "\n", + "def f(wavelength):\n", + " sample_new.parameters.wavelength = wavelength\n", + " plt.figure()\n", + " plt.plot(ttheta, interface.fit_func(ttheta))\n", + " plt.show()\n", + "\n", + "interactive_plot = interactive(f, wavelength=(1, 5))\n", + "output = interactive_plot.children[-1]\n", + "interactive_plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see what parameters we can play around with:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]\n" + ] + } + ], + "source": [ + "# We can get the parameters with:\n", + "pars = sample.get_parameters()\n", + "print(pars)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But this isn't very helpful. To make it more visuall~y appealing:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Phases.strangeComposition.cell.length_a\n", + "Phases.strangeComposition.cell.length_b\n", + "Phases.strangeComposition.cell.length_c\n", + "Phases.strangeComposition.cell.angle_alpha\n", + "Phases.strangeComposition.cell.angle_beta\n", + "Phases.strangeComposition.cell.angle_gamma\n", + "Phases.strangeComposition.my_atoms.Fe.occupancy\n", + "Phases.strangeComposition.my_atoms.Fe.fract_x\n", + "Phases.strangeComposition.my_atoms.Fe.fract_y\n", + "Phases.strangeComposition.my_atoms.Fe.fract_z\n", + "Phases.strangeComposition.my_atoms.Cu.occupancy\n", + "Phases.strangeComposition.my_atoms.Cu.fract_x\n", + "Phases.strangeComposition.my_atoms.Cu.fract_y\n", + "Phases.strangeComposition.my_atoms.Cu.fract_z\n", + "Instrument.u_resolution\n", + "Instrument.v_resolution\n", + "Instrument.w_resolution\n", + "Instrument.x_resolution\n", + "Instrument.wavelength\n" + ] + } + ], + "source": [ + "from easyCore.Utils.classTools import generatePath\n", + "_, par_path = generatePath(sample_new, True)\n", + "print('\\n'.join(par_path))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Changing calculator" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By default we use the CrysFML calculator, but we can change to another. i.e. Cryspy" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "interface.switch('Cryspy')\n", + "# This is a temp fix...\n", + "sample_new._updateInterface()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And do a simulation as before" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " if (this.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n", + " }\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " var resizeObserver = new ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " resizeObserver.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = 'image/png';\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.which === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.which;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which !== 17) {\n", + " value += 'ctrl+';\n", + " }\n", + " if (event.altKey && event.which !== 18) {\n", + " value += 'alt+';\n", + " }\n", + " if (event.shiftKey && event.which !== 16) {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data']);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.one(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/cryspy/B_parent_classes/cl_1_item.py:135: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n", + " if ((value == \".\") | (value is None)):\n", + "/home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/cryspy/B_parent_classes/cl_3_data.py:139: UserWarning: Double items were given.\n", + " warn(\"Double items were given.\", UserWarning)\n", + "/home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/cryspy/B_parent_classes/cl_3_data.py:125: UserWarning: Access to variable by 'pd_instr_resolution'.\n", + " warn(f\"Access to variable by '{name_new:}'.\", UserWarning)\n", + "/home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/cryspy/B_parent_classes/cl_3_data.py:125: UserWarning: Access to variable by 'pd_background'.\n", + " warn(f\"Access to variable by '{name_new:}'.\", UserWarning)\n" + ] + } + ], + "source": [ + "sample_new.parameters.wavelength = 1.56\n", + "\n", + "%matplotlib notebook\n", + "plt.figure()\n", + "plt.plot(ttheta, interface.fit_func(ttheta))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see what interfaces are available and switch between" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['CrysFML', 'Cryspy']\n" + ] + } + ], + "source": [ + "interfaces = interface.available_interfaces\n", + "print(interfaces)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "interface.switch('CrysFML')\n", + "sample_new._updateInterface()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " if (this.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n", + " }\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " var resizeObserver = new ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " resizeObserver.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = 'image/png';\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.which === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.which;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which !== 17) {\n", + " value += 'ctrl+';\n", + " }\n", + " if (event.altKey && event.which !== 18) {\n", + " value += 'alt+';\n", + " }\n", + " if (event.shiftKey && event.which !== 16) {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data']);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.one(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib notebook\n", + "plt.figure()\n", + "plt.plot(ttheta, interface.fit_func(ttheta))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 5bf362cbadd693408195952614110c3c8fe194ce Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 20 Oct 2020 00:26:01 +0200 Subject: [PATCH 026/312] Create devcontainer.json --- .devcontainer/devcontainer.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..90e41db4 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,18 @@ +{ + "name": "easyDiffractionLib Dev", + + "appPort": [3000], + //"forwardPorts": [8080, 8081], + // Set *default* container specific settings.json values + "settings": { + "terminal.integrated.shell.linux": "/bin/bash", + }, + // Add the IDs of extensions you want to install + "extensions": [ + "ms-python.python", + ], + // Commands to run after the container is created. + "postCreateCommand": "curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | /opt/python/3.7/bin/python && export PATH=$PATH:$HOME/.poetry/bin", + // Uncomment to connect as a non-root user. + //"remoteUser": "vscode", +} From 6f24128de5b820eff41603f361131f11f915bfd0 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 20 Oct 2020 00:36:27 +0200 Subject: [PATCH 027/312] Create Dockerfile --- .devcontainer/Dockerfile | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .devcontainer/Dockerfile diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..5662abae --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,45 @@ +{ + "name": "Python 3", + "build": { + "dockerfile": "Dockerfile", + "context": "..", + "args": { + // Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9 + "VARIANT": "3", + // Options + "INSTALL_NODE": "true", + "NODE_VERSION": "lts/*" + } + }, + + // Set *default* container specific settings.json values on container create. + "settings": { + "terminal.integrated.shell.linux": "/bin/bash", + "python.pythonPath": "/usr/local/bin/python", + "python.linting.enabled": true, + "python.linting.pylintEnabled": true, + "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", + "python.formatting.blackPath": "/usr/local/py-utils/bin/black", + "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", + "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", + "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", + "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", + "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", + "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", + "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint" + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "ms-python.python" + ] + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "pip3 install --user -r requirements.txt", + + // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. + // "remoteUser": "vscode" +} From 24b2f5d31ee5371bb11d02b0bf39eae5635d883e Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 20 Oct 2020 00:38:48 +0200 Subject: [PATCH 028/312] Update devcontainer.json --- .devcontainer/devcontainer.json | 59 ++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 90e41db4..61d47060 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,18 +1,45 @@ { - "name": "easyDiffractionLib Dev", - - "appPort": [3000], - //"forwardPorts": [8080, 8081], - // Set *default* container specific settings.json values - "settings": { - "terminal.integrated.shell.linux": "/bin/bash", - }, - // Add the IDs of extensions you want to install - "extensions": [ - "ms-python.python", - ], - // Commands to run after the container is created. - "postCreateCommand": "curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | /opt/python/3.7/bin/python && export PATH=$PATH:$HOME/.poetry/bin", - // Uncomment to connect as a non-root user. - //"remoteUser": "vscode", + "name": "Python 3", + "build": { + "dockerfile": "Dockerfile", + "context": "..", + "args": { + // Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9 + "VARIANT": "3", + // Options + "INSTALL_NODE": "true", + "NODE_VERSION": "lts/*" + } + }, + + // Set *default* container specific settings.json values on container create. + "settings": { + "terminal.integrated.shell.linux": "/bin/bash", + "python.pythonPath": "/usr/local/bin/python", + "python.linting.enabled": true, + "python.linting.pylintEnabled": true, + "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", + "python.formatting.blackPath": "/usr/local/py-utils/bin/black", + "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", + "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", + "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", + "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", + "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", + "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", + "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint" + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "ms-python.python" + ] + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "pip3 install --user -r requirements.txt", + "postCreateCommand": "curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 && export PATH=$PATH:$HOME/.poetry/bin", + // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. + // "remoteUser": "vscode" } From e2dee456c6327b5d3ac2345f13e0a2b097e1b98f Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 20 Oct 2020 00:39:43 +0200 Subject: [PATCH 029/312] Update devcontainer.json --- .devcontainer/devcontainer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 61d47060..8f5e66f7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,11 +1,11 @@ { - "name": "Python 3", + "name": "easyDiffractionLib dev", "build": { "dockerfile": "Dockerfile", "context": "..", "args": { // Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9 - "VARIANT": "3", + "VARIANT": "3.7", // Options "INSTALL_NODE": "true", "NODE_VERSION": "lts/*" From 50586906086292585954bb531116c00c6ea195e1 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 20 Oct 2020 00:44:05 +0200 Subject: [PATCH 030/312] Update devcontainer.json --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8f5e66f7..21382447 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -39,7 +39,7 @@ // Use 'postCreateCommand' to run commands after the container is created. // "postCreateCommand": "pip3 install --user -r requirements.txt", - "postCreateCommand": "curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 && export PATH=$PATH:$HOME/.poetry/bin", + "postCreateCommand": "curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 && export PATH=$PATH:$HOME/.poetry/bin", // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. // "remoteUser": "vscode" } From e9a558fe56b770e25eb1242aa01c27f338709e65 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 20 Oct 2020 00:51:41 +0200 Subject: [PATCH 031/312] Create Base.Dockerfile --- .devcontainer/Base.Dockerfile | 50 +++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .devcontainer/Base.Dockerfile diff --git a/.devcontainer/Base.Dockerfile b/.devcontainer/Base.Dockerfile new file mode 100644 index 00000000..13117a59 --- /dev/null +++ b/.devcontainer/Base.Dockerfile @@ -0,0 +1,50 @@ +# [Choice] Python version: 3, 3.9, 3.8, 3.7, 3.6 +ARG VARIANT=3 +FROM python:${VARIANT} + +# [Option] Install zsh +ARG INSTALL_ZSH="true" +# [Option] Upgrade OS packages to their latest versions +ARG UPGRADE_PACKAGES="true" + +# Install needed packages and setup non-root user. Use a separate RUN statement to add your own dependencies. +ARG USERNAME=vscode +ARG USER_UID=1000 +ARG USER_GID=$USER_UID +COPY .devcontainer/library-scripts/common-debian.sh /tmp/library-scripts/ +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + # Remove imagemagick due to https://security-tracker.debian.org/tracker/CVE-2019-10131 + && apt-get purge -y imagemagick imagemagick-6-common \ + # Install common packages, non-root user + && bash /tmp/library-scripts/common-debian.sh "${INSTALL_ZSH}" "${USERNAME}" "${USER_UID}" "${USER_GID}" "${UPGRADE_PACKAGES}" \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts + +# Setup default python tools in a venv via pipx to avoid conflicts +ENV PIPX_HOME=/usr/local/py-utils \ + PIPX_BIN_DIR=/usr/local/py-utils/bin +ENV PATH=${PATH}:${PIPX_BIN_DIR} +COPY .devcontainer/library-scripts/python-debian.sh /tmp/library-scripts/ +RUN bash /tmp/library-scripts/python-debian.sh "none" "/usr/local" "${PIPX_HOME}" "${USERNAME}" "false" \ + && apt-get clean -y && rm -rf /tmp/library-scripts + +# [Option] Install Node.js +ARG INSTALL_NODE="true" +ARG NODE_VERSION="none" +ENV NVM_DIR=/usr/local/share/nvm +ENV NVM_SYMLINK_CURRENT=true \ + PATH=${NVM_DIR}/current/bin:${PATH} +COPY .devcontainer/library-scripts/node-debian.sh /tmp/library-scripts/ +RUN if [ "$INSTALL_NODE" = "true" ]; then bash /tmp/library-scripts/node-debian.sh "${NVM_DIR}" "${NODE_VERSION}" "${USERNAME}"; fi \ + && apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts + +# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image. +# COPY requirements.txt /tmp/pip-tmp/ +# RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \ +# && rm -rf /tmp/pip-tmp + +# [Optional] Uncomment this section to install additional OS packages. +# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ +# && apt-get -y install --no-install-recommends + +# [Optional] Uncomment this line to install global node packages. +# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 From 218a219c64c326395880307de9be19d57bd212cb Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 20 Oct 2020 00:55:16 +0200 Subject: [PATCH 032/312] Create common-debian.sh --- .../library-scripts/common-debian.sh | 327 ++++++++++++++++++ 1 file changed, 327 insertions(+) create mode 100644 .devcontainer/library-scripts/common-debian.sh diff --git a/.devcontainer/library-scripts/common-debian.sh b/.devcontainer/library-scripts/common-debian.sh new file mode 100644 index 00000000..5939e852 --- /dev/null +++ b/.devcontainer/library-scripts/common-debian.sh @@ -0,0 +1,327 @@ +#!/usr/bin/env bash +#------------------------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. +#------------------------------------------------------------------------------------------------------------- +# +# Docs: https://github.com/microsoft/vscode-dev-containers/blob/master/script-library/docs/common.md +# +# Syntax: ./common-debian.sh [install zsh flag] [username] [user UID] [user GID] [upgrade packages flag] [install Oh My *! flag] + +INSTALL_ZSH=${1:-"true"} +USERNAME=${2:-"automatic"} +USER_UID=${3:-"automatic"} +USER_GID=${4:-"automatic"} +UPGRADE_PACKAGES=${5:-"true"} +INSTALL_OH_MYS=${6:-"true"} + +set -e + +if [ "$(id -u)" -ne 0 ]; then + echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.' + exit 1 +fi + +# If in automatic mode, determine if a user already exists, if not use vscode +if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then + USERNAME="" + POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)") + for CURRENT_USER in ${POSSIBLE_USERS[@]}; do + if id -u ${CURRENT_USER} > /dev/null 2>&1; then + USERNAME=${CURRENT_USER} + break + fi + done + if [ "${USERNAME}" = "" ]; then + USERNAME=vscode + fi +elif [ "${USERNAME}" = "none" ]; then + USERNAME=root + USER_UID=0 + USER_GID=0 +fi + +# Load markers to see which steps have already run +MARKER_FILE="/usr/local/etc/vscode-dev-containers/common" +if [ -f "${MARKER_FILE}" ]; then + echo "Marker file found:" + cat "${MARKER_FILE}" + source "${MARKER_FILE}" +fi + +# Ensure apt is in non-interactive to avoid prompts +export DEBIAN_FRONTEND=noninteractive + +# Function to call apt-get if needed +apt-get-update-if-needed() +{ + if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update + else + echo "Skipping apt-get update." + fi +} + +# Run install apt-utils to avoid debconf warning then verify presence of other common developer tools and dependencies +if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then + apt-get-update-if-needed + + PACKAGE_LIST="apt-utils \ + git \ + openssh-client \ + gnupg2 \ + iproute2 \ + procps \ + lsof \ + htop \ + net-tools \ + psmisc \ + curl \ + wget \ + rsync \ + ca-certificates \ + unzip \ + zip \ + nano \ + vim-tiny \ + less \ + jq \ + lsb-release \ + apt-transport-https \ + dialog \ + libc6 \ + libgcc1 \ + libgssapi-krb5-2 \ + libicu[0-9][0-9] \ + liblttng-ust0 \ + libstdc++6 \ + zlib1g \ + locales \ + sudo \ + ncdu \ + man-db \ + strace" + + # Install libssl1.1 if available + if [[ ! -z $(apt-cache --names-only search ^libssl1.1$) ]]; then + PACKAGE_LIST="${PACKAGE_LIST} libssl1.1" + fi + + # Install appropriate version of libssl1.0.x if available + LIBSSL=$(dpkg-query -f '${db:Status-Abbrev}\t${binary:Package}\n' -W 'libssl1\.0\.?' 2>&1 || echo '') + if [ "$(echo "$LIBSSL" | grep -o 'libssl1\.0\.[0-9]:' | uniq | sort | wc -l)" -eq 0 ]; then + if [[ ! -z $(apt-cache --names-only search ^libssl1.0.2$) ]]; then + # Debian 9 + PACKAGE_LIST="${PACKAGE_LIST} libssl1.0.2" + elif [[ ! -z $(apt-cache --names-only search ^libssl1.0.0$) ]]; then + # Ubuntu 18.04, 16.04, earlier + PACKAGE_LIST="${PACKAGE_LIST} libssl1.0.0" + fi + fi + + echo "Packages to verify are installed: ${PACKAGE_LIST}" + apt-get -y install --no-install-recommends ${PACKAGE_LIST} 2> >( grep -v 'debconf: delaying package configuration, since apt-utils is not installed' >&2 ) + + PACKAGES_ALREADY_INSTALLED="true" +fi + +# Get to latest versions of all packages +if [ "${UPGRADE_PACKAGES}" = "true" ]; then + apt-get-update-if-needed + apt-get -y upgrade --no-install-recommends + apt-get autoremove -y +fi + +# Ensure at least the en_US.UTF-8 UTF-8 locale is available. +# Common need for both applications and things like the agnoster ZSH theme. +if [ "${LOCALE_ALREADY_SET}" != "true" ] && ! grep -o -E '^\s*en_US.UTF-8\s+UTF-8' /etc/locale.gen > /dev/null; then + echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen + locale-gen + LOCALE_ALREADY_SET="true" +fi + +# Create or update a non-root user to match UID/GID. +if id -u ${USERNAME} > /dev/null 2>&1; then + # User exists, update if needed + if [ "${USER_GID}" != "automatic" ] && [ "$USER_GID" != "$(id -G $USERNAME)" ]; then + groupmod --gid $USER_GID $USERNAME + usermod --gid $USER_GID $USERNAME + fi + if [ "${USER_UID}" != "automatic" ] && [ "$USER_UID" != "$(id -u $USERNAME)" ]; then + usermod --uid $USER_UID $USERNAME + fi +else + # Create user + if [ "${USER_GID}" = "automatic" ]; then + groupadd $USERNAME + else + groupadd --gid $USER_GID $USERNAME + fi + if [ "${USER_UID}" = "automatic" ]; then + useradd -s /bin/bash --gid $USERNAME -m $USERNAME + else + useradd -s /bin/bash --uid $USER_UID --gid $USERNAME -m $USERNAME + fi +fi + +# Add add sudo support for non-root user +if [ "${USERNAME}" != "root" ] && [ "${EXISTING_NON_ROOT_USER}" != "${USERNAME}" ]; then + echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME + chmod 0440 /etc/sudoers.d/$USERNAME + EXISTING_NON_ROOT_USER="${USERNAME}" +fi + +# ** Shell customization section ** +if [ "${USERNAME}" = "root" ]; then + USER_RC_PATH="/root" +else + USER_RC_PATH="/home/${USERNAME}" +fi + +# .bashrc/.zshrc snippet +RC_SNIPPET="$(cat << EOF +export USER=\$(whoami) + +export PATH=\$PATH:\$HOME/.local/bin +EOF +)" + +# code shim, it fallbacks to code-insiders if code is not available +cat << 'EOF' > /usr/local/bin/code +#!/bin/sh + +get_in_path_except_current() { + which -a "$1" | grep -v "$0" | head -1 +} + +code="$(get_in_path_except_current code)" + +if [ -n "$code" ]; then + exec "$code" "$@" +elif [ "$(command -v code-insiders)" ]; then + exec code-insiders "$@" +else + echo "code or code-insiders is not installed" >&2 + exit 127 +fi +EOF +chmod +x /usr/local/bin/code + +# Codespaces themes - partly inspired by https://github.com/ohmyzsh/ohmyzsh/blob/master/themes/robbyrussell.zsh-theme +CODESPACES_BASH="$(cat \ +<&1 + echo -e "$(cat "${TEMPLATE}")\nDISABLE_AUTO_UPDATE=true\nDISABLE_UPDATE_PROMPT=true" > ${USER_RC_FILE} + if [ "${OH_MY}" = "bash" ]; then + sed -i -e 's/OSH_THEME=.*/OSH_THEME="codespaces"/g' ${USER_RC_FILE} + mkdir -p ${OH_MY_INSTALL_DIR}/custom/themes/codespaces + echo "${CODESPACES_BASH}" > ${OH_MY_INSTALL_DIR}/custom/themes/codespaces/codespaces.theme.sh + else + sed -i -e 's/ZSH_THEME=.*/ZSH_THEME="codespaces"/g' ${USER_RC_FILE} + mkdir -p ${OH_MY_INSTALL_DIR}/custom/themes + echo "${CODESPACES_ZSH}" > ${OH_MY_INSTALL_DIR}/custom/themes/codespaces.zsh-theme + fi + # Shrink git while still enabling updates + cd ${OH_MY_INSTALL_DIR} + git repack -a -d -f --depth=1 --window=1 + + if [ "${USERNAME}" != "root" ]; then + cp -rf ${USER_RC_FILE} ${OH_MY_INSTALL_DIR} /root + chown -R ${USERNAME}:${USERNAME} ${USER_RC_PATH} + fi +} + +if [ "${RC_SNIPPET_ALREADY_ADDED}" != "true" ]; then + echo "${RC_SNIPPET}" >> /etc/bash.bashrc + RC_SNIPPET_ALREADY_ADDED="true" +fi +install-oh-my bash bashrc.osh-template https://github.com/ohmybash/oh-my-bash + +# Optionally install and configure zsh and Oh My Zsh! +if [ "${INSTALL_ZSH}" = "true" ]; then + if ! type zsh > /dev/null 2>&1; then + apt-get-update-if-needed + apt-get install -y zsh + fi + if [ "${ZSH_ALREADY_INSTALLED}" != "true" ]; then + echo "${RC_SNIPPET}" >> /etc/zsh/zshrc + ZSH_ALREADY_INSTALLED="true" + fi + install-oh-my zsh zshrc.zsh-template https://github.com/ohmyzsh/ohmyzsh +fi + +# Write marker file +mkdir -p "$(dirname "${MARKER_FILE}")" +echo -e "\ + PACKAGES_ALREADY_INSTALLED=${PACKAGES_ALREADY_INSTALLED}\n\ + LOCALE_ALREADY_SET=${LOCALE_ALREADY_SET}\n\ + EXISTING_NON_ROOT_USER=${EXISTING_NON_ROOT_USER}\n\ + RC_SNIPPET_ALREADY_ADDED=${RC_SNIPPET_ALREADY_ADDED}\n\ + ZSH_ALREADY_INSTALLED=${ZSH_ALREADY_INSTALLED}" > "${MARKER_FILE}" + +echo "Done!" From 210fce9e5d224d3b11230c4b284f9a063e5c60ef Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 20 Oct 2020 00:56:05 +0200 Subject: [PATCH 033/312] Create python-debian.sh --- .../library-scripts/python-debian.sh | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 .devcontainer/library-scripts/python-debian.sh diff --git a/.devcontainer/library-scripts/python-debian.sh b/.devcontainer/library-scripts/python-debian.sh new file mode 100644 index 00000000..3f96a6db --- /dev/null +++ b/.devcontainer/library-scripts/python-debian.sh @@ -0,0 +1,134 @@ +#!/usr/bin/env bash +#------------------------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. +#------------------------------------------------------------------------------------------------------------- +# +# Docs: https://github.com/microsoft/vscode-dev-containers/blob/master/script-library/docs/python.md +# +# Syntax: ./python-debian.sh [Python Version] [Python intall path] [PIPX_HOME] [non-root user] [Update rc files flag] [install tools] + +PYTHON_VERSION=${1:-"3.8.3"} +PYTHON_INSTALL_PATH=${2:-"/usr/local/python${PYTHON_VERSION}"} +export PIPX_HOME=${3:-"/usr/local/py-utils"} +USERNAME=${4:-"automatic"} +UPDATE_RC=${5:-"true"} +INSTALL_PYTHON_TOOLS=${6:-"true"} + +set -e + +if [ "$(id -u)" -ne 0 ]; then + echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.' + exit 1 +fi + +# Determine the appropriate non-root user +if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then + USERNAME="" + POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)") + for CURRENT_USER in ${POSSIBLE_USERS[@]}; do + if id -u ${CURRENT_USER} > /dev/null 2>&1; then + USERNAME=${CURRENT_USER} + break + fi + done + if [ "${USERNAME}" = "" ]; then + USERNAME=root + fi +elif [ "${USERNAME}" = "none" ] || ! id -u ${USERNAME} > /dev/null 2>&1; then + USERNAME=root +fi + +function updaterc() { + if [ "${UPDATE_RC}" = "true" ]; then + echo "Updating /etc/bash.bashrc and /etc/zsh/zshrc..." + echo -e "$1" | tee -a /etc/bash.bashrc >> /etc/zsh/zshrc + fi +} + +export DEBIAN_FRONTEND=noninteractive + +# Install python from source if needed +if [ "${PYTHON_VERSION}" != "none" ]; then + + if [ -d "${PYTHON_INSTALL_PATH}" ]; then + echo "Path ${PYTHON_INSTALL_PATH} already exists. Assuming Python already installed." + else + echo "Building Python ${PYTHON_VERSION} from source..." + # Install prereqs if missing + PREREQ_PKGS="curl ca-certificates tar make build-essential libffi-dev \ + libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ + libncurses5-dev libncursesw5-dev xz-utils tk-dev" + if ! dpkg -s ${PREREQ_PKGS} > /dev/null 2>&1; then + if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then + apt-get update + fi + apt-get -y install --no-install-recommends ${PREREQ_PKGS} + fi + + # Download and build from src + mkdir -p /tmp/python-src "${PYTHON_INSTALL_PATH}" + cd /tmp/python-src + curl -sSL -o /tmp/python-dl.tgz "https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz" + tar -xzf /tmp/python-dl.tgz -C "/tmp/python-src" --strip-components=1 + ./configure --prefix="${PYTHON_INSTALL_PATH}" --enable-optimizations --with-ensurepip=install + make -j 8 + make install + rm -rf /tmp/python-dl.tgz /tmp/python-src + cd /tmp + chown -R ${USERNAME} "${PYTHON_INSTALL_PATH}" + ln -s ${PYTHON_INSTALL_PATH}/bin/python3 ${PYTHON_INSTALL_PATH}/bin/python + ln -s ${PYTHON_INSTALL_PATH}/bin/pip3 ${PYTHON_INSTALL_PATH}/bin/pip + ln -s ${PYTHON_INSTALL_PATH}/bin/idle3 ${PYTHON_INSTALL_PATH}/bin/idle + ln -s ${PYTHON_INSTALL_PATH}/bin/pydoc3 ${PYTHON_INSTALL_PATH}/bin/pydoc + ln -s ${PYTHON_INSTALL_PATH}/bin/python3-config ${PYTHON_INSTALL_PATH}/bin/python-config + updaterc "export PATH=${PYTHON_INSTALL_PATH}/bin:\${PATH}" + fi +fi + +# If not installing python tools, exit +if [ "${INSTALL_PYTHON_TOOLS}" != "true" ]; then + echo "Done!" + exit 0; +fi + +DEFAULT_UTILS="\ + pylint \ + flake8 \ + autopep8 \ + black \ + yapf \ + mypy \ + pydocstyle \ + pycodestyle \ + bandit \ + pipenv \ + virtualenv" + + +export PIPX_BIN_DIR=${PIPX_HOME}/bin +export PATH=${PYTHON_INSTALL_PATH}/bin:${PIPX_BIN_DIR}:${PATH} + +# Update pip +echo "Updating pip..." +python3 -m pip install --no-cache-dir --upgrade pip + +# Install tools +mkdir -p ${PIPX_BIN_DIR} +chown -R ${USERNAME} ${PIPX_HOME} ${PIPX_BIN_DIR} +su ${USERNAME} -c "$(cat << EOF + set -e + echo "Installing Python tools..." + export PIPX_HOME=${PIPX_HOME} + export PIPX_BIN_DIR=${PIPX_BIN_DIR} + export PYTHONUSERBASE=/tmp/pip-tmp + export PIP_CACHE_DIR=/tmp/pip-tmp/cache + export PATH=${PATH} + pip3 install --disable-pip-version-check --no-warn-script-location --no-cache-dir --user pipx + /tmp/pip-tmp/bin/pipx install --pip-args=--no-cache-dir pipx + echo "${DEFAULT_UTILS}" | xargs -n 1 /tmp/pip-tmp/bin/pipx install --system-site-packages --pip-args '--no-cache-dir --force-reinstall' + chown -R ${USERNAME} ${PIPX_HOME} + rm -rf /tmp/pip-tmp +EOF +)" +updaterc "export PIPX_HOME=${PIPX_HOME}\nexport PIPX_BIN_DIR=${PIPX_BIN_DIR}\nexport PATH=\${PATH}:\${PIPX_BIN_DIR}" From b1767adf508e4486cf637928751c274055cebbfa Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 20 Oct 2020 00:57:01 +0200 Subject: [PATCH 034/312] Create node-debian.sh --- .devcontainer/library-scripts/node-debian.sh | 119 +++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 .devcontainer/library-scripts/node-debian.sh diff --git a/.devcontainer/library-scripts/node-debian.sh b/.devcontainer/library-scripts/node-debian.sh new file mode 100644 index 00000000..de2e8eba --- /dev/null +++ b/.devcontainer/library-scripts/node-debian.sh @@ -0,0 +1,119 @@ +#!/bin/bash +#------------------------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. +#------------------------------------------------------------------------------------------------------------- +# +# Docs: https://github.com/microsoft/vscode-dev-containers/blob/master/script-library/docs/node.md +# +# Syntax: ./node-debian.sh [directory to install nvm] [node version to install (use "none" to skip)] [non-root user] [Update rc files flag] + +export NVM_DIR=${1:-"/usr/local/share/nvm"} +export NODE_VERSION=${2:-"lts/*"} +USERNAME=${3:-"automatic"} +UPDATE_RC=${4:-"true"} + +set -e + +if [ "$(id -u)" -ne 0 ]; then + echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.' + exit 1 +fi + +# Determine the appropriate non-root user +if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then + USERNAME="" + POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)") + for CURRENT_USER in ${POSSIBLE_USERS[@]}; do + if id -u ${CURRENT_USER} > /dev/null 2>&1; then + USERNAME=${CURRENT_USER} + break + fi + done + if [ "${USERNAME}" = "" ]; then + USERNAME=root + fi +elif [ "${USERNAME}" = "none" ] || ! id -u ${USERNAME} > /dev/null 2>&1; then + USERNAME=root +fi + +if [ "${NODE_VERSION}" = "none" ]; then + export NODE_VERSION= +fi + +# Ensure apt is in non-interactive to avoid prompts +export DEBIAN_FRONTEND=noninteractive + +# Install curl, apt-transport-https, tar, or gpg if missing +if ! dpkg -s apt-transport-https curl ca-certificates tar > /dev/null 2>&1 || ! type gpg > /dev/null 2>&1; then + if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then + apt-get update + fi + apt-get -y install --no-install-recommends apt-transport-https curl ca-certificates tar gnupg2 +fi + +# Install yarn +if type yarn > /dev/null 2>&1; then + echo "Yarn already installed." +else + curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | (OUT=$(apt-key add - 2>&1) || echo $OUT) + echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list + apt-get update + apt-get -y install --no-install-recommends yarn +fi + +# Install the specified node version if NVM directory already exists, then exit +if [ -d "${NVM_DIR}" ]; then + echo "NVM already installed." + if [ "${NODE_VERSION}" != "" ]; then + su ${USERNAME} -c "source $NVM_DIR/nvm.sh && nvm install ${NODE_VERSION} && nvm clear-cache" + fi + exit 0 +fi + + +# Run NVM installer as non-root if needed +mkdir -p ${NVM_DIR} +chown ${USERNAME} ${NVM_DIR} +su ${USERNAME} -c "$(cat << EOF + set -e + + # Do not update profile - we'll do this manually + export PROFILE=/dev/null + + curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash + source ${NVM_DIR}/nvm.sh + if [ "${NODE_VERSION}" != "" ]; then + nvm alias default ${NODE_VERSION} + fi + nvm clear-cache +EOF +)" 2>&1 + +if [ "${UPDATE_RC}" = "true" ]; then + echo "Updating /etc/bash.bashrc and /etc/zsh/zshrc with NVM scripts..." +(cat < /dev/null 2>&1; then + echo "Fixing permissions of \"\$NVM_DIR\"..." + sudoIf chown -R ${USERNAME}:root \$NVM_DIR + else + echo "Warning: NVM directory is not owned by ${USERNAME} and sudo is not installed. Unable to correct permissions." + fi +fi +[ -s "\$NVM_DIR/nvm.sh" ] && . "\$NVM_DIR/nvm.sh" +[ -s "\$NVM_DIR/bash_completion" ] && . "\$NVM_DIR/bash_completion" +EOF +) | tee -a /etc/bash.bashrc >> /etc/zsh/zshrc +fi + +echo "Done!" From d3a147931d7b552790907e8bc92bdd3c28b65b14 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 21 Oct 2020 15:26:48 +0200 Subject: [PATCH 035/312] Change the way phases are managed --- easyDiffractionLib/Calculators/cryspy.py | 2 ++ easyDiffractionLib/sample.py | 9 ++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 7b6d562b..afb64d15 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -5,6 +5,8 @@ from easyCore import borg import cryspy +import warnings +warnings.filterwarnings('ignore') class Cryspy: diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 27b34947..0b73e96b 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -43,12 +43,11 @@ def phases(self): @phases.setter def phases(self, value): if isinstance(value, Crystal): - self._phases.append(value) - elif isinstance(value, Crystals): - self._phases = value - self._borg.map.add_edge(self, value) - else: + value = Crystals('Phases', value) + if not isinstance(value, Crystals): raise ValueError + self._phases = value + self._borg.map.add_edge(self, value) self._updateInterface() @property From 3081014de822a7a0349c477cb441723f25a4f8ec Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 21 Oct 2020 16:58:08 +0200 Subject: [PATCH 036/312] Modify formation of Pattern --- .../Elements/Instruments/Instrument.py | 61 +++++++++++++++---- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/easyDiffractionLib/Elements/Instruments/Instrument.py b/easyDiffractionLib/Elements/Instruments/Instrument.py index 39e3e251..602a7811 100644 --- a/easyDiffractionLib/Elements/Instruments/Instrument.py +++ b/easyDiffractionLib/Elements/Instruments/Instrument.py @@ -1,7 +1,8 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -from easyCore.Objects.Base import BaseObj +from easyCore.Objects.Base import BaseObj, Parameter +from copy import deepcopy from easyCore.Utils.json import MontyDecoder _decoder = MontyDecoder() @@ -9,46 +10,82 @@ class Pattern(BaseObj): _name = 'Instrument' - _defaults = [ - { + _defaults = { + 'u_resolution': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', 'name': 'u_resolution', 'value': 0.0002 }, - { + 'v_resolution': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', 'name': 'v_resolution', 'value': -0.0002 }, - { + 'w_resolution': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', 'name': 'w_resolution', 'value': 0.012 }, - { + 'x_resolution': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', 'name': 'x_resolution', 'value': 0.012 }, - { + 'wavelength': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', 'name': 'wavelength', 'units': 'angstrom', 'value': 1.54056 - }, - ] + } + } - def __init__(self, interface=None): - super().__init__(self.__class__.__name__, *[_decoder.process_decoded(default) for default in self._defaults]) + def __init__(self, + u_resolution: Parameter, v_resolution: Parameter, w_resolution: Parameter, x_resolution: Parameter, + wavelength: Parameter, interface=None): + super().__init__(self.__class__.__name__, + u_resolution=u_resolution, v_resolution=v_resolution, + w_resolution=w_resolution, x_resolution=x_resolution, wavelength=wavelength) self.name = self._name - self.interface = interface \ No newline at end of file + self.interface = interface + + @classmethod + def from_pars(cls, + u_resolution: float = _defaults['u_resolution']['value'], + v_resolution: float = _defaults['v_resolution']['value'], + w_resolution: float = _defaults['w_resolution']['value'], + x_resolution: float = _defaults['x_resolution']['value'], + wavelength: float = _defaults['wavelength']['value']): + defaults = deepcopy(cls._defaults) + defaults['u_resolution']['value'] = u_resolution + u_resolution = _decoder.process_decoded(defaults['u_resolution']) + defaults['v_resolution']['value'] = v_resolution + v_resolution = _decoder.process_decoded(defaults['v_resolution']) + defaults['w_resolution']['value'] = w_resolution + w_resolution = _decoder.process_decoded(defaults['w_resolution']) + defaults['x_resolution']['value'] = x_resolution + x_resolution = _decoder.process_decoded(defaults['x_resolution']) + defaults['wavelength']['value'] = wavelength + wavelength = _decoder.process_decoded(defaults['wavelength']) + return cls(u_resolution=u_resolution, v_resolution=v_resolution, + w_resolution=w_resolution, x_resolution=x_resolution, wavelength=wavelength) + + @classmethod + def default(cls): + defaults = deepcopy(cls._defaults) + u_resolution = _decoder.process_decoded(defaults['u_resolution']) + v_resolution = _decoder.process_decoded(defaults['v_resolution']) + w_resolution = _decoder.process_decoded(defaults['w_resolution']) + x_resolution = _decoder.process_decoded(defaults['x_resolution']) + wavelength = _decoder.process_decoded(defaults['wavelength']) + return cls(u_resolution=u_resolution, v_resolution=v_resolution, + w_resolution=w_resolution, x_resolution=x_resolution, wavelength=wavelength) From 0dec13a66a343817b337ee8659f604e4a20b9078 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 22 Oct 2020 11:27:38 +0200 Subject: [PATCH 037/312] Remove monty --- pyproject.toml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index f221da24..e61e1022 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,11 +19,10 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.8" matplotlib = "^3.3" -easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } +cryspy = "^0.4.11" CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } +easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } -monty = "^4.0.2" -cryspy = "^0.4.11" [tool.poetry.dev-dependencies] pytest = "^5.2" #CFML_api = { path = '../CFML_api/' } From 05811081516060858255a7c37e7c679e7b621917 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 23 Oct 2020 10:15:26 +0200 Subject: [PATCH 038/312] Update example notebook --- tests/workedExample1.ipynb | 113 +++++++++++++++++++++---------------- 1 file changed, 65 insertions(+), 48 deletions(-) diff --git a/tests/workedExample1.ipynb b/tests/workedExample1.ipynb index 6efadcee..a5597498 100644 --- a/tests/workedExample1.ipynb +++ b/tests/workedExample1.ipynb @@ -59,7 +59,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Cell: (a:5.52, b:5.52, c:7.81, alpha:90.00, beta:90.00, gamma:90.00) \n" + "\n" ] } ], @@ -103,7 +103,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Before we can simulate a pattern we have to create a `Pattern` with instrumental parameters. At the moment this is just the wavelength and reolution parameters" + "Before we can simulate a pattern we have to create a `Pattern` with instrumental parameters. At the moment this is just the wavelength and resolution parameters" ] }, { @@ -112,7 +112,7 @@ "metadata": {}, "outputs": [], "source": [ - "pattern = Pattern()" + "pattern = Pattern.default()" ] }, { @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -140,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -157,7 +157,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -1105,7 +1105,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -1117,10 +1117,10 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 9, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -1140,7 +1140,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -1156,7 +1156,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -1183,7 +1183,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -2131,7 +2131,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -2143,10 +2143,10 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 12, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -2172,13 +2172,13 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "efc2d21c03da4034be57395a312b77af", + "model_id": "f8fb8e7795a14ae09bc3225d8c968538", "version_major": 2, "version_minor": 0 }, @@ -2205,6 +2205,13 @@ "interactive_plot" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Getting and modifying parameters" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2214,14 +2221,14 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]\n" + "[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]\n" ] } ], @@ -2235,7 +2242,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "But this isn't very helpful. To make it more visuall~y appealing:" + "But this isn't very helpful. To make it more visually appealing:" ] }, { @@ -2275,6 +2282,37 @@ "print('\\n'.join(par_path))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of course, sometimes we want to only get certain parameters i.e. instrumental only:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Instrument.u_resolution\n", + "Instrument.v_resolution\n", + "Instrument.w_resolution\n", + "Instrument.x_resolution\n", + "Instrument.wavelength\n" + ] + } + ], + "source": [ + "_, par_path = generatePath(sample_new.parameters)\n", + "# Note the lack of `True` in the above call. \n", + "# This is an optional logical parameter which can cut off the head node.\n", + "print('\\n'.join(par_path))" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2291,7 +2329,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -2309,7 +2347,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -3257,7 +3295,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -3265,20 +3303,6 @@ }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/cryspy/B_parent_classes/cl_1_item.py:135: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n", - " if ((value == \".\") | (value is None)):\n", - "/home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/cryspy/B_parent_classes/cl_3_data.py:139: UserWarning: Double items were given.\n", - " warn(\"Double items were given.\", UserWarning)\n", - "/home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/cryspy/B_parent_classes/cl_3_data.py:125: UserWarning: Access to variable by 'pd_instr_resolution'.\n", - " warn(f\"Access to variable by '{name_new:}'.\", UserWarning)\n", - "/home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/cryspy/B_parent_classes/cl_3_data.py:125: UserWarning: Access to variable by 'pd_background'.\n", - " warn(f\"Access to variable by '{name_new:}'.\", UserWarning)\n" - ] } ], "source": [ @@ -3299,7 +3323,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -3317,7 +3341,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -3327,7 +3351,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -4275,7 +4299,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -4291,13 +4315,6 @@ "plt.plot(ttheta, interface.fit_func(ttheta))\n", "plt.show()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 2f6c5e2b369cd7c1c801f6d3ecd7b7ebb45a5f88 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 23 Oct 2020 16:39:38 +0200 Subject: [PATCH 039/312] Rename Cryspy -> CrysPy --- easyDiffractionLib/Interfaces/cryspy.py | 2 +- easyDiffractionLib/interface.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 5878f8d6..635651e2 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -25,7 +25,7 @@ class Cryspy(InterfaceTemplate): 'wavelength': 'wavelength' } - name = 'Cryspy' + name = 'CrysPy' def __init__(self): self.calculator = Cryspy_calc() diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index ddb9f318..e384dc59 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -106,7 +106,7 @@ def __set_sample_item(obj, key, holder) -> Callable: def inner(value): # !!! THIS IS NOT THE WAY TO DO IT !!! # !!! FOR TESTING ONLY !!!! - if obj.current_interface_name == 'Cryspy': + if obj.current_interface_name == 'CrysPy': obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) else: holder.phases.cif.to_file(holder.filename, holder.output_index) From 2e46f221a56dd8ae16bbbca72fb97217510f114d Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 23 Oct 2020 16:42:36 +0200 Subject: [PATCH 040/312] Change from cryspy -> CrysPy --- tests/workedExample1.ipynb | 58 ++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/tests/workedExample1.ipynb b/tests/workedExample1.ipynb index a5597498..57660366 100644 --- a/tests/workedExample1.ipynb +++ b/tests/workedExample1.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -52,7 +52,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -83,7 +83,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -108,7 +108,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -140,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -157,7 +157,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -1105,7 +1105,7 @@ { "data": { "text/html": [ - "" + "
" ], "text/plain": [ "" @@ -1117,10 +1117,10 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 8, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -2131,7 +2131,7 @@ { "data": { "text/html": [ - "" + "
" ], "text/plain": [ "" @@ -2143,7 +2143,7 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 11, @@ -2172,13 +2172,13 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f8fb8e7795a14ae09bc3225d8c968538", + "model_id": "70bb6570316347a2849ed1b716d609bd", "version_major": 2, "version_minor": 0 }, @@ -2221,14 +2221,14 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]\n" + "[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]\n" ] } ], @@ -2324,16 +2324,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "By default we use the CrysFML calculator, but we can change to another. i.e. Cryspy" + "By default we use the CrysFML calculator, but we can change to another. i.e. CrysPy" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ - "interface.switch('Cryspy')\n", + "interface.switch('CrysPy')\n", "# This is a temp fix...\n", "sample_new._updateInterface()" ] @@ -2347,7 +2347,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -3295,7 +3295,7 @@ { "data": { "text/html": [ - "" + "
" ], "text/plain": [ "" @@ -3341,7 +3341,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -3351,8 +3351,12 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, + "execution_count": 20, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { @@ -4299,7 +4303,7 @@ { "data": { "text/html": [ - "" + "
" ], "text/plain": [ "" @@ -4338,4 +4342,4 @@ }, "nbformat": 4, "nbformat_minor": 1 -} +} \ No newline at end of file From 7425f858cf5cba6471b1383cb9ebbe082a059106 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 23 Oct 2020 17:48:24 +0200 Subject: [PATCH 041/312] Introduce a fitting example --- .../Elements/Instruments/Instrument.py | 19 +- tests/WorkedExample2.ipynb | 2163 +++++++++++++++++ 2 files changed, 2177 insertions(+), 5 deletions(-) create mode 100644 tests/WorkedExample2.ipynb diff --git a/easyDiffractionLib/Elements/Instruments/Instrument.py b/easyDiffractionLib/Elements/Instruments/Instrument.py index 602a7811..05d73bf1 100644 --- a/easyDiffractionLib/Elements/Instruments/Instrument.py +++ b/easyDiffractionLib/Elements/Instruments/Instrument.py @@ -16,28 +16,35 @@ class Pattern(BaseObj): '@class': 'Parameter', '@version': '0.0.1', 'name': 'u_resolution', - 'value': 0.0002 + 'value': 0.0002, + 'fixed': True }, 'v_resolution': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', 'name': 'v_resolution', - 'value': -0.0002 + 'value': -0.0002, + 'fixed': True + }, 'w_resolution': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', 'name': 'w_resolution', - 'value': 0.012 + 'value': 0.012, + 'fixed': True + }, 'x_resolution': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', 'name': 'x_resolution', - 'value': 0.012 + 'value': 0.012, + 'fixed': True + }, 'wavelength': { '@module': 'easyCore.Objects.Base', @@ -45,7 +52,9 @@ class Pattern(BaseObj): '@version': '0.0.1', 'name': 'wavelength', 'units': 'angstrom', - 'value': 1.54056 + 'value': 1.54056, + 'fixed': True + } } diff --git a/tests/WorkedExample2.ipynb b/tests/WorkedExample2.ipynb new file mode 100644 index 00000000..50823578 --- /dev/null +++ b/tests/WorkedExample2.ipynb @@ -0,0 +1,2163 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fitting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are two built in fitting engines, `lmfit` and `bumps`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import all the packages." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Import all the packages\n", + "from easyCore import np\n", + "from easyDiffractionLib.sample import Sample\n", + "from easyDiffractionLib import Crystals\n", + "from easyDiffractionLib.interface import InterfaceFactory\n", + "from easyDiffractionLib.Elements.Instruments.Instrument import Pattern\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparing the sample and data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We load up a cif file and then set the experimental parameters. The resolution has to be changed from the default as the peaks are too sharp" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "interface = InterfaceFactory()\n", + "c = Crystals.from_cif_file('SrTiO3.cif')\n", + "S = Sample(phases=c, parameters=Pattern.default(), interface=interface)\n", + "S.parameters.u_resolution = 0.4\n", + "S.parameters.v_resolution = -0.5\n", + "S.parameters.w_resolution = 0.9\n", + "S.parameters.x_resolution = 0.0\n", + "S.parameters.y_resolution = 0.0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make some experimental data where we have varied the lattice parameter a" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sim Starting Cell:\n", + "\n", + "Exp Cell:\n", + "\n" + ] + } + ], + "source": [ + "# Make a note of the starting a value\n", + "starting_a = S.phases[0].cell.length_a.raw_value\n", + "# x-data\n", + "ex_x_data = np.linspace(0, 100, 501)\n", + "# New cell length a\n", + "ex_data_a = starting_a * (1 + 0.15*(np.random.rand()-0.5))\n", + "print('Sim Starting Cell:\\n{:s}'.format(str(S.phases[0].cell)))\n", + "\n", + "# Set the new a, which will be fitted.\n", + "S.phases[0].cell.length_a = ex_data_a\n", + "print('Exp Cell:\\n{:s}'.format(str(S.phases[0].cell)))\n", + "\n", + "# Generate the experimental y-data\n", + "ex_y_data = interface.fit_func(ex_x_data)\n", + "# Reset the model back to the starting point\n", + "S.phases[0].cell.length_a = starting_a" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " if (this.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n", + " }\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " var resizeObserver = new ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " resizeObserver.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = 'image/png';\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.which === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.which;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which !== 17) {\n", + " value += 'ctrl+';\n", + " }\n", + " if (event.altKey && event.which !== 18) {\n", + " value += 'alt+';\n", + " }\n", + " if (event.shiftKey && event.which !== 16) {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data']);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.one(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "starting_y_data = interface.fit_func(ex_x_data)\n", + "%matplotlib notebook\n", + "plt.plot(ex_x_data, ex_y_data, label='Experimental')\n", + "plt.plot(ex_x_data, starting_y_data, label='Starting point')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fitting to the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initalize the fitting engine and apply a few constraints" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "f = Fitter(S, interface.fit_func)\n", + "\n", + "S.phases[0].cell.length_a.fixed = False\n", + "S.phases[0].cell.length_a.min = 4\n", + "S.phases[0].cell.length_a.max = 8" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perform the fit" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The fit has been successful: True\n" + ] + } + ], + "source": [ + "result = f.fit(ex_x_data, ex_y_data, method='brute')\n", + "result = f.fit(ex_x_data, ex_y_data)\n", + "\n", + "if result.success:\n", + " print(\"The fit has been successful: {}\".format(result.success))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Expected value 5.7265173946279315\n" + ] + } + ], + "source": [ + "print(S.phases[0].cell.length_a)\n", + "print('Expected value {}'.format(ex_data_a))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " if (this.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n", + " }\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " var resizeObserver = new ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " resizeObserver.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = 'image/png';\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.which === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.which;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which !== 17) {\n", + " value += 'ctrl+';\n", + " }\n", + " if (event.altKey && event.which !== 18) {\n", + " value += 'alt+';\n", + " }\n", + " if (event.shiftKey && event.which !== 16) {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data']);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.one(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib notebook\n", + "plt.figure()\n", + "plt.plot(result.x, result.y_obs, label='Experimental')\n", + "plt.plot(result.x, result.y_calc, label='Fitted')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 04c3107a5b2064261831db5cadef8186b76bf550 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 26 Oct 2020 16:46:18 +0100 Subject: [PATCH 042/312] Initial implementation of GSAS-II --- easyDiffractionLib/Calculators/GSASII.py | 102 ++++++++++++++++++ easyDiffractionLib/Calculators/cryspy.py | 4 +- easyDiffractionLib/Interfaces/GSASII.py | 123 ++++++++++++++++++++++ easyDiffractionLib/Interfaces/__init__.py | 10 +- 4 files changed, 236 insertions(+), 3 deletions(-) create mode 100644 easyDiffractionLib/Calculators/GSASII.py create mode 100644 easyDiffractionLib/Interfaces/GSASII.py diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py new file mode 100644 index 00000000..b7613d02 --- /dev/null +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -0,0 +1,102 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +import os, pathlib +import GSASIIscriptable as G2sc + +from easyCore import np + +class GSASII: + + def __init__(self, filename: str = None): + self.prm_file_name = 'temp.prm' + self.prm_file_path = "" + self.prm_dir_path = "" + self.conditions = { + 'wavelength': 1.25, + 'resolution': { + 'u': 0.001, + 'v': 0.001, + 'w': 0.001, + 'x': 0.000, + 'y': 0.000 + } + } + self.filename = filename + + def create_temp_prm(self): + if self.filename is None: + return + prm_base = """ + 123456789012345678901234567890123456789012345678901234567890 +INS BANK 1 +INS HTYPE PNCR +INS 1 ICONS 1.909000 0.000000 -0.1 0 0.0 0 0.0 +INS 1I HEAD DUMMY INCIDENT SPECTRUM FOR DIFFRACTOMETER D1A +INS 1I ITYP 0 0.0000 180.0000 1 +INS 1PRCF1 1 6 0.01 +INS 1PRCF11 0.354031E+03 -0.760404E+03 0.651592E+03 0.000000E+00 +INS 1PRCF12 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 +INS 1PRCF2 2 6 0.01 +INS 1PRCF21 0.354031E+03 -0.760404E+03 0.651592E+03 0.000000E+00 +INS 1PRCF22 0.000000E+00 0.000000E+00 + """ + self.prm_dir_path = os.path.dirname(os.path.abspath(self.filename)) + self.prm_file_path = os.path.join(self.prm_dir_path, self.prm_file_name) + with open(self.prm_file_path, 'w') as f: + f.write(prm_base) + + def calculate(self, x_array: np.ndarray) -> np.ndarray: + self.create_temp_prm() + + gpx = G2sc.G2Project(newgpx=os.path.join(self.prm_dir_path, 'temp.gpx')) # create a project + + # step 1, setup: add a phase to the project + cif_file = self.filename + phase_name = 'Phase' + gpx.add_phase(cif_file, phasename=phase_name, fmthint='CIF') + + # step 2, setup: add a simulated histogram and link it to the previous phase(s) + x0 = x_array[0] + xF = x_array[-1] + nX = np.prod(x_array.shape) + x_step = (xF-x0)/(nX - 1) + hist1 = gpx.add_simulated_powder_histogram(f"{phase_name} simulation", + self.prm_file_path, + x0, xF, x_step, + phases=gpx.phases()) + + # Set instrumental parameters + multiplier = 1000 + wl = self.conditions["wavelength"] + u = self.conditions["resolution"]["u"] * multiplier + v = self.conditions["resolution"]["v"] * multiplier + w = self.conditions["resolution"]["w"] * multiplier + x = self.conditions["resolution"]["x"] * multiplier + y = self.conditions["resolution"]["y"] * multiplier + gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['Lam'] = [wl,wl,0] + gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['U'] = [u,u,0] + gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['V'] = [v,v,0] + gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['W'] = [w,w,0] + gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['X'] = [x,x,0] + gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['Y'] = [y,y,0] + + # Step 3: Set the scale factor to adjust the y scale + #hist1.SampleParameters['Scale'][0] = 1000000. + + # step 4, compute: turn off parameter optimization and calculate pattern + gpx.data['Controls']['data']['max cyc'] = 0 # refinement not needed + + try: + gpx.do_refinements(refinements=[{}], makeBack=[]) + # step 5, retrieve results & plot + ycalc = gpx.histogram(0).getdata('ycalc') + except: + raise ArithmeticError + finally: + # Clean up + pathlib.Path(os.path.join(self.prm_dir_path, 'temp.lst')).unlink() + pathlib.Path(os.path.join(self.prm_dir_path, 'temp.gpx')).unlink() + pathlib.Path(os.path.join(self.prm_dir_path, 'temp.bak0.gpx')).unlink() + + return ycalc diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index afb64d15..9cb68cc7 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -18,8 +18,8 @@ def __init__(self): 'u': 0.001, 'v': 0.001, 'w': 0.001, - 'x': 0.001, - 'y': 0.001 + 'x': 0.000, + 'y': 0.000 } } diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py new file mode 100644 index 00000000..d57c567e --- /dev/null +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -0,0 +1,123 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +from typing import List + +import numpy as np + +from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate +from easyDiffractionLib.Calculators.GSASII import GSASII as GSASII_calc + + +class GSASII(InterfaceTemplate): + """ + A simple example interface using GSASII + """ + + _sample_link = { + 'filename': 'filename'} + + _instrument_link = { + 'u_resolution': 'u', + 'v_resolution': 'v', + 'w_resolution': 'w', + 'x_resolution': 'x', + 'wavelength': 'wavelength' + } + + name = 'GSAS-II' + + def __init__(self): + self.calculator = GSASII_calc() + self._namespace = {} + + def get_value(self, value_label: str) -> float: + """ + Method to get a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :return: associated value + :rtype: float + """ + if value_label in self._sample_link.keys(): + value_label = self._sample_link[value_label] + return getattr(self.calculator, value_label, None) + + def set_value(self, value_label: str, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + if self._borg.debug: + print(f'Interface1: Value of {value_label} set to {value}') + if value_label in self._sample_link.keys(): + value_label = self._sample_link[value_label] + setattr(self.calculator, value_label, value) + + def get_instrument_value(self, value_label: str) -> float: + """ + Method to get a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :return: associated value + :rtype: float + """ + if value_label in self._instrument_link.keys(): + value_label = self._instrument_link[value_label] + if value_label == 'wavelength': + return self.calculator.conditions.get(value_label, None) + return self.calculator.conditions['resolution'].get(value_label, None) + + def set_instrument_value(self, value_label: str, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + if self._borg.debug: + print(f'Interface1: Value of {value_label} set to {value}') + if value_label in self._instrument_link.keys(): + value_label = self._instrument_link[value_label] + if value_label == 'wavelength': + self.calculator.conditions[value_label] = value + return + self.calculator.conditions['resolution'][value_label] = value + + def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): + """ + Perform an update of multiple values at once to save time on expensive updates + + :param value_label_list: list of parameters to set + :type value_label_list: List[str] + :param value_list: list of new numeric values + :type value_list: List[float] + :param external: should we lookup a name conversion to internal labeling? + :type external: bool + :return: None + :rtype: noneType + """ + for label, value in zip(value_label_list, value_list): + # This is a simple case so we will serially update + if label in self._sample_link: + self.set_value(label, value) + elif label in self._instrument_link: + self.set_instrument_value(label, value) + + def fit_func(self, x_array: np.ndarray) -> np.ndarray: + """ + Function to perform a fit + :param x_array: points to be calculated at + :type x_array: np.ndarray + :return: calculated points + :rtype: np.ndarray + """ + return self.calculator.calculate(x_array) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index ad2c0cb9..a8687ef4 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -1,6 +1,9 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' + +import os, sys + try: from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 except ImportError: @@ -11,6 +14,11 @@ except ImportError: # TODO make this a proper message (use logging?) print('Cryspy is not installed') - +try: + #sys.path.insert(0, os.path.expanduser("~/gsas2full/GSASII/")) + from easyDiffractionLib.Interfaces.GSASII import GSASII # noqa: F401 +except ImportError: + # TODO make this a proper message (use logging?) + print('GSASII is not installed') from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate From 02bc71ce68522f543eb26377b8b7ad26a545486c Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 27 Oct 2020 18:02:02 +0100 Subject: [PATCH 043/312] Load GSASII from github (macOS only) --- easyDiffractionLib/Calculators/GSASII.py | 2 ++ pyproject.toml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index b7613d02..5f262504 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -2,10 +2,12 @@ __version__ = "0.0.1" import os, pathlib + import GSASIIscriptable as G2sc from easyCore import np + class GSASII: def __init__(self, filename: str = None): diff --git a/pyproject.toml b/pyproject.toml index e61e1022..459e5312 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,11 +21,13 @@ python = "^3.7, <3.8" matplotlib = "^3.3" cryspy = "^0.4.11" CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } +GSASII = { git = 'ssh://git@github.com/easyScience/GSASII.git', rev = 'main' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } [tool.poetry.dev-dependencies] pytest = "^5.2" #CFML_api = { path = '../CFML_api/' } +#GSASII = { path = '../GSASII/' } [tool.poetry.scripts] easyDiffractionLib = "easyDiffractionLib.main:main" From 06d9e570dd4046510f843a3833125c78de4806a3 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 27 Oct 2020 18:08:36 +0100 Subject: [PATCH 044/312] Import GSASII --- easyDiffractionLib/Interfaces/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index a8687ef4..072dfd04 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -9,13 +9,16 @@ except ImportError: # TODO make this a proper message (use logging?) print('CFML is not installed') + try: from easyDiffractionLib.Interfaces.cryspy import Cryspy # noqa: F401 except ImportError: # TODO make this a proper message (use logging?) print('Cryspy is not installed') + try: - #sys.path.insert(0, os.path.expanduser("~/gsas2full/GSASII/")) + import GSASII + sys.path.insert(0, GSASII.__path__[0]) from easyDiffractionLib.Interfaces.GSASII import GSASII # noqa: F401 except ImportError: # TODO make this a proper message (use logging?) From 9187c58df6c440e87f1ac96da11c2425ec74c696 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 27 Oct 2020 20:29:45 +0100 Subject: [PATCH 045/312] Use CFML so_macos branch --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 459e5312..829fc832 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ packages = [ { include = "easyDiffractionLib" } ] python = "^3.7, <3.8" matplotlib = "^3.3" cryspy = "^0.4.11" -CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'main' } +CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'so_macos' } GSASII = { git = 'ssh://git@github.com/easyScience/GSASII.git', rev = 'main' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } From 7e7d26a7ae3923c5f8112233f6f10c5084fbf8d1 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 27 Oct 2020 20:46:08 +0100 Subject: [PATCH 046/312] fix branch name --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 829fc832..cb601e46 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ packages = [ { include = "easyDiffractionLib" } ] python = "^3.7, <3.8" matplotlib = "^3.3" cryspy = "^0.4.11" -CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'so_macos' } +CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'gsas' } GSASII = { git = 'ssh://git@github.com/easyScience/GSASII.git', rev = 'main' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } From 6a300948e7c6a473862eeeb05c0698fed1603ee4 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 27 Oct 2020 22:53:41 +0100 Subject: [PATCH 047/312] Update import GSASII --- easyDiffractionLib/Interfaces/__init__.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index 072dfd04..09fec284 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -14,14 +14,23 @@ from easyDiffractionLib.Interfaces.cryspy import Cryspy # noqa: F401 except ImportError: # TODO make this a proper message (use logging?) - print('Cryspy is not installed') + print('CrysPy is not installed') try: import GSASII sys.path.insert(0, GSASII.__path__[0]) + if 'darwin' in platform: + import somacos + sys.path.insert(0, os.path.join(somacos.__path__[0], "GSASII")) + elif 'linux' in platform: + import solinux + sys.path.insert(0, os.path.join(solinux.__path__[0], "GSASII")) + elif 'win32' in platform: + import sowindows + sys.path.insert(0, os.path.join(sowindows.__path__[0], "GSASII")) from easyDiffractionLib.Interfaces.GSASII import GSASII # noqa: F401 except ImportError: # TODO make this a proper message (use logging?) - print('GSASII is not installed') + print('GSAS-II is not installed') from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate From 9072c1e285fb29cb985ca58a3026c04220dd5a5e Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 27 Oct 2020 22:58:03 +0100 Subject: [PATCH 048/312] fix platform call --- easyDiffractionLib/Interfaces/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index 09fec284..43e2478c 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -19,13 +19,13 @@ try: import GSASII sys.path.insert(0, GSASII.__path__[0]) - if 'darwin' in platform: + if 'darwin' in sys.platform: import somacos sys.path.insert(0, os.path.join(somacos.__path__[0], "GSASII")) - elif 'linux' in platform: + elif 'linux' in sys.platform: import solinux sys.path.insert(0, os.path.join(solinux.__path__[0], "GSASII")) - elif 'win32' in platform: + elif 'win32' in sys.platform: import sowindows sys.path.insert(0, os.path.join(sowindows.__path__[0], "GSASII")) from easyDiffractionLib.Interfaces.GSASII import GSASII # noqa: F401 From 846b2e161e8ae52dcb6a25d524e91c7e37084b8f Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 28 Oct 2020 00:28:16 +0100 Subject: [PATCH 049/312] Set matplotlib version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index cb601e46..bd57b07d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,8 +18,8 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.8" -matplotlib = "^3.3" cryspy = "^0.4.11" +matplotlib = "^3.2, <3.3" CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'gsas' } GSASII = { git = 'ssh://git@github.com/easyScience/GSASII.git', rev = 'main' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } From b3a2c592597ef393fde41798808e35afeddde6b1 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 28 Oct 2020 00:41:06 +0100 Subject: [PATCH 050/312] try matplotlib 3.2.2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index bd57b07d..4163dcf8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.8" cryspy = "^0.4.11" -matplotlib = "^3.2, <3.3" +matplotlib = "3.2.2" CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'gsas' } GSASII = { git = 'ssh://git@github.com/easyScience/GSASII.git', rev = 'main' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } From e63a6f616e72922ce1c2fdc8936a6a37a43740d4 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 28 Oct 2020 00:48:05 +0100 Subject: [PATCH 051/312] Delete poetry.lock --- poetry.lock | 646 ------------------------------------------------- pyproject.toml | 2 +- 2 files changed, 1 insertion(+), 647 deletions(-) delete mode 100644 poetry.lock diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 11b3b88e..00000000 --- a/poetry.lock +++ /dev/null @@ -1,646 +0,0 @@ -[[package]] -category = "main" -description = "Safe, minimalistic evaluator of python expression using ast module" -name = "asteval" -optional = false -python-versions = ">=3.5" -version = "0.9.19" - -[[package]] -category = "dev" -description = "Atomic file writes." -marker = "sys_platform == \"win32\"" -name = "atomicwrites" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.4.0" - -[[package]] -category = "dev" -description = "Classes Without Boilerplate" -name = "attrs" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "20.2.0" - -[package.extras] -dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "sphinx-rtd-theme", "pre-commit"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] -tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] - -[[package]] -category = "main" -description = "Data fitting with bayesian uncertainty analysis" -name = "bumps" -optional = false -python-versions = "*" -version = "0.7.16" - -[package.dependencies] -six = "*" - -[[package]] -category = "main" -description = "Python package for providing Mozilla's CA Bundle." -name = "certifi" -optional = false -python-versions = "*" -version = "2020.6.20" - -[[package]] -category = "main" -description = "" -name = "cfml-api" -optional = false -python-versions = "^3.7, <3.8" -version = "0.0.1" - -[package.dependencies] -icc_rt = "^2020.0" -mkl = "^2019.0" -numpy = "^1.19" - -[package.source] -reference = "36b10bce6a8f1b7a9739be6d9085843787227561" -type = "git" -url = 'ssh://git@github.com/easyScience/CFML_api.git' - -[[package]] -category = "dev" -description = "Cross-platform colored terminal text." -marker = "sys_platform == \"win32\"" -name = "colorama" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.4.4" - -[[package]] -category = "main" -description = "PNPD data analysis" -name = "cryspy" -optional = false -python-versions = "*" -version = "0.4.11" - -[package.dependencies] -numpy = "*" -pycifstar = "*" -scipy = "*" - -[[package]] -category = "main" -description = "Composable style cycles" -name = "cycler" -optional = false -python-versions = "*" -version = "0.10.0" - -[package.dependencies] -six = "*" - -[[package]] -category = "main" -description = "" -name = "easycore" -optional = false -python-versions = "^3.6, >=3.6.1" # "^3.8" generates error when installing PySide2 in easyAppGui -version = "0.0.1" - -[package.dependencies] -asteval = "^0.9.19" -bumps = "^0.7" -lmfit = "^1.0" -numpy = "^1.19" -pint = "^0.16" -uncertainties = "^3.1" - -[package.source] -reference = "601c5294e7d2017dede1af36ea846f766df9d4bf" -type = "git" -url = 'https://github.com/easyScience/easyCore.git' - -[[package]] -category = "main" -description = "Clean single-source support for Python 3 and 2" -name = "future" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.18.2" - -[[package]] -category = "main" -description = "Intel(R) Compiler Runtime" -name = "icc-rt" -optional = false -python-versions = "*" -version = "2020.0.133" - -[package.dependencies] -intel-openmp = ">=2020.0.0,<2021.0.0" - -[[package]] -category = "main" -description = "Read metadata from Python packages" -marker = "python_version < \"3.8\"" -name = "importlib-metadata" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -version = "2.0.0" - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["sphinx", "rst.linker"] -testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] - -[[package]] -category = "main" -description = "Intel(R) OpenMP Runtime Library" -marker = "sys_platform == \"linux\"" -name = "intel-openmp" -optional = false -python-versions = "*" -version = "2020.0.133" - -[[package]] -category = "main" -description = "A fast implementation of the Cassowary constraint solver" -name = "kiwisolver" -optional = false -python-versions = ">=3.6" -version = "1.2.0" - -[[package]] -category = "main" -description = "Least-Squares Minimization with Bounds and Constraints" -name = "lmfit" -optional = false -python-versions = ">=3.5" -version = "1.0.1" - -[package.dependencies] -asteval = ">=0.9.16" -numpy = ">=1.16" -scipy = ">=1.2" -uncertainties = ">=3.0.1" - -[[package]] -category = "main" -description = "Python plotting package" -name = "matplotlib" -optional = false -python-versions = ">=3.6" -version = "3.3.2" - -[package.dependencies] -certifi = ">=2020.06.20" -cycler = ">=0.10" -kiwisolver = ">=1.0.1" -numpy = ">=1.15" -pillow = ">=6.2.0" -pyparsing = ">=2.0.3,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" -python-dateutil = ">=2.1" - -[[package]] -category = "main" -description = "Math library for Intel and compatible processors" -name = "mkl" -optional = false -python-versions = "*" -version = "2019.0" - -[package.dependencies] -intel-openmp = "*" - -[[package]] -category = "main" -description = "Monty is the missing complement to Python." -name = "monty" -optional = false -python-versions = ">=3.5" -version = "4.0.2" - -[package.extras] -yaml = ["ruamel.yaml"] - -[[package]] -category = "dev" -description = "More routines for operating on iterables, beyond itertools" -name = "more-itertools" -optional = false -python-versions = ">=3.5" -version = "8.5.0" - -[[package]] -category = "main" -description = "NumPy is the fundamental package for array computing with Python." -name = "numpy" -optional = false -python-versions = ">=3.6" -version = "1.19.2" - -[[package]] -category = "main" -description = "Core utilities for Python packages" -name = "packaging" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "20.4" - -[package.dependencies] -pyparsing = ">=2.0.2" -six = "*" - -[[package]] -category = "main" -description = "Python Imaging Library (Fork)" -name = "pillow" -optional = false -python-versions = ">=3.6" -version = "8.0.0" - -[[package]] -category = "main" -description = "Physical quantities module" -name = "pint" -optional = false -python-versions = ">=3.6" -version = "0.16.1" - -[package.dependencies] -packaging = "*" - -[package.dependencies.importlib-metadata] -python = "<3.8" -version = "*" - -[package.extras] -numpy = ["numpy (>=1.14)"] -test = ["pytest", "pytest-mpl", "pytest-cov"] -uncertainties = ["uncertainties (>=3.0)"] - -[[package]] -category = "dev" -description = "plugin and hook calling mechanisms for python" -name = "pluggy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.13.1" - -[package.dependencies] -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.12" - -[package.extras] -dev = ["pre-commit", "tox"] - -[[package]] -category = "dev" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -name = "py" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.9.0" - -[[package]] -category = "main" -description = "PyCifStar is a class library for data manipulation provided in the CIF/STAR File." -name = "pycifstar" -optional = false -python-versions = "*" -version = "0.2.6" - -[[package]] -category = "main" -description = "Python parsing module" -name = "pyparsing" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "2.4.7" - -[[package]] -category = "dev" -description = "pytest: simple powerful testing with Python" -name = "pytest" -optional = false -python-versions = ">=3.5" -version = "5.4.3" - -[package.dependencies] -atomicwrites = ">=1.0" -attrs = ">=17.4.0" -colorama = "*" -more-itertools = ">=4.0.0" -packaging = "*" -pluggy = ">=0.12,<1.0" -py = ">=1.5.0" -wcwidth = "*" - -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.12" - -[package.extras] -checkqa-mypy = ["mypy (v0.761)"] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -category = "main" -description = "Extensions to the standard Python datetime module" -name = "python-dateutil" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -version = "2.8.1" - -[package.dependencies] -six = ">=1.5" - -[[package]] -category = "main" -description = "SciPy: Scientific Library for Python" -name = "scipy" -optional = false -python-versions = ">=3.6" -version = "1.5.2" - -[package.dependencies] -numpy = ">=1.14.5" - -[[package]] -category = "main" -description = "Python 2 and 3 compatibility utilities" -name = "six" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -version = "1.15.0" - -[[package]] -category = "main" -description = "Transparent calculations with uncertainties on the quantities involved (aka error propagation); fast calculation of derivatives" -name = "uncertainties" -optional = false -python-versions = "*" -version = "3.1.4" - -[package.dependencies] -future = "*" - -[package.extras] -all = ["numpy", "sphinx", "nose"] -docs = ["sphinx"] -optional = ["numpy"] -tests = ["nose", "numpy"] - -[[package]] -category = "dev" -description = "Measures the displayed width of unicode strings in a terminal" -name = "wcwidth" -optional = false -python-versions = "*" -version = "0.2.5" - -[[package]] -category = "main" -description = "Backport of pathlib-compatible object wrapper for zip files" -marker = "python_version < \"3.8\"" -name = "zipp" -optional = false -python-versions = ">=3.6" -version = "3.3.1" - -[package.extras] -docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] - -[metadata] -content-hash = "c430e6eba950edaf85cc34045eccca6344b7cf70a98aca74c2b4ae385edac535" -python-versions = "^3.7, <3.8" - -[metadata.files] -asteval = [ - {file = "asteval-0.9.19.tar.gz", hash = "sha256:445f3a59df692c0c0ff2868c0bbf9b293884db4a9f9a13c73555485ba75ed08b"}, -] -atomicwrites = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, -] -attrs = [ - {file = "attrs-20.2.0-py2.py3-none-any.whl", hash = "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc"}, - {file = "attrs-20.2.0.tar.gz", hash = "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594"}, -] -bumps = [ - {file = "bumps-0.7.16.tar.gz", hash = "sha256:3594452487b8404f1efaace9b70aefaeb345fa44dd74349f7829a61161d2f69a"}, -] -certifi = [ - {file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"}, - {file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"}, -] -cfml-api = [] -colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, -] -cryspy = [ - {file = "cryspy-0.4.11-py3-none-any.whl", hash = "sha256:e67d3817cd647827600bcfb8284fe85385eee9e5df2b65fc73f10b7cd8294871"}, - {file = "cryspy-0.4.11.tar.gz", hash = "sha256:3d00b5df0223e9e66109768ef2b036500f74b661aa1ce9d4e6895220238f2abc"}, -] -cycler = [ - {file = "cycler-0.10.0-py2.py3-none-any.whl", hash = "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d"}, - {file = "cycler-0.10.0.tar.gz", hash = "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"}, -] -easycore = [] -future = [ - {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, -] -icc-rt = [ - {file = "icc_rt-2020.0.133-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:17a173e65cee0c516358172b9cc96fe297dd54f4d6b23d57f79c62d9e105e3cf"}, -] -importlib-metadata = [ - {file = "importlib_metadata-2.0.0-py2.py3-none-any.whl", hash = "sha256:cefa1a2f919b866c5beb7c9f7b0ebb4061f30a8a9bf16d609b000e2dfaceb9c3"}, - {file = "importlib_metadata-2.0.0.tar.gz", hash = "sha256:77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da"}, -] -intel-openmp = [ - {file = "intel_openmp-2020.0.133-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:cb9a12b0a1cb3f9c44a75959f687e548dc642a9470be3c63f73bccf291b8dcc8"}, -] -kiwisolver = [ - {file = "kiwisolver-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:443c2320520eda0a5b930b2725b26f6175ca4453c61f739fef7a5847bd262f74"}, - {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:efcf3397ae1e3c3a4a0a0636542bcad5adad3b1dd3e8e629d0b6e201347176c8"}, - {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fccefc0d36a38c57b7bd233a9b485e2f1eb71903ca7ad7adacad6c28a56d62d2"}, - {file = "kiwisolver-1.2.0-cp36-none-win32.whl", hash = "sha256:60a78858580761fe611d22127868f3dc9f98871e6fdf0a15cc4203ed9ba6179b"}, - {file = "kiwisolver-1.2.0-cp36-none-win_amd64.whl", hash = "sha256:556da0a5f60f6486ec4969abbc1dd83cf9b5c2deadc8288508e55c0f5f87d29c"}, - {file = "kiwisolver-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cc095a4661bdd8a5742aaf7c10ea9fac142d76ff1770a0f84394038126d8fc7"}, - {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c955791d80e464da3b471ab41eb65cf5a40c15ce9b001fdc5bbc241170de58ec"}, - {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:603162139684ee56bcd57acc74035fceed7dd8d732f38c0959c8bd157f913fec"}, - {file = "kiwisolver-1.2.0-cp37-none-win32.whl", hash = "sha256:03662cbd3e6729f341a97dd2690b271e51a67a68322affab12a5b011344b973c"}, - {file = "kiwisolver-1.2.0-cp37-none-win_amd64.whl", hash = "sha256:4eadb361baf3069f278b055e3bb53fa189cea2fd02cb2c353b7a99ebb4477ef1"}, - {file = "kiwisolver-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c31bc3c8e903d60a1ea31a754c72559398d91b5929fcb329b1c3a3d3f6e72113"}, - {file = "kiwisolver-1.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d52b989dc23cdaa92582ceb4af8d5bcc94d74b2c3e64cd6785558ec6a879793e"}, - {file = "kiwisolver-1.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:e586b28354d7b6584d8973656a7954b1c69c93f708c0c07b77884f91640b7657"}, - {file = "kiwisolver-1.2.0-cp38-none-win32.whl", hash = "sha256:d069ef4b20b1e6b19f790d00097a5d5d2c50871b66d10075dab78938dc2ee2cf"}, - {file = "kiwisolver-1.2.0-cp38-none-win_amd64.whl", hash = "sha256:18d749f3e56c0480dccd1714230da0f328e6e4accf188dd4e6884bdd06bf02dd"}, - {file = "kiwisolver-1.2.0.tar.gz", hash = "sha256:247800260cd38160c362d211dcaf4ed0f7816afb5efe56544748b21d6ad6d17f"}, -] -lmfit = [ - {file = "lmfit-1.0.1.tar.gz", hash = "sha256:d249eb756899360f4d2a544c9458f47fc8f765ac22c09e099530585fd64e286e"}, -] -matplotlib = [ - {file = "matplotlib-3.3.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:27f9de4784ae6fb97679556c5542cf36c0751dccb4d6407f7c62517fa2078868"}, - {file = "matplotlib-3.3.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:06866c138d81a593b535d037b2727bec9b0818cadfe6a81f6ec5715b8dd38a89"}, - {file = "matplotlib-3.3.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5ccecb5f78b51b885f0028b646786889f49c54883e554fca41a2a05998063f23"}, - {file = "matplotlib-3.3.2-cp36-cp36m-win32.whl", hash = "sha256:69cf76d673682140f46c6cb5e073332c1f1b2853c748dc1cb04f7d00023567f7"}, - {file = "matplotlib-3.3.2-cp36-cp36m-win_amd64.whl", hash = "sha256:371518c769d84af8ec9b7dcb871ac44f7a67ef126dd3a15c88c25458e6b6d205"}, - {file = "matplotlib-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:793e061054662aa27acaff9201cdd510a698541c6e8659eeceb31d66c16facc6"}, - {file = "matplotlib-3.3.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:16b241c3d17be786966495229714de37de04472da472277869b8d5b456a8df00"}, - {file = "matplotlib-3.3.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:3fb0409754b26f48045bacd6818e44e38ca9338089f8ba689e2f9344ff2847c7"}, - {file = "matplotlib-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:548cfe81476dbac44db96e9c0b074b6fb333b4d1f12b1ae68dbed47e45166384"}, - {file = "matplotlib-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:f0268613073df055bcc6a490de733012f2cf4fe191c1adb74e41cec8add1a165"}, - {file = "matplotlib-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:57be9e21073fc367237b03ecac0d9e4b8ddbe38e86ec4a316857d8d93ac9286c"}, - {file = "matplotlib-3.3.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:be2f0ec62e0939a9dcfd3638c140c5a74fc929ee3fd1f31408ab8633db6e1523"}, - {file = "matplotlib-3.3.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:c5d0c2ae3e3ed4e9f46b7c03b40d443601012ffe8eb8dfbb2bd6b2d00509f797"}, - {file = "matplotlib-3.3.2-cp38-cp38-win32.whl", hash = "sha256:a522de31e07ed7d6f954cda3fbd5ca4b8edbfc592a821a7b00291be6f843292e"}, - {file = "matplotlib-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:8bc1d3284dee001f41ec98f59675f4d723683e1cc082830b440b5f081d8e0ade"}, - {file = "matplotlib-3.3.2-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:799c421bc245a0749c1515b6dea6dc02db0a8c1f42446a0f03b3b82a60a900dc"}, - {file = "matplotlib-3.3.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:2f5eefc17dc2a71318d5a3496313be5c351c0731e8c4c6182c9ac3782cfc4076"}, - {file = "matplotlib-3.3.2.tar.gz", hash = "sha256:3d2edbf59367f03cd9daf42939ca06383a7d7803e3993eb5ff1bee8e8a3fbb6b"}, -] -mkl = [ - {file = "mkl-2019.0-py2.py3-none-macosx_10_12_intel.macosx_10_12_x86_64.whl", hash = "sha256:23c8e8ba2cac703d8bc357d2bf10519e91dc4371e7dd1decf461f70db20b9783"}, - {file = "mkl-2019.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:065e3c415029da2b2cdf2097cecb05f67e834354b358448aca683da7f4e3d344"}, - {file = "mkl-2019.0-py2.py3-none-win_amd64.whl", hash = "sha256:288098fb4762243a83752f8343a89558ea5f9c33eef79221614c6f9534a56445"}, -] -monty = [ - {file = "monty-4.0.2-py3-none-any.whl", hash = "sha256:e529d9fd270880fbb64fe3baaaee5bdeaad32d6f246255a51044ca7c27f14886"}, - {file = "monty-4.0.2.tar.gz", hash = "sha256:82d2a68af3418c10e6af5f2350494a41c1036cc9b5cbce49860a755803695365"}, -] -more-itertools = [ - {file = "more-itertools-8.5.0.tar.gz", hash = "sha256:6f83822ae94818eae2612063a5101a7311e68ae8002005b5e05f03fd74a86a20"}, - {file = "more_itertools-8.5.0-py3-none-any.whl", hash = "sha256:9b30f12df9393f0d28af9210ff8efe48d10c94f73e5daf886f10c4b0b0b4f03c"}, -] -numpy = [ - {file = "numpy-1.19.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b594f76771bc7fc8a044c5ba303427ee67c17a09b36e1fa32bde82f5c419d17a"}, - {file = "numpy-1.19.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:e6ddbdc5113628f15de7e4911c02aed74a4ccff531842c583e5032f6e5a179bd"}, - {file = "numpy-1.19.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:3733640466733441295b0d6d3dcbf8e1ffa7e897d4d82903169529fd3386919a"}, - {file = "numpy-1.19.2-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:4339741994c775396e1a274dba3609c69ab0f16056c1077f18979bec2a2c2e6e"}, - {file = "numpy-1.19.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7c6646314291d8f5ea900a7ea9c4261f834b5b62159ba2abe3836f4fa6705526"}, - {file = "numpy-1.19.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:7118f0a9f2f617f921ec7d278d981244ba83c85eea197be7c5a4f84af80a9c3c"}, - {file = "numpy-1.19.2-cp36-cp36m-win32.whl", hash = "sha256:9a3001248b9231ed73894c773142658bab914645261275f675d86c290c37f66d"}, - {file = "numpy-1.19.2-cp36-cp36m-win_amd64.whl", hash = "sha256:967c92435f0b3ba37a4257c48b8715b76741410467e2bdb1097e8391fccfae15"}, - {file = "numpy-1.19.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d526fa58ae4aead839161535d59ea9565863bb0b0bdb3cc63214613fb16aced4"}, - {file = "numpy-1.19.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:eb25c381d168daf351147713f49c626030dcff7a393d5caa62515d415a6071d8"}, - {file = "numpy-1.19.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:62139af94728d22350a571b7c82795b9d59be77fc162414ada6c8b6a10ef5d02"}, - {file = "numpy-1.19.2-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:0c66da1d202c52051625e55a249da35b31f65a81cb56e4c69af0dfb8fb0125bf"}, - {file = "numpy-1.19.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:2117536e968abb7357d34d754e3733b0d7113d4c9f1d921f21a3d96dec5ff716"}, - {file = "numpy-1.19.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:54045b198aebf41bf6bf4088012777c1d11703bf74461d70cd350c0af2182e45"}, - {file = "numpy-1.19.2-cp37-cp37m-win32.whl", hash = "sha256:aba1d5daf1144b956bc87ffb87966791f5e9f3e1f6fab3d7f581db1f5b598f7a"}, - {file = "numpy-1.19.2-cp37-cp37m-win_amd64.whl", hash = "sha256:addaa551b298052c16885fc70408d3848d4e2e7352de4e7a1e13e691abc734c1"}, - {file = "numpy-1.19.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:58d66a6b3b55178a1f8a5fe98df26ace76260a70de694d99577ddeab7eaa9a9d"}, - {file = "numpy-1.19.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:59f3d687faea7a4f7f93bd9665e5b102f32f3fa28514f15b126f099b7997203d"}, - {file = "numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cebd4f4e64cfe87f2039e4725781f6326a61f095bc77b3716502bed812b385a9"}, - {file = "numpy-1.19.2-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:c35a01777f81e7333bcf276b605f39c872e28295441c265cd0c860f4b40148c1"}, - {file = "numpy-1.19.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d7ac33585e1f09e7345aa902c281bd777fdb792432d27fca857f39b70e5dd31c"}, - {file = "numpy-1.19.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:04c7d4ebc5ff93d9822075ddb1751ff392a4375e5885299445fcebf877f179d5"}, - {file = "numpy-1.19.2-cp38-cp38-win32.whl", hash = "sha256:51ee93e1fac3fe08ef54ff1c7f329db64d8a9c5557e6c8e908be9497ac76374b"}, - {file = "numpy-1.19.2-cp38-cp38-win_amd64.whl", hash = "sha256:1669ec8e42f169ff715a904c9b2105b6640f3f2a4c4c2cb4920ae8b2785dac65"}, - {file = "numpy-1.19.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:0bfd85053d1e9f60234f28f63d4a5147ada7f432943c113a11afcf3e65d9d4c8"}, - {file = "numpy-1.19.2.zip", hash = "sha256:0d310730e1e793527065ad7dde736197b705d0e4c9999775f212b03c44a8484c"}, -] -packaging = [ - {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, - {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, -] -pillow = [ - {file = "Pillow-8.0.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:b04569ff215b85ce3e2954979d2d5e0bf84007e43ddcf84b632fc6bc18e07909"}, - {file = "Pillow-8.0.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:594f2f25b7bcfd9542c41b9df156fb5104f19f5fcefa51b1447f1d9f64c9cc14"}, - {file = "Pillow-8.0.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:87a855b64a9b692604f6339baa4f9913d06838df1b4ccf0cb899dd18f56ec03c"}, - {file = "Pillow-8.0.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b731d45764349313bd956c07bdc1d43803bb0ad2b11354328a074e416c7d84bc"}, - {file = "Pillow-8.0.0-cp36-cp36m-win32.whl", hash = "sha256:30615e9115f976e00a938a28c7152562e8cf8e221ddacf4446dd8b20c0d97333"}, - {file = "Pillow-8.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:e6ac40f1a62a227eb00226eb64c9c82bc878a3ed700b5414d34c9be57be87e87"}, - {file = "Pillow-8.0.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:2696f1a6402c1a42ed12c5cd8adfb4b381c32d41e35a34b8ee544309ef854172"}, - {file = "Pillow-8.0.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:5b5dde5dcedc4e6f5a71d7654a3c6e189ced82e97d7896b1ca5a5c5e4e0e916f"}, - {file = "Pillow-8.0.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:04d984e45a0b9815f4b407e8aadb50f25fbb82a605d89db927376e94c3adf371"}, - {file = "Pillow-8.0.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:6bcea85f93fb2c94a1bcd35704c348a929a7fb24a0ec0cc2b9fcbb0046b87176"}, - {file = "Pillow-8.0.0-cp37-cp37m-win32.whl", hash = "sha256:233513465a2f25fce537b965621866da3d1f02e15708f371dd4e19f0fb7b7711"}, - {file = "Pillow-8.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d904570afcdbec40eb6bdbe24cba8d95c0215a2c0cbbc9c16301045bc8504c1f"}, - {file = "Pillow-8.0.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8c006d52365c0a6bb41a07f9c8f9f458ae8170e0af3b8c49bf7089347066b97b"}, - {file = "Pillow-8.0.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9b5b41737853bc49943864d5980dfb401a09e78ddb471e71291810ccdeadd712"}, - {file = "Pillow-8.0.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:3a77e7b9f8991b81d7be8e0b2deab05013cf3ebb24ac2b863d2979acb68c73dd"}, - {file = "Pillow-8.0.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:c41442c3814afeba1f6f16fd70cdf312a2c73c6dee8dc3ac8926bb115713ad1d"}, - {file = "Pillow-8.0.0-cp38-cp38-win32.whl", hash = "sha256:718d7f0eb3351052023b33fe0f83fc9e3beeb7cbacbd0ff2b52524e2153e4598"}, - {file = "Pillow-8.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:7c4a7ee37027ca716f42726b6f9fc491c13c843c7af559e0767dfab1ae9682d4"}, - {file = "Pillow-8.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:54667c8ab16658cc0b7d824d8706b440d4db8382a3561042758bdfd48ca99298"}, - {file = "Pillow-8.0.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:1f59596af2b3d64a9e43f9d6509b7a51db744d0eecc23297617c604e6823c6ae"}, - {file = "Pillow-8.0.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5270369c799b4405ed47d45c88c09fbd7942fc9fb9891c0dabf0b8c751b625d"}, - {file = "Pillow-8.0.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:8e29701229705615d3dcfc439c7c46f40f913e57c7fe322b1efc30d3f37d1287"}, - {file = "Pillow-8.0.0-cp39-cp39-win32.whl", hash = "sha256:c12e33cb17e2e12049a49b77696ee479791a4e44e541fdc393ae043e1246389f"}, - {file = "Pillow-8.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:06e730451b70471c08b8a0ee7f18e7e1df310dba9c780bbfb730a13102b143db"}, - {file = "Pillow-8.0.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c4d743c5c91424965707c9c8edc58b7cb43c127dcaf191fbcd304e2082eef56a"}, - {file = "Pillow-8.0.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:2ca55a4443b463eec90528ac27be14d226b1c2b972178bc7d4d282ce89e47b6a"}, - {file = "Pillow-8.0.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:e674be2f349ea810e221b0113bd4491f53584ac848d5bcc3b62443cfa11d9c40"}, - {file = "Pillow-8.0.0-pp37-pypy37_pp73-win32.whl", hash = "sha256:d6766fd28f4f47cf93280a57e3dc6a9d11bdada1a6e9f019b8c62b12bbc86f6a"}, - {file = "Pillow-8.0.0.tar.gz", hash = "sha256:59304c67d12394815331eda95ec892bf54ad95e0aa7bc1ccd8e0a4a5a25d4bf3"}, -] -pint = [ - {file = "Pint-0.16.1-py2.py3-none-any.whl", hash = "sha256:63ccb7153754923fd95477be69dcf8d7d0764ec2ebb3f6945f920c31fdf13392"}, - {file = "Pint-0.16.1.tar.gz", hash = "sha256:d43a2e9ae003164978b60fdf8cd920d8581e1a5991df8dded29b00f4850ec83a"}, -] -pluggy = [ - {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, - {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, -] -py = [ - {file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"}, - {file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"}, -] -pycifstar = [ - {file = "pycifstar-0.2.6-py3-none-any.whl", hash = "sha256:4c256d346910e4641a8749cd4ae07143ed9fb3603d70466835e792f0a9e532b7"}, - {file = "pycifstar-0.2.6.tar.gz", hash = "sha256:9bbeb9afb938d41f24b7430cf66812cb139c48855fdeefdae50c24eff23c28cc"}, -] -pyparsing = [ - {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, - {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, -] -pytest = [ - {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, - {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, -] -python-dateutil = [ - {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, - {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, -] -scipy = [ - {file = "scipy-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cca9fce15109a36a0a9f9cfc64f870f1c140cb235ddf27fe0328e6afb44dfed0"}, - {file = "scipy-1.5.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:1c7564a4810c1cd77fcdee7fa726d7d39d4e2695ad252d7c86c3ea9d85b7fb8f"}, - {file = "scipy-1.5.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:07e52b316b40a4f001667d1ad4eb5f2318738de34597bd91537851365b6c61f1"}, - {file = "scipy-1.5.2-cp36-cp36m-win32.whl", hash = "sha256:d56b10d8ed72ec1be76bf10508446df60954f08a41c2d40778bc29a3a9ad9bce"}, - {file = "scipy-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:8e28e74b97fc8d6aa0454989db3b5d36fc27e69cef39a7ee5eaf8174ca1123cb"}, - {file = "scipy-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6e86c873fe1335d88b7a4bfa09d021f27a9e753758fd75f3f92d714aa4093768"}, - {file = "scipy-1.5.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:a0afbb967fd2c98efad5f4c24439a640d39463282040a88e8e928db647d8ac3d"}, - {file = "scipy-1.5.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:eecf40fa87eeda53e8e11d265ff2254729d04000cd40bae648e76ff268885d66"}, - {file = "scipy-1.5.2-cp37-cp37m-win32.whl", hash = "sha256:315aa2165aca31375f4e26c230188db192ed901761390be908c9b21d8b07df62"}, - {file = "scipy-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:ec5fe57e46828d034775b00cd625c4a7b5c7d2e354c3b258d820c6c72212a6ec"}, - {file = "scipy-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fc98f3eac993b9bfdd392e675dfe19850cc8c7246a8fd2b42443e506344be7d9"}, - {file = "scipy-1.5.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:a785409c0fa51764766840185a34f96a0a93527a0ff0230484d33a8ed085c8f8"}, - {file = "scipy-1.5.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0a0e9a4e58a4734c2eba917f834b25b7e3b6dc333901ce7784fd31aefbd37b2f"}, - {file = "scipy-1.5.2-cp38-cp38-win32.whl", hash = "sha256:dac09281a0eacd59974e24525a3bc90fa39b4e95177e638a31b14db60d3fa806"}, - {file = "scipy-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:92eb04041d371fea828858e4fff182453c25ae3eaa8782d9b6c32b25857d23bc"}, - {file = "scipy-1.5.2.tar.gz", hash = "sha256:066c513d90eb3fd7567a9e150828d39111ebd88d3e924cdfc9f8ce19ab6f90c9"}, -] -six = [ - {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, - {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, -] -uncertainties = [ - {file = "uncertainties-3.1.4-py2.py3-none-any.whl", hash = "sha256:342703c36eabf99251b35fbd30d748d6220451fc88f586924bdec91cfe6bc6c0"}, - {file = "uncertainties-3.1.4.tar.gz", hash = "sha256:63548a94899f2a51eeb89b640f6ac311f481a8016b37dce157186e44619bc968"}, -] -wcwidth = [ - {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, - {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, -] -zipp = [ - {file = "zipp-3.3.1-py3-none-any.whl", hash = "sha256:16522f69653f0d67be90e8baa4a46d66389145b734345d68a257da53df670903"}, - {file = "zipp-3.3.1.tar.gz", hash = "sha256:c1532a8030c32fd52ff6a288d855fe7adef5823ba1d26a29a68fd6314aa72baa"}, -] diff --git a/pyproject.toml b/pyproject.toml index 4163dcf8..bd57b07d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.8" cryspy = "^0.4.11" -matplotlib = "3.2.2" +matplotlib = "^3.2, <3.3" CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'gsas' } GSASII = { git = 'ssh://git@github.com/easyScience/GSASII.git', rev = 'main' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } From 307e47839d3406c984078ac9b3fd01b10fc1f7ca Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 28 Oct 2020 02:04:09 +0100 Subject: [PATCH 052/312] Refactor gsas --- easyDiffractionLib/Calculators/GSASII.py | 33 ++++++++++++------------ 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 5f262504..ad683326 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -59,30 +59,31 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: gpx.add_phase(cif_file, phasename=phase_name, fmthint='CIF') # step 2, setup: add a simulated histogram and link it to the previous phase(s) - x0 = x_array[0] - xF = x_array[-1] - nX = np.prod(x_array.shape) - x_step = (xF-x0)/(nX - 1) - hist1 = gpx.add_simulated_powder_histogram(f"{phase_name} simulation", - self.prm_file_path, - x0, xF, x_step, - phases=gpx.phases()) + x_min = x_array[0] + x_max = x_array[-1] + n_points = np.prod(x_array.shape) + x_step = (x_max-x_min)/(n_points - 1) + gpx.add_simulated_powder_histogram(f"{phase_name} simulation", + self.prm_file_path, + x_min, x_max, Tstep=x_step, + phases=gpx.phases()) # Set instrumental parameters - multiplier = 1000 - wl = self.conditions["wavelength"] - u = self.conditions["resolution"]["u"] * multiplier - v = self.conditions["resolution"]["v"] * multiplier - w = self.conditions["resolution"]["w"] * multiplier - x = self.conditions["resolution"]["x"] * multiplier - y = self.conditions["resolution"]["y"] * multiplier - gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['Lam'] = [wl,wl,0] + resolution_multiplier = 1000 + u = self.conditions["resolution"]["u"] * resolution_multiplier + v = self.conditions["resolution"]["v"] * resolution_multiplier + w = self.conditions["resolution"]["w"] * resolution_multiplier + x = self.conditions["resolution"]["x"] * resolution_multiplier + y = self.conditions["resolution"]["y"] * resolution_multiplier gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['U'] = [u,u,0] gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['V'] = [v,v,0] gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['W'] = [w,w,0] gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['X'] = [x,x,0] gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['Y'] = [y,y,0] + wl = self.conditions["wavelength"] + gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['Lam'] = [wl,wl,0] + # Step 3: Set the scale factor to adjust the y scale #hist1.SampleParameters['Scale'][0] = 1000000. From 75a7aa2a361786e92bf32981d98dfabc5249b3ee Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 28 Oct 2020 02:04:23 +0100 Subject: [PATCH 053/312] Make CrysPy default calc --- easyDiffractionLib/Interfaces/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index 43e2478c..b5e8ff5e 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -5,16 +5,16 @@ import os, sys try: - from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 + from easyDiffractionLib.Interfaces.cryspy import Cryspy # noqa: F401 except ImportError: # TODO make this a proper message (use logging?) - print('CFML is not installed') + print('CrysPy is not installed') try: - from easyDiffractionLib.Interfaces.cryspy import Cryspy # noqa: F401 + from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 except ImportError: # TODO make this a proper message (use logging?) - print('CrysPy is not installed') + print('CFML is not installed') try: import GSASII From 0ba9a0e3a343768f869cca0534b8d87ee1c13381 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 28 Oct 2020 10:09:07 +0100 Subject: [PATCH 054/312] Read/write temp files from default temp dir --- easyDiffractionLib/Calculators/CFML.py | 11 ++++++++++- easyDiffractionLib/Calculators/GSASII.py | 11 +++++------ easyDiffractionLib/sample.py | 4 +++- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index d4b7a243..a5648be2 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -1,6 +1,8 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" +import os, pathlib + from easyCore import np from easyCore import borg from CFML_api import PowderPatternSimulation as CFML_api @@ -42,6 +44,13 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: self.conditions.theta_max = xF self.conditions.theta_step = (xF-x0)/(nX - 1) - self.simulator.compute(self.filename, simulation_conditions=self.conditions) + try: + self.simulator.compute(self.filename, simulation_conditions=self.conditions) + except: + raise ArithmeticError + finally: + # Clean up + for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): + p.unlink() return self.simulator.y diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index ad683326..e4ae7a3d 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -11,7 +11,7 @@ class GSASII: def __init__(self, filename: str = None): - self.prm_file_name = 'temp.prm' + self.prm_file_name = 'easydiffraction_temp.prm' self.prm_file_path = "" self.prm_dir_path = "" self.conditions = { @@ -43,7 +43,7 @@ def create_temp_prm(self): INS 1PRCF21 0.354031E+03 -0.760404E+03 0.651592E+03 0.000000E+00 INS 1PRCF22 0.000000E+00 0.000000E+00 """ - self.prm_dir_path = os.path.dirname(os.path.abspath(self.filename)) + self.prm_dir_path = os.path.dirname(self.filename) self.prm_file_path = os.path.join(self.prm_dir_path, self.prm_file_name) with open(self.prm_file_path, 'w') as f: f.write(prm_base) @@ -51,7 +51,7 @@ def create_temp_prm(self): def calculate(self, x_array: np.ndarray) -> np.ndarray: self.create_temp_prm() - gpx = G2sc.G2Project(newgpx=os.path.join(self.prm_dir_path, 'temp.gpx')) # create a project + gpx = G2sc.G2Project(newgpx=os.path.join(self.prm_dir_path, 'easydiffraction_temp.gpx')) # create a project # step 1, setup: add a phase to the project cif_file = self.filename @@ -98,8 +98,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: raise ArithmeticError finally: # Clean up - pathlib.Path(os.path.join(self.prm_dir_path, 'temp.lst')).unlink() - pathlib.Path(os.path.join(self.prm_dir_path, 'temp.gpx')).unlink() - pathlib.Path(os.path.join(self.prm_dir_path, 'temp.bak0.gpx')).unlink() + for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): + p.unlink() return ycalc diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 0b73e96b..b4144f72 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -1,6 +1,7 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' +import os, tempfile from typing import Union from easyCore.Objects.Base import BaseObj @@ -22,7 +23,8 @@ def __init__(self, phases: Union[Crystal, Crystals] = None, parameters=None, int super(Sample, self).__init__(name, _phases=phases, _parameters=parameters) self.background = Line() self.interface = interface - self.filename = './temp.cif' + self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') + print("Temp CIF:", self.filename) self.output_index = None self._updateInterface() From a4c62dd7801f15bf15128ce6e1f33f92b202cbbd Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 28 Oct 2020 10:17:15 +0100 Subject: [PATCH 055/312] Use poetry update in CI --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 99a40b39..44aa080c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -54,7 +54,7 @@ jobs: # run: poetry config virtualenvs.create false - name: Create venv and install dependences - run: poetry install + run: poetry update - name: Print some debug info run: | From bbd66a628cf60e6f45b8251a784e4a9c79993972 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 28 Oct 2020 10:47:10 +0100 Subject: [PATCH 056/312] Add libs to dependencies --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index bd57b07d..ec0cb7e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,9 @@ packages = [ { include = "easyDiffractionLib" } ] python = "^3.7, <3.8" cryspy = "^0.4.11" matplotlib = "^3.2, <3.3" +libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } +libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } +libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'gsas' } GSASII = { git = 'ssh://git@github.com/easyScience/GSASII.git', rev = 'main' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } From f94ed8186a9e9fd85dd83258db82827cc8ea60a6 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 28 Oct 2020 11:26:30 +0100 Subject: [PATCH 057/312] Fix import GSAS --- easyDiffractionLib/Interfaces/__init__.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index b5e8ff5e..9fc53c36 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -10,6 +10,8 @@ # TODO make this a proper message (use logging?) print('CrysPy is not installed') +from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 + try: from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 except ImportError: @@ -20,14 +22,14 @@ import GSASII sys.path.insert(0, GSASII.__path__[0]) if 'darwin' in sys.platform: - import somacos - sys.path.insert(0, os.path.join(somacos.__path__[0], "GSASII")) + import libsDarwin + sys.path.insert(0, os.path.join(libsDarwin.__path__[0], "GSASII")) elif 'linux' in sys.platform: - import solinux - sys.path.insert(0, os.path.join(solinux.__path__[0], "GSASII")) + import libsLinux + sys.path.insert(0, os.path.join(libsLinux.__path__[0], "GSASII")) elif 'win32' in sys.platform: - import sowindows - sys.path.insert(0, os.path.join(sowindows.__path__[0], "GSASII")) + import libsWin32 + sys.path.insert(0, os.path.join(libsWin32.__path__[0], "GSASII")) from easyDiffractionLib.Interfaces.GSASII import GSASII # noqa: F401 except ImportError: # TODO make this a proper message (use logging?) From 24333df702c0f9fc0ebfe4dd65cf0710363e1ee4 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 28 Oct 2020 13:40:03 +0100 Subject: [PATCH 058/312] Update init --- easyDiffractionLib/Interfaces/__init__.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index 9fc53c36..3f9fcabf 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -10,11 +10,9 @@ # TODO make this a proper message (use logging?) print('CrysPy is not installed') -from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 - try: from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 -except ImportError: +except (ImportError, Exception): # TODO make this a proper message (use logging?) print('CFML is not installed') @@ -31,7 +29,7 @@ import libsWin32 sys.path.insert(0, os.path.join(libsWin32.__path__[0], "GSASII")) from easyDiffractionLib.Interfaces.GSASII import GSASII # noqa: F401 -except ImportError: +except (ImportError, Exception): # TODO make this a proper message (use logging?) print('GSAS-II is not installed') From c7a3160cff69c72d8673e9b8634d0f2633b16a57 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 10:03:30 +0100 Subject: [PATCH 059/312] Print location of Python dylib --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 44aa080c..42895696 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -69,6 +69,8 @@ jobs: ls -l /Users/runner/hostedtoolcache/Python/3.7.9 echo "" ls -l /Users/runner/hostedtoolcache/Python/3.7.9/x64 + echo "" + otool -L /Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python - name: Run main.py run: poetry run easyDiffractionLib From c3f389ef28458a4a5d72d4ce2c3a5db28507a616 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 10:05:52 +0100 Subject: [PATCH 060/312] Try default github python --- .github/workflows/test.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 42895696..b43bb600 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,13 +27,13 @@ jobs: uses: actions/checkout@v2 - name: Set up Python environment - #uses: actions/setup-python@v2 - #with: - # python-version: 3.7 - run: | - mkdir -p .ci/download - curl -o .ci/download/python-3.7.9-macosx10.9.pkg https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg - sudo installer -store -pkg .ci/download/python-3.7.9-macosx10.9.pkg -target / + uses: actions/setup-python@v2 + with: + python-version: 3.7 + #run: | + # mkdir -p .ci/download + # curl -o .ci/download/python-3.7.9-macosx10.9.pkg https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg + # sudo installer -store -pkg .ci/download/python-3.7.9-macosx10.9.pkg -target / - name: Set up access to private repos uses: webfactory/ssh-agent@v0.4.1 From 7d2f5a7de74ec8fa4325c1829b853cbbb48b0a7d Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 10:07:14 +0100 Subject: [PATCH 061/312] Update test.yml --- .github/workflows/test.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b43bb600..d8bb4ea6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,6 +35,22 @@ jobs: # curl -o .ci/download/python-3.7.9-macosx10.9.pkg https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg # sudo installer -store -pkg .ci/download/python-3.7.9-macosx10.9.pkg -target / + - name: Print some debug info + run: | + which python + poetry run which python + poetry env info + echo "" + ls -l /Library/Frameworks + echo "" + ls -l /Users/runner/hostedtoolcache/Python + echo "" + ls -l /Users/runner/hostedtoolcache/Python/3.7.9 + echo "" + ls -l /Users/runner/hostedtoolcache/Python/3.7.9/x64 + echo "" + otool -L /Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python + - name: Set up access to private repos uses: webfactory/ssh-agent@v0.4.1 with: @@ -56,21 +72,5 @@ jobs: - name: Create venv and install dependences run: poetry update - - name: Print some debug info - run: | - which python - poetry run which python - poetry env info - echo "" - ls -l /Library/Frameworks - echo "" - ls -l /Users/runner/hostedtoolcache/Python - echo "" - ls -l /Users/runner/hostedtoolcache/Python/3.7.9 - echo "" - ls -l /Users/runner/hostedtoolcache/Python/3.7.9/x64 - echo "" - otool -L /Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python - - name: Run main.py run: poetry run easyDiffractionLib From 2c5cb73f155647f7cf67f5553c0542a1deaa529d Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 10:09:08 +0100 Subject: [PATCH 062/312] Update test.yml --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d8bb4ea6..54cd2565 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,8 +38,8 @@ jobs: - name: Print some debug info run: | which python - poetry run which python - poetry env info +# poetry run which python +# poetry env info echo "" ls -l /Library/Frameworks echo "" From 88b2014d41325c0ac8a1705cd0eeded41d7b929b Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 10:09:54 +0100 Subject: [PATCH 063/312] Update test.yml --- .github/workflows/test.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 54cd2565..1f3e519c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,8 +38,6 @@ jobs: - name: Print some debug info run: | which python -# poetry run which python -# poetry env info echo "" ls -l /Library/Frameworks echo "" From 45281743bb564bdeebb93615f6e5c5658652a220 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 10:27:24 +0100 Subject: [PATCH 064/312] Relink CrysFML from default Python dylib --- .github/workflows/test.yml | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1f3e519c..5dc92e2d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,25 +30,7 @@ jobs: uses: actions/setup-python@v2 with: python-version: 3.7 - #run: | - # mkdir -p .ci/download - # curl -o .ci/download/python-3.7.9-macosx10.9.pkg https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg - # sudo installer -store -pkg .ci/download/python-3.7.9-macosx10.9.pkg -target / - - - name: Print some debug info - run: | - which python - echo "" - ls -l /Library/Frameworks - echo "" - ls -l /Users/runner/hostedtoolcache/Python - echo "" - ls -l /Users/runner/hostedtoolcache/Python/3.7.9 - echo "" - ls -l /Users/runner/hostedtoolcache/Python/3.7.9/x64 - echo "" - otool -L /Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python - + - name: Set up access to private repos uses: webfactory/ssh-agent@v0.4.1 with: @@ -64,11 +46,18 @@ jobs: echo $pythonLocation echo $PYTHONPATH - #- name: Disable automatic creation of virtualenvs - # run: poetry config virtualenvs.create false - - name: Create venv and install dependences run: poetry update + - name: Relink CrysFML from default Python dylib + run: | + which python + echo "PYTHON_BIN=/Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python" >> $GITHUB_ENV + echo "PYTHON_DYLIB=/Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib" >> $GITHUB_ENV + echo "CRYSFML_PYTHON_DYLIB=/Library/Frameworks/Python.framework/Versions/3.7/Python" >> $GITHUB_ENV + echo "CRYSFML_SO=/Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/src/libsdarwin/libsDarwin/CFML/powder_generation.so" >> $GITHUB_ENV + otool -L ${PYTHON_BIN} + install_name_tool -change ${CRYSFML_PYTHON_DYLIB} ${PYTHON_DYLIB} ${CRYSFML_SO} + - name: Run main.py run: poetry run easyDiffractionLib From a655579048223e2db65b06e22f0aa76a5b4df3ba Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 10:37:29 +0100 Subject: [PATCH 065/312] Update test.yml --- .github/workflows/test.yml | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5dc92e2d..75b06826 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,7 +30,25 @@ jobs: uses: actions/setup-python@v2 with: python-version: 3.7 - + + - name: Set up some env variables + shell: bash + run: | + which python + echo "PYTHONPATH=${pythonLocation}" >> $GITHUB_ENV + echo "PYTHON_BIN=/Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python" >> $GITHUB_ENV + echo "PYTHON_DYLIB=/Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib" >> $GITHUB_ENV + echo "CRYSFML_PYTHON_DYLIB=/Library/Frameworks/Python.framework/Versions/3.7/Python" >> $GITHUB_ENV + echo "CRYSFML_SO=/Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/src/libsdarwin/libsDarwin/CFML/powder_generation.so" >> $GITHUB_ENV + echo "pythonLocation: $pythonLocation" + echo "PYTHONPATH: $PYTHONPATH" + echo "PYTHON_BIN: $PYTHON_BIN" + echo "PYTHON_DYLIB: $PYTHON_DYLIB" + echo "CRYSFML_PYTHON_DYLIB: $CRYSFML_PYTHON_DYLIB" + echo "CRYSFML_SO: $CRYSFML_SO" + otool -L /Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python + otool -L $PYTHON_BIN + - name: Set up access to private repos uses: webfactory/ssh-agent@v0.4.1 with: @@ -39,24 +57,12 @@ jobs: - name: Set up python packages manager uses: Gr1N/setup-poetry@v2 - - name: Set up some env variables - shell: bash - run: | - echo "PYTHONPATH=${pythonLocation}" >> $GITHUB_ENV - echo $pythonLocation - echo $PYTHONPATH - name: Create venv and install dependences run: poetry update - name: Relink CrysFML from default Python dylib run: | - which python - echo "PYTHON_BIN=/Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python" >> $GITHUB_ENV - echo "PYTHON_DYLIB=/Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib" >> $GITHUB_ENV - echo "CRYSFML_PYTHON_DYLIB=/Library/Frameworks/Python.framework/Versions/3.7/Python" >> $GITHUB_ENV - echo "CRYSFML_SO=/Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/src/libsdarwin/libsDarwin/CFML/powder_generation.so" >> $GITHUB_ENV - otool -L ${PYTHON_BIN} install_name_tool -change ${CRYSFML_PYTHON_DYLIB} ${PYTHON_DYLIB} ${CRYSFML_SO} - name: Run main.py From 405c5aea866f0ef6f49ddeeee7c28184ee2fde4d Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 10:43:40 +0100 Subject: [PATCH 066/312] Update test.yml --- .github/workflows/test.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 75b06826..dc85a615 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,7 +47,6 @@ jobs: echo "CRYSFML_PYTHON_DYLIB: $CRYSFML_PYTHON_DYLIB" echo "CRYSFML_SO: $CRYSFML_SO" otool -L /Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python - otool -L $PYTHON_BIN - name: Set up access to private repos uses: webfactory/ssh-agent@v0.4.1 @@ -57,13 +56,12 @@ jobs: - name: Set up python packages manager uses: Gr1N/setup-poetry@v2 - - name: Create venv and install dependences run: poetry update - name: Relink CrysFML from default Python dylib run: | - install_name_tool -change ${CRYSFML_PYTHON_DYLIB} ${PYTHON_DYLIB} ${CRYSFML_SO} + install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.7/Python /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/src/libsdarwin/libsDarwin/CFML/powder_generation.so - name: Run main.py run: poetry run easyDiffractionLib From efcff072590ad1844119c77cc7180458284bd7fb Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 10:54:32 +0100 Subject: [PATCH 067/312] Fix path to CFML so --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dc85a615..32c5e060 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,7 +32,6 @@ jobs: python-version: 3.7 - name: Set up some env variables - shell: bash run: | which python echo "PYTHONPATH=${pythonLocation}" >> $GITHUB_ENV @@ -61,7 +60,8 @@ jobs: - name: Relink CrysFML from default Python dylib run: | - install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.7/Python /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/src/libsdarwin/libsDarwin/CFML/powder_generation.so + install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.7/Python /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/src/libsdarwin/libsDarwin/CFML/powder_generation.so + install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.7/Python /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/lib/python3.7/site-packages/libsDarwin/CFML/powder_generation.so - name: Run main.py run: poetry run easyDiffractionLib From f22d33b8beead2b9bd1e504e9af504cb6ef2bbb8 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 11:02:45 +0100 Subject: [PATCH 068/312] Update test.yml --- .github/workflows/test.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 32c5e060..52a25b82 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [macos-latest] + os: [macos-latest, ubuntu-latest, windows-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -32,13 +32,16 @@ jobs: python-version: 3.7 - name: Set up some env variables + shell: bash run: | which python + ls -l $pythonLocation + ls -l $pythonLocation/lib echo "PYTHONPATH=${pythonLocation}" >> $GITHUB_ENV echo "PYTHON_BIN=/Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python" >> $GITHUB_ENV echo "PYTHON_DYLIB=/Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib" >> $GITHUB_ENV echo "CRYSFML_PYTHON_DYLIB=/Library/Frameworks/Python.framework/Versions/3.7/Python" >> $GITHUB_ENV - echo "CRYSFML_SO=/Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/src/libsdarwin/libsDarwin/CFML/powder_generation.so" >> $GITHUB_ENV + echo "CRYSFML_SO=/Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/lib/python3.7/site-packages/libsDarwin/CFML/powder_generation.so" >> $GITHUB_ENV echo "pythonLocation: $pythonLocation" echo "PYTHONPATH: $PYTHONPATH" echo "PYTHON_BIN: $PYTHON_BIN" @@ -60,7 +63,6 @@ jobs: - name: Relink CrysFML from default Python dylib run: | - install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.7/Python /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/src/libsdarwin/libsDarwin/CFML/powder_generation.so install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.7/Python /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/lib/python3.7/site-packages/libsDarwin/CFML/powder_generation.so - name: Run main.py From 410a96f67b57ed755df4bb8a5a16945262c1f32b Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 11:09:52 +0100 Subject: [PATCH 069/312] Try on ubuntu --- .github/workflows/test.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 52a25b82..971e68fb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [macos-latest, ubuntu-latest, windows-latest] + os: [ubuntu-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -48,7 +48,6 @@ jobs: echo "PYTHON_DYLIB: $PYTHON_DYLIB" echo "CRYSFML_PYTHON_DYLIB: $CRYSFML_PYTHON_DYLIB" echo "CRYSFML_SO: $CRYSFML_SO" - otool -L /Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python - name: Set up access to private repos uses: webfactory/ssh-agent@v0.4.1 @@ -61,9 +60,13 @@ jobs: - name: Create venv and install dependences run: poetry update - - name: Relink CrysFML from default Python dylib - run: | - install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.7/Python /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/lib/python3.7/site-packages/libsDarwin/CFML/powder_generation.so - + - name: Relink CrysFML from default Python dylib (macOS) + if: matrix.os == 'ubuntu-latest' + run: install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.7/Python /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/lib/python3.7/site-packages/libsDarwin/CFML/powder_generation.so + + - name: Relink CrysFML from default Python dylib (Linux) + if: matrix.os == 'ubuntu-latest' + run: patchelf --replace-needed libpython3.7m.so.1.0 /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.so.1.0 /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/lib/python3.7/site-packages/libsLinux/CFML/powder_generation.so + - name: Run main.py run: poetry run easyDiffractionLib From 04f790662cefeabe85f86bf2c833d6d360b55fc2 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 11:12:02 +0100 Subject: [PATCH 070/312] Fix path to CFML so --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 971e68fb..82a541da 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -66,7 +66,7 @@ jobs: - name: Relink CrysFML from default Python dylib (Linux) if: matrix.os == 'ubuntu-latest' - run: patchelf --replace-needed libpython3.7m.so.1.0 /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.so.1.0 /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/lib/python3.7/site-packages/libsLinux/CFML/powder_generation.so + run: patchelf --replace-needed libpython3.7m.so.1.0 /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.so.1.0 /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-l-ltHCsT-py3.7/lib/python3.7/site-packages/libsLinux/CFML/powder_generation.so - name: Run main.py run: poetry run easyDiffractionLib From 6e1a4b08d0b4c869bba0fb427ee03995f7b25960 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 11:13:32 +0100 Subject: [PATCH 071/312] Fix matrix.os name --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 82a541da..f64a8f5f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -61,7 +61,7 @@ jobs: run: poetry update - name: Relink CrysFML from default Python dylib (macOS) - if: matrix.os == 'ubuntu-latest' + if: matrix.os == 'macos-latest' run: install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.7/Python /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/lib/python3.7/site-packages/libsDarwin/CFML/powder_generation.so - name: Relink CrysFML from default Python dylib (Linux) From 90a7366c67f752bc4967293690d8071eb1e00409 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 11:21:08 +0100 Subject: [PATCH 072/312] Fix path for patchelf --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f64a8f5f..846d92ae 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -66,7 +66,7 @@ jobs: - name: Relink CrysFML from default Python dylib (Linux) if: matrix.os == 'ubuntu-latest' - run: patchelf --replace-needed libpython3.7m.so.1.0 /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.so.1.0 /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-l-ltHCsT-py3.7/lib/python3.7/site-packages/libsLinux/CFML/powder_generation.so + run: patchelf --replace-needed libpython3.7m.so.1.0 /opt/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.so.1.0 /home/runner/.cache/pypoetry/virtualenvs/easydiffractionlib-l-ltHCsT-py3.7/lib/python3.7/site-packages/libsLinux/CFML/powder_generation.so - name: Run main.py run: poetry run easyDiffractionLib From ffe3dc4d976e23aecffcf0b37612b04f939f2636 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 14:28:40 +0100 Subject: [PATCH 073/312] Try script for relinking crysfml --- .github/workflows/test.yml | 25 +-- CONTRIBUTING.md | 1 + pyproject.toml | 7 + tools/Scripts/Config.py | 15 ++ tools/Scripts/Functions.py | 301 +++++++++++++++++++++++++++++++++ tools/Scripts/RelinkCrysfml.py | 59 +++++++ 6 files changed, 387 insertions(+), 21 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 tools/Scripts/Config.py create mode 100755 tools/Scripts/Functions.py create mode 100644 tools/Scripts/RelinkCrysfml.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 846d92ae..dad09b2a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [ubuntu-latest] + os: [macos-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -31,23 +31,11 @@ jobs: with: python-version: 3.7 - - name: Set up some env variables + - name: Some logging shell: bash run: | which python - ls -l $pythonLocation - ls -l $pythonLocation/lib - echo "PYTHONPATH=${pythonLocation}" >> $GITHUB_ENV - echo "PYTHON_BIN=/Users/runner/hostedtoolcache/Python/3.7.9/x64/bin/python" >> $GITHUB_ENV - echo "PYTHON_DYLIB=/Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib" >> $GITHUB_ENV - echo "CRYSFML_PYTHON_DYLIB=/Library/Frameworks/Python.framework/Versions/3.7/Python" >> $GITHUB_ENV - echo "CRYSFML_SO=/Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/lib/python3.7/site-packages/libsDarwin/CFML/powder_generation.so" >> $GITHUB_ENV echo "pythonLocation: $pythonLocation" - echo "PYTHONPATH: $PYTHONPATH" - echo "PYTHON_BIN: $PYTHON_BIN" - echo "PYTHON_DYLIB: $PYTHON_DYLIB" - echo "CRYSFML_PYTHON_DYLIB: $CRYSFML_PYTHON_DYLIB" - echo "CRYSFML_SO: $CRYSFML_SO" - name: Set up access to private repos uses: webfactory/ssh-agent@v0.4.1 @@ -60,13 +48,8 @@ jobs: - name: Create venv and install dependences run: poetry update - - name: Relink CrysFML from default Python dylib (macOS) - if: matrix.os == 'macos-latest' - run: install_name_tool -change /Library/Frameworks/Python.framework/Versions/3.7/Python /Users/runner/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.dylib /Users/runner/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-X6dFDTaL-py3.7/lib/python3.7/site-packages/libsDarwin/CFML/powder_generation.so - - - name: Relink CrysFML from default Python dylib (Linux) - if: matrix.os == 'ubuntu-latest' - run: patchelf --replace-needed libpython3.7m.so.1.0 /opt/hostedtoolcache/Python/3.7.9/x64/lib/libpython3.7m.so.1.0 /home/runner/.cache/pypoetry/virtualenvs/easydiffractionlib-l-ltHCsT-py3.7/lib/python3.7/site-packages/libsLinux/CFML/powder_generation.so + - name: Relink CrysFML from default Python dylib + run: poetry run python tools/Scripts/RelinkCrysfml.py $pythonLocation - name: Run main.py run: poetry run easyDiffractionLib diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1 @@ + diff --git a/pyproject.toml b/pyproject.toml index ec0cb7e5..2a56350f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ packages = [ { include = "easyDiffractionLib" } ] python = "^3.7, <3.8" cryspy = "^0.4.11" matplotlib = "^3.2, <3.3" +# easyScience libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } @@ -29,6 +30,9 @@ easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io [tool.poetry.dev-dependencies] pytest = "^5.2" +toml = "^0.10" +requests = '^2.24' +# easyScience #CFML_api = { path = '../CFML_api/' } #GSASII = { path = '../GSASII/' } @@ -36,3 +40,6 @@ pytest = "^5.2" easyDiffractionLib = "easyDiffractionLib.main:main" # CUSTOM CONFIG + +[ci.pyinstaller] +libs = { macos = 'libsDarwin', ubuntu = 'libsLinux', windows = 'libsWin32' } diff --git a/tools/Scripts/Config.py b/tools/Scripts/Config.py new file mode 100644 index 00000000..af19fc36 --- /dev/null +++ b/tools/Scripts/Config.py @@ -0,0 +1,15 @@ +__author__ = "github.com/AndrewSazonov" +__version__ = '0.0.1' + +import os, sys +import Functions + + +class Config(): + def __init__(self): + # Main + self.__dict__ = Functions.config() + self.os = Functions.osName() + + def __getitem__(self, key): + return self.__dict__[key] diff --git a/tools/Scripts/Functions.py b/tools/Scripts/Functions.py new file mode 100755 index 00000000..3712fee8 --- /dev/null +++ b/tools/Scripts/Functions.py @@ -0,0 +1,301 @@ +__author__ = "github.com/AndrewSazonov" +__version__ = '0.0.1' + +import os, sys +import toml +import zipfile +import subprocess +import requests +import shutil +from distutils import dir_util + +# FUNCTIONS + +def coloredText(message='', style='1', background_color='49m', text_color='39'): + # http://ozzmaker.com/add-colour-to-text-in-python/ + escape = '\033[' + reset = '0m' + return f'{escape}{style};{text_color};{background_color}{message}{escape}{reset}' + +def printFailMessage(message, exception=None): + bright_red = '31' + extended_message = f'- Failed to {message}' + if exception: + extended_message += os.linesep + extended_message += str(exception) + report = coloredText(message=extended_message, text_color=bright_red) + print(report) + +def printSuccessMessage(message): + bright_green = '32' + extended_message = f'+ Succeeded to {message}' + report = coloredText(message=extended_message, text_color=bright_green) + print(report) + +def printNeutralMessage(message): + bright_blue = '34' + extended_message = f'* {message}' + report = coloredText(message=extended_message, text_color=bright_blue) + print(report) + +def run(*args): + subprocess.run( + args, + capture_output=False, + universal_newlines=True, # converts the output to a string instead of a byte array. + #check=True # forces the Python method to throw an exception if the underlying process encounters errors + ) + +def downloadFile(url, destination): + if os.path.exists(destination): + printNeutralMessage(f'File already exists {destination}') + return + try: + message = f'download from {url}' + file = requests.get(url, allow_redirects=True) + open(destination, 'wb').write(file.content) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def attachDmg(file): + try: + message = f'attach {file}' + run('hdiutil', 'attach', file) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def installSilently(installer, silent_script): + try: + message = f'run installer {installer}' + run( + installer, + '--script', silent_script, + '--no-force-installations' + ) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def config(): + return toml.load(os.path.join(os.getcwd(), 'pyproject.toml')) + +def osName(): + platform = sys.platform + if platform.startswith('darwin'): + return 'macos' + elif platform.startswith('lin'): + return 'ubuntu' + elif platform.startswith('win'): + return 'windows' + else: + print("- Unsupported platform '{0}'".format(platform)) + return None + +def environmentVariable(name, default=None): + value = os.getenv(name) + if value is not None: + return value + else: + printNeutralMessage(f'Environment variable {name} is not found, using default value {default}') + return default + +def setEnvironmentVariable(name, value): + try: + message = f'set environment variable {name} to {value}' + os.environ[name] = value + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def addReadPermission(file): + try: + message = f'add read permissions to {file}' + run('chmod', 'a+x', file) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def createFile(path, content): + if os.path.exists(path): + printNeutralMessage(f'File already exists {path}') + return + try: + message = f'create file {path}' + with open(path, "w") as file: + file.write(content) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def copyFile(source, destination): + path = os.path.join(destination, os.path.basename(source)) + if os.path.exists(path): + printNeutralMessage(f'File already exists {path}') + return + try: + message = f'copy file {source} to {destination}' + shutil.copy2(source, destination, follow_symlinks=True) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def removeFile(path): + if not os.path.exists(path): + printNeutralMessage(f'File does not exist {path}') + return + try: + message = f'delete file {path}' + os.remove(path) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def createDir(path): + if os.path.exists(path): + printNeutralMessage(f'Directory already exists {path}') + return + try: + message = f'create dir {path}' + os.mkdir(path) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def copyDir(source, destination): + path = os.path.join(destination, os.path.basename(source)) + if os.path.exists(path): + printNeutralMessage(f'Directory already exists {path}') + return + try: + message = f'copy dir {source} to {destination}' + dir_util.copy_tree(source, destination) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def moveDir(source, destination): + path = os.path.join(destination, os.path.basename(source)) + if os.path.exists(path): + printNeutralMessage(f'Directory already exists {path}') + return + try: + message = f'move dir {source} to {destination}' + shutil.move(source, destination) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def dict2xml(d, root_node=None, add_xml_version=True): + wrap = False if root_node is None or isinstance(d, list) else True + root = 'root' if root_node is None else root_node + xml = '' + attr = '' + children = [] + + if add_xml_version: + xml += '' + + if isinstance(d, dict): + for key, value in dict.items(d): + if isinstance(value, (dict, list)): + children.append(dict2xml(value, root_node=key, add_xml_version=False)) + elif key[0] == '@': + attr = attr + ' ' + key[1::] + '="' + str(value) + '"' + else: + xml = '<' + key + ">" + str(value) + '' + children.append(xml) + + elif isinstance(d, list): + for value in d: + children.append(dict2xml(value, root_node=root, add_xml_version=False)) + + else: + raise TypeError(f"Type {type(d)} is not supported") + + end_tag = '>' if children else '/>' + + if wrap: + xml = '<' + root + attr + end_tag + + if children: + xml += "".join(children) + + if wrap: + xml += '' + + return xml + +def unzip(archive_path, destination_dir): + try: + message = f'unzip {archive_path} to {destination_dir}' + with zipfile.ZipFile(archive_path, 'r') as zip_ref: + zip_ref.extractall(destination_dir) + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) + +def zip(source, destination): + # https://thispointer.com/python-how-to-create-a-zip-archive-from-multiple-files-or-directory/ + # https://stackoverflow.com/questions/27991745/zip-file-and-avoid-directory-structure + # https://stackoverflow.com/questions/32640053/compressing-directory-using-shutil-make-archive-while-preserving-directory-str + # Zip all the files from given directory + """ + Compress a file/directory. + """ + # Check if src exists + if not os.path.exists(source): + printFailMessage(f"zip file/directory (it doesn't exist): {source}") + sys.exit() + return + # create a ZipFile object + try: + with zipfile.ZipFile(destination, 'w') as zf: + rootdirname = os.path.basename(source) + if os.path.isfile(source): + message = f'zip file {source} to {destination}' + filepath = source + parentpath = os.path.relpath(filepath, source) + arcpath = os.path.join(rootdirname, parentpath) + zf.write(filepath, arcpath) + elif os.path.isdir(source): + message = f'zip dir {source} to {destination}' + for dirpath, _, filenames in os.walk(source): + for filename in filenames: + filepath = os.path.join(dirpath, filename) + parentpath = os.path.relpath(filepath, source) + arcpath = os.path.join(rootdirname, parentpath) + zf.write(filepath, arcpath) + else: + printFailMessage(message + ": It is a special file (socket, FIFO, device file)" ) + sys.exit() + except Exception as exception: + printFailMessage(message, exception) + sys.exit() + else: + printSuccessMessage(message) diff --git a/tools/Scripts/RelinkCrysfml.py b/tools/Scripts/RelinkCrysfml.py new file mode 100644 index 00000000..a1d6e07a --- /dev/null +++ b/tools/Scripts/RelinkCrysfml.py @@ -0,0 +1,59 @@ +__author__ = "github.com/AndrewSazonov" +__version__ = '0.0.1' + +import os, sys +import importlib +import Functions, Config + + +CONFIG = Config.Config() + +def pythonDylib(): + python_location = sys.argv[1] + python_dylib_file = { + 'macos': 'libpython3.7m.dylib', + 'ubuntu': 'libpython3.7m.so.1.0' + }[CONFIG.os] + return os.path.join(python_location, 'lib', python_dylib_file) + +def crysfmlPythonDylib(): + d = { + 'macos': '/Library/Frameworks/Python.framework/Versions/3.7/Python', + 'ubuntu': 'libpython3.7m.so.1.0' + } + return d[CONFIG.os] + +def crysfmlSo(): + lib = CONFIG['ci']['pyinstaller']['libs'][CONFIG.os] + lib_path = importlib.import_module(lib).__path__[0] + so_location = os.path.join(lib_path, 'CFML') + so_file = { + 'macos': 'powder_generation.so', + 'ubuntu': 'powder_generation.so' + }[CONFIG.os] + return os.path.join(so_location, so_file) + +def relinkCrysfml(): + if CONFIG.os == 'windows': + Functions.printNeutralMessage(f'No CrysFML relinking is needed for platform {CONFIG.os}') + return + try: + message = f'relink CrysFML from default Python dylib for platform {CONFIG.os}' + if CONFIG.os == 'macos': + Functions.run('install_name_tool', '-change', crysfmlPythonDylib(), pythonDylib(), crysfmlSo()) + elif CONFIG.os == 'ubuntu': + Functions.run('patchelf', '--replace-needed', crysfmlPythonDylib(), pythonDylib(), crysfmlSo()) + else: + Functions.printFailMessage(f'Platform {CONFIG.os} is unsupported') + except Exception as exception: + Functions.printFailMessage(message, exception) + sys.exit() + else: + Functions.printSuccessMessage(message) + + +if __name__ == "__main__": + print("pythonDylib:", pythonDylib()) + print("crysfmlPythonDylib:", crysfmlPythonDylib()) + print("crysfmlSo:", crysfmlSo()) + relinkCrysfml() From b453c53d26beb6020bf9817ae775b728738e7cde Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 14:34:39 +0100 Subject: [PATCH 074/312] Try on ubuntu --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dad09b2a..b95a09cf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [macos-latest] + os: [ubuntu-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: From c4cb3221b1c901d8606b374992497f5378d0cb87 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 4 Nov 2020 14:41:06 +0100 Subject: [PATCH 075/312] Show some debug info --- .github/workflows/test.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b95a09cf..55b95520 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,6 +26,11 @@ jobs: - name: Check-out repository uses: actions/checkout@v2 + - name: Set up access to private repos + uses: webfactory/ssh-agent@v0.4.1 + with: + ssh-private-key: ${{ secrets.GH_WEBFACTORY_KEY }} + - name: Set up Python environment uses: actions/setup-python@v2 with: @@ -36,11 +41,7 @@ jobs: run: | which python echo "pythonLocation: $pythonLocation" - - - name: Set up access to private repos - uses: webfactory/ssh-agent@v0.4.1 - with: - ssh-private-key: ${{ secrets.GH_WEBFACTORY_KEY }} + ls -l /opt/hostedtoolcache/Python/3.7.9/x64/lib/ - name: Set up python packages manager uses: Gr1N/setup-poetry@v2 @@ -49,7 +50,10 @@ jobs: run: poetry update - name: Relink CrysFML from default Python dylib - run: poetry run python tools/Scripts/RelinkCrysfml.py $pythonLocation + run: | + poetry run python tools/Scripts/RelinkCrysfml.py $pythonLocation + ls -l /opt/hostedtoolcache/Python/3.7.9/x64/lib/ + ls -l /home/runner/.cache/pypoetry/virtualenvs/easydiffractionlib-l-ltHCsT-py3.7/lib/python3.7/site-packages/libsLinux/CFML/ - name: Run main.py run: poetry run easyDiffractionLib From c7bf3339851a8e29ac920a7b0c7eb3891620b0a3 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 5 Nov 2020 18:37:52 +0100 Subject: [PATCH 076/312] Update temp cif printing --- easyDiffractionLib/sample.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index b4144f72..2fcbb193 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -24,7 +24,7 @@ def __init__(self, phases: Union[Crystal, Crystals] = None, parameters=None, int self.background = Line() self.interface = interface self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') - print("Temp CIF:", self.filename) + print(f"Temp CIF: {self.filename}") self.output_index = None self._updateInterface() From 3bae5bbe9887613da07f08722b360889fdd0f35c Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 6 Nov 2020 01:22:04 +0100 Subject: [PATCH 077/312] Update __init__.py --- easyDiffractionLib/Interfaces/__init__.py | 30 +++++++++++++---------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index 3f9fcabf..3323bf3f 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -3,34 +3,38 @@ import os, sys +import traceback + try: from easyDiffractionLib.Interfaces.cryspy import Cryspy # noqa: F401 except ImportError: # TODO make this a proper message (use logging?) - print('CrysPy is not installed') + print('Warning: CrysPy is not installed') try: - from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 -except (ImportError, Exception): - # TODO make this a proper message (use logging?) - print('CFML is not installed') - + from easyDiffractionLib.Interfaces.CFML import CFML +except Exception: + traceback.print_exc() + print('Warning: CFML is not installed') + try: import GSASII - sys.path.insert(0, GSASII.__path__[0]) + gsasii_path = list(GSASII.__path__)[0] + sys.path.insert(0, gsasii_path) if 'darwin' in sys.platform: import libsDarwin - sys.path.insert(0, os.path.join(libsDarwin.__path__[0], "GSASII")) + libs_path = list(libsDarwin.__path__)[0] elif 'linux' in sys.platform: import libsLinux - sys.path.insert(0, os.path.join(libsLinux.__path__[0], "GSASII")) + libs_path = list(libsLinux.__path__)[0] elif 'win32' in sys.platform: import libsWin32 - sys.path.insert(0, os.path.join(libsWin32.__path__[0], "GSASII")) + libs_path = list(libsWin32.__path__)[0] + sys.path.insert(0, os.path.join(libs_path, "GSASII")) from easyDiffractionLib.Interfaces.GSASII import GSASII # noqa: F401 -except (ImportError, Exception): - # TODO make this a proper message (use logging?) - print('GSAS-II is not installed') +except Exception: + traceback.print_exc() + print('Warning: GSAS-II is not installed') from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate From 5e0068233ba1ee022b96daf7a4a04ea1df012b72 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 6 Nov 2020 01:26:53 +0100 Subject: [PATCH 078/312] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 55b95520..a507cb9c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [ubuntu-latest] + os: [windows-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: From b4a6f88ddf67a10686bf30ad02df3a179444d340 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 6 Nov 2020 17:40:13 +0100 Subject: [PATCH 079/312] New crysfml api --- easyDiffractionLib/Calculators/CFML.py | 51 ++++++++++++++++---------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index a5648be2..604e7825 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -5,13 +5,15 @@ from easyCore import np from easyCore import borg -from CFML_api import PowderPatternSimulation as CFML_api + +import CFML_api class CFML: def __init__(self, filename: str = None): + print("CFML __init__") + self.filename = filename - self.simulator = CFML_api.PowderPatternSimulator() self.conditions = CFML_api.PowderPatternSimulationConditions() self.conditions.bkg = 0.0 @@ -26,26 +28,37 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if self.filename is None: raise AttributeError - if borg.debug: - print('CALLING FROM CrysFML\n----------------------') - print({'wavelength': self.conditions.lamb, - 'u': self.conditions.u_resolution, - 'v': self.conditions.v_resolution, - 'w': self.conditions.w_resolution, - 'x': self.conditions.x_resolution}) - with open(self.filename, 'r') as r: - print(r.read()) + print("self.filename", self.filename ) + + + # Sample parameters + cif_file = CFML_api.CIFFile(self.filename) + cell = cif_file.cell + space_group = cif_file.space_group + atom_list = cif_file.atom_list + + #cell.print_description() + #space_group.print_description() + #atom_list.print_description() - x0 = x_array[0] - xF = x_array[-1] - nX = np.prod(x_array.shape) + # Experiment/Instrumnet/Simulation parameters + x_min = x_array[0] + x_max = x_array[-1] + num_points = np.prod(x_array.shape) + self.conditions.theta_min = x_min + self.conditions.theta_max = x_max + self.conditions.theta_step = (x_max - x_min) / (num_points - 1) - self.conditions.theta_min = x0 - self.conditions.theta_max = xF - self.conditions.theta_step = (xF-x0)/(nX - 1) + #print("self.conditions.theta_min", self.conditions.theta_min) + #print("self.conditions.theta_max", self.conditions.theta_max) + #print("self.conditions.theta_step", self.conditions.theta_step) + #print("self.conditions.getSinThetaOverLambdaMax()", self.conditions.getSinThetaOverLambdaMax()) + # Calculations try: - self.simulator.compute(self.filename, simulation_conditions=self.conditions) + reflection_list = CFML_api.ReflectionList(cell, space_group, True, 0, self.conditions.getSinThetaOverLambdaMax()) + reflection_list.compute_structure_factors(space_group, atom_list) + diffraction_pattern = CFML_api.DiffractionPattern(self.conditions, reflection_list, cell.reciprocal_cell_vol) except: raise ArithmeticError finally: @@ -53,4 +66,4 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): p.unlink() - return self.simulator.y + return diffraction_pattern.y From 5712fb5777a1c113d3036f2398e70adc37ad1b3f Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 9 Nov 2020 10:07:21 +0100 Subject: [PATCH 080/312] New cfml api --- easyDiffractionLib/Calculators/CFML.py | 4 ++-- easyDiffractionLib/Calculators/__init__.py | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 604e7825..8da104cb 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -3,11 +3,11 @@ import os, pathlib +import CFML_api + from easyCore import np from easyCore import borg -import CFML_api - class CFML: def __init__(self, filename: str = None): diff --git a/easyDiffractionLib/Calculators/__init__.py b/easyDiffractionLib/Calculators/__init__.py index 19c79bc2..825514c5 100644 --- a/easyDiffractionLib/Calculators/__init__.py +++ b/easyDiffractionLib/Calculators/__init__.py @@ -1,2 +1,18 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' + +import sys + +if 'darwin' in sys.platform: + import libsDarwin + libs_path = list(libsDarwin.__path__)[0] +elif 'linux' in sys.platform: + import libsLinux + libs_path = list(libsLinux.__path__)[0] +elif 'win32' in sys.platform: + import libsWin32 + libs_path = list(libsWin32.__path__)[0] +else: + raise NotImplementedError(f"Platform '{sys.platform}' is not supported") + +sys.path.append(libs_path) From be31a01ae6aa1d9db78428e6fc5137651a6cbe30 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 9 Nov 2020 10:21:35 +0100 Subject: [PATCH 081/312] Remove old CMFL_api --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2a56350f..7ba7e9de 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,6 @@ matplotlib = "^3.2, <3.3" libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } -CFML_api = { git = 'ssh://git@github.com/easyScience/CFML_api.git', rev = 'gsas' } GSASII = { git = 'ssh://git@github.com/easyScience/GSASII.git', rev = 'main' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } From 4249b47328cbcc96cfab6a73e43380a694d779a9 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 9 Nov 2020 10:43:45 +0100 Subject: [PATCH 082/312] Update to gsas --- easyDiffractionLib/Calculators/__init__.py | 5 ++++- easyDiffractionLib/Interfaces/__init__.py | 16 ++-------------- pyproject.toml | 4 ---- 3 files changed, 6 insertions(+), 19 deletions(-) diff --git a/easyDiffractionLib/Calculators/__init__.py b/easyDiffractionLib/Calculators/__init__.py index 825514c5..c4a4ad0a 100644 --- a/easyDiffractionLib/Calculators/__init__.py +++ b/easyDiffractionLib/Calculators/__init__.py @@ -1,7 +1,7 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -import sys +import os, sys if 'darwin' in sys.platform: import libsDarwin @@ -15,4 +15,7 @@ else: raise NotImplementedError(f"Platform '{sys.platform}' is not supported") +gsasii_path = os.path.join(libs_path, "GSASII") + sys.path.append(libs_path) +sys.path.append(gsasii_path) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index 3323bf3f..b700168a 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -19,22 +19,10 @@ print('Warning: CFML is not installed') try: - import GSASII - gsasii_path = list(GSASII.__path__)[0] - sys.path.insert(0, gsasii_path) - if 'darwin' in sys.platform: - import libsDarwin - libs_path = list(libsDarwin.__path__)[0] - elif 'linux' in sys.platform: - import libsLinux - libs_path = list(libsLinux.__path__)[0] - elif 'win32' in sys.platform: - import libsWin32 - libs_path = list(libsWin32.__path__)[0] - sys.path.insert(0, os.path.join(libs_path, "GSASII")) from easyDiffractionLib.Interfaces.GSASII import GSASII # noqa: F401 except Exception: - traceback.print_exc() + traceback.print_exc() print('Warning: GSAS-II is not installed') + from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate diff --git a/pyproject.toml b/pyproject.toml index 7ba7e9de..fc7257fe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,16 +24,12 @@ matplotlib = "^3.2, <3.3" libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } -GSASII = { git = 'ssh://git@github.com/easyScience/GSASII.git', rev = 'main' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } [tool.poetry.dev-dependencies] pytest = "^5.2" toml = "^0.10" requests = '^2.24' -# easyScience -#CFML_api = { path = '../CFML_api/' } -#GSASII = { path = '../GSASII/' } [tool.poetry.scripts] easyDiffractionLib = "easyDiffractionLib.main:main" From fd90bd9e243692c8632102166e41716b2ef11b60 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 9 Nov 2020 17:38:35 +0100 Subject: [PATCH 083/312] Update relink cryspy script --- tools/Scripts/RelinkCrysfml.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/Scripts/RelinkCrysfml.py b/tools/Scripts/RelinkCrysfml.py index a1d6e07a..9cafbf21 100644 --- a/tools/Scripts/RelinkCrysfml.py +++ b/tools/Scripts/RelinkCrysfml.py @@ -42,7 +42,17 @@ def relinkCrysfml(): if CONFIG.os == 'macos': Functions.run('install_name_tool', '-change', crysfmlPythonDylib(), pythonDylib(), crysfmlSo()) elif CONFIG.os == 'ubuntu': + Functions.run('sudo', 'apt-get', 'update', '-y') + Functions.run('sudo', 'apt-get', 'install', '-y', 'patchelf') + # Python lib Functions.run('patchelf', '--replace-needed', crysfmlPythonDylib(), pythonDylib(), crysfmlSo()) + # Intel fortran libs + # Instead of LD_LIBRARY_PATH... + import libsLinux + lib_path = os.path.join(list(libsLinux.__path__)[0], 'lib') + libs = ['libifcoremt.so.5', 'libifport.so.5', 'libimf.so', 'libintlc.so.5', 'libsvml.so'] + for lib in libs: + Functions.run('patchelf', '--replace-needed', lib, os.path.join(lib_path, lib), crysfmlSo()) else: Functions.printFailMessage(f'Platform {CONFIG.os} is unsupported') except Exception as exception: From 1fb6487bd5e930dbc0267327805273dc94079fc1 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 9 Nov 2020 17:40:14 +0100 Subject: [PATCH 084/312] Fix CFML path --- tools/Scripts/RelinkCrysfml.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/Scripts/RelinkCrysfml.py b/tools/Scripts/RelinkCrysfml.py index 9cafbf21..e83b800d 100644 --- a/tools/Scripts/RelinkCrysfml.py +++ b/tools/Scripts/RelinkCrysfml.py @@ -26,10 +26,10 @@ def crysfmlPythonDylib(): def crysfmlSo(): lib = CONFIG['ci']['pyinstaller']['libs'][CONFIG.os] lib_path = importlib.import_module(lib).__path__[0] - so_location = os.path.join(lib_path, 'CFML') + so_location = os.path.join(lib_path, 'CFML_api') so_file = { - 'macos': 'powder_generation.so', - 'ubuntu': 'powder_generation.so' + 'macos': 'crysfml_api.so', + 'ubuntu': 'crysfml_api.so' }[CONFIG.os] return os.path.join(so_location, so_file) From 222957d82d46d04a38acd4fccb8b528abd6ecf52 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 9 Nov 2020 17:42:09 +0100 Subject: [PATCH 085/312] Test CI on macos and ubuntu --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a507cb9c..7c3b279c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [windows-latest] + os: [macos-latest, ubuntu-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: From c7c41176978e3d381ad42bf3412603885f290488 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 9 Nov 2020 17:45:30 +0100 Subject: [PATCH 086/312] Fix ci script --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7c3b279c..82b9d56c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,7 +41,6 @@ jobs: run: | which python echo "pythonLocation: $pythonLocation" - ls -l /opt/hostedtoolcache/Python/3.7.9/x64/lib/ - name: Set up python packages manager uses: Gr1N/setup-poetry@v2 From 898bb8ce5294f9e24885ca9988b51b0c7ec6520a Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 16 Nov 2020 10:43:03 +0100 Subject: [PATCH 087/312] Add Point based background logic --- easyDiffractionLib/Calculators/CFML.py | 8 +- easyDiffractionLib/Calculators/GSASII.py | 8 +- easyDiffractionLib/Calculators/cryspy.py | 8 +- .../Elements/Backgrounds/Background.py | 64 +++++++++++++++ .../Elements/Backgrounds/Point.py | 81 +++++++++++++++++++ easyDiffractionLib/Interfaces/CFML.py | 30 +++++++ easyDiffractionLib/Interfaces/GSASII.py | 30 +++++++ easyDiffractionLib/Interfaces/cryspy.py | 30 +++++++ easyDiffractionLib/interface.py | 41 ++++++++++ easyDiffractionLib/sample.py | 47 ++++++++--- 10 files changed, 334 insertions(+), 13 deletions(-) create mode 100644 easyDiffractionLib/Elements/Backgrounds/Background.py create mode 100644 easyDiffractionLib/Elements/Backgrounds/Point.py diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 8da104cb..2aaa55c7 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -16,6 +16,7 @@ def __init__(self, filename: str = None): self.filename = filename self.conditions = CFML_api.PowderPatternSimulationConditions() self.conditions.bkg = 0.0 + self.background = None def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -66,4 +67,9 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): p.unlink() - return diffraction_pattern.y + if self.background is None: + bg = np.zeros_like(x_array) + else: + bg = self.background.calculate(x_array) + + return diffraction_pattern.y + bg diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index e4ae7a3d..cfc308e5 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -25,6 +25,7 @@ def __init__(self, filename: str = None): } } self.filename = filename + self.background = None def create_temp_prm(self): if self.filename is None: @@ -101,4 +102,9 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): p.unlink() - return ycalc + if self.background is None: + bg = np.zeros_like(x_array) + else: + bg = self.background.calculate(x_array) + + return ycalc + bg diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 9cb68cc7..02f93927 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -23,6 +23,7 @@ def __init__(self): } } + self.background = None def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -50,4 +51,9 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) profile = pd.calc_profile(x_array, [crystal], True, False) - return np.array(profile.intensity_total) + if self.background is None: + bg = np.zeros_like(x_array) + else: + bg = self.background.calculate(x_array) + + return np.array(profile.intensity_total) + bg diff --git a/easyDiffractionLib/Elements/Backgrounds/Background.py b/easyDiffractionLib/Elements/Backgrounds/Background.py new file mode 100644 index 00000000..5a2b8409 --- /dev/null +++ b/easyDiffractionLib/Elements/Backgrounds/Background.py @@ -0,0 +1,64 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from abc import abstractmethod +from typing import Union, List + +from easyCore.Objects.Base import Descriptor, Parameter +from easyCore.Objects.Groups import BaseCollection +from easyCore import np + + +class Background(BaseCollection): + + def __init__(self, *args, linked_experiment=None, **kwargs): + if linked_experiment is None: + raise AttributeError + elif isinstance(linked_experiment, str): + linked_experiment = Descriptor('linked_experiment', linked_experiment) + + if not isinstance(linked_experiment, Descriptor): + raise ValueError + + super(Background, self).__init__(*args, **kwargs) + self._linked_experiment = linked_experiment + + @property + def linked_experiment(self): + return self._linked_experiment + + @linked_experiment.setter + def linked_experiment(self, value: str): + self.linked_experiment = value + + @abstractmethod + def calculate(self, x_array: np.ndarray) -> np.ndarray: + pass + + +class BackgroundContainer(BaseCollection): + def __init__(self, *args, interface=None, **kwargs): + super(BackgroundContainer, self).__init__('Backgrounds', *args, **kwargs) + self.interface = interface + + @property + def linked_experiments(self) -> List[str]: + return [item.linked_experiment.raw_value for item in self] + + def __repr__(self) -> str: + return f'Collection of {len(self)} backgrounds.' + + def __getitem__(self, idx: Union[int, slice]): + if isinstance(idx, str) and idx in self.linked_experiments: + idx = self.linked_experiments.index(idx) + return super(BackgroundContainer, self).__getitem__(idx) + + def __delitem__(self, key): + if isinstance(key, str) and key in self.linked_experiments: + key = self.linked_experiments.index(key) + return super(BackgroundContainer, self).__delitem__(key) + + def append(self, item): + if item.linked_experiment in self.linked_experiments: + raise AttributeError(f'A background exists for experiment: {item.linked_experiment}') + super(BackgroundContainer, self).append(item) diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py new file mode 100644 index 00000000..198736a0 --- /dev/null +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -0,0 +1,81 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from typing import Union + +from easyCore import np +from easyCore.Objects.Groups import BaseCollection +from easyCore.Objects.Base import Parameter, Descriptor, BaseObj +from .Background import Background + + +class BackgroundPoint(BaseObj): + def __init__(self, x: Descriptor, y: Parameter): + super(BackgroundPoint, self).__init__('background_point', x=x, y=y) + + @classmethod + def from_pars(cls, x: float, y: float): + x = Descriptor('x', x) + y = Parameter('y', y) + return cls(x, y) + + @classmethod + def default(cls): + return cls.from_pars(0, 0) + + def set(self, value): + self.y = value + +class PointBackground(Background): + + def __init__(self, *args, **kwargs): + super(PointBackground, self).__init__('point_background', *args, **kwargs) + + def calculate(self, x_array: np.ndarray) -> np.ndarray: + + shape_x = x_array.shape + reduced_x = x_array.flat + + y = np.zeros_like(reduced_x) + + low_x = x_array.flat[0] + x_points = self.x_points + low_y = 0 + y_points = self.y_points + + for point, intensity in zip(x_points, y_points): + idx = (reduced_x >= low_x) & (reduced_x < point) + if np.any(idx): + y[idx] = np.interp(reduced_x[idx], [low_x, point], [low_y, intensity]) + low_x = point + low_y = intensity + + idx = reduced_x > low_x + y[idx] = low_y + return y.reshape(shape_x) + + def __repr__(self) -> str: + return f'Background of {len(self)} points.' + + def __getitem__(self, idx: Union[int, slice]) -> Union[Parameter, Descriptor, BaseObj, 'BaseCollection']: + return super(PointBackground, self).__getitem__(idx) + + def __delitem__(self, key): + return super(PointBackground, self).__delitem__(key) + + @property + def x_points(self): + return np.array([item.x.raw_value for item in self]).sort() + + @property + def y_points(self): + idx = np.array([item.x.raw_value for item in self]).argsort() + y = np.array([item.y.raw_value for item in self]) + return y[idx] + + def append(self, item: BackgroundPoint): + if not isinstance(item, BackgroundPoint): + raise TypeError('Item must be a BackgroundPoint') + if item.x.raw_value in self.x_points: + raise AttributeError(f'An BackgroundPoint at {item.x.raw_value} already exists.') + super(PointBackground, self).append(item) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 43f88eeb..b33b2fc7 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -87,6 +87,36 @@ def set_instrument_value(self, value_label: str, value: float): value_label = self._instrument_link[value_label] setattr(self.calculator.conditions, value_label, value) + def get_background_value(self, background, value_label: int) -> float: + """ + Method to get a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :return: associated value + :rtype: float + """ + self.calculator.background = background + if value_label <= len(self.calculator.background): + return self.calculator.background[value_label] + else: + raise IndexError + + def set_background_value(self, background, value_label: int, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + self.calculator.background = background + if value_label <= len(self.calculator.background): + self.calculator.background[value_label].set(value) + else: + raise IndexError + def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): """ Perform an update of multiple values at once to save time on expensive updates diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index d57c567e..f0785a7a 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -59,6 +59,36 @@ def set_value(self, value_label: str, value: float): value_label = self._sample_link[value_label] setattr(self.calculator, value_label, value) + def get_background_value(self, background, value_label: int) -> float: + """ + Method to get a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :return: associated value + :rtype: float + """ + self.calculator.background = background + if value_label <= len(self.calculator.background): + return self.calculator.background[value_label] + else: + raise IndexError + + def set_background_value(self, background, value_label: int, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + self.calculator.background = background + if value_label <= len(self.calculator.background): + self.calculator.background[value_label].set(value) + else: + raise IndexError + def get_instrument_value(self, value_label: str) -> float: """ Method to get a value from the calculator diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 635651e2..9366ed0d 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -92,6 +92,36 @@ def set_instrument_value(self, value_label: str, value: float): return self.calculator.conditions['resolution'][value_label] = value + def get_background_value(self, background, value_label: int) -> float: + """ + Method to get a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :return: associated value + :rtype: float + """ + self.calculator.background = background + if value_label <= len(self.calculator.background): + return self.calculator.background[value_label] + else: + raise IndexError + + def set_background_value(self, background, value_label: int, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + self.calculator.background = background + if value_label <= len(self.calculator.background): + self.calculator.background[value_label].set(value) + else: + raise IndexError + def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): """ Perform an update of multiple values at once to save time on expensive updates diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index e384dc59..eb45fce7 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -35,6 +35,17 @@ def generate_instrument_binding(self, name) -> property: return property(fget=self.__get_instrument_item(self, name), fset=self.__set_instrument_item(self, name)) + def generate_background_binding(self, name, background) -> property: + """ + Automatically bind a `Parameter` to the corresponding interface. + :param name: parameter name + :type name: str + :return: binding property + :rtype: property + """ + return property(fget=self.__get_background_item(self, background, name), + fset=self.__set_background_item(self, background, name)) + def generate_binding(self, name, *args, **kwargs) -> property: """ Automatically bind a `Parameter` to the corresponding interface. @@ -142,3 +153,33 @@ def __set_instrument_item(obj, key) -> Callable: def inner(value): obj().set_instrument_value(key, value) return inner + + @staticmethod + def __get_background_item(obj, background, index: int) -> Callable: + """ + Access the value of a key by a callable object + :param key: name of parameter to be retrieved + :type key: str + :return: function to get key + :rtype: Callable + """ + + def inner(): + return obj().get_background_value(background, index) + return inner + + @staticmethod + def __set_background_item(obj, background, index) -> Callable: + """ + Set the value of a key by a callable object + :param obj: object to be created from + :type obj: InterfaceFactory + :param key: name of parameter to be set + :type key: str + :return: function to set key + :rtype: Callable + """ + + def inner(value): + obj().set_background_value(background, index, value) + return inner diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 2fcbb193..dedc9a4a 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -7,11 +7,11 @@ from easyCore.Objects.Base import BaseObj from easyDiffractionLib import Crystal, Crystals from easyDiffractionLib.Elements.Instruments.Instrument import Pattern -from easyDiffractionLib.Elements.Backgrounds.Linear import Line +from easyDiffractionLib.Elements.Backgrounds.Background import BackgroundContainer class Sample(BaseObj): - def __init__(self, phases: Union[Crystal, Crystals] = None, parameters=None, interface=None, name: str = 'easySample'): + def __init__(self, phases: Union[Crystal, Crystals] = None, parameters=None, backgrounds=None, interface=None, name: str = 'easySample'): if isinstance(phases, Crystal): phases = Crystals('Phases', phases) elif phases is None: @@ -19,25 +19,52 @@ def __init__(self, phases: Union[Crystal, Crystals] = None, parameters=None, int if not isinstance(phases, Crystals): raise AttributeError('`phases` must be a Crystal or Crystals') - - super(Sample, self).__init__(name, _phases=phases, _parameters=parameters) - self.background = Line() + + if backgrounds is None: + backgrounds = BackgroundContainer() + + super(Sample, self).__init__(name, _phases=phases, _parameters=parameters, _backgrounds=backgrounds) self.interface = interface self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') print(f"Temp CIF: {self.filename}") self.output_index = None self._updateInterface() - def _updateInterface(self): + def _updateInterface(self, interface_call: str = None): if self.interface is not None: - if self._phases is not None: + if self._phases is not None and \ + (interface_call is None or interface_call == 'phases'): self.interface.generate_bindings(self._phases, self, ifun=self.interface.generate_sample_binding) - if self._parameters is not None: + if self._parameters is not None and \ + (interface_call is None or interface_call == 'pars'): self.interface.generate_bindings(self._parameters, ifun=self.interface.generate_instrument_binding) + if len(self._backgrounds) > 0 and \ + self.interface is not None and \ + (interface_call is None or interface_call == 'background'): + # TODO: At the moment we're only going to support 1 BG as there are no experiments yet. + self.interface.generate_binding(self._backgrounds, self._backgrounds[0], ifun=self.interface.generate_background_bindings) def get_phase(self, phase_index): return self._phases[phase_index] + def get_background(self, experiment_name: str): + return self._backgrounds[experiment_name] + + def set_background(self, background): + self._backgrounds.append(background) + self._updateInterface(interface_call='background') + + def remove_background(self, background): + if background.linked_experiment in self._backgrounds.linked_experiments: + del self._backgrounds[background.linked_experiment] + self._updateInterface(interface_call='background') + else: + raise ValueError + + @property + def backgrounds(self): + return self._backgrounds + @property def phases(self): return self._phases @@ -50,7 +77,7 @@ def phases(self, value): raise ValueError self._phases = value self._borg.map.add_edge(self, value) - self._updateInterface() + self._updateInterface(interface_call='phases') @property def parameters(self): @@ -61,7 +88,7 @@ def parameters(self, value): if not isinstance(value, Pattern): raise ValueError self._parameters = value - self._updateInterface() + self._updateInterface(interface_call='pars') def update_bindings(self): self._updateInterface() From e35323d91097b5c75dfb9a8327801ff38411590a Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 16 Nov 2020 10:54:02 +0100 Subject: [PATCH 088/312] Add zero_shift parameter --- .../Elements/Instruments/Instrument.py | 57 ++++++++++++------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/easyDiffractionLib/Elements/Instruments/Instrument.py b/easyDiffractionLib/Elements/Instruments/Instrument.py index 05d73bf1..7d804f29 100644 --- a/easyDiffractionLib/Elements/Instruments/Instrument.py +++ b/easyDiffractionLib/Elements/Instruments/Instrument.py @@ -11,6 +11,24 @@ class Pattern(BaseObj): _name = 'Instrument' _defaults = { + 'zero_shift': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'zero_shift', + 'units': 'degree', + 'value': 0.0, + 'fixed': True + }, + 'wavelength': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'wavelength', + 'units': 'angstrom', + 'value': 1.54056, + 'fixed': True + }, 'u_resolution': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', @@ -44,37 +62,33 @@ class Pattern(BaseObj): 'name': 'x_resolution', 'value': 0.012, 'fixed': True - - }, - 'wavelength': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'wavelength', - 'units': 'angstrom', - 'value': 1.54056, - 'fixed': True - } } def __init__(self, + zero_shift: Parameter, wavelength: Parameter, u_resolution: Parameter, v_resolution: Parameter, w_resolution: Parameter, x_resolution: Parameter, - wavelength: Parameter, interface=None): + interface=None): super().__init__(self.__class__.__name__, + zero_shift=zero_shift, wavelength=wavelength, u_resolution=u_resolution, v_resolution=v_resolution, - w_resolution=w_resolution, x_resolution=x_resolution, wavelength=wavelength) + w_resolution=w_resolution, x_resolution=x_resolution) self.name = self._name self.interface = interface @classmethod def from_pars(cls, + zero_shift: float = _defaults['zero_shift']['value'], + wavelength: float = _defaults['wavelength']['value'], u_resolution: float = _defaults['u_resolution']['value'], v_resolution: float = _defaults['v_resolution']['value'], w_resolution: float = _defaults['w_resolution']['value'], - x_resolution: float = _defaults['x_resolution']['value'], - wavelength: float = _defaults['wavelength']['value']): + x_resolution: float = _defaults['x_resolution']['value']): defaults = deepcopy(cls._defaults) + defaults['zero_shift']['value'] = zero_shift + zero_shift = _decoder.process_decoded(defaults['zero_shift']) + defaults['wavelength']['value'] = wavelength + wavelength = _decoder.process_decoded(defaults['wavelength']) defaults['u_resolution']['value'] = u_resolution u_resolution = _decoder.process_decoded(defaults['u_resolution']) defaults['v_resolution']['value'] = v_resolution @@ -83,18 +97,17 @@ def from_pars(cls, w_resolution = _decoder.process_decoded(defaults['w_resolution']) defaults['x_resolution']['value'] = x_resolution x_resolution = _decoder.process_decoded(defaults['x_resolution']) - defaults['wavelength']['value'] = wavelength - wavelength = _decoder.process_decoded(defaults['wavelength']) - return cls(u_resolution=u_resolution, v_resolution=v_resolution, - w_resolution=w_resolution, x_resolution=x_resolution, wavelength=wavelength) + return cls(zero_shift=zero_shift, wavelength=wavelength, u_resolution=u_resolution, + v_resolution=v_resolution, w_resolution=w_resolution, x_resolution=x_resolution) @classmethod def default(cls): defaults = deepcopy(cls._defaults) + zero_shift = _decoder.process_decoded(defaults['zero_shift']) + wavelength = _decoder.process_decoded(defaults['wavelength']) u_resolution = _decoder.process_decoded(defaults['u_resolution']) v_resolution = _decoder.process_decoded(defaults['v_resolution']) w_resolution = _decoder.process_decoded(defaults['w_resolution']) x_resolution = _decoder.process_decoded(defaults['x_resolution']) - wavelength = _decoder.process_decoded(defaults['wavelength']) - return cls(u_resolution=u_resolution, v_resolution=v_resolution, - w_resolution=w_resolution, x_resolution=x_resolution, wavelength=wavelength) + return cls(zero_shift=zero_shift, wavelength=wavelength, u_resolution=u_resolution, + v_resolution=v_resolution, w_resolution=w_resolution, x_resolution=x_resolution) From 5fbce61cb0a7da6a86006db844181c56043053f6 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 16 Nov 2020 13:50:28 +0100 Subject: [PATCH 089/312] More BG work --- .../Elements/Backgrounds/Background.py | 2 +- .../Elements/Backgrounds/Point.py | 17 ++++++++++++++--- easyDiffractionLib/Interfaces/CFML.py | 16 ++++++++-------- easyDiffractionLib/Interfaces/GSASII.py | 16 ++++++++-------- easyDiffractionLib/Interfaces/cryspy.py | 16 ++++++++-------- easyDiffractionLib/interface.py | 2 +- easyDiffractionLib/sample.py | 6 +++--- 7 files changed, 43 insertions(+), 32 deletions(-) diff --git a/easyDiffractionLib/Elements/Backgrounds/Background.py b/easyDiffractionLib/Elements/Backgrounds/Background.py index 5a2b8409..6928977c 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Background.py +++ b/easyDiffractionLib/Elements/Backgrounds/Background.py @@ -38,7 +38,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: class BackgroundContainer(BaseCollection): def __init__(self, *args, interface=None, **kwargs): - super(BackgroundContainer, self).__init__('Backgrounds', *args, **kwargs) + super(BackgroundContainer, self).__init__('instrument', *args, **kwargs) self.interface = interface @property diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index 198736a0..d7692b6f 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -11,12 +11,16 @@ class BackgroundPoint(BaseObj): def __init__(self, x: Descriptor, y: Parameter): + x._callback = property(fget=None, + fset=lambda obj, x_value: self._modify_x_label(obj, x_value), + fdel=None) super(BackgroundPoint, self).__init__('background_point', x=x, y=y) + @classmethod def from_pars(cls, x: float, y: float): - x = Descriptor('x', x) - y = Parameter('y', y) + x = Descriptor('{:.1f}'.format(x), x) + y = Parameter('y', y, fixed=True) return cls(x, y) @classmethod @@ -26,6 +30,11 @@ def default(cls): def set(self, value): self.y = value + @staticmethod + def _modify_x_label(obj: Descriptor, value: float): + obj.name = '{:.1f}'.format(value) + + class PointBackground(Background): def __init__(self, *args, **kwargs): @@ -65,7 +74,9 @@ def __delitem__(self, key): @property def x_points(self): - return np.array([item.x.raw_value for item in self]).sort() + x = np.array([item.x.raw_value for item in self]) + x.sort() + return x @property def y_points(self): diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index b33b2fc7..5743cb15 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -96,10 +96,10 @@ def get_background_value(self, background, value_label: int) -> float: :rtype: float """ self.calculator.background = background - if value_label <= len(self.calculator.background): - return self.calculator.background[value_label] - else: - raise IndexError + # if value_label <= len(self.calculator.background): + # return self.calculator.background[value_label] + # else: + # raise IndexError def set_background_value(self, background, value_label: int, value: float): """ @@ -112,10 +112,10 @@ def set_background_value(self, background, value_label: int, value: float): :rtype: noneType """ self.calculator.background = background - if value_label <= len(self.calculator.background): - self.calculator.background[value_label].set(value) - else: - raise IndexError + # if value_label <= len(self.calculator.background): + # self.calculator.background[value_label].set(value) + # else: + # raise IndexError def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): """ diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index f0785a7a..8abbf5c8 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -68,10 +68,10 @@ def get_background_value(self, background, value_label: int) -> float: :rtype: float """ self.calculator.background = background - if value_label <= len(self.calculator.background): - return self.calculator.background[value_label] - else: - raise IndexError + # if value_label <= len(self.calculator.background): + # return self.calculator.background[value_label] + # else: + # raise IndexError def set_background_value(self, background, value_label: int, value: float): """ @@ -84,10 +84,10 @@ def set_background_value(self, background, value_label: int, value: float): :rtype: noneType """ self.calculator.background = background - if value_label <= len(self.calculator.background): - self.calculator.background[value_label].set(value) - else: - raise IndexError + # if value_label <= len(self.calculator.background): + # self.calculator.background[value_label].set(value) + # else: + # raise IndexError def get_instrument_value(self, value_label: str) -> float: """ diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 9366ed0d..523acef8 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -101,10 +101,10 @@ def get_background_value(self, background, value_label: int) -> float: :rtype: float """ self.calculator.background = background - if value_label <= len(self.calculator.background): - return self.calculator.background[value_label] - else: - raise IndexError + # if value_label <= len(self.calculator.background): + # return self.calculator.background[value_label] + # else: + # raise IndexError def set_background_value(self, background, value_label: int, value: float): """ @@ -117,10 +117,10 @@ def set_background_value(self, background, value_label: int, value: float): :rtype: noneType """ self.calculator.background = background - if value_label <= len(self.calculator.background): - self.calculator.background[value_label].set(value) - else: - raise IndexError + # if value_label <= len(self.calculator.background): + # self.calculator.background[value_label].set(value) + # else: + # raise IndexError def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): """ diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index eb45fce7..1d922407 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -43,7 +43,7 @@ def generate_background_binding(self, name, background) -> property: :return: binding property :rtype: property """ - return property(fget=self.__get_background_item(self, background, name), + return property(fget=None, fset=self.__set_background_item(self, background, name)) def generate_binding(self, name, *args, **kwargs) -> property: diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index dedc9a4a..394c3eeb 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -42,7 +42,7 @@ def _updateInterface(self, interface_call: str = None): self.interface is not None and \ (interface_call is None or interface_call == 'background'): # TODO: At the moment we're only going to support 1 BG as there are no experiments yet. - self.interface.generate_binding(self._backgrounds, self._backgrounds[0], ifun=self.interface.generate_background_bindings) + self.interface.generate_bindings(self._backgrounds, self._backgrounds[0], ifun=self.interface.generate_background_binding) def get_phase(self, phase_index): return self._phases[phase_index] @@ -55,8 +55,8 @@ def set_background(self, background): self._updateInterface(interface_call='background') def remove_background(self, background): - if background.linked_experiment in self._backgrounds.linked_experiments: - del self._backgrounds[background.linked_experiment] + if background.linked_experiment.raw_value in self._backgrounds.linked_experiments: + del self._backgrounds[background.linked_experiment.raw_value] self._updateInterface(interface_call='background') else: raise ValueError From f3e535d888a24757305f5b34b67e787100e1c475 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 16 Nov 2020 14:29:15 +0100 Subject: [PATCH 090/312] Update background label --- .../Elements/Backgrounds/Background.py | 2 +- easyDiffractionLib/Elements/Backgrounds/Point.py | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/easyDiffractionLib/Elements/Backgrounds/Background.py b/easyDiffractionLib/Elements/Backgrounds/Background.py index 6928977c..7312da48 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Background.py +++ b/easyDiffractionLib/Elements/Backgrounds/Background.py @@ -38,7 +38,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: class BackgroundContainer(BaseCollection): def __init__(self, *args, interface=None, **kwargs): - super(BackgroundContainer, self).__init__('instrument', *args, **kwargs) + super(BackgroundContainer, self).__init__('Instrument', *args, **kwargs) self.interface = interface @property diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index d7692b6f..e70b00fe 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -12,15 +12,15 @@ class BackgroundPoint(BaseObj): def __init__(self, x: Descriptor, y: Parameter): x._callback = property(fget=None, - fset=lambda obj, x_value: self._modify_x_label(obj, x_value), + fset=lambda x_value: self._modify_x_label(x_value), fdel=None) - super(BackgroundPoint, self).__init__('background_point', x=x, y=y) + super(BackgroundPoint, self).__init__('{:.1f}_deg'.format(x.raw_value).replace(".", ","), x=x, y=y) @classmethod def from_pars(cls, x: float, y: float): - x = Descriptor('{:.1f}'.format(x), x) - y = Parameter('y', y, fixed=True) + x = Descriptor('x', x) + y = Parameter('intensity', y, fixed=True) return cls(x, y) @classmethod @@ -30,9 +30,9 @@ def default(cls): def set(self, value): self.y = value - @staticmethod - def _modify_x_label(obj: Descriptor, value: float): - obj.name = '{:.1f}'.format(value) + + def _modify_x_label(self, value: float): + self.name = '{:.1f}_deg'.format(value).replace(".", ",") class PointBackground(Background): From c22dd18a70b8fb8a688474c2cb412613bedd5b6b Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 16 Nov 2020 15:03:52 +0100 Subject: [PATCH 091/312] Sorted backgrounds --- .../Elements/Backgrounds/Point.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index e70b00fe..55a79168 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -1,7 +1,7 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -from typing import Union +from typing import Union, List from easyCore import np from easyCore.Objects.Groups import BaseCollection @@ -30,7 +30,6 @@ def default(cls): def set(self, value): self.y = value - def _modify_x_label(self, value: float): self.name = '{:.1f}_deg'.format(value).replace(".", ",") @@ -90,3 +89,19 @@ def append(self, item: BackgroundPoint): if item.x.raw_value in self.x_points: raise AttributeError(f'An BackgroundPoint at {item.x.raw_value} already exists.') super(PointBackground, self).append(item) + + # def as_dict(self, skip: list = None): + # this_dict = super(PointBackground, self).as_dict(skip=skip) + # old_data = this_dict['data'] + # idx = np.array([item.x.raw_value for item in self]).argsort() + # new_data = old_data[idx] + # this_dict['data'] = new_data + # return this_dict + + def get_parameters(self) -> List[Parameter]: + """" + Redefine get_parameters so that the returned values are in th correct order + """ + list_pars = np.array(super(PointBackground, self).get_parameters()) + idx = np.array([item.x.raw_value for item in self]).argsort() + return list_pars[idx].tolist() From a413ae824e641098dabf963f65049b7c7f73984c Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 16 Nov 2020 15:29:48 +0100 Subject: [PATCH 092/312] Some changes to fix background --- .../Elements/Backgrounds/Point.py | 7 ++-- .../Elements/Instruments/Instrument.py | 42 +++++++++++++------ 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index 55a79168..c7262fd9 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -10,12 +10,13 @@ class BackgroundPoint(BaseObj): - def __init__(self, x: Descriptor, y: Parameter): + def __init__(self, x: Descriptor, y: Parameter, name=None): + if name is None: + name = '{:.1f}_deg'.format(x.raw_value).replace(".", ",") x._callback = property(fget=None, fset=lambda x_value: self._modify_x_label(x_value), fdel=None) - super(BackgroundPoint, self).__init__('{:.1f}_deg'.format(x.raw_value).replace(".", ","), x=x, y=y) - + super(BackgroundPoint, self).__init__(name, x=x, y=y) @classmethod def from_pars(cls, x: float, y: float): diff --git a/easyDiffractionLib/Elements/Instruments/Instrument.py b/easyDiffractionLib/Elements/Instruments/Instrument.py index 7d804f29..245c42bf 100644 --- a/easyDiffractionLib/Elements/Instruments/Instrument.py +++ b/easyDiffractionLib/Elements/Instruments/Instrument.py @@ -33,7 +33,7 @@ class Pattern(BaseObj): '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', - 'name': 'u_resolution', + 'name': 'resolution_u', 'value': 0.0002, 'fixed': True }, @@ -41,7 +41,7 @@ class Pattern(BaseObj): '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', - 'name': 'v_resolution', + 'name': 'resolution_v', 'value': -0.0002, 'fixed': True @@ -50,7 +50,7 @@ class Pattern(BaseObj): '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', - 'name': 'w_resolution', + 'name': 'resolution_w', 'value': 0.012, 'fixed': True @@ -59,20 +59,29 @@ class Pattern(BaseObj): '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', - 'name': 'x_resolution', - 'value': 0.012, + 'name': 'resolution_x', + 'value': 0.0, + 'fixed': True + }, + 'y_resolution': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_y', + 'value': 0.0, 'fixed': True } } def __init__(self, zero_shift: Parameter, wavelength: Parameter, - u_resolution: Parameter, v_resolution: Parameter, w_resolution: Parameter, x_resolution: Parameter, + u_resolution: Parameter, v_resolution: Parameter, w_resolution: Parameter, + x_resolution: Parameter, y_resolution: Parameter, interface=None): super().__init__(self.__class__.__name__, zero_shift=zero_shift, wavelength=wavelength, - u_resolution=u_resolution, v_resolution=v_resolution, - w_resolution=w_resolution, x_resolution=x_resolution) + u_resolution=u_resolution, v_resolution=v_resolution, w_resolution=w_resolution, + x_resolution=x_resolution, y_resolution=y_resolution) self.name = self._name self.interface = interface @@ -83,7 +92,9 @@ def from_pars(cls, u_resolution: float = _defaults['u_resolution']['value'], v_resolution: float = _defaults['v_resolution']['value'], w_resolution: float = _defaults['w_resolution']['value'], - x_resolution: float = _defaults['x_resolution']['value']): + x_resolution: float = _defaults['x_resolution']['value'], + y_resolution: float = _defaults['y_resolution']['value'] + ): defaults = deepcopy(cls._defaults) defaults['zero_shift']['value'] = zero_shift zero_shift = _decoder.process_decoded(defaults['zero_shift']) @@ -97,8 +108,11 @@ def from_pars(cls, w_resolution = _decoder.process_decoded(defaults['w_resolution']) defaults['x_resolution']['value'] = x_resolution x_resolution = _decoder.process_decoded(defaults['x_resolution']) - return cls(zero_shift=zero_shift, wavelength=wavelength, u_resolution=u_resolution, - v_resolution=v_resolution, w_resolution=w_resolution, x_resolution=x_resolution) + defaults['y_resolution']['value'] = y_resolution + y_resolution = _decoder.process_decoded(defaults['y_resolution']) + return cls(zero_shift=zero_shift, wavelength=wavelength, + u_resolution=u_resolution, v_resolution=v_resolution, w_resolution=w_resolution, + x_resolution=x_resolution, y_resolution=y_resolution) @classmethod def default(cls): @@ -109,5 +123,7 @@ def default(cls): v_resolution = _decoder.process_decoded(defaults['v_resolution']) w_resolution = _decoder.process_decoded(defaults['w_resolution']) x_resolution = _decoder.process_decoded(defaults['x_resolution']) - return cls(zero_shift=zero_shift, wavelength=wavelength, u_resolution=u_resolution, - v_resolution=v_resolution, w_resolution=w_resolution, x_resolution=x_resolution) + y_resolution = _decoder.process_decoded(defaults['y_resolution']) + return cls(zero_shift=zero_shift, wavelength=wavelength, + u_resolution=u_resolution, v_resolution=v_resolution, w_resolution=w_resolution, + x_resolution=x_resolution, y_resolution=y_resolution) From b2da34587afed658310ff0442ff10028be54e6e5 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 16 Nov 2020 15:48:46 +0100 Subject: [PATCH 093/312] Rename instrument resolution vars --- .../Elements/Instruments/Instrument.py | 66 +++++++++---------- easyDiffractionLib/Interfaces/CFML.py | 9 +-- easyDiffractionLib/Interfaces/GSASII.py | 9 +-- easyDiffractionLib/Interfaces/cryspy.py | 9 +-- 4 files changed, 48 insertions(+), 45 deletions(-) diff --git a/easyDiffractionLib/Elements/Instruments/Instrument.py b/easyDiffractionLib/Elements/Instruments/Instrument.py index 245c42bf..634ee48b 100644 --- a/easyDiffractionLib/Elements/Instruments/Instrument.py +++ b/easyDiffractionLib/Elements/Instruments/Instrument.py @@ -29,7 +29,7 @@ class Pattern(BaseObj): 'value': 1.54056, 'fixed': True }, - 'u_resolution': { + 'resolution_u': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', @@ -37,7 +37,7 @@ class Pattern(BaseObj): 'value': 0.0002, 'fixed': True }, - 'v_resolution': { + 'resolution_v': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', @@ -46,7 +46,7 @@ class Pattern(BaseObj): 'fixed': True }, - 'w_resolution': { + 'resolution_w': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', @@ -55,7 +55,7 @@ class Pattern(BaseObj): 'fixed': True }, - 'x_resolution': { + 'resolution_x': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', @@ -63,7 +63,7 @@ class Pattern(BaseObj): 'value': 0.0, 'fixed': True }, - 'y_resolution': { + 'resolution_y': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', @@ -75,13 +75,13 @@ class Pattern(BaseObj): def __init__(self, zero_shift: Parameter, wavelength: Parameter, - u_resolution: Parameter, v_resolution: Parameter, w_resolution: Parameter, - x_resolution: Parameter, y_resolution: Parameter, + resolution_u: Parameter, resolution_v: Parameter, resolution_w: Parameter, + resolution_x: Parameter, resolution_y: Parameter, interface=None): super().__init__(self.__class__.__name__, zero_shift=zero_shift, wavelength=wavelength, - u_resolution=u_resolution, v_resolution=v_resolution, w_resolution=w_resolution, - x_resolution=x_resolution, y_resolution=y_resolution) + resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, + resolution_x=resolution_x, resolution_y=resolution_y) self.name = self._name self.interface = interface @@ -89,41 +89,41 @@ def __init__(self, def from_pars(cls, zero_shift: float = _defaults['zero_shift']['value'], wavelength: float = _defaults['wavelength']['value'], - u_resolution: float = _defaults['u_resolution']['value'], - v_resolution: float = _defaults['v_resolution']['value'], - w_resolution: float = _defaults['w_resolution']['value'], - x_resolution: float = _defaults['x_resolution']['value'], - y_resolution: float = _defaults['y_resolution']['value'] + resolution_u: float = _defaults['resolution_u']['value'], + resolution_v: float = _defaults['resolution_v']['value'], + resolution_w: float = _defaults['resolution_w']['value'], + resolution_x: float = _defaults['resolution_x']['value'], + resolution_y: float = _defaults['resolution_y']['value'] ): defaults = deepcopy(cls._defaults) defaults['zero_shift']['value'] = zero_shift zero_shift = _decoder.process_decoded(defaults['zero_shift']) defaults['wavelength']['value'] = wavelength wavelength = _decoder.process_decoded(defaults['wavelength']) - defaults['u_resolution']['value'] = u_resolution - u_resolution = _decoder.process_decoded(defaults['u_resolution']) - defaults['v_resolution']['value'] = v_resolution - v_resolution = _decoder.process_decoded(defaults['v_resolution']) - defaults['w_resolution']['value'] = w_resolution - w_resolution = _decoder.process_decoded(defaults['w_resolution']) - defaults['x_resolution']['value'] = x_resolution - x_resolution = _decoder.process_decoded(defaults['x_resolution']) - defaults['y_resolution']['value'] = y_resolution - y_resolution = _decoder.process_decoded(defaults['y_resolution']) + defaults['resolution_u']['value'] = resolution_u + resolution_u = _decoder.process_decoded(defaults['resolution_u']) + defaults['resolution_v']['value'] = resolution_v + resolution_v = _decoder.process_decoded(defaults['resolution_v']) + defaults['resolution_w']['value'] = resolution_w + resolution_w = _decoder.process_decoded(defaults['resolution_w']) + defaults['resolution_x']['value'] = resolution_x + resolution_x = _decoder.process_decoded(defaults['resolution_x']) + defaults['resolution_y']['value'] = resolution_y + resolution_y = _decoder.process_decoded(defaults['resolution_y']) return cls(zero_shift=zero_shift, wavelength=wavelength, - u_resolution=u_resolution, v_resolution=v_resolution, w_resolution=w_resolution, - x_resolution=x_resolution, y_resolution=y_resolution) + resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, + resolution_x=resolution_x, resolution_y=resolution_y) @classmethod def default(cls): defaults = deepcopy(cls._defaults) zero_shift = _decoder.process_decoded(defaults['zero_shift']) wavelength = _decoder.process_decoded(defaults['wavelength']) - u_resolution = _decoder.process_decoded(defaults['u_resolution']) - v_resolution = _decoder.process_decoded(defaults['v_resolution']) - w_resolution = _decoder.process_decoded(defaults['w_resolution']) - x_resolution = _decoder.process_decoded(defaults['x_resolution']) - y_resolution = _decoder.process_decoded(defaults['y_resolution']) + resolution_u = _decoder.process_decoded(defaults['resolution_u']) + resolution_v = _decoder.process_decoded(defaults['resolution_v']) + resolution_w = _decoder.process_decoded(defaults['resolution_w']) + resolution_x = _decoder.process_decoded(defaults['resolution_x']) + resolution_y = _decoder.process_decoded(defaults['resolution_y']) return cls(zero_shift=zero_shift, wavelength=wavelength, - u_resolution=u_resolution, v_resolution=v_resolution, w_resolution=w_resolution, - x_resolution=x_resolution, y_resolution=y_resolution) + resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, + resolution_x=resolution_x, resolution_y=resolution_y) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 5743cb15..79c3deb9 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -18,10 +18,11 @@ class CFML(InterfaceTemplate): 'filename': 'filename'} _instrument_link = { - 'u_resolution': 'u_resolution', - 'v_resolution': 'v_resolution', - 'w_resolution': 'w_resolution', - 'x_resolution': 'x_resolution', + 'resolution_u': 'u_resolution', + 'resolution_v': 'v_resolution', + 'resolution_w': 'w_resolution', + 'resolution_x': 'x_resolution', + 'resolution_y': 'y_resolution', 'wavelength': 'lamb' } diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 8abbf5c8..2be384b9 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -18,10 +18,11 @@ class GSASII(InterfaceTemplate): 'filename': 'filename'} _instrument_link = { - 'u_resolution': 'u', - 'v_resolution': 'v', - 'w_resolution': 'w', - 'x_resolution': 'x', + 'resolution_u': 'u', + 'resolution_v': 'v', + 'resolution_w': 'w', + 'resolution_x': 'x', + 'resolution_y': 'y', 'wavelength': 'wavelength' } diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 523acef8..7629d738 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -18,10 +18,11 @@ class Cryspy(InterfaceTemplate): 'cif_str': 'cif_str'} _instrument_link = { - 'u_resolution': 'u', - 'v_resolution': 'v', - 'w_resolution': 'w', - 'x_resolution': 'x', + 'resolution_u': 'u', + 'resolution_v': 'v', + 'resolution_w': 'w', + 'resolution_x': 'x', + 'resolution_y': 'y', 'wavelength': 'wavelength' } From 18691434b814a28e87bce80bdbe5941045efe425 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 16 Nov 2020 15:55:57 +0100 Subject: [PATCH 094/312] Add point names --- easyDiffractionLib/Elements/Backgrounds/Point.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index c7262fd9..e1da9206 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -48,9 +48,9 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: y = np.zeros_like(reduced_x) low_x = x_array.flat[0] - x_points = self.x_points + x_points = self.x_sorted_points low_y = 0 - y_points = self.y_points + y_points = self.y_sorted_points for point, intensity in zip(x_points, y_points): idx = (reduced_x >= low_x) & (reduced_x < point) @@ -73,21 +73,25 @@ def __delitem__(self, key): return super(PointBackground, self).__delitem__(key) @property - def x_points(self): + def x_sorted_points(self): x = np.array([item.x.raw_value for item in self]) x.sort() return x @property - def y_points(self): + def y_sorted_points(self): idx = np.array([item.x.raw_value for item in self]).argsort() y = np.array([item.y.raw_value for item in self]) return y[idx] + @property + def names(self): + return [item.name for item in self] + def append(self, item: BackgroundPoint): if not isinstance(item, BackgroundPoint): raise TypeError('Item must be a BackgroundPoint') - if item.x.raw_value in self.x_points: + if item.x.raw_value in self.x_sorted_points: raise AttributeError(f'An BackgroundPoint at {item.x.raw_value} already exists.') super(PointBackground, self).append(item) From 40ee09f2d6b522ebfac0febb2de2f1951ed05116 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 16 Nov 2020 16:19:51 +0100 Subject: [PATCH 095/312] Point upper/lower --- easyDiffractionLib/Elements/Backgrounds/Point.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index e1da9206..46fb2c05 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -53,7 +53,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: y_points = self.y_sorted_points for point, intensity in zip(x_points, y_points): - idx = (reduced_x >= low_x) & (reduced_x < point) + idx = (reduced_x > low_x) & (reduced_x <= point) if np.any(idx): y[idx] = np.interp(reduced_x[idx], [low_x, point], [low_y, intensity]) low_x = point From e0943f753b8054d86fc791c365364701e51b8537 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 16 Nov 2020 17:19:33 +0100 Subject: [PATCH 096/312] Scale and x_offset implemented --- easyDiffractionLib/Calculators/CFML.py | 19 +++-- easyDiffractionLib/Calculators/GSASII.py | 21 ++++-- easyDiffractionLib/Calculators/cryspy.py | 20 ++++-- .../Experiment.py} | 23 ++---- .../Elements/Experiments/Pattern.py | 70 +++++++++++++++++++ .../{Instruments => Experiments}/__init__.py | 0 easyDiffractionLib/Interfaces/CFML.py | 17 +++++ easyDiffractionLib/Interfaces/GSASII.py | 12 ++++ easyDiffractionLib/Interfaces/cryspy.py | 12 ++++ easyDiffractionLib/interface.py | 27 +++++++ easyDiffractionLib/sample.py | 36 ++++++---- tests/WorkedExample2.ipynb | 4 +- tests/test1.py | 4 +- tests/test3.py | 4 +- tests/workedExample1.ipynb | 6 +- 15 files changed, 220 insertions(+), 55 deletions(-) rename easyDiffractionLib/Elements/{Instruments/Instrument.py => Experiments/Experiment.py} (84%) create mode 100644 easyDiffractionLib/Elements/Experiments/Pattern.py rename easyDiffractionLib/Elements/{Instruments => Experiments}/__init__.py (100%) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 2aaa55c7..a87d26e9 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -17,6 +17,7 @@ def __init__(self, filename: str = None): self.conditions = CFML_api.PowderPatternSimulationConditions() self.conditions.bkg = 0.0 self.background = None + self.pattern = None def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -31,6 +32,14 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: print("self.filename", self.filename ) + if self.pattern is None: + scale = 1.0 + offset = 0 + else: + scale = self.pattern.scale.raw_value + offset = self.pattern.zero_shift.raw_value + + this_x_array = x_array.copy() + offset # Sample parameters cif_file = CFML_api.CIFFile(self.filename) @@ -43,8 +52,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: #atom_list.print_description() # Experiment/Instrumnet/Simulation parameters - x_min = x_array[0] - x_max = x_array[-1] + x_min = this_x_array[0] + x_max = this_x_array[-1] num_points = np.prod(x_array.shape) self.conditions.theta_min = x_min self.conditions.theta_max = x_max @@ -68,8 +77,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: p.unlink() if self.background is None: - bg = np.zeros_like(x_array) + bg = np.zeros_like(this_x_array) else: - bg = self.background.calculate(x_array) + bg = self.background.calculate(this_x_array) - return diffraction_pattern.y + bg + return scale*diffraction_pattern.y + bg diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index cfc308e5..703b4fa7 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -26,6 +26,8 @@ def __init__(self, filename: str = None): } self.filename = filename self.background = None + self.pattern = None + def create_temp_prm(self): if self.filename is None: @@ -52,6 +54,15 @@ def create_temp_prm(self): def calculate(self, x_array: np.ndarray) -> np.ndarray: self.create_temp_prm() + if self.pattern is None: + scale = 1.0 + offset = 0 + else: + scale = self.pattern.scale.raw_value + offset = self.pattern.zero_shift.raw_value + + this_x_array = x_array.copy() + offset + gpx = G2sc.G2Project(newgpx=os.path.join(self.prm_dir_path, 'easydiffraction_temp.gpx')) # create a project # step 1, setup: add a phase to the project @@ -60,8 +71,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: gpx.add_phase(cif_file, phasename=phase_name, fmthint='CIF') # step 2, setup: add a simulated histogram and link it to the previous phase(s) - x_min = x_array[0] - x_max = x_array[-1] + x_min = this_x_array[0] + x_max = this_x_array[-1] n_points = np.prod(x_array.shape) x_step = (x_max-x_min)/(n_points - 1) gpx.add_simulated_powder_histogram(f"{phase_name} simulation", @@ -103,8 +114,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: p.unlink() if self.background is None: - bg = np.zeros_like(x_array) + bg = np.zeros_like(this_x_array) else: - bg = self.background.calculate(x_array) + bg = self.background.calculate(this_x_array) - return ycalc + bg + return scale*ycalc + bg diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 02f93927..6b3e9e5b 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -6,8 +6,10 @@ import cryspy import warnings + warnings.filterwarnings('ignore') + class Cryspy: def __init__(self): @@ -24,6 +26,7 @@ def __init__(self): } self.background = None + self.pattern = None def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -36,6 +39,15 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if not self.cif_str: raise AttributeError + if self.pattern is None: + scale = 1.0 + offset = 0 + else: + scale = self.pattern.scale.raw_value + offset = self.pattern.zero_shift.raw_value + + this_x_array = x_array.copy() + offset + if borg.debug: print('CALLING FROM Cryspy\n----------------------') print(self.conditions) @@ -49,11 +61,11 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: background = cryspy.PdBackgroundL() resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) - profile = pd.calc_profile(x_array, [crystal], True, False) + profile = pd.calc_profile(this_x_array, [crystal], True, False) if self.background is None: - bg = np.zeros_like(x_array) + bg = np.zeros_like(this_x_array) else: - bg = self.background.calculate(x_array) + bg = self.background.calculate(this_x_array) - return np.array(profile.intensity_total) + bg + return scale * np.array(profile.intensity_total) + bg diff --git a/easyDiffractionLib/Elements/Instruments/Instrument.py b/easyDiffractionLib/Elements/Experiments/Experiment.py similarity index 84% rename from easyDiffractionLib/Elements/Instruments/Instrument.py rename to easyDiffractionLib/Elements/Experiments/Experiment.py index 634ee48b..feffb550 100644 --- a/easyDiffractionLib/Elements/Instruments/Instrument.py +++ b/easyDiffractionLib/Elements/Experiments/Experiment.py @@ -8,18 +8,9 @@ _decoder = MontyDecoder() -class Pattern(BaseObj): +class Pars1D(BaseObj): _name = 'Instrument' _defaults = { - 'zero_shift': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'zero_shift', - 'units': 'degree', - 'value': 0.0, - 'fixed': True - }, 'wavelength': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', @@ -74,12 +65,12 @@ class Pattern(BaseObj): } def __init__(self, - zero_shift: Parameter, wavelength: Parameter, + wavelength: Parameter, resolution_u: Parameter, resolution_v: Parameter, resolution_w: Parameter, resolution_x: Parameter, resolution_y: Parameter, interface=None): super().__init__(self.__class__.__name__, - zero_shift=zero_shift, wavelength=wavelength, + wavelength=wavelength, resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, resolution_x=resolution_x, resolution_y=resolution_y) self.name = self._name @@ -87,7 +78,6 @@ def __init__(self, @classmethod def from_pars(cls, - zero_shift: float = _defaults['zero_shift']['value'], wavelength: float = _defaults['wavelength']['value'], resolution_u: float = _defaults['resolution_u']['value'], resolution_v: float = _defaults['resolution_v']['value'], @@ -96,8 +86,6 @@ def from_pars(cls, resolution_y: float = _defaults['resolution_y']['value'] ): defaults = deepcopy(cls._defaults) - defaults['zero_shift']['value'] = zero_shift - zero_shift = _decoder.process_decoded(defaults['zero_shift']) defaults['wavelength']['value'] = wavelength wavelength = _decoder.process_decoded(defaults['wavelength']) defaults['resolution_u']['value'] = resolution_u @@ -110,20 +98,19 @@ def from_pars(cls, resolution_x = _decoder.process_decoded(defaults['resolution_x']) defaults['resolution_y']['value'] = resolution_y resolution_y = _decoder.process_decoded(defaults['resolution_y']) - return cls(zero_shift=zero_shift, wavelength=wavelength, + return cls(wavelength=wavelength, resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, resolution_x=resolution_x, resolution_y=resolution_y) @classmethod def default(cls): defaults = deepcopy(cls._defaults) - zero_shift = _decoder.process_decoded(defaults['zero_shift']) wavelength = _decoder.process_decoded(defaults['wavelength']) resolution_u = _decoder.process_decoded(defaults['resolution_u']) resolution_v = _decoder.process_decoded(defaults['resolution_v']) resolution_w = _decoder.process_decoded(defaults['resolution_w']) resolution_x = _decoder.process_decoded(defaults['resolution_x']) resolution_y = _decoder.process_decoded(defaults['resolution_y']) - return cls(zero_shift=zero_shift, wavelength=wavelength, + return cls(wavelength=wavelength, resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, resolution_x=resolution_x, resolution_y=resolution_y) diff --git a/easyDiffractionLib/Elements/Experiments/Pattern.py b/easyDiffractionLib/Elements/Experiments/Pattern.py new file mode 100644 index 00000000..73e5d543 --- /dev/null +++ b/easyDiffractionLib/Elements/Experiments/Pattern.py @@ -0,0 +1,70 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCore.Objects.Base import BaseObj, Parameter +from copy import deepcopy +from easyCore.Utils.json import MontyDecoder +from easyDiffractionLib.Elements.Backgrounds.Background import BackgroundContainer +_decoder = MontyDecoder() + + +class Pattern1D(BaseObj): + _name = 'Instrument' + _defaults = { + 'zero_shift': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'zero_shift', + 'units': 'degree', + 'value': 0.0, + 'fixed': True + }, + 'scale': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'scale', + 'value': 1, + 'fixed': True + }, + 'backgrounds': { + '@module': 'easyDiffractionLib.Elements.Backgrounds.Background', + '@class': 'BackgroundContainer', + '@version': '0.0.1', + 'data': [], + } + } + + def __init__(self, + zero_shift: Parameter, scale: Parameter, + backgrounds: BackgroundContainer, + interface=None): + super().__init__(self.__class__.__name__, + zero_shift=zero_shift, scale=scale, + backgrounds=backgrounds) + self.name = self._name + self.interface = interface + + @classmethod + def from_pars(cls, + zero_shift: float = _defaults['zero_shift']['value'], + scale: float = _defaults['scale']['value'] + ): + defaults = deepcopy(cls._defaults) + defaults['zero_shift']['value'] = zero_shift + zero_shift = _decoder.process_decoded(defaults['zero_shift']) + defaults['scale']['value'] = scale + scale = _decoder.process_decoded(defaults['scale']) + backgrounds = BackgroundContainer() + return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) + + @classmethod + def default(cls): + defaults = deepcopy(cls._defaults) + zero_shift = _decoder.process_decoded(defaults['zero_shift']) + scale = _decoder.process_decoded(defaults['scale']) + backgrounds = BackgroundContainer() + + return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) + diff --git a/easyDiffractionLib/Elements/Instruments/__init__.py b/easyDiffractionLib/Elements/Experiments/__init__.py similarity index 100% rename from easyDiffractionLib/Elements/Instruments/__init__.py rename to easyDiffractionLib/Elements/Experiments/__init__.py diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 79c3deb9..efbe50f0 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -26,6 +26,11 @@ class CFML(InterfaceTemplate): 'wavelength': 'lamb' } + _pattern_link = { + 'scale': 'scale', + 'x_offset': 'x_offset' + } + name = 'CrysFML' def __init__(self): @@ -118,6 +123,18 @@ def set_background_value(self, background, value_label: int, value: float): # else: # raise IndexError + def set_pattern_value(self, pattern, value_label: int, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + self.calculator.pattern = pattern + def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): """ Perform an update of multiple values at once to save time on expensive updates diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 2be384b9..3568a7c1 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -74,6 +74,18 @@ def get_background_value(self, background, value_label: int) -> float: # else: # raise IndexError + def set_pattern_value(self, pattern, value_label: int, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + self.calculator.pattern = pattern + def set_background_value(self, background, value_label: int, value: float): """ Method to set a value from the calculator diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 7629d738..13a493a0 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -123,6 +123,18 @@ def set_background_value(self, background, value_label: int, value: float): # else: # raise IndexError + def set_pattern_value(self, pattern, value_label: int, value: float): + """ + Method to set a value from the calculator + :param value_label: parameter name to get + :type value_label: str + :param value: new numeric value + :type value: float + :return: None + :rtype: noneType + """ + self.calculator.pattern = pattern + def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): """ Perform an update of multiple values at once to save time on expensive updates diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 1d922407..345dee37 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -46,6 +46,17 @@ def generate_background_binding(self, name, background) -> property: return property(fget=None, fset=self.__set_background_item(self, background, name)) + def generate_pattern_binding(self, name, pattern) -> property: + """ + Automatically bind a `Parameter` to the corresponding interface. + :param name: parameter name + :type name: str + :return: binding property + :rtype: property + """ + return property(fget=None, + fset=self.__set_pattern_item(self, pattern, name)) + def generate_binding(self, name, *args, **kwargs) -> property: """ Automatically bind a `Parameter` to the corresponding interface. @@ -183,3 +194,19 @@ def __set_background_item(obj, background, index) -> Callable: def inner(value): obj().set_background_value(background, index, value) return inner + + @staticmethod + def __set_pattern_item(obj, pattern, index) -> Callable: + """ + Set the value of a key by a callable object + :param obj: object to be created from + :type obj: InterfaceFactory + :param key: name of parameter to be set + :type key: str + :return: function to set key + :rtype: Callable + """ + + def inner(value): + obj().set_pattern_value(pattern, index, value) + return inner diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 394c3eeb..fc779d3f 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -6,12 +6,14 @@ from easyCore.Objects.Base import BaseObj from easyDiffractionLib import Crystal, Crystals -from easyDiffractionLib.Elements.Instruments.Instrument import Pattern -from easyDiffractionLib.Elements.Backgrounds.Background import BackgroundContainer +from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D +from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D class Sample(BaseObj): - def __init__(self, phases: Union[Crystal, Crystals] = None, parameters=None, backgrounds=None, interface=None, name: str = 'easySample'): + def __init__(self, phases: Union[Crystal, Crystals] = None, + parameters=None, pattern=None, + interface=None, name: str = 'easySample'): if isinstance(phases, Crystal): phases = Crystals('Phases', phases) elif phases is None: @@ -20,10 +22,11 @@ def __init__(self, phases: Union[Crystal, Crystals] = None, parameters=None, bac if not isinstance(phases, Crystals): raise AttributeError('`phases` must be a Crystal or Crystals') - if backgrounds is None: - backgrounds = BackgroundContainer() + if pattern is None: + pattern = Pattern1D.default() + + super(Sample, self).__init__(name, _phases=phases, _parameters=parameters, _pattern=pattern) - super(Sample, self).__init__(name, _phases=phases, _parameters=parameters, _backgrounds=backgrounds) self.interface = interface self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') print(f"Temp CIF: {self.filename}") @@ -38,32 +41,33 @@ def _updateInterface(self, interface_call: str = None): if self._parameters is not None and \ (interface_call is None or interface_call == 'pars'): self.interface.generate_bindings(self._parameters, ifun=self.interface.generate_instrument_binding) - if len(self._backgrounds) > 0 and \ + self.interface.generate_bindings(self._pattern, self._pattern, ifun=self.interface.generate_pattern_binding) + if len(self._pattern.backgrounds) > 0 and \ self.interface is not None and \ (interface_call is None or interface_call == 'background'): # TODO: At the moment we're only going to support 1 BG as there are no experiments yet. - self.interface.generate_bindings(self._backgrounds, self._backgrounds[0], ifun=self.interface.generate_background_binding) + self.interface.generate_bindings(self._pattern.backgrounds, self._pattern.backgrounds[0], ifun=self.interface.generate_background_binding) def get_phase(self, phase_index): return self._phases[phase_index] def get_background(self, experiment_name: str): - return self._backgrounds[experiment_name] + return self._pattern.backgrounds[experiment_name] def set_background(self, background): - self._backgrounds.append(background) + self._pattern.backgrounds.append(background) self._updateInterface(interface_call='background') def remove_background(self, background): - if background.linked_experiment.raw_value in self._backgrounds.linked_experiments: - del self._backgrounds[background.linked_experiment.raw_value] + if background.linked_experiment.raw_value in self._pattern.backgrounds.linked_experiments: + del self._pattern.backgrounds[background.linked_experiment.raw_value] self._updateInterface(interface_call='background') else: raise ValueError @property def backgrounds(self): - return self._backgrounds + return self._pattern.backgrounds @property def phases(self): @@ -85,10 +89,14 @@ def parameters(self): @parameters.setter def parameters(self, value): - if not isinstance(value, Pattern): + if not isinstance(value, Pars1D): raise ValueError self._parameters = value self._updateInterface(interface_call='pars') def update_bindings(self): self._updateInterface() + + @property + def pattern(self): + return self._pattern diff --git a/tests/WorkedExample2.ipynb b/tests/WorkedExample2.ipynb index 50823578..ed0af2b2 100644 --- a/tests/WorkedExample2.ipynb +++ b/tests/WorkedExample2.ipynb @@ -32,7 +32,7 @@ "from easyDiffractionLib.sample import Sample\n", "from easyDiffractionLib import Crystals\n", "from easyDiffractionLib.interface import InterfaceFactory\n", - "from easyDiffractionLib.Elements.Instruments.Instrument import Pattern\n", + "from easyDiffractionLib.Elements.Instruments.Instrument import Pars1D\n", "from easyCore.Fitting.Fitting import Fitter\n", "\n", "import matplotlib.pyplot as plt" @@ -60,7 +60,7 @@ "source": [ "interface = InterfaceFactory()\n", "c = Crystals.from_cif_file('SrTiO3.cif')\n", - "S = Sample(phases=c, parameters=Pattern.default(), interface=interface)\n", + "S = Sample(phases=c, parameters=Pars1D.default(), interface=interface)\n", "S.parameters.u_resolution = 0.4\n", "S.parameters.v_resolution = -0.5\n", "S.parameters.w_resolution = 0.9\n", diff --git a/tests/test1.py b/tests/test1.py index 8930e476..8106a644 100644 --- a/tests/test1.py +++ b/tests/test1.py @@ -6,7 +6,7 @@ from easyDiffractionLib.sample import Sample from easyDiffractionLib import Crystal from easyDiffractionLib.interface import InterfaceFactory -from easyDiffractionLib.Elements.Instruments.Instrument import Pattern +from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D import matplotlib.pyplot as plt @@ -15,7 +15,7 @@ c = Crystal.from_cif_file('tests/SrTiO3.cif') -S = Sample(phases=c, parameters=Pattern(), interface=i) +S = Sample(phases=c, parameters=Pars1D(), interface=i) # S.phase.cell.length_a = 5 # S.parameters.wavelength = 1.25 # print(S) diff --git a/tests/test3.py b/tests/test3.py index 23b83706..e609562f 100644 --- a/tests/test3.py +++ b/tests/test3.py @@ -6,7 +6,7 @@ from easyDiffractionLib.sample import Sample from easyDiffractionLib import Crystal, Crystals from easyDiffractionLib.interface import InterfaceFactory -from easyDiffractionLib.Elements.Instruments.Instrument import Pattern +from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D import matplotlib.pyplot as plt @@ -15,7 +15,7 @@ c = Crystals.from_cif_file('/home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/SrTiO3.cif') -S = Sample(phases=c, parameters=Pattern(), interface=i) +S = Sample(phases=c, parameters=Pars1D(), interface=i) x_data = np.linspace(5, 150, 10000) y_data = i.fit_func(x_data) diff --git a/tests/workedExample1.ipynb b/tests/workedExample1.ipynb index 57660366..2ac80fab 100644 --- a/tests/workedExample1.ipynb +++ b/tests/workedExample1.ipynb @@ -17,7 +17,7 @@ "from easyDiffractionLib import Crystal\n", "from easyDiffractionLib.sample import Sample\n", "from easyDiffractionLib.interface import InterfaceFactory\n", - "from easyDiffractionLib.Elements.Instruments.Instrument import Pattern" + "from easyDiffractionLib.Elements.Instruments.Instrument import Pars1D" ] }, { @@ -103,7 +103,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Before we can simulate a pattern we have to create a `Pattern` with instrumental parameters. At the moment this is just the wavelength and resolution parameters" + "Before we can simulate a pattern we have to create a `Pars1D` with instrumental parameters. At the moment this is just the wavelength and resolution parameters" ] }, { @@ -112,7 +112,7 @@ "metadata": {}, "outputs": [], "source": [ - "pattern = Pattern.default()" + "pattern = Pars1D.default()" ] }, { From 58c2cb87b0ffc19d1b7864730cdc13f9653a942c Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 17 Nov 2020 10:28:51 +0100 Subject: [PATCH 097/312] Modify background label --- easyDiffractionLib/Elements/Backgrounds/Background.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easyDiffractionLib/Elements/Backgrounds/Background.py b/easyDiffractionLib/Elements/Backgrounds/Background.py index 7312da48..7cf1a615 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Background.py +++ b/easyDiffractionLib/Elements/Backgrounds/Background.py @@ -38,7 +38,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: class BackgroundContainer(BaseCollection): def __init__(self, *args, interface=None, **kwargs): - super(BackgroundContainer, self).__init__('Instrument', *args, **kwargs) + super(BackgroundContainer, self).__init__('background', *args, **kwargs) self.interface = interface @property From cec38eda3eb33c82ad2b2adca96f6f05a4903490 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 17 Nov 2020 10:33:27 +0100 Subject: [PATCH 098/312] Fix build script --- .github/workflows/test.yml | 7 +- fort.1 | 275 ------------------------------------- 2 files changed, 2 insertions(+), 280 deletions(-) delete mode 100644 fort.1 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 82b9d56c..6ba18d36 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,16 +43,13 @@ jobs: echo "pythonLocation: $pythonLocation" - name: Set up python packages manager - uses: Gr1N/setup-poetry@v2 + uses: Gr1N/setup-poetry@v4 - name: Create venv and install dependences run: poetry update - name: Relink CrysFML from default Python dylib - run: | - poetry run python tools/Scripts/RelinkCrysfml.py $pythonLocation - ls -l /opt/hostedtoolcache/Python/3.7.9/x64/lib/ - ls -l /home/runner/.cache/pypoetry/virtualenvs/easydiffractionlib-l-ltHCsT-py3.7/lib/python3.7/site-packages/libsLinux/CFML/ + run: poetry run python tools/Scripts/RelinkCrysfml.py $pythonLocation - name: Run main.py run: poetry run easyDiffractionLib diff --git a/fort.1 b/fort.1 deleted file mode 100644 index e880dd4d..00000000 --- a/fort.1 +++ /dev/null @@ -1,275 +0,0 @@ - - INFORMATION FROM TABULATED NEUTRON SCATTERING FACTORS - =================================================== - - FERMI LENGTHS - Number of chemically different species: 3 - - Atom Fermi Length [10^(-12) cm] - SR 0.702000 - TI -0.343800 - O 0.580300 - - - - - - LIST OF REFLECTIONS AND STRUCTURE FACTORS(NEUTRONS) - =================================================== - - H K L Mult SinTh/Lda dspc |Fc| Phase F-Real F-Imag |Fc|^2 Num - - 1 0 1 4 0.11093 4.50722 0.00000 180.00000 -0.00000 0.00000 0.000 1 - 1 1 0 4 0.12809 3.90337 1.87994 0.00000 1.87994 0.00000 3.534 2 - 0 0 2 2 0.12810 3.90335 1.90226 180.00000 -1.90226 0.00000 3.619 3 - 1 1 1 8 0.14321 3.49128 0.00000 180.00000 -0.00000 0.00000 0.000 4 - 2 0 0 2 0.18115 2.76010 0.77384 180.00000 -0.77384 0.00000 0.599 5 - 0 2 0 2 0.18115 2.76010 0.77384 180.00000 -0.77384 0.00000 0.599 6 - 1 1 2 8 0.18115 2.76009 0.81743 0.00000 0.81743 0.00000 0.668 7 - 0 2 1 4 0.19214 2.60225 0.00000 0.00000 0.00000 0.00000 0.000 8 - 1 2 0 4 0.20254 2.46871 0.00000 0.00000 0.00000 0.00000 0.000 9 - 2 1 0 4 0.20254 2.46871 0.00000 180.00000 -0.00000 0.00000 0.000 10 - 1 2 1 8 0.21242 2.35382 0.00000 180.00000 -0.00000 0.00000 0.000 11 - 2 1 1 8 0.21242 2.35382 0.00000 180.00000 -0.00000 0.00000 0.000 12 - 1 0 3 4 0.21242 2.35381 0.00000 0.00000 0.00000 0.00000 0.000 13 - 0 2 2 4 0.22187 2.25361 10.55901 180.00000 -10.55901 0.00000 111.493 14 - 2 0 2 4 0.22187 2.25361 10.55901 180.00000 -10.55901 0.00000 111.493 15 - 1 1 3 8 0.23093 2.16519 0.00000 180.00000 -0.00000 0.00000 0.000 16 - 2 1 2 8 0.23964 2.08644 0.00000 180.00000 -0.00000 0.00000 0.000 17 - 1 2 2 8 0.23964 2.08644 0.00000 180.00000 -0.00000 0.00000 0.000 18 - 2 2 0 4 0.25619 1.95169 7.69249 0.00000 7.69249 0.00000 59.174 19 - 0 0 4 2 0.25619 1.95168 7.69248 0.00000 7.69248 0.00000 59.174 20 - 2 2 1 8 0.26407 1.89341 0.00000 180.00000 -0.00000 0.00000 0.000 21 - 0 2 3 4 0.26407 1.89341 0.00000 180.00000 -0.00000 0.00000 0.000 22 - 3 0 1 4 0.27918 1.79099 0.00000 180.00000 -0.00000 0.00000 0.000 23 - 2 1 3 8 0.27918 1.79098 0.00000 180.00000 -0.00000 0.00000 0.000 24 - 1 2 3 8 0.27918 1.79098 0.00000 180.00000 -0.00000 0.00000 0.000 25 - 1 3 0 4 0.28643 1.74564 1.94388 0.00000 1.94388 0.00000 3.779 26 - 3 1 0 4 0.28643 1.74564 1.94388 0.00000 1.94388 0.00000 3.779 27 - 2 2 2 8 0.28643 1.74564 2.04535 180.00000 -2.04535 0.00000 4.183 28 - 1 1 4 8 0.28643 1.74563 1.94388 0.00000 1.94388 0.00000 3.779 29 - 3 1 1 8 0.29350 1.70357 0.00000 180.00000 -0.00000 0.00000 0.000 30 - 1 3 1 8 0.29350 1.70357 0.00000 180.00000 -0.00000 0.00000 0.000 31 - 3 1 2 8 0.31377 1.59354 0.68610 0.00000 0.68610 0.00000 0.471 32 - 1 3 2 8 0.31377 1.59354 0.68610 0.00000 0.68610 0.00000 0.471 33 - 0 2 4 4 0.31377 1.59354 0.56721 180.00000 -0.56721 0.00000 0.322 34 - 2 0 4 4 0.31377 1.59354 0.56721 180.00000 -0.56721 0.00000 0.322 35 - 2 2 3 8 0.32024 1.56135 0.00000 180.00000 -0.00000 0.00000 0.000 36 - 2 3 0 4 0.32658 1.53103 0.00000 180.00000 -0.00000 0.00000 0.000 37 - 3 2 0 4 0.32658 1.53103 0.00000 180.00000 -0.00000 0.00000 0.000 38 - 1 2 4 8 0.32658 1.53102 0.00000 180.00000 -0.00000 0.00000 0.000 39 - 2 1 4 8 0.32658 1.53102 0.00000 180.00000 -0.00000 0.00000 0.000 40 - 2 3 1 8 0.33280 1.50241 0.00000 180.00000 -0.00000 0.00000 0.000 41 - 3 2 1 8 0.33280 1.50241 0.00000 180.00000 -0.00000 0.00000 0.000 42 - 3 0 3 4 0.33280 1.50241 0.00000 180.00000 -0.00000 0.00000 0.000 43 - 1 0 5 4 0.33280 1.50240 0.00000 180.00000 -0.00000 0.00000 0.000 44 - 1 3 3 8 0.34491 1.44967 0.00000 180.00000 -0.00000 0.00000 0.000 45 - 3 1 3 8 0.34491 1.44967 0.00000 180.00000 -0.00000 0.00000 0.000 46 - 1 1 5 8 0.34491 1.44967 0.00000 180.00000 -0.00000 0.00000 0.000 47 - 3 2 2 8 0.35080 1.42531 0.00000 180.00000 -0.00000 0.00000 0.000 48 - 2 3 2 8 0.35080 1.42531 0.00000 180.00000 -0.00000 0.00000 0.000 49 - 0 4 0 2 0.36231 1.38005 7.05199 0.00000 7.05199 0.00000 49.731 50 - 4 0 0 2 0.36231 1.38005 7.05199 0.00000 7.05199 0.00000 49.731 51 - 2 2 4 8 0.36231 1.38005 7.05198 0.00000 7.05198 0.00000 49.730 52 - 0 4 1 4 0.36792 1.35898 0.00000 0.00000 0.00000 0.00000 0.000 53 - 0 2 5 4 0.36792 1.35897 0.00000 180.00000 -0.00000 0.00000 0.000 54 - 1 4 0 4 0.37346 1.33885 0.00000 180.00000 -0.00000 0.00000 0.000 55 - 4 1 0 4 0.37346 1.33885 0.00000 0.00000 0.00000 0.00000 0.000 56 - 1 4 1 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 57 - 4 1 1 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 58 - 3 2 3 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 59 - 2 3 3 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 60 - 1 2 5 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 61 - 2 1 5 8 0.37891 1.31958 0.00000 180.00000 -0.00000 0.00000 0.000 62 - 3 3 0 4 0.38428 1.30112 1.99623 0.00000 1.99623 0.00000 3.985 63 - 4 0 2 4 0.38428 1.30112 2.16230 180.00000 -2.16230 0.00000 4.676 64 - 0 4 2 4 0.38428 1.30112 2.16230 180.00000 -2.16230 0.00000 4.676 65 - 3 1 4 8 0.38428 1.30112 1.99624 0.00000 1.99624 0.00000 3.985 66 - 1 3 4 8 0.38428 1.30112 1.99624 0.00000 1.99624 0.00000 3.985 67 - 0 0 6 2 0.38429 1.30112 2.16230 180.00000 -2.16230 0.00000 4.676 68 - 3 3 1 8 0.38958 1.28342 0.00000 180.00000 -0.00000 0.00000 0.000 69 - 1 4 2 8 0.39481 1.26642 0.00000 180.00000 -0.00000 0.00000 0.000 70 - 4 1 2 8 0.39481 1.26642 0.00000 0.00000 0.00000 0.00000 0.000 71 - 4 2 0 4 0.40507 1.23435 0.38772 180.00000 -0.38772 0.00000 0.150 72 - 2 4 0 4 0.40507 1.23435 0.38772 180.00000 -0.38772 0.00000 0.150 73 - 3 3 2 8 0.40507 1.23435 0.56790 0.00000 0.56790 0.00000 0.323 74 - 1 1 6 8 0.40507 1.23435 0.56790 0.00000 0.56790 0.00000 0.323 75 - 2 4 1 8 0.41010 1.21921 0.00000 0.00000 0.00000 0.00000 0.000 76 - 4 2 1 8 0.41010 1.21921 0.00000 180.00000 -0.00000 0.00000 0.000 77 - 0 4 3 4 0.41010 1.21921 0.00000 180.00000 -0.00000 0.00000 0.000 78 - 2 2 5 8 0.41010 1.21920 0.00000 180.00000 -0.00000 0.00000 0.000 79 - 3 2 4 8 0.41507 1.20460 0.00000 180.00000 -0.00000 0.00000 0.000 80 - 2 3 4 8 0.41507 1.20460 0.00000 180.00000 -0.00000 0.00000 0.000 81 - 4 1 3 8 0.41999 1.19052 0.00000 0.00000 0.00000 0.00000 0.000 82 - 1 4 3 8 0.41999 1.19052 0.00000 0.00000 0.00000 0.00000 0.000 83 - 3 0 5 4 0.41999 1.19051 0.00000 180.00000 -0.00000 0.00000 0.000 84 - 4 2 2 8 0.42484 1.17691 9.16832 180.00000 -9.16832 0.00000 84.058 85 - 2 4 2 8 0.42484 1.17691 9.16832 180.00000 -9.16832 0.00000 84.058 86 - 2 0 6 4 0.42484 1.17691 9.16831 180.00000 -9.16831 0.00000 84.058 87 - 0 2 6 4 0.42484 1.17691 9.16831 180.00000 -9.16831 0.00000 84.058 88 - 3 3 3 8 0.42964 1.16376 0.00000 0.00000 0.00000 0.00000 0.000 89 - 3 1 5 8 0.42964 1.16376 0.00000 180.00000 -0.00000 0.00000 0.000 90 - 1 3 5 8 0.42964 1.16376 0.00000 180.00000 -0.00000 0.00000 0.000 91 - 2 1 6 8 0.43439 1.15104 0.00000 180.00000 -0.00000 0.00000 0.000 92 - 1 2 6 8 0.43439 1.15104 0.00000 0.00000 0.00000 0.00000 0.000 93 - 0 4 4 4 0.44373 1.12680 6.46896 0.00000 6.46896 0.00000 41.847 94 - 4 0 4 4 0.44373 1.12680 6.46896 0.00000 6.46896 0.00000 41.847 95 - 2 4 3 8 0.44833 1.11525 0.00000 180.00000 -0.00000 0.00000 0.000 96 - 4 2 3 8 0.44833 1.11525 0.00000 0.00000 0.00000 0.00000 0.000 97 - 4 3 0 4 0.45288 1.10404 0.00000 180.00000 -0.00000 0.00000 0.000 98 - 3 4 0 4 0.45288 1.10404 0.00000 180.00000 -0.00000 0.00000 0.000 99 - 4 1 4 8 0.45288 1.10404 0.00000 0.00000 0.00000 0.00000 0.000 100 - 1 4 4 8 0.45288 1.10404 0.00000 0.00000 0.00000 0.00000 0.000 101 - 4 3 1 8 0.45739 1.09316 0.00000 180.00000 -0.00000 0.00000 0.000 102 - 5 0 1 4 0.45739 1.09316 0.00000 180.00000 -0.00000 0.00000 0.000 103 - 3 4 1 8 0.45739 1.09316 0.00000 180.00000 -0.00000 0.00000 0.000 104 - 2 3 5 8 0.45739 1.09316 0.00000 0.00000 0.00000 0.00000 0.000 105 - 3 2 5 8 0.45739 1.09316 0.00000 180.00000 -0.00000 0.00000 0.000 106 - 1 0 7 4 0.45739 1.09316 0.00000 0.00000 0.00000 0.00000 0.000 107 - 5 1 0 4 0.46185 1.08260 2.03813 0.00000 2.03813 0.00000 4.154 108 - 1 5 0 4 0.46185 1.08260 2.03813 0.00000 2.03813 0.00000 4.154 109 - 3 3 4 8 0.46185 1.08260 2.03813 0.00000 2.03813 0.00000 4.154 110 - 2 2 6 8 0.46185 1.08260 2.25626 180.00000 -2.25626 0.00000 5.091 111 - 1 5 1 8 0.46627 1.07234 0.00000 180.00000 -0.00000 0.00000 0.000 112 - 5 1 1 8 0.46627 1.07234 0.00000 180.00000 -0.00000 0.00000 0.000 113 - 1 1 7 8 0.46627 1.07233 0.00000 0.00000 0.00000 0.00000 0.000 114 - 4 3 2 8 0.47065 1.06236 0.00000 180.00000 -0.00000 0.00000 0.000 115 - 3 4 2 8 0.47065 1.06236 0.00000 180.00000 -0.00000 0.00000 0.000 116 - 5 1 2 8 0.47929 1.04322 0.46167 0.00000 0.46167 0.00000 0.213 117 - 1 5 2 8 0.47929 1.04322 0.46167 0.00000 0.46167 0.00000 0.213 118 - 2 4 4 8 0.47929 1.04322 0.23228 180.00000 -0.23228 0.00000 0.054 119 - 4 2 4 8 0.47929 1.04322 0.23228 180.00000 -0.23228 0.00000 0.054 120 - 1 3 6 8 0.47929 1.04322 0.46166 0.00000 0.46166 0.00000 0.213 121 - 3 1 6 8 0.47929 1.04322 0.46166 0.00000 0.46166 0.00000 0.213 122 - 0 4 5 4 0.48355 1.03403 0.00000 0.00000 0.00000 0.00000 0.000 123 - 0 2 7 4 0.48355 1.03402 0.00000 0.00000 0.00000 0.00000 0.000 124 - 5 2 0 4 0.48777 1.02508 0.00000 180.00000 -0.00000 0.00000 0.000 125 - 2 5 0 4 0.48777 1.02508 0.00000 180.00000 -0.00000 0.00000 0.000 126 - 5 2 1 8 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 127 - 2 5 1 8 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 128 - 3 4 3 8 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 129 - 5 0 3 4 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 130 - 4 3 3 8 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 131 - 1 4 5 8 0.49196 1.01635 0.00000 0.00000 0.00000 0.00000 0.000 132 - 4 1 5 8 0.49196 1.01635 0.00000 0.00000 0.00000 0.00000 0.000 133 - 2 1 7 8 0.49196 1.01635 0.00000 180.00000 -0.00000 0.00000 0.000 134 - 1 2 7 8 0.49196 1.01635 0.00000 0.00000 0.00000 0.00000 0.000 135 - 5 1 3 8 0.50023 0.99955 0.00000 0.00000 0.00000 0.00000 0.000 136 - 1 5 3 8 0.50023 0.99955 0.00000 180.00000 -0.00000 0.00000 0.000 137 - 3 3 5 8 0.50023 0.99955 0.00000 180.00000 -0.00000 0.00000 0.000 138 - 2 5 2 8 0.50431 0.99146 0.00000 180.00000 -0.00000 0.00000 0.000 139 - 5 2 2 8 0.50431 0.99146 0.00000 180.00000 -0.00000 0.00000 0.000 140 - 3 2 6 8 0.50431 0.99145 0.00000 180.00000 -0.00000 0.00000 0.000 141 - 2 3 6 8 0.50431 0.99145 0.00000 180.00000 -0.00000 0.00000 0.000 142 - 4 4 0 4 0.51238 0.97584 5.93807 0.00000 5.93807 0.00000 35.261 143 - 0 0 8 2 0.51238 0.97584 5.93805 0.00000 5.93805 0.00000 35.260 144 - 4 4 1 8 0.51637 0.96831 0.00000 180.00000 -0.00000 0.00000 0.000 145 - 2 4 5 8 0.51637 0.96831 0.00000 180.00000 -0.00000 0.00000 0.000 146 - 4 2 5 8 0.51637 0.96831 0.00000 0.00000 0.00000 0.00000 0.000 147 - 2 2 7 8 0.51637 0.96830 0.00000 0.00000 0.00000 0.00000 0.000 148 - 4 3 4 8 0.52032 0.96094 0.00000 180.00000 -0.00000 0.00000 0.000 149 - 3 4 4 8 0.52032 0.96094 0.00000 0.00000 0.00000 0.00000 0.000 150 - 5 2 3 8 0.52425 0.95374 0.00000 180.00000 -0.00000 0.00000 0.000 151 - 2 5 3 8 0.52425 0.95374 0.00000 180.00000 -0.00000 0.00000 0.000 152 - 3 0 7 4 0.52425 0.95374 0.00000 0.00000 0.00000 0.00000 0.000 153 - 3 5 0 4 0.52815 0.94671 2.07061 0.00000 2.07061 0.00000 4.287 154 - 5 3 0 4 0.52815 0.94671 2.07061 0.00000 2.07061 0.00000 4.287 155 - 4 4 2 8 0.52815 0.94671 2.32999 180.00000 -2.32999 0.00000 5.429 156 - 5 1 4 8 0.52815 0.94671 2.07061 0.00000 2.07061 0.00000 4.287 157 - 1 5 4 8 0.52815 0.94671 2.07061 0.00000 2.07061 0.00000 4.287 158 - 0 4 6 4 0.52815 0.94670 2.32999 180.00000 -2.32999 0.00000 5.429 159 - 4 0 6 4 0.52815 0.94670 2.32999 180.00000 -2.32999 0.00000 5.429 160 - 1 1 8 8 0.52815 0.94670 2.07061 0.00000 2.07061 0.00000 4.287 161 - 5 3 1 8 0.53202 0.93982 0.00000 0.00000 0.00000 0.00000 0.000 162 - 3 5 1 8 0.53202 0.93982 0.00000 180.00000 -0.00000 0.00000 0.000 163 - 3 1 7 8 0.53202 0.93982 0.00000 0.00000 0.00000 0.00000 0.000 164 - 1 3 7 8 0.53202 0.93982 0.00000 0.00000 0.00000 0.00000 0.000 165 - 1 4 6 8 0.53586 0.93308 0.00000 180.00000 -0.00000 0.00000 0.000 166 - 4 1 6 8 0.53586 0.93308 0.00000 0.00000 0.00000 0.00000 0.000 167 - 6 0 0 2 0.54346 0.92003 0.09814 180.00000 -0.09814 0.00000 0.010 168 - 0 6 0 2 0.54346 0.92003 0.09814 180.00000 -0.09814 0.00000 0.010 169 - 5 3 2 8 0.54346 0.92003 0.36634 0.00000 0.36634 0.00000 0.134 170 - 3 5 2 8 0.54346 0.92003 0.36634 0.00000 0.36634 0.00000 0.134 171 - 3 3 6 8 0.54346 0.92003 0.36634 0.00000 0.36634 0.00000 0.134 172 - 0 2 8 4 0.54346 0.92003 0.09814 180.00000 -0.09814 0.00000 0.010 173 - 2 0 8 4 0.54346 0.92003 0.09814 180.00000 -0.09814 0.00000 0.010 174 - 0 6 1 4 0.54722 0.91371 0.00000 180.00000 -0.00000 0.00000 0.000 175 - 4 4 3 8 0.54722 0.91371 0.00000 180.00000 -0.00000 0.00000 0.000 176 - 1 6 0 4 0.55095 0.90752 0.00000 180.00000 -0.00000 0.00000 0.000 177 - 6 1 0 4 0.55095 0.90752 0.00000 0.00000 0.00000 0.00000 0.000 178 - 5 2 4 8 0.55096 0.90751 0.00000 180.00000 -0.00000 0.00000 0.000 179 - 2 5 4 8 0.55096 0.90751 0.00000 0.00000 0.00000 0.00000 0.000 180 - 1 2 8 8 0.55096 0.90751 0.00000 0.00000 0.00000 0.00000 0.000 181 - 2 1 8 8 0.55096 0.90751 0.00000 180.00000 -0.00000 0.00000 0.000 182 - 1 6 1 8 0.55467 0.90144 0.00000 180.00000 -0.00000 0.00000 0.000 183 - 6 1 1 8 0.55467 0.90144 0.00000 0.00000 0.00000 0.00000 0.000 184 - 3 4 5 8 0.55467 0.90144 0.00000 180.00000 -0.00000 0.00000 0.000 185 - 4 3 5 8 0.55467 0.90144 0.00000 180.00000 -0.00000 0.00000 0.000 186 - 5 0 5 4 0.55467 0.90144 0.00000 0.00000 0.00000 0.00000 0.000 187 - 3 2 7 8 0.55467 0.90144 0.00000 0.00000 0.00000 0.00000 0.000 188 - 2 3 7 8 0.55467 0.90144 0.00000 0.00000 0.00000 0.00000 0.000 189 - 6 0 2 4 0.55835 0.89549 7.99888 180.00000 -7.99888 0.00000 63.982 190 - 0 6 2 4 0.55835 0.89549 7.99888 180.00000 -7.99888 0.00000 63.982 191 - 2 4 6 8 0.55835 0.89549 7.99887 180.00000 -7.99887 0.00000 63.982 192 - 4 2 6 8 0.55835 0.89549 7.99887 180.00000 -7.99887 0.00000 63.982 193 - 3 5 3 8 0.56201 0.88966 0.00000 180.00000 -0.00000 0.00000 0.000 194 - 5 3 3 8 0.56201 0.88966 0.00000 180.00000 -0.00000 0.00000 0.000 195 - 5 1 5 8 0.56201 0.88966 0.00000 0.00000 0.00000 0.00000 0.000 196 - 1 5 5 8 0.56201 0.88966 0.00000 180.00000 -0.00000 0.00000 0.000 197 - 6 1 2 8 0.56565 0.88394 0.00000 0.00000 0.00000 0.00000 0.000 198 - 1 6 2 8 0.56565 0.88394 0.00000 0.00000 0.00000 0.00000 0.000 199 - 6 2 0 4 0.57286 0.87282 5.45445 0.00000 5.45445 0.00000 29.751 200 - 2 6 0 4 0.57286 0.87282 5.45445 0.00000 5.45445 0.00000 29.751 201 - 4 4 4 8 0.57286 0.87282 5.45445 0.00000 5.45445 0.00000 29.751 202 - 2 2 8 8 0.57286 0.87282 5.45443 0.00000 5.45443 0.00000 29.751 203 - 2 6 1 8 0.57642 0.86742 0.00000 0.00000 0.00000 0.00000 0.000 204 - 6 2 1 8 0.57642 0.86742 0.00000 0.00000 0.00000 0.00000 0.000 205 - 0 6 3 4 0.57643 0.86742 0.00000 180.00000 -0.00000 0.00000 0.000 206 - 0 4 7 4 0.57643 0.86741 0.00000 0.00000 0.00000 0.00000 0.000 207 - 4 5 0 4 0.57997 0.86211 0.00000 180.00000 -0.00000 0.00000 0.000 208 - 5 4 0 4 0.57997 0.86211 0.00000 0.00000 0.00000 0.00000 0.000 209 - 5 4 1 8 0.58350 0.85690 0.00000 0.00000 0.00000 0.00000 0.000 210 - 4 5 1 8 0.58350 0.85690 0.00000 180.00000 -0.00000 0.00000 0.000 211 - 1 6 3 8 0.58350 0.85690 0.00000 180.00000 -0.00000 0.00000 0.000 212 - 6 1 3 8 0.58350 0.85690 0.00000 0.00000 0.00000 0.00000 0.000 213 - 5 2 5 8 0.58350 0.85690 0.00000 180.00000 -0.00000 0.00000 0.000 214 - 2 5 5 8 0.58350 0.85690 0.00000 0.00000 0.00000 0.00000 0.000 215 - 1 4 7 8 0.58350 0.85690 0.00000 180.00000 -0.00000 0.00000 0.000 216 - 4 1 7 8 0.58350 0.85690 0.00000 0.00000 0.00000 0.00000 0.000 217 - 1 0 9 4 0.58350 0.85690 0.00000 180.00000 -0.00000 0.00000 0.000 218 - 2 6 2 8 0.58700 0.85179 2.38599 180.00000 -2.38599 0.00000 5.693 219 - 6 2 2 8 0.58700 0.85179 2.38599 180.00000 -2.38599 0.00000 5.693 220 - 3 5 4 8 0.58700 0.85178 2.09461 0.00000 2.09461 0.00000 4.387 221 - 5 3 4 8 0.58700 0.85178 2.09461 0.00000 2.09461 0.00000 4.387 222 - 3 1 8 8 0.58700 0.85178 2.09461 0.00000 2.09461 0.00000 4.387 223 - 1 3 8 8 0.58700 0.85178 2.09461 0.00000 2.09461 0.00000 4.387 224 - 3 3 7 8 0.59049 0.84676 0.00000 0.00000 0.00000 0.00000 0.000 225 - 1 1 9 8 0.59049 0.84676 0.00000 180.00000 -0.00000 0.00000 0.000 226 - 5 4 2 8 0.59395 0.84182 0.00000 0.00000 0.00000 0.00000 0.000 227 - 4 5 2 8 0.59395 0.84182 0.00000 180.00000 -0.00000 0.00000 0.000 228 - 3 4 6 8 0.59395 0.84182 0.00000 0.00000 0.00000 0.00000 0.000 229 - 4 3 6 8 0.59395 0.84182 0.00000 0.00000 0.00000 0.00000 0.000 230 - 0 6 4 4 0.60082 0.83220 0.01715 0.00000 0.01715 0.00000 0.000 231 - 6 0 4 4 0.60082 0.83220 0.01715 0.00000 0.01715 0.00000 0.000 232 - 5 1 6 8 0.60082 0.83220 0.28094 0.00000 0.28094 0.00000 0.079 233 - 1 5 6 8 0.60082 0.83220 0.28094 0.00000 0.28094 0.00000 0.079 234 - 2 6 3 8 0.60422 0.82751 0.00000 0.00000 0.00000 0.00000 0.000 235 - 6 2 3 8 0.60422 0.82751 0.00000 180.00000 -0.00000 0.00000 0.000 236 - 4 4 5 8 0.60422 0.82751 0.00000 0.00000 0.00000 0.00000 0.000 237 - 2 4 7 8 0.60422 0.82751 0.00000 0.00000 0.00000 0.00000 0.000 238 - 4 2 7 8 0.60422 0.82751 0.00000 0.00000 0.00000 0.00000 0.000 239 - 0 2 9 4 0.60422 0.82751 0.00000 180.00000 -0.00000 0.00000 0.000 240 - 6 3 0 4 0.60761 0.82290 0.00000 0.00000 0.00000 0.00000 0.000 241 - 3 6 0 4 0.60761 0.82290 0.00000 0.00000 0.00000 0.00000 0.000 242 - 1 6 4 8 0.60761 0.82290 0.00000 180.00000 -0.00000 0.00000 0.000 243 - 6 1 4 8 0.60761 0.82290 0.00000 0.00000 0.00000 0.00000 0.000 244 - 3 2 8 8 0.60761 0.82290 0.00000 0.00000 0.00000 0.00000 0.000 245 - 2 3 8 8 0.60761 0.82290 0.00000 180.00000 -0.00000 0.00000 0.000 246 - 3 6 1 8 0.61097 0.81837 0.00000 0.00000 0.00000 0.00000 0.000 247 - 6 3 1 8 0.61097 0.81837 0.00000 0.00000 0.00000 0.00000 0.000 248 - 5 4 3 8 0.61097 0.81837 0.00000 0.00000 0.00000 0.00000 0.000 249 - 4 5 3 8 0.61097 0.81837 0.00000 0.00000 0.00000 0.00000 0.000 250 - 1 2 9 8 0.61097 0.81837 0.00000 180.00000 -0.00000 0.00000 0.000 251 - 2 1 9 8 0.61097 0.81837 0.00000 180.00000 -0.00000 0.00000 0.000 252 - 5 3 5 8 0.61765 0.80952 0.00000 0.00000 0.00000 0.00000 0.000 253 - 3 5 5 8 0.61765 0.80952 0.00000 0.00000 0.00000 0.00000 0.000 254 From 8590fa6323402b78c013c55b0d4589c5d87c9bb2 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 17 Nov 2020 11:42:55 +0100 Subject: [PATCH 099/312] Fixup build scripts --- .github/workflows/test.yml | 2 +- easyDiffractionLib/Calculators/CFML.py | 2 +- easyDiffractionLib/Calculators/GSASII.py | 2 +- easyDiffractionLib/Calculators/cryspy.py | 2 +- .../Elements/Backgrounds/Background.py | 54 +++++++++++++++++-- pyproject.toml | 2 +- 6 files changed, 54 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 82b9d56c..029204e5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,7 +43,7 @@ jobs: echo "pythonLocation: $pythonLocation" - name: Set up python packages manager - uses: Gr1N/setup-poetry@v2 + uses: Gr1N/setup-poetry@v4 - name: Create venv and install dependences run: poetry update diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index a87d26e9..cdf4aedc 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -39,7 +39,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: scale = self.pattern.scale.raw_value offset = self.pattern.zero_shift.raw_value - this_x_array = x_array.copy() + offset + this_x_array = x_array + offset # Sample parameters cif_file = CFML_api.CIFFile(self.filename) diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 703b4fa7..494b9039 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -61,7 +61,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: scale = self.pattern.scale.raw_value offset = self.pattern.zero_shift.raw_value - this_x_array = x_array.copy() + offset + this_x_array = x_array + offset gpx = G2sc.G2Project(newgpx=os.path.join(self.prm_dir_path, 'easydiffraction_temp.gpx')) # create a project diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 6b3e9e5b..84b478bd 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -46,7 +46,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: scale = self.pattern.scale.raw_value offset = self.pattern.zero_shift.raw_value - this_x_array = x_array.copy() + offset + this_x_array = x_array + offset if borg.debug: print('CALLING FROM Cryspy\n----------------------') diff --git a/easyDiffractionLib/Elements/Backgrounds/Background.py b/easyDiffractionLib/Elements/Backgrounds/Background.py index 7312da48..84922182 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Background.py +++ b/easyDiffractionLib/Elements/Backgrounds/Background.py @@ -4,14 +4,29 @@ from abc import abstractmethod from typing import Union, List -from easyCore.Objects.Base import Descriptor, Parameter -from easyCore.Objects.Groups import BaseCollection from easyCore import np +from easyCore.Objects.Base import Descriptor +from easyCore.Objects.Groups import BaseCollection class Background(BaseCollection): + """ + Background is a base class for which different types of backgrounds can be built. It functions as + a pseudo list of elements which can be used to generate a background using the abstract `calculate` + method. i.e. contents could be points in a point based background or polynomials in a curve background. + """ def __init__(self, *args, linked_experiment=None, **kwargs): + """ + Initialisation routine called from super(). Each background has to be linked with an experiment + + :param args: Optional elements which are making up the background + :param linked_experiment: which experiment this background should be linked to + :type linked_experiment: str + :param kwargs: For serialisation + """ + + # Convert `linked_experiment` to a Descriptor if linked_experiment is None: raise AttributeError elif isinstance(linked_experiment, str): @@ -20,23 +35,52 @@ def __init__(self, *args, linked_experiment=None, **kwargs): if not isinstance(linked_experiment, Descriptor): raise ValueError + # Initialise super(Background, self).__init__(*args, **kwargs) self._linked_experiment = linked_experiment @property - def linked_experiment(self): + def linked_experiment(self) -> Descriptor: + """ + Get the experiment which the background is linked to + :return: linked experiment name + :rtype: Descriptor + """ return self._linked_experiment @linked_experiment.setter - def linked_experiment(self, value: str): - self.linked_experiment = value + def linked_experiment(self, value: Union[str, Descriptor]): + """ + Set the value of the linked experiment + :param value: THe name of the experiment to be linked to + :type value: str + :return: None + """ + if isinstance(value, str): + self.linked_experiment = value + elif isinstance(value, Descriptor): + self._linked_experiment = value + else: + raise ValueError @abstractmethod def calculate(self, x_array: np.ndarray) -> np.ndarray: + """ + Abstract method to actually calculate the background. + + :param x_array: values to be calculated at + :type x_array: np.ndarray + :return: y-values of the calculated background + :rtype: np.ndarray + """ pass class BackgroundContainer(BaseCollection): + """ + Background container which will hold all the backgrounds for a given instance. Backgrounds can be of + any type and + """ def __init__(self, *args, interface=None, **kwargs): super(BackgroundContainer, self).__init__('Instrument', *args, **kwargs) self.interface = interface diff --git a/pyproject.toml b/pyproject.toml index fc7257fe..32127ab8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ matplotlib = "^3.2, <3.3" libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } -easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'STAR_io' } +easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] pytest = "^5.2" From 85e3c705619701f20fa1fcee27957392a2ae2064 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 17 Nov 2020 13:45:30 +0100 Subject: [PATCH 100/312] Update for specie work --- easyDiffractionLib/__init__.py | 2 +- easyDiffractionLib/model.py | 5 ----- easyDiffractionLib/sample.py | 18 +++++++++--------- pyproject.toml | 2 +- 4 files changed, 11 insertions(+), 16 deletions(-) delete mode 100644 easyDiffractionLib/model.py diff --git a/easyDiffractionLib/__init__.py b/easyDiffractionLib/__init__.py index c5c594e1..c19ebf12 100644 --- a/easyDiffractionLib/__init__.py +++ b/easyDiffractionLib/__init__.py @@ -1,4 +1,4 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -from easyCore.Elements.HigherLevel.Crystal import Crystal, Crystals, Atoms, Site, SpaceGroup, Cell \ No newline at end of file +from easyCore.Elements.HigherLevel.Phase import Phase, Phases, Atoms, Site, SpaceGroup, Lattice \ No newline at end of file diff --git a/easyDiffractionLib/model.py b/easyDiffractionLib/model.py deleted file mode 100644 index 899c3e40..00000000 --- a/easyDiffractionLib/model.py +++ /dev/null @@ -1,5 +0,0 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.0.1' - -from typing import Union, List -import numpy as np diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index fc779d3f..a6bbf3f9 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -5,21 +5,21 @@ from typing import Union from easyCore.Objects.Base import BaseObj -from easyDiffractionLib import Crystal, Crystals +from easyDiffractionLib import Phase, Phases from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D class Sample(BaseObj): - def __init__(self, phases: Union[Crystal, Crystals] = None, + def __init__(self, phases: Union[Phase, Phases] = None, parameters=None, pattern=None, interface=None, name: str = 'easySample'): - if isinstance(phases, Crystal): - phases = Crystals('Phases', phases) + if isinstance(phases, Phase): + phases = Phases('Phases', phases) elif phases is None: - phases = Crystals('Phases') + phases = Phases('Phases') - if not isinstance(phases, Crystals): + if not isinstance(phases, Phases): raise AttributeError('`phases` must be a Crystal or Crystals') if pattern is None: @@ -75,9 +75,9 @@ def phases(self): @phases.setter def phases(self, value): - if isinstance(value, Crystal): - value = Crystals('Phases', value) - if not isinstance(value, Crystals): + if isinstance(value, Phase): + value = Phases('Phases', value) + if not isinstance(value, Phases): raise ValueError self._phases = value self._borg.map.add_edge(self, value) diff --git a/pyproject.toml b/pyproject.toml index 32127ab8..934d150b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ matplotlib = "^3.2, <3.3" libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } -easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } +easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'specie_work' } [tool.poetry.dev-dependencies] pytest = "^5.2" From 3ce84de1e96ff1ca878952804d02844fb0d33673 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 17 Nov 2020 16:52:25 +0100 Subject: [PATCH 101/312] Recalculate sin(Th)/Lambda --- easyDiffractionLib/Calculators/CFML.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index cdf4aedc..c6f73612 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -1,7 +1,7 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" -import os, pathlib +import os, pathlib, math import CFML_api @@ -59,14 +59,20 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: self.conditions.theta_max = x_max self.conditions.theta_step = (x_max - x_min) / (num_points - 1) + #print("self.conditions", self.conditions) #print("self.conditions.theta_min", self.conditions.theta_min) #print("self.conditions.theta_max", self.conditions.theta_max) #print("self.conditions.theta_step", self.conditions.theta_step) - #print("self.conditions.getSinThetaOverLambdaMax()", self.conditions.getSinThetaOverLambdaMax()) + + sin_theta_over_lambda_max = self.conditions.getSinThetaOverLambdaMax() + if sin_theta_over_lambda_max <= 0: + sin_theta_over_lambda_max = math.sin(self.conditions.theta_max) / self.conditions.lamb + #print("CFML self.conditions.getSinThetaOverLambdaMax():", self.conditions.getSinThetaOverLambdaMax()) + #print("Manually sin_theta_over_lambda_max:", sin_theta_over_lambda_max) # Calculations try: - reflection_list = CFML_api.ReflectionList(cell, space_group, True, 0, self.conditions.getSinThetaOverLambdaMax()) + reflection_list = CFML_api.ReflectionList(cell, space_group, True, 0, sin_theta_over_lambda_max) reflection_list.compute_structure_factors(space_group, atom_list) diffraction_pattern = CFML_api.DiffractionPattern(self.conditions, reflection_list, cell.reciprocal_cell_vol) except: From 8f07686655abe3a2a677619970dcbf6a9b5cf60a Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 18 Nov 2020 10:23:00 +0100 Subject: [PATCH 102/312] Set some experimental parameters --- easyDiffractionLib/Calculators/CFML.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index c6f73612..249a82a7 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -15,6 +15,8 @@ def __init__(self, filename: str = None): self.filename = filename self.conditions = CFML_api.PowderPatternSimulationConditions() + self.conditions.job = CFML_api.PowderPatternSimulationSource.Neutrons + self.conditions.lorentzian_size = 10000.0 self.conditions.bkg = 0.0 self.background = None self.pattern = None @@ -59,7 +61,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: self.conditions.theta_max = x_max self.conditions.theta_step = (x_max - x_min) / (num_points - 1) - #print("self.conditions", self.conditions) + print("self.conditions", self.conditions) #print("self.conditions.theta_min", self.conditions.theta_min) #print("self.conditions.theta_max", self.conditions.theta_max) #print("self.conditions.theta_step", self.conditions.theta_step) @@ -67,8 +69,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: sin_theta_over_lambda_max = self.conditions.getSinThetaOverLambdaMax() if sin_theta_over_lambda_max <= 0: sin_theta_over_lambda_max = math.sin(self.conditions.theta_max) / self.conditions.lamb - #print("CFML self.conditions.getSinThetaOverLambdaMax():", self.conditions.getSinThetaOverLambdaMax()) - #print("Manually sin_theta_over_lambda_max:", sin_theta_over_lambda_max) + print("CFML self.conditions.getSinThetaOverLambdaMax():", self.conditions.getSinThetaOverLambdaMax()) + print("Manually sin_theta_over_lambda_max:", sin_theta_over_lambda_max) # Calculations try: From 721d30070c133dd6cc90b8b1d7ad519acc6d0f23 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 18 Nov 2020 16:24:33 +0100 Subject: [PATCH 103/312] Fixup some serialization --- .../Elements/Backgrounds/Background.py | 76 +++++++++++++++- .../Elements/Backgrounds/Linear.py | 91 ++++++++++++++++--- .../Elements/Backgrounds/Point.py | 7 +- easyDiffractionLib/sample.py | 7 ++ 4 files changed, 164 insertions(+), 17 deletions(-) diff --git a/easyDiffractionLib/Elements/Backgrounds/Background.py b/easyDiffractionLib/Elements/Backgrounds/Background.py index 052215f7..ee76811f 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Background.py +++ b/easyDiffractionLib/Elements/Backgrounds/Background.py @@ -75,34 +75,102 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: """ pass + def as_dict(self, skip: list = None) -> dict: + d = super(Background, self).as_dict(skip=skip) + d['linked_experiment'] = self._linked_experiment.raw_value + return d + class BackgroundContainer(BaseCollection): """ Background container which will hold all the backgrounds for a given instance. Backgrounds can be of - any type and + any type and have to be associated to an experiment. There can't be multiple backgrounds associated with an + experiment!! """ def __init__(self, *args, interface=None, **kwargs): + """ + Constructor, with a link to an interface. + """ super(BackgroundContainer, self).__init__('background', *args, **kwargs) self.interface = interface @property def linked_experiments(self) -> List[str]: + """ + Get a list of experiments for which items are linked. + + :return: + :rtype: + """ return [item.linked_experiment.raw_value for item in self] def __repr__(self) -> str: + """ + Simple representation of the object + + :return: Simple representation of the object + :rtype: str + """ return f'Collection of {len(self)} backgrounds.' - def __getitem__(self, idx: Union[int, slice]): + def __getitem__(self, idx: Union[int, slice, str]): + """ + Obtain an item in the list from either it's integer position or a slice object. + + :param idx: Which item to retrieve + :type idx: int + :return: Background object + :rtype: Background + """ if isinstance(idx, str) and idx in self.linked_experiments: idx = self.linked_experiments.index(idx) return super(BackgroundContainer, self).__getitem__(idx) - def __delitem__(self, key): + def __delitem__(self, key: Union[int, str]): + """ + Remove a background from the list. Key can be an index or experiment name + + :param key: Unique identifier of key to be removed + :type key: int, str + :return: None + """ if isinstance(key, str) and key in self.linked_experiments: key = self.linked_experiments.index(key) - return super(BackgroundContainer, self).__delitem__(key) + super(BackgroundContainer, self).__delitem__(key) + + def __setitem__(self, pos: int, item): + # Remove the reference + self._borg.map.prune_vertex_from_edge(self, self[pos]) + # Add the new reference + self._borg.map.add_edge(self, item) + # Get all items, go through and change the item at index pos to the new one + keys = self._kwargs.keys() + items = {} + for idx, key in enumerate(keys): + if idx == pos: + items[str(self._borg.map.convert_id_to_key(item))] = item + else: + items[key] = self._kwargs[key] + # Set the new dict + self._kwargs = items + + + # keys = self._kwargs.keys() + # items = {} + # for idx in range(key): + # items[keys[idx]] = self._kwargs[keys[idx]] + # items[str(self._borg.map.convert_id_to_key(value))] = value + # for idx in range(key+1, len(self)): + # items[keys[idx]] = self._kwargs[keys[idx]] + # self._kwargs = items def append(self, item): + """ + Add an element to the list + + :param item: Background element + :type item: Background + """ if item.linked_experiment in self.linked_experiments: raise AttributeError(f'A background exists for experiment: {item.linked_experiment}') super(BackgroundContainer, self).append(item) diff --git a/easyDiffractionLib/Elements/Backgrounds/Linear.py b/easyDiffractionLib/Elements/Backgrounds/Linear.py index 767785bc..81359d82 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Linear.py +++ b/easyDiffractionLib/Elements/Backgrounds/Linear.py @@ -1,20 +1,89 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' +from typing import Union, List + from easyCore import np +from easyCore.Objects.Groups import BaseCollection +from easyCore.Objects.Base import Parameter, Descriptor, BaseObj +from .Background import Background + + +class BackgroundFactor(BaseObj): + def __init__(self, power: Descriptor, amp: Parameter): + name = f'Amplitude_{power.raw_value}' + super(BackgroundFactor, self).__init__(name, power=power, amp=amp) + + @classmethod + def from_pars(cls, power: float, amp: float): + power = Descriptor('power', power) + amp = Parameter('amplitude', amp, fixed=True) + return cls(power, amp) + + @classmethod + def default(cls): + return cls.from_pars(0, 1) + + def set(self, value): + self.amp = value + + +class FactorialBackground(Background): + + def __init__(self, *args, **kwargs): + super(FactorialBackground, self).__init__('factorial_background', *args, **kwargs) + + def calculate(self, x_array: np.ndarray) -> np.ndarray: + + shape_x = x_array.shape + reduced_x = x_array.flat + + y = np.zeros_like(reduced_x) + + powers = self.sorted_powers + amps = self.sorted_amplitudes + + for power, amp in zip(powers, amps): + y += amp*x_array**power + + return y.reshape(shape_x) + + def __repr__(self) -> str: + return f'Background of {len(self)} points.' + + def __getitem__(self, idx: Union[int, slice]) -> Union[Parameter, Descriptor, BaseObj, 'BaseCollection']: + return super(FactorialBackground, self).__getitem__(idx) + + def __delitem__(self, key): + return super(FactorialBackground, self).__delitem__(key) + @property + def sorted_powers(self): + x = np.array([item.power.raw_value for item in self]) + x.sort() + return x -class Factorial: - def __init__(self, *args): - self._args = args + @property + def sorted_amplitudes(self): + idx = np.array([item.power.raw_value for item in self]).argsort() + y = np.array([item.amp.raw_value for item in self]) + return y[idx] - def calculate(self, x_data: np.ndarray) -> np.ndarray: - y_data = np.ones_like(x_data) * self._args[-1] - for pow, arg in self._args[-2::-1]: - y_data += arg * x_data ** pow - return y_data + @property + def names(self): + return [item.name for item in self] + def append(self, item: BackgroundFactor): + if not isinstance(item, BackgroundFactor): + raise TypeError('Item must be a BackgroundFactor') + if item.power.raw_value in self.sorted_powers: + raise AttributeError(f'A BackgroundFactor with power {item.power.raw_value} already exists.') + super(FactorialBackground, self).append(item) -class Line(Factorial): - def __init__(self, m=0, c=0): - super(Line, self).__init__(m, c) \ No newline at end of file + def get_parameters(self) -> List[Parameter]: + """" + Redefine get_parameters so that the returned values are in the correct order + """ + list_pars = np.array(super(FactorialBackground, self).get_parameters()) + idx = np.array([item.power.raw_value for item in self]).argsort() + return list_pars[idx].tolist() diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index 46fb2c05..fc3e557b 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -10,6 +10,9 @@ class BackgroundPoint(BaseObj): + """ + This class describes a background point. + """ def __init__(self, x: Descriptor, y: Parameter, name=None): if name is None: name = '{:.1f}_deg'.format(x.raw_value).replace(".", ",") @@ -37,8 +40,8 @@ def _modify_x_label(self, value: float): class PointBackground(Background): - def __init__(self, *args, **kwargs): - super(PointBackground, self).__init__('point_background', *args, **kwargs) + def __init__(self, *args, linked_experiment=None, **kwargs): + super(PointBackground, self).__init__('point_background', *args, linked_experiment=linked_experiment, **kwargs) def calculate(self, x_array: np.ndarray) -> np.ndarray: diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index a6bbf3f9..278d8520 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -100,3 +100,10 @@ def update_bindings(self): @property def pattern(self): return self._pattern + + def as_dict(self, skip: list = None) -> dict: + d = super(Sample, self).as_dict(skip=skip) + del d['_phases'] + del d['_parameters'] + del d['_pattern'] + return d \ No newline at end of file From 7f3b9ca114938f579ae34173439d5d6b145b5846 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 19 Nov 2020 13:28:10 +0100 Subject: [PATCH 104/312] Keep temp.cif file for fitting process --- easyDiffractionLib/Calculators/GSASII.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 494b9039..c92e753d 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -111,7 +111,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: finally: # Clean up for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): - p.unlink() + if os.path.basename(p) != "easydiffraction_temp.cif": + p.unlink() if self.background is None: bg = np.zeros_like(this_x_array) From 44d6463de951b5ede16b7883c39a423f3c297822 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 19 Nov 2020 13:45:43 +0100 Subject: [PATCH 105/312] Fix sinTh/Lambda for CFML --- easyDiffractionLib/Calculators/CFML.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 249a82a7..8433f6bb 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -66,11 +66,9 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: #print("self.conditions.theta_max", self.conditions.theta_max) #print("self.conditions.theta_step", self.conditions.theta_step) - sin_theta_over_lambda_max = self.conditions.getSinThetaOverLambdaMax() - if sin_theta_over_lambda_max <= 0: - sin_theta_over_lambda_max = math.sin(self.conditions.theta_max) / self.conditions.lamb - print("CFML self.conditions.getSinThetaOverLambdaMax():", self.conditions.getSinThetaOverLambdaMax()) - print("Manually sin_theta_over_lambda_max:", sin_theta_over_lambda_max) + sin_theta_over_lambda_max = math.sin(math.radians(0.5 * self.conditions.theta_max)) / self.conditions.lamb + print(f"CFML self.conditions.getSinThetaOverLambdaMax(): {self.conditions.getSinThetaOverLambdaMax()}") + print(f"Manually sin_theta_over_lambda_max: {sin_theta_over_lambda_max}") # Calculations try: From c2108ed4d97d1eb0d6dc7cdbda5f3ebaefcc15aa Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 19 Nov 2020 14:35:04 +0100 Subject: [PATCH 106/312] Keep temp.cif for fitting with CFML --- easyDiffractionLib/Calculators/CFML.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 8433f6bb..6c490801 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -80,7 +80,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: finally: # Clean up for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): - p.unlink() + if os.path.basename(p) != "easydiffraction_temp.cif": + p.unlink() if self.background is None: bg = np.zeros_like(this_x_array) From 710aba35441622480727af2e1f7fa504ca12e81a Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 20 Nov 2020 09:54:19 +0100 Subject: [PATCH 107/312] Update to new CFML api --- easyDiffractionLib/Calculators/CFML.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 6c490801..e13f1499 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -61,14 +61,14 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: self.conditions.theta_max = x_max self.conditions.theta_step = (x_max - x_min) / (num_points - 1) - print("self.conditions", self.conditions) + #print("self.conditions", self.conditions) #print("self.conditions.theta_min", self.conditions.theta_min) #print("self.conditions.theta_max", self.conditions.theta_max) #print("self.conditions.theta_step", self.conditions.theta_step) sin_theta_over_lambda_max = math.sin(math.radians(0.5 * self.conditions.theta_max)) / self.conditions.lamb - print(f"CFML self.conditions.getSinThetaOverLambdaMax(): {self.conditions.getSinThetaOverLambdaMax()}") - print(f"Manually sin_theta_over_lambda_max: {sin_theta_over_lambda_max}") + #print(f"CFML self.conditions.getSinThetaOverLambdaMax(): {self.conditions.getSinThetaOverLambdaMax()}") + #print(f"Manually sin_theta_over_lambda_max: {sin_theta_over_lambda_max}") # Calculations try: @@ -88,4 +88,4 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: else: bg = self.background.calculate(this_x_array) - return scale*diffraction_pattern.y + bg + return scale*diffraction_pattern.ycalc + bg From efb037276a081d14432b97481d36c4f6b0917674 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 25 Nov 2020 11:30:49 +0100 Subject: [PATCH 108/312] Tidy up background work --- .../Elements/Backgrounds/Background.py | 10 -- .../Elements/Backgrounds/Linear.py | 2 +- .../Elements/Backgrounds/Point.py | 135 +++++++++++++++--- 3 files changed, 118 insertions(+), 29 deletions(-) diff --git a/easyDiffractionLib/Elements/Backgrounds/Background.py b/easyDiffractionLib/Elements/Backgrounds/Background.py index ee76811f..31fd433e 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Background.py +++ b/easyDiffractionLib/Elements/Backgrounds/Background.py @@ -154,16 +154,6 @@ def __setitem__(self, pos: int, item): # Set the new dict self._kwargs = items - - # keys = self._kwargs.keys() - # items = {} - # for idx in range(key): - # items[keys[idx]] = self._kwargs[keys[idx]] - # items[str(self._borg.map.convert_id_to_key(value))] = value - # for idx in range(key+1, len(self)): - # items[keys[idx]] = self._kwargs[keys[idx]] - # self._kwargs = items - def append(self, item): """ Add an element to the list diff --git a/easyDiffractionLib/Elements/Backgrounds/Linear.py b/easyDiffractionLib/Elements/Backgrounds/Linear.py index 81359d82..8e39111b 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Linear.py +++ b/easyDiffractionLib/Elements/Backgrounds/Linear.py @@ -1,12 +1,12 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' +from .Background import Background from typing import Union, List from easyCore import np from easyCore.Objects.Groups import BaseCollection from easyCore.Objects.Base import Parameter, Descriptor, BaseObj -from .Background import Background class BackgroundFactor(BaseObj): diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index fc3e557b..a9bf4d5f 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -1,19 +1,30 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' +from .Background import Background from typing import Union, List from easyCore import np from easyCore.Objects.Groups import BaseCollection from easyCore.Objects.Base import Parameter, Descriptor, BaseObj -from .Background import Background class BackgroundPoint(BaseObj): """ - This class describes a background point. + This class describes a background point. It contains x position and y intensities. Note that the label for x + varies with it's value!!! """ - def __init__(self, x: Descriptor, y: Parameter, name=None): + def __init__(self, x: Descriptor, y: Parameter, name: str = None): + """ + Construct a background point from a x-Descriptor any y-parameter. + + :param x: x-position of the background point + :type x: Descriptor + :param y: Intensity/y-position of the background point + :type y: Parameter + :param name: Override the default naming. + :type name: str + """ if name is None: name = '{:.1f}_deg'.format(x.raw_value).replace(".", ",") x._callback = property(fget=None, @@ -23,27 +34,79 @@ def __init__(self, x: Descriptor, y: Parameter, name=None): @classmethod def from_pars(cls, x: float, y: float): + """ + Construct a background point from x, y floats. + + :param x: background x-position. + :type x: float + :param y: background intensity/y-position + :type y: float + :return: Constructed background point + :rtype: BackgroundPoint + """ x = Descriptor('x', x) y = Parameter('intensity', y, fixed=True) return cls(x, y) @classmethod def default(cls): + """ + Construct a background point at x = 0, y = 0 + + :return: Constructed background point + :rtype: BackgroundPoint + """ return cls.from_pars(0, 0) - def set(self, value): + def set(self, value: float): + """ + Convenience function to set the background intensity. + + :param value: New intensity/y-position value + :type value: float + :rtype: None + """ self.y = value def _modify_x_label(self, value: float): + """ + Auto generate a new label for x which is tied to it's value + + :param value: New x-value + :type value: float + :rtype: None + """ self.name = '{:.1f}_deg'.format(value).replace(".", ",") class PointBackground(Background): + """ + Create a background which is constructed from a collection of background points. Note that the background points + are not stored in order!! `x_sorted_points` and `y_sorted_points` should be used to access these points in the + numerical order. + """ - def __init__(self, *args, linked_experiment=None, **kwargs): + def __init__(self, *args, linked_experiment: str = None, **kwargs): + """ + Point based background constructor. + + :param args: Background points to be added to the background (optional) + :type args: BackgroundPoint + :param linked_experiment: Which experiment should this background be linked with. + :type linked_experiment: str + :param kwargs: Any additional kwargs + """ super(PointBackground, self).__init__('point_background', *args, linked_experiment=linked_experiment, **kwargs) def calculate(self, x_array: np.ndarray) -> np.ndarray: + """ + Generate a background from the stored background points. + + :param x_array: Points for which the background should be calculated. + :type x_array: np.ndarray + :return: Background points at the supplied x-positions. + :rtype: np.ndarray + """ shape_x = x_array.shape reduced_x = x_array.flat @@ -67,45 +130,81 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: return y.reshape(shape_x) def __repr__(self) -> str: + """ + String representation of the background + + :return: String representation of the background + :rtype: str + """ return f'Background of {len(self)} points.' def __getitem__(self, idx: Union[int, slice]) -> Union[Parameter, Descriptor, BaseObj, 'BaseCollection']: + """ + Return an item from the collection/ + + :param idx: index of item to be returned. + :type idx: int + :return: item at point `idx` + :rtype: Union[Parameter, Descriptor, BaseObj, 'BaseCollection'] + """ return super(PointBackground, self).__getitem__(idx) - def __delitem__(self, key): - return super(PointBackground, self).__delitem__(key) + def __delitem__(self, idx: int): + """ + Remove an item from the collection at index `idx` + + :param idx: index of the item to be deleted + :type idx: int + """ + return super(PointBackground, self).__delitem__(idx) @property - def x_sorted_points(self): + def x_sorted_points(self) -> np.ndarray: + """ + Get the stored x-values as a sorted array + + :return: Sorted x-values + :rtype: np.ndarray + """ x = np.array([item.x.raw_value for item in self]) x.sort() return x @property - def y_sorted_points(self): + def y_sorted_points(self) -> np.ndarray: + """ + Get the stored y-values based on the sorted x-values + + :return: Sorted y-values + :rtype: np.ndarray + """ idx = np.array([item.x.raw_value for item in self]).argsort() y = np.array([item.y.raw_value for item in self]) return y[idx] @property - def names(self): + def names(self) -> List[str]: + """ + Get the names of the points in the collection. + + :return: Names of the points in the collection + :rtype: List[str] + """ return [item.name for item in self] def append(self, item: BackgroundPoint): + """ + Add a background point to the collection. + + :param item: Background point to be added. + :type item: BackgroundPoint + """ if not isinstance(item, BackgroundPoint): raise TypeError('Item must be a BackgroundPoint') if item.x.raw_value in self.x_sorted_points: raise AttributeError(f'An BackgroundPoint at {item.x.raw_value} already exists.') super(PointBackground, self).append(item) - # def as_dict(self, skip: list = None): - # this_dict = super(PointBackground, self).as_dict(skip=skip) - # old_data = this_dict['data'] - # idx = np.array([item.x.raw_value for item in self]).argsort() - # new_data = old_data[idx] - # this_dict['data'] = new_data - # return this_dict - def get_parameters(self) -> List[Parameter]: """" Redefine get_parameters so that the returned values are in th correct order From d47bfe97d2100748b9ea903318ab71299a0fcf6a Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Thu, 26 Nov 2020 14:43:05 +0100 Subject: [PATCH 109/312] More background tidying --- .../Elements/Backgrounds/Background.py | 7 +- .../Elements/Backgrounds/Factorial.py | 202 ++++++++++++++++++ .../Elements/Backgrounds/Linear.py | 89 -------- .../Elements/Backgrounds/Point.py | 32 ++- 4 files changed, 228 insertions(+), 102 deletions(-) create mode 100644 easyDiffractionLib/Elements/Backgrounds/Factorial.py delete mode 100644 easyDiffractionLib/Elements/Backgrounds/Linear.py diff --git a/easyDiffractionLib/Elements/Backgrounds/Background.py b/easyDiffractionLib/Elements/Backgrounds/Background.py index 31fd433e..f39dae00 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Background.py +++ b/easyDiffractionLib/Elements/Backgrounds/Background.py @@ -28,12 +28,13 @@ def __init__(self, *args, linked_experiment=None, **kwargs): # Convert `linked_experiment` to a Descriptor if linked_experiment is None: - raise AttributeError + raise AttributeError('Backgrounds need to be associated with an experiment. ' + 'Use the `linked_experiment` key word argument.') elif isinstance(linked_experiment, str): linked_experiment = Descriptor('linked_experiment', linked_experiment) if not isinstance(linked_experiment, Descriptor): - raise ValueError + raise ValueError('The `linked_experiment` key word argument must be a string or Descriptor') # Initialise super(Background, self).__init__(*args, **kwargs) @@ -61,7 +62,7 @@ def linked_experiment(self, value: Union[str, Descriptor]): elif isinstance(value, Descriptor): self._linked_experiment = value else: - raise ValueError + raise ValueError('The `linked_experiment` key word argument must be a string or Descriptor') @abstractmethod def calculate(self, x_array: np.ndarray) -> np.ndarray: diff --git a/easyDiffractionLib/Elements/Backgrounds/Factorial.py b/easyDiffractionLib/Elements/Backgrounds/Factorial.py new file mode 100644 index 00000000..d080f3c9 --- /dev/null +++ b/easyDiffractionLib/Elements/Backgrounds/Factorial.py @@ -0,0 +1,202 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from .Background import Background +from typing import Union, List + +from easyCore import np +from easyCore.Objects.Groups import BaseCollection +from easyCore.Objects.Base import Parameter, Descriptor, BaseObj + + +class BackgroundFactor(BaseObj): + """ + This class describes a polynomial factor. It contains an amplitude and a power. i.e. for x, Ax^p + """ + def __init__(self, power: Descriptor, amp: Parameter): + """ + Construct a background factor. + + :param power: Power to which x will be raised. + :type power: Descriptor + :param amp: Amplitude for which x will be multiplied by + :type amp: Parameter + """ + name = f'Amplitude_{power.raw_value}' + super(BackgroundFactor, self).__init__(name, power=power, amp=amp) + + @classmethod + def from_pars(cls, power: int, amp: float): + """ + Construct a background factor from a power and amplitude as an integer/float respectively. + + :param power: Power to which x will be raised. + :type power: int + :param amp: Amplitude for which x will be multiplied by + :type amp: float + :return: Constructed background factor + :rtype: BackgroundFactor + """ + power = Descriptor('power', power) + amp = Parameter('amplitude', amp, fixed=True) + return cls(power, amp) + + @classmethod + def default(cls): + """ + Construct a default background factor with amplitude 1 and power 0 + + :return: Constructed background factor + :rtype: BackgroundFactor + """ + return cls.from_pars(0, 1) + + def set(self, value): + """ + Convenience function to set the background amplitude. + + :param value: New amplitude value + :type value: float + :rtype: None + """ + self.amp = value + + +class FactorialBackground(Background): + """ + Create a background which is constructed from a collection of background factors. Note that the background factors + are not stored in order!! `sorted_powers` and `sorted_amplitudes` should be used to access these factors in the + numerical order (based on increasing powers). + """ + + def __init__(self, *args, **kwargs): + """ + Factorial based background constructor. + + :param args: Background factors to be added to the background (optional) + :type args: BackgroundFactor + :param linked_experiment: Which experiment should this background be linked with. + :type linked_experiment: str + :param kwargs: Any additional kwargs + """ + super(FactorialBackground, self).__init__('factorial_background', *args, **kwargs) + self.__index_contents() + + def calculate(self, x_array: np.ndarray) -> np.ndarray: + """ + Generate a background from the stored background factors. + + :param x_array: Points for which the background should be calculated. + :type x_array: np.ndarray + :return: Background points at the supplied x-positions. + :rtype: np.ndarray + """ + + shape_x = x_array.shape + reduced_x = x_array.flat + + y = np.zeros_like(reduced_x) + + powers = self.sorted_powers + amps = self.sorted_amplitudes + + for power, amp in zip(powers, amps): + y += amp*x_array**power + + return y.reshape(shape_x) + + def __repr__(self) -> str: + """ + String representation of the background + + :return: String representation of the background + :rtype: str + """ + return f'Background of {len(self)} factors.' + + def __getitem__(self, idx: Union[int, slice]) -> Union[Parameter, Descriptor, BaseObj, 'BaseCollection']: + """ + Return an item from the collection. + + :param idx: index of item to be returned. + :type idx: int + :return: item at point `idx` + :rtype: Union[Parameter, Descriptor, BaseObj, 'BaseCollection'] + """ + return super(FactorialBackground, self).__getitem__(idx) + + def __delitem__(self, idx: int): + """ + Remove an item from the collection at index `idx` + + :param idx: index of the item to be deleted + :type idx: int + """ + removed_applied = super(FactorialBackground, self).__delitem__(idx) + self.__index_contents() + return removed_applied + + @property + def sorted_powers(self) -> np.ndarray: + """ + Get the stored powers as a sorted array + + :return: Sorted powers + :rtype: np.ndarray + """ + return self._sorted_self['power'] + + @property + def sorted_amplitudes(self) -> np.ndarray: + """ + Get the stored amplitudes based on the sorted powers + + :return: Sorted amplitudes + :rtype: np.ndarray + """ + return self._sorted_self['amp'] + + @property + def names(self) -> List[str]: + """ + Get the names of the factors in the collection. + + :return: Names of the factors in the collection + :rtype: List[str] + """ + return [item.name for item in self] + + def append(self, item: BackgroundFactor): + """ + Add a background factor to the collection. + + :param item: Background factor to be added. + :type item: BackgroundFactor + """ + if not isinstance(item, BackgroundFactor): + raise TypeError('Item must be a BackgroundFactor') + if item.power.raw_value in self.sorted_powers: + raise AttributeError(f'A BackgroundFactor with power {item.power.raw_value} already exists.') + super(FactorialBackground, self).append(item) + self.__index_contents() + + def get_parameters(self) -> List[Parameter]: + """" + Redefine get_parameters so that the returned values are in the correct order + """ + list_pars = np.array(super(FactorialBackground, self).get_parameters()) + idx = np.array([item.power.raw_value for item in self]).argsort() + return list_pars[idx].tolist() + + def __index_contents(self): + """ + Index the contents + """ + x = np.array([item.power.raw_value for item in self]) + idx = x.argsort() + y = np.array([item.amp.raw_value for item in self]) + self._sorted_self = { + 'idx': idx, + 'power': x[idx], + 'amp': y[idx] + } diff --git a/easyDiffractionLib/Elements/Backgrounds/Linear.py b/easyDiffractionLib/Elements/Backgrounds/Linear.py deleted file mode 100644 index 8e39111b..00000000 --- a/easyDiffractionLib/Elements/Backgrounds/Linear.py +++ /dev/null @@ -1,89 +0,0 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.0.1' - -from .Background import Background -from typing import Union, List - -from easyCore import np -from easyCore.Objects.Groups import BaseCollection -from easyCore.Objects.Base import Parameter, Descriptor, BaseObj - - -class BackgroundFactor(BaseObj): - def __init__(self, power: Descriptor, amp: Parameter): - name = f'Amplitude_{power.raw_value}' - super(BackgroundFactor, self).__init__(name, power=power, amp=amp) - - @classmethod - def from_pars(cls, power: float, amp: float): - power = Descriptor('power', power) - amp = Parameter('amplitude', amp, fixed=True) - return cls(power, amp) - - @classmethod - def default(cls): - return cls.from_pars(0, 1) - - def set(self, value): - self.amp = value - - -class FactorialBackground(Background): - - def __init__(self, *args, **kwargs): - super(FactorialBackground, self).__init__('factorial_background', *args, **kwargs) - - def calculate(self, x_array: np.ndarray) -> np.ndarray: - - shape_x = x_array.shape - reduced_x = x_array.flat - - y = np.zeros_like(reduced_x) - - powers = self.sorted_powers - amps = self.sorted_amplitudes - - for power, amp in zip(powers, amps): - y += amp*x_array**power - - return y.reshape(shape_x) - - def __repr__(self) -> str: - return f'Background of {len(self)} points.' - - def __getitem__(self, idx: Union[int, slice]) -> Union[Parameter, Descriptor, BaseObj, 'BaseCollection']: - return super(FactorialBackground, self).__getitem__(idx) - - def __delitem__(self, key): - return super(FactorialBackground, self).__delitem__(key) - - @property - def sorted_powers(self): - x = np.array([item.power.raw_value for item in self]) - x.sort() - return x - - @property - def sorted_amplitudes(self): - idx = np.array([item.power.raw_value for item in self]).argsort() - y = np.array([item.amp.raw_value for item in self]) - return y[idx] - - @property - def names(self): - return [item.name for item in self] - - def append(self, item: BackgroundFactor): - if not isinstance(item, BackgroundFactor): - raise TypeError('Item must be a BackgroundFactor') - if item.power.raw_value in self.sorted_powers: - raise AttributeError(f'A BackgroundFactor with power {item.power.raw_value} already exists.') - super(FactorialBackground, self).append(item) - - def get_parameters(self) -> List[Parameter]: - """" - Redefine get_parameters so that the returned values are in the correct order - """ - list_pars = np.array(super(FactorialBackground, self).get_parameters()) - idx = np.array([item.power.raw_value for item in self]).argsort() - return list_pars[idx].tolist() diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index a9bf4d5f..7a688217 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -97,6 +97,7 @@ def __init__(self, *args, linked_experiment: str = None, **kwargs): :param kwargs: Any additional kwargs """ super(PointBackground, self).__init__('point_background', *args, linked_experiment=linked_experiment, **kwargs) + self.__index_contents() def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -140,7 +141,7 @@ def __repr__(self) -> str: def __getitem__(self, idx: Union[int, slice]) -> Union[Parameter, Descriptor, BaseObj, 'BaseCollection']: """ - Return an item from the collection/ + Return an item from the collection. :param idx: index of item to be returned. :type idx: int @@ -156,7 +157,9 @@ def __delitem__(self, idx: int): :param idx: index of the item to be deleted :type idx: int """ - return super(PointBackground, self).__delitem__(idx) + removed_applied = super(PointBackground, self).__delitem__(idx) + self.__index_contents() + return removed_applied @property def x_sorted_points(self) -> np.ndarray: @@ -166,9 +169,7 @@ def x_sorted_points(self) -> np.ndarray: :return: Sorted x-values :rtype: np.ndarray """ - x = np.array([item.x.raw_value for item in self]) - x.sort() - return x + return self._sorted_self['x'] @property def y_sorted_points(self) -> np.ndarray: @@ -178,9 +179,7 @@ def y_sorted_points(self) -> np.ndarray: :return: Sorted y-values :rtype: np.ndarray """ - idx = np.array([item.x.raw_value for item in self]).argsort() - y = np.array([item.y.raw_value for item in self]) - return y[idx] + return self._sorted_self['y'] @property def names(self) -> List[str]: @@ -204,11 +203,24 @@ def append(self, item: BackgroundPoint): if item.x.raw_value in self.x_sorted_points: raise AttributeError(f'An BackgroundPoint at {item.x.raw_value} already exists.') super(PointBackground, self).append(item) + self.__index_contents() def get_parameters(self) -> List[Parameter]: """" Redefine get_parameters so that the returned values are in th correct order """ list_pars = np.array(super(PointBackground, self).get_parameters()) - idx = np.array([item.x.raw_value for item in self]).argsort() - return list_pars[idx].tolist() + return list_pars[self._sorted_self['idx']].tolist() + + def __index_contents(self): + """ + Index the contents + """ + x = np.array([item.x.raw_value for item in self]) + idx = x.argsort() + y = np.array([item.y.raw_value for item in self]) + self._sorted_self = { + 'idx': idx, + 'x': x[idx], + 'y': y[idx] + } From f12e16836857b18820d0690d30d3b0d7a7e4461e Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Thu, 26 Nov 2020 18:08:14 +0100 Subject: [PATCH 110/312] Revert BG changes --- .../Elements/Backgrounds/Point.py | 34 +- easyDiffractionLib/__init__.py | 2 +- tests/FittingData.ipynb | 2163 +++++++++++++++++ 3 files changed, 2175 insertions(+), 24 deletions(-) create mode 100644 tests/FittingData.ipynb diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index 7a688217..1c62641d 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -97,7 +97,6 @@ def __init__(self, *args, linked_experiment: str = None, **kwargs): :param kwargs: Any additional kwargs """ super(PointBackground, self).__init__('point_background', *args, linked_experiment=linked_experiment, **kwargs) - self.__index_contents() def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -114,7 +113,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: y = np.zeros_like(reduced_x) - low_x = x_array.flat[0] + low_x = x_array.flat[0] - 1e-10 x_points = self.x_sorted_points low_y = 0 y_points = self.y_sorted_points @@ -157,9 +156,7 @@ def __delitem__(self, idx: int): :param idx: index of the item to be deleted :type idx: int """ - removed_applied = super(PointBackground, self).__delitem__(idx) - self.__index_contents() - return removed_applied + return super(PointBackground, self).__delitem__(idx) @property def x_sorted_points(self) -> np.ndarray: @@ -169,7 +166,9 @@ def x_sorted_points(self) -> np.ndarray: :return: Sorted x-values :rtype: np.ndarray """ - return self._sorted_self['x'] + x = np.array([item.x.raw_value for item in self]) + x.sort() + return x @property def y_sorted_points(self) -> np.ndarray: @@ -179,7 +178,9 @@ def y_sorted_points(self) -> np.ndarray: :return: Sorted y-values :rtype: np.ndarray """ - return self._sorted_self['y'] + idx = np.array([item.x.raw_value for item in self]).argsort() + y = np.array([item.y.raw_value for item in self]) + return y[idx] @property def names(self) -> List[str]: @@ -203,24 +204,11 @@ def append(self, item: BackgroundPoint): if item.x.raw_value in self.x_sorted_points: raise AttributeError(f'An BackgroundPoint at {item.x.raw_value} already exists.') super(PointBackground, self).append(item) - self.__index_contents() def get_parameters(self) -> List[Parameter]: """" - Redefine get_parameters so that the returned values are in th correct order + Redefine get_parameters so that the returned values are in the correct order """ list_pars = np.array(super(PointBackground, self).get_parameters()) - return list_pars[self._sorted_self['idx']].tolist() - - def __index_contents(self): - """ - Index the contents - """ - x = np.array([item.x.raw_value for item in self]) - idx = x.argsort() - y = np.array([item.y.raw_value for item in self]) - self._sorted_self = { - 'idx': idx, - 'x': x[idx], - 'y': y[idx] - } + idx = np.array([item.x.raw_value for item in self]).argsort() + return list_pars[idx].tolist() diff --git a/easyDiffractionLib/__init__.py b/easyDiffractionLib/__init__.py index c19ebf12..331abf7d 100644 --- a/easyDiffractionLib/__init__.py +++ b/easyDiffractionLib/__init__.py @@ -1,4 +1,4 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -from easyCore.Elements.HigherLevel.Phase import Phase, Phases, Atoms, Site, SpaceGroup, Lattice \ No newline at end of file +from easyCore.Elements.HigherLevel.Phase import Phase, Phases, Atoms, Site, SpaceGroup, Lattice diff --git a/tests/FittingData.ipynb b/tests/FittingData.ipynb new file mode 100644 index 00000000..ed0af2b2 --- /dev/null +++ b/tests/FittingData.ipynb @@ -0,0 +1,2163 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fitting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are two built in fitting engines, `lmfit` and `bumps`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import all the packages." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Import all the packages\n", + "from easyCore import np\n", + "from easyDiffractionLib.sample import Sample\n", + "from easyDiffractionLib import Crystals\n", + "from easyDiffractionLib.interface import InterfaceFactory\n", + "from easyDiffractionLib.Elements.Instruments.Instrument import Pars1D\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparing the sample and data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We load up a cif file and then set the experimental parameters. The resolution has to be changed from the default as the peaks are too sharp" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "interface = InterfaceFactory()\n", + "c = Crystals.from_cif_file('SrTiO3.cif')\n", + "S = Sample(phases=c, parameters=Pars1D.default(), interface=interface)\n", + "S.parameters.u_resolution = 0.4\n", + "S.parameters.v_resolution = -0.5\n", + "S.parameters.w_resolution = 0.9\n", + "S.parameters.x_resolution = 0.0\n", + "S.parameters.y_resolution = 0.0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make some experimental data where we have varied the lattice parameter a" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sim Starting Cell:\n", + "\n", + "Exp Cell:\n", + "\n" + ] + } + ], + "source": [ + "# Make a note of the starting a value\n", + "starting_a = S.phases[0].cell.length_a.raw_value\n", + "# x-data\n", + "ex_x_data = np.linspace(0, 100, 501)\n", + "# New cell length a\n", + "ex_data_a = starting_a * (1 + 0.15*(np.random.rand()-0.5))\n", + "print('Sim Starting Cell:\\n{:s}'.format(str(S.phases[0].cell)))\n", + "\n", + "# Set the new a, which will be fitted.\n", + "S.phases[0].cell.length_a = ex_data_a\n", + "print('Exp Cell:\\n{:s}'.format(str(S.phases[0].cell)))\n", + "\n", + "# Generate the experimental y-data\n", + "ex_y_data = interface.fit_func(ex_x_data)\n", + "# Reset the model back to the starting point\n", + "S.phases[0].cell.length_a = starting_a" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " if (this.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n", + " }\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " var resizeObserver = new ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " resizeObserver.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = 'image/png';\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.which === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.which;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which !== 17) {\n", + " value += 'ctrl+';\n", + " }\n", + " if (event.altKey && event.which !== 18) {\n", + " value += 'alt+';\n", + " }\n", + " if (event.shiftKey && event.which !== 16) {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data']);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.one(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "starting_y_data = interface.fit_func(ex_x_data)\n", + "%matplotlib notebook\n", + "plt.plot(ex_x_data, ex_y_data, label='Experimental')\n", + "plt.plot(ex_x_data, starting_y_data, label='Starting point')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fitting to the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initalize the fitting engine and apply a few constraints" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "f = Fitter(S, interface.fit_func)\n", + "\n", + "S.phases[0].cell.length_a.fixed = False\n", + "S.phases[0].cell.length_a.min = 4\n", + "S.phases[0].cell.length_a.max = 8" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perform the fit" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The fit has been successful: True\n" + ] + } + ], + "source": [ + "result = f.fit(ex_x_data, ex_y_data, method='brute')\n", + "result = f.fit(ex_x_data, ex_y_data)\n", + "\n", + "if result.success:\n", + " print(\"The fit has been successful: {}\".format(result.success))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Expected value 5.7265173946279315\n" + ] + } + ], + "source": [ + "print(S.phases[0].cell.length_a)\n", + "print('Expected value {}'.format(ex_data_a))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " if (this.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n", + " }\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " var resizeObserver = new ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " resizeObserver.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = 'image/png';\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.which === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.which;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which !== 17) {\n", + " value += 'ctrl+';\n", + " }\n", + " if (event.altKey && event.which !== 18) {\n", + " value += 'alt+';\n", + " }\n", + " if (event.shiftKey && event.which !== 16) {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data']);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.one(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib notebook\n", + "plt.figure()\n", + "plt.plot(result.x, result.y_obs, label='Experimental')\n", + "plt.plot(result.x, result.y_calc, label='Fitted')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 87136331d34642d0b6ad1ad2f992461ff74b504a Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 26 Nov 2020 21:13:23 +0100 Subject: [PATCH 111/312] Debugging info for y_calc --- easyDiffractionLib/Calculators/CFML.py | 15 ++++++++++----- easyDiffractionLib/Calculators/GSASII.py | 7 ++++++- easyDiffractionLib/Calculators/cryspy.py | 7 ++++++- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index e13f1499..ef0e3a4c 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -11,8 +11,6 @@ class CFML: def __init__(self, filename: str = None): - print("CFML __init__") - self.filename = filename self.conditions = CFML_api.PowderPatternSimulationConditions() self.conditions.job = CFML_api.PowderPatternSimulationSource.Neutrons @@ -32,7 +30,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if self.filename is None: raise AttributeError - print("self.filename", self.filename ) + #print("self.filename", self.filename) if self.pattern is None: scale = 1.0 @@ -66,7 +64,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: #print("self.conditions.theta_max", self.conditions.theta_max) #print("self.conditions.theta_step", self.conditions.theta_step) - sin_theta_over_lambda_max = math.sin(math.radians(0.5 * self.conditions.theta_max)) / self.conditions.lamb + #sin_theta_over_lambda_max = math.sin(math.radians(0.5 * self.conditions.theta_max)) / self.conditions.lamb + sin_theta_over_lambda_max = self.conditions.getSinThetaOverLambdaMax() #print(f"CFML self.conditions.getSinThetaOverLambdaMax(): {self.conditions.getSinThetaOverLambdaMax()}") #print(f"Manually sin_theta_over_lambda_max: {sin_theta_over_lambda_max}") @@ -88,4 +87,10 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: else: bg = self.background.calculate(this_x_array) - return scale*diffraction_pattern.ycalc + bg + + res = scale * diffraction_pattern.ycalc + bg + + np.set_printoptions(precision=3) + print(f"y_calc: {res}") + + return res diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index c92e753d..955f4978 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -119,4 +119,9 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: else: bg = self.background.calculate(this_x_array) - return scale*ycalc + bg + res = scale * ycalc + bg + + np.set_printoptions(precision=3) + print(f"y_calc: {res}") + + return res diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 84b478bd..f40ad758 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -68,4 +68,9 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: else: bg = self.background.calculate(this_x_array) - return scale * np.array(profile.intensity_total) + bg + res = scale * np.array(profile.intensity_total) + bg + + np.set_printoptions(precision=3) + print(f"y_calc: {res}") + + return res From 77bff2e49f86b557761d2eba9c3bc719ef0ff506 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 27 Nov 2020 13:37:19 +0100 Subject: [PATCH 112/312] Add fitting notebook --- tests/FittingData.ipynb | 3701 ++++++++++++++++++++++---------- tests/PbSO4.cif | 24 + tests/PbSO4_neutrons_short.xye | 2202 +++++++++++++++++++ 3 files changed, 4759 insertions(+), 1168 deletions(-) create mode 100644 tests/PbSO4.cif create mode 100644 tests/PbSO4_neutrons_short.xye diff --git a/tests/FittingData.ipynb b/tests/FittingData.ipynb index ed0af2b2..b61a3f06 100644 --- a/tests/FittingData.ipynb +++ b/tests/FittingData.ipynb @@ -30,9 +30,11 @@ "# Import all the packages\n", "from easyCore import np\n", "from easyDiffractionLib.sample import Sample\n", - "from easyDiffractionLib import Crystals\n", + "from easyDiffractionLib import Phases\n", "from easyDiffractionLib.interface import InterfaceFactory\n", - "from easyDiffractionLib.Elements.Instruments.Instrument import Pars1D\n", + "from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "\n", "from easyCore.Fitting.Fitting import Fitter\n", "\n", "import matplotlib.pyplot as plt" @@ -49,30 +51,33 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We load up a cif file and then set the experimental parameters. The resolution has to be changed from the default as the peaks are too sharp" + "We load up a cif file and then set the experimental parameters." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: /tmp/easydiffraction_temp.cif\n" + ] + } + ], "source": [ "interface = InterfaceFactory()\n", - "c = Crystals.from_cif_file('SrTiO3.cif')\n", - "S = Sample(phases=c, parameters=Pars1D.default(), interface=interface)\n", - "S.parameters.u_resolution = 0.4\n", - "S.parameters.v_resolution = -0.5\n", - "S.parameters.w_resolution = 0.9\n", - "S.parameters.x_resolution = 0.0\n", - "S.parameters.y_resolution = 0.0" + "c = Phases.from_cif_file('PbSO4.cif')\n", + "S = Sample(phases=c, parameters=Pars1D.default(), pattern=Pattern1D.default(), interface=interface)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Make some experimental data where we have varied the lattice parameter a" + "We can load up some experimental data" ] }, { @@ -84,73 +89,57 @@ "name": "stdout", "output_type": "stream", "text": [ - "Sim Starting Cell:\n", - "\n", - "Exp Cell:\n", - "\n" + "y_calc: [0.000e+00 0.000e+00 0.000e+00 ... 1.785e-27 5.036e-27 4.583e-27]\n" ] } ], "source": [ - "# Make a note of the starting a value\n", - "starting_a = S.phases[0].cell.length_a.raw_value\n", - "# x-data\n", - "ex_x_data = np.linspace(0, 100, 501)\n", - "# New cell length a\n", - "ex_data_a = starting_a * (1 + 0.15*(np.random.rand()-0.5))\n", - "print('Sim Starting Cell:\\n{:s}'.format(str(S.phases[0].cell)))\n", - "\n", - "# Set the new a, which will be fitted.\n", - "S.phases[0].cell.length_a = ex_data_a\n", - "print('Exp Cell:\\n{:s}'.format(str(S.phases[0].cell)))\n", + "file_path = 'PbSO4_neutrons_short.xye'\n", + "data_x, data_y, data_e = np.loadtxt(file_path, unpack=True)\n", "\n", - "# Generate the experimental y-data\n", - "ex_y_data = interface.fit_func(ex_x_data)\n", - "# Reset the model back to the starting point\n", - "S.phases[0].cell.length_a = starting_a" + "# Generate the simulation y-data\n", + "sim_y_data = interface.fit_func(data_x)\n" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", - "/* global mpl */\n", "window.mpl = {};\n", "\n", - "mpl.get_websocket_type = function () {\n", - " if (typeof WebSocket !== 'undefined') {\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", - " } else if (typeof MozWebSocket !== 'undefined') {\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", - " alert(\n", - " 'Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.'\n", - " );\n", - " }\n", - "};\n", + " alert('Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", "\n", - "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", - " this.supports_binary = this.ws.binaryType !== undefined;\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", - " var warnings = document.getElementById('mpl-warnings');\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", - " warnings.textContent =\n", - " 'This browser does not support binary websocket messages. ' +\n", - " 'Performance may be slow.';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", @@ -165,11 +154,11 @@ "\n", " this.image_mode = 'full';\n", "\n", - " this.root = document.createElement('div');\n", - " this.root.setAttribute('style', 'display: inline-block');\n", - " this._root_extra_style(this.root);\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", "\n", - " parent_element.appendChild(this.root);\n", + " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", @@ -179,353 +168,285 @@ "\n", " this.waiting = false;\n", "\n", - " this.ws.onopen = function () {\n", - " fig.send_message('supports_binary', { value: fig.supports_binary });\n", - " fig.send_message('send_image_mode', {});\n", - " if (fig.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", " }\n", - " fig.send_message('refresh', {});\n", - " };\n", "\n", - " this.imageObj.onload = function () {\n", - " if (fig.image_mode === 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", "\n", - " this.imageObj.onunload = function () {\n", + " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", - " };\n", + " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", - "};\n", + "}\n", "\n", - "mpl.figure.prototype._init_header = function () {\n", - " var titlebar = document.createElement('div');\n", - " titlebar.classList =\n", - " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", - " var titletext = document.createElement('div');\n", - " titletext.classList = 'ui-dialog-title';\n", - " titletext.setAttribute(\n", - " 'style',\n", - " 'width: 100%; text-align: center; padding: 3px;'\n", - " );\n", - " titlebar.appendChild(titletext);\n", - " this.root.appendChild(titlebar);\n", - " this.header = titletext;\n", - "};\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", "\n", - "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", - "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", - "mpl.figure.prototype._init_canvas = function () {\n", - " var fig = this;\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", - " var canvas_div = (this.canvas_div = document.createElement('div'));\n", - " canvas_div.setAttribute(\n", - " 'style',\n", - " 'border: 1px solid #ddd;' +\n", - " 'box-sizing: content-box;' +\n", - " 'clear: both;' +\n", - " 'min-height: 1px;' +\n", - " 'min-width: 1px;' +\n", - " 'outline: 0;' +\n", - " 'overflow: hidden;' +\n", - " 'position: relative;' +\n", - " 'resize: both;'\n", - " );\n", + "}\n", "\n", - " function on_keyboard_event_closure(name) {\n", - " return function (event) {\n", - " return fig.key_event(event, name);\n", - " };\n", - " }\n", "\n", - " canvas_div.addEventListener(\n", - " 'keydown',\n", - " on_keyboard_event_closure('key_press')\n", - " );\n", - " canvas_div.addEventListener(\n", - " 'keyup',\n", - " on_keyboard_event_closure('key_release')\n", - " );\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", - " this._canvas_extra_style(canvas_div);\n", - " this.root.appendChild(canvas_div);\n", + "}\n", "\n", - " var canvas = (this.canvas = document.createElement('canvas'));\n", - " canvas.classList.add('mpl-canvas');\n", - " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", "\n", - " this.context = canvas.getContext('2d');\n", + " var canvas_div = $('
');\n", "\n", - " var backingStore =\n", - " this.context.backingStorePixelRatio ||\n", - " this.context.webkitBackingStorePixelRatio ||\n", - " this.context.mozBackingStorePixelRatio ||\n", - " this.context.msBackingStorePixelRatio ||\n", - " this.context.oBackingStorePixelRatio ||\n", - " this.context.backingStorePixelRatio ||\n", - " 1;\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", - " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - " if (this.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", " }\n", "\n", - " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", - " 'canvas'\n", - " ));\n", - " rubberband_canvas.setAttribute(\n", - " 'style',\n", - " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", - " );\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", "\n", - " var resizeObserver = new ResizeObserver(function (entries) {\n", - " var nentries = entries.length;\n", - " for (var i = 0; i < nentries; i++) {\n", - " var entry = entries[i];\n", - " var width, height;\n", - " if (entry.contentBoxSize) {\n", - " if (entry.contentBoxSize instanceof Array) {\n", - " // Chrome 84 implements new version of spec.\n", - " width = entry.contentBoxSize[0].inlineSize;\n", - " height = entry.contentBoxSize[0].blockSize;\n", - " } else {\n", - " // Firefox implements old version of spec.\n", - " width = entry.contentBoxSize.inlineSize;\n", - " height = entry.contentBoxSize.blockSize;\n", - " }\n", - " } else {\n", - " // Chrome <84 implements even older version of spec.\n", - " width = entry.contentRect.width;\n", - " height = entry.contentRect.height;\n", - " }\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", - " // Keep the size of the canvas and rubber band canvas in sync with\n", - " // the canvas container.\n", - " if (entry.devicePixelContentBoxSize) {\n", - " // Chrome 84 implements new version of spec.\n", - " canvas.setAttribute(\n", - " 'width',\n", - " entry.devicePixelContentBoxSize[0].inlineSize\n", - " );\n", - " canvas.setAttribute(\n", - " 'height',\n", - " entry.devicePixelContentBoxSize[0].blockSize\n", - " );\n", - " } else {\n", - " canvas.setAttribute('width', width * fig.ratio);\n", - " canvas.setAttribute('height', height * fig.ratio);\n", - " }\n", - " canvas.setAttribute(\n", - " 'style',\n", - " 'width: ' + width + 'px; height: ' + height + 'px;'\n", - " );\n", - "\n", - " rubberband_canvas.setAttribute('width', width);\n", - " rubberband_canvas.setAttribute('height', height);\n", - "\n", - " // And update the size in Python. We ignore the initial 0/0 size\n", - " // that occurs as the element is placed into the DOM, which should\n", - " // otherwise not happen due to the minimum size styling.\n", - " if (width != 0 && height != 0) {\n", - " fig.request_resize(width, height);\n", - " }\n", - " }\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", " });\n", - " resizeObserver.observe(canvas_div);\n", "\n", - " function on_mouse_event_closure(name) {\n", - " return function (event) {\n", - " return fig.mouse_event(event, name);\n", - " };\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", - " rubberband_canvas.addEventListener(\n", - " 'mousedown',\n", - " on_mouse_event_closure('button_press')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseup',\n", - " on_mouse_event_closure('button_release')\n", - " );\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband_canvas.addEventListener(\n", - " 'mousemove',\n", - " on_mouse_event_closure('motion_notify')\n", - " );\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseenter',\n", - " on_mouse_event_closure('figure_enter')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseleave',\n", - " on_mouse_event_closure('figure_leave')\n", - " );\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", - " canvas_div.addEventListener('wheel', function (event) {\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", - " on_mouse_event_closure('scroll')(event);\n", + " mouse_event_fn(event);\n", " });\n", "\n", - " canvas_div.appendChild(canvas);\n", - " canvas_div.appendChild(rubberband_canvas);\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", "\n", - " this.rubberband_context = rubberband_canvas.getContext('2d');\n", - " this.rubberband_context.strokeStyle = '#000000';\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", - " this._resize_canvas = function (width, height, forward) {\n", - " if (forward) {\n", - " canvas_div.style.width = width + 'px';\n", - " canvas_div.style.height = height + 'px';\n", - " }\n", - " };\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", - " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", - " event.preventDefault();\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", - " function set_focus() {\n", + " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", - "};\n", + "}\n", "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", + "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'mpl-toolbar';\n", - " this.root.appendChild(toolbar);\n", + " var nav_element = $('
');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", + " // put a spacer in here.\n", " continue;\n", " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "S.parameters.wavelength = 1.912\n", + "S.parameters.u_resolution = 1.4\n", + "S.parameters.v_resolution = -0.42\n", + "S.parameters.w_resolution = 0.38\n", + "S.parameters.x_resolution = 0.0\n", + "S.parameters.y_resolution = 0.0\n", + "\n", + "sim_y_data = interface.fit_func(data_x)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experimental')\n", + "plt.plot(data_x, sim_y_data, label='Starting point')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we need to set the background" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "\n", + "bg = PointBackground(linked_experiment='PbSO4')\n", + "bg.append(BackgroundPoint.from_pars(data_x[0], 200))\n", + "bg.append(BackgroundPoint.from_pars(data_x[-1], 200))\n", + "\n", + "S.set_background(bg)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collection of 1 backgrounds.\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n" + ] + }, + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message pull-right';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", - " var buttongrp = document.createElement('div');\n", - " buttongrp.classList = 'btn-group inline pull-right';\n", - " button = document.createElement('button');\n", - " button.classList = 'btn btn-mini btn-primary';\n", - " button.href = '#';\n", - " button.title = 'Stop Interaction';\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', function (_evt) {\n", - " fig.handle_close(fig, {});\n", - " });\n", - " button.addEventListener(\n", - " 'mouseover',\n", - " on_mouseover_closure('Stop Interaction')\n", - " );\n", - " buttongrp.appendChild(button);\n", - " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", - " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", - "};\n", - "\n", - "mpl.figure.prototype._remove_fig_handler = function (event) {\n", - " var fig = event.data.fig;\n", - " fig.close_ws(fig, {});\n", - "};\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", "\n", - "mpl.figure.prototype._root_extra_style = function (el) {\n", - " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", - "};\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", "\n", - "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", - " el.setAttribute('tabindex', 0);\n", + " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", - " } else {\n", + " }\n", + " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", - "};\n", "\n", - "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager) {\n", + " if (!manager)\n", " manager = IPython.keyboard_manager;\n", - " }\n", "\n", " // Check for shift+enter\n", - " if (event.shiftKey && event.which === 13) {\n", + " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", - "};\n", + "}\n", "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", - "};\n", + "}\n", + "\n", "\n", - "mpl.find_output_cell = function (html_output) {\n", + "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", - " for (var i = 0; i < ncells; i++) {\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", - " if (data['text/html'] === html_output) {\n", + " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", - "};\n", + "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel !== null) {\n", - " IPython.notebook.kernel.comm_manager.register_target(\n", - " 'matplotlib',\n", - " mpl.mpl_figure_comm\n", - " );\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ @@ -2112,7 +3448,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -2120,15 +3456,44 @@ }, "metadata": {}, "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ "%matplotlib notebook\n", - "plt.figure()\n", - "plt.plot(result.x, result.y_obs, label='Experimental')\n", - "plt.plot(result.x, result.y_calc, label='Fitted')\n", - "plt.legend()\n", - "plt.show()" + "plt.plot(data_x, data_y, label='Experimental')\n", + "plt.plot(data_x, sim_y_data, label='Starting point')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scale: \n", + "Scale: \n", + "Scale: \n" + ] + } + ], + "source": [ + "print(f'Scale: {S.pattern.scale}')\n", + "print(f'Scale: {S.backgrounds[0][0].y}')\n", + "print(f'Scale: {S.backgrounds[0][1].y}')" ] }, { diff --git a/tests/PbSO4.cif b/tests/PbSO4.cif new file mode 100644 index 00000000..4e7ad534 --- /dev/null +++ b/tests/PbSO4.cif @@ -0,0 +1,24 @@ +data_PbSO4 + +_cell_length_a 8.48 +_cell_length_b 5.398 +_cell_length_c 6.958 +_cell_angle_alpha 90.0 +_cell_angle_beta 90.0 +_cell_angle_gamma 90.0 +_space_group_name_H-M_alt 'P n m a' + +loop_ + _atom_site_label + _atom_site_type_symbol + _atom_site_occupancy + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_adp_type + _atom_site_U_iso_or_equiv + Pb Pb 1.0 0.1882 0.25 0.167 Uiso 0.01 + S S 1.0 0.063 0.25 0.686 Uiso 0.01 + O1 O 1.0 -0.095 0.25 0.6 Uiso 0.01 + O2 O 1.0 0.181 0.25 0.543 Uiso 0.01 + O3 O 1.0 0.085 0.026 0.806 Uiso 0.01 diff --git a/tests/PbSO4_neutrons_short.xye b/tests/PbSO4_neutrons_short.xye new file mode 100644 index 00000000..6ff09d36 --- /dev/null +++ b/tests/PbSO4_neutrons_short.xye @@ -0,0 +1,2202 @@ +# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992) + 10.0000 220.0000 14.8324 + 10.0500 214.0000 14.6287 + 10.1000 219.0000 14.7986 + 10.1500 224.0000 14.9666 + 10.2000 198.0000 14.0712 + 10.2500 229.0000 15.1327 + 10.3000 224.0000 14.9666 + 10.3500 216.0000 14.6969 + 10.4000 202.0000 14.2127 + 10.4500 229.0000 15.1327 + 10.5000 202.0000 14.2127 + 10.5500 215.0000 14.6629 + 10.6000 215.0000 14.6629 + 10.6500 196.0000 14.0000 + 10.7000 235.0000 15.3297 + 10.7500 207.0000 14.3875 + 10.8000 205.0000 14.3178 + 10.8500 238.0000 15.4272 + 10.9000 202.0000 14.2127 + 10.9500 213.0000 14.5945 + 11.0000 226.0000 15.0333 + 11.0500 198.0000 14.0712 + 11.1000 222.0000 14.8997 + 11.1500 186.0000 13.6382 + 11.2000 216.0000 14.6969 + 11.2500 218.0000 14.7648 + 11.3000 225.0000 15.0000 + 11.3500 200.0000 14.1421 + 11.4000 196.0000 14.0000 + 11.4500 224.0000 14.9666 + 11.5000 199.0000 14.1067 + 11.5500 204.0000 14.2829 + 11.6000 189.0000 13.7477 + 11.6500 211.0000 14.5258 + 11.7000 190.0000 13.7840 + 11.7500 184.0000 13.5647 + 11.8000 204.0000 14.2829 + 11.8500 204.0000 14.2829 + 11.9000 219.0000 14.7986 + 11.9500 207.0000 14.3875 + 12.0000 227.0000 15.0665 + 12.0500 211.0000 10.2713 + 12.1000 193.0000 9.8234 + 12.1500 206.0000 10.1489 + 12.2000 208.0000 10.1980 + 12.2500 191.0000 9.7724 + 12.3000 194.0000 9.8489 + 12.3500 185.0000 9.6177 + 12.4000 200.0000 10.0000 + 12.4500 203.0000 10.0747 + 12.5000 197.0000 9.9247 + 12.5500 203.0000 10.0747 + 12.6000 200.0000 10.0000 + 12.6500 200.0000 10.0000 + 12.7000 205.0000 10.1242 + 12.7500 208.0000 10.1980 + 12.8000 205.0000 10.1242 + 12.8500 201.0000 10.0250 + 12.9000 221.0000 10.5119 + 12.9500 218.0000 10.4403 + 13.0000 218.0000 10.4403 + 13.0500 216.0000 10.3923 + 13.1000 202.0000 10.0499 + 13.1500 206.0000 10.1489 + 13.2000 197.0000 9.9247 + 13.2500 210.0000 10.2470 + 13.3000 199.0000 9.9750 + 13.3500 219.0000 10.4642 + 13.4000 192.0000 9.7980 + 13.4500 211.0000 10.2713 + 13.5000 199.0000 9.9750 + 13.5500 196.0000 9.8995 + 13.6000 195.0000 9.8742 + 13.6500 203.0000 10.0747 + 13.7000 202.0000 10.0499 + 13.7500 200.0000 10.0000 + 13.8000 199.0000 9.9750 + 13.8500 191.0000 9.7724 + 13.9000 204.0000 10.0995 + 13.9500 191.0000 9.7724 + 14.0000 200.0000 10.0000 + 14.0500 199.0000 9.9750 + 14.1000 197.0000 9.9247 + 14.1500 202.0000 10.0499 + 14.2000 210.0000 10.2470 + 14.2500 202.0000 10.0499 + 14.3000 198.0000 9.9499 + 14.3500 191.0000 9.7724 + 14.4000 194.0000 9.8489 + 14.4500 198.0000 9.9499 + 14.5000 194.0000 9.8489 + 14.5500 193.0000 9.8234 + 14.6000 212.0000 10.2956 + 14.6500 214.0000 10.3441 + 14.7000 197.0000 9.9247 + 14.7500 195.0000 9.8742 + 14.8000 205.0000 10.1242 + 14.8500 209.0000 10.2225 + 14.9000 203.0000 10.0747 + 14.9500 197.0000 9.9247 + 15.0000 191.0000 9.7724 + 15.0500 192.0000 9.7980 + 15.1000 215.0000 10.3682 + 15.1500 194.0000 9.8489 + 15.2000 189.0000 9.7211 + 15.2500 188.0000 9.6954 + 15.3000 202.0000 10.0499 + 15.3500 201.0000 10.0250 + 15.4000 198.0000 9.9499 + 15.4500 208.0000 10.1980 + 15.5000 197.0000 9.9247 + 15.5500 187.0000 9.6695 + 15.6000 187.0000 9.6695 + 15.6500 190.0000 9.7468 + 15.7000 197.0000 9.9247 + 15.7500 200.0000 10.0000 + 15.8000 193.0000 9.8234 + 15.8500 180.0000 9.4868 + 15.9000 194.0000 9.8489 + 15.9500 206.0000 10.1489 + 16.0000 195.0000 9.8742 + 16.0500 193.0000 9.8234 + 16.1000 205.0000 10.1242 + 16.1500 194.0000 9.8489 + 16.2000 196.0000 9.8995 + 16.2500 194.0000 9.8489 + 16.3000 199.0000 9.9750 + 16.3500 207.0000 10.1735 + 16.4000 188.0000 9.6954 + 16.4500 203.0000 10.0747 + 16.5000 188.0000 9.6954 + 16.5500 180.0000 9.4868 + 16.6000 198.0000 9.9499 + 16.6500 200.0000 10.0000 + 16.7000 201.0000 10.0250 + 16.7500 210.0000 10.2470 + 16.8000 206.0000 10.1489 + 16.8500 189.0000 9.7211 + 16.9000 194.0000 9.8489 + 16.9500 187.0000 9.6695 + 17.0000 195.0000 9.8742 + 17.0500 201.0000 10.0250 + 17.1000 197.0000 9.9247 + 17.1500 206.0000 10.1489 + 17.2000 208.0000 10.1980 + 17.2500 199.0000 9.9750 + 17.3000 192.0000 9.7980 + 17.3500 193.0000 9.8234 + 17.4000 204.0000 10.0995 + 17.4500 201.0000 10.0250 + 17.5000 200.0000 10.0000 + 17.5500 177.0000 9.4074 + 17.6000 193.0000 9.8234 + 17.6500 199.0000 9.9750 + 17.7000 201.0000 10.0250 + 17.7500 194.0000 9.8489 + 17.8000 184.0000 9.5917 + 17.8500 192.0000 9.7980 + 17.9000 199.0000 9.9750 + 17.9500 190.0000 9.7468 + 18.0000 183.0000 9.5656 + 18.0500 189.0000 7.9373 + 18.1000 196.0000 8.0829 + 18.1500 196.0000 8.0829 + 18.2000 198.0000 8.1240 + 18.2500 210.0000 8.3666 + 18.3000 212.0000 8.4063 + 18.3500 219.0000 8.5440 + 18.4000 198.0000 8.1240 + 18.4500 195.0000 8.0623 + 18.5000 198.0000 8.1240 + 18.5500 191.0000 7.9791 + 18.6000 193.0000 8.0208 + 18.6500 197.0000 8.1035 + 18.7000 194.0000 8.0416 + 18.7500 187.0000 7.8951 + 18.8000 209.0000 8.3467 + 18.8500 187.0000 7.8951 + 18.9000 198.0000 8.1240 + 18.9500 206.0000 8.2865 + 19.0000 197.0000 8.1035 + 19.0500 191.0000 7.9791 + 19.1000 200.0000 8.1650 + 19.1500 207.0000 8.3066 + 19.2000 205.0000 8.2664 + 19.2500 198.0000 8.1240 + 19.3000 196.0000 8.0829 + 19.3500 209.0000 8.3467 + 19.4000 211.0000 8.3865 + 19.4500 203.0000 8.2260 + 19.5000 200.0000 8.1650 + 19.5500 192.0000 8.0000 + 19.6000 208.0000 8.3267 + 19.6500 213.0000 8.4261 + 19.7000 221.0000 8.5829 + 19.7500 216.0000 8.4853 + 19.8000 226.0000 8.6795 + 19.8500 228.0000 8.7178 + 19.9000 228.0000 8.7178 + 19.9500 215.0000 8.4656 + 20.0000 224.0000 8.6410 + 20.0500 226.0000 8.6795 + 20.1000 213.0000 8.4261 + 20.1500 239.0000 8.9256 + 20.2000 250.0000 9.1287 + 20.2500 247.0000 9.0738 + 20.3000 240.0000 8.9443 + 20.3500 231.0000 8.7750 + 20.4000 236.0000 8.8694 + 20.4500 223.0000 8.6217 + 20.5000 231.0000 8.7750 + 20.5500 226.0000 8.6795 + 20.6000 214.0000 8.4459 + 20.6500 208.0000 8.3267 + 20.7000 214.0000 8.4459 + 20.7500 196.0000 8.0829 + 20.8000 204.0000 8.2462 + 20.8500 199.0000 8.1445 + 20.9000 186.0000 7.8740 + 20.9500 192.0000 8.0000 + 21.0000 199.0000 8.1445 + 21.0500 200.0000 8.1650 + 21.1000 184.0000 7.8316 + 21.1500 184.0000 7.8316 + 21.2000 189.0000 7.9373 + 21.2500 182.0000 7.7889 + 21.3000 184.0000 7.8316 + 21.3500 185.0000 7.8528 + 21.4000 195.0000 8.0623 + 21.4500 190.0000 7.9582 + 21.5000 194.0000 8.0416 + 21.5500 185.0000 7.8528 + 21.6000 183.0000 7.8102 + 21.6500 193.0000 8.0208 + 21.7000 194.0000 8.0416 + 21.7500 193.0000 8.0208 + 21.8000 188.0000 7.9162 + 21.8500 191.0000 7.9791 + 21.9000 189.0000 7.9373 + 21.9500 188.0000 7.9162 + 22.0000 201.0000 8.1854 + 22.0500 195.0000 8.0623 + 22.1000 205.0000 8.2664 + 22.1500 200.0000 8.1650 + 22.2000 200.0000 8.1650 + 22.2500 192.0000 8.0000 + 22.3000 197.0000 8.1035 + 22.3500 204.0000 8.2462 + 22.4000 207.0000 8.3066 + 22.4500 192.0000 8.0000 + 22.5000 201.0000 8.1854 + 22.5500 190.0000 7.9582 + 22.6000 195.0000 8.0623 + 22.6500 194.0000 8.0416 + 22.7000 182.0000 7.7889 + 22.7500 189.0000 7.9373 + 22.8000 196.0000 8.0829 + 22.8500 196.0000 8.0829 + 22.9000 200.0000 8.1650 + 22.9500 190.0000 7.9582 + 23.0000 183.0000 7.8102 + 23.0500 199.0000 8.1445 + 23.1000 187.0000 7.8951 + 23.1500 196.0000 8.0829 + 23.2000 191.0000 7.9791 + 23.2500 191.0000 7.9791 + 23.3000 195.0000 8.0623 + 23.3500 194.0000 8.0416 + 23.4000 192.0000 8.0000 + 23.4500 182.0000 7.7889 + 23.5000 188.0000 7.9162 + 23.5500 203.0000 8.2260 + 23.6000 187.0000 7.8951 + 23.6500 192.0000 8.0000 + 23.7000 206.0000 8.2865 + 23.7500 201.0000 8.1854 + 23.8000 184.0000 7.8316 + 23.8500 192.0000 8.0000 + 23.9000 205.0000 8.2664 + 23.9500 196.0000 8.0829 + 24.0000 193.0000 8.0208 + 24.0500 194.0000 6.9642 + 24.1000 195.0000 6.9821 + 24.1500 194.0000 6.9642 + 24.2000 201.0000 7.0887 + 24.2500 193.0000 6.9462 + 24.3000 176.0000 6.6332 + 24.3500 187.0000 6.8374 + 24.4000 188.0000 6.8557 + 24.4500 196.0000 7.0000 + 24.5000 192.0000 6.9282 + 24.5500 185.0000 6.8007 + 24.6000 195.0000 6.9821 + 24.6500 198.0000 7.0356 + 24.7000 205.0000 7.1589 + 24.7500 200.0000 7.0711 + 24.8000 208.0000 7.2111 + 24.8500 195.0000 6.9821 + 24.9000 187.0000 6.8374 + 24.9500 193.0000 6.9462 + 25.0000 197.0000 7.0178 + 25.0500 202.0000 7.1063 + 25.1000 193.0000 6.9462 + 25.1500 196.0000 7.0000 + 25.2000 202.0000 7.1063 + 25.2500 201.0000 7.0887 + 25.3000 197.0000 7.0178 + 25.3500 204.0000 7.1414 + 25.4000 208.0000 7.2111 + 25.4500 206.0000 7.1764 + 25.5000 212.0000 7.2801 + 25.5500 207.0000 7.1937 + 25.6000 207.0000 7.1937 + 25.6500 212.0000 7.2801 + 25.7000 216.0000 7.3485 + 25.7500 218.0000 7.3824 + 25.8000 221.0000 7.4330 + 25.8500 218.0000 7.3824 + 25.9000 207.0000 7.1937 + 25.9500 203.0000 7.1239 + 26.0000 204.0000 7.1414 + 26.0500 202.0000 7.1063 + 26.1000 206.0000 7.1764 + 26.1500 202.0000 7.1063 + 26.2000 202.0000 7.1063 + 26.2500 181.0000 6.7268 + 26.3000 193.0000 6.9462 + 26.3500 205.0000 7.1589 + 26.4000 198.0000 7.0356 + 26.4500 196.0000 7.0000 + 26.5000 197.0000 7.0178 + 26.5500 195.0000 6.9821 + 26.6000 201.0000 7.0887 + 26.6500 205.0000 7.1589 + 26.7000 195.0000 6.9821 + 26.7500 196.0000 7.0000 + 26.8000 196.0000 7.0000 + 26.8500 205.0000 7.1589 + 26.9000 198.0000 7.0356 + 26.9500 200.0000 7.0711 + 27.0000 199.0000 7.0534 + 27.0500 180.0000 6.7082 + 27.1000 187.0000 6.8374 + 27.1500 193.0000 6.9462 + 27.2000 197.0000 7.0178 + 27.2500 197.0000 7.0178 + 27.3000 196.0000 7.0000 + 27.3500 194.0000 6.9642 + 27.4000 197.0000 7.0178 + 27.4500 204.0000 7.1414 + 27.5000 201.0000 7.0887 + 27.5500 187.0000 6.8374 + 27.6000 191.0000 6.9101 + 27.6500 205.0000 7.1589 + 27.7000 200.0000 7.0711 + 27.7500 198.0000 7.0356 + 27.8000 200.0000 7.0711 + 27.8500 204.0000 7.1414 + 27.9000 196.0000 7.0000 + 27.9500 195.0000 6.9821 + 28.0000 194.0000 6.9642 + 28.0500 200.0000 7.0711 + 28.1000 198.0000 7.0356 + 28.1500 201.0000 7.0887 + 28.2000 208.0000 7.2111 + 28.2500 205.0000 7.1589 + 28.3000 211.0000 7.2629 + 28.3500 211.0000 7.2629 + 28.4000 220.0000 7.4162 + 28.4500 220.0000 7.4162 + 28.5000 212.0000 7.2801 + 28.5500 208.0000 7.2111 + 28.6000 214.0000 7.3144 + 28.6500 226.0000 7.5166 + 28.7000 235.0000 7.6649 + 28.7500 233.0000 7.6322 + 28.8000 237.0000 7.6974 + 28.8500 242.0000 7.7782 + 28.9000 242.0000 7.7782 + 28.9500 245.0000 7.8262 + 29.0000 239.0000 7.7298 + 29.0500 226.0000 7.5166 + 29.1000 232.0000 7.6158 + 29.1500 238.0000 7.7136 + 29.2000 226.0000 7.5166 + 29.2500 218.0000 7.3824 + 29.3000 218.0000 7.3824 + 29.3500 214.0000 7.3144 + 29.4000 205.0000 7.1589 + 29.4500 200.0000 7.0711 + 29.5000 193.0000 6.9462 + 29.5500 195.0000 6.9821 + 29.6000 196.0000 7.0000 + 29.6500 195.0000 6.9821 + 29.7000 207.0000 7.1937 + 29.7500 215.0000 7.3314 + 29.8000 207.0000 7.1937 + 29.8500 218.0000 7.3824 + 29.9000 218.0000 7.3824 + 29.9500 220.0000 7.4162 + 30.0000 220.0000 7.4162 + 30.0500 229.0000 6.7676 + 30.1000 236.0000 6.8702 + 30.1500 254.0000 7.1274 + 30.2000 264.0000 7.2664 + 30.2500 280.0000 7.4833 + 30.3000 289.0000 7.6026 + 30.3500 289.0000 7.6026 + 30.4000 303.0000 7.7846 + 30.4500 302.0000 7.7717 + 30.5000 297.0000 7.7071 + 30.5500 281.0000 7.4967 + 30.6000 278.0000 7.4565 + 30.6500 280.0000 7.4833 + 30.7000 265.0000 7.2801 + 30.7500 258.0000 7.1833 + 30.8000 243.0000 6.9714 + 30.8500 240.0000 6.9282 + 30.9000 232.0000 6.8118 + 30.9500 231.0000 6.7971 + 31.0000 233.0000 6.8264 + 31.0500 246.0000 7.0143 + 31.1000 248.0000 7.0427 + 31.1500 249.0000 7.0569 + 31.2000 256.0000 7.1554 + 31.2500 272.0000 7.3756 + 31.3000 289.0000 7.6026 + 31.3500 311.0000 7.8867 + 31.4000 340.0000 8.2462 + 31.4500 363.0000 8.5206 + 31.5000 393.0000 8.8657 + 31.5500 440.0000 9.3808 + 31.6000 474.0000 9.7365 + 31.6500 482.0000 9.8183 + 31.7000 492.0000 9.9197 + 31.7500 508.0000 10.0797 + 31.8000 494.0000 9.9398 + 31.8500 475.0000 9.7468 + 31.9000 439.0000 9.3702 + 31.9500 413.0000 9.0885 + 32.0000 368.0000 8.5790 + 32.0500 331.0000 8.1363 + 32.1000 299.0000 7.7330 + 32.1500 286.0000 7.5631 + 32.2000 262.0000 7.2388 + 32.2500 241.0000 6.9426 + 32.3000 238.0000 6.8993 + 32.3500 252.0000 7.0993 + 32.4000 267.0000 7.3075 + 32.4500 276.0000 7.4297 + 32.5000 278.0000 7.4565 + 32.5500 300.0000 7.7460 + 32.6000 325.0000 8.0623 + 32.6500 336.0000 8.1976 + 32.7000 359.0000 8.4735 + 32.7500 405.0000 9.0000 + 32.8000 458.0000 9.5708 + 32.8500 501.0000 10.0100 + 32.9000 564.0000 10.6207 + 32.9500 640.0000 11.3137 + 33.0000 719.0000 11.9917 + 33.0500 783.0000 12.5140 + 33.1000 837.0000 12.9383 + 33.1500 851.0000 13.0461 + 33.2000 866.0000 13.1605 + 33.2500 828.0000 12.8686 + 33.3000 763.0000 12.3531 + 33.3500 697.0000 11.8068 + 33.4000 634.0000 11.2606 + 33.4500 541.0000 10.4019 + 33.5000 465.0000 9.6437 + 33.5500 391.0000 8.8431 + 33.6000 351.0000 8.3785 + 33.6500 301.0000 7.7589 + 33.7000 284.0000 7.5366 + 33.7500 260.0000 7.2111 + 33.8000 248.0000 7.0427 + 33.8500 257.0000 7.1694 + 33.9000 242.0000 6.9570 + 33.9500 246.0000 7.0143 + 34.0000 263.0000 7.2526 + 34.0500 271.0000 7.3621 + 34.1000 281.0000 7.4967 + 34.1500 302.0000 7.7717 + 34.2000 309.0000 7.8613 + 34.2500 335.0000 8.1854 + 34.3000 342.0000 8.2704 + 34.3500 345.0000 8.3066 + 34.4000 356.0000 8.4380 + 34.4500 351.0000 8.3785 + 34.5000 341.0000 8.2583 + 34.5500 334.0000 8.1731 + 34.6000 321.0000 8.0125 + 34.6500 286.0000 7.5631 + 34.7000 268.0000 7.3212 + 34.7500 256.0000 7.1554 + 34.8000 238.0000 6.8993 + 34.8500 229.0000 6.7676 + 34.9000 218.0000 6.6030 + 34.9500 223.0000 6.6783 + 35.0000 216.0000 6.5727 + 35.0500 203.0000 6.3718 + 35.1000 203.0000 6.3718 + 35.1500 194.0000 6.2290 + 35.2000 205.0000 6.4031 + 35.2500 196.0000 6.2610 + 35.3000 193.0000 6.2129 + 35.3500 206.0000 6.4187 + 35.4000 201.0000 6.3403 + 35.4500 201.0000 6.3403 + 35.5000 201.0000 6.3403 + 35.5500 200.0000 6.3246 + 35.6000 194.0000 6.2290 + 35.6500 196.0000 6.2610 + 35.7000 203.0000 6.3718 + 35.7500 195.0000 6.2450 + 35.8000 196.0000 6.2610 + 35.8500 211.0000 6.4962 + 35.9000 216.0000 6.5727 + 35.9500 207.0000 6.4343 + 36.0000 215.0000 6.5574 + 36.0500 221.0000 6.6483 + 36.1000 237.0000 6.2849 + 36.1500 248.0000 6.4291 + 36.2000 261.0000 6.5955 + 36.2500 279.0000 6.8191 + 36.3000 319.0000 7.2915 + 36.3500 337.0000 7.4944 + 36.4000 364.0000 7.7889 + 36.4500 423.0000 8.3964 + 36.5000 489.0000 9.0277 + 36.5500 557.0000 9.6350 + 36.6000 630.0000 10.2470 + 36.6500 729.0000 11.0227 + 36.7000 822.0000 11.7047 + 36.7500 943.0000 12.5366 + 36.8000 1059.0000 13.2853 + 36.8500 1196.0000 14.1185 + 36.9000 1235.0000 14.3469 + 36.9500 1220.0000 14.2595 + 37.0000 1209.0000 14.1951 + 37.0500 1128.0000 13.7113 + 37.1000 1001.0000 12.9164 + 37.1500 864.0000 12.0000 + 37.2000 729.0000 11.0227 + 37.2500 601.0000 10.0083 + 37.3000 496.0000 9.0921 + 37.3500 418.0000 8.3467 + 37.4000 355.0000 7.6920 + 37.4500 313.0000 7.2226 + 37.5000 263.0000 6.6207 + 37.5500 246.0000 6.4031 + 37.6000 226.0000 6.1373 + 37.6500 214.0000 5.9722 + 37.7000 222.0000 6.0828 + 37.7500 222.0000 6.0828 + 37.8000 211.0000 5.9301 + 37.8500 211.0000 5.9301 + 37.9000 202.0000 5.8023 + 37.9500 198.0000 5.7446 + 38.0000 192.0000 5.6569 + 38.0500 193.0000 5.6716 + 38.1000 196.0000 5.7155 + 38.1500 201.0000 5.7879 + 38.2000 203.0000 5.8166 + 38.2500 203.0000 5.8166 + 38.3000 201.0000 5.7879 + 38.3500 198.0000 5.7446 + 38.4000 196.0000 5.7155 + 38.4500 206.0000 5.8595 + 38.5000 210.0000 5.9161 + 38.5500 197.0000 5.7300 + 38.6000 204.0000 5.8310 + 38.6500 200.0000 5.7735 + 38.7000 205.0000 5.8452 + 38.7500 196.0000 5.7155 + 38.8000 195.0000 5.7009 + 38.8500 205.0000 5.8452 + 38.9000 204.0000 5.8310 + 38.9500 200.0000 5.7735 + 39.0000 203.0000 5.8166 + 39.0500 208.0000 5.8878 + 39.1000 207.0000 5.8737 + 39.1500 202.0000 5.8023 + 39.2000 203.0000 5.8166 + 39.2500 198.0000 5.7446 + 39.3000 204.0000 5.8310 + 39.3500 210.0000 5.9161 + 39.4000 216.0000 6.0000 + 39.4500 210.0000 5.9161 + 39.5000 229.0000 6.1779 + 39.5500 239.0000 6.3114 + 39.6000 247.0000 6.4161 + 39.6500 278.0000 6.8069 + 39.7000 302.0000 7.0946 + 39.7500 324.0000 7.3485 + 39.8000 371.0000 7.8634 + 39.8500 420.0000 8.3666 + 39.9000 465.0000 8.8034 + 39.9500 538.0000 9.4692 + 40.0000 630.0000 10.2470 + 40.0500 739.0000 11.0980 + 40.1000 851.0000 11.9094 + 40.1500 976.0000 12.7541 + 40.2000 1076.0000 13.3915 + 40.2500 1161.0000 13.9104 + 40.3000 1222.0000 14.2712 + 40.3500 1227.0000 14.3003 + 40.4000 1187.0000 14.0653 + 40.4500 1096.0000 13.5154 + 40.5000 964.0000 12.6754 + 40.5500 833.0000 11.7828 + 40.6000 708.0000 10.8628 + 40.6500 587.0000 9.8911 + 40.7000 512.0000 9.2376 + 40.7500 436.0000 8.5245 + 40.8000 391.0000 8.0726 + 40.8500 384.0000 8.0000 + 40.9000 370.0000 7.8528 + 40.9500 391.0000 8.0726 + 41.0000 419.0000 8.3566 + 41.0500 448.0000 8.6410 + 41.1000 490.0000 9.0370 + 41.1500 567.0000 9.7211 + 41.2000 626.0000 10.2144 + 41.2500 687.0000 10.7005 + 41.3000 735.0000 11.0680 + 41.3500 780.0000 11.4018 + 41.4000 782.0000 11.4164 + 41.4500 745.0000 11.1430 + 41.5000 721.0000 10.9621 + 41.5500 662.0000 10.5040 + 41.6000 595.0000 9.9582 + 41.6500 527.0000 9.3719 + 41.7000 446.0000 8.6217 + 41.7500 393.0000 8.0932 + 41.8000 335.0000 7.4722 + 41.8500 301.0000 7.0828 + 41.9000 276.0000 6.7823 + 41.9500 251.0000 5.9881 + 42.0000 242.0000 5.8797 + 42.0500 229.0000 5.7196 + 42.1000 209.0000 5.4642 + 42.1500 215.0000 5.5420 + 42.2000 218.0000 5.5806 + 42.2500 214.0000 5.5291 + 42.3000 209.0000 5.4642 + 42.3500 208.0000 5.4511 + 42.4000 212.0000 5.5032 + 42.4500 210.0000 5.4772 + 42.5000 209.0000 5.4642 + 42.5500 210.0000 5.4772 + 42.6000 205.0000 5.4116 + 42.6500 209.0000 5.4642 + 42.7000 211.0000 5.4903 + 42.7500 211.0000 5.4903 + 42.8000 216.0000 5.5549 + 42.8500 205.0000 5.4116 + 42.9000 204.0000 5.3984 + 42.9500 202.0000 5.3719 + 43.0000 201.0000 5.3586 + 43.0500 200.0000 5.3452 + 43.1000 207.0000 5.4380 + 43.1500 205.0000 5.4116 + 43.2000 202.0000 5.3719 + 43.2500 209.0000 5.4642 + 43.3000 202.0000 5.3719 + 43.3500 203.0000 5.3852 + 43.4000 206.0000 5.4248 + 43.4500 206.0000 5.4248 + 43.5000 200.0000 5.3452 + 43.5500 194.0000 5.2644 + 43.6000 199.0000 5.3318 + 43.6500 204.0000 5.3984 + 43.7000 205.0000 5.4116 + 43.7500 210.0000 5.4772 + 43.8000 207.0000 5.4380 + 43.8500 205.0000 5.4116 + 43.9000 210.0000 5.4772 + 43.9500 204.0000 5.3984 + 44.0000 203.0000 5.3852 + 44.0500 202.0000 5.3719 + 44.1000 205.0000 5.4116 + 44.1500 201.0000 5.3586 + 44.2000 201.0000 5.3586 + 44.2500 207.0000 5.4380 + 44.3000 197.0000 5.3050 + 44.3500 198.0000 5.3184 + 44.4000 203.0000 5.3852 + 44.4500 209.0000 5.4642 + 44.5000 209.0000 5.4642 + 44.5500 208.0000 5.4511 + 44.6000 204.0000 5.3984 + 44.6500 209.0000 5.4642 + 44.7000 199.0000 5.3318 + 44.7500 204.0000 5.3984 + 44.8000 206.0000 5.4248 + 44.8500 201.0000 5.3586 + 44.9000 205.0000 5.4116 + 44.9500 202.0000 5.3719 + 45.0000 204.0000 5.3984 + 45.0500 198.0000 5.3184 + 45.1000 198.0000 5.3184 + 45.1500 213.0000 5.5162 + 45.2000 210.0000 5.4772 + 45.2500 212.0000 5.5032 + 45.3000 214.0000 5.5291 + 45.3500 215.0000 5.5420 + 45.4000 217.0000 5.5678 + 45.4500 210.0000 5.4772 + 45.5000 214.0000 5.5291 + 45.5500 215.0000 5.5420 + 45.6000 215.0000 5.5420 + 45.6500 215.0000 5.5420 + 45.7000 217.0000 5.5678 + 45.7500 222.0000 5.6315 + 45.8000 231.0000 5.7446 + 45.8500 247.0000 5.9402 + 45.9000 252.0000 6.0000 + 45.9500 273.0000 6.2450 + 46.0000 304.0000 6.5900 + 46.0500 332.0000 6.8868 + 46.1000 366.0000 7.2309 + 46.1500 408.0000 7.6345 + 46.2000 463.0000 8.1328 + 46.2500 532.0000 8.7178 + 46.3000 619.0000 9.4036 + 46.3500 734.0000 10.2400 + 46.4000 828.0000 10.8759 + 46.4500 944.0000 11.6128 + 46.5000 1003.0000 11.9702 + 46.5500 1055.0000 12.2766 + 46.6000 1070.0000 12.3635 + 46.6500 1018.0000 12.0594 + 46.7000 944.0000 11.6128 + 46.7500 833.0000 10.9087 + 46.8000 725.0000 10.1770 + 46.8500 633.0000 9.5094 + 46.9000 507.0000 8.5105 + 46.9500 445.0000 7.9732 + 47.0000 379.0000 7.3582 + 47.0500 347.0000 7.0407 + 47.1000 316.0000 6.7188 + 47.1500 282.0000 6.3471 + 47.2000 267.0000 6.1760 + 47.2500 269.0000 6.1991 + 47.3000 281.0000 6.3358 + 47.3500 288.0000 6.4143 + 47.4000 300.0000 6.5465 + 47.4500 327.0000 6.8348 + 47.5000 346.0000 7.0305 + 47.5500 380.0000 7.3679 + 47.6000 400.0000 7.5593 + 47.6500 430.0000 7.8376 + 47.7000 453.0000 8.0445 + 47.7500 459.0000 8.0976 + 47.8000 451.0000 8.0267 + 47.8500 427.0000 7.8102 + 47.9000 402.0000 7.5782 + 47.9500 375.0000 7.3193 + 48.0000 344.0000 7.0102 + 48.0500 309.0000 6.6440 + 48.1000 277.0000 6.2906 + 48.1500 265.0000 5.7554 + 48.2000 246.0000 5.5453 + 48.2500 246.0000 5.5453 + 48.3000 230.0000 5.3619 + 48.3500 223.0000 5.2797 + 48.4000 227.0000 5.3268 + 48.4500 225.0000 5.3033 + 48.5000 217.0000 5.2082 + 48.5500 217.0000 5.2082 + 48.6000 223.0000 5.2797 + 48.6500 223.0000 5.2797 + 48.7000 220.0000 5.2440 + 48.7500 223.0000 5.2797 + 48.8000 226.0000 5.3151 + 48.8500 248.0000 5.5678 + 48.9000 258.0000 5.6789 + 48.9500 274.0000 5.8523 + 49.0000 297.0000 6.0930 + 49.0500 324.0000 6.3640 + 49.1000 355.0000 6.6615 + 49.1500 393.0000 7.0089 + 49.2000 458.0000 7.5664 + 49.2500 528.0000 8.1240 + 49.3000 589.0000 8.5805 + 49.3500 688.0000 9.2736 + 49.4000 781.0000 9.8805 + 49.4500 840.0000 10.2470 + 49.5000 876.0000 10.4642 + 49.5500 874.0000 10.4523 + 49.6000 832.0000 10.1980 + 49.6500 765.0000 9.7788 + 49.7000 682.0000 9.2331 + 49.7500 613.0000 8.7536 + 49.8000 524.0000 8.0932 + 49.8500 455.0000 7.5416 + 49.9000 408.0000 7.1414 + 49.9500 384.0000 6.9282 + 50.0000 366.0000 6.7639 + 50.0500 375.0000 6.8465 + 50.1000 392.0000 7.0000 + 50.1500 426.0000 7.2973 + 50.2000 470.0000 7.6649 + 50.2500 519.0000 8.0545 + 50.3000 588.0000 8.5732 + 50.3500 639.0000 8.9373 + 50.4000 681.0000 9.2263 + 50.4500 704.0000 9.3808 + 50.5000 693.0000 9.3073 + 50.5500 650.0000 9.0139 + 50.6000 600.0000 8.6603 + 50.6500 540.0000 8.2158 + 50.7000 478.0000 7.7298 + 50.7500 412.0000 7.1764 + 50.8000 376.0000 6.8557 + 50.8500 345.0000 6.5670 + 50.9000 330.0000 6.4226 + 50.9500 337.0000 6.4904 + 51.0000 350.0000 6.6144 + 51.0500 383.0000 6.9192 + 51.1000 426.0000 7.2973 + 51.1500 493.0000 7.8502 + 51.2000 571.0000 8.4484 + 51.2500 676.0000 9.1924 + 51.3000 803.0000 10.0187 + 51.3500 920.0000 10.7238 + 51.4000 1071.0000 11.5704 + 51.4500 1183.0000 12.1604 + 51.5000 1247.0000 12.4850 + 51.5500 1255.0000 12.5250 + 51.6000 1251.0000 12.5050 + 51.6500 1183.0000 12.1604 + 51.7000 1068.0000 11.5542 + 51.7500 945.0000 10.8685 + 51.8000 861.0000 10.3742 + 51.8500 811.0000 10.0685 + 51.9000 813.0000 10.0809 + 51.9500 872.0000 10.4403 + 52.0000 969.0000 11.0057 + 52.0500 1120.0000 11.8322 + 52.1000 1309.0000 12.7916 + 52.1500 1527.0000 13.8158 + 52.2000 1706.0000 14.6031 + 52.2500 1856.0000 15.2315 + 52.3000 1888.0000 15.3623 + 52.3500 1837.0000 15.1534 + 52.4000 1713.0000 14.6330 + 52.4500 1500.0000 13.6931 + 52.5000 1289.0000 12.6935 + 52.5500 1103.0000 11.7420 + 52.6000 904.0000 10.6301 + 52.6500 749.0000 9.6760 + 52.7000 627.0000 8.8530 + 52.7500 568.0000 8.4261 + 52.8000 551.0000 8.2991 + 52.8500 560.0000 8.3666 + 52.9000 586.0000 8.5586 + 52.9500 634.0000 8.9022 + 53.0000 691.0000 9.2938 + 53.0500 751.0000 9.6889 + 53.1000 799.0000 9.9937 + 53.1500 792.0000 9.9499 + 53.2000 820.0000 10.1242 + 53.2500 774.0000 9.8362 + 53.3000 736.0000 9.5917 + 53.3500 680.0000 9.2195 + 53.4000 627.0000 8.8530 + 53.4500 562.0000 8.3815 + 53.5000 514.0000 8.0156 + 53.5500 459.0000 7.5746 + 53.6000 424.0000 7.2801 + 53.6500 362.0000 6.7268 + 53.7000 333.0000 6.4517 + 53.7500 318.0000 6.3048 + 53.8000 300.0000 6.1237 + 53.8500 287.0000 5.9896 + 53.9000 265.0000 5.7554 + 53.9500 266.0000 5.7663 + 54.0000 262.0000 5.7228 + 54.0500 263.0000 5.4058 + 54.1000 255.0000 5.3229 + 54.1500 270.0000 5.4772 + 54.2000 278.0000 5.5578 + 54.2500 289.0000 5.6667 + 54.3000 317.0000 5.9348 + 54.3500 343.0000 6.1734 + 54.4000 400.0000 6.6667 + 54.4500 468.0000 7.2111 + 54.5000 561.0000 7.8951 + 54.5500 695.0000 8.7876 + 54.6000 873.0000 9.8489 + 54.6500 1100.0000 11.0554 + 54.7000 1372.0000 12.3468 + 54.7500 1660.0000 13.5810 + 54.8000 1954.0000 14.7347 + 54.8500 2224.0000 15.7198 + 54.9000 2400.0000 16.3299 + 54.9500 2459.0000 16.5294 + 55.0000 2435.0000 16.4486 + 55.0500 2245.0000 15.7938 + 55.1000 1986.0000 14.8549 + 55.1500 1671.0000 13.6260 + 55.2000 1358.0000 12.2837 + 55.2500 1086.0000 10.9848 + 55.3000 868.0000 9.8206 + 55.3500 682.0000 8.7050 + 55.4000 578.0000 8.0139 + 55.4500 521.0000 7.6085 + 55.5000 512.0000 7.5425 + 55.5500 537.0000 7.7244 + 55.6000 600.0000 8.1650 + 55.6500 704.0000 8.8443 + 55.7000 855.0000 9.7468 + 55.7500 1032.0000 10.7083 + 55.8000 1232.0000 11.7000 + 55.8500 1466.0000 12.7628 + 55.9000 1693.0000 13.7154 + 55.9500 1866.0000 14.3991 + 56.0000 1966.0000 14.7799 + 56.0500 2024.0000 14.9963 + 56.1000 2016.0000 14.9666 + 56.1500 1846.0000 14.3217 + 56.2000 1667.0000 13.6096 + 56.2500 1429.0000 12.6007 + 56.3000 1179.0000 11.4455 + 56.3500 950.0000 10.2740 + 56.4000 763.0000 9.2075 + 56.4500 599.0000 8.1582 + 56.5000 484.0000 7.3333 + 56.5500 404.0000 6.6999 + 56.6000 351.0000 6.2450 + 56.6500 304.0000 5.8119 + 56.7000 284.0000 5.6174 + 56.7500 273.0000 5.5076 + 56.8000 259.0000 5.3645 + 56.8500 251.0000 5.2810 + 56.9000 251.0000 5.2810 + 56.9500 252.0000 5.2915 + 57.0000 245.0000 5.2175 + 57.0500 259.0000 5.3645 + 57.1000 250.0000 5.2705 + 57.1500 253.0000 5.3020 + 57.2000 256.0000 5.3333 + 57.2500 264.0000 5.4160 + 57.3000 285.0000 5.6273 + 57.3500 301.0000 5.7831 + 57.4000 346.0000 6.2004 + 57.4500 390.0000 6.5828 + 57.5000 458.0000 7.1336 + 57.5500 528.0000 7.6594 + 57.6000 624.0000 8.3267 + 57.6500 733.0000 9.0247 + 57.7000 829.0000 9.5975 + 57.7500 916.0000 10.0885 + 57.8000 988.0000 10.4775 + 57.8500 994.0000 10.5093 + 57.9000 929.0000 10.1598 + 57.9500 843.0000 9.6782 + 58.0000 742.0000 9.0799 + 58.0500 638.0000 8.4196 + 58.1000 527.0000 7.6522 + 58.1500 434.0000 6.9442 + 58.2000 377.0000 6.4722 + 58.2500 320.0000 5.9628 + 58.3000 282.0000 5.5976 + 58.3500 273.0000 5.5076 + 58.4000 256.0000 5.3333 + 58.4500 243.0000 5.1962 + 58.5000 240.0000 5.1640 + 58.5500 240.0000 5.1640 + 58.6000 230.0000 5.0553 + 58.6500 220.0000 4.9441 + 58.7000 230.0000 5.0553 + 58.7500 227.0000 5.0222 + 58.8000 224.0000 4.9889 + 58.8500 219.0000 4.9329 + 58.9000 227.0000 5.0222 + 58.9500 227.0000 5.0222 + 59.0000 224.0000 4.9889 + 59.0500 222.0000 4.9666 + 59.1000 223.0000 4.9777 + 59.1500 217.0000 4.9103 + 59.2000 213.0000 4.8648 + 59.2500 216.0000 4.8990 + 59.3000 219.0000 4.9329 + 59.3500 219.0000 4.9329 + 59.4000 218.0000 4.9216 + 59.4500 220.0000 4.9441 + 59.5000 220.0000 4.9441 + 59.5500 220.0000 4.9441 + 59.6000 223.0000 4.9777 + 59.6500 233.0000 5.0881 + 59.7000 237.0000 5.1316 + 59.7500 249.0000 5.2599 + 59.8000 258.0000 5.3541 + 59.8500 261.0000 5.3852 + 59.9000 283.0000 5.6075 + 59.9500 304.0000 5.8119 + 60.0000 324.0000 5.6921 + 60.0500 347.0000 5.8907 + 60.1000 353.0000 5.9414 + 60.1500 359.0000 5.9917 + 60.2000 363.0000 6.0249 + 60.2500 352.0000 5.9330 + 60.3000 341.0000 5.8395 + 60.3500 330.0000 5.7446 + 60.4000 308.0000 5.5498 + 60.4500 291.0000 5.3944 + 60.5000 271.0000 5.2058 + 60.5500 254.0000 5.0398 + 60.6000 245.0000 4.9497 + 60.6500 245.0000 4.9497 + 60.7000 239.0000 4.8888 + 60.7500 228.0000 4.7749 + 60.8000 217.0000 4.6583 + 60.8500 217.0000 4.6583 + 60.9000 218.0000 4.6690 + 60.9500 223.0000 4.7223 + 61.0000 207.0000 4.5497 + 61.0500 218.0000 4.6690 + 61.1000 222.0000 4.7117 + 61.1500 215.0000 4.6368 + 61.2000 210.0000 4.5826 + 61.2500 216.0000 4.6476 + 61.3000 213.0000 4.6152 + 61.3500 212.0000 4.6043 + 61.4000 215.0000 4.6368 + 61.4500 212.0000 4.6043 + 61.5000 214.0000 4.6260 + 61.5500 211.0000 4.5935 + 61.6000 214.0000 4.6260 + 61.6500 217.0000 4.6583 + 61.7000 205.0000 4.5277 + 61.7500 207.0000 4.5497 + 61.8000 213.0000 4.6152 + 61.8500 208.0000 4.5607 + 61.9000 211.0000 4.5935 + 61.9500 205.0000 4.5277 + 62.0000 214.0000 4.6260 + 62.0500 213.0000 4.6152 + 62.1000 212.0000 4.6043 + 62.1500 212.0000 4.6043 + 62.2000 213.0000 4.6152 + 62.2500 207.0000 4.5497 + 62.3000 203.0000 4.5056 + 62.3500 211.0000 4.5935 + 62.4000 211.0000 4.5935 + 62.4500 214.0000 4.6260 + 62.5000 214.0000 4.6260 + 62.5500 207.0000 4.5497 + 62.6000 203.0000 4.5056 + 62.6500 212.0000 4.6043 + 62.7000 212.0000 4.6043 + 62.7500 214.0000 4.6260 + 62.8000 213.0000 4.6152 + 62.8500 202.0000 4.4944 + 62.9000 210.0000 4.5826 + 62.9500 211.0000 4.5935 + 63.0000 211.0000 4.5935 + 63.0500 214.0000 4.6260 + 63.1000 221.0000 4.7011 + 63.1500 217.0000 4.6583 + 63.2000 212.0000 4.6043 + 63.2500 214.0000 4.6260 + 63.3000 219.0000 4.6797 + 63.3500 223.0000 4.7223 + 63.4000 225.0000 4.7434 + 63.4500 227.0000 4.7645 + 63.5000 235.0000 4.8477 + 63.5500 240.0000 4.8990 + 63.6000 243.0000 4.9295 + 63.6500 252.0000 5.0200 + 63.7000 249.0000 4.9900 + 63.7500 249.0000 4.9900 + 63.8000 255.0000 5.0498 + 63.8500 262.0000 5.1186 + 63.9000 282.0000 5.3104 + 63.9500 308.0000 5.5498 + 64.0000 351.0000 5.9245 + 64.0500 398.0000 6.3087 + 64.1000 470.0000 6.8557 + 64.1500 525.0000 7.2457 + 64.2000 596.0000 7.7201 + 64.2500 646.0000 8.0374 + 64.3000 681.0000 8.2523 + 64.3500 665.0000 8.1548 + 64.4000 615.0000 7.8422 + 64.4500 563.0000 7.5033 + 64.5000 484.0000 6.9570 + 64.5500 421.0000 6.4885 + 64.6000 364.0000 6.0332 + 64.6500 317.0000 5.6303 + 64.7000 289.0000 5.3759 + 64.7500 261.0000 5.1088 + 64.8000 245.0000 4.9497 + 64.8500 233.0000 4.8270 + 64.9000 228.0000 4.7749 + 64.9500 219.0000 4.6797 + 65.0000 219.0000 4.6797 + 65.0500 217.0000 4.6583 + 65.1000 216.0000 4.6476 + 65.1500 221.0000 4.7011 + 65.2000 215.0000 4.6368 + 65.2500 215.0000 4.6368 + 65.3000 210.0000 4.5826 + 65.3500 212.0000 4.6043 + 65.4000 212.0000 4.6043 + 65.4500 204.0000 4.5166 + 65.5000 209.0000 4.5717 + 65.5500 206.0000 4.5387 + 65.6000 216.0000 4.6476 + 65.6500 207.0000 4.5497 + 65.7000 214.0000 4.6260 + 65.7500 207.0000 4.5497 + 65.8000 209.0000 4.5717 + 65.8500 218.0000 4.6690 + 65.9000 215.0000 4.6368 + 65.9500 222.0000 4.7117 + 66.0000 226.0000 4.7539 + 66.0500 230.0000 4.7958 + 66.1000 239.0000 4.8888 + 66.1500 249.0000 4.9900 + 66.2000 263.0000 5.1284 + 66.2500 275.0000 5.2440 + 66.3000 292.0000 5.4037 + 66.3500 317.0000 5.6303 + 66.4000 323.0000 5.6833 + 66.4500 341.0000 5.8395 + 66.5000 350.0000 5.9161 + 66.5500 330.0000 5.7446 + 66.6000 320.0000 5.6569 + 66.6500 307.0000 5.5408 + 66.7000 284.0000 5.3292 + 66.7500 275.0000 5.2440 + 66.8000 265.0000 5.1478 + 66.8500 269.0000 5.1865 + 66.9000 275.0000 5.2440 + 66.9500 292.0000 5.4037 + 67.0000 311.0000 5.5767 + 67.0500 338.0000 5.8138 + 67.1000 387.0000 6.2209 + 67.1500 413.0000 6.4265 + 67.2000 463.0000 6.8044 + 67.2500 510.0000 7.1414 + 67.3000 534.0000 7.3075 + 67.3500 559.0000 7.4766 + 67.4000 539.0000 7.3417 + 67.4500 533.0000 7.3007 + 67.5000 500.0000 7.0711 + 67.5500 471.0000 6.8629 + 67.6000 455.0000 6.7454 + 67.6500 410.0000 6.4031 + 67.7000 373.0000 6.1074 + 67.7500 342.0000 5.8481 + 67.8000 307.0000 5.5408 + 67.8500 288.0000 5.3666 + 67.9000 286.0000 5.3479 + 67.9500 281.0000 5.3009 + 68.0000 292.0000 5.4037 + 68.0500 291.0000 5.3944 + 68.1000 312.0000 5.5857 + 68.1500 326.0000 5.7096 + 68.2000 336.0000 5.7966 + 68.2500 346.0000 5.8822 + 68.3000 341.0000 5.8395 + 68.3500 327.0000 5.7184 + 68.4000 305.0000 5.5227 + 68.4500 277.0000 5.2631 + 68.5000 267.0000 5.1672 + 68.5500 249.0000 4.9900 + 68.6000 229.0000 4.7854 + 68.6500 221.0000 4.7011 + 68.7000 220.0000 4.6904 + 68.7500 217.0000 4.6583 + 68.8000 211.0000 4.5935 + 68.8500 204.0000 4.5166 + 68.9000 203.0000 4.5056 + 68.9500 220.0000 4.6904 + 69.0000 217.0000 4.6583 + 69.0500 217.0000 4.6583 + 69.1000 214.0000 4.6260 + 69.1500 205.0000 4.5277 + 69.2000 205.0000 4.5277 + 69.2500 211.0000 4.5935 + 69.3000 206.0000 4.5387 + 69.3500 208.0000 4.5607 + 69.4000 201.0000 4.4833 + 69.4500 208.0000 4.5607 + 69.5000 214.0000 4.6260 + 69.5500 212.0000 4.6043 + 69.6000 206.0000 4.5387 + 69.6500 216.0000 4.6476 + 69.7000 219.0000 4.6797 + 69.7500 215.0000 4.6368 + 69.8000 217.0000 4.6583 + 69.8500 211.0000 4.5935 + 69.9000 214.0000 4.6260 + 69.9500 215.0000 4.6368 + 70.0000 224.0000 4.7329 + 70.0500 217.0000 4.6583 + 70.1000 215.0000 4.6368 + 70.1500 218.0000 4.6690 + 70.2000 218.0000 4.6690 + 70.2500 228.0000 4.7749 + 70.3000 227.0000 4.7645 + 70.3500 228.0000 4.7749 + 70.4000 225.0000 4.7434 + 70.4500 219.0000 4.6797 + 70.5000 216.0000 4.6476 + 70.5500 219.0000 4.6797 + 70.6000 218.0000 4.6690 + 70.6500 214.0000 4.6260 + 70.7000 212.0000 4.6043 + 70.7500 221.0000 4.7011 + 70.8000 214.0000 4.6260 + 70.8500 208.0000 4.5607 + 70.9000 204.0000 4.5166 + 70.9500 209.0000 4.5717 + 71.0000 209.0000 4.5717 + 71.0500 208.0000 4.5607 + 71.1000 212.0000 4.6043 + 71.1500 213.0000 4.6152 + 71.2000 218.0000 4.6690 + 71.2500 212.0000 4.6043 + 71.3000 205.0000 4.5277 + 71.3500 207.0000 4.5497 + 71.4000 204.0000 4.5166 + 71.4500 206.0000 4.5387 + 71.5000 211.0000 4.5935 + 71.5500 216.0000 4.6476 + 71.6000 214.0000 4.6260 + 71.6500 210.0000 4.5826 + 71.7000 219.0000 4.6797 + 71.7500 222.0000 4.7117 + 71.8000 224.0000 4.7329 + 71.8500 231.0000 4.8062 + 71.9000 227.0000 4.7645 + 71.9500 237.0000 4.8683 + 72.0000 235.0000 4.8477 + 72.0500 238.0000 4.8785 + 72.1000 245.0000 4.9497 + 72.1500 242.0000 4.9193 + 72.2000 248.0000 4.9800 + 72.2500 246.0000 4.9598 + 72.3000 243.0000 4.9295 + 72.3500 253.0000 5.0299 + 72.4000 259.0000 5.0892 + 72.4500 278.0000 5.2726 + 72.5000 281.0000 5.3009 + 72.5500 297.0000 5.4498 + 72.6000 310.0000 5.5678 + 72.6500 324.0000 5.6921 + 72.7000 322.0000 5.6745 + 72.7500 311.0000 5.5767 + 72.8000 295.0000 5.4314 + 72.8500 281.0000 5.3009 + 72.9000 259.0000 5.0892 + 72.9500 250.0000 5.0000 + 73.0000 239.0000 4.8888 + 73.0500 233.0000 4.8270 + 73.1000 227.0000 4.7645 + 73.1500 226.0000 4.7539 + 73.2000 223.0000 4.7223 + 73.2500 211.0000 4.5935 + 73.3000 209.0000 4.5717 + 73.3500 217.0000 4.6583 + 73.4000 214.0000 4.6260 + 73.4500 213.0000 4.6152 + 73.5000 217.0000 4.6583 + 73.5500 220.0000 4.6904 + 73.6000 210.0000 4.5826 + 73.6500 209.0000 4.5717 + 73.7000 215.0000 4.6368 + 73.7500 218.0000 4.6690 + 73.8000 215.0000 4.6368 + 73.8500 217.0000 4.6583 + 73.9000 221.0000 4.7011 + 73.9500 217.0000 4.6583 + 74.0000 219.0000 4.6797 + 74.0500 220.0000 4.6904 + 74.1000 228.0000 4.7749 + 74.1500 229.0000 4.7854 + 74.2000 230.0000 4.7958 + 74.2500 234.0000 4.8374 + 74.3000 251.0000 5.0100 + 74.3500 261.0000 5.1088 + 74.4000 288.0000 5.3666 + 74.4500 313.0000 5.5946 + 74.5000 362.0000 6.0166 + 74.5500 424.0000 6.5115 + 74.6000 524.0000 7.2388 + 74.6500 646.0000 8.0374 + 74.7000 781.0000 8.8374 + 74.7500 920.0000 9.5917 + 74.8000 1024.0000 10.1193 + 74.8500 1120.0000 10.5830 + 74.9000 1187.0000 10.8950 + 74.9500 1187.0000 10.8950 + 75.0000 1166.0000 10.7981 + 75.0500 1114.0000 10.5546 + 75.1000 1044.0000 10.2176 + 75.1500 991.0000 9.9549 + 75.2000 927.0000 9.6281 + 75.2500 823.0000 9.0719 + 75.3000 717.0000 8.4676 + 75.3500 619.0000 7.8677 + 75.4000 520.0000 7.2111 + 75.4500 421.0000 6.4885 + 75.5000 353.0000 5.9414 + 75.5500 308.0000 5.5498 + 75.6000 273.0000 5.2249 + 75.6500 256.0000 5.0596 + 75.7000 245.0000 4.9497 + 75.7500 234.0000 4.8374 + 75.8000 230.0000 4.7958 + 75.8500 224.0000 4.7329 + 75.9000 232.0000 4.8166 + 75.9500 226.0000 4.7539 + 76.0000 222.0000 4.7117 + 76.0500 222.0000 4.7117 + 76.1000 227.0000 4.7645 + 76.1500 225.0000 4.7434 + 76.2000 226.0000 4.7539 + 76.2500 227.0000 4.7645 + 76.3000 229.0000 4.7854 + 76.3500 235.0000 4.8477 + 76.4000 233.0000 4.8270 + 76.4500 243.0000 4.9295 + 76.5000 238.0000 4.8785 + 76.5500 237.0000 4.8683 + 76.6000 236.0000 4.8580 + 76.6500 232.0000 4.8166 + 76.7000 231.0000 4.8062 + 76.7500 227.0000 4.7645 + 76.8000 225.0000 4.7434 + 76.8500 220.0000 4.6904 + 76.9000 218.0000 4.6690 + 76.9500 215.0000 4.6368 + 77.0000 219.0000 4.6797 + 77.0500 224.0000 4.7329 + 77.1000 225.0000 4.7434 + 77.1500 222.0000 4.7117 + 77.2000 231.0000 4.8062 + 77.2500 243.0000 4.9295 + 77.3000 250.0000 5.0000 + 77.3500 269.0000 5.1865 + 77.4000 286.0000 5.3479 + 77.4500 310.0000 5.5678 + 77.5000 325.0000 5.7009 + 77.5500 332.0000 5.7619 + 77.6000 337.0000 5.8052 + 77.6500 329.0000 5.7359 + 77.7000 303.0000 5.5045 + 77.7500 278.0000 5.2726 + 77.8000 268.0000 5.1769 + 77.8500 252.0000 5.0200 + 77.9000 236.0000 4.8580 + 77.9500 228.0000 4.7749 + 78.0000 219.0000 4.6797 + 78.0500 225.0000 4.7434 + 78.1000 222.0000 4.7117 + 78.1500 214.0000 4.6260 + 78.2000 228.0000 4.7749 + 78.2500 221.0000 4.7011 + 78.3000 217.0000 4.6583 + 78.3500 221.0000 4.7011 + 78.4000 222.0000 4.7117 + 78.4500 226.0000 4.7539 + 78.5000 237.0000 4.8683 + 78.5500 246.0000 4.9598 + 78.6000 255.0000 5.0498 + 78.6500 269.0000 5.1865 + 78.7000 284.0000 5.3292 + 78.7500 302.0000 5.4955 + 78.8000 313.0000 5.5946 + 78.8500 327.0000 5.7184 + 78.9000 321.0000 5.6657 + 78.9500 333.0000 5.7706 + 79.0000 331.0000 5.7533 + 79.0500 332.0000 5.7619 + 79.1000 358.0000 5.9833 + 79.1500 402.0000 6.3403 + 79.2000 460.0000 6.7823 + 79.2500 557.0000 7.4632 + 79.3000 660.0000 8.1240 + 79.3500 769.0000 8.7693 + 79.4000 859.0000 9.2682 + 79.4500 934.0000 9.6644 + 79.5000 955.0000 9.7724 + 79.5500 921.0000 9.5969 + 79.6000 824.0000 9.0774 + 79.6500 694.0000 8.3307 + 79.7000 578.0000 7.6026 + 79.7500 474.0000 6.8848 + 79.8000 402.0000 6.3403 + 79.8500 344.0000 5.8652 + 79.9000 306.0000 5.5317 + 79.9500 300.0000 5.4772 + 80.0000 292.0000 5.4037 + 80.0500 292.0000 5.4037 + 80.1000 302.0000 5.4955 + 80.1500 304.0000 5.5136 + 80.2000 306.0000 5.5317 + 80.2500 305.0000 5.5227 + 80.3000 303.0000 5.5045 + 80.3500 299.0000 5.4681 + 80.4000 278.0000 5.2726 + 80.4500 259.0000 5.0892 + 80.5000 257.0000 5.0695 + 80.5500 245.0000 4.9497 + 80.6000 237.0000 4.8683 + 80.6500 240.0000 4.8990 + 80.7000 233.0000 4.8270 + 80.7500 232.0000 4.8166 + 80.8000 235.0000 4.8477 + 80.8500 241.0000 4.9092 + 80.9000 257.0000 5.0695 + 80.9500 274.0000 5.2345 + 81.0000 292.0000 5.4037 + 81.0500 309.0000 5.5588 + 81.1000 333.0000 5.7706 + 81.1500 360.0000 6.0000 + 81.2000 381.0000 6.1725 + 81.2500 387.0000 6.2209 + 81.3000 387.0000 6.2209 + 81.3500 386.0000 6.2129 + 81.4000 382.0000 6.1806 + 81.4500 368.0000 6.0663 + 81.5000 363.0000 6.0249 + 81.5500 352.0000 5.9330 + 81.6000 337.0000 5.8052 + 81.6500 321.0000 5.6657 + 81.7000 297.0000 5.4498 + 81.7500 281.0000 5.3009 + 81.8000 265.0000 5.1478 + 81.8500 255.0000 5.0498 + 81.9000 251.0000 5.0100 + 81.9500 237.0000 4.8683 + 82.0000 238.0000 4.8785 + 82.0500 237.0000 4.8683 + 82.1000 228.0000 4.7749 + 82.1500 240.0000 4.8990 + 82.2000 234.0000 4.8374 + 82.2500 226.0000 4.7539 + 82.3000 229.0000 4.7854 + 82.3500 228.0000 4.7749 + 82.4000 233.0000 4.8270 + 82.4500 243.0000 4.9295 + 82.5000 241.0000 4.9092 + 82.5500 257.0000 5.0695 + 82.6000 279.0000 5.2820 + 82.6500 305.0000 5.5227 + 82.7000 345.0000 5.8737 + 82.7500 410.0000 6.4031 + 82.8000 455.0000 6.7454 + 82.8500 545.0000 7.3824 + 82.9000 622.0000 7.8867 + 82.9500 673.0000 8.2037 + 83.0000 725.0000 8.5147 + 83.0500 717.0000 8.4676 + 83.1000 661.0000 8.1302 + 83.1500 592.0000 7.6942 + 83.2000 518.0000 7.1972 + 83.2500 443.0000 6.6558 + 83.3000 371.0000 6.0910 + 83.3500 336.0000 5.7966 + 83.4000 290.0000 5.3852 + 83.4500 265.0000 5.1478 + 83.5000 252.0000 5.0200 + 83.5500 250.0000 5.0000 + 83.6000 244.0000 4.9396 + 83.6500 242.0000 4.9193 + 83.7000 241.0000 4.9092 + 83.7500 243.0000 4.9295 + 83.8000 248.0000 4.9800 + 83.8500 253.0000 5.0299 + 83.9000 252.0000 5.0200 + 83.9500 264.0000 5.1381 + 84.0000 266.0000 5.1575 + 84.0500 282.0000 5.3104 + 84.1000 291.0000 5.3944 + 84.1500 313.0000 5.5946 + 84.2000 346.0000 5.8822 + 84.2500 374.0000 6.1156 + 84.3000 415.0000 6.4420 + 84.3500 430.0000 6.5574 + 84.4000 433.0000 6.5803 + 84.4500 430.0000 6.5574 + 84.5000 406.0000 6.3718 + 84.5500 384.0000 6.1968 + 84.6000 349.0000 5.9076 + 84.6500 318.0000 5.6391 + 84.7000 307.0000 5.5408 + 84.7500 298.0000 5.4589 + 84.8000 296.0000 5.4406 + 84.8500 304.0000 5.5136 + 84.9000 313.0000 5.5946 + 84.9500 328.0000 5.7271 + 85.0000 346.0000 5.8822 + 85.0500 341.0000 5.8395 + 85.1000 335.0000 5.7879 + 85.1500 324.0000 5.6921 + 85.2000 336.0000 5.7966 + 85.2500 341.0000 5.8395 + 85.3000 341.0000 5.8395 + 85.3500 370.0000 6.0828 + 85.4000 414.0000 6.4343 + 85.4500 442.0000 6.6483 + 85.5000 490.0000 7.0000 + 85.5500 520.0000 7.2111 + 85.6000 532.0000 7.2938 + 85.6500 548.0000 7.4027 + 85.7000 561.0000 7.4900 + 85.7500 567.0000 7.5299 + 85.8000 585.0000 7.6485 + 85.8500 584.0000 7.6420 + 85.9000 558.0000 7.4699 + 85.9500 527.0000 7.2595 + 86.0000 481.0000 6.9354 + 86.0500 424.0000 6.5115 + 86.1000 370.0000 6.0828 + 86.1500 333.0000 5.7706 + 86.2000 312.0000 5.5857 + 86.2500 301.0000 5.4863 + 86.3000 307.0000 5.5408 + 86.3500 314.0000 5.6036 + 86.4000 340.0000 5.8310 + 86.4500 379.0000 6.1563 + 86.5000 427.0000 6.5345 + 86.5500 467.0000 6.8337 + 86.6000 535.0000 7.3144 + 86.6500 584.0000 7.6420 + 86.7000 602.0000 7.7589 + 86.7500 580.0000 7.6158 + 86.8000 532.0000 7.2938 + 86.8500 481.0000 6.9354 + 86.9000 426.0000 6.5269 + 86.9500 379.0000 6.1563 + 87.0000 329.0000 5.7359 + 87.0500 303.0000 5.5045 + 87.1000 288.0000 5.3666 + 87.1500 271.0000 5.2058 + 87.2000 269.0000 5.1865 + 87.2500 267.0000 5.1672 + 87.3000 263.0000 5.1284 + 87.3500 267.0000 5.1672 + 87.4000 260.0000 5.0990 + 87.4500 260.0000 5.0990 + 87.5000 263.0000 5.1284 + 87.5500 263.0000 5.1284 + 87.6000 270.0000 5.1962 + 87.6500 278.0000 5.2726 + 87.7000 293.0000 5.4129 + 87.7500 318.0000 5.6391 + 87.8000 364.0000 6.0332 + 87.8500 424.0000 6.5115 + 87.9000 512.0000 7.1554 + 87.9500 643.0000 8.0187 + 88.0000 817.0000 9.0388 + 88.0500 982.0000 9.9096 + 88.1000 1163.0000 10.7842 + 88.1500 1289.0000 11.3534 + 88.2000 1373.0000 11.7175 + 88.2500 1393.0000 11.8025 + 88.3000 1348.0000 11.6103 + 88.3500 1244.0000 11.1535 + 88.4000 1157.0000 10.7564 + 88.4500 1077.0000 10.3779 + 88.5000 1020.0000 10.0995 + 88.5500 965.0000 9.8234 + 88.6000 907.0000 9.5237 + 88.6500 858.0000 9.2628 + 88.7000 771.0000 8.7807 + 88.7500 647.0000 8.0436 + 88.8000 555.0000 7.4498 + 88.8500 468.0000 6.8411 + 88.9000 405.0000 6.3640 + 88.9500 348.0000 5.8992 + 89.0000 316.0000 5.6214 + 89.0500 291.0000 5.3944 + 89.1000 277.0000 5.2631 + 89.1500 278.0000 5.2726 + 89.2000 270.0000 5.1962 + 89.2500 262.0000 5.1186 + 89.3000 268.0000 5.1769 + 89.3500 270.0000 5.1962 + 89.4000 279.0000 5.2820 + 89.4500 287.0000 5.3572 + 89.5000 300.0000 5.4772 + 89.5500 319.0000 5.6480 + 89.6000 347.0000 5.8907 + 89.6500 378.0000 6.1482 + 89.7000 420.0000 6.4807 + 89.7500 469.0000 6.8484 + 89.8000 536.0000 7.3212 + 89.8500 645.0000 8.0312 + 89.9000 773.0000 8.7920 + 89.9500 925.0000 9.6177 + 90.0000 1115.0000 10.5594 + 90.0500 1254.0000 11.1982 + 90.1000 1367.0000 11.6919 + 90.1500 1400.0000 11.8322 + 90.2000 1327.0000 11.5195 + 90.2500 1188.0000 10.8995 + 90.3000 1038.0000 10.1882 + 90.3500 879.0000 9.3755 + 90.4000 738.0000 8.5907 + 90.4500 644.0000 8.0250 + 90.5000 594.0000 7.7071 + 90.5500 601.0000 7.7524 + 90.6000 643.0000 8.0187 + 90.6500 697.0000 8.3487 + 90.7000 786.0000 8.8657 + 90.7500 842.0000 9.1761 + 90.8000 847.0000 9.2033 + 90.8500 791.0000 8.8938 + 90.9000 702.0000 8.3785 + 90.9500 592.0000 7.6942 + 91.0000 508.0000 7.1274 + 91.0500 418.0000 6.4653 + 91.1000 362.0000 6.0166 + 91.1500 328.0000 5.7271 + 91.2000 299.0000 5.4681 + 91.2500 279.0000 5.2820 + 91.3000 270.0000 5.1962 + 91.3500 257.0000 5.0695 + 91.4000 253.0000 5.0299 + 91.4500 258.0000 5.0794 + 91.5000 257.0000 5.0695 + 91.5500 249.0000 4.9900 + 91.6000 245.0000 4.9497 + 91.6500 257.0000 5.0695 + 91.7000 260.0000 5.0990 + 91.7500 284.0000 5.3292 + 91.8000 296.0000 5.4406 + 91.8500 322.0000 5.6745 + 91.9000 343.0000 5.8566 + 91.9500 382.0000 6.1806 + 92.0000 405.0000 6.3640 + 92.0500 411.0000 6.4109 + 92.1000 416.0000 6.4498 + 92.1500 406.0000 6.3718 + 92.2000 372.0000 6.0992 + 92.2500 353.0000 5.9414 + 92.3000 330.0000 5.7446 + 92.3500 317.0000 5.6303 + 92.4000 313.0000 5.5946 + 92.4500 312.0000 5.5857 + 92.5000 309.0000 5.5588 + 92.5500 303.0000 5.5045 + 92.6000 288.0000 5.3666 + 92.6500 276.0000 5.2536 + 92.7000 264.0000 5.1381 + 92.7500 246.0000 4.9598 + 92.8000 249.0000 4.9900 + 92.8500 241.0000 4.9092 + 92.9000 251.0000 5.0100 + 92.9500 243.0000 4.9295 + 93.0000 246.0000 4.9598 + 93.0500 246.0000 4.9598 + 93.1000 249.0000 4.9900 + 93.1500 244.0000 4.9396 + 93.2000 252.0000 5.0200 + 93.2500 252.0000 5.0200 + 93.3000 258.0000 5.0794 + 93.3500 265.0000 5.1478 + 93.4000 263.0000 5.1284 + 93.4500 284.0000 5.3292 + 93.5000 299.0000 5.4681 + 93.5500 320.0000 5.6569 + 93.6000 344.0000 5.8652 + 93.6500 363.0000 6.0249 + 93.7000 372.0000 6.0992 + 93.7500 358.0000 5.9833 + 93.8000 351.0000 5.9245 + 93.8500 354.0000 5.9498 + 93.9000 330.0000 5.7446 + 93.9500 322.0000 5.6745 + 94.0000 334.0000 5.7793 + 94.0500 339.0000 5.8224 + 94.1000 345.0000 5.8737 + 94.1500 357.0000 5.9749 + 94.2000 360.0000 6.0000 + 94.2500 358.0000 5.9833 + 94.3000 372.0000 6.0992 + 94.3500 425.0000 6.5192 + 94.4000 511.0000 7.1484 + 94.4500 626.0000 7.9120 + 94.5000 770.0000 8.7750 + 94.5500 946.0000 9.7263 + 94.6000 1118.0000 10.5736 + 94.6500 1205.0000 10.9772 + 94.7000 1227.0000 11.0770 + 94.7500 1157.0000 10.7564 + 94.8000 1041.0000 10.2029 + 94.8500 873.0000 9.3434 + 94.9000 715.0000 8.4558 + 94.9500 562.0000 7.4967 + 95.0000 446.0000 6.6783 + 95.0500 377.0000 6.1400 + 95.1000 332.0000 5.7619 + 95.1500 297.0000 5.4498 + 95.2000 282.0000 5.3104 + 95.2500 276.0000 5.2536 + 95.3000 264.0000 5.1381 + 95.3500 261.0000 5.1088 + 95.4000 266.0000 5.1575 + 95.4500 261.0000 5.1088 + 95.5000 253.0000 5.0299 + 95.5500 258.0000 5.0794 + 95.6000 262.0000 5.1186 + 95.6500 260.0000 5.0990 + 95.7000 283.0000 5.3198 + 95.7500 307.0000 5.5408 + 95.8000 344.0000 5.8652 + 95.8500 402.0000 6.3403 + 95.9000 453.0000 6.7305 + 95.9500 529.0000 7.2732 + 96.0000 604.0000 7.7717 + 96.0500 661.0000 8.1302 + 96.1000 672.0000 8.1976 + 96.1500 629.0000 7.9310 + 96.2000 588.0000 7.6681 + 96.2500 510.0000 7.1414 + 96.3000 440.0000 6.6332 + 96.3500 377.0000 6.1400 + 96.4000 330.0000 5.7446 + 96.4500 301.0000 5.4863 + 96.5000 280.0000 5.2915 + 96.5500 269.0000 5.1865 + 96.6000 258.0000 5.0794 + 96.6500 252.0000 5.0200 + 96.7000 251.0000 5.0100 + 96.7500 252.0000 5.0200 + 96.8000 256.0000 5.0596 + 96.8500 253.0000 5.0299 + 96.9000 253.0000 5.0299 + 96.9500 253.0000 5.0299 + 97.0000 262.0000 5.1186 + 97.0500 265.0000 5.1478 + 97.1000 284.0000 5.3292 + 97.1500 291.0000 5.3944 + 97.2000 323.0000 5.6833 + 97.2500 374.0000 6.1156 + 97.3000 431.0000 6.5651 + 97.3500 511.0000 7.1484 + 97.4000 602.0000 7.7589 + 97.4500 678.0000 8.2341 + 97.5000 743.0000 8.6197 + 97.5500 756.0000 8.6948 + 97.6000 717.0000 8.4676 + 97.6500 657.0000 8.1056 + 97.7000 581.0000 7.6223 + 97.7500 490.0000 7.0000 + 97.8000 418.0000 6.4653 + 97.8500 364.0000 6.0332 + 97.9000 335.0000 5.7879 + 97.9500 306.0000 5.5317 + 98.0000 290.0000 5.3852 + 98.0500 286.0000 5.3479 + 98.1000 283.0000 5.3198 + 98.1500 283.0000 5.3198 + 98.2000 274.0000 5.2345 + 98.2500 262.0000 5.1186 + 98.3000 266.0000 5.1575 + 98.3500 261.0000 5.1088 + 98.4000 261.0000 5.1088 + 98.4500 264.0000 5.1381 + 98.5000 269.0000 5.1865 + 98.5500 278.0000 5.2726 + 98.6000 288.0000 5.3666 + 98.6500 306.0000 5.5317 + 98.7000 319.0000 5.6480 + 98.7500 330.0000 5.7446 + 98.8000 343.0000 5.8566 + 98.8500 341.0000 5.8395 + 98.9000 325.0000 5.7009 + 98.9500 318.0000 5.6391 + 99.0000 298.0000 5.4589 + 99.0500 299.0000 5.4681 + 99.1000 288.0000 5.3666 + 99.1500 309.0000 5.5588 + 99.2000 344.0000 5.8652 + 99.2500 382.0000 6.1806 + 99.3000 422.0000 6.4962 + 99.3500 470.0000 6.8557 + 99.4000 512.0000 7.1554 + 99.4500 514.0000 7.1694 + 99.5000 515.0000 7.1764 + 99.5500 488.0000 6.9857 + 99.6000 440.0000 6.6332 + 99.6500 396.0000 6.2929 + 99.7000 366.0000 6.0498 + 99.7500 332.0000 5.7619 + 99.8000 311.0000 5.5767 + 99.8500 305.0000 5.5227 + 99.9000 300.0000 5.4772 + 99.9500 293.0000 5.4129 + 100.0000 286.0000 5.3479 + 100.0500 306.0000 5.5317 + 100.1000 313.0000 5.5946 + 100.1500 317.0000 5.6303 + 100.2000 327.0000 5.7184 + 100.2500 343.0000 5.8566 + 100.3000 330.0000 5.7446 + 100.3500 320.0000 5.6569 + 100.4000 307.0000 5.5408 + 100.4500 298.0000 5.4589 + 100.5000 282.0000 5.3104 + 100.5500 274.0000 5.2345 + 100.6000 266.0000 5.1575 + 100.6500 274.0000 5.2345 + 100.7000 271.0000 5.2058 + 100.7500 274.0000 5.2345 + 100.8000 290.0000 5.3852 + 100.8500 302.0000 5.4955 + 100.9000 321.0000 5.6657 + 100.9500 350.0000 5.9161 + 101.0000 367.0000 6.0581 + 101.0500 386.0000 6.2129 + 101.1000 394.0000 6.2769 + 101.1500 370.0000 6.0828 + 101.2000 356.0000 5.9666 + 101.2500 332.0000 5.7619 + 101.3000 310.0000 5.5678 + 101.3500 288.0000 5.3666 + 101.4000 279.0000 5.2820 + 101.4500 281.0000 5.3009 + 101.5000 274.0000 5.2345 + 101.5500 284.0000 5.3292 + 101.6000 280.0000 5.2915 + 101.6500 270.0000 5.1962 + 101.7000 278.0000 5.2726 + 101.7500 269.0000 5.1865 + 101.8000 273.0000 5.2249 + 101.8500 268.0000 5.1769 + 101.9000 267.0000 5.1672 + 101.9500 265.0000 5.1478 + 102.0000 257.0000 5.3437 + 102.0500 258.0000 5.3541 + 102.1000 267.0000 5.4467 + 102.1500 267.0000 5.4467 + 102.2000 277.0000 5.5478 + 102.2500 287.0000 5.6470 + 102.3000 302.0000 5.7927 + 102.3500 332.0000 6.0736 + 102.4000 360.0000 6.3246 + 102.4500 411.0000 6.7577 + 102.5000 457.0000 7.1259 + 102.5500 524.0000 7.6303 + 102.6000 608.0000 8.2192 + 102.6500 699.0000 8.8129 + 102.7000 861.0000 9.7809 + 102.7500 1096.0000 11.0353 + 102.8000 1377.0000 12.3693 + 102.8500 1685.0000 13.6829 + 102.9000 1901.0000 14.5335 + 102.9500 2069.0000 15.1621 + 103.0000 2016.0000 14.9666 + 103.0500 1800.0000 14.1421 + 103.1000 1500.0000 12.9099 + 103.1500 1181.0000 11.4552 + 103.2000 937.0000 10.2035 + 103.2500 728.0000 8.9938 + 103.3000 629.0000 8.3600 + 103.3500 576.0000 8.0000 + 103.4000 556.0000 7.8599 + 103.4500 535.0000 7.7100 + 103.5000 519.0000 7.5939 + 103.5500 486.0000 7.3485 + 103.6000 465.0000 7.1880 + 103.6500 429.0000 6.9041 + 103.7000 385.0000 6.5405 + 103.7500 361.0000 6.3333 + 103.8000 342.0000 6.1644 + 103.8500 312.0000 5.8878 + 103.9000 293.0000 5.7057 + 103.9500 279.0000 5.5678 + 104.0000 277.0000 5.5478 + 104.0500 265.0000 5.4263 + 104.1000 257.0000 5.3437 + 104.1500 256.0000 5.3333 + 104.2000 250.0000 5.2705 + 104.2500 260.0000 5.3748 + 104.3000 261.0000 5.3852 + 104.3500 258.0000 5.3541 + 104.4000 263.0000 5.4058 + 104.4500 268.0000 5.4569 + 104.5000 284.0000 5.6174 + 104.5500 306.0000 5.8310 + 104.6000 325.0000 6.0093 + 104.6500 337.0000 6.1192 + 104.7000 337.0000 6.1192 + 104.7500 344.0000 6.1824 + 104.8000 340.0000 6.1464 + 104.8500 337.0000 6.1192 + 104.9000 328.0000 6.0369 + 104.9500 321.0000 5.9722 + 105.0000 306.0000 5.8310 + 105.0500 295.0000 5.7252 + 105.1000 289.0000 5.6667 + 105.1500 281.0000 5.5877 + 105.2000 267.0000 5.4467 + 105.2500 266.0000 5.4365 + 105.3000 270.0000 5.4772 + 105.3500 263.0000 5.4058 + 105.4000 256.0000 5.3333 + 105.4500 266.0000 5.4365 + 105.5000 264.0000 5.4160 + 105.5500 259.0000 5.3645 + 105.6000 261.0000 5.3852 + 105.6500 261.0000 5.3852 + 105.7000 258.0000 5.3541 + 105.7500 253.0000 5.3020 + 105.8000 248.0000 5.2493 + 105.8500 244.0000 5.2068 + 105.9000 249.0000 5.2599 + 105.9500 251.0000 5.2810 + 106.0000 245.0000 5.2175 + 106.0500 245.0000 5.2175 + 106.1000 247.0000 5.2387 + 106.1500 247.0000 5.2387 + 106.2000 254.0000 5.3125 + 106.2500 259.0000 5.3645 + 106.3000 250.0000 5.2705 + 106.3500 251.0000 5.2810 + 106.4000 258.0000 5.3541 + 106.4500 252.0000 5.2915 + 106.5000 255.0000 5.3229 + 106.5500 259.0000 5.3645 + 106.6000 256.0000 5.3333 + 106.6500 264.0000 5.4160 + 106.7000 268.0000 5.4569 + 106.7500 281.0000 5.5877 + 106.8000 303.0000 5.8023 + 106.8500 331.0000 6.0645 + 106.9000 371.0000 6.4205 + 106.9500 420.0000 6.8313 + 107.0000 484.0000 7.3333 + 107.0500 532.0000 7.6884 + 107.1000 576.0000 8.0000 + 107.1500 582.0000 8.0416 + 107.2000 563.0000 7.9092 + 107.2500 527.0000 7.6522 + 107.3000 490.0000 7.3786 + 107.3500 465.0000 7.1880 + 107.4000 467.0000 7.2034 + 107.4500 449.0000 7.0632 + 107.5000 416.0000 6.7987 + 107.5500 393.0000 6.6081 + 107.6000 366.0000 6.3770 + 107.6500 331.0000 6.0645 + 107.7000 316.0000 5.9255 + 107.7500 297.0000 5.7446 + 107.8000 294.0000 5.7155 + 107.8500 292.0000 5.6960 + 107.9000 286.0000 5.6372 + 107.9500 295.0000 5.7252 + 108.0000 306.0000 6.1847 + 108.0500 315.0000 6.2750 + 108.1000 334.0000 6.4614 + 108.1500 373.0000 6.8282 + 108.2000 406.0000 7.1239 + 108.2500 447.0000 7.4750 + 108.3000 499.0000 7.8978 + 108.3500 507.0000 7.9608 + 108.4000 506.0000 7.9530 + 108.4500 488.0000 7.8102 + 108.5000 432.0000 7.3485 + 108.5500 391.0000 6.9911 + 108.6000 342.0000 6.5383 + 108.6500 315.0000 6.2750 + 108.7000 292.0000 6.0415 + 108.7500 275.0000 5.8630 + 108.8000 274.0000 5.8523 + 108.8500 259.0000 5.6899 + 108.9000 250.0000 5.5902 + 108.9500 258.0000 5.6789 + 109.0000 252.0000 5.6125 + 109.0500 255.0000 5.6458 + 109.1000 254.0000 5.6347 + 109.1500 253.0000 5.6236 + 109.2000 254.0000 5.6347 + 109.2500 252.0000 5.6125 + 109.3000 257.0000 5.6679 + 109.3500 250.0000 5.5902 + 109.4000 255.0000 5.6458 + 109.4500 251.0000 5.6013 + 109.5000 254.0000 5.6347 + 109.5500 260.0000 5.7009 + 109.6000 249.0000 5.5790 + 109.6500 253.0000 5.6236 + 109.7000 254.0000 5.6347 + 109.7500 259.0000 5.6899 + 109.8000 268.0000 5.7879 + 109.8500 270.0000 5.8095 + 109.9000 284.0000 5.9582 + 109.9500 305.0000 6.1745 + 110.0000 322.0000 6.3443 + 110.0500 364.0000 6.7454 + 110.1000 417.0000 7.2198 + 110.1500 470.0000 7.6649 + 110.2000 573.0000 8.4632 + 110.2500 678.0000 9.2060 + 110.3000 771.0000 9.8171 + 110.3500 847.0000 10.2896 + 110.4000 854.0000 10.3320 + 110.4500 794.0000 9.9624 + 110.5000 720.0000 9.4868 + 110.5500 611.0000 8.7393 + 110.6000 520.0000 8.0623 + 110.6500 463.0000 7.6076 + 110.7000 412.0000 7.1764 + 110.7500 399.0000 7.0622 + 110.8000 416.0000 7.2111 + 110.8500 428.0000 7.3144 + 110.9000 432.0000 7.3485 + 110.9500 420.0000 7.2457 + 111.0000 402.0000 7.0887 + 111.0500 364.0000 6.7454 + 111.1000 348.0000 6.5955 + 111.1500 334.0000 6.4614 + 111.2000 321.0000 6.3344 + 111.2500 330.0000 6.4226 + 111.3000 342.0000 6.5383 + 111.3500 380.0000 6.8920 + 111.4000 385.0000 6.9372 + 111.4500 420.0000 7.2457 + 111.5000 441.0000 7.4246 + 111.5500 465.0000 7.6240 + 111.6000 444.0000 7.4498 + 111.6500 406.0000 7.1239 + 111.7000 383.0000 6.9192 + 111.7500 345.0000 6.5670 + 111.8000 332.0000 6.4420 + 111.8500 321.0000 6.3344 + 111.9000 308.0000 6.2048 + 111.9500 292.0000 6.0415 + 112.0000 303.0000 6.1543 + 112.0500 314.0000 6.2650 + 112.1000 333.0000 6.4517 + 112.1500 379.0000 6.8829 + 112.2000 438.0000 7.3993 + 112.2500 505.0000 7.9451 + 112.3000 594.0000 8.6168 + 112.3500 659.0000 9.0761 + 112.4000 717.0000 9.4670 + 112.4500 738.0000 9.6047 + 112.5000 710.0000 9.4207 + 112.5500 642.0000 8.9582 + 112.6000 547.0000 8.2689 + 112.6500 492.0000 7.8422 + 112.7000 421.0000 7.2543 + 112.7500 386.0000 6.9462 + 112.8000 344.0000 6.5574 + 112.8500 337.0000 6.4904 + 112.9000 350.0000 6.6144 + 112.9500 364.0000 6.7454 + 113.0000 415.0000 7.2024 + 113.0500 506.0000 7.9530 + 113.1000 586.0000 8.5586 + 113.1500 674.0000 9.1788 + 113.2000 750.0000 9.6825 + 113.2500 787.0000 9.9184 + 113.3000 753.0000 9.7018 + 113.3500 682.0000 9.2331 + 113.4000 597.0000 8.6386 + 113.4500 499.0000 7.8978 + 113.5000 417.0000 7.2198 + 113.5500 362.0000 6.7268 + 113.6000 340.0000 6.5192 + 113.6500 302.0000 6.1441 + 113.7000 286.0000 5.9791 + 113.7500 280.0000 5.9161 + 113.8000 283.0000 5.9477 + 113.8500 276.0000 5.8737 + 113.9000 282.0000 5.9372 + 113.9500 284.0000 5.9582 + 114.0000 295.0000 6.4918 + 114.0500 310.0000 6.6548 + 114.1000 319.0000 6.7507 + 114.1500 321.0000 6.7718 + 114.2000 304.0000 6.5900 + 114.2500 298.0000 6.5247 + 114.3000 293.0000 6.4697 + 114.3500 283.0000 6.3583 + 114.4000 277.0000 6.2906 + 114.4500 269.0000 6.1991 + 114.5000 265.0000 6.1528 + 114.5500 277.0000 6.2906 + 114.6000 283.0000 6.3583 + 114.6500 283.0000 6.3583 + 114.7000 293.0000 6.4697 + 114.7500 303.0000 6.5792 + 114.8000 320.0000 6.7612 + 114.8500 316.0000 6.7188 + 114.9000 331.0000 6.8765 + 114.9500 346.0000 7.0305 + 115.0000 327.0000 6.8348 + 115.0500 328.0000 6.8452 + 115.1000 306.0000 6.6117 + 115.1500 291.0000 6.4476 + 115.2000 286.0000 6.3920 + 115.2500 278.0000 6.3019 + 115.3000 273.0000 6.2450 + 115.3500 267.0000 6.1760 + 115.4000 272.0000 6.2335 + 115.4500 257.0000 6.0592 + 115.5000 260.0000 6.0945 + 115.5500 265.0000 6.1528 + 115.6000 264.0000 6.1412 + 115.6500 272.0000 6.2335 + 115.7000 270.0000 6.2106 + 115.7500 268.0000 6.1875 + 115.8000 269.0000 6.1991 + 115.8500 287.0000 6.4031 + 115.9000 292.0000 6.4587 + 115.9500 295.0000 6.4918 + 116.0000 317.0000 6.7295 + 116.0500 335.0000 6.9179 + 116.1000 364.0000 7.2111 + 116.1500 410.0000 7.6532 + 116.2000 477.0000 8.2549 + 116.2500 556.0000 8.9123 + 116.3000 642.0000 9.5768 + 116.3500 755.0000 10.3854 + 116.4000 864.0000 11.1098 + 116.4500 946.0000 11.6251 + 116.5000 970.0000 11.7716 + 116.5500 941.0000 11.5943 + 116.6000 870.0000 11.1484 + 116.6500 759.0000 10.4129 + 116.7000 647.0000 9.6140 + 116.7500 540.0000 8.7831 + 116.8000 468.0000 8.1766 + 116.8500 418.0000 7.7275 + 116.9000 379.0000 7.3582 + 116.9500 381.0000 7.3776 + 117.0000 405.0000 7.6064 + 117.0500 446.0000 7.9821 + 117.1000 476.0000 8.2462 + 117.1500 523.0000 8.6437 + 117.2000 561.0000 8.9523 + 117.2500 555.0000 8.9043 + 117.3000 529.0000 8.6932 + 117.3500 485.0000 8.3238 + 117.4000 436.0000 7.8921 + 117.4500 398.0000 7.5404 + 117.5000 355.0000 7.1214 + 117.5500 322.0000 6.7823 + 117.6000 304.0000 6.5900 + 117.6500 285.0000 6.3808 + 117.7000 270.0000 6.2106 + 117.7500 278.0000 6.3019 + 117.8000 260.0000 6.0945 + 117.8500 268.0000 6.1875 + 117.9000 264.0000 6.1412 + 117.9500 265.0000 6.1528 + 118.0000 263.0000 6.1296 + 118.0500 267.0000 6.1760 + 118.1000 286.0000 6.3920 + 118.1500 293.0000 6.4697 + 118.2000 291.0000 6.4476 + 118.2500 319.0000 6.7507 + 118.3000 366.0000 7.2309 + 118.3500 411.0000 7.6625 + 118.4000 461.0000 8.1152 + 118.4500 489.0000 8.3581 + 118.5000 521.0000 8.6272 + 118.5500 555.0000 8.9043 + 118.6000 550.0000 8.8641 + 118.6500 511.0000 8.5440 + 118.7000 486.0000 8.3324 + 118.7500 436.0000 7.8921 + 118.8000 392.0000 7.4833 + 118.8500 368.0000 7.2506 + 118.9000 330.0000 6.8661 + 118.9500 328.0000 6.8452 + 119.0000 343.0000 7.0000 + 119.0500 371.0000 7.2801 + 119.1000 394.0000 7.5024 + 119.1500 441.0000 7.9373 + 119.2000 468.0000 8.1766 + 119.2500 469.0000 8.1854 + 119.3000 456.0000 8.0711 + 119.3500 416.0000 7.7090 + 119.4000 394.0000 7.5024 + 119.4500 361.0000 7.1813 + 119.5000 330.0000 6.8661 + 119.5500 312.0000 6.6762 + 119.6000 293.0000 6.4697 + 119.6500 285.0000 6.3808 + 119.7000 286.0000 6.3920 + 119.7500 275.0000 6.2678 + 119.8000 274.0000 6.2564 + 119.8500 281.0000 6.3358 + 119.9000 279.0000 6.3133 + 119.9500 298.0000 6.5247 + 120.0000 312.0000 7.2111 From e4474af957a707fa9f75ecfca75603885cc6fb4c Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 27 Nov 2020 14:06:18 +0100 Subject: [PATCH 113/312] More fitting work --- .../Elements/Backgrounds/Point.py | 4 + tests/FittingData.ipynb | 144 +++++++++++++----- 2 files changed, 111 insertions(+), 37 deletions(-) diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index 1c62641d..1b6f8dd6 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -78,6 +78,10 @@ def _modify_x_label(self, value: float): """ self.name = '{:.1f}_deg'.format(value).replace(".", ",") + def __repr__(self) -> str: + y_str = str(self.y).split(': ')[1][:-1] + return f'<{self.__class__.__name__} \'{self.name}\': {y_str}>' + class PointBackground(Background): """ diff --git a/tests/FittingData.ipynb b/tests/FittingData.ipynb index b61a3f06..ebd15059 100644 --- a/tests/FittingData.ipynb +++ b/tests/FittingData.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -56,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -82,7 +82,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -103,7 +103,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -898,10 +898,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 9, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -922,7 +922,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -1724,10 +1724,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 14, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -1757,7 +1757,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -1772,7 +1772,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -2575,10 +2575,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 19, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -2610,7 +2610,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -2618,6 +2618,9 @@ "\n", "# Vary the scale and the BG points\n", "S.pattern.scale.fixed = False\n", + "S.parameters.resolution_u.fixed = False\n", + "S.parameters.resolution_v.fixed = False\n", + "S.parameters.resolution_w.fixed = False\n", "S.backgrounds[0][0].y.fixed = False\n", "S.backgrounds[0][1].y.fixed = False" ] @@ -2631,25 +2634,92 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "y_calc: [226.18 226.23 226.28 ... 336.443 336.493 336.543]\n", - "y_calc: [226.18 226.23 226.28 ... 336.443 336.493 336.543]\n", - "y_calc: [226.18 226.23 226.28 ... 336.443 336.493 336.543]\n", - "y_calc: [226.18 226.23 226.28 ... 336.443 336.493 336.543]\n", - "y_calc: [226.18 226.23 226.28 ... 336.443 336.493 336.543]\n", - "y_calc: [226.18 226.23 226.28 ... 336.443 336.493 336.543]\n", - "y_calc: [226.18 226.23 226.28 ... 336.443 336.493 336.543]\n", - "y_calc: [226.18 226.23 226.28 ... 336.443 336.493 336.543]\n", - "y_calc: [226.18 226.23 226.28 ... 336.443 336.493 336.543]\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n", + "y_calc: [200. 200. 200. ... 200. 200. 200.]\n", + "y_calc: [223.372 223.418 223.464 ... 323.916 323.962 324.007]\n", + "y_calc: [223.372 223.418 223.464 ... 323.916 323.962 324.007]\n", + "y_calc: [223.372 223.418 223.464 ... 323.916 323.962 324.007]\n", + "y_calc: [223.372 223.418 223.464 ... 323.916 323.962 324.007]\n", + "y_calc: [223.372 223.418 223.464 ... 323.916 323.962 324.007]\n", + "y_calc: [223.372 223.418 223.464 ... 323.916 323.962 324.007]\n", + "y_calc: [223.372 223.418 223.464 ... 323.916 323.962 324.007]\n", + "y_calc: [221.281 221.323 221.366 ... 314.576 314.619 314.661]\n", + "y_calc: [221.281 221.323 221.366 ... 314.576 314.619 314.661]\n", + "y_calc: [221.281 221.323 221.366 ... 314.576 314.619 314.661]\n", + "y_calc: [221.281 221.323 221.366 ... 314.576 314.619 314.661]\n", + "y_calc: [221.281 221.323 221.366 ... 314.576 314.619 314.661]\n", + "y_calc: [221.281 221.323 221.366 ... 314.576 314.619 314.661]\n", + "y_calc: [221.281 221.323 221.366 ... 314.576 314.619 314.661]\n", + "y_calc: [215.484 215.518 215.552 ... 291.048 291.082 291.626]\n", + "y_calc: [215.484 215.518 215.552 ... 291.048 291.082 291.626]\n", + "y_calc: [215.484 215.518 215.552 ... 291.048 291.082 291.626]\n", + "y_calc: [215.484 215.518 215.552 ... 291.048 291.082 291.626]\n", + "y_calc: [215.484 215.518 215.552 ... 291.048 291.082 291.626]\n", + "y_calc: [215.484 215.518 215.552 ... 291.048 291.082 291.626]\n", + "y_calc: [215.484 215.518 215.552 ... 291.048 291.082 291.626]\n", + "y_calc: [206.988 207.014 207.04 ... 266.887 265.777 267.267]\n", + "y_calc: [206.988 207.014 207.04 ... 266.887 265.777 267.267]\n", + "y_calc: [206.988 207.014 207.04 ... 266.887 265.777 267.267]\n", + "y_calc: [206.988 207.014 207.04 ... 266.887 265.777 267.267]\n", + "y_calc: [206.988 207.014 207.04 ... 266.887 265.777 267.267]\n", + "y_calc: [206.988 207.014 207.04 ... 266.887 265.777 267.267]\n", + "y_calc: [206.988 207.014 207.04 ... 266.887 265.777 267.267]\n", + "y_calc: [200.048 200.07 200.092 ... 260.063 260.228 263.934]\n", + "y_calc: [200.048 200.07 200.092 ... 260.063 260.228 263.934]\n", + "y_calc: [200.048 200.07 200.092 ... 260.063 260.228 263.934]\n", + "y_calc: [200.048 200.07 200.092 ... 260.063 260.228 263.934]\n", + "y_calc: [200.048 200.07 200.092 ... 260.063 260.228 263.934]\n", + "y_calc: [200.048 200.07 200.092 ... 260.063 260.228 263.934]\n", + "y_calc: [200.048 200.07 200.092 ... 260.063 260.228 263.934]\n", + "y_calc: [197.542 197.563 197.584 ... 262.726 263.181 267.632]\n", + "y_calc: [197.542 197.563 197.584 ... 262.726 263.181 267.632]\n", + "y_calc: [197.542 197.563 197.584 ... 262.726 263.181 267.632]\n", + "y_calc: [197.542 197.563 197.584 ... 262.726 263.181 267.632]\n", + "y_calc: [197.542 197.563 197.584 ... 262.726 263.181 267.632]\n", + "y_calc: [197.542 197.563 197.584 ... 262.726 263.181 267.632]\n", + "y_calc: [197.542 197.563 197.584 ... 262.726 263.181 267.632]\n", + "y_calc: [196.961 196.982 197.003 ... 264.333 264.905 269.536]\n", + "y_calc: [196.961 196.982 197.003 ... 264.333 264.905 269.536]\n", + "y_calc: [196.961 196.982 197.003 ... 264.333 264.905 269.536]\n", + "y_calc: [196.961 196.982 197.003 ... 264.333 264.905 269.536]\n", + "y_calc: [196.961 196.982 197.003 ... 264.333 264.905 269.536]\n", + "y_calc: [196.961 196.982 197.003 ... 264.333 264.905 269.536]\n", + "y_calc: [196.961 196.982 197.003 ... 264.333 264.905 269.536]\n", + "y_calc: [196.885 196.906 196.927 ... 264.889 265.498 270.175]\n", + "y_calc: [196.885 196.906 196.927 ... 264.889 265.498 270.175]\n", + "y_calc: [196.885 196.906 196.927 ... 264.889 265.498 270.175]\n", + "y_calc: [196.885 196.906 196.927 ... 264.889 265.498 270.175]\n", + "y_calc: [196.885 196.906 196.927 ... 264.889 265.498 270.175]\n", + "y_calc: [196.885 196.906 196.927 ... 264.889 265.498 270.175]\n", + "y_calc: [196.885 196.906 196.927 ... 264.889 265.498 270.175]\n", + "y_calc: [196.869 196.89 196.911 ... 265.024 265.642 270.329]\n", + "y_calc: [196.869 196.89 196.911 ... 265.024 265.642 270.329]\n", + "y_calc: [196.869 196.89 196.911 ... 265.024 265.642 270.329]\n", + "y_calc: [196.869 196.89 196.911 ... 265.024 265.642 270.329]\n", + "y_calc: [196.869 196.89 196.911 ... 265.024 265.642 270.329]\n", + "y_calc: [196.869 196.89 196.911 ... 265.024 265.642 270.329]\n", + "y_calc: [196.869 196.89 196.911 ... 265.024 265.642 270.329]\n", + "y_calc: [196.867 196.888 196.909 ... 265.055 265.675 270.365]\n", + "y_calc: [196.867 196.888 196.909 ... 265.055 265.675 270.365]\n", + "y_calc: [196.867 196.888 196.909 ... 265.055 265.675 270.365]\n", "The fit has been successful: True\n", - "The gooodness of fit is: 1081064.8704245668\n", - "y_calc: [226.18 226.23 226.28 ... 336.443 336.493 336.543]\n" + "The gooodness of fit is: 333658.42885414\n", + "y_calc: [196.867 196.888 196.909 ... 265.055 265.675 270.365]\n" ] } ], @@ -2665,7 +2735,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -3448,7 +3518,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -3460,10 +3530,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 34, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -3471,29 +3541,29 @@ "source": [ "%matplotlib notebook\n", "plt.plot(data_x, data_y, label='Experimental')\n", - "plt.plot(data_x, sim_y_data, label='Starting point')\n", + "plt.plot(data_x, sim_y_data, label='Best Fit')\n", "plt.legend()" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Scale: \n", - "Scale: \n", - "Scale: \n" + "Scale: \n", + "BG 0: \n", + "BG 1: \n" ] } ], "source": [ "print(f'Scale: {S.pattern.scale}')\n", - "print(f'Scale: {S.backgrounds[0][0].y}')\n", - "print(f'Scale: {S.backgrounds[0][1].y}')" + "print(f'BG 0: {S.backgrounds[0][0]}')\n", + "print(f'BG 1: {S.backgrounds[0][1]}')" ] }, { From 40de2f0d8ef24aa465ed9749e4e5ad3c1f548a9b Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 27 Nov 2020 15:56:00 +0100 Subject: [PATCH 114/312] Add CFML fitting notebook --- pyproject.toml | 1 + tests/FittingData_CFML.ipynb | 5543 ++++++++++++++++++++++++++++++++ tests/PbSO4_xrays_short.xye | 4403 +++++++++++++++++++++++++ tools/Scripts/RelinkCrysfml.py | 72 +- 4 files changed, 10003 insertions(+), 16 deletions(-) create mode 100644 tests/FittingData_CFML.ipynb create mode 100644 tests/PbSO4_xrays_short.xye diff --git a/pyproject.toml b/pyproject.toml index 934d150b..af520801 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'specie_ pytest = "^5.2" toml = "^0.10" requests = '^2.24' +jupyterlab = "^2.2" [tool.poetry.scripts] easyDiffractionLib = "easyDiffractionLib.main:main" diff --git a/tests/FittingData_CFML.ipynb b/tests/FittingData_CFML.ipynb new file mode 100644 index 00000000..fad42db0 --- /dev/null +++ b/tests/FittingData_CFML.ipynb @@ -0,0 +1,5543 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fitting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are two built in fitting engines, `lmfit` and `bumps`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import all the packages." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GSAS-II binary directory: /Users/andrewsazonov/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-P2avuC9_-py3.7/lib/python3.7/site-packages/libsDarwin/GSASII/bindist\n" + ] + } + ], + "source": [ + "# Import all the packages\n", + "from easyCore import np\n", + "from easyDiffractionLib.sample import Sample\n", + "from easyDiffractionLib import Phases\n", + "from easyDiffractionLib.interface import InterfaceFactory\n", + "from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparing the sample and data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We load up a cif file and then set the experimental parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" + ] + } + ], + "source": [ + "interface = InterfaceFactory()\n", + "c = Phases.from_cif_file('PbSO4.cif')\n", + "S = Sample(phases=c, parameters=Pars1D.default(), pattern=Pattern1D.default(), interface=interface)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can load up some experimental data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y_calc: [0.000e+00 0.000e+00 0.000e+00 ... 5.094e-27 5.598e-27 4.636e-27]\n" + ] + } + ], + "source": [ + "file_path = 'PbSO4_xrays_short.xye'\n", + "data_x, data_y, data_e = np.loadtxt(file_path, unpack=True)\n", + "\n", + "# Generate the simulation y-data\n", + "sim_y_data = interface.fit_func(data_x)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "S.parameters.wavelength = 1.54\n", + "S.parameters.u_resolution = 0.031\n", + "S.parameters.v_resolution = -0.052\n", + "S.parameters.w_resolution = 0.032\n", + "S.parameters.x_resolution = 0.015\n", + "S.parameters.y_resolution = 0.0\n", + "\n", + "#sim_y_data = interface.fit_func(data_x)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", + "plt.plot(data_x, sim_y_data, label=f'Calculations ({interface.current_interface_name})')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we need to set the background" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Background of 5 points.\n", + "Collection of 1 backgrounds.\n" + ] + } + ], + "source": [ + "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "\n", + "bg = PointBackground(linked_experiment='PbSO4')\n", + "bg.append(BackgroundPoint.from_pars(data_x[0], 166))\n", + "bg.append(BackgroundPoint.from_pars(16, 36))\n", + "bg.append(BackgroundPoint.from_pars(50, 120))\n", + "bg.append(BackgroundPoint.from_pars(100, 100))\n", + "bg.append(BackgroundPoint.from_pars(data_x[-1], 164))\n", + "print(bg)\n", + "\n", + "S.set_background(bg)\n", + "print(S.backgrounds)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y_calc: [166. 165.458 164.917 ... 163.84 164.777 167.43 ]\n" + ] + }, + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sim_y_data = interface.fit_func(data_x)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", + "plt.plot(data_x, sim_y_data, label=f'Calculations ({interface.current_interface_name})')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Change scale manually" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y_calc: [166. 165.458 164.917 ... 164.581 164.696 164.903]\n" + ] + }, + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experimental')\n", + "plt.plot(data_x, sim_y_data, label='Best Fit')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scale: \n", + "Scale: \n" + ] + } + ], + "source": [ + "print(f'Scale: {S.pattern.scale}')\n", + "print(f'Scale: {S.pattern.zero_shift}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tests/PbSO4_xrays_short.xye b/tests/PbSO4_xrays_short.xye new file mode 100644 index 00000000..3dd2dd06 --- /dev/null +++ b/tests/PbSO4_xrays_short.xye @@ -0,0 +1,4403 @@ +# PbSO4 XrayDif (Rietveld Round Robin, R.J. Hill, JApC 2 + 10.0000 179.0000 13.3791 + 10.0250 147.0000 12.1244 + 10.0500 165.0000 12.8452 + 10.0750 172.0000 13.1149 + 10.1000 150.0000 12.2474 + 10.1250 165.0000 12.8452 + 10.1500 150.0000 12.2474 + 10.1750 158.0000 12.5698 + 10.2000 134.0000 11.5758 + 10.2250 146.0000 12.0830 + 10.2500 167.0000 12.9228 + 10.2750 159.0000 12.6095 + 10.3000 139.0000 11.7898 + 10.3250 145.0000 12.0416 + 10.3500 165.0000 12.8452 + 10.3750 150.0000 12.2474 + 10.4000 149.0000 12.2066 + 10.4250 156.0000 12.4900 + 10.4500 143.0000 11.9583 + 10.4750 166.0000 12.8841 + 10.5000 154.0000 12.4097 + 10.5250 131.0000 11.4455 + 10.5500 144.0000 12.0000 + 10.5750 131.0000 11.4455 + 10.6000 140.0000 11.8322 + 10.6250 147.0000 12.1244 + 10.6500 155.0000 12.4499 + 10.6750 148.0000 12.1655 + 10.7000 140.0000 11.8322 + 10.7250 138.0000 11.7473 + 10.7500 127.0000 11.2694 + 10.7750 146.0000 12.0830 + 10.8000 147.0000 12.1244 + 10.8250 114.0000 10.6771 + 10.8500 129.0000 11.3578 + 10.8750 129.0000 11.3578 + 10.9000 128.0000 11.3137 + 10.9250 136.0000 11.6619 + 10.9500 148.0000 12.1655 + 10.9750 132.0000 11.4891 + 11.0000 141.0000 11.8743 + 11.0250 135.0000 11.6189 + 11.0500 141.0000 11.8743 + 11.0750 145.0000 12.0416 + 11.1000 131.0000 11.4455 + 11.1250 142.0000 11.9164 + 11.1500 148.0000 12.1655 + 11.1750 151.0000 12.2882 + 11.2000 127.0000 11.2694 + 11.2250 133.0000 11.5326 + 11.2500 131.0000 11.4455 + 11.2750 125.0000 11.1803 + 11.3000 129.0000 11.3578 + 11.3250 128.0000 11.3137 + 11.3500 134.0000 11.5758 + 11.3750 142.0000 11.9164 + 11.4000 115.0000 10.7238 + 11.4250 138.0000 11.7473 + 11.4500 125.0000 11.1803 + 11.4750 120.0000 10.9545 + 11.5000 130.0000 11.4018 + 11.5250 118.0000 10.8628 + 11.5500 118.0000 10.8628 + 11.5750 116.0000 10.7703 + 11.6000 119.0000 10.9087 + 11.6250 101.0000 10.0499 + 11.6500 117.0000 10.8167 + 11.6750 142.0000 11.9164 + 11.7000 112.0000 10.5830 + 11.7250 114.0000 10.6771 + 11.7500 111.0000 10.5357 + 11.7750 122.0000 11.0454 + 11.8000 131.0000 11.4455 + 11.8250 107.0000 10.3441 + 11.8500 121.0000 11.0000 + 11.8750 123.0000 11.0905 + 11.9000 120.0000 10.9545 + 11.9250 126.0000 11.2250 + 11.9500 125.0000 11.1803 + 11.9750 120.0000 10.9545 + 12.0000 103.0000 10.1489 + 12.0250 121.0000 11.0000 + 12.0500 109.0000 10.4403 + 12.0750 115.0000 10.7238 + 12.1000 122.0000 11.0454 + 12.1250 123.0000 11.0905 + 12.1500 107.0000 10.3441 + 12.1750 126.0000 11.2250 + 12.2000 133.0000 11.5326 + 12.2250 120.0000 10.9545 + 12.2500 100.0000 10.0000 + 12.2750 130.0000 11.4018 + 12.3000 130.0000 11.4018 + 12.3250 109.0000 10.4403 + 12.3500 116.0000 10.7703 + 12.3750 121.0000 11.0000 + 12.4000 99.0000 9.9499 + 12.4250 107.0000 10.3441 + 12.4500 110.0000 10.4881 + 12.4750 136.0000 11.6619 + 12.5000 113.0000 10.6301 + 12.5250 102.0000 10.0995 + 12.5500 117.0000 10.8167 + 12.5750 111.0000 10.5357 + 12.6000 105.0000 10.2470 + 12.6250 92.0000 9.5917 + 12.6500 110.0000 10.4881 + 12.6750 116.0000 10.7703 + 12.7000 124.0000 11.1355 + 12.7250 111.0000 10.5357 + 12.7500 91.0000 9.5394 + 12.7750 106.0000 10.2956 + 12.8000 122.0000 11.0454 + 12.8250 121.0000 11.0000 + 12.8500 119.0000 10.9087 + 12.8750 114.0000 10.6771 + 12.9000 129.0000 11.3578 + 12.9250 95.0000 9.7468 + 12.9500 117.0000 10.8167 + 12.9750 102.0000 10.0995 + 13.0000 102.0000 10.0995 + 13.0250 117.0000 10.8167 + 13.0500 99.0000 9.9499 + 13.0750 124.0000 11.1355 + 13.1000 107.0000 10.3441 + 13.1250 108.0000 10.3923 + 13.1500 99.0000 9.9499 + 13.1750 113.0000 10.6301 + 13.2000 104.0000 10.1980 + 13.2250 92.0000 9.5917 + 13.2500 98.0000 9.8995 + 13.2750 107.0000 10.3441 + 13.3000 88.0000 9.3808 + 13.3250 96.0000 9.7980 + 13.3500 104.0000 10.1980 + 13.3750 81.0000 9.0000 + 13.4000 111.0000 10.5357 + 13.4250 78.0000 8.8318 + 13.4500 104.0000 10.1980 + 13.4750 119.0000 10.9087 + 13.5000 106.0000 10.2956 + 13.5250 105.0000 10.2470 + 13.5500 96.0000 9.7980 + 13.5750 81.0000 9.0000 + 13.6000 95.0000 9.7468 + 13.6250 96.0000 9.7980 + 13.6500 103.0000 10.1489 + 13.6750 91.0000 9.5394 + 13.7000 112.0000 10.5830 + 13.7250 107.0000 10.3441 + 13.7500 87.0000 9.3274 + 13.7750 112.0000 10.5830 + 13.8000 92.0000 9.5917 + 13.8250 79.0000 8.8882 + 13.8500 92.0000 9.5917 + 13.8750 103.0000 10.1489 + 13.9000 97.0000 9.8489 + 13.9250 102.0000 10.0995 + 13.9500 86.0000 9.2736 + 13.9750 97.0000 9.8489 + 14.0000 103.0000 10.1489 + 14.0250 93.0000 9.6437 + 14.0500 111.0000 10.5357 + 14.0750 95.0000 9.7468 + 14.1000 96.0000 9.7980 + 14.1250 93.0000 9.6437 + 14.1500 85.0000 9.2195 + 14.1750 104.0000 10.1980 + 14.2000 98.0000 9.8995 + 14.2250 108.0000 10.3923 + 14.2500 76.0000 8.7178 + 14.2750 92.0000 9.5917 + 14.3000 95.0000 9.7468 + 14.3250 89.0000 9.4340 + 14.3500 105.0000 10.2470 + 14.3750 95.0000 9.7468 + 14.4000 92.0000 9.5917 + 14.4250 105.0000 10.2470 + 14.4500 89.0000 9.4340 + 14.4750 99.0000 9.9499 + 14.5000 101.0000 10.0499 + 14.5250 97.0000 9.8489 + 14.5500 93.0000 9.6437 + 14.5750 99.0000 9.9499 + 14.6000 100.0000 10.0000 + 14.6250 83.0000 9.1104 + 14.6500 93.0000 9.6437 + 14.6750 96.0000 9.7980 + 14.7000 69.0000 8.3066 + 14.7250 101.0000 10.0499 + 14.7500 97.0000 9.8489 + 14.7750 85.0000 9.2195 + 14.8000 95.0000 9.7468 + 14.8250 85.0000 9.2195 + 14.8500 111.0000 10.5357 + 14.8750 85.0000 9.2195 + 14.9000 86.0000 9.2736 + 14.9250 100.0000 10.0000 + 14.9500 88.0000 9.3808 + 14.9750 98.0000 9.8995 + 15.0000 92.0000 9.5917 + 15.0250 93.0000 9.6437 + 15.0500 94.0000 9.6954 + 15.0750 93.0000 9.6437 + 15.1000 81.0000 9.0000 + 15.1250 98.0000 9.8995 + 15.1500 78.0000 8.8318 + 15.1750 79.0000 8.8882 + 15.2000 93.0000 9.6437 + 15.2250 81.0000 9.0000 + 15.2500 88.0000 9.3808 + 15.2750 73.0000 8.5440 + 15.3000 85.0000 9.2195 + 15.3250 106.0000 10.2956 + 15.3500 88.0000 9.3808 + 15.3750 94.0000 9.6954 + 15.4000 96.0000 9.7980 + 15.4250 91.0000 9.5394 + 15.4500 101.0000 10.0499 + 15.4750 89.0000 9.4340 + 15.5000 87.0000 9.3274 + 15.5250 95.0000 9.7468 + 15.5500 87.0000 9.3274 + 15.5750 97.0000 9.8489 + 15.6000 81.0000 9.0000 + 15.6250 87.0000 9.3274 + 15.6500 93.0000 9.6437 + 15.6750 90.0000 9.4868 + 15.7000 73.0000 8.5440 + 15.7250 98.0000 9.8995 + 15.7500 86.0000 9.2736 + 15.7750 80.0000 8.9443 + 15.8000 82.0000 9.0554 + 15.8250 97.0000 9.8489 + 15.8500 80.0000 8.9443 + 15.8750 81.0000 9.0000 + 15.9000 80.0000 8.9443 + 15.9250 81.0000 9.0000 + 15.9500 73.0000 8.5440 + 15.9750 106.0000 10.2956 + 16.0000 92.0000 9.5917 + 16.0250 101.0000 10.0499 + 16.0500 98.0000 9.8995 + 16.0750 104.0000 10.1980 + 16.1000 106.0000 10.2956 + 16.1250 98.0000 9.8995 + 16.1500 114.0000 10.6771 + 16.1750 97.0000 9.8489 + 16.2000 129.0000 11.3578 + 16.2250 112.0000 10.5830 + 16.2500 141.0000 11.8743 + 16.2750 167.0000 12.9228 + 16.3000 157.0000 12.5300 + 16.3250 200.0000 14.1421 + 16.3500 215.0000 14.6629 + 16.3750 321.0000 17.9165 + 16.4000 397.0000 19.9249 + 16.4250 434.0000 20.8327 + 16.4500 445.0000 21.0950 + 16.4750 313.0000 17.6918 + 16.5000 197.0000 14.0357 + 16.5250 155.0000 12.4499 + 16.5500 110.0000 10.4881 + 16.5750 118.0000 10.8628 + 16.6000 86.0000 9.2736 + 16.6250 110.0000 10.4881 + 16.6500 95.0000 9.7468 + 16.6750 93.0000 9.6437 + 16.7000 98.0000 9.8995 + 16.7250 80.0000 8.9443 + 16.7500 85.0000 9.2195 + 16.7750 106.0000 10.2956 + 16.8000 86.0000 9.2736 + 16.8250 103.0000 10.1489 + 16.8500 92.0000 9.5917 + 16.8750 88.0000 9.3808 + 16.9000 94.0000 9.6954 + 16.9250 79.0000 8.8882 + 16.9500 92.0000 9.5917 + 16.9750 106.0000 10.2956 + 17.0000 82.0000 9.0554 + 17.0250 104.0000 10.1980 + 17.0500 94.0000 9.6954 + 17.0750 88.0000 9.3808 + 17.1000 97.0000 9.8489 + 17.1250 93.0000 9.6437 + 17.1500 90.0000 9.4868 + 17.1750 120.0000 10.9545 + 17.2000 93.0000 9.6437 + 17.2250 106.0000 10.2956 + 17.2500 89.0000 9.4340 + 17.2750 92.0000 9.5917 + 17.3000 100.0000 10.0000 + 17.3250 91.0000 9.5394 + 17.3500 99.0000 9.9499 + 17.3750 81.0000 9.0000 + 17.4000 89.0000 9.4340 + 17.4250 79.0000 8.8882 + 17.4500 91.0000 9.5394 + 17.4750 84.0000 9.1652 + 17.5000 92.0000 9.5917 + 17.5250 107.0000 10.3441 + 17.5500 99.0000 9.9499 + 17.5750 92.0000 9.5917 + 17.6000 87.0000 9.3274 + 17.6250 88.0000 9.3808 + 17.6500 67.0000 8.1854 + 17.6750 81.0000 9.0000 + 17.7000 86.0000 9.2736 + 17.7250 85.0000 9.2195 + 17.7500 103.0000 10.1489 + 17.7750 85.0000 9.2195 + 17.8000 77.0000 8.7750 + 17.8250 105.0000 10.2470 + 17.8500 93.0000 9.6437 + 17.8750 96.0000 9.7980 + 17.9000 93.0000 9.6437 + 17.9250 85.0000 9.2195 + 17.9500 75.0000 8.6603 + 17.9750 105.0000 10.2470 + 18.0000 85.0000 9.2195 + 18.0250 89.0000 9.4340 + 18.0500 86.0000 9.2736 + 18.0750 76.0000 8.7178 + 18.1000 86.0000 9.2736 + 18.1250 71.0000 8.4261 + 18.1500 101.0000 10.0499 + 18.1750 100.0000 10.0000 + 18.2000 89.0000 9.4340 + 18.2250 74.0000 8.6023 + 18.2500 101.0000 10.0499 + 18.2750 103.0000 10.1489 + 18.3000 95.0000 9.7468 + 18.3250 100.0000 10.0000 + 18.3500 87.0000 9.3274 + 18.3750 94.0000 9.6954 + 18.4000 84.0000 9.1652 + 18.4250 102.0000 10.0995 + 18.4500 92.0000 9.5917 + 18.4750 80.0000 8.9443 + 18.5000 82.0000 9.0554 + 18.5250 105.0000 10.2470 + 18.5500 84.0000 9.1652 + 18.5750 83.0000 9.1104 + 18.6000 93.0000 9.6437 + 18.6250 92.0000 9.5917 + 18.6500 105.0000 10.2470 + 18.6750 94.0000 9.6954 + 18.7000 88.0000 9.3808 + 18.7250 97.0000 9.8489 + 18.7500 88.0000 9.3808 + 18.7750 110.0000 10.4881 + 18.8000 110.0000 10.4881 + 18.8250 84.0000 9.1652 + 18.8500 89.0000 9.4340 + 18.8750 98.0000 9.8995 + 18.9000 92.0000 9.5917 + 18.9250 86.0000 9.2736 + 18.9500 110.0000 10.4881 + 18.9750 98.0000 9.8995 + 19.0000 93.0000 9.6437 + 19.0250 94.0000 9.6954 + 19.0500 104.0000 10.1980 + 19.0750 96.0000 9.7980 + 19.1000 105.0000 10.2470 + 19.1250 99.0000 9.9499 + 19.1500 117.0000 10.8167 + 19.1750 111.0000 10.5357 + 19.2000 100.0000 10.0000 + 19.2250 125.0000 11.1803 + 19.2500 99.0000 9.9499 + 19.2750 107.0000 10.3441 + 19.3000 107.0000 10.3441 + 19.3250 98.0000 9.8995 + 19.3500 84.0000 9.1652 + 19.3750 112.0000 10.5830 + 19.4000 99.0000 9.9499 + 19.4250 93.0000 9.6437 + 19.4500 108.0000 10.3923 + 19.4750 100.0000 10.0000 + 19.5000 91.0000 9.5394 + 19.5250 98.0000 9.8995 + 19.5500 124.0000 11.1355 + 19.5750 98.0000 9.8995 + 19.6000 121.0000 11.0000 + 19.6250 114.0000 10.6771 + 19.6500 93.0000 9.6437 + 19.6750 87.0000 9.3274 + 19.7000 95.0000 9.7468 + 19.7250 95.0000 9.7468 + 19.7500 121.0000 11.0000 + 19.7750 102.0000 10.0995 + 19.8000 127.0000 11.2694 + 19.8250 119.0000 10.9087 + 19.8500 118.0000 10.8628 + 19.8750 107.0000 10.3441 + 19.9000 100.0000 10.0000 + 19.9250 95.0000 9.7468 + 19.9500 116.0000 10.7703 + 19.9750 136.0000 11.6619 + 20.0000 92.0000 9.5917 + 20.0250 127.0000 11.2694 + 20.0500 127.0000 11.2694 + 20.0750 115.0000 10.7238 + 20.1000 124.0000 11.1355 + 20.1250 130.0000 11.4018 + 20.1500 123.0000 11.0905 + 20.1750 137.0000 11.7047 + 20.2000 136.0000 11.6619 + 20.2250 165.0000 12.8452 + 20.2500 150.0000 12.2474 + 20.2750 173.0000 13.1529 + 20.3000 190.0000 13.7840 + 20.3250 211.0000 14.5258 + 20.3500 212.0000 14.5602 + 20.3750 255.0000 15.9687 + 20.4000 264.0000 16.2481 + 20.4250 305.0000 17.4642 + 20.4500 353.0000 18.7883 + 20.4750 415.0000 20.3715 + 20.5000 507.0000 22.5167 + 20.5250 623.0000 24.9600 + 20.5500 833.0000 28.8617 + 20.5750 1076.0000 32.8024 + 20.6000 1417.0000 37.6431 + 20.6250 1958.0000 44.2493 + 20.6500 2624.0000 51.2250 + 20.6750 3927.0000 62.6658 + 20.7000 5466.0000 73.9324 + 20.7250 7996.0000 89.4204 + 20.7500 11062.0000 105.1760 + 20.7750 12925.0000 113.6882 + 20.8000 12506.0000 111.8302 + 20.8250 10327.0000 101.6218 + 20.8500 8178.0000 90.4323 + 20.8750 6771.0000 82.2861 + 20.9000 5910.0000 76.8765 + 20.9250 4886.0000 69.8999 + 20.9500 3432.0000 58.5833 + 20.9750 2110.0000 45.9347 + 21.0000 1182.0000 34.3802 + 21.0250 802.0000 28.3196 + 21.0500 623.0000 24.9600 + 21.0750 527.0000 22.9565 + 21.1000 435.0000 20.8567 + 21.1250 393.0000 19.8242 + 21.1500 356.0000 18.8680 + 21.1750 333.0000 18.2483 + 21.2000 295.0000 17.1756 + 21.2250 316.0000 17.7764 + 21.2500 280.0000 16.7332 + 21.2750 248.0000 15.7480 + 21.3000 264.0000 16.2481 + 21.3250 216.0000 14.6969 + 21.3500 202.0000 14.2127 + 21.3750 211.0000 14.5258 + 21.4000 187.0000 13.6748 + 21.4250 168.0000 12.9615 + 21.4500 208.0000 14.4222 + 21.4750 160.0000 12.6491 + 21.5000 171.0000 13.0767 + 21.5250 149.0000 12.2066 + 21.5500 166.0000 12.8841 + 21.5750 138.0000 11.7473 + 21.6000 168.0000 12.9615 + 21.6250 129.0000 11.3578 + 21.6500 147.0000 12.1244 + 21.6750 134.0000 11.5758 + 21.7000 125.0000 11.1803 + 21.7250 137.0000 11.7047 + 21.7500 112.0000 10.5830 + 21.7750 128.0000 11.3137 + 21.8000 134.0000 11.5758 + 21.8250 121.0000 11.0000 + 21.8500 138.0000 11.7473 + 21.8750 103.0000 10.1489 + 21.9000 124.0000 11.1355 + 21.9250 115.0000 10.7238 + 21.9500 119.0000 10.9087 + 21.9750 109.0000 10.4403 + 22.0000 119.0000 10.9087 + 22.0250 116.0000 10.7703 + 22.0500 127.0000 11.2694 + 22.0750 133.0000 11.5326 + 22.1000 121.0000 11.0000 + 22.1250 109.0000 10.4403 + 22.1500 114.0000 10.6771 + 22.1750 113.0000 10.6301 + 22.2000 120.0000 10.9545 + 22.2250 118.0000 10.8628 + 22.2500 102.0000 10.0995 + 22.2750 110.0000 10.4881 + 22.3000 118.0000 10.8628 + 22.3250 123.0000 11.0905 + 22.3500 116.0000 10.7703 + 22.3750 112.0000 10.5830 + 22.4000 107.0000 10.3441 + 22.4250 121.0000 11.0000 + 22.4500 104.0000 10.1980 + 22.4750 124.0000 11.1355 + 22.5000 105.0000 10.2470 + 22.5250 128.0000 11.3137 + 22.5500 115.0000 10.7238 + 22.5750 128.0000 11.3137 + 22.6000 99.0000 9.9499 + 22.6250 130.0000 11.4018 + 22.6500 109.0000 10.4403 + 22.6750 125.0000 11.1803 + 22.7000 138.0000 11.7473 + 22.7250 141.0000 11.8743 + 22.7500 135.0000 11.6189 + 22.7750 125.0000 11.1803 + 22.8000 140.0000 11.8322 + 22.8250 152.0000 12.3288 + 22.8500 177.0000 13.3041 + 22.8750 177.0000 13.3041 + 22.9000 191.0000 13.8203 + 22.9250 195.0000 13.9642 + 22.9500 225.0000 15.0000 + 22.9750 258.0000 16.0624 + 23.0000 301.0000 17.3494 + 23.0250 337.0000 18.3576 + 23.0500 468.0000 21.6333 + 23.0750 618.0000 24.8596 + 23.1000 837.0000 28.9310 + 23.1250 1082.0000 32.8938 + 23.1500 1507.0000 38.8201 + 23.1750 2283.0000 47.7808 + 23.2000 3235.0000 56.8771 + 23.2250 4791.0000 69.2170 + 23.2500 6588.0000 81.1665 + 23.2750 8176.0000 90.4212 + 23.3000 8122.0000 90.1221 + 23.3250 6687.0000 81.7741 + 23.3500 5078.0000 71.2601 + 23.3750 3206.0000 56.6216 + 23.4000 1822.0000 42.6849 + 23.4250 1101.0000 33.1813 + 23.4500 712.0000 26.6833 + 23.4750 566.0000 23.7908 + 23.5000 470.0000 21.6795 + 23.5250 381.0000 19.5192 + 23.5500 302.0000 17.3781 + 23.5750 277.0000 16.6433 + 23.6000 259.0000 16.0935 + 23.6250 259.0000 16.0935 + 23.6500 212.0000 14.5602 + 23.6750 198.0000 14.0712 + 23.7000 189.0000 13.7477 + 23.7250 153.0000 12.3693 + 23.7500 182.0000 13.4907 + 23.7750 178.0000 13.3417 + 23.8000 175.0000 13.2288 + 23.8250 164.0000 12.8062 + 23.8500 139.0000 11.7898 + 23.8750 176.0000 13.2665 + 23.9000 159.0000 12.6095 + 23.9250 147.0000 12.1244 + 23.9500 172.0000 13.1149 + 23.9750 167.0000 12.9228 + 24.0000 159.0000 12.6095 + 24.0250 180.0000 13.4164 + 24.0500 168.0000 12.9615 + 24.0750 162.0000 12.7279 + 24.1000 166.0000 12.8841 + 24.1250 147.0000 12.1244 + 24.1500 149.0000 12.2066 + 24.1750 161.0000 12.6886 + 24.2000 173.0000 13.1529 + 24.2250 145.0000 12.0416 + 24.2500 210.0000 14.4914 + 24.2750 201.0000 14.1774 + 24.3000 257.0000 16.0312 + 24.3250 262.0000 16.1864 + 24.3500 342.0000 18.4932 + 24.3750 451.0000 21.2368 + 24.4000 598.0000 24.4540 + 24.4250 796.0000 28.2135 + 24.4500 1089.0000 33.0000 + 24.4750 1648.0000 40.5956 + 24.5000 2386.0000 48.8467 + 24.5250 3203.0000 56.5951 + 24.5500 3155.0000 56.1694 + 24.5750 2711.0000 52.0673 + 24.6000 1970.0000 44.3847 + 24.6250 1292.0000 35.9444 + 24.6500 729.0000 27.0000 + 24.6750 450.0000 21.2132 + 24.7000 289.0000 17.0000 + 24.7250 285.0000 16.8819 + 24.7500 218.0000 14.7648 + 24.7750 211.0000 14.5258 + 24.8000 202.0000 14.2127 + 24.8250 168.0000 12.9615 + 24.8500 165.0000 12.8452 + 24.8750 177.0000 13.3041 + 24.9000 176.0000 13.2665 + 24.9250 197.0000 14.0357 + 24.9500 164.0000 12.8062 + 24.9750 141.0000 11.8743 + 25.0000 160.0000 12.6491 + 25.0250 160.0000 12.6491 + 25.0500 157.0000 12.5300 + 25.0750 145.0000 12.0416 + 25.1000 165.0000 12.8452 + 25.1250 158.0000 12.5698 + 25.1500 158.0000 12.5698 + 25.1750 197.0000 14.0357 + 25.2000 179.0000 13.3791 + 25.2250 203.0000 14.2478 + 25.2500 194.0000 13.9284 + 25.2750 216.0000 14.6969 + 25.3000 282.0000 16.7929 + 25.3250 282.0000 16.7929 + 25.3500 364.0000 19.0788 + 25.3750 456.0000 21.3542 + 25.4000 632.0000 25.1396 + 25.4250 854.0000 29.2233 + 25.4500 1213.0000 34.8281 + 25.4750 1815.0000 42.6028 + 25.5000 2863.0000 53.5070 + 25.5250 4063.0000 63.7417 + 25.5500 4649.0000 68.1836 + 25.5750 4165.0000 64.5368 + 25.6000 3168.0000 56.2850 + 25.6250 2329.0000 48.2597 + 25.6500 1423.0000 37.7227 + 25.6750 738.0000 27.1662 + 25.7000 438.0000 20.9284 + 25.7250 367.0000 19.1572 + 25.7500 295.0000 17.1756 + 25.7750 246.0000 15.6844 + 25.8000 246.0000 15.6844 + 25.8250 191.0000 13.8203 + 25.8500 179.0000 13.3791 + 25.8750 178.0000 13.3417 + 25.9000 170.0000 13.0384 + 25.9250 182.0000 13.4907 + 25.9500 158.0000 12.5698 + 25.9750 182.0000 13.4907 + 26.0000 179.0000 13.3791 + 26.0250 184.0000 13.5647 + 26.0500 181.0000 13.4536 + 26.0750 169.0000 13.0000 + 26.1000 171.0000 13.0767 + 26.1250 191.0000 13.8203 + 26.1500 175.0000 13.2288 + 26.1750 216.0000 14.6969 + 26.2000 195.0000 13.9642 + 26.2250 224.0000 14.9666 + 26.2500 209.0000 14.4568 + 26.2750 251.0000 15.8430 + 26.3000 257.0000 16.0312 + 26.3250 298.0000 17.2627 + 26.3500 297.0000 17.2337 + 26.3750 378.0000 19.4422 + 26.4000 406.0000 20.1494 + 26.4250 499.0000 22.3383 + 26.4500 590.0000 24.2899 + 26.4750 746.0000 27.3130 + 26.5000 983.0000 31.3528 + 26.5250 1402.0000 37.4433 + 26.5500 2108.0000 45.9130 + 26.5750 3097.0000 55.6507 + 26.6000 4641.0000 68.1249 + 26.6250 7229.0000 85.0235 + 26.6500 10690.0000 103.3925 + 26.6750 13494.0000 116.1637 + 26.7000 13106.0000 114.4814 + 26.7250 10401.0000 101.9853 + 26.7500 7908.0000 88.9269 + 26.7750 5365.0000 73.2462 + 26.8000 2857.0000 53.4509 + 26.8250 1575.0000 39.6863 + 26.8500 947.0000 30.7734 + 26.8750 697.0000 26.4008 + 26.9000 595.0000 24.3926 + 26.9250 529.0000 23.0000 + 26.9500 450.0000 21.2132 + 26.9750 423.0000 20.5670 + 27.0000 344.0000 18.5472 + 27.0250 319.0000 17.8606 + 27.0500 309.0000 17.5784 + 27.0750 252.0000 15.8745 + 27.1000 257.0000 16.0312 + 27.1250 252.0000 15.8745 + 27.1500 266.0000 16.3095 + 27.1750 275.0000 16.5831 + 27.2000 257.0000 16.0312 + 27.2250 285.0000 16.8819 + 27.2500 285.0000 16.8819 + 27.2750 270.0000 16.4317 + 27.3000 280.0000 16.7332 + 27.3250 347.0000 18.6279 + 27.3500 282.0000 16.7929 + 27.3750 362.0000 19.0263 + 27.4000 426.0000 20.6398 + 27.4250 461.0000 21.4709 + 27.4500 637.0000 25.2389 + 27.4750 693.0000 26.3249 + 27.5000 1051.0000 32.4191 + 27.5250 1425.0000 37.7492 + 27.5500 2158.0000 46.4543 + 27.5750 3198.0000 56.5509 + 27.6000 5190.0000 72.0417 + 27.6250 8004.0000 89.4651 + 27.6500 10350.0000 101.7349 + 27.6750 9724.0000 98.6103 + 27.7000 7797.0000 88.3006 + 27.7250 6126.0000 78.2688 + 27.7500 4329.0000 65.7951 + 27.7750 2276.0000 47.7074 + 27.8000 1177.0000 34.3074 + 27.8250 756.0000 27.4955 + 27.8500 591.0000 24.3105 + 27.8750 486.0000 22.0454 + 27.9000 352.0000 18.7617 + 27.9250 340.0000 18.4391 + 27.9500 314.0000 17.7200 + 27.9750 270.0000 16.4317 + 28.0000 256.0000 16.0000 + 28.0250 253.0000 15.9060 + 28.0500 245.0000 15.6525 + 28.0750 206.0000 14.3527 + 28.1000 212.0000 14.5602 + 28.1250 183.0000 13.5277 + 28.1500 205.0000 14.3178 + 28.1750 185.0000 13.6015 + 28.2000 164.0000 12.8062 + 28.2250 197.0000 14.0357 + 28.2500 167.0000 12.9228 + 28.2750 175.0000 13.2288 + 28.3000 159.0000 12.6095 + 28.3250 152.0000 12.3288 + 28.3500 162.0000 12.7279 + 28.3750 168.0000 12.9615 + 28.4000 151.0000 12.2882 + 28.4250 153.0000 12.3693 + 28.4500 128.0000 11.3137 + 28.4750 167.0000 12.9228 + 28.5000 147.0000 12.1244 + 28.5250 140.0000 11.8322 + 28.5500 139.0000 11.7898 + 28.5750 153.0000 12.3693 + 28.6000 153.0000 12.3693 + 28.6250 154.0000 12.4097 + 28.6500 145.0000 12.0416 + 28.6750 147.0000 12.1244 + 28.7000 134.0000 11.5758 + 28.7250 160.0000 12.6491 + 28.7500 137.0000 11.7047 + 28.7750 134.0000 11.5758 + 28.8000 131.0000 11.4455 + 28.8250 157.0000 12.5300 + 28.8500 137.0000 11.7047 + 28.8750 145.0000 12.0416 + 28.9000 151.0000 12.2882 + 28.9250 164.0000 12.8062 + 28.9500 171.0000 13.0767 + 28.9750 172.0000 13.1149 + 29.0000 165.0000 12.8452 + 29.0250 168.0000 12.9615 + 29.0500 162.0000 12.7279 + 29.0750 193.0000 13.8924 + 29.1000 169.0000 13.0000 + 29.1250 199.0000 14.1067 + 29.1500 186.0000 13.6382 + 29.1750 208.0000 14.4222 + 29.2000 196.0000 14.0000 + 29.2250 182.0000 13.4907 + 29.2500 246.0000 15.6844 + 29.2750 245.0000 15.6525 + 29.3000 284.0000 16.8523 + 29.3250 340.0000 18.4391 + 29.3500 364.0000 19.0788 + 29.3750 382.0000 19.5448 + 29.4000 519.0000 22.7816 + 29.4250 665.0000 25.7876 + 29.4500 837.0000 28.9310 + 29.4750 1080.0000 32.8634 + 29.5000 1566.0000 39.5727 + 29.5250 2321.0000 48.1768 + 29.5500 3438.0000 58.6345 + 29.5750 5181.0000 71.9792 + 29.6000 8141.0000 90.2275 + 29.6250 12608.0000 112.2853 + 29.6500 15702.0000 125.3076 + 29.6750 14432.0000 120.1333 + 29.7000 12071.0000 109.8681 + 29.7250 9687.0000 98.4226 + 29.7500 7137.0000 84.4808 + 29.7750 4123.0000 64.2106 + 29.8000 2094.0000 45.7602 + 29.8250 1334.0000 36.5240 + 29.8500 1013.0000 31.8277 + 29.8750 780.0000 27.9285 + 29.9000 668.0000 25.8457 + 29.9250 467.0000 21.6102 + 29.9500 438.0000 20.9284 + 29.9750 379.0000 19.4679 + 30.0000 355.0000 18.8414 + 30.0250 263.0000 16.2173 + 30.0500 287.0000 16.9411 + 30.0750 299.0000 17.2916 + 30.1000 247.0000 15.7162 + 30.1250 253.0000 15.9060 + 30.1500 236.0000 15.3623 + 30.1750 223.0000 14.9332 + 30.2000 193.0000 13.8924 + 30.2250 198.0000 14.0712 + 30.2500 184.0000 13.5647 + 30.2750 204.0000 14.2829 + 30.3000 185.0000 13.6015 + 30.3250 174.0000 13.1909 + 30.3500 201.0000 14.1774 + 30.3750 168.0000 12.9615 + 30.4000 185.0000 13.6015 + 30.4250 175.0000 13.2288 + 30.4500 171.0000 13.0767 + 30.4750 153.0000 12.3693 + 30.5000 162.0000 12.7279 + 30.5250 135.0000 11.6189 + 30.5500 159.0000 12.6095 + 30.5750 139.0000 11.7898 + 30.6000 147.0000 12.1244 + 30.6250 127.0000 11.2694 + 30.6500 143.0000 11.9583 + 30.6750 140.0000 11.8322 + 30.7000 115.0000 10.7238 + 30.7250 142.0000 11.9164 + 30.7500 123.0000 11.0905 + 30.7750 156.0000 12.4900 + 30.8000 133.0000 11.5326 + 30.8250 135.0000 11.6189 + 30.8500 128.0000 11.3137 + 30.8750 130.0000 11.4018 + 30.9000 127.0000 11.2694 + 30.9250 120.0000 10.9545 + 30.9500 121.0000 11.0000 + 30.9750 106.0000 10.2956 + 31.0000 134.0000 11.5758 + 31.0250 114.0000 10.6771 + 31.0500 107.0000 10.3441 + 31.0750 123.0000 11.0905 + 31.1000 111.0000 10.5357 + 31.1250 92.0000 9.5917 + 31.1500 134.0000 11.5758 + 31.1750 87.0000 9.3274 + 31.2000 130.0000 11.4018 + 31.2250 97.0000 9.8489 + 31.2500 101.0000 10.0499 + 31.2750 113.0000 10.6301 + 31.3000 119.0000 10.9087 + 31.3250 122.0000 11.0454 + 31.3500 114.0000 10.6771 + 31.3750 117.0000 10.8167 + 31.4000 84.0000 9.1652 + 31.4250 105.0000 10.2470 + 31.4500 111.0000 10.5357 + 31.4750 104.0000 10.1980 + 31.5000 119.0000 10.9087 + 31.5250 119.0000 10.9087 + 31.5500 101.0000 10.0499 + 31.5750 117.0000 10.8167 + 31.6000 122.0000 11.0454 + 31.6250 105.0000 10.2470 + 31.6500 128.0000 11.3137 + 31.6750 116.0000 10.7703 + 31.7000 126.0000 11.2250 + 31.7250 115.0000 10.7238 + 31.7500 121.0000 11.0000 + 31.7750 116.0000 10.7703 + 31.8000 144.0000 12.0000 + 31.8250 141.0000 11.8743 + 31.8500 128.0000 11.3137 + 31.8750 148.0000 12.1655 + 31.9000 165.0000 12.8452 + 31.9250 172.0000 13.1149 + 31.9500 182.0000 13.4907 + 31.9750 174.0000 13.1909 + 32.0000 193.0000 13.8924 + 32.0250 230.0000 15.1658 + 32.0500 247.0000 15.7162 + 32.0750 312.0000 17.6635 + 32.1000 325.0000 18.0278 + 32.1250 423.0000 20.5670 + 32.1500 589.0000 24.2693 + 32.1750 755.0000 27.4773 + 32.2000 1130.0000 33.6155 + 32.2250 1670.0000 40.8656 + 32.2500 2522.0000 50.2195 + 32.2750 3976.0000 63.0555 + 32.3000 5312.0000 72.8835 + 32.3250 5540.0000 74.4312 + 32.3500 4806.0000 69.3253 + 32.3750 3984.0000 63.1189 + 32.4000 3579.0000 59.8247 + 32.4250 2684.0000 51.8073 + 32.4500 1672.0000 40.8901 + 32.4750 977.0000 31.2570 + 32.5000 645.0000 25.3969 + 32.5250 451.0000 21.2368 + 32.5500 390.0000 19.7484 + 32.5750 317.0000 17.8045 + 32.6000 305.0000 17.4642 + 32.6250 278.0000 16.6733 + 32.6500 234.0000 15.2971 + 32.6750 264.0000 16.2481 + 32.7000 246.0000 15.6844 + 32.7250 263.0000 16.2173 + 32.7500 239.0000 15.4596 + 32.7750 271.0000 16.4621 + 32.8000 260.0000 16.1245 + 32.8250 299.0000 17.2916 + 32.8500 300.0000 17.3205 + 32.8750 332.0000 18.2209 + 32.9000 411.0000 20.2731 + 32.9250 497.0000 22.2935 + 32.9500 630.0000 25.0998 + 32.9750 918.0000 30.2985 + 33.0000 1214.0000 34.8425 + 33.0250 1839.0000 42.8836 + 33.0500 2852.0000 53.4041 + 33.0750 4745.0000 68.8840 + 33.1000 6636.0000 81.4616 + 33.1250 7831.0000 88.4929 + 33.1500 7010.0000 83.7257 + 33.1750 5926.0000 76.9805 + 33.2000 5069.0000 71.1969 + 33.2250 4251.0000 65.1997 + 33.2500 2900.0000 53.8516 + 33.2750 1743.0000 41.7493 + 33.3000 1167.0000 34.1614 + 33.3250 841.0000 29.0000 + 33.3500 646.0000 25.4165 + 33.3750 517.0000 22.7376 + 33.4000 412.0000 20.2978 + 33.4250 354.0000 18.8149 + 33.4500 301.0000 17.3494 + 33.4750 282.0000 16.7929 + 33.5000 234.0000 15.2971 + 33.5250 204.0000 14.2829 + 33.5500 235.0000 15.3297 + 33.5750 226.0000 15.0333 + 33.6000 207.0000 14.3875 + 33.6250 200.0000 14.1421 + 33.6500 180.0000 13.4164 + 33.6750 180.0000 13.4164 + 33.7000 179.0000 13.3791 + 33.7250 172.0000 13.1149 + 33.7500 180.0000 13.4164 + 33.7750 157.0000 12.5300 + 33.8000 154.0000 12.4097 + 33.8250 173.0000 13.1529 + 33.8500 198.0000 14.0712 + 33.8750 147.0000 12.1244 + 33.9000 168.0000 12.9615 + 33.9250 157.0000 12.5300 + 33.9500 199.0000 14.1067 + 33.9750 209.0000 14.4568 + 34.0000 242.0000 15.5563 + 34.0250 257.0000 16.0312 + 34.0500 328.0000 18.1108 + 34.0750 467.0000 21.6102 + 34.1000 631.0000 25.1197 + 34.1250 994.0000 31.5278 + 34.1500 1449.0000 38.0657 + 34.1750 1522.0000 39.0128 + 34.2000 1193.0000 34.5398 + 34.2250 977.0000 31.2570 + 34.2500 947.0000 30.7734 + 34.2750 796.0000 28.2135 + 34.3000 548.0000 23.4094 + 34.3250 358.0000 18.9209 + 34.3500 251.0000 15.8430 + 34.3750 190.0000 13.7840 + 34.4000 164.0000 12.8062 + 34.4250 159.0000 12.6095 + 34.4500 137.0000 11.7047 + 34.4750 134.0000 11.5758 + 34.5000 136.0000 11.6619 + 34.5250 126.0000 11.2250 + 34.5500 122.0000 11.0454 + 34.5750 128.0000 11.3137 + 34.6000 108.0000 10.3923 + 34.6250 100.0000 10.0000 + 34.6500 120.0000 10.9545 + 34.6750 106.0000 10.2956 + 34.7000 123.0000 11.0905 + 34.7250 117.0000 10.8167 + 34.7500 113.0000 10.6301 + 34.7750 108.0000 10.3923 + 34.8000 121.0000 11.0000 + 34.8250 104.0000 10.1980 + 34.8500 104.0000 10.1980 + 34.8750 100.0000 10.0000 + 34.9000 105.0000 10.2470 + 34.9250 107.0000 10.3441 + 34.9500 108.0000 10.3923 + 34.9750 103.0000 10.1489 + 35.0000 108.0000 10.3923 + 35.0250 123.0000 11.0905 + 35.0500 92.0000 9.5917 + 35.0750 122.0000 11.0454 + 35.1000 97.0000 9.8489 + 35.1250 101.0000 10.0499 + 35.1500 92.0000 9.5917 + 35.1750 114.0000 10.6771 + 35.2000 89.0000 9.4340 + 35.2250 81.0000 9.0000 + 35.2500 113.0000 10.6301 + 35.2750 76.0000 8.7178 + 35.3000 89.0000 9.4340 + 35.3250 99.0000 9.9499 + 35.3500 89.0000 9.4340 + 35.3750 98.0000 9.8995 + 35.4000 98.0000 9.8995 + 35.4250 104.0000 10.1980 + 35.4500 120.0000 10.9545 + 35.4750 100.0000 10.0000 + 35.5000 99.0000 9.9499 + 35.5250 89.0000 9.4340 + 35.5500 111.0000 10.5357 + 35.5750 98.0000 9.8995 + 35.6000 96.0000 9.7980 + 35.6250 95.0000 9.7468 + 35.6500 84.0000 9.1652 + 35.6750 115.0000 10.7238 + 35.7000 106.0000 10.2956 + 35.7250 100.0000 10.0000 + 35.7500 86.0000 9.2736 + 35.7750 110.0000 10.4881 + 35.8000 86.0000 9.2736 + 35.8250 98.0000 9.8995 + 35.8500 97.0000 9.8489 + 35.8750 109.0000 10.4403 + 35.9000 112.0000 10.5830 + 35.9250 105.0000 10.2470 + 35.9500 86.0000 9.2736 + 35.9750 102.0000 10.0995 + 36.0000 91.0000 9.5394 + 36.0250 98.0000 9.8995 + 36.0500 111.0000 10.5357 + 36.0750 89.0000 9.4340 + 36.1000 95.0000 9.7468 + 36.1250 95.0000 9.7468 + 36.1500 84.0000 9.1652 + 36.1750 114.0000 10.6771 + 36.2000 108.0000 10.3923 + 36.2250 96.0000 9.7980 + 36.2500 94.0000 9.6954 + 36.2750 94.0000 9.6954 + 36.3000 102.0000 10.0995 + 36.3250 91.0000 9.5394 + 36.3500 106.0000 10.2956 + 36.3750 103.0000 10.1489 + 36.4000 82.0000 9.0554 + 36.4250 121.0000 11.0000 + 36.4500 101.0000 10.0499 + 36.4750 109.0000 10.4403 + 36.5000 112.0000 10.5830 + 36.5250 104.0000 10.1980 + 36.5500 103.0000 10.1489 + 36.5750 105.0000 10.2470 + 36.6000 112.0000 10.5830 + 36.6250 119.0000 10.9087 + 36.6500 116.0000 10.7703 + 36.6750 119.0000 10.9087 + 36.7000 115.0000 10.7238 + 36.7250 106.0000 10.2956 + 36.7500 122.0000 11.0454 + 36.7750 116.0000 10.7703 + 36.8000 120.0000 10.9545 + 36.8250 130.0000 11.4018 + 36.8500 107.0000 10.3441 + 36.8750 137.0000 11.7047 + 36.9000 132.0000 11.4891 + 36.9250 131.0000 11.4455 + 36.9500 140.0000 11.8322 + 36.9750 150.0000 12.2474 + 37.0000 149.0000 12.2066 + 37.0250 161.0000 12.6886 + 37.0500 190.0000 13.7840 + 37.0750 210.0000 14.4914 + 37.1000 234.0000 15.2971 + 37.1250 297.0000 17.2337 + 37.1500 378.0000 19.4422 + 37.1750 583.0000 24.1454 + 37.2000 909.0000 30.1496 + 37.2250 1431.0000 37.8286 + 37.2500 2164.0000 46.5188 + 37.2750 2620.0000 51.1859 + 37.3000 2390.0000 48.8876 + 37.3250 1970.0000 44.3847 + 37.3500 1772.0000 42.0951 + 37.3750 1685.0000 41.0488 + 37.4000 1327.0000 36.4280 + 37.4250 891.0000 29.8496 + 37.4500 543.0000 23.3024 + 37.4750 352.0000 18.7617 + 37.5000 292.0000 17.0880 + 37.5250 230.0000 15.1658 + 37.5500 177.0000 13.3041 + 37.5750 182.0000 13.4907 + 37.6000 207.0000 14.3875 + 37.6250 158.0000 12.5698 + 37.6500 143.0000 11.9583 + 37.6750 129.0000 11.3578 + 37.7000 161.0000 12.6886 + 37.7250 133.0000 11.5326 + 37.7500 119.0000 10.9087 + 37.7750 120.0000 10.9545 + 37.8000 128.0000 11.3137 + 37.8250 118.0000 10.8628 + 37.8500 121.0000 11.0000 + 37.8750 132.0000 11.4891 + 37.9000 135.0000 11.6189 + 37.9250 134.0000 11.5758 + 37.9500 132.0000 11.4891 + 37.9750 135.0000 11.6189 + 38.0000 156.0000 12.4900 + 38.0250 182.0000 13.4907 + 38.0500 207.0000 14.3875 + 38.0750 266.0000 16.3095 + 38.1000 351.0000 18.7350 + 38.1250 368.0000 19.1833 + 38.1500 312.0000 17.6635 + 38.1750 269.0000 16.4012 + 38.2000 260.0000 16.1245 + 38.2250 249.0000 15.7797 + 38.2500 219.0000 14.7986 + 38.2750 174.0000 13.1909 + 38.3000 157.0000 12.5300 + 38.3250 146.0000 12.0830 + 38.3500 135.0000 11.6189 + 38.3750 137.0000 11.7047 + 38.4000 136.0000 11.6619 + 38.4250 103.0000 10.1489 + 38.4500 107.0000 10.3441 + 38.4750 99.0000 9.9499 + 38.5000 133.0000 11.5326 + 38.5250 129.0000 11.3578 + 38.5500 147.0000 12.1244 + 38.5750 130.0000 11.4018 + 38.6000 115.0000 10.7238 + 38.6250 123.0000 11.0905 + 38.6500 109.0000 10.4403 + 38.6750 106.0000 10.2956 + 38.7000 115.0000 10.7238 + 38.7250 136.0000 11.6619 + 38.7500 119.0000 10.9087 + 38.7750 126.0000 11.2250 + 38.8000 131.0000 11.4455 + 38.8250 135.0000 11.6189 + 38.8500 116.0000 10.7703 + 38.8750 112.0000 10.5830 + 38.9000 123.0000 11.0905 + 38.9250 116.0000 10.7703 + 38.9500 121.0000 11.0000 + 38.9750 136.0000 11.6619 + 39.0000 147.0000 12.1244 + 39.0250 130.0000 11.4018 + 39.0500 156.0000 12.4900 + 39.0750 138.0000 11.7473 + 39.1000 133.0000 11.5326 + 39.1250 144.0000 12.0000 + 39.1500 163.0000 12.7671 + 39.1750 171.0000 13.0767 + 39.2000 198.0000 14.0712 + 39.2250 191.0000 13.8203 + 39.2500 196.0000 14.0000 + 39.2750 226.0000 15.0333 + 39.3000 243.0000 15.5885 + 39.3250 294.0000 17.1464 + 39.3500 352.0000 18.7617 + 39.3750 472.0000 21.7256 + 39.4000 630.0000 25.0998 + 39.4250 984.0000 31.3688 + 39.4500 1383.0000 37.1887 + 39.4750 2157.0000 46.4435 + 39.5000 2946.0000 54.2771 + 39.5250 2947.0000 54.2863 + 39.5500 2469.0000 49.6890 + 39.5750 1988.0000 44.5870 + 39.6000 2056.0000 45.3431 + 39.6250 1767.0000 42.0357 + 39.6500 1317.0000 36.2905 + 39.6750 793.0000 28.1603 + 39.7000 524.0000 22.8910 + 39.7250 362.0000 19.0263 + 39.7500 282.0000 16.7929 + 39.7750 264.0000 16.2481 + 39.8000 227.0000 15.0665 + 39.8250 186.0000 13.6382 + 39.8500 194.0000 13.9284 + 39.8750 168.0000 12.9615 + 39.9000 177.0000 13.3041 + 39.9250 199.0000 14.1067 + 39.9500 174.0000 13.1909 + 39.9750 169.0000 13.0000 + 40.0000 183.0000 13.5277 + 40.0250 194.0000 13.9284 + 40.0500 204.0000 14.2829 + 40.0750 189.0000 13.7477 + 40.1000 213.0000 14.5945 + 40.1250 296.0000 17.2047 + 40.1500 350.0000 18.7083 + 40.1750 476.0000 21.8174 + 40.2000 746.0000 27.3130 + 40.2250 894.0000 29.8998 + 40.2500 816.0000 28.5657 + 40.2750 615.0000 24.7992 + 40.3000 549.0000 23.4307 + 40.3250 596.0000 24.4131 + 40.3500 524.0000 22.8910 + 40.3750 395.0000 19.8746 + 40.4000 306.0000 17.4929 + 40.4250 223.0000 14.9332 + 40.4500 164.0000 12.8062 + 40.4750 206.0000 14.3527 + 40.5000 198.0000 14.0712 + 40.5250 162.0000 12.7279 + 40.5500 173.0000 13.1529 + 40.5750 163.0000 12.7671 + 40.6000 144.0000 12.0000 + 40.6250 169.0000 13.0000 + 40.6500 160.0000 12.6491 + 40.6750 156.0000 12.4900 + 40.7000 143.0000 11.9583 + 40.7250 187.0000 13.6748 + 40.7500 146.0000 12.0830 + 40.7750 146.0000 12.0830 + 40.8000 157.0000 12.5300 + 40.8250 177.0000 13.3041 + 40.8500 173.0000 13.1529 + 40.8750 171.0000 13.0767 + 40.9000 197.0000 14.0357 + 40.9250 214.0000 14.6287 + 40.9500 254.0000 15.9374 + 40.9750 333.0000 18.2483 + 41.0000 505.0000 22.4722 + 41.0250 760.0000 27.5681 + 41.0500 1047.0000 32.3574 + 41.0750 1074.0000 32.7719 + 41.1000 910.0000 30.1662 + 41.1250 689.0000 26.2488 + 41.1500 698.0000 26.4197 + 41.1750 717.0000 26.7769 + 41.2000 570.0000 23.8747 + 41.2250 382.0000 19.5448 + 41.2500 273.0000 16.5227 + 41.2750 291.0000 17.0587 + 41.3000 231.0000 15.1987 + 41.3250 278.0000 16.6733 + 41.3500 239.0000 15.4596 + 41.3750 272.0000 16.4924 + 41.4000 257.0000 16.0312 + 41.4250 316.0000 17.7764 + 41.4500 315.0000 17.7482 + 41.4750 377.0000 19.4165 + 41.5000 419.0000 20.4695 + 41.5250 593.0000 24.3516 + 41.5500 709.0000 26.6271 + 41.5750 1116.0000 33.4066 + 41.6000 1749.0000 41.8210 + 41.6250 2604.0000 51.0294 + 41.6500 3739.0000 61.1474 + 41.6750 4133.0000 64.2884 + 41.7000 3642.0000 60.3490 + 41.7250 2835.0000 53.2447 + 41.7500 2622.0000 51.2055 + 41.7750 2580.0000 50.7937 + 41.8000 2147.0000 46.3357 + 41.8250 1381.0000 37.1618 + 41.8500 844.0000 29.0517 + 41.8750 578.0000 24.0416 + 41.9000 447.0000 21.1424 + 41.9250 351.0000 18.7350 + 41.9500 339.0000 18.4120 + 41.9750 309.0000 17.5784 + 42.0000 260.0000 16.1245 + 42.0250 268.0000 16.3707 + 42.0500 240.0000 15.4919 + 42.0750 250.0000 15.8114 + 42.1000 233.0000 15.2643 + 42.1250 275.0000 16.5831 + 42.1500 281.0000 16.7631 + 42.1750 285.0000 16.8819 + 42.2000 381.0000 19.5192 + 42.2250 450.0000 21.2132 + 42.2500 601.0000 24.5153 + 42.2750 801.0000 28.3019 + 42.3000 895.0000 29.9165 + 42.3250 881.0000 29.6816 + 42.3500 726.0000 26.9444 + 42.3750 644.0000 25.3772 + 42.4000 608.0000 24.6577 + 42.4250 589.0000 24.2693 + 42.4500 498.0000 22.3159 + 42.4750 386.0000 19.6469 + 42.5000 283.0000 16.8226 + 42.5250 277.0000 16.6433 + 42.5500 254.0000 15.9374 + 42.5750 276.0000 16.6132 + 42.6000 249.0000 15.7797 + 42.6250 224.0000 14.9666 + 42.6500 213.0000 14.5945 + 42.6750 196.0000 14.0000 + 42.7000 234.0000 15.2971 + 42.7250 186.0000 13.6382 + 42.7500 215.0000 14.6629 + 42.7750 191.0000 13.8203 + 42.8000 211.0000 14.5258 + 42.8250 189.0000 13.7477 + 42.8500 204.0000 14.2829 + 42.8750 193.0000 13.8924 + 42.9000 227.0000 15.0665 + 42.9250 221.0000 14.8661 + 42.9500 225.0000 15.0000 + 42.9750 199.0000 14.1067 + 43.0000 187.0000 13.6748 + 43.0250 193.0000 13.8924 + 43.0500 214.0000 14.6287 + 43.0750 235.0000 15.3297 + 43.1000 241.0000 15.5242 + 43.1250 232.0000 15.2315 + 43.1500 239.0000 15.4596 + 43.1750 254.0000 15.9374 + 43.2000 252.0000 15.8745 + 43.2250 264.0000 16.2481 + 43.2500 251.0000 15.8430 + 43.2750 260.0000 16.1245 + 43.3000 320.0000 17.8885 + 43.3250 375.0000 19.3649 + 43.3500 379.0000 19.4679 + 43.3750 442.0000 21.0238 + 43.4000 425.0000 20.6155 + 43.4250 492.0000 22.1811 + 43.4500 574.0000 23.9583 + 43.4750 693.0000 26.3249 + 43.5000 816.0000 28.5657 + 43.5250 1046.0000 32.3419 + 43.5500 1286.0000 35.8608 + 43.5750 1773.0000 42.1070 + 43.6000 2593.0000 50.9215 + 43.6250 4047.0000 63.6160 + 43.6500 6544.0000 80.8950 + 43.6750 9907.0000 99.5339 + 43.7000 12440.0000 111.5347 + 43.7250 12196.0000 110.4355 + 43.7500 9815.0000 99.0707 + 43.7750 8006.0000 89.4763 + 43.8000 7742.0000 87.9886 + 43.8250 7431.0000 86.2032 + 43.8500 5975.0000 77.2981 + 43.8750 3773.0000 61.4248 + 43.9000 2148.0000 46.3465 + 43.9250 1465.0000 38.2753 + 43.9500 1080.0000 32.8634 + 43.9750 849.0000 29.1376 + 44.0000 683.0000 26.1343 + 44.0250 579.0000 24.0624 + 44.0500 560.0000 23.6643 + 44.0750 480.0000 21.9089 + 44.1000 481.0000 21.9317 + 44.1250 470.0000 21.6795 + 44.1500 468.0000 21.6333 + 44.1750 450.0000 21.2132 + 44.2000 469.0000 21.6564 + 44.2250 498.0000 22.3159 + 44.2500 468.0000 21.6333 + 44.2750 528.0000 22.9783 + 44.3000 615.0000 24.7992 + 44.3250 632.0000 25.1396 + 44.3500 765.0000 27.6586 + 44.3750 985.0000 31.3847 + 44.4000 1263.0000 35.5387 + 44.4250 1833.0000 42.8135 + 44.4500 2821.0000 53.1131 + 44.4750 4290.0000 65.4981 + 44.5000 5647.0000 75.1465 + 44.5250 5682.0000 75.3790 + 44.5500 5372.0000 73.2939 + 44.5750 5802.0000 76.1709 + 44.6000 7664.0000 87.5443 + 44.6250 7744.0000 88.0000 + 44.6500 5866.0000 76.5898 + 44.6750 4103.0000 64.0547 + 44.7000 3552.0000 59.5987 + 44.7250 3442.0000 58.6686 + 44.7500 2855.0000 53.4322 + 44.7750 1843.0000 42.9302 + 44.8000 1102.0000 33.1964 + 44.8250 771.0000 27.7669 + 44.8500 578.0000 24.0416 + 44.8750 517.0000 22.7376 + 44.9000 456.0000 21.3542 + 44.9250 381.0000 19.5192 + 44.9500 379.0000 19.4679 + 44.9750 335.0000 18.3030 + 45.0000 326.0000 18.0555 + 45.0250 303.0000 17.4069 + 45.0500 286.0000 16.9115 + 45.0750 287.0000 16.9411 + 45.1000 274.0000 16.5529 + 45.1250 272.0000 16.4924 + 45.1500 282.0000 16.7929 + 45.1750 267.0000 16.3401 + 45.2000 236.0000 15.3623 + 45.2250 255.0000 15.9687 + 45.2500 238.0000 15.4272 + 45.2750 218.0000 14.7648 + 45.3000 224.0000 14.9666 + 45.3250 209.0000 14.4568 + 45.3500 228.0000 15.0997 + 45.3750 244.0000 15.6205 + 45.4000 234.0000 15.2971 + 45.4250 221.0000 14.8661 + 45.4500 237.0000 15.3948 + 45.4750 224.0000 14.9666 + 45.5000 217.0000 14.7309 + 45.5250 187.0000 13.6748 + 45.5500 261.0000 16.1555 + 45.5750 216.0000 14.6969 + 45.6000 246.0000 15.6844 + 45.6250 244.0000 15.6205 + 45.6500 282.0000 16.7929 + 45.6750 276.0000 16.6132 + 45.7000 314.0000 17.7200 + 45.7250 333.0000 18.2483 + 45.7500 385.0000 19.6214 + 45.7750 413.0000 20.3224 + 45.8000 609.0000 24.6779 + 45.8250 855.0000 29.2404 + 45.8500 1397.0000 37.3765 + 45.8750 2190.0000 46.7974 + 45.9000 3180.0000 56.3915 + 45.9250 3151.0000 56.1338 + 45.9500 2427.0000 49.2646 + 45.9750 1819.0000 42.6497 + 46.0000 1843.0000 42.9302 + 46.0250 2058.0000 45.3652 + 46.0500 1720.0000 41.4729 + 46.0750 1115.0000 33.3916 + 46.1000 716.0000 26.7582 + 46.1250 480.0000 21.9089 + 46.1500 364.0000 19.0788 + 46.1750 297.0000 17.2337 + 46.2000 300.0000 17.3205 + 46.2250 267.0000 16.3401 + 46.2500 227.0000 15.0665 + 46.2750 215.0000 14.6629 + 46.3000 189.0000 13.7477 + 46.3250 213.0000 14.5945 + 46.3500 174.0000 13.1909 + 46.3750 175.0000 13.2288 + 46.4000 193.0000 13.8924 + 46.4250 183.0000 13.5277 + 46.4500 178.0000 13.3417 + 46.4750 166.0000 12.8841 + 46.5000 171.0000 13.0767 + 46.5250 171.0000 13.0767 + 46.5500 172.0000 13.1149 + 46.5750 161.0000 12.6886 + 46.6000 151.0000 12.2882 + 46.6250 143.0000 11.9583 + 46.6500 141.0000 11.8743 + 46.6750 139.0000 11.7898 + 46.7000 172.0000 13.1149 + 46.7250 153.0000 12.3693 + 46.7500 169.0000 13.0000 + 46.7750 141.0000 11.8743 + 46.8000 125.0000 11.1803 + 46.8250 135.0000 11.6189 + 46.8500 142.0000 11.9164 + 46.8750 134.0000 11.5758 + 46.9000 142.0000 11.9164 + 46.9250 138.0000 11.7473 + 46.9500 152.0000 12.3288 + 46.9750 159.0000 12.6095 + 47.0000 140.0000 11.8322 + 47.0250 143.0000 11.9583 + 47.0500 136.0000 11.6619 + 47.0750 147.0000 12.1244 + 47.1000 144.0000 12.0000 + 47.1250 148.0000 12.1655 + 47.1500 153.0000 12.3693 + 47.1750 112.0000 10.5830 + 47.2000 148.0000 12.1655 + 47.2250 138.0000 11.7473 + 47.2500 119.0000 10.9087 + 47.2750 121.0000 11.0000 + 47.3000 160.0000 12.6491 + 47.3250 136.0000 11.6619 + 47.3500 164.0000 12.8062 + 47.3750 137.0000 11.7047 + 47.4000 166.0000 12.8841 + 47.4250 142.0000 11.9164 + 47.4500 158.0000 12.5698 + 47.4750 176.0000 13.2665 + 47.5000 175.0000 13.2288 + 47.5250 183.0000 13.5277 + 47.5500 249.0000 15.7797 + 47.5750 309.0000 17.5784 + 47.6000 389.0000 19.7231 + 47.6250 541.0000 23.2594 + 47.6500 720.0000 26.8328 + 47.6750 682.0000 26.1151 + 47.7000 600.0000 24.4949 + 47.7250 452.0000 21.2603 + 47.7500 443.0000 21.0476 + 47.7750 453.0000 21.2838 + 47.8000 437.0000 20.9045 + 47.8250 329.0000 18.1384 + 47.8500 289.0000 17.0000 + 47.8750 226.0000 15.0333 + 47.9000 201.0000 14.1774 + 47.9250 182.0000 13.4907 + 47.9500 160.0000 12.6491 + 47.9750 178.0000 13.3417 + 48.0000 146.0000 12.0830 + 48.0250 181.0000 13.4536 + 48.0500 142.0000 11.9164 + 48.0750 201.0000 14.1774 + 48.1000 182.0000 13.4907 + 48.1250 174.0000 13.1909 + 48.1500 168.0000 12.9615 + 48.1750 174.0000 13.1909 + 48.2000 233.0000 15.2643 + 48.2250 275.0000 16.5831 + 48.2500 331.0000 18.1934 + 48.2750 464.0000 21.5407 + 48.3000 712.0000 26.6833 + 48.3250 969.0000 31.1288 + 48.3500 1093.0000 33.0606 + 48.3750 984.0000 31.3688 + 48.4000 752.0000 27.4226 + 48.4250 624.0000 24.9800 + 48.4500 651.0000 25.5147 + 48.4750 695.0000 26.3629 + 48.5000 597.0000 24.4336 + 48.5250 460.0000 21.4476 + 48.5500 284.0000 16.8523 + 48.5750 261.0000 16.1555 + 48.6000 211.0000 14.5258 + 48.6250 196.0000 14.0000 + 48.6500 175.0000 13.2288 + 48.6750 167.0000 12.9228 + 48.7000 165.0000 12.8452 + 48.7250 143.0000 11.9583 + 48.7500 153.0000 12.3693 + 48.7750 155.0000 12.4499 + 48.8000 137.0000 11.7047 + 48.8250 161.0000 12.6886 + 48.8500 131.0000 11.4455 + 48.8750 138.0000 11.7473 + 48.9000 125.0000 11.1803 + 48.9250 114.0000 10.6771 + 48.9500 154.0000 12.4097 + 48.9750 114.0000 10.6771 + 49.0000 118.0000 10.8628 + 49.0250 120.0000 10.9545 + 49.0500 130.0000 11.4018 + 49.0750 117.0000 10.8167 + 49.1000 126.0000 11.2250 + 49.1250 132.0000 11.4891 + 49.1500 122.0000 11.0454 + 49.1750 133.0000 11.5326 + 49.2000 122.0000 11.0454 + 49.2250 113.0000 10.6301 + 49.2500 128.0000 11.3137 + 49.2750 139.0000 11.7898 + 49.3000 126.0000 11.2250 + 49.3250 140.0000 11.8322 + 49.3500 120.0000 10.9545 + 49.3750 122.0000 11.0454 + 49.4000 122.0000 11.0454 + 49.4250 136.0000 11.6619 + 49.4500 116.0000 10.7703 + 49.4750 113.0000 10.6301 + 49.5000 103.0000 10.1489 + 49.5250 120.0000 10.9545 + 49.5500 129.0000 11.3578 + 49.5750 112.0000 10.5830 + 49.6000 118.0000 10.8628 + 49.6250 140.0000 11.8322 + 49.6500 135.0000 11.6189 + 49.6750 101.0000 10.0499 + 49.7000 128.0000 11.3137 + 49.7250 115.0000 10.7238 + 49.7500 126.0000 11.2250 + 49.7750 120.0000 10.9545 + 49.8000 119.0000 10.9087 + 49.8250 107.0000 10.3441 + 49.8500 122.0000 11.0454 + 49.8750 124.0000 11.1355 + 49.9000 123.0000 11.0905 + 49.9250 159.0000 12.6095 + 49.9500 132.0000 11.4891 + 49.9750 136.0000 11.6619 + 50.0000 115.0000 10.7238 + 50.0250 142.0000 11.9164 + 50.0500 132.0000 11.4891 + 50.0750 144.0000 12.0000 + 50.1000 140.0000 11.8322 + 50.1250 131.0000 11.4455 + 50.1500 112.0000 10.5830 + 50.1750 147.0000 12.1244 + 50.2000 129.0000 11.3578 + 50.2250 129.0000 11.3578 + 50.2500 106.0000 10.2956 + 50.2750 129.0000 11.3578 + 50.3000 127.0000 11.2694 + 50.3250 122.0000 11.0454 + 50.3500 155.0000 12.4499 + 50.3750 130.0000 11.4018 + 50.4000 121.0000 11.0000 + 50.4250 131.0000 11.4455 + 50.4500 173.0000 13.1529 + 50.4750 157.0000 12.5300 + 50.5000 146.0000 12.0830 + 50.5250 153.0000 12.3693 + 50.5500 168.0000 12.9615 + 50.5750 199.0000 14.1067 + 50.6000 204.0000 14.2829 + 50.6250 212.0000 14.5602 + 50.6500 232.0000 15.2315 + 50.6750 255.0000 15.9687 + 50.7000 319.0000 17.8606 + 50.7250 410.0000 20.2485 + 50.7500 629.0000 25.0799 + 50.7750 1090.0000 33.0151 + 50.8000 1814.0000 42.5911 + 50.8250 2668.0000 51.6527 + 50.8500 2463.0000 49.6286 + 50.8750 1752.0000 41.8569 + 50.9000 1187.0000 34.4529 + 50.9250 1257.0000 35.4542 + 50.9500 1542.0000 39.2683 + 50.9750 1549.0000 39.3573 + 51.0000 1066.0000 32.6497 + 51.0250 624.0000 24.9800 + 51.0500 387.0000 19.6723 + 51.0750 314.0000 17.7200 + 51.1000 267.0000 16.3401 + 51.1250 208.0000 14.4222 + 51.1500 211.0000 14.5258 + 51.1750 210.0000 14.4914 + 51.2000 181.0000 13.4536 + 51.2250 170.0000 13.0384 + 51.2500 154.0000 12.4097 + 51.2750 155.0000 12.4499 + 51.3000 143.0000 11.9583 + 51.3250 171.0000 13.0767 + 51.3500 156.0000 12.4900 + 51.3750 134.0000 11.5758 + 51.4000 142.0000 11.9164 + 51.4250 142.0000 11.9164 + 51.4500 136.0000 11.6619 + 51.4750 139.0000 11.7898 + 51.5000 139.0000 11.7898 + 51.5250 132.0000 11.4891 + 51.5500 152.0000 12.3288 + 51.5750 123.0000 11.0905 + 51.6000 137.0000 11.7047 + 51.6250 125.0000 11.1803 + 51.6500 132.0000 11.4891 + 51.6750 133.0000 11.5326 + 51.7000 137.0000 11.7047 + 51.7250 148.0000 12.1655 + 51.7500 121.0000 11.0000 + 51.7750 150.0000 12.2474 + 51.8000 139.0000 11.7898 + 51.8250 127.0000 11.2694 + 51.8500 127.0000 11.2694 + 51.8750 146.0000 12.0830 + 51.9000 147.0000 12.1244 + 51.9250 155.0000 12.4499 + 51.9500 131.0000 11.4455 + 51.9750 144.0000 12.0000 + 52.0000 148.0000 12.1655 + 52.0250 138.0000 11.7473 + 52.0500 149.0000 12.2066 + 52.0750 154.0000 12.4097 + 52.1000 142.0000 11.9164 + 52.1250 141.0000 11.8743 + 52.1500 181.0000 13.4536 + 52.1750 185.0000 13.6015 + 52.2000 169.0000 13.0000 + 52.2250 181.0000 13.4536 + 52.2500 203.0000 14.2478 + 52.2750 236.0000 15.3623 + 52.3000 232.0000 15.2315 + 52.3250 335.0000 18.3030 + 52.3500 428.0000 20.6882 + 52.3750 600.0000 24.4949 + 52.4000 826.0000 28.7402 + 52.4250 1143.0000 33.8083 + 52.4500 1282.0000 35.8050 + 52.4750 1262.0000 35.5246 + 52.5000 1070.0000 32.7109 + 52.5250 962.0000 31.0161 + 52.5500 964.0000 31.0483 + 52.5750 871.0000 29.5127 + 52.6000 886.0000 29.7658 + 52.6250 728.0000 26.9815 + 52.6500 557.0000 23.6008 + 52.6750 468.0000 21.6333 + 52.7000 370.0000 19.2354 + 52.7250 267.0000 16.3401 + 52.7500 235.0000 15.3297 + 52.7750 203.0000 14.2478 + 52.8000 187.0000 13.6748 + 52.8250 181.0000 13.4536 + 52.8500 188.0000 13.7113 + 52.8750 189.0000 13.7477 + 52.9000 166.0000 12.8841 + 52.9250 167.0000 12.9228 + 52.9500 175.0000 13.2288 + 52.9750 191.0000 13.8203 + 53.0000 184.0000 13.5647 + 53.0250 181.0000 13.4536 + 53.0500 226.0000 15.0333 + 53.0750 228.0000 15.0997 + 53.1000 258.0000 16.0624 + 53.1250 216.0000 14.6969 + 53.1500 233.0000 15.2643 + 53.1750 250.0000 15.8114 + 53.2000 287.0000 16.9411 + 53.2250 332.0000 18.2209 + 53.2500 441.0000 21.0000 + 53.2750 506.0000 22.4944 + 53.3000 459.0000 21.4243 + 53.3250 447.0000 21.1424 + 53.3500 383.0000 19.5704 + 53.3750 372.0000 19.2873 + 53.4000 397.0000 19.9249 + 53.4250 408.0000 20.1990 + 53.4500 434.0000 20.8327 + 53.4750 419.0000 20.4695 + 53.5000 346.0000 18.6011 + 53.5250 392.0000 19.7990 + 53.5500 441.0000 21.0000 + 53.5750 622.0000 24.9399 + 53.6000 912.0000 30.1993 + 53.6250 1096.0000 33.1059 + 53.6500 1359.0000 36.8646 + 53.6750 1605.0000 40.0625 + 53.7000 1949.0000 44.1475 + 53.7250 1937.0000 44.0114 + 53.7500 1843.0000 42.9302 + 53.7750 2020.0000 44.9444 + 53.8000 1980.0000 44.4972 + 53.8250 1741.0000 41.7253 + 53.8500 1467.0000 38.3014 + 53.8750 1209.0000 34.7707 + 53.9000 1080.0000 32.8634 + 53.9250 998.0000 31.5911 + 53.9500 719.0000 26.8142 + 53.9750 548.0000 23.4094 + 54.0000 393.0000 19.8242 + 54.0250 314.0000 17.7200 + 54.0500 277.0000 16.6433 + 54.0750 248.0000 15.7480 + 54.1000 204.0000 14.2829 + 54.1250 179.0000 13.3791 + 54.1500 180.0000 13.4164 + 54.1750 168.0000 12.9615 + 54.2000 160.0000 12.6491 + 54.2250 170.0000 13.0384 + 54.2500 160.0000 12.6491 + 54.2750 184.0000 13.5647 + 54.3000 179.0000 13.3791 + 54.3250 164.0000 12.8062 + 54.3500 149.0000 12.2066 + 54.3750 156.0000 12.4900 + 54.4000 140.0000 11.8322 + 54.4250 161.0000 12.6886 + 54.4500 149.0000 12.2066 + 54.4750 134.0000 11.5758 + 54.5000 126.0000 11.2250 + 54.5250 143.0000 11.9583 + 54.5500 138.0000 11.7473 + 54.5750 142.0000 11.9164 + 54.6000 163.0000 12.7671 + 54.6250 131.0000 11.4455 + 54.6500 161.0000 12.6886 + 54.6750 131.0000 11.4455 + 54.7000 147.0000 12.1244 + 54.7250 150.0000 12.2474 + 54.7500 160.0000 12.6491 + 54.7750 128.0000 11.3137 + 54.8000 126.0000 11.2250 + 54.8250 128.0000 11.3137 + 54.8500 152.0000 12.3288 + 54.8750 134.0000 11.5758 + 54.9000 158.0000 12.5698 + 54.9250 135.0000 11.6189 + 54.9500 162.0000 12.7279 + 54.9750 157.0000 12.5300 + 55.0000 173.0000 13.1529 + 55.0250 156.0000 12.4900 + 55.0500 162.0000 12.7279 + 55.0750 158.0000 12.5698 + 55.1000 164.0000 12.8062 + 55.1250 155.0000 12.4499 + 55.1500 194.0000 13.9284 + 55.1750 195.0000 13.9642 + 55.2000 196.0000 14.0000 + 55.2250 253.0000 15.9060 + 55.2500 262.0000 16.1864 + 55.2750 350.0000 18.7083 + 55.3000 464.0000 21.5407 + 55.3250 665.0000 25.7876 + 55.3500 937.0000 30.6105 + 55.3750 1141.0000 33.7787 + 55.4000 1055.0000 32.4808 + 55.4250 834.0000 28.8791 + 55.4500 657.0000 25.6320 + 55.4750 648.0000 25.4558 + 55.5000 638.0000 25.2587 + 55.5250 752.0000 27.4226 + 55.5500 672.0000 25.9230 + 55.5750 543.0000 23.3024 + 55.6000 404.0000 20.0998 + 55.6250 370.0000 19.2354 + 55.6500 386.0000 19.6469 + 55.6750 469.0000 21.6564 + 55.7000 560.0000 23.6643 + 55.7250 465.0000 21.5639 + 55.7500 360.0000 18.9737 + 55.7750 285.0000 16.8819 + 55.8000 276.0000 16.6132 + 55.8250 355.0000 18.8414 + 55.8500 364.0000 19.0788 + 55.8750 291.0000 17.0587 + 55.9000 228.0000 15.0997 + 55.9250 190.0000 13.7840 + 55.9500 194.0000 13.9284 + 55.9750 195.0000 13.9642 + 56.0000 180.0000 13.4164 + 56.0250 163.0000 12.7671 + 56.0500 154.0000 12.4097 + 56.0750 156.0000 12.4900 + 56.1000 184.0000 13.5647 + 56.1250 181.0000 13.4536 + 56.1500 152.0000 12.3288 + 56.1750 176.0000 13.2665 + 56.2000 177.0000 13.3041 + 56.2250 160.0000 12.6491 + 56.2500 178.0000 13.3417 + 56.2750 185.0000 13.6015 + 56.3000 175.0000 13.2288 + 56.3250 206.0000 14.3527 + 56.3500 214.0000 14.6287 + 56.3750 244.0000 15.6205 + 56.4000 255.0000 15.9687 + 56.4250 254.0000 15.9374 + 56.4500 373.0000 19.3132 + 56.4750 514.0000 22.6716 + 56.5000 623.0000 24.9600 + 56.5250 827.0000 28.7576 + 56.5500 875.0000 29.5804 + 56.5750 884.0000 29.7321 + 56.6000 951.0000 30.8383 + 56.6250 1181.0000 34.3657 + 56.6500 1887.0000 43.4396 + 56.6750 2582.0000 50.8134 + 56.7000 2875.0000 53.6190 + 56.7250 2303.0000 47.9896 + 56.7500 1613.0000 40.1622 + 56.7750 1270.0000 35.6371 + 56.8000 1312.0000 36.2215 + 56.8250 1510.0000 38.8587 + 56.8500 1599.0000 39.9875 + 56.8750 1288.0000 35.8887 + 56.9000 890.0000 29.8329 + 56.9250 794.0000 28.1780 + 56.9500 643.0000 25.3574 + 56.9750 683.0000 26.1343 + 57.0000 884.0000 29.7321 + 57.0250 1207.0000 34.7419 + 57.0500 1571.0000 39.6358 + 57.0750 1762.0000 41.9762 + 57.1000 1506.0000 38.8072 + 57.1250 1186.0000 34.4384 + 57.1500 969.0000 31.1288 + 57.1750 975.0000 31.2250 + 57.2000 1015.0000 31.8591 + 57.2250 1048.0000 32.3728 + 57.2500 938.0000 30.6268 + 57.2750 733.0000 27.0740 + 57.3000 494.0000 22.2261 + 57.3250 392.0000 19.7990 + 57.3500 292.0000 17.0880 + 57.3750 276.0000 16.6132 + 57.4000 254.0000 15.9374 + 57.4250 229.0000 15.1327 + 57.4500 216.0000 14.6969 + 57.4750 203.0000 14.2478 + 57.5000 194.0000 13.9284 + 57.5250 189.0000 13.7477 + 57.5500 192.0000 13.8564 + 57.5750 181.0000 13.4536 + 57.6000 191.0000 13.8203 + 57.6250 163.0000 12.7671 + 57.6500 175.0000 13.2288 + 57.6750 186.0000 13.6382 + 57.7000 149.0000 12.2066 + 57.7250 175.0000 13.2288 + 57.7500 142.0000 11.9164 + 57.7750 180.0000 13.4164 + 57.8000 136.0000 11.6619 + 57.8250 151.0000 12.2882 + 57.8500 177.0000 13.3041 + 57.8750 156.0000 12.4900 + 57.9000 159.0000 12.6095 + 57.9250 174.0000 13.1909 + 57.9500 148.0000 12.1655 + 57.9750 147.0000 12.1244 + 58.0000 141.0000 11.8743 + 58.0250 145.0000 12.0416 + 58.0500 156.0000 12.4900 + 58.0750 144.0000 12.0000 + 58.1000 149.0000 12.2066 + 58.1250 145.0000 12.0416 + 58.1500 127.0000 11.2694 + 58.1750 143.0000 11.9583 + 58.2000 159.0000 12.6095 + 58.2250 129.0000 11.3578 + 58.2500 161.0000 12.6886 + 58.2750 138.0000 11.7473 + 58.3000 145.0000 12.0416 + 58.3250 165.0000 12.8452 + 58.3500 172.0000 13.1149 + 58.3750 184.0000 13.5647 + 58.4000 217.0000 14.7309 + 58.4250 266.0000 16.3095 + 58.4500 272.0000 16.4924 + 58.4750 313.0000 17.6918 + 58.5000 288.0000 16.9706 + 58.5250 275.0000 16.5831 + 58.5500 321.0000 17.9165 + 58.5750 323.0000 17.9722 + 58.6000 439.0000 20.9523 + 58.6250 573.0000 23.9374 + 58.6500 743.0000 27.2580 + 58.6750 906.0000 30.0998 + 58.7000 960.0000 30.9839 + 58.7250 812.0000 28.4956 + 58.7500 566.0000 23.7908 + 58.7750 541.0000 23.2594 + 58.8000 535.0000 23.1301 + 58.8250 554.0000 23.5372 + 58.8500 567.0000 23.8118 + 58.8750 599.0000 24.4745 + 58.9000 473.0000 21.7486 + 58.9250 359.0000 18.9473 + 58.9500 290.0000 17.0294 + 58.9750 254.0000 15.9374 + 59.0000 189.0000 13.7477 + 59.0250 184.0000 13.5647 + 59.0500 196.0000 14.0000 + 59.0750 210.0000 14.4914 + 59.1000 190.0000 13.7840 + 59.1250 179.0000 13.3791 + 59.1500 148.0000 12.1655 + 59.1750 160.0000 12.6491 + 59.2000 147.0000 12.1244 + 59.2250 122.0000 11.0454 + 59.2500 148.0000 12.1655 + 59.2750 141.0000 11.8743 + 59.3000 140.0000 11.8322 + 59.3250 142.0000 11.9164 + 59.3500 114.0000 10.6771 + 59.3750 150.0000 12.2474 + 59.4000 151.0000 12.2882 + 59.4250 132.0000 11.4891 + 59.4500 153.0000 12.3693 + 59.4750 140.0000 11.8322 + 59.5000 118.0000 10.8628 + 59.5250 128.0000 11.3137 + 59.5500 140.0000 11.8322 + 59.5750 136.0000 11.6619 + 59.6000 122.0000 11.0454 + 59.6250 130.0000 11.4018 + 59.6500 135.0000 11.6189 + 59.6750 133.0000 11.5326 + 59.7000 165.0000 12.8452 + 59.7250 160.0000 12.6491 + 59.7500 163.0000 12.7671 + 59.7750 166.0000 12.8841 + 59.8000 190.0000 13.7840 + 59.8250 264.0000 16.2481 + 59.8500 331.0000 18.1934 + 59.8750 334.0000 18.2757 + 59.9000 297.0000 17.2337 + 59.9250 215.0000 14.6629 + 59.9500 205.0000 14.3178 + 59.9750 212.0000 14.5602 + 60.0000 268.0000 16.3707 + 60.0250 226.0000 15.0333 + 60.0500 256.0000 16.0000 + 60.0750 199.0000 14.1067 + 60.1000 165.0000 12.8452 + 60.1250 148.0000 12.1655 + 60.1500 159.0000 12.6095 + 60.1750 132.0000 11.4891 + 60.2000 154.0000 12.4097 + 60.2250 139.0000 11.7898 + 60.2500 121.0000 11.0000 + 60.2750 144.0000 12.0000 + 60.3000 131.0000 11.4455 + 60.3250 136.0000 11.6619 + 60.3500 139.0000 11.7898 + 60.3750 120.0000 10.9545 + 60.4000 129.0000 11.3578 + 60.4250 130.0000 11.4018 + 60.4500 143.0000 11.9583 + 60.4750 127.0000 11.2694 + 60.5000 150.0000 12.2474 + 60.5250 156.0000 12.4900 + 60.5500 154.0000 12.4097 + 60.5750 153.0000 12.3693 + 60.6000 162.0000 12.7279 + 60.6250 208.0000 14.4222 + 60.6500 247.0000 15.7162 + 60.6750 207.0000 14.3875 + 60.7000 192.0000 13.8564 + 60.7250 179.0000 13.3791 + 60.7500 148.0000 12.1655 + 60.7750 154.0000 12.4097 + 60.8000 204.0000 14.2829 + 60.8250 186.0000 13.6382 + 60.8500 208.0000 14.4222 + 60.8750 175.0000 13.2288 + 60.9000 141.0000 11.8743 + 60.9250 111.0000 10.5357 + 60.9500 124.0000 11.1355 + 60.9750 132.0000 11.4891 + 61.0000 127.0000 11.2694 + 61.0250 125.0000 11.1803 + 61.0500 124.0000 11.1355 + 61.0750 147.0000 12.1244 + 61.1000 143.0000 11.9583 + 61.1250 135.0000 11.6189 + 61.1500 136.0000 11.6619 + 61.1750 143.0000 11.9583 + 61.2000 145.0000 12.0416 + 61.2250 143.0000 11.9583 + 61.2500 148.0000 12.1655 + 61.2750 151.0000 12.2882 + 61.3000 139.0000 11.7898 + 61.3250 142.0000 11.9164 + 61.3500 135.0000 11.6189 + 61.3750 161.0000 12.6886 + 61.4000 143.0000 11.9583 + 61.4250 139.0000 11.7898 + 61.4500 136.0000 11.6619 + 61.4750 158.0000 12.5698 + 61.5000 164.0000 12.8062 + 61.5250 167.0000 12.9228 + 61.5500 165.0000 12.8452 + 61.5750 181.0000 13.4536 + 61.6000 147.0000 12.1244 + 61.6250 160.0000 12.6491 + 61.6500 195.0000 13.9642 + 61.6750 209.0000 14.4568 + 61.7000 190.0000 13.7840 + 61.7250 226.0000 15.0333 + 61.7500 195.0000 13.9642 + 61.7750 241.0000 15.5242 + 61.8000 278.0000 16.6733 + 61.8250 302.0000 17.3781 + 61.8500 344.0000 18.5472 + 61.8750 427.0000 20.6640 + 61.9000 563.0000 23.7276 + 61.9250 789.0000 28.0891 + 61.9500 990.0000 31.4643 + 61.9750 1317.0000 36.2905 + 62.0000 1792.0000 42.3320 + 62.0250 2342.0000 48.3942 + 62.0500 2479.0000 49.7896 + 62.0750 2083.0000 45.6399 + 62.1000 1541.0000 39.2556 + 62.1250 1233.0000 35.1141 + 62.1500 1186.0000 34.4384 + 62.1750 1301.0000 36.0694 + 62.2000 1408.0000 37.5233 + 62.2250 1348.0000 36.7151 + 62.2500 1086.0000 32.9545 + 62.2750 761.0000 27.5862 + 62.3000 509.0000 22.5610 + 62.3250 405.0000 20.1246 + 62.3500 349.0000 18.6815 + 62.3750 309.0000 17.5784 + 62.4000 273.0000 16.5227 + 62.4250 269.0000 16.4012 + 62.4500 244.0000 15.6205 + 62.4750 252.0000 15.8745 + 62.5000 286.0000 16.9115 + 62.5250 309.0000 17.5784 + 62.5500 289.0000 17.0000 + 62.5750 316.0000 17.7764 + 62.6000 317.0000 17.8045 + 62.6250 259.0000 16.0935 + 62.6500 228.0000 15.0997 + 62.6750 223.0000 14.9332 + 62.7000 259.0000 16.0935 + 62.7250 237.0000 15.3948 + 62.7500 212.0000 14.5602 + 62.7750 212.0000 14.5602 + 62.8000 201.0000 14.1774 + 62.8250 184.0000 13.5647 + 62.8500 201.0000 14.1774 + 62.8750 170.0000 13.0384 + 62.9000 165.0000 12.8452 + 62.9250 182.0000 13.4907 + 62.9500 182.0000 13.4907 + 62.9750 183.0000 13.5277 + 63.0000 199.0000 14.1067 + 63.0250 200.0000 14.1421 + 63.0500 208.0000 14.4222 + 63.0750 190.0000 13.7840 + 63.1000 185.0000 13.6015 + 63.1250 230.0000 15.1658 + 63.1500 275.0000 16.5831 + 63.1750 352.0000 18.7617 + 63.2000 448.0000 21.1660 + 63.2250 647.0000 25.4362 + 63.2500 956.0000 30.9193 + 63.2750 1241.0000 35.2278 + 63.3000 1280.0000 35.7771 + 63.3250 1063.0000 32.6037 + 63.3500 730.0000 27.0185 + 63.3750 559.0000 23.6432 + 63.4000 576.0000 24.0000 + 63.4250 678.0000 26.0384 + 63.4500 833.0000 28.8617 + 63.4750 919.0000 30.3150 + 63.5000 838.0000 28.9482 + 63.5250 736.0000 27.1293 + 63.5500 578.0000 24.0416 + 63.5750 449.0000 21.1896 + 63.6000 352.0000 18.7617 + 63.6250 332.0000 18.2209 + 63.6500 306.0000 17.4929 + 63.6750 308.0000 17.5499 + 63.7000 321.0000 17.9165 + 63.7250 300.0000 17.3205 + 63.7500 245.0000 15.6525 + 63.7750 216.0000 14.6969 + 63.8000 201.0000 14.1774 + 63.8250 182.0000 13.4907 + 63.8500 162.0000 12.7279 + 63.8750 147.0000 12.1244 + 63.9000 163.0000 12.7671 + 63.9250 193.0000 13.8924 + 63.9500 149.0000 12.2066 + 63.9750 171.0000 13.0767 + 64.0000 166.0000 12.8841 + 64.0250 202.0000 14.2127 + 64.0500 155.0000 12.4499 + 64.0750 141.0000 11.8743 + 64.1000 162.0000 12.7279 + 64.1250 155.0000 12.4499 + 64.1500 166.0000 12.8841 + 64.1750 190.0000 13.7840 + 64.2000 174.0000 13.1909 + 64.2250 189.0000 13.7477 + 64.2500 211.0000 14.5258 + 64.2750 169.0000 13.0000 + 64.3000 195.0000 13.9642 + 64.3250 197.0000 14.0357 + 64.3500 235.0000 15.3297 + 64.3750 250.0000 15.8114 + 64.4000 286.0000 16.9115 + 64.4250 344.0000 18.5472 + 64.4500 394.0000 19.8494 + 64.4750 561.0000 23.6854 + 64.5000 722.0000 26.8701 + 64.5250 930.0000 30.4959 + 64.5500 1317.0000 36.2905 + 64.5750 1481.0000 38.4838 + 64.6000 1358.0000 36.8511 + 64.6250 1037.0000 32.2025 + 64.6500 813.0000 28.5132 + 64.6750 746.0000 27.3130 + 64.7000 717.0000 26.7769 + 64.7250 877.0000 29.6142 + 64.7500 916.0000 30.2655 + 64.7750 896.0000 29.9333 + 64.8000 663.0000 25.7488 + 64.8250 502.0000 22.4054 + 64.8500 396.0000 19.8997 + 64.8750 302.0000 17.3781 + 64.9000 255.0000 15.9687 + 64.9250 280.0000 16.7332 + 64.9500 238.0000 15.4272 + 64.9750 238.0000 15.4272 + 65.0000 233.0000 15.2643 + 65.0250 267.0000 16.3401 + 65.0500 258.0000 16.0624 + 65.0750 267.0000 16.3401 + 65.1000 346.0000 18.6011 + 65.1250 468.0000 21.6333 + 65.1500 667.0000 25.8263 + 65.1750 897.0000 29.9500 + 65.2000 976.0000 31.2410 + 65.2250 870.0000 29.4958 + 65.2500 617.0000 24.8395 + 65.2750 478.0000 21.8632 + 65.3000 483.0000 21.9773 + 65.3250 485.0000 22.0227 + 65.3500 541.0000 23.2594 + 65.3750 636.0000 25.2190 + 65.4000 625.0000 25.0000 + 65.4250 465.0000 21.5639 + 65.4500 354.0000 18.8149 + 65.4750 276.0000 16.6132 + 65.5000 231.0000 15.1987 + 65.5250 232.0000 15.2315 + 65.5500 190.0000 13.7840 + 65.5750 216.0000 14.6969 + 65.6000 192.0000 13.8564 + 65.6250 191.0000 13.8203 + 65.6500 172.0000 13.1149 + 65.6750 178.0000 13.3417 + 65.7000 212.0000 14.5602 + 65.7250 172.0000 13.1149 + 65.7500 174.0000 13.1909 + 65.7750 183.0000 13.5277 + 65.8000 142.0000 11.9164 + 65.8250 176.0000 13.2665 + 65.8500 174.0000 13.1909 + 65.8750 159.0000 12.6095 + 65.9000 196.0000 14.0000 + 65.9250 194.0000 13.9284 + 65.9500 202.0000 14.2127 + 65.9750 246.0000 15.6844 + 66.0000 258.0000 16.0624 + 66.0250 272.0000 16.4924 + 66.0500 227.0000 15.0665 + 66.0750 206.0000 14.3527 + 66.1000 220.0000 14.8324 + 66.1250 234.0000 15.2971 + 66.1500 235.0000 15.3297 + 66.1750 252.0000 15.8745 + 66.2000 241.0000 15.5242 + 66.2250 246.0000 15.6844 + 66.2500 280.0000 16.7332 + 66.2750 326.0000 18.0555 + 66.3000 391.0000 19.7737 + 66.3250 456.0000 21.3542 + 66.3500 640.0000 25.2982 + 66.3750 670.0000 25.8844 + 66.4000 639.0000 25.2785 + 66.4250 521.0000 22.8254 + 66.4500 515.0000 22.6936 + 66.4750 493.0000 22.2036 + 66.5000 632.0000 25.1396 + 66.5250 854.0000 29.2233 + 66.5500 1153.0000 33.9559 + 66.5750 1468.0000 38.3145 + 66.6000 1384.0000 37.2022 + 66.6250 1196.0000 34.5832 + 66.6500 879.0000 29.6479 + 66.6750 770.0000 27.7489 + 66.7000 660.0000 25.6905 + 66.7250 705.0000 26.5518 + 66.7500 773.0000 27.8029 + 66.7750 815.0000 28.5482 + 66.8000 766.0000 27.6767 + 66.8250 626.0000 25.0200 + 66.8500 469.0000 21.6564 + 66.8750 409.0000 20.2237 + 66.9000 338.0000 18.3848 + 66.9250 280.0000 16.7332 + 66.9500 267.0000 16.3401 + 66.9750 303.0000 17.4069 + 67.0000 290.0000 17.0294 + 67.0250 315.0000 17.7482 + 67.0500 308.0000 17.5499 + 67.0750 375.0000 19.3649 + 67.1000 471.0000 21.7025 + 67.1250 637.0000 25.2389 + 67.1500 830.0000 28.8097 + 67.1750 1073.0000 32.7567 + 67.2000 1024.0000 32.0000 + 67.2250 833.0000 28.8617 + 67.2500 639.0000 25.2785 + 67.2750 528.0000 22.9783 + 67.3000 502.0000 22.4054 + 67.3250 569.0000 23.8537 + 67.3500 667.0000 25.8263 + 67.3750 732.0000 27.0555 + 67.4000 600.0000 24.4949 + 67.4250 516.0000 22.7156 + 67.4500 444.0000 21.0713 + 67.4750 417.0000 20.4206 + 67.5000 430.0000 20.7364 + 67.5250 431.0000 20.7605 + 67.5500 409.0000 20.2237 + 67.5750 399.0000 19.9750 + 67.6000 319.0000 17.8606 + 67.6250 289.0000 17.0000 + 67.6500 333.0000 18.2483 + 67.6750 368.0000 19.1833 + 67.7000 368.0000 19.1833 + 67.7250 375.0000 19.3649 + 67.7500 332.0000 18.2209 + 67.7750 257.0000 16.0312 + 67.8000 253.0000 15.9060 + 67.8250 244.0000 15.6205 + 67.8500 250.0000 15.8114 + 67.8750 251.0000 15.8430 + 67.9000 239.0000 15.4596 + 67.9250 260.0000 16.1245 + 67.9500 202.0000 14.2127 + 67.9750 234.0000 15.2971 + 68.0000 236.0000 15.3623 + 68.0250 222.0000 14.8997 + 68.0500 268.0000 16.3707 + 68.0750 246.0000 15.6844 + 68.1000 261.0000 16.1555 + 68.1250 301.0000 17.3494 + 68.1500 352.0000 18.7617 + 68.1750 434.0000 20.8327 + 68.2000 507.0000 22.5167 + 68.2250 687.0000 26.2107 + 68.2500 891.0000 29.8496 + 68.2750 929.0000 30.4795 + 68.3000 869.0000 29.4788 + 68.3250 744.0000 27.2764 + 68.3500 766.0000 27.6767 + 68.3750 883.0000 29.7153 + 68.4000 1213.0000 34.8281 + 68.4250 1390.0000 37.2827 + 68.4500 1383.0000 37.1887 + 68.4750 1276.0000 35.7211 + 68.5000 1228.0000 35.0428 + 68.5250 1172.0000 34.2345 + 68.5500 1129.0000 33.6006 + 68.5750 970.0000 31.1448 + 68.6000 905.0000 30.0832 + 68.6250 839.0000 28.9655 + 68.6500 745.0000 27.2947 + 68.6750 632.0000 25.1396 + 68.7000 628.0000 25.0599 + 68.7250 600.0000 24.4949 + 68.7500 552.0000 23.4947 + 68.7750 393.0000 19.8242 + 68.8000 307.0000 17.5214 + 68.8250 265.0000 16.2788 + 68.8500 275.0000 16.5831 + 68.8750 215.0000 14.6629 + 68.9000 233.0000 15.2643 + 68.9250 208.0000 14.4222 + 68.9500 186.0000 13.6382 + 68.9750 180.0000 13.4164 + 69.0000 200.0000 14.1421 + 69.0250 182.0000 13.4907 + 69.0500 178.0000 13.3417 + 69.0750 170.0000 13.0384 + 69.1000 180.0000 13.4164 + 69.1250 177.0000 13.3041 + 69.1500 190.0000 13.7840 + 69.1750 173.0000 13.1529 + 69.2000 203.0000 14.2478 + 69.2250 200.0000 14.1421 + 69.2500 185.0000 13.6015 + 69.2750 218.0000 14.7648 + 69.3000 207.0000 14.3875 + 69.3250 244.0000 15.6205 + 69.3500 220.0000 14.8324 + 69.3750 243.0000 15.5885 + 69.4000 266.0000 16.3095 + 69.4250 280.0000 16.7332 + 69.4500 324.0000 18.0000 + 69.4750 394.0000 19.8494 + 69.5000 567.0000 23.8118 + 69.5250 690.0000 26.2679 + 69.5500 853.0000 29.2062 + 69.5750 934.0000 30.5614 + 69.6000 815.0000 28.5482 + 69.6250 877.0000 29.6142 + 69.6500 894.0000 29.8998 + 69.6750 888.0000 29.7993 + 69.7000 744.0000 27.2764 + 69.7250 665.0000 25.7876 + 69.7500 674.0000 25.9615 + 69.7750 693.0000 26.3249 + 69.8000 634.0000 25.1794 + 69.8250 583.0000 24.1454 + 69.8500 589.0000 24.2693 + 69.8750 572.0000 23.9165 + 69.9000 455.0000 21.3307 + 69.9250 501.0000 22.3830 + 69.9500 497.0000 22.2935 + 69.9750 637.0000 25.2389 + 70.0000 833.0000 28.8617 + 70.0250 1120.0000 33.4664 + 70.0500 968.0000 31.1127 + 70.0750 776.0000 27.8568 + 70.1000 526.0000 22.9347 + 70.1250 397.0000 19.9249 + 70.1500 372.0000 19.2873 + 70.1750 472.0000 21.7256 + 70.2000 548.0000 23.4094 + 70.2250 682.0000 26.1151 + 70.2500 632.0000 25.1396 + 70.2750 479.0000 21.8861 + 70.3000 341.0000 18.4662 + 70.3250 304.0000 17.4356 + 70.3500 211.0000 14.5258 + 70.3750 213.0000 14.5945 + 70.4000 199.0000 14.1067 + 70.4250 185.0000 13.6015 + 70.4500 190.0000 13.7840 + 70.4750 194.0000 13.9284 + 70.5000 183.0000 13.5277 + 70.5250 193.0000 13.8924 + 70.5500 204.0000 14.2829 + 70.5750 201.0000 14.1774 + 70.6000 264.0000 16.2481 + 70.6250 298.0000 17.2627 + 70.6500 373.0000 19.3132 + 70.6750 364.0000 19.0788 + 70.7000 306.0000 17.4929 + 70.7250 270.0000 16.4317 + 70.7500 271.0000 16.4621 + 70.7750 259.0000 16.0935 + 70.8000 298.0000 17.2627 + 70.8250 371.0000 19.2614 + 70.8500 433.0000 20.8087 + 70.8750 565.0000 23.7697 + 70.9000 625.0000 25.0000 + 70.9250 581.0000 24.1039 + 70.9500 460.0000 21.4476 + 70.9750 365.0000 19.1050 + 71.0000 291.0000 17.0587 + 71.0250 270.0000 16.4317 + 71.0500 311.0000 17.6352 + 71.0750 317.0000 17.8045 + 71.1000 411.0000 20.2731 + 71.1250 435.0000 20.8567 + 71.1500 426.0000 20.6398 + 71.1750 481.0000 21.9317 + 71.2000 415.0000 20.3715 + 71.2250 358.0000 18.9209 + 71.2500 268.0000 16.3707 + 71.2750 245.0000 15.6525 + 71.3000 239.0000 15.4596 + 71.3250 204.0000 14.2829 + 71.3500 246.0000 15.6844 + 71.3750 236.0000 15.3623 + 71.4000 272.0000 16.4924 + 71.4250 241.0000 15.5242 + 71.4500 203.0000 14.2478 + 71.4750 182.0000 13.4907 + 71.5000 189.0000 13.7477 + 71.5250 163.0000 12.7671 + 71.5500 165.0000 12.8452 + 71.5750 161.0000 12.6886 + 71.6000 145.0000 12.0416 + 71.6250 149.0000 12.2066 + 71.6500 163.0000 12.7671 + 71.6750 166.0000 12.8841 + 71.7000 138.0000 11.7473 + 71.7250 141.0000 11.8743 + 71.7500 158.0000 12.5698 + 71.7750 145.0000 12.0416 + 71.8000 131.0000 11.4455 + 71.8250 135.0000 11.6189 + 71.8500 147.0000 12.1244 + 71.8750 133.0000 11.5326 + 71.9000 140.0000 11.8322 + 71.9250 144.0000 12.0000 + 71.9500 155.0000 12.4499 + 71.9750 157.0000 12.5300 + 72.0000 196.0000 14.0000 + 72.0250 193.0000 13.8924 + 72.0500 175.0000 13.2288 + 72.0750 172.0000 13.1149 + 72.1000 174.0000 13.1909 + 72.1250 148.0000 12.1655 + 72.1500 164.0000 12.8062 + 72.1750 177.0000 13.3041 + 72.2000 183.0000 13.5277 + 72.2250 250.0000 15.8114 + 72.2500 310.0000 17.6068 + 72.2750 439.0000 20.9523 + 72.3000 401.0000 20.0250 + 72.3250 356.0000 18.8680 + 72.3500 276.0000 16.6132 + 72.3750 178.0000 13.3417 + 72.4000 216.0000 14.6969 + 72.4250 209.0000 14.4568 + 72.4500 222.0000 14.8997 + 72.4750 263.0000 16.2173 + 72.5000 281.0000 16.7631 + 72.5250 270.0000 16.4317 + 72.5500 217.0000 14.7309 + 72.5750 181.0000 13.4536 + 72.6000 183.0000 13.5277 + 72.6250 174.0000 13.1909 + 72.6500 171.0000 13.0767 + 72.6750 151.0000 12.2882 + 72.7000 142.0000 11.9164 + 72.7250 130.0000 11.4018 + 72.7500 147.0000 12.1244 + 72.7750 146.0000 12.0830 + 72.8000 148.0000 12.1655 + 72.8250 124.0000 11.1355 + 72.8500 129.0000 11.3578 + 72.8750 128.0000 11.3137 + 72.9000 135.0000 11.6189 + 72.9250 143.0000 11.9583 + 72.9500 135.0000 11.6189 + 72.9750 145.0000 12.0416 + 73.0000 134.0000 11.5758 + 73.0250 131.0000 11.4455 + 73.0500 154.0000 12.4097 + 73.0750 135.0000 11.6189 + 73.1000 139.0000 11.7898 + 73.1250 155.0000 12.4499 + 73.1500 143.0000 11.9583 + 73.1750 151.0000 12.2882 + 73.2000 154.0000 12.4097 + 73.2250 160.0000 12.6491 + 73.2500 141.0000 11.8743 + 73.2750 160.0000 12.6491 + 73.3000 155.0000 12.4499 + 73.3250 171.0000 13.0767 + 73.3500 166.0000 12.8841 + 73.3750 159.0000 12.6095 + 73.4000 187.0000 13.6748 + 73.4250 205.0000 14.3178 + 73.4500 212.0000 14.5602 + 73.4750 230.0000 15.1658 + 73.5000 313.0000 17.6918 + 73.5250 346.0000 18.6011 + 73.5500 402.0000 20.0499 + 73.5750 511.0000 22.6053 + 73.6000 535.0000 23.1301 + 73.6250 696.0000 26.3818 + 73.6500 717.0000 26.7769 + 73.6750 624.0000 24.9800 + 73.7000 520.0000 22.8035 + 73.7250 421.0000 20.5183 + 73.7500 399.0000 19.9750 + 73.7750 344.0000 18.5472 + 73.8000 380.0000 19.4936 + 73.8250 468.0000 21.6333 + 73.8500 482.0000 21.9545 + 73.8750 453.0000 21.2838 + 73.9000 373.0000 19.3132 + 73.9250 267.0000 16.3401 + 73.9500 229.0000 15.1327 + 73.9750 209.0000 14.4568 + 74.0000 176.0000 13.2665 + 74.0250 193.0000 13.8924 + 74.0500 210.0000 14.4914 + 74.0750 179.0000 13.3791 + 74.1000 173.0000 13.1529 + 74.1250 207.0000 14.3875 + 74.1500 225.0000 15.0000 + 74.1750 265.0000 16.2788 + 74.2000 315.0000 17.7482 + 74.2250 289.0000 17.0000 + 74.2500 229.0000 15.1327 + 74.2750 197.0000 14.0357 + 74.3000 204.0000 14.2829 + 74.3250 221.0000 14.8661 + 74.3500 249.0000 15.7797 + 74.3750 258.0000 16.0624 + 74.4000 290.0000 17.0294 + 74.4250 401.0000 20.0250 + 74.4500 434.0000 20.8327 + 74.4750 421.0000 20.5183 + 74.5000 368.0000 19.1833 + 74.5250 358.0000 18.9209 + 74.5500 396.0000 19.8997 + 74.5750 462.0000 21.4942 + 74.6000 547.0000 23.3880 + 74.6250 580.0000 24.0832 + 74.6500 497.0000 22.2935 + 74.6750 442.0000 21.0238 + 74.7000 397.0000 19.9249 + 74.7250 313.0000 17.6918 + 74.7500 316.0000 17.7764 + 74.7750 296.0000 17.2047 + 74.8000 341.0000 18.4662 + 74.8250 355.0000 18.8414 + 74.8500 373.0000 19.3132 + 74.8750 333.0000 18.2483 + 74.9000 274.0000 16.5529 + 74.9250 262.0000 16.1864 + 74.9500 290.0000 17.0294 + 74.9750 329.0000 18.1384 + 75.0000 333.0000 18.2483 + 75.0250 356.0000 18.8680 + 75.0500 280.0000 16.7332 + 75.0750 237.0000 15.3948 + 75.1000 214.0000 14.6287 + 75.1250 238.0000 15.4272 + 75.1500 243.0000 15.5885 + 75.1750 204.0000 14.2829 + 75.2000 239.0000 15.4596 + 75.2250 255.0000 15.9687 + 75.2500 249.0000 15.7797 + 75.2750 226.0000 15.0333 + 75.3000 191.0000 13.8203 + 75.3250 222.0000 14.8997 + 75.3500 193.0000 13.8924 + 75.3750 236.0000 15.3623 + 75.4000 264.0000 16.2481 + 75.4250 308.0000 17.5499 + 75.4500 340.0000 18.4391 + 75.4750 330.0000 18.1659 + 75.5000 282.0000 16.7929 + 75.5250 229.0000 15.1327 + 75.5500 235.0000 15.3297 + 75.5750 204.0000 14.2829 + 75.6000 203.0000 14.2478 + 75.6250 252.0000 15.8745 + 75.6500 249.0000 15.7797 + 75.6750 232.0000 15.2315 + 75.7000 222.0000 14.8997 + 75.7250 217.0000 14.7309 + 75.7500 226.0000 15.0333 + 75.7750 222.0000 14.8997 + 75.8000 238.0000 15.4272 + 75.8250 265.0000 16.2788 + 75.8500 341.0000 18.4662 + 75.8750 339.0000 18.4120 + 75.9000 338.0000 18.3848 + 75.9250 302.0000 17.3781 + 75.9500 275.0000 16.5831 + 75.9750 242.0000 15.5563 + 76.0000 218.0000 14.7648 + 76.0250 232.0000 15.2315 + 76.0500 297.0000 17.2337 + 76.0750 360.0000 18.9737 + 76.1000 399.0000 19.9750 + 76.1250 423.0000 20.5670 + 76.1500 365.0000 19.1050 + 76.1750 273.0000 16.5227 + 76.2000 254.0000 15.9374 + 76.2250 262.0000 16.1864 + 76.2500 216.0000 14.6969 + 76.2750 316.0000 17.7764 + 76.3000 339.0000 18.4120 + 76.3250 402.0000 20.0499 + 76.3500 509.0000 22.5610 + 76.3750 598.0000 24.4540 + 76.4000 700.0000 26.4575 + 76.4250 742.0000 27.2397 + 76.4500 619.0000 24.8797 + 76.4750 470.0000 21.6795 + 76.5000 398.0000 19.9499 + 76.5250 379.0000 19.4679 + 76.5500 352.0000 18.7617 + 76.5750 351.0000 18.7350 + 76.6000 379.0000 19.4679 + 76.6250 443.0000 21.0476 + 76.6500 466.0000 21.5870 + 76.6750 438.0000 20.9284 + 76.7000 357.0000 18.8944 + 76.7250 289.0000 17.0000 + 76.7500 258.0000 16.0624 + 76.7750 233.0000 15.2643 + 76.8000 216.0000 14.6969 + 76.8250 241.0000 15.5242 + 76.8500 235.0000 15.3297 + 76.8750 277.0000 16.6433 + 76.9000 309.0000 17.5784 + 76.9250 358.0000 18.9209 + 76.9500 356.0000 18.8680 + 76.9750 323.0000 17.9722 + 77.0000 273.0000 16.5227 + 77.0250 243.0000 15.5885 + 77.0500 224.0000 14.9666 + 77.0750 243.0000 15.5885 + 77.1000 250.0000 15.8114 + 77.1250 220.0000 14.8324 + 77.1500 267.0000 16.3401 + 77.1750 291.0000 17.0587 + 77.2000 282.0000 16.7929 + 77.2250 252.0000 15.8745 + 77.2500 255.0000 15.9687 + 77.2750 328.0000 18.1108 + 77.3000 357.0000 18.8944 + 77.3250 411.0000 20.2731 + 77.3500 375.0000 19.3649 + 77.3750 323.0000 17.9722 + 77.4000 267.0000 16.3401 + 77.4250 240.0000 15.4919 + 77.4500 208.0000 14.4222 + 77.4750 209.0000 14.4568 + 77.5000 236.0000 15.3623 + 77.5250 248.0000 15.7480 + 77.5500 261.0000 16.1555 + 77.5750 256.0000 16.0000 + 77.6000 244.0000 15.6205 + 77.6250 203.0000 14.2478 + 77.6500 173.0000 13.1529 + 77.6750 170.0000 13.0384 + 77.7000 174.0000 13.1909 + 77.7250 168.0000 12.9615 + 77.7500 167.0000 12.9228 + 77.7750 181.0000 13.4536 + 77.8000 159.0000 12.6095 + 77.8250 195.0000 13.9642 + 77.8500 168.0000 12.9615 + 77.8750 180.0000 13.4164 + 77.9000 186.0000 13.6382 + 77.9250 175.0000 13.2288 + 77.9500 191.0000 13.8203 + 77.9750 213.0000 14.5945 + 78.0000 274.0000 16.5529 + 78.0250 266.0000 16.3095 + 78.0500 323.0000 17.9722 + 78.0750 421.0000 20.5183 + 78.1000 552.0000 23.4947 + 78.1250 799.0000 28.2666 + 78.1500 1129.0000 33.6006 + 78.1750 1277.0000 35.7351 + 78.2000 1123.0000 33.5112 + 78.2250 820.0000 28.6356 + 78.2500 610.0000 24.6982 + 78.2750 504.0000 22.4499 + 78.3000 408.0000 20.1990 + 78.3250 478.0000 21.8632 + 78.3500 543.0000 23.3024 + 78.3750 708.0000 26.6083 + 78.4000 817.0000 28.5832 + 78.4250 736.0000 27.1293 + 78.4500 641.0000 25.3180 + 78.4750 568.0000 23.8328 + 78.5000 413.0000 20.3224 + 78.5250 433.0000 20.8087 + 78.5500 373.0000 19.3132 + 78.5750 314.0000 17.7200 + 78.6000 321.0000 17.9165 + 78.6250 244.0000 15.6205 + 78.6500 262.0000 16.1864 + 78.6750 251.0000 15.8430 + 78.7000 232.0000 15.2315 + 78.7250 241.0000 15.5242 + 78.7500 216.0000 14.6969 + 78.7750 240.0000 15.4919 + 78.8000 212.0000 14.5602 + 78.8250 196.0000 14.0000 + 78.8500 173.0000 13.1529 + 78.8750 187.0000 13.6748 + 78.9000 175.0000 13.2288 + 78.9250 173.0000 13.1529 + 78.9500 152.0000 12.3288 + 78.9750 163.0000 12.7671 + 79.0000 143.0000 11.9583 + 79.0250 135.0000 11.6189 + 79.0500 122.0000 11.0454 + 79.0750 139.0000 11.7898 + 79.1000 128.0000 11.3137 + 79.1250 134.0000 11.5758 + 79.1500 140.0000 11.8322 + 79.1750 117.0000 10.8167 + 79.2000 150.0000 12.2474 + 79.2250 134.0000 11.5758 + 79.2500 152.0000 12.3288 + 79.2750 127.0000 11.2694 + 79.3000 170.0000 13.0384 + 79.3250 158.0000 12.5698 + 79.3500 155.0000 12.4499 + 79.3750 173.0000 13.1529 + 79.4000 161.0000 12.6886 + 79.4250 136.0000 11.6619 + 79.4500 128.0000 11.3137 + 79.4750 177.0000 13.3041 + 79.5000 165.0000 12.8452 + 79.5250 140.0000 11.8322 + 79.5500 154.0000 12.4097 + 79.5750 143.0000 11.9583 + 79.6000 168.0000 12.9615 + 79.6250 189.0000 13.7477 + 79.6500 130.0000 11.4018 + 79.6750 160.0000 12.6491 + 79.7000 151.0000 12.2882 + 79.7250 182.0000 13.4907 + 79.7500 221.0000 14.8661 + 79.7750 238.0000 15.4272 + 79.8000 260.0000 16.1245 + 79.8250 315.0000 17.7482 + 79.8500 327.0000 18.0831 + 79.8750 311.0000 17.6352 + 79.9000 246.0000 15.6844 + 79.9250 211.0000 14.5258 + 79.9500 204.0000 14.2829 + 79.9750 196.0000 14.0000 + 80.0000 211.0000 14.5258 + 80.0250 191.0000 13.8203 + 80.0500 234.0000 15.2971 + 80.0750 225.0000 15.0000 + 80.1000 255.0000 15.9687 + 80.1250 200.0000 14.1421 + 80.1500 186.0000 13.6382 + 80.1750 186.0000 13.6382 + 80.2000 162.0000 12.7279 + 80.2250 140.0000 11.8322 + 80.2500 153.0000 12.3693 + 80.2750 147.0000 12.1244 + 80.3000 143.0000 11.9583 + 80.3250 153.0000 12.3693 + 80.3500 154.0000 12.4097 + 80.3750 133.0000 11.5326 + 80.4000 145.0000 12.0416 + 80.4250 148.0000 12.1655 + 80.4500 165.0000 12.8452 + 80.4750 155.0000 12.4499 + 80.5000 155.0000 12.4499 + 80.5250 147.0000 12.1244 + 80.5500 176.0000 13.2665 + 80.5750 149.0000 12.2066 + 80.6000 165.0000 12.8452 + 80.6250 136.0000 11.6619 + 80.6500 163.0000 12.7671 + 80.6750 163.0000 12.7671 + 80.7000 198.0000 14.0712 + 80.7250 215.0000 14.6629 + 80.7500 249.0000 15.7797 + 80.7750 304.0000 17.4356 + 80.8000 377.0000 19.4165 + 80.8250 414.0000 20.3470 + 80.8500 339.0000 18.4120 + 80.8750 322.0000 17.9444 + 80.9000 284.0000 16.8523 + 80.9250 301.0000 17.3494 + 80.9500 311.0000 17.6352 + 80.9750 380.0000 19.4936 + 81.0000 550.0000 23.4521 + 81.0250 624.0000 24.9800 + 81.0500 660.0000 25.6905 + 81.0750 617.0000 24.8395 + 81.1000 461.0000 21.4709 + 81.1250 363.0000 19.0526 + 81.1500 284.0000 16.8523 + 81.1750 266.0000 16.3095 + 81.2000 268.0000 16.3707 + 81.2250 289.0000 17.0000 + 81.2500 340.0000 18.4391 + 81.2750 375.0000 19.3649 + 81.3000 363.0000 19.0526 + 81.3250 327.0000 18.0831 + 81.3500 259.0000 16.0935 + 81.3750 216.0000 14.6969 + 81.4000 172.0000 13.1149 + 81.4250 180.0000 13.4164 + 81.4500 208.0000 14.4222 + 81.4750 177.0000 13.3041 + 81.5000 157.0000 12.5300 + 81.5250 189.0000 13.7477 + 81.5500 192.0000 13.8564 + 81.5750 222.0000 14.8997 + 81.6000 222.0000 14.8997 + 81.6250 188.0000 13.7113 + 81.6500 184.0000 13.5647 + 81.6750 164.0000 12.8062 + 81.7000 173.0000 13.1529 + 81.7250 182.0000 13.4907 + 81.7500 153.0000 12.3693 + 81.7750 158.0000 12.5698 + 81.8000 158.0000 12.5698 + 81.8250 183.0000 13.5277 + 81.8500 190.0000 13.7840 + 81.8750 178.0000 13.3417 + 81.9000 169.0000 13.0000 + 81.9250 145.0000 12.0416 + 81.9500 170.0000 13.0384 + 81.9750 138.0000 11.7473 + 82.0000 169.0000 13.0000 + 82.0250 133.0000 11.5326 + 82.0500 134.0000 11.5758 + 82.0750 122.0000 11.0454 + 82.1000 126.0000 11.2250 + 82.1250 153.0000 12.3693 + 82.1500 112.0000 10.5830 + 82.1750 125.0000 11.1803 + 82.2000 127.0000 11.2694 + 82.2250 147.0000 12.1244 + 82.2500 125.0000 11.1803 + 82.2750 125.0000 11.1803 + 82.3000 142.0000 11.9164 + 82.3250 143.0000 11.9583 + 82.3500 138.0000 11.7473 + 82.3750 145.0000 12.0416 + 82.4000 166.0000 12.8841 + 82.4250 165.0000 12.8452 + 82.4500 156.0000 12.4900 + 82.4750 154.0000 12.4097 + 82.5000 169.0000 13.0000 + 82.5250 130.0000 11.4018 + 82.5500 173.0000 13.1529 + 82.5750 155.0000 12.4499 + 82.6000 178.0000 13.3417 + 82.6250 211.0000 14.5258 + 82.6500 247.0000 15.7162 + 82.6750 289.0000 17.0000 + 82.7000 310.0000 17.6068 + 82.7250 276.0000 16.6132 + 82.7500 303.0000 17.4069 + 82.7750 376.0000 19.3907 + 82.8000 468.0000 21.6333 + 82.8250 665.0000 25.7876 + 82.8500 803.0000 28.3373 + 82.8750 829.0000 28.7924 + 82.9000 683.0000 26.1343 + 82.9250 570.0000 23.8747 + 82.9500 507.0000 22.5167 + 82.9750 383.0000 19.5704 + 83.0000 335.0000 18.3030 + 83.0250 352.0000 18.7617 + 83.0500 412.0000 20.2978 + 83.0750 522.0000 22.8473 + 83.1000 575.0000 23.9792 + 83.1250 652.0000 25.5343 + 83.1500 681.0000 26.0960 + 83.1750 634.0000 25.1794 + 83.2000 466.0000 21.5870 + 83.2250 368.0000 19.1833 + 83.2500 301.0000 17.3494 + 83.2750 214.0000 14.6287 + 83.3000 226.0000 15.0333 + 83.3250 205.0000 14.3178 + 83.3500 239.0000 15.4596 + 83.3750 226.0000 15.0333 + 83.4000 271.0000 16.4621 + 83.4250 279.0000 16.7033 + 83.4500 280.0000 16.7332 + 83.4750 247.0000 15.7162 + 83.5000 223.0000 14.9332 + 83.5250 201.0000 14.1774 + 83.5500 199.0000 14.1067 + 83.5750 198.0000 14.0712 + 83.6000 206.0000 14.3527 + 83.6250 191.0000 13.8203 + 83.6500 154.0000 12.4097 + 83.6750 174.0000 13.1909 + 83.7000 144.0000 12.0000 + 83.7250 155.0000 12.4499 + 83.7500 161.0000 12.6886 + 83.7750 172.0000 13.1149 + 83.8000 178.0000 13.3417 + 83.8250 192.0000 13.8564 + 83.8500 155.0000 12.4499 + 83.8750 171.0000 13.0767 + 83.9000 155.0000 12.4499 + 83.9250 160.0000 12.6491 + 83.9500 138.0000 11.7473 + 83.9750 156.0000 12.4900 + 84.0000 178.0000 13.3417 + 84.0250 163.0000 12.7671 + 84.0500 191.0000 13.8203 + 84.0750 200.0000 14.1421 + 84.1000 208.0000 14.4222 + 84.1250 186.0000 13.6382 + 84.1500 167.0000 12.9228 + 84.1750 183.0000 13.5277 + 84.2000 157.0000 12.5300 + 84.2250 148.0000 12.1655 + 84.2500 163.0000 12.7671 + 84.2750 174.0000 13.1909 + 84.3000 187.0000 13.6748 + 84.3250 182.0000 13.4907 + 84.3500 189.0000 13.7477 + 84.3750 190.0000 13.7840 + 84.4000 190.0000 13.7840 + 84.4250 199.0000 14.1067 + 84.4500 240.0000 15.4919 + 84.4750 247.0000 15.7162 + 84.5000 334.0000 18.2757 + 84.5250 391.0000 19.7737 + 84.5500 512.0000 22.6274 + 84.5750 618.0000 24.8596 + 84.6000 663.0000 25.7488 + 84.6250 593.0000 24.3516 + 84.6500 456.0000 21.3542 + 84.6750 395.0000 19.8746 + 84.7000 343.0000 18.5203 + 84.7250 288.0000 16.9706 + 84.7500 292.0000 17.0880 + 84.7750 310.0000 17.6068 + 84.8000 392.0000 19.7990 + 84.8250 389.0000 19.7231 + 84.8500 437.0000 20.9045 + 84.8750 361.0000 19.0000 + 84.9000 351.0000 18.7350 + 84.9250 262.0000 16.1864 + 84.9500 250.0000 15.8114 + 84.9750 233.0000 15.2643 + 85.0000 197.0000 14.0357 + 85.0250 195.0000 13.9642 + 85.0500 171.0000 13.0767 + 85.0750 174.0000 13.1909 + 85.1000 171.0000 13.0767 + 85.1250 159.0000 12.6095 + 85.1500 158.0000 12.5698 + 85.1750 120.0000 10.9545 + 85.2000 128.0000 11.3137 + 85.2250 140.0000 11.8322 + 85.2500 148.0000 12.1655 + 85.2750 156.0000 12.4900 + 85.3000 133.0000 11.5326 + 85.3250 156.0000 12.4900 + 85.3500 144.0000 12.0000 + 85.3750 163.0000 12.7671 + 85.4000 158.0000 12.5698 + 85.4250 158.0000 12.5698 + 85.4500 154.0000 12.4097 + 85.4750 165.0000 12.8452 + 85.5000 196.0000 14.0000 + 85.5250 206.0000 14.3527 + 85.5500 256.0000 16.0000 + 85.5750 278.0000 16.6733 + 85.6000 255.0000 15.9687 + 85.6250 253.0000 15.9060 + 85.6500 223.0000 14.9332 + 85.6750 190.0000 13.7840 + 85.7000 196.0000 14.0000 + 85.7250 176.0000 13.2665 + 85.7500 171.0000 13.0767 + 85.7750 212.0000 14.5602 + 85.8000 204.0000 14.2829 + 85.8250 252.0000 15.8745 + 85.8500 224.0000 14.9666 + 85.8750 192.0000 13.8564 + 85.9000 180.0000 13.4164 + 85.9250 172.0000 13.1149 + 85.9500 166.0000 12.8841 + 85.9750 159.0000 12.6095 + 86.0000 155.0000 12.4499 + 86.0250 148.0000 12.1655 + 86.0500 167.0000 12.9228 + 86.0750 137.0000 11.7047 + 86.1000 178.0000 13.3417 + 86.1250 161.0000 12.6886 + 86.1500 180.0000 13.4164 + 86.1750 156.0000 12.4900 + 86.2000 169.0000 13.0000 + 86.2250 178.0000 13.3417 + 86.2500 174.0000 13.1909 + 86.2750 181.0000 13.4536 + 86.3000 172.0000 13.1149 + 86.3250 238.0000 15.4272 + 86.3500 209.0000 14.4568 + 86.3750 240.0000 15.4919 + 86.4000 343.0000 18.5203 + 86.4250 384.0000 19.5959 + 86.4500 500.0000 22.3607 + 86.4750 673.0000 25.9422 + 86.5000 704.0000 26.5330 + 86.5250 763.0000 27.6225 + 86.5500 656.0000 25.6125 + 86.5750 551.0000 23.4734 + 86.6000 406.0000 20.1494 + 86.6250 354.0000 18.8149 + 86.6500 352.0000 18.7617 + 86.6750 301.0000 17.3494 + 86.7000 357.0000 18.8944 + 86.7250 414.0000 20.3470 + 86.7500 440.0000 20.9762 + 86.7750 502.0000 22.4054 + 86.8000 459.0000 21.4243 + 86.8250 425.0000 20.6155 + 86.8500 378.0000 19.4422 + 86.8750 418.0000 20.4450 + 86.9000 427.0000 20.6640 + 86.9250 467.0000 21.6102 + 86.9500 441.0000 21.0000 + 86.9750 400.0000 20.0000 + 87.0000 327.0000 18.0831 + 87.0250 278.0000 16.6733 + 87.0500 259.0000 16.0935 + 87.0750 240.0000 15.4919 + 87.1000 213.0000 14.5945 + 87.1250 206.0000 14.3527 + 87.1500 241.0000 15.5242 + 87.1750 263.0000 16.2173 + 87.2000 287.0000 16.9411 + 87.2250 291.0000 17.0587 + 87.2500 245.0000 15.6525 + 87.2750 243.0000 15.5885 + 87.3000 198.0000 14.0712 + 87.3250 195.0000 13.9642 + 87.3500 195.0000 13.9642 + 87.3750 164.0000 12.8062 + 87.4000 178.0000 13.3417 + 87.4250 161.0000 12.6886 + 87.4500 161.0000 12.6886 + 87.4750 183.0000 13.5277 + 87.5000 177.0000 13.3041 + 87.5250 177.0000 13.3041 + 87.5500 177.0000 13.3041 + 87.5750 192.0000 13.8564 + 87.6000 219.0000 14.7986 + 87.6250 260.0000 16.1245 + 87.6500 310.0000 17.6068 + 87.6750 337.0000 18.3576 + 87.7000 312.0000 17.6635 + 87.7250 290.0000 17.0294 + 87.7500 275.0000 16.5831 + 87.7750 243.0000 15.5885 + 87.8000 192.0000 13.8564 + 87.8250 200.0000 14.1421 + 87.8500 212.0000 14.5602 + 87.8750 205.0000 14.3178 + 87.9000 180.0000 13.4164 + 87.9250 219.0000 14.7986 + 87.9500 274.0000 16.5529 + 87.9750 271.0000 16.4621 + 88.0000 200.0000 14.1421 + 88.0250 205.0000 14.3178 + 88.0500 195.0000 13.9642 + 88.0750 179.0000 13.3791 + 88.1000 171.0000 13.0767 + 88.1250 171.0000 13.0767 + 88.1500 147.0000 12.1244 + 88.1750 147.0000 12.1244 + 88.2000 167.0000 12.9228 + 88.2250 159.0000 12.6095 + 88.2500 157.0000 12.5300 + 88.2750 145.0000 12.0416 + 88.3000 164.0000 12.8062 + 88.3250 142.0000 11.9164 + 88.3500 143.0000 11.9583 + 88.3750 164.0000 12.8062 + 88.4000 157.0000 12.5300 + 88.4250 153.0000 12.3693 + 88.4500 145.0000 12.0416 + 88.4750 168.0000 12.9615 + 88.5000 159.0000 12.6095 + 88.5250 169.0000 13.0000 + 88.5500 137.0000 11.7047 + 88.5750 182.0000 13.4907 + 88.6000 196.0000 14.0000 + 88.6250 218.0000 14.7648 + 88.6500 216.0000 14.6969 + 88.6750 223.0000 14.9332 + 88.7000 269.0000 16.4012 + 88.7250 295.0000 17.1756 + 88.7500 288.0000 16.9706 + 88.7750 280.0000 16.7332 + 88.8000 281.0000 16.7631 + 88.8250 187.0000 13.6748 + 88.8500 264.0000 16.2481 + 88.8750 216.0000 14.6969 + 88.9000 220.0000 14.8324 + 88.9250 242.0000 15.5563 + 88.9500 264.0000 16.2481 + 88.9750 272.0000 16.4924 + 89.0000 326.0000 18.0555 + 89.0250 362.0000 19.0263 + 89.0500 407.0000 20.1742 + 89.0750 468.0000 21.6333 + 89.1000 432.0000 20.7846 + 89.1250 443.0000 21.0476 + 89.1500 383.0000 19.5704 + 89.1750 393.0000 19.8242 + 89.2000 367.0000 19.1572 + 89.2250 415.0000 20.3715 + 89.2500 471.0000 21.7025 + 89.2750 595.0000 24.3926 + 89.3000 626.0000 25.0200 + 89.3250 583.0000 24.1454 + 89.3500 491.0000 22.1585 + 89.3750 456.0000 21.3542 + 89.4000 411.0000 20.2731 + 89.4250 322.0000 17.9444 + 89.4500 328.0000 18.1108 + 89.4750 289.0000 17.0000 + 89.5000 271.0000 16.4621 + 89.5250 302.0000 17.3781 + 89.5500 377.0000 19.4165 + 89.5750 369.0000 19.2094 + 89.6000 373.0000 19.3132 + 89.6250 347.0000 18.6279 + 89.6500 296.0000 17.2047 + 89.6750 292.0000 17.0880 + 89.7000 257.0000 16.0312 + 89.7250 269.0000 16.4012 + 89.7500 241.0000 15.5242 + 89.7750 218.0000 14.7648 + 89.8000 212.0000 14.5602 + 89.8250 239.0000 15.4596 + 89.8500 254.0000 15.9374 + 89.8750 295.0000 17.1756 + 89.9000 314.0000 17.7200 + 89.9250 356.0000 18.8680 + 89.9500 301.0000 17.3494 + 89.9750 277.0000 16.6433 + 90.0000 252.0000 15.8745 + 90.0250 251.0000 15.8430 + 90.0500 186.0000 13.6382 + 90.0750 197.0000 14.0357 + 90.1000 162.0000 12.7279 + 90.1250 192.0000 13.8564 + 90.1500 231.0000 15.1987 + 90.1750 223.0000 14.9332 + 90.2000 207.0000 14.3875 + 90.2250 238.0000 15.4272 + 90.2500 196.0000 14.0000 + 90.2750 196.0000 14.0000 + 90.3000 176.0000 13.2665 + 90.3250 171.0000 13.0767 + 90.3500 178.0000 13.3417 + 90.3750 146.0000 12.0830 + 90.4000 169.0000 13.0000 + 90.4250 161.0000 12.6886 + 90.4500 149.0000 12.2066 + 90.4750 173.0000 13.1529 + 90.5000 156.0000 12.4900 + 90.5250 143.0000 11.9583 + 90.5500 154.0000 12.4097 + 90.5750 152.0000 12.3288 + 90.6000 139.0000 11.7898 + 90.6250 184.0000 13.5647 + 90.6500 185.0000 13.6015 + 90.6750 161.0000 12.6886 + 90.7000 159.0000 12.6095 + 90.7250 152.0000 12.3288 + 90.7500 159.0000 12.6095 + 90.7750 176.0000 13.2665 + 90.8000 164.0000 12.8062 + 90.8250 168.0000 12.9615 + 90.8500 193.0000 13.8924 + 90.8750 195.0000 13.9642 + 90.9000 187.0000 13.6748 + 90.9250 237.0000 15.3948 + 90.9500 228.0000 15.0997 + 90.9750 265.0000 16.2788 + 91.0000 291.0000 17.0587 + 91.0250 347.0000 18.6279 + 91.0500 409.0000 20.2237 + 91.0750 454.0000 21.3073 + 91.1000 552.0000 23.4947 + 91.1250 524.0000 22.8910 + 91.1500 552.0000 23.4947 + 91.1750 502.0000 22.4054 + 91.2000 483.0000 21.9773 + 91.2250 433.0000 20.8087 + 91.2500 382.0000 19.5448 + 91.2750 363.0000 19.0526 + 91.3000 322.0000 17.9444 + 91.3250 328.0000 18.1108 + 91.3500 389.0000 19.7231 + 91.3750 469.0000 21.6564 + 91.4000 485.0000 22.0227 + 91.4250 438.0000 20.9284 + 91.4500 491.0000 22.1585 + 91.4750 415.0000 20.3715 + 91.5000 377.0000 19.4165 + 91.5250 375.0000 19.3649 + 91.5500 322.0000 17.9444 + 91.5750 288.0000 16.9706 + 91.6000 280.0000 16.7332 + 91.6250 263.0000 16.2173 + 91.6500 275.0000 16.5831 + 91.6750 245.0000 15.6525 + 91.7000 243.0000 15.5885 + 91.7250 239.0000 15.4596 + 91.7500 247.0000 15.7162 + 91.7750 216.0000 14.6969 + 91.8000 204.0000 14.2829 + 91.8250 210.0000 14.4914 + 91.8500 196.0000 14.0000 + 91.8750 220.0000 14.8324 + 91.9000 209.0000 14.4568 + 91.9250 212.0000 14.5602 + 91.9500 226.0000 15.0333 + 91.9750 201.0000 14.1774 + 92.0000 225.0000 15.0000 + 92.0250 228.0000 15.0997 + 92.0500 210.0000 14.4914 + 92.0750 244.0000 15.6205 + 92.1000 298.0000 17.2627 + 92.1250 405.0000 20.1246 + 92.1500 445.0000 21.0950 + 92.1750 534.0000 23.1084 + 92.2000 579.0000 24.0624 + 92.2250 538.0000 23.1948 + 92.2500 495.0000 22.2486 + 92.2750 466.0000 21.5870 + 92.3000 410.0000 20.2485 + 92.3250 389.0000 19.7231 + 92.3500 387.0000 19.6723 + 92.3750 429.0000 20.7123 + 92.4000 460.0000 21.4476 + 92.4250 573.0000 23.9374 + 92.4500 607.0000 24.6374 + 92.4750 740.0000 27.2029 + 92.5000 853.0000 29.2062 + 92.5250 781.0000 27.9464 + 92.5500 733.0000 27.0740 + 92.5750 593.0000 24.3516 + 92.6000 499.0000 22.3383 + 92.6250 398.0000 19.9499 + 92.6500 368.0000 19.1833 + 92.6750 334.0000 18.2757 + 92.7000 370.0000 19.2354 + 92.7250 358.0000 18.9209 + 92.7500 391.0000 19.7737 + 92.7750 376.0000 19.3907 + 92.8000 394.0000 19.8494 + 92.8250 414.0000 20.3470 + 92.8500 383.0000 19.5704 + 92.8750 300.0000 17.3205 + 92.9000 294.0000 17.1464 + 92.9250 275.0000 16.5831 + 92.9500 246.0000 15.6844 + 92.9750 259.0000 16.0935 + 93.0000 235.0000 15.3297 + 93.0250 239.0000 15.4596 + 93.0500 243.0000 15.5885 + 93.0750 277.0000 16.6433 + 93.1000 363.0000 19.0526 + 93.1250 383.0000 19.5704 + 93.1500 434.0000 20.8327 + 93.1750 436.0000 20.8806 + 93.2000 378.0000 19.4422 + 93.2250 373.0000 19.3132 + 93.2500 386.0000 19.6469 + 93.2750 438.0000 20.9284 + 93.3000 464.0000 21.5407 + 93.3250 491.0000 22.1585 + 93.3500 539.0000 23.2164 + 93.3750 539.0000 23.2164 + 93.4000 523.0000 22.8692 + 93.4250 499.0000 22.3383 + 93.4500 478.0000 21.8632 + 93.4750 472.0000 21.7256 + 93.5000 383.0000 19.5704 + 93.5250 345.0000 18.5742 + 93.5500 354.0000 18.8149 + 93.5750 352.0000 18.7617 + 93.6000 383.0000 19.5704 + 93.6250 370.0000 19.2354 + 93.6500 410.0000 20.2485 + 93.6750 453.0000 21.2838 + 93.7000 416.0000 20.3961 + 93.7250 396.0000 19.8997 + 93.7500 392.0000 19.7990 + 93.7750 319.0000 17.8606 + 93.8000 335.0000 18.3030 + 93.8250 407.0000 20.1742 + 93.8500 461.0000 21.4709 + 93.8750 587.0000 24.2281 + 93.9000 741.0000 27.2213 + 93.9250 875.0000 29.5804 + 93.9500 863.0000 29.3769 + 93.9750 754.0000 27.4591 + 94.0000 619.0000 24.8797 + 94.0250 485.0000 22.0227 + 94.0500 429.0000 20.7123 + 94.0750 336.0000 18.3303 + 94.1000 321.0000 17.9165 + 94.1250 296.0000 17.2047 + 94.1500 316.0000 17.7764 + 94.1750 385.0000 19.6214 + 94.2000 474.0000 21.7715 + 94.2250 539.0000 23.2164 + 94.2500 571.0000 23.8956 + 94.2750 493.0000 22.2036 + 94.3000 420.0000 20.4939 + 94.3250 345.0000 18.5742 + 94.3500 272.0000 16.4924 + 94.3750 242.0000 15.5563 + 94.4000 219.0000 14.7986 + 94.4250 229.0000 15.1327 + 94.4500 203.0000 14.2478 + 94.4750 220.0000 14.8324 + 94.5000 211.0000 14.5258 + 94.5250 190.0000 13.7840 + 94.5500 171.0000 13.0767 + 94.5750 195.0000 13.9642 + 94.6000 176.0000 13.2665 + 94.6250 218.0000 14.7648 + 94.6500 208.0000 14.4222 + 94.6750 212.0000 14.5602 + 94.7000 230.0000 15.1658 + 94.7250 265.0000 16.2788 + 94.7500 314.0000 17.7200 + 94.7750 278.0000 16.6733 + 94.8000 306.0000 17.4929 + 94.8250 262.0000 16.1864 + 94.8500 281.0000 16.7631 + 94.8750 209.0000 14.4568 + 94.9000 235.0000 15.3297 + 94.9250 222.0000 14.8997 + 94.9500 223.0000 14.9332 + 94.9750 246.0000 15.6844 + 95.0000 268.0000 16.3707 + 95.0250 316.0000 17.7764 + 95.0500 307.0000 17.5214 + 95.0750 316.0000 17.7764 + 95.1000 273.0000 16.5227 + 95.1250 247.0000 15.7162 + 95.1500 229.0000 15.1327 + 95.1750 201.0000 14.1774 + 95.2000 198.0000 14.0712 + 95.2250 173.0000 13.1529 + 95.2500 202.0000 14.2127 + 95.2750 173.0000 13.1529 + 95.3000 212.0000 14.5602 + 95.3250 185.0000 13.6015 + 95.3500 197.0000 14.0357 + 95.3750 193.0000 13.8924 + 95.4000 193.0000 13.8924 + 95.4250 194.0000 13.9284 + 95.4500 169.0000 13.0000 + 95.4750 169.0000 13.0000 + 95.5000 157.0000 12.5300 + 95.5250 167.0000 12.9228 + 95.5500 175.0000 13.2288 + 95.5750 140.0000 11.8322 + 95.6000 174.0000 13.1909 + 95.6250 146.0000 12.0830 + 95.6500 171.0000 13.0767 + 95.6750 142.0000 11.9164 + 95.7000 152.0000 12.3288 + 95.7250 171.0000 13.0767 + 95.7500 150.0000 12.2474 + 95.7750 142.0000 11.9164 + 95.8000 161.0000 12.6886 + 95.8250 150.0000 12.2474 + 95.8500 163.0000 12.7671 + 95.8750 154.0000 12.4097 + 95.9000 149.0000 12.2066 + 95.9250 157.0000 12.5300 + 95.9500 192.0000 13.8564 + 95.9750 185.0000 13.6015 + 96.0000 184.0000 13.5647 + 96.0250 205.0000 14.3178 + 96.0500 231.0000 15.1987 + 96.0750 238.0000 15.4272 + 96.1000 263.0000 16.2173 + 96.1250 324.0000 18.0000 + 96.1500 365.0000 19.1050 + 96.1750 388.0000 19.6977 + 96.2000 380.0000 19.4936 + 96.2250 421.0000 20.5183 + 96.2500 418.0000 20.4450 + 96.2750 408.0000 20.1990 + 96.3000 385.0000 19.6214 + 96.3250 374.0000 19.3391 + 96.3500 346.0000 18.6011 + 96.3750 329.0000 18.1384 + 96.4000 297.0000 17.2337 + 96.4250 319.0000 17.8606 + 96.4500 322.0000 17.9444 + 96.4750 328.0000 18.1108 + 96.5000 298.0000 17.2627 + 96.5250 290.0000 17.0294 + 96.5500 304.0000 17.4356 + 96.5750 311.0000 17.6352 + 96.6000 312.0000 17.6635 + 96.6250 319.0000 17.8606 + 96.6500 292.0000 17.0880 + 96.6750 241.0000 15.5242 + 96.7000 239.0000 15.4596 + 96.7250 202.0000 14.2127 + 96.7500 206.0000 14.3527 + 96.7750 202.0000 14.2127 + 96.8000 227.0000 15.0665 + 96.8250 236.0000 15.3623 + 96.8500 307.0000 17.5214 + 96.8750 309.0000 17.5784 + 96.9000 385.0000 19.6214 + 96.9250 341.0000 18.4662 + 96.9500 324.0000 18.0000 + 96.9750 290.0000 17.0294 + 97.0000 208.0000 14.4222 + 97.0250 241.0000 15.5242 + 97.0500 201.0000 14.1774 + 97.0750 202.0000 14.2127 + 97.1000 181.0000 13.4536 + 97.1250 217.0000 14.7309 + 97.1500 264.0000 16.2481 + 97.1750 229.0000 15.1327 + 97.2000 326.0000 18.0555 + 97.2250 303.0000 17.4069 + 97.2500 345.0000 18.5742 + 97.2750 304.0000 17.4356 + 97.3000 296.0000 17.2047 + 97.3250 241.0000 15.5242 + 97.3500 242.0000 15.5563 + 97.3750 210.0000 14.4914 + 97.4000 187.0000 13.6748 + 97.4250 206.0000 14.3527 + 97.4500 194.0000 13.9284 + 97.4750 221.0000 14.8661 + 97.5000 216.0000 14.6969 + 97.5250 245.0000 15.6525 + 97.5500 242.0000 15.5563 + 97.5750 251.0000 15.8430 + 97.6000 258.0000 16.0624 + 97.6250 232.0000 15.2315 + 97.6500 215.0000 14.6629 + 97.6750 189.0000 13.7477 + 97.7000 192.0000 13.8564 + 97.7250 163.0000 12.7671 + 97.7500 158.0000 12.5698 + 97.7750 162.0000 12.7279 + 97.8000 174.0000 13.1909 + 97.8250 182.0000 13.4907 + 97.8500 169.0000 13.0000 + 97.8750 151.0000 12.2882 + 97.9000 187.0000 13.6748 + 97.9250 179.0000 13.3791 + 97.9500 167.0000 12.9228 + 97.9750 169.0000 13.0000 + 98.0000 146.0000 12.0830 + 98.0250 149.0000 12.2066 + 98.0500 146.0000 12.0830 + 98.0750 158.0000 12.5698 + 98.1000 142.0000 11.9164 + 98.1250 164.0000 12.8062 + 98.1500 142.0000 11.9164 + 98.1750 153.0000 12.3693 + 98.2000 147.0000 12.1244 + 98.2250 163.0000 12.7671 + 98.2500 160.0000 12.6491 + 98.2750 163.0000 12.7671 + 98.3000 127.0000 11.2694 + 98.3250 150.0000 12.2474 + 98.3500 159.0000 12.6095 + 98.3750 140.0000 11.8322 + 98.4000 136.0000 11.6619 + 98.4250 159.0000 12.6095 + 98.4500 171.0000 13.0767 + 98.4750 178.0000 13.3417 + 98.5000 159.0000 12.6095 + 98.5250 162.0000 12.7279 + 98.5500 193.0000 13.8924 + 98.5750 156.0000 12.4900 + 98.6000 176.0000 13.2665 + 98.6250 161.0000 12.6886 + 98.6500 155.0000 12.4499 + 98.6750 146.0000 12.0830 + 98.7000 179.0000 13.3791 + 98.7250 208.0000 14.4222 + 98.7500 186.0000 13.6382 + 98.7750 194.0000 13.9284 + 98.8000 252.0000 15.8745 + 98.8250 230.0000 15.1658 + 98.8500 219.0000 14.7986 + 98.8750 182.0000 13.4907 + 98.9000 179.0000 13.3791 + 98.9250 174.0000 13.1909 + 98.9500 147.0000 12.1244 + 98.9750 189.0000 13.7477 + 99.0000 166.0000 12.8841 + 99.0250 142.0000 11.9164 + 99.0500 144.0000 12.0000 + 99.0750 177.0000 13.3041 + 99.1000 178.0000 13.3417 + 99.1250 215.0000 14.6629 + 99.1500 182.0000 13.4907 + 99.1750 160.0000 12.6491 + 99.2000 196.0000 14.0000 + 99.2250 200.0000 14.1421 + 99.2500 159.0000 12.6095 + 99.2750 163.0000 12.7671 + 99.3000 150.0000 12.2474 + 99.3250 175.0000 13.2288 + 99.3500 144.0000 12.0000 + 99.3750 132.0000 11.4891 + 99.4000 160.0000 12.6491 + 99.4250 169.0000 13.0000 + 99.4500 138.0000 11.7473 + 99.4750 171.0000 13.0767 + 99.5000 129.0000 11.3578 + 99.5250 167.0000 12.9228 + 99.5500 172.0000 13.1149 + 99.5750 135.0000 11.6189 + 99.6000 170.0000 13.0384 + 99.6250 172.0000 13.1149 + 99.6500 169.0000 13.0000 + 99.6750 199.0000 14.1067 + 99.7000 221.0000 14.8661 + 99.7250 233.0000 15.2643 + 99.7500 283.0000 16.8226 + 99.7750 291.0000 17.0587 + 99.8000 299.0000 17.2916 + 99.8250 257.0000 16.0312 + 99.8500 239.0000 15.4596 + 99.8750 226.0000 15.0333 + 99.9000 185.0000 13.6015 + 99.9250 195.0000 13.9642 + 99.9500 194.0000 13.9284 + 99.9750 175.0000 13.2288 + 100.0000 192.0000 13.8564 + 100.0250 182.0000 13.4907 + 100.0500 189.0000 13.7477 + 100.0750 210.0000 14.4914 + 100.1000 252.0000 15.8745 + 100.1250 217.0000 14.7309 + 100.1500 230.0000 15.1658 + 100.1750 223.0000 14.9332 + 100.2000 192.0000 13.8564 + 100.2250 205.0000 14.3178 + 100.2500 179.0000 13.3791 + 100.2750 185.0000 13.6015 + 100.3000 155.0000 12.4499 + 100.3250 193.0000 13.8924 + 100.3500 190.0000 13.7840 + 100.3750 214.0000 14.6287 + 100.4000 215.0000 14.6629 + 100.4250 230.0000 15.1658 + 100.4500 223.0000 14.9332 + 100.4750 212.0000 14.5602 + 100.5000 233.0000 15.2643 + 100.5250 221.0000 14.8661 + 100.5500 242.0000 15.5563 + 100.5750 216.0000 14.6969 + 100.6000 261.0000 16.1555 + 100.6250 265.0000 16.2788 + 100.6500 370.0000 19.2354 + 100.6750 406.0000 20.1494 + 100.7000 501.0000 22.3830 + 100.7250 447.0000 21.1424 + 100.7500 488.0000 22.0907 + 100.7750 473.0000 21.7486 + 100.8000 365.0000 19.1050 + 100.8250 279.0000 16.7033 + 100.8500 283.0000 16.8226 + 100.8750 285.0000 16.8819 + 100.9000 282.0000 16.7929 + 100.9250 239.0000 15.4596 + 100.9500 267.0000 16.3401 + 100.9750 263.0000 16.2173 + 101.0000 309.0000 17.5784 + 101.0250 349.0000 18.6815 + 101.0500 345.0000 18.5742 + 101.0750 322.0000 17.9444 + 101.1000 338.0000 18.3848 + 101.1250 308.0000 17.5499 + 101.1500 238.0000 15.4272 + 101.1750 221.0000 14.8661 + 101.2000 215.0000 14.6629 + 101.2250 197.0000 14.0357 + 101.2500 205.0000 14.3178 + 101.2750 208.0000 14.4222 + 101.3000 222.0000 14.8997 + 101.3250 206.0000 14.3527 + 101.3500 204.0000 14.2829 + 101.3750 230.0000 15.1658 + 101.4000 240.0000 15.4919 + 101.4250 284.0000 16.8523 + 101.4500 313.0000 17.6918 + 101.4750 331.0000 18.1934 + 101.5000 344.0000 18.5472 + 101.5250 297.0000 17.2337 + 101.5500 275.0000 16.5831 + 101.5750 267.0000 16.3401 + 101.6000 216.0000 14.6969 + 101.6250 230.0000 15.1658 + 101.6500 194.0000 13.9284 + 101.6750 195.0000 13.9642 + 101.7000 234.0000 15.2971 + 101.7250 196.0000 14.0000 + 101.7500 198.0000 14.0712 + 101.7750 240.0000 15.4919 + 101.8000 255.0000 15.9687 + 101.8250 287.0000 16.9411 + 101.8500 314.0000 17.7200 + 101.8750 318.0000 17.8326 + 101.9000 255.0000 15.9687 + 101.9250 232.0000 15.2315 + 101.9500 213.0000 14.5945 + 101.9750 186.0000 13.6382 + 102.0000 193.0000 13.8924 + 102.0250 156.0000 12.4900 + 102.0500 168.0000 12.9615 + 102.0750 155.0000 12.4499 + 102.1000 154.0000 12.4097 + 102.1250 187.0000 13.6748 + 102.1500 181.0000 13.4536 + 102.1750 194.0000 13.9284 + 102.2000 183.0000 13.5277 + 102.2250 206.0000 14.3527 + 102.2500 191.0000 13.8203 + 102.2750 179.0000 13.3791 + 102.3000 174.0000 13.1909 + 102.3250 158.0000 12.5698 + 102.3500 176.0000 13.2665 + 102.3750 183.0000 13.5277 + 102.4000 184.0000 13.5647 + 102.4250 188.0000 13.7113 + 102.4500 222.0000 14.8997 + 102.4750 211.0000 14.5258 + 102.5000 242.0000 15.5563 + 102.5250 267.0000 16.3401 + 102.5500 330.0000 18.1659 + 102.5750 363.0000 19.0526 + 102.6000 390.0000 19.7484 + 102.6250 397.0000 19.9249 + 102.6500 332.0000 18.2209 + 102.6750 288.0000 16.9706 + 102.7000 273.0000 16.5227 + 102.7250 199.0000 14.1067 + 102.7500 218.0000 14.7648 + 102.7750 198.0000 14.0712 + 102.8000 206.0000 14.3527 + 102.8250 228.0000 15.0997 + 102.8500 206.0000 14.3527 + 102.8750 216.0000 14.6969 + 102.9000 256.0000 16.0000 + 102.9250 259.0000 16.0935 + 102.9500 301.0000 17.3494 + 102.9750 265.0000 16.2788 + 103.0000 240.0000 15.4919 + 103.0250 206.0000 14.3527 + 103.0500 224.0000 14.9666 + 103.0750 183.0000 13.5277 + 103.1000 160.0000 12.6491 + 103.1250 190.0000 13.7840 + 103.1500 158.0000 12.5698 + 103.1750 161.0000 12.6886 + 103.2000 161.0000 12.6886 + 103.2250 143.0000 11.9583 + 103.2500 144.0000 12.0000 + 103.2750 177.0000 13.3041 + 103.3000 175.0000 13.2288 + 103.3250 142.0000 11.9164 + 103.3500 129.0000 11.3578 + 103.3750 140.0000 11.8322 + 103.4000 166.0000 12.8841 + 103.4250 156.0000 12.4900 + 103.4500 126.0000 11.2250 + 103.4750 156.0000 12.4900 + 103.5000 144.0000 12.0000 + 103.5250 146.0000 12.0830 + 103.5500 136.0000 11.6619 + 103.5750 145.0000 12.0416 + 103.6000 160.0000 12.6491 + 103.6250 147.0000 12.1244 + 103.6500 142.0000 11.9164 + 103.6750 150.0000 12.2474 + 103.7000 168.0000 12.9615 + 103.7250 164.0000 12.8062 + 103.7500 168.0000 12.9615 + 103.7750 195.0000 13.9642 + 103.8000 207.0000 14.3875 + 103.8250 229.0000 15.1327 + 103.8500 260.0000 16.1245 + 103.8750 263.0000 16.2173 + 103.9000 294.0000 17.1464 + 103.9250 291.0000 17.0587 + 103.9500 279.0000 16.7033 + 103.9750 245.0000 15.6525 + 104.0000 211.0000 14.5258 + 104.0250 240.0000 15.4919 + 104.0500 218.0000 14.7648 + 104.0750 197.0000 14.0357 + 104.1000 226.0000 15.0333 + 104.1250 253.0000 15.9060 + 104.1500 249.0000 15.7797 + 104.1750 289.0000 17.0000 + 104.2000 329.0000 18.1384 + 104.2250 377.0000 19.4165 + 104.2500 412.0000 20.2978 + 104.2750 419.0000 20.4695 + 104.3000 371.0000 19.2614 + 104.3250 310.0000 17.6068 + 104.3500 258.0000 16.0624 + 104.3750 236.0000 15.3623 + 104.4000 243.0000 15.5885 + 104.4250 235.0000 15.3297 + 104.4500 224.0000 14.9666 + 104.4750 241.0000 15.5242 + 104.5000 236.0000 15.3623 + 104.5250 239.0000 15.4596 + 104.5500 302.0000 17.3781 + 104.5750 286.0000 16.9115 + 104.6000 295.0000 17.1756 + 104.6250 329.0000 18.1384 + 104.6500 390.0000 19.7484 + 104.6750 376.0000 19.3907 + 104.7000 405.0000 20.1246 + 104.7250 380.0000 19.4936 + 104.7500 376.0000 19.3907 + 104.7750 363.0000 19.0526 + 104.8000 361.0000 19.0000 + 104.8250 296.0000 17.2047 + 104.8500 313.0000 17.6918 + 104.8750 279.0000 16.7033 + 104.9000 295.0000 17.1756 + 104.9250 248.0000 15.7480 + 104.9500 253.0000 15.9060 + 104.9750 273.0000 16.5227 + 105.0000 273.0000 16.5227 + 105.0250 275.0000 16.5831 + 105.0500 305.0000 17.4642 + 105.0750 282.0000 16.7929 + 105.1000 295.0000 17.1756 + 105.1250 295.0000 17.1756 + 105.1500 304.0000 17.4356 + 105.1750 318.0000 17.8326 + 105.2000 331.0000 18.1934 + 105.2250 336.0000 18.3303 + 105.2500 336.0000 18.3303 + 105.2750 371.0000 19.2614 + 105.3000 349.0000 18.6815 + 105.3250 315.0000 17.7482 + 105.3500 280.0000 16.7332 + 105.3750 286.0000 16.9115 + 105.4000 238.0000 15.4272 + 105.4250 265.0000 16.2788 + 105.4500 226.0000 15.0333 + 105.4750 238.0000 15.4272 + 105.5000 222.0000 14.8997 + 105.5250 224.0000 14.9666 + 105.5500 254.0000 15.9374 + 105.5750 303.0000 17.4069 + 105.6000 311.0000 17.6352 + 105.6250 297.0000 17.2337 + 105.6500 319.0000 17.8606 + 105.6750 302.0000 17.3781 + 105.7000 295.0000 17.1756 + 105.7250 299.0000 17.2916 + 105.7500 325.0000 18.0278 + 105.7750 347.0000 18.6279 + 105.8000 294.0000 17.1464 + 105.8250 264.0000 16.2481 + 105.8500 265.0000 16.2788 + 105.8750 239.0000 15.4596 + 105.9000 227.0000 15.0665 + 105.9250 226.0000 15.0333 + 105.9500 250.0000 15.8114 + 105.9750 203.0000 14.2478 + 106.0000 229.0000 15.1327 + 106.0250 202.0000 14.2127 + 106.0500 234.0000 15.2971 + 106.0750 220.0000 14.8324 + 106.1000 206.0000 14.3527 + 106.1250 230.0000 15.1658 + 106.1500 228.0000 15.0997 + 106.1750 259.0000 16.0935 + 106.2000 221.0000 14.8661 + 106.2250 276.0000 16.6132 + 106.2500 276.0000 16.6132 + 106.2750 271.0000 16.4621 + 106.3000 278.0000 16.6733 + 106.3250 298.0000 17.2627 + 106.3500 341.0000 18.4662 + 106.3750 366.0000 19.1311 + 106.4000 384.0000 19.5959 + 106.4250 388.0000 19.6977 + 106.4500 410.0000 20.2485 + 106.4750 433.0000 20.8087 + 106.5000 388.0000 19.6977 + 106.5250 382.0000 19.5448 + 106.5500 298.0000 17.2627 + 106.5750 327.0000 18.0831 + 106.6000 266.0000 16.3095 + 106.6250 250.0000 15.8114 + 106.6500 252.0000 15.8745 + 106.6750 252.0000 15.8745 + 106.7000 262.0000 16.1864 + 106.7250 270.0000 16.4317 + 106.7500 257.0000 16.0312 + 106.7750 249.0000 15.7797 + 106.8000 251.0000 15.8430 + 106.8250 336.0000 18.3303 + 106.8500 305.0000 17.4642 + 106.8750 284.0000 16.8523 + 106.9000 293.0000 17.1172 + 106.9250 236.0000 15.3623 + 106.9500 224.0000 14.9666 + 106.9750 207.0000 14.3875 + 107.0000 200.0000 14.1421 + 107.0250 174.0000 13.1909 + 107.0500 177.0000 13.3041 + 107.0750 180.0000 13.4164 + 107.1000 163.0000 12.7671 + 107.1250 150.0000 12.2474 + 107.1500 181.0000 13.4536 + 107.1750 174.0000 13.1909 + 107.2000 141.0000 11.8743 + 107.2250 156.0000 12.4900 + 107.2500 143.0000 11.9583 + 107.2750 166.0000 12.8841 + 107.3000 148.0000 12.1655 + 107.3250 174.0000 13.1909 + 107.3500 153.0000 12.3693 + 107.3750 160.0000 12.6491 + 107.4000 159.0000 12.6095 + 107.4250 160.0000 12.6491 + 107.4500 155.0000 12.4499 + 107.4750 141.0000 11.8743 + 107.5000 148.0000 12.1655 + 107.5250 157.0000 12.5300 + 107.5500 157.0000 12.5300 + 107.5750 161.0000 12.6886 + 107.6000 171.0000 13.0767 + 107.6250 164.0000 12.8062 + 107.6500 169.0000 13.0000 + 107.6750 170.0000 13.0384 + 107.7000 167.0000 12.9228 + 107.7250 189.0000 13.7477 + 107.7500 220.0000 14.8324 + 107.7750 252.0000 15.8745 + 107.8000 328.0000 18.1108 + 107.8250 298.0000 17.2627 + 107.8500 286.0000 16.9115 + 107.8750 290.0000 17.0294 + 107.9000 266.0000 16.3095 + 107.9250 220.0000 14.8324 + 107.9500 171.0000 13.0767 + 107.9750 193.0000 13.8924 + 108.0000 194.0000 13.9284 + 108.0250 170.0000 13.0384 + 108.0500 235.0000 15.3297 + 108.0750 195.0000 13.9642 + 108.1000 207.0000 14.3875 + 108.1250 227.0000 15.0665 + 108.1500 261.0000 16.1555 + 108.1750 320.0000 17.8885 + 108.2000 343.0000 18.5203 + 108.2250 339.0000 18.4120 + 108.2500 411.0000 20.2731 + 108.2750 416.0000 20.3961 + 108.3000 350.0000 18.7083 + 108.3250 350.0000 18.7083 + 108.3500 288.0000 16.9706 + 108.3750 343.0000 18.5203 + 108.4000 300.0000 17.3205 + 108.4250 286.0000 16.9115 + 108.4500 283.0000 16.8226 + 108.4750 249.0000 15.7797 + 108.5000 258.0000 16.0624 + 108.5250 232.0000 15.2315 + 108.5500 229.0000 15.1327 + 108.5750 233.0000 15.2643 + 108.6000 215.0000 14.6629 + 108.6250 250.0000 15.8114 + 108.6500 258.0000 16.0624 + 108.6750 250.0000 15.8114 + 108.7000 251.0000 15.8430 + 108.7250 245.0000 15.6525 + 108.7500 233.0000 15.2643 + 108.7750 220.0000 14.8324 + 108.8000 257.0000 16.0312 + 108.8250 219.0000 14.7986 + 108.8500 207.0000 14.3875 + 108.8750 208.0000 14.4222 + 108.9000 191.0000 13.8203 + 108.9250 187.0000 13.6748 + 108.9500 198.0000 14.0712 + 108.9750 176.0000 13.2665 + 109.0000 184.0000 13.5647 + 109.0250 190.0000 13.7840 + 109.0500 192.0000 13.8564 + 109.0750 159.0000 12.6095 + 109.1000 176.0000 13.2665 + 109.1250 166.0000 12.8841 + 109.1500 196.0000 14.0000 + 109.1750 172.0000 13.1149 + 109.2000 180.0000 13.4164 + 109.2250 208.0000 14.4222 + 109.2500 219.0000 14.7986 + 109.2750 202.0000 14.2127 + 109.3000 177.0000 13.3041 + 109.3250 175.0000 13.2288 + 109.3500 170.0000 13.0384 + 109.3750 167.0000 12.9228 + 109.4000 175.0000 13.2288 + 109.4250 153.0000 12.3693 + 109.4500 145.0000 12.0416 + 109.4750 178.0000 13.3417 + 109.5000 168.0000 12.9615 + 109.5250 153.0000 12.3693 + 109.5500 159.0000 12.6095 + 109.5750 179.0000 13.3791 + 109.6000 196.0000 14.0000 + 109.6250 175.0000 13.2288 + 109.6500 174.0000 13.1909 + 109.6750 168.0000 12.9615 + 109.7000 180.0000 13.4164 + 109.7250 139.0000 11.7898 + 109.7500 157.0000 12.5300 + 109.7750 143.0000 11.9583 + 109.8000 156.0000 12.4900 + 109.8250 157.0000 12.5300 + 109.8500 151.0000 12.2882 + 109.8750 155.0000 12.4499 + 109.9000 158.0000 12.5698 + 109.9250 155.0000 12.4499 + 109.9500 141.0000 11.8743 + 109.9750 152.0000 12.3288 + 110.0000 145.0000 12.0416 + 110.0250 158.0000 12.5698 + 110.0500 153.0000 12.3693 + 110.0750 149.0000 12.2066 + 110.1000 153.0000 12.3693 + 110.1250 150.0000 12.2474 + 110.1500 144.0000 12.0000 + 110.1750 150.0000 12.2474 + 110.2000 143.0000 11.9583 + 110.2250 172.0000 13.1149 + 110.2500 141.0000 11.8743 + 110.2750 166.0000 12.8841 + 110.3000 170.0000 13.0384 + 110.3250 162.0000 12.7279 + 110.3500 206.0000 14.3527 + 110.3750 182.0000 13.4907 + 110.4000 172.0000 13.1149 + 110.4250 183.0000 13.5277 + 110.4500 175.0000 13.2288 + 110.4750 178.0000 13.3417 + 110.5000 179.0000 13.3791 + 110.5250 157.0000 12.5300 + 110.5500 163.0000 12.7671 + 110.5750 182.0000 13.4907 + 110.6000 184.0000 13.5647 + 110.6250 177.0000 13.3041 + 110.6500 163.0000 12.7671 + 110.6750 172.0000 13.1149 + 110.7000 185.0000 13.6015 + 110.7250 159.0000 12.6095 + 110.7500 185.0000 13.6015 + 110.7750 176.0000 13.2665 + 110.8000 169.0000 13.0000 + 110.8250 161.0000 12.6886 + 110.8500 173.0000 13.1529 + 110.8750 190.0000 13.7840 + 110.9000 193.0000 13.8924 + 110.9250 150.0000 12.2474 + 110.9500 175.0000 13.2288 + 110.9750 151.0000 12.2882 + 111.0000 176.0000 13.2665 + 111.0250 166.0000 12.8841 + 111.0500 171.0000 13.0767 + 111.0750 187.0000 13.6748 + 111.1000 180.0000 13.4164 + 111.1250 216.0000 14.6969 + 111.1500 212.0000 14.5602 + 111.1750 269.0000 16.4012 + 111.2000 301.0000 17.3494 + 111.2250 313.0000 17.6918 + 111.2500 319.0000 17.8606 + 111.2750 328.0000 18.1108 + 111.3000 299.0000 17.2916 + 111.3250 252.0000 15.8745 + 111.3500 252.0000 15.8745 + 111.3750 228.0000 15.0997 + 111.4000 200.0000 14.1421 + 111.4250 209.0000 14.4568 + 111.4500 202.0000 14.2127 + 111.4750 225.0000 15.0000 + 111.5000 199.0000 14.1067 + 111.5250 251.0000 15.8430 + 111.5500 236.0000 15.3623 + 111.5750 263.0000 16.2173 + 111.6000 299.0000 17.2916 + 111.6250 302.0000 17.3781 + 111.6500 338.0000 18.3848 + 111.6750 248.0000 15.7480 + 111.7000 259.0000 16.0935 + 111.7250 262.0000 16.1864 + 111.7500 213.0000 14.5945 + 111.7750 211.0000 14.5258 + 111.8000 206.0000 14.3527 + 111.8250 210.0000 14.4914 + 111.8500 168.0000 12.9615 + 111.8750 191.0000 13.8203 + 111.9000 159.0000 12.6095 + 111.9250 183.0000 13.5277 + 111.9500 202.0000 14.2127 + 111.9750 211.0000 14.5258 + 112.0000 205.0000 14.3178 + 112.0250 206.0000 14.3527 + 112.0500 205.0000 14.3178 + 112.0750 223.0000 14.9332 + 112.1000 200.0000 14.1421 + 112.1250 184.0000 13.5647 + 112.1500 189.0000 13.7477 + 112.1750 186.0000 13.6382 + 112.2000 185.0000 13.6015 + 112.2250 205.0000 14.3178 + 112.2500 197.0000 14.0357 + 112.2750 210.0000 14.4914 + 112.3000 206.0000 14.3527 + 112.3250 202.0000 14.2127 + 112.3500 174.0000 13.1909 + 112.3750 175.0000 13.2288 + 112.4000 190.0000 13.7840 + 112.4250 165.0000 12.8452 + 112.4500 173.0000 13.1529 + 112.4750 179.0000 13.3791 + 112.5000 192.0000 13.8564 + 112.5250 168.0000 12.9615 + 112.5500 168.0000 12.9615 + 112.5750 181.0000 13.4536 + 112.6000 170.0000 13.0384 + 112.6250 200.0000 14.1421 + 112.6500 198.0000 14.0712 + 112.6750 219.0000 14.7986 + 112.7000 211.0000 14.5258 + 112.7250 238.0000 15.4272 + 112.7500 222.0000 14.8997 + 112.7750 205.0000 14.3178 + 112.8000 221.0000 14.8661 + 112.8250 204.0000 14.2829 + 112.8500 219.0000 14.7986 + 112.8750 196.0000 14.0000 + 112.9000 210.0000 14.4914 + 112.9250 196.0000 14.0000 + 112.9500 234.0000 15.2971 + 112.9750 212.0000 14.5602 + 113.0000 191.0000 13.8203 + 113.0250 250.0000 15.8114 + 113.0500 230.0000 15.1658 + 113.0750 226.0000 15.0333 + 113.1000 277.0000 16.6433 + 113.1250 263.0000 16.2173 + 113.1500 296.0000 17.2047 + 113.1750 319.0000 17.8606 + 113.2000 338.0000 18.3848 + 113.2250 385.0000 19.6214 + 113.2500 408.0000 20.1990 + 113.2750 381.0000 19.5192 + 113.3000 356.0000 18.8680 + 113.3250 290.0000 17.0294 + 113.3500 284.0000 16.8523 + 113.3750 268.0000 16.3707 + 113.4000 222.0000 14.8997 + 113.4250 245.0000 15.6525 + 113.4500 214.0000 14.6287 + 113.4750 211.0000 14.5258 + 113.5000 204.0000 14.2829 + 113.5250 227.0000 15.0665 + 113.5500 254.0000 15.9374 + 113.5750 236.0000 15.3623 + 113.6000 290.0000 17.0294 + 113.6250 305.0000 17.4642 + 113.6500 290.0000 17.0294 + 113.6750 337.0000 18.3576 + 113.7000 276.0000 16.6132 + 113.7250 281.0000 16.7631 + 113.7500 238.0000 15.4272 + 113.7750 243.0000 15.5885 + 113.8000 231.0000 15.1987 + 113.8250 205.0000 14.3178 + 113.8500 205.0000 14.3178 + 113.8750 193.0000 13.8924 + 113.9000 180.0000 13.4164 + 113.9250 171.0000 13.0767 + 113.9500 185.0000 13.6015 + 113.9750 191.0000 13.8203 + 114.0000 191.0000 13.8203 + 114.0250 190.0000 13.7840 + 114.0500 179.0000 13.3791 + 114.0750 169.0000 13.0000 + 114.1000 175.0000 13.2288 + 114.1250 199.0000 14.1067 + 114.1500 179.0000 13.3791 + 114.1750 189.0000 13.7477 + 114.2000 210.0000 14.4914 + 114.2250 191.0000 13.8203 + 114.2500 206.0000 14.3527 + 114.2750 212.0000 14.5602 + 114.3000 210.0000 14.4914 + 114.3250 235.0000 15.3297 + 114.3500 205.0000 14.3178 + 114.3750 182.0000 13.4907 + 114.4000 185.0000 13.6015 + 114.4250 177.0000 13.3041 + 114.4500 171.0000 13.0767 + 114.4750 153.0000 12.3693 + 114.5000 154.0000 12.4097 + 114.5250 152.0000 12.3288 + 114.5500 170.0000 13.0384 + 114.5750 155.0000 12.4499 + 114.6000 156.0000 12.4900 + 114.6250 153.0000 12.3693 + 114.6500 171.0000 13.0767 + 114.6750 188.0000 13.7113 + 114.7000 181.0000 13.4536 + 114.7250 180.0000 13.4164 + 114.7500 201.0000 14.1774 + 114.7750 183.0000 13.5277 + 114.8000 191.0000 13.8203 + 114.8250 184.0000 13.5647 + 114.8500 187.0000 13.6748 + 114.8750 163.0000 12.7671 + 114.9000 161.0000 12.6886 + 114.9250 165.0000 12.8452 + 114.9500 160.0000 12.6491 + 114.9750 185.0000 13.6015 + 115.0000 198.0000 14.0712 + 115.0250 164.0000 12.8062 + 115.0500 176.0000 13.2665 + 115.0750 182.0000 13.4907 + 115.1000 172.0000 13.1149 + 115.1250 172.0000 13.1149 + 115.1500 186.0000 13.6382 + 115.1750 189.0000 13.7477 + 115.2000 181.0000 13.4536 + 115.2250 231.0000 15.1987 + 115.2500 209.0000 14.4568 + 115.2750 211.0000 14.5258 + 115.3000 227.0000 15.0665 + 115.3250 226.0000 15.0333 + 115.3500 193.0000 13.8924 + 115.3750 216.0000 14.6969 + 115.4000 211.0000 14.5258 + 115.4250 211.0000 14.5258 + 115.4500 193.0000 13.8924 + 115.4750 175.0000 13.2288 + 115.5000 192.0000 13.8564 + 115.5250 209.0000 14.4568 + 115.5500 196.0000 14.0000 + 115.5750 195.0000 13.9642 + 115.6000 230.0000 15.1658 + 115.6250 231.0000 15.1987 + 115.6500 239.0000 15.4596 + 115.6750 311.0000 17.6352 + 115.7000 285.0000 16.8819 + 115.7250 263.0000 16.2173 + 115.7500 289.0000 17.0000 + 115.7750 262.0000 16.1864 + 115.8000 214.0000 14.6287 + 115.8250 212.0000 14.5602 + 115.8500 218.0000 14.7648 + 115.8750 186.0000 13.6382 + 115.9000 191.0000 13.8203 + 115.9250 199.0000 14.1067 + 115.9500 183.0000 13.5277 + 115.9750 190.0000 13.7840 + 116.0000 168.0000 12.9615 + 116.0250 194.0000 13.9284 + 116.0500 191.0000 13.8203 + 116.0750 195.0000 13.9642 + 116.1000 207.0000 14.3875 + 116.1250 218.0000 14.7648 + 116.1500 222.0000 14.8997 + 116.1750 241.0000 15.5242 + 116.2000 242.0000 15.5563 + 116.2250 219.0000 14.7986 + 116.2500 189.0000 13.7477 + 116.2750 202.0000 14.2127 + 116.3000 202.0000 14.2127 + 116.3250 190.0000 13.7840 + 116.3500 225.0000 15.0000 + 116.3750 204.0000 14.2829 + 116.4000 223.0000 14.9332 + 116.4250 262.0000 16.1864 + 116.4500 258.0000 16.0624 + 116.4750 317.0000 17.8045 + 116.5000 312.0000 17.6635 + 116.5250 304.0000 17.4356 + 116.5500 299.0000 17.2916 + 116.5750 278.0000 16.6733 + 116.6000 265.0000 16.2788 + 116.6250 221.0000 14.8661 + 116.6500 205.0000 14.3178 + 116.6750 225.0000 15.0000 + 116.7000 211.0000 14.5258 + 116.7250 203.0000 14.2478 + 116.7500 192.0000 13.8564 + 116.7750 201.0000 14.1774 + 116.8000 197.0000 14.0357 + 116.8250 227.0000 15.0665 + 116.8500 184.0000 13.5647 + 116.8750 205.0000 14.3178 + 116.9000 216.0000 14.6969 + 116.9250 256.0000 16.0000 + 116.9500 253.0000 15.9060 + 116.9750 288.0000 16.9706 + 117.0000 249.0000 15.7797 + 117.0250 280.0000 16.7332 + 117.0500 219.0000 14.7986 + 117.0750 217.0000 14.7309 + 117.1000 249.0000 15.7797 + 117.1250 229.0000 15.1327 + 117.1500 198.0000 14.0712 + 117.1750 193.0000 13.8924 + 117.2000 178.0000 13.3417 + 117.2250 205.0000 14.3178 + 117.2500 210.0000 14.4914 + 117.2750 185.0000 13.6015 + 117.3000 179.0000 13.3791 + 117.3250 213.0000 14.5945 + 117.3500 233.0000 15.2643 + 117.3750 225.0000 15.0000 + 117.4000 232.0000 15.2315 + 117.4250 264.0000 16.2481 + 117.4500 271.0000 16.4621 + 117.4750 285.0000 16.8819 + 117.5000 273.0000 16.5227 + 117.5250 342.0000 18.4932 + 117.5500 326.0000 18.0555 + 117.5750 401.0000 20.0250 + 117.6000 358.0000 18.9209 + 117.6250 432.0000 20.7846 + 117.6500 331.0000 18.1934 + 117.6750 361.0000 19.0000 + 117.7000 330.0000 18.1659 + 117.7250 283.0000 16.8226 + 117.7500 282.0000 16.7929 + 117.7750 263.0000 16.2173 + 117.8000 245.0000 15.6525 + 117.8250 232.0000 15.2315 + 117.8500 219.0000 14.7986 + 117.8750 251.0000 15.8430 + 117.9000 241.0000 15.5242 + 117.9250 241.0000 15.5242 + 117.9500 265.0000 16.2788 + 117.9750 237.0000 15.3948 + 118.0000 251.0000 15.8430 + 118.0250 266.0000 16.3095 + 118.0500 291.0000 17.0587 + 118.0750 301.0000 17.3494 + 118.1000 300.0000 17.3205 + 118.1250 280.0000 16.7332 + 118.1500 332.0000 18.2209 + 118.1750 285.0000 16.8819 + 118.2000 276.0000 16.6132 + 118.2250 261.0000 16.1555 + 118.2500 262.0000 16.1864 + 118.2750 264.0000 16.2481 + 118.3000 280.0000 16.7332 + 118.3250 291.0000 17.0587 + 118.3500 292.0000 17.0880 + 118.3750 284.0000 16.8523 + 118.4000 266.0000 16.3095 + 118.4250 240.0000 15.4919 + 118.4500 219.0000 14.7986 + 118.4750 232.0000 15.2315 + 118.5000 218.0000 14.7648 + 118.5250 192.0000 13.8564 + 118.5500 181.0000 13.4536 + 118.5750 184.0000 13.5647 + 118.6000 219.0000 14.7986 + 118.6250 187.0000 13.6748 + 118.6500 174.0000 13.1909 + 118.6750 184.0000 13.5647 + 118.7000 204.0000 14.2829 + 118.7250 197.0000 14.0357 + 118.7500 217.0000 14.7309 + 118.7750 215.0000 14.6629 + 118.8000 213.0000 14.5945 + 118.8250 212.0000 14.5602 + 118.8500 218.0000 14.7648 + 118.8750 210.0000 14.4914 + 118.9000 224.0000 14.9666 + 118.9250 183.0000 13.5277 + 118.9500 178.0000 13.3417 + 118.9750 205.0000 14.3178 + 119.0000 184.0000 13.5647 + 119.0250 185.0000 13.6015 + 119.0500 180.0000 13.4164 + 119.0750 197.0000 14.0357 + 119.1000 154.0000 12.4097 + 119.1250 171.0000 13.0767 + 119.1500 181.0000 13.4536 + 119.1750 155.0000 12.4499 + 119.2000 145.0000 12.0416 + 119.2250 184.0000 13.5647 + 119.2500 180.0000 13.4164 + 119.2750 173.0000 13.1529 + 119.3000 168.0000 12.9615 + 119.3250 190.0000 13.7840 + 119.3500 169.0000 13.0000 + 119.3750 161.0000 12.6886 + 119.4000 174.0000 13.1909 + 119.4250 158.0000 12.5698 + 119.4500 167.0000 12.9228 + 119.4750 182.0000 13.4907 + 119.5000 165.0000 12.8452 + 119.5250 183.0000 13.5277 + 119.5500 168.0000 12.9615 + 119.5750 159.0000 12.6095 + 119.6000 161.0000 12.6886 + 119.6250 155.0000 12.4499 + 119.6500 189.0000 13.7477 + 119.6750 186.0000 13.6382 + 119.7000 150.0000 12.2474 + 119.7250 168.0000 12.9615 + 119.7500 186.0000 13.6382 + 119.7750 194.0000 13.9284 + 119.8000 155.0000 12.4499 + 119.8250 171.0000 13.0767 + 119.8500 151.0000 12.2882 + 119.8750 165.0000 12.8452 + 119.9000 175.0000 13.2288 + 119.9250 156.0000 12.4900 + 119.9500 163.0000 12.7671 + 119.9750 164.0000 12.8062 + 120.0000 166.0000 12.8841 + diff --git a/tools/Scripts/RelinkCrysfml.py b/tools/Scripts/RelinkCrysfml.py index e83b800d..1ff67539 100644 --- a/tools/Scripts/RelinkCrysfml.py +++ b/tools/Scripts/RelinkCrysfml.py @@ -8,28 +8,52 @@ CONFIG = Config.Config() +def pythonLibLocation(): + if len(sys.argv) > 1: + return os.path.join(sys.argv[1], 'lib') + return '@rpath' + def pythonDylib(): - python_location = sys.argv[1] python_dylib_file = { + #'macos': 'Python', 'macos': 'libpython3.7m.dylib', - 'ubuntu': 'libpython3.7m.so.1.0' + 'ubuntu': 'libpython3.7m.dylib', + 'windows': None }[CONFIG.os] - return os.path.join(python_location, 'lib', python_dylib_file) + return os.path.join(pythonLibLocation(), python_dylib_file) def crysfmlPythonDylib(): d = { 'macos': '/Library/Frameworks/Python.framework/Versions/3.7/Python', - 'ubuntu': 'libpython3.7m.so.1.0' + 'ubuntu': 'libpython3.7m.so.1.0', + 'windows': None + } + return d[CONFIG.os] + +def rpath(): + d = { + 'macos': '@executable_path', + 'ubuntu': './libsLinux/lib', + 'windows': None + } + return d[CONFIG.os] + +def crysfmlRpath(): + d = { + 'macos': '/opt/intel//compilers_and_libraries_2020.2.258/mac/compiler/lib', + 'ubuntu': None, + 'windows': None } return d[CONFIG.os] -def crysfmlSo(): +def crysfmlSoFile(): lib = CONFIG['ci']['pyinstaller']['libs'][CONFIG.os] lib_path = importlib.import_module(lib).__path__[0] so_location = os.path.join(lib_path, 'CFML_api') so_file = { 'macos': 'crysfml_api.so', - 'ubuntu': 'crysfml_api.so' + 'ubuntu': 'crysfml_api.so', + 'windows': None }[CONFIG.os] return os.path.join(so_location, so_file) @@ -40,19 +64,32 @@ def relinkCrysfml(): try: message = f'relink CrysFML from default Python dylib for platform {CONFIG.os}' if CONFIG.os == 'macos': - Functions.run('install_name_tool', '-change', crysfmlPythonDylib(), pythonDylib(), crysfmlSo()) + Functions.run('otool', '-l', crysfmlSoFile()) + Functions.run('otool', '-L', crysfmlSoFile()) + Functions.run('install_name_tool', '-rpath', crysfmlRpath(), rpath(), crysfmlSoFile()) + #Functions.run('install_name_tool', '-add_rpath', rpath(), crysfmlSoFile()) + #Functions.run('install_name_tool', '-add_rpath', pythonLibLocation(), crysfmlSoFile()) + Functions.run('install_name_tool', '-change', crysfmlPythonDylib(), pythonDylib(), crysfmlSoFile()) + Functions.run('otool', '-l', crysfmlSoFile()) + Functions.run('otool', '-L', crysfmlSoFile()) elif CONFIG.os == 'ubuntu': Functions.run('sudo', 'apt-get', 'update', '-y') Functions.run('sudo', 'apt-get', 'install', '-y', 'patchelf') + Functions.run('sudo', 'apt-get', 'install', '-y', 'chrpath') # Python lib - Functions.run('patchelf', '--replace-needed', crysfmlPythonDylib(), pythonDylib(), crysfmlSo()) + Functions.run('chrpath', '-l', crysfmlSoFile()) + Functions.run('patchelf', '--set-rpath', rpath(), crysfmlSoFile()) + #Functions.run('patchelf', '--replace-needed', crysfmlPythonDylib(), pythonDylib(), crysfmlSoFile()) # Intel fortran libs # Instead of LD_LIBRARY_PATH... - import libsLinux - lib_path = os.path.join(list(libsLinux.__path__)[0], 'lib') - libs = ['libifcoremt.so.5', 'libifport.so.5', 'libimf.so', 'libintlc.so.5', 'libsvml.so'] - for lib in libs: - Functions.run('patchelf', '--replace-needed', lib, os.path.join(lib_path, lib), crysfmlSo()) + #import libsLinux + #lib_path = os.path.join(list(libsLinux.__path__)[0], 'lib') + #libs = ['libifcoremt.so.5', 'libifport.so.5', 'libimf.so', 'libintlc.so.5', 'libsvml.so'] + #for lib in libs: + # Functions.run('patchelf', '--replace-needed', lib, os.path.join(lib_path, lib), crysfmlSoFile()) + # https://nehckl0.medium.com/creating-relocatable-linux-executables-by-setting-rpath-with-origin-45de573a2e98 + # https://github.com/microsoft/ShaderConductor/issues/52 + # https://unix.stackexchange.com/questions/479421/how-to-link-to-a-shared-library-with-a-relative-path else: Functions.printFailMessage(f'Platform {CONFIG.os} is unsupported') except Exception as exception: @@ -63,7 +100,10 @@ def relinkCrysfml(): if __name__ == "__main__": - print("pythonDylib:", pythonDylib()) - print("crysfmlPythonDylib:", crysfmlPythonDylib()) - print("crysfmlSo:", crysfmlSo()) + Functions.printNeutralMessage(f"pythonLibLocation: {pythonLibLocation()}") + Functions.printNeutralMessage(f"crysfmlPythonDylib: {crysfmlPythonDylib()}") + Functions.printNeutralMessage(f"pythonDylib: {pythonDylib()}") + Functions.printNeutralMessage(f"crysfmlRpath: {crysfmlRpath()}") + Functions.printNeutralMessage(f"rpath: {rpath()}") + Functions.printNeutralMessage(f"crysfmlSoFile: {crysfmlSoFile()}") relinkCrysfml() From 13ec3f5ff852fa5b22a783b48bcb8c7bd8451904 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 4 Dec 2020 16:17:36 +0100 Subject: [PATCH 115/312] Update branches --- poetry.lock | 1628 ++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- 2 files changed, 1629 insertions(+), 1 deletion(-) create mode 100644 poetry.lock diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 00000000..eef42d0f --- /dev/null +++ b/poetry.lock @@ -0,0 +1,1628 @@ +[[package]] +category = "dev" +description = "Disable App Nap on macOS >= 10.9" +marker = "sys_platform == \"darwin\" or platform_system == \"Darwin\"" +name = "appnope" +optional = false +python-versions = "*" +version = "0.1.2" + +[[package]] +category = "dev" +description = "The secure Argon2 password hashing algorithm." +name = "argon2-cffi" +optional = false +python-versions = "*" +version = "20.1.0" + +[package.dependencies] +cffi = ">=1.0.0" +six = "*" + +[package.extras] +dev = ["coverage (>=5.0.2)", "hypothesis", "pytest", "sphinx", "wheel", "pre-commit"] +docs = ["sphinx"] +tests = ["coverage (>=5.0.2)", "hypothesis", "pytest"] + +[[package]] +category = "main" +description = "Safe, minimalistic evaluator of python expression using ast module" +name = "asteval" +optional = false +python-versions = ">=3.6" +version = "0.9.21" + +[[package]] +category = "dev" +description = "Async generators and context managers for Python 3.5+" +name = "async-generator" +optional = false +python-versions = ">=3.5" +version = "1.10" + +[[package]] +category = "dev" +description = "Atomic file writes." +marker = "sys_platform == \"win32\"" +name = "atomicwrites" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.4.0" + +[[package]] +category = "dev" +description = "Classes Without Boilerplate" +name = "attrs" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "20.3.0" + +[package.extras] +dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] +docs = ["furo", "sphinx", "zope.interface"] +tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] + +[[package]] +category = "dev" +description = "Specifications for callback functions passed in to an API" +name = "backcall" +optional = false +python-versions = "*" +version = "0.2.0" + +[[package]] +category = "dev" +description = "An easy safelist-based HTML-sanitizing tool." +name = "bleach" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "3.2.1" + +[package.dependencies] +packaging = "*" +six = ">=1.9.0" +webencodings = "*" + +[[package]] +category = "main" +description = "Data fitting with bayesian uncertainty analysis" +name = "bumps" +optional = false +python-versions = "*" +version = "0.7.18" + +[package.dependencies] +six = "*" + +[[package]] +category = "dev" +description = "Python package for providing Mozilla's CA Bundle." +name = "certifi" +optional = false +python-versions = "*" +version = "2020.11.8" + +[[package]] +category = "dev" +description = "Foreign Function Interface for Python calling C code." +name = "cffi" +optional = false +python-versions = "*" +version = "1.14.4" + +[package.dependencies] +pycparser = "*" + +[[package]] +category = "dev" +description = "Universal encoding detector for Python 2 and 3" +name = "chardet" +optional = false +python-versions = "*" +version = "3.0.4" + +[[package]] +category = "dev" +description = "Cross-platform colored terminal text." +marker = "sys_platform == \"win32\"" +name = "colorama" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.4.4" + +[[package]] +category = "main" +description = "PNPD data analysis" +name = "cryspy" +optional = false +python-versions = "*" +version = "0.4.20" + +[package.dependencies] +numpy = "*" +pycifstar = "*" +scipy = "*" + +[[package]] +category = "main" +description = "Composable style cycles" +name = "cycler" +optional = false +python-versions = "*" +version = "0.10.0" + +[package.dependencies] +six = "*" + +[[package]] +category = "dev" +description = "Decorators for Humans" +name = "decorator" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*" +version = "4.4.2" + +[[package]] +category = "dev" +description = "XML bomb protection for Python stdlib modules" +name = "defusedxml" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.6.0" + +[[package]] +category = "main" +description = "" +name = "easycore" +optional = false +python-versions = "^3.6, >=3.6.1" # "^3.8" generates error when installing PySide2 in easyAppGui +version = "0.0.1" + +[package.dependencies] +asteval = "^0.9.21" +bumps = "^0.7" +lmfit = "^1.0" +monty = "^4.0.2" +numpy = "^1.19" +pint = "^0.16" +uncertainties = "^3.1" + +[package.source] +reference = "b8250526563b27fa584659a984f759bd9398c79f" +type = "git" +url = 'https://github.com/easyScience/easyCore.git' +[[package]] +category = "dev" +description = "Discover and load entry points from installed packages." +name = "entrypoints" +optional = false +python-versions = ">=2.7" +version = "0.3" + +[[package]] +category = "main" +description = "Clean single-source support for Python 3 and 2" +name = "future" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "0.18.2" + +[[package]] +category = "dev" +description = "Internationalized Domain Names in Applications (IDNA)" +name = "idna" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.10" + +[[package]] +category = "main" +description = "Read metadata from Python packages" +marker = "python_version < \"3.8\"" +name = "importlib-metadata" +optional = false +python-versions = ">=3.6" +version = "3.1.1" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] + +[[package]] +category = "dev" +description = "IPython Kernel for Jupyter" +name = "ipykernel" +optional = false +python-versions = ">=3.5" +version = "5.3.4" + +[package.dependencies] +appnope = "*" +ipython = ">=5.0.0" +jupyter-client = "*" +tornado = ">=4.2" +traitlets = ">=4.1.0" + +[package.extras] +test = ["pytest (!=5.3.4)", "pytest-cov", "flaky", "nose"] + +[[package]] +category = "dev" +description = "IPython: Productive Interactive Computing" +name = "ipython" +optional = false +python-versions = ">=3.7" +version = "7.19.0" + +[package.dependencies] +appnope = "*" +backcall = "*" +colorama = "*" +decorator = "*" +jedi = ">=0.10" +pexpect = ">4.3" +pickleshare = "*" +prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" +pygments = "*" +setuptools = ">=18.5" +traitlets = ">=4.2" + +[package.extras] +all = ["Sphinx (>=1.3)", "ipykernel", "ipyparallel", "ipywidgets", "nbconvert", "nbformat", "nose (>=0.10.1)", "notebook", "numpy (>=1.14)", "pygments", "qtconsole", "requests", "testpath"] +doc = ["Sphinx (>=1.3)"] +kernel = ["ipykernel"] +nbconvert = ["nbconvert"] +nbformat = ["nbformat"] +notebook = ["notebook", "ipywidgets"] +parallel = ["ipyparallel"] +qtconsole = ["qtconsole"] +test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.14)"] + +[[package]] +category = "dev" +description = "Vestigial utilities from IPython" +name = "ipython-genutils" +optional = false +python-versions = "*" +version = "0.2.0" + +[[package]] +category = "dev" +description = "An autocompletion tool for Python that can be used for text editors." +name = "jedi" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.17.2" + +[package.dependencies] +parso = ">=0.7.0,<0.8.0" + +[package.extras] +qa = ["flake8 (3.7.9)"] +testing = ["Django (<3.1)", "colorama", "docopt", "pytest (>=3.9.0,<5.0.0)"] + +[[package]] +category = "dev" +description = "A very fast and expressive template engine." +name = "jinja2" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.11.2" + +[package.dependencies] +MarkupSafe = ">=0.23" + +[package.extras] +i18n = ["Babel (>=0.8)"] + +[[package]] +category = "dev" +description = "A Python implementation of the JSON5 data format." +name = "json5" +optional = false +python-versions = "*" +version = "0.9.5" + +[package.extras] +dev = ["hypothesis"] + +[[package]] +category = "dev" +description = "An implementation of JSON Schema validation for Python" +name = "jsonschema" +optional = false +python-versions = "*" +version = "3.2.0" + +[package.dependencies] +attrs = ">=17.4.0" +pyrsistent = ">=0.14.0" +setuptools = "*" +six = ">=1.11.0" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = "*" + +[package.extras] +format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] +format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"] + +[[package]] +category = "dev" +description = "Jupyter protocol implementation and client libraries" +name = "jupyter-client" +optional = false +python-versions = ">=3.5" +version = "6.1.7" + +[package.dependencies] +jupyter-core = ">=4.6.0" +python-dateutil = ">=2.1" +pyzmq = ">=13" +tornado = ">=4.1" +traitlets = "*" + +[package.extras] +test = ["ipykernel", "ipython", "mock", "pytest", "pytest-asyncio", "async-generator", "pytest-timeout"] + +[[package]] +category = "dev" +description = "Jupyter core package. A base package on which Jupyter projects rely." +name = "jupyter-core" +optional = false +python-versions = ">=3.6" +version = "4.7.0" + +[package.dependencies] +pywin32 = ">=1.0" +traitlets = "*" + +[[package]] +category = "dev" +description = "The JupyterLab notebook server extension." +name = "jupyterlab" +optional = false +python-versions = ">=3.5" +version = "2.2.9" + +[package.dependencies] +jinja2 = ">=2.10" +jupyterlab-server = ">=1.1.5,<2.0" +notebook = ">=4.3.1" +tornado = "<6.0.0 || >6.0.0,<6.0.1 || >6.0.1,<6.0.2 || >6.0.2" + +[package.extras] +docs = ["jsx-lexer", "recommonmark", "sphinx", "sphinx-rtd-theme", "sphinx-copybutton"] +test = ["pytest", "pytest-check-links", "requests", "wheel", "virtualenv"] + +[[package]] +category = "dev" +description = "Pygments theme using JupyterLab CSS variables" +name = "jupyterlab-pygments" +optional = false +python-versions = "*" +version = "0.1.2" + +[package.dependencies] +pygments = ">=2.4.1,<3" + +[[package]] +category = "dev" +description = "JupyterLab Server" +name = "jupyterlab-server" +optional = false +python-versions = ">=3.5" +version = "1.2.0" + +[package.dependencies] +jinja2 = ">=2.10" +json5 = "*" +jsonschema = ">=3.0.1" +notebook = ">=4.2.0" +requests = "*" + +[package.extras] +test = ["pytest", "requests"] + +[[package]] +category = "main" +description = "A fast implementation of the Cassowary constraint solver" +name = "kiwisolver" +optional = false +python-versions = ">=3.6" +version = "1.3.1" + +[[package]] +category = "main" +description = "" +marker = "sys_platform == \"darwin\"" +name = "libsdarwin" +optional = false +python-versions = "^3.7, <3.8" +version = "0.0.1" + +[package.source] +reference = "9239ddff2be8473b15c83db629b2a2ed36918750" +type = "git" +url = 'ssh://git@github.com/easyScience/libsDarwin.git' +[[package]] +category = "main" +description = "" +marker = "sys_platform == \"linux\"" +name = "libslinux" +optional = false +python-versions = "^3.7, <3.8" +version = "0.0.1" + +[package.source] +reference = "f2330d82714b2b1f7958afb1179f6bfa5eb71783" +type = "git" +url = 'ssh://git@github.com/easyScience/libsLinux.git' +[[package]] +category = "main" +description = "" +marker = "sys_platform == \"win32\"" +name = "libswin32" +optional = false +python-versions = "^3.7, <3.8" +version = "0.0.1" + +[package.source] +reference = "ce7689dae1e4c0ce599d0281a40614f73a228a71" +type = "git" +url = 'ssh://git@github.com/easyScience/libsWin32.git' +[[package]] +category = "main" +description = "Least-Squares Minimization with Bounds and Constraints" +name = "lmfit" +optional = false +python-versions = ">=3.5" +version = "1.0.1" + +[package.dependencies] +asteval = ">=0.9.16" +numpy = ">=1.16" +scipy = ">=1.2" +uncertainties = ">=3.0.1" + +[[package]] +category = "dev" +description = "Safely add untrusted strings to HTML/XML markup." +name = "markupsafe" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "1.1.1" + +[[package]] +category = "main" +description = "Python plotting package" +name = "matplotlib" +optional = false +python-versions = ">=3.6" +version = "3.2.2" + +[package.dependencies] +cycler = ">=0.10" +kiwisolver = ">=1.0.1" +numpy = ">=1.11" +pyparsing = ">=2.0.1,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" +python-dateutil = ">=2.1" + +[[package]] +category = "dev" +description = "The fastest markdown parser in pure Python" +name = "mistune" +optional = false +python-versions = "*" +version = "0.8.4" + +[[package]] +category = "main" +description = "Monty is the missing complement to Python." +name = "monty" +optional = false +python-versions = ">=3.5" +version = "4.0.2" + +[package.extras] +yaml = ["ruamel.yaml"] + +[[package]] +category = "dev" +description = "More routines for operating on iterables, beyond itertools" +name = "more-itertools" +optional = false +python-versions = ">=3.5" +version = "8.6.0" + +[[package]] +category = "dev" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +name = "nbclient" +optional = false +python-versions = ">=3.6" +version = "0.5.1" + +[package.dependencies] +async-generator = "*" +jupyter-client = ">=6.1.5" +nbformat = ">=5.0" +nest-asyncio = "*" +traitlets = ">=4.2" + +[package.extras] +dev = ["codecov", "coverage", "ipython", "ipykernel", "ipywidgets", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "tox", "bumpversion", "xmltodict", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "black"] +sphinx = ["Sphinx (>=1.7)", "sphinx-book-theme", "mock", "moto", "myst-parser"] +test = ["codecov", "coverage", "ipython", "ipykernel", "ipywidgets", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "tox", "bumpversion", "xmltodict", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "black"] + +[[package]] +category = "dev" +description = "Converting Jupyter Notebooks" +name = "nbconvert" +optional = false +python-versions = ">=3.6" +version = "6.0.7" + +[package.dependencies] +bleach = "*" +defusedxml = "*" +entrypoints = ">=0.2.2" +jinja2 = ">=2.4" +jupyter-core = "*" +jupyterlab-pygments = "*" +mistune = ">=0.8.1,<2" +nbclient = ">=0.5.0,<0.6.0" +nbformat = ">=4.4" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +testpath = "*" +traitlets = ">=4.2" + +[package.extras] +all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (0.2.2)", "tornado (>=4.0)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] +docs = ["sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] +serve = ["tornado (>=4.0)"] +test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (0.2.2)"] +webpdf = ["pyppeteer (0.2.2)"] + +[[package]] +category = "dev" +description = "The Jupyter Notebook format" +name = "nbformat" +optional = false +python-versions = ">=3.5" +version = "5.0.8" + +[package.dependencies] +ipython-genutils = "*" +jsonschema = ">=2.4,<2.5.0 || >2.5.0" +jupyter-core = "*" +traitlets = ">=4.1" + +[package.extras] +fast = ["fastjsonschema"] +test = ["fastjsonschema", "testpath", "pytest", "pytest-cov"] + +[[package]] +category = "dev" +description = "Patch asyncio to allow nested event loops" +name = "nest-asyncio" +optional = false +python-versions = ">=3.5" +version = "1.4.3" + +[[package]] +category = "dev" +description = "A web-based notebook environment for interactive computing" +name = "notebook" +optional = false +python-versions = ">=3.5" +version = "6.1.5" + +[package.dependencies] +Send2Trash = "*" +argon2-cffi = "*" +ipykernel = "*" +ipython-genutils = "*" +jinja2 = "*" +jupyter-client = ">=5.3.4" +jupyter-core = ">=4.6.1" +nbconvert = "*" +nbformat = "*" +prometheus-client = "*" +pyzmq = ">=17" +terminado = ">=0.8.3" +tornado = ">=5.0" +traitlets = ">=4.2.1" + +[package.extras] +docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt"] +test = ["nose", "coverage", "requests", "nose-warnings-filters", "nbval", "nose-exclude", "selenium", "pytest", "pytest-cov", "requests-unixsocket"] + +[[package]] +category = "main" +description = "NumPy is the fundamental package for array computing with Python." +name = "numpy" +optional = false +python-versions = ">=3.6" +version = "1.19.4" + +[[package]] +category = "main" +description = "Core utilities for Python packages" +name = "packaging" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "20.7" + +[package.dependencies] +pyparsing = ">=2.0.2" + +[[package]] +category = "dev" +description = "Utilities for writing pandoc filters in python" +name = "pandocfilters" +optional = false +python-versions = "*" +version = "1.4.3" + +[[package]] +category = "dev" +description = "A Python Parser" +name = "parso" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.7.1" + +[package.extras] +testing = ["docopt", "pytest (>=3.0.7)"] + +[[package]] +category = "dev" +description = "Pexpect allows easy control of interactive console applications." +marker = "sys_platform != \"win32\"" +name = "pexpect" +optional = false +python-versions = "*" +version = "4.8.0" + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +category = "dev" +description = "Tiny 'shelve'-like database with concurrency support" +name = "pickleshare" +optional = false +python-versions = "*" +version = "0.7.5" + +[[package]] +category = "main" +description = "Physical quantities module" +name = "pint" +optional = false +python-versions = ">=3.6" +version = "0.16.1" + +[package.dependencies] +packaging = "*" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = "*" + +[package.extras] +numpy = ["numpy (>=1.14)"] +test = ["pytest", "pytest-mpl", "pytest-cov"] +uncertainties = ["uncertainties (>=3.0)"] + +[[package]] +category = "dev" +description = "plugin and hook calling mechanisms for python" +name = "pluggy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.13.1" + +[package.dependencies] +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + +[package.extras] +dev = ["pre-commit", "tox"] + +[[package]] +category = "dev" +description = "Python client for the Prometheus monitoring system." +name = "prometheus-client" +optional = false +python-versions = "*" +version = "0.9.0" + +[package.extras] +twisted = ["twisted"] + +[[package]] +category = "dev" +description = "Library for building powerful interactive command lines in Python" +name = "prompt-toolkit" +optional = false +python-versions = ">=3.6.1" +version = "3.0.8" + +[package.dependencies] +wcwidth = "*" + +[[package]] +category = "dev" +description = "Run a subprocess in a pseudo terminal" +marker = "sys_platform != \"win32\" or os_name != \"nt\"" +name = "ptyprocess" +optional = false +python-versions = "*" +version = "0.6.0" + +[[package]] +category = "dev" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +name = "py" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.9.0" + +[[package]] +category = "main" +description = "PyCifStar is a class library for data manipulation provided in the CIF/STAR File." +name = "pycifstar" +optional = false +python-versions = "*" +version = "0.2.7" + +[[package]] +category = "dev" +description = "C parser in Python" +name = "pycparser" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.20" + +[[package]] +category = "dev" +description = "Pygments is a syntax highlighting package written in Python." +name = "pygments" +optional = false +python-versions = ">=3.5" +version = "2.7.2" + +[[package]] +category = "main" +description = "Python parsing module" +name = "pyparsing" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.4.7" + +[[package]] +category = "dev" +description = "Persistent/Functional/Immutable data structures" +name = "pyrsistent" +optional = false +python-versions = ">=3.5" +version = "0.17.3" + +[[package]] +category = "dev" +description = "pytest: simple powerful testing with Python" +name = "pytest" +optional = false +python-versions = ">=3.5" +version = "5.4.3" + +[package.dependencies] +atomicwrites = ">=1.0" +attrs = ">=17.4.0" +colorama = "*" +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + +[package.extras] +checkqa-mypy = ["mypy (v0.761)"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +category = "main" +description = "Extensions to the standard Python datetime module" +name = "python-dateutil" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +version = "2.8.1" + +[package.dependencies] +six = ">=1.5" + +[[package]] +category = "dev" +description = "Python for Window Extensions" +marker = "sys_platform == \"win32\"" +name = "pywin32" +optional = false +python-versions = "*" +version = "300" + +[[package]] +category = "dev" +description = "Python bindings for the winpty library" +marker = "os_name == \"nt\"" +name = "pywinpty" +optional = false +python-versions = "*" +version = "0.5.7" + +[[package]] +category = "dev" +description = "Python bindings for 0MQ" +name = "pyzmq" +optional = false +python-versions = ">=3.5" +version = "20.0.0" + +[package.dependencies] +cffi = "*" +py = "*" + +[[package]] +category = "dev" +description = "Python HTTP for Humans." +name = "requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.25.0" + +[package.dependencies] +certifi = ">=2017.4.17" +chardet = ">=3.0.2,<4" +idna = ">=2.5,<3" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] + +[[package]] +category = "main" +description = "SciPy: Scientific Library for Python" +name = "scipy" +optional = false +python-versions = ">=3.6" +version = "1.5.4" + +[package.dependencies] +numpy = ">=1.14.5" + +[[package]] +category = "dev" +description = "Send file to trash natively under Mac OS X, Windows and Linux." +name = "send2trash" +optional = false +python-versions = "*" +version = "1.5.0" + +[[package]] +category = "main" +description = "Python 2 and 3 compatibility utilities" +name = "six" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +version = "1.15.0" + +[[package]] +category = "dev" +description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +name = "terminado" +optional = false +python-versions = ">=3.6" +version = "0.9.1" + +[package.dependencies] +ptyprocess = "*" +pywinpty = ">=0.5" +tornado = ">=4" + +[[package]] +category = "dev" +description = "Test utilities for code working with files and commands" +name = "testpath" +optional = false +python-versions = "*" +version = "0.4.4" + +[package.extras] +test = ["pathlib2"] + +[[package]] +category = "dev" +description = "Python Library for Tom's Obvious, Minimal Language" +name = "toml" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "0.10.2" + +[[package]] +category = "dev" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +name = "tornado" +optional = false +python-versions = ">= 3.5" +version = "6.1" + +[[package]] +category = "dev" +description = "Traitlets Python configuration system" +name = "traitlets" +optional = false +python-versions = ">=3.7" +version = "5.0.5" + +[package.dependencies] +ipython-genutils = "*" + +[package.extras] +test = ["pytest"] + +[[package]] +category = "main" +description = "Transparent calculations with uncertainties on the quantities involved (aka error propagation); fast calculation of derivatives" +name = "uncertainties" +optional = false +python-versions = "*" +version = "3.1.5" + +[package.dependencies] +future = "*" + +[package.extras] +all = ["numpy", "sphinx", "nose"] +docs = ["sphinx"] +optional = ["numpy"] +tests = ["nose", "numpy"] + +[[package]] +category = "dev" +description = "HTTP library with thread-safe connection pooling, file post, and more." +name = "urllib3" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +version = "1.26.2" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] + +[[package]] +category = "dev" +description = "Measures the displayed width of unicode strings in a terminal" +name = "wcwidth" +optional = false +python-versions = "*" +version = "0.2.5" + +[[package]] +category = "dev" +description = "Character encoding aliases for legacy web content" +name = "webencodings" +optional = false +python-versions = "*" +version = "0.5.1" + +[[package]] +category = "main" +description = "Backport of pathlib-compatible object wrapper for zip files" +marker = "python_version < \"3.8\"" +name = "zipp" +optional = false +python-versions = ">=3.6" +version = "3.4.0" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] + +[metadata] +content-hash = "6ae14264328b5983485dd85fd7066066ad405e718d957888737d4425b8d70476" +python-versions = "^3.7, <3.8" + +[metadata.files] +appnope = [ + {file = "appnope-0.1.2-py2.py3-none-any.whl", hash = "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442"}, + {file = "appnope-0.1.2.tar.gz", hash = "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a"}, +] +argon2-cffi = [ + {file = "argon2-cffi-20.1.0.tar.gz", hash = "sha256:d8029b2d3e4b4cea770e9e5a0104dd8fa185c1724a0f01528ae4826a6d25f97d"}, + {file = "argon2_cffi-20.1.0-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:6ea92c980586931a816d61e4faf6c192b4abce89aa767ff6581e6ddc985ed003"}, + {file = "argon2_cffi-20.1.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:05a8ac07c7026542377e38389638a8a1e9b78f1cd8439cd7493b39f08dd75fbf"}, + {file = "argon2_cffi-20.1.0-cp27-cp27m-win32.whl", hash = "sha256:0bf066bc049332489bb2d75f69216416329d9dc65deee127152caeb16e5ce7d5"}, + {file = "argon2_cffi-20.1.0-cp27-cp27m-win_amd64.whl", hash = "sha256:57358570592c46c420300ec94f2ff3b32cbccd10d38bdc12dc6979c4a8484fbc"}, + {file = "argon2_cffi-20.1.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:7d455c802727710e9dfa69b74ccaab04568386ca17b0ad36350b622cd34606fe"}, + {file = "argon2_cffi-20.1.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:b160416adc0f012fb1f12588a5e6954889510f82f698e23ed4f4fa57f12a0647"}, + {file = "argon2_cffi-20.1.0-cp35-cp35m-win32.whl", hash = "sha256:9bee3212ba4f560af397b6d7146848c32a800652301843df06b9e8f68f0f7361"}, + {file = "argon2_cffi-20.1.0-cp35-cp35m-win_amd64.whl", hash = "sha256:392c3c2ef91d12da510cfb6f9bae52512a4552573a9e27600bdb800e05905d2b"}, + {file = "argon2_cffi-20.1.0-cp36-cp36m-win32.whl", hash = "sha256:ba7209b608945b889457f949cc04c8e762bed4fe3fec88ae9a6b7765ae82e496"}, + {file = "argon2_cffi-20.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:da7f0445b71db6d3a72462e04f36544b0de871289b0bc8a7cc87c0f5ec7079fa"}, + {file = "argon2_cffi-20.1.0-cp37-abi3-macosx_10_6_intel.whl", hash = "sha256:cc0e028b209a5483b6846053d5fd7165f460a1f14774d79e632e75e7ae64b82b"}, + {file = "argon2_cffi-20.1.0-cp37-cp37m-win32.whl", hash = "sha256:18dee20e25e4be86680b178b35ccfc5d495ebd5792cd00781548d50880fee5c5"}, + {file = "argon2_cffi-20.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6678bb047373f52bcff02db8afab0d2a77d83bde61cfecea7c5c62e2335cb203"}, + {file = "argon2_cffi-20.1.0-cp38-cp38-win32.whl", hash = "sha256:77e909cc756ef81d6abb60524d259d959bab384832f0c651ed7dcb6e5ccdbb78"}, + {file = "argon2_cffi-20.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:9dfd5197852530294ecb5795c97a823839258dfd5eb9420233c7cfedec2058f2"}, + {file = "argon2_cffi-20.1.0-cp39-cp39-win32.whl", hash = "sha256:e2db6e85c057c16d0bd3b4d2b04f270a7467c147381e8fd73cbbe5bc719832be"}, + {file = "argon2_cffi-20.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a84934bd818e14a17943de8099d41160da4a336bcc699bb4c394bbb9b94bd32"}, +] +asteval = [ + {file = "asteval-0.9.21.tar.gz", hash = "sha256:ee14ba2211cda1c76114e3e7b552cdd57e940309203d5f4106e6d6f2c2346a2e"}, +] +async-generator = [ + {file = "async_generator-1.10-py3-none-any.whl", hash = "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b"}, + {file = "async_generator-1.10.tar.gz", hash = "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"}, +] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"}, + {file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"}, +] +backcall = [ + {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, + {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, +] +bleach = [ + {file = "bleach-3.2.1-py2.py3-none-any.whl", hash = "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd"}, + {file = "bleach-3.2.1.tar.gz", hash = "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080"}, +] +bumps = [ + {file = "bumps-0.7.18.tar.gz", hash = "sha256:3217d4fd3ec767448d742f3b6ff527cc3817f2421b9a9a8456e1d8ee4a9b1087"}, +] +certifi = [ + {file = "certifi-2020.11.8-py2.py3-none-any.whl", hash = "sha256:1f422849db327d534e3d0c5f02a263458c3955ec0aae4ff09b95f195c59f4edd"}, + {file = "certifi-2020.11.8.tar.gz", hash = "sha256:f05def092c44fbf25834a51509ef6e631dc19765ab8a57b4e7ab85531f0a9cf4"}, +] +cffi = [ + {file = "cffi-1.14.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ebb253464a5d0482b191274f1c8bf00e33f7e0b9c66405fbffc61ed2c839c775"}, + {file = "cffi-1.14.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c24d61263f511551f740d1a065eb0212db1dbbbbd241db758f5244281590c06"}, + {file = "cffi-1.14.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9f7a31251289b2ab6d4012f6e83e58bc3b96bd151f5b5262467f4bb6b34a7c26"}, + {file = "cffi-1.14.4-cp27-cp27m-win32.whl", hash = "sha256:5cf4be6c304ad0b6602f5c4e90e2f59b47653ac1ed9c662ed379fe48a8f26b0c"}, + {file = "cffi-1.14.4-cp27-cp27m-win_amd64.whl", hash = "sha256:f60567825f791c6f8a592f3c6e3bd93dd2934e3f9dac189308426bd76b00ef3b"}, + {file = "cffi-1.14.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:c6332685306b6417a91b1ff9fae889b3ba65c2292d64bd9245c093b1b284809d"}, + {file = "cffi-1.14.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d9efd8b7a3ef378dd61a1e77367f1924375befc2eba06168b6ebfa903a5e59ca"}, + {file = "cffi-1.14.4-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:51a8b381b16ddd370178a65360ebe15fbc1c71cf6f584613a7ea08bfad946698"}, + {file = "cffi-1.14.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:1d2c4994f515e5b485fd6d3a73d05526aa0fcf248eb135996b088d25dfa1865b"}, + {file = "cffi-1.14.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:af5c59122a011049aad5dd87424b8e65a80e4a6477419c0c1015f73fb5ea0293"}, + {file = "cffi-1.14.4-cp35-cp35m-win32.whl", hash = "sha256:594234691ac0e9b770aee9fcdb8fa02c22e43e5c619456efd0d6c2bf276f3eb2"}, + {file = "cffi-1.14.4-cp35-cp35m-win_amd64.whl", hash = "sha256:64081b3f8f6f3c3de6191ec89d7dc6c86a8a43911f7ecb422c60e90c70be41c7"}, + {file = "cffi-1.14.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f803eaa94c2fcda012c047e62bc7a51b0bdabda1cad7a92a522694ea2d76e49f"}, + {file = "cffi-1.14.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:105abaf8a6075dc96c1fe5ae7aae073f4696f2905fde6aeada4c9d2926752362"}, + {file = "cffi-1.14.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0638c3ae1a0edfb77c6765d487fee624d2b1ee1bdfeffc1f0b58c64d149e7eec"}, + {file = "cffi-1.14.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:7c6b1dece89874d9541fc974917b631406233ea0440d0bdfbb8e03bf39a49b3b"}, + {file = "cffi-1.14.4-cp36-cp36m-win32.whl", hash = "sha256:155136b51fd733fa94e1c2ea5211dcd4c8879869008fc811648f16541bf99668"}, + {file = "cffi-1.14.4-cp36-cp36m-win_amd64.whl", hash = "sha256:6bc25fc545a6b3d57b5f8618e59fc13d3a3a68431e8ca5fd4c13241cd70d0009"}, + {file = "cffi-1.14.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a7711edca4dcef1a75257b50a2fbfe92a65187c47dab5a0f1b9b332c5919a3fb"}, + {file = "cffi-1.14.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:00e28066507bfc3fe865a31f325c8391a1ac2916219340f87dfad602c3e48e5d"}, + {file = "cffi-1.14.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:798caa2a2384b1cbe8a2a139d80734c9db54f9cc155c99d7cc92441a23871c03"}, + {file = "cffi-1.14.4-cp37-cp37m-win32.whl", hash = "sha256:00a1ba5e2e95684448de9b89888ccd02c98d512064b4cb987d48f4b40aa0421e"}, + {file = "cffi-1.14.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9cc46bc107224ff5b6d04369e7c595acb700c3613ad7bcf2e2012f62ece80c35"}, + {file = "cffi-1.14.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:df5169c4396adc04f9b0a05f13c074df878b6052430e03f50e68adf3a57aa28d"}, + {file = "cffi-1.14.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9ffb888f19d54a4d4dfd4b3f29bc2c16aa4972f1c2ab9c4ab09b8ab8685b9c2b"}, + {file = "cffi-1.14.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8d6603078baf4e11edc4168a514c5ce5b3ba6e3e9c374298cb88437957960a53"}, + {file = "cffi-1.14.4-cp38-cp38-win32.whl", hash = "sha256:b4e248d1087abf9f4c10f3c398896c87ce82a9856494a7155823eb45a892395d"}, + {file = "cffi-1.14.4-cp38-cp38-win_amd64.whl", hash = "sha256:ec80dc47f54e6e9a78181ce05feb71a0353854cc26999db963695f950b5fb375"}, + {file = "cffi-1.14.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:840793c68105fe031f34d6a086eaea153a0cd5c491cde82a74b420edd0a2b909"}, + {file = "cffi-1.14.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:b18e0a9ef57d2b41f5c68beefa32317d286c3d6ac0484efd10d6e07491bb95dd"}, + {file = "cffi-1.14.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:045d792900a75e8b1e1b0ab6787dd733a8190ffcf80e8c8ceb2fb10a29ff238a"}, + {file = "cffi-1.14.4-cp39-cp39-win32.whl", hash = "sha256:ba4e9e0ae13fc41c6b23299545e5ef73055213e466bd107953e4a013a5ddd7e3"}, + {file = "cffi-1.14.4-cp39-cp39-win_amd64.whl", hash = "sha256:f032b34669220030f905152045dfa27741ce1a6db3324a5bc0b96b6c7420c87b"}, + {file = "cffi-1.14.4.tar.gz", hash = "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c"}, +] +chardet = [ + {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, + {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, +] +cryspy = [ + {file = "cryspy-0.4.20-py3-none-any.whl", hash = "sha256:20689a3564472e7ea3ac81d59ad83c53b380ad78b6f8b3d4bfee1807777dc2de"}, + {file = "cryspy-0.4.20.tar.gz", hash = "sha256:3ffc26e2d9a54e3702fc4976ce9a07b8b7fa7c4b7ff76b299822bbd3c2ed93c4"}, +] +cycler = [ + {file = "cycler-0.10.0-py2.py3-none-any.whl", hash = "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d"}, + {file = "cycler-0.10.0.tar.gz", hash = "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"}, +] +decorator = [ + {file = "decorator-4.4.2-py2.py3-none-any.whl", hash = "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760"}, + {file = "decorator-4.4.2.tar.gz", hash = "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7"}, +] +defusedxml = [ + {file = "defusedxml-0.6.0-py2.py3-none-any.whl", hash = "sha256:6687150770438374ab581bb7a1b327a847dd9c5749e396102de3fad4e8a3ef93"}, + {file = "defusedxml-0.6.0.tar.gz", hash = "sha256:f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5"}, +] +easycore = [] +entrypoints = [ + {file = "entrypoints-0.3-py2.py3-none-any.whl", hash = "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19"}, + {file = "entrypoints-0.3.tar.gz", hash = "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451"}, +] +future = [ + {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, +] +idna = [ + {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, + {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, +] +importlib-metadata = [ + {file = "importlib_metadata-3.1.1-py3-none-any.whl", hash = "sha256:6112e21359ef8f344e7178aa5b72dc6e62b38b0d008e6d3cb212c5b84df72013"}, + {file = "importlib_metadata-3.1.1.tar.gz", hash = "sha256:b0c2d3b226157ae4517d9625decf63591461c66b3a808c2666d538946519d170"}, +] +ipykernel = [ + {file = "ipykernel-5.3.4-py3-none-any.whl", hash = "sha256:d6fbba26dba3cebd411382bc484f7bc2caa98427ae0ddb4ab37fe8bfeb5c7dd3"}, + {file = "ipykernel-5.3.4.tar.gz", hash = "sha256:9b2652af1607986a1b231c62302d070bc0534f564c393a5d9d130db9abbbe89d"}, +] +ipython = [ + {file = "ipython-7.19.0-py3-none-any.whl", hash = "sha256:c987e8178ced651532b3b1ff9965925bfd445c279239697052561a9ab806d28f"}, + {file = "ipython-7.19.0.tar.gz", hash = "sha256:cbb2ef3d5961d44e6a963b9817d4ea4e1fa2eb589c371a470fed14d8d40cbd6a"}, +] +ipython-genutils = [ + {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, + {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, +] +jedi = [ + {file = "jedi-0.17.2-py2.py3-none-any.whl", hash = "sha256:98cc583fa0f2f8304968199b01b6b4b94f469a1f4a74c1560506ca2a211378b5"}, + {file = "jedi-0.17.2.tar.gz", hash = "sha256:86ed7d9b750603e4ba582ea8edc678657fb4007894a12bcf6f4bb97892f31d20"}, +] +jinja2 = [ + {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"}, + {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"}, +] +json5 = [ + {file = "json5-0.9.5-py2.py3-none-any.whl", hash = "sha256:af1a1b9a2850c7f62c23fde18be4749b3599fd302f494eebf957e2ada6b9e42c"}, + {file = "json5-0.9.5.tar.gz", hash = "sha256:703cfee540790576b56a92e1c6aaa6c4b0d98971dc358ead83812aa4d06bdb96"}, +] +jsonschema = [ + {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, + {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, +] +jupyter-client = [ + {file = "jupyter_client-6.1.7-py3-none-any.whl", hash = "sha256:c958d24d6eacb975c1acebb68ac9077da61b5f5c040f22f6849928ad7393b950"}, + {file = "jupyter_client-6.1.7.tar.gz", hash = "sha256:49e390b36fe4b4226724704ea28d9fb903f1a3601b6882ce3105221cd09377a1"}, +] +jupyter-core = [ + {file = "jupyter_core-4.7.0-py3-none-any.whl", hash = "sha256:0a451c9b295e4db772bdd8d06f2f1eb31caeec0e81fbb77ba37d4a3024e3b315"}, + {file = "jupyter_core-4.7.0.tar.gz", hash = "sha256:aa1f9496ab3abe72da4efe0daab0cb2233997914581f9a071e07498c6add8ed3"}, +] +jupyterlab = [ + {file = "jupyterlab-2.2.9-py3-none-any.whl", hash = "sha256:59af02c26a15ec2d2862a15bc72e41ae304b406a0b0d3f4f705eeb7caf91902b"}, + {file = "jupyterlab-2.2.9.tar.gz", hash = "sha256:3be8f8edea173753dd838c1b6d3bbcb6f5c801121f824a477025c1b6a1d33dc6"}, +] +jupyterlab-pygments = [ + {file = "jupyterlab_pygments-0.1.2-py2.py3-none-any.whl", hash = "sha256:abfb880fd1561987efaefcb2d2ac75145d2a5d0139b1876d5be806e32f630008"}, + {file = "jupyterlab_pygments-0.1.2.tar.gz", hash = "sha256:cfcda0873626150932f438eccf0f8bf22bfa92345b814890ab360d666b254146"}, +] +jupyterlab-server = [ + {file = "jupyterlab_server-1.2.0-py3-none-any.whl", hash = "sha256:55d256077bf13e5bc9e8fbd5aac51bef82f6315111cec6b712b9a5ededbba924"}, + {file = "jupyterlab_server-1.2.0.tar.gz", hash = "sha256:5431d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c"}, +] +kiwisolver = [ + {file = "kiwisolver-1.3.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fd34fbbfbc40628200730bc1febe30631347103fc8d3d4fa012c21ab9c11eca9"}, + {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:d3155d828dec1d43283bd24d3d3e0d9c7c350cdfcc0bd06c0ad1209c1bbc36d0"}, + {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5a7a7dbff17e66fac9142ae2ecafb719393aaee6a3768c9de2fd425c63b53e21"}, + {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:f8d6f8db88049a699817fd9178782867bf22283e3813064302ac59f61d95be05"}, + {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:5f6ccd3dd0b9739edcf407514016108e2280769c73a85b9e59aa390046dbf08b"}, + {file = "kiwisolver-1.3.1-cp36-cp36m-win32.whl", hash = "sha256:225e2e18f271e0ed8157d7f4518ffbf99b9450fca398d561eb5c4a87d0986dd9"}, + {file = "kiwisolver-1.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cf8b574c7b9aa060c62116d4181f3a1a4e821b2ec5cbfe3775809474113748d4"}, + {file = "kiwisolver-1.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:232c9e11fd7ac3a470d65cd67e4359eee155ec57e822e5220322d7b2ac84fbf0"}, + {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:b38694dcdac990a743aa654037ff1188c7a9801ac3ccc548d3341014bc5ca278"}, + {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ca3820eb7f7faf7f0aa88de0e54681bddcb46e485beb844fcecbcd1c8bd01689"}, + {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:c8fd0f1ae9d92b42854b2979024d7597685ce4ada367172ed7c09edf2cef9cb8"}, + {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:1e1bc12fb773a7b2ffdeb8380609f4f8064777877b2225dec3da711b421fda31"}, + {file = "kiwisolver-1.3.1-cp37-cp37m-win32.whl", hash = "sha256:72c99e39d005b793fb7d3d4e660aed6b6281b502e8c1eaf8ee8346023c8e03bc"}, + {file = "kiwisolver-1.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:8be8d84b7d4f2ba4ffff3665bcd0211318aa632395a1a41553250484a871d454"}, + {file = "kiwisolver-1.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:31dfd2ac56edc0ff9ac295193eeaea1c0c923c0355bf948fbd99ed6018010b72"}, + {file = "kiwisolver-1.3.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:563c649cfdef27d081c84e72a03b48ea9408c16657500c312575ae9d9f7bc1c3"}, + {file = "kiwisolver-1.3.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:78751b33595f7f9511952e7e60ce858c6d64db2e062afb325985ddbd34b5c131"}, + {file = "kiwisolver-1.3.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:a357fd4f15ee49b4a98b44ec23a34a95f1e00292a139d6015c11f55774ef10de"}, + {file = "kiwisolver-1.3.1-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:5989db3b3b34b76c09253deeaf7fbc2707616f130e166996606c284395da3f18"}, + {file = "kiwisolver-1.3.1-cp38-cp38-win32.whl", hash = "sha256:c08e95114951dc2090c4a630c2385bef681cacf12636fb0241accdc6b303fd81"}, + {file = "kiwisolver-1.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:44a62e24d9b01ba94ae7a4a6c3fb215dc4af1dde817e7498d901e229aaf50e4e"}, + {file = "kiwisolver-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:50af681a36b2a1dee1d3c169ade9fdc59207d3c31e522519181e12f1b3ba7000"}, + {file = "kiwisolver-1.3.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a53d27d0c2a0ebd07e395e56a1fbdf75ffedc4a05943daf472af163413ce9598"}, + {file = "kiwisolver-1.3.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:834ee27348c4aefc20b479335fd422a2c69db55f7d9ab61721ac8cd83eb78882"}, + {file = "kiwisolver-1.3.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:5c3e6455341008a054cccee8c5d24481bcfe1acdbc9add30aa95798e95c65621"}, + {file = "kiwisolver-1.3.1-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:acef3d59d47dd85ecf909c359d0fd2c81ed33bdff70216d3956b463e12c38a54"}, + {file = "kiwisolver-1.3.1-cp39-cp39-win32.whl", hash = "sha256:c5518d51a0735b1e6cee1fdce66359f8d2b59c3ca85dc2b0813a8aa86818a030"}, + {file = "kiwisolver-1.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b9edd0110a77fc321ab090aaa1cfcaba1d8499850a12848b81be2222eab648f6"}, + {file = "kiwisolver-1.3.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0cd53f403202159b44528498de18f9285b04482bab2a6fc3f5dd8dbb9352e30d"}, + {file = "kiwisolver-1.3.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:33449715e0101e4d34f64990352bce4095c8bf13bed1b390773fc0a7295967b3"}, + {file = "kiwisolver-1.3.1-pp36-pypy36_pp73-win32.whl", hash = "sha256:401a2e9afa8588589775fe34fc22d918ae839aaaf0c0e96441c0fdbce6d8ebe6"}, + {file = "kiwisolver-1.3.1.tar.gz", hash = "sha256:950a199911a8d94683a6b10321f9345d5a3a8433ec58b217ace979e18f16e248"}, +] +libsdarwin = [] +libslinux = [] +libswin32 = [] +lmfit = [ + {file = "lmfit-1.0.1.tar.gz", hash = "sha256:d249eb756899360f4d2a544c9458f47fc8f765ac22c09e099530585fd64e286e"}, +] +markupsafe = [ + {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"}, + {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"}, + {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"}, + {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, +] +matplotlib = [ + {file = "matplotlib-3.2.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a47abc48c7b81fe6e636dde8a58e49b13d87d140e0f448213a4879f4a3f73345"}, + {file = "matplotlib-3.2.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:20bcd11efe194cd302bd0653cb025b8d16bcd80442359bfca8d49dc805f35ec8"}, + {file = "matplotlib-3.2.2-cp36-cp36m-win32.whl", hash = "sha256:2a6d64336b547e25730b6221e7aadfb01a391a065d43b5f51f0b9d7f673d2dd2"}, + {file = "matplotlib-3.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:4416825ebc9c1f135027a30e8d8aea0edcf45078ce767c7f7386737413cfb98f"}, + {file = "matplotlib-3.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:465c752278d27895e23f1379d6fcfa3a2990643b803c25e3bc16a10641d2346a"}, + {file = "matplotlib-3.2.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:81de040403a33bf3c68e9d4a40e26c8d24da00f7e3fadd845003b7e106785da7"}, + {file = "matplotlib-3.2.2-cp37-cp37m-win32.whl", hash = "sha256:006413f08ba5db1f5b1e0d6fbdc2ac9058b062ccf552f57182563a78579c34b4"}, + {file = "matplotlib-3.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:da06fa530591a141ffbe1712bbeec784734c3436b40c942d21652f305199b5d9"}, + {file = "matplotlib-3.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:894dd47c0a6ce38dc19bc87d1f7e2b0608310b2a18d1572291157450b05ce874"}, + {file = "matplotlib-3.2.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:1ab264770e7cf2cf4feb99f22c737066aef21ddf1ec402dc255450ac15eacb7b"}, + {file = "matplotlib-3.2.2-cp38-cp38-win32.whl", hash = "sha256:91c153f4318e3c67c035fd1185f5ea2613f15008b73b66985033033f6fe54bbd"}, + {file = "matplotlib-3.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:a68e42e22f7fd190a532e4215e142276970c2d54040a0c46842fcb3db8b6ec5b"}, + {file = "matplotlib-3.2.2-cp39-cp39-win32.whl", hash = "sha256:647cf232ccf6265d2ba1ac4103e8c8b6ac7b03a40da3421234ffb03dda217f59"}, + {file = "matplotlib-3.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:31d32c83bb2b617377c6156f75e88b9ec2ded289e47ad4ff0f263dc1019d88b1"}, + {file = "matplotlib-3.2.2-pp36-pypy36_pp73-win32.whl", hash = "sha256:67065d938df34478451af62fbd0670d2b51c4d859fb66673064eb5de8660dd7c"}, + {file = "matplotlib-3.2.2.tar.gz", hash = "sha256:3d77a6630d093d74cbbfebaa0571d00790966be1ed204e4a8239f5cbd6835c5d"}, +] +mistune = [ + {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"}, + {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"}, +] +monty = [ + {file = "monty-4.0.2-py3-none-any.whl", hash = "sha256:e529d9fd270880fbb64fe3baaaee5bdeaad32d6f246255a51044ca7c27f14886"}, + {file = "monty-4.0.2.tar.gz", hash = "sha256:82d2a68af3418c10e6af5f2350494a41c1036cc9b5cbce49860a755803695365"}, +] +more-itertools = [ + {file = "more-itertools-8.6.0.tar.gz", hash = "sha256:b3a9005928e5bed54076e6e549c792b306fddfe72b2d1d22dd63d42d5d3899cf"}, + {file = "more_itertools-8.6.0-py3-none-any.whl", hash = "sha256:8e1a2a43b2f2727425f2b5839587ae37093f19153dc26c0927d1048ff6557330"}, +] +nbclient = [ + {file = "nbclient-0.5.1-py3-none-any.whl", hash = "sha256:4d6b116187c795c99b9dba13d46e764d596574b14c296d60670c8dfe454db364"}, + {file = "nbclient-0.5.1.tar.gz", hash = "sha256:01e2d726d16eaf2cde6db74a87e2451453547e8832d142f73f72fddcd4fe0250"}, +] +nbconvert = [ + {file = "nbconvert-6.0.7-py3-none-any.whl", hash = "sha256:39e9f977920b203baea0be67eea59f7b37a761caa542abe80f5897ce3cf6311d"}, + {file = "nbconvert-6.0.7.tar.gz", hash = "sha256:cbbc13a86dfbd4d1b5dee106539de0795b4db156c894c2c5dc382062bbc29002"}, +] +nbformat = [ + {file = "nbformat-5.0.8-py3-none-any.whl", hash = "sha256:aa9450c16d29286dc69b92ea4913c1bffe86488f90184445996ccc03a2f60382"}, + {file = "nbformat-5.0.8.tar.gz", hash = "sha256:f545b22138865bfbcc6b1ffe89ed5a2b8e2dc5d4fe876f2ca60d8e6f702a30f8"}, +] +nest-asyncio = [ + {file = "nest_asyncio-1.4.3-py3-none-any.whl", hash = "sha256:dbe032f3e9ff7f120e76be22bf6e7958e867aed1743e6894b8a9585fe8495cc9"}, + {file = "nest_asyncio-1.4.3.tar.gz", hash = "sha256:eaa09ef1353ebefae19162ad423eef7a12166bcc63866f8bff8f3635353cd9fa"}, +] +notebook = [ + {file = "notebook-6.1.5-py3-none-any.whl", hash = "sha256:508cf9dad7cdb3188f1aa27017dc78179029dfe83814fc505329f689bc2ab50f"}, + {file = "notebook-6.1.5.tar.gz", hash = "sha256:3db37ae834c5f3b6378381229d0e5dfcbfb558d08c8ce646b1ad355147f5e91d"}, +] +numpy = [ + {file = "numpy-1.19.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e9b30d4bd69498fc0c3fe9db5f62fffbb06b8eb9321f92cc970f2969be5e3949"}, + {file = "numpy-1.19.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:fedbd128668ead37f33917820b704784aff695e0019309ad446a6d0b065b57e4"}, + {file = "numpy-1.19.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8ece138c3a16db8c1ad38f52eb32be6086cc72f403150a79336eb2045723a1ad"}, + {file = "numpy-1.19.4-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:64324f64f90a9e4ef732be0928be853eee378fd6a01be21a0a8469c4f2682c83"}, + {file = "numpy-1.19.4-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:ad6f2ff5b1989a4899bf89800a671d71b1612e5ff40866d1f4d8bcf48d4e5764"}, + {file = "numpy-1.19.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d6c7bb82883680e168b55b49c70af29b84b84abb161cbac2800e8fcb6f2109b6"}, + {file = "numpy-1.19.4-cp36-cp36m-win32.whl", hash = "sha256:13d166f77d6dc02c0a73c1101dd87fdf01339febec1030bd810dcd53fff3b0f1"}, + {file = "numpy-1.19.4-cp36-cp36m-win_amd64.whl", hash = "sha256:448ebb1b3bf64c0267d6b09a7cba26b5ae61b6d2dbabff7c91b660c7eccf2bdb"}, + {file = "numpy-1.19.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:27d3f3b9e3406579a8af3a9f262f5339005dd25e0ecf3cf1559ff8a49ed5cbf2"}, + {file = "numpy-1.19.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:16c1b388cc31a9baa06d91a19366fb99ddbe1c7b205293ed072211ee5bac1ed2"}, + {file = "numpy-1.19.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e5b6ed0f0b42317050c88022349d994fe72bfe35f5908617512cd8c8ef9da2a9"}, + {file = "numpy-1.19.4-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:18bed2bcb39e3f758296584337966e68d2d5ba6aab7e038688ad53c8f889f757"}, + {file = "numpy-1.19.4-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:fe45becb4c2f72a0907c1d0246ea6449fe7a9e2293bb0e11c4e9a32bb0930a15"}, + {file = "numpy-1.19.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:6d7593a705d662be5bfe24111af14763016765f43cb6923ed86223f965f52387"}, + {file = "numpy-1.19.4-cp37-cp37m-win32.whl", hash = "sha256:6ae6c680f3ebf1cf7ad1d7748868b39d9f900836df774c453c11c5440bc15b36"}, + {file = "numpy-1.19.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9eeb7d1d04b117ac0d38719915ae169aa6b61fca227b0b7d198d43728f0c879c"}, + {file = "numpy-1.19.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cb1017eec5257e9ac6209ac172058c430e834d5d2bc21961dceeb79d111e5909"}, + {file = "numpy-1.19.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:edb01671b3caae1ca00881686003d16c2209e07b7ef8b7639f1867852b948f7c"}, + {file = "numpy-1.19.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:f29454410db6ef8126c83bd3c968d143304633d45dc57b51252afbd79d700893"}, + {file = "numpy-1.19.4-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:ec149b90019852266fec2341ce1db513b843e496d5a8e8cdb5ced1923a92faab"}, + {file = "numpy-1.19.4-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:1aeef46a13e51931c0b1cf8ae1168b4a55ecd282e6688fdb0a948cc5a1d5afb9"}, + {file = "numpy-1.19.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:08308c38e44cc926bdfce99498b21eec1f848d24c302519e64203a8da99a97db"}, + {file = "numpy-1.19.4-cp38-cp38-win32.whl", hash = "sha256:5734bdc0342aba9dfc6f04920988140fb41234db42381cf7ccba64169f9fe7ac"}, + {file = "numpy-1.19.4-cp38-cp38-win_amd64.whl", hash = "sha256:09c12096d843b90eafd01ea1b3307e78ddd47a55855ad402b157b6c4862197ce"}, + {file = "numpy-1.19.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e452dc66e08a4ce642a961f134814258a082832c78c90351b75c41ad16f79f63"}, + {file = "numpy-1.19.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a5d897c14513590a85774180be713f692df6fa8ecf6483e561a6d47309566f37"}, + {file = "numpy-1.19.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:a09f98011236a419ee3f49cedc9ef27d7a1651df07810ae430a6b06576e0b414"}, + {file = "numpy-1.19.4-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:50e86c076611212ca62e5a59f518edafe0c0730f7d9195fec718da1a5c2bb1fc"}, + {file = "numpy-1.19.4-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f0d3929fe88ee1c155129ecd82f981b8856c5d97bcb0d5f23e9b4242e79d1de3"}, + {file = "numpy-1.19.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:c42c4b73121caf0ed6cd795512c9c09c52a7287b04d105d112068c1736d7c753"}, + {file = "numpy-1.19.4-cp39-cp39-win32.whl", hash = "sha256:8cac8790a6b1ddf88640a9267ee67b1aee7a57dfa2d2dd33999d080bc8ee3a0f"}, + {file = "numpy-1.19.4-cp39-cp39-win_amd64.whl", hash = "sha256:4377e10b874e653fe96985c05feed2225c912e328c8a26541f7fc600fb9c637b"}, + {file = "numpy-1.19.4-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:2a2740aa9733d2e5b2dfb33639d98a64c3b0f24765fed86b0fd2aec07f6a0a08"}, + {file = "numpy-1.19.4.zip", hash = "sha256:141ec3a3300ab89c7f2b0775289954d193cc8edb621ea05f99db9cb181530512"}, +] +packaging = [ + {file = "packaging-20.7-py2.py3-none-any.whl", hash = "sha256:eb41423378682dadb7166144a4926e443093863024de508ca5c9737d6bc08376"}, + {file = "packaging-20.7.tar.gz", hash = "sha256:05af3bb85d320377db281cf254ab050e1a7ebcbf5410685a9a407e18a1f81236"}, +] +pandocfilters = [ + {file = "pandocfilters-1.4.3.tar.gz", hash = "sha256:bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb"}, +] +parso = [ + {file = "parso-0.7.1-py2.py3-none-any.whl", hash = "sha256:97218d9159b2520ff45eb78028ba8b50d2bc61dcc062a9682666f2dc4bd331ea"}, + {file = "parso-0.7.1.tar.gz", hash = "sha256:caba44724b994a8a5e086460bb212abc5a8bc46951bf4a9a1210745953622eb9"}, +] +pexpect = [ + {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, + {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, +] +pickleshare = [ + {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, + {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, +] +pint = [ + {file = "Pint-0.16.1-py2.py3-none-any.whl", hash = "sha256:63ccb7153754923fd95477be69dcf8d7d0764ec2ebb3f6945f920c31fdf13392"}, + {file = "Pint-0.16.1.tar.gz", hash = "sha256:d43a2e9ae003164978b60fdf8cd920d8581e1a5991df8dded29b00f4850ec83a"}, +] +pluggy = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] +prometheus-client = [ + {file = "prometheus_client-0.9.0-py2.py3-none-any.whl", hash = "sha256:b08c34c328e1bf5961f0b4352668e6c8f145b4a087e09b7296ef62cbe4693d35"}, + {file = "prometheus_client-0.9.0.tar.gz", hash = "sha256:9da7b32f02439d8c04f7777021c304ed51d9ec180604700c1ba72a4d44dceb03"}, +] +prompt-toolkit = [ + {file = "prompt_toolkit-3.0.8-py3-none-any.whl", hash = "sha256:7debb9a521e0b1ee7d2fe96ee4bd60ef03c6492784de0547337ca4433e46aa63"}, + {file = "prompt_toolkit-3.0.8.tar.gz", hash = "sha256:25c95d2ac813909f813c93fde734b6e44406d1477a9faef7c915ff37d39c0a8c"}, +] +ptyprocess = [ + {file = "ptyprocess-0.6.0-py2.py3-none-any.whl", hash = "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"}, + {file = "ptyprocess-0.6.0.tar.gz", hash = "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0"}, +] +py = [ + {file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"}, + {file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"}, +] +pycifstar = [ + {file = "pycifstar-0.2.7-py3-none-any.whl", hash = "sha256:564f45e0457413692b11f12397095ae90c81c1dd5e0b185c8bc9980dea26b465"}, + {file = "pycifstar-0.2.7.tar.gz", hash = "sha256:39ee0f9b5b7cbedebe02e4dc042da5ef0d38f7c38d64da046ed6ad9e6ed39de9"}, +] +pycparser = [ + {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"}, + {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"}, +] +pygments = [ + {file = "Pygments-2.7.2-py3-none-any.whl", hash = "sha256:88a0bbcd659fcb9573703957c6b9cff9fab7295e6e76db54c9d00ae42df32773"}, + {file = "Pygments-2.7.2.tar.gz", hash = "sha256:381985fcc551eb9d37c52088a32914e00517e57f4a21609f48141ba08e193fa0"}, +] +pyparsing = [ + {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, + {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, +] +pyrsistent = [ + {file = "pyrsistent-0.17.3.tar.gz", hash = "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e"}, +] +pytest = [ + {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, + {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, + {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, +] +pywin32 = [ + {file = "pywin32-300-cp35-cp35m-win32.whl", hash = "sha256:1c204a81daed2089e55d11eefa4826c05e604d27fe2be40b6bf8db7b6a39da63"}, + {file = "pywin32-300-cp35-cp35m-win_amd64.whl", hash = "sha256:350c5644775736351b77ba68da09a39c760d75d2467ecec37bd3c36a94fbed64"}, + {file = "pywin32-300-cp36-cp36m-win32.whl", hash = "sha256:a3b4c48c852d4107e8a8ec980b76c94ce596ea66d60f7a697582ea9dce7e0db7"}, + {file = "pywin32-300-cp36-cp36m-win_amd64.whl", hash = "sha256:27a30b887afbf05a9cbb05e3ffd43104a9b71ce292f64a635389dbad0ed1cd85"}, + {file = "pywin32-300-cp37-cp37m-win32.whl", hash = "sha256:d7e8c7efc221f10d6400c19c32a031add1c4a58733298c09216f57b4fde110dc"}, + {file = "pywin32-300-cp37-cp37m-win_amd64.whl", hash = "sha256:8151e4d7a19262d6694162d6da85d99a16f8b908949797fd99c83a0bfaf5807d"}, + {file = "pywin32-300-cp38-cp38-win32.whl", hash = "sha256:fbb3b1b0fbd0b4fc2a3d1d81fe0783e30062c1abed1d17c32b7879d55858cfae"}, + {file = "pywin32-300-cp38-cp38-win_amd64.whl", hash = "sha256:60a8fa361091b2eea27f15718f8eb7f9297e8d51b54dbc4f55f3d238093d5190"}, + {file = "pywin32-300-cp39-cp39-win32.whl", hash = "sha256:638b68eea5cfc8def537e43e9554747f8dee786b090e47ead94bfdafdb0f2f50"}, + {file = "pywin32-300-cp39-cp39-win_amd64.whl", hash = "sha256:b1609ce9bd5c411b81f941b246d683d6508992093203d4eb7f278f4ed1085c3f"}, +] +pywinpty = [ + {file = "pywinpty-0.5.7-cp27-cp27m-win32.whl", hash = "sha256:b358cb552c0f6baf790de375fab96524a0498c9df83489b8c23f7f08795e966b"}, + {file = "pywinpty-0.5.7-cp27-cp27m-win_amd64.whl", hash = "sha256:1e525a4de05e72016a7af27836d512db67d06a015aeaf2fa0180f8e6a039b3c2"}, + {file = "pywinpty-0.5.7-cp35-cp35m-win32.whl", hash = "sha256:2740eeeb59297593a0d3f762269b01d0285c1b829d6827445fcd348fb47f7e70"}, + {file = "pywinpty-0.5.7-cp35-cp35m-win_amd64.whl", hash = "sha256:33df97f79843b2b8b8bc5c7aaf54adec08cc1bae94ee99dfb1a93c7a67704d95"}, + {file = "pywinpty-0.5.7-cp36-cp36m-win32.whl", hash = "sha256:e854211df55d107f0edfda8a80b39dfc87015bef52a8fe6594eb379240d81df2"}, + {file = "pywinpty-0.5.7-cp36-cp36m-win_amd64.whl", hash = "sha256:dbd838de92de1d4ebf0dce9d4d5e4fc38d0b7b1de837947a18b57a882f219139"}, + {file = "pywinpty-0.5.7-cp37-cp37m-win32.whl", hash = "sha256:5fb2c6c6819491b216f78acc2c521b9df21e0f53b9a399d58a5c151a3c4e2a2d"}, + {file = "pywinpty-0.5.7-cp37-cp37m-win_amd64.whl", hash = "sha256:dd22c8efacf600730abe4a46c1388355ce0d4ab75dc79b15d23a7bd87bf05b48"}, + {file = "pywinpty-0.5.7-cp38-cp38-win_amd64.whl", hash = "sha256:8fc5019ff3efb4f13708bd3b5ad327589c1a554cb516d792527361525a7cb78c"}, + {file = "pywinpty-0.5.7.tar.gz", hash = "sha256:2d7e9c881638a72ffdca3f5417dd1563b60f603e1b43e5895674c2a1b01f95a0"}, +] +pyzmq = [ + {file = "pyzmq-20.0.0-cp35-cp35m-macosx_10_9_intel.whl", hash = "sha256:523d542823cabb94065178090e05347bd204365f6e7cb260f0071c995d392fc2"}, + {file = "pyzmq-20.0.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:225774a48ed7414c0395335e7123ef8c418dbcbe172caabdc2496133b03254c2"}, + {file = "pyzmq-20.0.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:bc7dd697356b31389d5118b9bcdef3e8d8079e8181800c4e8d72dccd56e1ff68"}, + {file = "pyzmq-20.0.0-cp35-cp35m-win32.whl", hash = "sha256:d81184489369ec325bd50ba1c935361e63f31f578430b9ad95471899361a8253"}, + {file = "pyzmq-20.0.0-cp35-cp35m-win_amd64.whl", hash = "sha256:7113eb93dcd0a5750c65d123ed0099e036a3a3f2dcb48afedd025ffa125c983b"}, + {file = "pyzmq-20.0.0-cp36-cp36m-macosx_10_9_intel.whl", hash = "sha256:b62113eeb9a0649cebed9b21fd578f3a0175ef214a2a91dcb7b31bbf55805295"}, + {file = "pyzmq-20.0.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:f0beef935efe78a63c785bb21ed56c1c24448511383e3994927c8bb2caf5e714"}, + {file = "pyzmq-20.0.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:46250789730489009fe139cbf576679557c070a6a3628077d09a4153d52fd381"}, + {file = "pyzmq-20.0.0-cp36-cp36m-win32.whl", hash = "sha256:bf755905a7d30d2749079611b9a89924c1f2da2695dc09ce221f42122c9808e3"}, + {file = "pyzmq-20.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2742e380d186673eee6a570ef83d4568741945434ba36d92b98d36cdbfedbd44"}, + {file = "pyzmq-20.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1e9b75a119606732023a305d1c214146c09a91f8116f6aff3e8b7d0a60b6f0ff"}, + {file = "pyzmq-20.0.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:03638e46d486dd1c118e03c8bf9c634bdcae679600eac6573ae1e54906de7c2f"}, + {file = "pyzmq-20.0.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:63ee08e35be72fdd7568065a249a5b5cf51a2e8ab6ee63cf9f73786fcb9e710b"}, + {file = "pyzmq-20.0.0-cp37-cp37m-win32.whl", hash = "sha256:c95dda497a7c1b1e734b5e8353173ca5dd7b67784d8821d13413a97856588057"}, + {file = "pyzmq-20.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:cc09c5cd1a4332611c8564d65e6a432dc6db3e10793d0254da9fa1e31d9ffd6d"}, + {file = "pyzmq-20.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6e24907857c80dc67692e31f5bf3ad5bf483ee0142cec95b3d47e2db8c43bdda"}, + {file = "pyzmq-20.0.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:895695be380f0f85d2e3ec5ccf68a93c92d45bd298567525ad5633071589872c"}, + {file = "pyzmq-20.0.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d92c7f41a53ece82b91703ea433c7d34143248cf0cead33aa11c5fc621c764bf"}, + {file = "pyzmq-20.0.0-cp38-cp38-win32.whl", hash = "sha256:309d763d89ec1845c0e0fa14e1fb6558fd8c9ef05ed32baec27d7a8499cc7bb0"}, + {file = "pyzmq-20.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:0e554fd390021edbe0330b67226325a820b0319c5b45e1b0a59bf22ccc36e793"}, + {file = "pyzmq-20.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cfa54a162a7b32641665e99b2c12084555afe9fc8fe80ec8b2f71a57320d10e1"}, + {file = "pyzmq-20.0.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:5efe02bdcc5eafcac0aab531292294298f0ab8d28ed43be9e507d0e09173d1a4"}, + {file = "pyzmq-20.0.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:0af84f34f27b5c6a0e906c648bdf46d4caebf9c8e6e16db0728f30a58141cad6"}, + {file = "pyzmq-20.0.0-cp39-cp39-win32.whl", hash = "sha256:c63fafd2556d218368c51d18588f8e6f8d86d09d493032415057faf6de869b34"}, + {file = "pyzmq-20.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:f110a4d3f8f01209eec304ed542f6c8054cce9b0f16dfe3d571e57c290e4e133"}, + {file = "pyzmq-20.0.0-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4d9259a5eb3f71abbaf61f165cacf42240bfeea3783bebd8255341abdfe206f1"}, + {file = "pyzmq-20.0.0.tar.gz", hash = "sha256:824ad5888331aadeac772bce27e1c2fbcab82fade92edbd234542c4e12f0dca9"}, +] +requests = [ + {file = "requests-2.25.0-py2.py3-none-any.whl", hash = "sha256:e786fa28d8c9154e6a4de5d46a1d921b8749f8b74e28bde23768e5e16eece998"}, + {file = "requests-2.25.0.tar.gz", hash = "sha256:7f1a0b932f4a60a1a65caa4263921bb7d9ee911957e0ae4a23a6dd08185ad5f8"}, +] +scipy = [ + {file = "scipy-1.5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4f12d13ffbc16e988fa40809cbbd7a8b45bc05ff6ea0ba8e3e41f6f4db3a9e47"}, + {file = "scipy-1.5.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a254b98dbcc744c723a838c03b74a8a34c0558c9ac5c86d5561703362231107d"}, + {file = "scipy-1.5.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:368c0f69f93186309e1b4beb8e26d51dd6f5010b79264c0f1e9ca00cd92ea8c9"}, + {file = "scipy-1.5.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:4598cf03136067000855d6b44d7a1f4f46994164bcd450fb2c3d481afc25dd06"}, + {file = "scipy-1.5.4-cp36-cp36m-win32.whl", hash = "sha256:e98d49a5717369d8241d6cf33ecb0ca72deee392414118198a8e5b4c35c56340"}, + {file = "scipy-1.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:65923bc3809524e46fb7eb4d6346552cbb6a1ffc41be748535aa502a2e3d3389"}, + {file = "scipy-1.5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9ad4fcddcbf5dc67619379782e6aeef41218a79e17979aaed01ed099876c0e62"}, + {file = "scipy-1.5.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f87b39f4d69cf7d7529d7b1098cb712033b17ea7714aed831b95628f483fd012"}, + {file = "scipy-1.5.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:25b241034215247481f53355e05f9e25462682b13bd9191359075682adcd9554"}, + {file = "scipy-1.5.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:fa789583fc94a7689b45834453fec095245c7e69c58561dc159b5d5277057e4c"}, + {file = "scipy-1.5.4-cp37-cp37m-win32.whl", hash = "sha256:d6d25c41a009e3c6b7e757338948d0076ee1dd1770d1c09ec131f11946883c54"}, + {file = "scipy-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:2c872de0c69ed20fb1a9b9cf6f77298b04a26f0b8720a5457be08be254366c6e"}, + {file = "scipy-1.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e360cb2299028d0b0d0f65a5c5e51fc16a335f1603aa2357c25766c8dab56938"}, + {file = "scipy-1.5.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:3397c129b479846d7eaa18f999369a24322d008fac0782e7828fa567358c36ce"}, + {file = "scipy-1.5.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:168c45c0c32e23f613db7c9e4e780bc61982d71dcd406ead746c7c7c2f2004ce"}, + {file = "scipy-1.5.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:213bc59191da2f479984ad4ec39406bf949a99aba70e9237b916ce7547b6ef42"}, + {file = "scipy-1.5.4-cp38-cp38-win32.whl", hash = "sha256:634568a3018bc16a83cda28d4f7aed0d803dd5618facb36e977e53b2df868443"}, + {file = "scipy-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:b03c4338d6d3d299e8ca494194c0ae4f611548da59e3c038813f1a43976cb437"}, + {file = "scipy-1.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3d5db5d815370c28d938cf9b0809dade4acf7aba57eaf7ef733bfedc9b2474c4"}, + {file = "scipy-1.5.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:6b0ceb23560f46dd236a8ad4378fc40bad1783e997604ba845e131d6c680963e"}, + {file = "scipy-1.5.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:ed572470af2438b526ea574ff8f05e7f39b44ac37f712105e57fc4d53a6fb660"}, + {file = "scipy-1.5.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:8c8d6ca19c8497344b810b0b0344f8375af5f6bb9c98bd42e33f747417ab3f57"}, + {file = "scipy-1.5.4-cp39-cp39-win32.whl", hash = "sha256:d84cadd7d7998433334c99fa55bcba0d8b4aeff0edb123b2a1dfcface538e474"}, + {file = "scipy-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:cc1f78ebc982cd0602c9a7615d878396bec94908db67d4ecddca864d049112f2"}, + {file = "scipy-1.5.4.tar.gz", hash = "sha256:4a453d5e5689de62e5d38edf40af3f17560bfd63c9c5bd228c18c1f99afa155b"}, +] +send2trash = [ + {file = "Send2Trash-1.5.0-py3-none-any.whl", hash = "sha256:f1691922577b6fa12821234aeb57599d887c4900b9ca537948d2dac34aea888b"}, + {file = "Send2Trash-1.5.0.tar.gz", hash = "sha256:60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2"}, +] +six = [ + {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, + {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, +] +terminado = [ + {file = "terminado-0.9.1-py3-none-any.whl", hash = "sha256:c55f025beb06c2e2669f7ba5a04f47bb3304c30c05842d4981d8f0fc9ab3b4e3"}, + {file = "terminado-0.9.1.tar.gz", hash = "sha256:3da72a155b807b01c9e8a5babd214e052a0a45a975751da3521a1c3381ce6d76"}, +] +testpath = [ + {file = "testpath-0.4.4-py2.py3-none-any.whl", hash = "sha256:bfcf9411ef4bf3db7579063e0546938b1edda3d69f4e1fb8756991f5951f85d4"}, + {file = "testpath-0.4.4.tar.gz", hash = "sha256:60e0a3261c149755f4399a1fff7d37523179a70fdc3abdf78de9fc2604aeec7e"}, +] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] +tornado = [ + {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, + {file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"}, + {file = "tornado-6.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675"}, + {file = "tornado-6.1-cp35-cp35m-win32.whl", hash = "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5"}, + {file = "tornado-6.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68"}, + {file = "tornado-6.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb"}, + {file = "tornado-6.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c"}, + {file = "tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085"}, + {file = "tornado-6.1-cp36-cp36m-win32.whl", hash = "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575"}, + {file = "tornado-6.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795"}, + {file = "tornado-6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f"}, + {file = "tornado-6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102"}, + {file = "tornado-6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d"}, + {file = "tornado-6.1-cp37-cp37m-win32.whl", hash = "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df"}, + {file = "tornado-6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37"}, + {file = "tornado-6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95"}, + {file = "tornado-6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a"}, + {file = "tornado-6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5"}, + {file = "tornado-6.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288"}, + {file = "tornado-6.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f"}, + {file = "tornado-6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6"}, + {file = "tornado-6.1-cp38-cp38-win32.whl", hash = "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326"}, + {file = "tornado-6.1-cp38-cp38-win_amd64.whl", hash = "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c"}, + {file = "tornado-6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5"}, + {file = "tornado-6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe"}, + {file = "tornado-6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea"}, + {file = "tornado-6.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2"}, + {file = "tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0"}, + {file = "tornado-6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd"}, + {file = "tornado-6.1-cp39-cp39-win32.whl", hash = "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c"}, + {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, + {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, +] +traitlets = [ + {file = "traitlets-5.0.5-py3-none-any.whl", hash = "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"}, + {file = "traitlets-5.0.5.tar.gz", hash = "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396"}, +] +uncertainties = [ + {file = "uncertainties-3.1.5-py2.py3-none-any.whl", hash = "sha256:9c031773afa85e4bc8067f3be257c718eb7dbef7dffd604aeb315ded85c9c325"}, + {file = "uncertainties-3.1.5.tar.gz", hash = "sha256:9122c1e7e074196883b4a7a946e8482807b2f89675cb5e3798b87e0608ede903"}, +] +urllib3 = [ + {file = "urllib3-1.26.2-py2.py3-none-any.whl", hash = "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473"}, + {file = "urllib3-1.26.2.tar.gz", hash = "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] +zipp = [ + {file = "zipp-3.4.0-py3-none-any.whl", hash = "sha256:102c24ef8f171fd729d46599845e95c7ab894a4cf45f5de11a44cc7444fb1108"}, + {file = "zipp-3.4.0.tar.gz", hash = "sha256:ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb"}, +] diff --git a/pyproject.toml b/pyproject.toml index af520801..9709539b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ matplotlib = "^3.2, <3.3" libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } -easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'specie_work' } +easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] pytest = "^5.2" From 3dc75a500cfe6d389e37d26b7e2ad852507fdd8d Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 18 Dec 2020 16:58:55 +0100 Subject: [PATCH 116/312] Update sin(theta)/lambda --- easyDiffractionLib/Calculators/CFML.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index ef0e3a4c..79b13d0d 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -50,6 +50,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: #cell.print_description() #space_group.print_description() #atom_list.print_description() + #print(self.conditions) # Experiment/Instrumnet/Simulation parameters x_min = this_x_array[0] @@ -64,10 +65,11 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: #print("self.conditions.theta_max", self.conditions.theta_max) #print("self.conditions.theta_step", self.conditions.theta_step) - #sin_theta_over_lambda_max = math.sin(math.radians(0.5 * self.conditions.theta_max)) / self.conditions.lamb - sin_theta_over_lambda_max = self.conditions.getSinThetaOverLambdaMax() - #print(f"CFML self.conditions.getSinThetaOverLambdaMax(): {self.conditions.getSinThetaOverLambdaMax()}") - #print(f"Manually sin_theta_over_lambda_max: {sin_theta_over_lambda_max}") + sin_theta_over_lambda_max = math.sin(math.radians(0.5 * self.conditions.theta_max)) / self.conditions.lamb + sin_theta_over_lambda_max = max(1.0, sin_theta_over_lambda_max) + #print(f"Manually sin_theta_over_lambda_max: {sin_theta_over_lambda_max} for lambda: {self.conditions.lamb}") + #sin_theta_over_lambda_max = self.conditions.getSinThetaOverLambdaMax() + #print(f"CFML self.conditions.getSinThetaOverLambdaMax(): {sin_theta_over_lambda_max} for lambda: {self.conditions.lamb}") # Calculations try: From fda4b2883c9fe81bb19c7a7313b08ec02be61c3f Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 8 Jan 2021 16:12:41 +0100 Subject: [PATCH 117/312] Example bug fixes --- tests/CFML_Cryspy.png | Bin 0 -> 21207 bytes tests/FittingData.ipynb | 2 +- tests/fit_script.py | 51 ++++++++++++++++++++++++++++++++++++++++ tests/test1.py | 8 +++---- tests/test3.py | 8 +++---- 5 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 tests/CFML_Cryspy.png create mode 100644 tests/fit_script.py diff --git a/tests/CFML_Cryspy.png b/tests/CFML_Cryspy.png new file mode 100644 index 0000000000000000000000000000000000000000..f68e1f853846c3f9830bd979c500d09cd9570853 GIT binary patch literal 21207 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 literal 0 HcmV?d00001 diff --git a/tests/FittingData.ipynb b/tests/FittingData.ipynb index ebd15059..b8ade219 100644 --- a/tests/FittingData.ipynb +++ b/tests/FittingData.ipynb @@ -3595,4 +3595,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/tests/fit_script.py b/tests/fit_script.py new file mode 100644 index 00000000..1fb304c5 --- /dev/null +++ b/tests/fit_script.py @@ -0,0 +1,51 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCore import np +from easyDiffractionLib.sample import Sample +from easyDiffractionLib import Phases +from easyDiffractionLib.interface import InterfaceFactory +from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D +from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D +from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint + +from easyCore.Fitting.Fitting import Fitter + + +interface = InterfaceFactory() +c = Phases.from_cif_file('PbSO4.cif') +S = Sample(phases=c, parameters=Pars1D.default(), pattern=Pattern1D.default(), interface=interface) + +file_path = 'PbSO4_neutrons_short.xye' +data_x, data_y, data_e = np.loadtxt(file_path, unpack=True) + +S.parameters.wavelength = 1.912 +S.parameters.u_resolution = 1.4 +S.parameters.v_resolution = -0.42 +S.parameters.w_resolution = 0.38 +S.parameters.x_resolution = 0.0 +S.parameters.y_resolution = 0.0 + +bg = PointBackground(linked_experiment='PbSO4') +bg.append(BackgroundPoint.from_pars(data_x[0], 200)) +bg.append(BackgroundPoint.from_pars(data_x[-1], 200)) + +S.set_background(bg) + +f = Fitter(S, interface.fit_func) + +# Vary the scale and the BG points +S.pattern.scale.fixed = False +S.parameters.resolution_u.fixed = False +S.parameters.resolution_v.fixed = False +S.parameters.resolution_w.fixed = False +S.backgrounds[0][0].y.fixed = False +S.backgrounds[0][1].y.fixed = False + +result = f.fit(data_x, data_y, weights=1/data_e) + +if result.success: + print("The fit has been successful: {}".format(result.success)) + print("The gooodness of fit is: {}".format(result.goodness_of_fit)) + +sim_y_data = interface.fit_func(data_x) diff --git a/tests/test1.py b/tests/test1.py index 8106a644..7d29a3a9 100644 --- a/tests/test1.py +++ b/tests/test1.py @@ -4,7 +4,7 @@ from easyCore import np from easyDiffractionLib.sample import Sample -from easyDiffractionLib import Crystal +from easyDiffractionLib import Phase from easyDiffractionLib.interface import InterfaceFactory from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D @@ -13,9 +13,9 @@ i = InterfaceFactory() -c = Crystal.from_cif_file('tests/SrTiO3.cif') +c = Phase.from_cif_file('tests/SrTiO3.cif') -S = Sample(phases=c, parameters=Pars1D(), interface=i) +S = Sample(phases=c, parameters=Pars1D.default(), interface=i) # S.phase.cell.length_a = 5 # S.parameters.wavelength = 1.25 # print(S) @@ -35,7 +35,7 @@ plt.plot(x_data, y_data, label="CFL") plt.show() -i.switch('Cryspy') +i.switch('CrysPy') S._updateInterface() # S.phase.cell.length_a = 5 diff --git a/tests/test3.py b/tests/test3.py index e609562f..6cd75da9 100644 --- a/tests/test3.py +++ b/tests/test3.py @@ -4,7 +4,7 @@ from easyCore import np from easyDiffractionLib.sample import Sample -from easyDiffractionLib import Crystal, Crystals +from easyDiffractionLib import Phase, Phases from easyDiffractionLib.interface import InterfaceFactory from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D @@ -13,14 +13,14 @@ i = InterfaceFactory() -c = Crystals.from_cif_file('/home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/SrTiO3.cif') +c = Phases.from_cif_file('/home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/SrTiO3.cif') -S = Sample(phases=c, parameters=Pars1D(), interface=i) +S = Sample(phases=c, parameters=Pars1D.default(), interface=i) x_data = np.linspace(5, 150, 10000) y_data = i.fit_func(x_data) -i.switch('Cryspy') +i.switch('CrysPy') S._updateInterface() y_data2 = np.array(i.fit_func(x_data)) From 95e46475c8b228a210d40c35ba19cb9d571af5de Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 8 Jan 2021 16:52:49 +0100 Subject: [PATCH 118/312] disable ubuntu ci --- .github/workflows/test.yml | 2 +- poetry.lock | 820 ++++++++++++++++++------------------- 2 files changed, 411 insertions(+), 411 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6ba18d36..06af8d9c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [macos-latest, ubuntu-latest] + os: [macos-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: diff --git a/poetry.lock b/poetry.lock index eef42d0f..0cdd4969 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,83 +1,81 @@ [[package]] -category = "dev" -description = "Disable App Nap on macOS >= 10.9" -marker = "sys_platform == \"darwin\" or platform_system == \"Darwin\"" name = "appnope" +version = "0.1.2" +description = "Disable App Nap on macOS >= 10.9" +category = "dev" optional = false python-versions = "*" -version = "0.1.2" [[package]] -category = "dev" -description = "The secure Argon2 password hashing algorithm." name = "argon2-cffi" +version = "20.1.0" +description = "The secure Argon2 password hashing algorithm." +category = "dev" optional = false python-versions = "*" -version = "20.1.0" [package.dependencies] cffi = ">=1.0.0" six = "*" [package.extras] -dev = ["coverage (>=5.0.2)", "hypothesis", "pytest", "sphinx", "wheel", "pre-commit"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "wheel", "pre-commit"] docs = ["sphinx"] -tests = ["coverage (>=5.0.2)", "hypothesis", "pytest"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] [[package]] -category = "main" -description = "Safe, minimalistic evaluator of python expression using ast module" name = "asteval" +version = "0.9.21" +description = "Safe, minimalistic evaluator of python expression using ast module" +category = "main" optional = false python-versions = ">=3.6" -version = "0.9.21" [[package]] -category = "dev" -description = "Async generators and context managers for Python 3.5+" name = "async-generator" +version = "1.10" +description = "Async generators and context managers for Python 3.5+" +category = "dev" optional = false python-versions = ">=3.5" -version = "1.10" [[package]] -category = "dev" -description = "Atomic file writes." -marker = "sys_platform == \"win32\"" name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.4.0" [[package]] -category = "dev" -description = "Classes Without Boilerplate" name = "attrs" +version = "20.3.0" +description = "Classes Without Boilerplate" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "20.3.0" [package.extras] -dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] docs = ["furo", "sphinx", "zope.interface"] -tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] -tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] [[package]] -category = "dev" -description = "Specifications for callback functions passed in to an API" name = "backcall" +version = "0.2.0" +description = "Specifications for callback functions passed in to an API" +category = "dev" optional = false python-versions = "*" -version = "0.2.0" [[package]] -category = "dev" -description = "An easy safelist-based HTML-sanitizing tool." name = "bleach" +version = "3.2.1" +description = "An easy safelist-based HTML-sanitizing tool." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "3.2.1" [package.dependencies] packaging = "*" @@ -85,59 +83,58 @@ six = ">=1.9.0" webencodings = "*" [[package]] -category = "main" -description = "Data fitting with bayesian uncertainty analysis" name = "bumps" +version = "0.8.0" +description = "Data fitting with bayesian uncertainty analysis" +category = "main" optional = false python-versions = "*" -version = "0.7.18" [package.dependencies] six = "*" [[package]] -category = "dev" -description = "Python package for providing Mozilla's CA Bundle." name = "certifi" +version = "2020.12.5" +description = "Python package for providing Mozilla's CA Bundle." +category = "dev" optional = false python-versions = "*" -version = "2020.11.8" [[package]] -category = "dev" -description = "Foreign Function Interface for Python calling C code." name = "cffi" +version = "1.14.4" +description = "Foreign Function Interface for Python calling C code." +category = "dev" optional = false python-versions = "*" -version = "1.14.4" [package.dependencies] pycparser = "*" [[package]] -category = "dev" -description = "Universal encoding detector for Python 2 and 3" name = "chardet" +version = "4.0.0" +description = "Universal encoding detector for Python 2 and 3" +category = "dev" optional = false -python-versions = "*" -version = "3.0.4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] -category = "dev" -description = "Cross-platform colored terminal text." -marker = "sys_platform == \"win32\"" name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.4.4" [[package]] -category = "main" -description = "PNPD data analysis" name = "cryspy" +version = "0.4.20" +description = "PNPD data analysis" +category = "main" optional = false python-versions = "*" -version = "0.4.20" [package.dependencies] numpy = "*" @@ -145,43 +142,44 @@ pycifstar = "*" scipy = "*" [[package]] -category = "main" -description = "Composable style cycles" name = "cycler" +version = "0.10.0" +description = "Composable style cycles" +category = "main" optional = false python-versions = "*" -version = "0.10.0" [package.dependencies] six = "*" [[package]] -category = "dev" -description = "Decorators for Humans" name = "decorator" +version = "4.4.2" +description = "Decorators for Humans" +category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*" -version = "4.4.2" [[package]] -category = "dev" -description = "XML bomb protection for Python stdlib modules" name = "defusedxml" +version = "0.6.0" +description = "XML bomb protection for Python stdlib modules" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.6.0" [[package]] -category = "main" -description = "" name = "easycore" +version = "0.0.1" +description = "Generic logic for easyScience libraries" +category = "main" optional = false python-versions = "^3.6, >=3.6.1" # "^3.8" generates error when installing PySide2 in easyAppGui -version = "0.0.1" +develop = false [package.dependencies] asteval = "^0.9.21" -bumps = "^0.7" +bumps = "^0.8" lmfit = "^1.0" monty = "^4.0.2" numpy = "^1.19" @@ -189,59 +187,61 @@ pint = "^0.16" uncertainties = "^3.1" [package.source] -reference = "b8250526563b27fa584659a984f759bd9398c79f" type = "git" url = 'https://github.com/easyScience/easyCore.git' +reference = 'develop' +resolved_reference = "a8fce4b23e6c98a4ee995e15a417b65d6541b6d4" + [[package]] -category = "dev" -description = "Discover and load entry points from installed packages." name = "entrypoints" +version = "0.3" +description = "Discover and load entry points from installed packages." +category = "dev" optional = false python-versions = ">=2.7" -version = "0.3" [[package]] -category = "main" -description = "Clean single-source support for Python 3 and 2" name = "future" +version = "0.18.2" +description = "Clean single-source support for Python 3 and 2" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.18.2" [[package]] -category = "dev" -description = "Internationalized Domain Names in Applications (IDNA)" name = "idna" +version = "2.10" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.10" [[package]] -category = "main" -description = "Read metadata from Python packages" -marker = "python_version < \"3.8\"" name = "importlib-metadata" +version = "3.3.0" +description = "Read metadata from Python packages" +category = "main" optional = false python-versions = ">=3.6" -version = "3.1.1" [package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] [[package]] -category = "dev" -description = "IPython Kernel for Jupyter" name = "ipykernel" +version = "5.4.2" +description = "IPython Kernel for Jupyter" +category = "dev" optional = false python-versions = ">=3.5" -version = "5.3.4" [package.dependencies] -appnope = "*" +appnope = {version = "*", markers = "platform_system == \"Darwin\""} ipython = ">=5.0.0" jupyter-client = "*" tornado = ">=4.2" @@ -251,24 +251,23 @@ traitlets = ">=4.1.0" test = ["pytest (!=5.3.4)", "pytest-cov", "flaky", "nose"] [[package]] -category = "dev" -description = "IPython: Productive Interactive Computing" name = "ipython" +version = "7.19.0" +description = "IPython: Productive Interactive Computing" +category = "dev" optional = false python-versions = ">=3.7" -version = "7.19.0" [package.dependencies] -appnope = "*" +appnope = {version = "*", markers = "sys_platform == \"darwin\""} backcall = "*" -colorama = "*" +colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" jedi = ">=0.10" -pexpect = ">4.3" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} pickleshare = "*" prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" pygments = "*" -setuptools = ">=18.5" traitlets = ">=4.2" [package.extras] @@ -283,35 +282,35 @@ qtconsole = ["qtconsole"] test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.14)"] [[package]] -category = "dev" -description = "Vestigial utilities from IPython" name = "ipython-genutils" +version = "0.2.0" +description = "Vestigial utilities from IPython" +category = "dev" optional = false python-versions = "*" -version = "0.2.0" [[package]] -category = "dev" -description = "An autocompletion tool for Python that can be used for text editors." name = "jedi" +version = "0.17.2" +description = "An autocompletion tool for Python that can be used for text editors." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.17.2" [package.dependencies] parso = ">=0.7.0,<0.8.0" [package.extras] -qa = ["flake8 (3.7.9)"] +qa = ["flake8 (==3.7.9)"] testing = ["Django (<3.1)", "colorama", "docopt", "pytest (>=3.9.0,<5.0.0)"] [[package]] -category = "dev" -description = "A very fast and expressive template engine." name = "jinja2" +version = "2.11.2" +description = "A very fast and expressive template engine." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "2.11.2" [package.dependencies] MarkupSafe = ">=0.23" @@ -320,47 +319,44 @@ MarkupSafe = ">=0.23" i18n = ["Babel (>=0.8)"] [[package]] -category = "dev" -description = "A Python implementation of the JSON5 data format." name = "json5" +version = "0.9.5" +description = "A Python implementation of the JSON5 data format." +category = "dev" optional = false python-versions = "*" -version = "0.9.5" [package.extras] dev = ["hypothesis"] [[package]] -category = "dev" -description = "An implementation of JSON Schema validation for Python" name = "jsonschema" +version = "3.2.0" +description = "An implementation of JSON Schema validation for Python" +category = "dev" optional = false python-versions = "*" -version = "3.2.0" [package.dependencies] attrs = ">=17.4.0" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} pyrsistent = ">=0.14.0" -setuptools = "*" six = ">=1.11.0" -[package.dependencies.importlib-metadata] -python = "<3.8" -version = "*" - [package.extras] format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"] [[package]] -category = "dev" -description = "Jupyter protocol implementation and client libraries" name = "jupyter-client" +version = "6.1.10" +description = "Jupyter protocol implementation and client libraries" +category = "dev" optional = false python-versions = ">=3.5" -version = "6.1.7" [package.dependencies] +jedi = "<=0.17.2" jupyter-core = ">=4.6.0" python-dateutil = ">=2.1" pyzmq = ">=13" @@ -368,27 +364,28 @@ tornado = ">=4.1" traitlets = "*" [package.extras] +doc = ["sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] test = ["ipykernel", "ipython", "mock", "pytest", "pytest-asyncio", "async-generator", "pytest-timeout"] [[package]] -category = "dev" -description = "Jupyter core package. A base package on which Jupyter projects rely." name = "jupyter-core" +version = "4.7.0" +description = "Jupyter core package. A base package on which Jupyter projects rely." +category = "dev" optional = false python-versions = ">=3.6" -version = "4.7.0" [package.dependencies] -pywin32 = ">=1.0" +pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\""} traitlets = "*" [[package]] -category = "dev" -description = "The JupyterLab notebook server extension." name = "jupyterlab" +version = "2.2.9" +description = "The JupyterLab notebook server extension." +category = "dev" optional = false python-versions = ">=3.5" -version = "2.2.9" [package.dependencies] jinja2 = ">=2.10" @@ -401,23 +398,23 @@ docs = ["jsx-lexer", "recommonmark", "sphinx", "sphinx-rtd-theme", "sphinx-copyb test = ["pytest", "pytest-check-links", "requests", "wheel", "virtualenv"] [[package]] -category = "dev" -description = "Pygments theme using JupyterLab CSS variables" name = "jupyterlab-pygments" +version = "0.1.2" +description = "Pygments theme using JupyterLab CSS variables" +category = "dev" optional = false python-versions = "*" -version = "0.1.2" [package.dependencies] pygments = ">=2.4.1,<3" [[package]] -category = "dev" -description = "JupyterLab Server" name = "jupyterlab-server" +version = "1.2.0" +description = "JupyterLab Server" +category = "dev" optional = false python-versions = ">=3.5" -version = "1.2.0" [package.dependencies] jinja2 = ">=2.10" @@ -430,59 +427,65 @@ requests = "*" test = ["pytest", "requests"] [[package]] -category = "main" -description = "A fast implementation of the Cassowary constraint solver" name = "kiwisolver" +version = "1.3.1" +description = "A fast implementation of the Cassowary constraint solver" +category = "main" optional = false python-versions = ">=3.6" -version = "1.3.1" [[package]] -category = "main" -description = "" -marker = "sys_platform == \"darwin\"" name = "libsdarwin" +version = "0.0.1" +description = "Calculation engine libraries: CFML, GSAS-II" +category = "main" optional = false python-versions = "^3.7, <3.8" -version = "0.0.1" +develop = false [package.source] -reference = "9239ddff2be8473b15c83db629b2a2ed36918750" type = "git" url = 'ssh://git@github.com/easyScience/libsDarwin.git' +reference = 'main' +resolved_reference = "9239ddff2be8473b15c83db629b2a2ed36918750" + [[package]] -category = "main" -description = "" -marker = "sys_platform == \"linux\"" name = "libslinux" +version = "0.0.1" +description = "Calculation engine libraries: CFML, GSAS-II" +category = "main" optional = false python-versions = "^3.7, <3.8" -version = "0.0.1" +develop = false [package.source] -reference = "f2330d82714b2b1f7958afb1179f6bfa5eb71783" type = "git" url = 'ssh://git@github.com/easyScience/libsLinux.git' +reference = 'main' +resolved_reference = "f2330d82714b2b1f7958afb1179f6bfa5eb71783" + [[package]] -category = "main" -description = "" -marker = "sys_platform == \"win32\"" name = "libswin32" +version = "0.0.1" +description = "Calculation engine libraries: CFML, GSAS-II" +category = "main" optional = false python-versions = "^3.7, <3.8" -version = "0.0.1" +develop = false [package.source] -reference = "ce7689dae1e4c0ce599d0281a40614f73a228a71" type = "git" url = 'ssh://git@github.com/easyScience/libsWin32.git' +reference = 'main' +resolved_reference = "ce7689dae1e4c0ce599d0281a40614f73a228a71" + [[package]] -category = "main" -description = "Least-Squares Minimization with Bounds and Constraints" name = "lmfit" +version = "1.0.1" +description = "Least-Squares Minimization with Bounds and Constraints" +category = "main" optional = false python-versions = ">=3.5" -version = "1.0.1" [package.dependencies] asteval = ">=0.9.16" @@ -491,20 +494,20 @@ scipy = ">=1.2" uncertainties = ">=3.0.1" [[package]] -category = "dev" -description = "Safely add untrusted strings to HTML/XML markup." name = "markupsafe" +version = "1.1.1" +description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" -version = "1.1.1" [[package]] -category = "main" -description = "Python plotting package" name = "matplotlib" +version = "3.2.2" +description = "Python plotting package" +category = "main" optional = false python-versions = ">=3.6" -version = "3.2.2" [package.dependencies] cycler = ">=0.10" @@ -514,39 +517,39 @@ pyparsing = ">=2.0.1,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" python-dateutil = ">=2.1" [[package]] -category = "dev" -description = "The fastest markdown parser in pure Python" name = "mistune" +version = "0.8.4" +description = "The fastest markdown parser in pure Python" +category = "dev" optional = false python-versions = "*" -version = "0.8.4" [[package]] -category = "main" -description = "Monty is the missing complement to Python." name = "monty" +version = "4.0.2" +description = "Monty is the missing complement to Python." +category = "main" optional = false python-versions = ">=3.5" -version = "4.0.2" [package.extras] yaml = ["ruamel.yaml"] [[package]] -category = "dev" -description = "More routines for operating on iterables, beyond itertools" name = "more-itertools" +version = "8.6.0" +description = "More routines for operating on iterables, beyond itertools" +category = "dev" optional = false python-versions = ">=3.5" -version = "8.6.0" [[package]] -category = "dev" -description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." name = "nbclient" +version = "0.5.1" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +category = "dev" optional = false python-versions = ">=3.6" -version = "0.5.1" [package.dependencies] async-generator = "*" @@ -561,12 +564,12 @@ sphinx = ["Sphinx (>=1.7)", "sphinx-book-theme", "mock", "moto", "myst-parser"] test = ["codecov", "coverage", "ipython", "ipykernel", "ipywidgets", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "tox", "bumpversion", "xmltodict", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "black"] [[package]] -category = "dev" -description = "Converting Jupyter Notebooks" name = "nbconvert" +version = "6.0.7" +description = "Converting Jupyter Notebooks" +category = "dev" optional = false python-versions = ">=3.6" -version = "6.0.7" [package.dependencies] bleach = "*" @@ -584,19 +587,19 @@ testpath = "*" traitlets = ">=4.2" [package.extras] -all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (0.2.2)", "tornado (>=4.0)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] +all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (==0.2.2)", "tornado (>=4.0)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] docs = ["sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] serve = ["tornado (>=4.0)"] -test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (0.2.2)"] -webpdf = ["pyppeteer (0.2.2)"] +test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (==0.2.2)"] +webpdf = ["pyppeteer (==0.2.2)"] [[package]] -category = "dev" -description = "The Jupyter Notebook format" name = "nbformat" +version = "5.0.8" +description = "The Jupyter Notebook format" +category = "dev" optional = false python-versions = ">=3.5" -version = "5.0.8" [package.dependencies] ipython-genutils = "*" @@ -609,23 +612,22 @@ fast = ["fastjsonschema"] test = ["fastjsonschema", "testpath", "pytest", "pytest-cov"] [[package]] -category = "dev" -description = "Patch asyncio to allow nested event loops" name = "nest-asyncio" +version = "1.4.3" +description = "Patch asyncio to allow nested event loops" +category = "dev" optional = false python-versions = ">=3.5" -version = "1.4.3" [[package]] -category = "dev" -description = "A web-based notebook environment for interactive computing" name = "notebook" +version = "6.1.6" +description = "A web-based notebook environment for interactive computing" +category = "dev" optional = false python-versions = ">=3.5" -version = "6.1.5" [package.dependencies] -Send2Trash = "*" argon2-cffi = "*" ipykernel = "*" ipython-genutils = "*" @@ -636,346 +638,336 @@ nbconvert = "*" nbformat = "*" prometheus-client = "*" pyzmq = ">=17" +Send2Trash = "*" terminado = ">=0.8.3" tornado = ">=5.0" traitlets = ">=4.2.1" [package.extras] -docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt"] -test = ["nose", "coverage", "requests", "nose-warnings-filters", "nbval", "nose-exclude", "selenium", "pytest", "pytest-cov", "requests-unixsocket"] +docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme"] +json-logging = ["json-logging"] +test = ["pytest", "coverage", "requests", "nbval", "selenium", "pytest-cov", "requests-unixsocket"] [[package]] -category = "main" -description = "NumPy is the fundamental package for array computing with Python." name = "numpy" +version = "1.19.5" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" optional = false python-versions = ">=3.6" -version = "1.19.4" [[package]] -category = "main" -description = "Core utilities for Python packages" name = "packaging" +version = "20.8" +description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "20.7" [package.dependencies] pyparsing = ">=2.0.2" [[package]] -category = "dev" -description = "Utilities for writing pandoc filters in python" name = "pandocfilters" -optional = false -python-versions = "*" version = "1.4.3" +description = "Utilities for writing pandoc filters in python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] -category = "dev" -description = "A Python Parser" name = "parso" +version = "0.7.1" +description = "A Python Parser" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.7.1" [package.extras] testing = ["docopt", "pytest (>=3.0.7)"] [[package]] -category = "dev" -description = "Pexpect allows easy control of interactive console applications." -marker = "sys_platform != \"win32\"" name = "pexpect" +version = "4.8.0" +description = "Pexpect allows easy control of interactive console applications." +category = "dev" optional = false python-versions = "*" -version = "4.8.0" [package.dependencies] ptyprocess = ">=0.5" [[package]] -category = "dev" -description = "Tiny 'shelve'-like database with concurrency support" name = "pickleshare" +version = "0.7.5" +description = "Tiny 'shelve'-like database with concurrency support" +category = "dev" optional = false python-versions = "*" -version = "0.7.5" [[package]] -category = "main" -description = "Physical quantities module" name = "pint" +version = "0.16.1" +description = "Physical quantities module" +category = "main" optional = false python-versions = ">=3.6" -version = "0.16.1" [package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} packaging = "*" -[package.dependencies.importlib-metadata] -python = "<3.8" -version = "*" - [package.extras] numpy = ["numpy (>=1.14)"] test = ["pytest", "pytest-mpl", "pytest-cov"] uncertainties = ["uncertainties (>=3.0)"] [[package]] -category = "dev" -description = "plugin and hook calling mechanisms for python" name = "pluggy" +version = "0.13.1" +description = "plugin and hook calling mechanisms for python" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.13.1" [package.dependencies] -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.12" +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} [package.extras] dev = ["pre-commit", "tox"] [[package]] -category = "dev" -description = "Python client for the Prometheus monitoring system." name = "prometheus-client" +version = "0.9.0" +description = "Python client for the Prometheus monitoring system." +category = "dev" optional = false python-versions = "*" -version = "0.9.0" [package.extras] twisted = ["twisted"] [[package]] -category = "dev" -description = "Library for building powerful interactive command lines in Python" name = "prompt-toolkit" +version = "3.0.10" +description = "Library for building powerful interactive command lines in Python" +category = "dev" optional = false python-versions = ">=3.6.1" -version = "3.0.8" [package.dependencies] wcwidth = "*" [[package]] -category = "dev" -description = "Run a subprocess in a pseudo terminal" -marker = "sys_platform != \"win32\" or os_name != \"nt\"" name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" +category = "dev" optional = false python-versions = "*" -version = "0.6.0" [[package]] -category = "dev" -description = "library with cross-python path, ini-parsing, io, code, log facilities" name = "py" +version = "1.10.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.9.0" [[package]] -category = "main" -description = "PyCifStar is a class library for data manipulation provided in the CIF/STAR File." name = "pycifstar" +version = "0.2.8" +description = "PyCifStar is a class library for data manipulation provided in the CIF/STAR File." +category = "main" optional = false python-versions = "*" -version = "0.2.7" [[package]] -category = "dev" -description = "C parser in Python" name = "pycparser" +version = "2.20" +description = "C parser in Python" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.20" [[package]] -category = "dev" -description = "Pygments is a syntax highlighting package written in Python." name = "pygments" +version = "2.7.3" +description = "Pygments is a syntax highlighting package written in Python." +category = "dev" optional = false python-versions = ">=3.5" -version = "2.7.2" [[package]] -category = "main" -description = "Python parsing module" name = "pyparsing" +version = "2.4.7" +description = "Python parsing module" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "2.4.7" [[package]] -category = "dev" -description = "Persistent/Functional/Immutable data structures" name = "pyrsistent" +version = "0.17.3" +description = "Persistent/Functional/Immutable data structures" +category = "dev" optional = false python-versions = ">=3.5" -version = "0.17.3" [[package]] -category = "dev" -description = "pytest: simple powerful testing with Python" name = "pytest" +version = "5.4.3" +description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.5" -version = "5.4.3" [package.dependencies] -atomicwrites = ">=1.0" +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} attrs = ">=17.4.0" -colorama = "*" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} more-itertools = ">=4.0.0" packaging = "*" pluggy = ">=0.12,<1.0" py = ">=1.5.0" wcwidth = "*" -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.12" - [package.extras] -checkqa-mypy = ["mypy (v0.761)"] +checkqa-mypy = ["mypy (==v0.761)"] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] [[package]] -category = "main" -description = "Extensions to the standard Python datetime module" name = "python-dateutil" +version = "2.8.1" +description = "Extensions to the standard Python datetime module" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -version = "2.8.1" [package.dependencies] six = ">=1.5" [[package]] -category = "dev" -description = "Python for Window Extensions" -marker = "sys_platform == \"win32\"" name = "pywin32" +version = "300" +description = "Python for Window Extensions" +category = "dev" optional = false python-versions = "*" -version = "300" [[package]] -category = "dev" -description = "Python bindings for the winpty library" -marker = "os_name == \"nt\"" name = "pywinpty" +version = "0.5.7" +description = "Python bindings for the winpty library" +category = "dev" optional = false python-versions = "*" -version = "0.5.7" [[package]] -category = "dev" -description = "Python bindings for 0MQ" name = "pyzmq" +version = "20.0.0" +description = "Python bindings for 0MQ" +category = "dev" optional = false python-versions = ">=3.5" -version = "20.0.0" [package.dependencies] -cffi = "*" -py = "*" +cffi = {version = "*", markers = "implementation_name === \"pypy\""} +py = {version = "*", markers = "implementation_name === \"pypy\""} [[package]] -category = "dev" -description = "Python HTTP for Humans." name = "requests" +version = "2.25.1" +description = "Python HTTP for Humans." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "2.25.0" [package.dependencies] certifi = ">=2017.4.17" -chardet = ">=3.0.2,<4" +chardet = ">=3.0.2,<5" idna = ">=2.5,<3" urllib3 = ">=1.21.1,<1.27" [package.extras] security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] [[package]] -category = "main" -description = "SciPy: Scientific Library for Python" name = "scipy" +version = "1.6.0" +description = "SciPy: Scientific Library for Python" +category = "main" optional = false -python-versions = ">=3.6" -version = "1.5.4" +python-versions = ">=3.7" [package.dependencies] -numpy = ">=1.14.5" +numpy = ">=1.16.5" [[package]] -category = "dev" -description = "Send file to trash natively under Mac OS X, Windows and Linux." name = "send2trash" +version = "1.5.0" +description = "Send file to trash natively under Mac OS X, Windows and Linux." +category = "dev" optional = false python-versions = "*" -version = "1.5.0" [[package]] -category = "main" -description = "Python 2 and 3 compatibility utilities" name = "six" +version = "1.15.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -version = "1.15.0" [[package]] -category = "dev" -description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." name = "terminado" +version = "0.9.2" +description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +category = "dev" optional = false python-versions = ">=3.6" -version = "0.9.1" [package.dependencies] -ptyprocess = "*" -pywinpty = ">=0.5" +ptyprocess = {version = "*", markers = "os_name != \"nt\""} +pywinpty = {version = ">=0.5", markers = "os_name == \"nt\""} tornado = ">=4" [[package]] -category = "dev" -description = "Test utilities for code working with files and commands" name = "testpath" +version = "0.4.4" +description = "Test utilities for code working with files and commands" +category = "dev" optional = false python-versions = "*" -version = "0.4.4" [package.extras] test = ["pathlib2"] [[package]] -category = "dev" -description = "Python Library for Tom's Obvious, Minimal Language" name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.10.2" [[package]] -category = "dev" -description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." name = "tornado" +version = "6.1" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +category = "dev" optional = false python-versions = ">= 3.5" -version = "6.1" [[package]] -category = "dev" -description = "Traitlets Python configuration system" name = "traitlets" +version = "5.0.5" +description = "Traitlets Python configuration system" +category = "dev" optional = false python-versions = ">=3.7" -version = "5.0.5" [package.dependencies] ipython-genutils = "*" @@ -984,12 +976,20 @@ ipython-genutils = "*" test = ["pytest"] [[package]] +name = "typing-extensions" +version = "3.7.4.3" +description = "Backported and Experimental Type Hints for Python 3.5+" category = "main" -description = "Transparent calculations with uncertainties on the quantities involved (aka error propagation); fast calculation of derivatives" -name = "uncertainties" optional = false python-versions = "*" + +[[package]] +name = "uncertainties" version = "3.1.5" +description = "Transparent calculations with uncertainties on the quantities involved (aka error propagation); fast calculation of derivatives" +category = "main" +optional = false +python-versions = "*" [package.dependencies] future = "*" @@ -1001,50 +1001,50 @@ optional = ["numpy"] tests = ["nose", "numpy"] [[package]] -category = "dev" -description = "HTTP library with thread-safe connection pooling, file post, and more." name = "urllib3" +version = "1.26.2" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" -version = "1.26.2" [package.extras] brotli = ["brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] -category = "dev" -description = "Measures the displayed width of unicode strings in a terminal" name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" optional = false python-versions = "*" -version = "0.2.5" [[package]] -category = "dev" -description = "Character encoding aliases for legacy web content" name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +category = "dev" optional = false python-versions = "*" -version = "0.5.1" [[package]] -category = "main" -description = "Backport of pathlib-compatible object wrapper for zip files" -marker = "python_version < \"3.8\"" name = "zipp" +version = "3.4.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" optional = false python-versions = ">=3.6" -version = "3.4.0" [package.extras] docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] +testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] [metadata] -content-hash = "6ae14264328b5983485dd85fd7066066ad405e718d957888737d4425b8d70476" +lock-version = "1.1" python-versions = "^3.7, <3.8" +content-hash = "6ae14264328b5983485dd85fd7066066ad405e718d957888737d4425b8d70476" [metadata.files] appnope = [ @@ -1095,11 +1095,11 @@ bleach = [ {file = "bleach-3.2.1.tar.gz", hash = "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080"}, ] bumps = [ - {file = "bumps-0.7.18.tar.gz", hash = "sha256:3217d4fd3ec767448d742f3b6ff527cc3817f2421b9a9a8456e1d8ee4a9b1087"}, + {file = "bumps-0.8.0.tar.gz", hash = "sha256:9f92c05effd8175763799d19ca55592e89b053318f611148a6725159aea41d67"}, ] certifi = [ - {file = "certifi-2020.11.8-py2.py3-none-any.whl", hash = "sha256:1f422849db327d534e3d0c5f02a263458c3955ec0aae4ff09b95f195c59f4edd"}, - {file = "certifi-2020.11.8.tar.gz", hash = "sha256:f05def092c44fbf25834a51509ef6e631dc19765ab8a57b4e7ab85531f0a9cf4"}, + {file = "certifi-2020.12.5-py2.py3-none-any.whl", hash = "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830"}, + {file = "certifi-2020.12.5.tar.gz", hash = "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c"}, ] cffi = [ {file = "cffi-1.14.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ebb253464a5d0482b191274f1c8bf00e33f7e0b9c66405fbffc61ed2c839c775"}, @@ -1138,11 +1138,12 @@ cffi = [ {file = "cffi-1.14.4.tar.gz", hash = "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c"}, ] chardet = [ - {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, - {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, + {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, + {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, ] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, ] cryspy = [ {file = "cryspy-0.4.20-py3-none-any.whl", hash = "sha256:20689a3564472e7ea3ac81d59ad83c53b380ad78b6f8b3d4bfee1807777dc2de"}, @@ -1173,12 +1174,12 @@ idna = [ {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, ] importlib-metadata = [ - {file = "importlib_metadata-3.1.1-py3-none-any.whl", hash = "sha256:6112e21359ef8f344e7178aa5b72dc6e62b38b0d008e6d3cb212c5b84df72013"}, - {file = "importlib_metadata-3.1.1.tar.gz", hash = "sha256:b0c2d3b226157ae4517d9625decf63591461c66b3a808c2666d538946519d170"}, + {file = "importlib_metadata-3.3.0-py3-none-any.whl", hash = "sha256:bf792d480abbd5eda85794e4afb09dd538393f7d6e6ffef6e9f03d2014cf9450"}, + {file = "importlib_metadata-3.3.0.tar.gz", hash = "sha256:5c5a2720817414a6c41f0a49993908068243ae02c1635a228126519b509c8aed"}, ] ipykernel = [ - {file = "ipykernel-5.3.4-py3-none-any.whl", hash = "sha256:d6fbba26dba3cebd411382bc484f7bc2caa98427ae0ddb4ab37fe8bfeb5c7dd3"}, - {file = "ipykernel-5.3.4.tar.gz", hash = "sha256:9b2652af1607986a1b231c62302d070bc0534f564c393a5d9d130db9abbbe89d"}, + {file = "ipykernel-5.4.2-py3-none-any.whl", hash = "sha256:63b4b96c513e1138874934e3e783a8e5e13c02b9036e37107bfe042ac8955005"}, + {file = "ipykernel-5.4.2.tar.gz", hash = "sha256:e20ceb7e52cb4d250452e1230be76e0b2323f33bd46c6b2bc7abb6601740e182"}, ] ipython = [ {file = "ipython-7.19.0-py3-none-any.whl", hash = "sha256:c987e8178ced651532b3b1ff9965925bfd445c279239697052561a9ab806d28f"}, @@ -1205,8 +1206,8 @@ jsonschema = [ {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, ] jupyter-client = [ - {file = "jupyter_client-6.1.7-py3-none-any.whl", hash = "sha256:c958d24d6eacb975c1acebb68ac9077da61b5f5c040f22f6849928ad7393b950"}, - {file = "jupyter_client-6.1.7.tar.gz", hash = "sha256:49e390b36fe4b4226724704ea28d9fb903f1a3601b6882ce3105221cd09377a1"}, + {file = "jupyter_client-6.1.10-py3-none-any.whl", hash = "sha256:2cd2f201d0b237a61bbbf2e772c12b9971e095eb283244a8dfd7148b8d8152a9"}, + {file = "jupyter_client-6.1.10.tar.gz", hash = "sha256:a1b38ebc768cd28715934e82abbf35c51d2fcd026f30ab0d4b7fb2b754d1fca4"}, ] jupyter-core = [ {file = "jupyter_core-4.7.0-py3-none-any.whl", hash = "sha256:0a451c9b295e4db772bdd8d06f2f1eb31caeec0e81fbb77ba37d4a3024e3b315"}, @@ -1346,48 +1347,48 @@ nest-asyncio = [ {file = "nest_asyncio-1.4.3.tar.gz", hash = "sha256:eaa09ef1353ebefae19162ad423eef7a12166bcc63866f8bff8f3635353cd9fa"}, ] notebook = [ - {file = "notebook-6.1.5-py3-none-any.whl", hash = "sha256:508cf9dad7cdb3188f1aa27017dc78179029dfe83814fc505329f689bc2ab50f"}, - {file = "notebook-6.1.5.tar.gz", hash = "sha256:3db37ae834c5f3b6378381229d0e5dfcbfb558d08c8ce646b1ad355147f5e91d"}, + {file = "notebook-6.1.6-py3-none-any.whl", hash = "sha256:e6a62188e319a5d45dd2ed24719f646adf88bef8be1f654ebd0ab360ece6d7a6"}, + {file = "notebook-6.1.6.tar.gz", hash = "sha256:cf40d4f81541401db5a2fda1707ca7877157abd41f04ef7b88f02b67f3c61791"}, ] numpy = [ - {file = "numpy-1.19.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e9b30d4bd69498fc0c3fe9db5f62fffbb06b8eb9321f92cc970f2969be5e3949"}, - {file = "numpy-1.19.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:fedbd128668ead37f33917820b704784aff695e0019309ad446a6d0b065b57e4"}, - {file = "numpy-1.19.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8ece138c3a16db8c1ad38f52eb32be6086cc72f403150a79336eb2045723a1ad"}, - {file = "numpy-1.19.4-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:64324f64f90a9e4ef732be0928be853eee378fd6a01be21a0a8469c4f2682c83"}, - {file = "numpy-1.19.4-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:ad6f2ff5b1989a4899bf89800a671d71b1612e5ff40866d1f4d8bcf48d4e5764"}, - {file = "numpy-1.19.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d6c7bb82883680e168b55b49c70af29b84b84abb161cbac2800e8fcb6f2109b6"}, - {file = "numpy-1.19.4-cp36-cp36m-win32.whl", hash = "sha256:13d166f77d6dc02c0a73c1101dd87fdf01339febec1030bd810dcd53fff3b0f1"}, - {file = "numpy-1.19.4-cp36-cp36m-win_amd64.whl", hash = "sha256:448ebb1b3bf64c0267d6b09a7cba26b5ae61b6d2dbabff7c91b660c7eccf2bdb"}, - {file = "numpy-1.19.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:27d3f3b9e3406579a8af3a9f262f5339005dd25e0ecf3cf1559ff8a49ed5cbf2"}, - {file = "numpy-1.19.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:16c1b388cc31a9baa06d91a19366fb99ddbe1c7b205293ed072211ee5bac1ed2"}, - {file = "numpy-1.19.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e5b6ed0f0b42317050c88022349d994fe72bfe35f5908617512cd8c8ef9da2a9"}, - {file = "numpy-1.19.4-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:18bed2bcb39e3f758296584337966e68d2d5ba6aab7e038688ad53c8f889f757"}, - {file = "numpy-1.19.4-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:fe45becb4c2f72a0907c1d0246ea6449fe7a9e2293bb0e11c4e9a32bb0930a15"}, - {file = "numpy-1.19.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:6d7593a705d662be5bfe24111af14763016765f43cb6923ed86223f965f52387"}, - {file = "numpy-1.19.4-cp37-cp37m-win32.whl", hash = "sha256:6ae6c680f3ebf1cf7ad1d7748868b39d9f900836df774c453c11c5440bc15b36"}, - {file = "numpy-1.19.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9eeb7d1d04b117ac0d38719915ae169aa6b61fca227b0b7d198d43728f0c879c"}, - {file = "numpy-1.19.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cb1017eec5257e9ac6209ac172058c430e834d5d2bc21961dceeb79d111e5909"}, - {file = "numpy-1.19.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:edb01671b3caae1ca00881686003d16c2209e07b7ef8b7639f1867852b948f7c"}, - {file = "numpy-1.19.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:f29454410db6ef8126c83bd3c968d143304633d45dc57b51252afbd79d700893"}, - {file = "numpy-1.19.4-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:ec149b90019852266fec2341ce1db513b843e496d5a8e8cdb5ced1923a92faab"}, - {file = "numpy-1.19.4-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:1aeef46a13e51931c0b1cf8ae1168b4a55ecd282e6688fdb0a948cc5a1d5afb9"}, - {file = "numpy-1.19.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:08308c38e44cc926bdfce99498b21eec1f848d24c302519e64203a8da99a97db"}, - {file = "numpy-1.19.4-cp38-cp38-win32.whl", hash = "sha256:5734bdc0342aba9dfc6f04920988140fb41234db42381cf7ccba64169f9fe7ac"}, - {file = "numpy-1.19.4-cp38-cp38-win_amd64.whl", hash = "sha256:09c12096d843b90eafd01ea1b3307e78ddd47a55855ad402b157b6c4862197ce"}, - {file = "numpy-1.19.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e452dc66e08a4ce642a961f134814258a082832c78c90351b75c41ad16f79f63"}, - {file = "numpy-1.19.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a5d897c14513590a85774180be713f692df6fa8ecf6483e561a6d47309566f37"}, - {file = "numpy-1.19.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:a09f98011236a419ee3f49cedc9ef27d7a1651df07810ae430a6b06576e0b414"}, - {file = "numpy-1.19.4-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:50e86c076611212ca62e5a59f518edafe0c0730f7d9195fec718da1a5c2bb1fc"}, - {file = "numpy-1.19.4-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f0d3929fe88ee1c155129ecd82f981b8856c5d97bcb0d5f23e9b4242e79d1de3"}, - {file = "numpy-1.19.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:c42c4b73121caf0ed6cd795512c9c09c52a7287b04d105d112068c1736d7c753"}, - {file = "numpy-1.19.4-cp39-cp39-win32.whl", hash = "sha256:8cac8790a6b1ddf88640a9267ee67b1aee7a57dfa2d2dd33999d080bc8ee3a0f"}, - {file = "numpy-1.19.4-cp39-cp39-win_amd64.whl", hash = "sha256:4377e10b874e653fe96985c05feed2225c912e328c8a26541f7fc600fb9c637b"}, - {file = "numpy-1.19.4-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:2a2740aa9733d2e5b2dfb33639d98a64c3b0f24765fed86b0fd2aec07f6a0a08"}, - {file = "numpy-1.19.4.zip", hash = "sha256:141ec3a3300ab89c7f2b0775289954d193cc8edb621ea05f99db9cb181530512"}, + {file = "numpy-1.19.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc6bd4fd593cb261332568485e20a0712883cf631f6f5e8e86a52caa8b2b50ff"}, + {file = "numpy-1.19.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:aeb9ed923be74e659984e321f609b9ba54a48354bfd168d21a2b072ed1e833ea"}, + {file = "numpy-1.19.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8b5e972b43c8fc27d56550b4120fe6257fdc15f9301914380b27f74856299fea"}, + {file = "numpy-1.19.5-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:43d4c81d5ffdff6bae58d66a3cd7f54a7acd9a0e7b18d97abb255defc09e3140"}, + {file = "numpy-1.19.5-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:a4646724fba402aa7504cd48b4b50e783296b5e10a524c7a6da62e4a8ac9698d"}, + {file = "numpy-1.19.5-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:2e55195bc1c6b705bfd8ad6f288b38b11b1af32f3c8289d6c50d47f950c12e76"}, + {file = "numpy-1.19.5-cp36-cp36m-win32.whl", hash = "sha256:39b70c19ec771805081578cc936bbe95336798b7edf4732ed102e7a43ec5c07a"}, + {file = "numpy-1.19.5-cp36-cp36m-win_amd64.whl", hash = "sha256:dbd18bcf4889b720ba13a27ec2f2aac1981bd41203b3a3b27ba7a33f88ae4827"}, + {file = "numpy-1.19.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:603aa0706be710eea8884af807b1b3bc9fb2e49b9f4da439e76000f3b3c6ff0f"}, + {file = "numpy-1.19.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:cae865b1cae1ec2663d8ea56ef6ff185bad091a5e33ebbadd98de2cfa3fa668f"}, + {file = "numpy-1.19.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:36674959eed6957e61f11c912f71e78857a8d0604171dfd9ce9ad5cbf41c511c"}, + {file = "numpy-1.19.5-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:06fab248a088e439402141ea04f0fffb203723148f6ee791e9c75b3e9e82f080"}, + {file = "numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6149a185cece5ee78d1d196938b2a8f9d09f5a5ebfbba66969302a778d5ddd1d"}, + {file = "numpy-1.19.5-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:50a4a0ad0111cc1b71fa32dedd05fa239f7fb5a43a40663269bb5dc7877cfd28"}, + {file = "numpy-1.19.5-cp37-cp37m-win32.whl", hash = "sha256:d051ec1c64b85ecc69531e1137bb9751c6830772ee5c1c426dbcfe98ef5788d7"}, + {file = "numpy-1.19.5-cp37-cp37m-win_amd64.whl", hash = "sha256:a12ff4c8ddfee61f90a1633a4c4afd3f7bcb32b11c52026c92a12e1325922d0d"}, + {file = "numpy-1.19.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cf2402002d3d9f91c8b01e66fbb436a4ed01c6498fffed0e4c7566da1d40ee1e"}, + {file = "numpy-1.19.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1ded4fce9cfaaf24e7a0ab51b7a87be9038ea1ace7f34b841fe3b6894c721d1c"}, + {file = "numpy-1.19.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:012426a41bc9ab63bb158635aecccc7610e3eff5d31d1eb43bc099debc979d94"}, + {file = "numpy-1.19.5-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:759e4095edc3c1b3ac031f34d9459fa781777a93ccc633a472a5468587a190ff"}, + {file = "numpy-1.19.5-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:a9d17f2be3b427fbb2bce61e596cf555d6f8a56c222bd2ca148baeeb5e5c783c"}, + {file = "numpy-1.19.5-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:99abf4f353c3d1a0c7a5f27699482c987cf663b1eac20db59b8c7b061eabd7fc"}, + {file = "numpy-1.19.5-cp38-cp38-win32.whl", hash = "sha256:384ec0463d1c2671170901994aeb6dce126de0a95ccc3976c43b0038a37329c2"}, + {file = "numpy-1.19.5-cp38-cp38-win_amd64.whl", hash = "sha256:811daee36a58dc79cf3d8bdd4a490e4277d0e4b7d103a001a4e73ddb48e7e6aa"}, + {file = "numpy-1.19.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c843b3f50d1ab7361ca4f0b3639bf691569493a56808a0b0c54a051d260b7dbd"}, + {file = "numpy-1.19.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d6631f2e867676b13026e2846180e2c13c1e11289d67da08d71cacb2cd93d4aa"}, + {file = "numpy-1.19.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7fb43004bce0ca31d8f13a6eb5e943fa73371381e53f7074ed21a4cb786c32f8"}, + {file = "numpy-1.19.5-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:2ea52bd92ab9f768cc64a4c3ef8f4b2580a17af0a5436f6126b08efbd1838371"}, + {file = "numpy-1.19.5-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:400580cbd3cff6ffa6293df2278c75aef2d58d8d93d3c5614cd67981dae68ceb"}, + {file = "numpy-1.19.5-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:df609c82f18c5b9f6cb97271f03315ff0dbe481a2a02e56aeb1b1a985ce38e60"}, + {file = "numpy-1.19.5-cp39-cp39-win32.whl", hash = "sha256:ab83f24d5c52d60dbc8cd0528759532736b56db58adaa7b5f1f76ad551416a1e"}, + {file = "numpy-1.19.5-cp39-cp39-win_amd64.whl", hash = "sha256:0eef32ca3132a48e43f6a0f5a82cb508f22ce5a3d6f67a8329c81c8e226d3f6e"}, + {file = "numpy-1.19.5-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:a0d53e51a6cb6f0d9082decb7a4cb6dfb33055308c4c44f53103c073f649af73"}, + {file = "numpy-1.19.5.zip", hash = "sha256:a76f502430dd98d7546e1ea2250a7360c065a5fdea52b2dffe8ae7180909b6f4"}, ] packaging = [ - {file = "packaging-20.7-py2.py3-none-any.whl", hash = "sha256:eb41423378682dadb7166144a4926e443093863024de508ca5c9737d6bc08376"}, - {file = "packaging-20.7.tar.gz", hash = "sha256:05af3bb85d320377db281cf254ab050e1a7ebcbf5410685a9a407e18a1f81236"}, + {file = "packaging-20.8-py2.py3-none-any.whl", hash = "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858"}, + {file = "packaging-20.8.tar.gz", hash = "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093"}, ] pandocfilters = [ {file = "pandocfilters-1.4.3.tar.gz", hash = "sha256:bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb"}, @@ -1417,28 +1418,28 @@ prometheus-client = [ {file = "prometheus_client-0.9.0.tar.gz", hash = "sha256:9da7b32f02439d8c04f7777021c304ed51d9ec180604700c1ba72a4d44dceb03"}, ] prompt-toolkit = [ - {file = "prompt_toolkit-3.0.8-py3-none-any.whl", hash = "sha256:7debb9a521e0b1ee7d2fe96ee4bd60ef03c6492784de0547337ca4433e46aa63"}, - {file = "prompt_toolkit-3.0.8.tar.gz", hash = "sha256:25c95d2ac813909f813c93fde734b6e44406d1477a9faef7c915ff37d39c0a8c"}, + {file = "prompt_toolkit-3.0.10-py3-none-any.whl", hash = "sha256:ac329c69bd8564cb491940511957312c7b8959bb5b3cf3582b406068a51d5bb7"}, + {file = "prompt_toolkit-3.0.10.tar.gz", hash = "sha256:b8b3d0bde65da350290c46a8f54f336b3cbf5464a4ac11239668d986852e79d5"}, ] ptyprocess = [ - {file = "ptyprocess-0.6.0-py2.py3-none-any.whl", hash = "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"}, - {file = "ptyprocess-0.6.0.tar.gz", hash = "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0"}, + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] py = [ - {file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"}, - {file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"}, + {file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"}, + {file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"}, ] pycifstar = [ - {file = "pycifstar-0.2.7-py3-none-any.whl", hash = "sha256:564f45e0457413692b11f12397095ae90c81c1dd5e0b185c8bc9980dea26b465"}, - {file = "pycifstar-0.2.7.tar.gz", hash = "sha256:39ee0f9b5b7cbedebe02e4dc042da5ef0d38f7c38d64da046ed6ad9e6ed39de9"}, + {file = "pycifstar-0.2.8-py3-none-any.whl", hash = "sha256:5a2a030974092ed71dc28913c6e26375020426aa478bccd9a1ab5154f1bf314e"}, + {file = "pycifstar-0.2.8.tar.gz", hash = "sha256:55a7b79503c12cf93aee57e849c214f31628294f1df33ea71ad9a4be9f972839"}, ] pycparser = [ {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"}, {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"}, ] pygments = [ - {file = "Pygments-2.7.2-py3-none-any.whl", hash = "sha256:88a0bbcd659fcb9573703957c6b9cff9fab7295e6e76db54c9d00ae42df32773"}, - {file = "Pygments-2.7.2.tar.gz", hash = "sha256:381985fcc551eb9d37c52088a32914e00517e57f4a21609f48141ba08e193fa0"}, + {file = "Pygments-2.7.3-py3-none-any.whl", hash = "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08"}, + {file = "Pygments-2.7.3.tar.gz", hash = "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716"}, ] pyparsing = [ {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, @@ -1509,35 +1510,29 @@ pyzmq = [ {file = "pyzmq-20.0.0.tar.gz", hash = "sha256:824ad5888331aadeac772bce27e1c2fbcab82fade92edbd234542c4e12f0dca9"}, ] requests = [ - {file = "requests-2.25.0-py2.py3-none-any.whl", hash = "sha256:e786fa28d8c9154e6a4de5d46a1d921b8749f8b74e28bde23768e5e16eece998"}, - {file = "requests-2.25.0.tar.gz", hash = "sha256:7f1a0b932f4a60a1a65caa4263921bb7d9ee911957e0ae4a23a6dd08185ad5f8"}, + {file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"}, + {file = "requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804"}, ] scipy = [ - {file = "scipy-1.5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4f12d13ffbc16e988fa40809cbbd7a8b45bc05ff6ea0ba8e3e41f6f4db3a9e47"}, - {file = "scipy-1.5.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a254b98dbcc744c723a838c03b74a8a34c0558c9ac5c86d5561703362231107d"}, - {file = "scipy-1.5.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:368c0f69f93186309e1b4beb8e26d51dd6f5010b79264c0f1e9ca00cd92ea8c9"}, - {file = "scipy-1.5.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:4598cf03136067000855d6b44d7a1f4f46994164bcd450fb2c3d481afc25dd06"}, - {file = "scipy-1.5.4-cp36-cp36m-win32.whl", hash = "sha256:e98d49a5717369d8241d6cf33ecb0ca72deee392414118198a8e5b4c35c56340"}, - {file = "scipy-1.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:65923bc3809524e46fb7eb4d6346552cbb6a1ffc41be748535aa502a2e3d3389"}, - {file = "scipy-1.5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9ad4fcddcbf5dc67619379782e6aeef41218a79e17979aaed01ed099876c0e62"}, - {file = "scipy-1.5.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f87b39f4d69cf7d7529d7b1098cb712033b17ea7714aed831b95628f483fd012"}, - {file = "scipy-1.5.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:25b241034215247481f53355e05f9e25462682b13bd9191359075682adcd9554"}, - {file = "scipy-1.5.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:fa789583fc94a7689b45834453fec095245c7e69c58561dc159b5d5277057e4c"}, - {file = "scipy-1.5.4-cp37-cp37m-win32.whl", hash = "sha256:d6d25c41a009e3c6b7e757338948d0076ee1dd1770d1c09ec131f11946883c54"}, - {file = "scipy-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:2c872de0c69ed20fb1a9b9cf6f77298b04a26f0b8720a5457be08be254366c6e"}, - {file = "scipy-1.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e360cb2299028d0b0d0f65a5c5e51fc16a335f1603aa2357c25766c8dab56938"}, - {file = "scipy-1.5.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:3397c129b479846d7eaa18f999369a24322d008fac0782e7828fa567358c36ce"}, - {file = "scipy-1.5.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:168c45c0c32e23f613db7c9e4e780bc61982d71dcd406ead746c7c7c2f2004ce"}, - {file = "scipy-1.5.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:213bc59191da2f479984ad4ec39406bf949a99aba70e9237b916ce7547b6ef42"}, - {file = "scipy-1.5.4-cp38-cp38-win32.whl", hash = "sha256:634568a3018bc16a83cda28d4f7aed0d803dd5618facb36e977e53b2df868443"}, - {file = "scipy-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:b03c4338d6d3d299e8ca494194c0ae4f611548da59e3c038813f1a43976cb437"}, - {file = "scipy-1.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3d5db5d815370c28d938cf9b0809dade4acf7aba57eaf7ef733bfedc9b2474c4"}, - {file = "scipy-1.5.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:6b0ceb23560f46dd236a8ad4378fc40bad1783e997604ba845e131d6c680963e"}, - {file = "scipy-1.5.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:ed572470af2438b526ea574ff8f05e7f39b44ac37f712105e57fc4d53a6fb660"}, - {file = "scipy-1.5.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:8c8d6ca19c8497344b810b0b0344f8375af5f6bb9c98bd42e33f747417ab3f57"}, - {file = "scipy-1.5.4-cp39-cp39-win32.whl", hash = "sha256:d84cadd7d7998433334c99fa55bcba0d8b4aeff0edb123b2a1dfcface538e474"}, - {file = "scipy-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:cc1f78ebc982cd0602c9a7615d878396bec94908db67d4ecddca864d049112f2"}, - {file = "scipy-1.5.4.tar.gz", hash = "sha256:4a453d5e5689de62e5d38edf40af3f17560bfd63c9c5bd228c18c1f99afa155b"}, + {file = "scipy-1.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d4303e3e21d07d9557b26a1707bb9fc065510ee8501c9bf22a0157249a82fd0"}, + {file = "scipy-1.6.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:1bc5b446600c4ff7ab36bade47180673141322f0febaa555f1c433fe04f2a0e3"}, + {file = "scipy-1.6.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8840a9adb4ede3751f49761653d3ebf664f25195fdd42ada394ffea8903dd51d"}, + {file = "scipy-1.6.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:8629135ee00cc2182ac8be8e75643b9f02235942443732c2ed69ab48edcb6614"}, + {file = "scipy-1.6.0-cp37-cp37m-win32.whl", hash = "sha256:58731bbe0103e96b89b2f41516699db9b63066e4317e31b8402891571f6d358f"}, + {file = "scipy-1.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:876badc33eec20709d4e042a09834f5953ebdac4088d45a4f3a1f18b56885718"}, + {file = "scipy-1.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c0911f3180de343643f369dc5cfedad6ba9f939c2d516bddea4a6871eb000722"}, + {file = "scipy-1.6.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b8af26839ae343655f3ca377a5d5e5466f1d3b3ac7432a43449154fe958ae0e0"}, + {file = "scipy-1.6.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:4f1d9cc977ac6a4a63c124045c1e8bf67ec37098f67c699887a93736961a00ae"}, + {file = "scipy-1.6.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:eb7928275f3560d47e5538e15e9f32b3d64cd30ea8f85f3e82987425476f53f6"}, + {file = "scipy-1.6.0-cp38-cp38-win32.whl", hash = "sha256:31ab217b5c27ab429d07428a76002b33662f98986095bbce5d55e0788f7e8b15"}, + {file = "scipy-1.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:2f1c2ebca6fd867160e70102200b1bd07b3b2d31a3e6af3c58d688c15d0d07b7"}, + {file = "scipy-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:155225621df90fcd151e25d51c50217e412de717475999ebb76e17e310176981"}, + {file = "scipy-1.6.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:f68d5761a2d2376e2b194c8e9192bbf7c51306ca176f1a0889990a52ef0d551f"}, + {file = "scipy-1.6.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:d902d3a5ad7f28874c0a82db95246d24ca07ad932741df668595fe00a4819870"}, + {file = "scipy-1.6.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:aef3a2dbc436bbe8f6e0b635f0b5fe5ed024b522eee4637dbbe0b974129ca734"}, + {file = "scipy-1.6.0-cp39-cp39-win32.whl", hash = "sha256:cdbc47628184a0ebeb5c08f1892614e1bd4a51f6e0d609c6eed253823a960f5b"}, + {file = "scipy-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:313785c4dab65060f9648112d025f6d2fec69a8a889c714328882d678a95f053"}, + {file = "scipy-1.6.0.tar.gz", hash = "sha256:cb6dc9f82dfd95f6b9032a8d7ea70efeeb15d5b5fd6ed4e8537bb3c673580566"}, ] send2trash = [ {file = "Send2Trash-1.5.0-py3-none-any.whl", hash = "sha256:f1691922577b6fa12821234aeb57599d887c4900b9ca537948d2dac34aea888b"}, @@ -1548,8 +1543,8 @@ six = [ {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, ] terminado = [ - {file = "terminado-0.9.1-py3-none-any.whl", hash = "sha256:c55f025beb06c2e2669f7ba5a04f47bb3304c30c05842d4981d8f0fc9ab3b4e3"}, - {file = "terminado-0.9.1.tar.gz", hash = "sha256:3da72a155b807b01c9e8a5babd214e052a0a45a975751da3521a1c3381ce6d76"}, + {file = "terminado-0.9.2-py3-none-any.whl", hash = "sha256:23a053e06b22711269563c8bb96b36a036a86be8b5353e85e804f89b84aaa23f"}, + {file = "terminado-0.9.2.tar.gz", hash = "sha256:89e6d94b19e4bc9dce0ffd908dfaf55cc78a9bf735934e915a4a96f65ac9704c"}, ] testpath = [ {file = "testpath-0.4.4-py2.py3-none-any.whl", hash = "sha256:bfcf9411ef4bf3db7579063e0546938b1edda3d69f4e1fb8756991f5951f85d4"}, @@ -1606,6 +1601,11 @@ traitlets = [ {file = "traitlets-5.0.5-py3-none-any.whl", hash = "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"}, {file = "traitlets-5.0.5.tar.gz", hash = "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396"}, ] +typing-extensions = [ + {file = "typing_extensions-3.7.4.3-py2-none-any.whl", hash = "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"}, + {file = "typing_extensions-3.7.4.3-py3-none-any.whl", hash = "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918"}, + {file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"}, +] uncertainties = [ {file = "uncertainties-3.1.5-py2.py3-none-any.whl", hash = "sha256:9c031773afa85e4bc8067f3be257c718eb7dbef7dffd604aeb315ded85c9c325"}, {file = "uncertainties-3.1.5.tar.gz", hash = "sha256:9122c1e7e074196883b4a7a946e8482807b2f89675cb5e3798b87e0608ede903"}, From 4c44a735ade68495aa890302f41c4dd29936bc7b Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 11 Jan 2021 10:53:22 +0100 Subject: [PATCH 119/312] Use new CFML api --- easyDiffractionLib/main.py | 17 +++------------ poetry.lock | 44 +++++++++++++++++++------------------- 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/easyDiffractionLib/main.py b/easyDiffractionLib/main.py index 7dac8f5b..793c25c6 100644 --- a/easyDiffractionLib/main.py +++ b/easyDiffractionLib/main.py @@ -1,21 +1,10 @@ import os, sys -from CFML_api import PowderPatternSimulation as CFML_api +from easyDiffractionLib.interface import InterfaceFactory def main(): - print("without CFML_api") - # exit() - - simulation_conditions = CFML_api.PowderPatternSimulationConditions() - print("simulation_conditions.theta_max", simulation_conditions.theta_max) - - powder_pattern = CFML_api.PowderPatternSimulator() - print("powder_pattern.x", powder_pattern.x) - print("powder_pattern.y", powder_pattern.y) - - # powder_pattern.compute("../CFML_api/Examples/Data/SrTiO3.cif") - # print("powder_pattern.x", powder_pattern.x) - # print("powder_pattern.y", powder_pattern.y) + interface = InterfaceFactory() + print(f"Available interfaces: {interface.available_interfaces}") if __name__ == '__main__': main() diff --git a/poetry.lock b/poetry.lock index 0cdd4969..68453b89 100644 --- a/poetry.lock +++ b/poetry.lock @@ -218,7 +218,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "3.3.0" +version = "3.4.0" description = "Read metadata from Python packages" category = "main" optional = false @@ -229,8 +229,8 @@ typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] [[package]] name = "ipykernel" @@ -291,18 +291,18 @@ python-versions = "*" [[package]] name = "jedi" -version = "0.17.2" +version = "0.18.0" description = "An autocompletion tool for Python that can be used for text editors." category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.6" [package.dependencies] -parso = ">=0.7.0,<0.8.0" +parso = ">=0.8.0,<0.9.0" [package.extras] -qa = ["flake8 (==3.7.9)"] -testing = ["Django (<3.1)", "colorama", "docopt", "pytest (>=3.9.0,<5.0.0)"] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<6.0.0)"] [[package]] name = "jinja2" @@ -349,14 +349,13 @@ format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator [[package]] name = "jupyter-client" -version = "6.1.10" +version = "6.1.11" description = "Jupyter protocol implementation and client libraries" category = "dev" optional = false python-versions = ">=3.5" [package.dependencies] -jedi = "<=0.17.2" jupyter-core = ">=4.6.0" python-dateutil = ">=2.1" pyzmq = ">=13" @@ -365,7 +364,7 @@ traitlets = "*" [package.extras] doc = ["sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] -test = ["ipykernel", "ipython", "mock", "pytest", "pytest-asyncio", "async-generator", "pytest-timeout"] +test = ["jedi (<=0.17.2)", "ipykernel", "ipython", "mock", "pytest", "pytest-asyncio", "async-generator", "pytest-timeout"] [[package]] name = "jupyter-core" @@ -677,14 +676,15 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "parso" -version = "0.7.1" +version = "0.8.1" description = "A Python Parser" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" [package.extras] -testing = ["docopt", "pytest (>=3.0.7)"] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pexpect" @@ -1174,8 +1174,8 @@ idna = [ {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, ] importlib-metadata = [ - {file = "importlib_metadata-3.3.0-py3-none-any.whl", hash = "sha256:bf792d480abbd5eda85794e4afb09dd538393f7d6e6ffef6e9f03d2014cf9450"}, - {file = "importlib_metadata-3.3.0.tar.gz", hash = "sha256:5c5a2720817414a6c41f0a49993908068243ae02c1635a228126519b509c8aed"}, + {file = "importlib_metadata-3.4.0-py3-none-any.whl", hash = "sha256:ace61d5fc652dc280e7b6b4ff732a9c2d40db2c0f92bc6cb74e07b73d53a1771"}, + {file = "importlib_metadata-3.4.0.tar.gz", hash = "sha256:fa5daa4477a7414ae34e95942e4dd07f62adf589143c875c133c1e53c4eff38d"}, ] ipykernel = [ {file = "ipykernel-5.4.2-py3-none-any.whl", hash = "sha256:63b4b96c513e1138874934e3e783a8e5e13c02b9036e37107bfe042ac8955005"}, @@ -1190,8 +1190,8 @@ ipython-genutils = [ {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, ] jedi = [ - {file = "jedi-0.17.2-py2.py3-none-any.whl", hash = "sha256:98cc583fa0f2f8304968199b01b6b4b94f469a1f4a74c1560506ca2a211378b5"}, - {file = "jedi-0.17.2.tar.gz", hash = "sha256:86ed7d9b750603e4ba582ea8edc678657fb4007894a12bcf6f4bb97892f31d20"}, + {file = "jedi-0.18.0-py2.py3-none-any.whl", hash = "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93"}, + {file = "jedi-0.18.0.tar.gz", hash = "sha256:92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707"}, ] jinja2 = [ {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"}, @@ -1206,8 +1206,8 @@ jsonschema = [ {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, ] jupyter-client = [ - {file = "jupyter_client-6.1.10-py3-none-any.whl", hash = "sha256:2cd2f201d0b237a61bbbf2e772c12b9971e095eb283244a8dfd7148b8d8152a9"}, - {file = "jupyter_client-6.1.10.tar.gz", hash = "sha256:a1b38ebc768cd28715934e82abbf35c51d2fcd026f30ab0d4b7fb2b754d1fca4"}, + {file = "jupyter_client-6.1.11-py3-none-any.whl", hash = "sha256:5eaaa41df449167ebba5e1cf6ca9b31f7fd4f71625069836e2e4fee07fe3cb13"}, + {file = "jupyter_client-6.1.11.tar.gz", hash = "sha256:649ca3aca1e28f27d73ef15868a7c7f10d6e70f761514582accec3ca6bb13085"}, ] jupyter-core = [ {file = "jupyter_core-4.7.0-py3-none-any.whl", hash = "sha256:0a451c9b295e4db772bdd8d06f2f1eb31caeec0e81fbb77ba37d4a3024e3b315"}, @@ -1394,8 +1394,8 @@ pandocfilters = [ {file = "pandocfilters-1.4.3.tar.gz", hash = "sha256:bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb"}, ] parso = [ - {file = "parso-0.7.1-py2.py3-none-any.whl", hash = "sha256:97218d9159b2520ff45eb78028ba8b50d2bc61dcc062a9682666f2dc4bd331ea"}, - {file = "parso-0.7.1.tar.gz", hash = "sha256:caba44724b994a8a5e086460bb212abc5a8bc46951bf4a9a1210745953622eb9"}, + {file = "parso-0.8.1-py2.py3-none-any.whl", hash = "sha256:15b00182f472319383252c18d5913b69269590616c947747bc50bf4ac768f410"}, + {file = "parso-0.8.1.tar.gz", hash = "sha256:8519430ad07087d4c997fda3a7918f7cfa27cb58972a8c89c2a0295a1c940e9e"}, ] pexpect = [ {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, From 5d9e0924cacc5c934987a9ef966e7c0ff88ed71a Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 11 Jan 2021 10:59:08 +0100 Subject: [PATCH 120/312] Add ubuntu ci --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 06af8d9c..6ba18d36 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [macos-latest] + os: [macos-latest, ubuntu-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: From a487203e35a8ce27512a529982c9f2f0d2d8a755 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 12 Jan 2021 16:18:42 +0100 Subject: [PATCH 121/312] Make libs repos public --- poetry.lock | 28 ++++++++++++++-------------- pyproject.toml | 9 ++++++--- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/poetry.lock b/poetry.lock index 68453b89..8582ee18 100644 --- a/poetry.lock +++ b/poetry.lock @@ -234,7 +234,7 @@ testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake [[package]] name = "ipykernel" -version = "5.4.2" +version = "5.4.3" description = "IPython Kernel for Jupyter" category = "dev" optional = false @@ -248,7 +248,7 @@ tornado = ">=4.2" traitlets = ">=4.1.0" [package.extras] -test = ["pytest (!=5.3.4)", "pytest-cov", "flaky", "nose"] +test = ["pytest (!=5.3.4)", "pytest-cov", "flaky", "nose", "jedi (<=0.17.2)"] [[package]] name = "ipython" @@ -444,9 +444,9 @@ develop = false [package.source] type = "git" -url = 'ssh://git@github.com/easyScience/libsDarwin.git' +url = 'https://github.com/easyScience/libsDarwin.git' reference = 'main' -resolved_reference = "9239ddff2be8473b15c83db629b2a2ed36918750" +resolved_reference = "1897df782d495b9c384ff50dcbcfa233f13eb708" [[package]] name = "libslinux" @@ -459,9 +459,9 @@ develop = false [package.source] type = "git" -url = 'ssh://git@github.com/easyScience/libsLinux.git' +url = 'https://github.com/easyScience/libsLinux.git' reference = 'main' -resolved_reference = "f2330d82714b2b1f7958afb1179f6bfa5eb71783" +resolved_reference = "78b1116e1e782329f6001a34d630ebac650e9212" [[package]] name = "libswin32" @@ -474,9 +474,9 @@ develop = false [package.source] type = "git" -url = 'ssh://git@github.com/easyScience/libsWin32.git' +url = 'https://github.com/easyScience/libsWin32.git' reference = 'main' -resolved_reference = "ce7689dae1e4c0ce599d0281a40614f73a228a71" +resolved_reference = "4d161eb3a413fc2a478099e13c8620e19f0e5da2" [[package]] name = "lmfit" @@ -792,7 +792,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pygments" -version = "2.7.3" +version = "2.7.4" description = "Pygments is a syntax highlighting package written in Python." category = "dev" optional = false @@ -1044,7 +1044,7 @@ testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake [metadata] lock-version = "1.1" python-versions = "^3.7, <3.8" -content-hash = "6ae14264328b5983485dd85fd7066066ad405e718d957888737d4425b8d70476" +content-hash = "fb5c6a29a088058eb0f64eb41596759754e217add156fbf12a5a76d7d65b7460" [metadata.files] appnope = [ @@ -1178,8 +1178,8 @@ importlib-metadata = [ {file = "importlib_metadata-3.4.0.tar.gz", hash = "sha256:fa5daa4477a7414ae34e95942e4dd07f62adf589143c875c133c1e53c4eff38d"}, ] ipykernel = [ - {file = "ipykernel-5.4.2-py3-none-any.whl", hash = "sha256:63b4b96c513e1138874934e3e783a8e5e13c02b9036e37107bfe042ac8955005"}, - {file = "ipykernel-5.4.2.tar.gz", hash = "sha256:e20ceb7e52cb4d250452e1230be76e0b2323f33bd46c6b2bc7abb6601740e182"}, + {file = "ipykernel-5.4.3-py3-none-any.whl", hash = "sha256:4ed205700001a83b5832d4821c46a5733f1bf4b1c55744314ae3c756be6b6095"}, + {file = "ipykernel-5.4.3.tar.gz", hash = "sha256:697103d218e9a8828025af7986e033c89e0b36e2b6eb84a5bda4739b9a27f3cb"}, ] ipython = [ {file = "ipython-7.19.0-py3-none-any.whl", hash = "sha256:c987e8178ced651532b3b1ff9965925bfd445c279239697052561a9ab806d28f"}, @@ -1438,8 +1438,8 @@ pycparser = [ {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"}, ] pygments = [ - {file = "Pygments-2.7.3-py3-none-any.whl", hash = "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08"}, - {file = "Pygments-2.7.3.tar.gz", hash = "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716"}, + {file = "Pygments-2.7.4-py3-none-any.whl", hash = "sha256:bc9591213a8f0e0ca1a5e68a479b4887fdc3e75d0774e5c71c31920c427de435"}, + {file = "Pygments-2.7.4.tar.gz", hash = "sha256:df49d09b498e83c1a73128295860250b0b7edd4c723a32e9bc0d295c7c2ec337"}, ] pyparsing = [ {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, diff --git a/pyproject.toml b/pyproject.toml index 9709539b..732745c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,9 +21,12 @@ python = "^3.7, <3.8" cryspy = "^0.4.11" matplotlib = "^3.2, <3.3" # easyScience -libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } -libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } -libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } +#libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } +#libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } +#libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } +libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } +libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } +libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] From 88178886bea44f8d44cf27a2ac8017422e7fdee9 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 12 Jan 2021 16:25:32 +0100 Subject: [PATCH 122/312] macOS CI only --- .github/workflows/test.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6ba18d36..26b5661b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [macos-latest, ubuntu-latest] + os: [macos-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -26,10 +26,10 @@ jobs: - name: Check-out repository uses: actions/checkout@v2 - - name: Set up access to private repos - uses: webfactory/ssh-agent@v0.4.1 - with: - ssh-private-key: ${{ secrets.GH_WEBFACTORY_KEY }} + #- name: Set up access to private repos + # uses: webfactory/ssh-agent@v0.4.1 + # with: + # ssh-private-key: ${{ secrets.GH_WEBFACTORY_KEY }} - name: Set up Python environment uses: actions/setup-python@v2 From 8b1685255f40681c60522995d4868f20e01c5249 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 12 Jan 2021 16:36:16 +0100 Subject: [PATCH 123/312] Temporarily disable libs --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 732745c8..e55a940b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,9 +24,9 @@ matplotlib = "^3.2, <3.3" #libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } #libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } #libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } -libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } -libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } -libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } +##libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } +##libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } +##libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] From 830a83ec13396a68e21d90a007656b5906e16d32 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 12 Jan 2021 16:47:42 +0100 Subject: [PATCH 124/312] Remove poetry.lock --- poetry.lock | 1628 ------------------------------------------------ pyproject.toml | 6 +- 2 files changed, 3 insertions(+), 1631 deletions(-) delete mode 100644 poetry.lock diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 8582ee18..00000000 --- a/poetry.lock +++ /dev/null @@ -1,1628 +0,0 @@ -[[package]] -name = "appnope" -version = "0.1.2" -description = "Disable App Nap on macOS >= 10.9" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "argon2-cffi" -version = "20.1.0" -description = "The secure Argon2 password hashing algorithm." -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -cffi = ">=1.0.0" -six = "*" - -[package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "wheel", "pre-commit"] -docs = ["sphinx"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] - -[[package]] -name = "asteval" -version = "0.9.21" -description = "Safe, minimalistic evaluator of python expression using ast module" -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "async-generator" -version = "1.10" -description = "Async generators and context managers for Python 3.5+" -category = "dev" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "atomicwrites" -version = "1.4.0" -description = "Atomic file writes." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "attrs" -version = "20.3.0" -description = "Classes Without Boilerplate" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] -docs = ["furo", "sphinx", "zope.interface"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] - -[[package]] -name = "backcall" -version = "0.2.0" -description = "Specifications for callback functions passed in to an API" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "bleach" -version = "3.2.1" -description = "An easy safelist-based HTML-sanitizing tool." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[package.dependencies] -packaging = "*" -six = ">=1.9.0" -webencodings = "*" - -[[package]] -name = "bumps" -version = "0.8.0" -description = "Data fitting with bayesian uncertainty analysis" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -six = "*" - -[[package]] -name = "certifi" -version = "2020.12.5" -description = "Python package for providing Mozilla's CA Bundle." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "cffi" -version = "1.14.4" -description = "Foreign Function Interface for Python calling C code." -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "chardet" -version = "4.0.0" -description = "Universal encoding detector for Python 2 and 3" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "colorama" -version = "0.4.4" -description = "Cross-platform colored terminal text." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "cryspy" -version = "0.4.20" -description = "PNPD data analysis" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -numpy = "*" -pycifstar = "*" -scipy = "*" - -[[package]] -name = "cycler" -version = "0.10.0" -description = "Composable style cycles" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -six = "*" - -[[package]] -name = "decorator" -version = "4.4.2" -description = "Decorators for Humans" -category = "dev" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*" - -[[package]] -name = "defusedxml" -version = "0.6.0" -description = "XML bomb protection for Python stdlib modules" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "easycore" -version = "0.0.1" -description = "Generic logic for easyScience libraries" -category = "main" -optional = false -python-versions = "^3.6, >=3.6.1" # "^3.8" generates error when installing PySide2 in easyAppGui -develop = false - -[package.dependencies] -asteval = "^0.9.21" -bumps = "^0.8" -lmfit = "^1.0" -monty = "^4.0.2" -numpy = "^1.19" -pint = "^0.16" -uncertainties = "^3.1" - -[package.source] -type = "git" -url = 'https://github.com/easyScience/easyCore.git' -reference = 'develop' -resolved_reference = "a8fce4b23e6c98a4ee995e15a417b65d6541b6d4" - -[[package]] -name = "entrypoints" -version = "0.3" -description = "Discover and load entry points from installed packages." -category = "dev" -optional = false -python-versions = ">=2.7" - -[[package]] -name = "future" -version = "0.18.2" -description = "Clean single-source support for Python 3 and 2" -category = "main" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "idna" -version = "2.10" -description = "Internationalized Domain Names in Applications (IDNA)" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "importlib-metadata" -version = "3.4.0" -description = "Read metadata from Python packages" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} -zipp = ">=0.5" - -[package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] - -[[package]] -name = "ipykernel" -version = "5.4.3" -description = "IPython Kernel for Jupyter" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -appnope = {version = "*", markers = "platform_system == \"Darwin\""} -ipython = ">=5.0.0" -jupyter-client = "*" -tornado = ">=4.2" -traitlets = ">=4.1.0" - -[package.extras] -test = ["pytest (!=5.3.4)", "pytest-cov", "flaky", "nose", "jedi (<=0.17.2)"] - -[[package]] -name = "ipython" -version = "7.19.0" -description = "IPython: Productive Interactive Computing" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -appnope = {version = "*", markers = "sys_platform == \"darwin\""} -backcall = "*" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -jedi = ">=0.10" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} -pickleshare = "*" -prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" -pygments = "*" -traitlets = ">=4.2" - -[package.extras] -all = ["Sphinx (>=1.3)", "ipykernel", "ipyparallel", "ipywidgets", "nbconvert", "nbformat", "nose (>=0.10.1)", "notebook", "numpy (>=1.14)", "pygments", "qtconsole", "requests", "testpath"] -doc = ["Sphinx (>=1.3)"] -kernel = ["ipykernel"] -nbconvert = ["nbconvert"] -nbformat = ["nbformat"] -notebook = ["notebook", "ipywidgets"] -parallel = ["ipyparallel"] -qtconsole = ["qtconsole"] -test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.14)"] - -[[package]] -name = "ipython-genutils" -version = "0.2.0" -description = "Vestigial utilities from IPython" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "jedi" -version = "0.18.0" -description = "An autocompletion tool for Python that can be used for text editors." -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -parso = ">=0.8.0,<0.9.0" - -[package.extras] -qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] -testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<6.0.0)"] - -[[package]] -name = "jinja2" -version = "2.11.2" -description = "A very fast and expressive template engine." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[package.dependencies] -MarkupSafe = ">=0.23" - -[package.extras] -i18n = ["Babel (>=0.8)"] - -[[package]] -name = "json5" -version = "0.9.5" -description = "A Python implementation of the JSON5 data format." -category = "dev" -optional = false -python-versions = "*" - -[package.extras] -dev = ["hypothesis"] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -attrs = ">=17.4.0" -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -pyrsistent = ">=0.14.0" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"] - -[[package]] -name = "jupyter-client" -version = "6.1.11" -description = "Jupyter protocol implementation and client libraries" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -jupyter-core = ">=4.6.0" -python-dateutil = ">=2.1" -pyzmq = ">=13" -tornado = ">=4.1" -traitlets = "*" - -[package.extras] -doc = ["sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] -test = ["jedi (<=0.17.2)", "ipykernel", "ipython", "mock", "pytest", "pytest-asyncio", "async-generator", "pytest-timeout"] - -[[package]] -name = "jupyter-core" -version = "4.7.0" -description = "Jupyter core package. A base package on which Jupyter projects rely." -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\""} -traitlets = "*" - -[[package]] -name = "jupyterlab" -version = "2.2.9" -description = "The JupyterLab notebook server extension." -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -jinja2 = ">=2.10" -jupyterlab-server = ">=1.1.5,<2.0" -notebook = ">=4.3.1" -tornado = "<6.0.0 || >6.0.0,<6.0.1 || >6.0.1,<6.0.2 || >6.0.2" - -[package.extras] -docs = ["jsx-lexer", "recommonmark", "sphinx", "sphinx-rtd-theme", "sphinx-copybutton"] -test = ["pytest", "pytest-check-links", "requests", "wheel", "virtualenv"] - -[[package]] -name = "jupyterlab-pygments" -version = "0.1.2" -description = "Pygments theme using JupyterLab CSS variables" -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -pygments = ">=2.4.1,<3" - -[[package]] -name = "jupyterlab-server" -version = "1.2.0" -description = "JupyterLab Server" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -jinja2 = ">=2.10" -json5 = "*" -jsonschema = ">=3.0.1" -notebook = ">=4.2.0" -requests = "*" - -[package.extras] -test = ["pytest", "requests"] - -[[package]] -name = "kiwisolver" -version = "1.3.1" -description = "A fast implementation of the Cassowary constraint solver" -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "libsdarwin" -version = "0.0.1" -description = "Calculation engine libraries: CFML, GSAS-II" -category = "main" -optional = false -python-versions = "^3.7, <3.8" -develop = false - -[package.source] -type = "git" -url = 'https://github.com/easyScience/libsDarwin.git' -reference = 'main' -resolved_reference = "1897df782d495b9c384ff50dcbcfa233f13eb708" - -[[package]] -name = "libslinux" -version = "0.0.1" -description = "Calculation engine libraries: CFML, GSAS-II" -category = "main" -optional = false -python-versions = "^3.7, <3.8" -develop = false - -[package.source] -type = "git" -url = 'https://github.com/easyScience/libsLinux.git' -reference = 'main' -resolved_reference = "78b1116e1e782329f6001a34d630ebac650e9212" - -[[package]] -name = "libswin32" -version = "0.0.1" -description = "Calculation engine libraries: CFML, GSAS-II" -category = "main" -optional = false -python-versions = "^3.7, <3.8" -develop = false - -[package.source] -type = "git" -url = 'https://github.com/easyScience/libsWin32.git' -reference = 'main' -resolved_reference = "4d161eb3a413fc2a478099e13c8620e19f0e5da2" - -[[package]] -name = "lmfit" -version = "1.0.1" -description = "Least-Squares Minimization with Bounds and Constraints" -category = "main" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -asteval = ">=0.9.16" -numpy = ">=1.16" -scipy = ">=1.2" -uncertainties = ">=3.0.1" - -[[package]] -name = "markupsafe" -version = "1.1.1" -description = "Safely add untrusted strings to HTML/XML markup." -category = "dev" -optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" - -[[package]] -name = "matplotlib" -version = "3.2.2" -description = "Python plotting package" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -cycler = ">=0.10" -kiwisolver = ">=1.0.1" -numpy = ">=1.11" -pyparsing = ">=2.0.1,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" -python-dateutil = ">=2.1" - -[[package]] -name = "mistune" -version = "0.8.4" -description = "The fastest markdown parser in pure Python" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "monty" -version = "4.0.2" -description = "Monty is the missing complement to Python." -category = "main" -optional = false -python-versions = ">=3.5" - -[package.extras] -yaml = ["ruamel.yaml"] - -[[package]] -name = "more-itertools" -version = "8.6.0" -description = "More routines for operating on iterables, beyond itertools" -category = "dev" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "nbclient" -version = "0.5.1" -description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -async-generator = "*" -jupyter-client = ">=6.1.5" -nbformat = ">=5.0" -nest-asyncio = "*" -traitlets = ">=4.2" - -[package.extras] -dev = ["codecov", "coverage", "ipython", "ipykernel", "ipywidgets", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "tox", "bumpversion", "xmltodict", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "black"] -sphinx = ["Sphinx (>=1.7)", "sphinx-book-theme", "mock", "moto", "myst-parser"] -test = ["codecov", "coverage", "ipython", "ipykernel", "ipywidgets", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "tox", "bumpversion", "xmltodict", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "black"] - -[[package]] -name = "nbconvert" -version = "6.0.7" -description = "Converting Jupyter Notebooks" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -bleach = "*" -defusedxml = "*" -entrypoints = ">=0.2.2" -jinja2 = ">=2.4" -jupyter-core = "*" -jupyterlab-pygments = "*" -mistune = ">=0.8.1,<2" -nbclient = ">=0.5.0,<0.6.0" -nbformat = ">=4.4" -pandocfilters = ">=1.4.1" -pygments = ">=2.4.1" -testpath = "*" -traitlets = ">=4.2" - -[package.extras] -all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (==0.2.2)", "tornado (>=4.0)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] -docs = ["sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] -serve = ["tornado (>=4.0)"] -test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pyppeteer (==0.2.2)"] -webpdf = ["pyppeteer (==0.2.2)"] - -[[package]] -name = "nbformat" -version = "5.0.8" -description = "The Jupyter Notebook format" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -ipython-genutils = "*" -jsonschema = ">=2.4,<2.5.0 || >2.5.0" -jupyter-core = "*" -traitlets = ">=4.1" - -[package.extras] -fast = ["fastjsonschema"] -test = ["fastjsonschema", "testpath", "pytest", "pytest-cov"] - -[[package]] -name = "nest-asyncio" -version = "1.4.3" -description = "Patch asyncio to allow nested event loops" -category = "dev" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "notebook" -version = "6.1.6" -description = "A web-based notebook environment for interactive computing" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -argon2-cffi = "*" -ipykernel = "*" -ipython-genutils = "*" -jinja2 = "*" -jupyter-client = ">=5.3.4" -jupyter-core = ">=4.6.1" -nbconvert = "*" -nbformat = "*" -prometheus-client = "*" -pyzmq = ">=17" -Send2Trash = "*" -terminado = ">=0.8.3" -tornado = ">=5.0" -traitlets = ">=4.2.1" - -[package.extras] -docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme"] -json-logging = ["json-logging"] -test = ["pytest", "coverage", "requests", "nbval", "selenium", "pytest-cov", "requests-unixsocket"] - -[[package]] -name = "numpy" -version = "1.19.5" -description = "NumPy is the fundamental package for array computing with Python." -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "packaging" -version = "20.8" -description = "Core utilities for Python packages" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.dependencies] -pyparsing = ">=2.0.2" - -[[package]] -name = "pandocfilters" -version = "1.4.3" -description = "Utilities for writing pandoc filters in python" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "parso" -version = "0.8.1" -description = "A Python Parser" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.extras] -qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] -testing = ["docopt", "pytest (<6.0.0)"] - -[[package]] -name = "pexpect" -version = "4.8.0" -description = "Pexpect allows easy control of interactive console applications." -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -ptyprocess = ">=0.5" - -[[package]] -name = "pickleshare" -version = "0.7.5" -description = "Tiny 'shelve'-like database with concurrency support" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "pint" -version = "0.16.1" -description = "Physical quantities module" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -packaging = "*" - -[package.extras] -numpy = ["numpy (>=1.14)"] -test = ["pytest", "pytest-mpl", "pytest-cov"] -uncertainties = ["uncertainties (>=3.0)"] - -[[package]] -name = "pluggy" -version = "0.13.1" -description = "plugin and hook calling mechanisms for python" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.dependencies] -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} - -[package.extras] -dev = ["pre-commit", "tox"] - -[[package]] -name = "prometheus-client" -version = "0.9.0" -description = "Python client for the Prometheus monitoring system." -category = "dev" -optional = false -python-versions = "*" - -[package.extras] -twisted = ["twisted"] - -[[package]] -name = "prompt-toolkit" -version = "3.0.10" -description = "Library for building powerful interactive command lines in Python" -category = "dev" -optional = false -python-versions = ">=3.6.1" - -[package.dependencies] -wcwidth = "*" - -[[package]] -name = "ptyprocess" -version = "0.7.0" -description = "Run a subprocess in a pseudo terminal" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "py" -version = "1.10.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "pycifstar" -version = "0.2.8" -description = "PyCifStar is a class library for data manipulation provided in the CIF/STAR File." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "pycparser" -version = "2.20" -description = "C parser in Python" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "pygments" -version = "2.7.4" -description = "Pygments is a syntax highlighting package written in Python." -category = "dev" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "pyparsing" -version = "2.4.7" -description = "Python parsing module" -category = "main" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "pyrsistent" -version = "0.17.3" -description = "Persistent/Functional/Immutable data structures" -category = "dev" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "pytest" -version = "5.4.3" -description = "pytest: simple powerful testing with Python" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=17.4.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} -more-itertools = ">=4.0.0" -packaging = "*" -pluggy = ">=0.12,<1.0" -py = ">=1.5.0" -wcwidth = "*" - -[package.extras] -checkqa-mypy = ["mypy (==v0.761)"] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "python-dateutil" -version = "2.8.1" -description = "Extensions to the standard Python datetime module" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pywin32" -version = "300" -description = "Python for Window Extensions" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "pywinpty" -version = "0.5.7" -description = "Python bindings for the winpty library" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "pyzmq" -version = "20.0.0" -description = "Python bindings for 0MQ" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -cffi = {version = "*", markers = "implementation_name === \"pypy\""} -py = {version = "*", markers = "implementation_name === \"pypy\""} - -[[package]] -name = "requests" -version = "2.25.1" -description = "Python HTTP for Humans." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[package.dependencies] -certifi = ">=2017.4.17" -chardet = ">=3.0.2,<5" -idna = ">=2.5,<3" -urllib3 = ">=1.21.1,<1.27" - -[package.extras] -security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] - -[[package]] -name = "scipy" -version = "1.6.0" -description = "SciPy: Scientific Library for Python" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -numpy = ">=1.16.5" - -[[package]] -name = "send2trash" -version = "1.5.0" -description = "Send file to trash natively under Mac OS X, Windows and Linux." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "six" -version = "1.15.0" -description = "Python 2 and 3 compatibility utilities" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "terminado" -version = "0.9.2" -description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -ptyprocess = {version = "*", markers = "os_name != \"nt\""} -pywinpty = {version = ">=0.5", markers = "os_name == \"nt\""} -tornado = ">=4" - -[[package]] -name = "testpath" -version = "0.4.4" -description = "Test utilities for code working with files and commands" -category = "dev" -optional = false -python-versions = "*" - -[package.extras] -test = ["pathlib2"] - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "tornado" -version = "6.1" -description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -category = "dev" -optional = false -python-versions = ">= 3.5" - -[[package]] -name = "traitlets" -version = "5.0.5" -description = "Traitlets Python configuration system" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -ipython-genutils = "*" - -[package.extras] -test = ["pytest"] - -[[package]] -name = "typing-extensions" -version = "3.7.4.3" -description = "Backported and Experimental Type Hints for Python 3.5+" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "uncertainties" -version = "3.1.5" -description = "Transparent calculations with uncertainties on the quantities involved (aka error propagation); fast calculation of derivatives" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -future = "*" - -[package.extras] -all = ["numpy", "sphinx", "nose"] -docs = ["sphinx"] -optional = ["numpy"] -tests = ["nose", "numpy"] - -[[package]] -name = "urllib3" -version = "1.26.2" -description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" - -[package.extras] -brotli = ["brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] - -[[package]] -name = "wcwidth" -version = "0.2.5" -description = "Measures the displayed width of unicode strings in a terminal" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "webencodings" -version = "0.5.1" -description = "Character encoding aliases for legacy web content" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "zipp" -version = "3.4.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] - -[metadata] -lock-version = "1.1" -python-versions = "^3.7, <3.8" -content-hash = "fb5c6a29a088058eb0f64eb41596759754e217add156fbf12a5a76d7d65b7460" - -[metadata.files] -appnope = [ - {file = "appnope-0.1.2-py2.py3-none-any.whl", hash = "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442"}, - {file = "appnope-0.1.2.tar.gz", hash = "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a"}, -] -argon2-cffi = [ - {file = "argon2-cffi-20.1.0.tar.gz", hash = "sha256:d8029b2d3e4b4cea770e9e5a0104dd8fa185c1724a0f01528ae4826a6d25f97d"}, - {file = "argon2_cffi-20.1.0-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:6ea92c980586931a816d61e4faf6c192b4abce89aa767ff6581e6ddc985ed003"}, - {file = "argon2_cffi-20.1.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:05a8ac07c7026542377e38389638a8a1e9b78f1cd8439cd7493b39f08dd75fbf"}, - {file = "argon2_cffi-20.1.0-cp27-cp27m-win32.whl", hash = "sha256:0bf066bc049332489bb2d75f69216416329d9dc65deee127152caeb16e5ce7d5"}, - {file = "argon2_cffi-20.1.0-cp27-cp27m-win_amd64.whl", hash = "sha256:57358570592c46c420300ec94f2ff3b32cbccd10d38bdc12dc6979c4a8484fbc"}, - {file = "argon2_cffi-20.1.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:7d455c802727710e9dfa69b74ccaab04568386ca17b0ad36350b622cd34606fe"}, - {file = "argon2_cffi-20.1.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:b160416adc0f012fb1f12588a5e6954889510f82f698e23ed4f4fa57f12a0647"}, - {file = "argon2_cffi-20.1.0-cp35-cp35m-win32.whl", hash = "sha256:9bee3212ba4f560af397b6d7146848c32a800652301843df06b9e8f68f0f7361"}, - {file = "argon2_cffi-20.1.0-cp35-cp35m-win_amd64.whl", hash = "sha256:392c3c2ef91d12da510cfb6f9bae52512a4552573a9e27600bdb800e05905d2b"}, - {file = "argon2_cffi-20.1.0-cp36-cp36m-win32.whl", hash = "sha256:ba7209b608945b889457f949cc04c8e762bed4fe3fec88ae9a6b7765ae82e496"}, - {file = "argon2_cffi-20.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:da7f0445b71db6d3a72462e04f36544b0de871289b0bc8a7cc87c0f5ec7079fa"}, - {file = "argon2_cffi-20.1.0-cp37-abi3-macosx_10_6_intel.whl", hash = "sha256:cc0e028b209a5483b6846053d5fd7165f460a1f14774d79e632e75e7ae64b82b"}, - {file = "argon2_cffi-20.1.0-cp37-cp37m-win32.whl", hash = "sha256:18dee20e25e4be86680b178b35ccfc5d495ebd5792cd00781548d50880fee5c5"}, - {file = "argon2_cffi-20.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6678bb047373f52bcff02db8afab0d2a77d83bde61cfecea7c5c62e2335cb203"}, - {file = "argon2_cffi-20.1.0-cp38-cp38-win32.whl", hash = "sha256:77e909cc756ef81d6abb60524d259d959bab384832f0c651ed7dcb6e5ccdbb78"}, - {file = "argon2_cffi-20.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:9dfd5197852530294ecb5795c97a823839258dfd5eb9420233c7cfedec2058f2"}, - {file = "argon2_cffi-20.1.0-cp39-cp39-win32.whl", hash = "sha256:e2db6e85c057c16d0bd3b4d2b04f270a7467c147381e8fd73cbbe5bc719832be"}, - {file = "argon2_cffi-20.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a84934bd818e14a17943de8099d41160da4a336bcc699bb4c394bbb9b94bd32"}, -] -asteval = [ - {file = "asteval-0.9.21.tar.gz", hash = "sha256:ee14ba2211cda1c76114e3e7b552cdd57e940309203d5f4106e6d6f2c2346a2e"}, -] -async-generator = [ - {file = "async_generator-1.10-py3-none-any.whl", hash = "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b"}, - {file = "async_generator-1.10.tar.gz", hash = "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"}, -] -atomicwrites = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, -] -attrs = [ - {file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"}, - {file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"}, -] -backcall = [ - {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, - {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, -] -bleach = [ - {file = "bleach-3.2.1-py2.py3-none-any.whl", hash = "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd"}, - {file = "bleach-3.2.1.tar.gz", hash = "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080"}, -] -bumps = [ - {file = "bumps-0.8.0.tar.gz", hash = "sha256:9f92c05effd8175763799d19ca55592e89b053318f611148a6725159aea41d67"}, -] -certifi = [ - {file = "certifi-2020.12.5-py2.py3-none-any.whl", hash = "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830"}, - {file = "certifi-2020.12.5.tar.gz", hash = "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c"}, -] -cffi = [ - {file = "cffi-1.14.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ebb253464a5d0482b191274f1c8bf00e33f7e0b9c66405fbffc61ed2c839c775"}, - {file = "cffi-1.14.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c24d61263f511551f740d1a065eb0212db1dbbbbd241db758f5244281590c06"}, - {file = "cffi-1.14.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9f7a31251289b2ab6d4012f6e83e58bc3b96bd151f5b5262467f4bb6b34a7c26"}, - {file = "cffi-1.14.4-cp27-cp27m-win32.whl", hash = "sha256:5cf4be6c304ad0b6602f5c4e90e2f59b47653ac1ed9c662ed379fe48a8f26b0c"}, - {file = "cffi-1.14.4-cp27-cp27m-win_amd64.whl", hash = "sha256:f60567825f791c6f8a592f3c6e3bd93dd2934e3f9dac189308426bd76b00ef3b"}, - {file = "cffi-1.14.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:c6332685306b6417a91b1ff9fae889b3ba65c2292d64bd9245c093b1b284809d"}, - {file = "cffi-1.14.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d9efd8b7a3ef378dd61a1e77367f1924375befc2eba06168b6ebfa903a5e59ca"}, - {file = "cffi-1.14.4-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:51a8b381b16ddd370178a65360ebe15fbc1c71cf6f584613a7ea08bfad946698"}, - {file = "cffi-1.14.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:1d2c4994f515e5b485fd6d3a73d05526aa0fcf248eb135996b088d25dfa1865b"}, - {file = "cffi-1.14.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:af5c59122a011049aad5dd87424b8e65a80e4a6477419c0c1015f73fb5ea0293"}, - {file = "cffi-1.14.4-cp35-cp35m-win32.whl", hash = "sha256:594234691ac0e9b770aee9fcdb8fa02c22e43e5c619456efd0d6c2bf276f3eb2"}, - {file = "cffi-1.14.4-cp35-cp35m-win_amd64.whl", hash = "sha256:64081b3f8f6f3c3de6191ec89d7dc6c86a8a43911f7ecb422c60e90c70be41c7"}, - {file = "cffi-1.14.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f803eaa94c2fcda012c047e62bc7a51b0bdabda1cad7a92a522694ea2d76e49f"}, - {file = "cffi-1.14.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:105abaf8a6075dc96c1fe5ae7aae073f4696f2905fde6aeada4c9d2926752362"}, - {file = "cffi-1.14.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0638c3ae1a0edfb77c6765d487fee624d2b1ee1bdfeffc1f0b58c64d149e7eec"}, - {file = "cffi-1.14.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:7c6b1dece89874d9541fc974917b631406233ea0440d0bdfbb8e03bf39a49b3b"}, - {file = "cffi-1.14.4-cp36-cp36m-win32.whl", hash = "sha256:155136b51fd733fa94e1c2ea5211dcd4c8879869008fc811648f16541bf99668"}, - {file = "cffi-1.14.4-cp36-cp36m-win_amd64.whl", hash = "sha256:6bc25fc545a6b3d57b5f8618e59fc13d3a3a68431e8ca5fd4c13241cd70d0009"}, - {file = "cffi-1.14.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a7711edca4dcef1a75257b50a2fbfe92a65187c47dab5a0f1b9b332c5919a3fb"}, - {file = "cffi-1.14.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:00e28066507bfc3fe865a31f325c8391a1ac2916219340f87dfad602c3e48e5d"}, - {file = "cffi-1.14.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:798caa2a2384b1cbe8a2a139d80734c9db54f9cc155c99d7cc92441a23871c03"}, - {file = "cffi-1.14.4-cp37-cp37m-win32.whl", hash = "sha256:00a1ba5e2e95684448de9b89888ccd02c98d512064b4cb987d48f4b40aa0421e"}, - {file = "cffi-1.14.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9cc46bc107224ff5b6d04369e7c595acb700c3613ad7bcf2e2012f62ece80c35"}, - {file = "cffi-1.14.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:df5169c4396adc04f9b0a05f13c074df878b6052430e03f50e68adf3a57aa28d"}, - {file = "cffi-1.14.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9ffb888f19d54a4d4dfd4b3f29bc2c16aa4972f1c2ab9c4ab09b8ab8685b9c2b"}, - {file = "cffi-1.14.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8d6603078baf4e11edc4168a514c5ce5b3ba6e3e9c374298cb88437957960a53"}, - {file = "cffi-1.14.4-cp38-cp38-win32.whl", hash = "sha256:b4e248d1087abf9f4c10f3c398896c87ce82a9856494a7155823eb45a892395d"}, - {file = "cffi-1.14.4-cp38-cp38-win_amd64.whl", hash = "sha256:ec80dc47f54e6e9a78181ce05feb71a0353854cc26999db963695f950b5fb375"}, - {file = "cffi-1.14.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:840793c68105fe031f34d6a086eaea153a0cd5c491cde82a74b420edd0a2b909"}, - {file = "cffi-1.14.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:b18e0a9ef57d2b41f5c68beefa32317d286c3d6ac0484efd10d6e07491bb95dd"}, - {file = "cffi-1.14.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:045d792900a75e8b1e1b0ab6787dd733a8190ffcf80e8c8ceb2fb10a29ff238a"}, - {file = "cffi-1.14.4-cp39-cp39-win32.whl", hash = "sha256:ba4e9e0ae13fc41c6b23299545e5ef73055213e466bd107953e4a013a5ddd7e3"}, - {file = "cffi-1.14.4-cp39-cp39-win_amd64.whl", hash = "sha256:f032b34669220030f905152045dfa27741ce1a6db3324a5bc0b96b6c7420c87b"}, - {file = "cffi-1.14.4.tar.gz", hash = "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c"}, -] -chardet = [ - {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, - {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, -] -colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, -] -cryspy = [ - {file = "cryspy-0.4.20-py3-none-any.whl", hash = "sha256:20689a3564472e7ea3ac81d59ad83c53b380ad78b6f8b3d4bfee1807777dc2de"}, - {file = "cryspy-0.4.20.tar.gz", hash = "sha256:3ffc26e2d9a54e3702fc4976ce9a07b8b7fa7c4b7ff76b299822bbd3c2ed93c4"}, -] -cycler = [ - {file = "cycler-0.10.0-py2.py3-none-any.whl", hash = "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d"}, - {file = "cycler-0.10.0.tar.gz", hash = "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"}, -] -decorator = [ - {file = "decorator-4.4.2-py2.py3-none-any.whl", hash = "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760"}, - {file = "decorator-4.4.2.tar.gz", hash = "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7"}, -] -defusedxml = [ - {file = "defusedxml-0.6.0-py2.py3-none-any.whl", hash = "sha256:6687150770438374ab581bb7a1b327a847dd9c5749e396102de3fad4e8a3ef93"}, - {file = "defusedxml-0.6.0.tar.gz", hash = "sha256:f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5"}, -] -easycore = [] -entrypoints = [ - {file = "entrypoints-0.3-py2.py3-none-any.whl", hash = "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19"}, - {file = "entrypoints-0.3.tar.gz", hash = "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451"}, -] -future = [ - {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, -] -idna = [ - {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, - {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, -] -importlib-metadata = [ - {file = "importlib_metadata-3.4.0-py3-none-any.whl", hash = "sha256:ace61d5fc652dc280e7b6b4ff732a9c2d40db2c0f92bc6cb74e07b73d53a1771"}, - {file = "importlib_metadata-3.4.0.tar.gz", hash = "sha256:fa5daa4477a7414ae34e95942e4dd07f62adf589143c875c133c1e53c4eff38d"}, -] -ipykernel = [ - {file = "ipykernel-5.4.3-py3-none-any.whl", hash = "sha256:4ed205700001a83b5832d4821c46a5733f1bf4b1c55744314ae3c756be6b6095"}, - {file = "ipykernel-5.4.3.tar.gz", hash = "sha256:697103d218e9a8828025af7986e033c89e0b36e2b6eb84a5bda4739b9a27f3cb"}, -] -ipython = [ - {file = "ipython-7.19.0-py3-none-any.whl", hash = "sha256:c987e8178ced651532b3b1ff9965925bfd445c279239697052561a9ab806d28f"}, - {file = "ipython-7.19.0.tar.gz", hash = "sha256:cbb2ef3d5961d44e6a963b9817d4ea4e1fa2eb589c371a470fed14d8d40cbd6a"}, -] -ipython-genutils = [ - {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, - {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, -] -jedi = [ - {file = "jedi-0.18.0-py2.py3-none-any.whl", hash = "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93"}, - {file = "jedi-0.18.0.tar.gz", hash = "sha256:92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707"}, -] -jinja2 = [ - {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"}, - {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"}, -] -json5 = [ - {file = "json5-0.9.5-py2.py3-none-any.whl", hash = "sha256:af1a1b9a2850c7f62c23fde18be4749b3599fd302f494eebf957e2ada6b9e42c"}, - {file = "json5-0.9.5.tar.gz", hash = "sha256:703cfee540790576b56a92e1c6aaa6c4b0d98971dc358ead83812aa4d06bdb96"}, -] -jsonschema = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] -jupyter-client = [ - {file = "jupyter_client-6.1.11-py3-none-any.whl", hash = "sha256:5eaaa41df449167ebba5e1cf6ca9b31f7fd4f71625069836e2e4fee07fe3cb13"}, - {file = "jupyter_client-6.1.11.tar.gz", hash = "sha256:649ca3aca1e28f27d73ef15868a7c7f10d6e70f761514582accec3ca6bb13085"}, -] -jupyter-core = [ - {file = "jupyter_core-4.7.0-py3-none-any.whl", hash = "sha256:0a451c9b295e4db772bdd8d06f2f1eb31caeec0e81fbb77ba37d4a3024e3b315"}, - {file = "jupyter_core-4.7.0.tar.gz", hash = "sha256:aa1f9496ab3abe72da4efe0daab0cb2233997914581f9a071e07498c6add8ed3"}, -] -jupyterlab = [ - {file = "jupyterlab-2.2.9-py3-none-any.whl", hash = "sha256:59af02c26a15ec2d2862a15bc72e41ae304b406a0b0d3f4f705eeb7caf91902b"}, - {file = "jupyterlab-2.2.9.tar.gz", hash = "sha256:3be8f8edea173753dd838c1b6d3bbcb6f5c801121f824a477025c1b6a1d33dc6"}, -] -jupyterlab-pygments = [ - {file = "jupyterlab_pygments-0.1.2-py2.py3-none-any.whl", hash = "sha256:abfb880fd1561987efaefcb2d2ac75145d2a5d0139b1876d5be806e32f630008"}, - {file = "jupyterlab_pygments-0.1.2.tar.gz", hash = "sha256:cfcda0873626150932f438eccf0f8bf22bfa92345b814890ab360d666b254146"}, -] -jupyterlab-server = [ - {file = "jupyterlab_server-1.2.0-py3-none-any.whl", hash = "sha256:55d256077bf13e5bc9e8fbd5aac51bef82f6315111cec6b712b9a5ededbba924"}, - {file = "jupyterlab_server-1.2.0.tar.gz", hash = "sha256:5431d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c"}, -] -kiwisolver = [ - {file = "kiwisolver-1.3.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fd34fbbfbc40628200730bc1febe30631347103fc8d3d4fa012c21ab9c11eca9"}, - {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:d3155d828dec1d43283bd24d3d3e0d9c7c350cdfcc0bd06c0ad1209c1bbc36d0"}, - {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5a7a7dbff17e66fac9142ae2ecafb719393aaee6a3768c9de2fd425c63b53e21"}, - {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:f8d6f8db88049a699817fd9178782867bf22283e3813064302ac59f61d95be05"}, - {file = "kiwisolver-1.3.1-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:5f6ccd3dd0b9739edcf407514016108e2280769c73a85b9e59aa390046dbf08b"}, - {file = "kiwisolver-1.3.1-cp36-cp36m-win32.whl", hash = "sha256:225e2e18f271e0ed8157d7f4518ffbf99b9450fca398d561eb5c4a87d0986dd9"}, - {file = "kiwisolver-1.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cf8b574c7b9aa060c62116d4181f3a1a4e821b2ec5cbfe3775809474113748d4"}, - {file = "kiwisolver-1.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:232c9e11fd7ac3a470d65cd67e4359eee155ec57e822e5220322d7b2ac84fbf0"}, - {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:b38694dcdac990a743aa654037ff1188c7a9801ac3ccc548d3341014bc5ca278"}, - {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ca3820eb7f7faf7f0aa88de0e54681bddcb46e485beb844fcecbcd1c8bd01689"}, - {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:c8fd0f1ae9d92b42854b2979024d7597685ce4ada367172ed7c09edf2cef9cb8"}, - {file = "kiwisolver-1.3.1-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:1e1bc12fb773a7b2ffdeb8380609f4f8064777877b2225dec3da711b421fda31"}, - {file = "kiwisolver-1.3.1-cp37-cp37m-win32.whl", hash = "sha256:72c99e39d005b793fb7d3d4e660aed6b6281b502e8c1eaf8ee8346023c8e03bc"}, - {file = "kiwisolver-1.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:8be8d84b7d4f2ba4ffff3665bcd0211318aa632395a1a41553250484a871d454"}, - {file = "kiwisolver-1.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:31dfd2ac56edc0ff9ac295193eeaea1c0c923c0355bf948fbd99ed6018010b72"}, - {file = "kiwisolver-1.3.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:563c649cfdef27d081c84e72a03b48ea9408c16657500c312575ae9d9f7bc1c3"}, - {file = "kiwisolver-1.3.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:78751b33595f7f9511952e7e60ce858c6d64db2e062afb325985ddbd34b5c131"}, - {file = "kiwisolver-1.3.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:a357fd4f15ee49b4a98b44ec23a34a95f1e00292a139d6015c11f55774ef10de"}, - {file = "kiwisolver-1.3.1-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:5989db3b3b34b76c09253deeaf7fbc2707616f130e166996606c284395da3f18"}, - {file = "kiwisolver-1.3.1-cp38-cp38-win32.whl", hash = "sha256:c08e95114951dc2090c4a630c2385bef681cacf12636fb0241accdc6b303fd81"}, - {file = "kiwisolver-1.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:44a62e24d9b01ba94ae7a4a6c3fb215dc4af1dde817e7498d901e229aaf50e4e"}, - {file = "kiwisolver-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:50af681a36b2a1dee1d3c169ade9fdc59207d3c31e522519181e12f1b3ba7000"}, - {file = "kiwisolver-1.3.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a53d27d0c2a0ebd07e395e56a1fbdf75ffedc4a05943daf472af163413ce9598"}, - {file = "kiwisolver-1.3.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:834ee27348c4aefc20b479335fd422a2c69db55f7d9ab61721ac8cd83eb78882"}, - {file = "kiwisolver-1.3.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:5c3e6455341008a054cccee8c5d24481bcfe1acdbc9add30aa95798e95c65621"}, - {file = "kiwisolver-1.3.1-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:acef3d59d47dd85ecf909c359d0fd2c81ed33bdff70216d3956b463e12c38a54"}, - {file = "kiwisolver-1.3.1-cp39-cp39-win32.whl", hash = "sha256:c5518d51a0735b1e6cee1fdce66359f8d2b59c3ca85dc2b0813a8aa86818a030"}, - {file = "kiwisolver-1.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b9edd0110a77fc321ab090aaa1cfcaba1d8499850a12848b81be2222eab648f6"}, - {file = "kiwisolver-1.3.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0cd53f403202159b44528498de18f9285b04482bab2a6fc3f5dd8dbb9352e30d"}, - {file = "kiwisolver-1.3.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:33449715e0101e4d34f64990352bce4095c8bf13bed1b390773fc0a7295967b3"}, - {file = "kiwisolver-1.3.1-pp36-pypy36_pp73-win32.whl", hash = "sha256:401a2e9afa8588589775fe34fc22d918ae839aaaf0c0e96441c0fdbce6d8ebe6"}, - {file = "kiwisolver-1.3.1.tar.gz", hash = "sha256:950a199911a8d94683a6b10321f9345d5a3a8433ec58b217ace979e18f16e248"}, -] -libsdarwin = [] -libslinux = [] -libswin32 = [] -lmfit = [ - {file = "lmfit-1.0.1.tar.gz", hash = "sha256:d249eb756899360f4d2a544c9458f47fc8f765ac22c09e099530585fd64e286e"}, -] -markupsafe = [ - {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"}, - {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"}, - {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"}, - {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"}, - {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"}, - {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"}, - {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"}, - {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"}, - {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"}, - {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"}, - {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"}, - {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"}, - {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"}, - {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"}, - {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"}, - {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, - {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"}, - {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, -] -matplotlib = [ - {file = "matplotlib-3.2.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a47abc48c7b81fe6e636dde8a58e49b13d87d140e0f448213a4879f4a3f73345"}, - {file = "matplotlib-3.2.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:20bcd11efe194cd302bd0653cb025b8d16bcd80442359bfca8d49dc805f35ec8"}, - {file = "matplotlib-3.2.2-cp36-cp36m-win32.whl", hash = "sha256:2a6d64336b547e25730b6221e7aadfb01a391a065d43b5f51f0b9d7f673d2dd2"}, - {file = "matplotlib-3.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:4416825ebc9c1f135027a30e8d8aea0edcf45078ce767c7f7386737413cfb98f"}, - {file = "matplotlib-3.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:465c752278d27895e23f1379d6fcfa3a2990643b803c25e3bc16a10641d2346a"}, - {file = "matplotlib-3.2.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:81de040403a33bf3c68e9d4a40e26c8d24da00f7e3fadd845003b7e106785da7"}, - {file = "matplotlib-3.2.2-cp37-cp37m-win32.whl", hash = "sha256:006413f08ba5db1f5b1e0d6fbdc2ac9058b062ccf552f57182563a78579c34b4"}, - {file = "matplotlib-3.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:da06fa530591a141ffbe1712bbeec784734c3436b40c942d21652f305199b5d9"}, - {file = "matplotlib-3.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:894dd47c0a6ce38dc19bc87d1f7e2b0608310b2a18d1572291157450b05ce874"}, - {file = "matplotlib-3.2.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:1ab264770e7cf2cf4feb99f22c737066aef21ddf1ec402dc255450ac15eacb7b"}, - {file = "matplotlib-3.2.2-cp38-cp38-win32.whl", hash = "sha256:91c153f4318e3c67c035fd1185f5ea2613f15008b73b66985033033f6fe54bbd"}, - {file = "matplotlib-3.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:a68e42e22f7fd190a532e4215e142276970c2d54040a0c46842fcb3db8b6ec5b"}, - {file = "matplotlib-3.2.2-cp39-cp39-win32.whl", hash = "sha256:647cf232ccf6265d2ba1ac4103e8c8b6ac7b03a40da3421234ffb03dda217f59"}, - {file = "matplotlib-3.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:31d32c83bb2b617377c6156f75e88b9ec2ded289e47ad4ff0f263dc1019d88b1"}, - {file = "matplotlib-3.2.2-pp36-pypy36_pp73-win32.whl", hash = "sha256:67065d938df34478451af62fbd0670d2b51c4d859fb66673064eb5de8660dd7c"}, - {file = "matplotlib-3.2.2.tar.gz", hash = "sha256:3d77a6630d093d74cbbfebaa0571d00790966be1ed204e4a8239f5cbd6835c5d"}, -] -mistune = [ - {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"}, - {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"}, -] -monty = [ - {file = "monty-4.0.2-py3-none-any.whl", hash = "sha256:e529d9fd270880fbb64fe3baaaee5bdeaad32d6f246255a51044ca7c27f14886"}, - {file = "monty-4.0.2.tar.gz", hash = "sha256:82d2a68af3418c10e6af5f2350494a41c1036cc9b5cbce49860a755803695365"}, -] -more-itertools = [ - {file = "more-itertools-8.6.0.tar.gz", hash = "sha256:b3a9005928e5bed54076e6e549c792b306fddfe72b2d1d22dd63d42d5d3899cf"}, - {file = "more_itertools-8.6.0-py3-none-any.whl", hash = "sha256:8e1a2a43b2f2727425f2b5839587ae37093f19153dc26c0927d1048ff6557330"}, -] -nbclient = [ - {file = "nbclient-0.5.1-py3-none-any.whl", hash = "sha256:4d6b116187c795c99b9dba13d46e764d596574b14c296d60670c8dfe454db364"}, - {file = "nbclient-0.5.1.tar.gz", hash = "sha256:01e2d726d16eaf2cde6db74a87e2451453547e8832d142f73f72fddcd4fe0250"}, -] -nbconvert = [ - {file = "nbconvert-6.0.7-py3-none-any.whl", hash = "sha256:39e9f977920b203baea0be67eea59f7b37a761caa542abe80f5897ce3cf6311d"}, - {file = "nbconvert-6.0.7.tar.gz", hash = "sha256:cbbc13a86dfbd4d1b5dee106539de0795b4db156c894c2c5dc382062bbc29002"}, -] -nbformat = [ - {file = "nbformat-5.0.8-py3-none-any.whl", hash = "sha256:aa9450c16d29286dc69b92ea4913c1bffe86488f90184445996ccc03a2f60382"}, - {file = "nbformat-5.0.8.tar.gz", hash = "sha256:f545b22138865bfbcc6b1ffe89ed5a2b8e2dc5d4fe876f2ca60d8e6f702a30f8"}, -] -nest-asyncio = [ - {file = "nest_asyncio-1.4.3-py3-none-any.whl", hash = "sha256:dbe032f3e9ff7f120e76be22bf6e7958e867aed1743e6894b8a9585fe8495cc9"}, - {file = "nest_asyncio-1.4.3.tar.gz", hash = "sha256:eaa09ef1353ebefae19162ad423eef7a12166bcc63866f8bff8f3635353cd9fa"}, -] -notebook = [ - {file = "notebook-6.1.6-py3-none-any.whl", hash = "sha256:e6a62188e319a5d45dd2ed24719f646adf88bef8be1f654ebd0ab360ece6d7a6"}, - {file = "notebook-6.1.6.tar.gz", hash = "sha256:cf40d4f81541401db5a2fda1707ca7877157abd41f04ef7b88f02b67f3c61791"}, -] -numpy = [ - {file = "numpy-1.19.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc6bd4fd593cb261332568485e20a0712883cf631f6f5e8e86a52caa8b2b50ff"}, - {file = "numpy-1.19.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:aeb9ed923be74e659984e321f609b9ba54a48354bfd168d21a2b072ed1e833ea"}, - {file = "numpy-1.19.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8b5e972b43c8fc27d56550b4120fe6257fdc15f9301914380b27f74856299fea"}, - {file = "numpy-1.19.5-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:43d4c81d5ffdff6bae58d66a3cd7f54a7acd9a0e7b18d97abb255defc09e3140"}, - {file = "numpy-1.19.5-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:a4646724fba402aa7504cd48b4b50e783296b5e10a524c7a6da62e4a8ac9698d"}, - {file = "numpy-1.19.5-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:2e55195bc1c6b705bfd8ad6f288b38b11b1af32f3c8289d6c50d47f950c12e76"}, - {file = "numpy-1.19.5-cp36-cp36m-win32.whl", hash = "sha256:39b70c19ec771805081578cc936bbe95336798b7edf4732ed102e7a43ec5c07a"}, - {file = "numpy-1.19.5-cp36-cp36m-win_amd64.whl", hash = "sha256:dbd18bcf4889b720ba13a27ec2f2aac1981bd41203b3a3b27ba7a33f88ae4827"}, - {file = "numpy-1.19.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:603aa0706be710eea8884af807b1b3bc9fb2e49b9f4da439e76000f3b3c6ff0f"}, - {file = "numpy-1.19.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:cae865b1cae1ec2663d8ea56ef6ff185bad091a5e33ebbadd98de2cfa3fa668f"}, - {file = "numpy-1.19.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:36674959eed6957e61f11c912f71e78857a8d0604171dfd9ce9ad5cbf41c511c"}, - {file = "numpy-1.19.5-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:06fab248a088e439402141ea04f0fffb203723148f6ee791e9c75b3e9e82f080"}, - {file = "numpy-1.19.5-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6149a185cece5ee78d1d196938b2a8f9d09f5a5ebfbba66969302a778d5ddd1d"}, - {file = "numpy-1.19.5-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:50a4a0ad0111cc1b71fa32dedd05fa239f7fb5a43a40663269bb5dc7877cfd28"}, - {file = "numpy-1.19.5-cp37-cp37m-win32.whl", hash = "sha256:d051ec1c64b85ecc69531e1137bb9751c6830772ee5c1c426dbcfe98ef5788d7"}, - {file = "numpy-1.19.5-cp37-cp37m-win_amd64.whl", hash = "sha256:a12ff4c8ddfee61f90a1633a4c4afd3f7bcb32b11c52026c92a12e1325922d0d"}, - {file = "numpy-1.19.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cf2402002d3d9f91c8b01e66fbb436a4ed01c6498fffed0e4c7566da1d40ee1e"}, - {file = "numpy-1.19.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1ded4fce9cfaaf24e7a0ab51b7a87be9038ea1ace7f34b841fe3b6894c721d1c"}, - {file = "numpy-1.19.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:012426a41bc9ab63bb158635aecccc7610e3eff5d31d1eb43bc099debc979d94"}, - {file = "numpy-1.19.5-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:759e4095edc3c1b3ac031f34d9459fa781777a93ccc633a472a5468587a190ff"}, - {file = "numpy-1.19.5-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:a9d17f2be3b427fbb2bce61e596cf555d6f8a56c222bd2ca148baeeb5e5c783c"}, - {file = "numpy-1.19.5-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:99abf4f353c3d1a0c7a5f27699482c987cf663b1eac20db59b8c7b061eabd7fc"}, - {file = "numpy-1.19.5-cp38-cp38-win32.whl", hash = "sha256:384ec0463d1c2671170901994aeb6dce126de0a95ccc3976c43b0038a37329c2"}, - {file = "numpy-1.19.5-cp38-cp38-win_amd64.whl", hash = "sha256:811daee36a58dc79cf3d8bdd4a490e4277d0e4b7d103a001a4e73ddb48e7e6aa"}, - {file = "numpy-1.19.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c843b3f50d1ab7361ca4f0b3639bf691569493a56808a0b0c54a051d260b7dbd"}, - {file = "numpy-1.19.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d6631f2e867676b13026e2846180e2c13c1e11289d67da08d71cacb2cd93d4aa"}, - {file = "numpy-1.19.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7fb43004bce0ca31d8f13a6eb5e943fa73371381e53f7074ed21a4cb786c32f8"}, - {file = "numpy-1.19.5-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:2ea52bd92ab9f768cc64a4c3ef8f4b2580a17af0a5436f6126b08efbd1838371"}, - {file = "numpy-1.19.5-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:400580cbd3cff6ffa6293df2278c75aef2d58d8d93d3c5614cd67981dae68ceb"}, - {file = "numpy-1.19.5-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:df609c82f18c5b9f6cb97271f03315ff0dbe481a2a02e56aeb1b1a985ce38e60"}, - {file = "numpy-1.19.5-cp39-cp39-win32.whl", hash = "sha256:ab83f24d5c52d60dbc8cd0528759532736b56db58adaa7b5f1f76ad551416a1e"}, - {file = "numpy-1.19.5-cp39-cp39-win_amd64.whl", hash = "sha256:0eef32ca3132a48e43f6a0f5a82cb508f22ce5a3d6f67a8329c81c8e226d3f6e"}, - {file = "numpy-1.19.5-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:a0d53e51a6cb6f0d9082decb7a4cb6dfb33055308c4c44f53103c073f649af73"}, - {file = "numpy-1.19.5.zip", hash = "sha256:a76f502430dd98d7546e1ea2250a7360c065a5fdea52b2dffe8ae7180909b6f4"}, -] -packaging = [ - {file = "packaging-20.8-py2.py3-none-any.whl", hash = "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858"}, - {file = "packaging-20.8.tar.gz", hash = "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093"}, -] -pandocfilters = [ - {file = "pandocfilters-1.4.3.tar.gz", hash = "sha256:bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb"}, -] -parso = [ - {file = "parso-0.8.1-py2.py3-none-any.whl", hash = "sha256:15b00182f472319383252c18d5913b69269590616c947747bc50bf4ac768f410"}, - {file = "parso-0.8.1.tar.gz", hash = "sha256:8519430ad07087d4c997fda3a7918f7cfa27cb58972a8c89c2a0295a1c940e9e"}, -] -pexpect = [ - {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, - {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, -] -pickleshare = [ - {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, - {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, -] -pint = [ - {file = "Pint-0.16.1-py2.py3-none-any.whl", hash = "sha256:63ccb7153754923fd95477be69dcf8d7d0764ec2ebb3f6945f920c31fdf13392"}, - {file = "Pint-0.16.1.tar.gz", hash = "sha256:d43a2e9ae003164978b60fdf8cd920d8581e1a5991df8dded29b00f4850ec83a"}, -] -pluggy = [ - {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, - {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, -] -prometheus-client = [ - {file = "prometheus_client-0.9.0-py2.py3-none-any.whl", hash = "sha256:b08c34c328e1bf5961f0b4352668e6c8f145b4a087e09b7296ef62cbe4693d35"}, - {file = "prometheus_client-0.9.0.tar.gz", hash = "sha256:9da7b32f02439d8c04f7777021c304ed51d9ec180604700c1ba72a4d44dceb03"}, -] -prompt-toolkit = [ - {file = "prompt_toolkit-3.0.10-py3-none-any.whl", hash = "sha256:ac329c69bd8564cb491940511957312c7b8959bb5b3cf3582b406068a51d5bb7"}, - {file = "prompt_toolkit-3.0.10.tar.gz", hash = "sha256:b8b3d0bde65da350290c46a8f54f336b3cbf5464a4ac11239668d986852e79d5"}, -] -ptyprocess = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, -] -py = [ - {file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"}, - {file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"}, -] -pycifstar = [ - {file = "pycifstar-0.2.8-py3-none-any.whl", hash = "sha256:5a2a030974092ed71dc28913c6e26375020426aa478bccd9a1ab5154f1bf314e"}, - {file = "pycifstar-0.2.8.tar.gz", hash = "sha256:55a7b79503c12cf93aee57e849c214f31628294f1df33ea71ad9a4be9f972839"}, -] -pycparser = [ - {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"}, - {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"}, -] -pygments = [ - {file = "Pygments-2.7.4-py3-none-any.whl", hash = "sha256:bc9591213a8f0e0ca1a5e68a479b4887fdc3e75d0774e5c71c31920c427de435"}, - {file = "Pygments-2.7.4.tar.gz", hash = "sha256:df49d09b498e83c1a73128295860250b0b7edd4c723a32e9bc0d295c7c2ec337"}, -] -pyparsing = [ - {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, - {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, -] -pyrsistent = [ - {file = "pyrsistent-0.17.3.tar.gz", hash = "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e"}, -] -pytest = [ - {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, - {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, -] -python-dateutil = [ - {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, - {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, -] -pywin32 = [ - {file = "pywin32-300-cp35-cp35m-win32.whl", hash = "sha256:1c204a81daed2089e55d11eefa4826c05e604d27fe2be40b6bf8db7b6a39da63"}, - {file = "pywin32-300-cp35-cp35m-win_amd64.whl", hash = "sha256:350c5644775736351b77ba68da09a39c760d75d2467ecec37bd3c36a94fbed64"}, - {file = "pywin32-300-cp36-cp36m-win32.whl", hash = "sha256:a3b4c48c852d4107e8a8ec980b76c94ce596ea66d60f7a697582ea9dce7e0db7"}, - {file = "pywin32-300-cp36-cp36m-win_amd64.whl", hash = "sha256:27a30b887afbf05a9cbb05e3ffd43104a9b71ce292f64a635389dbad0ed1cd85"}, - {file = "pywin32-300-cp37-cp37m-win32.whl", hash = "sha256:d7e8c7efc221f10d6400c19c32a031add1c4a58733298c09216f57b4fde110dc"}, - {file = "pywin32-300-cp37-cp37m-win_amd64.whl", hash = "sha256:8151e4d7a19262d6694162d6da85d99a16f8b908949797fd99c83a0bfaf5807d"}, - {file = "pywin32-300-cp38-cp38-win32.whl", hash = "sha256:fbb3b1b0fbd0b4fc2a3d1d81fe0783e30062c1abed1d17c32b7879d55858cfae"}, - {file = "pywin32-300-cp38-cp38-win_amd64.whl", hash = "sha256:60a8fa361091b2eea27f15718f8eb7f9297e8d51b54dbc4f55f3d238093d5190"}, - {file = "pywin32-300-cp39-cp39-win32.whl", hash = "sha256:638b68eea5cfc8def537e43e9554747f8dee786b090e47ead94bfdafdb0f2f50"}, - {file = "pywin32-300-cp39-cp39-win_amd64.whl", hash = "sha256:b1609ce9bd5c411b81f941b246d683d6508992093203d4eb7f278f4ed1085c3f"}, -] -pywinpty = [ - {file = "pywinpty-0.5.7-cp27-cp27m-win32.whl", hash = "sha256:b358cb552c0f6baf790de375fab96524a0498c9df83489b8c23f7f08795e966b"}, - {file = "pywinpty-0.5.7-cp27-cp27m-win_amd64.whl", hash = "sha256:1e525a4de05e72016a7af27836d512db67d06a015aeaf2fa0180f8e6a039b3c2"}, - {file = "pywinpty-0.5.7-cp35-cp35m-win32.whl", hash = "sha256:2740eeeb59297593a0d3f762269b01d0285c1b829d6827445fcd348fb47f7e70"}, - {file = "pywinpty-0.5.7-cp35-cp35m-win_amd64.whl", hash = "sha256:33df97f79843b2b8b8bc5c7aaf54adec08cc1bae94ee99dfb1a93c7a67704d95"}, - {file = "pywinpty-0.5.7-cp36-cp36m-win32.whl", hash = "sha256:e854211df55d107f0edfda8a80b39dfc87015bef52a8fe6594eb379240d81df2"}, - {file = "pywinpty-0.5.7-cp36-cp36m-win_amd64.whl", hash = "sha256:dbd838de92de1d4ebf0dce9d4d5e4fc38d0b7b1de837947a18b57a882f219139"}, - {file = "pywinpty-0.5.7-cp37-cp37m-win32.whl", hash = "sha256:5fb2c6c6819491b216f78acc2c521b9df21e0f53b9a399d58a5c151a3c4e2a2d"}, - {file = "pywinpty-0.5.7-cp37-cp37m-win_amd64.whl", hash = "sha256:dd22c8efacf600730abe4a46c1388355ce0d4ab75dc79b15d23a7bd87bf05b48"}, - {file = "pywinpty-0.5.7-cp38-cp38-win_amd64.whl", hash = "sha256:8fc5019ff3efb4f13708bd3b5ad327589c1a554cb516d792527361525a7cb78c"}, - {file = "pywinpty-0.5.7.tar.gz", hash = "sha256:2d7e9c881638a72ffdca3f5417dd1563b60f603e1b43e5895674c2a1b01f95a0"}, -] -pyzmq = [ - {file = "pyzmq-20.0.0-cp35-cp35m-macosx_10_9_intel.whl", hash = "sha256:523d542823cabb94065178090e05347bd204365f6e7cb260f0071c995d392fc2"}, - {file = "pyzmq-20.0.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:225774a48ed7414c0395335e7123ef8c418dbcbe172caabdc2496133b03254c2"}, - {file = "pyzmq-20.0.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:bc7dd697356b31389d5118b9bcdef3e8d8079e8181800c4e8d72dccd56e1ff68"}, - {file = "pyzmq-20.0.0-cp35-cp35m-win32.whl", hash = "sha256:d81184489369ec325bd50ba1c935361e63f31f578430b9ad95471899361a8253"}, - {file = "pyzmq-20.0.0-cp35-cp35m-win_amd64.whl", hash = "sha256:7113eb93dcd0a5750c65d123ed0099e036a3a3f2dcb48afedd025ffa125c983b"}, - {file = "pyzmq-20.0.0-cp36-cp36m-macosx_10_9_intel.whl", hash = "sha256:b62113eeb9a0649cebed9b21fd578f3a0175ef214a2a91dcb7b31bbf55805295"}, - {file = "pyzmq-20.0.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:f0beef935efe78a63c785bb21ed56c1c24448511383e3994927c8bb2caf5e714"}, - {file = "pyzmq-20.0.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:46250789730489009fe139cbf576679557c070a6a3628077d09a4153d52fd381"}, - {file = "pyzmq-20.0.0-cp36-cp36m-win32.whl", hash = "sha256:bf755905a7d30d2749079611b9a89924c1f2da2695dc09ce221f42122c9808e3"}, - {file = "pyzmq-20.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2742e380d186673eee6a570ef83d4568741945434ba36d92b98d36cdbfedbd44"}, - {file = "pyzmq-20.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1e9b75a119606732023a305d1c214146c09a91f8116f6aff3e8b7d0a60b6f0ff"}, - {file = "pyzmq-20.0.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:03638e46d486dd1c118e03c8bf9c634bdcae679600eac6573ae1e54906de7c2f"}, - {file = "pyzmq-20.0.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:63ee08e35be72fdd7568065a249a5b5cf51a2e8ab6ee63cf9f73786fcb9e710b"}, - {file = "pyzmq-20.0.0-cp37-cp37m-win32.whl", hash = "sha256:c95dda497a7c1b1e734b5e8353173ca5dd7b67784d8821d13413a97856588057"}, - {file = "pyzmq-20.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:cc09c5cd1a4332611c8564d65e6a432dc6db3e10793d0254da9fa1e31d9ffd6d"}, - {file = "pyzmq-20.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6e24907857c80dc67692e31f5bf3ad5bf483ee0142cec95b3d47e2db8c43bdda"}, - {file = "pyzmq-20.0.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:895695be380f0f85d2e3ec5ccf68a93c92d45bd298567525ad5633071589872c"}, - {file = "pyzmq-20.0.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d92c7f41a53ece82b91703ea433c7d34143248cf0cead33aa11c5fc621c764bf"}, - {file = "pyzmq-20.0.0-cp38-cp38-win32.whl", hash = "sha256:309d763d89ec1845c0e0fa14e1fb6558fd8c9ef05ed32baec27d7a8499cc7bb0"}, - {file = "pyzmq-20.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:0e554fd390021edbe0330b67226325a820b0319c5b45e1b0a59bf22ccc36e793"}, - {file = "pyzmq-20.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cfa54a162a7b32641665e99b2c12084555afe9fc8fe80ec8b2f71a57320d10e1"}, - {file = "pyzmq-20.0.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:5efe02bdcc5eafcac0aab531292294298f0ab8d28ed43be9e507d0e09173d1a4"}, - {file = "pyzmq-20.0.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:0af84f34f27b5c6a0e906c648bdf46d4caebf9c8e6e16db0728f30a58141cad6"}, - {file = "pyzmq-20.0.0-cp39-cp39-win32.whl", hash = "sha256:c63fafd2556d218368c51d18588f8e6f8d86d09d493032415057faf6de869b34"}, - {file = "pyzmq-20.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:f110a4d3f8f01209eec304ed542f6c8054cce9b0f16dfe3d571e57c290e4e133"}, - {file = "pyzmq-20.0.0-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4d9259a5eb3f71abbaf61f165cacf42240bfeea3783bebd8255341abdfe206f1"}, - {file = "pyzmq-20.0.0.tar.gz", hash = "sha256:824ad5888331aadeac772bce27e1c2fbcab82fade92edbd234542c4e12f0dca9"}, -] -requests = [ - {file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"}, - {file = "requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804"}, -] -scipy = [ - {file = "scipy-1.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d4303e3e21d07d9557b26a1707bb9fc065510ee8501c9bf22a0157249a82fd0"}, - {file = "scipy-1.6.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:1bc5b446600c4ff7ab36bade47180673141322f0febaa555f1c433fe04f2a0e3"}, - {file = "scipy-1.6.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8840a9adb4ede3751f49761653d3ebf664f25195fdd42ada394ffea8903dd51d"}, - {file = "scipy-1.6.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:8629135ee00cc2182ac8be8e75643b9f02235942443732c2ed69ab48edcb6614"}, - {file = "scipy-1.6.0-cp37-cp37m-win32.whl", hash = "sha256:58731bbe0103e96b89b2f41516699db9b63066e4317e31b8402891571f6d358f"}, - {file = "scipy-1.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:876badc33eec20709d4e042a09834f5953ebdac4088d45a4f3a1f18b56885718"}, - {file = "scipy-1.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c0911f3180de343643f369dc5cfedad6ba9f939c2d516bddea4a6871eb000722"}, - {file = "scipy-1.6.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b8af26839ae343655f3ca377a5d5e5466f1d3b3ac7432a43449154fe958ae0e0"}, - {file = "scipy-1.6.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:4f1d9cc977ac6a4a63c124045c1e8bf67ec37098f67c699887a93736961a00ae"}, - {file = "scipy-1.6.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:eb7928275f3560d47e5538e15e9f32b3d64cd30ea8f85f3e82987425476f53f6"}, - {file = "scipy-1.6.0-cp38-cp38-win32.whl", hash = "sha256:31ab217b5c27ab429d07428a76002b33662f98986095bbce5d55e0788f7e8b15"}, - {file = "scipy-1.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:2f1c2ebca6fd867160e70102200b1bd07b3b2d31a3e6af3c58d688c15d0d07b7"}, - {file = "scipy-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:155225621df90fcd151e25d51c50217e412de717475999ebb76e17e310176981"}, - {file = "scipy-1.6.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:f68d5761a2d2376e2b194c8e9192bbf7c51306ca176f1a0889990a52ef0d551f"}, - {file = "scipy-1.6.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:d902d3a5ad7f28874c0a82db95246d24ca07ad932741df668595fe00a4819870"}, - {file = "scipy-1.6.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:aef3a2dbc436bbe8f6e0b635f0b5fe5ed024b522eee4637dbbe0b974129ca734"}, - {file = "scipy-1.6.0-cp39-cp39-win32.whl", hash = "sha256:cdbc47628184a0ebeb5c08f1892614e1bd4a51f6e0d609c6eed253823a960f5b"}, - {file = "scipy-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:313785c4dab65060f9648112d025f6d2fec69a8a889c714328882d678a95f053"}, - {file = "scipy-1.6.0.tar.gz", hash = "sha256:cb6dc9f82dfd95f6b9032a8d7ea70efeeb15d5b5fd6ed4e8537bb3c673580566"}, -] -send2trash = [ - {file = "Send2Trash-1.5.0-py3-none-any.whl", hash = "sha256:f1691922577b6fa12821234aeb57599d887c4900b9ca537948d2dac34aea888b"}, - {file = "Send2Trash-1.5.0.tar.gz", hash = "sha256:60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2"}, -] -six = [ - {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, - {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, -] -terminado = [ - {file = "terminado-0.9.2-py3-none-any.whl", hash = "sha256:23a053e06b22711269563c8bb96b36a036a86be8b5353e85e804f89b84aaa23f"}, - {file = "terminado-0.9.2.tar.gz", hash = "sha256:89e6d94b19e4bc9dce0ffd908dfaf55cc78a9bf735934e915a4a96f65ac9704c"}, -] -testpath = [ - {file = "testpath-0.4.4-py2.py3-none-any.whl", hash = "sha256:bfcf9411ef4bf3db7579063e0546938b1edda3d69f4e1fb8756991f5951f85d4"}, - {file = "testpath-0.4.4.tar.gz", hash = "sha256:60e0a3261c149755f4399a1fff7d37523179a70fdc3abdf78de9fc2604aeec7e"}, -] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] -tornado = [ - {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, - {file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"}, - {file = "tornado-6.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05"}, - {file = "tornado-6.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910"}, - {file = "tornado-6.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b"}, - {file = "tornado-6.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675"}, - {file = "tornado-6.1-cp35-cp35m-win32.whl", hash = "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5"}, - {file = "tornado-6.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68"}, - {file = "tornado-6.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb"}, - {file = "tornado-6.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c"}, - {file = "tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921"}, - {file = "tornado-6.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558"}, - {file = "tornado-6.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c"}, - {file = "tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085"}, - {file = "tornado-6.1-cp36-cp36m-win32.whl", hash = "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575"}, - {file = "tornado-6.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795"}, - {file = "tornado-6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f"}, - {file = "tornado-6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102"}, - {file = "tornado-6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4"}, - {file = "tornado-6.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd"}, - {file = "tornado-6.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01"}, - {file = "tornado-6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d"}, - {file = "tornado-6.1-cp37-cp37m-win32.whl", hash = "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df"}, - {file = "tornado-6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37"}, - {file = "tornado-6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95"}, - {file = "tornado-6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a"}, - {file = "tornado-6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5"}, - {file = "tornado-6.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288"}, - {file = "tornado-6.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f"}, - {file = "tornado-6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6"}, - {file = "tornado-6.1-cp38-cp38-win32.whl", hash = "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326"}, - {file = "tornado-6.1-cp38-cp38-win_amd64.whl", hash = "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c"}, - {file = "tornado-6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5"}, - {file = "tornado-6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe"}, - {file = "tornado-6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea"}, - {file = "tornado-6.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2"}, - {file = "tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0"}, - {file = "tornado-6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd"}, - {file = "tornado-6.1-cp39-cp39-win32.whl", hash = "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c"}, - {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, - {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, -] -traitlets = [ - {file = "traitlets-5.0.5-py3-none-any.whl", hash = "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"}, - {file = "traitlets-5.0.5.tar.gz", hash = "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396"}, -] -typing-extensions = [ - {file = "typing_extensions-3.7.4.3-py2-none-any.whl", hash = "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"}, - {file = "typing_extensions-3.7.4.3-py3-none-any.whl", hash = "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918"}, - {file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"}, -] -uncertainties = [ - {file = "uncertainties-3.1.5-py2.py3-none-any.whl", hash = "sha256:9c031773afa85e4bc8067f3be257c718eb7dbef7dffd604aeb315ded85c9c325"}, - {file = "uncertainties-3.1.5.tar.gz", hash = "sha256:9122c1e7e074196883b4a7a946e8482807b2f89675cb5e3798b87e0608ede903"}, -] -urllib3 = [ - {file = "urllib3-1.26.2-py2.py3-none-any.whl", hash = "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473"}, - {file = "urllib3-1.26.2.tar.gz", hash = "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08"}, -] -wcwidth = [ - {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, - {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, -] -webencodings = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] -zipp = [ - {file = "zipp-3.4.0-py3-none-any.whl", hash = "sha256:102c24ef8f171fd729d46599845e95c7ab894a4cf45f5de11a44cc7444fb1108"}, - {file = "zipp-3.4.0.tar.gz", hash = "sha256:ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb"}, -] diff --git a/pyproject.toml b/pyproject.toml index e55a940b..732745c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,9 +24,9 @@ matplotlib = "^3.2, <3.3" #libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } #libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } #libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } -##libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } -##libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } -##libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } +libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } +libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } +libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] From e97a552daaa44686374834c17fdfde414fd76555 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 12 Jan 2021 16:55:33 +0100 Subject: [PATCH 125/312] Try windows CI --- .github/workflows/test.yml | 2 +- .gitignore | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 26b5661b..96881b40 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [macos-latest] + os: [windows-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: diff --git a/.gitignore b/.gitignore index 8efa07b3..d430b587 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ __pycache__ # Poetry dist +poetry.lock *.egg-info # PyInstaller From 877466ee3235752b44f12afd9e530ca92d6d8556 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 12 Jan 2021 17:07:53 +0100 Subject: [PATCH 126/312] Update RelinkCrysfml --- tools/Scripts/RelinkCrysfml.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tools/Scripts/RelinkCrysfml.py b/tools/Scripts/RelinkCrysfml.py index 1ff67539..1219d168 100644 --- a/tools/Scripts/RelinkCrysfml.py +++ b/tools/Scripts/RelinkCrysfml.py @@ -61,6 +61,14 @@ def relinkCrysfml(): if CONFIG.os == 'windows': Functions.printNeutralMessage(f'No CrysFML relinking is needed for platform {CONFIG.os}') return + + Functions.printNeutralMessage(f"pythonLibLocation: {pythonLibLocation()}") + Functions.printNeutralMessage(f"crysfmlPythonDylib: {crysfmlPythonDylib()}") + Functions.printNeutralMessage(f"pythonDylib: {pythonDylib()}") + Functions.printNeutralMessage(f"crysfmlRpath: {crysfmlRpath()}") + Functions.printNeutralMessage(f"rpath: {rpath()}") + Functions.printNeutralMessage(f"crysfmlSoFile: {crysfmlSoFile()}") + try: message = f'relink CrysFML from default Python dylib for platform {CONFIG.os}' if CONFIG.os == 'macos': @@ -100,10 +108,4 @@ def relinkCrysfml(): if __name__ == "__main__": - Functions.printNeutralMessage(f"pythonLibLocation: {pythonLibLocation()}") - Functions.printNeutralMessage(f"crysfmlPythonDylib: {crysfmlPythonDylib()}") - Functions.printNeutralMessage(f"pythonDylib: {pythonDylib()}") - Functions.printNeutralMessage(f"crysfmlRpath: {crysfmlRpath()}") - Functions.printNeutralMessage(f"rpath: {rpath()}") - Functions.printNeutralMessage(f"crysfmlSoFile: {crysfmlSoFile()}") relinkCrysfml() From bc82b46447efdac068987ad69eaa8564db3cbbe5 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 12 Jan 2021 17:20:39 +0100 Subject: [PATCH 127/312] Add linux and macos to CI --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 96881b40..c5e669b3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: # Build matrix for different platforms strategy: matrix: - os: [windows-latest] + os: [macos-latest, ubuntu-latest, windows-latest] # Steps represent a sequence of tasks that will be executed as part of the job steps: From 3f600ecdcbb3f501503f31d4d16ea85c327867e0 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 13 Jan 2021 11:10:05 +0100 Subject: [PATCH 128/312] Install libgfortran4 on ubuntu --- .github/workflows/test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c5e669b3..eca056da 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,6 +31,10 @@ jobs: # with: # ssh-private-key: ${{ secrets.GH_WEBFACTORY_KEY }} + - name: Set up dependences + if: runner.os == 'Linux' + run: sudo apt-get install libgfortran4 + - name: Set up Python environment uses: actions/setup-python@v2 with: From 34377f916e98c8af9dac5ace364feca2b25398c4 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 4 Feb 2021 10:33:21 +0100 Subject: [PATCH 129/312] Update CFML jupyter notebook example --- tests/FittingData_CFML.ipynb | 688 +++++++++++++++++++---------------- 1 file changed, 379 insertions(+), 309 deletions(-) diff --git a/tests/FittingData_CFML.ipynb b/tests/FittingData_CFML.ipynb index fad42db0..bfd4787d 100644 --- a/tests/FittingData_CFML.ipynb +++ b/tests/FittingData_CFML.ipynb @@ -14,6 +14,45 @@ "There are two built in fitting engines, `lmfit` and `bumps`." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Set current directory." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "os.chdir('/Users/andrewsazonov/Development/Projects/easyScience/easyDiffractionLib/tests')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test path: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffractionLib/tests\n", + "easyDiffractionLib path: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffractionLib\n" + ] + } + ], + "source": [ + "import os\n", + "tests_path = os.getcwd()\n", + "os.chdir(os.path.join(os.getcwd(), '..'))\n", + "eDL_path = os.getcwd()\n", + "print(\"Test path:\", tests_path)\n", + "print(\"easyDiffractionLib path:\", eDL_path)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -23,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -64,20 +103,23 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ + "cif_path: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffractionLib/tests/PbSO4.cif\n", "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" ] } ], "source": [ "interface = InterfaceFactory()\n", - "c = Phases.from_cif_file('PbSO4.cif')\n", + "cif_path = os.path.join(tests_path, 'PbSO4.cif')\n", + "print('cif_path:', cif_path)\n", + "c = Phases.from_cif_file(cif_path)\n", "S = Sample(phases=c, parameters=Pars1D.default(), pattern=Pattern1D.default(), interface=interface)" ] }, @@ -90,7 +132,39 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "xye_path: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffractionLib/tests/PbSO4_xrays_short.xye\n", + "data_x: [ 10. 10.025 10.05 ... 119.95 119.975 120. ]\n", + "data_y: [179. 147. 165. ... 163. 164. 166.]\n", + "data_e: [13.3791 12.1244 12.8452 ... 12.7671 12.8062 12.8841]\n" + ] + } + ], + "source": [ + "xye_path = os.path.join(tests_path, 'PbSO4_xrays_short.xye')\n", + "print('xye_path:', xye_path)\n", + "data_x, data_y, data_e = np.loadtxt(xye_path, unpack=True)\n", + "print('data_x:', data_x)\n", + "print('data_y:', data_y)\n", + "print('data_e:', data_e)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generate the simulation y-data" + ] + }, + { + "cell_type": "code", + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -102,16 +176,12 @@ } ], "source": [ - "file_path = 'PbSO4_xrays_short.xye'\n", - "data_x, data_y, data_e = np.loadtxt(file_path, unpack=True)\n", - "\n", - "# Generate the simulation y-data\n", "sim_y_data = interface.fit_func(data_x)" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -894,7 +964,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -906,10 +976,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 5, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -930,7 +1000,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -1713,7 +1783,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -1725,10 +1795,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 6, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -1758,7 +1828,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -1787,7 +1857,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -2577,7 +2647,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -2589,10 +2659,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 8, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -2615,7 +2685,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -2638,14 +2708,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "y_calc: [166. 165.458 164.917 ... 171.253 171.678 173.028]\n" + "y_calc: [166. 165.458 164.917 ... 171.525 171.95 173.582]\n" ] }, { @@ -3428,7 +3498,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -3440,10 +3510,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 10, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -3466,14 +3536,14 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "y_calc: [166. 165.458 164.917 ... 164.581 164.696 164.903]\n" + "y_calc: [166. 165.458 164.917 ... 164.608 164.723 164.958]\n" ] }, { @@ -4256,7 +4326,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -4268,10 +4338,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 13, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -4302,7 +4372,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -4331,7 +4401,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -4371,285 +4441,285 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "y_calc: [166. 165.458 164.917 ... 164.581 164.696 164.903]\n", - "y_calc: [166. 165.458 164.917 ... 164.692 164.812 165.038]\n", - "y_calc: [162.75 162.208 161.667 ... 165.138 165.189 165.301]\n", - "y_calc: [1.107e-07 2.767e+01 5.533e+01 ... 1.641e+02 1.642e+02 1.643e+02]\n", - "y_calc: [164.375 163.833 163.292 ... 164.914 164.998 165.183]\n", - "y_calc: [2.213e-07 5.533e+01 1.107e+02 ... 1.643e+02 1.644e+02 1.646e+02]\n", - "y_calc: [165.188 164.646 164.104 ... 164.801 164.895 165.06 ]\n", - "y_calc: [165.188 164.646 164.104 ... 164.921 165.023 165.211]\n", - "y_calc: [164.781 164.24 163.698 ... 165.091 165.178 165.401]\n", - "y_calc: [166. 165.458 164.917 ... 164.804 164.929 165.174]\n", - "y_calc: [8.853e-07 1.659e+02 1.653e+02 ... 1.648e+02 1.649e+02 1.652e+02]\n", - "y_calc: [165.188 164.646 164.104 ... 165.04 165.15 165.361]\n", - "y_calc: [166. 165.458 164.917 ... 164.915 165.045 165.309]\n", - "y_calc: [8.853e-07 1.659e+02 1.653e+02 ... 1.649e+02 1.650e+02 1.653e+02]\n", - "y_calc: [4.427e-07 1.107e+02 1.657e+02 ... 1.647e+02 1.648e+02 1.651e+02]\n", - "y_calc: [165.594 165.052 164.51 ... 164.947 165.084 165.294]\n", - "y_calc: [165.594 165.052 164.51 ... 165.062 165.205 165.436]\n", - "y_calc: [165.391 164.849 164.307 ... 165.198 165.341 165.582]\n", - "y_calc: [165.797 165.255 164.714 ... 165.157 165.301 165.578]\n", - "y_calc: [165.898 165.357 164.815 ... 165.259 165.407 165.715]\n", - "y_calc: [165.289 164.747 164.206 ... 165.563 165.717 166.029]\n", - "y_calc: [165.797 165.255 164.714 ... 165.609 165.776 166.132]\n", - "y_calc: [166. 165.458 164.917 ... 165.804 165.976 166.392]\n", - "y_calc: [8.853e-07 1.659e+02 1.653e+02 ... 1.653e+02 1.655e+02 1.658e+02]\n", - "y_calc: [165.568 165.027 164.485 ... 165.496 165.663 165.971]\n", - "y_calc: [165.467 164.925 164.383 ... 165.858 166.047 166.411]\n", - "y_calc: [165.575 165.033 164.491 ... 165.704 165.883 166.229]\n", - "y_calc: [165.803 165.262 164.72 ... 165.813 165.99 166.383]\n", - "y_calc: [165.627 165.085 164.544 ... 165.576 165.746 166.076]\n", - "y_calc: [165.849 165.308 164.766 ... 165.484 165.644 165.985]\n", - "y_calc: [165.643 165.102 164.56 ... 165.648 165.821 166.165]\n", - "y_calc: [165.474 164.932 164.39 ... 165.616 165.791 166.111]\n", - "y_calc: [165.716 165.174 164.633 ... 165.61 165.78 166.126]\n", - "y_calc: [165.7 165.158 164.616 ... 165.539 165.705 166.037]\n", - "y_calc: [165.728 165.186 164.645 ... 165.485 165.648 165.973]\n", - "y_calc: [165.611 165.069 164.527 ... 165.505 165.671 165.985]\n", - "y_calc: [165.69 165.148 164.606 ... 165.584 165.753 166.091]\n", - "y_calc: [165.762 165.221 164.679 ... 165.547 165.712 166.053]\n", - "y_calc: [165.661 165.119 164.578 ... 165.569 165.738 166.07 ]\n", - "y_calc: [165.651 165.109 164.568 ... 165.614 165.785 166.124]\n", - "y_calc: [165.688 165.146 164.604 ... 165.558 165.725 166.059]\n", - "y_calc: [165.716 165.175 164.633 ... 165.573 165.74 166.08 ]\n", - "y_calc: [165.675 165.133 164.591 ... 165.57 165.738 166.072]\n", - "y_calc: [165.673 165.131 164.589 ... 165.544 165.711 166.04 ]\n", - "y_calc: [165.685 165.144 164.602 ... 165.574 165.742 166.078]\n", - "y_calc: [165.673 165.131 164.589 ... 165.586 165.755 166.092]\n", - "y_calc: [165.676 165.135 164.593 ... 165.579 165.748 166.084]\n", - "y_calc: [165.687 165.145 164.604 ... 165.583 165.752 166.09 ]\n", - "y_calc: [165.678 165.136 164.595 ... 165.573 165.742 166.077]\n", - "y_calc: [165.687 165.145 164.604 ... 165.568 165.736 166.071]\n", - "y_calc: [165.679 165.137 164.596 ... 165.576 165.745 166.081]\n", - "y_calc: [165.671 165.13 164.588 ... 165.576 165.744 166.079]\n", - "y_calc: [165.682 165.14 164.599 ... 165.574 165.743 166.078]\n", - "y_calc: [165.675 165.133 164.592 ... 165.575 165.744 166.079]\n", - "y_calc: [165.68 165.139 164.597 ... 165.575 165.743 166.078]\n", - "y_calc: [165.679 165.137 164.596 ... 165.572 165.74 166.075]\n", - "y_calc: [165.679 165.137 164.596 ... 165.569 165.737 166.072]\n", - "y_calc: [165.681 165.14 164.598 ... 165.573 165.741 166.076]\n", - "y_calc: [165.68 165.139 164.597 ... 165.57 165.738 166.072]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.678 165.136 164.595 ... 165.572 165.74 166.075]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.741 166.076]\n", - "y_calc: [165.68 165.138 164.596 ... 165.572 165.741 166.076]\n", - "y_calc: [165.681 165.139 164.597 ... 165.573 165.741 166.077]\n", - "y_calc: [165.681 165.14 164.598 ... 165.574 165.742 166.078]\n", - "y_calc: [165.681 165.139 164.598 ... 165.574 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.741 166.076]\n", - "y_calc: [165.68 165.138 164.596 ... 165.573 165.741 166.076]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.741 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.741 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.574 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n" + "y_calc: [166. 165.458 164.917 ... 164.608 164.723 164.958]\n", + "y_calc: [166. 165.458 164.917 ... 164.724 164.844 165.102]\n", + "y_calc: [162.75 162.208 161.667 ... 165.165 165.216 165.357]\n", + "y_calc: [1.107e-07 2.767e+01 5.533e+01 ... 1.641e+02 1.642e+02 1.644e+02]\n", + "y_calc: [164.375 163.833 163.292 ... 164.942 165.027 165.241]\n", + "y_calc: [2.213e-07 5.533e+01 1.107e+02 ... 1.644e+02 1.645e+02 1.647e+02]\n", + "y_calc: [165.188 164.646 164.104 ... 164.83 164.924 165.119]\n", + "y_calc: [165.188 164.646 164.104 ... 164.954 165.055 165.278]\n", + "y_calc: [164.781 164.24 163.698 ... 165.127 165.213 165.474]\n", + "y_calc: [166. 165.458 164.917 ... 164.839 164.964 165.246]\n", + "y_calc: [8.853e-07 1.659e+02 1.653e+02 ... 1.648e+02 1.650e+02 1.653e+02]\n", + "y_calc: [165.188 164.646 164.104 ... 165.077 165.187 165.437]\n", + "y_calc: [166. 165.458 164.917 ... 164.954 165.084 165.389]\n", + "y_calc: [8.853e-07 1.659e+02 1.653e+02 ... 1.650e+02 1.651e+02 1.654e+02]\n", + "y_calc: [4.427e-07 1.107e+02 1.657e+02 ... 1.647e+02 1.649e+02 1.651e+02]\n", + "y_calc: [165.594 165.052 164.51 ... 164.984 165.121 165.37 ]\n", + "y_calc: [165.594 165.052 164.51 ... 165.103 165.246 165.52 ]\n", + "y_calc: [165.391 164.849 164.307 ... 165.242 165.385 165.672]\n", + "y_calc: [165.797 165.255 164.714 ... 165.203 165.348 165.672]\n", + "y_calc: [165.898 165.357 164.815 ... 165.31 165.458 165.82 ]\n", + "y_calc: [165.289 164.747 164.206 ... 165.619 165.773 166.143]\n", + "y_calc: [165.797 165.255 164.714 ... 165.671 165.838 166.26 ]\n", + "y_calc: [166. 165.458 164.917 ... 165.876 166.048 166.539]\n", + "y_calc: [8.853e-07 1.659e+02 1.653e+02 ... 1.654e+02 1.655e+02 1.659e+02]\n", + "y_calc: [165.568 165.027 164.485 ... 165.552 165.72 166.086]\n", + "y_calc: [165.467 164.925 164.383 ... 165.926 166.115 166.55 ]\n", + "y_calc: [165.575 165.033 164.491 ... 165.768 165.946 166.359]\n", + "y_calc: [165.803 165.262 164.72 ... 165.883 166.06 166.526]\n", + "y_calc: [165.627 165.085 164.544 ... 165.636 165.806 166.198]\n", + "y_calc: [165.849 165.308 164.766 ... 165.543 165.702 166.105]\n", + "y_calc: [165.643 165.102 164.56 ... 165.711 165.884 166.293]\n", + "y_calc: [165.474 164.932 164.39 ... 165.676 165.851 166.233]\n", + "y_calc: [165.716 165.174 164.633 ... 165.672 165.842 166.252]\n", + "y_calc: [165.7 165.158 164.616 ... 165.598 165.764 166.158]\n", + "y_calc: [165.728 165.186 164.645 ... 165.543 165.705 166.091]\n", + "y_calc: [165.611 165.069 164.527 ... 165.562 165.728 166.102]\n", + "y_calc: [165.69 165.148 164.606 ... 165.645 165.813 166.215]\n", + "y_calc: [165.762 165.221 164.679 ... 165.607 165.772 166.176]\n", + "y_calc: [165.661 165.119 164.578 ... 165.629 165.798 166.192]\n", + "y_calc: [165.651 165.109 164.568 ... 165.676 165.847 166.25 ]\n", + "y_calc: [165.688 165.146 164.604 ... 165.618 165.785 166.18 ]\n", + "y_calc: [165.716 165.175 164.633 ... 165.634 165.801 166.204]\n", + "y_calc: [165.675 165.133 164.591 ... 165.63 165.798 166.195]\n", + "y_calc: [165.673 165.131 164.589 ... 165.603 165.77 166.16 ]\n", + "y_calc: [165.685 165.144 164.602 ... 165.634 165.803 166.201]\n", + "y_calc: [165.673 165.131 164.589 ... 165.647 165.816 166.216]\n", + "y_calc: [165.676 165.135 164.593 ... 165.64 165.808 166.207]\n", + "y_calc: [165.687 165.145 164.604 ... 165.644 165.812 166.213]\n", + "y_calc: [165.678 165.136 164.595 ... 165.634 165.802 166.199]\n", + "y_calc: [165.687 165.145 164.604 ... 165.628 165.796 166.194]\n", + "y_calc: [165.679 165.137 164.596 ... 165.637 165.805 166.204]\n", + "y_calc: [165.671 165.13 164.588 ... 165.636 165.805 166.202]\n", + "y_calc: [165.682 165.14 164.599 ... 165.635 165.803 166.201]\n", + "y_calc: [165.675 165.133 164.592 ... 165.636 165.804 166.202]\n", + "y_calc: [165.68 165.139 164.597 ... 165.635 165.803 166.202]\n", + "y_calc: [165.679 165.137 164.596 ... 165.632 165.8 166.197]\n", + "y_calc: [165.679 165.137 164.596 ... 165.629 165.797 166.194]\n", + "y_calc: [165.681 165.14 164.598 ... 165.633 165.801 166.199]\n", + "y_calc: [165.68 165.139 164.597 ... 165.63 165.798 166.195]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.678 165.136 164.595 ... 165.632 165.801 166.198]\n", + "y_calc: [165.68 165.139 164.597 ... 165.633 165.801 166.199]\n", + "y_calc: [165.68 165.138 164.596 ... 165.633 165.801 166.199]\n", + "y_calc: [165.681 165.139 164.597 ... 165.633 165.802 166.2 ]\n", + "y_calc: [165.681 165.14 164.598 ... 165.634 165.803 166.201]\n", + "y_calc: [165.681 165.139 164.598 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.633 165.801 166.199]\n", + "y_calc: [165.68 165.138 164.596 ... 165.633 165.802 166.199]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.633 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.574 165.742 166.077]\n", - "y_calc: [165.68 165.138 164.597 ... 165.573 165.742 166.077]\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n" + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.138 164.597 ... 165.634 165.802 166.2 ]\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n" ] } ], @@ -4659,7 +4729,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -4667,8 +4737,8 @@ "output_type": "stream", "text": [ "The fit has been successful: True\n", - "The gooodness of fit is: 1507313619948.2712\n", - "y_calc: [165.68 165.139 164.597 ... 165.573 165.742 166.077]\n" + "The gooodness of fit is: 1507313994654.0708\n", + "y_calc: [165.68 165.139 164.597 ... 165.634 165.802 166.2 ]\n" ] } ], @@ -4682,7 +4752,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -5465,7 +5535,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -5477,10 +5547,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 18, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -5494,7 +5564,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 41, "metadata": {}, "outputs": [ { From 99113cb991bb938a1497a45f48365f07fbd41462 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 8 Feb 2021 16:56:40 +0100 Subject: [PATCH 130/312] More x-array examples --- easyDiffractionLib/Calculators/CFML.py | 6 +- easyDiffractionLib/Calculators/GSASII.py | 5 +- easyDiffractionLib/Calculators/cryspy.py | 3 +- pyproject.toml | 10 +- tests/FittingData_CFML-xarrays.ipynb | 2560 +++++++++ tests/FittingData_CFML.ipynb | 6586 ++++++++++++---------- tests/fit_script.py | 12 +- tests/test3.py | 2 +- tests/xarray_test.ipynb | 2378 ++++++++ 9 files changed, 8719 insertions(+), 2843 deletions(-) create mode 100644 tests/FittingData_CFML-xarrays.ipynb create mode 100644 tests/xarray_test.ipynb diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 79b13d0d..52526710 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -5,8 +5,7 @@ import CFML_api -from easyCore import np -from easyCore import borg +from easyCore import np, borg class CFML: @@ -93,6 +92,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: res = scale * diffraction_pattern.ycalc + bg np.set_printoptions(precision=3) - print(f"y_calc: {res}") + if borg.debug: + print(f"y_calc: {res}") return res diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 955f4978..7184016b 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -2,7 +2,7 @@ __version__ = "0.0.1" import os, pathlib - +from easyCore import borg import GSASIIscriptable as G2sc from easyCore import np @@ -122,6 +122,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: res = scale * ycalc + bg np.set_printoptions(precision=3) - print(f"y_calc: {res}") + if borg.debug: + print(f"y_calc: {res}") return res diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index f40ad758..5d29139e 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -71,6 +71,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: res = scale * np.array(profile.intensity_total) + bg np.set_printoptions(precision=3) - print(f"y_calc: {res}") + if borg.debug: + print(f"y_calc: {res}") return res diff --git a/pyproject.toml b/pyproject.toml index 732745c8..ebbba10c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,21 +19,19 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.8" cryspy = "^0.4.11" -matplotlib = "^3.2, <3.3" # easyScience -#libsDarwin = { git = 'ssh://git@github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } -#libsLinux = { git = 'ssh://git@github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } -#libsWin32 = { git = 'ssh://git@github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } -easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } +easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'xarray' } + [tool.poetry.dev-dependencies] pytest = "^5.2" toml = "^0.10" requests = '^2.24' -jupyterlab = "^2.2" +hvplot = "^0.7.0" +jupyter = "^1.0.0" [tool.poetry.scripts] easyDiffractionLib = "easyDiffractionLib.main:main" diff --git a/tests/FittingData_CFML-xarrays.ipynb b/tests/FittingData_CFML-xarrays.ipynb new file mode 100644 index 00000000..af5dde72 --- /dev/null +++ b/tests/FittingData_CFML-xarrays.ipynb @@ -0,0 +1,2560 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fitting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are two built in fitting engines, `lmfit` and `bumps`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import all the packages." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GSAS-II binary directory: /home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/src/libslinux/libsLinux/GSASII/bindist\n" + ] + } + ], + "source": [ + "# Import all the packages\n", + "from easyCore import np\n", + "from easyDiffractionLib.sample import Sample\n", + "from easyDiffractionLib import Phases\n", + "from easyDiffractionLib.interface import InterfaceFactory\n", + "from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "from easyCore.Datasets.xarray import xr" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " var force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error() {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var skip = [];\n", + " if (window.requirejs) {\n", + " require([], function() {\n", + " })\n", + " }\n", + " for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " if (skip.indexOf(url) >= 0) { on_load(); continue; }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + "\tif (!js_urls.length) {\n", + " on_load()\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var js_urls = [];\n", + " var css_urls = [];\n", + "\n", + " var inline_js = [\n", + " function(Bokeh) {\n", + " inject_raw_css(\".bk.panel-widget-box {\\n\\tmin-height: 20px;\\n\\tbackground-color: #f5f5f5;\\n\\tborder: 1px solid #e3e3e3;\\n\\tborder-radius: 4px;\\n\\t-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n\\tbox-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n\\toverflow-x: hidden;\\n\\toverflow-y: hidden;\\n}\\n\\n.scrollable {\\n overflow: scroll;\\n}\\n\\nprogress {\\n\\tappearance: none;\\n\\t-moz-appearance: none;\\n\\t-webkit-appearance: none;\\n\\n\\tborder: none;\\n\\theight: 20px;\\n\\tbackground-color: whiteSmoke;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n\\tcolor: royalblue;\\n\\tposition: relative;\\n\\tmargin: 0 0 1.5em;\\n}\\n\\nprogress[value]::-webkit-progress-bar {\\n\\tbackground-color: whiteSmoke;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n}\\n\\nprogress[value]::-webkit-progress-value {\\n\\tposition: relative;\\n\\n\\tbackground-size: 35px 20px, 100% 100%, 100% 100%;\\n\\tborder-radius:3px;\\n}\\n\\nprogress.active:not([value])::before {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress[value]::-moz-progress-bar {\\n\\tbackground-size: 35px 20px, 100% 100%, 100% 100%;\\n\\tborder-radius:3px;\\n}\\n\\nprogress:not([value])::-moz-progress-bar {\\n\\tborder-radius:3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n\\n}\\n\\nprogress.active:not([value])::-moz-progress-bar {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress.active:not([value])::-webkit-progress-bar {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress.primary[value]::-webkit-progress-value { background-color: #007bff; }\\nprogress.primary:not([value])::before { background-color: #007bff; }\\nprogress.primary:not([value])::-webkit-progress-bar { background-color: #007bff; }\\nprogress.primary::-moz-progress-bar { background-color: #007bff; }\\n\\nprogress.secondary[value]::-webkit-progress-value { background-color: #6c757d; }\\nprogress.secondary:not([value])::before { background-color: #6c757d; }\\nprogress.secondary:not([value])::-webkit-progress-bar { background-color: #6c757d; }\\nprogress.secondary::-moz-progress-bar { background-color: #6c757d; }\\n\\nprogress.success[value]::-webkit-progress-value { background-color: #28a745; }\\nprogress.success:not([value])::before { background-color: #28a745; }\\nprogress.success:not([value])::-webkit-progress-bar { background-color: #28a745; }\\nprogress.success::-moz-progress-bar { background-color: #28a745; }\\n\\nprogress.danger[value]::-webkit-progress-value { background-color: #dc3545; }\\nprogress.danger:not([value])::before { background-color: #dc3545; }\\nprogress.danger:not([value])::-webkit-progress-bar { background-color: #dc3545; }\\nprogress.danger::-moz-progress-bar { background-color: #dc3545; }\\n\\nprogress.warning[value]::-webkit-progress-value { background-color: #ffc107; }\\nprogress.warning:not([value])::before { background-color: #ffc107; }\\nprogress.warning:not([value])::-webkit-progress-bar { background-color: #ffc107; }\\nprogress.warning::-moz-progress-bar { background-color: #ffc107; }\\n\\nprogress.info[value]::-webkit-progress-value { background-color: #17a2b8; }\\nprogress.info:not([value])::before { background-color: #17a2b8; }\\nprogress.info:not([value])::-webkit-progress-bar { background-color: #17a2b8; }\\nprogress.info::-moz-progress-bar { background-color: #17a2b8; }\\n\\nprogress.light[value]::-webkit-progress-value { background-color: #f8f9fa; }\\nprogress.light:not([value])::before { background-color: #f8f9fa; }\\nprogress.light:not([value])::-webkit-progress-bar { background-color: #f8f9fa; }\\nprogress.light::-moz-progress-bar { background-color: #f8f9fa; }\\n\\nprogress.dark[value]::-webkit-progress-value { background-color: #343a40; }\\nprogress.dark:not([value])::-webkit-progress-bar { background-color: #343a40; }\\nprogress.dark:not([value])::before { background-color: #343a40; }\\nprogress.dark::-moz-progress-bar { background-color: #343a40; }\\n\\nprogress:not([value])::-webkit-progress-bar {\\n\\tborder-radius: 3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\nprogress:not([value])::before {\\n\\tcontent:\\\" \\\";\\n\\tposition:absolute;\\n\\theight: 20px;\\n\\ttop:0;\\n\\tleft:0;\\n\\tright:0;\\n\\tbottom:0;\\n\\tborder-radius: 3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\n@keyframes stripes {\\n from {background-position: 0%}\\n to {background-position: 100%}\\n}\\n\\n.bk.loader::after {\\n content: \\\"\\\";\\n border-radius: 50%;\\n -webkit-mask-image: radial-gradient(transparent 50%, rgba(0, 0, 0, 1) 54%);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n position: absolute;\\n}\\n\\n.bk-root .bk.loader.dark::after {\\n background: #0f0f0f;\\n}\\n\\n.bk-root .bk.loader.light::after {\\n background: #f0f0f0;\\n}\\n\\n.bk-root .bk.loader.spin::after {\\n animation: spin 2s linear infinite;\\n}\\n\\n.bk-root div.bk.loader.spin.primary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #dc3545 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.warning-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.dark-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #343a40 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.primary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #dc3545 50%)\\n}\\n\\n.bk-root div.bk.loader.spin.warning-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.dark-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #343a40 50%);\\n}\\n\\n/* Safari */\\n@-webkit-keyframes spin {\\n 0% { -webkit-transform: rotate(0deg); }\\n 100% { -webkit-transform: rotate(360deg); }\\n}\\n\\n@keyframes spin {\\n 0% { transform: rotate(0deg); }\\n 100% { transform: rotate(360deg); }\\n}\\n\\n.dot div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n background-color: #fff;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled.primary div {\\n background-color: #007bff;\\n}\\n\\n.dot-filled.secondary div {\\n background-color: #6c757d;\\n}\\n\\n.dot-filled.success div {\\n background-color: #28a745;\\n}\\n\\n.dot-filled.danger div {\\n background-color: #dc3545;\\n}\\n\\n.dot-filled.warning div {\\n background-color: #ffc107;\\n}\\n\\n.dot-filled.info div {\\n background-color: #17a2b8;\\n}\\n\\n.dot-filled.dark div {\\n background-color: #343a40;\\n}\\n\\n.dot-filled.light div {\\n background-color: #f8f9fa;\\n}\");\n", + " },\n", + " function(Bokeh) {\n", + " inject_raw_css(\"table.panel-df {\\n margin-left: auto;\\n margin-right: auto;\\n border: none;\\n border-collapse: collapse;\\n border-spacing: 0;\\n color: black;\\n font-size: 12px;\\n table-layout: fixed;\\n width: 100%;\\n}\\n\\n.panel-df tr, .panel-df th, .panel-df td {\\n text-align: right;\\n vertical-align: middle;\\n padding: 0.5em 0.5em !important;\\n line-height: normal;\\n white-space: normal;\\n max-width: none;\\n border: none;\\n}\\n\\n.panel-df tbody {\\n display: table-row-group;\\n vertical-align: middle;\\n border-color: inherit;\\n}\\n\\n.panel-df tbody tr:nth-child(odd) {\\n background: #f5f5f5;\\n}\\n\\n.panel-df thead {\\n border-bottom: 1px solid black;\\n vertical-align: bottom;\\n}\\n\\n.panel-df tr:hover {\\n background: lightblue !important;\\n cursor: pointer;\\n}\\n\");\n", + " },\n", + " function(Bokeh) {\n", + " inject_raw_css(\".json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n color: black;\\n text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n color: green;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: blue;\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n color: #00008B;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n color: white;\\n text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n color: #31F031;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: #027BFF;\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n color: #23A0DB;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n\");\n", + " },\n", + " function(Bokeh) {\n", + " inject_raw_css(\".bk.card {\\n border: 1px solid rgba(0,0,0,.125);\\n border-radius: 0.25rem;\\n}\\n.bk.accordion {\\n border: 1px solid rgba(0,0,0,.125);\\n}\\n.bk.card-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0.25rem;\\n display: flex;\\n justify-content: space-between;\\n padding: 0 1.25rem 0 0;\\n width: 100%;\\n}\\n.bk.accordion-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0;\\n display: flex;\\n justify-content: space-between;\\n padding: 0 1.25rem 0 0;\\n width: 100%;\\n}\\np.bk.card-button {\\n background-color: transparent;\\n font-size: 1.25rem;\\n font-weight: 700;\\n margin: 0;\\n margin-left: -15px;\\n}\\n.bk.card-header-row {\\n position: relative !important;\\n}\\n.bk.card-title {\\n align-items: center;\\n display: flex !important;\\n font-size: 1.4em;\\n font-weight: bold;\\n padding: 0.25em;\\n position: relative !important;\\n}\\n\");\n", + " },\n", + " function(Bokeh) {\n", + " inject_raw_css(\".codehilite .hll { background-color: #ffffcc }\\n.codehilite { background: #f8f8f8; }\\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\\n.codehilite .o { color: #666666 } /* Operator */\\n.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */\\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\\n.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\\n.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */\\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\\n.codehilite .ge { font-style: italic } /* Generic.Emph */\\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\\n.codehilite .go { color: #888888 } /* Generic.Output */\\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\\n.codehilite .gt { color: #0044DD } /* Generic.Traceback */\\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\\n.codehilite .m { color: #666666 } /* Literal.Number */\\n.codehilite .s { color: #BA2121 } /* Literal.String */\\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\\n.codehilite .nb { color: #008000 } /* Name.Builtin */\\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\\n.codehilite .no { color: #880000 } /* Name.Constant */\\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\\n.codehilite .nf { color: #0000FF } /* Name.Function */\\n.codehilite .nl { color: #A0A000 } /* Name.Label */\\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\\n.codehilite .nv { color: #19177C } /* Name.Variable */\\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\\n.codehilite .mb { color: #666666 } /* Literal.Number.Bin */\\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\\n.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */\\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\\n.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */\\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\\n.codehilite .fm { color: #0000FF } /* Name.Function.Magic */\\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\\n.codehilite .vm { color: #19177C } /* Name.Variable.Magic */\\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\\n\\n.markdown h1 { margin-block-start: 0.34em }\\n.markdown h2 { margin-block-start: 0.42em }\\n.markdown h3 { margin-block-start: 0.5em }\\n.markdown h4 { margin-block-start: 0.67em }\\n.markdown h5 { margin-block-start: 0.84em }\\n.markdown h6 { margin-block-start: 1.17em }\\n.markdown ul { padding-inline-start: 2em }\\n.markdown ol { padding-inline-start: 2em }\\n.markdown strong { font-weight: 600 }\\n.markdown a { color: -webkit-link }\\n.markdown a { color: -moz-hyperlinkText }\\n\");\n", + " },\n", + " function(Bokeh) {\n", + " inject_raw_css(\".bk.alert {\\n padding: 0.75rem 1.25rem;\\n border: 1px solid transparent;\\n border-radius: 0.25rem;\\n /* Don't set margin because that will not render correctly! */\\n /* margin-bottom: 1rem; */\\n margin-top: 15px;\\n margin-bottom: 15px;\\n}\\n.bk.alert a {\\n color: rgb(11, 46, 19); /* #002752; */\\n font-weight: 700;\\n text-decoration: rgb(11, 46, 19);\\n text-decoration-color: rgb(11, 46, 19);\\n text-decoration-line: none;\\n text-decoration-style: solid;\\n text-decoration-thickness: auto;\\n }\\n.bk.alert a:hover {\\n color: rgb(11, 46, 19);\\n font-weight: 700;\\n text-decoration: underline;\\n}\\n\\n.bk.alert-primary {\\n color: #004085;\\n background-color: #cce5ff;\\n border-color: #b8daff;\\n}\\n.bk.alert-primary hr {\\n border-top-color: #9fcdff;\\n}\\n\\n.bk.alert-secondary {\\n color: #383d41;\\n background-color: #e2e3e5;\\n border-color: #d6d8db;\\n }\\n.bk.alert-secondary hr {\\n border-top-color: #c8cbcf;\\n}\\n\\n.bk.alert-success {\\n color: #155724;\\n background-color: #d4edda;\\n border-color: #c3e6cb;\\n }\\n\\n.bk.alert-success hr {\\n border-top-color: #b1dfbb;\\n}\\n\\n.bk.alert-info {\\n color: #0c5460;\\n background-color: #d1ecf1;\\n border-color: #bee5eb;\\n }\\n.bk.alert-info hr {\\n border-top-color: #abdde5;\\n}\\n\\n.bk.alert-warning {\\n color: #856404;\\n background-color: #fff3cd;\\n border-color: #ffeeba;\\n }\\n\\n.bk.alert-warning hr {\\n border-top-color: #ffe8a1;\\n}\\n\\n.bk.alert-danger {\\n color: #721c24;\\n background-color: #f8d7da;\\n border-color: #f5c6cb;\\n}\\n.bk.alert-danger hr {\\n border-top-color: #f1b0b7;\\n}\\n\\n.bk.alert-light {\\n color: #818182;\\n background-color: #fefefe;\\n border-color: #fdfdfe;\\n }\\n.bk.alert-light hr {\\n border-top-color: #ececf6;\\n}\\n\\n.bk.alert-dark {\\n color: #1b1e21;\\n background-color: #d6d8d9;\\n border-color: #c6c8ca;\\n }\\n.bk.alert-dark hr {\\n border-top-color: #b9bbbe;\\n}\\n\\n\\n/* adjf\\u00e6l */\\n\\n.bk.alert-primary a {\\n color: #002752;\\n}\\n\\n.bk.alert-secondary a {\\n color: #202326;\\n}\\n\\n\\n.bk.alert-success a {\\n color: #0b2e13;\\n}\\n\\n\\n.bk.alert-info a {\\n color: #062c33;\\n}\\n\\n\\n.bk.alert-warning a {\\n color: #533f03;\\n}\\n\\n\\n.bk.alert-danger a {\\n color: #491217;\\n}\\n\\n.bk.alert-light a {\\n color: #686868;\\n}\\n\\n.bk.alert-dark a {\\n color: #040505;\\n}\");\n", + " },\n", + " function(Bokeh) {\n", + " /* BEGIN bokeh.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2020, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " const bokeh = factory();\n", + " bokeh.__bokeh__ = true;\n", + " if (typeof root.Bokeh === \"undefined\" || typeof root.Bokeh.__bokeh__ === \"undefined\") {\n", + " root.Bokeh = bokeh;\n", + " }\n", + " const Bokeh = root.Bokeh;\n", + " Bokeh[bokeh.version] = bokeh;\n", + " })(this, function() {\n", + " var define;\n", + " var parent_require = typeof require === \"function\" && require\n", + " return (function(modules, entry, aliases, externals) {\n", + " if (aliases === undefined) aliases = {};\n", + " if (externals === undefined) externals = {};\n", + "\n", + " var cache = {};\n", + "\n", + " var normalize = function(name) {\n", + " if (typeof name === \"number\")\n", + " return name;\n", + "\n", + " if (name === \"bokehjs\")\n", + " return entry;\n", + "\n", + " var prefix = \"@bokehjs/\"\n", + " if (name.slice(0, prefix.length) === prefix)\n", + " name = name.slice(prefix.length)\n", + "\n", + " var alias = aliases[name]\n", + " if (alias != null)\n", + " return alias;\n", + "\n", + " var trailing = name.length > 0 && name[name.lenght-1] === \"/\";\n", + " var index = aliases[name + (trailing ? \"\" : \"/\") + \"index\"];\n", + " if (index != null)\n", + " return index;\n", + "\n", + " return name;\n", + " }\n", + "\n", + " var require = function(name) {\n", + " var mod = cache[name];\n", + " if (!mod) {\n", + " var id = normalize(name);\n", + "\n", + " mod = cache[id];\n", + " if (!mod) {\n", + " if (!modules[id]) {\n", + " if (externals[id] === false || (externals[id] == true && parent_require)) {\n", + " try {\n", + " mod = {exports: externals[id] ? parent_require(id) : {}};\n", + " cache[id] = cache[name] = mod;\n", + " return mod.exports;\n", + " } catch (e) {}\n", + " }\n", + "\n", + " var err = new Error(\"Cannot find module '\" + name + \"'\");\n", + " err.code = 'MODULE_NOT_FOUND';\n", + " throw err;\n", + " }\n", + "\n", + " mod = {exports: {}};\n", + " cache[id] = cache[name] = mod;\n", + " modules[id].call(mod.exports, require, mod, mod.exports);\n", + " } else\n", + " cache[name] = mod;\n", + " }\n", + "\n", + " return mod.exports;\n", + " }\n", + " require.resolve = function(name) {\n", + " return \"\"\n", + " }\n", + "\n", + " var main = require(entry);\n", + " main.require = require;\n", + "\n", + " if (typeof Proxy !== \"undefined\") {\n", + " // allow Bokeh.loader[\"@bokehjs/module/name\"] syntax\n", + " main.loader = new Proxy({}, {\n", + " get: function(_obj, module) {\n", + " return require(module);\n", + " }\n", + " });\n", + " }\n", + "\n", + " main.register_plugin = function(plugin_modules, plugin_entry, plugin_aliases, plugin_externals) {\n", + " if (plugin_aliases === undefined) plugin_aliases = {};\n", + " if (plugin_externals === undefined) plugin_externals = {};\n", + "\n", + " for (var name in plugin_modules) {\n", + " modules[name] = plugin_modules[name];\n", + " }\n", + "\n", + " for (var name in plugin_aliases) {\n", + " aliases[name] = plugin_aliases[name];\n", + " }\n", + "\n", + " for (var name in plugin_externals) {\n", + " externals[name] = plugin_externals[name];\n", + " }\n", + "\n", + " var plugin = require(plugin_entry);\n", + "\n", + " for (var name in plugin) {\n", + " main[name] = plugin[name];\n", + " }\n", + "\n", + " return plugin;\n", + " }\n", + "\n", + " return main;\n", + " })\n", + " ([\n", + " function _(e,t,_){Object.defineProperty(_,\"__esModule\",{value:!0});e(1).__exportStar(e(2),_)},\n", + " function _(t,e,n){\n", + " /*! *****************************************************************************\n", + " Copyright (c) Microsoft Corporation.\n", + " \n", + " Permission to use, copy, modify, and/or distribute this software for any\n", + " purpose with or without fee is hereby granted.\n", + " \n", + " THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n", + " REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n", + " AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n", + " INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n", + " LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n", + " OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n", + " PERFORMANCE OF THIS SOFTWARE.\n", + " ***************************************************************************** */\n", + " Object.defineProperty(n,\"__esModule\",{value:!0});var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function o(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function a(t,e){var n=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,a=n.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}function i(t){return this instanceof i?(this.v=t,this):new i(t)}n.__extends=function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},n.__assign=function(){return n.__assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0;u--)(o=t[u])&&(i=(a<3?o(i):a>3?o(e,n,i):o(e,n))||i);return a>3&&i&&Object.defineProperty(e,n,i),i},n.__param=function(t,e){return function(n,r){e(n,r,t)}},n.__metadata=function(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},n.__awaiter=function(t,e,n,r){return new(n||(n=Promise))((function(o,a){function i(t){try{c(r.next(t))}catch(t){a(t)}}function u(t){try{c(r.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,u)}c((r=r.apply(t,e||[])).next())}))},n.__generator=function(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(a){return function(u){return function(a){if(n)throw new TypeError(\"Generator is already executing.\");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]1||c(t,e)}))})}function c(t,e){try{(n=o[t](e)).value instanceof i?Promise.resolve(n.value.v).then(f,l):s(a[0][2],n)}catch(t){s(a[0][3],t)}var n}function f(t){c(\"next\",t)}function l(t){c(\"throw\",t)}function s(t,e){t(e),a.shift(),a.length&&c(a[0][0],a[0][1])}},n.__asyncDelegator=function(t){var e,n;return e={},r(\"next\"),r(\"throw\",(function(t){throw t})),r(\"return\"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:i(t[r](e)),done:\"return\"===r}:o?o(e):e}:o}},n.__asyncValues=function(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=o(t),e={},r(\"next\"),r(\"throw\"),r(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise((function(r,o){(function(t,e,n,r){Promise.resolve(r).then((function(e){t({value:e,done:n})}),e)})(r,o,(e=t[n](e)).done,e.value)}))}}},n.__makeTemplateObject=function(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t},n.__importStar=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e},n.__importDefault=function(t){return t&&t.__esModule?t:{default:t}},n.__classPrivateFieldGet=function(t,e){if(!e.has(t))throw new TypeError(\"attempted to get private field on non-instance\");return e.get(t)},n.__classPrivateFieldSet=function(t,e,n){if(!e.has(t))throw new TypeError(\"attempted to set private field on non-instance\");return e.set(t,n),n}},\n", + " function _(e,r,t){var l=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r};Object.defineProperty(t,\"__esModule\",{value:!0});var o=e(3);t.version=o.version;var s=e(4);t.index=s.index,t.embed=l(e(4)),t.protocol=l(e(390)),t._testing=l(e(391));var n=e(19);t.logger=n.logger,t.set_log_level=n.set_log_level;var a=e(27);t.settings=a.settings;var i=e(7);t.Models=i.Models;var v=e(5);t.documents=v.documents;var _=e(392);t.safely=_.safely},\n", + " function _(e,n,o){Object.defineProperty(o,\"__esModule\",{value:!0}),o.version=\"2.2.3\"},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(5),s=e(19),r=e(29),d=e(13),_=e(8),c=e(16),i=e(381),a=e(383),u=e(382);var l=e(381);t.add_document_standalone=l.add_document_standalone,t.index=l.index;var m=e(383);t.add_document_from_session=m.add_document_from_session;var f=e(388);t.embed_items_notebook=f.embed_items_notebook,t.kernels=f.kernels;var g=e(382);async function O(e,o,t,c){_.isString(e)&&(e=JSON.parse(r.unescape(e)));const l={};for(const[o,t]of d.entries(e))l[o]=n.Document.from_json(t);const m=[];for(const e of o){const o=u._resolve_element(e),n=u._resolve_root_elements(e);if(null!=e.docid)m.push(await i.add_document_standalone(l[e.docid],o,n,e.use_for_title));else{if(null==e.token)throw new Error(\"Error rendering Bokeh items: either 'docid' or 'token' was expected.\");{const r=a._get_ws_url(t,c);s.logger.debug(\"embed: computed ws url: \"+r);try{m.push(await a.add_document_from_session(r,e.token,o,n,e.use_for_title)),console.log(\"Bokeh items were rendered successfully\")}catch(e){console.log(\"Error rendering Bokeh items:\",e)}}}}return m}t.BOKEH_ROOT=g.BOKEH_ROOT,t.embed_item=async function(e,o){const t={},n=r.uuid4();t[n]=e.doc,null==o&&(o=e.target_id);const s=document.getElementById(o);null!=s&&s.classList.add(u.BOKEH_ROOT);const d={roots:{[e.root_id]:o},root_ids:[e.root_id],docid:n},[_]=await c.defer(()=>O(t,[d]));return _},t.embed_items=async function(e,o,t,n){return await c.defer(()=>O(e,o,t,n))}},\n", + " function _(e,t,_){Object.defineProperty(_,\"__esModule\",{value:!0});const o=e(1);o.__exportStar(e(6),_),o.__exportStar(e(121),_)},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),n=e(7),r=e(3),i=e(19),_=e(313),a=e(14),l=e(15),c=e(17),h=e(31),d=e(9),f=e(13),u=o.__importStar(e(120)),m=e(25),g=e(8),p=e(272),w=e(85),v=e(81),b=e(121);class y{constructor(e){this.document=e,this.session=null,this.subscribed_models=new Set}send_event(e){const t=new b.MessageSentEvent(this.document,\"bokeh_event\",e.to_json());this.document._trigger_on_change(t)}trigger(e){for(const t of this.subscribed_models)null!=e.origin&&e.origin!=t||t._process_event(e)}}s.EventManager=y,y.__name__=\"EventManager\",s.documents=[],s.DEFAULT_TITLE=\"Bokeh Application\";class j{constructor(){s.documents.push(this),this._init_timestamp=Date.now(),this._title=s.DEFAULT_TITLE,this._roots=[],this._all_models=new Map,this._all_models_freeze_count=0,this._callbacks=new Map,this._message_callbacks=new Map,this.event_manager=new y(this),this.idle=new l.Signal0(this,\"idle\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}get layoutables(){return this._roots.filter(e=>e instanceof p.LayoutDOM)}get is_idle(){for(const e of this.layoutables)if(!this._idle_roots.has(e))return!1;return!0}notify_idle(e){this._idle_roots.set(e,!0),this.is_idle&&(i.logger.info(`document idle at ${Date.now()-this._init_timestamp} ms`),this.event_manager.send_event(new _.DocumentReady),this.idle.emit())}clear(){this._push_all_models_freeze();try{for(;this._roots.length>0;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}}interactive_start(e){null==this._interactive_plot&&(this._interactive_plot=e,this._interactive_plot.trigger_event(new _.LODStart)),this._interactive_timestamp=Date.now()}interactive_stop(){null!=this._interactive_plot&&this._interactive_plot.trigger_event(new _.LODEnd),this._interactive_plot=null,this._interactive_timestamp=null}interactive_duration(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp}destructively_move(e){if(e===this)throw new Error(\"Attempted to overwrite a document with itself\");e.clear();const t=d.copy(this._roots);this.clear();for(const e of t)if(null!=e.document)throw new Error(\"Somehow we didn't detach \"+e);if(0!=this._all_models.size)throw new Error(\"this._all_models still had stuff in it: \"+this._all_models);for(const s of t)e.add_root(s);e.set_title(this._title)}_push_all_models_freeze(){this._all_models_freeze_count+=1}_pop_all_models_freeze(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()}_invalidate_all_models(){i.logger.debug(\"invalidating document models\"),0===this._all_models_freeze_count&&this._recompute_all_models()}_recompute_all_models(){let e=new Set;for(const t of this._roots)e=u.union(e,t.references());const t=new Set(this._all_models.values()),s=u.difference(t,e),o=u.difference(e,t),n=new Map;for(const t of e)n.set(t.id,t);for(const e of s)e.detach_document();for(const e of o)e.attach_document(this);this._all_models=n}roots(){return this._roots}add_root(e,t){if(i.logger.debug(\"Adding root: \"+e),!d.includes(this._roots,e)){this._push_all_models_freeze();try{this._roots.push(e)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new b.RootAddedEvent(this,e,t))}}remove_root(e,t){const s=this._roots.indexOf(e);if(!(s<0)){this._push_all_models_freeze();try{this._roots.splice(s,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new b.RootRemovedEvent(this,e,t))}}title(){return this._title}set_title(e,t){e!==this._title&&(this._title=e,this._trigger_on_change(new b.TitleChangedEvent(this,e,t)))}get_model_by_id(e){var t;return null!==(t=this._all_models.get(e))&&void 0!==t?t:null}get_model_by_name(e){const t=[];for(const s of this._all_models.values())s instanceof v.Model&&s.name==e&&t.push(s);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(`Multiple models are named '${e}'`)}}on_message(e,t){const s=this._message_callbacks.get(e);null==s?this._message_callbacks.set(e,new Set([t])):s.add(t)}remove_on_message(e,t){var s;null===(s=this._message_callbacks.get(e))||void 0===s||s.delete(t)}_trigger_on_message(e,t){const s=this._message_callbacks.get(e);if(null!=s)for(const e of s)e(t)}on_change(e,t=!1){this._callbacks.has(e)||this._callbacks.set(e,t)}remove_on_change(e){this._callbacks.delete(e)}_trigger_on_change(e){for(const[t,s]of this._callbacks)if(!s&&e instanceof b.DocumentEventBatch)for(const s of e.events)t(s);else t(e)}_notify_change(e,t,s,o,n){this._trigger_on_change(new b.ModelChangedEvent(this,e,t,s,o,null==n?void 0:n.setter_id,null==n?void 0:n.hint))}static _references_json(e,t=!0){const s=[];for(const o of e){const e=o.struct();e.attributes=o.attributes_as_json(t),delete e.attributes.id,s.push(e)}return s}static _instantiate_object(e,t,s){const o=Object.assign(Object.assign({},s),{id:e,__deferred__:!0});return new(n.Models(t))(o)}static _instantiate_references_json(e,t){const s=new Map;for(const o of e){const e=o.id,n=o.type,r=o.attributes||{};let i=t.get(e);null==i&&(i=j._instantiate_object(e,n,r),null!=o.subtype&&i.set_subtype(o.subtype)),s.set(i.id,i)}return s}static _resolve_refs(e,t,s,o){function n(e){if(c.is_ref(e)){if(t.has(e.id))return t.get(e.id);if(s.has(e.id))return s.get(e.id);throw new Error(`reference ${JSON.stringify(e)} isn't known (not in Document?)`)}return h.is_NDArray_ref(e)?h.decode_NDArray(e,o):g.isArray(e)?function(e){const t=[];for(const s of e)t.push(n(s));return t}(e):g.isPlainObject(e)?function(e){const t={};for(const[s,o]of f.entries(e))t[s]=n(o);return t}(e):e}return n(e)}static _initialize_references_json(e,t,s,o){const n=new Map;for(const{id:r,attributes:i}of e){const e=!t.has(r),_=e?s.get(r):t.get(r),a=j._resolve_refs(i,t,s,o);_.setv(a,{silent:!0}),n.set(r,{instance:_,is_new:e})}const r=[],i=new Set;function _(e){if(e instanceof a.HasProps){if(n.has(e.id)&&!i.has(e.id)){i.add(e.id);const{instance:t,is_new:s}=n.get(e.id),{attributes:o}=t;for(const e of f.values(o))_(e);s&&(t.finalize(),r.push(t))}}else if(g.isArray(e))for(const t of e)_(t);else if(g.isPlainObject(e))for(const t of f.values(e))_(t)}for(const e of n.values())_(e.instance);for(const e of r)e.connect_signals()}static _event_for_attribute_change(e,t,s,o,n){if(o.get_model_by_id(e.id).property(t).syncable){const r={kind:\"ModelChanged\",model:{id:e.id},attr:t,new:s};return a.HasProps._json_record_references(o,s,n,{recursive:!0}),r}return null}static _events_to_sync_objects(e,t,s,o){const n=Object.keys(e.attributes),r=Object.keys(t.attributes),_=d.difference(n,r),a=d.difference(r,n),l=d.intersection(n,r),c=[];for(const e of _)i.logger.warn(`Server sent key ${e} but we don't seem to have it in our JSON`);for(const n of a){const r=t.attributes[n];c.push(j._event_for_attribute_change(e,n,r,s,o))}for(const n of l){const r=e.attributes[n],i=t.attributes[n];null==r&&null==i||(null==r||null==i?c.push(j._event_for_attribute_change(e,n,i,s,o)):m.isEqual(r,i)||c.push(j._event_for_attribute_change(e,n,i,s,o)))}return c.filter(e=>null!=e)}static _compute_patch_since_json(e,t){const s=t.to_json(!1);function o(e){const t=new Map;for(const s of e.roots.references)t.set(s.id,s);return t}const n=o(e),r=new Map,i=[];for(const t of e.roots.root_ids)r.set(t,n.get(t)),i.push(t);const _=o(s),a=new Map,l=[];for(const e of s.roots.root_ids)a.set(e,_.get(e)),l.push(e);if(i.sort(),l.sort(),d.difference(i,l).length>0||d.difference(l,i).length>0)throw new Error(\"Not implemented: computing add/remove of document roots\");const c=new Set;let h=[];for(const e of t._all_models.keys())if(n.has(e)){const s=j._events_to_sync_objects(n.get(e),_.get(e),t,c);h=h.concat(s)}return{references:j._references_json(c,!1),events:h}}to_json_string(e=!0){return JSON.stringify(this.to_json(e))}to_json(e=!0){const t=this._roots.map(e=>e.id),s=this._all_models.values();return{version:r.version,title:this._title,roots:{root_ids:t,references:j._references_json(s,e)}}}static from_json_string(e){const t=JSON.parse(e);return j.from_json(t)}static from_json(e){i.logger.debug(\"Creating Document from JSON\");const t=e.version,s=-1!==t.indexOf(\"+\")||-1!==t.indexOf(\"-\"),o=`Library versions: JS (${r.version}) / Python (${t})`;s||r.version.replace(/-(dev|rc)\\./,\"$1\")==t?i.logger.debug(o):(i.logger.warn(\"JS/Python version mismatch\"),i.logger.warn(o));const n=e.roots,_=n.root_ids,a=n.references,l=j._instantiate_references_json(a,new Map);j._initialize_references_json(a,new Map,l,new Map);const c=new j;for(const e of _){const t=l.get(e);null!=t&&c.add_root(t)}return c.set_title(e.title),c}replace_with_json(e){j.from_json(e).destructively_move(this)}create_json_patch_string(e){return JSON.stringify(this.create_json_patch(e))}create_json_patch(e){const t=new Set,s=[];for(const o of e){if(o.document!==this)throw i.logger.warn(\"Cannot create a patch using events from a different document, event had \",o.document,\" we are \",this),new Error(\"Cannot create a patch using events from a different document\");s.push(o.json(t))}return{events:s,references:j._references_json(t)}}apply_json_patch(e,t=new Map,s){const o=e.references,n=e.events,r=j._instantiate_references_json(o,this._all_models);t instanceof Map||(t=new Map(t));for(const e of n)switch(e.kind){case\"RootAdded\":case\"RootRemoved\":case\"ModelChanged\":{const t=e.model.id,s=this._all_models.get(t);if(null!=s)r.set(t,s);else if(!r.has(t))throw i.logger.warn(`Got an event for unknown model ${e.model}\"`),new Error(\"event model wasn't known\");break}}const _=new Map,a=new Map;for(const[e,t]of r)this._all_models.has(e)?_.set(e,t):a.set(e,t);j._initialize_references_json(o,_,a,t);for(const e of n)switch(e.kind){case\"MessageSent\":{const{msg_type:s,msg_data:o}=e;let n;if(void 0===o){if(1!=t.size)throw new Error(\"expected exactly one buffer\");{const[[,e]]=t;n=e}}else n=j._resolve_refs(o,_,a,t);this._trigger_on_message(s,n);break}case\"ModelChanged\":{const o=e.model.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot apply patch to ${o} which is not in the document`);const r=e.attr,i=j._resolve_refs(e.new,_,a,t);n.setv({[r]:i},{setter_id:s});break}case\"ColumnDataChanged\":{const o=e.column_source.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot stream to ${o} which is not in the document`);const r=j._resolve_refs(e.new,new Map,new Map,t);if(null!=e.cols)for(const e in n.data)e in r||(r[e]=n.data[e]);n.setv({data:r},{setter_id:s,check_eq:!1});break}case\"ColumnsStreamed\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot stream to ${t} which is not in the document`);if(!(o instanceof w.ColumnDataSource))throw new Error(\"Cannot stream to non-ColumnDataSource\");const n=e.data,r=e.rollover;o.stream(n,r,s);break}case\"ColumnsPatched\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot patch ${t} which is not in the document`);if(!(o instanceof w.ColumnDataSource))throw new Error(\"Cannot patch non-ColumnDataSource\");const n=e.patches;o.patch(n,s);break}case\"RootAdded\":{const t=e.model.id,o=r.get(t);this.add_root(o,s);break}case\"RootRemoved\":{const t=e.model.id,o=r.get(t);this.remove_root(o,s);break}case\"TitleChanged\":this.set_title(e.title,s);break;default:throw new Error(\"Unknown patch event \"+JSON.stringify(e))}}}s.Document=j,j.__name__=\"Document\"},\n", + " function _(e,r,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),t=e(8),d=e(13),i=e(14);s.overrides={};const l=new Map;s.Models=e=>{const r=s.overrides[e]||l.get(e);if(null==r)throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`);return r},s.Models.register=(e,r)=>{s.overrides[e]=r},s.Models.unregister=e=>{delete s.overrides[e]},s.Models.register_models=(e,r=!1,s)=>{var o;if(null!=e)for(const n of d.values(e))if(o=n,t.isObject(o)&&o.prototype instanceof i.HasProps){const e=n.__qualified__;r||!l.has(e)?l.set(e,n):null!=s?s(e):console.warn(`Model '${e}' was already registered`)}},s.register_models=s.Models.register_models,s.Models.registered_names=()=>Array.from(l.keys());const n=o.__importStar(e(34));s.register_models(n)},\n", + " function _(n,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});\n", + " // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n", + " // Underscore may be freely distributed under the MIT license.\n", + " const e=n(9),i=Object.prototype.toString;function o(n){return\"[object Number]\"===i.call(n)}function c(n){const t=typeof n;return\"function\"===t||\"object\"===t&&!!n}r.isBoolean=function(n){return!0===n||!1===n||\"[object Boolean]\"===i.call(n)},r.isNumber=o,r.isInteger=function(n){return o(n)&&Number.isInteger(n)},r.isString=function(n){return\"[object String]\"===i.call(n)},r.isFunction=function(n){return\"[object Function]\"===i.call(n)},r.isArray=function(n){return Array.isArray(n)},r.isArrayOf=function(n,t){return e.every(n,t)},r.isArrayableOf=function(n,t){for(let r=0,e=n.length;r0,\"'step' must be a positive number\"),null==t&&(t=n,n=0);const{max:r,ceil:i,abs:u}=Math,c=n<=t?e:-e,f=r(i(u(t-n)/e),0),s=new Array(f);for(let t=0;t=0?t:n.length+t]},e.zip=function(...n){if(0==n.length)return[];const t=i.min(n.map(n=>n.length)),e=n.length,r=new Array(t);for(let o=0;on.length)),r=Array(e);for(let n=0;nn[t])},e.argmax=function(n){return i.max_by(a(n.length),t=>n[t])},e.sort_by=function(n,t){const e=n.map((n,e)=>({value:n,index:e,key:t(n)}));return e.sort((n,t)=>{const e=n.key,r=t.key;if(e!==r){if(e>r||void 0===e)return 1;if(en.value)},e.uniq=function(n){const t=new Set;for(const e of n)t.add(e);return[...t]},e.uniq_by=function(n,t){const e=[],r=[];for(const o of n){const n=t(o);s(r,n)||(r.push(n),e.push(o))}return e},e.union=function(...n){const t=new Set;for(const e of n)for(const n of e)t.add(n);return[...t]},e.intersection=function(n,...t){const e=[];n:for(const r of n)if(!s(e,r)){for(const n of t)if(!s(n,r))continue n;e.push(r)}return e},e.difference=function(n,...t){const e=f(t);return n.filter(n=>!s(e,n))},e.remove_at=function(n,t){const e=c(n);return e.splice(t,1),e},e.remove_by=function(n,t){for(let e=0;e2*Math.PI;)n-=2*Math.PI;return n}function a(n,t){return e(n-t)}function o(){return Math.random()}Object.defineProperty(r,\"__esModule\",{value:!0}),r.angle_norm=e,r.angle_dist=a,r.angle_between=function(n,t,r,o){const u=a(t,r);if(0==u)return!1;if(u==2*Math.PI)return!0;const f=e(n),i=a(t,f)<=u&&a(f,r)<=u;return 0==o?i:!i},r.random=o,r.randomIn=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},r.atan2=function(n,t){return Math.atan2(t[1]-n[1],t[0]-n[0])},r.radians=function(n){return n*(Math.PI/180)},r.degrees=function(n){return n/(Math.PI/180)},r.rnorm=function(n,t){let r,e;for(;r=o(),e=o(),e=(2*e-1)*Math.sqrt(1/Math.E*2),!(-4*r*r*Math.log(r)>=e*e););let a=e/r;return a=n+t*a,a},r.clamp=function(n,t,r){return nr?r:n}},\n", + " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});class o extends Error{}n.AssertionError=o,o.__name__=\"AssertionError\",n.assert=function(e,r){if(!(!0===e||!1!==e&&e()))throw new o(null!=r?r:\"Assertion failed\")},n.unreachable=function(){throw new Error(\"unreachable code\")}},\n", + " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=n(8),o=n(10);function i(n,t,e,...r){const o=n.length;t<0&&(t+=o),t<0?t=0:t>o&&(t=o),null==e||e>o-t?e=o-t:e<0&&(e=0);const i=o-e+r.length,u=new n.constructor(i);let l=0;for(;l0?0:r-1;for(;o>=0&&ot[t.length-1])return t.length;let e=0,r=t.length-1;for(;r-e!=1;){const o=e+Math.floor((r-e)/2);n>=t[o]?e=o:r=o}return e}e.is_empty=function(n){return 0==n.length},e.copy=function(n){return r.isArray(n)?n.slice():new n.constructor(n)},e.splice=i,e.head=u,e.insert=function(n,t,e){return i(n,e,0,t)},e.append=function(n,t){return i(n,n.length,0,t)},e.prepend=function(n,t){return i(n,0,0,t)},e.indexOf=function(n,t){for(let e=0,r=n.length;ee&&(e=t);return e},e.minmax=function(n){let t,e=1/0,r=-1/0;for(let o=0,i=n.length;or&&(r=t));return[e,r]},e.min_by=function(n,t){if(0==n.length)throw new Error(\"min_by() called with an empty array\");let e=n[0],r=t(e);for(let o=1,i=n.length;or&&(e=i,r=u)}return e},e.sum=function(n){let t=0;for(let e=0,r=n.length;et[r]=n+e,0),t},e.every=function(n,t){for(let e=0,r=n.length;e(n-t)/r)}},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const c=e(9);function o(e){return Object.keys(e).length}n.keys=Object.keys,n.values=Object.values,n.entries=Object.entries,n.extend=Object.assign,n.clone=function(e){return Object.assign({},e)},n.merge=function(e,t){const n=Object.create(Object.prototype),o=c.concat([Object.keys(e),Object.keys(t)]);for(const s of o){const o=e.hasOwnProperty(s)?e[s]:[],r=t.hasOwnProperty(s)?t[s]:[];n[s]=c.union(o,r)}return n},n.size=o,n.isEmpty=function(e){return 0==o(e)},n.to_object=function(e){const t={};for(const[n,c]of e)t[n]=c;return t}},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const s=t(1),n=t(15),i=t(17),o=s.__importStar(t(18)),c=s.__importStar(t(21)),a=s.__importStar(t(28)),_=t(29),u=t(9),f=t(13),l=t(8),h=t(25),p=t(5),d=t(30),y=t(31),g=t(25),v=t(33),m=s.__importStar(t(21));class b extends(n.Signalable()){constructor(t={}){var e;super(),this._subtype=void 0,this.document=null,this.destroyed=new n.Signal0(this,\"destroyed\"),this.change=new n.Signal0(this,\"change\"),this.transformchange=new n.Signal0(this,\"transformchange\"),this.properties={},this._pending=!1,this._changing=!1;const r=t instanceof Map?t.get:e=>t[e];for(const[t,{type:e,default_value:s,options:n}]of f.entries(this._props)){let i;i=e instanceof c.Kind?new o.PrimitiveProperty(this,t,e,s,r(t),n):new e(this,t,c.Any,s,r(t),n),this.properties[t]=i}null!==(e=r(\"__deferred__\"))&&void 0!==e&&e||(this.finalize(),this.connect_signals())}set type(t){console.warn(\"prototype.type = 'ModelName' is deprecated, use static __name__ instead\"),this.constructor.__name__=t}get type(){return this.constructor.__qualified__}static get __qualified__(){const{__module__:t,__name__:e}=this;return null!=t?`${t}.${e}`:e}static get[Symbol.toStringTag](){return this.__name__}static init_HasProps(){this.prototype._props={},this.prototype._mixins=[],this.define({id:[o.String,()=>_.uniqueId()]})}static _fix_default(t,e){if(void 0!==t){if(l.isFunction(t))return t;if(l.isArray(t))return()=>u.copy(t);if(l.isPlainObject(t))return()=>f.clone(t);if(l.isObject(t))throw new Error(t+\" must be explicitly wrapped in a function\");return()=>t}}static define(t){for(const[e,r]of f.entries(l.isFunction(t)?t(m):t)){if(null!=this.prototype._props[e])throw new Error(`attempted to redefine property '${this.prototype.type}.${e}'`);if(null!=this.prototype[e])throw new Error(`attempted to redefine attribute '${this.prototype.type}.${e}'`);Object.defineProperty(this.prototype,e,{get(){return this.properties[e].get_value()},set(t){return this.setv({[e]:t}),this},configurable:!1,enumerable:!0});const[t,s,n]=r,i={type:t,default_value:this._fix_default(s,e),options:n},o=f.clone(this.prototype._props);o[e]=i,this.prototype._props=o}}static internal(t){const e={};for(const[r,s]of f.entries(t)){const[t,n,i={}]=s;e[r]=[t,n,Object.assign(Object.assign({},i),{internal:!0})]}this.define(e)}static mixins(t){function e(t){switch(t){case\"line\":return a.LineVector;case\"fill\":return a.FillVector;case\"hatch\":return a.HatchVector;case\"text\":return a.TextVector;default:throw new Error(`Unknown property mixin kind '${t}'`)}}function r(t,e){const r={};for(const[s,n]of f.entries(e))r[t+s]=n;return r}function s(t){const[e]=Object.keys(t),[r]=e.split(\"_\",1);return r}l.isArray(t)||(t=[t]);const n={},i=[];for(const o of t)if(l.isString(o)){const[t,s=\"\"]=o.split(\":\"),c=e(t);i.push(o),f.extend(n,r(s,c))}else if(l.isArray(o)){const[t,e]=o;i.push(`${s(e)}:${t}`),f.extend(n,r(t,e))}else{const t=o;i.push(s(t)),f.extend(n,t)}this.define(n),this.prototype._mixins=[...this.prototype._mixins,...i]}static override(t){for(const[e,r]of f.entries(t)){const t=this._fix_default(r,e),s=this.prototype._props[e];if(null==s)throw new Error(`attempted to override nonexistent '${this.prototype.type}.${e}'`);const n=f.clone(this.prototype._props);n[e]=Object.assign(Object.assign({},s),{default_value:t}),this.prototype._props=n}}toString(){return`${this.type}(${this.id})`}property(t){const e=this.properties[t];if(null!=e)return e;throw new Error(`unknown property ${this.type}.${t}`)}get attributes(){const t={};for(const e of this)t[e.attr]=e.get_value();return t}[g.equals](t,e){for(const r of this){const s=t.property(r.attr);if(e.eq(r.get_value(),s.get_value()))return!1}return!0}[v.pretty](t){const e=t.token,r=[];for(const s of this)if(s.dirty){const n=s.get_value();r.push(`${s.attr}${e(\":\")} ${t.to_string(n)}`)}return`${this.constructor.__qualified__}${e(\"(\")}${e(\"{\")}${r.join(e(\",\")+\" \")}${e(\"}\")}${e(\")\")}`}finalize(){for(const t of this)null!=t.spec.transform&&this.connect(t.spec.transform.change,()=>this.transformchange.emit());this.initialize()}initialize(){}connect_signals(){}disconnect_signals(){n.Signal.disconnectReceiver(this)}destroy(){this.disconnect_signals(),this.destroyed.emit()}clone(){return new this.constructor(this.attributes)}_setv(t,e){const r=e.check_eq,s=[],n=this._changing;this._changing=!0;for(const[e,n]of t)!1!==r&&h.isEqual(e.get_value(),n)||(e.set_value(n),s.push(e));s.length>0&&(this._pending=!0);for(const t of s)t.change.emit();if(!n){if(!e.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}}setv(t,e={}){const r=f.entries(t);if(0==r.length)return;if(!0===e.silent){for(const[t,e]of r)this.properties[t].set_value(e);return}const s=new Map,n=new Map;for(const[t,e]of r){const r=this.properties[t];s.set(r,e),n.set(r,r.get_value())}this._setv(s,e);const{document:i}=this;if(null!=i){const t=[];for(const[e,r]of n)t.push([e,r,e.get_value()]);for(const[,e,r]of t)if(this._needs_invalidate(e,r)){i._invalidate_all_models();break}this._push_changes(t,e)}}getv(t){return this.property(t).get_value()}ref(){return{id:this.id}}struct(){const t={type:this.type,id:this.id,attributes:{}};return null!=this._subtype&&(t.subtype=this._subtype),t}set_subtype(t){this._subtype=t}*[Symbol.iterator](){yield*f.values(this.properties)}*syncable_properties(){for(const t of this)t.syncable&&(yield t)}serializable_attributes(){const t={};for(const e of this.syncable_properties())t[e.attr]=e.get_value();return t}static _value_to_json(t){if(t instanceof b)return t.ref();if(d.is_NDArray(t))return y.encode_NDArray(t);if(l.isArray(t)||l.isTypedArray(t)){const e=t.length,r=new Array(e);for(let s=0;sn.signal===t&&n.slot===e&&n.context===l)}const g=new Set;function a(n){0===g.size&&l.defer(f),g.add(n)}function f(){for(const n of g)s.remove_by(n,n=>null==n.signal);g.clear()}},\n", + " function _(n,e,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.delay=\n", + " // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n", + " // Underscore may be freely distributed under the MIT license.\n", + " function(n,e){return setTimeout(n,e)};const u=\"function\"==typeof requestAnimationFrame?requestAnimationFrame:setImmediate;t.defer=function(n){return new Promise(e=>{u(()=>e(n()))})},t.throttle=function(n,e,t={}){let u,o,i,r=null,l=0;const c=function(){l=!1===t.leading?0:Date.now(),r=null,i=n.apply(u,o),r||(u=o=null)};return function(){const a=Date.now();l||!1!==t.leading||(l=a);const f=e-(a-l);return u=this,o=arguments,f<=0||f>e?(r&&(clearTimeout(r),r=null),l=a,i=n.apply(u,o),r||(u=o=null)):r||!1===t.trailing||(r=setTimeout(c,f)),i}},t.once=function(n){let e,t=!1;return function(){return t||(t=!0,e=n()),e}}},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(8),r=e(13);t.is_ref=function(e){if(i.isPlainObject(e)){const n=r.keys(e);return 1==n.length&&\"id\"==n[0]}return!1}},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const a=e(1),s=e(15),i=e(19),r=a.__importStar(e(20)),l=e(24),o=e(9),c=e(12),_=e(22),u=e(8),d=e(27);function p(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function S(e){return u.isPlainObject(e)&&(void 0===e.value?0:1)+(void 0===e.field?0:1)+(void 0===e.expr?0:1)==1}n.isSpec=S;class m{constructor(e,t,n,a,i,r={}){var l,o;let c;if(this.obj=e,this.attr=t,this.kind=n,this.default_value=a,this._dirty=!1,this.change=new s.Signal0(this.obj,\"change\"),this.internal=null!==(l=r.internal)&&void 0!==l&&l,this.optional=null!==(o=r.optional)&&void 0!==o&&o,void 0!==i)c=i,this._dirty=!0;else{const t=this._default_override();c=void 0!==t?t:void 0!==a?a(e):null}this._update(c)}get is_value(){return void 0!==this.spec.value}get syncable(){return!this.internal}get_value(){return this.spec.value}set_value(e){this._update(e),this._dirty=!0}_default_override(){}get dirty(){return this._dirty}_update(e){null!=e&&this.validate(e),this.spec={value:e}}toString(){return`Prop(${this.obj}.${this.attr}, spec: ${p(this.spec)})`}normalize(e){return e}validate(e){if(!this.valid(e))throw new Error(`${this.obj.type}.${this.attr} given invalid value: ${p(e)}`)}valid(e){return this.kind.valid(e)}value(e=!0){if(!this.is_value)throw new Error(\"attempted to retrieve property value for property without value specification\");let t=this.normalize([this.spec.value])[0];return null!=this.spec.transform&&e&&(t=this.spec.transform.compute(t)),t}}n.Property=m,m.__name__=\"Property\";class h extends m{}n.PrimitiveProperty=h,h.__name__=\"PrimitiveProperty\";class v extends m{}n.Any=v,v.__name__=\"Any\";class g extends m{valid(e){return u.isArray(e)||e instanceof Float32Array||e instanceof Float64Array}}n.Array=g,g.__name__=\"Array\";class x extends m{valid(e){return u.isBoolean(e)}}n.Boolean=x,x.__name__=\"Boolean\";class y extends m{valid(e){return u.isString(e)&&_.is_color(e)}}n.Color=y,y.__name__=\"Color\";class f extends m{}n.Instance=f,f.__name__=\"Instance\";class A extends m{valid(e){return u.isNumber(e)}}n.Number=A,A.__name__=\"Number\";class P extends A{valid(e){return u.isNumber(e)&&(0|e)==e}}n.Int=P,P.__name__=\"Int\";class C extends A{}n.Angle=C,C.__name__=\"Angle\";class b extends A{valid(e){return u.isNumber(e)&&0<=e&&e<=1}}n.Percent=b,b.__name__=\"Percent\";class L extends m{valid(e){return u.isString(e)}}n.String=L,L.__name__=\"String\";class N extends m{valid(e){return null===e||u.isString(e)}}n.NullString=N,N.__name__=\"NullString\";class T extends L{}n.FontSize=T,T.__name__=\"FontSize\";class q extends L{_default_override(){return d.settings.dev?\"Bokeh\":void 0}}n.Font=q,q.__name__=\"Font\";class B extends m{valid(e){return u.isString(e)&&o.includes(this.enum_values,e)}}function M(e){return class extends B{get enum_values(){return[...e]}}}n.EnumProperty=B,B.__name__=\"EnumProperty\",n.Enum=M;class w extends B{get enum_values(){return[...r.Direction]}normalize(e){const t=new Uint8Array(e.length);for(let n=0;ne*Math.PI/180)),e=c.map(e,e=>-e),super.normalize(e)}}n.AngleSpec=re,re.__name__=\"AngleSpec\";class le extends G{get default_units(){return\"data\"}get valid_units(){return[...r.SpatialUnits]}}n.DistanceSpec=le,le.__name__=\"DistanceSpec\";class oe extends J{array(e){return new Uint8Array(super.array(e))}}n.BooleanSpec=oe,oe.__name__=\"BooleanSpec\";class ce extends J{array(e){return new l.NumberArray(super.array(e))}}n.NumberSpec=ce,ce.__name__=\"NumberSpec\";class _e extends J{array(e){const t=super.array(e),n=t.length,a=new l.ColorArray(n);for(let e=0;e0){let o=s[e];return null==o&&(s[e]=o=new r(e,l)),o}throw new TypeError(\"Logger.get() expects a non-empty string name and an optional log-level\")}get level(){return this.get_level()}get_level(){return this._log_level}set_level(e){if(e instanceof g)this._log_level=e;else{if(!n.isString(e)||null==r.log_levels[e])throw new Error(\"Logger.set_level() expects a log-level object or a string name of a log-level\");this._log_level=r.log_levels[e]}const l=`[${this._name}]`;for(const[e,o]of t.entries(r.log_levels))o.level\",\"*\"),t.HTTPMethod=o.Enum(\"POST\",\"GET\"),t.HexTileOrientation=o.Enum(\"pointytop\",\"flattop\"),t.HoverMode=o.Enum(\"mouse\",\"hline\",\"vline\"),t.LatLon=o.Enum(\"lat\",\"lon\"),t.LegendClickPolicy=o.Enum(\"none\",\"hide\",\"mute\"),t.LegendLocation=t.Anchor,t.LineCap=o.Enum(\"butt\",\"round\",\"square\"),t.LineJoin=o.Enum(\"miter\",\"round\",\"bevel\"),t.LinePolicy=o.Enum(\"prev\",\"next\",\"nearest\",\"interp\",\"none\"),t.Location=o.Enum(\"above\",\"below\",\"left\",\"right\"),t.Logo=o.Enum(\"normal\",\"grey\"),t.MarkerType=o.Enum(\"asterisk\",\"circle\",\"circle_cross\",\"circle_dot\",\"circle_x\",\"circle_y\",\"cross\",\"dash\",\"diamond\",\"diamond_cross\",\"diamond_dot\",\"dot\",\"hex\",\"hex_dot\",\"inverted_triangle\",\"plus\",\"square\",\"square_cross\",\"square_dot\",\"square_pin\",\"square_x\",\"triangle\",\"triangle_dot\",\"triangle_pin\",\"x\",\"y\"),t.MutedPolicy=o.Enum(\"show\",\"ignore\"),t.Orientation=o.Enum(\"vertical\",\"horizontal\"),t.OutputBackend=o.Enum(\"canvas\",\"svg\",\"webgl\"),t.PaddingUnits=o.Enum(\"percent\",\"absolute\"),t.Place=o.Enum(\"above\",\"below\",\"left\",\"right\",\"center\"),t.PointPolicy=o.Enum(\"snap_to_data\",\"follow_mouse\",\"none\"),t.RadiusDimension=o.Enum(\"x\",\"y\",\"max\",\"min\"),t.RenderLevel=o.Enum(\"image\",\"underlay\",\"glyph\",\"guide\",\"annotation\",\"overlay\"),t.RenderMode=o.Enum(\"canvas\",\"css\"),t.ResetPolicy=o.Enum(\"standard\",\"event_only\"),t.RoundingFunction=o.Enum(\"round\",\"nearest\",\"floor\",\"rounddown\",\"ceil\",\"roundup\"),t.SelectionMode=o.Enum(\"replace\",\"append\",\"intersect\",\"subtract\"),t.Side=o.Enum(\"above\",\"below\",\"left\",\"right\"),t.SizingMode=o.Enum(\"stretch_width\",\"stretch_height\",\"stretch_both\",\"scale_width\",\"scale_height\",\"scale_both\",\"fixed\"),t.Sort=o.Enum(\"ascending\",\"descending\"),t.SpatialUnits=o.Enum(\"screen\",\"data\"),t.StartEnd=o.Enum(\"start\",\"end\"),t.StepMode=o.Enum(\"after\",\"before\",\"center\"),t.TapBehavior=o.Enum(\"select\",\"inspect\"),t.TextAlign=o.Enum(\"left\",\"right\",\"center\"),t.TextBaseline=o.Enum(\"top\",\"middle\",\"bottom\",\"alphabetic\",\"hanging\",\"ideographic\"),t.TextureRepetition=o.Enum(\"repeat\",\"repeat_x\",\"repeat_y\",\"no_repeat\"),t.TickLabelOrientation=o.Enum(\"vertical\",\"horizontal\",\"parallel\",\"normal\"),t.TooltipAttachment=o.Enum(\"horizontal\",\"vertical\",\"left\",\"right\",\"above\",\"below\"),t.UpdateMode=o.Enum(\"replace\",\"append\"),t.VerticalAlign=o.Enum(\"top\",\"middle\",\"bottom\")},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1).__importStar(e(8)),r=e(22);class i{}t.Kind=i,i.__name__=\"Kind\",function(e){class n extends i{valid(e){return!0}}n.__name__=\"Any\",e.Any=n;class t extends i{valid(e){return!0}}t.__name__=\"Unknown\",e.Unknown=t;class l extends i{valid(e){return s.isBoolean(e)}}l.__name__=\"Boolean\",e.Boolean=l;class a extends i{constructor(e){super(),this.obj_type=e}valid(e){return!0}}a.__name__=\"Ref\",e.Ref=a;class _ extends i{valid(e){return s.isNumber(e)}}_.__name__=\"Number\",e.Number=_;class u extends _{valid(e){return super.valid(e)&&s.isInteger(e)}}u.__name__=\"Int\",e.Int=u;class d extends i{constructor(e){super(),this.types=e,this.types=e}valid(e){return this.types.some(n=>n.valid(e))}}d.__name__=\"Or\",e.Or=d;class o extends i{constructor(e){super(),this.types=e,this.types=e}valid(e){if(!s.isArray(e))return!1;for(let n=0;nthis.item_type.valid(e))}}c.__name__=\"Array\",e.Array=c;class m extends i{valid(e){return null===e}}m.__name__=\"Null\",e.Null=m;class p extends i{constructor(e){super(),this.base_type=e}valid(e){return null===e||this.base_type.valid(e)}}p.__name__=\"Nullable\",e.Nullable=p;class y extends i{valid(e){return s.isString(e)}}y.__name__=\"String\",e.String=y;class v extends i{constructor(e){super(),this.values=new Set(e)}valid(e){return this.values.has(e)}*[Symbol.iterator](){yield*this.values}}v.__name__=\"Enum\",e.Enum=v;class h extends i{constructor(e){super(),this.item_type=e}valid(e){if(!s.isPlainObject(e))return!1;for(const n in e)if(e.hasOwnProperty(n)){const t=e[n];if(!this.item_type.valid(t))return!1}return!0}}h.__name__=\"Struct\",e.Struct=h;class w extends i{constructor(e,n){super(),this.key_type=e,this.item_type=n}valid(e){if(!(e instanceof Map))return!1;for(const[n,t]of e.entries())if(!this.key_type.valid(n)||!this.item_type.valid(t))return!1;return!0}}w.__name__=\"Dict\",e.Dict=w;class K extends i{valid(e){return s.isString(e)&&r.is_color(e)}}K.__name__=\"Color\",e.Color=K;class f extends _{valid(e){return super.valid(e)&&0<=e&&e<=1}}f.__name__=\"Percent\",e.Percent=f}(t.Kinds||(t.Kinds={})),t.Any=new t.Kinds.Any,t.Unknown=new t.Kinds.Unknown,t.Boolean=new t.Kinds.Boolean,t.Number=new t.Kinds.Number,t.Int=new t.Kinds.Int,t.String=new t.Kinds.String,t.Null=new t.Kinds.Null,t.Nullable=e=>new t.Kinds.Nullable(e),t.Or=(...e)=>new t.Kinds.Or(e),t.Tuple=(...e)=>new t.Kinds.Tuple(e),t.Array=e=>new t.Kinds.Array(e),t.Struct=e=>new t.Kinds.Struct(e),t.Dict=(e,n)=>new t.Kinds.Dict(e,n),t.Enum=(...e)=>new t.Kinds.Enum(e),t.Ref=e=>new t.Kinds.Ref(e),t.Percent=new t.Kinds.Percent,t.Color=new t.Kinds.Color,t.Auto=t.Enum(\"auto\"),t.FontSize=t.String,t.Font=t.String,t.Angle=t.Number},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(23),l=e(9);function a(e){const r=Number(e).toString(16);return 1==r.length?\"0\"+r:r}function o(e){if(0==(e+=\"\").indexOf(\"#\"))return e;if(n.is_svg_color(e))return n.svg_colors[e];if(0==e.indexOf(\"rgb\")){const r=e.replace(/^rgba?\\(|\\s+|\\)$/g,\"\").split(\",\");let t=r.slice(0,3).map(a).join(\"\");return 4==r.length&&(t+=a(Math.floor(255*parseFloat(r[3])))),\"#\"+t.slice(0,8)}return e}function s(e){let r;switch(e.substring(0,4)){case\"rgba\":r={start:\"rgba(\",len:4,alpha:!0};break;case\"rgb(\":r={start:\"rgb(\",len:3,alpha:!1};break;default:return!1}if(new RegExp(\".*?(\\\\.).*(,)\").test(e))return!1;const t=e.replace(r.start,\"\").replace(\")\",\"\").split(\",\").map(parseFloat);return t.length==r.len&&((!r.alpha||0<=t[3]&&t[3]<=1)&&!l.includes(t.slice(0,3).map(e=>0<=e&&e<=255),!1))}t.is_color=function(e){return n.is_svg_color(e.toLowerCase())||\"#\"==e.substring(0,1)||s(e)},t.rgb2hex=function(e,r,t){return`#${a(255&e)}${a(255&r)}${a(255&t)}`},t.color2hex=o,t.encode_rgba=function([e,r,t,n]){return(255*e|0)<<24|(255*r|0)<<16|(255*t|0)<<8|255*n|0},t.decode_rgba=function(e){return[(e>>24&255)/255,(e>>16&255)/255,(e>>8&255)/255,(e>>0&255)/255]},t.color2rgba=function(e,r=1){if(!e)return[0,0,0,0];let t=o(e);t=t.replace(/ |#/g,\"\"),t.length<=4&&(t=t.replace(/(.)/g,\"$1$1\"));const n=t.match(/../g).map(e=>parseInt(e,16)/255);for(;n.length<3;)n.push(0);return n.length<4&&n.push(r),n.slice(0,4)},t.valid_rgb=s},\n", + " function _(e,F,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.svg_colors={indianred:\"#CD5C5C\",lightcoral:\"#F08080\",salmon:\"#FA8072\",darksalmon:\"#E9967A\",lightsalmon:\"#FFA07A\",crimson:\"#DC143C\",red:\"#FF0000\",firebrick:\"#B22222\",darkred:\"#8B0000\",pink:\"#FFC0CB\",lightpink:\"#FFB6C1\",hotpink:\"#FF69B4\",deeppink:\"#FF1493\",mediumvioletred:\"#C71585\",palevioletred:\"#DB7093\",coral:\"#FF7F50\",tomato:\"#FF6347\",orangered:\"#FF4500\",darkorange:\"#FF8C00\",orange:\"#FFA500\",gold:\"#FFD700\",yellow:\"#FFFF00\",lightyellow:\"#FFFFE0\",lemonchiffon:\"#FFFACD\",lightgoldenrodyellow:\"#FAFAD2\",papayawhip:\"#FFEFD5\",moccasin:\"#FFE4B5\",peachpuff:\"#FFDAB9\",palegoldenrod:\"#EEE8AA\",khaki:\"#F0E68C\",darkkhaki:\"#BDB76B\",lavender:\"#E6E6FA\",thistle:\"#D8BFD8\",plum:\"#DDA0DD\",violet:\"#EE82EE\",orchid:\"#DA70D6\",fuchsia:\"#FF00FF\",magenta:\"#FF00FF\",mediumorchid:\"#BA55D3\",mediumpurple:\"#9370DB\",blueviolet:\"#8A2BE2\",darkviolet:\"#9400D3\",darkorchid:\"#9932CC\",darkmagenta:\"#8B008B\",purple:\"#800080\",indigo:\"#4B0082\",slateblue:\"#6A5ACD\",darkslateblue:\"#483D8B\",mediumslateblue:\"#7B68EE\",greenyellow:\"#ADFF2F\",chartreuse:\"#7FFF00\",lawngreen:\"#7CFC00\",lime:\"#00FF00\",limegreen:\"#32CD32\",palegreen:\"#98FB98\",lightgreen:\"#90EE90\",mediumspringgreen:\"#00FA9A\",springgreen:\"#00FF7F\",mediumseagreen:\"#3CB371\",seagreen:\"#2E8B57\",forestgreen:\"#228B22\",green:\"#008000\",darkgreen:\"#006400\",yellowgreen:\"#9ACD32\",olivedrab:\"#6B8E23\",olive:\"#808000\",darkolivegreen:\"#556B2F\",mediumaquamarine:\"#66CDAA\",darkseagreen:\"#8FBC8F\",lightseagreen:\"#20B2AA\",darkcyan:\"#008B8B\",teal:\"#008080\",aqua:\"#00FFFF\",cyan:\"#00FFFF\",lightcyan:\"#E0FFFF\",paleturquoise:\"#AFEEEE\",aquamarine:\"#7FFFD4\",turquoise:\"#40E0D0\",mediumturquoise:\"#48D1CC\",darkturquoise:\"#00CED1\",cadetblue:\"#5F9EA0\",steelblue:\"#4682B4\",lightsteelblue:\"#B0C4DE\",powderblue:\"#B0E0E6\",lightblue:\"#ADD8E6\",skyblue:\"#87CEEB\",lightskyblue:\"#87CEFA\",deepskyblue:\"#00BFFF\",dodgerblue:\"#1E90FF\",cornflowerblue:\"#6495ED\",royalblue:\"#4169E1\",blue:\"#0000FF\",mediumblue:\"#0000CD\",darkblue:\"#00008B\",navy:\"#000080\",midnightblue:\"#191970\",cornsilk:\"#FFF8DC\",blanchedalmond:\"#FFEBCD\",bisque:\"#FFE4C4\",navajowhite:\"#FFDEAD\",wheat:\"#F5DEB3\",burlywood:\"#DEB887\",tan:\"#D2B48C\",rosybrown:\"#BC8F8F\",sandybrown:\"#F4A460\",goldenrod:\"#DAA520\",darkgoldenrod:\"#B8860B\",peru:\"#CD853F\",chocolate:\"#D2691E\",saddlebrown:\"#8B4513\",sienna:\"#A0522D\",brown:\"#A52A2A\",maroon:\"#800000\",white:\"#FFFFFF\",snow:\"#FFFAFA\",honeydew:\"#F0FFF0\",mintcream:\"#F5FFFA\",azure:\"#F0FFFF\",aliceblue:\"#F0F8FF\",ghostwhite:\"#F8F8FF\",whitesmoke:\"#F5F5F5\",seashell:\"#FFF5EE\",beige:\"#F5F5DC\",oldlace:\"#FDF5E6\",floralwhite:\"#FFFAF0\",ivory:\"#FFFFF0\",antiquewhite:\"#FAEBD7\",linen:\"#FAF0E6\",lavenderblush:\"#FFF0F5\",mistyrose:\"#FFE4E1\",gainsboro:\"#DCDCDC\",lightgray:\"#D3D3D3\",lightgrey:\"#D3D3D3\",silver:\"#C0C0C0\",darkgray:\"#A9A9A9\",darkgrey:\"#A9A9A9\",gray:\"#808080\",grey:\"#808080\",dimgray:\"#696969\",dimgrey:\"#696969\",lightslategray:\"#778899\",lightslategrey:\"#778899\",slategray:\"#708090\",slategrey:\"#708090\",darkslategray:\"#2F4F4F\",darkslategrey:\"#2F4F4F\",black:\"#000000\"},r.is_svg_color=function(e){return e in r.svg_colors}},\n", + " function _(r,t,e){Object.defineProperty(e,\"__esModule\",{value:!0}),e.NumberArray=Float32Array,e.ColorArray=Uint32Array;const s=r(25);class a{constructor(r,t){this.offsets=r,this.array=t}[s.equals](r,t){return t.arrays(this.offsets,r.offsets)&&t.arrays(this.array,r.array)}get length(){return this.offsets.length}clone(){return new a(new Uint32Array(this.offsets),new e.NumberArray(this.array))}static from(r){const t=r.length,s=new Uint32Array(t);let n=0;for(let e=0;e{if(null!=t[r.equals]&&null!=e[r.equals])return t[r.equals](e,this);switch(s){case\"[object Array]\":case\"[object Uint8Array]\":case\"[object Int8Array]\":case\"[object Uint16Array]\":case\"[object Int16Array]\":case\"[object Uint32Array]\":case\"[object Int32Array]\":case\"[object Float32Array]\":case\"[object Float64Array]\":return this.arrays(t,e);case\"[object Map]\":return this.maps(t,e);case\"[object Set]\":return this.sets(t,e);case\"[object Object]\":if(t.constructor==e.constructor&&(null==t.constructor||t.constructor===Object))return this.objects(t,e);case\"[object Function]\":if(t.constructor==e.constructor&&t.constructor===Function)return this.eq(\"\"+t,\"\"+e)}if(t instanceof Node)return this.nodes(t,e);throw Error(\"can't compare objects of type \"+s)})();return o.pop(),c.pop(),i}numbers(t,e){return Object.is(t,e)}arrays(t,e){const{length:r}=t;if(r!=e.length)return!1;for(let n=0;n>>5,r=31&t;return!!(this._array[s]>>r&1)}set(t,s=!0){this._check_bounds(t),this._count=null;const r=t>>>5,e=31&t;s?this._array[r]|=1<>>t&1&&(e+=1)}return e}*ones(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1&&(yield e);else e+=32}}*zeros(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1||(yield e);else e+=32}}_check_size(t){e.assert(this.size==t.size,\"Size mismatch\")}add(t){this._check_size(t);for(let s=0;st(this.at(s,r),s,r))}apply(t){const s=a.from(t),{nrows:r,ncols:e}=this;if(r==s.nrows&&e==s.ncols)return new a(r,e,(t,r)=>s.at(t,r)(this.at(t,r),t,r));throw new Error(\"dimensions don't match\")}to_sparse(){return[...this]}static from(t,s){if(t instanceof a)return t;if(null!=s){const r=t,e=Math.floor(r.length/s);return new a(e,s,(t,e)=>r[t*s+e])}{const s=t,r=t.length,e=i.min(s.map(t=>t.length));return new a(r,e,(t,r)=>s[t][r])}}}r.Matrix=a,a.__name__=\"Matrix\"},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});class n{constructor(){this._dev=!1}set dev(e){this._dev=e}get dev(){return this._dev}}s.Settings=n,n.__name__=\"Settings\",s.settings=new n},\n", + " function _(e,l,t){Object.defineProperty(t,\"__esModule\",{value:!0});const a=e(1).__importStar(e(18));t.Line={line_color:[a.Color,\"black\"],line_alpha:[a.Number,1],line_width:[a.Number,1],line_join:[a.LineJoin,\"bevel\"],line_cap:[a.LineCap,\"butt\"],line_dash:[a.Array,[]],line_dash_offset:[a.Number,0]},t.Fill={fill_color:[a.Color,\"gray\"],fill_alpha:[a.Number,1]},t.Hatch={hatch_color:[a.Color,\"black\"],hatch_alpha:[a.Number,1],hatch_scale:[a.Number,12],hatch_pattern:[a.NullString,null],hatch_weight:[a.Number,1],hatch_extra:[a.Any,{}]},t.Text={text_color:[a.Color,\"#444444\"],text_alpha:[a.Number,1],text_font:[a.Font,\"helvetica\"],text_font_size:[a.FontSize,\"16px\"],text_font_style:[a.FontStyle,\"normal\"],text_align:[a.TextAlign,\"left\"],text_baseline:[a.TextBaseline,\"bottom\"],text_line_height:[a.Number,1.2]},t.LineScalar={line_color:[a.ColorScalar,\"black\"],line_alpha:[a.NumberScalar,1],line_width:[a.NumberScalar,1],line_join:[a.LineJoinScalar,\"bevel\"],line_cap:[a.LineCapScalar,\"butt\"],line_dash:[a.ArrayScalar,[]],line_dash_offset:[a.NumberScalar,0]},t.FillScalar={fill_color:[a.ColorScalar,\"gray\"],fill_alpha:[a.NumberScalar,1]},t.HatchScalar={hatch_color:[a.ColorScalar,\"black\"],hatch_alpha:[a.NumberScalar,1],hatch_scale:[a.NumberScalar,12],hatch_pattern:[a.NullStringScalar,null],hatch_weight:[a.NumberScalar,1],hatch_extra:[a.AnyScalar,{}]},t.TextScalar={text_color:[a.ColorScalar,\"#444444\"],text_alpha:[a.NumberScalar,1],text_font:[a.Font,\"helvetica\"],text_font_size:[a.FontSizeScalar,\"16px\"],text_font_style:[a.FontStyleScalar,\"normal\"],text_align:[a.TextAlignScalar,\"left\"],text_baseline:[a.TextBaselineScalar,\"bottom\"],text_line_height:[a.NumberScalar,1.2]},t.LineVector={line_color:[a.ColorSpec,\"black\"],line_alpha:[a.NumberSpec,1],line_width:[a.NumberSpec,1],line_join:[a.LineJoin,\"bevel\"],line_cap:[a.LineCap,\"butt\"],line_dash:[a.Array,[]],line_dash_offset:[a.Number,0]},t.FillVector={fill_color:[a.ColorSpec,\"gray\"],fill_alpha:[a.NumberSpec,1]},t.HatchVector={hatch_color:[a.ColorSpec,\"black\"],hatch_alpha:[a.NumberSpec,1],hatch_scale:[a.NumberSpec,12],hatch_pattern:[a.NullStringSpec,null],hatch_weight:[a.NumberSpec,1],hatch_extra:[a.Any,{}]},t.TextVector={text_color:[a.ColorSpec,\"#444444\"],text_alpha:[a.NumberSpec,1],text_font:[a.Font,\"helvetica\"],text_font_size:[a.FontSizeSpec,\"16px\"],text_font_style:[a.FontStyle,\"normal\"],text_align:[a.TextAlign,\"left\"],text_baseline:[a.TextBaseline,\"bottom\"],text_line_height:[a.Number,1.2]}},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const n=t(27);function u(){const t=new Array(32);for(let e=0;e<32;e++)t[e]=\"0123456789ABCDEF\".substr(Math.floor(16*Math.random()),1);return t[12]=\"4\",t[16]=\"0123456789ABCDEF\".substr(3&t[16].charCodeAt(0)|8,1),t.join(\"\")}r.startsWith=function(t,e,r=0){return t.substr(r,e.length)==e},r.uuid4=u;let s=1e3;r.uniqueId=function(t){const e=n.settings.dev?\"j\"+s++:u();return null!=t?`${t}-${e}`:e},r.escape=function(t){return t.replace(/(?:[&<>\"'`])/g,t=>{switch(t){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";case\"'\":return\"'\";case\"`\":return\"`\";default:return t}})},r.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,(t,e)=>{switch(e){case\"amp\":return\"&\";case\"lt\":return\"<\";case\"gt\":return\">\";case\"quot\":return'\"';case\"#x27\":return\"'\";case\"#x60\":return\"`\";default:return e}})},r.use_strict=function(t){return\"'use strict';\\n\"+t}},\n", + " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=t(8),a=t(11),n=t(25),i=Symbol(\"__ndarray__\");class h extends Uint8Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"uint8\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Uint8NDArray=h,h.__name__=\"Uint8NDArray\";class _ extends Int8Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"int8\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Int8NDArray=_,_.__name__=\"Int8NDArray\";class u extends Uint16Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"uint16\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Uint16NDArray=u,u.__name__=\"Uint16NDArray\";class l extends Int16Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"int16\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Int16NDArray=l,l.__name__=\"Int16NDArray\";class y extends Uint32Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"uint32\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Uint32NDArray=y,y.__name__=\"Uint32NDArray\";class c extends Int32Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"int32\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Int32NDArray=c,c.__name__=\"Int32NDArray\";class p extends Float32Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"float32\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Float32NDArray=p,p.__name__=\"Float32NDArray\";class o extends Float64Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"float64\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}function d(t){return r.isObject(t)&&t.__ndarray__==i}e.Float64NDArray=o,o.__name__=\"Float64NDArray\",e.is_NDArray=d,e.ndarray=function(t,s={}){let{dtype:e}=s;null==e&&(e=t instanceof ArrayBuffer||r.isArray(t)?\"float32\":(()=>{switch(!0){case t instanceof Uint8Array:return\"uint8\";case t instanceof Int8Array:return\"int8\";case t instanceof Uint16Array:return\"uint16\";case t instanceof Int16Array:return\"int16\";case t instanceof Uint32Array:return\"uint32\";case t instanceof Int32Array:return\"int32\";case t instanceof Float32Array:return\"float32\";case t instanceof Float64Array:return\"float64\";default:a.unreachable()}})());const{shape:n}=s;switch(e){case\"uint8\":return new h(t,n);case\"int8\":return new _(t,n);case\"uint16\":return new u(t,n);case\"int16\":return new l(t,n);case\"uint32\":return new y(t,n);case\"int32\":return new c(t,n);case\"float32\":return new p(t,n);case\"float64\":return new o(t,n)}}},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),a=e(8),f=e(32),_=n.__importStar(e(30));function o(e){const r=new Uint8Array(e),t=Array.from(r).map(e=>String.fromCharCode(e));return btoa(t.join(\"\"))}function s(e){const r=atob(e),t=r.length,n=new Uint8Array(t);for(let e=0,a=t;e{switch(a){case\"uint8\":return new _.Uint8NDArray(o,n);case\"int8\":return new _.Int8NDArray(o,n);case\"uint16\":return new _.Uint16NDArray(o,n);case\"int16\":return new _.Int16NDArray(o,n);case\"uint32\":return new _.Uint32NDArray(o,n);case\"int32\":return new _.Int32NDArray(o,n);case\"float32\":return new _.Float32NDArray(o,n);case\"float64\":return new _.Float64NDArray(o,n)}})();if(f!==t.BYTE_ORDER)switch(l.BYTES_PER_ELEMENT){case 2:i(l);break;case 4:u(l);break;case 8:c(l)}return l},t.encode_NDArray=function(e,r){const n={order:t.BYTE_ORDER,dtype:e.dtype,shape:e.shape};if(null!=r){const t=\"\"+r.size;return r.set(t,e.buffer),Object.assign({__buffer__:t},n)}{const r=o(e.buffer);return Object.assign({__ndarray__:r},n)}}},\n", + " function _(e,n,i){Object.defineProperty(i,\"__esModule\",{value:!0}),i.is_ie=(()=>{const e=\"undefined\"!=typeof navigator?navigator.userAgent:\"\";return e.indexOf(\"MSIE\")>=0||e.indexOf(\"Trident\")>0||e.indexOf(\"Edge\")>0})(),i.is_mobile=\"undefined\"!=typeof window&&(\"ontouchstart\"in window||navigator.maxTouchPoints>0),i.is_little_endian=(()=>{const e=new ArrayBuffer(4),n=new Uint8Array(e);new Uint32Array(e)[1]=168496141;let i=!0;return 10==n[4]&&11==n[5]&&12==n[6]&&13==n[7]&&(i=!1),i})()},\n", + " function _(t,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=t(8),i=t(13);n.pretty=Symbol(\"pretty\");class o{constructor(t){this.precision=null==t?void 0:t.precision}to_string(t){return function(t){return n.pretty in Object(t)}(t)?t[n.pretty](this):e.isBoolean(t)?this.boolean(t):e.isNumber(t)?this.number(t):e.isString(t)?this.string(t):e.isArray(t)?this.array(t):e.isIterable(t)?this.iterable(t):e.isPlainObject(t)?this.object(t):\"\"+t}token(t){return t}boolean(t){return\"\"+t}number(t){return null!=this.precision?t.toFixed(this.precision):\"\"+t}string(t){return`\"${t.replace(/'/g,\"\\\\'\")}\"`}array(t){const r=this.token,n=[];for(const r of t)n.push(this.to_string(r));return`${r(\"[\")}${n.join(r(\",\")+\" \")}${r(\"]\")}`}iterable(t){var r;const n=this.token,e=null!==(r=Object(t)[Symbol.toStringTag])&&void 0!==r?r:\"Object\",i=this.array(t);return`${e}${n(\"(\")}${i}${n(\")\")}`}object(t){const r=this.token,n=[];for(const[e,o]of i.entries(t))n.push(`${e}${r(\":\")} ${this.to_string(o)}`);return`${r(\"{\")}${n.join(r(\",\")+\" \")}${r(\"}\")}`}}n.Printer=o,o.__name__=\"Printer\",n.to_string=function(t,r){return new o(r).to_string(t)}},\n", + " function _(t,_,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=t(1);e.__exportStar(t(35),r),e.__exportStar(t(176),r),e.__exportStar(t(203),r),e.__exportStar(t(207),r),e.__exportStar(t(218),r),e.__exportStar(t(222),r),e.__exportStar(t(228),r),e.__exportStar(t(232),r),e.__exportStar(t(265),r),e.__exportStar(t(268),r),e.__exportStar(t(270),r),e.__exportStar(t(132),r),e.__exportStar(t(148),r),e.__exportStar(t(287),r),e.__exportStar(t(291),r),e.__exportStar(t(320),r),e.__exportStar(t(321),r),e.__exportStar(t(322),r),e.__exportStar(t(323),r),e.__exportStar(t(324),r),e.__exportStar(t(329),r),e.__exportStar(t(331),r),e.__exportStar(t(342),r),e.__exportStar(t(346),r)},\n", + " function _(a,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});var r=a(36);o.Annotation=r.Annotation;var n=a(83);o.Arrow=n.Arrow;var t=a(84);o.ArrowHead=t.ArrowHead;var v=a(84);o.OpenHead=v.OpenHead;var l=a(84);o.NormalHead=l.NormalHead;var d=a(84);o.TeeHead=d.TeeHead;var i=a(84);o.VeeHead=i.VeeHead;var A=a(122);o.Band=A.Band;var H=a(124);o.BoxAnnotation=H.BoxAnnotation;var T=a(125);o.ColorBar=T.ColorBar;var p=a(160);o.Label=p.Label;var L=a(162);o.LabelSet=L.LabelSet;var b=a(163);o.Legend=b.Legend;var B=a(164);o.LegendItem=B.LegendItem;var S=a(166);o.PolyAnnotation=S.PolyAnnotation;var P=a(167);o.Slope=P.Slope;var g=a(168);o.Span=g.Span;var m=a(161);o.TextAnnotation=m.TextAnnotation;var w=a(169);o.Title=w.Title;var x=a(170);o.ToolbarPanel=x.ToolbarPanel;var s=a(171);o.Tooltip=s.Tooltip;var u=a(175);o.Whisker=u.Whisker},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=t(1).__importStar(t(37)),i=t(13),o=t(70);class _ extends o.RendererView{get panel(){return this.layout}connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.visible,()=>this.plot_view.request_layout())}get_size(){if(this.model.visible){const{width:t,height:e}=this._get_size();return{width:Math.round(t),height:Math.round(e)}}return{width:0,height:0}}_get_size(){throw new Error(\"not implemented\")}set_data(t){const e=this.model.materialize_dataspecs(t);if(i.extend(this,e),this.plot_model.use_map){const t=this;null!=t._x&&([t._x,t._y]=s.project_xy(t._x,t._y)),null!=t._xs&&([t._xs,t._ys]=s.project_xsys(t._xs,t._ys))}}get needs_clip(){return null==this.layout}serializable_state(){const t=super.serializable_state();return null==this.layout?t:Object.assign(Object.assign({},t),{bbox:this.layout.bbox.box})}}n.AnnotationView=_,_.__name__=\"AnnotationView\";class a extends o.Renderer{constructor(t){super(t)}static init_Annotation(){this.override({level:\"annotation\"})}}n.Annotation=a,a.__name__=\"Annotation\",a.init_Annotation()},\n", + " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=n(1),o=r.__importDefault(n(38)),l=r.__importDefault(n(39)),c=n(24),i=new l.default(\"GOOGLE\"),u=new l.default(\"WGS84\"),a=o.default(u,i);e.wgs84_mercator={compute:(n,t)=>isFinite(n)&&isFinite(t)?a.forward([n,t]):[NaN,NaN],invert:(n,t)=>isFinite(n)&&isFinite(t)?a.inverse([n,t]):[NaN,NaN]};const s={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},f={lon:[-180,180],lat:[-85.06,85.06]},{min:_,max:p}=Math;function m(n,t){const r=_(n.length,t.length),o=new c.NumberArray(r),l=new c.NumberArray(r);return e.inplace.project_xy(n,t,o,l),[o,l]}e.clip_mercator=function(n,t,e){const[r,o]=s[e];return[p(n,r),_(t,o)]},e.in_bounds=function(n,t){const[e,r]=f[t];return e2?void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name?\"number\"==typeof r.z?[r.x,r.y,r.z].concat(t.splice(3)):[r.x,r.y,t[2]].concat(t.splice(3)):[r.x,r.y].concat(t.splice(2)):[r.x,r.y]):(o=a.default(e,n,t),2===(i=Object.keys(t)).length||i.forEach((function(r){if(void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name){if(\"x\"===r||\"y\"===r||\"z\"===r)return}else if(\"x\"===r||\"y\"===r)return;o[r]=t[r]})),o)}function u(e){return e instanceof o.default?e:e.oProj?e.oProj:o.default(e)}t.default=function(e,n,t){e=u(e);var r,o=!1;return void 0===n?(n=e,e=i,o=!0):(void 0!==n.x||Array.isArray(n))&&(t=n,n=e,e=i,o=!0),n=u(n),t?c(e,n,t):(r={forward:function(t){return c(e,n,t)},inverse:function(t){return c(n,e,t)}},o&&(r.oProj=n),r)}},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const s=e(1),i=s.__importDefault(e(40)),u=s.__importDefault(e(51)),l=s.__importDefault(e(52)),o=e(60),r=s.__importDefault(e(62)),f=s.__importDefault(e(63)),d=s.__importDefault(e(47));function p(e,t){if(!(this instanceof p))return new p(e);t=t||function(e){if(e)throw e};var a=i.default(e);if(\"object\"==typeof a){var s=p.projections.get(a.projName);if(s){if(a.datumCode&&\"none\"!==a.datumCode){var l=d.default(r.default,a.datumCode);l&&(a.datum_params=l.towgs84?l.towgs84.split(\",\"):null,a.ellps=l.ellipse,a.datumName=l.datumName?l.datumName:a.datumCode)}a.k0=a.k0||1,a.axis=a.axis||\"enu\",a.ellps=a.ellps||\"wgs84\";var m=o.sphere(a.a,a.b,a.rf,a.ellps,a.sphere),n=o.eccentricity(m.a,m.b,m.rf,a.R_A),h=a.datum||f.default(a.datumCode,a.datum_params,m.a,m.b,n.es,n.ep2);u.default(this,a),u.default(this,s),this.a=m.a,this.b=m.b,this.rf=m.rf,this.sphere=m.sphere,this.es=n.es,this.e=n.e,this.ep2=n.ep2,this.datum=h,this.init(),t(null,this)}else t(e)}else t(e)}p.projections=l.default,p.projections.start(),a.default=p},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const u=t(1),n=u.__importDefault(t(41)),f=u.__importDefault(t(48)),i=u.__importDefault(t(43)),a=u.__importDefault(t(47));var o=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];var l=[\"3857\",\"900913\",\"3785\",\"102113\"];r.default=function(t){if(!function(t){return\"string\"==typeof t}(t))return t;if(function(t){return t in n.default}(t))return n.default[t];if(function(t){return o.some((function(e){return t.indexOf(e)>-1}))}(t)){var e=f.default(t);if(function(t){var e=a.default(t,\"authority\");if(e){var r=a.default(e,\"epsg\");return r&&l.indexOf(r)>-1}}(e))return n.default[\"EPSG:3857\"];var r=function(t){var e=a.default(t,\"extension\");if(e)return a.default(e,\"proj4\")}(e);return r?i.default(r):e}return function(t){return\"+\"===t[0]}(t)?i.default(t):void 0}},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=t(1),n=i.__importDefault(t(42)),f=i.__importDefault(t(43)),a=i.__importDefault(t(48));function l(t){var e=this;if(2===arguments.length){var r=arguments[1];\"string\"==typeof r?\"+\"===r.charAt(0)?l[t]=f.default(arguments[1]):l[t]=a.default(arguments[1]):l[t]=r}else if(1===arguments.length){if(Array.isArray(t))return t.map((function(t){Array.isArray(t)?l.apply(e,t):l(t)}));if(\"string\"==typeof t){if(t in l)return l[t]}else\"EPSG\"in t?l[\"EPSG:\"+t.EPSG]=t:\"ESRI\"in t?l[\"ESRI:\"+t.ESRI]=t:\"IAU2000\"in t?l[\"IAU2000:\"+t.IAU2000]=t:console.log(t);return}}n.default(l),r.default=l},\n", + " function _(e,t,l){Object.defineProperty(l,\"__esModule\",{value:!0}),l.default=function(e){e(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),e(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),e(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),e.WGS84=e[\"EPSG:4326\"],e[\"EPSG:3785\"]=e[\"EPSG:3857\"],e.GOOGLE=e[\"EPSG:3857\"],e[\"EPSG:900913\"]=e[\"EPSG:3857\"],e[\"EPSG:102113\"]=e[\"EPSG:3857\"]}},\n", + " function _(t,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});const e=t(1),a=t(44),u=e.__importDefault(t(45)),r=e.__importDefault(t(46)),i=e.__importDefault(t(47));o.default=function(t){var n,o,e,f={},l=t.split(\"+\").map((function(t){return t.trim()})).filter((function(t){return t})).reduce((function(t,n){var o=n.split(\"=\");return o.push(!0),t[o[0].toLowerCase()]=o[1],t}),{}),c={proj:\"projName\",datum:\"datumCode\",rf:function(t){f.rf=parseFloat(t)},lat_0:function(t){f.lat0=t*a.D2R},lat_1:function(t){f.lat1=t*a.D2R},lat_2:function(t){f.lat2=t*a.D2R},lat_ts:function(t){f.lat_ts=t*a.D2R},lon_0:function(t){f.long0=t*a.D2R},lon_1:function(t){f.long1=t*a.D2R},lon_2:function(t){f.long2=t*a.D2R},alpha:function(t){f.alpha=parseFloat(t)*a.D2R},lonc:function(t){f.longc=t*a.D2R},x_0:function(t){f.x0=parseFloat(t)},y_0:function(t){f.y0=parseFloat(t)},k_0:function(t){f.k0=parseFloat(t)},k:function(t){f.k0=parseFloat(t)},a:function(t){f.a=parseFloat(t)},b:function(t){f.b=parseFloat(t)},r_a:function(){f.R_A=!0},zone:function(t){f.zone=parseInt(t,10)},south:function(){f.utmSouth=!0},towgs84:function(t){f.datum_params=t.split(\",\").map((function(t){return parseFloat(t)}))},to_meter:function(t){f.to_meter=parseFloat(t)},units:function(t){f.units=t;var n=i.default(r.default,t);n&&(f.to_meter=n.to_meter)},from_greenwich:function(t){f.from_greenwich=t*a.D2R},pm:function(t){var n=i.default(u.default,t);f.from_greenwich=(n||parseFloat(t))*a.D2R},nadgrids:function(t){\"@null\"===t?f.datumCode=\"none\":f.nadgrids=t},axis:function(t){3===t.length&&-1!==\"ewnsud\".indexOf(t.substr(0,1))&&-1!==\"ewnsud\".indexOf(t.substr(1,1))&&-1!==\"ewnsud\".indexOf(t.substr(2,1))&&(f.axis=t)}};for(n in l)o=l[n],n in c?\"function\"==typeof(e=c[n])?e(o):f[e]=o:f[n]=o;return\"string\"==typeof f.datumCode&&\"WGS84\"!==f.datumCode&&(f.datumCode=f.datumCode.toLowerCase()),f}},\n", + " function _(P,_,e){Object.defineProperty(e,\"__esModule\",{value:!0}),e.PJD_3PARAM=1,e.PJD_7PARAM=2,e.PJD_WGS84=4,e.PJD_NODATUM=5,e.SEC_TO_RAD=484813681109536e-20,e.HALF_PI=Math.PI/2,e.SIXTH=.16666666666666666,e.RA4=.04722222222222222,e.RA6=.022156084656084655,e.EPSLN=1e-10,e.D2R=.017453292519943295,e.R2D=57.29577951308232,e.FORTPI=Math.PI/4,e.TWO_PI=2*Math.PI,e.SPI=3.14159265359},\n", + " function _(e,o,r){Object.defineProperty(r,\"__esModule\",{value:!0});var a={};r.default=a,a.greenwich=0,a.lisbon=-9.131906111111,a.paris=2.337229166667,a.bogota=-74.080916666667,a.madrid=-3.687938888889,a.rome=12.452333333333,a.bern=7.439583333333,a.jakarta=106.807719444444,a.ferro=-17.666666666667,a.brussels=4.367975,a.stockholm=18.058277777778,a.athens=23.7163375,a.oslo=10.722916666667},\n", + " function _(e,t,f){Object.defineProperty(f,\"__esModule\",{value:!0}),f.default={ft:{to_meter:.3048},\"us-ft\":{to_meter:1200/3937}}},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});var o=/[\\s_\\-\\/\\(\\)]/g;t.default=function(e,r){if(e[r])return e[r];for(var t,a=Object.keys(e),n=r.toLowerCase().replace(o,\"\"),f=-1;++f0?90:-90),e.lat_ts=e.lat1)}(l),l}},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=function(t){return new a(t).output()};var i=/\\s/,s=/[A-Za-z]/,h=/[A-Za-z84]/,o=/[,\\]]/,n=/[\\d\\.E\\-\\+]/;function a(t){if(\"string\"!=typeof t)throw new Error(\"not a string\");this.text=t.trim(),this.level=0,this.place=0,this.root=null,this.stack=[],this.currentObject=null,this.state=1}a.prototype.readCharicter=function(){var t=this.text[this.place++];if(4!==this.state)for(;i.test(t);){if(this.place>=this.text.length)return;t=this.text[this.place++]}switch(this.state){case 1:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},a.prototype.afterquote=function(t){if('\"'===t)return this.word+='\"',void(this.state=4);if(o.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in afterquote yet, index '+this.place)},a.prototype.afterItem=function(t){return\",\"===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=1)):\"]\"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=1,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},a.prototype.number=function(t){if(!n.test(t)){if(o.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in number yet, index '+this.place)}this.word+=t},a.prototype.quoted=function(t){'\"'!==t?this.word+=t:this.state=5},a.prototype.keyword=function(t){if(h.test(t))this.word+=t;else{if(\"[\"===t){var e=[];return e.push(this.word),this.level++,null===this.root?this.root=e:this.currentObject.push(e),this.stack.push(this.currentObject),this.currentObject=e,void(this.state=1)}if(!o.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in keyword yet, index '+this.place);this.afterItem(t)}},a.prototype.neutral=function(t){if(s.test(t))return this.word=t,void(this.state=2);if('\"'===t)return this.word=\"\",void(this.state=4);if(n.test(t))return this.word=t,void(this.state=3);if(!o.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in neutral yet, index '+this.place);this.afterItem(t)},a.prototype.output=function(){for(;this.place90&&a*l.R2D<-90&&h*l.R2D>180&&h*l.R2D<-180)return null;if(Math.abs(Math.abs(a)-l.HALF_PI)<=l.EPSLN)return null;if(this.sphere)i=this.x0+this.a*this.k0*e.default(h-this.long0),s=this.y0+this.a*this.k0*Math.log(Math.tan(l.FORTPI+.5*a));else{var n=Math.sin(a),u=r.default(this.e,a,n);i=this.x0+this.a*this.k0*e.default(h-this.long0),s=this.y0-this.a*this.k0*Math.log(u)}return t.x=i,t.y=s,t}function f(t){var i,s,h=t.x-this.x0,a=t.y-this.y0;if(this.sphere)s=l.HALF_PI-2*Math.atan(Math.exp(-a/(this.a*this.k0)));else{var r=Math.exp(-a/(this.a*this.k0));if(-9999===(s=n.default(this.e,r)))return null}return i=e.default(this.long0+h/(this.a*this.k0)),t.x=i,t.y=s,t}s.init=u,s.forward=o,s.inverse=f,s.names=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"],s.default={init:u,forward:o,inverse:f,names:s.names}},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0}),n.default=function(e,t,n){var r=e*t;return n/Math.sqrt(1-r*r)}},\n", + " function _(e,t,u){Object.defineProperty(u,\"__esModule\",{value:!0});const n=e(1),a=e(44),f=n.__importDefault(e(56));u.default=function(e){return Math.abs(e)<=a.SPI?e:e-f.default(e)*a.TWO_PI}},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return e<0?-1:1}},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const a=t(44);n.default=function(t,e,n){var o=t*n,u=.5*t;return o=Math.pow((1-o)/(1+o),u),Math.tan(.5*(a.HALF_PI-e))/o}},\n", + " function _(t,a,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(44);e.default=function(t,a){for(var e,r,o=.5*t,u=n.HALF_PI-2*Math.atan(a),f=0;f<=15;f++)if(e=t*Math.sin(u),u+=r=n.HALF_PI-2*Math.atan(a*Math.pow((1-e)/(1+e),o))-u,Math.abs(r)<=1e-10)return u;return-9999}},\n", + " function _(e,n,i){function t(){}function r(e){return e}Object.defineProperty(i,\"__esModule\",{value:!0}),i.init=t,i.forward=r,i.inverse=r,i.names=[\"longlat\",\"identity\"],i.default={init:t,forward:r,inverse:r,names:i.names}},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const a=e(1),n=e(44),f=a.__importStar(e(61)),u=a.__importDefault(e(47));r.eccentricity=function(e,t,r,a){var f=e*e,u=t*t,i=(f-u)/f,c=0;return a?(f=(e*=1-i*(n.SIXTH+i*(n.RA4+i*n.RA6)))*e,i=0):c=Math.sqrt(i),{es:i,e:c,ep2:(f-u)/u}},r.sphere=function(e,t,r,a,i){if(!e){var c=u.default(f.default,a);c||(c=f.WGS84),e=c.a,t=c.b,r=c.rf}return r&&!t&&(t=(1-1/r)*e),(0===r||Math.abs(e-t)3&&(0===r.datum_params[3]&&0===r.datum_params[4]&&0===r.datum_params[5]&&0===r.datum_params[6]||(r.datum_type=t.PJD_7PARAM,r.datum_params[3]*=t.SEC_TO_RAD,r.datum_params[4]*=t.SEC_TO_RAD,r.datum_params[5]*=t.SEC_TO_RAD,r.datum_params[6]=r.datum_params[6]/1e6+1))),r.a=_,r.b=u,r.es=d,r.ep2=p,r}},\n", + " function _(t,e,a){Object.defineProperty(a,\"__esModule\",{value:!0});const r=t(1),u=t(44),m=r.__importDefault(t(65)),_=r.__importDefault(t(67)),o=r.__importDefault(t(39)),d=r.__importDefault(t(68)),f=r.__importDefault(t(69));a.default=function t(e,a,r){var n;if(Array.isArray(r)&&(r=d.default(r)),f.default(r),e.datum&&a.datum&&function(t,e){return(t.datum.datum_type===u.PJD_3PARAM||t.datum.datum_type===u.PJD_7PARAM)&&\"WGS84\"!==e.datumCode||(e.datum.datum_type===u.PJD_3PARAM||e.datum.datum_type===u.PJD_7PARAM)&&\"WGS84\"!==t.datumCode}(e,a)&&(r=t(e,n=new o.default(\"WGS84\"),r),e=n),\"enu\"!==e.axis&&(r=_.default(e,!1,r)),\"longlat\"===e.projName)r={x:r.x*u.D2R,y:r.y*u.D2R,z:r.z||0};else if(e.to_meter&&(r={x:r.x*e.to_meter,y:r.y*e.to_meter,z:r.z||0}),!(r=e.inverse(r)))return;return e.from_greenwich&&(r.x+=e.from_greenwich),r=m.default(e.datum,a.datum,r),a.from_greenwich&&(r={x:r.x-a.from_greenwich,y:r.y,z:r.z||0}),\"longlat\"===a.projName?r={x:r.x*u.R2D,y:r.y*u.R2D,z:r.z||0}:(r=a.forward(r),a.to_meter&&(r={x:r.x/a.to_meter,y:r.y/a.to_meter,z:r.z||0})),\"enu\"!==a.axis?_.default(a,!0,r):r}},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const u=e(44),o=e(66);function _(e){return e===u.PJD_3PARAM||e===u.PJD_7PARAM}a.default=function(e,t,a){return o.compareDatums(e,t)||e.datum_type===u.PJD_NODATUM||t.datum_type===u.PJD_NODATUM?a:e.es!==t.es||e.a!==t.a||_(e.datum_type)||_(t.datum_type)?(a=o.geodeticToGeocentric(a,e.es,e.a),_(e.datum_type)&&(a=o.geocentricToWgs84(a,e.datum_type,e.datum_params)),_(t.datum_type)&&(a=o.geocentricFromWgs84(a,t.datum_type,t.datum_params)),o.geocentricToGeodetic(a,t.es,t.a,t.b)):a}},\n", + " function _(a,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=a(44);r.compareDatums=function(a,t){return a.datum_type===t.datum_type&&(!(a.a!==t.a||Math.abs(a.es-t.es)>5e-11)&&(a.datum_type===e.PJD_3PARAM?a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]:a.datum_type!==e.PJD_7PARAM||a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]&&a.datum_params[3]===t.datum_params[3]&&a.datum_params[4]===t.datum_params[4]&&a.datum_params[5]===t.datum_params[5]&&a.datum_params[6]===t.datum_params[6]))},r.geodeticToGeocentric=function(a,t,r){var m,u,s,_,n=a.x,d=a.y,i=a.z?a.z:0;if(d<-e.HALF_PI&&d>-1.001*e.HALF_PI)d=-e.HALF_PI;else if(d>e.HALF_PI&&d<1.001*e.HALF_PI)d=e.HALF_PI;else{if(d<-e.HALF_PI)return{x:-1/0,y:-1/0,z:a.z};if(d>e.HALF_PI)return{x:1/0,y:1/0,z:a.z}}return n>Math.PI&&(n-=2*Math.PI),u=Math.sin(d),_=Math.cos(d),s=u*u,{x:((m=r/Math.sqrt(1-t*s))+i)*_*Math.cos(n),y:(m+i)*_*Math.sin(n),z:(m*(1-t)+i)*u}},r.geocentricToGeodetic=function(a,t,r,m){var u,s,_,n,d,i,p,P,o,y,M,z,c,A,x,f=a.x,h=a.y,I=a.z?a.z:0;if(u=Math.sqrt(f*f+h*h),s=Math.sqrt(f*f+h*h+I*I),u/r<1e-12){if(A=0,s/r<1e-12)return e.HALF_PI,x=-m,{x:a.x,y:a.y,z:a.z}}else A=Math.atan2(h,f);_=I/s,P=(n=u/s)*(1-t)*(d=1/Math.sqrt(1-t*(2-t)*n*n)),o=_*d,c=0;do{c++,i=t*(p=r/Math.sqrt(1-t*o*o))/(p+(x=u*P+I*o-p*(1-t*o*o))),z=(M=_*(d=1/Math.sqrt(1-i*(2-i)*n*n)))*P-(y=n*(1-i)*d)*o,P=y,o=M}while(z*z>1e-24&&c<30);return{x:A,y:Math.atan(M/Math.abs(y)),z:x}},r.geocentricToWgs84=function(a,t,r){if(t===e.PJD_3PARAM)return{x:a.x+r[0],y:a.y+r[1],z:a.z+r[2]};if(t===e.PJD_7PARAM){var m=r[0],u=r[1],s=r[2],_=r[3],n=r[4],d=r[5],i=r[6];return{x:i*(a.x-d*a.y+n*a.z)+m,y:i*(d*a.x+a.y-_*a.z)+u,z:i*(-n*a.x+_*a.y+a.z)+s}}},r.geocentricFromWgs84=function(a,t,r){if(t===e.PJD_3PARAM)return{x:a.x-r[0],y:a.y-r[1],z:a.z-r[2]};if(t===e.PJD_7PARAM){var m=r[0],u=r[1],s=r[2],_=r[3],n=r[4],d=r[5],i=r[6],p=(a.x-m)/i,P=(a.y-u)/i,o=(a.z-s)/i;return{x:p+d*P-n*o,y:-d*p+P+_*o,z:n*p-_*P+o}}}},\n", + " function _(e,a,i){Object.defineProperty(i,\"__esModule\",{value:!0}),i.default=function(e,a,i){var s,n,r,c=i.x,d=i.y,u=i.z||0,f={};for(r=0;r<3;r++)if(!a||2!==r||void 0!==i.z)switch(0===r?(s=c,n=-1!==\"ew\".indexOf(e.axis[r])?\"x\":\"y\"):1===r?(s=d,n=-1!==\"ns\".indexOf(e.axis[r])?\"y\":\"x\"):(s=u,n=\"z\"),e.axis[r]){case\"e\":case\"w\":case\"n\":case\"s\":f[n]=s;break;case\"u\":void 0!==i[n]&&(f.z=s);break;case\"d\":void 0!==i[n]&&(f.z=-s);break;default:return null}return f}},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var n={x:e[0],y:e[1]};return e.length>2&&(n.z=e[2]),e.length>3&&(n.m=e[3]),n}},\n", + " function _(e,i,n){function t(e){if(\"function\"==typeof Number.isFinite){if(Number.isFinite(e))return;throw new TypeError(\"coordinates must be finite numbers\")}if(\"number\"!=typeof e||e!=e||!isFinite(e))throw new TypeError(\"coordinates must be finite numbers\")}Object.defineProperty(n,\"__esModule\",{value:!0}),n.default=function(e){t(e.x),t(e.y)}},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),r=e(71),s=n.__importStar(e(74)),_=n.__importStar(e(18)),a=e(81),o=e(82);class l extends r.View{get coordinates(){return this._coordinates}initialize(){super.initialize(),this.visuals=new s.Visuals(this.model),this.needs_webgl_blit=!1,this._initialize_coordinates()}connect_signals(){super.connect_signals();const{x_range_name:e,y_range_name:i}=this.model.properties;this.on_change([e,i],()=>this._initialize_coordinates())}_initialize_coordinates(){const{x_range_name:e,y_range_name:i}=this.model,{frame:t}=this.plot_view,n=t.x_scales.get(e),r=t.y_scales.get(i);this._coordinates=new o.CoordinateTransform(n,r)}get plot_view(){return this.parent}get plot_model(){return this.parent.model}get layer(){const{overlays:e,primary:i}=this.plot_view.canvas_view;return\"overlay\"==this.model.level?e:i}request_render(){this.plot_view.request_render()}notify_finished(){this.plot_view.notify_finished()}get needs_clip(){return!1}get has_webgl(){return!1}render(){this.model.visible&&this._render(),this._has_finished=!0}}t.RendererView=l,l.__name__=\"RendererView\";class d extends a.Model{constructor(e){super(e)}static init_Renderer(){this.define({level:[_.RenderLevel],visible:[_.Boolean,!0],x_range_name:[_.String,\"default\"],y_range_name:[_.String,\"default\"]})}}t.Renderer=d,d.__name__=\"Renderer\",d.init_Renderer()},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),r=t(15),n=t(72),o=t(8),h=i.__importDefault(t(73));class a{constructor(t){if(this.removed=new r.Signal0(this,\"removed\"),this._ready=Promise.resolve(void 0),null==t.model)throw new Error(\"model of a view wasn't configured\");this.model=t.model,this._parent=t.parent}get ready(){return this._ready}connect(t,e){return t.connect((t,s)=>{const i=Promise.resolve(e.call(this,t,s));this._ready=this._ready.then(()=>i)},this)}disconnect(t,e){return t.disconnect(e,this)}initialize(){this._has_finished=!1,this.is_root&&(this._stylesheet=n.stylesheet);for(const t of this.styles())this.stylesheet.append(t)}async lazy_initialize(){}remove(){this._parent=void 0,this.disconnect_signals(),this.removed.emit()}toString(){return`${this.model.type}View(${this.model.id})`}serializable_state(){return{type:this.model.type}}get parent(){if(void 0!==this._parent)return this._parent;throw new Error(\"parent of a view wasn't configured\")}get is_root(){return null===this.parent}get root(){return this.is_root?this:this.parent.root}assert_root(){if(!this.is_root)throw new Error(this.toString()+\" is not a root layout\")}has_finished(){return this._has_finished}get is_idle(){return this.has_finished()}connect_signals(){}disconnect_signals(){r.Signal.disconnectReceiver(this)}on_change(t,e){for(const s of o.isArray(t)?t:[t])this.connect(s.change,e)}cursor(t,e){return null}get stylesheet(){return this.is_root?this._stylesheet:this.root.stylesheet}styles(){return[h.default]}}s.View=a,a.__name__=\"View\"},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=t(8),o=t(13),s=t=>(e={},...n)=>{const s=document.createElement(t);s.classList.add(\"bk\");for(let[t,n]of o.entries(e))if(null!=n&&(!i.isBoolean(n)||n))if(\"class\"===t&&(i.isString(n)&&(n=n.split(/\\s+/)),i.isArray(n)))for(const t of n)null!=t&&s.classList.add(t);else if(\"style\"===t&&i.isPlainObject(n))for(const[t,e]of o.entries(n))s.style[t]=e;else if(\"data\"===t&&i.isPlainObject(n))for(const[t,e]of o.entries(n))s.dataset[t]=e;else s.setAttribute(t,n);function l(t){if(i.isString(t))s.appendChild(document.createTextNode(t));else if(t instanceof Node)s.appendChild(t);else if(t instanceof NodeList||t instanceof HTMLCollection)for(const e of t)s.appendChild(e);else if(null!=t&&!1!==t)throw new Error(\"expected a DOM element, string, false or null, got \"+JSON.stringify(t))}for(const t of n)if(i.isArray(t))for(const e of t)l(e);else l(t);return s};function l(t){const e=t.parentNode;null!=e&&e.removeChild(t)}function r(t,...e){const n=t.firstChild;for(const i of e)t.insertBefore(i,n)}function a(t,e){const n=Element.prototype;return(n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector).call(t,e)}function c(t){return parseFloat(t)||0}function h(t){const e=getComputedStyle(t);return{border:{top:c(e.borderTopWidth),bottom:c(e.borderBottomWidth),left:c(e.borderLeftWidth),right:c(e.borderRightWidth)},margin:{top:c(e.marginTop),bottom:c(e.marginBottom),left:c(e.marginLeft),right:c(e.marginRight)},padding:{top:c(e.paddingTop),bottom:c(e.paddingBottom),left:c(e.paddingLeft),right:c(e.paddingRight)}}}function d(t){const e=t.getBoundingClientRect();return{width:Math.ceil(e.width),height:Math.ceil(e.height)}}n.createElement=function(t,e,...n){return s(t)(e,...n)},n.div=s(\"div\"),n.span=s(\"span\"),n.canvas=s(\"canvas\"),n.link=s(\"link\"),n.style=s(\"style\"),n.a=s(\"a\"),n.p=s(\"p\"),n.i=s(\"i\"),n.pre=s(\"pre\"),n.button=s(\"button\"),n.label=s(\"label\"),n.input=s(\"input\"),n.select=s(\"select\"),n.option=s(\"option\"),n.optgroup=s(\"optgroup\"),n.textarea=s(\"textarea\"),n.nbsp=function(){return document.createTextNode(\" \")},n.append=function(t,...e){for(const n of e)t.appendChild(n)},n.remove=l,n.removeElement=l,n.replaceWith=function(t,e){const n=t.parentNode;null!=n&&n.replaceChild(e,t)},n.prepend=r,n.empty=function(t,e=!1){let n;for(;n=t.firstChild;)t.removeChild(n);if(e&&t instanceof Element)for(const e of t.attributes)t.removeAttributeNode(e)},n.display=function(t){t.style.display=\"\"},n.undisplay=function(t){t.style.display=\"none\"},n.show=function(t){t.style.visibility=\"\"},n.hide=function(t){t.style.visibility=\"hidden\"},n.offset=function(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},n.matches=a,n.parent=function(t,e){let n=t;for(;n=n.parentElement;)if(a(n,e))return n;return null},n.extents=h,n.size=d,n.scroll_size=function(t){return{width:Math.ceil(t.scrollWidth),height:Math.ceil(t.scrollHeight)}},n.outer_size=function(t){const{margin:{left:e,right:n,top:i,bottom:o}}=h(t),{width:s,height:l}=d(t);return{width:Math.ceil(s+e+n),height:Math.ceil(l+i+o)}},n.content_size=function(t){const{left:e,top:n}=t.getBoundingClientRect(),{padding:i}=h(t);let o=0,s=0;for(const l of t.children){const t=l.getBoundingClientRect();o=Math.max(o,Math.ceil(t.left-e-i.left+t.width)),s=Math.max(s,Math.ceil(t.top-n-i.top+t.height))}return{width:o,height:s}},n.position=function(t,e,n){const{style:i}=t;if(i.left=e.x+\"px\",i.top=e.y+\"px\",i.width=e.width+\"px\",i.height=e.height+\"px\",null==n)i.margin=\"\";else{const{top:t,right:e,bottom:o,left:s}=n;i.margin=`${t}px ${e}px ${o}px ${s}px`}},n.children=function(t){return Array.from(t.children)};class f{constructor(t){this.el=t,this.classList=t.classList}get values(){const t=[];for(let e=0;e\":\"vertical_wave\",\"*\":\"criss_cross\"};class p{constructor(e,t=\"\"){this.obj=e,this.prefix=t,this.cache={};for(const a of this.attrs)this[a]=e.properties[t+a]}warm_cache(e,t){for(const a of this.attrs){const s=this.obj.properties[this.prefix+a];if(void 0!==s.spec.value)this.cache[a]=s.spec.value;else{if(!(null!=e&&s instanceof c.VectorSpec))throw new Error(\"source is required with a vectorized visual property\");{const l=s.array(e),c=null!=t?t.select(l):l;this.cache[a+\"_array\"]=c}}}}cache_select(e,t){const a=this.obj.properties[this.prefix+e];let s;return void 0!==a.spec.value?this.cache[e]=s=a.spec.value:this.cache[e]=s=this.cache[e+\"_array\"][t],s}get_array(e){return this.cache[e+\"_array\"]}set_vectorize(e,t){this._set_vectorize(e,t)}}a.ContextProperties=p,p.__name__=\"ContextProperties\";class f extends p{set_value(e){const t=this.line_color.value(),a=this.line_alpha.value();e.strokeStyle=n(t,a),e.lineWidth=this.line_width.value(),e.lineJoin=this.line_join.value(),e.lineCap=this.line_cap.value(),e.lineDash=this.line_dash.value(),e.lineDashOffset=this.line_dash_offset.value()}get doit(){return!(null===this.line_color.spec.value||0==this.line_alpha.spec.value||0==this.line_width.spec.value)}_set_vectorize(e,t){const a=this.cache_select(\"line_color\",t),s=this.cache_select(\"line_alpha\",t),l=this.cache_select(\"line_width\",t),c=this.cache_select(\"line_join\",t),i=this.cache_select(\"line_cap\",t),o=this.cache_select(\"line_dash\",t),r=this.cache_select(\"line_dash_offset\",t);e.strokeStyle=n(a,s),e.lineWidth=l,e.lineJoin=c,e.lineCap=i,e.lineDash=o,e.lineDashOffset=r}color_value(){return n(this.line_color.value(),this.line_alpha.value())}}a.Line=f,f.__name__=\"Line\",f.prototype.attrs=Object.keys(l.LineVector);class d extends p{set_value(e){const t=this.fill_color.value(),a=this.fill_alpha.value();e.fillStyle=n(t,a)}get doit(){return!(null===this.fill_color.spec.value||0==this.fill_alpha.spec.value)}_set_vectorize(e,t){const a=this.cache_select(\"fill_color\",t),s=this.cache_select(\"fill_alpha\",t);e.fillStyle=n(a,s)}color_value(){return n(this.fill_color.value(),this.fill_alpha.value())}}a.Fill=d,d.__name__=\"Fill\",d.prototype.attrs=Object.keys(l.FillVector);class k extends p{cache_select(e,t){let s;if(\"pattern\"==e){const e=this.cache_select(\"hatch_color\",t),s=this.cache_select(\"hatch_alpha\",t),l=this.cache_select(\"hatch_scale\",t),c=this.cache_select(\"hatch_pattern\",t),i=this.cache_select(\"hatch_weight\",t),{hatch_extra:o}=this.cache;if(null!=o&&o.hasOwnProperty(c)){const t=o[c];this.cache.pattern=t.get_pattern(e,s,l,i)}else this.cache.pattern=t=>{const o=t instanceof r.SVGRenderingContext2D?\"svg\":\"canvas\",p=new h.CanvasLayer(o,!0);return p.resize(l,l),p.prepare(),function(e,t,s,l,c,i){var o;const r=c,h=r/2,p=h/2;switch(e.strokeStyle=n(s,l),e.lineCap=\"square\",e.fillStyle=s,e.lineWidth=i,null!==(o=a.hatch_aliases[t])&&void 0!==o?o:t){case\"blank\":break;case\"dot\":e.arc(h,h,h/2,0,2*Math.PI,!0),e.fill();break;case\"ring\":e.arc(h,h,h/2,0,2*Math.PI,!0),e.stroke();break;case\"horizontal_line\":_(e,r,h);break;case\"vertical_line\":u(e,r,h);break;case\"cross\":_(e,r,h),u(e,r,h);break;case\"horizontal_dash\":_(e,h,h);break;case\"vertical_dash\":u(e,h,h);break;case\"spiral\":{const t=r/30;e.moveTo(h,h);for(let a=0;a<360;a++){const s=.1*a,l=h+t*s*Math.cos(s),c=h+t*s*Math.sin(s);e.lineTo(l,c)}e.stroke();break}case\"right_diagonal_line\":e.moveTo(.5-p,r),e.lineTo(p+.5,0),e.stroke(),e.moveTo(p+.5,r),e.lineTo(3*p+.5,0),e.stroke(),e.moveTo(3*p+.5,r),e.lineTo(5*p+.5,0),e.stroke(),e.stroke();break;case\"left_diagonal_line\":e.moveTo(p+.5,r),e.lineTo(.5-p,0),e.stroke(),e.moveTo(3*p+.5,r),e.lineTo(p+.5,0),e.stroke(),e.moveTo(5*p+.5,r),e.lineTo(3*p+.5,0),e.stroke(),e.stroke();break;case\"diagonal_cross\":v(e,r);break;case\"right_diagonal_dash\":e.moveTo(p+.5,3*p+.5),e.lineTo(3*p+.5,p+.5),e.stroke();break;case\"left_diagonal_dash\":e.moveTo(p+.5,p+.5),e.lineTo(3*p+.5,3*p+.5),e.stroke();break;case\"horizontal_wave\":e.moveTo(0,p),e.lineTo(h,3*p),e.lineTo(r,p),e.stroke();break;case\"vertical_wave\":e.moveTo(p,0),e.lineTo(3*p,h),e.lineTo(p,r),e.stroke();break;case\"criss_cross\":v(e,r),_(e,r,h),u(e,r,h)}}(p.ctx,c,e,s,l,i),t.createPattern(p.canvas,\"repeat\")}}else s=super.cache_select(e,t);return s}_try_defer(e){const{hatch_pattern:t,hatch_extra:a}=this.cache;if(null!=a&&a.hasOwnProperty(t)){a[t].onload(e)}}get doit(){return!(null===this.hatch_color.spec.value||0==this.hatch_alpha.spec.value||\" \"==this.hatch_pattern.spec.value||\"blank\"==this.hatch_pattern.spec.value||null===this.hatch_pattern.spec.value)}doit2(e,t,a,s){if(!this.doit)return;this.cache_select(\"pattern\",t);null==this.cache.pattern(e)?this._try_defer(s):(this.set_vectorize(e,t),a())}_set_vectorize(e,t){this.cache_select(\"pattern\",t),e.fillStyle=this.cache.pattern(e)}color_value(){return n(this.hatch_color.value(),this.hatch_alpha.value())}}a.Hatch=k,k.__name__=\"Hatch\",k.prototype.attrs=Object.keys(l.HatchVector);class x extends p{color_value(){return n(this.text_color.value(),this.text_alpha.value())}font_value(){const e=this.text_font.value(),t=this.text_font_size.value();return`${this.text_font_style.value()} ${t} ${e}`}v_font_value(e){super.cache_select(\"text_font_style\",e),super.cache_select(\"text_font_size\",e),super.cache_select(\"text_font\",e);const{text_font_style:t,text_font_size:a,text_font:s}=this.cache;return`${t} ${a} ${s}`}cache_select(e,t){let a;return\"font\"==e?this.cache.font=a=this.v_font_value(t):a=super.cache_select(e,t),a}set_value(e){const t=this.text_color.value(),a=this.text_alpha.value();e.fillStyle=n(t,a),e.font=this.font_value(),e.textAlign=this.text_align.value(),e.textBaseline=this.text_baseline.value()}get doit(){return!(null===this.text_color.spec.value||0==this.text_alpha.spec.value)}_set_vectorize(e,t){const a=this.cache_select(\"text_color\",t),s=this.cache_select(\"text_alpha\",t),l=this.cache_select(\"font\",t),c=this.cache_select(\"text_align\",t),i=this.cache_select(\"text_baseline\",t);e.fillStyle=n(a,s),e.font=l,e.textAlign=c,e.textBaseline=i}}a.Text=x,x.__name__=\"Text\",x.prototype.attrs=Object.keys(l.TextVector);class b{constructor(e){for(const t of e._mixins){const[a,s=\"\"]=t.split(\":\");let l;switch(a){case\"line\":l=f;break;case\"fill\":l=d;break;case\"hatch\":l=k;break;case\"text\":l=x;break;default:throw new Error(\"unknown visual: \"+a)}this[s+a]=new l(e,s)}}warm_cache(e,t){for(const a in this)if(this.hasOwnProperty(a)){const s=this[a];s instanceof p&&s.warm_cache(e,t)}}}a.Visuals=b,b.__name__=\"Visuals\"},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(76),n=t(8),r=t(72);function a(t){if(!t)throw new Error(\"cannot create a random attribute name for an undefined object\");const e=\"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\";let i=\"\";do{i=\"\";for(let t=0;t<12;t++)i+=e[Math.floor(Math.random()*e.length)]}while(t[i]);return i}function o(t){const e={left:\"start\",right:\"end\",center:\"middle\",start:\"start\",end:\"end\"};return e[t]||e.start}function l(t){const e={alphabetic:\"alphabetic\",hanging:\"hanging\",top:\"text-before-edge\",bottom:\"text-after-edge\",middle:\"central\"};return e[t]||e.alphabetic}const h=function(t,e){const i=new Map,s=t.split(\",\");e=e||10;for(let t=0;t=0?Math.acos(e):-Math.acos(e)}const b=w(f),v=w(g);this.lineTo(d+f[0]*n,m+f[1]*n),this.arc(d,m,n,b,v)}stroke(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"fill\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"stroke\"),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}fill(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"stroke\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"fill\"),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}rect(t,e,i,s){isFinite(t+e+i+s)&&(\"path\"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+s),this.lineTo(t,e+s),this.lineTo(t,e))}fillRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.fill())}strokeRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.stroke())}__clearCanvas(){r.empty(this.__defs),r.empty(this.__root),this.__root.appendChild(this.__defs),this.__currentElement=this.__root}clearRect(t,e,i,s){if(!isFinite(t+e+i+s))return;if(0===t&&0===e&&i===this.width&&s===this.height)return void this.__clearCanvas();const n=this.__createElement(\"rect\",{x:t,y:e,width:i,height:s,fill:\"#FFFFFF\"},!0);this._apply_transform(n),this.__root.appendChild(n)}createLinearGradient(t,e,i,s){if(!isFinite(t+e+i+s))throw new Error(\"The provided double value is non-finite\");const[n,r]=this._transform.apply(t,e),[o,l]=this._transform.apply(i,s),h=this.__createElement(\"linearGradient\",{id:a(this.__ids),x1:n+\"px\",x2:o+\"px\",y1:r+\"px\",y2:l+\"px\",gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(h),new _(h,this)}createRadialGradient(t,e,i,s,n,r){if(!isFinite(t+e+i+s+n+r))throw new Error(\"The provided double value is non-finite\");const[o,l]=this._transform.apply(t,e),[h,c]=this._transform.apply(s,n),u=this.__createElement(\"radialGradient\",{id:a(this.__ids),cx:h+\"px\",cy:c+\"px\",r:r+\"px\",fx:o+\"px\",fy:l+\"px\",gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(u),new _(u,this)}__parseFont(){const t=/^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-,\\'\\\"\\sa-z0-9]+?)\\s*$/i.exec(this.font),e={style:t[1]||\"normal\",size:t[4]||\"10px\",family:t[6]||\"sans-serif\",weight:t[3]||\"normal\",decoration:t[2]||\"normal\"};return\"underline\"===this.__fontUnderline&&(e.decoration=\"underline\"),null!=this.__fontHref&&(e.href=this.__fontHref),e}__wrapTextLink(t,e){if(t.href){const i=this.__createElement(\"a\");return i.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",t.href),i.appendChild(e),i}return e}__applyText(t,e,i,s){const n=this.__parseFont(),r=this.__createElement(\"text\",{\"font-family\":n.family,\"font-size\":n.size,\"font-style\":n.style,\"font-weight\":n.weight,\"text-decoration\":n.decoration,x:e,y:i,\"text-anchor\":o(this.textAlign),\"dominant-baseline\":l(this.textBaseline)},!0);r.appendChild(this.__document.createTextNode(t)),this._apply_transform(r),this.__currentElement=r,this.__applyStyleToCurrentElement(s),this.__root.appendChild(this.__wrapTextLink(n,r))}fillText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"fill\")}strokeText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"stroke\")}measureText(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)}arc(t,e,i,s,n,r=!1){if(!isFinite(t+e+i+s+n))return;if(s===n)return;(s%=2*Math.PI)===(n%=2*Math.PI)&&(n=(n+2*Math.PI-.001*(r?-1:1))%(2*Math.PI));const a=t+i*Math.cos(n),o=e+i*Math.sin(n),l=t+i*Math.cos(s),h=e+i*Math.sin(s),c=r?0:1;let _=0,u=n-s;u<0&&(u+=2*Math.PI),_=r?u>Math.PI?0:1:u>Math.PI?1:0,this.lineTo(l,h);const p=i,d=i,[m,f]=this._transform.apply(a,o);this.__addPathCommand(m,f,`A ${p} ${d} 0 ${_} ${c} ${m} ${f}`)}clip(){const t=this.__createElement(\"clipPath\"),e=a(this.__ids);this.__applyCurrentDefaultPath(),t.setAttribute(\"id\",e),t.appendChild(this.__currentElement),this.__defs.appendChild(t),this._clip_path=`url(#${e})`}drawImage(t,...e){let i,s,n,r,a,o,l,h;if(2==e.length){if([i,s]=e,!isFinite(i+s))return;a=0,o=0,l=t.width,h=t.height,n=l,r=h}else if(4==e.length){if([i,s,n,r]=e,!isFinite(i+s+n+r))return;a=0,o=0,l=t.width,h=t.height}else{if(8!==e.length)throw new Error(\"Inavlid number of arguments passed to drawImage: \"+arguments.length);if([a,o,l,h,i,s,n,r]=e,!isFinite(a+o+l+h+i+s+n+r))return}const c=this.__root,_=\"translate(\"+i+\", \"+s+\")\",u=this._transform.clone().translate(i,s);if(t instanceof p||t instanceof SVGSVGElement){const e=(t instanceof SVGSVGElement?t:t.get_svg()).cloneNode(!0);let i;u.is_identity?i=c:(i=this.__createElement(\"g\"),this._apply_transform(i,u),c.appendChild(i));for(const t of[...e.childNodes])if(t instanceof SVGDefsElement){for(const e of[...t.childNodes])if(e instanceof Element){const t=e.getAttribute(\"id\");this.__ids[t]=t,this.__defs.appendChild(e)}}else i.appendChild(t)}else if(t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__createElement(\"image\");if(e.setAttribute(\"width\",\"\"+n),e.setAttribute(\"height\",\"\"+r),e.setAttribute(\"preserveAspectRatio\",\"none\"),a||o||l!==t.width||h!==t.height){const e=this.__document.createElement(\"canvas\");e.width=n,e.height=r;e.getContext(\"2d\").drawImage(t,a,o,l,h,0,0,n,r),t=e}e.setAttribute(\"transform\",_);const i=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",i),c.appendChild(e)}else if(t instanceof HTMLCanvasElement){const e=this.__createElement(\"image\");e.setAttribute(\"width\",\"\"+n),e.setAttribute(\"height\",\"\"+r),e.setAttribute(\"preserveAspectRatio\",\"none\");const i=this.__document.createElement(\"canvas\");i.width=n,i.height=r;const s=i.getContext(\"2d\");s.imageSmoothingEnabled=!1,s.drawImage(t,a,o,l,h,0,0,n,r),t=i,e.setAttribute(\"transform\",_),e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",t.toDataURL()),c.appendChild(e)}}createPattern(t,e){const i=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"pattern\"),s=a(this.__ids);if(i.setAttribute(\"id\",s),i.setAttribute(\"width\",\"\"+this._to_number(t.width)),i.setAttribute(\"height\",\"\"+this._to_number(t.height)),i.setAttribute(\"patternUnits\",\"userSpaceOnUse\"),t instanceof HTMLCanvasElement||t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"image\"),s=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",s),i.appendChild(e),this.__defs.appendChild(i)}else if(t instanceof p){for(const e of[...t.__root.childNodes])e instanceof SVGDefsElement||i.appendChild(e);this.__defs.appendChild(i)}else{if(!(t instanceof SVGSVGElement))throw new Error(\"unsupported\");for(const e of[...t.childNodes])e instanceof SVGDefsElement||i.appendChild(e);this.__defs.appendChild(i)}return new u(i,this)}setLineDash(t){t&&t.length>0?this.lineDash=t.join(\",\"):this.lineDash=null}_to_number(t){return n.isNumber(t)?t:t.baseVal.value}}i.SVGRenderingContext2D=p,p.__name__=\"SVGRenderingContext2D\"},\n", + " function _(t,s,r){Object.defineProperty(r,\"__esModule\",{value:!0});const{sin:e,cos:n}=Math;class i{constructor(t=1,s=0,r=0,e=1,n=0,i=0){this.a=t,this.b=s,this.c=r,this.d=e,this.e=n,this.f=i}toString(){const{a:t,b:s,c:r,d:e,e:n,f:i}=this;return`matrix(${t}, ${s}, ${r}, ${e}, ${n}, ${i})`}clone(){const{a:t,b:s,c:r,d:e,e:n,f:a}=this;return new i(t,s,r,e,n,a)}get is_identity(){const{a:t,b:s,c:r,d:e,e:n,f:i}=this;return 1==t&&0==s&&0==r&&1==e&&0==n&&0==i}apply(t,s){const{a:r,b:e,c:n,d:i,e:a,f:h}=this;return[r*t+n*s+a,e*t+i*s+h]}iv_apply(t,s){const{a:r,b:e,c:n,d:i,e:a,f:h}=this,c=t.length;for(let o=0;o{const e=document.createElement(\"canvas\"),t=e.getContext(\"webgl\",{premultipliedAlpha:!0});return null!=t?{canvas:e,gl:t}:void l.logger.trace(\"WebGL is not supported\")})(),v={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class b{constructor(e,t){switch(this.backend=e,this.hidpi=t,this.pixel_ratio=1,this.bbox=new c.BBox,e){case\"webgl\":case\"canvas\":{this._el=this._canvas=r.canvas({style:v});const e=this.canvas.getContext(\"2d\");if(null==e)throw new Error(\"unable to obtain 2D rendering context\");this._ctx=e,t&&(this.pixel_ratio=devicePixelRatio);break}case\"svg\":{const e=new d.SVGRenderingContext2D;this._ctx=e,this._canvas=e.get_svg(),this._el=r.div({style:v},this._canvas);break}}_.fixup_ctx(this._ctx)}get canvas(){return this._canvas}get ctx(){return this._ctx}get el(){return this._el}resize(e,t){this.bbox=new c.BBox({left:0,top:0,width:e,height:t});const i=this._ctx instanceof d.SVGRenderingContext2D?this._ctx:this.canvas;i.width=e*this.pixel_ratio,i.height=t*this.pixel_ratio}prepare(){const{ctx:e,hidpi:t,pixel_ratio:i}=this;e.save(),t&&(e.scale(i,i),e.translate(.5,.5)),this.clear()}clear(){const{x:e,y:t,width:i,height:s}=this.bbox;this.ctx.clearRect(e,t,i,s)}finish(){this.ctx.restore()}to_blob(){const{_canvas:e}=this;if(e instanceof HTMLCanvasElement)return null!=e.msToBlob?Promise.resolve(e.msToBlob()):new Promise((t,i)=>{e.toBlob(e=>null!=e?t(e):i(),\"image/png\")});{const e=this._ctx.get_serialized_svg(!0),t=new Blob([e],{type:\"image/svg+xml\"});return Promise.resolve(t)}}}i.CanvasLayer=b,b.__name__=\"CanvasLayer\";class g extends n.DOMView{constructor(){super(...arguments),this.bbox=new c.BBox}initialize(){super.initialize();const{output_backend:e,hidpi:t}=this.model;\"webgl\"==e&&(this.webgl=p),this.underlays_el=r.div({style:v}),this.primary=new b(e,t),this.overlays=new b(e,t),this.overlays_el=r.div({style:v}),this.events_el=r.div({class:\"bk-canvas-events\",style:v});const i=[this.underlays_el,this.primary.el,this.overlays.el,this.overlays_el,this.events_el];h.extend(this.el.style,v),r.append(this.el,...i),l.logger.debug(\"CanvasView initialized\")}add_underlay(e){this.underlays_el.appendChild(e)}add_overlay(e){this.overlays_el.appendChild(e)}add_event(e){this.events_el.appendChild(e)}get pixel_ratio(){return this.primary.pixel_ratio}resize(e,t){this.bbox=new c.BBox({left:0,top:0,width:e,height:t}),this.primary.resize(e,t),this.overlays.resize(e,t)}prepare_webgl(e){const{webgl:t}=this;if(null!=t){const{width:i,height:s}=this.bbox;t.canvas.width=this.pixel_ratio*i,t.canvas.height=this.pixel_ratio*s;const{gl:a}=t;a.enable(a.SCISSOR_TEST);const[n,l,o,r]=e,{xview:h,yview:c}=this.bbox,_=h.compute(n),d=c.compute(l+r),p=this.pixel_ratio;a.scissor(p*_,p*d,p*o,p*r),a.enable(a.BLEND),a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,a.ONE_MINUS_DST_ALPHA,a.ONE)}}clear_webgl(){const{webgl:e}=this;if(null!=e){const{gl:t,canvas:i}=e;t.viewport(0,0,i.width,i.height),t.clearColor(0,0,0,0),t.clear(t.COLOR_BUFFER_BIT||t.DEPTH_BUFFER_BIT)}}blit_webgl(e){const{webgl:t}=this;if(null!=t&&(l.logger.debug(\"Blitting WebGL canvas\"),e.restore(),e.drawImage(t.canvas,0,0),e.save(),this.model.hidpi)){const t=this.pixel_ratio;e.scale(t,t),e.translate(.5,.5)}}compose(){const{output_backend:e,hidpi:t}=this.model,{width:i,height:s}=this.bbox,a=new b(e,t);return a.resize(i,s),a.ctx.drawImage(this.primary.canvas,0,0),a.ctx.drawImage(this.overlays.canvas,0,0),a}to_blob(){return this.compose().to_blob()}}i.CanvasView=g,g.__name__=\"CanvasView\";class x extends a.HasProps{constructor(e){super(e)}static init_Canvas(){this.prototype.default_view=g,this.internal({hidpi:[o.Boolean,!0],output_backend:[o.OutputBackend,\"canvas\"]})}}i.Canvas=x,x.__name__=\"Canvas\",x.init_Canvas()},\n", + " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(71),r=e(72);class n extends i.View{initialize(){super.initialize(),this.el=this._createElement()}remove(){r.remove(this.el),super.remove()}css_classes(){return[]}render(){}renderTo(e){e.appendChild(this.el),this.render()}_createElement(){return r.createElement(this.tagName,{class:this.css_classes()})}}t.DOMView=n,n.__name__=\"DOMView\",n.prototype.tagName=\"div\"},\n", + " function _(t,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const h=t(24),{min:r,max:s}=Math;e.empty=function(){return{x0:1/0,y0:1/0,x1:-1/0,y1:-1/0}},e.positive_x=function(){return{x0:Number.MIN_VALUE,y0:-1/0,x1:1/0,y1:1/0}},e.positive_y=function(){return{x0:-1/0,y0:Number.MIN_VALUE,x1:1/0,y1:1/0}},e.union=function(t,i){return{x0:r(t.x0,i.x0),x1:s(t.x1,i.x1),y0:r(t.y0,i.y0),y1:s(t.y1,i.y1)}};class n{constructor(t){if(null==t)this.x0=0,this.y0=0,this.x1=0,this.y1=0;else if(\"x0\"in t){const{x0:i,y0:e,x1:h,y1:r}=t;if(!(i<=h&&e<=r))throw new Error(`invalid bbox {x0: ${i}, y0: ${e}, x1: ${h}, y1: ${r}}`);this.x0=i,this.y0=e,this.x1=h,this.y1=r}else if(\"x\"in t){const{x:i,y:e,width:h,height:r}=t;if(!(h>=0&&r>=0))throw new Error(`invalid bbox {x: ${i}, y: ${e}, width: ${h}, height: ${r}}`);this.x0=i,this.y0=e,this.x1=i+h,this.y1=e+r}else{let i,e,h,r;if(\"width\"in t)if(\"left\"in t)i=t.left,e=i+t.width;else if(\"right\"in t)e=t.right,i=e-t.width;else{const h=t.width/2;i=t.hcenter-h,e=t.hcenter+h}else i=t.left,e=t.right;if(\"height\"in t)if(\"top\"in t)h=t.top,r=h+t.height;else if(\"bottom\"in t)r=t.bottom,h=r-t.height;else{const i=t.height/2;h=t.vcenter-i,r=t.vcenter+i}else h=t.top,r=t.bottom;if(!(i<=e&&h<=r))throw new Error(`invalid bbox {left: ${i}, top: ${h}, right: ${e}, bottom: ${r}}`);this.x0=i,this.y0=h,this.x1=e,this.y1=r}}toString(){return`BBox({left: ${this.left}, top: ${this.top}, width: ${this.width}, height: ${this.height}})`}get left(){return this.x0}get top(){return this.y0}get right(){return this.x1}get bottom(){return this.y1}get p0(){return[this.x0,this.y0]}get p1(){return[this.x1,this.y1]}get x(){return this.x0}get y(){return this.y0}get width(){return this.x1-this.x0}get height(){return this.y1-this.y0}get rect(){return{x0:this.x0,y0:this.y0,x1:this.x1,y1:this.y1}}get box(){return{x:this.x,y:this.y,width:this.width,height:this.height}}get h_range(){return{start:this.x0,end:this.x1}}get v_range(){return{start:this.y0,end:this.y1}}get ranges(){return[this.h_range,this.v_range]}get aspect(){return this.width/this.height}get hcenter(){return(this.left+this.right)/2}get vcenter(){return(this.top+this.bottom)/2}relativize(){const{width:t,height:i}=this;return new n({x:0,y:0,width:t,height:i})}contains(t,i){return t>=this.x0&&t<=this.x1&&i>=this.y0&&i<=this.y1}clip(t,i){return tthis.x1&&(t=this.x1),ithis.y1&&(i=this.y1),[t,i]}union(t){return new n({x0:r(this.x0,t.x0),y0:r(this.y0,t.y0),x1:s(this.x1,t.x1),y1:s(this.y1,t.y1)})}equals(t){return this.x0==t.x0&&this.y0==t.y0&&this.x1==t.x1&&this.y1==t.y1}get xview(){return{compute:t=>this.left+t,v_compute:t=>{const i=new h.NumberArray(t.length),e=this.left;for(let h=0;hthis.bottom-t,v_compute:t=>{const i=new h.NumberArray(t.length),e=this.bottom;for(let h=0;he.getLineDash(),set:t=>e.setLineDash(t)})}(e),function(e){e.setImageSmoothingEnabled=t=>{e.imageSmoothingEnabled=t,e.mozImageSmoothingEnabled=t,e.oImageSmoothingEnabled=t,e.webkitImageSmoothingEnabled=t,e.msImageSmoothingEnabled=t},e.getImageSmoothingEnabled=()=>{const t=e.imageSmoothingEnabled;return null==t||t}}(e),function(e){e.measureText&&null==e.html5MeasureText&&(e.html5MeasureText=e.measureText,e.measureText=t=>{const n=e.html5MeasureText(t);return n.ascent=1.6*e.html5MeasureText(\"m\").width,n})}(e),function(e){e.ellipse||(e.ellipse=function(t,n,o,a,i,l,m,r=!1){const u=.551784;e.translate(t,n),e.rotate(i);let s=o,g=a;r&&(s=-o,g=-a),e.moveTo(-s,0),e.bezierCurveTo(-s,g*u,-s*u,g,0,g),e.bezierCurveTo(s*u,g,s,g*u,s,0),e.bezierCurveTo(s,-g*u,s*u,-g,0,-g),e.bezierCurveTo(-s*u,-g,-s,-g*u,-s,0),e.rotate(-i),e.translate(-t,-n)})}(e)}},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(1),c=e(14),i=n.__importStar(e(18)),a=e(8),r=e(13),o=e(19);class l extends c.HasProps{constructor(e){super(e)}static init_Model(){this.define({tags:[i.Array,[]],name:[i.String],js_property_callbacks:[i.Any,{}],js_event_callbacks:[i.Any,{}],subscribed_events:[i.Array,[]]})}initialize(){super.initialize(),this._js_callbacks=new Map}connect_signals(){super.connect_signals(),this._update_property_callbacks(),this.connect(this.properties.js_property_callbacks.change,()=>this._update_property_callbacks()),this.connect(this.properties.js_event_callbacks.change,()=>this._update_event_callbacks()),this.connect(this.properties.subscribed_events.change,()=>this._update_event_callbacks())}_process_event(e){for(const t of this.js_event_callbacks[e.event_name]||[])t.execute(e);null!=this.document&&this.subscribed_events.some(t=>t==e.event_name)&&this.document.event_manager.send_event(e)}trigger_event(e){null!=this.document&&(e.origin=this,this.document.event_manager.trigger(e))}_update_event_callbacks(){null!=this.document?this.document.event_manager.subscribed_models.add(this):o.logger.warn(\"WARNING: Document not defined for updating event callbacks\")}_update_property_callbacks(){const e=e=>{const[t,s=null]=e.split(\":\");return null!=s?this.properties[s][t]:this[t]};for(const[t,s]of this._js_callbacks){const n=e(t);for(const e of s)this.disconnect(n,e)}this._js_callbacks.clear();for(const[t,s]of r.entries(this.js_property_callbacks)){const n=s.map(e=>()=>e.execute(this));this._js_callbacks.set(t,n);const c=e(t);for(const e of n)this.connect(c,e)}}_doc_attached(){r.isEmpty(this.js_event_callbacks)&&0==this.subscribed_events.length||this._update_event_callbacks()}_doc_detached(){this.document.event_manager.subscribed_models.delete(this)}select(e){if(a.isString(e))return[...this.references()].filter(t=>t instanceof l&&t.name===e);if(e.prototype instanceof c.HasProps)return[...this.references()].filter(t=>t instanceof e);throw new Error(\"invalid selector\")}select_one(e){const t=this.select(e);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(\"found more than one object matching given selector\")}}}s.Model=l,l.__name__=\"Model\",l.init_Model()},\n", + " function _(e,s,_){Object.defineProperty(_,\"__esModule\",{value:!0});class t{constructor(e,s){this.x_scale=e,this.y_scale=s,this.x_range=this.x_scale.source_range,this.y_range=this.y_scale.source_range,this.ranges=[this.x_range,this.y_range],this.scales=[this.x_scale,this.y_scale]}map_to_screen(e,s){return[this.x_scale.v_compute(e),this.y_scale.v_compute(s)]}map_from_screen(e,s){return[this.x_scale.v_invert(e),this.y_scale.v_invert(s)]}}_.CoordinateTransform=t,t.__name__=\"CoordinateTransform\"},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),a=t(36),o=t(84),r=t(85),n=t(28),_=i.__importStar(t(18)),h=t(10);class c extends a.AnnotationView{initialize(){super.initialize(),null==this.model.source&&(this.model.source=new r.ColumnDataSource),this.set_data(this.model.source)}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.set_data(this.model.source)),this.connect(this.model.source.streaming,()=>this.set_data(this.model.source)),this.connect(this.model.source.patching,()=>this.set_data(this.model.source)),this.connect(this.model.source.change,()=>this.set_data(this.model.source))}set_data(t){super.set_data(t),this.visuals.warm_cache(t),this.plot_view.request_render()}_map_data(){const{frame:t}=this.plot_view;let e,s,i,a;return\"data\"==this.model.start_units?(e=this.coordinates.x_scale.v_compute(this._x_start),s=this.coordinates.y_scale.v_compute(this._y_start)):(e=t.xview.v_compute(this._x_start),s=t.yview.v_compute(this._y_start)),\"data\"==this.model.end_units?(i=this.coordinates.x_scale.v_compute(this._x_end),a=this.coordinates.y_scale.v_compute(this._y_end)):(i=t.xview.v_compute(this._x_end),a=t.yview.v_compute(this._y_end)),[[e,s],[i,a]]}_render(){const{ctx:t}=this.layer;t.save();const[e,s]=this._map_data();null!=this.model.end&&this._arrow_head(t,\"render\",this.model.end,e,s),null!=this.model.start&&this._arrow_head(t,\"render\",this.model.start,s,e),t.beginPath();const{x:i,y:a,width:o,height:r}=this.plot_view.frame.bbox;t.rect(i,a,o,r),null!=this.model.end&&this._arrow_head(t,\"clip\",this.model.end,e,s),null!=this.model.start&&this._arrow_head(t,\"clip\",this.model.start,s,e),t.closePath(),t.clip(),this._arrow_body(t,e,s),t.restore()}_arrow_head(t,e,s,i,a){for(let o=0,r=this._x_start.length;onew o.OpenHead({})],source:[_.Instance]})}}s.Arrow=d,d.__name__=\"Arrow\",d.init_Arrow()},\n", + " function _(i,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=i(1),o=i(36),l=i(74),n=i(28),h=t.__importStar(i(18));class a extends o.Annotation{constructor(i){super(i)}static init_ArrowHead(){this.define({size:[h.Number,25]})}initialize(){super.initialize(),this.visuals=new l.Visuals(this)}}s.ArrowHead=a,a.__name__=\"ArrowHead\",a.init_ArrowHead();class r extends a{constructor(i){super(i)}static init_OpenHead(){this.mixins(n.LineVector)}clip(i,e){this.visuals.line.set_vectorize(i,e),i.moveTo(.5*this.size,this.size),i.lineTo(.5*this.size,-2),i.lineTo(-.5*this.size,-2),i.lineTo(-.5*this.size,this.size),i.lineTo(0,0),i.lineTo(.5*this.size,this.size)}render(i,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),i.beginPath(),i.moveTo(.5*this.size,this.size),i.lineTo(0,0),i.lineTo(-.5*this.size,this.size),i.stroke())}}s.OpenHead=r,r.__name__=\"OpenHead\",r.init_OpenHead();class z extends a{constructor(i){super(i)}static init_NormalHead(){this.mixins([n.LineVector,n.FillVector]),this.override({fill_color:\"black\"})}clip(i,e){this.visuals.line.set_vectorize(i,e),i.moveTo(.5*this.size,this.size),i.lineTo(.5*this.size,-2),i.lineTo(-.5*this.size,-2),i.lineTo(-.5*this.size,this.size),i.lineTo(.5*this.size,this.size)}render(i,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(i,e),this._normal(i,e),i.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),this._normal(i,e),i.stroke())}_normal(i,e){i.beginPath(),i.moveTo(.5*this.size,this.size),i.lineTo(0,0),i.lineTo(-.5*this.size,this.size),i.closePath()}}s.NormalHead=z,z.__name__=\"NormalHead\",z.init_NormalHead();class _ extends a{constructor(i){super(i)}static init_VeeHead(){this.mixins([n.LineVector,n.FillVector]),this.override({fill_color:\"black\"})}clip(i,e){this.visuals.line.set_vectorize(i,e),i.moveTo(.5*this.size,this.size),i.lineTo(.5*this.size,-2),i.lineTo(-.5*this.size,-2),i.lineTo(-.5*this.size,this.size),i.lineTo(0,.5*this.size),i.lineTo(.5*this.size,this.size)}render(i,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(i,e),this._vee(i,e),i.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),this._vee(i,e),i.stroke())}_vee(i,e){i.beginPath(),i.moveTo(.5*this.size,this.size),i.lineTo(0,0),i.lineTo(-.5*this.size,this.size),i.lineTo(0,.5*this.size),i.closePath()}}s.VeeHead=_,_.__name__=\"VeeHead\",_.init_VeeHead();class c extends a{constructor(i){super(i)}static init_TeeHead(){this.mixins(n.LineVector)}render(i,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),i.beginPath(),i.moveTo(.5*this.size,0),i.lineTo(-.5*this.size,0),i.stroke())}clip(i,e){}}s.TeeHead=c,c.__name__=\"TeeHead\",c.init_TeeHead()},\n", + " function _(t,n,e){Object.defineProperty(e,\"__esModule\",{value:!0});const s=t(1),o=t(86),r=s.__importStar(t(18)),i=t(8),l=t(13),a=s.__importStar(t(119)),c=t(120),u=t(121);function h(t,n,e){if(i.isArray(t)){const s=t.concat(n);return null!=e&&s.length>e?s.slice(-e):s}if(i.isTypedArray(t)){const s=t.length+n.length;if(null!=e&&s>e){const o=s-e,r=t.length;let i;t.lengthnew _.UnionRenderers]}),this.internal({selection_manager:[c.Instance,t=>new l.SelectionManager({source:t})],inspected:[c.Instance,()=>new g.Selection]})}initialize(){super.initialize(),this._select=new i.Signal0(this,\"select\"),this.inspect=new i.Signal(this,\"inspect\"),this.streaming=new i.Signal0(this,\"streaming\"),this.patching=new i.Signal(this,\"patching\")}get_column(t){const e=this.data[t];return null!=e?e:null}columns(){return h.keys(this.data)}get_length(t=!0){const e=u.uniq(h.values(this.data).map(t=>t.length));switch(e.length){case 0:return null;case 1:return e[0];default:{const n=\"data source has columns of inconsistent lengths\";if(t)return r.logger.warn(n),e.sort()[0];throw new Error(n)}}}get length(){var t;return null!==(t=this.get_length())&&void 0!==t?t:0}clear(){const t={};for(const e of this.columns())t[e]=new this.data[e].constructor(0);this.data=t}}n.ColumnarDataSource=d,d.__name__=\"ColumnarDataSource\",d.init_ColumnarDataSource()},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const c=e(1),n=e(81),o=e(88),i=c.__importStar(e(18));class r extends n.Model{constructor(e){super(e)}static init_DataSource(){this.define({selected:[i.Instance,()=>new o.Selection]})}}a.DataSource=r,r.__name__=\"DataSource\",r.init_DataSource()},\n", + " function _(i,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=i(1),n=i(81),l=t.__importStar(i(18)),c=i(9),h=i(13);class d extends n.Model{constructor(i){super(i)}get_view(){return this.view}static init_Selection(){this.define({indices:[l.Array,[]],line_indices:[l.Array,[]],multiline_indices:[l.Any,{}]}),this.internal({selected_glyphs:[l.Array,[]],view:[l.Any],image_indices:[l.Array,[]]})}initialize(){super.initialize()}get selected_glyph(){return this.selected_glyphs.length>0?this.selected_glyphs[0]:null}add_to_selected_glyphs(i){this.selected_glyphs.push(i)}update(i,e=!0,s=\"replace\"){switch(s){case\"replace\":this.indices=i.indices,this.line_indices=i.line_indices,this.selected_glyphs=i.selected_glyphs,this.view=i.view,this.multiline_indices=i.multiline_indices,this.image_indices=i.image_indices;break;case\"append\":this.update_through_union(i);break;case\"intersect\":this.update_through_intersection(i);break;case\"subtract\":this.update_through_subtraction(i)}}clear(){this.indices=[],this.line_indices=[],this.multiline_indices={},this.view=null,this.selected_glyphs=[]}is_empty(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length}update_through_union(i){this.indices=c.union(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}update_through_intersection(i){this.indices=c.intersection(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}update_through_subtraction(i){this.indices=c.difference(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}}s.Selection=d,d.__name__=\"Selection\",d.init_Selection()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),n=e(14),o=e(88),c=e(90),r=e(116),l=i.__importStar(e(18));class p extends n.HasProps{constructor(e){super(e),this.inspectors=new Map}static init_SelectionManager(){this.internal({source:[l.Any]})}select(e,t,s,i=\"replace\"){const n=[],o=[];for(const t of e)t instanceof c.GlyphRendererView?n.push(t):t instanceof r.GraphRendererView&&o.push(t);let l=!1;for(const e of o){const n=e.model.selection_policy.hit_test(t,e);l=l||e.model.selection_policy.do_selection(n,e.model,s,i)}if(n.length>0){const e=this.source.selection_policy.hit_test(t,n);l=l||this.source.selection_policy.do_selection(e,this.source,s,i)}return l}inspect(e,t){let s=!1;if(e instanceof c.GlyphRendererView){const i=e.hit_test(t);if(null!=i){s=!i.is_empty();const n=this.get_or_create_inspector(e.model);n.update(i,!0,\"replace\"),this.source.setv({inspected:n},{silent:!0}),this.source.inspect.emit([e,{geometry:t}])}}else if(e instanceof r.GraphRendererView){const i=e.model.inspection_policy.hit_test(t,e);s=s||e.model.inspection_policy.do_inspection(i,t,e,!1,\"replace\")}return s}clear(e){this.source.selected.clear(),null!=e&&this.get_or_create_inspector(e.model).clear()}get_or_create_inspector(e){let t=this.inspectors.get(e);return null==t&&(t=new o.Selection,this.inspectors.set(e,t)),t}}s.SelectionManager=p,p.__name__=\"SelectionManager\",p.init_SelectionManager()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),l=e(91),n=e(92),h=e(110),o=e(111),a=e(113),c=e(114),_=e(24),d=s.__importStar(e(18)),r=e(12),p=e(9),g=e(13),u=e(115),y=e(98),m={fill:{},line:{}},v={fill:{fill_alpha:.3,fill_color:\"grey\"},line:{line_alpha:.3,line_color:\"grey\"}},f={fill:{fill_alpha:.2},line:{}};class w extends l.DataRendererView{async lazy_initialize(){await super.lazy_initialize();const e=this.model.glyph,t=p.includes(e._mixins,\"fill\"),i=p.includes(e._mixins,\"line\"),s=g.clone(e.attributes);function l(l){const n=g.clone(s);return t&&g.extend(n,l.fill),i&&g.extend(n,l.line),new e.constructor(n)}delete s.id,this.glyph=await this.build_glyph_view(e);let{selection_glyph:n}=this.model;null==n?n=l({fill:{},line:{}}):\"auto\"===n&&(n=l(m)),this.selection_glyph=await this.build_glyph_view(n);let{nonselection_glyph:h}=this.model;null==h?h=l({fill:{},line:{}}):\"auto\"===h&&(h=l(f)),this.nonselection_glyph=await this.build_glyph_view(h);const{hover_glyph:o}=this.model;null!=o&&(this.hover_glyph=await this.build_glyph_view(o));const{muted_glyph:a}=this.model;null!=a&&(this.muted_glyph=await this.build_glyph_view(a));const c=l(v);this.decimated_glyph=await this.build_glyph_view(c),this.set_data(!1)}async build_glyph_view(e){return u.build_view(e,{parent:this})}remove(){var e,t;this.glyph.remove(),this.selection_glyph.remove(),this.nonselection_glyph.remove(),null===(e=this.hover_glyph)||void 0===e||e.remove(),null===(t=this.muted_glyph)||void 0===t||t.remove(),this.decimated_glyph.remove(),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.request_render()),this.connect(this.model.glyph.change,()=>this.set_data()),this.connect(this.model.data_source.change,()=>this.set_data()),this.connect(this.model.data_source.streaming,()=>this.set_data()),this.connect(this.model.data_source.patching,e=>this.set_data(!0,e)),this.connect(this.model.data_source.selected.change,()=>this.request_render()),this.connect(this.model.data_source._select,()=>this.request_render()),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,()=>this.request_render()),this.connect(this.model.properties.view.change,()=>this.set_data()),this.connect(this.model.view.properties.indices.change,()=>this.set_data()),this.connect(this.model.view.properties.masked.change,()=>this.set_visuals()),this.connect(this.model.properties.visible.change,()=>this.plot_view.update_dataranges());const{x_ranges:e,y_ranges:t}=this.plot_view.frame;for(const[,t]of e)t instanceof y.FactorRange&&this.connect(t.change,()=>this.set_data());for(const[,e]of t)e instanceof y.FactorRange&&this.connect(e.change,()=>this.set_data());this.connect(this.model.glyph.transformchange,()=>this.set_data())}_update_masked_indices(){const e=this.glyph.mask_data();return this.model.view.masked=e,e}set_data(e=!0,t=null){const i=this.model.data_source;this.all_indices=this.model.view.indices;const{all_indices:s}=this;this.glyph.set_data(i,s,t),this.set_visuals(),this._update_masked_indices();const{lod_factor:l}=this.plot_model,n=this.all_indices.count;this.decimated=new _.Indices(n);for(let e=0;e!_||_.is_empty()?[]:_.selected_glyph?this.model.view.convert_indices_from_subset(i):_.indices.length>0?_.indices:Object.keys(_.multiline_indices).map(e=>parseInt(e)))()),g=r.filter(i,e=>d.has(t[e])),{lod_threshold:u}=this.plot_model;let y,m,v;if(null!=this.model.document&&this.model.document.interactive_duration()>0&&!e&&null!=u&&t.length>u?(i=[...this.decimated],y=this.decimated_glyph,m=this.decimated_glyph,v=this.selection_glyph):(y=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,m=this.nonselection_glyph,v=this.selection_glyph),null!=this.hover_glyph&&g.length&&(i=p.difference(i,g)),c.length){const e={};for(const t of c)e[t]=!0;const l=new Array,h=new Array;if(this.glyph instanceof n.LineView)for(const i of t)null!=e[i]?l.push(i):h.push(i);else for(const s of i)null!=e[t[s]]?l.push(s):h.push(s);m.render(s,h,this.glyph),v.render(s,l,this.glyph),null!=this.hover_glyph&&(this.glyph instanceof n.LineView?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(g),this.glyph):this.hover_glyph.render(s,g,this.glyph))}else if(this.glyph instanceof n.LineView)this.hover_glyph&&g.length?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(g),this.glyph):y.render(s,t,this.glyph);else if(this.glyph instanceof h.PatchView||this.glyph instanceof o.HAreaView||this.glyph instanceof a.VAreaView)if(0==_.selected_glyphs.length||null==this.hover_glyph)y.render(s,t,this.glyph);else for(const e of _.selected_glyphs)e==this.glyph.model&&this.hover_glyph.render(s,t,this.glyph);else y.render(s,i,this.glyph),this.hover_glyph&&g.length&&this.hover_glyph.render(s,g,this.glyph);s.restore()}draw_legend(e,t,i,s,l,n,h,o){null==o&&(o=this.model.get_reference_point(n,h)),this.glyph.draw_legend_for_index(e,{x0:t,x1:i,y0:s,y1:l},o)}hit_test(e){if(!this.model.visible)return null;const t=this.glyph.hit_test(e);return null==t?null:this.model.view.convert_selection_from_subset(t)}}i.GlyphRendererView=w,w.__name__=\"GlyphRendererView\";class b extends l.DataRenderer{constructor(e){super(e)}static init_GlyphRenderer(){this.prototype.default_view=w,this.define({data_source:[d.Instance],view:[d.Instance,()=>new c.CDSView],glyph:[d.Instance],hover_glyph:[d.Instance],nonselection_glyph:[d.Any,\"auto\"],selection_glyph:[d.Any,\"auto\"],muted_glyph:[d.Instance],muted:[d.Boolean,!1]})}initialize(){super.initialize(),null==this.view.source&&(this.view.source=this.data_source,this.view.compute_indices())}get_reference_point(e,t){let i=0;if(null!=e){const s=this.data_source.get_column(e);if(null!=s){const e=r.indexOf(s,t);-1!=e&&(i=e)}}return i}get_selection_manager(){return this.data_source.selection_manager}}i.GlyphRenderer=b,b.__name__=\"GlyphRenderer\",b.init_GlyphRenderer()},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const a=e(70);class n extends a.RendererView{get xscale(){return this.coordinates.x_scale}get yscale(){return this.coordinates.y_scale}}t.DataRendererView=n,n.__name__=\"DataRendererView\";class s extends a.Renderer{constructor(e){super(e)}static init_DataRenderer(){this.override({level:\"glyph\"})}}t.DataRenderer=s,s.__name__=\"DataRenderer\",s.init_DataRenderer()},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1),n=e(93),l=e(100),_=e(102),r=s.__importStar(e(28)),o=s.__importStar(e(101)),h=e(88);class a extends n.XYGlyphView{initialize(){super.initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;null!=e&&(this.glglyph=new _.LineGL(e.gl,this))}_render(e,i,{sx:t,sy:s}){let n=!1,l=null;this.visuals.line.set_value(e);for(const _ of i){if(n){if(!isFinite(t[_]+s[_])){e.stroke(),e.beginPath(),n=!1,l=_;continue}null!=l&&_-l>1&&(e.stroke(),n=!1)}n?e.lineTo(t[_],s[_]):(e.beginPath(),e.moveTo(t[_],s[_]),n=!0),l=_}n&&e.stroke()}_hit_point(e){const i=new h.Selection,t={x:e.sx,y:e.sy};let s=9999;const n=Math.max(2,this.visuals.line.line_width.value()/2);for(let e=0,l=this.sx.length-1;et/2);a=new Float64Array(_);for(let i=0;i<_;i++)a[i]=e[i]-t[i];r=new Float64Array(_);for(let i=0;i<_;i++)r[i]=e[i]+t[i]}else{a=e,r=new Float64Array(_);for(let t=0;t<_;t++)r[t]=a[t]+i[t]}const l=t.v_compute(a),o=t.v_compute(r);return n?d.map(l,(t,e)=>Math.ceil(Math.abs(o[e]-l[e]))):d.map(l,(t,e)=>Math.abs(o[e]-l[e]))}draw_legend_for_index(t,e,i){}hit_test(t){switch(t.type){case\"point\":if(null!=this._hit_point)return this._hit_point(t);break;case\"span\":if(null!=this._hit_span)return this._hit_span(t);break;case\"rect\":if(null!=this._hit_rect)return this._hit_rect(t);break;case\"poly\":if(null!=this._hit_poly)return this._hit_poly(t)}return this._nohit_warned.has(t.type)||(o.logger.debug(`'${t.type}' selection not available for ${this.model.type}`),this._nohit_warned.add(t.type)),null}_hit_rect_against_index(t){const{sx0:e,sx1:i,sy0:s,sy1:n}=t,[a,r]=this.renderer.coordinates.x_scale.r_invert(e,i),[_,l]=this.renderer.coordinates.y_scale.r_invert(s,n),o=[...this.index.indices({x0:a,x1:r,y0:_,y1:l})];return new p.Selection({indices:o})}_project_data(){}set_data(t,e,i){var s,a;const{x_range:r,y_range:_}=this.renderer.coordinates;this._data_size=null!==(s=t.get_length())&&void 0!==s?s:1;for(const i of this.model){if(!(i instanceof n.VectorSpec))continue;if(i.optional&&null==i.spec.value&&!i.dirty)continue;const s=i.attr,a=i.array(t);let l=e.select(a);if(i instanceof n.BaseCoordinateSpec){const t=\"x\"==i.dimension?r:_;if(t instanceof u.FactorRange)if(i instanceof n.CoordinateSpec)l=t.v_synthetic(l);else if(i instanceof n.CoordinateSeqSpec)for(let e=0;e>1;n[s]>e?i=s:t=s+1}return n[t]}class x extends i.default{search_indices(e,n,t,i){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let o=this._boxes.length-4;const x=[],h=new s.Indices(this.numItems);for(;void 0!==o;){const s=Math.min(o+4*this.nodeSize,d(o,this._levelBounds));for(let d=o;d>2];tthis._boxes[d+2]||n>this._boxes[d+3]||(o<4*this.numItems?h.set(s):x.push(s)))}o=x.pop()}return h}}x.__name__=\"_FlatBush\";class h{constructor(e){this.index=null,e>0&&(this.index=new x(e))}add(e,n,t,i){var s;null===(s=this.index)||void 0===s||s.add(e,n,t,i)}add_empty(){var e;null===(e=this.index)||void 0===e||e.add(1/0,1/0,-1/0,-1/0)}finish(){var e;null===(e=this.index)||void 0===e||e.finish()}_normalize(e){let{x0:n,y0:t,x1:i,y1:s}=e;return n>i&&([n,i]=[i,n]),t>s&&([t,s]=[s,t]),{x0:n,y0:t,x1:i,y1:s}}get bbox(){if(null==this.index)return o.empty();{const{minX:e,minY:n,maxX:t,maxY:i}=this.index;return{x0:e,y0:n,x1:t,y1:i}}}indices(e){if(null==this.index)return new s.Indices(0);{const{x0:n,y0:t,x1:i,y1:s}=this._normalize(e);return this.index.search_indices(n,t,i,s)}}bounds(e){const n=o.empty();for(const t of this.indices(e)){const e=this.index._boxes,i=e[4*t+0],s=e[4*t+1],o=e[4*t+2],d=e[4*t+3];on.x1&&(n.x1=i),dn.y1&&(n.y1=s)}return n}}t.SpatialIndex=h,h.__name__=\"SpatialIndex\"},\n", + " function _(t,s,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(1).__importDefault(t(97)),h=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class n{static from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[s,i]=new Uint8Array(t,0,2);if(251!==s)throw new Error(\"Data does not appear to be in a Flatbush format.\");if(i>>4!=3)throw new Error(`Got v${i>>4} data when expected v3.`);const[e]=new Uint16Array(t,2,1),[o]=new Uint32Array(t,4,1);return new n(o,e,h[15&i],t)}constructor(t,s=16,i=Float64Array,n){if(void 0===t)throw new Error(\"Missing required argument: numItems.\");if(isNaN(t)||t<=0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+s,2),65535);let o=t,r=o;this._levelBounds=[4*o];do{o=Math.ceil(o/this.nodeSize),r+=o,this._levelBounds.push(4*r)}while(1!==o);this.ArrayType=i||Float64Array,this.IndexArrayType=r<16384?Uint16Array:Uint32Array;const a=h.indexOf(this.ArrayType),_=4*r*this.ArrayType.BYTES_PER_ELEMENT;if(a<0)throw new Error(`Unexpected typed array class: ${i}.`);n&&n instanceof ArrayBuffer?(this.data=n,this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=4*r,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+_+r*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+a]),new Uint16Array(this.data,2,1)[0]=s,new Uint32Array(this.data,4,1)[0]=t),this._queue=new e.default}add(t,s,i,e){const h=this._pos>>2;return this._indices[h]=h,this._boxes[this._pos++]=t,this._boxes[this._pos++]=s,this._boxes[this._pos++]=i,this._boxes[this._pos++]=e,tthis.maxX&&(this.maxX=i),e>this.maxY&&(this.maxY=e),h}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);if(this.numItems<=this.nodeSize)return this._boxes[this._pos++]=this.minX,this._boxes[this._pos++]=this.minY,this._boxes[this._pos++]=this.maxX,void(this._boxes[this._pos++]=this.maxY);const t=this.maxX-this.minX,s=this.maxY-this.minY,i=new Uint32Array(this.numItems);for(let e=0;e=Math.floor(n/o))return;const r=s[h+n>>1];let _=h-1,d=n+1;for(;;){do{_++}while(s[_]r);if(_>=d)break;a(s,i,e,_,d)}t(s,i,e,h,d,o),t(s,i,e,d+1,n,o)}(i,this._boxes,this._indices,0,this.numItems-1,this.nodeSize);for(let t=0,s=0;t>2]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=h,this._boxes[this._pos++]=n,this._boxes[this._pos++]=o}}}search(t,s,i,e,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=[],a=[];for(;void 0!==n;){const _=Math.min(n+4*this.nodeSize,r(n,this._levelBounds));for(let r=n;r<_;r+=4){const _=0|this._indices[r>>2];ithis._boxes[r+2]||s>this._boxes[r+3]||(n<4*this.numItems?(void 0===h||h(_))&&a.push(_):o.push(_)))}n=o.pop()}return a}neighbors(t,s,i=1/0,e=1/0,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const a=this._queue,_=[],d=e*e;for(;void 0!==n;){const e=Math.min(n+4*this.nodeSize,r(n,this._levelBounds));for(let i=n;i>2],r=o(t,this._boxes[i],this._boxes[i+2]),_=o(s,this._boxes[i+1],this._boxes[i+3]),d=r*r+_*_;n<4*this.numItems?(void 0===h||h(e))&&a.push(-e-1,d):a.push(e,d)}for(;a.length&&a.peek()<0;){if(a.peekValue()>d)return a.clear(),_;if(_.push(-a.pop()-1),_.length===i)return a.clear(),_}n=a.pop()}return a.clear(),_}}function o(t,s,i){return t>1;s[h]>t?e=h:i=h+1}return s[i]}function a(t,s,i,e,h){const n=t[e];t[e]=t[h],t[h]=n;const o=4*e,r=4*h,a=s[o],_=s[o+1],d=s[o+2],x=s[o+3];s[o]=s[r],s[o+1]=s[r+1],s[o+2]=s[r+2],s[o+3]=s[r+3],s[r]=a,s[r+1]=_,s[r+2]=d,s[r+3]=x;const l=i[e];i[e]=i[h],i[h]=l}function _(t,s){let i=t^s,e=65535^i,h=65535^(t|s),n=t&(65535^s),o=i|e>>1,r=i>>1^i,a=h>>1^e&n>>1^h,_=i&h>>1^n>>1^n;i=o,e=r,h=a,n=_,o=i&i>>2^e&e>>2,r=i&e>>2^e&(i^e)>>2,a^=i&h>>2^e&n>>2,_^=e&h>>2^(i^e)&n>>2,i=o,e=r,h=a,n=_,o=i&i>>4^e&e>>4,r=i&e>>4^e&(i^e)>>4,a^=i&h>>4^e&n>>4,_^=e&h>>4^(i^e)&n>>4,i=o,e=r,h=a,n=_,a^=i&h>>8^e&n>>8,_^=e&h>>8^(i^e)&n>>8,i=a^a>>1,e=_^_>>1;let d=t^s,x=e|65535^(d|i);return d=16711935&(d|d<<8),d=252645135&(d|d<<4),d=858993459&(d|d<<2),d=1431655765&(d|d<<1),x=16711935&(x|x<<8),x=252645135&(x|x<<4),x=858993459&(x|x<<2),x=1431655765&(x|x<<1),(x<<1|d)>>>0}i.default=n},\n", + " function _(s,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});i.default=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(s,t){let i=this.length++;for(this.ids[i]=s,this.values[i]=t;i>0;){const s=i-1>>1,h=this.values[s];if(t>=h)break;this.ids[i]=this.ids[s],this.values[i]=h,i=s}this.ids[i]=s,this.values[i]=t}pop(){if(0===this.length)return;const s=this.ids[0];if(this.length--,this.length>0){const s=this.ids[0]=this.ids[this.length],t=this.values[0]=this.values[this.length],i=this.length>>1;let h=0;for(;h=t)break;this.ids[h]=e,this.values[h]=l,h=s}this.ids[h]=s,this.values[h]=t}return s}peek(){if(0!==this.length)return this.ids[0]}peekValue(){if(0!==this.length)return this.values[0]}}},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=t(1),i=t(99),r=s.__importStar(t(18)),a=t(24),o=t(9),p=t(8),g=t(11);function c(t,e,n=0){const s=new Map;for(let i=0;ia.get(t).value));r.set(t,{value:u/i,mapping:a}),p+=i+e+l}return[r,(a.size-1)*e+g]}function u(t,e,n,s,i=0){var r;const a=new Map,p=new Map;for(const[e,n,s]of t){const t=null!==(r=p.get(e))&&void 0!==r?r:[];p.set(e,[...t,[n,s]])}let g=i,c=0;for(const[t,i]of p){const r=i.length,[p,u]=l(i,n,s,g);c+=u;const h=o.sum(i.map(([t])=>p.get(t).value));a.set(t,{value:h/r,mapping:p}),g+=r+e+u}return[a,(p.size-1)*e+c]}n.map_one_level=c,n.map_two_levels=l,n.map_three_levels=u;class h extends i.Range{constructor(t){super(t)}static init_FactorRange(){this.define({factors:[r.Array,[]],factor_padding:[r.Number,0],subgroup_padding:[r.Number,.8],group_padding:[r.Number,1.4],range_padding:[r.Number,0],range_padding_units:[r.PaddingUnits,\"percent\"],start:[r.Number],end:[r.Number]}),this.internal({levels:[r.Number],mids:[r.Array,null],tops:[r.Array,null]})}get min(){return this.start}get max(){return this.end}initialize(){super.initialize(),this._init(!0)}connect_signals(){super.connect_signals(),this.connect(this.properties.factors.change,()=>this.reset()),this.connect(this.properties.factor_padding.change,()=>this.reset()),this.connect(this.properties.group_padding.change,()=>this.reset()),this.connect(this.properties.subgroup_padding.change,()=>this.reset()),this.connect(this.properties.range_padding.change,()=>this.reset()),this.connect(this.properties.range_padding_units.change,()=>this.reset())}reset(){this._init(!1),this.change.emit()}_lookup(t){switch(t.length){case 1:{const[e]=t,n=this._mapping.get(e);return null!=n?n.value:NaN}case 2:{const[e,n]=t,s=this._mapping.get(e);if(null!=s){const t=s.mapping.get(n);if(null!=t)return t.value}return NaN}case 3:{const[e,n,s]=t,i=this._mapping.get(e);if(null!=i){const t=i.mapping.get(n);if(null!=t){const e=t.mapping.get(s);if(null!=e)return e.value}}return NaN}default:g.unreachable()}}synthetic(t){if(p.isNumber(t))return t;if(p.isString(t))return this._lookup([t]);let e=0;const n=t[t.length-1];return p.isNumber(n)&&(e=n,t=t.slice(0,-1)),this._lookup(t)+e}v_synthetic(t){const e=t.length,n=new a.NumberArray(e);for(let s=0;s{if(o.every(this.factors,p.isString)){const t=this.factors,[e,n]=c(t,this.factor_padding);return{levels:1,mapping:e,tops:null,mids:null,inside_padding:n}}if(o.every(this.factors,t=>p.isArray(t)&&2==t.length&&p.isString(t[0])&&p.isString(t[1]))){const t=this.factors,[e,n]=l(t,this.group_padding,this.factor_padding),s=[...e.keys()];return{levels:2,mapping:e,tops:s,mids:null,inside_padding:n}}if(o.every(this.factors,t=>p.isArray(t)&&3==t.length&&p.isString(t[0])&&p.isString(t[1])&&p.isString(t[2]))){const t=this.factors,[e,n]=u(t,this.group_padding,this.subgroup_padding,this.factor_padding),s=[...e.keys()],i=[];for(const[t,n]of e)for(const e of n.mapping.keys())i.push([t,e]);return{levels:3,mapping:e,tops:s,mids:i,inside_padding:n}}g.unreachable()})();this._mapping=n,this.tops=s,this.mids=i;let a=0,h=this.factors.length+r;if(\"percent\"==this.range_padding_units){const t=(h-a)*this.range_padding/2;a-=t,h+=t}else a-=this.range_padding,h+=this.range_padding;this.setv({start:a,end:h,levels:e},{silent:t}),\"auto\"==this.bounds&&this.setv({bounds:[a,h]},{silent:!0})}}n.FactorRange=h,h.__name__=\"FactorRange\",h.init_FactorRange()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(81),a=n.__importStar(e(18));class r extends s.Model{constructor(e){super(e),this.have_updated_interactively=!1}static init_Range(){this.define({bounds:[a.Any],min_interval:[a.Any],max_interval:[a.Any]}),this.internal({plots:[a.Array,[]]})}get is_reversed(){return this.start>this.end}get is_valid(){return!isNaN(this.min)&&!isNaN(this.max)}}i.Range=r,r.__name__=\"Range\",r.init_Range()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1).__importStar(e(101));i.generic_line_legend=function(e,t,{x0:i,x1:n,y0:c,y1:o},r){t.save(),t.beginPath(),t.moveTo(i,(c+o)/2),t.lineTo(n,(c+o)/2),e.line.doit&&(e.line.set_vectorize(t,r),t.stroke()),t.restore()},i.generic_area_legend=function(e,t,{x0:i,x1:n,y0:c,y1:o},r){const l=.1*Math.abs(n-i),a=.1*Math.abs(o-c),s=i+l,_=n-l,h=c+a,v=o-a;e.fill.doit&&(e.fill.set_vectorize(t,r),t.fillRect(s,h,_-s,v-h)),null!=e.hatch&&e.hatch.doit&&(e.hatch.set_vectorize(t,r),t.fillRect(s,h,_-s,v-h)),e.line&&e.line.doit&&(t.beginPath(),t.rect(s,h,_-s,v-h),e.line.set_vectorize(t,r),t.stroke())},i.line_interpolation=function(e,t,i,c,o,r){const{sx:l,sy:a}=t;let s,_,h,v;\"point\"==t.type?([h,v]=e.yscale.r_invert(a-1,a+1),[s,_]=e.xscale.r_invert(l-1,l+1)):\"v\"==t.direction?([h,v]=e.yscale.r_invert(a,a),[s,_]=[Math.min(i-1,o-1),Math.max(i+1,o+1)]):([s,_]=e.xscale.r_invert(l,l),[h,v]=[Math.min(c-1,r-1),Math.max(c+1,r+1)]);const{x,y}=n.check_2_segments_intersect(s,h,_,v,i,c,o,r);return[x,y]}},\n", + " function _(t,n,e){function i(t,n){return(t.x-n.x)**2+(t.y-n.y)**2}function r(t,n,e){const r=i(n,e);if(0==r)return i(t,n);const s=((t.x-n.x)*(e.x-n.x)+(t.y-n.y)*(e.y-n.y))/r;if(s<0)return i(t,n);if(s>1)return i(t,e);return i(t,{x:n.x+s*(e.x-n.x),y:n.y+s*(e.y-n.y)})}Object.defineProperty(e,\"__esModule\",{value:!0}),e.point_in_poly=function(t,n,e,i){let r=!1,s=e[e.length-1],o=i[i.length-1];for(let u=0;u0&&_<1&&l>0&&l<1,x:t+_*(e-t),y:n+_*(i-n)}}}},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(103),a=t(107),n=t(108),o=t(109),_=t(22);class h{constructor(t){this._atlas=new Map,this._width=256,this._height=256,this.tex=new i.Texture2d(t),this.tex.set_wrapping(t.REPEAT,t.REPEAT),this.tex.set_interpolation(t.NEAREST,t.NEAREST),this.tex.set_size([this._width,this._height],t.RGBA),this.tex.set_data([0,0],[this._width,this._height],new Uint8Array(4*this._width*this._height)),this.get_atlas_data([1])}get_atlas_data(t){const e=t.join(\"-\");let s=this._atlas.get(e);if(null==s){const[i,a]=this.make_pattern(t),n=this._atlas.size;this.tex.set_data([0,n],[this._width,1],new Uint8Array(i.map(t=>t+10))),s=[n/this._height,a],this._atlas.set(e,s)}return s}make_pattern(t){t.length>1&&t.length%2&&(t=t.concat(t));let e=0;for(const s of t)e+=s;const s=[];let i=0;for(let e=0,a=t.length+2;es[r]?-1:0,o=s[r-1],i=s[r]),n[4*t+0]=s[r],n[4*t+1]=_,n[4*t+2]=o,n[4*t+3]=i}return[n,e]}}h.__name__=\"DashAtlas\";const r={miter:0,round:1,bevel:2},l={\"\":0,none:0,\".\":0,round:1,\")\":1,\"(\":1,o:1,\"triangle in\":2,\"<\":2,\"triangle out\":3,\">\":3,square:4,\"[\":4,\"]\":4,\"=\":4,butt:5,\"|\":5};class g extends a.BaseGLGlyph{init(){const{gl:t}=this;this._scale_aspect=0;const e=n.vertex_shader,s=o.fragment_shader;this.prog=new i.Program(t),this.prog.set_shaders(e,s),this.index_buffer=new i.IndexBuffer(t),this.vbo_position=new i.VertexBuffer(t),this.vbo_tangents=new i.VertexBuffer(t),this.vbo_segment=new i.VertexBuffer(t),this.vbo_angles=new i.VertexBuffer(t),this.vbo_texcoord=new i.VertexBuffer(t),this.dash_atlas=new h(t)}draw(t,e,s){const i=e.glglyph;if(i.data_changed&&(i._set_data(),i.data_changed=!1),this.visuals_changed&&(this._set_visuals(),this.visuals_changed=!1),i._update_scale(1,1),this._scale_aspect=1,this.prog.set_attribute(\"a_position\",\"vec2\",i.vbo_position),this.prog.set_attribute(\"a_tangents\",\"vec4\",i.vbo_tangents),this.prog.set_attribute(\"a_segment\",\"vec2\",i.vbo_segment),this.prog.set_attribute(\"a_angles\",\"vec2\",i.vbo_angles),this.prog.set_attribute(\"a_texcoord\",\"vec2\",i.vbo_texcoord),this.prog.set_uniform(\"u_length\",\"float\",[i.cumsum]),this.prog.set_texture(\"u_dash_atlas\",this.dash_atlas.tex),this.prog.set_uniform(\"u_pixel_ratio\",\"float\",[s.pixel_ratio]),this.prog.set_uniform(\"u_canvas_size\",\"vec2\",[s.width,s.height]),this.prog.set_uniform(\"u_scale_aspect\",\"vec2\",[1,1]),this.prog.set_uniform(\"u_scale_length\",\"float\",[Math.sqrt(2)]),this.I_triangles=i.I_triangles,this.I_triangles.length<65535)this.index_buffer.set_size(2*this.I_triangles.length),this.index_buffer.set_data(0,new Uint16Array(this.I_triangles)),this.prog.draw(this.gl.TRIANGLES,this.index_buffer);else{t=Array.from(this.I_triangles);const e=this.I_triangles.length,s=64008,a=[];for(let t=0,i=Math.ceil(e/s);t1)for(let e=0;e0||console.log(`Variable ${t} is not an active attribute`));else if(this._unset_variables.has(t)&&this._unset_variables.delete(t),this.activate(),i instanceof s.VertexBuffer){const[s,n]=this.ATYPEINFO[e],h=\"vertexAttribPointer\",l=[s,n,!1,a,r];this._attributes.set(t,[i.handle,o,h,l])}else{const s=this.ATYPEMAP[e];this._attributes.set(t,[null,o,s,i])}}_pre_draw(){this.activate();for(const[t,e,i]of this._samplers.values())this.gl.activeTexture(this.gl.TEXTURE0+i),this.gl.bindTexture(t,e);for(const[t,e,i,s]of this._attributes.values())null!=t?(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t),this.gl.enableVertexAttribArray(e),this.gl[i].apply(this.gl,[e,...s])):(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null),this.gl.disableVertexAttribArray(e),this.gl[i].apply(this.gl,[e,...s]));this._validated||(this._validated=!0,this._validate())}_validate(){if(this._unset_variables.size&&console.log(\"Program has unset variables: \"+this._unset_variables),this.gl.validateProgram(this.handle),!this.gl.getProgramParameter(this.handle,this.gl.VALIDATE_STATUS))throw console.log(this.gl.getProgramInfoLog(this.handle)),new Error(\"Program validation error\")}draw(t,e){if(!this._linked)throw new Error(\"Cannot draw program if code has not been set\");if(e instanceof s.IndexBuffer){this._pre_draw(),e.activate();const i=e.buffer_size/2,s=this.gl.UNSIGNED_SHORT;this.gl.drawElements(t,i,s,0),e.deactivate()}else{const[i,s]=e;0!=s&&(this._pre_draw(),this.gl.drawArrays(t,i,s))}}}i.Program=a,a.__name__=\"Program\"},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});class i{constructor(e){this.gl=e,this._usage=35048,this.buffer_size=0,this.handle=this.gl.createBuffer()}delete(){this.gl.deleteBuffer(this.handle)}activate(){this.gl.bindBuffer(this._target,this.handle)}deactivate(){this.gl.bindBuffer(this._target,null)}set_size(e){e!=this.buffer_size&&(this.activate(),this.gl.bufferData(this._target,e,this._usage),this.buffer_size=e)}set_data(e,t){this.activate(),this.gl.bufferSubData(this._target,e,t)}}s.Buffer=i,i.__name__=\"Buffer\";class r extends i{constructor(){super(...arguments),this._target=34962}}s.VertexBuffer=r,r.__name__=\"VertexBuffer\";class a extends i{constructor(){super(...arguments),this._target=34963}}s.IndexBuffer=a,a.__name__=\"IndexBuffer\"},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const a=t(11);class r{constructor(t){this.gl=t,this._target=3553,this._types={Int8Array:5120,Uint8Array:5121,Int16Array:5122,Uint16Array:5123,Int32Array:5124,Uint32Array:5125,Float32Array:5126},this.handle=this.gl.createTexture()}delete(){this.gl.deleteTexture(this.handle)}activate(){this.gl.bindTexture(this._target,this.handle)}deactivate(){this.gl.bindTexture(this._target,0)}_get_alignment(t){const e=[4,8,2,1];for(const i of e)if(t%i==0)return i;a.unreachable()}set_wrapping(t,e){this.activate(),this.gl.texParameterf(this._target,this.gl.TEXTURE_WRAP_S,t),this.gl.texParameterf(this._target,this.gl.TEXTURE_WRAP_T,e)}set_interpolation(t,e){this.activate(),this.gl.texParameterf(this._target,this.gl.TEXTURE_MIN_FILTER,t),this.gl.texParameterf(this._target,this.gl.TEXTURE_MAG_FILTER,e)}set_size([t,e],i){var a,r,s;t==(null===(a=this._shape_format)||void 0===a?void 0:a.width)&&e==(null===(r=this._shape_format)||void 0===r?void 0:r.height)&&i==(null===(s=this._shape_format)||void 0===s?void 0:s.format)||(this._shape_format={width:t,height:e,format:i},this.activate(),this.gl.texImage2D(this._target,0,i,t,e,0,i,this.gl.UNSIGNED_BYTE,null))}set_data(t,[e,i],a){this.activate();const{format:r}=this._shape_format,[s,h]=t,l=this._types[a.constructor.name];if(null==l)throw new Error(`Type ${a.constructor.name} not allowed for texture`);const _=this._get_alignment(e);4!=_&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,_),this.gl.texSubImage2D(this._target,0,s,h,e,i,r,l,a),4!=_&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,4)}}i.Texture2d=r,r.__name__=\"Texture2d\"},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});class s{constructor(e,t){this.gl=e,this.glyph=t,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1,this.init()}set_data_changed(){const{data_size:e}=this.glyph;e!=this.nvertices&&(this.nvertices=e,this.size_changed=!0),this.data_changed=!0}set_visuals_changed(){this.visuals_changed=!0}render(e,t,i){if(0==t.length)return!0;const{width:s,height:h}=this.glyph.renderer.plot_view.canvas_view.webgl.canvas,a={pixel_ratio:this.glyph.renderer.plot_view.canvas_view.pixel_ratio,width:s,height:h};return this.draw(t,i,a),!0}}i.BaseGLGlyph=s,s.__name__=\"BaseGLGlyph\"},\n", + " function _(n,e,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.vertex_shader=\"\\nprecision mediump float;\\n\\nconst float PI = 3.14159265358979323846264;\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\n\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size, u_offset;\\nuniform vec2 u_scale_aspect;\\nuniform float u_scale_length;\\n\\nuniform vec4 u_color;\\nuniform float u_antialias;\\nuniform float u_length;\\nuniform float u_linewidth;\\nuniform float u_dash_index;\\nuniform float u_closed;\\n\\nattribute vec2 a_position;\\nattribute vec4 a_tangents;\\nattribute vec2 a_segment;\\nattribute vec2 a_angles;\\nattribute vec2 a_texcoord;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_segment;\\nvarying vec2 v_angles;\\nvarying vec2 v_texcoord;\\nvarying vec2 v_miter;\\nvarying float v_length;\\nvarying float v_linewidth;\\n\\nfloat cross(in vec2 v1, in vec2 v2)\\n{\\n return v1.x*v2.y - v1.y*v2.x;\\n}\\n\\nfloat signed_distance(in vec2 v1, in vec2 v2, in vec2 v3)\\n{\\n return cross(v2-v1,v1-v3) / length(v2-v1);\\n}\\n\\nvoid rotate( in vec2 v, in float alpha, out vec2 result )\\n{\\n float c = cos(alpha);\\n float s = sin(alpha);\\n result = vec2( c*v.x - s*v.y,\\n s*v.x + c*v.y );\\n}\\n\\nvoid main()\\n{\\n bool closed = (u_closed > 0.0);\\n\\n // Attributes and uniforms to varyings\\n v_color = u_color;\\n v_linewidth = u_linewidth;\\n v_segment = a_segment * u_scale_length;\\n v_length = u_length * u_scale_length;\\n\\n // Scale to map to pixel coordinates. The original algorithm from the paper\\n // assumed isotropic scale. We obviously do not have this.\\n vec2 abs_scale_aspect = abs(u_scale_aspect);\\n vec2 abs_scale = u_scale_length * abs_scale_aspect;\\n\\n // Correct angles for aspect ratio\\n vec2 av;\\n av = vec2(1.0, tan(a_angles.x)) / abs_scale_aspect;\\n v_angles.x = atan(av.y, av.x);\\n av = vec2(1.0, tan(a_angles.y)) / abs_scale_aspect;\\n v_angles.y = atan(av.y, av.x);\\n\\n // Thickness below 1 pixel are represented using a 1 pixel thickness\\n // and a modified alpha\\n v_color.a = min(v_linewidth, v_color.a);\\n v_linewidth = max(v_linewidth, 1.0);\\n\\n // If color is fully transparent we just will discard the fragment anyway\\n if( v_color.a <= 0.0 ) {\\n gl_Position = vec4(0.0,0.0,0.0,1.0);\\n return;\\n }\\n\\n // This is the actual half width of the line\\n float w = ceil(u_antialias+v_linewidth)/2.0;\\n\\n vec2 position = a_position;\\n\\n vec2 t1 = normalize(a_tangents.xy * abs_scale_aspect); // note the scaling for aspect ratio here\\n vec2 t2 = normalize(a_tangents.zw * abs_scale_aspect);\\n float u = a_texcoord.x;\\n float v = a_texcoord.y;\\n vec2 o1 = vec2( +t1.y, -t1.x);\\n vec2 o2 = vec2( +t2.y, -t2.x);\\n\\n // This is a join\\n // ----------------------------------------------------------------\\n if( t1 != t2 ) {\\n float angle = atan (t1.x*t2.y-t1.y*t2.x, t1.x*t2.x+t1.y*t2.y); // Angle needs recalculation for some reason\\n vec2 t = normalize(t1+t2);\\n vec2 o = vec2( + t.y, - t.x);\\n\\n if ( u_dash_index > 0.0 )\\n {\\n // Broken angle\\n // ----------------------------------------------------------------\\n if( (abs(angle) > THETA) ) {\\n position += v * w * o / cos(angle/2.0);\\n float s = sign(angle);\\n if( angle < 0.0 ) {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n if( v == 1.0 ) {\\n position -= 2.0 * w * t1 / sin(angle);\\n u -= 2.0 * w / sin(angle);\\n }\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n if( v == 1.0 ) {\\n position += 2.0 * w * t2 / sin(angle);\\n u += 2.0*w / sin(angle);\\n }\\n }\\n } else {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n if( v == -1.0 ) {\\n position += 2.0 * w * t1 / sin(angle);\\n u += 2.0 * w / sin(angle);\\n }\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n if( v == -1.0 ) {\\n position -= 2.0 * w * t2 / sin(angle);\\n u -= 2.0*w / sin(angle);\\n }\\n }\\n }\\n // Continuous angle\\n // ------------------------------------------------------------\\n } else {\\n position += v * w * o / cos(angle/2.0);\\n if( u == +1.0 ) u = v_segment.y;\\n else u = v_segment.x;\\n }\\n }\\n\\n // Solid line\\n // --------------------------------------------------------------------\\n else\\n {\\n position.xy += v * w * o / cos(angle/2.0);\\n if( angle < 0.0 ) {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n }\\n } else {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n }\\n }\\n }\\n\\n // This is a line start or end (t1 == t2)\\n // ------------------------------------------------------------------------\\n } else {\\n position += v * w * o1;\\n if( u == -1.0 ) {\\n u = v_segment.x - w;\\n position -= w * t1;\\n } else {\\n u = v_segment.y + w;\\n position += w * t2;\\n }\\n }\\n\\n // Miter distance\\n // ------------------------------------------------------------------------\\n vec2 t;\\n vec2 curr = a_position * abs_scale;\\n if( a_texcoord.x < 0.0 ) {\\n vec2 next = curr + t2*(v_segment.y-v_segment.x);\\n\\n rotate( t1, +v_angles.x/2.0, t);\\n v_miter.x = signed_distance(curr, curr+t, position);\\n\\n rotate( t2, +v_angles.y/2.0, t);\\n v_miter.y = signed_distance(next, next+t, position);\\n } else {\\n vec2 prev = curr - t1*(v_segment.y-v_segment.x);\\n\\n rotate( t1, -v_angles.x/2.0,t);\\n v_miter.x = signed_distance(prev, prev+t, position);\\n\\n rotate( t2, -v_angles.y/2.0,t);\\n v_miter.y = signed_distance(curr, curr+t, position);\\n }\\n\\n if (!closed && v_segment.x <= 0.0) {\\n v_miter.x = 1e10;\\n }\\n if (!closed && v_segment.y >= v_length)\\n {\\n v_miter.y = 1e10;\\n }\\n\\n v_texcoord = vec2( u, v*w );\\n\\n // Calculate position in device coordinates. Note that we\\n // already scaled with abs scale above.\\n vec2 normpos = position * sign(u_scale_aspect);\\n normpos += 0.5; // make up for Bokeh's offset\\n normpos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(normpos*2.0-1.0, 0.0, 1.0);\\n gl_Position.y *= -1.0;\\n}\\n\"},\n", + " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0}),e.fragment_shader=\"\\nprecision mediump float;\\n\\nconst float PI = 3.14159265358979323846264;\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\n\\nuniform sampler2D u_dash_atlas;\\n\\nuniform vec2 u_linecaps;\\nuniform float u_miter_limit;\\nuniform float u_linejoin;\\nuniform float u_antialias;\\nuniform float u_dash_phase;\\nuniform float u_dash_period;\\nuniform float u_dash_index;\\nuniform vec2 u_dash_caps;\\nuniform float u_closed;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_segment;\\nvarying vec2 v_angles;\\nvarying vec2 v_texcoord;\\nvarying vec2 v_miter;\\nvarying float v_length;\\nvarying float v_linewidth;\\n\\n// Compute distance to cap ----------------------------------------------------\\nfloat cap( int type, float dx, float dy, float t, float linewidth )\\n{\\n float d = 0.0;\\n dx = abs(dx);\\n dy = abs(dy);\\n if (type == 0) discard; // None\\n else if (type == 1) d = sqrt(dx*dx+dy*dy); // Round\\n else if (type == 3) d = (dx+abs(dy)); // Triangle in\\n else if (type == 2) d = max(abs(dy),(t+dx-abs(dy))); // Triangle out\\n else if (type == 4) d = max(dx,dy); // Square\\n else if (type == 5) d = max(dx+t,dy); // Butt\\n return d;\\n}\\n\\n// Compute distance to join -------------------------------------------------\\nfloat join( in int type, in float d, in vec2 segment, in vec2 texcoord, in vec2 miter,\\n in float linewidth )\\n{\\n // texcoord.x is distance from start\\n // texcoord.y is distance from centerline\\n // segment.x and y indicate the limits (as for texcoord.x) for this segment\\n\\n float dx = texcoord.x;\\n\\n // Round join\\n if( type == 1 ) {\\n if (dx < segment.x) {\\n d = max(d,length( texcoord - vec2(segment.x,0.0)));\\n //d = length( texcoord - vec2(segment.x,0.0));\\n } else if (dx > segment.y) {\\n d = max(d,length( texcoord - vec2(segment.y,0.0)));\\n //d = length( texcoord - vec2(segment.y,0.0));\\n }\\n }\\n // Bevel join\\n else if ( type == 2 ) {\\n if (dx < segment.x) {\\n vec2 x = texcoord - vec2(segment.x,0.0);\\n d = max(d, max(abs(x.x), abs(x.y)));\\n\\n } else if (dx > segment.y) {\\n vec2 x = texcoord - vec2(segment.y,0.0);\\n d = max(d, max(abs(x.x), abs(x.y)));\\n }\\n /* Original code for bevel which does not work for us\\n if( (dx < segment.x) || (dx > segment.y) )\\n d = max(d, min(abs(x.x),abs(x.y)));\\n */\\n }\\n\\n return d;\\n}\\n\\nvoid main()\\n{\\n // If color is fully transparent we just discard the fragment\\n if( v_color.a <= 0.0 ) {\\n discard;\\n }\\n\\n // Test if dash pattern is the solid one (0)\\n bool solid = (u_dash_index == 0.0);\\n\\n // Test if path is closed\\n bool closed = (u_closed > 0.0);\\n\\n vec4 color = v_color;\\n float dx = v_texcoord.x;\\n float dy = v_texcoord.y;\\n float t = v_linewidth/2.0-u_antialias;\\n float width = 1.0; //v_linewidth; original code had dashes scale with line width, we do not\\n float d = 0.0;\\n\\n vec2 linecaps = u_linecaps;\\n vec2 dash_caps = u_dash_caps;\\n float line_start = 0.0;\\n float line_stop = v_length;\\n\\n // Apply miter limit; fragments too far into the miter are simply discarded\\n if( (dx < v_segment.x) || (dx > v_segment.y) ) {\\n float into_miter = max(v_segment.x - dx, dx - v_segment.y);\\n if (into_miter > u_miter_limit*v_linewidth/2.0)\\n discard;\\n }\\n\\n // Solid line --------------------------------------------------------------\\n if( solid ) {\\n d = abs(dy);\\n if( (!closed) && (dx < line_start) ) {\\n d = cap( int(u_linecaps.x), abs(dx), abs(dy), t, v_linewidth );\\n }\\n else if( (!closed) && (dx > line_stop) ) {\\n d = cap( int(u_linecaps.y), abs(dx)-line_stop, abs(dy), t, v_linewidth );\\n }\\n else {\\n d = join( int(u_linejoin), abs(dy), v_segment, v_texcoord, v_miter, v_linewidth );\\n }\\n\\n // Dash line --------------------------------------------------------------\\n } else {\\n float segment_start = v_segment.x;\\n float segment_stop = v_segment.y;\\n float segment_center= (segment_start+segment_stop)/2.0;\\n float freq = u_dash_period*width;\\n float u = mod( dx + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n float dash_center= tex.x * width;\\n float dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n float dash_start = dx - u + _start;\\n float dash_stop = dx - u + _stop;\\n\\n // Compute extents of the first dash (the one relative to v_segment.x)\\n // Note: this could be computed in the vertex shader\\n if( (dash_stop < segment_start) && (dash_caps.x != 5.0) ) {\\n float u = mod(segment_start + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n dash_center= tex.x * width;\\n //dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n dash_start = segment_start - u + _start;\\n dash_stop = segment_start - u + _stop;\\n }\\n\\n // Compute extents of the last dash (the one relatives to v_segment.y)\\n // Note: This could be computed in the vertex shader\\n else if( (dash_start > segment_stop) && (dash_caps.y != 5.0) ) {\\n float u = mod(segment_stop + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n dash_center= tex.x * width;\\n //dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n dash_start = segment_stop - u + _start;\\n dash_stop = segment_stop - u + _stop;\\n }\\n\\n // This test if the we are dealing with a discontinuous angle\\n bool discontinuous = ((dx < segment_center) && abs(v_angles.x) > THETA) ||\\n ((dx >= segment_center) && abs(v_angles.y) > THETA);\\n //if( dx < line_start) discontinuous = false;\\n //if( dx > line_stop) discontinuous = false;\\n\\n float d_join = join( int(u_linejoin), abs(dy),\\n v_segment, v_texcoord, v_miter, v_linewidth );\\n\\n // When path is closed, we do not have room for linecaps, so we make room\\n // by shortening the total length\\n if (closed) {\\n line_start += v_linewidth/2.0;\\n line_stop -= v_linewidth/2.0;\\n }\\n\\n // We also need to take antialias area into account\\n //line_start += u_antialias;\\n //line_stop -= u_antialias;\\n\\n // Check is dash stop is before line start\\n if( dash_stop <= line_start ) {\\n discard;\\n }\\n // Check is dash start is beyond line stop\\n if( dash_start >= line_stop ) {\\n discard;\\n }\\n\\n // Check if current dash start is beyond segment stop\\n if( discontinuous ) {\\n // Dash start is beyond segment, we discard\\n if( (dash_start > segment_stop) ) {\\n discard;\\n //gl_FragColor = vec4(1.0,0.0,0.0,.25); return;\\n }\\n\\n // Dash stop is before segment, we discard\\n if( (dash_stop < segment_start) ) {\\n discard; //gl_FragColor = vec4(0.0,1.0,0.0,.25); return;\\n }\\n\\n // Special case for round caps (nicer with this)\\n if( dash_caps.x == 1.0 ) {\\n if( (u > _stop) && (dash_stop > segment_stop ) && (abs(v_angles.y) < PI/2.0)) {\\n discard;\\n }\\n }\\n\\n // Special case for round caps (nicer with this)\\n if( dash_caps.y == 1.0 ) {\\n if( (u < _start) && (dash_start < segment_start ) && (abs(v_angles.x) < PI/2.0)) {\\n discard;\\n }\\n }\\n\\n // Special case for triangle caps (in & out) and square\\n // We make sure the cap stop at crossing frontier\\n if( (dash_caps.x != 1.0) && (dash_caps.x != 5.0) ) {\\n if( (dash_start < segment_start ) && (abs(v_angles.x) < PI/2.0) ) {\\n float a = v_angles.x/2.0;\\n float x = (segment_start-dx)*cos(a) - dy*sin(a);\\n float y = (segment_start-dx)*sin(a) + dy*cos(a);\\n if( x > 0.0 ) discard;\\n // We transform the cap into square to avoid holes\\n dash_caps.x = 4.0;\\n }\\n }\\n\\n // Special case for triangle caps (in & out) and square\\n // We make sure the cap stop at crossing frontier\\n if( (dash_caps.y != 1.0) && (dash_caps.y != 5.0) ) {\\n if( (dash_stop > segment_stop ) && (abs(v_angles.y) < PI/2.0) ) {\\n float a = v_angles.y/2.0;\\n float x = (dx-segment_stop)*cos(a) - dy*sin(a);\\n float y = (dx-segment_stop)*sin(a) + dy*cos(a);\\n if( x > 0.0 ) discard;\\n // We transform the caps into square to avoid holes\\n dash_caps.y = 4.0;\\n }\\n }\\n }\\n\\n // Line cap at start\\n if( (dx < line_start) && (dash_start < line_start) && (dash_stop > line_start) ) {\\n d = cap( int(linecaps.x), dx-line_start, dy, t, v_linewidth);\\n }\\n // Line cap at stop\\n else if( (dx > line_stop) && (dash_stop > line_stop) && (dash_start < line_stop) ) {\\n d = cap( int(linecaps.y), dx-line_stop, dy, t, v_linewidth);\\n }\\n // Dash cap left - dash_type = -1, 0 or 1, but there may be roundoff errors\\n else if( dash_type < -0.5 ) {\\n d = cap( int(dash_caps.y), abs(u-dash_center), dy, t, v_linewidth);\\n if( (dx > line_start) && (dx < line_stop) )\\n d = max(d,d_join);\\n }\\n // Dash cap right\\n else if( dash_type > 0.5 ) {\\n d = cap( int(dash_caps.x), abs(dash_center-u), dy, t, v_linewidth);\\n if( (dx > line_start) && (dx < line_stop) )\\n d = max(d,d_join);\\n }\\n // Dash body (plain)\\n else {// if( dash_type > -0.5 && dash_type < 0.5) {\\n d = abs(dy);\\n }\\n\\n // Line join\\n if( (dx > line_start) && (dx < line_stop)) {\\n if( (dx <= segment_start) && (dash_start <= segment_start)\\n && (dash_stop >= segment_start) ) {\\n d = d_join;\\n // Antialias at outer border\\n float angle = PI/2.+v_angles.x;\\n float f = abs( (segment_start - dx)*cos(angle) - dy*sin(angle));\\n d = max(f,d);\\n }\\n else if( (dx > segment_stop) && (dash_start <= segment_stop)\\n && (dash_stop >= segment_stop) ) {\\n d = d_join;\\n // Antialias at outer border\\n float angle = PI/2.+v_angles.y;\\n float f = abs((dx - segment_stop)*cos(angle) - dy*sin(angle));\\n d = max(f,d);\\n }\\n else if( dx < (segment_start - v_linewidth/2.)) {\\n discard;\\n }\\n else if( dx > (segment_stop + v_linewidth/2.)) {\\n discard;\\n }\\n }\\n else if( dx < (segment_start - v_linewidth/2.)) {\\n discard;\\n }\\n else if( dx > (segment_stop + v_linewidth/2.)) {\\n discard;\\n }\\n }\\n\\n // Distance to border ------------------------------------------------------\\n d = d - t;\\n if( d < 0.0 ) {\\n gl_FragColor = color;\\n } else {\\n d /= u_antialias;\\n gl_FragColor = vec4(color.rgb, exp(-d*d)*color.a);\\n }\\n}\\n\"},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1),l=e(93),_=e(100),n=s.__importStar(e(101)),o=s.__importStar(e(28)),a=e(88);class h extends l.XYGlyphView{_inner_loop(e,i,t,s,l){for(const _ of i)0!=_?isNaN(t[_]+s[_])?(e.closePath(),l.apply(e),e.beginPath()):e.lineTo(t[_],s[_]):(e.beginPath(),e.moveTo(t[_],s[_]));e.closePath(),l.call(e)}_render(e,i,{sx:t,sy:s}){this.visuals.fill.doit&&(this.visuals.fill.set_value(e),this._inner_loop(e,i,t,s,e.fill)),this.visuals.hatch.doit2(e,0,()=>this._inner_loop(e,i,t,s,e.fill),()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_value(e),this._inner_loop(e,i,t,s,e.stroke))}draw_legend_for_index(e,i,t){_.generic_area_legend(this.visuals,e,i,t)}_hit_point(e){const i=new a.Selection;return n.point_in_poly(e.sx,e.sy,this.sx,this.sy)&&(i.add_to_selected_glyphs(this.model),i.view=this),i}}t.PatchView=h,h.__name__=\"PatchView\";class r extends l.XYGlyph{constructor(e){super(e)}static init_Patch(){this.prototype.default_view=h,this.mixins([o.Line,o.Fill,o.Hatch])}}t.Patch=r,r.__name__=\"Patch\",r.init_Patch()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),r=e(24),n=e(112),a=i.__importStar(e(101)),_=i.__importStar(e(18)),h=e(88);class l extends n.AreaView{_index_data(e){const{min:t,max:s}=Math,{data_size:i}=this;for(let r=0;r=0;t--)e.lineTo(s[t],i[t]);e.closePath(),r.call(e)}_render(e,t,{sx1:s,sx2:i,sy:r}){this.visuals.fill.doit&&(this.visuals.fill.set_value(e),this._inner(e,s,i,r,e.fill)),this.visuals.hatch.doit2(e,0,()=>this._inner(e,s,i,r,e.fill),()=>this.renderer.request_render())}_hit_point(e){const t=this.sy.length,s=new r.NumberArray(2*t),i=new r.NumberArray(2*t);for(let e=0,r=t;e=0;s--)e.lineTo(t[s],i[s]);e.closePath(),r.call(e)}_render(e,t,{sx:s,sy1:i,sy2:r}){this.visuals.fill.doit&&(this.visuals.fill.set_value(e),this._inner(e,s,i,r,e.fill)),this.visuals.hatch.doit2(e,0,()=>this._inner(e,s,i,r,e.fill),()=>this.renderer.request_render())}scenterxy(e){return[this.sx[e],(this.sy1[e]+this.sy2[e])/2]}_hit_point(e){const t=this.sx.length,s=new r.NumberArray(2*t),i=new r.NumberArray(2*t);for(let e=0,r=t;ethis.compute_indices());const i=()=>{const i=()=>this.compute_indices();null!=this.source&&(this.connect(this.source.change,i),this.source instanceof _.ColumnarDataSource&&(this.connect(this.source.streaming,i),this.connect(this.source.patching,i)))};let e=null!=this.source;e?i():this.connect(this.properties.source.change,()=>{e||(i(),e=!0)})}compute_indices(){var i;const{source:e}=this;if(null==e)return;const s=null!==(i=e.get_length())&&void 0!==i?i:1,t=r.Indices.all_set(s);for(const i of this.filters)t.intersect(i.compute_indices(e));this.indices=t,this._indices=[...t],this.indices_map_to_subset()}indices_map_to_subset(){this.indices_map={};for(let i=0;ithis._indices[i]);return new o.Selection(Object.assign(Object.assign({},i.attributes),{indices:e}))}convert_selection_to_subset(i){const e=i.indices.map(i=>this.indices_map[i]);return new o.Selection(Object.assign(Object.assign({},i.attributes),{indices:e}))}convert_indices_from_subset(i){return i.map(i=>this._indices[i])}}s.CDSView=a,a.__name__=\"CDSView\",a.init_CDSView()},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(9);async function i(e,n,t){const o=new e(Object.assign(Object.assign({},t),{model:n}));return o.initialize(),await o.lazy_initialize(),o}t.build_view=async function(e,n={parent:null},t=(e=>e.default_view)){const o=await i(t(e),e,n);return o.connect_signals(),o},t.build_views=async function(e,n,t={parent:null},s=(e=>e.default_view)){const c=o.difference([...e.keys()],n);for(const n of c)e.get(n).remove(),e.delete(n);const a=[],f=n.filter(n=>!e.has(n));for(const n of f){const o=await i(s(n),n,t);e.set(n,o),a.push(o)}for(const e of a)e.connect_signals();return a},t.remove_views=function(e){for(const[n,t]of e)t.remove(),e.delete(n)}},\n", + " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(1),i=e(91),s=e(117),a=t.__importStar(e(18)),o=e(115),_=e(11);class l extends i.DataRendererView{async lazy_initialize(){await super.lazy_initialize();const e=this.model;let r=null,n=null;const t={v_compute(n){_.assert(null==r);const[t]=r=e.layout_provider.get_edge_coordinates(n);return t}},i={v_compute(e){_.assert(null!=r);const[,n]=r;return r=null,n}},s={v_compute(r){_.assert(null==n);const[t]=n=e.layout_provider.get_node_coordinates(r);return t}},a={v_compute(e){_.assert(null!=n);const[,r]=n;return n=null,r}},{edge_renderer:l,node_renderer:d}=this.model;l.glyph.properties.xs.internal=!0,l.glyph.properties.ys.internal=!0,d.glyph.properties.x.internal=!0,d.glyph.properties.y.internal=!0,l.glyph.xs={expr:t},l.glyph.ys={expr:i},d.glyph.x={expr:s},d.glyph.y={expr:a};const{parent:p}=this;this.edge_view=await o.build_view(l,{parent:p}),this.node_view=await o.build_view(d,{parent:p})}connect_signals(){super.connect_signals(),this.connect(this.model.layout_provider.change,()=>{this.edge_view.set_data(!1),this.node_view.set_data(!1),this.request_render()})}remove(){this.edge_view.remove(),this.node_view.remove(),super.remove()}_render(){this.edge_view.render(),this.node_view.render()}}n.GraphRendererView=l,l.__name__=\"GraphRendererView\";class d extends i.DataRenderer{constructor(e){super(e)}static init_GraphRenderer(){this.prototype.default_view=l,this.define({layout_provider:[a.Instance],node_renderer:[a.Instance],edge_renderer:[a.Instance],selection_policy:[a.Instance,()=>new s.NodesOnly],inspection_policy:[a.Instance,()=>new s.NodesOnly]})}get_selection_manager(){return this.node_renderer.data_source.selection_manager}}n.GraphRenderer=d,d.__name__=\"GraphRenderer\",d.init_GraphRenderer()},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const d=e(81),s=e(12),o=e(9),_=e(88);class i extends d.Model{constructor(e){super(e)}_hit_test_nodes(e,t){if(!t.model.visible)return null;const n=t.node_view.glyph.hit_test(e);return null==n?null:t.node_view.model.view.convert_selection_from_subset(n)}_hit_test_edges(e,t){if(!t.model.visible)return null;const n=t.edge_view.glyph.hit_test(e);return null==n?null:t.edge_view.model.view.convert_selection_from_subset(n)}}n.GraphHitTestPolicy=i,i.__name__=\"GraphHitTestPolicy\";class r extends i{constructor(e){super(e)}hit_test(e,t){return this._hit_test_nodes(e,t)}do_selection(e,t,n,d){if(null==e)return!1;const s=t.node_renderer.data_source.selected;return s.update(e,n,d),t.node_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,n,d,s){if(null==e)return!1;const o=n.model.get_selection_manager().get_or_create_inspector(n.node_view.model);return o.update(e,d,s),n.node_view.model.data_source.setv({inspected:o},{silent:!0}),n.node_view.model.data_source.inspect.emit([n.node_view,{geometry:t}]),!o.is_empty()}}n.NodesOnly=r,r.__name__=\"NodesOnly\";class c extends i{constructor(e){super(e)}hit_test(e,t){return this._hit_test_nodes(e,t)}get_linked_edges(e,t,n){let d=[];\"selection\"==n?d=e.selected.indices.map(t=>e.data.index[t]):\"inspection\"==n&&(d=e.inspected.indices.map(t=>e.data.index[t]));const s=[];for(let e=0;es.indexOf(e.data.index,t));return new _.Selection({indices:r})}do_selection(e,t,n,d){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;s.update(e,n,d);const o=t.node_renderer.data_source.selected,_=this.get_linked_nodes(t.node_renderer.data_source,t.edge_renderer.data_source,\"selection\");return o.update(_,n,d),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,n,d,s){if(null==e)return!1;const o=n.edge_view.model.data_source.selection_manager.get_or_create_inspector(n.edge_view.model);o.update(e,d,s),n.edge_view.model.data_source.setv({inspected:o},{silent:!0});const _=n.node_view.model.data_source.selection_manager.get_or_create_inspector(n.node_view.model),i=this.get_linked_nodes(n.node_view.model.data_source,n.edge_view.model.data_source,\"inspection\");return _.update(i,d,s),n.node_view.model.data_source.setv({inspected:_},{silent:!0}),n.edge_view.model.data_source.inspect.emit([n.edge_view,{geometry:t}]),!o.is_empty()}}n.EdgesAndLinkedNodes=a,a.__name__=\"EdgesAndLinkedNodes\"},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=e(81);class o extends s.Model{do_selection(e,t,n,s){return null!==e&&(t.selected.update(e,n,s),t._select.emit(),!t.selected.is_empty())}}n.SelectionPolicy=o,o.__name__=\"SelectionPolicy\";class r extends o{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!==t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_intersection(t);return e}return null}}n.IntersectRenderers=r,r.__name__=\"IntersectRenderers\";class c extends o{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!==t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_union(t);return e}return null}}n.UnionRenderers=c,c.__name__=\"UnionRenderers\"},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0}),n.concat=function(t,...e){let n=t.length;for(const t of e)n+=t.length;const o=new t.constructor(n);o.set(t,0);let c=t.length;for(const t of e)o.set(t,c),c+=t.length;return o}},\n", + " function _(n,o,e){function t(...n){const o=new Set;for(const e of n)for(const n of e)o.add(n);return o}Object.defineProperty(e,\"__esModule\",{value:!0}),e.union=t,e.intersection=function(n,...o){const e=new Set;n:for(const t of n){for(const n of o)if(!n.has(t))continue n;e.add(t)}return e},e.difference=function(n,...o){const e=new Set(n);for(const n of t(...o))e.delete(n);return e}},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(14);class o{constructor(e){this.document=e}}s.DocumentEvent=o,o.__name__=\"DocumentEvent\";class r extends o{constructor(e,t,s){super(e),this.events=t,this.setter_id=s}}s.DocumentEventBatch=r,r.__name__=\"DocumentEventBatch\";class d extends o{}s.DocumentChangedEvent=d,d.__name__=\"DocumentChangedEvent\";class _ extends d{constructor(e,t,s){super(e),this.msg_type=t,this.msg_data=s}json(e){const t=this.msg_data,s=n.HasProps._value_to_json(t),o=new Set;return n.HasProps._value_record_references(t,o,{recursive:!0}),{kind:\"MessageSent\",msg_type:this.msg_type,msg_data:s}}}s.MessageSentEvent=_,_.__name__=\"MessageSentEvent\";class i extends d{constructor(e,t,s,n,o,r,d){super(e),this.model=t,this.attr=s,this.old=n,this.new_=o,this.setter_id=r,this.hint=d}json(e){if(\"id\"===this.attr)throw new Error(\"'id' field should never change, whatever code just set it is wrong\");if(null!=this.hint)return this.hint.json(e);const t=this.new_,s=n.HasProps._value_to_json(t),o=new Set;n.HasProps._value_record_references(t,o,{recursive:!0}),o.has(this.model)&&this.model!==t&&o.delete(this.model);for(const t of o)e.add(t);return{kind:\"ModelChanged\",model:this.model.ref(),attr:this.attr,new:s}}}s.ModelChangedEvent=i,i.__name__=\"ModelChangedEvent\";class a extends d{constructor(e,t,s){super(e),this.column_source=t,this.patches=s}json(e){return{kind:\"ColumnsPatched\",column_source:this.column_source,patches:this.patches}}}s.ColumnsPatchedEvent=a,a.__name__=\"ColumnsPatchedEvent\";class c extends d{constructor(e,t,s,n){super(e),this.column_source=t,this.data=s,this.rollover=n}json(e){return{kind:\"ColumnsStreamed\",column_source:this.column_source,data:this.data,rollover:this.rollover}}}s.ColumnsStreamedEvent=c,c.__name__=\"ColumnsStreamedEvent\";class h extends d{constructor(e,t,s){super(e),this.title=t,this.setter_id=s}json(e){return{kind:\"TitleChanged\",title:this.title}}}s.TitleChangedEvent=h,h.__name__=\"TitleChangedEvent\";class u extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}json(e){return n.HasProps._value_record_references(this.model,e,{recursive:!0}),{kind:\"RootAdded\",model:this.model.ref()}}}s.RootAddedEvent=u,u.__name__=\"RootAddedEvent\";class l extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}json(e){return{kind:\"RootRemoved\",model:this.model.ref()}}}s.RootRemovedEvent=l,l.__name__=\"RootRemovedEvent\"},\n", + " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(1),l=e(123),_=i.__importStar(e(28));class o extends l.UpperLowerView{connect_signals(){super.connect_signals();const e=()=>this.set_data(this.model.source);this.connect(this.model.change,e),this.connect(this.model.source.streaming,e),this.connect(this.model.source.patching,e),this.connect(this.model.source.change,e)}_render(){this._map_data();const{ctx:e}=this.layer;e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,t=this._lower_sx.length;s=0;s--)e.lineTo(this._upper_sx[s],this._upper_sy[s]);e.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_value(e),e.fill()),e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,t=this._lower_sx.length;snew r.ColumnDataSource]})}}i.UpperLower=a,a.__name__=\"UpperLower\",a.init_UpperLower()},\n", + " function _(t,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const e=t(1),o=t(36),n=t(15),l=e.__importStar(t(28)),a=e.__importStar(t(18)),h=t(79);s.EDGE_TOLERANCE=2.5;class r extends o.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_paint(this)),this.connect(this.model.data_update,()=>this.plot_view.request_paint(this))}_render(){if(null==this.model.left&&null==this.model.right&&null==this.model.top&&null==this.model.bottom)return;const{frame:t}=this.plot_view,i=this.coordinates.x_scale,s=this.coordinates.y_scale,e=(t,i,s,e,o)=>{let n;return n=null!=t?this.model.screen?t:\"data\"==i?s.compute(t):e.compute(t):o,n};this.sleft=e(this.model.left,this.model.left_units,i,t.xview,t.bbox.left),this.sright=e(this.model.right,this.model.right_units,i,t.xview,t.bbox.right),this.stop=e(this.model.top,this.model.top_units,s,t.yview,t.bbox.top),this.sbottom=e(this.model.bottom,this.model.bottom_units,s,t.yview,t.bbox.bottom),this._paint_box(this.sleft,this.sright,this.sbottom,this.stop)}_paint_box(t,i,s,e){const{ctx:o}=this.layer;o.save(),o.beginPath(),o.rect(t,e,i-t,s-e),this.visuals.fill.doit&&(this.visuals.fill.set_value(o),o.fill()),this.visuals.line.doit&&(this.visuals.line.set_value(o),o.stroke()),o.restore()}interactive_bbox(){const t=this.model.properties.line_width.value()+s.EDGE_TOLERANCE;return new h.BBox({x0:this.sleft-t,y0:this.stop-t,x1:this.sright+t,y1:this.sbottom+t})}interactive_hit(t,i){if(null==this.model.in_cursor)return!1;return this.interactive_bbox().contains(t,i)}cursor(t,i){return Math.abs(t-this.sleft)<3||Math.abs(t-this.sright)<3?this.model.ew_cursor:Math.abs(i-this.sbottom)<3||Math.abs(i-this.stop)<3?this.model.ns_cursor:t>this.sleft&&tthis.stop&&ithis.plot_view.request_render()),this.connect(this.model.formatter.change,()=>this.plot_view.request_render()),null!=this.model.color_mapper&&this.connect(this.model.color_mapper.change,()=>{this._set_canvas_image(),this.plot_view.request_render()})}_get_size(){if(null==this.model.color_mapper)return{width:0,height:0};{const{width:t,height:e}=this.compute_legend_dimensions();return{width:t,height:e}}}_set_canvas_image(){if(null==this.model.color_mapper)return;let t,e,{palette:i}=this.model.color_mapper;switch(\"vertical\"==this.model.orientation&&(i=g.reversed(i)),this.model.orientation){case\"vertical\":[t,e]=[1,i.length];break;case\"horizontal\":[t,e]=[i.length,1]}const o=document.createElement(\"canvas\");o.width=t,o.height=e;const a=o.getContext(\"2d\"),s=a.getImageData(0,0,t,e),r=new n.LinearColorMapper({palette:i}).rgba_mapper.v_compute(g.range(0,i.length));s.data.set(r),a.putImageData(s,0,0),this.image=o}compute_legend_dimensions(){const t=this._computed_image_dimensions(),[e,i]=[t.height,t.width],o=this._get_label_extent(),a=this._title_extent(),s=this._tick_extent(),{padding:r}=this.model;let n,l;switch(this.model.orientation){case\"vertical\":n=e+a+2*r,l=i+s+o+2*r;break;case\"horizontal\":n=e+a+s+o+2*r,l=i+2*r}return{width:l,height:n}}compute_legend_location(){const t=this.compute_legend_dimensions(),[e,i]=[t.height,t.width],o=this.model.margin,a=null!=this.panel?this.panel:this.plot_view.frame,[s,r]=a.bbox.ranges,{location:n}=this.model;let l,_;if(f.isString(n))switch(n){case\"top_left\":l=s.start+o,_=r.start+o;break;case\"top_center\":l=(s.end+s.start)/2-i/2,_=r.start+o;break;case\"top_right\":l=s.end-o-i,_=r.start+o;break;case\"bottom_right\":l=s.end-o-i,_=r.end-o-e;break;case\"bottom_center\":l=(s.end+s.start)/2-i/2,_=r.end-o-e;break;case\"bottom_left\":l=s.start+o,_=r.end-o-e;break;case\"center_left\":l=s.start+o,_=(r.end+r.start)/2-e/2;break;case\"center\":l=(s.end+s.start)/2-i/2,_=(r.end+r.start)/2-e/2;break;case\"center_right\":l=s.end-o-i,_=(r.end+r.start)/2-e/2}else if(f.isArray(n)&&2==n.length){const[t,i]=n;l=a.xview.compute(t),_=a.yview.compute(i)-e}else b.unreachable();return{sx:l,sy:_}}_render(){if(null==this.model.color_mapper)return;const{ctx:t}=this.layer;t.save();const{sx:e,sy:i}=this.compute_legend_location();t.translate(e,i),this._draw_bbox(t);const o=this._get_image_offset();t.translate(o.x,o.y),this._draw_image(t);const a=this.tick_info();this._draw_major_ticks(t,a),this._draw_minor_ticks(t,a),this._draw_major_labels(t,a),this.model.title&&this._draw_title(t),t.restore()}_draw_bbox(t){const e=this.compute_legend_dimensions();t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(0,0,e.width,e.height)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()}_draw_image(t){const e=this._computed_image_dimensions();t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this.image,0,0,e.width,e.height),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()}_draw_major_ticks(t,e){if(!this.visuals.major_tick_line.doit)return;const[i,o]=this._normals(),a=this._computed_image_dimensions(),[s,r]=[a.width*i,a.height*o],[n,l]=e.coords.major,_=this.model.major_tick_in,h=this.model.major_tick_out;t.save(),t.translate(s,r),this.visuals.major_tick_line.set_value(t);for(let e=0,a=n.length;ei.measureText(t.toString()).width));break;case\"horizontal\":e=u.measure_font(this.visuals.major_label_text.font_value()).height}e+=this.model.label_standoff,i.restore()}return e}_get_image_offset(){return{x:this.model.padding,y:this.model.padding+this._title_extent()}}_normals(){return\"vertical\"==this.model.orientation?[1,0]:[0,1]}_title_extent(){const t=this.model.title_text_font+\" \"+this.model.title_text_font_size+\" \"+this.model.title_text_font_style;return this.model.title?u.measure_font(t).height+this.model.title_standoff:0}_tick_extent(){return g.max([this.model.major_tick_out,this.model.minor_tick_out])}_computed_image_dimensions(){const t=this.plot_view.frame.bbox.height,e=this.plot_view.frame.bbox.width,i=this._title_extent();let o,a;switch(this.model.orientation){case\"vertical\":\"auto\"==this.model.height?null!=this.panel?o=t-2*this.model.padding-i:(o=g.max([25*this.model.color_mapper.palette.length,.3*t]),o=g.min([o,.8*t-2*this.model.padding-i])):o=this.model.height,a=\"auto\"==this.model.width?25:this.model.width;break;case\"horizontal\":o=\"auto\"==this.model.height?25:this.model.height,\"auto\"==this.model.width?null!=this.panel?a=e-2*this.model.padding:(a=g.max([25*this.model.color_mapper.palette.length,.3*e]),a=g.min([a,.8*e-2*this.model.padding])):a=this.model.width}return{width:a,height:o}}_tick_coordinate_scale(t){const e={source_range:new m.Range1d({start:this.model.color_mapper.metrics.min,end:this.model.color_mapper.metrics.max}),target_range:new m.Range1d({start:0,end:t})},{color_mapper:i}=this.model;if(i instanceof n.LinearColorMapper)return new l.LinearScale(e);if(i instanceof n.LogColorMapper)return new h.LogScale(e);if(i instanceof n.ScanningColorMapper){const{binning:t}=i.metrics;return new _.LinearInterpolationScale(Object.assign(Object.assign({},e),{binning:t}))}b.unreachable()}_format_major_labels(t,e){const i=this.model.formatter.doFormat(t,null);for(let t=0,o=e.length;tr||(h[o].push(l[t]),h[a].push(0));for(let t=0,e=_.length;tr||(m[o].push(_[t]),m[a].push(0));const d={major:this._format_major_labels(h[o],l)},c={major:[[],[]],minor:[[],[]]};return c.major[o]=i.v_compute(h[o]),c.minor[o]=i.v_compute(m[o]),c.major[a]=h[a],c.minor[a]=m[a],\"vertical\"==this.model.orientation&&(c.major[o]=p.map(c.major[o],t=>e-t),c.minor[o]=p.map(c.minor[o],t=>e-t)),{coords:c,labels:d}}}i.ColorBarView=v,v.__name__=\"ColorBarView\";class w extends a.Annotation{constructor(t){super(t)}static init_ColorBar(){this.prototype.default_view=v,this.mixins([[\"major_label_\",d.Text],[\"title_\",d.Text],[\"major_tick_\",d.Line],[\"minor_tick_\",d.Line],[\"border_\",d.Line],[\"bar_\",d.Line],[\"background_\",d.Fill]]),this.define({location:[c.Any,\"top_right\"],orientation:[c.Orientation,\"vertical\"],title:[c.String],title_standoff:[c.Number,2],width:[c.Any,\"auto\"],height:[c.Any,\"auto\"],scale_alpha:[c.Number,1],ticker:[c.Instance,()=>new s.BasicTicker],formatter:[c.Instance,()=>new r.BasicTickFormatter],major_label_overrides:[c.Any,{}],color_mapper:[c.Instance],label_standoff:[c.Number,5],margin:[c.Number,30],padding:[c.Number,10],major_tick_in:[c.Number,5],major_tick_out:[c.Number,0],minor_tick_in:[c.Number,0],minor_tick_out:[c.Number,0]}),this.override({background_fill_color:\"#ffffff\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_align:\"center\",major_label_text_baseline:\"middle\",major_label_text_font_size:\"11px\",major_tick_line_color:\"#ffffff\",minor_tick_line_color:null,title_text_font_size:\"13px\",title_text_font_style:\"italic\"})}}i.ColorBar=w,w.__name__=\"ColorBar\",w.init_ColorBar()},\n", + " function _(e,c,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(127);class r extends i.AdaptiveTicker{constructor(e){super(e)}}s.BasicTicker=r,r.__name__=\"BasicTicker\"},\n", + " function _(t,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const a=t(1),s=t(128),n=t(9),r=a.__importStar(t(18));class _ extends s.ContinuousTicker{constructor(t){super(t)}static init_AdaptiveTicker(){this.define({base:[r.Number,10],mantissas:[r.Array,[1,2,5]],min_interval:[r.Number,0],max_interval:[r.Number]})}initialize(){super.initialize();const t=n.nth(this.mantissas,-1)/this.base,i=n.nth(this.mantissas,0)*this.base;this.extended_mantissas=[t,...this.mantissas,i],this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()}get_interval(t,i,e){const a=i-t,s=this.get_ideal_interval(t,i,e),r=Math.floor(function(t,i=Math.E){return Math.log(t)/Math.log(i)}(s/this.base_factor,this.base)),_=this.base**r*this.base_factor,h=this.extended_mantissas,m=h.map(t=>Math.abs(e-a/(t*_))),o=h[n.argmin(m)];return c=o*_,l=this.get_min_interval(),u=this.get_max_interval(),Math.max(l,Math.min(u,c));var c,l,u}}e.AdaptiveTicker=_,_.__name__=\"AdaptiveTicker\",_.init_AdaptiveTicker()},\n", + " function _(t,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(1),r=t(129),s=n.__importStar(t(18)),o=t(9);class _ extends r.Ticker{constructor(t){super(t)}static init_ContinuousTicker(){this.define({num_minor_ticks:[s.Number,5],desired_num_ticks:[s.Number,6]})}get_ticks(t,i,e,n,r){return this.get_ticks_no_defaults(t,i,n,this.desired_num_ticks)}get_ticks_no_defaults(t,i,e,n){const r=this.get_interval(t,i,n),s=Math.floor(t/r),_=Math.ceil(i/r);let c;c=isFinite(s)&&isFinite(_)?o.range(s,_+1):[];const u=c.map(t=>t*r).filter(e=>t<=e&&e<=i),a=this.num_minor_ticks,l=[];if(a>0&&u.length>0){const e=r/a,n=o.range(0,a).map(t=>t*e);for(const e of n.slice(1)){const n=u[0]-e;t<=n&&n<=i&&l.push(n)}for(const e of u)for(const r of n){const n=e+r;t<=n&&n<=i&&l.push(n)}}return{major:u,minor:l}}get_min_interval(){return this.min_interval}get_max_interval(){return null!=this.max_interval?this.max_interval:1/0}get_ideal_interval(t,i,e){return(i-t)/e}}e.ContinuousTicker=_,_.__name__=\"ContinuousTicker\",_.init_ContinuousTicker()},\n", + " function _(e,c,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(81);class r extends o.Model{constructor(e){super(e)}}n.Ticker=r,r.__name__=\"Ticker\"},\n", + " function _(i,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=i(1),s=i(131),n=r.__importStar(i(18));class o extends s.TickFormatter{constructor(i){super(i),this.last_precision=3}static init_BasicTickFormatter(){this.define({precision:[n.Any,\"auto\"],use_scientific:[n.Boolean,!0],power_limit_high:[n.Number,5],power_limit_low:[n.Number,-3]})}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}_need_sci(i){if(!this.use_scientific)return!1;const{scientific_limit_high:t}=this,{scientific_limit_low:e}=this,r=i.length<2?0:Math.abs(i[1]-i[0])/1e4;for(const s of i){const i=Math.abs(s);if(!(i<=r)&&(i>=t||i<=e))return!0}return!1}_format_with_precision(i,t,e){const r=new Array(i.length);if(t)for(let t=0,s=i.length;t=1;r?s++:s--){if(t){e[0]=i[0].toExponential(s);for(let t=1;tu(e,d))),s=g<0||g>=t.length?r:t[g],c[_]=s}}},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const n=t(1),o=t(136),_=n.__importStar(t(18)),i=t(8),l=t(22),c=t(32);function a(t){return i.isNumber(t)?t:(\"#\"!=t[0]&&(t=l.color2hex(t)),9!=t.length&&(t+=\"ff\"),parseInt(t.slice(1),16))}function s(t){const e=new Uint32Array(t.length);for(let r=0,n=t.length;rt)),e}get rgba_mapper(){const t=this,e=s(this.palette),r=this._colors(a);return{v_compute(n){const o=new Uint32Array(n.length);return t._v_compute(n,o,e,r),p(o)}}}_colors(t){return{nan_color:t(this.nan_color)}}}r.ColorMapper=u,u.__name__=\"ColorMapper\",u.init_ColorMapper()},\n", + " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(137);class s extends o.Transform{constructor(e){super(e)}compute(e){throw new Error(\"mapping single values is not supported\")}}n.Mapper=s,s.__name__=\"Mapper\"},\n", + " function _(e,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(81);class s extends r.Model{constructor(e){super(e)}}o.Transform=s,s.__name__=\"Transform\"},\n", + " function _(r,e,a){Object.defineProperty(a,\"__esModule\",{value:!0});const t=r(1),s=r(134),i=r(136),c=t.__importStar(r(18));class n extends i.Mapper{constructor(r){super(r)}static init_CategoricalMarkerMapper(){this.define({factors:[c.Array],markers:[c.Array],start:[c.Number,0],end:[c.Number],default_value:[c.MarkerType,\"circle\"]})}v_compute(r){const e=new Array(r.length);return s.cat_v_compute(r,this.factors,this.markers,e,this.start,this.end,this.default_value),e}}a.CategoricalMarkerMapper=n,n.__name__=\"CategoricalMarkerMapper\",n.init_CategoricalMarkerMapper()},\n", + " function _(t,e,a){Object.defineProperty(a,\"__esModule\",{value:!0});const r=t(1),n=t(134),s=t(136),i=r.__importStar(t(18));class c extends s.Mapper{constructor(t){super(t)}static init_CategoricalPatternMapper(){this.define({factors:[i.Array],patterns:[i.Array],start:[i.Number,0],end:[i.Number],default_value:[i.HatchPatternType,\" \"]})}v_compute(t){const e=new Array(t.length);return n.cat_v_compute(t,this.factors,this.patterns,e,this.start,this.end,this.default_value),e}}a.CategoricalPatternMapper=c,c.__name__=\"CategoricalPatternMapper\",c.init_CategoricalPatternMapper()},\n", + " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(135),s=t(90),l=t(9),i=t(8);class c extends n.ColorMapper{constructor(t){super(t),this._scan_data=null}static init_ContinuousColorMapper(){this.define(({Number:t,String:o,Null:e,Ref:n,Color:l,Or:i,Tuple:c,Array:a})=>({high:[i(t,e),null],low:[i(t,e),null],high_color:[i(l,e),null],low_color:[i(l,e),null],domain:[a(c(n(s.GlyphRenderer),i(o,a(o)))),[]]}))}connect_signals(){super.connect_signals();const t=()=>{for(const[t]of this.domain)this.connect(t.view.change,()=>this.update_data()),this.connect(t.data_source.selected.change,()=>this.update_data())};this.connect(this.properties.domain.change,()=>t()),t()}update_data(){const{domain:t,palette:o}=this,e=[...this._collect(t)];this._scan_data=this.scan(e,o.length),this.change.emit()}get metrics(){return null==this._scan_data&&this.update_data(),this._scan_data}*_collect(t){for(const[o,e]of t)for(const t of i.isArray(e)?e:[e]){let e=o.data_source.get_column(t);e=o.view.indices.select(e);const n=o.view.masked,s=o.data_source.selected.indices;let c;if(null!=n&&s.length>0?c=l.intersection([...n],s):null!=n?c=[...n]:s.length>0&&(c=s),null!=c&&(e=l.map(c,t=>e[t])),e.length>0&&!i.isNumber(e[0]))for(const t of e)yield*t;else yield*e}}_v_compute(t,o,e,n){const{nan_color:s}=n;let{low_color:i,high_color:c}=n;null==i&&(i=e[0]),null==c&&(c=e[e.length-1]);const{domain:a}=this,r=l.is_empty(a)?t:[...this._collect(a)];this._scan_data=this.scan(r,e.length);for(let n=0,l=t.length;na?e:r[l]}}o.LinearColorMapper=a,a.__name__=\"LinearColorMapper\"},\n", + " function _(o,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=o(140),r=o(12);class l extends e.ContinuousColorMapper{constructor(o){super(o)}scan(o,t){const n=null!=this.low?this.low:r.min(o),e=null!=this.high?this.high:r.max(o);return{max:e,min:n,scale:t/(Math.log(e)-Math.log(n))}}cmap(o,t,n,e,r){const l=t.length-1;if(o>r.max)return e;if(o==r.max)return t[l];if(ol&&(s=l),t[s]}}n.LogColorMapper=l,l.__name__=\"LogColorMapper\"},\n", + " function _(n,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=n(140),o=n(12);class t extends i.ContinuousColorMapper{constructor(n){super(n)}cmap(n,e,r,i,t){if(nt.binning[t.binning.length-1])return i;return e[o.left_edge_index(n,t.binning)]}}r.ScanningColorMapper=t,t.__name__=\"ScanningColorMapper\"},\n", + " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=n(1),o=n(143),r=n(12),s=n(9),a=i.__importStar(n(18)),l=n(19);class p extends o.ScanningColorMapper{constructor(n){super(n)}static init_EqHistColorMapper(){this.define({bins:[a.Int,65536]})}scan(n,t){const e=null!=this.low?this.low:r.min(n),i=null!=this.high?this.high:r.max(n),o=this.bins,a=s.linspace(e,i,o+1),p=r.bin_counts(n,a),c=new Array(o);for(let n=0,t=a.length;nn/u);let m=t-1,_=[],M=0,f=2*t;for(;m!=t&&M<4&&0!=m;){const n=f/m;if(n>1e3)break;f=Math.round(Math.max(t*n,t));const e=s.range(0,f),i=r.map(g,n=>n*(f-1));_=r.interpolate(e,i,c);m=s.uniq(_).length-1,M++}if(0==m){_=[e,i];for(let n=0;nthis._sorted_dirty=!0)}v_compute(t){const e=new i.NumberArray(t.length);for(let r=0;rs*(e[t]-e[r])),this._x_sorted=new i.NumberArray(n),this._y_sorted=new i.NumberArray(n);for(let t=0;tthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(t==this._x_sorted[0])return this._y_sorted[0];const s=_.find_last_index(this._x_sorted,s=>sthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}let e;switch(this.mode){case\"after\":e=i.find_last_index(this._x_sorted,e=>t>=e);break;case\"before\":e=i.find_index(this._x_sorted,e=>t<=e);break;case\"center\":{const r=this._x_sorted.map(e=>Math.abs(e-t)),s=i.min(r);e=i.find_index(r,t=>s===t);break}default:throw new Error(\"unknown mode: \"+this.mode)}return-1!=e?this._y_sorted[e]:NaN}}r.StepInterpolator=n,n.__name__=\"StepInterpolator\",n.init_StepInterpolator()},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=e(1),a=e(147),i=e(24),s=e(9),o=e(12),c=r.__importStar(e(18));class _ extends a.Scale{constructor(e){super(e)}static init_LinearInterpolationScale(){this.internal({binning:[c.Array]})}compute(e){return e}v_compute(e){const t=o.norm(e,this.source_range.start,this.source_range.end),n=s.linspace(0,1,this.binning.length),r=o.interpolate(t,n,this.binning),a=o.norm(r,this.source_range.start,this.source_range.end),c=this.target_range.end-this.target_range.start,_=o.map(a,e=>this.target_range.start+e*c);return new i.NumberArray(_)}invert(e){return e}v_invert(e){return new i.NumberArray(e)}}n.LinearInterpolationScale=_,_.__name__=\"LinearInterpolationScale\",_.init_LinearInterpolationScale()},\n", + " function _(t,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const a=t(146),r=t(24);class s extends a.ContinuousScale{constructor(t){super(t)}compute(t){const[e,o,a,r]=this._compute_state();let s;if(0==a)s=0;else{const n=(Math.log(t)-r)/a;s=isFinite(n)?n*e+o:NaN}return s}v_compute(t){const[e,o,a,s]=this._compute_state(),n=new r.NumberArray(t.length);if(0==a)for(let e=0;ethis.render()):this.connect(this.model.change,()=>this.plot_view.request_render())}render(){this.model.visible||\"css\"!=this.model.render_mode||a.undisplay(this.el),super.render()}_calculate_text_dimensions(e,t){const{width:s}=e.measureText(t),{height:i}=o.measure_font(this.visuals.text.font_value());return[s,i]}_calculate_bounding_box_dimensions(e,t){const[s,i]=this._calculate_text_dimensions(e,t);let l,a;switch(e.textAlign){case\"left\":l=0;break;case\"center\":l=-s/2;break;case\"right\":l=-s;break;default:r.unreachable()}switch(e.textBaseline){case\"top\":a=0;break;case\"middle\":a=-.5*i;break;case\"bottom\":a=-1*i;break;case\"alphabetic\":a=-.8*i;break;case\"hanging\":a=-.17*i;break;case\"ideographic\":a=-.83*i;break;default:r.unreachable()}return[l,a,s,i]}_canvas_text(e,t,s,i,l){this.visuals.text.set_value(e);const a=this._calculate_bounding_box_dimensions(e,t);e.save(),e.beginPath(),e.translate(s,i),l&&e.rotate(l),e.rect(a[0],a[1],a[2],a[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),e.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(e),e.stroke()),this.visuals.text.doit&&(this.visuals.text.set_value(e),e.fillText(t,0,0)),e.restore()}_css_text(e,t,s,i,l){const{el:n}=this;r.assert(null!=n),a.undisplay(n),this.visuals.text.set_value(e);const o=this._calculate_bounding_box_dimensions(e,t),_=this.visuals.border_line.line_dash.value().length<2?\"solid\":\"dashed\";this.visuals.border_line.set_value(e),this.visuals.background_fill.set_value(e),n.style.position=\"absolute\",n.style.left=s+o[0]+\"px\",n.style.top=i+o[1]+\"px\",n.style.color=\"\"+this.visuals.text.text_color.value(),n.style.opacity=\"\"+this.visuals.text.text_alpha.value(),n.style.font=\"\"+this.visuals.text.font_value(),n.style.lineHeight=\"normal\",l&&(n.style.transform=`rotate(${l}rad)`),this.visuals.background_fill.doit&&(n.style.backgroundColor=\"\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(n.style.borderStyle=\"\"+_,n.style.borderWidth=this.visuals.border_line.line_width.value()+\"px\",n.style.borderColor=\"\"+this.visuals.border_line.color_value()),n.textContent=t,a.display(n)}}s.TextAnnotationView=_,_.__name__=\"TextAnnotationView\";class u extends l.Annotation{constructor(e){super(e)}static init_TextAnnotation(){this.define({render_mode:[n.RenderMode,\"canvas\"]})}}s.TextAnnotation=u,u.__name__=\"TextAnnotation\",u.init_TextAnnotation()},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),o=t(161),l=t(85),a=i.__importStar(t(28)),n=t(72),r=i.__importStar(t(18));class _ extends o.TextAnnotationView{initialize(){if(super.initialize(),this.set_data(this.model.source),\"css\"==this.model.render_mode)for(let t=0,e=this._text.length;t{this.set_data(this.model.source),this.render()}),this.connect(this.model.source.streaming,()=>{this.set_data(this.model.source),this.render()}),this.connect(this.model.source.patching,()=>{this.set_data(this.model.source),this.render()}),this.connect(this.model.source.change,()=>{this.set_data(this.model.source),this.render()})):(this.connect(this.model.change,()=>{this.set_data(this.model.source),this.plot_view.request_render()}),this.connect(this.model.source.streaming,()=>{this.set_data(this.model.source),this.plot_view.request_render()}),this.connect(this.model.source.patching,()=>{this.set_data(this.model.source),this.plot_view.request_render()}),this.connect(this.model.source.change,()=>{this.set_data(this.model.source),this.plot_view.request_render()}))}set_data(t){super.set_data(t),this.visuals.warm_cache(t)}_map_data(){const t=this.coordinates.x_scale,e=this.coordinates.y_scale,s=null!=this.panel?this.panel:this.plot_view.frame;return[\"data\"==this.model.x_units?t.v_compute(this._x):s.xview.v_compute(this._x),\"data\"==this.model.y_units?e.v_compute(this._y):s.yview.v_compute(this._y)]}_render(){const t=\"canvas\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),{ctx:e}=this.layer,[s,i]=this._map_data();for(let o=0,l=this._text.length;onew l.ColumnDataSource]}),this.override({background_fill_color:null,border_line_color:null})}}s.LabelSet=h,h.__name__=\"LabelSet\",h.init_LabelSet()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),l=t(36),n=s.__importStar(t(28)),h=s.__importStar(t(18)),a=t(15),_=t(159),o=t(79),r=t(9),d=t(8),c=t(11);class g extends l.AnnotationView{cursor(t,e){return\"none\"==this.model.click_policy?null:\"pointer\"}get legend_padding(){return null!=this.visuals.border_line.line_color.value()?this.model.padding:0}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_render()),this.connect(this.model.item_change,()=>this.plot_view.request_render())}compute_legend_bbox(){const t=this.model.get_legend_names(),{glyph_height:e,glyph_width:i}=this.model,{label_height:s,label_width:l}=this.model;this.max_label_height=r.max([_.measure_font(this.visuals.label_text.font_value()).height,s,e]);const{ctx:n}=this.layer;n.save(),this.visuals.label_text.set_value(n),this.text_widths=new Map;for(const e of t)this.text_widths.set(e,r.max([n.measureText(e).width,l]));this.visuals.title_text.set_value(n),this.title_height=this.model.title?_.measure_font(this.visuals.title_text.font_value()).height+this.model.title_standoff:0,this.title_width=this.model.title?n.measureText(this.model.title).width:0,n.restore();const h=Math.max(r.max([...this.text_widths.values()]),0),a=this.model.margin,{legend_padding:g}=this,m=this.model.spacing,{label_standoff:b}=this.model;let u,f;if(\"vertical\"==this.model.orientation)u=t.length*this.max_label_height+Math.max(t.length-1,0)*m+2*g+this.title_height,f=r.max([h+i+b+2*g,this.title_width+2*g]);else{let e=2*g+Math.max(t.length-1,0)*m;for(const[,t]of this.text_widths)e+=r.max([t,l])+i+b;f=r.max([this.title_width+2*g,e]),u=this.max_label_height+this.title_height+2*g}const x=null!=this.panel?this.panel:this.plot_view.frame,[p,w]=x.bbox.ranges,{location:v}=this.model;let y,k;if(d.isString(v))switch(v){case\"top_left\":y=p.start+a,k=w.start+a;break;case\"top_center\":y=(p.end+p.start)/2-f/2,k=w.start+a;break;case\"top_right\":y=p.end-a-f,k=w.start+a;break;case\"bottom_right\":y=p.end-a-f,k=w.end-a-u;break;case\"bottom_center\":y=(p.end+p.start)/2-f/2,k=w.end-a-u;break;case\"bottom_left\":y=p.start+a,k=w.end-a-u;break;case\"center_left\":y=p.start+a,k=(w.end+w.start)/2-u/2;break;case\"center\":y=(p.end+p.start)/2-f/2,k=(w.end+w.start)/2-u/2;break;case\"center_right\":y=p.end-a-f,k=(w.end+w.start)/2-u/2}else if(d.isArray(v)&&2==v.length){const[t,e]=v;y=x.xview.compute(t),k=x.yview.compute(e)-u}else c.unreachable();return new o.BBox({left:y,top:k,width:f,height:u})}interactive_bbox(){return this.compute_legend_bbox()}interactive_hit(t,e){return this.interactive_bbox().contains(t,e)}on_hit(t,e){let i;const{glyph_width:s}=this.model,{legend_padding:l}=this,n=this.model.spacing,{label_standoff:h}=this.model;let a=i=l;const _=this.compute_legend_bbox(),r=\"vertical\"==this.model.orientation;for(const d of this.model.items){const c=d.get_labels_list_from_label_prop();for(const g of c){const c=_.x+a,m=_.y+i+this.title_height;let b,u;[b,u]=r?[_.width-2*l,this.max_label_height]:[this.text_widths.get(g)+s+h,this.max_label_height];if(new o.BBox({left:c,top:m,width:b,height:u}).contains(t,e)){switch(this.model.click_policy){case\"hide\":for(const t of d.renderers)t.visible=!t.visible;break;case\"mute\":for(const t of d.renderers)t.muted=!t.muted}return!0}r?i+=this.max_label_height+n:a+=this.text_widths.get(g)+s+h+n}}return!1}_render(){if(0==this.model.items.length)return;for(const t of this.model.items)t.legend=this.model;const{ctx:t}=this.layer,e=this.compute_legend_bbox();t.save(),this._draw_legend_box(t,e),this._draw_legend_items(t,e),this.model.title&&this._draw_title(t,e),t.restore()}_draw_legend_box(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.set_value(t),t.fill(),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke())}_draw_legend_items(t,e){const{glyph_width:i,glyph_height:s}=this.model,{legend_padding:l}=this,n=this.model.spacing,{label_standoff:h}=this.model;let a=l,_=l;const o=\"vertical\"==this.model.orientation;for(const d of this.model.items){const c=d.get_labels_list_from_label_prop(),g=d.get_field_from_label_prop();if(0==c.length)continue;const m=(()=>{switch(this.model.click_policy){case\"none\":return!0;case\"hide\":return r.every(d.renderers,t=>t.visible);case\"mute\":return r.every(d.renderers,t=>!t.muted)}})();for(const r of c){const c=e.x+a,b=e.y+_+this.title_height,u=c+i,f=b+s;o?_+=this.max_label_height+n:a+=this.text_widths.get(r)+i+h+n,this.visuals.label_text.set_value(t),t.fillText(r,u+h,b+this.max_label_height/2);for(const e of d.renderers){this.plot_view.renderer_views.get(e).draw_legend(t,c,u,b,f,g,r,d.index)}if(!m){let s,n;[s,n]=o?[e.width-2*l,this.max_label_height]:[this.text_widths.get(r)+i+h,this.max_label_height],t.beginPath(),t.rect(c,b,s,n),this.visuals.inactive_fill.set_value(t),t.fill()}}}}_draw_title(t,e){this.visuals.title_text.doit&&(t.save(),t.translate(e.x0,e.y0+this.title_height),this.visuals.title_text.set_value(t),t.fillText(this.model.title,this.legend_padding,this.legend_padding-this.model.title_standoff),t.restore())}_get_size(){const{width:t,height:e}=this.compute_legend_bbox();return{width:t+2*this.model.margin,height:e+2*this.model.margin}}}i.LegendView=g,g.__name__=\"LegendView\";class m extends l.Annotation{constructor(t){super(t)}initialize(){super.initialize(),this.item_change=new a.Signal0(this,\"item_change\")}static init_Legend(){this.prototype.default_view=g,this.mixins([[\"label_\",n.Text],[\"title_\",n.Text],[\"inactive_\",n.Fill],[\"border_\",n.Line],[\"background_\",n.Fill]]),this.define({orientation:[h.Orientation,\"vertical\"],location:[h.Any,\"top_right\"],title:[h.String],title_standoff:[h.Number,5],label_standoff:[h.Number,5],glyph_height:[h.Number,20],glyph_width:[h.Number,20],label_height:[h.Number,20],label_width:[h.Number,20],margin:[h.Number,10],padding:[h.Number,10],spacing:[h.Number,3],items:[h.Array,[]],click_policy:[h.Any,\"none\"]}),this.override({border_line_color:\"#e5e5e5\",border_line_alpha:.5,border_line_width:1,background_fill_color:\"#ffffff\",background_fill_alpha:.95,inactive_fill_color:\"white\",inactive_fill_alpha:.7,label_text_font_size:\"13px\",label_text_baseline:\"middle\",title_text_font_size:\"13px\",title_text_font_style:\"italic\"})}get_legend_names(){const t=[];for(const e of this.items){const i=e.get_labels_list_from_label_prop();t.push(...i)}return t}}i.Legend=m,m.__name__=\"Legend\",m.init_Legend()},\n", + " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(1),l=e(81),i=e(86),s=e(165),o=t.__importStar(e(18)),_=e(19),a=e(9);class u extends l.Model{constructor(e){super(e)}static init_LegendItem(){this.define({label:[o.StringSpec,null],renderers:[o.Array,[]],index:[o.Number,null]})}_check_data_sources_on_renderers(){if(null!=this.get_field_from_label_prop()){if(this.renderers.length<1)return!1;const e=this.renderers[0].data_source;if(null!=e)for(const r of this.renderers)if(r.data_source!=e)return!1}return!0}_check_field_label_on_data_source(){const e=this.get_field_from_label_prop();if(null!=e){if(this.renderers.length<1)return!1;const r=this.renderers[0].data_source;if(null!=r&&!a.includes(r.columns(),e))return!1}return!0}initialize(){super.initialize(),this.legend=null,this.connect(this.change,()=>{var e;return null===(e=this.legend)||void 0===e?void 0:e.item_change.emit()});this._check_data_sources_on_renderers()||_.logger.error(\"Non matching data sources on legend item renderers\");this._check_field_label_on_data_source()||_.logger.error(\"Bad column name on label: \"+this.label)}get_field_from_label_prop(){const{label:e}=this;return s.isField(e)?e.field:null}get_labels_list_from_label_prop(){if(s.isValue(this.label)){const{value:e}=this.label;return null!=e?[e]:[]}const e=this.get_field_from_label_prop();if(null!=e){let r;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\"No source found\"];if(r=this.renderers[0].data_source,r instanceof i.ColumnarDataSource){const n=r.get_column(e);return null!=n?a.uniq(Array.from(n)):[\"Invalid field\"]}}return[]}}n.LegendItem=u,u.__name__=\"LegendItem\",u.init_LegendItem()},\n", + " function _(e,i,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(8);n.isValue=function(e){return t.isPlainObject(e)&&\"value\"in e},n.isField=function(e){return t.isPlainObject(e)&&\"field\"in e}},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),s=t(36),o=n.__importStar(t(28)),l=t(15),a=n.__importStar(t(18));class r extends s.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_render()),this.connect(this.model.data_update,()=>this.plot_view.request_render())}_render(){const{xs:t,ys:e}=this.model;if(t.length!=e.length)return;if(t.length<3||e.length<3)return;const{frame:i}=this.plot_view,{ctx:n}=this.layer;for(let s=0,o=t.length;sthis.plot_view.request_render())}_render(){const e=this.model.gradient,t=this.model.y_intercept;if(null==e||null==t)return;const{frame:i}=this.plot_view,n=this.coordinates.x_scale,o=this.coordinates.y_scale,s=i.bbox.top,l=s+i.bbox.height,r=(o.invert(s)-t)/e,_=(o.invert(l)-t)/e,a=n.compute(r),c=n.compute(_),{ctx:p}=this.layer;p.save(),p.beginPath(),this.visuals.line.set_value(p),p.moveTo(a,s),p.lineTo(c,l),p.stroke(),p.restore()}}i.SlopeView=r,r.__name__=\"SlopeView\";class _ extends o.Annotation{constructor(e){super(e)}static init_Slope(){this.prototype.default_view=r,this.mixins(s.Line),this.define({gradient:[l.Number,null],y_intercept:[l.Number,null]}),this.override({line_color:\"black\"})}}i.Slope=_,_.__name__=\"Slope\",_.init_Slope()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),o=e(36),s=n.__importStar(e(28)),a=n.__importStar(e(18));class l extends o.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_paint(this))}_render(){const{location:e}=this.model;if(null==e)return;const{frame:t}=this.plot_view,i=this.coordinates.x_scale,n=this.coordinates.y_scale,o=(t,i)=>\"data\"==this.model.location_units?t.compute(e):this.model.for_hover?e:i.compute(e);let s,a,l,r;\"width\"==this.model.dimension?(l=o(n,t.yview),a=t.bbox.left,r=t.bbox.width,s=this.model.properties.line_width.value()):(l=t.bbox.top,a=o(i,t.xview),r=this.model.properties.line_width.value(),s=t.bbox.height);const{ctx:_}=this.layer;_.save(),_.beginPath(),this.visuals.line.set_value(_),_.moveTo(a,l),\"width\"==this.model.dimension?_.lineTo(a+r,l):_.lineTo(a,l+s),_.stroke(),_.restore()}}i.SpanView=l,l.__name__=\"SpanView\";class r extends o.Annotation{constructor(e){super(e)}static init_Span(){this.prototype.default_view=l,this.mixins(s.Line),this.define({render_mode:[a.RenderMode,\"canvas\"],location:[a.Number,null],location_units:[a.SpatialUnits,\"data\"],dimension:[a.Dimension,\"width\"]}),this.override({line_color:\"black\"}),this.internal({for_hover:[a.Boolean,!1]})}}i.Span=r,r.__name__=\"Span\",r.init_Span()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const l=t(1),s=t(161),a=t(74),n=l.__importStar(t(28)),o=l.__importStar(t(18));class r extends s.TextAnnotationView{initialize(){super.initialize(),this.visuals.text=new a.Text(this.model)}_get_location(){const t=this.panel,e=this.model.offset;let i,l;const{bbox:s}=t;switch(t.side){case\"above\":case\"below\":switch(this.model.vertical_align){case\"top\":l=s.top+5;break;case\"middle\":l=s.vcenter;break;case\"bottom\":l=s.bottom-5}switch(this.model.align){case\"left\":i=s.left+e;break;case\"center\":i=s.hcenter;break;case\"right\":i=s.right-e}break;case\"left\":switch(this.model.vertical_align){case\"top\":i=s.left-5;break;case\"middle\":i=s.hcenter;break;case\"bottom\":i=s.right+5}switch(this.model.align){case\"left\":l=s.bottom-e;break;case\"center\":l=s.vcenter;break;case\"right\":l=s.top+e}break;case\"right\":switch(this.model.vertical_align){case\"top\":i=s.right-5;break;case\"middle\":i=s.hcenter;break;case\"bottom\":i=s.left+5}switch(this.model.align){case\"left\":l=s.top+e;break;case\"center\":l=s.vcenter;break;case\"right\":l=s.bottom-e}}return[i,l]}_render(){const{text:t}=this.model;if(null==t||0==t.length)return;this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;const[e,i]=this._get_location(),l=this.panel.get_label_angle_heuristic(\"parallel\");(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,t,e,i,l)}_get_size(){const{text:t}=this.model;if(null==t||0==t.length)return{width:0,height:0};{this.visuals.text.set_value(this.layer.ctx);const{width:e,ascent:i}=this.layer.ctx.measureText(t);return{width:e,height:i*this.visuals.text.text_line_height.value()+10}}}}i.TitleView=r,r.__name__=\"TitleView\";class c extends s.TextAnnotation{constructor(t){super(t)}static init_Title(){this.prototype.default_view=r,this.mixins([[\"border_\",n.Line],[\"background_\",n.Fill]]),this.define({text:[o.String],text_font:[o.Font,\"helvetica\"],text_font_size:[o.StringSpec,\"13px\"],text_font_style:[o.FontStyle,\"bold\"],text_color:[o.ColorSpec,\"#444444\"],text_alpha:[o.NumberSpec,1],text_line_height:[o.Number,1],vertical_align:[o.VerticalAlign,\"bottom\"],align:[o.TextAlign,\"left\"],offset:[o.Number,0]}),this.override({background_fill_color:null,border_line_color:null}),this.internal({text_align:[o.TextAlign,\"left\"],text_baseline:[o.TextBaseline,\"bottom\"]})}}i.Title=c,c.__name__=\"Title\",c.init_Title()},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(1),l=e(36),s=e(115),a=e(72),n=e(79),r=o.__importStar(e(18));class _ extends l.AnnotationView{constructor(){super(...arguments),this.rotate=!0,this._invalidate_toolbar=!0,this._previous_bbox=new n.BBox}initialize(){super.initialize(),this.el=a.div(),this.plot_view.canvas_view.add_event(this.el)}async lazy_initialize(){this._toolbar_view=await s.build_view(this.model.toolbar,{parent:this}),this.plot_view.visibility_callbacks.push(e=>this._toolbar_view.set_visibility(e))}remove(){this._toolbar_view.remove(),a.remove(this.el),super.remove()}render(){this.model.visible||a.undisplay(this.el),super.render()}_render(){const{bbox:e}=this.panel;this._previous_bbox.equals(e)||(a.position(this.el,e),this._previous_bbox=e),this._invalidate_toolbar&&(this.el.style.position=\"absolute\",this.el.style.overflow=\"hidden\",this._toolbar_view.render(),a.empty(this.el),this.el.appendChild(this._toolbar_view.el),this._invalidate_toolbar=!1),a.display(this.el)}_get_size(){const{tools:e,logo:i}=this.model.toolbar;return{width:30*e.length+(null!=i?25:0),height:30}}}t.ToolbarPanelView=_,_.__name__=\"ToolbarPanelView\";class h extends l.Annotation{constructor(e){super(e)}static init_ToolbarPanel(){this.prototype.default_view=_,this.define({toolbar:[r.Instance]})}}t.ToolbarPanel=h,h.__name__=\"ToolbarPanel\",h.init_ToolbarPanel()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),l=t(36),o=t(72),n=s.__importStar(t(18)),a=t(172),h=t(173),r=s.__importDefault(t(174));class c extends l.AnnotationView{initialize(){super.initialize(),this.el=o.div({class:a.bk_tooltip}),o.undisplay(this.el),this.plot_view.canvas_view.add_overlay(this.el)}remove(){o.remove(this.el),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.content.change,()=>this.render()),this.connect(this.model.properties.position.change,()=>this._reposition())}styles(){return[...super.styles(),r.default]}render(){this.model.visible||o.undisplay(this.el),super.render()}_render(){const{content:t}=this.model;null!=t?(o.empty(this.el),o.classes(this.el).toggle(a.bk_tooltip_custom,this.model.custom),this.el.appendChild(t),this.model.show_arrow&&this.el.classList.add(a.bk_tooltip_arrow)):o.undisplay(this.el)}_reposition(){const{position:t}=this.model;if(null==t)return void o.undisplay(this.el);const[e,i]=t,s=(()=>{const t=this.parent.layout.bbox.relativize(),{attachment:s}=this.model;switch(s){case\"horizontal\":return eo.div()],custom:[n.Any]})}clear(){this.position=null}}i.Tooltip=d,d.__name__=\"Tooltip\",d.init_Tooltip()},\n", + " function _(o,t,l){Object.defineProperty(l,\"__esModule\",{value:!0}),l.bk_tooltip=\"bk-tooltip\",l.bk_tooltip_arrow=\"bk-tooltip-arrow\",l.bk_tooltip_custom=\"bk-tooltip-custom\",l.bk_tooltip_row_label=\"bk-tooltip-row-label\",l.bk_tooltip_row_value=\"bk-tooltip-row-value\",l.bk_tooltip_color_block=\"bk-tooltip-color-block\"},\n", + " function _(e,b,k){Object.defineProperty(k,\"__esModule\",{value:!0}),k.bk_active=\"bk-active\",k.bk_inline=\"bk-inline\",k.bk_left=\"bk-left\",k.bk_right=\"bk-right\",k.bk_above=\"bk-above\",k.bk_below=\"bk-below\",k.bk_up=\"bk-up\",k.bk_down=\"bk-down\",k.bk_side=function(e){switch(e){case\"above\":return k.bk_above;case\"below\":return k.bk_below;case\"left\":return k.bk_left;case\"right\":return k.bk_right}}},\n", + " function _(o,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root {\\n /* Same border color used everywhere */\\n /* Gray of icons */\\n}\\n.bk-root .bk-tooltip {\\n font-weight: 300;\\n font-size: 12px;\\n position: absolute;\\n padding: 5px;\\n border: 1px solid #e5e5e5;\\n color: #2f2f2f;\\n background-color: white;\\n pointer-events: none;\\n opacity: 0.95;\\n z-index: 100;\\n}\\n.bk-root .bk-tooltip > div:not(:first-child) {\\n /* gives space when multiple elements are being hovered over */\\n margin-top: 5px;\\n border-top: #e5e5e5 1px dashed;\\n}\\n.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before {\\n position: absolute;\\n margin: -7px 0 0 0;\\n top: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 7px 0 7px 0;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n left: -10px;\\n border-right-width: 10px;\\n border-right-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-left::before {\\n left: -10px;\\n border-right-width: 10px;\\n border-right-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after {\\n position: absolute;\\n margin: -7px 0 0 0;\\n top: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 7px 0 7px 0;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n right: -10px;\\n border-left-width: 10px;\\n border-left-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-right::after {\\n right: -10px;\\n border-left-width: 10px;\\n border-left-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-above::before {\\n position: absolute;\\n margin: 0 0 0 -7px;\\n left: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 0 7px 0 7px;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n top: -10px;\\n border-bottom-width: 10px;\\n border-bottom-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-below::after {\\n position: absolute;\\n margin: 0 0 0 -7px;\\n left: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 0 7px 0 7px;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n bottom: -10px;\\n border-top-width: 10px;\\n border-top-color: #909599;\\n}\\n.bk-root .bk-tooltip-row-label {\\n text-align: right;\\n color: #26aae1;\\n /* blue from toolbar highlighting */\\n}\\n.bk-root .bk-tooltip-row-value {\\n color: default;\\n /* seems to be necessary for notebook */\\n}\\n.bk-root .bk-tooltip-color-block {\\n width: 12px;\\n height: 12px;\\n margin-left: 5px;\\n margin-right: 5px;\\n outline: #dddddd solid 1px;\\n display: inline-block;\\n}\\n'},\n", + " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(1),r=e(123),o=e(84),h=e(28),n=i.__importStar(e(18));class l extends r.UpperLowerView{connect_signals(){super.connect_signals(),this.connect(this.model.source.streaming,()=>this.set_data(this.model.source)),this.connect(this.model.source.patching,()=>this.set_data(this.model.source)),this.connect(this.model.source.change,()=>this.set_data(this.model.source))}_render(){this._map_data();const{ctx:e}=this.layer;if(this.visuals.line.doit)for(let s=0,t=this._lower_sx.length;snew o.TeeHead({level:\"underlay\",size:10})],upper_head:[n.Instance,()=>new o.TeeHead({level:\"underlay\",size:10})]}),this.override({level:\"underlay\"})}}t.Whisker=_,_.__name__=\"Whisker\",_.init_Whisker()},\n", + " function _(i,a,e){Object.defineProperty(e,\"__esModule\",{value:!0});var r=i(177);e.Axis=r.Axis;var s=i(179);e.CategoricalAxis=s.CategoricalAxis;var x=i(182);e.ContinuousAxis=x.ContinuousAxis;var A=i(183);e.DatetimeAxis=A.DatetimeAxis;var o=i(184);e.LinearAxis=o.LinearAxis;var t=i(197);e.LogAxis=t.LogAxis;var n=i(200);e.MercatorAxis=n.MercatorAxis},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),a=t(178),l=s.__importStar(t(28)),n=s.__importStar(t(18)),o=t(9),r=t(8),_=t(98),{abs:h,min:c,max:d}=Math;class m extends a.GuideRendererView{constructor(){super(...arguments),this.rotate=!0}get panel(){return this.layout}get is_renderable(){const[t,e]=this.ranges;return t.is_valid&&e.is_valid}_render(){var t;if(!this.is_renderable)return;const e={tick:this._tick_extent(),tick_label:this._tick_label_extents(),axis_label:this._axis_label_extent()},{tick_coords:i}=this,s=this.layer.ctx;s.save(),this._draw_rule(s,e),this._draw_major_ticks(s,e,i),this._draw_minor_ticks(s,e,i),this._draw_major_labels(s,e,i),this._draw_axis_label(s,e,i),null===(t=this._paint)||void 0===t||t.call(this,s,e,i),s.restore()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_layout())}get_size(){if(this.model.visible&&null==this.model.fixed_location&&this.is_renderable){const t=this._get_size();return{width:0,height:Math.round(t)}}return{width:0,height:0}}_get_size(){return this._tick_extent()+this._tick_label_extent()+this._axis_label_extent()}get needs_clip(){return null!=this.model.fixed_location}_draw_rule(t,e){if(!this.visuals.axis_line.doit)return;const[i,s]=this.rule_coords,[a,l]=this.coordinates.map_to_screen(i,s),[n,o]=this.normals,[r,_]=this.offsets;this.visuals.axis_line.set_value(t),t.beginPath(),t.moveTo(Math.round(a[0]+n*r),Math.round(l[0]+o*_));for(let e=1;ec&&(c=o)}return c>0&&(c+=s),c}get normals(){return this.panel.normals}get dimension(){return this.panel.dimension}compute_labels(t){const e=this.model.formatter.doFormat(t,this);for(let i=0;ih(n-o)?(t=d(c(a,l),n),s=c(d(a,l),o)):(t=c(a,l),s=d(a,l)),[t,s]}}get rule_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,l=[new Array(2),new Array(2)];return l[t][0]=Math.max(s,i.min),l[t][1]=Math.min(a,i.max),l[t][0]>l[t][1]&&(l[t][0]=l[t][1]=NaN),l[e][0]=this.loc,l[e][1]=this.loc,l}get tick_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,l=this.model.ticker.get_ticks(s,a,i,this.loc,{}),n=l.major,o=l.minor,r=[[],[]],_=[[],[]],[h,c]=[i.min,i.max];for(let i=0;ic||(r[t].push(n[i]),r[e].push(this.loc));for(let i=0;ic||(_[t].push(o[i]),_[e].push(this.loc));return{major:r,minor:_}}get loc(){const{fixed_location:t}=this.model;if(null!=t){if(r.isNumber(t))return t;const[,e]=this.ranges;if(e instanceof _.FactorRange)return e.synthetic(t);throw new Error(\"unexpected\")}const[,e]=this.ranges;switch(this.panel.side){case\"left\":case\"below\":return e.start;case\"right\":case\"above\":return e.end}}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box})}}i.AxisView=m,m.__name__=\"AxisView\";class b extends a.GuideRenderer{constructor(t){super(t)}static init_Axis(){this.prototype.default_view=m,this.mixins([[\"axis_\",l.Line],[\"major_tick_\",l.Line],[\"minor_tick_\",l.Line],[\"major_label_\",l.Text],[\"axis_label_\",l.Text]]),this.define({bounds:[n.Any,\"auto\"],ticker:[n.Instance],formatter:[n.Instance],axis_label:[n.String,\"\"],axis_label_standoff:[n.Int,5],major_label_standoff:[n.Int,5],major_label_orientation:[n.Any,\"horizontal\"],major_label_overrides:[n.Any,{}],major_tick_in:[n.Number,2],major_tick_out:[n.Number,6],minor_tick_in:[n.Number,0],minor_tick_out:[n.Number,4],fixed_location:[n.Any,null]}),this.override({axis_line_color:\"black\",major_tick_line_color:\"black\",minor_tick_line_color:\"black\",major_label_text_font_size:\"11px\",major_label_text_align:\"center\",major_label_text_baseline:\"alphabetic\",axis_label_text_font_size:\"13px\",axis_label_text_font_style:\"italic\"})}}i.Axis=b,b.__name__=\"Axis\",b.init_Axis()},\n", + " function _(e,r,d){Object.defineProperty(d,\"__esModule\",{value:!0});const i=e(70);class n extends i.RendererView{}d.GuideRendererView=n,n.__name__=\"GuideRendererView\";class t extends i.Renderer{constructor(e){super(e)}static init_GuideRenderer(){this.override({level:\"guide\"})}}d.GuideRenderer=t,t.__name__=\"GuideRenderer\",t.init_GuideRenderer()},\n", + " function _(t,s,o){Object.defineProperty(o,\"__esModule\",{value:!0});const e=t(1),i=t(177),r=t(180),a=t(181),l=e.__importStar(t(28)),_=e.__importStar(t(18));class n extends i.AxisView{_paint(t,s,o){this._draw_group_separators(t,s,o)}_draw_group_separators(t,s,o){const[e]=this.ranges,[i,r]=this.computed_bounds;if(!e.tops||e.tops.length<2||!this.visuals.separator_line.doit)return;const a=this.dimension,l=(a+1)%2,_=[[],[]];let n=0;for(let t=0;ti&&ht[1]),s=this.model.formatter.doFormat(t,this);a.push([s,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([i.tops,r.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){const t=i.major.map(t=>t[2]),s=this.model.formatter.doFormat(t,this),o=i.mids.map(t=>t[1]);a.push([s,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([o,r.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),a.push([i.tops,r.tops,this.model.group_label_orientation,this.visuals.group_text])}return a}get tick_coords(){const t=this.dimension,s=(t+1)%2,[o]=this.ranges,[e,i]=this.computed_bounds,r=this.model.ticker.get_ticks(e,i,o,this.loc,{}),a={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return a.major[t]=r.major,a.major[s]=r.major.map(t=>this.loc),3==o.levels&&(a.mids[t]=r.mids,a.mids[s]=r.mids.map(t=>this.loc)),o.levels>1&&(a.tops[t]=r.tops,a.tops[s]=r.tops.map(t=>this.loc)),a}}o.CategoricalAxisView=n,n.__name__=\"CategoricalAxisView\";class h extends i.Axis{constructor(t){super(t)}static init_CategoricalAxis(){this.prototype.default_view=n,this.mixins([[\"separator_\",l.Line],[\"group_\",l.Text],[\"subgroup_\",l.Text]]),this.define({group_label_orientation:[_.Any,\"parallel\"],subgroup_label_orientation:[_.Any,\"parallel\"]}),this.override({ticker:()=>new r.CategoricalTicker,formatter:()=>new a.CategoricalTickFormatter,separator_line_color:\"lightgrey\",separator_line_width:2,group_text_font_style:\"bold\",group_text_font_size:\"11px\",group_text_color:\"grey\",subgroup_text_font_style:\"bold\",subgroup_text_font_size:\"11px\"})}}o.CategoricalAxis=h,h.__name__=\"CategoricalAxis\",h.init_CategoricalAxis()},\n", + " function _(t,c,e){Object.defineProperty(e,\"__esModule\",{value:!0});const o=t(129);class s extends o.Ticker{constructor(t){super(t)}get_ticks(t,c,e,o,s){return{major:this._collect(e.factors,e,t,c),minor:[],tops:this._collect(e.tops||[],e,t,c),mids:this._collect(e.mids||[],e,t,c)}}_collect(t,c,e,o){const s=[];for(const r of t){const t=c.synthetic(r);t>e&&tnew r.DatetimeTicker,formatter:()=>new a.DatetimeTickFormatter})}}i.DatetimeAxis=_,_.__name__=\"DatetimeAxis\",_.init_DatetimeAxis()},\n", + " function _(e,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=e(177),n=e(182),r=e(130),a=e(126);class _ extends t.AxisView{}s.LinearAxisView=_,_.__name__=\"LinearAxisView\";class c extends n.ContinuousAxis{constructor(e){super(e)}static init_LinearAxis(){this.prototype.default_view=_,this.override({ticker:()=>new a.BasicTicker,formatter:()=>new r.BasicTickFormatter})}}s.LinearAxis=c,c.__name__=\"LinearAxis\",c.init_LinearAxis()},\n", + " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=t(1),i=r.__importDefault(t(186)),n=t(131),o=t(19),a=r.__importStar(t(18)),c=t(187),m=t(9),u=t(8);function h(t){return i.default(t,\"%Y %m %d %H %M %S\").split(/\\s+/).map(t=>parseInt(t,10))}function d(t,s){if(u.isFunction(s))return s(t);{const e=c.sprintf(\"$1%06d\",function(t){return Math.round(t/1e3%1*1e6)}(t));return-1==(s=s.replace(/((^|[^%])(%%)*)%f/,e)).indexOf(\"%\")?s:i.default(t,s)}}const l=[\"microseconds\",\"milliseconds\",\"seconds\",\"minsec\",\"minutes\",\"hourmin\",\"hours\",\"days\",\"months\",\"years\"];class _ extends n.TickFormatter{constructor(t){super(t),this.strip_leading_zeros=!0}static init_DatetimeTickFormatter(){this.define({microseconds:[a.Array,[\"%fus\"]],milliseconds:[a.Array,[\"%3Nms\",\"%S.%3Ns\"]],seconds:[a.Array,[\"%Ss\"]],minsec:[a.Array,[\":%M:%S\"]],minutes:[a.Array,[\":%M\",\"%Mm\"]],hourmin:[a.Array,[\"%H:%M\"]],hours:[a.Array,[\"%Hh\",\"%H:%M\"]],days:[a.Array,[\"%m/%d\",\"%a%d\"]],months:[a.Array,[\"%m/%Y\",\"%b %Y\"]],years:[a.Array,[\"%Y\"]]})}initialize(){super.initialize(),this._update_width_formats()}_update_width_formats(){const t=+i.default(new Date),s=function(s){const e=s.map(s=>d(t,s).length),r=m.sort_by(m.zip(e,s),([t])=>t);return m.unzip(r)};this._width_formats={microseconds:s(this.microseconds),milliseconds:s(this.milliseconds),seconds:s(this.seconds),minsec:s(this.minsec),minutes:s(this.minutes),hourmin:s(this.hourmin),hours:s(this.hours),days:s(this.days),months:s(this.months),years:s(this.years)}}_get_resolution_str(t,s){const e=1.1*t;switch(!1){case!(e<.001):return\"microseconds\";case!(e<1):return\"milliseconds\";case!(e<60):return s>=60?\"minsec\":\"seconds\";case!(e<3600):return s>=3600?\"hourmin\":\"minutes\";case!(e<86400):return\"hours\";case!(e<2678400):return\"days\";case!(e<31536e3):return\"months\";default:return\"years\"}}doFormat(t,s){if(0==t.length)return[];const e=Math.abs(t[t.length-1]-t[0])/1e3,r=e/(t.length-1),i=this._get_resolution_str(r,e),[,[n]]=this._width_formats[i],a=[],c=l.indexOf(i),m={};for(const t of l)m[t]=0;m.seconds=5,m.minsec=4,m.minutes=4,m.hourmin=3,m.hours=3;for(const s of t){let t,e;try{e=h(s),t=d(s,n)}catch(t){o.logger.warn(\"unable to format tick for timestamp value \"+s),o.logger.warn(\" - \"+t),a.push(\"ERR\");continue}let r=!1,u=c;for(;0==e[m[l[u]]];){let n;if(u+=1,u==l.length)break;if((\"minsec\"==i||\"hourmin\"==i)&&!r){if(\"minsec\"==i&&0==e[4]&&0!=e[5]||\"hourmin\"==i&&0==e[3]&&0!=e[4]){n=this._width_formats[l[c-1]][1][0],t=d(s,n);break}r=!0}n=this._width_formats[l[u]][1][0],t=d(s,n)}if(this.strip_leading_zeros){let s=t.replace(/^0+/g,\"\");s!=t&&isNaN(parseInt(s))&&(s=\"0\"+s),a.push(s)}else a.push(t)}return a}}e.DatetimeTickFormatter=_,_.__name__=\"DatetimeTickFormatter\",_.init_DatetimeTickFormatter()},\n", + " function _(e,t,n){!function(e){\"object\"==typeof t&&t.exports?t.exports=e():\"function\"==typeof define?define(e):this.tz=e()}((function(){function e(e,t,n){var r,o=t.day[1];do{r=new Date(Date.UTC(n,t.month,Math.abs(o++)))}while(t.day[0]<7&&r.getUTCDay()!=t.day[0]);return(r={clock:t.clock,sort:r.getTime(),rule:t,save:6e4*t.save,offset:e.offset})[r.clock]=r.sort+6e4*t.time,r.posix?r.wallclock=r[r.clock]+(e.offset+t.saved):r.posix=r[r.clock]-(e.offset+t.saved),r}function t(t,n,r){var o,a,u,i,l,s,c,f=t[t.zone],h=[],T=new Date(r).getUTCFullYear(),g=1;for(o=1,a=f.length;o=T-g;--c)for(o=0,a=s.length;o=h[o][n]&&h[o][h[o].clock]>u[h[o].clock]&&(i=h[o])}return i&&((l=/^(.*)\\/(.*)$/.exec(u.format))?i.abbrev=l[i.save?2:1]:i.abbrev=u.format.replace(/%s/,i.rule.letter)),i||u}function n(e,n){return\"UTC\"==e.zone?n:(e.entry=t(e,\"posix\",n),n+e.entry.offset+e.entry.save)}function r(e,n){return\"UTC\"==e.zone?n:(e.entry=r=t(e,\"wallclock\",n),0<(o=n-r.wallclock)&&o9)t+=s*l[c-10];else{if(a=new Date(n(e,t)),c<7)for(;s;)a.setUTCDate(a.getUTCDate()+i),a.getUTCDay()==c&&(s-=i);else 7==c?a.setUTCFullYear(a.getUTCFullYear()+s):8==c?a.setUTCMonth(a.getUTCMonth()+s):a.setUTCDate(a.getUTCDate()+s);null==(t=r(e,a.getTime()))&&(t=r(e,a.getTime()+864e5*i)-864e5*i)}return t}var a={clock:function(){return+new Date},zone:\"UTC\",entry:{abbrev:\"UTC\",offset:0,save:0},UTC:1,z:function(e,t,n,r){var o,a,u=this.entry.offset+this.entry.save,i=Math.abs(u/1e3),l=[],s=3600;for(o=0;o<3;o++)l.push((\"0\"+Math.floor(i/s)).slice(-2)),i%=s,s/=60;return\"^\"!=n||u?(\"^\"==n&&(r=3),3==r?(a=(a=l.join(\":\")).replace(/:00$/,\"\"),\"^\"!=n&&(a=a.replace(/:00$/,\"\"))):r?(a=l.slice(0,r+1).join(\":\"),\"^\"==n&&(a=a.replace(/:00$/,\"\"))):a=l.slice(0,2).join(\"\"),a=(a=(u<0?\"-\":\"+\")+a).replace(/([-+])(0)/,{_:\" $1\",\"-\":\"$1\"}[n]||\"$1$2\")):\"Z\"},\"%\":function(e){return\"%\"},n:function(e){return\"\\n\"},t:function(e){return\"\\t\"},U:function(e){return s(e,0)},W:function(e){return s(e,1)},V:function(e){return c(e)[0]},G:function(e){return c(e)[1]},g:function(e){return c(e)[1]%100},j:function(e){return Math.floor((e.getTime()-Date.UTC(e.getUTCFullYear(),0))/864e5)+1},s:function(e){return Math.floor(e.getTime()/1e3)},C:function(e){return Math.floor(e.getUTCFullYear()/100)},N:function(e){return e.getTime()%1e3*1e6},m:function(e){return e.getUTCMonth()+1},Y:function(e){return e.getUTCFullYear()},y:function(e){return e.getUTCFullYear()%100},H:function(e){return e.getUTCHours()},M:function(e){return e.getUTCMinutes()},S:function(e){return e.getUTCSeconds()},e:function(e){return e.getUTCDate()},d:function(e){return e.getUTCDate()},u:function(e){return e.getUTCDay()||7},w:function(e){return e.getUTCDay()},l:function(e){return e.getUTCHours()%12||12},I:function(e){return e.getUTCHours()%12||12},k:function(e){return e.getUTCHours()},Z:function(e){return this.entry.abbrev},a:function(e){return this[this.locale].day.abbrev[e.getUTCDay()]},A:function(e){return this[this.locale].day.full[e.getUTCDay()]},h:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},b:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},B:function(e){return this[this.locale].month.full[e.getUTCMonth()]},P:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)].toLowerCase()},p:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)]},R:function(e,t){return this.convert([t,\"%H:%M\"])},T:function(e,t){return this.convert([t,\"%H:%M:%S\"])},D:function(e,t){return this.convert([t,\"%m/%d/%y\"])},F:function(e,t){return this.convert([t,\"%Y-%m-%d\"])},x:function(e,t){return this.convert([t,this[this.locale].date])},r:function(e,t){return this.convert([t,this[this.locale].time12||\"%I:%M:%S\"])},X:function(e,t){return this.convert([t,this[this.locale].time24])},c:function(e,t){return this.convert([t,this[this.locale].dateTime])},convert:function(e){if(!e.length)return\"1.0.23\";var t,a,u,l,s,c=Object.create(this),f=[];for(t=0;t=o?Math.floor((n-o)/7)+1:0}function c(e){var t,n,r;return n=e.getUTCFullYear(),t=new Date(Date.UTC(n,0)).getUTCDay(),(r=s(e,1)+(t>1&&t<=4?1:0))?53!=r||4==t||3==t&&29==new Date(n,1,29).getDate()?[r,e.getUTCFullYear()]:[1,e.getUTCFullYear()+1]:(n=e.getUTCFullYear()-1,[r=4==(t=new Date(Date.UTC(n,0)).getUTCDay())||3==t&&29==new Date(n,1,29).getDate()?53:52,e.getUTCFullYear()-1])}return u=u.toLowerCase().split(\"|\"),\"delmHMSUWVgCIky\".replace(/./g,(function(e){a[e].pad=2})),a.N.pad=9,a.j.pad=3,a.k.style=\"_\",a.l.style=\"_\",a.e.style=\"_\",function(){return a.convert(arguments)}}))},\n", + " function _(r,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=r(1),i=n.__importStar(r(188)),u=r(189),a=n.__importDefault(r(186)),f=r(29),o=r(8);function l(r,...e){return u.sprintf(r,...e)}function s(r,e,t){if(o.isNumber(r)){return l((()=>{switch(!1){case Math.floor(r)!=r:return\"%d\";case!(Math.abs(r)>.1&&Math.abs(r)<1e3):return\"%0.3f\";default:return\"%0.3e\"}})(),r)}return\"\"+r}function c(r,e,n){if(null==e)return s;if(null!=n&&r in n){const e=n[r];if(o.isString(e)){if(e in t.DEFAULT_FORMATTERS)return t.DEFAULT_FORMATTERS[e];throw new Error(`Unknown tooltip field formatter type '${e}'`)}return function(r,t,n){return e.format(r,t,n)}}return t.DEFAULT_FORMATTERS.numeral}function m(r,e,t,n){if(\"$\"==r[0]){return function(r,e){if(r in e)return e[r];throw new Error(`Unknown special variable '$${r}'`)}(r.substring(1),n)}return function(r,e,t){const n=e.get_column(r);if(null==n)return null;if(o.isNumber(t))return n[t];const i=n[t.index];if(o.isTypedArray(i)||o.isArray(i)){if(o.isArray(i[0])){return i[t.dim2][t.dim1]}return i[t.flat_index]}return i}(r.substring(1).replace(/[{}]/g,\"\"),e,t)}t.DEFAULT_FORMATTERS={numeral:(r,e,t)=>i.format(r,e),datetime:(r,e,t)=>a.default(r,e),printf:(r,e,t)=>l(e,r)},t.sprintf=l,t.basic_formatter=s,t.get_formatter=c,t.get_value=m,t.replace_placeholders=function(r,e,t,n,i={}){let u,a;if(o.isString(r)?(u=r,a=!1):(u=r.html,a=!0),u=u.replace(/@\\$name/g,r=>`@{${i.name}}`),u=u.replace(/((?:\\$\\w+)|(?:@\\w+)|(?:@{(?:[^{}]+)}))(?:{([^{}]+)})?/g,(r,u,o)=>{const l=m(u,e,t,i);if(null==l)return\"\"+f.escape(\"???\");if(\"safe\"==o)return a=!0,\"\"+l;const s=c(u,o,n);return\"\"+f.escape(s(l,o,i))}),a){return[...(new DOMParser).parseFromString(u,\"text/html\").body.childNodes]}return u}},\n", + " function _(e,n,t){\n", + " /*!\n", + " * numbro.js\n", + " * version : 1.6.2\n", + " * author : Företagsplatsen AB\n", + " * license : MIT\n", + " * http://www.foretagsplatsen.se\n", + " */\n", + " var r,i={},a=i,o=\"en-US\",l=null,u=\"0,0\";void 0!==n&&n.exports;function c(e){this._value=e}function s(e){var n,t=\"\";for(n=0;n-1?function(e,n){var t,r,i,a;return t=(a=e.toString()).split(\"e\")[0],i=a.split(\"e\")[1],a=t.split(\".\")[0]+(r=t.split(\".\")[1]||\"\")+s(i-r.length),n>0&&(a+=\".\"+s(n)),a}(e,n):(t(e*o)/o).toFixed(n),r&&(i=new RegExp(\"0{1,\"+r+\"}$\"),a=a.replace(i,\"\")),a}function d(e,n,t){return n.indexOf(\"$\")>-1?function(e,n,t){var r,a,l=n,u=l.indexOf(\"$\"),c=l.indexOf(\"(\"),s=l.indexOf(\"+\"),f=l.indexOf(\"-\"),d=\"\",p=\"\";-1===l.indexOf(\"$\")?\"infix\"===i[o].currency.position?(p=i[o].currency.symbol,i[o].currency.spaceSeparated&&(p=\" \"+p+\" \")):i[o].currency.spaceSeparated&&(d=\" \"):l.indexOf(\" $\")>-1?(d=\" \",l=l.replace(\" $\",\"\")):l.indexOf(\"$ \")>-1?(d=\" \",l=l.replace(\"$ \",\"\")):l=l.replace(\"$\",\"\");if(a=h(e,l,t,p),-1===n.indexOf(\"$\"))switch(i[o].currency.position){case\"postfix\":a.indexOf(\")\")>-1?((a=a.split(\"\")).splice(-1,0,d+i[o].currency.symbol),a=a.join(\"\")):a=a+d+i[o].currency.symbol;break;case\"infix\":break;case\"prefix\":a.indexOf(\"(\")>-1||a.indexOf(\"-\")>-1?(a=a.split(\"\"),r=Math.max(c,f)+1,a.splice(r,0,i[o].currency.symbol+d),a=a.join(\"\")):a=i[o].currency.symbol+d+a;break;default:throw Error('Currency position should be among [\"prefix\", \"infix\", \"postfix\"]')}else u<=1?a.indexOf(\"(\")>-1||a.indexOf(\"+\")>-1||a.indexOf(\"-\")>-1?(a=a.split(\"\"),r=1,(u-1?((a=a.split(\"\")).splice(-1,0,d+i[o].currency.symbol),a=a.join(\"\")):a=a+d+i[o].currency.symbol;return a}(e,n,t):n.indexOf(\"%\")>-1?function(e,n,t){var r,i=\"\";e*=100,n.indexOf(\" %\")>-1?(i=\" \",n=n.replace(\" %\",\"\")):n=n.replace(\"%\",\"\");(r=h(e,n,t)).indexOf(\")\")>-1?((r=r.split(\"\")).splice(-1,0,i+\"%\"),r=r.join(\"\")):r=r+i+\"%\";return r}(e,n,t):n.indexOf(\":\")>-1?function(e){var n=Math.floor(e/60/60),t=Math.floor((e-60*n*60)/60),r=Math.round(e-60*n*60-60*t);return n+\":\"+(t<10?\"0\"+t:t)+\":\"+(r<10?\"0\"+r:r)}(e):h(e,n,t)}function h(e,n,t,r){var a,u,c,s,d,h,p,m,x,g,O,b,w,y,M,v,$,B=!1,E=!1,F=!1,k=\"\",U=!1,N=!1,S=!1,j=!1,D=!1,C=\"\",L=\"\",T=Math.abs(e),K=[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"],G=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"],I=\"\",P=!1,R=!1;if(0===e&&null!==l)return l;if(!isFinite(e))return\"\"+e;if(0===n.indexOf(\"{\")){var W=n.indexOf(\"}\");if(-1===W)throw Error('Format should also contain a \"}\"');b=n.slice(1,W),n=n.slice(W+1)}else b=\"\";if(n.indexOf(\"}\")===n.length-1){var Y=n.indexOf(\"{\");if(-1===Y)throw Error('Format should also contain a \"{\"');w=n.slice(Y+1,-1),n=n.slice(0,Y+1)}else w=\"\";if(v=null===($=-1===n.indexOf(\".\")?n.match(/([0-9]+).*/):n.match(/([0-9]+)\\..*/))?-1:$[1].length,-1!==n.indexOf(\"-\")&&(P=!0),n.indexOf(\"(\")>-1?(B=!0,n=n.slice(1,-1)):n.indexOf(\"+\")>-1&&(E=!0,n=n.replace(/\\+/g,\"\")),n.indexOf(\"a\")>-1){if(g=n.split(\".\")[0].match(/[0-9]+/g)||[\"0\"],g=parseInt(g[0],10),U=n.indexOf(\"aK\")>=0,N=n.indexOf(\"aM\")>=0,S=n.indexOf(\"aB\")>=0,j=n.indexOf(\"aT\")>=0,D=U||N||S||j,n.indexOf(\" a\")>-1?(k=\" \",n=n.replace(\" a\",\"\")):n=n.replace(\"a\",\"\"),p=0===(p=(d=Math.floor(Math.log(T)/Math.LN10)+1)%3)?3:p,g&&0!==T&&(h=Math.floor(Math.log(T)/Math.LN10)+1-g,m=3*~~((Math.min(g,d)-p)/3),T/=Math.pow(10,m),-1===n.indexOf(\".\")&&g>3))for(n+=\"[.]\",M=(M=0===h?0:3*~~(h/3)-h)<0?M+3:M,a=0;a=Math.pow(10,12)&&!D||j?(k+=i[o].abbreviations.trillion,e/=Math.pow(10,12)):T=Math.pow(10,9)&&!D||S?(k+=i[o].abbreviations.billion,e/=Math.pow(10,9)):T=Math.pow(10,6)&&!D||N?(k+=i[o].abbreviations.million,e/=Math.pow(10,6)):(T=Math.pow(10,3)&&!D||U)&&(k+=i[o].abbreviations.thousand,e/=Math.pow(10,3)))}if(n.indexOf(\"b\")>-1)for(n.indexOf(\" b\")>-1?(C=\" \",n=n.replace(\" b\",\"\")):n=n.replace(\"b\",\"\"),s=0;s<=K.length;s++)if(u=Math.pow(1024,s),c=Math.pow(1024,s+1),e>=u&&e0&&(e/=u);break}if(n.indexOf(\"d\")>-1)for(n.indexOf(\" d\")>-1?(C=\" \",n=n.replace(\" d\",\"\")):n=n.replace(\"d\",\"\"),s=0;s<=G.length;s++)if(u=Math.pow(1e3,s),c=Math.pow(1e3,s+1),e>=u&&e0&&(e/=u);break}if(n.indexOf(\"o\")>-1&&(n.indexOf(\" o\")>-1?(L=\" \",n=n.replace(\" o\",\"\")):n=n.replace(\"o\",\"\"),i[o].ordinal&&(L+=i[o].ordinal(e))),n.indexOf(\"[.]\")>-1&&(F=!0,n=n.replace(\"[.]\",\".\")),x=e.toString().split(\".\")[0],O=n.split(\".\")[1],y=n.indexOf(\",\"),O){if(x=(I=-1!==O.indexOf(\"*\")?f(e,e.toString().split(\".\")[1].length,t):O.indexOf(\"[\")>-1?f(e,(O=(O=O.replace(\"]\",\"\")).split(\"[\"))[0].length+O[1].length,t,O[1].length):f(e,O.length,t)).split(\".\")[0],I.split(\".\")[1].length)I=(r?k+r:i[o].delimiters.decimal)+I.split(\".\")[1];else I=\"\";F&&0===Number(I.slice(1))&&(I=\"\")}else x=f(e,null,t);return x.indexOf(\"-\")>-1&&(x=x.slice(1),R=!0),x.length-1&&(x=x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+i[o].delimiters.thousands)),0===n.indexOf(\".\")&&(x=\"\"),b+(n.indexOf(\"(\")2)&&(o.length<2?!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u):1===o[0].length?!!o[0].match(/^\\d+$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/):!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/)))))},n.exports={format:function(e,n,t,i){return null!=t&&t!==r.culture()&&r.setCulture(t),d(Number(e),null!=n?n:u,null==i?Math.round:i)}}},\n", + " function _(e,n,t){!function(){\"use strict\";var e={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function n(e){return i(a(e),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}function i(t,r){var i,s,a,o,p,c,l,u,f,d=1,g=t.length,y=\"\";for(s=0;s=0),o.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,o.width?parseInt(o.width):0);break;case\"e\":i=o.precision?parseFloat(i).toExponential(o.precision):parseFloat(i).toExponential();break;case\"f\":i=o.precision?parseFloat(i).toFixed(o.precision):parseFloat(i);break;case\"g\":i=o.precision?String(Number(i.toPrecision(o.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=o.precision?i.substring(0,o.precision):i;break;case\"t\":i=String(!!i),i=o.precision?i.substring(0,o.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o.precision?i.substring(0,o.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=o.precision?i.substring(0,o.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}e.json.test(o.type)?y+=i:(!e.number.test(o.type)||u&&!o.sign?f=\"\":(f=u?\"+\":\"-\",i=i.toString().replace(e.sign,\"\")),c=o.pad_char?\"0\"===o.pad_char?\"0\":o.pad_char.charAt(1):\" \",l=o.width-(f+i).length,p=o.width&&l>0?c.repeat(l):\"\",y+=o.align?f+i+p:\"0\"===c?f+p+i:p+f+i)}return y}var s=Object.create(null);function a(n){if(s[n])return s[n];for(var t,r=n,i=[],a=0;r;){if(null!==(t=e.text.exec(r)))i.push(t[0]);else if(null!==(t=e.modulo.exec(r)))i.push(\"%\");else{if(null===(t=e.placeholder.exec(r)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(t[2]){a|=1;var o=[],p=t[2],c=[];if(null===(c=e.key.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(o.push(c[1]);\"\"!==(p=p.substring(c[0].length));)if(null!==(c=e.key_access.exec(p)))o.push(c[1]);else{if(null===(c=e.index_access.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");o.push(c[1])}t[2]=o}else a|=2;if(3===a)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return s[n]=i}void 0!==t&&(t.sprintf=n,t.vsprintf=r),\"undefined\"!=typeof window&&(window.sprintf=n,window.vsprintf=r,\"function\"==typeof define&&define.amd&&define((function(){return{sprintf:n,vsprintf:r}})))}()},\n", + " function _(e,i,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(9),a=e(127),s=e(191),r=e(192),c=e(195),_=e(196),m=e(194);class k extends s.CompositeTicker{constructor(e){super(e)}static init_DatetimeTicker(){this.override({num_minor_ticks:0,tickers:()=>[new a.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*m.ONE_MILLI,num_minor_ticks:0}),new a.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:m.ONE_SECOND,max_interval:30*m.ONE_MINUTE,num_minor_ticks:0}),new a.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:m.ONE_HOUR,max_interval:12*m.ONE_HOUR,num_minor_ticks:0}),new r.DaysTicker({days:t.range(1,32)}),new r.DaysTicker({days:t.range(1,31,3)}),new r.DaysTicker({days:[1,8,15,22]}),new r.DaysTicker({days:[1,15]}),new c.MonthsTicker({months:t.range(0,12,1)}),new c.MonthsTicker({months:t.range(0,12,2)}),new c.MonthsTicker({months:t.range(0,12,4)}),new c.MonthsTicker({months:t.range(0,12,6)}),new _.YearsTicker({})]})}}n.DatetimeTicker=k,k.__name__=\"DatetimeTicker\",k.init_DatetimeTicker()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=t(1),s=t(128),n=r.__importStar(t(18)),_=t(9);class a extends s.ContinuousTicker{constructor(t){super(t)}static init_CompositeTicker(){this.define({tickers:[n.Array,[]]})}get min_intervals(){return this.tickers.map(t=>t.get_min_interval())}get max_intervals(){return this.tickers.map(t=>t.get_max_interval())}get min_interval(){return this.min_intervals[0]}get max_interval(){return this.max_intervals[0]}get_best_ticker(t,e,i){const r=e-t,s=this.get_ideal_interval(t,e,i),n=[_.sorted_index(this.min_intervals,s)-1,_.sorted_index(this.max_intervals,s)],a=[this.min_intervals[n[0]],this.max_intervals[n[1]]].map(t=>Math.abs(i-r/t));let c;if(_.is_empty(a.filter(t=>!isNaN(t))))c=this.tickers[0];else{const t=n[_.argmin(a)];c=this.tickers[t]}return c}get_interval(t,e,i){return this.get_best_ticker(t,e,i).get_interval(t,e,i)}get_ticks_no_defaults(t,e,i,r){return this.get_best_ticker(t,e,r).get_ticks_no_defaults(t,e,i,r)}}i.CompositeTicker=a,a.__name__=\"CompositeTicker\",a.init_CompositeTicker()},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=t(1),s=t(193),a=t(194),o=i.__importStar(t(18)),r=t(9);class _ extends s.SingleIntervalTicker{constructor(t){super(t)}static init_DaysTicker(){this.define({days:[o.Array,[]]}),this.override({num_minor_ticks:0})}initialize(){super.initialize();const t=this.days;t.length>1?this.interval=(t[1]-t[0])*a.ONE_DAY:this.interval=31*a.ONE_DAY}get_ticks_no_defaults(t,e,n,i){const s=function(t,e){const n=a.last_month_no_later_than(new Date(t)),i=a.last_month_no_later_than(new Date(e));i.setUTCMonth(i.getUTCMonth()+1);const s=[],o=n;for(;s.push(a.copy_date(o)),o.setUTCMonth(o.getUTCMonth()+1),!(o>i););return s}(t,e),o=this.days,_=this.interval;return{major:r.concat(s.map(t=>((t,e)=>{const n=t.getUTCMonth(),i=[];for(const s of o){const o=a.copy_date(t);o.setUTCDate(s);new Date(o.getTime()+e/2).getUTCMonth()==n&&i.push(o)}return i})(t,_))).map(t=>t.getTime()).filter(n=>t<=n&&n<=e),minor:[]}}}n.DaysTicker=_,_.__name__=\"DaysTicker\",_.init_DaysTicker()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),r=e(128),l=n.__importStar(e(18));class a extends r.ContinuousTicker{constructor(e){super(e)}static init_SingleIntervalTicker(){this.define({interval:[l.Number]})}get_interval(e,t,i){return this.interval}get min_interval(){return this.interval}get max_interval(){return this.interval}}i.SingleIntervalTicker=a,a.__name__=\"SingleIntervalTicker\",a.init_SingleIntervalTicker()},\n", + " function _(t,e,n){function _(t){return new Date(t.getTime())}function O(t){const e=_(t);return e.setUTCDate(1),e.setUTCHours(0),e.setUTCMinutes(0),e.setUTCSeconds(0),e.setUTCMilliseconds(0),e}Object.defineProperty(n,\"__esModule\",{value:!0}),n.ONE_MILLI=1,n.ONE_SECOND=1e3,n.ONE_MINUTE=60*n.ONE_SECOND,n.ONE_HOUR=60*n.ONE_MINUTE,n.ONE_DAY=24*n.ONE_HOUR,n.ONE_MONTH=30*n.ONE_DAY,n.ONE_YEAR=365*n.ONE_DAY,n.copy_date=_,n.last_month_no_later_than=O,n.last_year_no_later_than=function(t){const e=O(t);return e.setUTCMonth(0),e}},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=t(1),i=t(193),s=t(194),a=r.__importStar(t(18)),o=t(9);class _ extends i.SingleIntervalTicker{constructor(t){super(t)}static init_MonthsTicker(){this.define({months:[a.Array,[]]})}initialize(){super.initialize();const t=this.months;t.length>1?this.interval=(t[1]-t[0])*s.ONE_MONTH:this.interval=12*s.ONE_MONTH}get_ticks_no_defaults(t,e,n,r){const i=function(t,e){const n=s.last_year_no_later_than(new Date(t)),r=s.last_year_no_later_than(new Date(e));r.setUTCFullYear(r.getUTCFullYear()+1);const i=[],a=n;for(;i.push(s.copy_date(a)),a.setUTCFullYear(a.getUTCFullYear()+1),!(a>r););return i}(t,e),a=this.months;return{major:o.concat(i.map(t=>a.map(e=>{const n=s.copy_date(t);return n.setUTCMonth(e),n}))).map(t=>t.getTime()).filter(n=>t<=n&&n<=e),minor:[]}}}n.MonthsTicker=_,_.__name__=\"MonthsTicker\",_.init_MonthsTicker()},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const i=e(126),r=e(193),n=e(194);class _ extends r.SingleIntervalTicker{constructor(e){super(e)}initialize(){super.initialize(),this.interval=n.ONE_YEAR,this.basic_ticker=new i.BasicTicker({num_minor_ticks:0})}get_ticks_no_defaults(e,t,a,i){const r=n.last_year_no_later_than(new Date(e)).getUTCFullYear(),_=n.last_year_no_later_than(new Date(t)).getUTCFullYear();return{major:this.basic_ticker.get_ticks_no_defaults(r,_,a,i).major.map(e=>Date.UTC(e,0,1)).filter(a=>e<=a&&a<=t),minor:[]}}}a.YearsTicker=_,_.__name__=\"YearsTicker\"},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(177),o=e(182),n=e(198),r=e(199);class _ extends s.AxisView{}t.LogAxisView=_,_.__name__=\"LogAxisView\";class c extends o.ContinuousAxis{constructor(e){super(e)}static init_LogAxis(){this.prototype.default_view=_,this.override({ticker:()=>new r.LogTicker,formatter:()=>new n.LogTickFormatter})}}t.LogAxis=c,c.__name__=\"LogAxis\",c.init_LogAxis()},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=t(1),o=t(131),a=t(130),n=i.__importStar(t(18));class c extends o.TickFormatter{constructor(t){super(t)}static init_LogTickFormatter(){this.define({ticker:[n.Instance,null]})}initialize(){super.initialize(),this.basic_formatter=new a.BasicTickFormatter}doFormat(t,e){if(0==t.length)return[];const r=null!=this.ticker?this.ticker.base:10;let i=!1;const o=new Array(t.length);for(let e=0,a=t.length;e0&&o[e]==o[e-1]){i=!0;break}return i?this.basic_formatter.doFormat(t,e):o}}r.LogTickFormatter=c,c.__name__=\"LogTickFormatter\",c.init_LogTickFormatter()},\n", + " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(127),s=t(9);class n extends i.AdaptiveTicker{constructor(t){super(t)}static init_LogTicker(){this.override({mantissas:[1,5]})}get_ticks_no_defaults(t,o,e,i){const n=this.num_minor_ticks,r=[],c=this.base,a=Math.log(t)/Math.log(c),f=Math.log(o)/Math.log(c),l=f-a;let h;if(isFinite(l))if(l<2){const e=this.get_interval(t,o,i),c=Math.floor(t/e),a=Math.ceil(o/e);if(h=s.range(c,a+1).filter(t=>0!=t).map(t=>t*e).filter(e=>t<=e&&e<=o),n>0&&h.length>0){const t=e/n,o=s.range(0,n).map(o=>o*t);for(const t of o.slice(1))r.push(h[0]-t);for(const t of h)for(const e of o)r.push(t+e)}}else{const t=Math.ceil(.999999*a),o=Math.floor(1.000001*f),e=Math.ceil((o-t)/9);if(h=s.range(t-1,o+1,e).map(t=>c**t),n>0&&h.length>0){const t=c**e/n,o=s.range(1,n+1).map(o=>o*t);for(const t of o)r.push(h[0]/t);r.push(h[0]);for(const t of h)for(const e of o)r.push(t*e)}}else h=[];return{major:h.filter(e=>t<=e&&e<=o),minor:r.filter(e=>t<=e&&e<=o)}}}e.LogTicker=n,n.__name__=\"LogTicker\",n.init_LogTicker()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(177),s=e(184),o=e(201),a=e(202);class c extends i.AxisView{}r.MercatorAxisView=c,c.__name__=\"MercatorAxisView\";class n extends s.LinearAxis{constructor(e){super(e)}static init_MercatorAxis(){this.prototype.default_view=c,this.override({ticker:()=>new a.MercatorTicker({dimension:\"lat\"}),formatter:()=>new o.MercatorTickFormatter({dimension:\"lat\"})})}}r.MercatorAxis=n,n.__name__=\"MercatorAxis\",n.init_MercatorAxis()},\n", + " function _(r,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const o=r(1),n=r(130),i=o.__importStar(r(18)),c=r(37);class a extends n.BasicTickFormatter{constructor(r){super(r)}static init_MercatorTickFormatter(){this.define({dimension:[i.LatLon]})}doFormat(r,t){if(null==this.dimension)throw new Error(\"MercatorTickFormatter.dimension not configured\");if(0==r.length)return[];const e=r.length,o=new Array(e);if(\"lon\"==this.dimension)for(let n=0;n{const n=s.replace_placeholders(this.url,t,e);if(!r.isString(n))throw new Error(\"HTML output is not supported in this context\");this.same_tab?window.location.href=n:window.open(n)},{selected:o}=t;for(const e of o.indices)n(e);for(const e of o.line_indices)n(e)}}n.OpenURL=a,a.__name__=\"OpenURL\",a.init_OpenURL()},\n", + " function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});var n=a(77);r.Canvas=n.Canvas;var s=a(208);r.CartesianFrame=s.CartesianFrame},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const a=e(209),_=e(146),n=e(157),r=e(158),i=e(210),g=e(98),c=e(212),o=e(13),l=e(11);class h extends c.LayoutItem{constructor(e,t,s,a,_={},n={}){super(),this.in_x_scale=e,this.in_y_scale=t,this.x_range=s,this.y_range=a,this.extra_x_ranges=_,this.extra_y_ranges=n,l.assert(null==e.source_range&&null==e.target_range),l.assert(null==t.source_range&&null==t.target_range),this._configure_scales()}_get_ranges(e,t){return new Map(o.entries(Object.assign(Object.assign({},t),{default:e})))}_get_scales(e,t,s){const c=new Map;for(const[o,l]of t){if((l instanceof i.DataRange1d||l instanceof r.Range1d)&&!(e instanceof _.ContinuousScale))throw new Error(`Range ${l.type} is incompatible is Scale ${e.type}`);if(l instanceof g.FactorRange&&!(e instanceof a.CategoricalScale))throw new Error(`Range ${l.type} is incompatible is Scale ${e.type}`);e instanceof n.LogScale&&l instanceof i.DataRange1d&&(l.scale_hint=\"log\");const t=e.clone();t.setv({source_range:l,target_range:s}),c.set(o,t)}return c}_configure_frame_ranges(){const{bbox:e}=this;this._x_target=new r.Range1d({start:e.left,end:e.right}),this._y_target=new r.Range1d({start:e.bottom,end:e.top})}_configure_scales(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._x_scales=this._get_scales(this.in_x_scale,this._x_ranges,this._x_target),this._y_scales=this._get_scales(this.in_y_scale,this._y_ranges,this._y_target)}_update_scales(){this._configure_frame_ranges();for(const[,e]of this._x_scales)e.target_range=this._x_target;for(const[,e]of this._y_scales)e.target_range=this._y_target}_set_geometry(e,t){super._set_geometry(e,t),this._update_scales()}get x_ranges(){return this._x_ranges}get y_ranges(){return this._y_ranges}get x_scales(){return this._x_scales}get y_scales(){return this._y_scales}get x_scale(){return this._x_scales.get(\"default\")}get y_scale(){return this._y_scales.get(\"default\")}get xscales(){return o.to_object(this.x_scales)}get yscales(){return o.to_object(this.y_scales)}}s.CartesianFrame=h,h.__name__=\"CartesianFrame\"},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(147);class _ extends n.Scale{constructor(e){super(e)}compute(e){return super._linear_compute(this.source_range.synthetic(e))}v_compute(e){return super._linear_v_compute(this.source_range.v_synthetic(e))}invert(e){return this._linear_invert(e)}v_invert(e){return this._linear_v_invert(e)}}t.CategoricalScale=_,_.__name__=\"CategoricalScale\"},\n", + " function _(t,i,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=t(1),a=t(211),s=t(90),l=t(19),_=e.__importStar(t(18)),o=e.__importStar(t(79)),r=t(9);class h extends a.DataRange{constructor(t){super(t),this.have_updated_interactively=!1}static init_DataRange1d(){this.define({start:[_.Number],end:[_.Number],range_padding:[_.Number,.1],range_padding_units:[_.PaddingUnits,\"percent\"],flipped:[_.Boolean,!1],follow:[_.StartEnd],follow_interval:[_.Number],default_span:[_.Number,2],only_visible:[_.Boolean,!1]}),this.internal({scale_hint:[_.String,\"auto\"]})}initialize(){super.initialize(),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span,this._plot_bounds=new Map}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}computed_renderers(){const t=this.names;let i=this.renderers;if(0==i.length)for(const t of this.plots){const n=t.renderers.filter(t=>t instanceof s.GlyphRenderer);i=i.concat(n)}t.length>0&&(i=i.filter(i=>r.includes(t,i.name))),l.logger.debug(`computed ${i.length} renderers for ${this}`);for(const t of i)l.logger.trace(\" - \"+t);return i}_compute_plot_bounds(t,i){let n=o.empty();for(const e of t){const t=i.get(e);null==t||!e.visible&&this.only_visible||(n=o.union(n,t))}return n}adjust_bounds_for_aspect(t,i){const n=o.empty();let e=t.x1-t.x0;e<=0&&(e=1);let a=t.y1-t.y0;a<=0&&(a=1);const s=.5*(t.x1+t.x0),l=.5*(t.y1+t.y0);return e_&&(\"start\"==this.follow?a=e+s*_:\"end\"==this.follow&&(e=a-s*_)),[e,a]}update(t,i,n,e){if(this.have_updated_interactively)return;const a=this.computed_renderers();let s=this._compute_plot_bounds(a,t);null!=e&&(s=this.adjust_bounds_for_aspect(s,e)),this._plot_bounds.set(n,s);const[l,_]=this._compute_min_max(this._plot_bounds.values(),i);let[o,r]=this._compute_range(l,_);null!=this._initial_start&&(\"log\"==this.scale_hint?this._initial_start>0&&(o=this._initial_start):o=this._initial_start),null!=this._initial_end&&(\"log\"==this.scale_hint?this._initial_end>0&&(r=this._initial_end):r=this._initial_end);const[h,d]=[this.start,this.end];if(o!=h||r!=d){const t={};o!=h&&(t.start=o),r!=d&&(t.end=r),this.setv(t)}\"auto\"==this.bounds&&this.setv({bounds:[o,r]},{silent:!0}),this.change.emit()}reset(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()}}n.DataRange1d=h,h.__name__=\"DataRange1d\",h.init_DataRange1d()},\n", + " function _(e,a,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),r=e(99),s=n.__importStar(e(18));class _ extends r.Range{constructor(e){super(e)}static init_DataRange(){this.define({names:[s.Array,[]],renderers:[s.Array,[]]})}}t.DataRange=_,_.__name__=\"DataRange\",_.init_DataRange()},\n", + " function _(a,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});var e=a(213);t.Sizeable=e.Sizeable,t.SizingPolicy=e.SizingPolicy;var i=a(214);t.Layoutable=i.Layoutable,t.LayoutItem=i.LayoutItem;var n=a(215);t.HStack=n.HStack,t.VStack=n.VStack,t.AnchorLayout=n.AnchorLayout;var r=a(216);t.Grid=r.Grid,t.Row=r.Row,t.Column=r.Column;var c=a(217);t.ContentBox=c.ContentBox,t.VariadicBox=c.VariadicBox},\n", + " function _(t,h,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(21),{min:d,max:n}=Math;class w{constructor(t={}){this.width=null!=t.width?t.width:0,this.height=null!=t.height?t.height:0}bounded_to({width:t,height:h}){return new w({width:this.width==1/0&&null!=t?t:this.width,height:this.height==1/0&&null!=h?h:this.height})}expanded_to({width:t,height:h}){return new w({width:t!=1/0?n(this.width,t):this.width,height:h!=1/0?n(this.height,h):this.height})}expand_to({width:t,height:h}){this.width=n(this.width,t),this.height=n(this.height,h)}narrowed_to({width:t,height:h}){return new w({width:d(this.width,t),height:d(this.height,h)})}narrow_to({width:t,height:h}){this.width=d(this.width,t),this.height=d(this.height,h)}grow_by({left:t,right:h,top:i,bottom:e}){const d=this.width+t+h,n=this.height+i+e;return new w({width:d,height:n})}shrink_by({left:t,right:h,top:i,bottom:e}){const d=n(this.width-t-h,0),s=n(this.height-i-e,0);return new w({width:d,height:s})}map(t,h){return new w({width:t(this.width),height:(null!=h?h:t)(this.height)})}}i.Sizeable=w,w.__name__=\"Sizeable\",i.SizingPolicy=e.Enum(\"fixed\",\"fit\",\"min\",\"max\")},\n", + " function _(i,t,h){Object.defineProperty(h,\"__esModule\",{value:!0});const e=i(213),s=i(79),{min:n,max:g,round:a}=Math;class l{constructor(){this._bbox=new s.BBox,this._inner_bbox=new s.BBox}get bbox(){return this._bbox}get inner_bbox(){return this._inner_bbox}get sizing(){return this._sizing}set_sizing(i){const t=i.width_policy||\"fit\",h=i.width,e=null!=i.min_width?i.min_width:0,s=null!=i.max_width?i.max_width:1/0,n=i.height_policy||\"fit\",g=i.height,a=null!=i.min_height?i.min_height:0,l=null!=i.max_height?i.max_height:1/0,_=i.aspect,d=i.margin||{top:0,right:0,bottom:0,left:0},r=!1!==i.visible,w=i.halign||\"start\",o=i.valign||\"start\";this._sizing={width_policy:t,min_width:e,width:h,max_width:s,height_policy:n,min_height:a,height:g,max_height:l,aspect:_,margin:d,visible:r,halign:w,valign:o,size:{width:h,height:g},min_size:{width:e,height:a},max_size:{width:s,height:l}},this._init()}_init(){}_set_geometry(i,t){this._bbox=i,this._inner_bbox=t}set_geometry(i,t){this._set_geometry(i,t||i)}is_width_expanding(){return\"max\"==this.sizing.width_policy}is_height_expanding(){return\"max\"==this.sizing.height_policy}apply_aspect(i,{width:t,height:h}){const{aspect:e}=this.sizing;if(null!=e){const{width_policy:s,height_policy:n}=this.sizing,g=(i,t)=>{const h={max:4,fit:3,min:2,fixed:1};return h[i]>h[t]};if(\"fixed\"!=s&&\"fixed\"!=n)if(s==n){const s=t,n=a(t/e),g=a(h*e),l=h;Math.abs(i.width-s)+Math.abs(i.height-n)<=Math.abs(i.width-g)+Math.abs(i.height-l)?(t=s,h=n):(t=g,h=l)}else g(s,n)?h=a(t/e):t=a(h*e);else\"fixed\"==s?h=a(t/e):\"fixed\"==n&&(t=a(h*e))}return{width:t,height:h}}measure(i){if(!this.sizing.visible)return{width:0,height:0};const t=i=>\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:i,h=i=>\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:i,s=new e.Sizeable(i).shrink_by(this.sizing.margin).map(t,h),n=this._measure(s),g=this.clip_size(n),a=t(g.width),l=h(g.height),_=this.apply_aspect(s,{width:a,height:l});return Object.assign(Object.assign({},n),_)}compute(i={}){const t=this.measure({width:null!=i.width&&this.is_width_expanding()?i.width:1/0,height:null!=i.height&&this.is_height_expanding()?i.height:1/0}),{width:h,height:e}=t,n=new s.BBox({left:0,top:0,width:h,height:e});let g=void 0;if(null!=t.inner){const{left:i,top:n,right:a,bottom:l}=t.inner;g=new s.BBox({left:i,top:n,right:h-a,bottom:e-l})}this.set_geometry(n,g)}get xview(){return this.bbox.xview}get yview(){return this.bbox.yview}clip_width(i){return g(this.sizing.min_width,n(i,this.sizing.max_width))}clip_height(i){return g(this.sizing.min_height,n(i,this.sizing.max_height))}clip_size({width:i,height:t}){return{width:this.clip_width(i),height:this.clip_height(t)}}}h.Layoutable=l,l.__name__=\"Layoutable\";class _ extends l{_measure(i){const{width_policy:t,height_policy:h}=this.sizing;let e,s;if(i.width==1/0)e=null!=this.sizing.width?this.sizing.width:0;else switch(t){case\"fixed\":e=null!=this.sizing.width?this.sizing.width:0;break;case\"min\":e=null!=this.sizing.width?n(i.width,this.sizing.width):0;break;case\"fit\":e=null!=this.sizing.width?n(i.width,this.sizing.width):i.width;break;case\"max\":e=null!=this.sizing.width?g(i.width,this.sizing.width):i.width}if(i.height==1/0)s=null!=this.sizing.height?this.sizing.height:0;else switch(h){case\"fixed\":s=null!=this.sizing.height?this.sizing.height:0;break;case\"min\":s=null!=this.sizing.height?n(i.height,this.sizing.height):0;break;case\"fit\":s=null!=this.sizing.height?n(i.height,this.sizing.height):i.height;break;case\"max\":s=null!=this.sizing.height?g(i.height,this.sizing.height):i.height}return{width:e,height:s}}}h.LayoutItem=_,_.__name__=\"LayoutItem\";class d extends l{_measure(i){const t=this._content_size(),h=i.bounded_to(this.sizing.size).bounded_to(t);return{width:(()=>{switch(this.sizing.width_policy){case\"fixed\":return null!=this.sizing.width?this.sizing.width:t.width;case\"min\":return t.width;case\"fit\":return h.width;case\"max\":return Math.max(t.width,h.width)}})(),height:(()=>{switch(this.sizing.height_policy){case\"fixed\":return null!=this.sizing.height?this.sizing.height:t.height;case\"min\":return t.height;case\"fit\":return h.height;case\"max\":return Math.max(t.height,h.height)}})()}}}h.ContentLayoutable=d,d.__name__=\"ContentLayoutable\"},\n", + " function _(t,e,h){Object.defineProperty(h,\"__esModule\",{value:!0});const o=t(214),r=t(79);class i extends o.Layoutable{constructor(){super(...arguments),this.children=[]}}h.Stack=i,i.__name__=\"Stack\";class s extends i{_measure(t){let e=0,h=0;for(const t of this.children){const o=t.measure({width:0,height:0});e+=o.width,h=Math.max(h,o.height)}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const{top:h,bottom:o}=t;let{left:i}=t;for(const t of this.children){const{width:e}=t.measure({width:0,height:0});t.set_geometry(new r.BBox({left:i,width:e,top:h,bottom:o})),i+=e}}}h.HStack=s,s.__name__=\"HStack\";class n extends i{_measure(t){let e=0,h=0;for(const t of this.children){const o=t.measure({width:0,height:0});e=Math.max(e,o.width),h+=o.height}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const{left:h,right:o}=t;let{top:i}=t;for(const t of this.children){const{height:e}=t.measure({width:0,height:0});t.set_geometry(new r.BBox({top:i,height:e,left:h,right:o})),i+=e}}}h.VStack=n,n.__name__=\"VStack\";class c extends o.Layoutable{constructor(){super(...arguments),this.children=[]}_measure(t){let e=0,h=0;for(const{layout:o}of this.children){const r=o.measure(t);e=Math.max(e,r.width),h=Math.max(h,r.height)}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);for(const{layout:e,anchor:h,margin:o}of this.children){const{left:i,right:s,top:n,bottom:c,hcenter:a,vcenter:_}=t,{width:g,height:d}=e.measure(t);let m;switch(h){case\"top_left\":m=new r.BBox({left:i+o,top:n+o,width:g,height:d});break;case\"top_center\":m=new r.BBox({hcenter:a,top:n+o,width:g,height:d});break;case\"top_right\":m=new r.BBox({right:s-o,top:n+o,width:g,height:d});break;case\"bottom_right\":m=new r.BBox({right:s-o,bottom:c-o,width:g,height:d});break;case\"bottom_center\":m=new r.BBox({hcenter:a,bottom:c-o,width:g,height:d});break;case\"bottom_left\":m=new r.BBox({left:i+o,bottom:c-o,width:g,height:d});break;case\"center_left\":m=new r.BBox({left:i+o,vcenter:_,width:g,height:d});break;case\"center\":m=new r.BBox({hcenter:a,vcenter:_,width:g,height:d});break;case\"center_right\":m=new r.BBox({right:s-o,vcenter:_,width:g,height:d})}e.set_geometry(m)}}}h.AnchorLayout=c,c.__name__=\"AnchorLayout\"},\n", + " function _(t,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const e=t(213),o=t(214),n=t(8),r=t(79),h=t(9),{max:l,round:c}=Math;class a{constructor(t){this.def=t,this._map=new Map}get(t){let i=this._map.get(t);return void 0===i&&(i=this.def(),this._map.set(t,i)),i}apply(t,i){const s=this.get(t);this._map.set(t,i(s))}}a.__name__=\"DefaultMap\";class g{constructor(){this._items=[],this._nrows=0,this._ncols=0}get nrows(){return this._nrows}get ncols(){return this._ncols}add(t,i){const{r1:s,c1:e}=t;this._nrows=l(this._nrows,s+1),this._ncols=l(this._ncols,e+1),this._items.push({span:t,data:i})}at(t,i){return this._items.filter(({span:s})=>s.r0<=t&&t<=s.r1&&s.c0<=i&&i<=s.c1).map(({data:t})=>t)}row(t){return this._items.filter(({span:i})=>i.r0<=t&&t<=i.r1).map(({data:t})=>t)}col(t){return this._items.filter(({span:i})=>i.c0<=t&&t<=i.c1).map(({data:t})=>t)}foreach(t){for(const{span:i,data:s}of this._items)t(i,s)}map(t){const i=new g;for(const{span:s,data:e}of this._items)i.add(s,t(s,e));return i}}g.__name__=\"Container\";class p extends o.Layoutable{constructor(t=[]){super(),this.items=t,this.rows=\"auto\",this.cols=\"auto\",this.spacing=0,this.absolute=!1}is_width_expanding(){if(super.is_width_expanding())return!0;if(\"fixed\"==this.sizing.width_policy)return!1;const{cols:t}=this._state;return h.some(t,t=>\"max\"==t.policy)}is_height_expanding(){if(super.is_height_expanding())return!0;if(\"fixed\"==this.sizing.height_policy)return!1;const{rows:t}=this._state;return h.some(t,t=>\"max\"==t.policy)}_init(){super._init();const t=new g;for(const{layout:i,row:s,col:e,row_span:o,col_span:n}of this.items)if(i.sizing.visible){const r=s,h=e,l=s+(null!=o?o:1)-1,c=e+(null!=n?n:1)-1;t.add({r0:r,c0:h,r1:l,c1:c},i)}const{nrows:i,ncols:s}=t,e=new Array(i);for(let s=0;s{const t=n.isPlainObject(this.rows)?this.rows[s]||this.rows[\"*\"]:this.rows;return null==t?{policy:\"auto\"}:n.isNumber(t)?{policy:\"fixed\",height:t}:n.isString(t)?{policy:t}:t})(),o=i.align||\"auto\";if(\"fixed\"==i.policy)e[s]={policy:\"fixed\",height:i.height,align:o};else if(\"min\"==i.policy)e[s]={policy:\"min\",align:o};else if(\"fit\"==i.policy||\"max\"==i.policy)e[s]={policy:i.policy,flex:i.flex||1,align:o};else{if(\"auto\"!=i.policy)throw new Error(\"unrechable\");h.some(t.row(s),t=>t.is_height_expanding())?e[s]={policy:\"max\",flex:1,align:o}:e[s]={policy:\"min\",align:o}}}const o=new Array(s);for(let i=0;i{const t=n.isPlainObject(this.cols)?this.cols[i]||this.cols[\"*\"]:this.cols;return null==t?{policy:\"auto\"}:n.isNumber(t)?{policy:\"fixed\",width:t}:n.isString(t)?{policy:t}:t})(),e=s.align||\"auto\";if(\"fixed\"==s.policy)o[i]={policy:\"fixed\",width:s.width,align:e};else if(\"min\"==s.policy)o[i]={policy:\"min\",align:e};else if(\"fit\"==s.policy||\"max\"==s.policy)o[i]={policy:s.policy,flex:s.flex||1,align:e};else{if(\"auto\"!=s.policy)throw new Error(\"unrechable\");h.some(t.col(i),t=>t.is_width_expanding())?o[i]={policy:\"max\",flex:1,align:e}:o[i]={policy:\"min\",align:e}}}const[r,l]=n.isNumber(this.spacing)?[this.spacing,this.spacing]:this.spacing;this._state={items:t,nrows:i,ncols:s,rows:e,cols:o,rspacing:r,cspacing:l}}_measure_totals(t,i){const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state;return{height:h.sum(t)+(s-1)*o,width:h.sum(i)+(e-1)*n}}_measure_cells(t){const{items:i,nrows:s,ncols:o,rows:n,cols:r,rspacing:h,cspacing:a}=this._state,p=new Array(s);for(let t=0;t{const{r0:o,c0:g,r1:d,c1:w}=i,u=(d-o)*h,m=(w-g)*a;let y=0;for(let i=o;i<=d;i++)y+=t(i,g).height;y+=u;let x=0;for(let i=g;i<=w;i++)x+=t(o,i).width;x+=m;const b=s.measure({width:x,height:y});f.add(i,{layout:s,size_hint:b});const z=new e.Sizeable(b).grow_by(s.sizing.margin);z.height-=u,z.width-=m;const j=[];for(let t=o;t<=d;t++){const i=n[t];\"fixed\"==i.policy?z.height-=i.height:j.push(t)}if(z.height>0){const t=c(z.height/j.length);for(const i of j)p[i]=l(p[i],t)}const O=[];for(let t=g;t<=w;t++){const i=r[t];\"fixed\"==i.policy?z.width-=i.width:O.push(t)}if(z.width>0){const t=c(z.width/O.length);for(const i of O)_[i]=l(_[i],t)}});return{size:this._measure_totals(p,_),row_heights:p,col_widths:_,size_hints:f}}_measure_grid(t){const{nrows:i,ncols:s,rows:e,cols:o,rspacing:n,cspacing:r}=this._state,h=this._measure_cells((t,i)=>{const s=e[t],n=o[i];return{width:\"fixed\"==n.policy?n.width:1/0,height:\"fixed\"==s.policy?s.height:1/0}});let a;a=\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:t.height!=1/0&&this.is_height_expanding()?t.height:h.size.height;let g,p=0;for(let t=0;t0)for(let t=0;ti?i:e,t--}}}g=\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:t.width!=1/0&&this.is_width_expanding()?t.width:h.size.width;let _=0;for(let t=0;t0)for(let t=0;ts?s:o,t--}}}const{row_heights:f,col_widths:d,size_hints:w}=this._measure_cells((t,i)=>({width:h.col_widths[i],height:h.row_heights[t]}));return{size:this._measure_totals(f,d),row_heights:f,col_widths:d,size_hints:w}}_measure(t){const{size:i}=this._measure_grid(t);return i}_set_geometry(t,i){super._set_geometry(t,i);const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state,{row_heights:h,col_widths:g,size_hints:p}=this._measure_grid(t),_=this._state.rows.map((t,i)=>Object.assign(Object.assign({},t),{top:0,height:h[i],get bottom(){return this.top+this.height}})),f=this._state.cols.map((t,i)=>Object.assign(Object.assign({},t),{left:0,width:g[i],get right(){return this.left+this.width}})),d=p.map((t,i)=>Object.assign(Object.assign({},i),{outer:new r.BBox,inner:new r.BBox}));for(let i=0,e=this.absolute?t.top:0;i{const{layout:l,size_hint:a}=h,{sizing:g}=l,{width:p,height:d}=a,w=function(t,i){let s=(i-t)*n;for(let e=t;e<=i;e++)s+=f[e].width;return s}(i,e),u=function(t,i){let s=(i-t)*o;for(let e=t;e<=i;e++)s+=_[e].height;return s}(t,s),m=i==e&&\"auto\"!=f[i].align?f[i].align:g.halign,y=t==s&&\"auto\"!=_[t].align?_[t].align:g.valign;let x=f[i].left;\"start\"==m?x+=g.margin.left:\"center\"==m?x+=c((w-p)/2):\"end\"==m&&(x+=w-g.margin.right-p);let b=_[t].top;\"start\"==y?b+=g.margin.top:\"center\"==y?b+=c((u-d)/2):\"end\"==y&&(b+=u-g.margin.bottom-d),h.outer=new r.BBox({left:x,top:b,width:p,height:d})});const w=_.map(()=>({start:new a(()=>0),end:new a(()=>0)})),u=f.map(()=>({start:new a(()=>0),end:new a(()=>0)}));d.foreach(({r0:t,c0:i,r1:s,c1:e},{size_hint:o,outer:n})=>{const{inner:r}=o;null!=r&&(w[t].start.apply(n.top,t=>l(t,r.top)),w[s].end.apply(_[s].bottom-n.bottom,t=>l(t,r.bottom)),u[i].start.apply(n.left,t=>l(t,r.left)),u[e].end.apply(f[e].right-n.right,t=>l(t,r.right)))}),d.foreach(({r0:t,c0:i,r1:s,c1:e},o)=>{const{size_hint:n,outer:h}=o;function l({left:t,right:i,top:s,bottom:e}){const o=h.width-t-i,n=h.height-s-e;return new r.BBox({left:t,top:s,width:o,height:n})}if(null!=n.inner){let r=l(n.inner);if(!1!==n.align){const o=w[t].start.get(h.top),n=w[s].end.get(_[s].bottom-h.bottom),c=u[i].start.get(h.left),a=u[e].end.get(f[e].right-h.right);try{r=l({top:o,bottom:n,left:c,right:a})}catch(t){}}o.inner=r}else o.inner=h}),d.foreach((t,{layout:i,outer:s,inner:e})=>{i.set_geometry(s,e)})}}s.Grid=p,p.__name__=\"Grid\";class _ extends p{constructor(t){super(),this.items=t.map((t,i)=>({layout:t,row:0,col:i})),this.rows=\"fit\"}}s.Row=_,_.__name__=\"Row\";class f extends p{constructor(t){super(),this.items=t.map((t,i)=>({layout:t,row:i,col:0})),this.cols=\"fit\"}}s.Column=f,f.__name__=\"Column\"},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(214),i=e(213),a=e(72);class c extends n.ContentLayoutable{constructor(e){super(),this.content_size=a.unsized(e,()=>new i.Sizeable(a.size(e)))}_content_size(){return this.content_size}}s.ContentBox=c,c.__name__=\"ContentBox\";class o extends n.Layoutable{constructor(e){super(),this.el=e}_measure(e){const t=new i.Sizeable(e).bounded_to(this.sizing.size);return a.sized(this.el,t,()=>{const e=new i.Sizeable(a.content_size(this.el)),{border:t,padding:s}=a.extents(this.el);return e.grow_by(t).grow_by(s).map(Math.ceil)})}}s.VariadicBox=o,o.__name__=\"VariadicBox\";class r extends o{constructor(e){super(e),this._cache=new Map}_measure(e){const{width:t,height:s}=e,n=`${t},${s}`;let i=this._cache.get(n);return null==i&&(i=super._measure(e),this._cache.set(n,i)),i}invalidate_cache(){this._cache.clear()}}s.CachedVariadicBox=r,r.__name__=\"CachedVariadicBox\"},\n", + " function _(e,r,u){Object.defineProperty(u,\"__esModule\",{value:!0});var a=e(219);u.Expression=a.Expression;var n=e(220);u.Stack=n.Stack;var o=e(221);u.CumSum=o.CumSum},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(81);class i extends n.Model{constructor(e){super(e)}initialize(){super.initialize(),this._connected=new Set,this._result=new Map}v_compute(e){this._connected.has(e)||(this.connect(e.change,()=>this._result.delete(e)),this.connect(e.patching,()=>this._result.delete(e)),this.connect(e.streaming,()=>this._result.delete(e)),this._connected.add(e));let t=this._result.get(e);return null==t&&(t=this._v_compute(e),this._result.set(e,t)),t}}s.Expression=i,i.__name__=\"Expression\"},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=t(1),i=t(219),s=t(24),o=r.__importStar(t(18));class a extends i.Expression{constructor(t){super(t)}static init_Stack(){this.define({fields:[o.Array,[]]})}_v_compute(t){var e;const n=null!==(e=t.get_length())&&void 0!==e?e:0,r=new s.NumberArray(n);for(const e of this.fields){const i=t.data[e];if(null!=i)for(let t=0,e=Math.min(n,i.length);tn(t,e,r,...this.values))}}n.FuncTickFormatter=u,u.__name__=\"FuncTickFormatter\",u.init_FuncTickFormatter()},\n", + " function _(r,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=r(1),o=e.__importStar(r(188)),a=r(131),i=e.__importStar(r(18));class u extends a.TickFormatter{constructor(r){super(r)}static init_NumeralTickFormatter(){this.define({format:[i.String,\"0,0\"],language:[i.String,\"en\"],rounding:[i.RoundingFunction,\"round\"]})}get _rounding_fn(){switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}}doFormat(r,t){const{format:n,language:e,_rounding_fn:a}=this;return r.map(r=>o.format(r,n,e,a))}}n.NumeralTickFormatter=u,u.__name__=\"NumeralTickFormatter\",u.init_NumeralTickFormatter()},\n", + " function _(t,r,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(1),n=t(131),o=t(187),a=e.__importStar(t(18));class c extends n.TickFormatter{constructor(t){super(t)}static init_PrintfTickFormatter(){this.define({format:[a.String,\"%s\"]})}doFormat(t,r){return t.map(t=>o.sprintf(this.format,t))}}i.PrintfTickFormatter=c,c.__name__=\"PrintfTickFormatter\",c.init_PrintfTickFormatter()},\n", + " function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});var v=a(233);r.AnnularWedge=v.AnnularWedge;var l=a(234);r.Annulus=l.Annulus;var t=a(235);r.Arc=t.Arc;var i=a(236);r.Bezier=i.Bezier;var n=a(237);r.Circle=n.Circle;var u=a(241);r.CenterRotatable=u.CenterRotatable;var c=a(242);r.Ellipse=c.Ellipse;var g=a(243);r.EllipseOval=g.EllipseOval;var A=a(94);r.Glyph=A.Glyph;var p=a(111);r.HArea=p.HArea;var s=a(244);r.HBar=s.HBar;var d=a(246);r.HexTile=d.HexTile;var R=a(247);r.Image=R.Image;var o=a(249);r.ImageRGBA=o.ImageRGBA;var y=a(250);r.ImageURL=y.ImageURL;var h=a(92);r.Line=h.Line;var m=a(252);r.MultiLine=m.MultiLine;var B=a(253);r.MultiPolygons=B.MultiPolygons;var P=a(254);r.Oval=P.Oval;var G=a(110);r.Patch=G.Patch;var H=a(255);r.Patches=H.Patches;var I=a(256);r.Quad=I.Quad;var L=a(257);r.Quadratic=L.Quadratic;var M=a(258);r.Ray=M.Ray;var O=a(259);r.Rect=O.Rect;var x=a(260);r.Segment=x.Segment;var C=a(261);r.Step=C.Step;var E=a(262);r.Text=E.Text;var Q=a(113);r.VArea=Q.VArea;var S=a(263);r.VBar=S.VBar;var T=a(264);r.Wedge=T.Wedge;var V=a(93);r.XYGlyph=V.XYGlyph},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),r=e(93),n=e(100),a=e(28),_=e(24),o=i.__importStar(e(18)),d=e(10),h=e(88);class u extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius,this._angle=new _.NumberArray(this._start_angle.length);for(let e=0,t=this._start_angle.length;e=s&&u.push(e)}const l=this.model.properties.direction.value(),c=[];for(const e of u){const i=Math.atan2(s-this.sy[e],t-this.sx[e]);d.angle_between(-i,-this._start_angle[e],-this._end_angle[e],l)&&c.push(e)}return new h.Selection({indices:c})}draw_legend_for_index(e,t,s){n.generic_area_legend(this.visuals,e,t,s)}scenterxy(e){const t=(this.sinner_radius[e]+this.souter_radius[e])/2,s=(this._start_angle[e]+this._end_angle[e])/2;return[this.sx[e]+t*Math.cos(s),this.sy[e]+t*Math.sin(s)]}}s.AnnularWedgeView=u,u.__name__=\"AnnularWedgeView\";class l extends r.XYGlyph{constructor(e){super(e)}static init_AnnularWedge(){this.prototype.default_view=u,this.mixins([a.LineVector,a.FillVector]),this.define({direction:[o.Direction,\"anticlock\"],inner_radius:[o.DistanceSpec],outer_radius:[o.DistanceSpec],start_angle:[o.AngleSpec],end_angle:[o.AngleSpec]})}}s.AnnularWedge=l,l.__name__=\"AnnularWedge\",l.init_AnnularWedge()},\n", + " function _(s,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const t=s(1),r=s(93),n=s(28),a=t.__importStar(s(18)),_=s(32),u=s(88);class o extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius}_render(s,i,{sx:e,sy:t,sinner_radius:r,souter_radius:n}){for(const a of i)if(!isNaN(e[a]+t[a]+r[a]+n[a])){if(this.visuals.fill.doit){if(this.visuals.fill.set_vectorize(s,a),s.beginPath(),_.is_ie)for(const i of[!1,!0])s.arc(e[a],t[a],r[a],0,Math.PI,i),s.arc(e[a],t[a],n[a],Math.PI,0,!i);else s.arc(e[a],t[a],r[a],0,2*Math.PI,!0),s.arc(e[a],t[a],n[a],2*Math.PI,0,!1);s.fill()}this.visuals.line.doit&&(this.visuals.line.set_vectorize(s,a),s.beginPath(),s.arc(e[a],t[a],r[a],0,2*Math.PI),s.moveTo(e[a]+n[a],t[a]),s.arc(e[a],t[a],n[a],0,2*Math.PI),s.stroke())}}_hit_point(s){const{sx:i,sy:e}=s,t=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(e);let n,a,_,o;if(\"data\"==this.model.properties.outer_radius.units)n=t-this.max_outer_radius,_=t+this.max_outer_radius,a=r-this.max_outer_radius,o=r+this.max_outer_radius;else{const s=i-this.max_outer_radius,t=i+this.max_outer_radius;[n,_]=this.renderer.xscale.r_invert(s,t);const r=e-this.max_outer_radius,u=e+this.max_outer_radius;[a,o]=this.renderer.yscale.r_invert(r,u)}const d=[];for(const s of this.index.indices({x0:n,x1:_,y0:a,y1:o})){const i=this.souter_radius[s]**2,e=this.sinner_radius[s]**2,[n,a]=this.renderer.xscale.r_compute(t,this._x[s]),[_,u]=this.renderer.yscale.r_compute(r,this._y[s]),o=(n-a)**2+(_-u)**2;o<=i&&o>=e&&d.push(s)}return new u.Selection({indices:d})}draw_legend_for_index(s,{x0:i,y0:e,x1:t,y1:r},n){const a=n+1,_=new Array(a);_[n]=(i+t)/2;const u=new Array(a);u[n]=(e+r)/2;const o=.5*Math.min(Math.abs(t-i),Math.abs(r-e)),d=new Array(a);d[n]=.4*o;const h=new Array(a);h[n]=.8*o,this._render(s,[n],{sx:_,sy:u,sinner_radius:d,souter_radius:h})}}e.AnnulusView=o,o.__name__=\"AnnulusView\";class d extends r.XYGlyph{constructor(s){super(s)}static init_Annulus(){this.prototype.default_view=o,this.mixins([n.LineVector,n.FillVector]),this.define({inner_radius:[a.DistanceSpec],outer_radius:[a.DistanceSpec]})}}e.Annulus=d,d.__name__=\"Annulus\",d.init_Annulus()},\n", + " function _(e,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=e(1),r=e(93),n=e(100),a=e(28),_=t.__importStar(e(18));class c extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius}_render(e,i,{sx:s,sy:t,sradius:r,_start_angle:n,_end_angle:a}){if(this.visuals.line.doit){const _=this.model.properties.direction.value();for(const c of i)isNaN(s[c]+t[c]+r[c]+n[c]+a[c])||(e.beginPath(),e.arc(s[c],t[c],r[c],n[c],a[c],_),this.visuals.line.set_vectorize(e,c),e.stroke())}}draw_legend_for_index(e,i,s){n.generic_line_legend(this.visuals,e,i,s)}}s.ArcView=c,c.__name__=\"ArcView\";class d extends r.XYGlyph{constructor(e){super(e)}static init_Arc(){this.prototype.default_view=c,this.mixins(a.LineVector),this.define({direction:[_.Direction,\"anticlock\"],radius:[_.DistanceSpec],start_angle:[_.AngleSpec],end_angle:[_.AngleSpec]})}}s.Arc=d,d.__name__=\"Arc\",d.init_Arc()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(28),c=e(94),o=e(100),_=e(37),r=s.__importStar(e(18));function a(e,t,i,s,n,c,o,_){const r=[],a=[[],[]];for(let a=0;a<=2;a++){let h,d,x;if(0===a?(d=6*e-12*i+6*n,h=-3*e+9*i-9*n+3*o,x=3*i-3*e):(d=6*t-12*s+6*c,h=-3*t+9*s-9*c+3*_,x=3*s-3*t),Math.abs(h)<1e-12){if(Math.abs(d)<1e-12)continue;const e=-x/d;0Math.max(s,i[e]));break}case\"min\":{const s=this.sdist(this.renderer.xscale,this._x,this._radius),i=this.sdist(this.renderer.yscale,this._y,this._radius);this.sradius=_.map(s,(s,e)=>Math.min(s,i[e]));break}}else this.sradius=this._radius,this.max_size=2*this.max_radius;else this.sradius=_.map(this._size,s=>s/2)}_mask_data(){const[s,i]=this.renderer.plot_view.frame.bbox.ranges;let e,t,r,a;if(null!=this._radius&&\"data\"==this.model.properties.radius.units){const n=s.start,h=s.end;[e,r]=this.renderer.xscale.r_invert(n,h),e-=this.max_radius,r+=this.max_radius;const d=i.start,l=i.end;[t,a]=this.renderer.yscale.r_invert(d,l),t-=this.max_radius,a+=this.max_radius}else{const n=s.start-this.max_size,h=s.end+this.max_size;[e,r]=this.renderer.xscale.r_invert(n,h);const d=i.start-this.max_size,l=i.end+this.max_size;[t,a]=this.renderer.yscale.r_invert(d,l)}return this.index.indices({x0:e,x1:r,y0:t,y1:a})}_render(s,i,{sx:e,sy:t,sradius:r}){for(const a of i)isNaN(e[a]+t[a]+r[a])||(s.beginPath(),s.arc(e[a],t[a],r[a],0,2*Math.PI,!1),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(s,a),s.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(s,a),s.stroke()))}_hit_point(s){const{sx:i,sy:e}=s,t=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(e);let a,n,h,d;if(null!=this._radius&&\"data\"==this.model.properties.radius.units)a=t-this.max_radius,n=t+this.max_radius,h=r-this.max_radius,d=r+this.max_radius;else{const s=i-this.max_size,t=i+this.max_size;[a,n]=this.renderer.xscale.r_invert(s,t);const r=e-this.max_size,l=e+this.max_size;[h,d]=this.renderer.yscale.r_invert(r,l)}const l=this.index.indices({x0:a,x1:n,y0:h,y1:d}),_=[];if(null!=this._radius&&\"data\"==this.model.properties.radius.units)for(const s of l){const i=this.sradius[s]**2,[e,a]=this.renderer.xscale.r_compute(t,this._x[s]),[n,h]=this.renderer.yscale.r_compute(r,this._y[s]);(e-a)**2+(n-h)**2<=i&&_.push(s)}else for(const s of l){const t=this.sradius[s]**2;(this.sx[s]-i)**2+(this.sy[s]-e)**2<=t&&_.push(s)}return new c.Selection({indices:_})}_hit_span(s){const{sx:i,sy:e}=s,t=this.bounds();let r,a,n,h;if(\"h\"==s.direction){let s,e;if(n=t.y0,h=t.y1,null!=this._radius&&\"data\"==this.model.properties.radius.units)s=i-this.max_radius,e=i+this.max_radius,[r,a]=this.renderer.xscale.r_invert(s,e);else{const t=this.max_size/2;s=i-t,e=i+t,[r,a]=this.renderer.xscale.r_invert(s,e)}}else{let s,i;if(r=t.x0,a=t.x1,null!=this._radius&&\"data\"==this.model.properties.radius.units)s=e-this.max_radius,i=e+this.max_radius,[n,h]=this.renderer.yscale.r_invert(s,i);else{const t=this.max_size/2;s=e-t,i=e+t,[n,h]=this.renderer.yscale.r_invert(s,i)}}const d=[...this.index.indices({x0:r,x1:a,y0:n,y1:h})];return new c.Selection({indices:d})}_hit_rect(s){const{sx0:i,sx1:e,sy0:t,sy1:r}=s,[a,n]=this.renderer.xscale.r_invert(i,e),[h,d]=this.renderer.yscale.r_invert(t,r),l=[...this.index.indices({x0:a,x1:n,y0:h,y1:d})];return new c.Selection({indices:l})}_hit_poly(s){const{sx:i,sy:e}=s,t=l.range(0,this.sx.length),r=[];for(let s=0,a=t.length;s2*t)),i.data_changed=!1),this.visuals_changed&&(this._set_visuals(a),this.visuals_changed=!1),this.prog.set_uniform(\"u_pixel_ratio\",\"float\",[s.pixel_ratio]),this.prog.set_uniform(\"u_canvas_size\",\"vec2\",[s.width,s.height]),this.prog.set_attribute(\"a_sx\",\"float\",i.vbo_sx),this.prog.set_attribute(\"a_sy\",\"float\",i.vbo_sy),this.prog.set_attribute(\"a_size\",\"float\",i.vbo_s),this.prog.set_attribute(\"a_angle\",\"float\",i.vbo_a),0!=t.length)if(t.length===a)this.prog.draw(this.gl.POINTS,[0,a]);else if(a<65535){const e=window.navigator.userAgent;e.indexOf(\"MSIE \")+e.indexOf(\"Trident/\")+e.indexOf(\"Edge/\")>0&&n.logger.warn(\"WebGL warning: IE is known to produce 1px sprites whith selections.\"),this.index_buffer.set_size(2*t.length),this.index_buffer.set_data(0,new Uint16Array(t)),this.prog.draw(this.gl.POINTS,this.index_buffer)}else{const e=64e3,s=[];for(let t=0,i=Math.ceil(a/e);t2*t)):this.vbo_s.set_data(0,new Float32Array(this.glyph._size))}_set_visuals(t){u(this.prog,this.vbo_linewidth,\"a_linewidth\",t,this.glyph.visuals.line,\"line_width\"),f(this.prog,this.vbo_fg_color,\"a_fg_color\",t,this.glyph.visuals.line,\"line\"),f(this.prog,this.vbo_bg_color,\"a_bg_color\",t,this.glyph.visuals.fill,\"fill\"),this.prog.set_uniform(\"u_antialias\",\"float\",[.8])}}function b(t){return class extends d{get _marker_code(){return t}}}s.MarkerGL=d,d.__name__=\"MarkerGL\";const c=i.__importStar(t(240));s.AsteriskGL=b(c.asterisk),s.CircleGL=b(c.circle),s.CircleCrossGL=b(c.circlecross),s.CircleXGL=b(c.circlex),s.CrossGL=b(c.cross),s.DiamondGL=b(c.diamond),s.DiamondCrossGL=b(c.diamondcross),s.HexGL=b(c.hex),s.InvertedTriangleGL=b(c.invertedtriangle),s.SquareGL=b(c.square),s.SquareCrossGL=b(c.squarecross),s.SquareXGL=b(c.squarex),s.TriangleGL=b(c.triangle),s.XGL=b(c.x)},\n", + " function _(n,i,a){Object.defineProperty(a,\"__esModule\",{value:!0}),a.vertex_shader=\"\\nprecision mediump float;\\nconst float SQRT_2 = 1.4142135623730951;\\n//\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size;\\nuniform vec2 u_offset;\\nuniform vec2 u_scale;\\nuniform float u_antialias;\\n//\\nattribute float a_sx;\\nattribute float a_sy;\\nattribute float a_size;\\nattribute float a_angle; // in radians\\nattribute float a_linewidth;\\nattribute vec4 a_fg_color;\\nattribute vec4 a_bg_color;\\n//\\nvarying float v_linewidth;\\nvarying float v_size;\\nvarying vec4 v_fg_color;\\nvarying vec4 v_bg_color;\\nvarying vec2 v_rotation;\\n\\nvoid main (void)\\n{\\n v_size = a_size * u_pixel_ratio;\\n v_linewidth = a_linewidth * u_pixel_ratio;\\n v_fg_color = a_fg_color;\\n v_bg_color = a_bg_color;\\n v_rotation = vec2(cos(-a_angle), sin(-a_angle));\\n vec2 pos = vec2(a_sx, a_sy); // in pixels\\n pos += 0.5; // make up for Bokeh's offset\\n pos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(pos*2.0-1.0, 0.0, 1.0);\\n gl_Position.y *= -1.0;\\n gl_PointSize = SQRT_2 * v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\n}\\n\"},\n", + " function _(a,n,s){Object.defineProperty(s,\"__esModule\",{value:!0}),s.fragment_shader=a=>`\\nprecision mediump float;\\nconst float SQRT_2 = 1.4142135623730951;\\nconst float PI = 3.14159265358979323846264;\\n//\\nuniform float u_antialias;\\n//\\nvarying vec4 v_fg_color;\\nvarying vec4 v_bg_color;\\nvarying float v_linewidth;\\nvarying float v_size;\\nvarying vec2 v_rotation;\\n\\n${a}\\n\\nvec4 outline(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)\\n{\\n vec4 frag_color;\\n float t = linewidth/2.0 - antialias;\\n float signed_distance = distance;\\n float border_distance = abs(signed_distance) - t;\\n float alpha = border_distance/antialias;\\n alpha = exp(-alpha*alpha);\\n\\n // If fg alpha is zero, it probably means no outline. To avoid a dark outline\\n // shining through due to aa, we set the fg color to the bg color. Avoid if (i.e. branching).\\n float select = float(bool(fg_color.a));\\n fg_color.rgb = select * fg_color.rgb + (1.0 - select) * bg_color.rgb;\\n // Similarly, if we want a transparent bg\\n select = float(bool(bg_color.a));\\n bg_color.rgb = select * bg_color.rgb + (1.0 - select) * fg_color.rgb;\\n\\n if( border_distance < 0.0)\\n frag_color = fg_color;\\n else if( signed_distance < 0.0 ) {\\n frag_color = mix(bg_color, fg_color, sqrt(alpha));\\n } else {\\n if( abs(signed_distance) < (linewidth/2.0 + antialias) ) {\\n frag_color = vec4(fg_color.rgb, fg_color.a * alpha);\\n } else {\\n discard;\\n }\\n }\\n return frag_color;\\n}\\n\\nvoid main()\\n{\\n vec2 P = gl_PointCoord.xy - vec2(0.5, 0.5);\\n P = vec2(v_rotation.x*P.x - v_rotation.y*P.y,\\n v_rotation.y*P.x + v_rotation.x*P.y);\\n float point_size = SQRT_2*v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\n float distance = marker(P*point_size, v_size);\\n gl_FragColor = outline(distance, v_linewidth, u_antialias, v_fg_color, v_bg_color);\\n}\\n`,s.circle=\"\\nfloat marker(vec2 P, float size)\\n{\\n return length(P) - size/2.0;\\n}\\n\",s.square=\"\\nfloat marker(vec2 P, float size)\\n{\\n return max(abs(P.x), abs(P.y)) - size/2.0;\\n}\\n\",s.diamond=\"\\nfloat marker(vec2 P, float size)\\n{\\n float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\n return r1 / SQRT_2;\\n}\\n\",s.hex=\"\\nfloat marker(vec2 P, float size)\\n{\\n vec2 q = abs(P);\\n return max(q.y * 0.57735 + q.x - 1.0 * size/2.0, q.y - 0.866 * size/2.0);\\n}\\n\",s.triangle=\"\\nfloat marker(vec2 P, float size)\\n{\\n P.y -= size * 0.3;\\n float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / 1.6;\\n float r2 = P.y;\\n return max(r1 / SQRT_2, r2); // Intersect diamond with rectangle\\n}\\n\",s.invertedtriangle=\"\\nfloat marker(vec2 P, float size)\\n{\\n P.y += size * 0.3;\\n float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / 1.6;\\n float r2 = - P.y;\\n return max(r1 / SQRT_2, r2); // Intersect diamond with rectangle\\n}\\n\",s.cross='\\nfloat marker(vec2 P, float size)\\n{\\n float square = max(abs(P.x), abs(P.y)) - size / 2.5; // 2.5 is a tweak\\n float cross = min(abs(P.x), abs(P.y)) - size / 100.0; // bit of \"width\" for aa\\n return max(square, cross);\\n}\\n',s.circlecross=\"\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float circle = length(P) - size/2.0;\\n float c1 = max(circle, s1);\\n float c2 = max(circle, s2);\\n float c3 = max(circle, s3);\\n float c4 = max(circle, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.squarecross=\"\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float square = max(abs(P.x), abs(P.y)) - size/2.0;\\n float c1 = max(square, s1);\\n float c2 = max(square, s2);\\n float c3 = max(square, s3);\\n float c4 = max(square, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.diamondcross=\"\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\n float diamond = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\n diamond /= SQRT_2;\\n float c1 = max(diamond, s1);\\n float c2 = max(diamond, s2);\\n float c3 = max(diamond, s3);\\n float c4 = max(diamond, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.x='\\nfloat marker(vec2 P, float size)\\n{\\n float circle = length(P) - size / 1.6;\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n return max(circle, X);\\n}\\n',s.circlex='\\nfloat marker(vec2 P, float size)\\n{\\n float x = P.x - P.y;\\n float y = P.x + P.y;\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\n float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\n float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\n float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float circle = length(P) - size/2.0;\\n float c1 = max(circle, s1);\\n float c2 = max(circle, s2);\\n float c3 = max(circle, s3);\\n float c4 = max(circle, s4);\\n // Union\\n float almost = min(min(min(c1, c2), c3), c4);\\n // In this case, the X is also outside of the main shape\\n float Xmask = length(P) - size / 1.6; // a circle\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n return min(max(X, Xmask), almost);\\n}\\n',s.squarex=\"\\nfloat marker(vec2 P, float size)\\n{\\n float x = P.x - P.y;\\n float y = P.x + P.y;\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\n float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\n float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\n float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float square = max(abs(P.x), abs(P.y)) - size/2.0;\\n float c1 = max(square, s1);\\n float c2 = max(square, s2);\\n float c3 = max(square, s3);\\n float c4 = max(square, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.asterisk='\\nfloat marker(vec2 P, float size)\\n{\\n // Masks\\n float diamond = max(abs(SQRT_2 / 2.0 * (P.x - P.y)), abs(SQRT_2 / 2.0 * (P.x + P.y))) - size / (2.0 * SQRT_2);\\n float square = max(abs(P.x), abs(P.y)) - size / (2.0 * SQRT_2);\\n // Shapes\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n float cross = min(abs(P.x), abs(P.y)) - size / 100.0; // bit of \"width\" for aa\\n // Result is union of masked shapes\\n return min(max(X, diamond), max(cross, square));\\n}\\n'},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const a=e(1),i=e(93),l=e(28),s=a.__importStar(e(18));class c extends i.XYGlyphView{}n.CenterRotatableView=c,c.__name__=\"CenterRotatableView\";class o extends i.XYGlyph{constructor(e){super(e)}static init_CenterRotatable(){this.mixins([l.LineVector,l.FillVector]),this.define({angle:[s.AngleSpec,0],width:[s.DistanceSpec],height:[s.DistanceSpec]})}}n.CenterRotatable=o,o.__name__=\"CenterRotatable\",o.init_CenterRotatable()},\n", + " function _(e,l,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(243);class t extends s.EllipseOvalView{}i.EllipseView=t,t.__name__=\"EllipseView\";class _ extends s.EllipseOval{constructor(e){super(e)}static init_Ellipse(){this.prototype.default_view=t}}i.Ellipse=_,_.__name__=\"Ellipse\",_.init_Ellipse()},\n", + " function _(t,s,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(1),h=t(241),a=e.__importStar(t(101)),r=t(88);class n extends h.CenterRotatableView{_set_data(){this.max_w2=0,\"data\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\"data\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)}_map_data(){\"data\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\"center\"):this.sw=this._width,\"data\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\"center\"):this.sh=this._height}_render(t,s,{sx:i,sy:e,sw:h,sh:a,_angle:r}){for(const n of s)isNaN(i[n]+e[n]+h[n]+a[n]+r[n])||(t.beginPath(),t.ellipse(i[n],e[n],h[n]/2,a[n]/2,r[n],0,2*Math.PI),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,n),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,n),t.stroke()))}_hit_point(t){let s,i,e,h,n,_,l,d,o;const{sx:x,sy:m}=t,w=this.renderer.xscale.invert(x),c=this.renderer.yscale.invert(m);\"data\"==this.model.properties.width.units?(s=w-this.max_width,i=w+this.max_width):(_=x-this.max_width,l=x+this.max_width,[s,i]=this.renderer.xscale.r_invert(_,l)),\"data\"==this.model.properties.height.units?(e=c-this.max_height,h=c+this.max_height):(d=m-this.max_height,o=m+this.max_height,[e,h]=this.renderer.yscale.r_invert(d,o));const p=this.index.indices({x0:s,x1:i,y0:e,y1:h}),y=[];for(const t of p)n=a.point_in_ellipse(x,m,this._angle[t],this.sh[t]/2,this.sw[t]/2,this.sx[t],this.sy[t]),n&&y.push(t);return new r.Selection({indices:y})}draw_legend_for_index(t,{x0:s,y0:i,x1:e,y1:h},a){const r=a+1,n=new Array(r);n[a]=(s+e)/2;const _=new Array(r);_[a]=(i+h)/2;const l=this.sw[a]/this.sh[a],d=.8*Math.min(Math.abs(e-s),Math.abs(h-i)),o=new Array(r),x=new Array(r);l>1?(o[a]=d,x[a]=d/l):(o[a]=d*l,x[a]=d),this._render(t,[a],{sx:n,sy:_,sw:o,sh:x,_angle:[0]})}_bounds({x0:t,x1:s,y0:i,y1:e}){return{x0:t-this.max_w2,x1:s+this.max_w2,y0:i-this.max_h2,y1:e+this.max_h2}}}i.EllipseOvalView=n,n.__name__=\"EllipseOvalView\";class _ extends h.CenterRotatable{constructor(t){super(t)}}i.EllipseOval=_,_.__name__=\"EllipseOval\"},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),h=t(245),r=t(24),_=i.__importStar(t(18));class a extends h.BoxView{scenterxy(t){return[(this.sleft[t]+this.sright[t])/2,this.sy[t]]}_lrtb(t){return[Math.min(this._left[t],this._right[t]),Math.max(this._left[t],this._right[t]),this._y[t]+.5*this._height[t],this._y[t]-.5*this._height[t]]}_map_data(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\"center\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);const t=this.sy.length;this.stop=new r.NumberArray(t),this.sbottom=new r.NumberArray(t);for(let e=0;e{t.beginPath(),t.rect(i[a],r[a],s[a]-i[a],n[a]-r[a]),t.fill()},()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,a),t.beginPath(),t.rect(i[a],r[a],s[a]-i[a],n[a]-r[a]),t.stroke()))}_clamp_viewport(){const t=this.renderer.plot_view.frame.bbox.h_range,e=this.renderer.plot_view.frame.bbox.v_range,i=this.stop.length;for(let s=0;sthis._update_image())}_update_image(){null!=this.image_data&&(this._set_data(null),this.renderer.plot_view.request_render())}_flat_img_to_buf8(e){return this.model.color_mapper.rgba_mapper.v_compute(e)}}a.ImageView=r,r.__name__=\"ImageView\";class o extends i.ImageBase{constructor(e){super(e)}static init_Image(){this.prototype.default_view=r,this.define({color_mapper:[s.Instance,()=>new n.LinearColorMapper({palette:[\"#000000\",\"#252525\",\"#525252\",\"#737373\",\"#969696\",\"#bdbdbd\",\"#d9d9d9\",\"#f0f0f0\",\"#ffffff\"]})]})}}a.Image=o,o.__name__=\"Image\",o.init_Image()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),a=e(93),h=e(24),_=i.__importStar(e(18)),n=e(88),r=e(9),d=e(30),l=e(11);class g extends a.XYGlyphView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,()=>this.renderer.request_render())}_render(e,t,{image_data:s,sx:i,sy:a,sw:h,sh:_}){const n=e.getImageSmoothingEnabled();e.setImageSmoothingEnabled(!1),e.globalAlpha=this.model.global_alpha;for(const n of t){if(null==s[n]||isNaN(i[n]+a[n]+h[n]+_[n]))continue;const t=a[n];e.translate(0,t),e.scale(1,-1),e.translate(0,-t),e.drawImage(s[n],0|i[n],0|a[n],h[n],_[n]),e.translate(0,t),e.scale(1,-1),e.translate(0,-t)}e.setImageSmoothingEnabled(n)}_set_data(e){this._set_width_heigh_data();for(let t=0,s=this._image.length;tthis.renderer.request_render())}_index_data(e){const{data_size:t}=this;for(let s=0;snull));const{retry_attempts:e,retry_timeout:t}=this.model;for(let s=0,r=this._url.length;s{this.image[s]=e,this.renderer.request_render()},attempts:e+1,timeout:t})}const s=\"data\"==this.model.properties.w.units,r=\"data\"==this.model.properties.h.units,i=this._x.length,n=new a.NumberArray(s?2*i:i),_=new a.NumberArray(r?2*i:i),{anchor:c}=this.model;function l(e,t){switch(c){case\"top_left\":case\"bottom_left\":case\"center_left\":return[e,e+t];case\"top_center\":case\"bottom_center\":case\"center\":return[e-t/2,e+t/2];case\"top_right\":case\"bottom_right\":case\"center_right\":return[e-t,e]}}function d(e,t){switch(c){case\"top_left\":case\"top_center\":case\"top_right\":return[e,e-t];case\"bottom_left\":case\"bottom_center\":case\"bottom_right\":return[e+t,e];case\"center_left\":case\"center\":case\"center_right\":return[e+t/2,e-t/2]}}if(s)for(let e=0;eNaN),t=null!=this.model.h?this._h:h.map(this._x,()=>NaN);switch(this.model.properties.w.units){case\"data\":this.sw=this.sdist(this.renderer.xscale,this._x,e,\"edge\",this.model.dilate);break;case\"screen\":this.sw=e}switch(this.model.properties.h.units){case\"data\":this.sh=this.sdist(this.renderer.yscale,this._y,t,\"edge\",this.model.dilate);break;case\"screen\":this.sh=t}}_render(e,t,{image:s,sx:r,sy:i,sw:a,sh:n,_angle:h}){const{frame:o}=this.renderer.plot_view;e.rect(o.bbox.left+1,o.bbox.top+1,o.bbox.width-2,o.bbox.height-2),e.clip();let _=!0;for(const o of t){if(isNaN(r[o]+i[o]+h[o]))continue;const t=s[o];null!=t?this._render_image(e,o,t,r,i,a,n,h):_=!1}_&&!this._images_rendered&&(this._images_rendered=!0,this.notify_finished())}_final_sx_sy(e,t,s,r,i){switch(e){case\"top_left\":return[t,s];case\"top_center\":return[t-r/2,s];case\"top_right\":return[t-r,s];case\"center_right\":return[t-r,s-i/2];case\"bottom_right\":return[t-r,s-i];case\"bottom_center\":return[t-r/2,s-i];case\"bottom_left\":return[t,s-i];case\"center_left\":return[t,s-i/2];case\"center\":return[t-r/2,s-i/2]}}_render_image(e,t,s,r,i,a,n,h){isNaN(a[t])&&(a[t]=s.width),isNaN(n[t])&&(n[t]=s.height);const{anchor:o}=this.model,[_,c]=this._final_sx_sy(o,r[t],i[t],a[t],n[t]);e.save(),e.globalAlpha=this.model.global_alpha;const l=a[t]/2,d=n[t]/2;h[t]?(e.translate(_,c),e.translate(l,d),e.rotate(h[t]),e.translate(-l,-d),e.drawImage(s,0,0,a[t],n[t]),e.translate(l,d),e.rotate(-h[t]),e.translate(-l,-d),e.translate(-_,-c)):e.drawImage(s,_,c,a[t],n[t]),e.restore()}bounds(){return this._bounds_rect}}s.ImageURLView=_,_.__name__=\"ImageURLView\";class c extends i.XYGlyph{constructor(e){super(e)}static init_ImageURL(){this.prototype.default_view=_,this.define({url:[n.StringSpec],anchor:[n.Anchor,\"top_left\"],global_alpha:[n.Number,1],angle:[n.AngleSpec,0],w:[n.DistanceSpec],h:[n.DistanceSpec],dilate:[n.Boolean,!1],retry_attempts:[n.Number,0],retry_timeout:[n.Number,0]})}}s.ImageURL=c,c.__name__=\"ImageURL\",c.init_ImageURL()},\n", + " function _(i,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=i(19);class a{constructor(i,e={}){this._image=new Image,this._finished=!1;const{attempts:t=1,timeout:a=1}=e;this.promise=new Promise((o,n)=>{this._image.crossOrigin=\"anonymous\";let r=0;this._image.onerror=()=>{if(++r==t){const a=`unable to load ${i} image after ${t} attempts`;if(s.logger.warn(a),null==this._image.crossOrigin)return void(null!=e.failed&&e.failed());s.logger.warn(`attempting to load ${i} without a cross origin policy`),this._image.crossOrigin=null,r=0}setTimeout(()=>this._image.src=i,a)},this._image.onload=()=>{this._finished=!0,null!=e.loaded&&e.loaded(this._image),o(this._image)},this._image.src=i})}get finished(){return this._finished}get image(){return this._image}}t.ImageLoader=a,a.__name__=\"ImageLoader\"},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(37),o=e(28),l=s.__importStar(e(101)),r=s.__importStar(e(18)),_=e(12),c=e(13),a=e(94),h=e(100),d=e(88);class y extends a.GlyphView{_project_data(){n.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(e){const{data_size:t}=this;for(let i=0;i0&&o.set(e,i)}return new d.Selection({indices:[...o.keys()],multiline_indices:c.to_object(o)})}get_interpolation_hit(e,t,i){const s=this._xs.get(e),n=this._ys.get(e),o=s[t],l=n[t],r=s[t+1],_=n[t+1];return h.line_interpolation(this.renderer,i,o,l,r,_)}draw_legend_for_index(e,t,i){h.generic_line_legend(this.visuals,e,t,i)}scenterxy(){throw new Error(this+\".scenterxy() is not implemented\")}}i.MultiLineView=y,y.__name__=\"MultiLineView\";class x extends a.Glyph{constructor(e){super(e)}static init_MultiLine(){this.prototype.default_view=y,this.define({xs:[r.XCoordinateSeqSpec,{field:\"xs\"}],ys:[r.YCoordinateSeqSpec,{field:\"ys\"}]}),this.mixins(o.LineVector)}}i.MultiLine=x,x.__name__=\"MultiLine\",x.init_MultiLine()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),n=e(95),o=e(94),r=e(100),l=e(12),h=e(12),_=e(28),a=i.__importStar(e(101)),d=i.__importStar(e(18)),c=e(88),x=e(11);class y extends o.GlyphView{_project_data(){}_index_data(e){const{min:t,max:s}=Math,{data_size:i}=this;for(let n=0;n1&&d.length>1)for(let s=1,i=n.length;s{this._inner_loop(e,t,o),e.fill(\"evenodd\")},()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,n),this._inner_loop(e,t,o),e.stroke())}}_hit_rect(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,o=[t,s,s,t],r=[i,i,n,n],[l,h]=this.renderer.xscale.r_invert(t,s),[_,d]=this.renderer.yscale.r_invert(i,n),x=this.index.indices({x0:l,x1:h,y0:_,y1:d}),y=[];for(const e of x){const t=this.sxs[e],s=this.sys[e];let i=!0;for(let e=0,n=t.length;e1){let r=!1;for(let e=1;ethis._inner_loop(e,t,r,e.fill),()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,n),this._inner_loop(e,t,r,e.stroke))}}_hit_rect(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,r=[t,s,s,t],o=[i,i,n,n],[a,c]=this.renderer.xscale.r_invert(t,s),[h,d]=this.renderer.yscale.r_invert(i,n),y=this.index.indices({x0:a,x1:c,y0:h,y1:d}),p=[];for(const e of y){const t=this.sxs.get(e),s=this.sys.get(e);let i=!0;for(let e=0,n=t.length;e1&&(e.stroke(),s=!1)}s?(e.lineTo(t,a),e.lineTo(l,_)):(e.beginPath(),e.moveTo(i[r],n[r]),s=!0),o=r}e.lineTo(i[r-1],n[r-1]),e.stroke()}}draw_legend_for_index(e,t,i){o.generic_line_legend(this.visuals,e,t,i)}}i.StepView=a,a.__name__=\"StepView\";class _ extends s.XYGlyph{constructor(e){super(e)}static init_Step(){this.prototype.default_view=a,this.mixins(r.LineVector),this.define({mode:[l.StepMode,\"before\"]})}}i.Step=_,_.__name__=\"Step\",_.init_Step()},\n", + " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(1),n=t(93),_=t(28),o=i.__importStar(t(101)),h=i.__importStar(t(18)),l=t(159),a=t(11),r=t(88);class c extends n.XYGlyphView{_rotate_point(t,s,e,i,n){return[(t-e)*Math.cos(n)-(s-i)*Math.sin(n)+e,(t-e)*Math.sin(n)+(s-i)*Math.cos(n)+i]}_text_bounds(t,s,e,i){return[[t,t+e,t+e,t,t],[s,s,s-i,s-i,s]]}_render(t,s,{sx:e,sy:i,_x_offset:n,_y_offset:_,_angle:o,_text:h}){this._sys=[],this._sxs=[];for(const a of s)if(this._sxs[a]=[],this._sys[a]=[],!isNaN(e[a]+i[a]+n[a]+_[a]+o[a])&&null!=h[a]&&this.visuals.text.doit){const s=\"\"+h[a];t.save(),t.translate(e[a]+n[a],i[a]+_[a]),t.rotate(o[a]),this.visuals.text.set_vectorize(t,a);const r=this.visuals.text.cache_select(\"font\",a),{height:c}=l.measure_font(r),x=this.visuals.text.text_line_height.value()*c;if(-1==s.indexOf(\"\\n\")){t.fillText(s,0,0);const o=e[a]+n[a],h=i[a]+_[a],l=t.measureText(s).width,[r,c]=this._text_bounds(o,h,l,x);this._sxs[a].push(r),this._sys[a].push(c)}else{const o=s.split(\"\\n\"),h=x*o.length,l=this.visuals.text.cache_select(\"text_baseline\",a);let r;switch(l){case\"top\":r=0;break;case\"middle\":r=-h/2+x/2;break;case\"bottom\":r=-h+x;break;default:r=0,console.warn(`'${l}' baseline not supported with multi line text`)}for(const s of o){t.fillText(s,0,r);const o=e[a]+n[a],h=r+i[a]+_[a],l=t.measureText(s).width,[c,u]=this._text_bounds(o,h,l,x);this._sxs[a].push(c),this._sys[a].push(u),r+=x}}t.restore()}}_hit_point(t){const{sx:s,sy:e}=t,i=[];for(let t=0;tthis.request_render())}_draw_regions(i){if(!this.visuals.band_fill.doit&&!this.visuals.band_hatch.doit)return;this.visuals.band_fill.set_value(i);const[e,t]=this.grid_coords(\"major\",!1);for(let s=0;s{i.fillRect(n[0],r[0],o[1]-n[0],d[1]-r[0])},()=>this.request_render())}}_draw_grids(i){if(!this.visuals.grid_line.doit)return;const[e,t]=this.grid_coords(\"major\");this._draw_grid_helper(i,this.visuals.grid_line,e,t)}_draw_minor_grids(i){if(!this.visuals.minor_grid_line.doit)return;const[e,t]=this.grid_coords(\"minor\");this._draw_grid_helper(i,this.visuals.minor_grid_line,e,t)}_draw_grid_helper(i,e,t,s){e.set_value(i),i.beginPath();for(let e=0;et[1]&&(n=t[1]);else{[s,n]=t;for(const i of this.plot_view.axis_views)i.dimension==this.model.dimension&&i.model.x_range_name==this.model.x_range_name&&i.model.y_range_name==this.model.y_range_name&&([s,n]=i.computed_bounds)}return[s,n]}grid_coords(i,e=!0){const t=this.model.dimension,s=(t+1)%2,[n,r]=this.ranges();let[o,d]=this.computed_bounds();[o,d]=[Math.min(o,d),Math.max(o,d)];const _=[[],[]],a=this.model.get_ticker();if(null==a)return _;const l=a.get_ticks(o,d,n,r.min,{})[i],h=n.min,c=n.max,u=r.min,m=r.max;e||(l[0]!=h&&l.splice(0,0,h),l[l.length-1]!=c&&l.push(c));for(let i=0;ithis.rebuild())}get child_models(){return this.model.children}}i.BoxView=c,c.__name__=\"BoxView\";class r extends s.LayoutDOM{constructor(e){super(e)}static init_Box(){this.define({children:[o.Array,[]],spacing:[o.Number,0]})}}i.Box=r,r.__name__=\"Box\",r.init_Box()},\n", + " function _(i,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const s=i(81),o=i(20),l=i(72),n=i(19),h=i(8),a=i(115),r=i(78),_=i(212),d=i(273),c=i(77);class u extends r.DOMView{constructor(){super(...arguments),this._idle_notified=!1,this._offset_parent=null,this._viewport={}}initialize(){super.initialize(),this.el.style.position=this.is_root?\"relative\":\"absolute\",this._child_views=new Map}async lazy_initialize(){await this.build_child_views()}remove(){for(const i of this.child_views)i.remove();this._child_views.clear(),super.remove()}connect_signals(){super.connect_signals(),this.is_root&&(this._on_resize=()=>this.resize_layout(),window.addEventListener(\"resize\",this._on_resize),this._parent_observer=setInterval(()=>{const i=this.el.offsetParent;this._offset_parent!=i&&(this._offset_parent=i,null!=i&&(this.compute_viewport(),this.invalidate_layout()))},250));const i=this.model.properties;this.on_change([i.width,i.height,i.min_width,i.min_height,i.max_width,i.max_height,i.margin,i.width_policy,i.height_policy,i.sizing_mode,i.aspect_ratio,i.visible],()=>this.invalidate_layout()),this.on_change([i.background,i.css_classes],()=>this.invalidate_render())}disconnect_signals(){null!=this._parent_observer&&clearTimeout(this._parent_observer),null!=this._on_resize&&window.removeEventListener(\"resize\",this._on_resize),super.disconnect_signals()}css_classes(){return super.css_classes().concat(this.model.css_classes)}get child_views(){return this.child_models.map(i=>this._child_views.get(i))}async build_child_views(){await a.build_views(this._child_views,this.child_models,{parent:this})}render(){super.render(),l.empty(this.el);const{background:i}=this.model;this.el.style.backgroundColor=null!=i?i:\"\",l.classes(this.el).clear().add(...this.css_classes());for(const i of this.child_views)this.el.appendChild(i.el),i.render()}update_layout(){for(const i of this.child_views)i.update_layout();this._update_layout()}update_position(){this.el.style.display=this.model.visible?\"block\":\"none\";const i=this.is_root?this.layout.sizing.margin:void 0;l.position(this.el,this.layout.bbox,i);for(const i of this.child_views)i.update_position()}after_layout(){for(const i of this.child_views)i.after_layout();this._has_finished=!0}compute_viewport(){this._viewport=this._viewport_size()}renderTo(i){i.appendChild(this.el),this._offset_parent=this.el.offsetParent,this.compute_viewport(),this.build()}build(){return this.assert_root(),this.render(),this.update_layout(),this.compute_layout(),this}async rebuild(){await this.build_child_views(),this.invalidate_render()}compute_layout(){const i=Date.now();this.layout.compute(this._viewport),this.update_position(),this.after_layout(),n.logger.debug(`layout computed in ${Date.now()-i} ms`),this.notify_finished()}resize_layout(){this.root.compute_viewport(),this.root.compute_layout()}invalidate_layout(){this.root.update_layout(),this.root.compute_layout()}invalidate_render(){this.render(),this.invalidate_layout()}has_finished(){if(!super.has_finished())return!1;for(const i of this.child_views)if(!i.has_finished())return!1;return!0}notify_finished(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):this.root.notify_finished()}_width_policy(){return null!=this.model.width?\"fixed\":\"fit\"}_height_policy(){return null!=this.model.height?\"fixed\":\"fit\"}box_sizing(){let{width_policy:i,height_policy:t,aspect_ratio:e}=this.model;\"auto\"==i&&(i=this._width_policy()),\"auto\"==t&&(t=this._height_policy());const{sizing_mode:s}=this.model;if(null!=s)if(\"fixed\"==s)i=t=\"fixed\";else if(\"stretch_both\"==s)i=t=\"max\";else if(\"stretch_width\"==s)i=\"max\";else if(\"stretch_height\"==s)t=\"max\";else switch(null==e&&(e=\"auto\"),s){case\"scale_width\":i=\"max\",t=\"min\";break;case\"scale_height\":i=\"min\",t=\"max\";break;case\"scale_both\":i=\"max\",t=\"max\"}const o={width_policy:i,height_policy:t},{min_width:l,min_height:n}=this.model;null!=l&&(o.min_width=l),null!=n&&(o.min_height=n);const{width:a,height:r}=this.model;null!=a&&(o.width=a),null!=r&&(o.height=r);const{max_width:_,max_height:d}=this.model;null!=_&&(o.max_width=_),null!=d&&(o.max_height=d),\"auto\"==e&&null!=a&&null!=r?o.aspect=a/r:h.isNumber(e)&&(o.aspect=e);const{margin:c}=this.model;if(null!=c)if(h.isNumber(c))o.margin={top:c,right:c,bottom:c,left:c};else if(2==c.length){const[i,t]=c;o.margin={top:i,right:t,bottom:i,left:t}}else{const[i,t,e,s]=c;o.margin={top:i,right:t,bottom:e,left:s}}o.visible=this.model.visible;const{align:u}=this.model;return h.isArray(u)?[o.halign,o.valign]=u:o.halign=o.valign=u,o}_viewport_size(){return l.undisplayed(this.el,()=>{let i=this.el;for(;i=i.parentElement;){if(i.classList.contains(d.bk_root))continue;if(i==document.body){const{margin:{left:i,right:t,top:e,bottom:s}}=l.extents(document.body);return{width:Math.ceil(document.documentElement.clientWidth-i-t),height:Math.ceil(document.documentElement.clientHeight-e-s)}}const{padding:{left:t,right:e,top:s,bottom:o}}=l.extents(i),{width:n,height:h}=i.getBoundingClientRect(),a=Math.ceil(n-t-e),r=Math.ceil(h-s-o);if(a>0||r>0)return{width:a>0?a:void 0,height:r>0?r:void 0}}return{}})}export(i,t=!0){const e=\"png\"==i?\"canvas\":\"svg\",s=new c.CanvasLayer(e,t),{width:o,height:l}=this.layout.bbox;s.resize(o,l);for(const e of this.child_views){const o=e.export(i,t),{x:l,y:n}=e.layout.bbox;s.ctx.drawImage(o.canvas,l,n)}return s}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box,children:this.child_views.map(i=>i.serializable_state())})}}e.LayoutDOMView=u,u.__name__=\"LayoutDOMView\";class m extends s.Model{constructor(i){super(i)}static init_LayoutDOM(){this.define(i=>{const{Boolean:t,Number:e,String:s,Null:l,Auto:n,Color:h,Array:a,Tuple:r,Or:d}=i,c=r(e,e),u=r(e,e,e,e);return{width:[d(e,l),null],height:[d(e,l),null],min_width:[d(e,l),null],min_height:[d(e,l),null],max_width:[d(e,l),null],max_height:[d(e,l),null],margin:[d(e,c,u),[0,0,0,0]],width_policy:[d(_.SizingPolicy,n),\"auto\"],height_policy:[d(_.SizingPolicy,n),\"auto\"],aspect_ratio:[d(e,n,l),null],sizing_mode:[d(o.SizingMode,l),null],visible:[t,!0],disabled:[t,!1],align:[d(o.Align,r(o.Align,o.Align)),\"start\"],background:[d(h,l),null],css_classes:[a(s),[]]}})}}e.LayoutDOM=m,m.__name__=\"LayoutDOM\",m.init_LayoutDOM()},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.bk_root=\"bk-root\"},\n", + " function _(t,o,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),e=t(271),n=t(216),l=s.__importStar(t(18));class u extends e.BoxView{_update_layout(){const t=this.child_views.map(t=>t.layout);this.layout=new n.Column(t),this.layout.rows=this.model.rows,this.layout.spacing=[this.model.spacing,0],this.layout.set_sizing(this.box_sizing())}}i.ColumnView=u,u.__name__=\"ColumnView\";class _ extends e.Box{constructor(t){super(t)}static init_Column(){this.prototype.default_view=u,this.define({rows:[l.Any,\"auto\"]})}}i.Column=_,_.__name__=\"Column\",_.init_Column()},\n", + " function _(t,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=t(1),e=t(272),n=t(216),l=o.__importStar(t(18));class r extends e.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.children.change,()=>this.rebuild())}get child_models(){return this.model.children.map(([t])=>t)}_update_layout(){this.layout=new n.Grid,this.layout.rows=this.model.rows,this.layout.cols=this.model.cols,this.layout.spacing=this.model.spacing;for(const[t,i,s,o,e]of this.model.children){const n=this._child_views.get(t);this.layout.items.push({layout:n.layout,row:i,col:s,row_span:o,col_span:e})}this.layout.set_sizing(this.box_sizing())}}s.GridBoxView=r,r.__name__=\"GridBoxView\";class a extends e.LayoutDOM{constructor(t){super(t)}static init_GridBox(){this.prototype.default_view=r,this.define({children:[l.Array,[]],rows:[l.Any,\"auto\"],cols:[l.Any,\"auto\"],spacing:[l.Any,0]})}}s.GridBox=a,a.__name__=\"GridBox\",a.init_GridBox()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(272),_=e(212);class n extends s.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new _.ContentBox(this.el),this.layout.set_sizing(this.box_sizing())}}o.HTMLBoxView=n,n.__name__=\"HTMLBoxView\";class i extends s.LayoutDOM{constructor(e){super(e)}}o.HTMLBox=i,i.__name__=\"HTMLBox\"},\n", + " function _(t,o,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),e=t(271),_=t(216),a=s.__importStar(t(18));class n extends e.BoxView{_update_layout(){const t=this.child_views.map(t=>t.layout);this.layout=new _.Row(t),this.layout.cols=this.model.cols,this.layout.spacing=[0,this.model.spacing],this.layout.set_sizing(this.box_sizing())}}i.RowView=n,n.__name__=\"RowView\";class l extends e.Box{constructor(t){super(t)}static init_Row(){this.prototype.default_view=n,this.define({cols:[a.Any,\"auto\"]})}}i.Row=l,l.__name__=\"Row\",l.init_Row()},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const i=e(272),s=e(212);class _ extends i.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new s.LayoutItem,this.layout.set_sizing(this.box_sizing())}}a.SpacerView=_,_.__name__=\"SpacerView\";class o extends i.LayoutDOM{constructor(e){super(e)}static init_Spacer(){this.prototype.default_view=_}}a.Spacer=o,o.__name__=\"Spacer\",o.init_Spacer()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),a=e(212),l=e(72),h=e(9),o=i.__importStar(e(18)),c=e(272),d=e(81),r=e(173),n=e(280),_=e(281),b=e(282),p=i.__importDefault(e(283)),u=i.__importDefault(e(284)),m=i.__importDefault(e(285));class v extends c.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.tabs.change,()=>this.rebuild()),this.connect(this.model.properties.active.change,()=>this.on_active_change())}styles(){return[...super.styles(),p.default,u.default,m.default]}get child_models(){return this.model.tabs.map(e=>e.child)}_update_layout(){const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,{scroll_el:s,headers_el:i}=this;this.header=new class extends a.ContentBox{_measure(e){const a=l.size(s),o=l.children(i).slice(0,3).map(e=>l.size(e)),{width:c,height:d}=super._measure(e);if(t){const t=a.width+h.sum(o.map(e=>e.width));return{width:e.width!=1/0?e.width:t,height:d}}{const t=a.height+h.sum(o.map(e=>e.height));return{width:c,height:e.height!=1/0?e.height:t}}}}(this.header_el),t?this.header.set_sizing({width_policy:\"fit\",height_policy:\"fixed\"}):this.header.set_sizing({width_policy:\"fixed\",height_policy:\"fit\"});let o=1,c=1;switch(e){case\"above\":o-=1;break;case\"below\":o+=1;break;case\"left\":c-=1;break;case\"right\":c+=1}const d={layout:this.header,row:o,col:c},r=this.child_views.map(e=>({layout:e.layout,row:1,col:1}));this.layout=new a.Grid([d,...r]),this.layout.set_sizing(this.box_sizing())}update_position(){super.update_position(),this.header_el.style.position=\"absolute\",l.position(this.header_el,this.header.bbox);const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,s=l.size(this.scroll_el),i=l.scroll_size(this.headers_el);if(t){const{width:e}=this.header.bbox;i.width>e?(this.wrapper_el.style.maxWidth=e-s.width+\"px\",l.display(this.scroll_el)):(this.wrapper_el.style.maxWidth=\"\",l.undisplay(this.scroll_el))}else{const{height:e}=this.header.bbox;i.height>e?(this.wrapper_el.style.maxHeight=e-s.height+\"px\",l.display(this.scroll_el)):(this.wrapper_el.style.maxHeight=\"\",l.undisplay(this.scroll_el))}const{child_views:a}=this;for(const e of a)l.hide(e.el);const h=a[this.model.active];null!=h&&l.show(h.el)}render(){super.render();const{active:e}=this.model,t=this.model.tabs_location,s=\"above\"==t||\"below\"==t,i=this.model.tabs.map((t,s)=>{const i=l.div({class:[n.bk_tab,s==e?r.bk_active:null]},t.title);if(i.addEventListener(\"click\",e=>{e.target==e.currentTarget&&this.change_active(s)}),t.closable){const e=l.div({class:n.bk_close});e.addEventListener(\"click\",e=>{if(e.target==e.currentTarget){this.model.tabs=h.remove_at(this.model.tabs,s);const e=this.model.tabs.length;this.model.active>e-1&&(this.model.active=e-1)}}),i.appendChild(e)}return i});this.headers_el=l.div({class:[n.bk_headers]},i),this.wrapper_el=l.div({class:n.bk_headers_wrapper},this.headers_el);const a=l.div({class:[_.bk_btn,_.bk_btn_default],disabled:\"\"},l.div({class:[b.bk_caret,r.bk_left]})),o=l.div({class:[_.bk_btn,_.bk_btn_default]},l.div({class:[b.bk_caret,r.bk_right]}));let c=0;const d=e=>()=>{const t=this.model.tabs.length;c=\"left\"==e?Math.max(c-1,0):Math.min(c+1,t-1),0==c?a.setAttribute(\"disabled\",\"\"):a.removeAttribute(\"disabled\"),c==t-1?o.setAttribute(\"disabled\",\"\"):o.removeAttribute(\"disabled\");const i=l.children(this.headers_el).slice(0,c).map(e=>e.getBoundingClientRect());if(s){const e=-h.sum(i.map(e=>e.width));this.headers_el.style.left=e+\"px\"}else{const e=-h.sum(i.map(e=>e.height));this.headers_el.style.top=e+\"px\"}};a.addEventListener(\"click\",d(\"left\")),o.addEventListener(\"click\",d(\"right\")),this.scroll_el=l.div({class:_.bk_btn_group},a,o),this.header_el=l.div({class:[n.bk_tabs_header,r.bk_side(t)]},this.scroll_el,this.wrapper_el),this.el.appendChild(this.header_el)}change_active(e){e!=this.model.active&&(this.model.active=e)}on_active_change(){const e=this.model.active,t=l.children(this.headers_el);for(const e of t)e.classList.remove(r.bk_active);t[e].classList.add(r.bk_active);const{child_views:s}=this;for(const e of s)l.hide(e.el);l.show(s[e].el)}}s.TabsView=v,v.__name__=\"TabsView\";class g extends c.LayoutDOM{constructor(e){super(e)}static init_Tabs(){this.prototype.default_view=v,this.define({tabs:[o.Array,[]],tabs_location:[o.Location,\"above\"],active:[o.Number,0]})}}s.Tabs=g,g.__name__=\"Tabs\",g.init_Tabs();class w extends d.Model{constructor(e){super(e)}static init_Panel(){this.define({title:[o.String,\"\"],child:[o.Instance],closable:[o.Boolean,!1]})}}s.Panel=w,w.__name__=\"Panel\",w.init_Panel()},\n", + " function _(e,b,a){Object.defineProperty(a,\"__esModule\",{value:!0}),a.bk_tabs_header=\"bk-tabs-header\",a.bk_headers_wrapper=\"bk-headers-wrapper\",a.bk_headers=\"bk-headers\",a.bk_tab=\"bk-tab\",a.bk_close=\"bk-close\"},\n", + " function _(n,b,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.bk_btn=\"bk-btn\",t.bk_btn_group=\"bk-btn-group\",t.bk_btn_default=\"bk-btn-default\",t.bk_btn_primary=\"bk-btn-primary\",t.bk_btn_success=\"bk-btn-success\",t.bk_btn_warning=\"bk-btn-warning\",t.bk_btn_danger=\"bk-btn-danger\",t.bk_btn_type=function(n){switch(n){case\"default\":return t.bk_btn_default;case\"primary\":return t.bk_btn_primary;case\"success\":return t.bk_btn_success;case\"warning\":return t.bk_btn_warning;case\"danger\":return t.bk_btn_danger}},t.bk_dropdown_toggle=\"bk-dropdown-toggle\"},\n", + " function _(e,b,d){Object.defineProperty(d,\"__esModule\",{value:!0}),d.bk_menu=\"bk-menu\",d.bk_caret=\"bk-caret\",d.bk_divider=\"bk-divider\"},\n", + " function _(n,o,b){Object.defineProperty(b,\"__esModule\",{value:!0});b.default=\"\\n.bk-root .bk-btn {\\n height: 100%;\\n display: inline-block;\\n text-align: center;\\n vertical-align: middle;\\n white-space: nowrap;\\n cursor: pointer;\\n padding: 6px 12px;\\n font-size: 12px;\\n border: 1px solid transparent;\\n border-radius: 4px;\\n outline: 0;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n}\\n.bk-root .bk-btn:hover,\\n.bk-root .bk-btn:focus {\\n text-decoration: none;\\n}\\n.bk-root .bk-btn:active,\\n.bk-root .bk-btn.bk-active {\\n background-image: none;\\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\\n}\\n.bk-root .bk-btn[disabled] {\\n cursor: not-allowed;\\n pointer-events: none;\\n opacity: 0.65;\\n box-shadow: none;\\n}\\n.bk-root .bk-btn-default {\\n color: #333;\\n background-color: #fff;\\n border-color: #ccc;\\n}\\n.bk-root .bk-btn-default:hover {\\n background-color: #f5f5f5;\\n border-color: #b8b8b8;\\n}\\n.bk-root .bk-btn-default.bk-active {\\n background-color: #ebebeb;\\n border-color: #adadad;\\n}\\n.bk-root .bk-btn-default[disabled],\\n.bk-root .bk-btn-default[disabled]:hover,\\n.bk-root .bk-btn-default[disabled]:focus,\\n.bk-root .bk-btn-default[disabled]:active,\\n.bk-root .bk-btn-default[disabled].bk-active {\\n background-color: #e6e6e6;\\n border-color: #ccc;\\n}\\n.bk-root .bk-btn-primary {\\n color: #fff;\\n background-color: #428bca;\\n border-color: #357ebd;\\n}\\n.bk-root .bk-btn-primary:hover {\\n background-color: #3681c1;\\n border-color: #2c699e;\\n}\\n.bk-root .bk-btn-primary.bk-active {\\n background-color: #3276b1;\\n border-color: #285e8e;\\n}\\n.bk-root .bk-btn-primary[disabled],\\n.bk-root .bk-btn-primary[disabled]:hover,\\n.bk-root .bk-btn-primary[disabled]:focus,\\n.bk-root .bk-btn-primary[disabled]:active,\\n.bk-root .bk-btn-primary[disabled].bk-active {\\n background-color: #506f89;\\n border-color: #357ebd;\\n}\\n.bk-root .bk-btn-success {\\n color: #fff;\\n background-color: #5cb85c;\\n border-color: #4cae4c;\\n}\\n.bk-root .bk-btn-success:hover {\\n background-color: #4eb24e;\\n border-color: #409240;\\n}\\n.bk-root .bk-btn-success.bk-active {\\n background-color: #47a447;\\n border-color: #398439;\\n}\\n.bk-root .bk-btn-success[disabled],\\n.bk-root .bk-btn-success[disabled]:hover,\\n.bk-root .bk-btn-success[disabled]:focus,\\n.bk-root .bk-btn-success[disabled]:active,\\n.bk-root .bk-btn-success[disabled].bk-active {\\n background-color: #667b66;\\n border-color: #4cae4c;\\n}\\n.bk-root .bk-btn-warning {\\n color: #fff;\\n background-color: #f0ad4e;\\n border-color: #eea236;\\n}\\n.bk-root .bk-btn-warning:hover {\\n background-color: #eea43b;\\n border-color: #e89014;\\n}\\n.bk-root .bk-btn-warning.bk-active {\\n background-color: #ed9c28;\\n border-color: #d58512;\\n}\\n.bk-root .bk-btn-warning[disabled],\\n.bk-root .bk-btn-warning[disabled]:hover,\\n.bk-root .bk-btn-warning[disabled]:focus,\\n.bk-root .bk-btn-warning[disabled]:active,\\n.bk-root .bk-btn-warning[disabled].bk-active {\\n background-color: #c89143;\\n border-color: #eea236;\\n}\\n.bk-root .bk-btn-danger {\\n color: #fff;\\n background-color: #d9534f;\\n border-color: #d43f3a;\\n}\\n.bk-root .bk-btn-danger:hover {\\n background-color: #d5433e;\\n border-color: #bd2d29;\\n}\\n.bk-root .bk-btn-danger.bk-active {\\n background-color: #d2322d;\\n border-color: #ac2925;\\n}\\n.bk-root .bk-btn-danger[disabled],\\n.bk-root .bk-btn-danger[disabled]:hover,\\n.bk-root .bk-btn-danger[disabled]:focus,\\n.bk-root .bk-btn-danger[disabled]:active,\\n.bk-root .bk-btn-danger[disabled].bk-active {\\n background-color: #a55350;\\n border-color: #d43f3a;\\n}\\n.bk-root .bk-btn-group {\\n height: 100%;\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-btn-group > .bk-btn {\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n}\\n.bk-root .bk-btn-group > .bk-btn + .bk-btn {\\n margin-left: -1px;\\n}\\n.bk-root .bk-btn-group > .bk-btn:first-child:not(:last-child) {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0;\\n}\\n.bk-root .bk-btn-group > .bk-btn:not(:first-child):last-child {\\n border-bottom-left-radius: 0;\\n border-top-left-radius: 0;\\n}\\n.bk-root .bk-btn-group > .bk-btn:not(:first-child):not(:last-child) {\\n border-radius: 0;\\n}\\n.bk-root .bk-btn-group .bk-dropdown-toggle {\\n flex: 0 0 0;\\n -webkit-flex: 0 0 0;\\n padding: 6px 6px;\\n}\\n\"},\n", + " function _(n,o,r){Object.defineProperty(r,\"__esModule\",{value:!0});r.default=\"\\n.bk-root .bk-menu-icon {\\n width: 28px;\\n height: 28px;\\n background-size: 60%;\\n background-color: transparent;\\n background-repeat: no-repeat;\\n background-position: center center;\\n}\\n.bk-root .bk-context-menu {\\n position: absolute;\\n display: inline-flex;\\n display: -webkit-inline-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n width: auto;\\n height: auto;\\n z-index: 100;\\n cursor: pointer;\\n font-size: 12px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\\n}\\n.bk-root .bk-context-menu.bk-horizontal {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-context-menu.bk-vertical {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-context-menu > .bk-divider {\\n cursor: default;\\n overflow: hidden;\\n background-color: #e5e5e5;\\n}\\n.bk-root .bk-context-menu.bk-horizontal > .bk-divider {\\n width: 1px;\\n margin: 5px 0;\\n}\\n.bk-root .bk-context-menu.bk-vertical > .bk-divider {\\n height: 1px;\\n margin: 0 5px;\\n}\\n.bk-root .bk-context-menu > :not(.bk-divider) {\\n border: 1px solid transparent;\\n}\\n.bk-root .bk-context-menu > :not(.bk-divider).bk-active {\\n border-color: #26aae1;\\n}\\n.bk-root .bk-context-menu > :not(.bk-divider):hover {\\n background-color: #f9f9f9;\\n}\\n.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):first-child {\\n border-top-left-radius: 4px;\\n border-bottom-left-radius: 4px;\\n}\\n.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):last-child {\\n border-top-right-radius: 4px;\\n border-bottom-right-radius: 4px;\\n}\\n.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):first-child {\\n border-top-left-radius: 4px;\\n border-top-right-radius: 4px;\\n}\\n.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):last-child {\\n border-bottom-left-radius: 4px;\\n border-bottom-right-radius: 4px;\\n}\\n.bk-root .bk-menu {\\n position: absolute;\\n left: 0;\\n width: 100%;\\n z-index: 100;\\n cursor: pointer;\\n font-size: 12px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\\n}\\n.bk-root .bk-menu.bk-above {\\n bottom: 100%;\\n}\\n.bk-root .bk-menu.bk-below {\\n top: 100%;\\n}\\n.bk-root .bk-menu > .bk-divider {\\n height: 1px;\\n margin: 7.5px 0;\\n overflow: hidden;\\n background-color: #e5e5e5;\\n}\\n.bk-root .bk-menu > :not(.bk-divider) {\\n padding: 6px 12px;\\n}\\n.bk-root .bk-menu > :not(.bk-divider):hover,\\n.bk-root .bk-menu > :not(.bk-divider).bk-active {\\n background-color: #e6e6e6;\\n}\\n.bk-root .bk-caret {\\n display: inline-block;\\n vertical-align: middle;\\n width: 0;\\n height: 0;\\n margin: 0 5px;\\n}\\n.bk-root .bk-caret.bk-down {\\n border-top: 4px solid;\\n}\\n.bk-root .bk-caret.bk-up {\\n border-bottom: 4px solid;\\n}\\n.bk-root .bk-caret.bk-down,\\n.bk-root .bk-caret.bk-up {\\n border-right: 4px solid transparent;\\n border-left: 4px solid transparent;\\n}\\n.bk-root .bk-caret.bk-left {\\n border-right: 4px solid;\\n}\\n.bk-root .bk-caret.bk-right {\\n border-left: 4px solid;\\n}\\n.bk-root .bk-caret.bk-left,\\n.bk-root .bk-caret.bk-right {\\n border-top: 4px solid transparent;\\n border-bottom: 4px solid transparent;\\n}\\n\"},\n", + " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});n.default='\\n.bk-root .bk-tabs-header {\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n overflow: hidden;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n}\\n.bk-root .bk-tabs-header .bk-btn-group {\\n height: auto;\\n margin-right: 5px;\\n}\\n.bk-root .bk-tabs-header .bk-btn-group > .bk-btn {\\n flex-grow: 0;\\n -webkit-flex-grow: 0;\\n height: auto;\\n padding: 4px 4px;\\n}\\n.bk-root .bk-tabs-header .bk-headers-wrapper {\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n overflow: hidden;\\n color: #666666;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-headers-wrapper {\\n border-bottom: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-right .bk-headers-wrapper {\\n border-left: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-below .bk-headers-wrapper {\\n border-top: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-headers-wrapper {\\n border-right: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-above,\\n.bk-root .bk-tabs-header.bk-below {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-headers,\\n.bk-root .bk-tabs-header.bk-below .bk-headers {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-tabs-header.bk-left,\\n.bk-root .bk-tabs-header.bk-right {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-headers,\\n.bk-root .bk-tabs-header.bk-right .bk-headers {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-tabs-header .bk-headers {\\n position: relative;\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n}\\n.bk-root .bk-tabs-header .bk-tab {\\n padding: 4px 8px;\\n border: solid transparent;\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.bk-root .bk-tabs-header .bk-tab:hover {\\n background-color: #f2f2f2;\\n}\\n.bk-root .bk-tabs-header .bk-tab.bk-active {\\n color: #4d4d4d;\\n background-color: white;\\n border-color: #e6e6e6;\\n}\\n.bk-root .bk-tabs-header .bk-tab .bk-close {\\n margin-left: 10px;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-tab {\\n border-width: 3px 1px 0px 1px;\\n border-radius: 4px 4px 0 0;\\n}\\n.bk-root .bk-tabs-header.bk-right .bk-tab {\\n border-width: 1px 3px 1px 0px;\\n border-radius: 0 4px 4px 0;\\n}\\n.bk-root .bk-tabs-header.bk-below .bk-tab {\\n border-width: 0px 1px 3px 1px;\\n border-radius: 0 0 4px 4px;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-tab {\\n border-width: 1px 0px 1px 3px;\\n border-radius: 4px 0 0 4px;\\n}\\n.bk-root .bk-close {\\n display: inline-block;\\n width: 10px;\\n height: 10px;\\n vertical-align: middle;\\n background-image: url(\\'data:image/svg+xml;utf8, \\');\\n}\\n.bk-root .bk-close:hover {\\n background-image: url(\\'data:image/svg+xml;utf8, \\');\\n}\\n'},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const o=e(274);class _ extends o.ColumnView{}i.WidgetBoxView=_,_.__name__=\"WidgetBoxView\";class n extends o.Column{constructor(e){super(e)}static init_WidgetBox(){this.prototype.default_view=_}}i.WidgetBox=n,n.__name__=\"WidgetBox\",n.init_WidgetBox()},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});e(1).__exportStar(e(288),t);var a=e(289);t.Marker=a.Marker;var _=e(290);t.Scatter=_.Scatter},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const i=e(1),r=e(289),n=i.__importStar(e(238)),s=Math.sqrt(3);function c(e,t){e.rotate(Math.PI/4),a(e,t),e.rotate(-Math.PI/4)}function l(e,t){const o=t*s,i=o/3;e.moveTo(-o/2,-i),e.lineTo(0,0),e.lineTo(o/2,-i),e.lineTo(0,0),e.lineTo(0,t)}function a(e,t){e.moveTo(0,t),e.lineTo(0,-t),e.moveTo(-t,0),e.lineTo(t,0)}function u(e,t){e.moveTo(0,t),e.lineTo(t/1.5,0),e.lineTo(0,-t),e.lineTo(-t/1.5,0),e.closePath()}function d(e,t){const o=t*s,i=o/3;e.moveTo(-t,i),e.lineTo(t,i),e.lineTo(0,i-o),e.closePath()}function v(e,t,o,i,r){a(e,o),c(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function _(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function f(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),a(e,o),e.stroke())}function T(e,t,o,i,r){_(e,t,o,i,r),P(e,t,o,i,r)}function z(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),l(e,o),e.stroke())}function C(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),c(e,o),e.stroke())}function k(e,t,o,i,r){a(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function m(e,t,o,i,r){u(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function h(e,t,o,i,r){u(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.moveTo(0,o),e.lineTo(0,-o),e.moveTo(-o/1.5,0),e.lineTo(o/1.5,0),e.stroke())}function q(e,t,o,i,r){m(e,t,o,i,r),P(e,t,o,i,r)}function P(e,t,o,i,r){!function(e,t){e.beginPath(),e.arc(0,0,t/4,0,2*Math.PI,!1),e.closePath()}(e,o),i.set_vectorize(e,t),e.fillStyle=e.strokeStyle,e.fill()}function D(e,t,o,i,r){!function(e,t){const o=t/2,i=s*o;e.moveTo(t,0),e.lineTo(o,-i),e.lineTo(-o,-i),e.lineTo(-t,0),e.lineTo(-o,i),e.lineTo(o,i),e.closePath()}(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function g(e,t,o,i,r){D(e,t,o,i,r),P(e,t,o,i)}function S(e,t,o,i,r){e.rotate(Math.PI),d(e,o),e.rotate(-Math.PI),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function G(e,t,o,i,r){const n=3*o/8,s=[n,n,o,o,n,n,-n,-n,-o,-o,-n,-n],c=[o,n,n,-n,-n,-o,-o,-n,-n,n,n,o];for(e.moveTo(s[0],c[0]),t=1;t<12;t++)e.lineTo(s[t],c[t]);e.closePath(),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function L(e,t,o,i,r){const n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function M(e,t,o,i,r){const n=3*o/8;e.moveTo(-o,-o),e.quadraticCurveTo(0,-n,o,-o),e.quadraticCurveTo(n,0,o,o),e.quadraticCurveTo(0,n,-o,o),e.quadraticCurveTo(-n,0,-o,-o),e.closePath(),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function p(e,t,o,i,r){const n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),a(e,o),e.stroke())}function x(e,t,o,i,r){L(e,t,o,i,r),P(e,t,o,i)}function I(e,t,o,i,r){const n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.moveTo(-o,o),e.lineTo(o,-o),e.moveTo(-o,-o),e.lineTo(o,o),e.stroke())}function y(e,t,o,i,r){d(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function X(e,t,o,i,r){y(e,t,o,i,r),P(e,t,o,i)}function H(e,t,o,i,r){const n=o*s,c=n/3,l=3*c/8;e.moveTo(-o,c),e.quadraticCurveTo(0,l,o,c),e.quadraticCurveTo(s*l/2,l/2,0,c-n),e.quadraticCurveTo(-s*l/2,l/2,-o,c),e.closePath(),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function Y(e,t,o,i,r){!function(e,t){e.moveTo(-t,0),e.lineTo(t,0)}(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function A(e,t,o,i,r){c(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function b(e,t,o,i,r){l(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function w(e,t,o){var i;const n=class extends r.MarkerView{static initClass(){this.prototype._render_one=t,this.prototype.glglyph_cls=o}};n.initClass();const s=((i=class extends r.Marker{static initClass(){this.prototype.default_view=n}}).__name__=e,i);return s.initClass(),s}o.Asterisk=w(\"Asterisk\",v,n.AsteriskGL),o.CircleCross=w(\"CircleCross\",f,n.CircleCrossGL),o.CircleDot=w(\"CircleDot\",T),o.CircleY=w(\"CircleY\",z),o.CircleX=w(\"CircleX\",C,n.CircleXGL),o.Cross=w(\"Cross\",k,n.CrossGL),o.Dash=w(\"Dash\",Y),o.Diamond=w(\"Diamond\",m,n.DiamondGL),o.DiamondCross=w(\"DiamondCross\",h,n.DiamondCrossGL),o.DiamondDot=w(\"DiamondDot\",q),o.Dot=w(\"Dot\",P),o.Hex=w(\"Hex\",D,n.HexGL),o.HexDot=w(\"HexDot\",g),o.InvertedTriangle=w(\"InvertedTriangle\",S,n.InvertedTriangleGL),o.Plus=w(\"Plus\",G),o.Square=w(\"Square\",L,n.SquareGL),o.SquareCross=w(\"SquareCross\",p,n.SquareCrossGL),o.SquareDot=w(\"SquareDot\",x),o.SquarePin=w(\"SquarePin\",M),o.SquareX=w(\"SquareX\",I,n.SquareXGL),o.Triangle=w(\"Triangle\",y,n.TriangleGL),o.TriangleDot=w(\"TriangleDot\",X),o.TrianglePin=w(\"TrianglePin\",H),o.X=w(\"X\",A,n.XGL),o.Y=w(\"Y\",b),o.marker_funcs={asterisk:v,circle:_,circle_cross:f,circle_dot:T,circle_y:z,circle_x:C,cross:k,diamond:m,diamond_dot:q,diamond_cross:h,dot:P,hex:D,hex_dot:g,inverted_triangle:S,plus:G,square:L,square_cross:p,square_dot:x,square_pin:M,square_x:I,triangle:y,triangle_dot:X,triangle_pin:H,dash:Y,x:A,y:b}},\n", + " function _(e,s,i){Object.defineProperty(i,\"__esModule\",{value:!0});const t=e(1),n=e(93),r=e(28),a=t.__importStar(e(101)),_=t.__importStar(e(18)),h=e(9),l=e(88);class c extends n.XYGlyphView{initialize(){super.initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;null!=e&&null!=this.glglyph_cls&&(this.glglyph=new this.glglyph_cls(e.gl,this))}_render(e,s,{sx:i,sy:t,_size:n,_angle:r}){for(const a of s){if(isNaN(i[a]+t[a]+n[a]+r[a]))continue;const s=n[a]/2;e.beginPath(),e.translate(i[a],t[a]),r[a]&&e.rotate(r[a]),this._render_one(e,a,s,this.visuals.line,this.visuals.fill),r[a]&&e.rotate(-r[a]),e.translate(-i[a],-t[a])}}_mask_data(){const e=this.renderer.plot_view.frame.bbox.h_range,s=e.start-this.max_size,i=e.end+this.max_size,[t,n]=this.renderer.xscale.r_invert(s,i),r=this.renderer.plot_view.frame.bbox.v_range,a=r.start-this.max_size,_=r.end+this.max_size,[h,l]=this.renderer.yscale.r_invert(a,_);return this.index.indices({x0:t,x1:n,y0:h,y1:l})}_hit_point(e){const{sx:s,sy:i}=e,t=s-this.max_size,n=s+this.max_size,[r,a]=this.renderer.xscale.r_invert(t,n),_=i-this.max_size,h=i+this.max_size,[c,o]=this.renderer.yscale.r_invert(_,h),x=this.index.indices({x0:r,x1:a,y0:c,y1:o}),d=[];for(const e of x){const t=this._size[e]/2;Math.abs(this.sx[e]-s)<=t&&Math.abs(this.sy[e]-i)<=t&&d.push(e)}return new l.Selection({indices:d})}_hit_span(e){const{sx:s,sy:i}=e,t=this.bounds(),n=this.max_size/2;let r,a,_,h;if(\"h\"==e.direction){_=t.y0,h=t.y1;const e=s-n,i=s+n;[r,a]=this.renderer.xscale.r_invert(e,i)}else{r=t.x0,a=t.x1;const e=i-n,s=i+n;[_,h]=this.renderer.yscale.r_invert(e,s)}const c=[...this.index.indices({x0:r,x1:a,y0:_,y1:h})];return new l.Selection({indices:c})}_hit_rect(e){const{sx0:s,sx1:i,sy0:t,sy1:n}=e,[r,a]=this.renderer.xscale.r_invert(s,i),[_,h]=this.renderer.yscale.r_invert(t,n),c=[...this.index.indices({x0:r,x1:a,y0:_,y1:h})];return new l.Selection({indices:c})}_hit_poly(e){const{sx:s,sy:i}=e,t=h.range(0,this.sx.length),n=[];for(let e=0,r=t.length;enew r.Range1d,y_range:()=>new r.Range1d})}initialize(){super.initialize(),this.use_map=!0,this.api_key||n.logger.error(\"api_key is required. See https://developers.google.com/maps/documentation/javascript/get-api-key for more information on how to obtain your own.\")}}i.GMapPlot=u,u.__name__=\"GMapPlot\",u.init_GMapPlot()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1),o=i.__importStar(e(28)),n=i.__importStar(e(18)),s=e(15),a=e(9),l=e(13),_=e(8),h=e(272),c=e(169),u=e(145),d=e(294),b=e(85),g=e(90),p=e(210),m=e(312);r.PlotView=m.PlotView;class f extends h.LayoutDOM{constructor(e){super(e)}static init_Plot(){this.prototype.default_view=m.PlotView,this.mixins([[\"outline_\",o.Line],[\"background_\",o.Fill],[\"border_\",o.Fill]]),this.define({toolbar:[n.Instance,()=>new d.Toolbar],toolbar_location:[n.Location,\"right\"],toolbar_sticky:[n.Boolean,!0],plot_width:[n.Number,600],plot_height:[n.Number,600],frame_width:[n.Number,null],frame_height:[n.Number,null],title:[n.Any,()=>new c.Title({text:\"\"})],title_location:[n.Location,\"above\"],above:[n.Array,[]],below:[n.Array,[]],left:[n.Array,[]],right:[n.Array,[]],center:[n.Array,[]],renderers:[n.Array,[]],x_range:[n.Instance,()=>new p.DataRange1d],extra_x_ranges:[n.Any,{}],y_range:[n.Instance,()=>new p.DataRange1d],extra_y_ranges:[n.Any,{}],x_scale:[n.Instance,()=>new u.LinearScale],y_scale:[n.Instance,()=>new u.LinearScale],lod_factor:[n.Number,10],lod_interval:[n.Number,300],lod_threshold:[n.Number,2e3],lod_timeout:[n.Number,500],hidpi:[n.Boolean,!0],output_backend:[n.OutputBackend,\"canvas\"],min_border:[n.Number,5],min_border_top:[n.Number,null],min_border_left:[n.Number,null],min_border_bottom:[n.Number,null],min_border_right:[n.Number,null],inner_width:[n.Number],inner_height:[n.Number],outer_width:[n.Number],outer_height:[n.Number],match_aspect:[n.Boolean,!1],aspect_scale:[n.Number,1],reset_policy:[n.ResetPolicy,\"standard\"]}),this.override({outline_line_color:\"#e5e5e5\",border_fill_color:\"#ffffff\",background_fill_color:\"#ffffff\"})}get width(){const e=this.properties.width.get_value();return null!=e?e:this.plot_width}set width(e){this.setv({width:e,plot_width:e})}get height(){const e=this.properties.height.get_value();return null!=e?e:this.plot_height}set height(e){this.setv({height:e,plot_height:e})}_doc_attached(){super._doc_attached(),this._push_changes([[this.properties.inner_height,null,this.inner_height],[this.properties.inner_width,null,this.inner_width]])}initialize(){super.initialize(),this.reset=new s.Signal0(this,\"reset\");for(const e of l.values(this.extra_x_ranges).concat(this.x_range)){let t=e.plots;_.isArray(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}for(const e of l.values(this.extra_y_ranges).concat(this.y_range)){let t=e.plots;_.isArray(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}}add_layout(e,t=\"center\"){const r=this.properties[t].get_value();this.setv({[t]:[...r,e]})}remove_layout(e){const t=t=>{a.remove_by(t,t=>t==e)};t(this.left),t(this.right),t(this.above),t(this.below),t(this.center)}add_renderers(...e){this.renderers=this.renderers.concat(e)}add_glyph(e,t=new b.ColumnDataSource,r={}){const i=Object.assign(Object.assign({},r),{data_source:t,glyph:e}),o=new g.GlyphRenderer(i);return this.add_renderers(o),o}add_tools(...e){this.toolbar.tools=this.toolbar.tools.concat(e)}get panels(){return[...this.side_panels,...this.center]}get side_panels(){const{above:e,below:t,left:r,right:i}=this;return a.concat([e,t,r,i])}}r.Plot=f,f.__name__=\"Plot\",f.init_Plot()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1).__importStar(t(18)),c=t(8),o=t(9),n=t(13),a=t(295),l=t(305),r=t=>{switch(t){case\"tap\":return\"active_tap\";case\"pan\":return\"active_drag\";case\"pinch\":case\"scroll\":return\"active_scroll\";case\"multi\":return\"active_multi\"}return null},_=t=>\"tap\"==t||\"pan\"==t;class h extends l.ToolbarBase{constructor(t){super(t)}static init_Toolbar(){this.prototype.default_view=l.ToolbarBaseView,this.define({active_drag:[s.Any,\"auto\"],active_inspect:[s.Any,\"auto\"],active_scroll:[s.Any,\"auto\"],active_tap:[s.Any,\"auto\"],active_multi:[s.Any,null]})}connect_signals(){super.connect_signals();const{tools:t,active_drag:e,active_inspect:i,active_scroll:s,active_tap:c,active_multi:o}=this.properties;this.on_change([t,e,i,s,c,o],()=>this._init_tools())}_init_tools(){if(super._init_tools(),\"auto\"==this.active_inspect);else if(this.active_inspect instanceof a.InspectTool){let t=!1;for(const e of this.inspectors)e!=this.active_inspect?e.active=!1:t=!0;t||(this.active_inspect=null)}else if(c.isArray(this.active_inspect)){const t=o.intersection(this.active_inspect,this.inspectors);t.length!=this.active_inspect.length&&(this.active_inspect=t);for(const t of this.inspectors)o.includes(this.active_inspect,t)||(t.active=!1)}else if(null==this.active_inspect)for(const t of this.inspectors)t.active=!1;const t=t=>{t.active?this._active_change(t):t.active=!0};for(const t of n.values(this.gestures)){t.tools=o.sort_by(t.tools,t=>t.default_order);for(const e of t.tools)this.connect(e.properties.active.change,()=>this._active_change(e))}for(const[e,i]of n.entries(this.gestures)){const s=r(e);if(s){const c=this[s];\"auto\"==c?0!=i.tools.length&&_(e)&&t(i.tools[0]):null!=c&&(o.includes(this.tools,c)?t(c):this[s]=null)}}}}i.Toolbar=h,h.__name__=\"Toolbar\",h.init_Toolbar()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const n=e(1),s=e(296),i=e(304),_=n.__importStar(e(18));class c extends s.ButtonToolView{}o.InspectToolView=c,c.__name__=\"InspectToolView\";class l extends s.ButtonTool{constructor(e){super(e),this.event_type=\"move\"}static init_InspectTool(){this.prototype.button_view=i.OnOffButtonView,this.define({toggleable:[_.Boolean,!0]}),this.override({active:!0})}}o.InspectTool=l,l.__name__=\"InspectTool\",l.init_InspectTool()},\n", + " function _(t,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const i=t(1),s=i.__importDefault(t(297)),n=t(78),l=t(298),r=t(72),a=i.__importStar(t(18)),u=t(29),_=t(8),h=t(9),c=t(299),m=i.__importDefault(t(300)),d=i.__importDefault(t(301)),p=i.__importDefault(t(284)),f=t(302);class g extends n.DOMView{initialize(){super.initialize();const t=this.model.menu;if(null!=t){const e=this.parent.model.toolbar_location,o=\"left\"==e||\"above\"==e,i=this.parent.model.horizontal?\"vertical\":\"horizontal\";this._menu=new f.ContextMenu(o?h.reversed(t):t,{orientation:i,prevent_hide:t=>t.target==this.el})}this._hammer=new s.default(this.el,{touchAction:\"auto\",inputClass:s.default.TouchMouseInput}),this.connect(this.model.change,()=>this.render()),this._hammer.on(\"tap\",t=>{var e;(null===(e=this._menu)||void 0===e?void 0:e.is_open)?this._menu.hide():t.target==this.el&&this._clicked()}),this._hammer.on(\"press\",()=>this._pressed())}remove(){var t;this._hammer.destroy(),null===(t=this._menu)||void 0===t||t.remove(),super.remove()}styles(){return[...super.styles(),m.default,d.default,p.default]}css_classes(){return super.css_classes().concat(c.bk_toolbar_button)}render(){r.empty(this.el);const t=this.model.computed_icon;_.isString(t)&&(u.startsWith(t,\"data:image\")?this.el.style.backgroundImage=\"url('\"+t+\"')\":this.el.classList.add(t)),this.el.title=this.model.tooltip,null!=this._menu&&this.root.el.appendChild(this._menu.el)}_pressed(){var t;const{left:e,top:o,right:i,bottom:s}=this.el.getBoundingClientRect(),n=(()=>{switch(this.parent.model.toolbar_location){case\"right\":return{right:e,top:o};case\"left\":return{left:i,top:o};case\"above\":return{left:e,top:s};case\"below\":return{left:e,bottom:o}}})();null===(t=this._menu)||void 0===t||t.toggle(n)}}o.ButtonToolButtonView=g,g.__name__=\"ButtonToolButtonView\";class v extends l.ToolView{}o.ButtonToolView=v,v.__name__=\"ButtonToolView\";class b extends l.Tool{constructor(t){super(t)}static init_ButtonTool(){this.internal({disabled:[a.Boolean,!1]})}get tooltip(){return this.tool_name}get computed_icon(){return this.icon}get menu(){return null}}o.ButtonTool=b,b.__name__=\"ButtonTool\",b.init_ButtonTool()},\n", + " function _(t,e,n){\n", + " /*! Hammer.JS - v2.0.7 - 2016-04-22\n", + " * http://hammerjs.github.io/\n", + " *\n", + " * Copyright (c) 2016 Jorik Tangelder;\n", + " * Licensed under the MIT license */\n", + " !function(t,n,i,r){\"use strict\";var s,o=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],a=n.createElement(\"div\"),h=Math.round,u=Math.abs,c=Date.now;function l(t,e,n){return setTimeout(y(t,n),e)}function p(t,e,n){return!!Array.isArray(t)&&(f(t,n[e],n),!0)}function f(t,e,n){var i;if(t)if(t.forEach)t.forEach(e,n);else if(void 0!==t.length)for(i=0;i\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",s=t.console&&(t.console.warn||t.console.log);return s&&s.call(t.console,r,i),e.apply(this,arguments)}}s=\"function\"!=typeof Object.assign?function(t){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),n=1;n-1}function S(t){return t.trim().split(/\\s+/g)}function b(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;in[e]})):i.sort()),i}function D(t,e){for(var n,i,r=e[0].toUpperCase()+e.slice(1),s=0;s1&&!n.firstMultiple?n.firstMultiple=W(e):1===r&&(n.firstMultiple=!1);var s=n.firstInput,o=n.firstMultiple,a=o?o.center:s.center,h=e.center=q(i);e.timeStamp=c(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=U(a,h),e.distance=L(a,h),function(t,e){var n=e.center,i=t.offsetDelta||{},r=t.prevDelta||{},s=t.prevInput||{};1!==e.eventType&&4!==s.eventType||(r=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},i=t.offsetDelta={x:n.x,y:n.y});e.deltaX=r.x+(n.x-i.x),e.deltaY=r.y+(n.y-i.y)}(n,e),e.offsetDirection=H(e.deltaX,e.deltaY);var l=k(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=l.x,e.overallVelocityY=l.y,e.overallVelocity=u(l.x)>u(l.y)?l.x:l.y,e.scale=o?(p=o.pointers,f=i,L(f[0],f[1],X)/L(p[0],p[1],X)):1,e.rotation=o?function(t,e){return U(e[1],e[0],X)+U(t[1],t[0],X)}(o.pointers,i):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,function(t,e){var n,i,r,s,o=t.lastInterval||e,a=e.timeStamp-o.timeStamp;if(8!=e.eventType&&(a>25||void 0===o.velocity)){var h=e.deltaX-o.deltaX,c=e.deltaY-o.deltaY,l=k(a,h,c);i=l.x,r=l.y,n=u(l.x)>u(l.y)?l.x:l.y,s=H(h,c),t.lastInterval=e}else n=o.velocity,i=o.velocityX,r=o.velocityY,s=o.direction;e.velocity=n,e.velocityX=i,e.velocityY=r,e.direction=s}(n,e);var p,f;var v=t.element;_(e.srcEvent.target,v)&&(v=e.srcEvent.target);e.target=v}(t,n),t.emit(\"hammer.input\",n),t.recognize(n),t.session.prevInput=n}function W(t){for(var e=[],n=0;n=u(e)?t<0?2:4:e<0?8:16}function L(t,e,n){n||(n=N);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return Math.sqrt(i*i+r*r)}function U(t,e,n){n||(n=N);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return 180*Math.atan2(r,i)/Math.PI}Y.prototype={handler:function(){},init:function(){this.evEl&&I(this.element,this.evEl,this.domHandler),this.evTarget&&I(this.target,this.evTarget,this.domHandler),this.evWin&&I(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&A(this.element,this.evEl,this.domHandler),this.evTarget&&A(this.target,this.evTarget,this.domHandler),this.evWin&&A(O(this.element),this.evWin,this.domHandler)}};var V={mousedown:1,mousemove:2,mouseup:4};function j(){this.evEl=\"mousedown\",this.evWin=\"mousemove mouseup\",this.pressed=!1,Y.apply(this,arguments)}g(j,Y,{handler:function(t){var e=V[t.type];1&e&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=4),this.pressed&&(4&e&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\"mouse\",srcEvent:t}))}});var G={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},Z={2:\"touch\",3:\"pen\",4:\"mouse\",5:\"kinect\"},B=\"pointerdown\",$=\"pointermove pointerup pointercancel\";function J(){this.evEl=B,this.evWin=$,Y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}t.MSPointerEvent&&!t.PointerEvent&&(B=\"MSPointerDown\",$=\"MSPointerMove MSPointerUp MSPointerCancel\"),g(J,Y,{handler:function(t){var e=this.store,n=!1,i=t.type.toLowerCase().replace(\"ms\",\"\"),r=G[i],s=Z[t.pointerType]||t.pointerType,o=\"touch\"==s,a=b(e,t.pointerId,\"pointerId\");1&r&&(0===t.button||o)?a<0&&(e.push(t),a=e.length-1):12&r&&(n=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),n&&e.splice(a,1))}});var K={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function Q(){this.evTarget=\"touchstart\",this.evWin=\"touchstart touchmove touchend touchcancel\",this.started=!1,Y.apply(this,arguments)}function tt(t,e){var n=x(t.touches),i=x(t.changedTouches);return 12&e&&(n=P(n.concat(i),\"identifier\",!0)),[n,i]}g(Q,Y,{handler:function(t){var e=K[t.type];if(1===e&&(this.started=!0),this.started){var n=tt.call(this,t,e);12&e&&n[0].length-n[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:\"touch\",srcEvent:t})}}});var et={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function nt(){this.evTarget=\"touchstart touchmove touchend touchcancel\",this.targetIds={},Y.apply(this,arguments)}function it(t,e){var n=x(t.touches),i=this.targetIds;if(3&e&&1===n.length)return i[n[0].identifier]=!0,[n,n];var r,s,o=x(t.changedTouches),a=[],h=this.target;if(s=n.filter((function(t){return _(t.target,h)})),1===e)for(r=0;r-1&&i.splice(t,1)}),2500)}}function at(t){for(var e=t.srcEvent.clientX,n=t.srcEvent.clientY,i=0;i-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,n=this.state;function i(n){e.manager.emit(n,t)}n<8&&i(e.options.event+ft(n)),i(e.options.event),t.additionalEvent&&i(t.additionalEvent),n>=8&&i(e.options.event+ft(n))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;te.threshold&&r&e.direction},attrTest:function(t){return mt.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=vt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),g(yt,mt,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[\"none\"]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),g(Tt,pt,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[\"auto\"]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distancee.time;if(this._input=t,!i||!n||12&t.eventType&&!r)this.reset();else if(1&t.eventType)this.reset(),this._timer=l((function(){this.state=8,this.tryEmit()}),e.time,this);else if(4&t.eventType)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&4&t.eventType?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=c(),this.manager.emit(this.options.event,this._input)))}}),g(Et,mt,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[\"none\"]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),g(It,mt,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:30,pointers:1},getTouchAction:function(){return gt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,n=this.options.direction;return 30&n?e=t.overallVelocity:6&n?e=t.overallVelocityX:24&n&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&u(e)>this.options.velocity&&4&t.eventType},emit:function(t){var e=vt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),g(At,pt,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[\"manipulation\"]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance{this.model.active?this.activate():this.deactivate()})}activate(){}deactivate(){}}i.ToolView=r,r.__name__=\"ToolView\";class _ extends a.Model{constructor(t){super(t)}static init_Tool(){this.prototype._known_aliases=new Map,this.internal({active:[n.Boolean,!1]})}get synthetic_renderers(){return[]}_get_dim_tooltip(t,e){switch(e){case\"width\":return t+\" (x-axis)\";case\"height\":return t+\" (y-axis)\";case\"both\":return t}}_get_dim_limits([t,e],[i,n],o,a){const r=o.bbox.h_range;let _;\"width\"==a||\"both\"==a?(_=[s.min([t,i]),s.max([t,i])],_=[s.max([_[0],r.start]),s.min([_[1],r.end])]):_=[r.start,r.end];const l=o.bbox.v_range;let c;return\"height\"==a||\"both\"==a?(c=[s.min([e,n]),s.max([e,n])],c=[s.max([c[0],l.start]),s.min([c[1],l.end])]):c=[l.start,l.end],[_,c]}static register_alias(t,e){this.prototype._known_aliases.set(t,e)}static from_string(t){const e=this.prototype._known_aliases.get(t);if(null!=e)return e();{const e=[...this.prototype._known_aliases.keys()];throw new Error(`unexpected tool name '${t}', possible tools are ${e.join(\", \")}`)}}}i.Tool=_,_.__name__=\"Tool\",_.init_Tool()},\n", + " function _(o,b,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.bk_toolbar=\"bk-toolbar\",t.bk_toolbar_hidden=\"bk-toolbar-hidden\",t.bk_toolbar_button=\"bk-toolbar-button\",t.bk_button_bar=\"bk-button-bar\",t.bk_toolbar_button_custom_action=\"bk-toolbar-button-custom-action\"},\n", + " function _(o,b,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root .bk-toolbar-hidden {\\n visibility: hidden;\\n opacity: 0;\\n transition: visibility 0.3s linear, opacity 0.3s linear;\\n}\\n.bk-root .bk-toolbar,\\n.bk-root .bk-button-bar {\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n}\\n.bk-root .bk-toolbar .bk-logo {\\n flex-shrink: 0;\\n -webkit-flex-shrink: 0;\\n}\\n.bk-root .bk-toolbar.bk-above,\\n.bk-root .bk-toolbar.bk-below {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n justify-content: flex-end;\\n -webkit-justify-content: flex-end;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-button-bar,\\n.bk-root .bk-toolbar.bk-below .bk-button-bar {\\n display: flex;\\n display: -webkit-flex;\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-logo,\\n.bk-root .bk-toolbar.bk-below .bk-logo {\\n order: 1;\\n -webkit-order: 1;\\n margin-left: 5px;\\n margin-right: 0px;\\n}\\n.bk-root .bk-toolbar.bk-left,\\n.bk-root .bk-toolbar.bk-right {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n justify-content: flex-start;\\n -webkit-justify-content: flex-start;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-button-bar,\\n.bk-root .bk-toolbar.bk-right .bk-button-bar {\\n display: flex;\\n display: -webkit-flex;\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-logo,\\n.bk-root .bk-toolbar.bk-right .bk-logo {\\n order: 0;\\n -webkit-order: 0;\\n margin-bottom: 5px;\\n margin-top: 0px;\\n}\\n.bk-root .bk-toolbar-button {\\n width: 30px;\\n height: 30px;\\n cursor: pointer;\\n background-size: 60% 60%;\\n background-origin: border-box;\\n background-color: transparent;\\n background-repeat: no-repeat;\\n background-position: center center;\\n}\\n.bk-root .bk-toolbar-button:hover {\\n background-color: rgba(192, 192, 192, 0.15);\\n}\\n.bk-root .bk-toolbar-button:focus {\\n outline: none;\\n}\\n.bk-root .bk-toolbar-button::-moz-focus-inner {\\n border: 0;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-toolbar-button {\\n border-bottom: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-toolbar-button.bk-active {\\n border-bottom-color: #26aae1;\\n}\\n.bk-root .bk-toolbar.bk-below .bk-toolbar-button {\\n border-top: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-below .bk-toolbar-button.bk-active {\\n border-top-color: #26aae1;\\n}\\n.bk-root .bk-toolbar.bk-right .bk-toolbar-button {\\n border-left: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-right .bk-toolbar-button.bk-active {\\n border-left-color: #26aae1;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-toolbar-button {\\n border-right: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-toolbar-button.bk-active {\\n border-right-color: #26aae1;\\n}\\n.bk-root .bk-button-bar + .bk-button-bar:before {\\n content: \" \";\\n display: inline-block;\\n background-color: lightgray;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-button-bar + .bk-button-bar:before,\\n.bk-root .bk-toolbar.bk-below .bk-button-bar + .bk-button-bar:before {\\n height: 10px;\\n width: 1px;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-button-bar + .bk-button-bar:before,\\n.bk-root .bk-toolbar.bk-right .bk-button-bar + .bk-button-bar:before {\\n height: 1px;\\n width: 10px;\\n}\\n'},\n", + " function _(A,g,C){Object.defineProperty(C,\"__esModule\",{value:!0});C.default='\\n.bk-root .bk-tool-icon-copy-to-clipboard {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUSDBoBvcHQeQAAAG9JREFUWMNjXLhsJcNAAiaGAQYwB/xHwh/Q+ITEkfHQCwEWND4jmeb8H/JpgBwfI6cNBhLSEkqaGXRpgFRAcZoZsmlg1AGjDhh1wKgDRh0w6gCaVcf/R2wIkNqw+D9s0wADvUNiyIYA47BJAwPuAAAj/Cjd0TCN6wAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-replace-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxokK3gniQAAAHpJREFUWMNjXLhsJcNAAiaGAQajDhhwB7DgEP+PxmeksvjgDwFcLmYkUh2hkBj8IcBIZXsYh1w2/I8v3sgAOM0bLYhGc8GgrwuICgldfQO88pcvXvg/aOuCUQeM5oLRuoCFCJcTbOMh5XOiW0JDNhdQS3y0IBp1ABwAAF8KGrhC1Eg6AAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-append-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxkZWD04WwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAoUlEQVRYw+1WQQ6AIAwrhO8Y/bIXEz9jIMSDr8ETCUEPQzA4pMeFLKNbu4l5WR0CDOMEALBGIzMuQIBEZQjPgP9JLjwTfBjY9sO9lZsFA9IafZng3BlIyVefgd8XQFZBAWe8jfNxwsDhir6rzoCiPiy1K+J8/FRQemv2XfAdFcQ9znU4Viqg9ta1qYJ+D1BnAIBrkgGVOrXNqUA9rbyZm/AEzFh4jEeY/soAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-intersect-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxkrkOpp2wAAAPhJREFUWMPtV1EKwjAMTUavI3oawR/vtn5srJdREfzwMvHHQlcT2mpdMzFfWxiP5r2+JMN+mAiCOB72CABgR1cln4oOGocJnuMTSxWk8jMm7OggYkYXA9gPE3uyd8NXHONJ+eYMdE/NqCJmEZ5ZqlJJ4sUksKN7cYSaPoCZFWR1QI+Xm1fBACU63Cw22x0AAJxudwrffVwvZ+JmQdAHZkw0d4EpAMCw8k87pMdbnwtizQumJYv3nwV6XOA1qbUT/oQLUJgFRbsiNwFVucBIlyR3p0tdMp+XmFjfLKi1LatyAXtCRjPWBdL3Ke3VuACJKFfDr/xFN2fgAR/Go0qaLlmEAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-subtract-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxgsF5XNOQAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABFUlEQVRYw9VWUQqDMAxNpWfxQxD1MoP97G7zQ5mH2RTZYLtM9lWoMbXtxLXNX4OG9r28l4hrd0PQoqxqAACYpxH25C/nkwCHyCBwSPoS09k1T5Fo+4EiExcC4v584xGFmyIXHBLRISAVZyZufUPVa4rcrwmPDgr93ylo+2GliLRUYHK6th/o/6r7nfLpqaCsagEA8Hh9FmcNKeRmgeYDC+SCq0B6FFi8/BcV6BdR9cL3gCv3ijPKOacsn3rBEcjmaVxpfGcg4wHxzgJJnc6241Hn23DERFRAu1bNcWa3Q0uXi62XR6sCaWoSejbtdLYmU3kTEunNgj0bUbQqYG/IcMaqwPS9jftoVCAQ0ZVDJwf0zQdH4AsyW6fpQu4YegAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-clear-selection {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUGEhcuan3d3wAAAoRJREFUWMPtlzFP3EAQhd+b3TNSzg0N5TWXLkJQUUaKhIQ4fgP/g5ArrriE/I3opEgRrZtIVJR0FJQ010SioUmEZHtnUpwN9gWHGA5BJCy58MraffvmfZ41v3z9hqe8BE98vQh4cgG+Ydzmnrng8efvQJNi/uN7dznx/B3ggtfhf4ehNdUttRzBDIm/2VTiiWCG1HK0nc+3UWtq8BQIiEEakEQOADBIA4QCQmBqoHBhFNR27ikQSmGdYCdTqCpEHMDZmEKRWUBEv1gBDg5SzRJnpopILWICgWuRYflLamuzxB2BmtYqSRIka5VWU8QduXO+1hRc5YZu5GAwmP2ZJzND0IBu5HCV2+NQcAhAVRsnC2IbPzPdSjzd6to6VtfWkXi6YLaVWr7xoAwkfpb8MnC3SH7rKSMBe4M0jA/OTicFIbtCGRIyNbURhcf3ErCd6YwA1m0HgAxhw1NGQnlXBHG4kylVlSJuH0RfIP2CkL2I/qS1gIAAQiBl1QwFggIHtyxgrxK5PgyfC0JWKoT0HLh8LwoietB4TYKaIl7yeNURxB05UtMxDOcVQlZIrlRKdK6m47gjR/fuBRQihyLArtNeJD50Izcx2Eczu7iFkIug4VM3cpOr3MKDekFED0fWUHv9Zq0kpLnridjhY3XDg7NTN0jDrhO3X7O9Wg7wwyANu4mnayNg3gmbu0tCNoUyBNGv2l4rB9EXynA7082FOxAQLhU6rQVO9T2AvWowFToNCJcPORGxIRcnpjZSKATSU9NxvOQnAPArDSaQoUKnNI4iufkGtD4P3EHIcWZhz4HLceSOyrR3Izf5memPAL2cX3yhAkonysZVaWLBkd9dw1Ivv2a/AYPkK+ty1U1DAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-box-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg0kduFrowAAAIdJREFUWMPtVtEKwCAI9KL//4e9DPZ3+wP3KgOjNZouFYI4C8q7s7DtB1lGIeMoRMRinCLXg/ML3EcFqpjjloOyZxRntxpwQ8HsgHYARKFAtSFrCg3TCdMFCE1BuuALEXJLjC4qENsFVXCESZw38/kWLOkC/K4PcOc/Hj03WkoDT3EaWW9egQul6CUbq90JTwAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-box-zoom {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg82t254aQAAAkBJREFUWMPN11+E1FEUB/DPTFn2qaeIpcSwr5NlUyJiKWVXWUqvlUh/iE3RY9mUekkPPURtLKNRrFJEeuphGfUUaVliiX1aVjGs6aG7+XX9ZnZ+d2fTl2vmnHvPPfeee/79Sk+may2/UQq/q7Qu+bAJoxjHIKqB/wlfUMcMVqI9bLZ+DGIKwzlzQ2GcxCx2xwvKOUKlaHTiX8bHNspjDONHkOmJBW5jIof/FvPh/06MZOb6cRc7cGn1AKUE5cdzlM/gAr5F/O24H3xkFRfxAbVygvK+cIsspjGWo1zgjeFpxL+BvnLw7laBA4xjIFJwrgu52DoVjKdY4HBEX8dSF3JLYe1fe6UcYCii3xWQjdfuSTnAtoheKCC7GNED5Zx4L4qt61jbTLHA94geKSC7P7ZeShQ0Inoi1IJuEOeORooFXkV0FZNdZs5qvFfKAeqYy7nZ6yg//HG0MBfffh71lFrQDCW2EvEP4mt4okZUDftz9rmGZkotmMxJRtlisy+MTniAWrty3AlXw0hFM2TD89l+oNsoOJXjbIs4EpqNtTCLXbiZ0g+M4mFObj8U3vsNjoZCVcmk60ZwthpepLZkB/AsivWfOJZxtpUQHfWib7KWDwzjeegBZJSdKFiE2qJTFFTwElsi/unQ/awXrU4WGMD7nOJxBY/1EO2iYConq93CHT1GOwucjdqnRyFz+VcHmMNefMY9nNkA3SWUOoXhQviSWQ4huLIRFlirFixnQq/XaKXUgg2xQNGv4V7x/RcW+AXPB3h7H1PaiQAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-zoom-in {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsUBmL8iQAAA2JJREFUWMO9l12IlFUYx3//MzPrLpSjkm5oN4FFIWVEl66IQlFYwtLOzozsjHdGRSCRF0sfBEXRVV0FQuQiLm5CZNBFgRRaRLVFhbJ2EdiN5gbK7toObTPn6eYdPTvNzPvOBz5Xh/ec5/n/n89zXtEHmZqeSXSuXBz/3zfdKvBWJHQrwZuRcP0El+QkbQXeBX6WZEgm6TtJk5lM5o4Lc+cV6qpf4Ga20Tm338zeATItVK9Ker6yvPzp4NDQ3+XieGsCU9MzTYumGbhz7m4ze9/MHgvBgItACrgfGAj2jgAvAYs3wlEujjc13kii8YyZrXXOfWhmo9GnFUlvOOemarVapVqtkslksmb2KjARqL62ecuWN9NxbRInzrldAXhV0uFSIfdew7G/gNLU9MwS8CwSmE3Oz88fcXG5blfpqVRq0Ix8VIAAX0XgrVL7HDCHGcCaWrV60LUBN8Dae58aQIxEqcA592I9M610JL0cpG/U9TIHJNKY3RV5z0R+7Nd4HZ0P1g/2RMBuegLAsRMnb4vT8d5vqKfMzOgtAlADrkmqGywmiMBTwfr3dC9j1Xv/r6Tvg/5/5ejxE6cO7M9faVbQZrYNOFSPmqQvVo9FKexvi5uWX58943aM7DwAfBDY+FbSCxP5sdkGx55GeguzrUEXPaSo2pFkAbiSZQCAzZJOmdkjwd6SpB/M7KykQTPbA2wDhoIzRzcNDx9MJwGNIXdJ0mEzmwbujL7dbma7gd03A7lKfnTOvf74nl0r6bonTUbujRSUCrm2d4L3/kvn3JPe+8+BDW2i9o+kT7z3kxP5sYsA6W47oE64TsR7P9tQL4vA2mh9WdIscKxUyJ0M7aR7acOGzikD65EQLEjaa2ZXzMwDFeB6qZBbbLTRE4EGeSaozNOZgYFf8qP7lmIvs354n0qlHpB0T7B9Ogl4IgJJrmjv/SiQjbrkD+BMUkfSbYATPdckrTOzkciWAXOlQu5cYgLdPEIapud9wMOR9zVJH3ViKx333mtHMJvNuoWFhZ3A+ojMcja77njXBEKwJJfTcqUyCIQ34Mf7nnh0paMnXacFuGoC1mr3AtuDfLzd8Zuyl+rfuGn4HLAD+Az4qZQf+61TAj0Noj8vX6oC35SL43u7teG6rf5+iXppwW7/JUL5D03qaFRvvUe+AAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-zoom-out {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsHgty9VwAAA0FJREFUWMO9l09oXFUUxn/fmXlpItppi22k7UJBRSlVkCytSAuKUloIdjKT0El3FXVXdVFKRVAQV7qQohsNwdA0UFvBhYtqUVyIVlRaogtFQVq7qSTVjA3z3nHzBq/jvPmTN/Ss7rv3nvN99/y794kByMzcfE/7picn/jenmwWeRUI3E7wdCRskuCSTdDfwBvCtJEdySV9KOhpF0e0/LF5SqKtBgbv7ZjObcvfXgShD9Zqk5+orKx8Oj4z8NT05kU1gZm6+bdK0Azezu9z9hLs/HoIBvwAF4H5gKFh7B3gBWFY3460kWve4+3oze9fdx9OpVUmvmNlMHMf1RqNBFEUldz8OHAxUX9q6bduryut+Sfvc/Wz62ZD0fK1afjND9y3gGSRwv1GMojstTxUUCoVhdyopEYDzKXjWwZ4FFnEHWBc3Goet00m7lZlZYQixKw0FZnakGZksHUnHgvCN5/KARBH37enpOVg58H13HV0Kxg/kIuD/ngSA2ZMLt3bTSZJkUzNk7k4+D0AM/CGpaXCyBw/sC8Y/qZd2GpZiuL9YLN4Sx/HpoP5/c/exQ1OVq+1yyt13SLoArEsJnMjlgfOffvK3u58Kprab2QezJxfG2iTzUzI70wRPG9jbmpmb95SNB9mpzp7/j2yVdNbdx4K565K+cvfPJQ27+x5gBzAS7Hlvy+jo4WIvoC3kWpcvS3rR3eeAO9K529x9N7C7zX6AC2b28hN7Hl1Vt44niVq13LUjmtlYkiQfA5s6eO+GpDNJkhw9NFX5ueNt2ARodyF1IHIN2JiOl4H16fiKpK+B2Vq1vBAqFAf4IJkGNiIhWJK0192vunsC1IE/a9XycquNXARa5OnApeeioaHvKuP7r3dTGsiLqFAo7JR0T7B8rhfwXARa2us4UEqr5Ffgs151i/08oTNKdIO770ptObBYq5Yv5ibQq/sl3Qc8lJ4+lnSqH1vFfp9koZRKJVtaWnqkWXqSVkqlDe+vmUDWpZMlK/X6MBDegKf3P/nYaj8ErN9fqZBYEsf3Ag8G8Xit33BaniTcvGX0IvAw8BHwTa1y4Md+CeRqRL9fudwAvpienNi7Vhu21uwflOT+L+i1X2TJP57iUvUFtHWsAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-help {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABltpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMzIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDNDIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMTIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDMjIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6U2VxLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNjoxMToyOCAxMToxMTo4MjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjY8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cphjt2AAAAT7SURBVFgJxRdbaFxFdGb2bhui227BWrsVKYgf2kJUbP9EUPuzEB803WTXJjH61Q/7Ya1+CMYKEVTsh4J/EpvY7BoabUiNiA8s1p+4KIhpoUUEselHqyS76TbZ3HuP58ydc3d2u4+IkQxczpz3mZkzZ86VYpXjvenpjZsLhUcliE4AuUuASAgptmt1EFdwPiclzIIUUwubNn17OJlcXo1p2UpodHRiux9xB1Eug1+slbzhFxGOKc851tu7/0oznYYBDA8Pt0U2tL8KQryIq2tvZqQhD0QJHRz3yqWhgYGBpXpydQMwqz6NCnurleCSADkJEfgKfOePqL80R/wV1ZaQyr1LenKfkPCkEPKeaj0xg7vxVL3duCmA0Vyuw/fl52hgBxsBED+h4Cv9z3R/zbRm8MTJTx7HQN7GQB6w5C4L4SX7M5lfLBpurjXMyvNIShiyi0l1pL8n9b7EDGPR8fHxzSsQ6XDB3618/xqo6Pk25V5MpVJllgHM1BO58RdQ612kOYZ+GXdij70TYQB05mpj+1kU5G2fB+l3PZtOf8NGx6ambnMXb3yAxg8wjSEG6OKKR9oicBQD+ZvpH2Wzj0lQpxCPG9qMv1x6hHNCsSAlHM7ZOa682vlI9tRDbvHGbD3nZAPpDoD/3JIrLpAs26UFkC3EMUA99hpfGtEBfJjNJnS2Gwnadnvl+Xw+iuc3DAJuNyIaSCHpilVldyDjjUxj3WDZIAhxhHHyRcdNuA7AAfUaXzVKODpzFiZ4/uLvh5G+m2no+C/pyIf7MqlEJB7bpqR6nXkEUfbeawuLaZsW2ISfNQ2vtaktQlGFQyIVGT0o2+2EC4iQNGwjBIN9qdQ5Qg4mk4X4rW3vCClLtowE2FOFUxKDfNmiZci3ovKKRFPh4FK9q4Zbdr+lKKJiA13TcHR2dmLBgdmQ0GAS2MZaEowY+XbAk09IvgtYZGp16SyvFhaHcIUh645t8T9DBCcnz5zZ4hZLu3DzK2QlL1QQa0Y+pHiJKPSuOGj3PmZTheM5w2TwqBxnvBZOTk7G5gvXJ5Aelms8wnJURL+olSWcfEhf6gDoUXPMq6ZlqbzWU2pE+3hi4s6F68tfIj9cBMlikr7Z0/P0b/X0yIcUXsDCF1WhtL4OROHaXk+xlkbV0Cu732Nmhc4peaWSg73pA8dq5RkvO37ldUTfXCKZv2q45MkhvG87WQEzpCCUSvV1d9GONBy3lMvgKSwrZig8gjAietWY0QriylO2jIo4yVbOSb7KB/qmI9BPKjHpSSXYauRyn92Nq9/Kcrj13x3s3v8D481glQ/0raiNYgX9njPSBOImbrHZePl+tfFmc9sH+Xaoh8NjOKSVdDMhjjYzQLy+dFceH5+IJQf9VYXX4tROg4ZFU8m31M3mfPEqUoJqCGJfvWpo2xnNfdrhC28n06SCeSzNZxlvBINGRXCtKS7EY1uV6V7HWAm38y1cXaXsMcOCvr9ySPj+af7A1U2HJXHzVNvUXVLIGyPf+jV0pf8GHoN+TLAyPkidTCi2RpPApmnR0Bd1zGRaB/B8Oj2HSw7LLbVR1MmskW8RdEWVXSJf3JbpAMgRtc4IZoxTh9qotQjCasm46M0YX9pV1VmbpvRH5OwwgdRtSg2vKaAz/1dNKVtb17Y8DCL4HVufHxMOYl1/zTgIgiYvBnFKfaNp3YjTdPz3n9Na8//X7/k/O1tdwopcZlcAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-hover {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4oVHp0SwAAAQJJREFUWMPtlsENgzAMRb8RQ5VJItFDOgaZAMaAA0iZpN3KPZSoEEHSQBCViI/G8pfNt/KAFFcPshPdoAGgZkYVVYjQAFCyFLN8tlAbXRwAxp61nc9XCkGERpZCxRDvBl0zoxp7K98GAACxxH29srNNmPsK2l7zHoHHXZDr+/9vwDfB3kgeSB5IHkgeOH0DmesJjSXi6pUvkYt5u9teVy6aWREDM0D0BRvmGRV5N6DsQkMzI64FidtI5t3AOKWaFhuioY8dlYf9TO1PREUh/9HVeAqzIThHgWZ6MuNmC1jiL1mK4pAzlKUojEmNsxcmL0J60tazWjLZFpClPbd9BMJfL95145YajN5RHQAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-crosshair {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADEUlEQVRYR81XXVIaQRCeHqug8CXmBNETaE4gniDwIgpVspxAbxC9ATkBkCpQ8gKeQDiB5AQxNyAvUlrldr7eHxyGXZi1rMJ5opbp7m++7un+htSGF204vsoMoNXrlzSpfWa1oxQfhAegCZGaEtPorHo8znIoJwCt6+td8uk7ApUQCIHTF4BNAWzImq8ap6cP68CsBdDp9i9ZqXM7ML79g/EnCWD+jgMKENKqWT+tXK0CkQqgNRjs0OxpQIqKhoMxaG6/6JeRnK7T6yO2UvVqhYSlLX+ryORfgKn9ORDFIy7ky41yGcwsr0QAQfDH5zucOswx819fs4egI9OFCcD8DjBF7VNbEX0JzdWEt3NHSSASAcCxBDqMgt/623kvyTgNgNjJIfTjk4D4FqaJR1715MjmYAmA5Bx3AwUXQL+t105KaTlcBSC26XRvhjEIoLiq1yqXpr8FAGG16/ug4IT27fxBWu7EiQuAiImJpEMKE6nYM30uAIDDttSUOPfJP7JzbjPhAiBIh9QE67vIvoOi9WJfCwDavf40ulpjbCqmUf+W753ezURuh7Dg1SqflwAEHU6pgfyBq9Y4qx0LG++2fnZ/eUzcstmdM2AWH+jfc+liWdBJfSENf8Lifi3GVwC9mybOfi5dzatWVrbbLIHNva8p5h/16gkaFiLGGxbufkoE6XguwePiXLF3XmMfCUCUAqtKXU7sumd1CowOuJEi3Pg1FBpjitIGhyvVSfvmjci6ZR+rFQfDiPVE2jFYeICQ+PoewwjC5h7CZld6DBdyu6nDSKgzOyIMhmhK5TTqXYbRorZYM46TmpKAAOrGWwSJJekSB1yqJNOzp1Gs7YJ0EDeySDIMtJbQHh6Kf/uFfNFZkolJICRmz0P8DKWZuIG2g1hpok+Mk0Qphs0h9lzMtWRoNvYLuVImUWrmPJDlBKeRBDfATGOpHkhw670QSHWGLLckmF1PTsMlYqMJpyUbiO0weiMMceqLVTcotnMCYAYJJbcuQrVgZFP0NOOJYpr62pf3AmrHfWUG4O7abefGAfwH7EXSMJafOlYAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-lasso-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgwlGP1qdAAABMBJREFUWMO9V1uIVVUY/r61z57ZMx4DnbzgkbQXL5iCJphlWdpIGY4jpFBkEiU9ZNaDRRcITcIwMwgxoQtU2IMXdAZfMjFvpERXYiSbysyBEXFmyuHMnLP32uvrwT2xnY5nxvHQ93Jg7fWv71/r//7L4a59TRgqJk+Z6v3a+sv0OI5nk5wu6VaSVZImAThHsgjgrKTvM5nMUWvtmf5n8HodCIKgOgzDhc65pSTrJQWDsSNpJX1ljHnDOfdT37oZLLHv+8OMMasKhcIJ59xHAJYMlhwAJGUAzJfUTHLFuFzOG5QDU6dNMyQfs9Yedc5tBpAD4IYYNQGoBrDtQnt7/b0LFrJsCHzfn2itfQfAnZLiazytA3AaQAuAiwDaEgeNpGkkswAWSBqRONB38b88z5uTKePt6iiKXkk8jq+iJC5LOmiMaTLGHLPWhmWeHr7vV0dRtATAapAzIVmSo51zyzIlbm2stesFPA6pKk0r6Ryg93y/ek8YFvPOOTg3cDSiKCoC2OP7/rEoirYm4rUkF12lAWNM1lr7lqQn0+QA8gI2jBg5cj6Aj8OwmB+KAKIoukhyp6SRJAUgl0ndPLDWPi9pJQCbuviXvu+/GIZhW1dnJ24UJFuTjCCA2ADA8sYGWmsXS3qmL94kDYAtkh4Nw7ANlQJ5U6INT1KrAYC9zQdykl7nFSj5fXp5Y8NWVBhy7mUAjqShMYdMXV2dJ2klyRwAJ8lIeuGWCRMP7N7frEqSG2OmAFhKshNAp5wrmO7u7jEAngPQm1S2z2pqapr+OPt7XEly0oxwzq2RdFmSD2AMgKKJouhhAL4kA+Cs53l7e3t7uytJHgRBreTWkXwkKVJnJD0B4GAGwIJE9R6AFufc6UqSZ7PZbD6ff5dkA4CQZEHSqwAOISmXtwGIE+F1SeqqIP8d+Xz+C0mLJYWSAODteXffczjdDQNJ0BWMCoLg5gqIbRTJNwHsljQhUb0luWPM2LE7Thw/9m/5NCT/TByxAOYWi8X6/gdWV1dnfN8fNRBxJpMZTXKdc+6IpFVJWAEgkvSJpA0X2tvtVTaSjgOYBCAEEADYSHK87/sfhmEYA9gShuEDkgzJHyWtB/B1irQ2juP7ADxkrX0wOUOpzmdpzEY590HJ7Ni1r2kSyZOSiv2+hSRjSTXp/QAukzySNJOJkmalyNIl10hqMcasdc61XDNcQRD8BnITgNp+36r6kfcNFMMlLQGwTNLMEuQGQBfJl2bdPru+HDkAZAqFQux53jZHEsC6aw0eg2gylNRBcqcx5v04ji999+03AwsWAOI4Lsy9a94WkisAnE5a5WCJYwCfA1g7LJudI2lTHMeXBm1faiQzxkyRtF3S5CTupeAB+KG2tnZFT0/P30NO2VKLzrmfAbwGMipjG5Oc0dPTc0Md05SZ5U4Q2FxChErtEYD7jTGNQ3UgM8Asv90Yc9I5LSKRlXSI5CxJa0jWSALJjKRnAewfkniT+vwf7N7fXHK9rq7O7+jo+BTA/NRrdBpjnnLOnUrvXd7YMPQXSBunneno6IhIHgYwW1JtkgmBpBkATlVMAwOk3nFJ+VSoqgCMr6gIy2FcLtdKspAedyQN/98caDt/3kpyabUmf8WvG/8A1vODTBVE/0MAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-pan {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4lKssI9gAAAOtJREFUWMPVll0KwyAMgNPgoc0JzDX2Mtgp3csKErSamGabIEUo/T6bHz0ezxdsjPJ5kvUDaROem7VJAp3gufkbtwtI+JYEOsHNEugIN0mgM1wtsVoF1MnyKtZHZBW4DVxoMh6jaAW0MTfnBAbALyUwCD6UwEB4VyJN4FXx4aqUAACgFLjzrsRP9AECAP4Cm88QtJeJrGivdeNdPpko+j1H7XzUB+6WYHmo4eDk4wj41XFMEfBZGXpK0F/eB+QhVcXslVo7i6eANjF5NYSojCN7wi05MJNgbfKiMaPZA75TBVKCrWWbnGrb3DPePZ9Bcbe/QecAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-xpan {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4X4hxZdgAAAMpJREFUWMPtlsEKwjAMhr/pwOOedINJe/PobWXCfAIvgo/nA4heOiilZQqN2yE5lpD/I38SWt3uD9aMHSuHAiiAAmwaYCqoM/0KMABtQYDW11wEaHyiEei28bWb8LGOkk5C4iEEgE11YBQWDyHGuAMD0CeS30IQPfACbC3o+Vd2bOIOWMCtoO1mC+ap3CfmoCokFs/SZd6E0ILjnzrhvFbyEJ2FIZzXyB6iZ3AkjITn8WOdSbbAoaD4NSW+tIZdQYBOPyQKoAAKkIsPv0se4A/1UC0AAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-ypan {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4anK0lywAAAMVJREFUWMPtlzEKwzAMRX/S7rlpIMXeOnaLaME36FLo8XqCdNFghGljyc4kgQi2Q/SUj0F/eL7eMMTKz6j9wNlYPGRrFcSoLH4XxQPvdQeYuPOlcLbw2dRTgqvoXEaolWM0aP4LYm0NkHYWzyFSSwlmzjw2sR6OvAXNwgEcwAEcwAEcwAEcoGYk20SiMCHlmVoCzACoojEqjHBmCeJOCOo1lgPA7Q8E8TvdjMmHuzsV3NFD4w+1t+Ai/gTx3qHuOFqdMQB8ASMwJX0IEHOeAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-range {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABCJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4zMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxkYzpzdWJqZWN0PgogICAgICAgICAgICA8cmRmOkJhZy8+CiAgICAgICAgIDwvZGM6c3ViamVjdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTgtMDQtMjhUMTQ6MDQ6NDk8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPlBpeGVsbWF0b3IgMy43PC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrsrWBhAAAD60lEQVRYCcVWv2scRxSemZ097SHbSeWkcYwwclDhzr1Q5T6QE1LghP6BGNIYJGRWNlaZItiFK1mr+JAu4HQu0kjpU8sgF3ITAsaFg0hOvt2Zyfvmdsa7a610Unx44Zgf773vvfneezPHNzrbhn3CT3xC3wPXYOC8LDzqdi8YY/gwh4BeknS/2th6dr2kf94AOp3OFyWgMyziOPbMDxV9FTtJnl1ut795Xd0/YQ0/vtYQwMT1KXWCfr2IjOWwtNehwN4xL9ykTrm6Pzl58yLn3J+mKh9mXbT3uRjGEDph+O8/TjfP5dBp7Ha7AX7O3o5nZeD/0E/OGyXntDgzA0X6qmCnrVutVlrUWV9f/3xo+pwhGDhvEPHOjoxnZjJggXmMHzBQ7NGNp9vxk61fr0HR7e/u7pZzCGHlc7qwBYYTT7tJYSx1AQzppyFPft5apta9w7SKcn0b7P7+/jCsDQ5mbc0dCmIJGDN0ehdcjsmkm6A6KUeKFOTE11PLxrC7Ukqh3ylL2fT0NAP9q6ur6rRCJJYsbKB0JsbCKMuy+xREePDyxQPCz+Crlw062QcA5wBOOt1l6vIl2WiI9F1fN6Q+BBqit6hEC4Hk08GQJMn4myjSP7RavVxgdaVUh/3U6HCMsPr9pYnJKRziHtWQ+un58+hGs6nsjQSjpuTyKGN3CX+FBwHXSiEVgjP+O8X6N12kIePES+GzTKAkGbNp8yJsGUMVzz8jPKReiyAQRimy5/cjye5RpF8utFp/+nwmT7d/NMzcFkS7yjJNGDaPURQxIQThEQy0SyF4l5WJYYhBa816vZ6dU7A6CAhbZVow/pDe0O9hVOoCi13r4BgBAvJHqMSQL2vE/iH6IAXEwgrRVUmBoRRwnwJQT98xEeVeSUyB4dJ5nwJBKdCFFGRmUCcu7rwIYypCTblaChuNBhWODrman5ub+4v0rMNBt8z6Ezh7GksJQpCbm79cMQE7QBFm/X6f0rjWnv8WRYg/QdbUpwDAEBy8vPyA8rNGzg3a8MiElwiM7dAtRqNoNptjGPM1laVxP9umWEMGLOKhKUOJDtBwDmzsw9fC/CzHr9SGuCTi2LbbKvVtmqXpCjMihBFa79Wrt5fGx9PDzc3fmu32Lf8qFliwU9emKhBSp+kRKn/hu9k1COEDbFdt/BoKWOAkuEbdVYyoIXv8+I/QK9dMHEb1Knb7MHOv8LFFOsjzCVHWOD7Ltn+MXCRF4729vWMDK+p8rLkvwjLg4N4v741m5YuwCI9CvHp1Ha8gFdBoPnQAkGsYYGxxcfEI7QQlFCTGUXwjAz4tWF+EpymOWu7fglE7qsOvrYE6g4+9/x/vhRbMdLOCFgAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-polygon-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjc1OfiVKAAAAe1JREFUWMPt1r9rU1EUB/DPK0XbqphFHETo4OCiFhwF0V1KHbRSROLqon+AUMVRRFBwEbRFMBiV+mMW/wIxi5OD1kERRVKRJHUwLvfBTZrU5OWBGXLgQu7Jfe98z/ec7z0vKa88b2q1BDtRHdAPBaylm1NzsxsOjPnPNt6WSWprbft+/c3I3zOAjhT1Y4+fvcjEQJIXnVECSa+AhqIHqlHH5lWCZoe+Gk4GRgDG86j9SAUdlDBSQaZhlOkuHyoVdJmsw98D1S5fM4NYM1LCpqM+Lwa240oLgmZzpVZvzKT75VLZcqksSZKWlQeAy/iORVwIvh31xvotvK7VG3Px4aWHj3Jl4C2uYSvq+Bn8v6LLbaVWb9zsBiKLCvbiNG7gLm7jAYqbPHMJMziZ9lsKoh8GtqCEVVzHftwJn+TFHp4/hg8BSCYVfMOZoPEv2NZGdy9WCGUr9toDR3E2/H4V6nwRe/BmgN65H1ZhvMuB3XiKIyFoGefwO6ysVkUlrNUNsyAK/jli533Q+Y8cJFvAeXyMS1CI/jiMr/gUtD2LQwMGr4R3p7bY3oQHQ5b38CT4D2AXXg6YcQXHpyYnlqKsi5iOAVSwL9zd7zJ09r+Cpwq72omFMazjT9Dnibym0dTkRDUKrrgwH7MwXVyYB38BstaGDfLUTsgAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-redo {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4itK+dVQAAAaFJREFUWMPt1L1rFFEUBfDfJDaBBSslIFjbaSFp1FJQFMVCHkzhKIqdUYOCoBgErVz8rCwiTDMwBCIKipDWyip/gxAIWAmBgBC0eYFh2Gx2l9lFcA5M8e59782Zc84dWrT435Hs1siLchqn43MS0zgW22vYxjesYjVLw3YjBPKinMUTBOwf8J5fKLGYpWFjJAJ5Uc7gIW6jM6Kim3iNZ1katgYmEL/6I+YasvY7Lg6iRpIX5VF8wuEe/XV8wGf8jN6LWTiAc7iEQ7ucPZ+lYW0vAtfwvlbfwCKW9gpXDOv1mJvZHiSO91MiyYsyiQSuxtpXXM7SsDmM5nlRdrCMMz3sOJWl4Xevc/vwBzdwAl+yNNwZxfRI+GxelK9ikHcwh8d4NNR/YFRES1ZwoTYdR7I0rNf3TzVNIGbmSvR/Bx08mIgCFSVu4l2ltIWD9WxNGR+W8KOynqnZ0rwCeVG+wa0hjrxtWoF5dAfc28V8Mib/n+Nev5dnabg/zgw87aNEN/bHOwVRiRe4Wym9zNKwMKkpgIWKEt24njxiJlq0aPFv4i9ZWXMSPPhE/QAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-reset {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4gWqH8eQAABLdJREFUWMPtlktsVGUUx3/nfvfOlLQaY2IiRRMQIRpI0PjamJhoVASDvNpCpYw1vJQYSVwZwIVQF6wwRHmkAUof9ElrI6VqDAXcID4TF0IiYQMkSlTokNCZ+b7jove2t+NMH7rQBWd3v+989/zP+Z8X3Jb/WGQySvUNTQBJESkNguAVYIWqzhaRhwBU9WcR+QXoymazn6jqzUQiMQSQzWZRVdal1vwzAI2tHQBPOuc2AbWTdOyQ53n7nHNfRwee51GzqoIQMCLDpr3x/tLQ0oZzrk5Vj0/BOEBt+KYuOlBVGlrahr0Wob27t3gEjnZ2AyQzmUwHsDgP6J/AYRE553neDwDOuUdU9QngNeCumK4TkRMhZUORcYC1qysLA6iuSQHIwkWLD6lqapQsuSmwTVV3h99I7EcAR462A2xR2Ilq6ehTaejvO1774kuLNALR33eclsaGsQDe3fYegHl43vyNwEeqGl1963mm2jl7YZRTQ82qlWP4HM6ZToC5ztkW4LHQoALru7s6Di5dvlIj/e6ujrEAWoZDn8hmMjXATMACGaAVuBjXTVVXFc/AxhaA+4zvn1DV+eHxVWPMAmvtb5GeMWZyZVhI2rt7qVy2pOh9U1snwIPW2vMi4oWJuBPYHkVAVScPoKmtkzVVK6cEMsyJraHhiCqJqJUwj/JRz7TW1iSSyR2rVyylqa0Ta+24Ic8vXaAEmDFc/l5Z2A/80OibuVyuz/f9ElUdHCmvw82t5HK5h6y1PYhsz2YyGw43t2KtBZHIGwB6+j4rCkBVUdV7gXrggnPuu8h4eP+xMeZS2D0rJYZ6AdAMzAt1b4nI26p6IFZOY8pugijcKSIHVLUK0LyST4vnrVfnWr3mjmP4QTATaERkXkypRFX3isjmuHdRJEK6Ckqquopp06bdKCkp2Sgi7XnGLcg7gzeutwNIiPYc8HixqIrIOlU9ONVIhHPEd851icgSVXUiskVV94gIqoonIt0i8gfQCfwae38e6BWRXuBZz5jZ8VbaOE4EIqlZVUEQBLlkMplS1QER2RwkEnsSyaREDUzyeNsvIhvCMqkH1kdIJ2o+k8iJB1LVVRfjZ6nqqlEAIbdVQGto8Lrv+/dbawcjAL7vc+6bs+zetetfLSHxniIFGofGGsU2oC7eOCbDfZ7nQawBOSAX74SF9oEPImOq+r7nmVmxb5raukZa8UReGmNmhbMkAwwBH467EYVZe49z7kdgenj8k7V2oTHm8kgdWcvrNdVFjR8cHkYzjDH9wLjDaEwEzpwa4MypgWvAjtjxfGNMj4jMiT+M+kFsZI/Q6Pv+HGNMT8w4wI7TAyevxXVPD5z8+zD64tRXAMHVK1eaVLUyVvuDqroV2BOnJF4ZIedviUidqt4Re9s+vbx8zZXLl7PR2+nl5Tz/zNOFp2FzxzGAklw22wUsLLaSKXwf8vhosZUM6PeDYEUum70VHfpBwKsVyyfeikOP6oBNwN1TrLbfgX3A1kKLzKeff8nLLzw38T5wZDgxn1LnNk5lLRfP26/OnR2hwfNYW2Atn9RCsrf+EECyrKysDFimqhXhyjY3VLkAXBKRDqA7nU6nS0tLhyIj6XSaN9bVclv+l/IXAmkwvZc+jNUAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-save {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4UexUIzAAAAIRJREFUWMNjXLhs5X+GAQRMDAMMWJDYjGhyf7CoIQf8x2H+f0KGM9M7BBio5FNcITo408CoA0YdQM1cwEhtB/ylgqMkCJmFLwrOQguj/xTg50hmkeyARAYGhlNUCIXjDAwM0eREwTUGBgbz0Ww46oBRB4w6YNQBow4YdcCIahP+H5EhAAAH2R8hH3Rg0QAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-tap-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3NzIwRUFGMDYyMjE2ODExOTdBNUNBNjVEQTY5OTRDRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCOTJBQzE0RDQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCOTJBQzE0QzQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTQ0QzIwMUM1RjIxNjgxMUE3QkFFMzhGRjc2NTI3MjgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzcyMEVBRjA2MjIxNjgxMTk3QTVDQTY1REE2OTk0Q0UiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6eYZ88AAADLklEQVR42rSXf2TUYRzHv7tuGcfE6Vwb5zLSSjEj7Y9KWqfEmFZJP+yPMdKKmUrrn0iUfjhWlLFi6YfNrF+StBoTo39iYkTGco4xxxG59P7k/T2PT8/37nu3bx9ezvPj+zyf5/PreS78bGLS8SmrwE6yje3NHJsDBTALpknBz6JhH3NiYAB0gHqPOVv52wJ6QQ48BzdAttTioRJjdeA8mAHHS2xuk3p+M8M16ipVQE49Ds6CiFO9RLjGONf05QLx6wPQaBlbBlPgJVgkP0ETiIJ2sB/E1XfimjfgBOOlKDUqCGOcqBcQnw6BYW5YTo4wbvQhMmCfGRemC2rBiGXzWUb+kM/NRZ6CHWBM9ce5R61NgX6ayhSJ5EPlItlDRNkz4JbFHf06BkSzHjXxM+gDv1S/mPUo2AXWgt9UUHL/IVhS8yUV1/EbV3o4N+NaoE9Fu/i827K5pNYHnqAVJECShWmAaddpscYFFXwR7vnXBRGlnUN/L6kqKJlxnRUuDbaDBiL+vst5d4gpcpBrqk/2jIgCKVUolhntplzivHmwh4stGOPfwBWwl/2dpp8p7xjQZqFLiQJtauKkivYm+kzccpK57yXfOUe+P23JqAnVbhMFmlXntCWnxbT31am9ZJ4BJifsUmNTqt0cYhA5ypympPg7VkEKunPbVb8cIG+0kyHLJZNR7fUMooUKFHAPkfQo58VLK+RzwRDd4FdWG9mjpaAXzqkJa1R7kQttqEABWXMjOOxxVRfnhRm5URX1prk/0pQHwNcKlchZ+jdpC+hFdVqO0my9Hj5dkYgCn1Rfh/KdlNDHrJhPqlDih+IfBd6qwpOgEqYMsorJ2HtWxtagLJDn/W3KRfPOZhoeBJfZPgVeGKeKrkQBh5dLXl25Ny3pc4/1fkTdbvFqFQgbxWeYD0hXulhQ0pYiM1jG547fcbMQpVnHTZEn9W3ljsCzwHxCdVteNHIZvQa7/7cC7nV6zHIfyFP9EXjFa7YxKAVqPP4bxhhoLWW+z9JyCb6M/MREg59/RlmmXbmneIybB+YC/ay+yrffqEddDzwGvKxxDmzhc0tc80XVgblqFfgjwAAPubcGjAOl1wAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-undo {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4em8Dh0gAAAatJREFUWMPt1rFrFFEQBvDfGhACASshkL/ALpWVrSAKEQV5sIULWlgZNSgIFkGIVQ412gkBt1lYLERREFJqJRaW1oHAoZUQsDqwecWy7N3tbe6C4H2wxc682Zn3zTfvLXPM8b8j6RqYF+UCzsfnHBawGt3fMcAX7GEvS8NgKgXkRbmMxwg41TLsN0psZmnodyogL8pFPMIdLHUk7hA7eJKl4U/rAuKu3+HslFr/FZezNPSTFslX8QErDe4DvMVH/Iq9F7VwGpdwZUjsPtaSFjv/1vCBPjaxO0xcNbHejLpZrrlvJCMCT+JzA+2fcC1Lw+GE4l3CG1yIptfjCtiKoqtiJ0vD3aM0Py/K57iIMxgkQxat4EdN7e9xdRzlk+LEEPvDWvIDXJ928sYxjL36icWK+VaWhlezOIqbGFirJd/H7szugrwoX+D2BDEvszSsT5OBdfRaru/F9dPXQF6U27g/KnmWhgctxqyzBrZGMNGL/rHI0nDkKXiKexXTsywNGx0OnFbFNk3BRoWJXnw//j+ivCi32/S8CxPVNiWOAdUiJtXITIqYY45/Cn8B2D97FYW2H+IAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-wheel-pan {\\n background-image: url(\"data:image/png;base64,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\");\\n}\\n.bk-root .bk-tool-icon-wheel-zoom {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgskILvMJQAABTtJREFUWMPdl1+MXVUVxn/fPvf2zrSFmUKnoBCUdjRoVaIxEpO2JhilMYBCtBQS2hejpg1Uo2NUrIFAoyGmtiE+GHwQGtvQJhqDmKYRBv+URFsFDNCSptH60DJTO3dKnX/33rM/H7rvsDu9M20fDMaVnGTvtb69z7fWXmvtc/TEzqd4OyXwNsv/FwFJQVI/sA14SZKRLOlPkr5TrVYXHz70quYkEEK4TtI2YAgYkrQthHDdhV5uuw+43/ZrwCbgRttgY/tjtrc0m83X3/f+D6ydnJhYcB4BSZcBA7aP2d4ELAGW2N5k+xgwkDB0IH19CGGH7R8B1aQeAf4KvAw0ku4K2zu7uru3ApdPEyiKohd4TNKjtjt5h6RHgccSNrddbvuHtm9Jqoak7xVF8WFgdavV+pSk5cCObNmXgK++85prCj3z28HKqZMnH7D9YAY4BvwujT8BvCuL1INX9vVt+dfwcCvNb7f9q2RuSfrGvWu/sL2Nf3LX7pzvj4ENSGBPVarVd4fRkZFltjdmoMGiKO4IIWwIIWwoiuIOYDDzeOPoyMiyFLkum7WJCMDztrcrTTrIRuAQZ6NcK1utL4dWq/VZoC8BhqvV6l1lWb4YYxyLMY6VZflitVq9CxhOmL60hhCKeYiV7WMKIXw9jT1HpXw3c+bOAKzOjJubzebJrKQCQLPZPClpc7bP6rMYKtjXth2OMf7tIkr11Wz8oQDc1Fb09vY+kQw1YAuwJY2nbUluAnCWpKkaFl6IQIzxivaR2SYA89sJVK/Xp2x32R6w/a30DNjuqtfrU0ArYecDCEqgLqm94T0dEm9mBG7PxkdDlkBnkhebgIezNQ8nHcCZPL9ijE1Jf/bZZoPtzbavmqNZLbf9tSxq+yoduuJ+SZ+zXSZyBXCqU+d8fvC5yRUrV+0G2j3g2hDCLyXd/+Su3QdnvP/zCuH72LWsgf2k0oHlH2c2odlkxcpVEdgr6aDtjyb8x20/J+mA7T9I6rL9SWA5dne2/GdXLl58qNJh398An85yTMA+4DOz8Dgu6Zu2dwJXJ91ltm8Gbp7Fgb+EEB4aHhpq5CEtACqVyr3AC0AlPS8k3TSmQ2YPhhBuS/1/LpmS9JTtNTHGfwBU2uUALARotVqniqJYH2Pck85pfavVaufAwnQvnHc0McaDKVptebN94QAnJB0EdtjekydyZXqjs/0ZgLIs/w6sy8bnYGYJ63pgERKC05JutT1kOwITwL9tvzlzUQUYB+Zjs2DBgu6xsbGJZHstByZbezregcBXeCsEz1bnzXt5anLyzLq71zDLxTRdVgemdx0fv2e2w5thO5DbiqL4oKT3ZKpnpyYnz+SY2ZpTAPZmJfdIrVZbNBNUq9UW2X4kU+2dcf53Aj1pj2PA7y/6m1DS00A9za9uNBq7iqJYBuoGdRdFsazRaOzKSqye1rTbaa/tlbYrqXQP2X4FIA9/J1l39xrC0v7+w5IeB8XkwS1lWe6TGJAYKMty31tfO4qSHl/a3384I3CDpI+kzC4lnRfrue6GytEjR8oQwlY73gC0L4qlth/q0M1/LYWtR48cKQF6enrC6dOnVwGLEpnxnp7en4+O1i/tszzGOCTpPmB7ahb57QUwBWyXdF+McWg6MScmuoA8OX8xOlpvXGz422XYTsB/SnpA0h7bX5R0WzI9HUL4qe2XbI+dk3xl+V7gxoztD5jRI+YK/zkEEokx2/uB/RdzIfUtueqVN04cXwF8G3iHY3z9Urw/j8ClyhsnjrcS2Vv/J/8NLxT+/zqBTkcxU/cfEkyEAu3kmjAAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-box-edit {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4QfHjM1QAAAGRJREFUWMNjXLhsJcNAAiaGAQYsDAwM/+lsJ+OgCwGsLqMB+D8o08CoA0YdMOqAUQewDFQdMBoFIyoN/B/U7YFRB7DQIc7xyo9GwbBMA4xDqhxgISH1klXbDYk0QOseEeOgDgEAIS0JQleje6IAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-freehand-draw {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADTElEQVRYCeWWTWwMYRjH/88721X1lZJIGxJxcEE4OOiBgzjXWh8TJKR76kWacOBGxdEJIdk4VChZI/phidRBHMRRIr7DSUiaSCRFRM3u88gz+o7Z6bBTdjmYZPf9eJ55fv/5zzvvDPC/H9QsA66Olo9Ga+/MdR+Ljm2/KQIULsz9FqItGdOfJKLhApLgVkiSCGODjWit7QpKWy+TNrFeXvzKVUT8NiTVaIgDcbiCFJ7GiT8WkARXAdYBK0Lbhi/CenArRNskuM7/tgNp4ArQ42dwjf3WY5gWTqC7O/NbNn2Xkfw/YwdSw/We14HP2IEZwX+y9cZ9SH0LmgFP7UCz4KkENBNeV0Cz4b8U8DfgKiDxMWwUXETqLvJpCQpXZfawbzS7t9v5pL19cHBwfja7YA0y/lyCM0+E5hv5+piZXwKYcF23as+37bTXsQVqgkL0p/34fHR7DcBtbetFsBmGDwMOJCggYG55yw7dMlk6DuC1Bdu2RsCU9TYWQq2IoGbsreZ5NzvEqfSBsIsIy8OTbcdgiRHeh4o8AFAEwDakbY2AaCCpH7V9aGhoUUUy3UyVbkPYFuYLDlUZH8XBpwxkK0Dbgxg5HcVi0ent7a0RULMIozaHBSMfF9b2SzdutFcFB2FkwMIJOG6qfteXOa1nHZ48tyefuwyfT9s6wtzZ3t7eZse2DR2I228TtHXzuWCx9g8MtK5cuHCZTH4tiHEOa4xFngvTyS8f35d6enomiCi4/foEXBkZaQuukChL4FYA2Whd7YcC4gEdW3CpdL3LtGAVCVYJywEyTpAuJKeMOKXZs/Bw947C50KhUFOG4cwz35cjWNBlHGeD53n3xsfHP/T19U1qciggar8Fa4I3PHobIotBWBtc2hSiChyZxVzM53Pv7FVH6Tp3uVy+g0r1ImD2GjIrQGYIxjnfuXTZGICS5k/bBwJoubwEFX4TLah9EXomJGMA3za+f9913Yl4TnzsDQ+vE6YTZOjHh4ngibstt1pzQwd04F0bPStEBpXqRoBeQ/AKghfBnOEKgS+Q7z91Xfdz/HGKg8Ox7z8iYD9z6wqTkZFgnvhMGP9VZ2or1XVkPM9z0mytSfVsHa1RLBZbLoyNzUnK+ydz3wC6I9x+lwbngwAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-poly-draw {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjglo9eZgwAAAc5JREFUWMPt1zFrU1EUB/DfS4OmVTGDIChCP4BgnQXRxVHqIJUupp9AB8VBQcRBQUXIB9DWQoMRiXZzcnQSA34A7aAuHSJKkgo2LvfBrU3aJnlYkBy4vHcP557zP/9z3r33JdXa647N0kHSZd5Nn0rSxc8G3cXp85sMcnZZ8vge3osZ+l3vB8CWFA0iL14t79h210swAjACMAIwAjACkB90D/8/GchI9ve4nPwTBh5E9ws7OepzGWb9EddSn51Op9ZstadSg4VK1UKlKkmSDSMLALewiuNh/hVJq71Wxttmqz0dG88vPc+MgWP4grvYG3SLOBrZFFFrttqPe4HIDxh4GSei+98iSlusuYopXEAjBtEPA3tQwUpwluAbDm4TPJUz+BTW9l2Ce6G7L0X/Bw8D3T/7SKKIDzHg7QCcxjvcQAEtXAnrrg/RP0/DKPbqgcN4iVOR7gcO4dcQgRuoh7HSqwlP4n20m63jJu5n8MkWMYfP3UowhzdR8FU8w9iQwevBdyq3/27CMRzAE5yLuvsRLg+ZcR1nJ8YL81HWJUzGAPaFZwe/Q5MdyYDyNHgjzO90YyGHtVDncuiJchaHw8R4oREFV5qdiVmYLM3OgD9k5209/atmIAAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-point-draw {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEiERGWPELgAAA4RJREFUWMO1lr1uG1cQhb9ztdRSP7AF1QxgwKlcuZSqRC9gWUUUINWqTh5AnaFOnVPEteQmRuhCURqWsSqqc9IolREXdEvQBElxtdw7KURSFEVKu4w8wAKLxdw9Z+bMnRmZGXfZ29//II8th4WwGVNyIoQLYB5vxA9Caq04iUd9A+7ZlsNC2I7TdSd2hZXMJKlnTqp9jtl/GBaqoyQ0noFKpUIzBicYYc+DEFpxkglc4oVJa5gvDn8v1xV2irG3FM4NSVwjUKlUaMcpJhCGmSEJQ6QGD8M5WnHCd8+f3QCXpPLx8WNwv0j6Bm9FMK7FJ3WBE+R/2t7c/GBmFvSBrzRTCsyTDjXrxUgEMtpxynJYmJoBJ4VAybwVARgvL7Oik0okCodnKpVKX7P0leiVMb0VvbJT+upznK4vh0GIeQwwQStJkHQD3MwsCALTJRG7Qrdrj5m/djgYaIa0hlkRdJk26XEgC9txurccBtVW3IudBImmZuACUP+ZlIDBt9FKcubYNTcAH/X0RYM1E7utJPlqe+uZzPxUcEkiSS4sTT95n15Mud0xWC0o2PAWOCdK3KYZlFxfM+tHOcnMzNr1es18ug+cgsVjP4yBU/Ppfrter1m/+l0+zYygML1xRVHU7TSb1cSzBzoBzszsH+AMdJJ49jrNZjWKou6wBnwOzcyndBpNbuueURR1Dw8Pq35p9cc5p/Dy9Dypt7jXrtdGwQECS9NPhr6Gq6txUzNigE6zydLK6lTw12/KT4FGFEUfJX2YJNONq5tVs4ODA7sD/DnwJ/BoADZuE3tHFs12dna6d4C/BI6AlbyzI8ii2TTw12/KK33gb2cdXsNZoAntbZC2SeO4c9592k/5eNQbiwvFd1kJuFGwLJr1wSPg/SwpvyFBHufOeXcFeAlE97U/uCxOY+P3b+Bn4B3Q+L8EdJfD4a+/AbC4UBzPxiPg3wlHZquB28Cn2IuR9x3gr3uV4DbwfvSDOvi4uFA8BDZmIRHkjHpS9Ht9iRqd8+5G3g05mAGcQbsdiX5QJ428G7Kygo8XYdb1/K4NWVmjzkNge2sz84bs+ELmpDDLtqWsNZBXgvmw8CTtpWVMT7x5YWBjLARnwZfKQNYN2U2LPvrh+5nBt7c2M2/It9bArCTKR8eZN+SJ13AScPnoODeRdqNenH+wul5w2gUr2WUjMFAt8bZ/0axX/wNnv4H8vTFb1QAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-poly-edit {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gELFi46qJmxxAAABV9JREFUWMOdl19vFFUYxn9n9u9sCyylUIzWUoMQBAWCMdEEIt6xIRQSLIEKtvHe6AcA4yeQb7CAUNJy0daLeomJN8SEULAC2kBBapBKoLvbmdl/c14vdmY7u91tF95kknPOnHmf95znPc97Ro2OTeBbdjFDT3c32ZxVHUOE9kSMB0/m6ExuoJn1H+ur6Y+OTfD50SMN5168OgrAlyf7CfuD+z7+iDs3p8hkLUQ0iFQ/yFl5Nm/qonfHVva+s32Zw9GxCYILsZ08tpNfBhbs+1YN4OH9+7huGdECSBVfqUosbsllfmauBqiR+cCNwOr7AEo8pPHJnymXykhg5fUWjoQpl0vVvhZhbSzGoUOHqgBlt6B6uruj2Zy1E9jo0fhfeyL2x4Mnc8VErK0KUEOB64JSyptfG4RSytsJjUJVxw2lsFy3urL9nx1Qd25ObctkrVMi+jQivd7U2ZyV/3Hzpq7h3h1b/7p9Y0o8v8rwAbTWrGpSocN/FGDlbAI0Rl23PCBan0Ok158H9Ipwzi25A/Mzc9Gl/BYx/E4kYqC1NKRARNAaDCNUM27Z+Zr+ouXs0q4+LSLBHPYCFkTkC6uU39kwCdsS7WRKmaYUiAhdnZ3MPX2K4+QjQI+C94A93rMzm8ltMwyDeDzWjMZeEb2pYQDdW3vITU2jtUZ5QThOPgm8C7wP7J15OPsBsB3oWpGnVWisCeDS1VHj4vBI92+/3tgB7Ab2AruAXiDBK5oIOkhtkEYRNRuJhObrd8Dl9ewf4D5wG7hVLpen29vb5wzD+BrkbBMaL3d1dk5nsrnlFDTTFWAWmAZueWD3gCemGde2k2fw1Al1YXhEvjozoO49eczdqekrWmsc2zlrmvEKOGoW1GUjFLqSk2KpJrCLwyMCPAP+BO54QL8DM6YZX/ClsP9YnwKkXnIBP4jdIpJRpdJTCYdMwwi98KU0Hjc/dDILNyUcwTCWdOSMJ0TRmBktGRhLugu0xyLk7CIqVNm+0bGJptl1YXikD0grpY4Rjc4a8Fbgdab/6OGbAJeCUuyJnnHmZH9pbSyGuBXV8NUwlUpR1EWyixmSyTWEwqGlJ2Swbo2JXbAAfgDGgGQA9I1A9t1tlq0AxrXxn0ilUpw4fhQqYkH/sT41OTnJJwf2s6FjI5mshdYa7bqVR2uezr9MJmJt14FvGrh/O9D+e6UkM/xyCuCqEKCYnJyUTKFQrZDHjxzGshwWLQcRsOz8Hi85P23id0ug/XilAMLBmm4tPGdoaKjSH5+oAGrhwvBI9SjZTn4QSK9yenoD7dlrExPoJlXW8G8ytpNHxRKk02lGxsdRKFwXLNvx5yY94HQLGhGk4LFCYQSqaE0AwWM1eOoEbR0dKBSW7bC4mKuffxs4D/wCLKwQQPAUzIkslfp6cVomROWSolh0GjldAM4nzDi2k9/i5UAzC9aKfwNJ3zgJg9YEvN6+C7SHgKm69+sD7RfNnKTTaZRPQfAut4oFV//IS7gkcB34VlVo8kGzphlfB+DU+TfNGBpZtRastvrvARJmfMF28ge9sc2B9/PNnCilMIDwK6y8/ow/Ai4kvILTljAXvDvEvrqKSUs60KolzPjBxspavQD2tKqCAGF/Ba+xE/Wbilu54wZV8NEKF5fXzQHl/bh4hUsE0WAXSlDMYcQSrQXgCmsTseXHsJkNnjqBFGwKJaHsKlxtUHYVhbLCzr1kaOA4bcn1y1Swmb+iLpJKpVrfgdpfsiVVCYcgluwgnU7jEgJ4s5UkLFtWYyHyEg0/N1q1tmQH+YXnAMFr97Nmv3p+0QsHQRsF8qpBOE5+rb9Nkaj50tVQKjqh4OU3GNL/1/So3vuUgbAAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-line-edit {\\n background-image: url(\"data:image/png;base64,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\");\\n}\\n'},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),s=t(72),o=t(303),l=n.__importStar(t(282));class h{constructor(t,e={}){this.items=t,this.options=e,this.el=s.div(),this._open=!1,this._item_click=t=>{var e;null===(e=this.items[t])||void 0===e||e.handler(),this.hide()},this._on_mousedown=t=>{var e,i;const{target:n}=t;n instanceof Node&&this.el.contains(n)||(null===(i=(e=this.options).prevent_hide)||void 0===i?void 0:i.call(e,t))||this.hide()},this._on_keydown=t=>{t.keyCode==s.Keys.Esc&&this.hide()},this._on_blur=()=>{this.hide()},s.undisplay(this.el)}get is_open(){return this._open}get can_open(){return 0!=this.items.length}remove(){s.remove(this.el),this._unlisten()}_listen(){document.addEventListener(\"mousedown\",this._on_mousedown),document.addEventListener(\"keydown\",this._on_keydown),window.addEventListener(\"blur\",this._on_blur)}_unlisten(){document.removeEventListener(\"mousedown\",this._on_mousedown),document.removeEventListener(\"keydown\",this._on_keydown),window.removeEventListener(\"blur\",this._on_blur)}_position(t){const e=this.el.parentElement;if(null!=e){const i=e.getBoundingClientRect();this.el.style.left=null!=t.left?t.left-i.left+\"px\":\"\",this.el.style.top=null!=t.top?t.top-i.top+\"px\":\"\",this.el.style.right=null!=t.right?i.right-t.right+\"px\":\"\",this.el.style.bottom=null!=t.bottom?i.bottom-t.bottom+\"px\":\"\"}}render(){var t,e;s.empty(this.el,!0);const i=null!==(t=this.options.orientation)&&void 0!==t?t:\"vertical\";s.classes(this.el).add(\"bk-context-menu\",\"bk-\"+i);for(const[t,i]of o.enumerate(this.items)){let n;if(null==t)n=s.div({class:l.bk_divider});else{if(null!=t.if&&!t.if())continue;{const i=null!=t.icon?s.div({class:[\"bk-menu-icon\",t.icon]}):null;n=s.div({class:(null===(e=t.active)||void 0===e?void 0:e.call(t))?\"bk-active\":null,title:t.tooltip},i,t.label)}}n.addEventListener(\"click\",()=>this._item_click(i)),this.el.appendChild(n)}}show(t){if(0!=this.items.length&&!this._open){if(this.render(),0==this.el.children.length)return;this._position(null!=t?t:{left:0,top:0}),s.display(this.el),this._listen(),this._open=!0}}hide(){this._open&&(this._open=!1,this._unlisten(),s.undisplay(this.el))}toggle(t){this._open?this.hide():this.show(t)}}i.ContextMenu=h,h.__name__=\"ContextMenu\"},\n", + " function _(e,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});const t=e(9);function*r(e,n){const o=e.length;if(n>o)return;const r=t.range(n);for(yield r.map(n=>e[n]);;){let f;for(const e of t.reversed(t.range(n)))if(r[e]!=e+o-n){f=e;break}if(null==f)return;r[f]+=1;for(const e of t.range(f+1,n))r[e]=r[e-1]+1;yield r.map(n=>e[n])}}o.enumerate=function*(e){let n=0;for(const o of e)yield[o,n++]},o.combinations=r,o.subsets=function*(e){for(const n of t.range(e.length+1))yield*r(e,n)}},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(296),i=e(173),s=e(72);class c extends o.ButtonToolButtonView{render(){super.render(),s.classes(this.el).toggle(i.bk_active,this.model.active)}_clicked(){const{active:e}=this.model;this.model.active=!e}}n.OnOffButtonView=c,c.__name__=\"OnOffButtonView\"},\n", + " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(1),s=t(19),l=t(72),n=t(115),a=i.__importStar(t(18)),r=t(78),_=t(9),c=t(13),h=t(8),u=t(81),v=t(306),d=t(307),b=t(308),p=t(295),g=t(299),f=t(310),m=t(173),w=i.__importDefault(t(300)),y=i.__importDefault(t(311));class T extends u.Model{constructor(t){super(t)}static init_ToolbarViewModel(){this.define({_visible:[a.Any,null],autohide:[a.Boolean,!1]})}get visible(){return!this.autohide||null!=this._visible&&this._visible}}e.ToolbarViewModel=T,T.__name__=\"ToolbarViewModel\",T.init_ToolbarViewModel();class k extends r.DOMView{initialize(){super.initialize(),this._tool_button_views=new Map,this._toolbar_view_model=new T({autohide:this.model.autohide})}async lazy_initialize(){await this._build_tool_button_views()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tools.change,async()=>{await this._build_tool_button_views(),this.render()}),this.connect(this.model.properties.autohide.change,()=>{this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change()}),this.connect(this._toolbar_view_model.properties._visible.change,()=>this._on_visible_change())}styles(){return[...super.styles(),w.default,y.default]}remove(){n.remove_views(this._tool_button_views),super.remove()}async _build_tool_button_views(){const t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;await n.build_views(this._tool_button_views,t,{parent:this},t=>t.button_view)}set_visibility(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)}_on_visible_change(){const t=this._toolbar_view_model.visible,o=g.bk_toolbar_hidden;this.el.classList.contains(o)&&t?this.el.classList.remove(o):t||this.el.classList.add(o)}render(){if(l.empty(this.el),this.el.classList.add(g.bk_toolbar),this.el.classList.add(m.bk_side(this.model.toolbar_location)),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change(),null!=this.model.logo){const t=\"grey\"===this.model.logo?f.bk_grey:null,o=l.a({href:\"https://bokeh.org/\",target:\"_blank\",class:[f.bk_logo,f.bk_logo_small,t]});this.el.appendChild(o)}for(const[,t]of this._tool_button_views)t.render();const t=[],o=t=>this._tool_button_views.get(t).el,{gestures:e}=this.model;for(const i of c.values(e))t.push(i.tools.map(o));t.push(this.model.actions.map(o)),t.push(this.model.inspectors.filter(t=>t.toggleable).map(o));for(const o of t)if(0!==o.length){const t=l.div({class:g.bk_button_bar},o);this.el.appendChild(t)}}update_layout(){}update_position(){}after_layout(){this._has_finished=!0}}function M(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}e.ToolbarBaseView=k,k.__name__=\"ToolbarBaseView\";class B extends u.Model{constructor(t){super(t)}static init_ToolbarBase(){this.prototype.default_view=k,this.define({tools:[a.Array,[]],logo:[a.Logo,\"normal\"],autohide:[a.Boolean,!1]}),this.internal({gestures:[a.Any,M],actions:[a.Array,[]],inspectors:[a.Array,[]],help:[a.Array,[]],toolbar_location:[a.Location,\"right\"]})}initialize(){super.initialize(),this._init_tools()}_init_tools(){const t=function(t,o){if(t.length!=o.length)return!0;const e=new Set(o.map(t=>t.id));return _.some(t,t=>!e.has(t.id))},o=this.tools.filter(t=>t instanceof p.InspectTool);t(this.inspectors,o)&&(this.inspectors=o);const e=this.tools.filter(t=>t instanceof b.HelpTool);t(this.help,e)&&(this.help=e);const i=this.tools.filter(t=>t instanceof d.ActionTool);t(this.actions,i)&&(this.actions=i);const l=(t,o)=>{t in this.gestures||s.logger.warn(`Toolbar: unknown event type '${t}' for tool: ${o}`)},n={pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}};for(const t of this.tools)if(t instanceof v.GestureTool&&t.event_type)if(h.isString(t.event_type))n[t.event_type].tools.push(t),l(t.event_type,t);else{n.multi.tools.push(t);for(const o of t.event_type)l(o,t)}for(const o of Object.keys(n)){const e=this.gestures[o];t(e.tools,n[o].tools)&&(e.tools=n[o].tools),e.active&&_.every(e.tools,t=>t.id!=e.active.id)&&(e.active=null)}}get horizontal(){return\"above\"===this.toolbar_location||\"below\"===this.toolbar_location}get vertical(){return\"left\"===this.toolbar_location||\"right\"===this.toolbar_location}_active_change(t){const{event_type:o}=t;if(null==o)return;const e=h.isString(o)?[o]:o;for(const o of e)if(t.active){const e=this.gestures[o].active;null!=e&&t!=e&&(s.logger.debug(`Toolbar: deactivating tool: ${e} for event type '${o}'`),e.active=!1),this.gestures[o].active=t,s.logger.debug(`Toolbar: activating tool: ${t} for event type '${o}'`)}else this.gestures[o].active=null}}e.ToolbarBase=B,B.__name__=\"ToolbarBase\",B.init_ToolbarBase()},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(296),n=e(304);class u extends s.ButtonToolView{}t.GestureToolView=u,u.__name__=\"GestureToolView\";class _ extends s.ButtonTool{constructor(e){super(e),this.button_view=n.OnOffButtonView}}t.GestureTool=_,_.__name__=\"GestureTool\"},\n", + " function _(o,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=o(296),i=o(15);class s extends e.ButtonToolButtonView{_clicked(){this.model.do.emit(void 0)}}n.ActionToolButtonView=s,s.__name__=\"ActionToolButtonView\";class c extends e.ButtonToolView{connect_signals(){super.connect_signals(),this.connect(this.model.do,o=>this.doit(o))}}n.ActionToolView=c,c.__name__=\"ActionToolView\";class l extends e.ButtonTool{constructor(o){super(o),this.button_view=s,this.do=new i.Signal(this,\"do\")}}n.ActionTool=l,l.__name__=\"ActionTool\"},\n", + " function _(o,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=o(1),l=o(307),s=i.__importStar(o(18)),n=o(309);class _ extends l.ActionToolView{doit(){window.open(this.model.redirect)}}t.HelpToolView=_,_.__name__=\"HelpToolView\";class r extends l.ActionTool{constructor(o){super(o),this.tool_name=\"Help\",this.icon=n.bk_tool_icon_help}static init_HelpTool(){this.prototype.default_view=_,this.define({help_tooltip:[s.String,\"Click the question mark to learn more about Bokeh plot tools.\"],redirect:[s.String,\"https://docs.bokeh.org/en/latest/docs/user_guide/tools.html\"]}),this.register_alias(\"help\",()=>new r)}get tooltip(){return this.help_tooltip}}t.HelpTool=r,r.__name__=\"HelpTool\",r.init_HelpTool()},\n", + " function _(o,_,l){Object.defineProperty(l,\"__esModule\",{value:!0}),l.bk_tool_icon_box_select=\"bk-tool-icon-box-select\",l.bk_tool_icon_box_zoom=\"bk-tool-icon-box-zoom\",l.bk_tool_icon_zoom_in=\"bk-tool-icon-zoom-in\",l.bk_tool_icon_zoom_out=\"bk-tool-icon-zoom-out\",l.bk_tool_icon_help=\"bk-tool-icon-help\",l.bk_tool_icon_hover=\"bk-tool-icon-hover\",l.bk_tool_icon_crosshair=\"bk-tool-icon-crosshair\",l.bk_tool_icon_lasso_select=\"bk-tool-icon-lasso-select\",l.bk_tool_icon_pan=\"bk-tool-icon-pan\",l.bk_tool_icon_xpan=\"bk-tool-icon-xpan\",l.bk_tool_icon_ypan=\"bk-tool-icon-ypan\",l.bk_tool_icon_range=\"bk-tool-icon-range\",l.bk_tool_icon_polygon_select=\"bk-tool-icon-polygon-select\",l.bk_tool_icon_redo=\"bk-tool-icon-redo\",l.bk_tool_icon_reset=\"bk-tool-icon-reset\",l.bk_tool_icon_save=\"bk-tool-icon-save\",l.bk_tool_icon_tap_select=\"bk-tool-icon-tap-select\",l.bk_tool_icon_undo=\"bk-tool-icon-undo\",l.bk_tool_icon_wheel_pan=\"bk-tool-icon-wheel-pan\",l.bk_tool_icon_wheel_zoom=\"bk-tool-icon-wheel-zoom\",l.bk_tool_icon_box_edit=\"bk-tool-icon-box-edit\",l.bk_tool_icon_freehand_draw=\"bk-tool-icon-freehand-draw\",l.bk_tool_icon_poly_draw=\"bk-tool-icon-poly-draw\",l.bk_tool_icon_point_draw=\"bk-tool-icon-point-draw\",l.bk_tool_icon_poly_edit=\"bk-tool-icon-poly-edit\",l.bk_tool_icon_line_edit=\"bk-tool-icon-line-edit\"},\n", + " function _(o,l,b){Object.defineProperty(b,\"__esModule\",{value:!0}),b.bk_logo=\"bk-logo\",b.bk_logo_notebook=\"bk-logo-notebook\",b.bk_logo_small=\"bk-logo-small\",b.bk_grey=\"bk-grey\"},\n", + " function _(l,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});o.default=\"\\n.bk-root .bk-logo {\\n margin: 5px;\\n position: relative;\\n display: block;\\n background-repeat: no-repeat;\\n}\\n.bk-root .bk-logo.bk-grey {\\n filter: url(\\\"data:image/svg+xml;utf8,#grayscale\\\");\\n /* Firefox 10+, Firefox on Android */\\n filter: gray;\\n /* IE6-9 */\\n -webkit-filter: grayscale(100%);\\n /* Chrome 19+, Safari 6+, Safari 6+ iOS */\\n}\\n.bk-root .bk-logo-small {\\n width: 20px;\\n height: 20px;\\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==);\\n}\\n.bk-root .bk-logo-notebook {\\n display: inline-block;\\n vertical-align: middle;\\n margin-right: 5px;\\n}\\n\"},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});var s=this&&this.__rest||function(t,e){var i={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(i[s]=t[s]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var n=0;for(s=Object.getOwnPropertySymbols(t);nt)}}request_layout(){this._needs_layout=!0,this.request_paint()}reset(){\"standard\"==this.model.reset_policy&&(this.clear_state(),this.reset_range(),this.reset_selection()),this.model.trigger_event(new c.Reset)}remove(){this.ui_event_bus.destroy(),p.remove_views(this.renderer_views),p.remove_views(this.tool_views),this.canvas_view.remove(),super.remove()}render(){super.render(),this.el.appendChild(this.canvas_view.el),this.canvas_view.render()}initialize(){this.pause(),super.initialize(),this.state_changed=new u.Signal0(this,\"state_changed\"),this.lod_started=!1,this.visuals=new b.Visuals(this.model),this._initial_state_info={selection:new Map,dimensions:{width:0,height:0}},this.visibility_callbacks=[],this.state={history:[],index:-1};const{hidpi:t,output_backend:e}=this.model;this.canvas=new a.Canvas({hidpi:t,output_backend:e}),this.frame=new n.CartesianFrame(this.model.x_scale,this.model.y_scale,this.model.x_range,this.model.y_range,this.model.extra_x_ranges,this.model.extra_y_ranges),this.throttled_paint=m.throttle(()=>this.repaint(),1e3/60);const{title_location:i,title:s}=this.model;null!=i&&null!=s&&(this._title=s instanceof h.Title?s:new h.Title({text:s}));const{toolbar_location:o,toolbar:l}=this.model;null!=o&&null!=l&&(this._toolbar=new d.ToolbarPanel({toolbar:l}),l.toolbar_location=o),this.renderer_views=new Map,this.tool_views=new Map}async lazy_initialize(){this.canvas_view=await p.build_view(this.canvas,{parent:this}),this.ui_event_bus=new f.UIEvents(this,this.model.toolbar,this.canvas_view.events_el),await this.build_renderer_views(),await this.build_tool_views(),this.update_dataranges(),this.unpause(!0),g.logger.debug(\"PlotView initialized\")}_width_policy(){return null==this.model.frame_width?super._width_policy():\"min\"}_height_policy(){return null==this.model.frame_height?super._height_policy():\"min\"}_update_layout(){this.layout=new x.BorderLayout,this.layout.set_sizing(this.box_sizing());const{frame_width:t,frame_height:e}=this.model;this.layout.center_panel=this.frame,this.layout.center_panel.set_sizing(Object.assign(Object.assign({},null!=t?{width_policy:\"fixed\",width:t}:{width_policy:\"fit\"}),null!=e?{height_policy:\"fixed\",height:e}:{height_policy:\"fit\"}));const i=w.copy(this.model.above),s=w.copy(this.model.below),n=w.copy(this.model.left),a=w.copy(this.model.right),o=t=>{switch(t){case\"above\":return i;case\"below\":return s;case\"left\":return n;case\"right\":return a}},{title_location:l,title:r}=this.model;null!=l&&null!=r&&o(l).push(this._title);const{toolbar_location:_,toolbar:c}=this.model;if(null!=_&&null!=c){const t=o(_);let e=!0;if(this.model.toolbar_sticky)for(let i=0;i{const i=this.renderer_views.get(e);return i.layout=new z.SidePanel(t,i)},p=(t,e)=>{const i=\"above\"==t||\"below\"==t,s=[];for(const n of e)if(v.isArray(n)){const e=n.map(e=>{const s=u(t,e);if(e instanceof d.ToolbarPanel){const t=i?\"width_policy\":\"height_policy\";s.set_sizing(Object.assign(Object.assign({},s.sizing),{[t]:\"min\"}))}return s});let a;i?(a=new M.Row(e),a.set_sizing({width_policy:\"max\",height_policy:\"min\"})):(a=new M.Column(e),a.set_sizing({width_policy:\"min\",height_policy:\"max\"})),a.absolute=!0,s.push(a)}else s.push(u(t,n));return s},f=null!=this.model.min_border?this.model.min_border:0;this.layout.min_border={left:null!=this.model.min_border_left?this.model.min_border_left:f,top:null!=this.model.min_border_top?this.model.min_border_top:f,right:null!=this.model.min_border_right?this.model.min_border_right:f,bottom:null!=this.model.min_border_bottom?this.model.min_border_bottom:f};const b=new y.VStack,g=new y.VStack,m=new y.HStack,O=new y.HStack;b.children=w.reversed(p(\"above\",i)),g.children=p(\"below\",s),m.children=w.reversed(p(\"left\",n)),O.children=p(\"right\",a),b.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),g.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),m.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),O.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),this.layout.top_panel=b,this.layout.bottom_panel=g,this.layout.left_panel=m,this.layout.right_panel=O}get axis_views(){const t=[];for(const[,e]of this.renderer_views)e instanceof _.AxisView&&t.push(e);return t}set_cursor(t=\"default\"){this.canvas_view.el.style.cursor=t}set_toolbar_visibility(t){for(const e of this.visibility_callbacks)e(t)}update_dataranges(){const t=new Map,e=new Map;let i=!1;for(const[,t]of this.frame.x_ranges)t instanceof o.DataRange1d&&\"log\"==t.scale_hint&&(i=!0);for(const[,t]of this.frame.y_ranges)t instanceof o.DataRange1d&&\"log\"==t.scale_hint&&(i=!0);for(const[s,n]of this.renderer_views)if(n instanceof l.GlyphRendererView){const a=n.glyph.bounds();if(null!=a&&t.set(s,a),i){const t=n.glyph.log_bounds();null!=t&&e.set(s,t)}}let s=!1,n=!1;const{width:a,height:r}=this.frame.bbox;let h;!1!==this.model.match_aspect&&0!=a&&0!=r&&(h=1/this.model.aspect_scale*(a/r));for(const[,i]of this.frame.x_ranges){if(i instanceof o.DataRange1d){const n=\"log\"==i.scale_hint?e:t;i.update(n,0,this.model,h),i.follow&&(s=!0)}null!=i.bounds&&(n=!0)}for(const[,i]of this.frame.y_ranges){if(i instanceof o.DataRange1d){const n=\"log\"==i.scale_hint?e:t;i.update(n,1,this.model,h),i.follow&&(s=!0)}null!=i.bounds&&(n=!0)}if(s&&n){g.logger.warn(\"Follow enabled so bounds are unset.\");for(const[,t]of this.frame.x_ranges)t.bounds=null;for(const[,t]of this.frame.y_ranges)t.bounds=null}this.range_update_timestamp=Date.now()}push_state(t,e){const{history:i,index:s}=this.state,n=null!=i[s]?i[s].info:{},a=Object.assign(Object.assign(Object.assign({},this._initial_state_info),n),e);this.state.history=this.state.history.slice(0,this.state.index+1),this.state.history.push({type:t,info:a}),this.state.index=this.state.history.length-1,this.state_changed.emit()}clear_state(){this.state={history:[],index:-1},this.state_changed.emit()}can_undo(){return this.state.index>=0}can_redo(){return this.state.index=a.end&&(n=!0,a.end=t,(e||i)&&(a.start=t+l)),null!=o&&o<=a.start&&(n=!0,a.start=o,(e||i)&&(a.end=o-l))):(null!=t&&t>=a.start&&(n=!0,a.start=t,(e||i)&&(a.end=t+l)),null!=o&&o<=a.end&&(n=!0,a.end=o,(e||i)&&(a.start=o-l)))}}if(!(i&&n&&s))for(const[e,i]of t)e.have_updated_interactively=!0,e.start==i.start&&e.end==i.end||e.setv(i)}_get_weight_to_constrain_interval(t,e){const{min_interval:i}=t;let{max_interval:s}=t;if(null!=t.bounds&&\"auto\"!=t.bounds){const[e,i]=t.bounds;if(null!=e&&null!=i){const t=Math.abs(i-e);s=null!=s?Math.min(s,t):t}}let n=1;if(null!=i||null!=s){const a=Math.abs(t.end-t.start),o=Math.abs(e.end-e.start);i>0&&o0&&o>s&&(n=(s-a)/(o-a)),n=Math.max(0,Math.min(1,n))}return n}update_range(t,e=!1,i=!1,s=!0){this.pause();const{x_ranges:n,y_ranges:a}=this.frame;if(null==t){for(const[,t]of n)t.reset();for(const[,t]of a)t.reset();this.update_dataranges()}else{const o=[];for(const[e,i]of n)o.push([i,t.xrs.get(e)]);for(const[e,i]of a)o.push([i,t.yrs.get(e)]);i&&this._update_ranges_together(o),this._update_ranges_individually(o,e,i,s)}this.unpause()}reset_range(){this.update_range(null)}_invalidate_layout(){(()=>{for(const t of this.model.side_panels){if(this.renderer_views.get(t).layout.has_size_changed())return!0}return!1})()&&this.root.compute_layout()}get_renderer_views(){return this.computed_renderers.map(t=>this.renderer_views.get(t))}async build_renderer_views(){this.computed_renderers=[];const{above:t,below:e,left:i,right:s,center:n,renderers:a}=this.model;this.computed_renderers.push(...t,...e,...i,...s,...n,...a),null!=this._title&&this.computed_renderers.push(this._title),null!=this._toolbar&&this.computed_renderers.push(this._toolbar);for(const t of this.model.toolbar.tools)null!=t.overlay&&this.computed_renderers.push(t.overlay),this.computed_renderers.push(...t.synthetic_renderers);await p.build_views(this.renderer_views,this.computed_renderers,{parent:this})}async build_tool_views(){const t=this.model.toolbar.tools;(await p.build_views(this.tool_views,t,{parent:this})).map(t=>this.ui_event_bus.register_tool(t))}connect_signals(){super.connect_signals();const{x_ranges:t,y_ranges:e}=this.frame;for(const[,e]of t)this.connect(e.change,()=>{this._needs_layout=!0,this.request_paint()});for(const[,t]of e)this.connect(t.change,()=>{this._needs_layout=!0,this.request_paint()});const{plot_width:i,plot_height:s}=this.model.properties;this.on_change([i,s],()=>this.invalidate_layout());const{above:n,below:a,left:o,right:l,center:r,renderers:h}=this.model.properties;this.on_change([n,a,o,l,r,h],async()=>await this.build_renderer_views()),this.connect(this.model.toolbar.properties.tools.change,async()=>{await this.build_renderer_views(),await this.build_tool_views()}),this.connect(this.model.change,()=>this.request_paint()),this.connect(this.model.reset,()=>this.reset())}set_initial_range(){let t=!0;const{x_ranges:e,y_ranges:i}=this.frame,s=new Map,n=new Map;for(const[i,n]of e){const{start:e,end:a}=n;if(null==e||null==a||isNaN(e+a)){t=!1;break}s.set(i,{start:e,end:a})}if(t)for(const[e,s]of i){const{start:i,end:a}=s;if(null==i||null==a||isNaN(i+a)){t=!1;break}n.set(e,{start:i,end:a})}t?(this._initial_state_info.range={xrs:s,yrs:n},g.logger.debug(\"initial ranges set\")):g.logger.warn(\"could not set initial ranges\")}has_finished(){if(!super.has_finished())return!1;if(this.model.visible)for(const[,t]of this.renderer_views)if(!t.has_finished())return!1;return!0}after_layout(){if(super.after_layout(),this._needs_layout=!1,this.model.setv({inner_width:Math.round(this.frame.bbox.width),inner_height:Math.round(this.frame.bbox.height),outer_width:Math.round(this.layout.bbox.width),outer_height:Math.round(this.layout.bbox.height)},{no_change:!0}),!1!==this.model.match_aspect&&(this.pause(),this.update_dataranges(),this.unpause(!0)),!this._outer_bbox.equals(this.layout.bbox)){const{width:t,height:e}=this.layout.bbox;this.canvas_view.resize(t,e),this._outer_bbox=this.layout.bbox,this._invalidate_all=!0,this._needs_paint=!0}this._inner_bbox.equals(this.frame.inner_bbox)||(this._inner_bbox=this.layout.inner_bbox,this._needs_paint=!0),this._needs_paint&&this.paint()}repaint(){this._needs_layout&&this._invalidate_layout(),this.paint()}paint(){if(this.is_paused||!this.model.visible)return;g.logger.trace(\"PlotView.paint() for \"+this.model.id);const{document:t}=this.model;if(null!=t){const e=t.interactive_duration();e>=0&&e{t.interactive_duration()>this.model.lod_timeout&&t.interactive_stop(),this.request_paint()},this.model.lod_timeout):t.interactive_stop()}for(const[,t]of this.renderer_views)if(null==this.range_update_timestamp||t instanceof l.GlyphRendererView&&t.set_data_timestamp>this.range_update_timestamp){this.update_dataranges();break}let e=!1,i=!1;if(this._invalidate_all)e=!0,i=!0;else for(const t of this._invalidated_painters){const{level:s}=t.model;if(\"overlay\"!=s?e=!0:i=!0,e&&i)break}this._invalidated_painters.clear(),this._invalidate_all=!1;const s=[this.frame.bbox.left,this.frame.bbox.top,this.frame.bbox.width,this.frame.bbox.height],{primary:n,overlays:a}=this.canvas_view;e&&(n.prepare(),this.canvas_view.prepare_webgl(s),this.canvas_view.clear_webgl(),this._map_hook(n.ctx,s),this._paint_empty(n.ctx,s),this._paint_outline(n.ctx,s),this._paint_levels(n.ctx,\"image\",s,!0),this._paint_levels(n.ctx,\"underlay\",s,!0),this._paint_levels(n.ctx,\"glyph\",s,!0),this._paint_levels(n.ctx,\"guide\",s,!1),this._paint_levels(n.ctx,\"annotation\",s,!1),n.finish()),i&&(a.prepare(),this._paint_levels(a.ctx,\"overlay\",s,!1),a.finish()),null==this._initial_state_info.range&&this.set_initial_range(),this._needs_paint=!1}_paint_levels(t,e,i,s){for(const n of this.computed_renderers){if(n.level!=e)continue;const a=this.renderer_views.get(n);t.save(),(s||a.needs_clip)&&(t.beginPath(),t.rect(...i),t.clip()),a.render(),t.restore(),a.has_webgl&&a.needs_webgl_blit&&(this.canvas_view.blit_webgl(t),this.canvas_view.clear_webgl())}}_map_hook(t,e){}_paint_empty(t,e){const[i,s,n,a]=[0,0,this.layout.bbox.width,this.layout.bbox.height],[o,l,r,h]=e;this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(t),t.fillRect(i,s,n,a),t.clearRect(o,l,r,h)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(o,l,r,h))}_paint_outline(t,e){if(this.visuals.outline_line.doit){t.save(),this.visuals.outline_line.set_value(t);let[i,s,n,a]=e;i+n==this.layout.bbox.width&&(n-=1),s+a==this.layout.bbox.height&&(a-=1),t.strokeRect(i,s,n,a),t.restore()}}to_blob(){return this.canvas_view.to_blob()}export(t,e=!0){const i=\"png\"==t?\"canvas\":\"svg\",s=new a.CanvasLayer(i,e),{width:n,height:o}=this.layout.bbox;s.resize(n,o);const{canvas:l}=this.canvas_view.compose();return s.ctx.drawImage(l,0,0),s}serializable_state(){const t=super.serializable_state(),{children:e}=t,i=s(t,[\"children\"]),n=this.get_renderer_views().map(t=>t.serializable_state()).filter(t=>\"bbox\"in t);return Object.assign(Object.assign({},i),{children:[...e,...n]})}}i.PlotView=k,k.__name__=\"PlotView\"},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});var n=this&&this.__decorate||function(e,t,s,n){var _,a=arguments.length,o=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,s):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)o=Reflect.decorate(e,t,s,n);else for(var r=e.length-1;r>=0;r--)(_=e[r])&&(o=(a<3?_(o):a>3?_(t,s,o):_(t,s))||o);return a>3&&o&&Object.defineProperty(t,s,o),o};function _(e){return function(t){t.prototype.event_name=e}}class a{to_json(){const{event_name:e}=this;return{event_name:e,event_values:this._to_json()}}}s.BokehEvent=a,a.__name__=\"BokehEvent\";class o extends a{constructor(){super(...arguments),this.origin=null}_to_json(){return{model:this.origin}}}s.ModelEvent=o,o.__name__=\"ModelEvent\";let r=class extends a{_to_json(){return{}}};s.DocumentReady=r,r.__name__=\"DocumentReady\",s.DocumentReady=r=n([_(\"document_ready\")],r);let c=class extends o{};s.ButtonClick=c,c.__name__=\"ButtonClick\",s.ButtonClick=c=n([_(\"button_click\")],c);let l=class extends o{constructor(e){super(),this.item=e}_to_json(){const{item:e}=this;return Object.assign(Object.assign({},super._to_json()),{item:e})}};s.MenuItemClick=l,l.__name__=\"MenuItemClick\",s.MenuItemClick=l=n([_(\"menu_item_click\")],l);class i extends o{}s.UIEvent=i,i.__name__=\"UIEvent\";let u=class extends i{};s.LODStart=u,u.__name__=\"LODStart\",s.LODStart=u=n([_(\"lodstart\")],u);let d=class extends i{};s.LODEnd=d,d.__name__=\"LODEnd\",s.LODEnd=d=n([_(\"lodend\")],d);let h=class extends i{constructor(e,t){super(),this.geometry=e,this.final=t}_to_json(){const{geometry:e,final:t}=this;return Object.assign(Object.assign({},super._to_json()),{geometry:e,final:t})}};s.SelectionGeometry=h,h.__name__=\"SelectionGeometry\",s.SelectionGeometry=h=n([_(\"selectiongeometry\")],h);let m=class extends i{};s.Reset=m,m.__name__=\"Reset\",s.Reset=m=n([_(\"reset\")],m);class x extends i{constructor(e,t,s,n){super(),this.sx=e,this.sy=t,this.x=s,this.y=n}_to_json(){const{sx:e,sy:t,x:s,y:n}=this;return Object.assign(Object.assign({},super._to_json()),{sx:e,sy:t,x:s,y:n})}}s.PointEvent=x,x.__name__=\"PointEvent\";let p=class extends x{constructor(e,t,s,n,_,a){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.delta_x=_,this.delta_y=a}_to_json(){const{delta_x:e,delta_y:t}=this;return Object.assign(Object.assign({},super._to_json()),{delta_x:e,delta_y:t})}};s.Pan=p,p.__name__=\"Pan\",s.Pan=p=n([_(\"pan\")],p);let j=class extends x{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.scale=_}_to_json(){const{scale:e}=this;return Object.assign(Object.assign({},super._to_json()),{scale:e})}};s.Pinch=j,j.__name__=\"Pinch\",s.Pinch=j=n([_(\"pinch\")],j);let y=class extends x{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.rotation=_}_to_json(){const{rotation:e}=this;return Object.assign(Object.assign({},super._to_json()),{rotation:e})}};s.Rotate=y,y.__name__=\"Rotate\",s.Rotate=y=n([_(\"rotate\")],y);let P=class extends x{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.delta=_}_to_json(){const{delta:e}=this;return Object.assign(Object.assign({},super._to_json()),{delta:e})}};s.MouseWheel=P,P.__name__=\"MouseWheel\",s.MouseWheel=P=n([_(\"wheel\")],P);let v=class extends x{};s.MouseMove=v,v.__name__=\"MouseMove\",s.MouseMove=v=n([_(\"mousemove\")],v);let O=class extends x{};s.MouseEnter=O,O.__name__=\"MouseEnter\",s.MouseEnter=O=n([_(\"mouseenter\")],O);let b=class extends x{};s.MouseLeave=b,b.__name__=\"MouseLeave\",s.MouseLeave=b=n([_(\"mouseleave\")],b);let g=class extends x{};s.Tap=g,g.__name__=\"Tap\",s.Tap=g=n([_(\"tap\")],g);let E=class extends x{};s.DoubleTap=E,E.__name__=\"DoubleTap\",s.DoubleTap=E=n([_(\"doubletap\")],E);let M=class extends x{};s.Press=M,M.__name__=\"Press\",s.Press=M=n([_(\"press\")],M);let R=class extends x{};s.PressUp=R,R.__name__=\"PressUp\",s.PressUp=R=n([_(\"pressup\")],R);let f=class extends x{};s.PanStart=f,f.__name__=\"PanStart\",s.PanStart=f=n([_(\"panstart\")],f);let S=class extends x{};s.PanEnd=S,S.__name__=\"PanEnd\",s.PanEnd=S=n([_(\"panend\")],S);let D=class extends x{};s.PinchStart=D,D.__name__=\"PinchStart\",s.PinchStart=D=n([_(\"pinchstart\")],D);let k=class extends x{};s.PinchEnd=k,k.__name__=\"PinchEnd\",s.PinchEnd=k=n([_(\"pinchend\")],k);let L=class extends x{};s.RotateStart=L,L.__name__=\"RotateStart\",s.RotateStart=L=n([_(\"rotatestart\")],L);let C=class extends x{};s.RotateEnd=C,C.__name__=\"RotateEnd\",s.RotateEnd=C=n([_(\"rotateend\")],C)},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=t(1),i=n.__importDefault(t(297)),r=t(15),a=t(19),h=t(72),_=n.__importStar(t(313)),o=t(315),c=t(9),l=t(8),p=t(32),u=t(302);class d{constructor(t,e,s){this.plot_view=t,this.toolbar=e,this.hit_area=s,this.pan_start=new r.Signal(this,\"pan:start\"),this.pan=new r.Signal(this,\"pan\"),this.pan_end=new r.Signal(this,\"pan:end\"),this.pinch_start=new r.Signal(this,\"pinch:start\"),this.pinch=new r.Signal(this,\"pinch\"),this.pinch_end=new r.Signal(this,\"pinch:end\"),this.rotate_start=new r.Signal(this,\"rotate:start\"),this.rotate=new r.Signal(this,\"rotate\"),this.rotate_end=new r.Signal(this,\"rotate:end\"),this.tap=new r.Signal(this,\"tap\"),this.doubletap=new r.Signal(this,\"doubletap\"),this.press=new r.Signal(this,\"press\"),this.pressup=new r.Signal(this,\"pressup\"),this.move_enter=new r.Signal(this,\"move:enter\"),this.move=new r.Signal(this,\"move\"),this.move_exit=new r.Signal(this,\"move:exit\"),this.scroll=new r.Signal(this,\"scroll\"),this.keydown=new r.Signal(this,\"keydown\"),this.keyup=new r.Signal(this,\"keyup\"),this.hammer=new i.default(this.hit_area,{touchAction:\"auto\",inputClass:i.default.TouchMouseInput}),this._configure_hammerjs(),this.hit_area.addEventListener(\"mousemove\",t=>this._mouse_move(t)),this.hit_area.addEventListener(\"mouseenter\",t=>this._mouse_enter(t)),this.hit_area.addEventListener(\"mouseleave\",t=>this._mouse_exit(t)),this.hit_area.addEventListener(\"contextmenu\",t=>this._context_menu(t)),this.hit_area.addEventListener(\"wheel\",t=>this._mouse_wheel(t)),document.addEventListener(\"keydown\",this),document.addEventListener(\"keyup\",this),this.menu=new u.ContextMenu([],{prevent_hide:t=>2==t.button&&t.target==this.hit_area}),this.hit_area.appendChild(this.menu.el)}destroy(){this.menu.remove(),this.hammer.destroy(),document.removeEventListener(\"keydown\",this),document.removeEventListener(\"keyup\",this)}handleEvent(t){\"keydown\"==t.type?this._key_down(t):\"keyup\"==t.type&&this._key_up(t)}_configure_hammerjs(){this.hammer.get(\"doubletap\").recognizeWith(\"tap\"),this.hammer.get(\"tap\").requireFailure(\"doubletap\"),this.hammer.get(\"doubletap\").dropRequireFailure(\"tap\"),this.hammer.on(\"doubletap\",t=>this._doubletap(t)),this.hammer.on(\"tap\",t=>this._tap(t)),this.hammer.on(\"press\",t=>this._press(t)),this.hammer.on(\"pressup\",t=>this._pressup(t)),this.hammer.get(\"pan\").set({direction:i.default.DIRECTION_ALL}),this.hammer.on(\"panstart\",t=>this._pan_start(t)),this.hammer.on(\"pan\",t=>this._pan(t)),this.hammer.on(\"panend\",t=>this._pan_end(t)),this.hammer.get(\"pinch\").set({enable:!0}),this.hammer.on(\"pinchstart\",t=>this._pinch_start(t)),this.hammer.on(\"pinch\",t=>this._pinch(t)),this.hammer.on(\"pinchend\",t=>this._pinch_end(t)),this.hammer.get(\"rotate\").set({enable:!0}),this.hammer.on(\"rotatestart\",t=>this._rotate_start(t)),this.hammer.on(\"rotate\",t=>this._rotate(t)),this.hammer.on(\"rotateend\",t=>this._rotate_end(t))}register_tool(t){const e=t.model.event_type;null!=e&&(l.isString(e)?this._register_tool(t,e):e.forEach((e,s)=>this._register_tool(t,e,s<1)))}_register_tool(t,e,s=!0){const n=t,{id:i}=n.model,r=t=>e=>{e.id==i&&t(e.e)},h=t=>e=>{t(e.e)};switch(e){case\"pan\":null!=n._pan_start&&n.connect(this.pan_start,r(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,r(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,r(n._pan_end.bind(n)));break;case\"pinch\":null!=n._pinch_start&&n.connect(this.pinch_start,r(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,r(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,r(n._pinch_end.bind(n)));break;case\"rotate\":null!=n._rotate_start&&n.connect(this.rotate_start,r(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,r(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,r(n._rotate_end.bind(n)));break;case\"move\":null!=n._move_enter&&n.connect(this.move_enter,r(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,r(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,r(n._move_exit.bind(n)));break;case\"tap\":null!=n._tap&&n.connect(this.tap,r(n._tap.bind(n)));break;case\"press\":null!=n._press&&n.connect(this.press,r(n._press.bind(n))),null!=n._pressup&&n.connect(this.pressup,r(n._pressup.bind(n)));break;case\"scroll\":null!=n._scroll&&n.connect(this.scroll,r(n._scroll.bind(n)));break;default:throw new Error(\"unsupported event_type: \"+e)}s&&(null!=n._doubletap&&n.connect(this.doubletap,h(n._doubletap.bind(n))),null!=n._keydown&&n.connect(this.keydown,h(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,h(n._keyup.bind(n))),p.is_mobile&&null!=n._scroll&&\"pinch\"==e&&(a.logger.debug(\"Registering scroll on touch screen\"),n.connect(this.scroll,r(n._scroll.bind(n)))))}_hit_test_renderers(t,e){const s=this.plot_view.get_renderer_views();for(const n of c.reversed(s)){const{level:s}=n.model;if((\"annotation\"==s||\"overlay\"==s)&&null!=n.interactive_hit&&n.interactive_hit(t,e))return n}return null}_hit_test_frame(t,e){return this.plot_view.frame.bbox.contains(t,e)}_hit_test_canvas(t,e){return this.plot_view.layout.bbox.contains(t,e)}_trigger(t,e,s){const n=this.toolbar.gestures,i=t.name.split(\":\")[0],r=this._hit_test_renderers(e.sx,e.sy),a=this._hit_test_canvas(e.sx,e.sy);switch(i){case\"move\":{const s=n[i].active;null!=s&&this.trigger(t,e,s.id);const h=this.toolbar.inspectors.filter(t=>t.active);let _=\"default\";null!=r?(_=r.cursor(e.sx,e.sy)||_,c.is_empty(h)||(t=this.move_exit)):this._hit_test_frame(e.sx,e.sy)&&(c.is_empty(h)||(_=\"crosshair\")),this.plot_view.set_cursor(_),this.plot_view.set_toolbar_visibility(a),h.map(s=>this.trigger(t,e,s.id));break}case\"tap\":{const{target:a}=s;if(null!=a&&a!=this.hit_area)return;null!=r&&null!=r.on_hit&&r.on_hit(e.sx,e.sy);const h=n[i].active;null!=h&&this.trigger(t,e,h.id);break}case\"scroll\":{const i=n[p.is_mobile?\"pinch\":\"scroll\"].active;null!=i&&(s.preventDefault(),s.stopPropagation(),this.trigger(t,e,i.id));break}case\"pan\":{const r=n[i].active;null!=r&&(s.preventDefault(),this.trigger(t,e,r.id));break}default:{const s=n[i].active;null!=s&&this.trigger(t,e,s.id)}}this._trigger_bokeh_event(e)}trigger(t,e,s=null){t.emit({id:s,e})}_trigger_bokeh_event(t){const e=(()=>{const{sx:e,sy:s}=t,n=this.plot_view.frame.x_scale.invert(e),i=this.plot_view.frame.y_scale.invert(s);switch(t.type){case\"wheel\":return new _.MouseWheel(e,s,n,i,t.delta);case\"mousemove\":return new _.MouseMove(e,s,n,i);case\"mouseenter\":return new _.MouseEnter(e,s,n,i);case\"mouseleave\":return new _.MouseLeave(e,s,n,i);case\"tap\":return new _.Tap(e,s,n,i);case\"doubletap\":return new _.DoubleTap(e,s,n,i);case\"press\":return new _.Press(e,s,n,i);case\"pressup\":return new _.PressUp(e,s,n,i);case\"pan\":return new _.Pan(e,s,n,i,t.deltaX,t.deltaY);case\"panstart\":return new _.PanStart(e,s,n,i);case\"panend\":return new _.PanEnd(e,s,n,i);case\"pinch\":return new _.Pinch(e,s,n,i,t.scale);case\"pinchstart\":return new _.PinchStart(e,s,n,i);case\"pinchend\":return new _.PinchEnd(e,s,n,i);case\"rotate\":return new _.Rotate(e,s,n,i,t.rotation);case\"rotatestart\":return new _.RotateStart(e,s,n,i);case\"rotateend\":return new _.RotateEnd(e,s,n,i);default:return}})();null!=e&&this.plot_view.model.trigger_event(e)}_get_sxy(t){const{pageX:e,pageY:s}=function(t){return\"undefined\"!=typeof TouchEvent&&t instanceof TouchEvent}(t)?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t,{left:n,top:i}=h.offset(this.hit_area);return{sx:e-n,sy:s-i}}_pan_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{deltaX:t.deltaX,deltaY:t.deltaY,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_pinch_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{scale:t.scale,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_rotate_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{rotation:t.rotation,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_tap_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_move_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_scroll_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{delta:o.getDeltaY(t),shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_key_event(t){return{type:t.type,keyCode:t.keyCode}}_pan_start(t){const e=this._pan_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)}_pan(t){this._trigger(this.pan,this._pan_event(t),t.srcEvent)}_pan_end(t){this._trigger(this.pan_end,this._pan_event(t),t.srcEvent)}_pinch_start(t){this._trigger(this.pinch_start,this._pinch_event(t),t.srcEvent)}_pinch(t){this._trigger(this.pinch,this._pinch_event(t),t.srcEvent)}_pinch_end(t){this._trigger(this.pinch_end,this._pinch_event(t),t.srcEvent)}_rotate_start(t){this._trigger(this.rotate_start,this._rotate_event(t),t.srcEvent)}_rotate(t){this._trigger(this.rotate,this._rotate_event(t),t.srcEvent)}_rotate_end(t){this._trigger(this.rotate_end,this._rotate_event(t),t.srcEvent)}_tap(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)}_doubletap(t){const e=this._tap_event(t);this._trigger_bokeh_event(e),this.trigger(this.doubletap,e)}_press(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)}_pressup(t){this._trigger(this.pressup,this._tap_event(t),t.srcEvent)}_mouse_enter(t){this._trigger(this.move_enter,this._move_event(t),t)}_mouse_move(t){this._trigger(this.move,this._move_event(t),t)}_mouse_exit(t){this._trigger(this.move_exit,this._move_event(t),t)}_mouse_wheel(t){this._trigger(this.scroll,this._scroll_event(t),t)}_context_menu(t){!this.menu.is_open&&this.menu.can_open&&t.preventDefault();const{sx:e,sy:s}=this._get_sxy(t);this.menu.toggle({left:e,top:s})}_key_down(t){this.trigger(this.keydown,this._key_event(t))}_key_up(t){this.trigger(this.keyup,this._key_event(t))}}s.UIEvents=d,d.__name__=\"UIEvents\"},\n", + " function _(e,t,n){\n", + " /*!\n", + " * jQuery Mousewheel 3.1.13\n", + " *\n", + " * Copyright jQuery Foundation and other contributors\n", + " * Released under the MIT license\n", + " * http://jquery.org/license\n", + " */\n", + " function r(e){const t=getComputedStyle(e).fontSize;return null!=t?parseInt(t,10):null}Object.defineProperty(n,\"__esModule\",{value:!0}),n.getDeltaY=function(e){let t=-e.deltaY;if(e.target instanceof HTMLElement)switch(e.deltaMode){case e.DOM_DELTA_LINE:t*=r((n=e.target).offsetParent||document.body)||r(n)||16;break;case e.DOM_DELTA_PAGE:t*=function(e){return e.clientHeight}(e.target)}var n;return t}},\n", + " function _(n,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const t=(\"undefined\"!=typeof window?window.requestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.webkitRequestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.mozRequestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.msRequestAnimationFrame:void 0)||function(n){return n(Date.now()),-1};o.throttle=function(n,e){let o=null,i=0,u=!1;return function(){return new Promise((d,w)=>{const r=function(){i=Date.now(),o=null,u=!1;try{n(),d()}catch(n){w(n)}},a=Date.now(),f=e-(a-i);f<=0&&!u?(null!=o&&clearTimeout(o),u=!0,t(r)):o||u?d():o=setTimeout(()=>t(r),f)})}}},\n", + " function _(t,e,h){Object.defineProperty(h,\"__esModule\",{value:!0});const i=t(213),o=t(214),r=t(79);class s extends o.Layoutable{constructor(){super(...arguments),this.min_border={left:0,top:0,right:0,bottom:0}}_measure(t){t=new i.Sizeable(t).bounded_to(this.sizing.size);const e=this.left_panel.measure({width:0,height:t.height}),h=Math.max(e.width,this.min_border.left),o=this.right_panel.measure({width:0,height:t.height}),r=Math.max(o.width,this.min_border.right),s=this.top_panel.measure({width:t.width,height:0}),n=Math.max(s.height,this.min_border.top),a=this.bottom_panel.measure({width:t.width,height:0}),g=Math.max(a.height,this.min_border.bottom),_=new i.Sizeable(t).shrink_by({left:h,right:r,top:n,bottom:g}),m=this.center_panel.measure(_);return{width:h+m.width+r,height:n+m.height+g,inner:{left:h,right:r,top:n,bottom:g},align:(()=>{const{width_policy:t,height_policy:e}=this.center_panel.sizing;return\"fixed\"!=t&&\"fixed\"!=e})()}}_set_geometry(t,e){super._set_geometry(t,e),this.center_panel.set_geometry(e);const h=this.left_panel.measure({width:0,height:t.height}),i=this.right_panel.measure({width:0,height:t.height}),o=this.top_panel.measure({width:t.width,height:0}),s=this.bottom_panel.measure({width:t.width,height:0}),{left:n,top:a,right:g,bottom:_}=e;this.top_panel.set_geometry(new r.BBox({left:n,right:g,bottom:a,height:o.height})),this.bottom_panel.set_geometry(new r.BBox({left:n,right:g,top:_,height:s.height})),this.left_panel.set_geometry(new r.BBox({top:a,bottom:_,right:n,width:h.width})),this.right_panel.set_geometry(new r.BBox({top:a,bottom:_,left:g,width:i.width}))}}h.BorderLayout=s,s.__name__=\"BorderLayout\"},\n", + " function _(i,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const l=i(213),a=i(214),r=i(8),o=Math.PI/2,h=\"left\",s=\"center\",n={above:{parallel:0,normal:-o,horizontal:0,vertical:-o},below:{parallel:0,normal:o,horizontal:0,vertical:o},left:{parallel:-o,normal:0,horizontal:0,vertical:-o},right:{parallel:o,normal:0,horizontal:0,vertical:o}},d={above:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"alphabetic\",vertical:\"middle\"},below:{justified:\"bottom\",parallel:\"hanging\",normal:\"middle\",horizontal:\"hanging\",vertical:\"middle\"},left:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"middle\",vertical:\"alphabetic\"},right:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"middle\",vertical:\"alphabetic\"}},_={above:{justified:s,parallel:s,normal:h,horizontal:s,vertical:h},below:{justified:s,parallel:s,normal:h,horizontal:s,vertical:h},left:{justified:s,parallel:s,normal:\"right\",horizontal:\"right\",vertical:s},right:{justified:s,parallel:s,normal:h,horizontal:h,vertical:s}},c={above:\"right\",below:h,left:\"right\",right:h},m={above:h,below:\"right\",left:\"right\",right:h};class g extends a.ContentLayoutable{constructor(i,t){switch(super(),this.side=i,this.obj=t,this.side){case\"above\":this._dim=0,this._normals=[0,-1];break;case\"below\":this._dim=0,this._normals=[0,1];break;case\"left\":this._dim=1,this._normals=[-1,0];break;case\"right\":this._dim=1,this._normals=[1,0]}this.is_horizontal?this.set_sizing({width_policy:\"max\",height_policy:\"fixed\"}):this.set_sizing({width_policy:\"fixed\",height_policy:\"max\"})}_content_size(){return new l.Sizeable(this.get_oriented_size())}get_oriented_size(){const{width:i,height:t}=this.obj.get_size();return!this.obj.rotate||this.is_horizontal?{width:i,height:t}:{width:t,height:i}}has_size_changed(){const{width:i,height:t}=this.get_oriented_size();return this.is_horizontal?this.bbox.height!=t:this.bbox.width!=i}get dimension(){return this._dim}get normals(){return this._normals}get is_horizontal(){return 0==this._dim}get is_vertical(){return 1==this._dim}apply_label_text_heuristics(i,t){const e=this.side;let l,a;r.isString(t)?(l=d[e][t],a=_[e][t]):t<0?(l=\"middle\",a=c[e]):(l=\"middle\",a=m[e]),i.textBaseline=l,i.textAlign=a}get_label_angle_heuristic(i){return n[this.side][i]}}e.SidePanel=g,g.__name__=\"SidePanel\"},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(15),o=t(72),a=t(37),n=t(312),p=new i.Signal0({},\"gmaps_ready\");class l extends n.PlotView{initialize(){this.pause(),super.initialize(),this._tiles_loaded=!1,this.zoom_count=0;const{zoom:t,lat:e,lng:s}=this.model.map_options;if(this.initial_zoom=t,this.initial_lat=e,this.initial_lng=s,\"undefined\"==typeof google||null==google.maps){if(void 0===window._bokeh_gmaps_callback){!function(t){window._bokeh_gmaps_callback=()=>p.emit();const e=document.createElement(\"script\");e.type=\"text/javascript\",e.src=`https://maps.googleapis.com/maps/api/js?v=3.36&key=${t}&callback=_bokeh_gmaps_callback`,document.body.appendChild(e)}(atob(this.model.api_key))}p.connect(()=>this.request_render())}this.unpause()}remove(){o.remove(this.map_el),super.remove()}update_range(t){if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),super.update_range(null);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(t.sdx||0,t.sdy||0),super.update_range(t);else if(null!=t.factor){if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),super.update_range(t);const e=t.factor<0?-1:1,s=this.map.getZoom(),i=s+e;if(i>=2){this.map.setZoom(i);const[t,e,,]=this._get_projected_bounds();e-t<0&&this.map.setZoom(s)}this.unpause()}this._set_bokeh_ranges()}_build_map(){const{maps:t}=google;this.map_types={satellite:t.MapTypeId.SATELLITE,terrain:t.MapTypeId.TERRAIN,roadmap:t.MapTypeId.ROADMAP,hybrid:t.MapTypeId.HYBRID};const e=this.model.map_options,s={center:new t.LatLng(e.lat,e.lng),zoom:e.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[e.map_type],scaleControl:e.scale_control,tilt:e.tilt};null!=e.styles&&(s.styles=JSON.parse(e.styles)),this.map_el=o.div({style:{position:\"absolute\"}}),this.canvas_view.add_underlay(this.map_el),this.map=new t.Map(this.map_el,s),t.event.addListener(this.map,\"idle\",()=>this._set_bokeh_ranges()),t.event.addListener(this.map,\"bounds_changed\",()=>this._set_bokeh_ranges()),t.event.addListenerOnce(this.map,\"tilesloaded\",()=>this._render_finished()),this.connect(this.model.properties.map_options.change,()=>this._update_options()),this.connect(this.model.map_options.properties.styles.change,()=>this._update_styles()),this.connect(this.model.map_options.properties.lat.change,()=>this._update_center(\"lat\")),this.connect(this.model.map_options.properties.lng.change,()=>this._update_center(\"lng\")),this.connect(this.model.map_options.properties.zoom.change,()=>this._update_zoom()),this.connect(this.model.map_options.properties.map_type.change,()=>this._update_map_type()),this.connect(this.model.map_options.properties.scale_control.change,()=>this._update_scale_control()),this.connect(this.model.map_options.properties.tilt.change,()=>this._update_tilt())}_render_finished(){this._tiles_loaded=!0,this.notify_finished()}has_finished(){return super.has_finished()&&!0===this._tiles_loaded}_get_latlon_bounds(){const t=this.map.getBounds(),e=t.getNorthEast(),s=t.getSouthWest();return[s.lng(),e.lng(),s.lat(),e.lat()]}_get_projected_bounds(){const[t,e,s,i]=this._get_latlon_bounds(),[o,n]=a.wgs84_mercator.compute(t,s),[p,l]=a.wgs84_mercator.compute(e,i);return[o,p,n,l]}_set_bokeh_ranges(){const[t,e,s,i]=this._get_projected_bounds();this.frame.x_range.setv({start:t,end:e}),this.frame.y_range.setv({start:s,end:i})}_update_center(t){const e=this.map.getCenter().toJSON();e[t]=this.model.map_options[t],this.map.setCenter(e),this._set_bokeh_ranges()}_update_map_type(){this.map.setOptions({mapTypeId:this.map_types[this.model.map_options.map_type]})}_update_scale_control(){this.map.setOptions({scaleControl:this.model.map_options.scale_control})}_update_tilt(){this.map.setOptions({tilt:this.model.map_options.tilt})}_update_options(){this._update_styles(),this._update_center(\"lat\"),this._update_center(\"lng\"),this._update_zoom(),this._update_map_type()}_update_styles(){this.map.setOptions({styles:JSON.parse(this.model.map_options.styles)})}_update_zoom(){this.map.setOptions({zoom:this.model.map_options.zoom}),this._set_bokeh_ranges()}_map_hook(t,e){if(null==this.map&&\"undefined\"!=typeof google&&null!=google.maps&&this._build_map(),null!=this.map_el){const[t,s,i,o]=e;this.map_el.style.top=s+\"px\",this.map_el.style.left=t+\"px\",this.map_el.style.width=i+\"px\",this.map_el.style.height=o+\"px\"}}_paint_empty(t,e){const s=this.layout.bbox.width,i=this.layout.bbox.height,[o,a,n,p]=e;t.clearRect(0,0,s,i),t.beginPath(),t.moveTo(0,0),t.lineTo(0,i),t.lineTo(s,i),t.lineTo(s,0),t.lineTo(0,0),t.moveTo(o,a),t.lineTo(o+n,a),t.lineTo(o+n,a+p),t.lineTo(o,a+p),t.lineTo(o,a),t.closePath(),null!=this.model.border_fill_color&&(t.fillStyle=this.model.border_fill_color,t.fill())}}s.GMapPlotView=l,l.__name__=\"GMapPlotView\"},\n", + " function _(a,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});var g=a(211);n.DataRange=g.DataRange;var R=a(210);n.DataRange1d=R.DataRange1d;var r=a(98);n.FactorRange=r.FactorRange;var t=a(99);n.Range=t.Range;var d=a(158);n.Range1d=d.Range1d},\n", + " function _(e,r,d){Object.defineProperty(d,\"__esModule\",{value:!0});var n=e(90);d.GlyphRenderer=n.GlyphRenderer;var R=e(116);d.GraphRenderer=R.GraphRenderer;var a=e(178);d.GuideRenderer=a.GuideRenderer;var G=e(70);d.Renderer=G.Renderer},\n", + " function _(a,e,l){Object.defineProperty(l,\"__esModule\",{value:!0});var c=a(209);l.CategoricalScale=c.CategoricalScale;var r=a(146);l.ContinuousScale=r.ContinuousScale;var n=a(145);l.LinearScale=n.LinearScale;var o=a(156);l.LinearInterpolationScale=o.LinearInterpolationScale;var i=a(157);l.LogScale=i.LogScale;var S=a(147);l.Scale=S.Scale},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});e(1).__exportStar(e(118),o);var n=e(88);o.Selection=n.Selection},\n", + " function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});var o=a(325);r.ServerSentDataSource=o.ServerSentDataSource;var S=a(327);r.AjaxDataSource=S.AjaxDataSource;var u=a(85);r.ColumnDataSource=u.ColumnDataSource;var t=a(86);r.ColumnarDataSource=t.ColumnarDataSource;var c=a(114);r.CDSView=c.CDSView;var D=a(87);r.DataSource=D.DataSource;var v=a(328);r.GeoJSONDataSource=v.GeoJSONDataSource;var n=a(326);r.WebDataSource=n.WebDataSource},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const a=e(326);class s extends a.WebDataSource{constructor(e){super(e),this.initialized=!1}destroy(){super.destroy()}setup(){if(!this.initialized){this.initialized=!0;new EventSource(this.data_url).onmessage=e=>{this.load_data(JSON.parse(e.data),this.mode,this.max_size)}}}}i.ServerSentDataSource=s,s.__name__=\"ServerSentDataSource\"},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const r=e(1),s=e(85),i=r.__importStar(e(18));class n extends s.ColumnDataSource{constructor(e){super(e)}get_column(e){const t=this.data[e];return null!=t?t:[]}initialize(){super.initialize(),this.setup()}load_data(e,t,a){const{adapter:r}=this;let s;switch(s=null!=r?r.execute(this,{response:e}):e,t){case\"replace\":this.data=s;break;case\"append\":{const e=this.data;for(const t of this.columns()){const r=Array.from(e[t]),i=Array.from(s[t]);s[t]=r.concat(i).slice(-a)}this.data=s;break}}}static init_WebDataSource(){this.define({mode:[i.UpdateMode,\"replace\"],max_size:[i.Number],adapter:[i.Any,null],data_url:[i.String]})}}a.WebDataSource=n,n.__name__=\"WebDataSource\",n.init_WebDataSource()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),a=t(326),r=t(19),o=s.__importStar(t(18)),n=t(13);class d extends a.WebDataSource{constructor(t){super(t),this.initialized=!1}static init_AjaxDataSource(){this.define({polling_interval:[o.Number],content_type:[o.String,\"application/json\"],http_headers:[o.Any,{}],method:[o.HTTPMethod,\"POST\"],if_modified:[o.Boolean,!1]})}destroy(){null!=this.interval&&clearInterval(this.interval),super.destroy()}setup(){if(!this.initialized&&(this.initialized=!0,this.get_data(this.mode),this.polling_interval)){const t=()=>this.get_data(this.mode,this.max_size,this.if_modified);this.interval=setInterval(t,this.polling_interval)}}get_data(t,e=0,i=!1){const s=this.prepare_request();s.addEventListener(\"load\",()=>this.do_load(s,t,e)),s.addEventListener(\"error\",()=>this.do_error(s)),s.send()}prepare_request(){const t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\"Content-Type\",this.content_type);const e=this.http_headers;for(const[i,s]of n.entries(e))t.setRequestHeader(i,s);return t}do_load(t,e,i){if(200===t.status){const s=JSON.parse(t.responseText);this.load_data(s,e,i)}}do_error(t){r.logger.error(`Failed to fetch JSON from ${this.data_url} with code ${t.status}`)}}i.AjaxDataSource=d,d.__name__=\"AjaxDataSource\",d.init_AjaxDataSource()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(1),n=e(86),s=e(19),a=r.__importStar(e(18)),i=e(9),l=e(13);function c(e){return null!=e?e:NaN}class _ extends n.ColumnarDataSource{constructor(e){super(e)}static init_GeoJSONDataSource(){this.define({geojson:[a.Any]}),this.internal({data:[a.Any,{}]})}initialize(){super.initialize(),this._update_data()}connect_signals(){super.connect_signals(),this.connect(this.properties.geojson.change,()=>this._update_data())}_update_data(){this.data=this.geojson_to_column_data()}_get_new_list_array(e){return i.range(0,e).map(e=>[])}_get_new_nan_array(e){return i.range(0,e).map(e=>NaN)}_add_properties(e,t,o,r){var n;const s=null!==(n=e.properties)&&void 0!==n?n:{};for(const[e,n]of l.entries(s))t.hasOwnProperty(e)||(t[e]=this._get_new_nan_array(r)),t[e][o]=c(n)}_add_geometry(e,t,o){function r(e,t){return e.concat([[NaN,NaN,NaN]]).concat(t)}switch(e.type){case\"Point\":{const[r,n,s]=e.coordinates;t.x[o]=r,t.y[o]=n,t.z[o]=c(s);break}case\"LineString\":{const{coordinates:r}=e;for(let e=0;e1&&s.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\");const r=e.coordinates[0];for(let e=0;e1&&s.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\"),n.push(t[0]);const a=n.reduce(r);for(let e=0;ethis.get_resolution(t))}_computed_initial_resolution(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size}is_valid_tile(t,e,i){return!(!this.wrap_around&&(t<0||t>=2**i))&&!(e<0||e>=2**i)}parent_by_tile_xyz(t,e,i){const _=this.tile_xyz_to_quadkey(t,e,i),s=_.substring(0,_.length-1);return this.quadkey_to_tile_xyz(s)}get_resolution(t){return this._computed_initial_resolution()/2**t}get_resolution_by_extent(t,e,i){return[(t[2]-t[0])/i,(t[3]-t[1])/e]}get_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s);let o=0;for(const t of this._resolutions){if(r>t){if(0==o)return 0;if(o>0)return o-1}o+=1}return o-1}get_closest_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s),o=this._resolutions.reduce((function(t,e){return Math.abs(e-r)e?(u=o-s,a*=t):(u*=e,a=n-r)}const h=(u-(o-s))/2,c=(a-(n-r))/2;return[s-h,r-c,o+h,n+c]}tms_to_wmts(t,e,i){return[t,2**i-1-e,i]}wmts_to_tms(t,e,i){return[t,2**i-1-e,i]}pixels_to_meters(t,e,i){const _=this.get_resolution(i);return[t*_-this.x_origin_offset,e*_-this.y_origin_offset]}meters_to_pixels(t,e,i){const _=this.get_resolution(i);return[(t+this.x_origin_offset)/_,(e+this.y_origin_offset)/_]}pixels_to_tile(t,e){let i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;return[i,Math.max(Math.ceil(e/this.tile_size)-1,0)]}pixels_to_raster(t,e,i){return[t,(this.tile_size<=l;t--)for(let i=n;i<=u;i++)this.is_valid_tile(i,t,e)&&h.push([i,t,e,this.get_tile_meter_bounds(i,t,e)]);return this.sort_tiles_from_center(h,[n,l,u,a]),h}quadkey_to_tile_xyz(t){let e=0,i=0;const _=t.length;for(let s=_;s>0;s--){const r=1<0;s--){const i=1<0;)if(s=s.substring(0,s.length-1),[t,e,i]=this.quadkey_to_tile_xyz(s),[t,e,i]=this.denormalize_xyz(t,e,i,_),this.tiles.has(this.tile_xyz_to_key(t,e,i)))return[t,e,i];return[0,0,0]}normalize_xyz(t,e,i){if(this.wrap_around){const _=2**i;return[(t%_+_)%_,e,i]}return[t,e,i]}denormalize_xyz(t,e,i,_){return[t+_*2**i,e,i]}denormalize_meters(t,e,i,_){return[t+2*_*Math.PI*6378137,e]}calculate_world_x_by_tile_xyz(t,e,i){return Math.floor(t/2**i)}}i.MercatorTileSource=l,l.__name__=\"MercatorTileSource\",l.init_MercatorTileSource()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1),n=e(81),s=e(13),l=i.__importStar(e(18));class a extends n.Model{constructor(e){super(e)}static init_TileSource(){this.define({url:[l.String,\"\"],tile_size:[l.Number,256],max_zoom:[l.Number,30],min_zoom:[l.Number,0],extra_url_vars:[l.Any,{}],attribution:[l.String,\"\"],x_origin_offset:[l.Number],y_origin_offset:[l.Number],initial_resolution:[l.Number]})}initialize(){super.initialize(),this.tiles=new Map,this._normalize_case()}connect_signals(){super.connect_signals(),this.connect(this.change,()=>this._clear_cache())}string_lookup_replace(e,t){let r=e;for(const[e,i]of s.entries(t))r=r.replace(`{${e}}`,i);return r}_normalize_case(){const e=this.url.replace(\"{x}\",\"{X}\").replace(\"{y}\",\"{Y}\").replace(\"{z}\",\"{Z}\").replace(\"{q}\",\"{Q}\").replace(\"{xmin}\",\"{XMIN}\").replace(\"{ymin}\",\"{YMIN}\").replace(\"{xmax}\",\"{XMAX}\").replace(\"{ymax}\",\"{YMAX}\");this.url=e}_clear_cache(){this.tiles=new Map}tile_xyz_to_key(e,t,r){return`${e}:${t}:${r}`}key_to_tile_xyz(e){const[t,r,i]=e.split(\":\").map(e=>parseInt(e));return[t,r,i]}sort_tiles_from_center(e,t){const[r,i,n,s]=t,l=(n-r)/2+r,a=(s-i)/2+i;e.sort((function(e,t){return Math.sqrt((l-e[0])**2+(a-e[1])**2)-Math.sqrt((l-t[0])**2+(a-t[1])**2)}))}get_image_url(e,t,r){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",t.toString()).replace(\"{Z}\",r.toString())}}r.TileSource=a,a.__name__=\"TileSource\",a.init_TileSource()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const n=e(37);function o(e,t){return n.wgs84_mercator.compute(e,t)}function c(e,t){return n.wgs84_mercator.invert(e,t)}r.geographic_to_meters=o,r.meters_to_geographic=c,r.geographic_extent_to_meters=function(e){const[t,r,n,c]=e,[_,u]=o(t,r),[i,g]=o(n,c);return[_,u,i,g]},r.meters_extent_to_geographic=function(e){const[t,r,n,o]=e,[_,u]=c(t,r),[i,g]=c(n,o);return[_,u,i,g]}},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const _=e(333);class s extends _.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const _=this.string_lookup_replace(this.url,this.extra_url_vars),[s,o,u]=this.tms_to_wmts(e,t,r),c=this.tile_xyz_to_quadkey(s,o,u);return _.replace(\"{Q}\",c)}}r.QUADKEYTileSource=s,s.__name__=\"QUADKEYTileSource\"},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),_=t(338),n=t(91),a=t(158),r=t(72),o=s.__importStar(t(18)),h=t(251),l=t(9),d=t(8),m=t(89),c=t(85),g=t(339),p=s.__importDefault(t(340));class u extends n.DataRendererView{initialize(){this._tiles=[],super.initialize()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.request_render()),this.connect(this.model.tile_source.change,()=>this.request_render())}styles(){return[...super.styles(),p.default]}get_extent(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]}get map_plot(){return this.plot_model}get map_canvas(){return this.layer.ctx}get map_frame(){return this.plot_view.frame}get x_range(){return this.map_plot.x_range}get y_range(){return this.map_plot.y_range}_set_data(){this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0}_update_attribution(){null!=this.attribution_el&&r.removeElement(this.attribution_el);const{attribution:t}=this.model.tile_source;if(d.isString(t)&&t.length>0){const{layout:e,frame:i}=this.plot_view,s=e.bbox.width-i.bbox.right,_=e.bbox.height-i.bbox.bottom,n=i.bbox.width;this.attribution_el=r.div({class:g.bk_tile_attribution,style:{position:\"absolute\",right:s+\"px\",bottom:_+\"px\",\"max-width\":n-4+\"px\",padding:\"2px\",\"background-color\":\"rgba(255,255,255,0.5)\",\"font-size\":\"9px\",\"line-height\":\"1.05\",\"white-space\":\"nowrap\",overflow:\"hidden\",\"text-overflow\":\"ellipsis\"}}),this.plot_view.canvas_view.add_event(this.attribution_el),this.attribution_el.innerHTML=t,this.attribution_el.title=this.attribution_el.textContent.replace(/\\s*\\n\\s*/g,\" \")}}_map_data(){this.initial_extent=this.get_extent();const t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof a.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof a.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._update_attribution()}_create_tile(t,e,i,s,_=!1){const[n,a,r]=this.model.tile_source.normalize_xyz(t,e,i),o={img:void 0,tile_coords:[t,e,i],normalized_coords:[n,a,r],quadkey:this.model.tile_source.tile_xyz_to_quadkey(t,e,i),cache_key:this.model.tile_source.tile_xyz_to_key(t,e,i),bounds:s,loaded:!1,finished:!1,x_coord:s[0],y_coord:s[3]},l=this.model.tile_source.get_image_url(n,a,r);new h.ImageLoader(l,{loaded:t=>{Object.assign(o,{img:t,loaded:!0}),_?(o.finished=!0,this.notify_finished()):this.request_render()},failed(){o.finished=!0}}),this.model.tile_source.tiles.set(o.cache_key,o),this._tiles.push(o)}_enforce_aspect_ratio(){if(this._last_height!==this.map_frame.bbox.height||this._last_width!==this.map_frame.bbox.width){const t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame.bbox.height,this.map_frame.bbox.width),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame.bbox.height,this.map_frame.bbox.width,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame.bbox.height,this._last_width=this.map_frame.bbox.width}}has_finished(){if(!super.has_finished())return!1;if(0===this._tiles.length)return!1;for(const t of this._tiles)if(!t.finished)return!1;return!0}_render(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()}_draw_tile(t){const e=this.model.tile_source.tiles.get(t);if(null!=e&&e.loaded){const[[t],[i]]=this.coordinates.map_to_screen([e.bounds[0]],[e.bounds[3]]),[[s],[_]]=this.coordinates.map_to_screen([e.bounds[2]],[e.bounds[1]]),n=s-t,a=_-i,r=t,o=i,h=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,r,o,n,a),this.map_canvas.setImageSmoothingEnabled(h),e.finished=!0}}_set_rect(){const t=this.plot_model.properties.outline_line_width.value(),e=this.map_frame.bbox.left+t/2,i=this.map_frame.bbox.top+t/2,s=this.map_frame.bbox.width-t,_=this.map_frame.bbox.height-t;this.map_canvas.rect(e,i,s,_),this.map_canvas.clip()}_render_tiles(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(const e of t)this._draw_tile(e);this.map_canvas.restore()}_prefetch_tiles(){const{tile_source:t}=this.model,e=this.get_extent(),i=this.map_frame.bbox.height,s=this.map_frame.bbox.width,_=this.model.tile_source.get_level_by_extent(e,i,s),n=this.model.tile_source.get_tiles_by_extent(e,_);for(let e=0,i=Math.min(10,n.length);ei&&(s=this.extent,r=i,o=!0),o&&(this.x_range.setv({x_range:{start:s[0],end:s[2]}}),this.y_range.setv({start:s[1],end:s[3]})),this.extent=s;const h=t.get_tiles_by_extent(s,r),d=[],m=[],c=[],g=[];for(const e of h){const[i,s,n]=e,a=t.tile_xyz_to_key(i,s,n),r=t.tiles.get(a);if(null!=r&&r.loaded)m.push(a);else if(this.model.render_parents){const[e,a,r]=t.get_closest_parent_by_tile_xyz(i,s,n),o=t.tile_xyz_to_key(e,a,r),h=t.tiles.get(o);if(null!=h&&h.loaded&&!l.includes(c,o)&&c.push(o),_){const e=t.children_by_tile_xyz(i,s,n);for(const[i,s,_]of e){const e=t.tile_xyz_to_key(i,s,_);t.tiles.has(e)&&g.push(e)}}}null==r&&d.push(e)}this._render_tiles(c),this._render_tiles(g),this._render_tiles(m),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout(()=>this._fetch_tiles(d),65)}}i.TileRendererView=u,u.__name__=\"TileRendererView\";class b extends n.DataRenderer{constructor(t){super(t),this._selection_manager=new m.SelectionManager({source:new c.ColumnDataSource})}static init_TileRenderer(){this.prototype.default_view=u,this.define({alpha:[o.Number,1],smoothing:[o.Boolean,!0],tile_source:[o.Instance,()=>new _.WMTSTileSource],render_parents:[o.Boolean,!0]})}get_selection_manager(){return this._selection_manager}}i.TileRenderer=b,b.__name__=\"TileRenderer\",b.init_TileRenderer()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const o=e(333);class s extends o.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const o=this.string_lookup_replace(this.url,this.extra_url_vars),[s,c,_]=this.tms_to_wmts(e,t,r);return o.replace(\"{X}\",s.toString()).replace(\"{Y}\",c.toString()).replace(\"{Z}\",_.toString())}}r.WMTSTileSource=s,s.__name__=\"WMTSTileSource\"},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0}),i.bk_tile_attribution=\"bk-tile-attribution\"},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});n.default=\"\\n.bk-root .bk-tile-attribution a {\\n color: black;\\n}\\n\"},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(333);class c extends o.MercatorTileSource{constructor(e){super(e)}get_image_url(e,r,t){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",r.toString()).replace(\"{Z}\",t.toString())}}t.TMSTileSource=c,c.__name__=\"TMSTileSource\"},\n", + " function _(e,r,a){Object.defineProperty(a,\"__esModule\",{value:!0});var t=e(343);a.CanvasTexture=t.CanvasTexture;var u=e(345);a.ImageURLTexture=u.ImageURLTexture;var v=e(344);a.Texture=v.Texture},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=t(1),c=t(344),s=r.__importStar(t(18)),i=t(29);class a extends c.Texture{constructor(t){super(t)}static init_CanvasTexture(){this.define({code:[s.String]})}get func(){const t=i.use_strict(this.code);return new Function(\"ctx\",\"color\",\"scale\",\"weight\",t)}get_pattern(t,e,n){return r=>{const c=document.createElement(\"canvas\");c.width=e,c.height=e;const s=c.getContext(\"2d\");return this.func.call(this,s,t,e,n),r.createPattern(c,this.repetition)}}}n.CanvasTexture=a,a.__name__=\"CanvasTexture\",a.init_CanvasTexture()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1),n=e(81),o=r.__importStar(e(18));class _ extends n.Model{constructor(e){super(e)}static init_Texture(){this.define({repetition:[o.TextureRepetition,\"repeat\"]})}onload(e){e()}}i.Texture=_,_.__name__=\"Texture\",_.init_Texture()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1),a=e(344),n=r.__importStar(e(18)),s=e(251);class o extends a.Texture{constructor(e){super(e)}static init_ImageURLTexture(){this.define({url:[n.String]})}initialize(){super.initialize(),this._loader=new s.ImageLoader(this.url)}get_pattern(e,t,i){return e=>this._loader.finished?e.createPattern(this._loader.image,this.repetition):null}onload(e){this._loader.promise.then(()=>e())}}i.ImageURLTexture=o,o.__name__=\"ImageURLTexture\",o.init_ImageURLTexture()},\n", + " function _(o,l,T){Object.defineProperty(T,\"__esModule\",{value:!0});var a=o(307);T.ActionTool=a.ActionTool;var r=o(347);T.CustomAction=r.CustomAction;var e=o(308);T.HelpTool=e.HelpTool;var v=o(348);T.RedoTool=v.RedoTool;var t=o(349);T.ResetTool=t.ResetTool;var n=o(350);T.SaveTool=n.SaveTool;var s=o(351);T.UndoTool=s.UndoTool;var i=o(352);T.ZoomInTool=i.ZoomInTool;var P=o(355);T.ZoomOutTool=P.ZoomOutTool;var c=o(296);T.ButtonTool=c.ButtonTool;var d=o(356);T.EditTool=d.EditTool;var u=o(357);T.BoxEditTool=u.BoxEditTool;var y=o(358);T.FreehandDrawTool=y.FreehandDrawTool;var m=o(359);T.PointDrawTool=m.PointDrawTool;var x=o(360);T.PolyDrawTool=x.PolyDrawTool;var B=o(361);T.PolyTool=B.PolyTool;var S=o(362);T.PolyEditTool=S.PolyEditTool;var b=o(363);T.BoxSelectTool=b.BoxSelectTool;var h=o(366);T.BoxZoomTool=h.BoxZoomTool;var E=o(306);T.GestureTool=E.GestureTool;var Z=o(367);T.LassoSelectTool=Z.LassoSelectTool;var p=o(369);T.LineEditTool=p.LineEditTool;var w=o(371);T.PanTool=w.PanTool;var C=o(368);T.PolySelectTool=C.PolySelectTool;var D=o(372);T.RangeTool=D.RangeTool;var H=o(364);T.SelectTool=H.SelectTool;var R=o(373);T.TapTool=R.TapTool;var A=o(374);T.WheelPanTool=A.WheelPanTool;var I=o(375);T.WheelZoomTool=I.WheelZoomTool;var L=o(376);T.CrosshairTool=L.CrosshairTool;var W=o(377);T.CustomJSHover=W.CustomJSHover;var O=o(378);T.HoverTool=O.HoverTool;var _=o(295);T.InspectTool=_.InspectTool;var f=o(298);T.Tool=f.Tool;var g=o(379);T.ToolProxy=g.ToolProxy;var F=o(294);T.Toolbar=F.Toolbar;var G=o(305);T.ToolbarBase=G.ToolbarBase;var J=o(380);T.ProxyToolbar=J.ProxyToolbar;var U=o(380);T.ToolbarBox=U.ToolbarBox},\n", + " function _(t,o,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),s=t(307),e=n.__importStar(t(18)),c=t(299);class _ extends s.ActionToolButtonView{css_classes(){return super.css_classes().concat(c.bk_toolbar_button_custom_action)}}i.CustomActionButtonView=_,_.__name__=\"CustomActionButtonView\";class l extends s.ActionToolView{doit(){null!=this.model.callback&&this.model.callback.execute(this.model)}}i.CustomActionView=l,l.__name__=\"CustomActionView\";class u extends s.ActionTool{constructor(t){super(t),this.tool_name=\"Custom Action\",this.button_view=_}static init_CustomAction(){this.prototype.default_view=l,this.define({action_tooltip:[e.String,\"Perform a Custom Action\"],callback:[e.Any],icon:[e.String]})}get tooltip(){return this.action_tooltip}}i.CustomAction=u,u.__name__=\"CustomAction\",u.init_CustomAction()},\n", + " function _(o,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=o(307),s=o(309);class n extends i.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state_changed,()=>this.model.disabled=!this.plot_view.can_redo())}doit(){this.plot_view.redo()}}t.RedoToolView=n,n.__name__=\"RedoToolView\";class _ extends i.ActionTool{constructor(o){super(o),this.tool_name=\"Redo\",this.icon=s.bk_tool_icon_redo}static init_RedoTool(){this.prototype.default_view=n,this.override({disabled:!0}),this.register_alias(\"redo\",()=>new _)}}t.RedoTool=_,_.__name__=\"RedoTool\",_.init_RedoTool()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(307),i=e(309);class _ extends s.ActionToolView{doit(){this.plot_view.reset()}}o.ResetToolView=_,_.__name__=\"ResetToolView\";class l extends s.ActionTool{constructor(e){super(e),this.tool_name=\"Reset\",this.icon=i.bk_tool_icon_reset}static init_ResetTool(){this.prototype.default_view=_,this.register_alias(\"reset\",()=>new l)}}o.ResetTool=l,l.__name__=\"ResetTool\",l.init_ResetTool()},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const a=e(307),i=e(309);class n extends a.ActionToolView{async copy(){const e=await this.plot_view.to_blob(),o=new ClipboardItem({[e.type]:e});await navigator.clipboard.write([o])}async save(e){const o=await this.plot_view.to_blob(),t=document.createElement(\"a\");t.href=URL.createObjectURL(o),t.download=e,t.target=\"_blank\",t.dispatchEvent(new MouseEvent(\"click\"))}doit(e=\"save\"){switch(e){case\"save\":this.save(\"bokeh_plot\");break;case\"copy\":this.copy()}}}t.SaveToolView=n,n.__name__=\"SaveToolView\";class s extends a.ActionTool{constructor(e){super(e),this.tool_name=\"Save\",this.icon=i.bk_tool_icon_save}static init_SaveTool(){this.prototype.default_view=n,this.register_alias(\"save\",()=>new s)}get menu(){return[{icon:\"bk-tool-icon-copy-to-clipboard\",tooltip:\"Copy image to clipboard\",if:()=>\"undefined\"!=typeof ClipboardItem,handler:()=>{this.do.emit(\"copy\")}}]}}t.SaveTool=s,s.__name__=\"SaveTool\",s.init_SaveTool()},\n", + " function _(o,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=o(307),i=o(309);class s extends n.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state_changed,()=>this.model.disabled=!this.plot_view.can_undo())}doit(){this.plot_view.undo()}}e.UndoToolView=s,s.__name__=\"UndoToolView\";class _ extends n.ActionTool{constructor(o){super(o),this.tool_name=\"Undo\",this.icon=i.bk_tool_icon_undo}static init_UndoTool(){this.prototype.default_view=s,this.override({disabled:!0}),this.register_alias(\"undo\",()=>new _)}}e.UndoTool=_,_.__name__=\"UndoTool\",_.init_UndoTool()},\n", + " function _(o,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=o(353),s=o(309);class t extends n.ZoomBaseTool{constructor(o){super(o),this.sign=1,this.tool_name=\"Zoom In\",this.icon=s.bk_tool_icon_zoom_in}static init_ZoomInTool(){this.prototype.default_view=n.ZoomBaseToolView,this.register_alias(\"zoom_in\",()=>new t({dimensions:\"both\"})),this.register_alias(\"xzoom_in\",()=>new t({dimensions:\"width\"})),this.register_alias(\"yzoom_in\",()=>new t({dimensions:\"height\"}))}}e.ZoomInTool=t,t.__name__=\"ZoomInTool\",t.init_ZoomInTool()},\n", + " function _(o,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=o(1),s=o(307),n=o(354),_=i.__importStar(o(18));class l extends s.ActionToolView{doit(){const o=this.plot_view.frame,t=this.model.dimensions,e=\"width\"==t||\"both\"==t,i=\"height\"==t||\"both\"==t,s=n.scale_range(o,this.model.sign*this.model.factor,e,i);this.plot_view.push_state(\"zoom_out\",{range:s}),this.plot_view.update_range(s,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model)}}e.ZoomBaseToolView=l,l.__name__=\"ZoomBaseToolView\";class a extends s.ActionTool{constructor(o){super(o)}static init_ZoomBaseTool(){this.prototype.default_view=l,this.define({factor:[_.Percent,.1],dimensions:[_.Dimensions,\"both\"]})}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}e.ZoomBaseTool=a,a.__name__=\"ZoomBaseTool\",a.init_ZoomBaseTool()},\n", + " function _(n,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=n(10);function r(n,e,t){const[o,r]=[n.start,n.end],s=null!=t?t:(r+o)/2;return[o-(o-s)*e,r-(r-s)*e]}function s(n,[e,t]){const o=new Map;for(const[r,s]of n){const[n,c]=s.r_invert(e,t);o.set(r,{start:n,end:c})}return o}t.scale_highlow=r,t.get_info=s,t.scale_range=function(n,e,t=!0,c=!0,l){e=o.clamp(e,-.9,.9);const a=t?e:0,[u,_]=r(n.bbox.h_range,a,null!=l?l.x:void 0),i=s(n.x_scales,[u,_]),f=c?e:0,[d,b]=r(n.bbox.v_range,f,null!=l?l.y:void 0);return{xrs:i,yrs:s(n.y_scales,[d,b]),factor:e}}},\n", + " function _(o,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=o(353),s=o(309);class n extends e.ZoomBaseTool{constructor(o){super(o),this.sign=-1,this.tool_name=\"Zoom Out\",this.icon=s.bk_tool_icon_zoom_out}static init_ZoomOutTool(){this.prototype.default_view=e.ZoomBaseToolView,this.register_alias(\"zoom_out\",()=>new n({dimensions:\"both\"})),this.register_alias(\"xzoom_out\",()=>new n({dimensions:\"width\"})),this.register_alias(\"yzoom_out\",()=>new n({dimensions:\"height\"}))}}i.ZoomOutTool=n,n.__name__=\"ZoomOutTool\",n.init_ZoomOutTool()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(1).__importStar(e(18)),i=e(9),n=e(8),r=e(11),_=e(306);class c extends _.GestureToolView{constructor(){super(...arguments),this._mouse_in_frame=!0}_select_mode(e){const{shiftKey:t,ctrlKey:o}=e;return t||o?t&&!o?\"append\":!t&&o?\"intersect\":t&&o?\"subtract\":void r.unreachable():\"replace\"}_move_enter(e){this._mouse_in_frame=!0}_move_exit(e){this._mouse_in_frame=!1}_map_drag(e,t,o){if(!this.plot_view.frame.bbox.contains(e,t))return null;const s=this.plot_view.renderer_views.get(o);return[s.coordinates.x_scale.invert(e),s.coordinates.y_scale.invert(t)]}_delete_selected(e){const t=e.data_source,o=t.selected.indices;o.sort();for(const e of t.columns()){const s=t.get_array(e);for(let e=0;ethis._show_vertices())}this._initialized=!0}}deactivate(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()}}s.PolyDrawToolView=d,d.__name__=\"PolyDrawToolView\";class l extends n.PolyTool{constructor(e){super(e),this.tool_name=\"Polygon Draw Tool\",this.icon=_.bk_tool_icon_poly_draw,this.event_type=[\"pan\",\"tap\",\"move\"],this.default_order=3}static init_PolyDrawTool(){this.prototype.default_view=d,this.define({drag:[a.Boolean,!0],num_objects:[a.Int,0]})}}s.PolyDrawTool=l,l.__name__=\"PolyDrawTool\",l.init_PolyDrawTool()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const o=e(1).__importStar(e(18)),i=e(8),s=e(356);class _ extends s.EditToolView{_set_vertices(e,t){const r=this.model.vertex_renderer.glyph,o=this.model.vertex_renderer.data_source,[s,_]=[r.x.field,r.y.field];s&&(i.isArray(e)?o.data[s]=e:r.x={value:e}),_&&(i.isArray(t)?o.data[_]=t:r.y={value:t}),this._emit_cds_changes(o,!0,!0,!1)}_hide_vertices(){this._set_vertices([],[])}_snap_to_vertex(e,t,r){if(this.model.vertex_renderer){const o=this._select_event(e,\"replace\",[this.model.vertex_renderer]),i=this.model.vertex_renderer.data_source,s=this.model.vertex_renderer.glyph,[_,l]=[s.x.field,s.y.field];if(o.length){const e=i.selected.indices[0];_&&(t=i.data[_][e]),l&&(r=i.data[l][e]),i.selection_manager.clear()}}return[t,r]}}r.PolyToolView=_,_.__name__=\"PolyToolView\";class l extends s.EditTool{constructor(e){super(e)}static init_PolyTool(){this.prototype.default_view=_,this.define({vertex_renderer:[o.Instance]})}}r.PolyTool=l,l.__name__=\"PolyTool\",l.init_PolyTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const r=e(72),i=e(8),_=e(361),d=e(309);class n extends _.PolyToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(e){if(!this.model.active)return;const t=this._map_drag(e.sx,e.sy,this.model.vertex_renderer);if(null==t)return;const[s,r]=t,i=this._select_event(e,\"replace\",[this.model.vertex_renderer]),_=this.model.vertex_renderer.data_source,d=this.model.vertex_renderer.glyph,[n,l]=[d.x.field,d.y.field];if(i.length&&null!=this._selected_renderer){const e=_.selected.indices[0];this._drawing?(this._drawing=!1,_.selection_manager.clear()):(_.selected.indices=[e+1],n&&_.get_array(n).splice(e+1,0,s),l&&_.get_array(l).splice(e+1,0,r),this._drawing=!0),_.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(e)}_show_vertices(e){if(!this.model.active)return;const t=this._select_event(e,\"replace\",this.model.renderers);if(!t.length)return this._set_vertices([],[]),this._selected_renderer=null,void(this._drawing=!1);const s=t[0],r=s.glyph,_=s.data_source,d=_.selected.indices[0],[n,l]=[r.xs.field,r.ys.field];let a,c;n?(a=_.data[n][d],i.isArray(a)||(_.data[n][d]=a=Array.from(a))):a=r.xs.value,l?(c=_.data[l][d],i.isArray(c)||(_.data[l][d]=c=Array.from(c))):c=r.ys.value,this._selected_renderer=s,this._set_vertices(a,c)}_move(e){if(this._drawing&&null!=this._selected_renderer){const t=this.model.vertex_renderer,s=t.data_source,r=t.glyph,i=this._map_drag(e.sx,e.sy,t);if(null==i)return;let[_,d]=i;const n=s.selected.indices;[_,d]=this._snap_to_vertex(e,_,d),s.selected.indices=n;const[l,a]=[r.x.field,r.y.field],c=n[0];l&&(s.data[l][c]=_),a&&(s.data[a][c]=d),s.change.emit(),this._selected_renderer.data_source.change.emit()}}_tap(e){const t=this.model.vertex_renderer,s=this._map_drag(e.sx,e.sy,t);if(null==s)return;if(this._drawing&&this._selected_renderer){let[r,i]=s;const _=t.data_source,d=t.glyph,[n,l]=[d.x.field,d.y.field],a=_.selected.indices;[r,i]=this._snap_to_vertex(e,r,i);const c=a[0];if(_.selected.indices=[c+1],n){const e=_.get_array(n),t=e[c];e[c]=r,e.splice(c+1,0,t)}if(l){const e=_.get_array(l),t=e[c];e[c]=i,e.splice(c+1,0,t)}return _.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}const r=this._select_mode(e);this._select_event(e,r,[t]),this._select_event(e,r,this.model.renderers)}_remove_vertex(){if(!this._drawing||!this._selected_renderer)return;const e=this.model.vertex_renderer,t=e.data_source,s=e.glyph,r=t.selected.indices[0],[i,_]=[s.x.field,s.y.field];i&&t.get_array(i).splice(r,1),_&&t.get_array(_).splice(r,1),t.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}_pan_start(e){this._select_event(e,\"append\",[this.model.vertex_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}_keyup(e){if(!this.model.active||!this._mouse_in_frame)return;let t;t=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(const s of t)e.keyCode===r.Keys.Backspace?(this._delete_selected(s),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):e.keyCode==r.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),s.data_source.selection_manager.clear())}deactivate(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())}}s.PolyEditToolView=n,n.__name__=\"PolyEditToolView\";class l extends _.PolyTool{constructor(e){super(e),this.tool_name=\"Poly Edit Tool\",this.icon=d.bk_tool_icon_poly_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}static init_PolyEditTool(){this.prototype.default_view=n}}s.PolyEditTool=l,l.__name__=\"PolyEditTool\",l.init_PolyEditTool()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(1),i=e(364),l=e(124),_=s.__importStar(e(18)),n=e(309);class c extends i.SelectToolView{_compute_limits(e){const t=this.plot_view.frame,o=this.model.dimensions;let s=this._base_point;if(\"center\"==this.model.origin){const[t,o]=s,[i,l]=e;s=[t-(i-t),o-(l-o)]}return this.model._get_dim_limits(s,e,t,o)}_pan_start(e){const{sx:t,sy:o}=e;this._base_point=[t,o]}_pan(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this.model.overlay.update({left:i[0],right:i[1],top:l[0],bottom:l[1]}),this.model.select_every_mousemove&&this._do_select(i,l,!1,this._select_mode(e))}_pan_end(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this._do_select(i,l,!0,this._select_mode(e)),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.push_state(\"box_select\",{selection:this.plot_view.get_selection()})}_do_select([e,t],[o,s],i,l=\"replace\"){const _={type:\"rect\",sx0:e,sx1:t,sy0:o,sy1:s};this._select(_,i,l)}}o.BoxSelectToolView=c,c.__name__=\"BoxSelectToolView\";const r=()=>new l.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class h extends i.SelectTool{constructor(e){super(e),this.tool_name=\"Box Select\",this.icon=n.bk_tool_icon_box_select,this.event_type=\"pan\",this.default_order=30}static init_BoxSelectTool(){this.prototype.default_view=c,this.define({dimensions:[_.Dimensions,\"both\"],select_every_mousemove:[_.Boolean,!1],overlay:[_.Instance,r],origin:[_.BoxOrigin,\"corner\"]}),this.register_alias(\"box_select\",()=>new h),this.register_alias(\"xbox_select\",()=>new h({dimensions:\"width\"})),this.register_alias(\"ybox_select\",()=>new h({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}o.BoxSelectTool=h,h.__name__=\"BoxSelectTool\",h.init_BoxSelectTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(1),o=e(306),r=e(90),c=e(116),i=e(365),l=n.__importStar(e(18)),a=e(72),_=e(313),d=e(15),h=e(11);class p extends o.GestureToolView{connect_signals(){super.connect_signals(),this.model.clear.connect(()=>this._clear())}get computed_renderers(){const e=this.model.renderers,t=this.plot_model.renderers,s=this.model.names;return i.compute_renderers(e,t,s)}_computed_renderers_by_data_source(){var e;const t=new Map;for(const s of this.computed_renderers){let n;if(s instanceof r.GlyphRenderer)n=s.data_source;else{if(!(s instanceof c.GraphRenderer))continue;n=s.node_renderer.data_source}const o=null!==(e=t.get(n))&&void 0!==e?e:[];t.set(n,[...o,s])}return t}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void h.unreachable():this.model.mode}_keyup(e){e.keyCode==a.Keys.Esc&&this._clear()}_clear(){for(const e of this.computed_renderers)e.get_selection_manager().clear();this.plot_view.request_render()}_select(e,t,s){const n=this._computed_renderers_by_data_source();for(const[,o]of n){const n=o[0].get_selection_manager(),r=[];for(const e of o){const t=this.plot_view.renderer_views.get(e);null!=t&&r.push(t)}n.select(r,e,t,s)}null!=this.model.callback&&this._emit_callback(e),this._emit_selection_event(e,t)}_emit_selection_event(e,t=!0){const{x_scale:s,y_scale:n}=this.plot_view.frame;let o;switch(e.type){case\"point\":{const{sx:t,sy:r}=e,c=s.invert(t),i=n.invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"span\":{const{sx:t,sy:r}=e,c=s.invert(t),i=n.invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"rect\":{const{sx0:t,sx1:r,sy0:c,sy1:i}=e,[l,a]=s.r_invert(t,r),[_,d]=n.r_invert(c,i);o=Object.assign(Object.assign({},e),{x0:l,y0:_,x1:a,y1:d});break}case\"poly\":{const{sx:t,sy:r}=e,c=s.v_invert(t),i=n.v_invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}}this.plot_model.trigger_event(new _.SelectionGeometry(o,t))}}s.SelectToolView=p,p.__name__=\"SelectToolView\";class u extends o.GestureTool{constructor(e){super(e)}initialize(){super.initialize(),this.clear=new d.Signal0(this,\"clear\")}static init_SelectTool(){this.define({renderers:[l.Any,\"auto\"],names:[l.Array,[]],mode:[l.Any,\"replace\"]})}get menu(){return[{icon:\"bk-tool-icon-replace-mode\",tooltip:\"Replace the current selection\",active:()=>\"replace\"==this.mode,handler:()=>{this.mode=\"replace\",this.active=!0}},{icon:\"bk-tool-icon-append-mode\",tooltip:\"Append to the current selection (Shift)\",active:()=>\"append\"==this.mode,handler:()=>{this.mode=\"append\",this.active=!0}},{icon:\"bk-tool-icon-intersect-mode\",tooltip:\"Intersect with the current selection (Ctrl)\",active:()=>\"intersect\"==this.mode,handler:()=>{this.mode=\"intersect\",this.active=!0}},{icon:\"bk-tool-icon-subtract-mode\",tooltip:\"Subtract from the current selection (Shift+Ctrl)\",active:()=>\"subtract\"==this.mode,handler:()=>{this.mode=\"subtract\",this.active=!0}},null,{icon:\"bk-tool-icon-clear-selection\",tooltip:\"Clear the current selection (Esc)\",handler:()=>{this.clear.emit()}}]}}s.SelectTool=u,u.__name__=\"SelectTool\",u.init_SelectTool()},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const r=e(9);t.compute_renderers=function(e,n,t){if(null==e)return[];let u=\"auto\"==e?n:e;return t.length>0&&(u=u.filter(e=>r.includes(t,e.name))),u}},\n", + " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const s=t(1),i=t(306),n=t(124),_=s.__importStar(t(18)),a=t(309);class l extends i.GestureToolView{_match_aspect(t,o,e){const s=e.bbox.aspect,i=e.bbox.h_range.end,n=e.bbox.h_range.start,_=e.bbox.v_range.end,a=e.bbox.v_range.start;let l=Math.abs(t[0]-o[0]),r=Math.abs(t[1]-o[1]);const h=0==r?0:l/r,[c]=h>=s?[1,h/s]:[s/h,1];let m,p,d,b;return t[0]<=o[0]?(m=t[0],p=t[0]+l*c,p>i&&(p=i)):(p=t[0],m=t[0]-l*c,m_&&(d=_)):(d=t[1],b=t[1]-l/s,bnew n.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class h extends i.GestureTool{constructor(t){super(t),this.tool_name=\"Box Zoom\",this.icon=a.bk_tool_icon_box_zoom,this.event_type=\"pan\",this.default_order=20}static init_BoxZoomTool(){this.prototype.default_view=l,this.define({dimensions:[_.Dimensions,\"both\"],overlay:[_.Instance,r],match_aspect:[_.Boolean,!1],origin:[_.BoxOrigin,\"corner\"]}),this.register_alias(\"box_zoom\",()=>new h({dimensions:\"both\"})),this.register_alias(\"xbox_zoom\",()=>new h({dimensions:\"width\"})),this.register_alias(\"ybox_zoom\",()=>new h({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}e.BoxZoomTool=h,h.__name__=\"BoxZoomTool\",h.init_BoxZoomTool()},\n", + " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(1),a=e(364),i=e(368),l=e(72),_=o.__importStar(e(18)),c=e(309);class n extends a.SelectToolView{initialize(){super.initialize(),this.data=null}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._active_change())}_active_change(){this.model.active||this._clear_overlay()}_keyup(e){e.keyCode==l.Keys.Enter&&this._clear_overlay()}_pan_start(e){const{sx:s,sy:t}=e;this.data={sx:[s],sy:[t]}}_pan(e){const{sx:s,sy:t}=e,[o,a]=this.plot_view.frame.bbox.clip(s,t);this.data.sx.push(o),this.data.sy.push(a);this.model.overlay.update({xs:this.data.sx,ys:this.data.sy}),this.model.select_every_mousemove&&this._do_select(this.data.sx,this.data.sy,!1,this._select_mode(e))}_pan_end(e){this._clear_overlay(),this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(e)),this.plot_view.push_state(\"lasso_select\",{selection:this.plot_view.get_selection()})}_clear_overlay(){this.model.overlay.update({xs:[],ys:[]})}_do_select(e,s,t,o){const a={type:\"poly\",sx:e,sy:s};this._select(a,t,o)}}t.LassoSelectToolView=n,n.__name__=\"LassoSelectToolView\";class h extends a.SelectTool{constructor(e){super(e),this.tool_name=\"Lasso Select\",this.icon=c.bk_tool_icon_lasso_select,this.event_type=\"pan\",this.default_order=12}static init_LassoSelectTool(){this.prototype.default_view=n,this.define({select_every_mousemove:[_.Boolean,!0],overlay:[_.Instance,i.DEFAULT_POLY_OVERLAY]}),this.register_alias(\"lasso_select\",()=>new h)}}t.LassoSelectTool=h,h.__name__=\"LassoSelectTool\",h.init_LassoSelectTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const l=e(1),i=e(364),o=e(166),a=e(72),_=l.__importStar(e(18)),c=e(9),n=e(309);class h extends i.SelectToolView{initialize(){super.initialize(),this.data={sx:[],sy:[]}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._active_change())}_active_change(){this.model.active||this._clear_data()}_keyup(e){e.keyCode==a.Keys.Enter&&this._clear_data()}_doubletap(e){this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(e)),this.plot_view.push_state(\"poly_select\",{selection:this.plot_view.get_selection()}),this._clear_data()}_clear_data(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})}_tap(e){const{sx:t,sy:s}=e;this.plot_view.frame.bbox.contains(t,s)&&(this.data.sx.push(t),this.data.sy.push(s),this.model.overlay.update({xs:c.copy(this.data.sx),ys:c.copy(this.data.sy)}))}_do_select(e,t,s,l){const i={type:\"poly\",sx:e,sy:t};this._select(i,s,l)}}s.PolySelectToolView=h,h.__name__=\"PolySelectToolView\",s.DEFAULT_POLY_OVERLAY=()=>new o.PolyAnnotation({level:\"overlay\",xs_units:\"screen\",ys_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class y extends i.SelectTool{constructor(e){super(e),this.tool_name=\"Poly Select\",this.icon=n.bk_tool_icon_polygon_select,this.event_type=\"tap\",this.default_order=11}static init_PolySelectTool(){this.prototype.default_view=h,this.define({overlay:[_.Instance,s.DEFAULT_POLY_OVERLAY]}),this.register_alias(\"poly_select\",()=>new y)}}s.PolySelectTool=y,y.__name__=\"PolySelectTool\",y.init_PolySelectTool()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(370),r=s.__importStar(e(18)),_=e(309);class d extends n.LineToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(e){if(!this.model.active)return;const t=this.model.renderers;for(const i of t){1==this._select_event(e,\"replace\",[i]).length&&(this._selected_renderer=i)}this._show_intersections(),this._update_line_cds()}_show_intersections(){if(!this.model.active)return;if(null==this._selected_renderer)return;if(!this.model.renderers.length)return this._set_intersection([],[]),this._selected_renderer=null,void(this._drawing=!1);const e=this._selected_renderer.data_source,t=this._selected_renderer.glyph,[i,s]=[t.x.field,t.y.field],n=e.get_array(i),r=e.get_array(s);this._set_intersection(n,r)}_tap(e){const t=this.model.intersection_renderer;if(null==this._map_drag(e.sx,e.sy,t))return;if(this._drawing&&this._selected_renderer){const i=this._select_mode(e);if(0==this._select_event(e,i,[t]).length)return}const i=this._select_mode(e);this._select_event(e,i,[t]),this._select_event(e,i,this.model.renderers)}_update_line_cds(){if(null==this._selected_renderer)return;const e=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[i,s]=[e.x.field,e.y.field];if(i&&s){const e=t.data[i],n=t.data[s];this._selected_renderer.data_source.data[i]=e,this._selected_renderer.data_source.data[s]=n}this._emit_cds_changes(this._selected_renderer.data_source,!0,!0,!1)}_pan_start(e){this._select_event(e,\"append\",[this.model.intersection_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer],this.model.dimensions),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer]),this._emit_cds_changes(this.model.intersection_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}activate(){this._drawing=!0}deactivate(){this._selected_renderer&&(this._drawing&&(this._drawing=!1),this._hide_intersections())}}i.LineEditToolView=d,d.__name__=\"LineEditToolView\";class o extends n.LineTool{constructor(e){super(e),this.tool_name=\"Line Edit Tool\",this.icon=_.bk_tool_icon_line_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}static init_LineEditTool(){this.prototype.default_view=d,this.define({dimensions:[r.Dimensions,\"both\"]})}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}i.LineEditTool=o,o.__name__=\"LineEditTool\",o.init_LineEditTool()},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1).__importStar(e(18)),o=e(8),s=e(356);class _ extends s.EditToolView{_set_intersection(e,i){const t=this.model.intersection_renderer.glyph,n=this.model.intersection_renderer.data_source,[s,_]=[t.x.field,t.y.field];s&&(o.isArray(e)?n.data[s]=e:t.x={value:e}),_&&(o.isArray(i)?n.data[_]=i:t.y={value:i}),this._emit_cds_changes(n,!0,!0,!1)}_hide_intersections(){this._set_intersection([],[])}}t.LineToolView=_,_.__name__=\"LineToolView\";class r extends s.EditTool{constructor(e){super(e)}static init_LineTool(){this.prototype.default_view=_,this.define({intersection_renderer:[n.Instance]})}}t.LineTool=r,r.__name__=\"LineTool\",r.init_LineTool()},\n", + " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(1),i=t(306),o=n.__importStar(t(18)),a=t(309);function _(t,s,e){const n=new Map;for(const[i,o]of t){const[t,a]=o.r_invert(s,e);n.set(i,{start:t,end:a})}return n}e.update_ranges=_;class h extends i.GestureToolView{_pan_start(t){this.last_dx=0,this.last_dy=0;const{sx:s,sy:e}=t,n=this.plot_view.frame.bbox;if(!n.contains(s,e)){const t=n.h_range,i=n.v_range;(st.end)&&(this.v_axis_only=!0),(ei.end)&&(this.h_axis_only=!0)}null!=this.model.document&&this.model.document.interactive_start(this.plot_model)}_pan(t){this._update(t.deltaX,t.deltaY),null!=this.model.document&&this.model.document.interactive_start(this.plot_model)}_pan_end(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.push_state(\"pan\",{range:this.pan_info})}_update(t,s){const e=this.plot_view.frame,n=t-this.last_dx,i=s-this.last_dy,o=e.bbox.h_range,a=o.start-n,h=o.end-n,l=e.bbox.v_range,r=l.start-i,d=l.end-i,p=this.model.dimensions;let c,u,m,x,y,g;\"width\"!=p&&\"both\"!=p||this.v_axis_only?(c=o.start,u=o.end,m=0):(c=a,u=h,m=-n),\"height\"!=p&&\"both\"!=p||this.h_axis_only?(x=l.start,y=l.end,g=0):(x=r,y=d,g=-i),this.last_dx=t,this.last_dy=s;const{x_scales:w,y_scales:b}=e,f=_(w,c,u),v=_(b,x,y);this.pan_info={xrs:f,yrs:v,sdx:m,sdy:g},this.plot_view.update_range(this.pan_info,!0)}}e.PanToolView=h,h.__name__=\"PanToolView\";class l extends i.GestureTool{constructor(t){super(t),this.tool_name=\"Pan\",this.event_type=\"pan\",this.default_order=10}static init_PanTool(){this.prototype.default_view=h,this.define({dimensions:[o.Dimensions,\"both\"]}),this.register_alias(\"pan\",()=>new l({dimensions:\"both\"})),this.register_alias(\"xpan\",()=>new l({dimensions:\"width\"})),this.register_alias(\"ypan\",()=>new l({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(\"Pan\",this.dimensions)}get icon(){switch(this.dimensions){case\"both\":return a.bk_tool_icon_pan;case\"width\":return a.bk_tool_icon_xpan;case\"height\":return a.bk_tool_icon_ypan}}}e.PanTool=l,l.__name__=\"PanTool\",l.init_PanTool()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(124),l=e(19),a=s.__importStar(e(18)),r=e(306),o=e(309);function _(e){switch(e){case 1:return 2;case 2:return 1;case 4:return 5;case 5:return 4;default:return e}}function h(e,t,i,s){if(null==t)return!1;const n=i.compute(t);return Math.abs(e-n)n.right)&&(l=!1)}if(null!=n.bottom&&null!=n.top){const e=s.invert(t);(en.top)&&(l=!1)}return l}function u(e,t,i){let s=0;return e>=i.start&&e<=i.end&&(s+=1),t>=i.start&&t<=i.end&&(s+=1),s}function c(e,t,i,s){const n=t.compute(e),l=t.invert(n+i);return l>=s.start&&l<=s.end?l:e}function g(e,t,i){return e>t.start?(t.end=e,i):(t.end=t.start,t.start=e,_(i))}function y(e,t,i){return e=o&&(e.start=a,e.end=r)}i.flip_side=_,i.is_near=h,i.is_inside=d,i.sides_inside=u,i.compute_value=c,i.update_range_end_side=g,i.update_range_start_side=y,i.update_range=f;class p extends r.GestureToolView{initialize(){super.initialize(),this.side=0,this.model.update_overlay_from_ranges()}connect_signals(){super.connect_signals(),null!=this.model.x_range&&this.connect(this.model.x_range.change,()=>this.model.update_overlay_from_ranges()),null!=this.model.y_range&&this.connect(this.model.y_range.change,()=>this.model.update_overlay_from_ranges())}_pan_start(e){this.last_dx=0,this.last_dy=0;const t=this.model.x_range,i=this.model.y_range,{frame:s}=this.plot_view,l=s.x_scale,a=s.y_scale,r=this.model.overlay,{left:o,right:_,top:u,bottom:c}=r,g=this.model.overlay.properties.line_width.value()+n.EDGE_TOLERANCE;null!=t&&this.model.x_interaction&&(h(e.sx,o,l,g)?this.side=1:h(e.sx,_,l,g)?this.side=2:d(e.sx,e.sy,l,a,r)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&h(e.sy,c,a,g)&&(this.side=4),0==this.side&&h(e.sy,u,a,g)?this.side=5:d(e.sx,e.sy,l,a,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))}_pan(e){const t=this.plot_view.frame,i=e.deltaX-this.last_dx,s=e.deltaY-this.last_dy,n=this.model.x_range,l=this.model.y_range,a=t.x_scale,r=t.y_scale;if(null!=n)if(3==this.side||7==this.side)f(n,a,i,t.x_range);else if(1==this.side){const e=c(n.start,a,i,t.x_range);this.side=y(e,n,this.side)}else if(2==this.side){const e=c(n.end,a,i,t.x_range);this.side=g(e,n,this.side)}if(null!=l)if(6==this.side||7==this.side)f(l,r,s,t.y_range);else if(4==this.side){const e=c(l.start,r,s,t.y_range);this.side=y(e,l,this.side)}else if(5==this.side){const e=c(l.end,r,s,t.y_range);this.side=g(e,l,this.side)}this.last_dx=e.deltaX,this.last_dy=e.deltaY}_pan_end(e){this.side=0}}i.RangeToolView=p,p.__name__=\"RangeToolView\";const m=()=>new n.BoxAnnotation({level:\"overlay\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:.5,line_dash:[2,2]});class v extends r.GestureTool{constructor(e){super(e),this.tool_name=\"Range Tool\",this.icon=o.bk_tool_icon_range,this.event_type=\"pan\",this.default_order=1}static init_RangeTool(){this.prototype.default_view=p,this.define({x_range:[a.Instance,null],x_interaction:[a.Boolean,!0],y_range:[a.Instance,null],y_interaction:[a.Boolean,!0],overlay:[a.Instance,m]})}initialize(){super.initialize(),this.overlay.in_cursor=\"grab\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\"ew-resize\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\"ns-resize\":null}update_overlay_from_ranges(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,l.logger.warn(\"RangeTool not configured with any Ranges.\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)}}i.RangeTool=v,v.__name__=\"RangeTool\",v.init_RangeTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),i=e(364),c=o.__importStar(e(18)),n=e(309);class a extends i.SelectToolView{_tap(e){const{sx:t,sy:s}=e,o={type:\"point\",sx:t,sy:s};this._select(o,!0,this._select_mode(e))}_select(e,t,s){const o=this.model.callback;if(\"select\"==this.model.behavior){const i=this._computed_renderers_by_data_source();for(const[,c]of i){const i=c[0].get_selection_manager(),n=c.map(e=>this.plot_view.renderer_views.get(e));if(i.select(n,e,t,s)&&null!=o){const t=n[0].coordinates.x_scale.invert(e.sx),s=n[0].coordinates.y_scale.invert(e.sy),c={geometries:Object.assign(Object.assign({},e),{x:t,y:s}),source:i.source};o.execute(this.model,c)}}this._emit_selection_event(e),this.plot_view.push_state(\"tap\",{selection:this.plot_view.get_selection()})}else for(const t of this.computed_renderers){const s=this.plot_view.renderer_views.get(t),i=t.get_selection_manager();if(i.inspect(s,e)&&null!=o){const t=s.coordinates.x_scale.invert(e.sx),c=s.coordinates.y_scale.invert(e.sy),n={geometries:Object.assign(Object.assign({},e),{x:t,y:c}),source:i.source};o.execute(this.model,n)}}}}s.TapToolView=a,a.__name__=\"TapToolView\";class _ extends i.SelectTool{constructor(e){super(e),this.tool_name=\"Tap\",this.icon=n.bk_tool_icon_tap_select,this.event_type=\"tap\",this.default_order=10}static init_TapTool(){this.prototype.default_view=a,this.define({behavior:[c.TapBehavior,\"select\"],callback:[c.Any]}),this.register_alias(\"click\",()=>new _({behavior:\"inspect\"})),this.register_alias(\"tap\",()=>new _)}}s.TapTool=_,_.__name__=\"TapTool\",_.init_TapTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),o=e(306),n=i.__importStar(e(18)),a=e(309),l=e(371);class _ extends o.GestureToolView{_scroll(e){let t=this.model.speed*e.delta;t>.9?t=.9:t<-.9&&(t=-.9),this._update_ranges(t)}_update_ranges(e){const{frame:t}=this.plot_view,s=t.bbox.h_range,i=t.bbox.v_range,[o,n]=[s.start,s.end],[a,_]=[i.start,i.end];let h,r,d,p;switch(this.model.dimension){case\"height\":{const t=Math.abs(_-a);h=o,r=n,d=a-t*e,p=_-t*e;break}case\"width\":{const t=Math.abs(n-o);h=o-t*e,r=n-t*e,d=a,p=_;break}default:throw new Error(\"this shouldn't have happened\")}const{x_scales:c,y_scales:u}=t,m={xrs:l.update_ranges(c,h,r),yrs:l.update_ranges(u,d,p),factor:e};this.plot_view.push_state(\"wheel_pan\",{range:m}),this.plot_view.update_range(m,!1,!0),null!=this.model.document&&this.model.document.interactive_start(this.plot_model)}}s.WheelPanToolView=_,_.__name__=\"WheelPanToolView\";class h extends o.GestureTool{constructor(e){super(e),this.tool_name=\"Wheel Pan\",this.icon=a.bk_tool_icon_wheel_pan,this.event_type=\"scroll\",this.default_order=12}static init_WheelPanTool(){this.prototype.default_view=_,this.define({dimension:[n.Dimension,\"width\"]}),this.internal({speed:[n.Number,.001]}),this.register_alias(\"xwheel_pan\",()=>new h({dimension:\"width\"})),this.register_alias(\"ywheel_pan\",()=>new h({dimension:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimension)}}s.WheelPanTool=h,h.__name__=\"WheelPanTool\",h.init_WheelPanTool()},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1),i=e(306),l=e(354),n=s.__importStar(e(18)),_=e(32),h=e(309);class a extends i.GestureToolView{_pinch(e){const{sx:o,sy:t,scale:s,ctrlKey:i,shiftKey:l}=e;let n;n=s>=1?20*(s-1):-20/s,this._scroll({type:\"wheel\",sx:o,sy:t,delta:n,ctrlKey:i,shiftKey:l})}_scroll(e){const{frame:o}=this.plot_view,t=o.bbox.h_range,s=o.bbox.v_range,{sx:i,sy:n}=e,_=this.model.dimensions,h=(\"width\"==_||\"both\"==_)&&t.startnew m({dimensions:\"both\"})),this.register_alias(\"xwheel_zoom\",()=>new m({dimensions:\"width\"})),this.register_alias(\"ywheel_zoom\",()=>new m({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}t.WheelZoomTool=m,m.__name__=\"WheelZoomTool\",m.init_WheelZoomTool()},\n", + " function _(i,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const t=i(1),o=i(295),n=i(168),l=t.__importStar(i(18)),h=i(13),a=i(309);class r extends o.InspectToolView{_move(i){if(!this.model.active)return;const{sx:s,sy:e}=i;this.plot_view.frame.bbox.contains(s,e)?this._update_spans(s,e):this._update_spans(null,null)}_move_exit(i){this._update_spans(null,null)}_update_spans(i,s){const e=this.model.dimensions;\"width\"!=e&&\"both\"!=e||(this.model.spans.width.location=s),\"height\"!=e&&\"both\"!=e||(this.model.spans.height.location=i)}}e.CrosshairToolView=r,r.__name__=\"CrosshairToolView\";class _ extends o.InspectTool{constructor(i){super(i),this.tool_name=\"Crosshair\",this.icon=a.bk_tool_icon_crosshair}static init_CrosshairTool(){this.prototype.default_view=r,this.define({dimensions:[l.Dimensions,\"both\"],line_color:[l.Color,\"black\"],line_width:[l.Number,1],line_alpha:[l.Number,1]}),this.internal({spans:[l.Any]}),this.register_alias(\"crosshair\",()=>new _)}get tooltip(){return this._get_dim_tooltip(\"Crosshair\",this.dimensions)}get synthetic_renderers(){return h.values(this.spans)}initialize(){super.initialize(),this.spans={width:new n.Span({for_hover:!0,dimension:\"width\",location_units:\"screen\",level:\"overlay\",line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha}),height:new n.Span({for_hover:!0,dimension:\"height\",location_units:\"screen\",level:\"overlay\",line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha})}}}e.CrosshairTool=_,_.__name__=\"CrosshairTool\",_.init_CrosshairTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const r=e(1),o=e(81),i=r.__importStar(e(18)),a=e(13),n=e(29);class u extends o.Model{constructor(e){super(e)}static init_CustomJSHover(){this.define({args:[i.Any,{}],code:[i.String,\"\"]})}get values(){return a.values(this.args)}_make_code(e,t,s,r){return new Function(...a.keys(this.args),e,t,s,n.use_strict(r))}format(e,t,s){return this._make_code(\"value\",\"format\",\"special_vars\",this.code)(...this.values,e,t,s)}}s.CustomJSHover=u,u.__name__=\"CustomJSHover\",u.init_CustomJSHover()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),n=e(295),i=e(171),r=e(90),l=e(116),c=e(365),a=o.__importStar(e(101)),_=e(187),d=e(72),p=o.__importStar(e(18)),h=e(22),m=e(13),u=e(303),y=e(8),f=e(115),x=e(309),v=e(172);function w(e,t,s,o,n,i){const r={x:n[e],y:i[e]},l={x:n[e+1],y:i[e+1]};let c,_;if(\"span\"==t.type)\"h\"==t.direction?(c=Math.abs(r.x-s),_=Math.abs(l.x-s)):(c=Math.abs(r.y-o),_=Math.abs(l.y-o));else{const e={x:s,y:o};c=a.dist_2_pts(r,e),_=a.dist_2_pts(l,e)}return c<_?[[r.x,r.y],e]:[[l.x,l.y],e+1]}function g(e,t,s){return[[e[s],t[s]],s]}s._nearest_line_hit=w,s._line_hit=g;class b extends n.InspectToolView{initialize(){super.initialize(),this._ttmodels=null,this._ttviews=new Map;const{tooltips:e}=this.model;y.isArray(e)&&(this._template_el=this._create_template(e))}remove(){f.remove_views(this._ttviews),super.remove()}connect_signals(){super.connect_signals();for(const e of this.computed_renderers)e instanceof r.GlyphRenderer?this.connect(e.data_source.inspect,this._update):e instanceof l.GraphRenderer&&(this.connect(e.node_renderer.data_source.inspect,this._update),this.connect(e.edge_renderer.data_source.inspect,this._update));this.connect(this.model.properties.renderers.change,()=>this._computed_renderers=this._ttmodels=null),this.connect(this.model.properties.names.change,()=>this._computed_renderers=this._ttmodels=null),this.connect(this.model.properties.tooltips.change,()=>this._ttmodels=null)}_compute_ttmodels(){const e=new Map,t=this.model.tooltips;if(null!=t)for(const s of this.computed_renderers){const o=new i.Tooltip({custom:y.isString(t)||y.isFunction(t),attachment:this.model.attachment,show_arrow:this.model.show_arrow});s instanceof r.GlyphRenderer?e.set(s,o):s instanceof l.GraphRenderer&&(e.set(s.node_renderer,o),e.set(s.edge_renderer,o))}return(async()=>{const t=await f.build_views(this._ttviews,[...e.values()],{parent:this.plot_view});for(const e of t)e.render()})(),e}get computed_renderers(){if(null==this._computed_renderers){const e=this.model.renderers,t=this.plot_model.renderers,s=this.model.names;this._computed_renderers=c.compute_renderers(e,t,s)}return this._computed_renderers}get ttmodels(){return null==this._ttmodels&&(this._ttmodels=this._compute_ttmodels()),this._ttmodels}_clear(){this._inspect(1/0,1/0);for(const[,e]of this.ttmodels)e.clear()}_move(e){if(!this.model.active)return;const{sx:t,sy:s}=e;this.plot_view.frame.bbox.contains(t,s)?this._inspect(t,s):this._clear()}_move_exit(){this._clear()}_inspect(e,t){let s;if(\"mouse\"==this.model.mode)s={type:\"point\",sx:e,sy:t};else{s={type:\"span\",direction:\"vline\"==this.model.mode?\"h\":\"v\",sx:e,sy:t}}for(const e of this.computed_renderers){e.get_selection_manager().inspect(this.plot_view.renderer_views.get(e),s)}null!=this.model.callback&&this._emit_callback(s)}_update([e,{geometry:t}]){if(!this.model.active)return;if(!(e instanceof r.GlyphRendererView))return;const{model:s}=e;if(\"ignore\"==this.model.muted_policy&&s instanceof r.GlyphRenderer&&s.muted)return;const o=this.ttmodels.get(s);if(null==o)return;const n=s.get_selection_manager();let i=n.inspectors.get(s);if(s instanceof r.GlyphRenderer&&(i=s.view.convert_selection_to_subset(i)),i.is_empty())return void o.clear();const l=n.source,{sx:c,sy:a}=t,_=e.coordinates.x_scale,p=e.coordinates.y_scale,h=_.invert(c),u=p.invert(a),y=e.glyph,f=[];for(const s of i.line_indices){let o,n,r=y._x[s+1],d=y._y[s+1],m=s;switch(this.model.line_policy){case\"interp\":[r,d]=y.get_interpolation_hit(s,t),o=_.compute(r),n=p.compute(d);break;case\"prev\":[[o,n],m]=g(y.sx,y.sy,s);break;case\"next\":[[o,n],m]=g(y.sx,y.sy,s+1);break;case\"nearest\":[[o,n],m]=w(s,t,c,a,y.sx,y.sy),r=y._x[m],d=y._y[m];break;default:[o,n]=[c,a]}const x={index:m,x:h,y:u,sx:c,sy:a,data_x:r,data_y:d,rx:o,ry:n,indices:i.line_indices,name:e.model.name};f.push([o,n,this._render_tooltips(l,m,x)])}for(const t of i.image_indices){const s={index:t.index,x:h,y:u,sx:c,sy:a,name:e.model.name},o=this._render_tooltips(l,t,s);f.push([c,a,o])}for(const o of i.indices)if(m.isEmpty(i.multiline_indices)){const t=null!=y._x?y._x[o]:void 0,n=null!=y._y?y._y[o]:void 0;let _,d,p;if(\"snap_to_data\"==this.model.point_policy){let e=y.get_anchor_point(this.model.anchor,o,[c,a]);null==e&&(e=y.get_anchor_point(\"center\",o,[c,a])),_=e.x,d=e.y}else[_,d]=[c,a];p=s instanceof r.GlyphRenderer?s.view.convert_indices_from_subset([o])[0]:o;const m={index:p,x:h,y:u,sx:c,sy:a,data_x:t,data_y:n,indices:i.indices,name:e.model.name};f.push([_,d,this._render_tooltips(l,p,m)])}else for(const n of i.multiline_indices[o.toString()]){let d,m,x,v=y._xs[o][n],b=y._ys[o][n],k=n;switch(this.model.line_policy){case\"interp\":[v,b]=y.get_interpolation_hit(o,n,t),d=_.compute(v),m=p.compute(b);break;case\"prev\":[[d,m],k]=g(y.sxs[o],y.sys[o],n);break;case\"next\":[[d,m],k]=g(y.sxs[o],y.sys[o],n+1);break;case\"nearest\":[[d,m],k]=w(n,t,c,a,y.sxs[o],y.sys[o]),v=y._xs[o][k],b=y._ys[o][k];break;default:throw new Error(\"should't have happened\")}x=s instanceof r.GlyphRenderer?s.view.convert_indices_from_subset([o])[0]:o;const A={index:x,x:h,y:u,sx:c,sy:a,data_x:v,data_y:b,segment_index:k,indices:i.multiline_indices,name:e.model.name};f.push([d,m,this._render_tooltips(l,x,A)])}if(0==f.length)o.clear();else{const{content:e}=o;d.empty(o.content);for(const[,,t]of f)e.appendChild(t);const[t,s]=f[f.length-1];o.setv({position:[t,s]},{check_eq:!1})}}_emit_callback(e){for(const t of this.computed_renderers){const s=this.plot_view.renderer_views.get(t),o=s.coordinates.x_scale.invert(e.sx),n=s.coordinates.y_scale.invert(e.sy),i=t.data_source.inspected,r=Object.assign({x:o,y:n},e);this.model.callback.execute(this.model,{index:i,geometry:r,renderer:t})}}_create_template(e){const t=d.div({style:{display:\"table\",borderSpacing:\"2px\"}});for(const[s]of e){const e=d.div({style:{display:\"table-row\"}});t.appendChild(e);const o=d.div({style:{display:\"table-cell\"},class:v.bk_tooltip_row_label},0!=s.length?s+\": \":\"\");e.appendChild(o);const n=d.span();n.dataset.value=\"\";const i=d.span({class:v.bk_tooltip_color_block},\" \");i.dataset.swatch=\"\",d.undisplay(i);const r=d.div({style:{display:\"table-cell\"},class:v.bk_tooltip_row_value},n,i);e.appendChild(r)}return t}_render_template(e,t,s,o,n){const i=e.cloneNode(!0),r=i.querySelectorAll(\"[data-value]\"),l=i.querySelectorAll(\"[data-swatch]\"),c=/\\$color(\\[.*\\])?:(\\w*)/;for(const[[,e],i]of u.enumerate(t)){const t=e.match(c);if(null!=t){const[,e=\"\",n]=t,c=s.get_column(n);if(null==c){r[i].textContent=n+\" unknown\";continue}const a=e.indexOf(\"hex\")>=0,_=e.indexOf(\"swatch\")>=0;let p=y.isNumber(o)?c[o]:null;if(null==p){r[i].textContent=\"(null)\";continue}a&&(p=h.color2hex(p)),r[i].textContent=p,_&&(l[i].style.backgroundColor=p,d.display(l[i]))}else{const t=_.replace_placeholders(e.replace(\"$~\",\"$data_\"),s,o,this.model.formatters,n);if(y.isString(t))r[i].textContent=t;else for(const e of t)r[i].appendChild(e)}}return i}_render_tooltips(e,t,s){const o=this.model.tooltips;if(y.isString(o)){const n=_.replace_placeholders({html:o},e,t,this.model.formatters,s);return d.div({},n)}return y.isFunction(o)?o(e,s):this._render_template(this._template_el,o,e,t,s)}}s.HoverToolView=b,b.__name__=\"HoverToolView\";class k extends n.InspectTool{constructor(e){super(e),this.tool_name=\"Hover\",this.icon=x.bk_tool_icon_hover}static init_HoverTool(){this.prototype.default_view=b,this.define({tooltips:[p.Any,[[\"index\",\"$index\"],[\"data (x, y)\",\"($x, $y)\"],[\"screen (x, y)\",\"($sx, $sy)\"]]],formatters:[p.Any,{}],renderers:[p.Any,\"auto\"],names:[p.Array,[]],mode:[p.HoverMode,\"mouse\"],muted_policy:[p.MutedPolicy,\"show\"],point_policy:[p.PointPolicy,\"snap_to_data\"],line_policy:[p.LinePolicy,\"nearest\"],show_arrow:[p.Boolean,!0],anchor:[p.Anchor,\"center\"],attachment:[p.TooltipAttachment,\"horizontal\"],callback:[p.Any]}),this.register_alias(\"hover\",()=>new k)}}s.HoverTool=k,k.__name__=\"HoverTool\",k.init_HoverTool()},\n", + " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(1).__importStar(t(18)),n=t(15),s=t(81),l=t(295),c=t(303);class r extends s.Model{constructor(t){super(t)}static init_ToolProxy(){this.define({tools:[i.Array,[]],active:[i.Boolean,!1],disabled:[i.Boolean,!1]})}get button_view(){return this.tools[0].button_view}get event_type(){return this.tools[0].event_type}get tooltip(){return this.tools[0].tooltip}get tool_name(){return this.tools[0].tool_name}get icon(){return this.tools[0].computed_icon}get computed_icon(){return this.icon}get toggleable(){const t=this.tools[0];return t instanceof l.InspectTool&&t.toggleable}initialize(){super.initialize(),this.do=new n.Signal0(this,\"do\")}connect_signals(){super.connect_signals(),this.connect(this.do,()=>this.doit()),this.connect(this.properties.active.change,()=>this.set_active());for(const t of this.tools)this.connect(t.properties.active.change,()=>{this.active=t.active})}doit(){for(const t of this.tools)t.do.emit()}set_active(){for(const t of this.tools)t.active=this.active}get menu(){const{menu:t}=this.tools[0];if(null==t)return null;const o=[];for(const[e,i]of c.enumerate(t))if(null==e)o.push(null);else{const t=()=>{var t,o;for(const e of this.tools)null===(o=null===(t=e.menu)||void 0===t?void 0:t[i])||void 0===o||o.handler()};o.push(Object.assign(Object.assign({},e),{handler:t}))}return o}}e.ToolProxy=r,r.__name__=\"ToolProxy\",r.init_ToolProxy()},\n", + " function _(o,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=o(1).__importStar(o(18)),e=o(9),n=o(13),r=o(305),l=o(379),c=o(272),h=o(212);class a extends r.ToolbarBase{constructor(o){super(o)}static init_ProxyToolbar(){this.define({toolbars:[i.Array,[]]})}initialize(){super.initialize(),this._merge_tools()}_merge_tools(){this._proxied_tools=[];const o={},t={},s={},i=[],r=[];for(const o of this.help)e.includes(r,o.redirect)||(i.push(o),r.push(o.redirect));this._proxied_tools.push(...i),this.help=i;for(const[o,t]of n.entries(this.gestures)){o in s||(s[o]={});for(const i of t.tools)i.type in s[o]||(s[o][i.type]=[]),s[o][i.type].push(i)}for(const t of this.inspectors)t.type in o||(o[t.type]=[]),o[t.type].push(t);for(const o of this.actions)o.type in t||(t[o.type]=[]),t[o.type].push(o);const c=(o,t=!1)=>{const s=new l.ToolProxy({tools:o,active:t});return this._proxied_tools.push(s),s};for(const o of n.keys(s)){const t=this.gestures[o];t.tools=[];for(const i of n.keys(s[o])){const e=s[o][i];if(e.length>0)if(\"multi\"==o)for(const o of e){const s=c([o]);t.tools.push(s),this.connect(s.properties.active.change,()=>this._active_change(s))}else{const o=c(e);t.tools.push(o),this.connect(o.properties.active.change,()=>this._active_change(o))}}}this.actions=[];for(const[o,s]of n.entries(t))if(\"CustomAction\"==o)for(const o of s)this.actions.push(c([o]));else s.length>0&&this.actions.push(c(s));this.inspectors=[];for(const t of n.values(o))t.length>0&&this.inspectors.push(c(t,!0));for(const[o,t]of n.entries(this.gestures))0!=t.tools.length&&(t.tools=e.sort_by(t.tools,o=>o.default_order),\"pinch\"!=o&&\"scroll\"!=o&&\"multi\"!=o&&(t.tools[0].active=!0))}}s.ProxyToolbar=a,a.__name__=\"ProxyToolbar\",a.init_ProxyToolbar();class _ extends c.LayoutDOMView{initialize(){this.model.toolbar.toolbar_location=this.model.toolbar_location,super.initialize()}get child_models(){return[this.model.toolbar]}_update_layout(){this.layout=new h.ContentBox(this.child_views[0].el);const{toolbar:o}=this.model;o.horizontal?this.layout.set_sizing({width_policy:\"fit\",min_width:100,height_policy:\"fixed\"}):this.layout.set_sizing({width_policy:\"fixed\",height_policy:\"fit\",min_height:100})}}s.ToolbarBoxView=_,_.__name__=\"ToolbarBoxView\";class p extends c.LayoutDOM{constructor(o){super(o)}static init_ToolbarBox(){this.prototype.default_view=_,this.define({toolbar:[i.Instance],toolbar_location:[i.Location,\"right\"]})}}s.ToolbarBox=p,p.__name__=\"ToolbarBox\",p.init_ToolbarBox()},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(5),i=e(78),d=e(115),c=e(72),l=e(382);t.index={},t.add_document_standalone=async function(e,n,s=[],a=!1){const u=new Map;async function r(o){let a;const r=e.roots().indexOf(o),f=s[r];null!=f?a=f:n.classList.contains(l.BOKEH_ROOT)?a=n:(a=c.div({class:l.BOKEH_ROOT}),n.appendChild(a));const v=await d.build_view(o,{parent:null});return v instanceof i.DOMView&&v.renderTo(a),u.set(o,v),t.index[o.id]=v,v}for(const n of e.roots())await r(n);return a&&(window.document.title=e.title()),e.on_change(e=>{e instanceof o.RootAddedEvent?r(e.model):e instanceof o.RootRemovedEvent?function(e){const n=u.get(e);null!=n&&(n.remove(),u.delete(e),delete t.index[e.id])}(e.model):a&&e instanceof o.TitleChangedEvent&&(window.document.title=e.title)}),[...u.values()]}},\n", + " function _(e,o,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(72),r=e(273);function l(e){let o=document.getElementById(e);if(null==o)throw new Error(`Error rendering Bokeh model: could not find #${e} HTML tag`);if(!document.body.contains(o))throw new Error(`Error rendering Bokeh model: element #${e} must be under `);if(\"SCRIPT\"==o.tagName){const e=t.div({class:n.BOKEH_ROOT});t.replaceWith(o,e),o=e}return o}n.BOKEH_ROOT=r.bk_root,n._resolve_element=function(e){const{elementid:o}=e;return null!=o?l(o):document.body},n._resolve_root_elements=function(e){const o=[];if(null!=e.root_ids&&null!=e.roots)for(const n of e.root_ids)o.push(l(e.roots[n]));return o}},\n", + " function _(n,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const e=n(384),s=n(19),c=n(381);t._get_ws_url=function(n,o){let t,e=\"ws:\";return\"https:\"==window.location.protocol&&(e=\"wss:\"),null!=o?(t=document.createElement(\"a\"),t.href=o):t=window.location,null!=n?\"/\"==n&&(n=\"\"):n=t.pathname.replace(/\\/+$/,\"\"),e+\"//\"+t.host+n+\"/ws\"};const r={};t.add_document_from_session=async function(n,o,t,a=[],i=!1){const l=window.location.search.substr(1);let d;try{d=await function(n,o,t){const s=e.parse_token(o).session_id;n in r||(r[n]={});const c=r[n];return s in c||(c[s]=e.pull_session(n,o,t)),c[s]}(n,o,l)}catch(n){const t=e.parse_token(o).session_id;throw s.logger.error(`Failed to load Bokeh session ${t}: ${n}`),n}return c.add_document_standalone(d.document,t,a,i)}},\n", + " function _(e,s,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(19),o=e(5),r=e(385),i=e(386),c=e(387);n.DEFAULT_SERVER_WEBSOCKET_URL=\"ws://localhost:5006/ws\",n.DEFAULT_TOKEN=\"eyJzZXNzaW9uX2lkIjogImRlZmF1bHQifQ\";let l=0;function _(e){let s=e.split(\".\")[0];const n=s.length%4;return 0!=n&&(s+=\"=\".repeat(4-n)),JSON.parse(atob(s.replace(/_/g,\"/\").replace(/-/g,\"+\")))}n.parse_token=_;class h{constructor(e=n.DEFAULT_SERVER_WEBSOCKET_URL,s=n.DEFAULT_TOKEN,o=null){this.url=e,this.token=s,this.args_string=o,this._number=l++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_replies=new Map,this._pending_messages=[],this._receiver=new i.Receiver,this.id=_(s).session_id.split(\".\")[0],t.logger.debug(`Creating websocket ${this._number} to '${this.url}' session '${this.id}'`)}async connect(){if(this.closed_permanently)throw new Error(\"Cannot connect() a closed ClientConnection\");if(null!=this.socket)throw new Error(\"Already connected\");this._current_handler=null,this._pending_replies.clear(),this._pending_messages=[];try{let e=\"\"+this.url;return null!=this.args_string&&this.args_string.length>0&&(e+=\"?\"+this.args_string),this.socket=new WebSocket(e,[\"bokeh\",this.token]),new Promise((e,s)=>{this.socket.binaryType=\"arraybuffer\",this.socket.onopen=()=>this._on_open(e,s),this.socket.onmessage=e=>this._on_message(e),this.socket.onclose=e=>this._on_close(e,s),this.socket.onerror=()=>this._on_error(s)})}catch(e){throw t.logger.error(\"websocket creation failed to url: \"+this.url),t.logger.error(\" - \"+e),e}}close(){this.closed_permanently||(t.logger.debug(\"Permanently closing websocket connection \"+this._number),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,\"close method called on ClientConnection \"+this._number),this.session._connection_closed())}_schedule_reconnect(e){setTimeout(()=>{this.closed_permanently||t.logger.info(`Websocket connection ${this._number} disconnected, will not attempt to reconnect`)},e)}send(e){if(null==this.socket)throw new Error(\"not connected so cannot send \"+e);e.send(this.socket)}async send_with_reply(e){const s=await new Promise((s,n)=>{this._pending_replies.set(e.msgid(),{resolve:s,reject:n}),this.send(e)});if(\"ERROR\"===s.msgtype())throw new Error(\"Error reply \"+s.content.text);return s}async _pull_doc_json(){const e=r.Message.create(\"PULL-DOC-REQ\",{}),s=await this.send_with_reply(e);if(!(\"doc\"in s.content))throw new Error(\"No 'doc' field in PULL-DOC-REPLY\");return s.content.doc}async _repull_session_doc(e,s){var n;t.logger.debug(this.session?\"Repulling session\":\"Pulling session for first time\");try{const n=await this._pull_doc_json();if(null==this.session)if(this.closed_permanently)t.logger.debug(\"Got new document after connection was already closed\"),s(new Error(\"The connection has been closed\"));else{const s=o.Document.from_json(n),i=o.Document._compute_patch_since_json(n,s);if(i.events.length>0){t.logger.debug(`Sending ${i.events.length} changes from model construction back to server`);const e=r.Message.create(\"PATCH-DOC\",{},i);this.send(e)}this.session=new c.ClientSession(this,s,this.id);for(const e of this._pending_messages)this.session.handle(e);this._pending_messages=[],t.logger.debug(\"Created a new session from new pulled doc\"),e(this.session)}else this.session.document.replace_with_json(n),t.logger.debug(\"Updated existing session with new pulled doc\")}catch(e){null===(n=console.trace)||void 0===n||n.call(console,e),t.logger.error(\"Failed to repull session \"+e),s(e)}}_on_open(e,s){t.logger.info(`Websocket connection ${this._number} is now open`),this._current_handler=n=>{this._awaiting_ack_handler(n,e,s)}}_on_message(e){null==this._current_handler&&t.logger.error(\"Got a message with no current handler set\");try{this._receiver.consume(e.data)}catch(e){this._close_bad_protocol(e.toString())}const s=this._receiver.message;if(null!=s){const e=s.problem();null!=e&&this._close_bad_protocol(e),this._current_handler(s)}}_on_close(e,s){t.logger.info(`Lost websocket ${this._number} connection, ${e.code} (${e.reason})`),this.socket=null,this._pending_replies.forEach(e=>e.reject(\"Disconnected\")),this._pending_replies.clear(),this.closed_permanently||this._schedule_reconnect(2e3),s(new Error(`Lost websocket connection, ${e.code} (${e.reason})`))}_on_error(e){t.logger.debug(\"Websocket error on socket \"+this._number);const s=\"Could not open websocket\";t.logger.error(\"Failed to connect to Bokeh server: \"+s),e(new Error(s))}_close_bad_protocol(e){t.logger.error(\"Closing connection: \"+e),null!=this.socket&&this.socket.close(1002,e)}_awaiting_ack_handler(e,s,n){\"ACK\"===e.msgtype()?(this._current_handler=e=>this._steady_state_handler(e),this._repull_session_doc(s,n)):this._close_bad_protocol(\"First message was not an ACK\")}_steady_state_handler(e){const s=e.reqid(),n=this._pending_replies.get(s);n?(this._pending_replies.delete(s),n.resolve(e)):this.session?this.session.handle(e):\"PATCH-DOC\"!=e.msgtype()&&this._pending_messages.push(e)}}n.ClientConnection=h,h.__name__=\"ClientConnection\",n.pull_session=function(e,s,n){return new h(e,s,n).connect()}},\n", + " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const r=e(29);class n{constructor(e,s,t){this.header=e,this.metadata=s,this.content=t,this.buffers=new Map}static assemble(e,s,t){const r=JSON.parse(e),i=JSON.parse(s),a=JSON.parse(t);return new n(r,i,a)}assemble_buffer(e,s){const t=null!=this.header.num_buffers?this.header.num_buffers:0;if(t<=this.buffers.size)throw new Error(\"too many buffers received, expecting \"+t);const{id:r}=JSON.parse(e);this.buffers.set(r,s)}static create(e,s,t={}){const r=n.create_header(e);return new n(r,s,t)}static create_header(e){return{msgid:r.uniqueId(),msgtype:e}}complete(){return null!=this.header&&null!=this.metadata&&null!=this.content&&(null==this.header.num_buffers||this.buffers.size==this.header.num_buffers)}send(e){if((null!=this.header.num_buffers?this.header.num_buffers:0)>0)throw new Error(\"BokehJS only supports receiving buffers, not sending\");const s=JSON.stringify(this.header),t=JSON.stringify(this.metadata),r=JSON.stringify(this.content);e.send(s),e.send(t),e.send(r)}msgid(){return this.header.msgid}msgtype(){return this.header.msgtype}reqid(){return this.header.reqid}problem(){return\"msgid\"in this.header?\"msgtype\"in this.header?null:\"No msgtype in header\":\"No msgid in header\"}}t.Message=n,n.__name__=\"Message\"},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const _=e(385),r=e(8);class i{constructor(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}consume(e){this._current_consumer(e)}_HEADER(e){this._assume_text(e),this.message=null,this._partial=null,this._fragments=[e],this._buf_header=null,this._current_consumer=this._METADATA}_METADATA(e){this._assume_text(e),this._fragments.push(e),this._current_consumer=this._CONTENT}_CONTENT(e){this._assume_text(e),this._fragments.push(e);const[t,s,r]=this._fragments.slice(0,3);this._partial=_.Message.assemble(t,s,r),this._check_complete()}_BUFFER_HEADER(e){this._assume_text(e),this._buf_header=e,this._current_consumer=this._BUFFER_PAYLOAD}_BUFFER_PAYLOAD(e){this._assume_binary(e),this._partial.assemble_buffer(this._buf_header,e),this._check_complete()}_assume_text(e){if(!r.isString(e))throw new Error(\"Expected text fragment but received binary fragment\")}_assume_binary(e){if(!(e instanceof ArrayBuffer))throw new Error(\"Expected binary fragment but received text fragment\")}_check_complete(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER}}s.Receiver=i,i.__name__=\"Receiver\"},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(5),s=e(385),c=e(19);class i{constructor(e,t,n){this._connection=e,this.document=t,this.id=n,this._document_listener=e=>{this._document_changed(e)},this.document.on_change(this._document_listener,!0)}handle(e){const t=e.msgtype();\"PATCH-DOC\"===t?this._handle_patch(e):\"OK\"===t?this._handle_ok(e):\"ERROR\"===t?this._handle_error(e):c.logger.debug(\"Doing nothing with message \"+e.msgtype())}close(){this._connection.close()}_connection_closed(){this.document.remove_on_change(this._document_listener)}async request_server_info(){const e=s.Message.create(\"SERVER-INFO-REQ\",{});return(await this._connection.send_with_reply(e)).content}async force_roundtrip(){await this.request_server_info()}_document_changed(e){if(e.setter_id===this.id)return;const t=e instanceof o.DocumentEventBatch?e.events:[e],n=this.document.create_json_patch(t),c=s.Message.create(\"PATCH-DOC\",{},n);this._connection.send(c)}_handle_patch(e){this.document.apply_json_patch(e.content,e.buffers,this.id)}_handle_ok(e){c.logger.trace(\"Unhandled OK reply to \"+e.reqid())}_handle_error(e){c.logger.error(`Unhandled ERROR reply to ${e.reqid()}: ${e.content.text}`)}}n.ClientSession=i,i.__name__=\"ClientSession\"},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1);var r=this&&this.__asyncValues||function(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var o,t=e[Symbol.asyncIterator];return t?t.call(e):(e=\"function\"==typeof __values?__values(e):e[Symbol.iterator](),o={},n(\"next\"),n(\"throw\"),n(\"return\"),o[Symbol.asyncIterator]=function(){return this},o);function n(t){o[t]=e[t]&&function(o){return new Promise((function(n,r){(function(e,o,t,n){Promise.resolve(n).then((function(o){e({value:o,done:t})}),o)})(n,r,(o=e[t](o)).done,o.value)}))}}};const s=e(5),i=e(386),l=e(19),a=e(72),c=e(13),u=e(381),f=e(382),g=n.__importDefault(e(73)),m=n.__importDefault(e(311)),d=n.__importDefault(e(389));function p(e,o){o.buffers.length>0?e.consume(o.buffers[0].buffer):e.consume(o.content.data);const t=e.message;null!=t&&this.apply_json_patch(t.content,t.buffers)}function _(e,o){if(\"undefined\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){l.logger.info(\"Registering Jupyter comms for target \"+e);const t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(e,t=>{l.logger.info(\"Registering Jupyter comms for target \"+e);const n=new i.Receiver;t.on_msg(p.bind(o,n))})}catch(e){l.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(o.roots()[0].id in t.kernels){l.logger.info(\"Registering JupyterLab comms for target \"+e);const n=t.kernels[o.roots()[0].id];try{n.registerCommTarget(e,t=>{l.logger.info(\"Registering JupyterLab comms for target \"+e);const n=new i.Receiver;t.onMsg=p.bind(o,n)})}catch(e){l.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(\"undefined\"!=typeof google&&null!=google.colab.kernel){l.logger.info(\"Registering Google Colab comms for target \"+e);const t=google.colab.kernel.comms;try{t.registerTarget(e,async t=>{var n,s,a;l.logger.info(\"Registering Google Colab comms for target \"+e);const c=new i.Receiver;try{for(var u,f=r(t.messages);!(u=await f.next()).done;){const e=u.value,t={data:e.data},n=[];for(const o of null!==(a=e.buffers)&&void 0!==a?a:[])n.push(new DataView(o));const r={content:t,buffers:n};p.bind(o)(c,r)}}catch(e){n={error:e}}finally{try{u&&!u.done&&(s=f.return)&&await s.call(f)}finally{if(n)throw n.error}}})}catch(e){l.logger.warn(`Google Colab comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else console.warn(\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest @bokeh/jupyter_bokeh extension is installed. In an exported notebook this warning is expected.\")}a.stylesheet.append(g.default),a.stylesheet.append(m.default),a.stylesheet.append(d.default),t.kernels={},t.embed_items_notebook=function(e,o){if(1!=c.size(e))throw new Error(\"embed_items_notebook expects exactly one document in docs_json\");const t=s.Document.from_json(c.values(e)[0]);for(const e of o){null!=e.notebook_comms_target&&_(e.notebook_comms_target,t);const o=f._resolve_element(e),n=f._resolve_root_elements(e);u.add_document_standalone(t,o,n)}}},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});o.default=\"\\n/* notebook specific tweaks so no black outline and matching padding\\n/* can't be wrapped inside bk-root. here are the offending jupyter lines:\\n/* https://github.com/jupyter/notebook/blob/master/notebook/static/notebook/less/renderedhtml.less#L59-L76 */\\n.rendered_html .bk-root .bk-tooltip table,\\n.rendered_html .bk-root .bk-tooltip tr,\\n.rendered_html .bk-root .bk-tooltip th,\\n.rendered_html .bk-root .bk-tooltip td {\\n border: none;\\n padding: 1px;\\n}\\n\"},\n", + " function _(e,t,_){Object.defineProperty(_,\"__esModule\",{value:!0});const o=e(1);o.__exportStar(e(385),_),o.__exportStar(e(386),_)},\n", + " function _(e,t,n){function s(){const e=document.getElementsByTagName(\"body\")[0],t=document.getElementsByClassName(\"bokeh-test-div\");1==t.length&&(e.removeChild(t[0]),delete t[0]);const n=document.createElement(\"div\");n.classList.add(\"bokeh-test-div\"),n.style.display=\"none\",e.insertBefore(n,e.firstChild)}Object.defineProperty(n,\"__esModule\",{value:!0}),n.results={},n.init=function(){s()},n.record0=function(e,t){n.results[e]=t},n.record=function(e,t){n.results[e]=t,s()},n.count=function(e){null==n.results[e]&&(n.results[e]=0),n.results[e]+=1,s()}},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0}),o.safely=function(e,t=!1){try{return e()}catch(e){if(function(e){const t=document.createElement(\"div\");t.style.backgroundColor=\"#f2dede\",t.style.border=\"1px solid #a94442\",t.style.borderRadius=\"4px\",t.style.display=\"inline-block\",t.style.fontFamily=\"sans-serif\",t.style.marginTop=\"5px\",t.style.minWidth=\"200px\",t.style.padding=\"5px 5px 5px 10px\",t.classList.add(\"bokeh-error-box-into-flames\");const o=document.createElement(\"span\");o.style.backgroundColor=\"#a94442\",o.style.borderRadius=\"0px 4px 0px 0px\",o.style.color=\"white\",o.style.cursor=\"pointer\",o.style.cssFloat=\"right\",o.style.fontSize=\"0.8em\",o.style.margin=\"-6px -6px 0px 0px\",o.style.padding=\"2px 5px 4px 5px\",o.title=\"close\",o.setAttribute(\"aria-label\",\"close\"),o.appendChild(document.createTextNode(\"x\")),o.addEventListener(\"click\",()=>r.removeChild(t));const n=document.createElement(\"h3\");n.style.color=\"#a94442\",n.style.margin=\"8px 0px 0px 0px\",n.style.padding=\"0px\",n.appendChild(document.createTextNode(\"Bokeh Error\"));const l=document.createElement(\"pre\");l.style.whiteSpace=\"unset\",l.style.overflowX=\"auto\";const s=e instanceof Error?e.message:e;l.appendChild(document.createTextNode(s)),t.appendChild(o),t.appendChild(n),t.appendChild(l);const r=document.getElementsByTagName(\"body\")[0];r.insertBefore(t,r.firstChild)}(e),t)return;throw e}}},\n", + " ], 0, {\"main\":0,\"tslib\":1,\"index\":2,\"version\":3,\"embed/index\":4,\"document/index\":5,\"document/document\":6,\"base\":7,\"core/util/types\":8,\"core/util/array\":9,\"core/util/math\":10,\"core/util/assert\":11,\"core/util/arrayable\":12,\"core/util/object\":13,\"core/has_props\":14,\"core/signaling\":15,\"core/util/callback\":16,\"core/util/refs\":17,\"core/properties\":18,\"core/logging\":19,\"core/enums\":20,\"core/kinds\":21,\"core/util/color\":22,\"core/util/svg_colors\":23,\"core/types\":24,\"core/util/eq\":25,\"core/util/data_structures\":26,\"core/settings\":27,\"core/property_mixins\":28,\"core/util/string\":29,\"core/util/ndarray\":30,\"core/util/serialization\":31,\"core/util/compat\":32,\"core/util/pretty\":33,\"models/index\":34,\"models/annotations/index\":35,\"models/annotations/annotation\":36,\"core/util/projections\":37,\"models/renderers/renderer\":70,\"core/view\":71,\"core/dom\":72,\"styles/root.css\":73,\"core/visuals\":74,\"core/util/svg\":75,\"core/util/affine\":76,\"models/canvas/canvas\":77,\"core/dom_view\":78,\"core/util/bbox\":79,\"core/util/canvas\":80,\"model\":81,\"models/canvas/coordinates\":82,\"models/annotations/arrow\":83,\"models/annotations/arrow_head\":84,\"models/sources/column_data_source\":85,\"models/sources/columnar_data_source\":86,\"models/sources/data_source\":87,\"models/selections/selection\":88,\"core/selection_manager\":89,\"models/renderers/glyph_renderer\":90,\"models/renderers/data_renderer\":91,\"models/glyphs/line\":92,\"models/glyphs/xy_glyph\":93,\"models/glyphs/glyph\":94,\"core/util/spatial\":95,\"models/ranges/factor_range\":98,\"models/ranges/range\":99,\"models/glyphs/utils\":100,\"core/hittest\":101,\"models/glyphs/webgl/line\":102,\"models/glyphs/webgl/utils/index\":103,\"models/glyphs/webgl/utils/program\":104,\"models/glyphs/webgl/utils/buffer\":105,\"models/glyphs/webgl/utils/texture\":106,\"models/glyphs/webgl/base\":107,\"models/glyphs/webgl/line.vert\":108,\"models/glyphs/webgl/line.frag\":109,\"models/glyphs/patch\":110,\"models/glyphs/harea\":111,\"models/glyphs/area\":112,\"models/glyphs/varea\":113,\"models/sources/cds_view\":114,\"core/build_views\":115,\"models/renderers/graph_renderer\":116,\"models/graphs/graph_hit_test_policy\":117,\"models/selections/interaction_policy\":118,\"core/util/typed_array\":119,\"core/util/set\":120,\"document/events\":121,\"models/annotations/band\":122,\"models/annotations/upper_lower\":123,\"models/annotations/box_annotation\":124,\"models/annotations/color_bar\":125,\"models/tickers/basic_ticker\":126,\"models/tickers/adaptive_ticker\":127,\"models/tickers/continuous_ticker\":128,\"models/tickers/ticker\":129,\"models/formatters/basic_tick_formatter\":130,\"models/formatters/tick_formatter\":131,\"models/mappers/index\":132,\"models/mappers/categorical_color_mapper\":133,\"models/mappers/categorical_mapper\":134,\"models/mappers/color_mapper\":135,\"models/mappers/mapper\":136,\"models/transforms/transform\":137,\"models/mappers/categorical_marker_mapper\":138,\"models/mappers/categorical_pattern_mapper\":139,\"models/mappers/continuous_color_mapper\":140,\"models/mappers/linear_color_mapper\":141,\"models/mappers/log_color_mapper\":142,\"models/mappers/scanning_color_mapper\":143,\"models/mappers/eqhist_color_mapper\":144,\"models/scales/linear_scale\":145,\"models/scales/continuous_scale\":146,\"models/scales/scale\":147,\"models/transforms/index\":148,\"models/transforms/customjs_transform\":149,\"models/transforms/dodge\":150,\"models/transforms/range_transform\":151,\"models/transforms/interpolator\":152,\"models/transforms/jitter\":153,\"models/transforms/linear_interpolator\":154,\"models/transforms/step_interpolator\":155,\"models/scales/linear_interpolation_scale\":156,\"models/scales/log_scale\":157,\"models/ranges/range1d\":158,\"core/util/text\":159,\"models/annotations/label\":160,\"models/annotations/text_annotation\":161,\"models/annotations/label_set\":162,\"models/annotations/legend\":163,\"models/annotations/legend_item\":164,\"core/vectorization\":165,\"models/annotations/poly_annotation\":166,\"models/annotations/slope\":167,\"models/annotations/span\":168,\"models/annotations/title\":169,\"models/annotations/toolbar_panel\":170,\"models/annotations/tooltip\":171,\"styles/tooltips\":172,\"styles/mixins\":173,\"styles/tooltips.css\":174,\"models/annotations/whisker\":175,\"models/axes/index\":176,\"models/axes/axis\":177,\"models/renderers/guide_renderer\":178,\"models/axes/categorical_axis\":179,\"models/tickers/categorical_ticker\":180,\"models/formatters/categorical_tick_formatter\":181,\"models/axes/continuous_axis\":182,\"models/axes/datetime_axis\":183,\"models/axes/linear_axis\":184,\"models/formatters/datetime_tick_formatter\":185,\"core/util/templating\":187,\"models/tickers/datetime_ticker\":190,\"models/tickers/composite_ticker\":191,\"models/tickers/days_ticker\":192,\"models/tickers/single_interval_ticker\":193,\"models/tickers/util\":194,\"models/tickers/months_ticker\":195,\"models/tickers/years_ticker\":196,\"models/axes/log_axis\":197,\"models/formatters/log_tick_formatter\":198,\"models/tickers/log_ticker\":199,\"models/axes/mercator_axis\":200,\"models/formatters/mercator_tick_formatter\":201,\"models/tickers/mercator_ticker\":202,\"models/callbacks/index\":203,\"models/callbacks/customjs\":204,\"models/callbacks/callback\":205,\"models/callbacks/open_url\":206,\"models/canvas/index\":207,\"models/canvas/cartesian_frame\":208,\"models/scales/categorical_scale\":209,\"models/ranges/data_range1d\":210,\"models/ranges/data_range\":211,\"core/layout/index\":212,\"core/layout/types\":213,\"core/layout/layoutable\":214,\"core/layout/alignments\":215,\"core/layout/grid\":216,\"core/layout/html\":217,\"models/expressions/index\":218,\"models/expressions/expression\":219,\"models/expressions/stack\":220,\"models/expressions/cumsum\":221,\"models/filters/index\":222,\"models/filters/boolean_filter\":223,\"models/filters/filter\":224,\"models/filters/customjs_filter\":225,\"models/filters/group_filter\":226,\"models/filters/index_filter\":227,\"models/formatters/index\":228,\"models/formatters/func_tick_formatter\":229,\"models/formatters/numeral_tick_formatter\":230,\"models/formatters/printf_tick_formatter\":231,\"models/glyphs/index\":232,\"models/glyphs/annular_wedge\":233,\"models/glyphs/annulus\":234,\"models/glyphs/arc\":235,\"models/glyphs/bezier\":236,\"models/glyphs/circle\":237,\"models/glyphs/webgl/markers\":238,\"models/glyphs/webgl/markers.vert\":239,\"models/glyphs/webgl/markers.frag\":240,\"models/glyphs/center_rotatable\":241,\"models/glyphs/ellipse\":242,\"models/glyphs/ellipse_oval\":243,\"models/glyphs/hbar\":244,\"models/glyphs/box\":245,\"models/glyphs/hex_tile\":246,\"models/glyphs/image\":247,\"models/glyphs/image_base\":248,\"models/glyphs/image_rgba\":249,\"models/glyphs/image_url\":250,\"core/util/image\":251,\"models/glyphs/multi_line\":252,\"models/glyphs/multi_polygons\":253,\"models/glyphs/oval\":254,\"models/glyphs/patches\":255,\"models/glyphs/quad\":256,\"models/glyphs/quadratic\":257,\"models/glyphs/ray\":258,\"models/glyphs/rect\":259,\"models/glyphs/segment\":260,\"models/glyphs/step\":261,\"models/glyphs/text\":262,\"models/glyphs/vbar\":263,\"models/glyphs/wedge\":264,\"models/graphs/index\":265,\"models/graphs/layout_provider\":266,\"models/graphs/static_layout_provider\":267,\"models/grids/index\":268,\"models/grids/grid\":269,\"models/layouts/index\":270,\"models/layouts/box\":271,\"models/layouts/layout_dom\":272,\"styles/root\":273,\"models/layouts/column\":274,\"models/layouts/grid_box\":275,\"models/layouts/html_box\":276,\"models/layouts/row\":277,\"models/layouts/spacer\":278,\"models/layouts/tabs\":279,\"styles/tabs\":280,\"styles/buttons\":281,\"styles/menus\":282,\"styles/buttons.css\":283,\"styles/menus.css\":284,\"styles/tabs.css\":285,\"models/layouts/widget_box\":286,\"models/markers/index\":287,\"models/markers/defs\":288,\"models/markers/marker\":289,\"models/markers/scatter\":290,\"models/plots/index\":291,\"models/plots/gmap_plot\":292,\"models/plots/plot\":293,\"models/tools/toolbar\":294,\"models/tools/inspectors/inspect_tool\":295,\"models/tools/button_tool\":296,\"models/tools/tool\":298,\"styles/toolbar\":299,\"styles/toolbar.css\":300,\"styles/icons.css\":301,\"core/util/menus\":302,\"core/util/iterator\":303,\"models/tools/on_off_button\":304,\"models/tools/toolbar_base\":305,\"models/tools/gestures/gesture_tool\":306,\"models/tools/actions/action_tool\":307,\"models/tools/actions/help_tool\":308,\"styles/icons\":309,\"styles/logo\":310,\"styles/logo.css\":311,\"models/plots/plot_canvas\":312,\"core/bokeh_events\":313,\"core/ui_events\":314,\"core/util/wheel\":315,\"core/util/throttle\":316,\"core/layout/border\":317,\"core/layout/side_panel\":318,\"models/plots/gmap_plot_canvas\":319,\"models/ranges/index\":320,\"models/renderers/index\":321,\"models/scales/index\":322,\"models/selections/index\":323,\"models/sources/index\":324,\"models/sources/server_sent_data_source\":325,\"models/sources/web_data_source\":326,\"models/sources/ajax_data_source\":327,\"models/sources/geojson_data_source\":328,\"models/tickers/index\":329,\"models/tickers/fixed_ticker\":330,\"models/tiles/index\":331,\"models/tiles/bbox_tile_source\":332,\"models/tiles/mercator_tile_source\":333,\"models/tiles/tile_source\":334,\"models/tiles/tile_utils\":335,\"models/tiles/quadkey_tile_source\":336,\"models/tiles/tile_renderer\":337,\"models/tiles/wmts_tile_source\":338,\"styles/tiles\":339,\"styles/tiles.css\":340,\"models/tiles/tms_tile_source\":341,\"models/textures/index\":342,\"models/textures/canvas_texture\":343,\"models/textures/texture\":344,\"models/textures/image_url_texture\":345,\"models/tools/index\":346,\"models/tools/actions/custom_action\":347,\"models/tools/actions/redo_tool\":348,\"models/tools/actions/reset_tool\":349,\"models/tools/actions/save_tool\":350,\"models/tools/actions/undo_tool\":351,\"models/tools/actions/zoom_in_tool\":352,\"models/tools/actions/zoom_base_tool\":353,\"core/util/zoom\":354,\"models/tools/actions/zoom_out_tool\":355,\"models/tools/edit/edit_tool\":356,\"models/tools/edit/box_edit_tool\":357,\"models/tools/edit/freehand_draw_tool\":358,\"models/tools/edit/point_draw_tool\":359,\"models/tools/edit/poly_draw_tool\":360,\"models/tools/edit/poly_tool\":361,\"models/tools/edit/poly_edit_tool\":362,\"models/tools/gestures/box_select_tool\":363,\"models/tools/gestures/select_tool\":364,\"models/tools/util\":365,\"models/tools/gestures/box_zoom_tool\":366,\"models/tools/gestures/lasso_select_tool\":367,\"models/tools/gestures/poly_select_tool\":368,\"models/tools/edit/line_edit_tool\":369,\"models/tools/edit/line_tool\":370,\"models/tools/gestures/pan_tool\":371,\"models/tools/gestures/range_tool\":372,\"models/tools/gestures/tap_tool\":373,\"models/tools/gestures/wheel_pan_tool\":374,\"models/tools/gestures/wheel_zoom_tool\":375,\"models/tools/inspectors/crosshair_tool\":376,\"models/tools/inspectors/customjs_hover\":377,\"models/tools/inspectors/hover_tool\":378,\"models/tools/tool_proxy\":379,\"models/tools/toolbar_box\":380,\"embed/standalone\":381,\"embed/dom\":382,\"embed/server\":383,\"client/connection\":384,\"protocol/message\":385,\"protocol/receiver\":386,\"client/session\":387,\"embed/notebook\":388,\"styles/notebook.css\":389,\"protocol/index\":390,\"testing\":391,\"safely\":392}, {});\n", + " })\n", + "\n", + "\n", + " /* END bokeh.min.js */\n", + " },\n", + " \n", + " function(Bokeh) {\n", + " /* BEGIN bokeh-widgets.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2020, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " factory(root[\"Bokeh\"], \"2.2.3\");\n", + " })(this, function(Bokeh, version) {\n", + " var define;\n", + " return (function(modules, entry, aliases, externals) {\n", + " const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n", + " if (bokeh != null) {\n", + " return bokeh.register_plugin(modules, entry, aliases);\n", + " } else {\n", + " throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n", + " }\n", + " })\n", + " ({\n", + " 402: function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(1).__importStar(e(403));o.Widgets=r;e(7).register_models(r)},\n", + " 403: function _(r,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});var a=r(404);t.AbstractButton=a.AbstractButton;var o=r(407);t.AbstractIcon=o.AbstractIcon;var u=r(408);t.AutocompleteInput=u.AutocompleteInput;var n=r(413);t.Button=n.Button;var i=r(414);t.CheckboxButtonGroup=i.CheckboxButtonGroup;var v=r(416);t.CheckboxGroup=v.CheckboxGroup;var p=r(418);t.ColorPicker=p.ColorPicker;var c=r(419);t.DatePicker=c.DatePicker;var l=r(422);t.DateRangeSlider=l.DateRangeSlider;var d=r(428);t.DateSlider=d.DateSlider;var I=r(429);t.Div=I.Div;var g=r(433);t.Dropdown=g.Dropdown;var S=r(434);t.FileInput=S.FileInput;var P=r(410);t.InputWidget=P.InputWidget;var k=r(430);t.Markup=k.Markup;var x=r(435);t.MultiSelect=x.MultiSelect;var D=r(436);t.Paragraph=D.Paragraph;var b=r(437);t.PasswordInput=b.PasswordInput;var s=r(438);t.MultiChoice=s.MultiChoice;var h=r(441);t.NumericInput=h.NumericInput;var A=r(444);t.PreText=A.PreText;var B=r(445);t.RadioButtonGroup=B.RadioButtonGroup;var C=r(446);t.RadioGroup=C.RadioGroup;var G=r(447);t.RangeSlider=G.RangeSlider;var R=r(448);t.Select=R.Select;var T=r(449);t.Slider=T.Slider;var M=r(450);t.Spinner=M.Spinner;var m=r(409);t.TextInput=m.TextInput;var w=r(451);t.TextAreaInput=w.TextAreaInput;var W=r(452);t.Toggle=W.Toggle;var _=r(472);t.Widget=_.Widget},\n", + " 404: function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=t(1),s=i.__importStar(t(18)),o=t(72),l=t(115),r=t(405),_=t(281),c=i.__importDefault(t(283));class u extends r.ControlView{*controls(){yield this.button_el}async lazy_initialize(){await super.lazy_initialize();const{icon:t}=this.model;null!=t&&(this.icon_view=await l.build_view(t,{parent:this}))}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render())}remove(){null!=this.icon_view&&this.icon_view.remove(),super.remove()}styles(){return[...super.styles(),c.default]}_render_button(...t){return o.button({type:\"button\",disabled:this.model.disabled,class:[_.bk_btn,_.bk_btn_type(this.model.button_type)]},...t)}render(){super.render(),this.button_el=this._render_button(this.model.label),this.button_el.addEventListener(\"click\",()=>this.click()),null!=this.icon_view&&(o.prepend(this.button_el,this.icon_view.el,o.nbsp()),this.icon_view.render()),this.group_el=o.div({class:_.bk_btn_group},this.button_el),this.el.appendChild(this.group_el)}click(){}}n.AbstractButtonView=u,u.__name__=\"AbstractButtonView\";class a extends r.Control{constructor(t){super(t)}static init_AbstractButton(){this.define({label:[s.String,\"Button\"],icon:[s.Instance],button_type:[s.ButtonType,\"default\"]})}}n.AbstractButton=a,a.__name__=\"AbstractButton\",a.init_AbstractButton()},\n", + " 405: function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(472),n=e(72);class i extends s.WidgetView{connect_signals(){super.connect_signals();const e=this.model.properties;this.on_change(e.disabled,()=>{for(const e of this.controls())n.toggle_attribute(e,\"disabled\",this.model.disabled)})}}o.ControlView=i,i.__name__=\"ControlView\";class l extends s.Widget{constructor(e){super(e)}}o.Control=l,l.__name__=\"Control\"},\n", + " 472: function _(i,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=i(1),n=i(276),r=o.__importStar(i(18));class _ extends n.HTMLBoxView{_width_policy(){return\"horizontal\"==this.model.orientation?super._width_policy():\"fixed\"}_height_policy(){return\"horizontal\"==this.model.orientation?\"fixed\":super._height_policy()}box_sizing(){const i=super.box_sizing();return\"horizontal\"==this.model.orientation?null==i.width&&(i.width=this.model.default_size):null==i.height&&(i.height=this.model.default_size),i}}t.WidgetView=_,_.__name__=\"WidgetView\";class s extends n.HTMLBox{constructor(i){super(i)}static init_Widget(){this.define({orientation:[r.Orientation,\"horizontal\"],default_size:[r.Number,300]}),this.override({margin:[5,5,5,5]})}}t.Widget=s,s.__name__=\"Widget\",s.init_Widget()},\n", + " 407: function _(e,t,c){Object.defineProperty(c,\"__esModule\",{value:!0});const s=e(81),n=e(78);class o extends n.DOMView{}c.AbstractIconView=o,o.__name__=\"AbstractIconView\";class _ extends s.Model{constructor(e){super(e)}}c.AbstractIcon=_,_.__name__=\"AbstractIcon\"},\n", + " 408: function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=e(1),s=e(409),h=e(72),_=i.__importStar(e(18)),o=e(10),u=e(173),r=e(282),c=i.__importDefault(e(284));class l extends s.TextInputView{constructor(){super(...arguments),this._open=!1,this._last_value=\"\",this._hover_index=0}styles(){return[...super.styles(),c.default]}render(){super.render(),this.input_el.addEventListener(\"keydown\",e=>this._keydown(e)),this.input_el.addEventListener(\"keyup\",e=>this._keyup(e)),this.menu=h.div({class:[r.bk_menu,u.bk_below]}),this.menu.addEventListener(\"click\",e=>this._menu_click(e)),this.menu.addEventListener(\"mouseover\",e=>this._menu_hover(e)),this.el.appendChild(this.menu),h.undisplay(this.menu)}change_input(){this._open&&this.menu.children.length>0&&(this.model.value=this.menu.children[this._hover_index].textContent,this.input_el.focus(),this._hide_menu())}_update_completions(e){h.empty(this.menu);for(const t of e){const e=h.div({},t);this.menu.appendChild(e)}e.length>0&&this.menu.children[0].classList.add(u.bk_active)}_show_menu(){if(!this._open){this._open=!0,this._hover_index=0,this._last_value=this.model.value,h.display(this.menu);const e=t=>{const{target:n}=t;n instanceof HTMLElement&&!this.el.contains(n)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,h.undisplay(this.menu))}_menu_click(e){e.target!=e.currentTarget&&e.target instanceof Element&&(this.model.value=e.target.textContent,this.input_el.focus(),this._hide_menu())}_menu_hover(e){if(e.target!=e.currentTarget&&e.target instanceof Element){let t=0;for(t=0;t0&&(this.menu.children[this._hover_index].classList.remove(u.bk_active),this._hover_index=o.clamp(e,0,t-1),this.menu.children[this._hover_index].classList.add(u.bk_active))}_keydown(e){}_keyup(e){switch(e.keyCode){case h.Keys.Enter:this.change_input();break;case h.Keys.Esc:this._hide_menu();break;case h.Keys.Up:this._bump_hover(this._hover_index-1);break;case h.Keys.Down:this._bump_hover(this._hover_index+1);break;default:{const e=this.input_el.value;if(e.lengthe:e=>e.toLowerCase();for(const n of this.model.completions)i(n).startsWith(i(e))&&t.push(n);this._update_completions(t),0==t.length?this._hide_menu():this._show_menu()}}}}n.AutocompleteInputView=l,l.__name__=\"AutocompleteInputView\";class a extends s.TextInput{constructor(e){super(e)}static init_AutocompleteInput(){this.prototype.default_view=l,this.define({completions:[_.Array,[]],min_characters:[_.Int,2],case_sensitive:[_.Boolean,!0]})}}n.AutocompleteInput=a,a.__name__=\"AutocompleteInput\",a.init_AutocompleteInput()},\n", + " 409: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(410),l=e(72),p=n.__importStar(e(18)),u=e(412);class a extends s.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,()=>this.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.value.change,()=>this.input_el.value=this.model.value),this.connect(this.model.properties.value_input.change,()=>this.input_el.value=this.model.value_input),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled),this.connect(this.model.properties.placeholder.change,()=>this.input_el.placeholder=this.model.placeholder)}render(){super.render(),this.input_el=l.input({type:\"text\",class:u.bk_input,name:this.model.name,value:this.model.value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.input_el.addEventListener(\"input\",()=>this.change_input_oninput()),this.group_el.appendChild(this.input_el)}change_input(){this.model.value=this.input_el.value,super.change_input()}change_input_oninput(){this.model.value_input=this.input_el.value,super.change_input()}}i.TextInputView=a,a.__name__=\"TextInputView\";class h extends s.InputWidget{constructor(e){super(e)}static init_TextInput(){this.prototype.default_view=a,this.define({value:[p.String,\"\"],value_input:[p.String,\"\"],placeholder:[p.String,\"\"]})}}i.TextInput=h,h.__name__=\"TextInput\",h.init_TextInput()},\n", + " 410: function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),l=t(405),s=t(72),_=n.__importStar(t(18)),o=n.__importDefault(t(411)),r=t(412);class p extends l.ControlView{*controls(){yield this.input_el}connect_signals(){super.connect_signals(),this.connect(this.model.properties.title.change,()=>{this.label_el.textContent=this.model.title})}styles(){return[...super.styles(),o.default]}render(){super.render();const{title:t}=this.model;this.label_el=s.label({style:{display:0==t.length?\"none\":\"\"}},t),this.group_el=s.div({class:r.bk_input_group},this.label_el),this.el.appendChild(this.group_el)}change_input(){}}i.InputWidgetView=p,p.__name__=\"InputWidgetView\";class u extends l.Control{constructor(t){super(t)}static init_InputWidget(){this.define({title:[_.String,\"\"]})}}i.InputWidget=u,u.__name__=\"InputWidget\",u.init_InputWidget()},\n", + " 411: function _(n,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root .bk-input {\\n display: inline-block;\\n width: 100%;\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n min-height: 31px;\\n padding: 0 12px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n}\\n.bk-root .bk-input:focus {\\n border-color: #66afe9;\\n outline: 0;\\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\\n}\\n.bk-root .bk-input::placeholder,\\n.bk-root .bk-input:-ms-input-placeholder,\\n.bk-root .bk-input::-moz-placeholder,\\n.bk-root .bk-input::-webkit-input-placeholder {\\n color: #999;\\n opacity: 1;\\n}\\n.bk-root .bk-input[disabled] {\\n cursor: not-allowed;\\n background-color: #eee;\\n opacity: 1;\\n}\\n.bk-root select:not([multiple]).bk-input,\\n.bk-root select:not([size]).bk-input {\\n height: auto;\\n appearance: none;\\n -webkit-appearance: none;\\n background-image: url(\\'data:image/svg+xml;utf8,\\');\\n background-position: right 0.5em center;\\n background-size: 8px 6px;\\n background-repeat: no-repeat;\\n}\\n.bk-root select[multiple].bk-input,\\n.bk-root select[size].bk-input,\\n.bk-root textarea.bk-input {\\n height: auto;\\n}\\n.bk-root .bk-input-group {\\n width: 100%;\\n height: 100%;\\n display: inline-flex;\\n display: -webkit-inline-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: start;\\n -webkit-align-items: start;\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n white-space: nowrap;\\n}\\n.bk-root .bk-input-group.bk-inline {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-input-group.bk-inline > *:not(:first-child) {\\n margin-left: 5px;\\n}\\n.bk-root .bk-input-group input[type=\"checkbox\"] + span,\\n.bk-root .bk-input-group input[type=\"radio\"] + span {\\n position: relative;\\n top: -2px;\\n margin-left: 3px;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper {\\n display: inherit;\\n width: inherit;\\n height: inherit;\\n position: relative;\\n overflow: hidden;\\n padding: 0;\\n vertical-align: middle;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper input {\\n padding-right: 20px;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn {\\n position: absolute;\\n display: block;\\n height: 50%;\\n min-height: 0;\\n min-width: 0;\\n width: 30px;\\n padding: 0;\\n margin: 0;\\n right: 0;\\n border: none;\\n background: none;\\n cursor: pointer;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn:before {\\n content: \"\";\\n display: inline-block;\\n transform: translateY(-50%);\\n border-left: 5px solid transparent;\\n border-right: 5px solid transparent;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up {\\n top: 0;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:before {\\n border-bottom: 5px solid black;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:disabled:before {\\n border-bottom-color: grey;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down {\\n bottom: 0;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:before {\\n border-top: 5px solid black;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:disabled:before {\\n border-top-color: grey;\\n}\\n'},\n", + " 412: function _(u,e,n){Object.defineProperty(n,\"__esModule\",{value:!0}),n.bk_input=\"bk-input\",n.bk_input_group=\"bk-input-group\"},\n", + " 413: function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=t(404),i=t(313);class s extends o.AbstractButtonView{click(){this.model.trigger_event(new i.ButtonClick),super.click()}}n.ButtonView=s,s.__name__=\"ButtonView\";class u extends o.AbstractButton{constructor(t){super(t)}static init_Button(){this.prototype.default_view=s,this.override({label:\"Button\"})}}n.Button=u,u.__name__=\"Button\",u.init_Button()},\n", + " 414: function _(t,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const i=t(1),c=t(415),s=t(72),n=i.__importStar(t(18)),a=t(173);class u extends c.ButtonGroupView{get active(){return new Set(this.model.active)}change_active(t){const{active:e}=this;e.has(t)?e.delete(t):e.add(t),this.model.active=[...e].sort()}_update_active(){const{active:t}=this;this._buttons.forEach((e,o)=>{s.classes(e).toggle(a.bk_active,t.has(o))})}}o.CheckboxButtonGroupView=u,u.__name__=\"CheckboxButtonGroupView\";class r extends c.ButtonGroup{constructor(t){super(t)}static init_CheckboxButtonGroup(){this.prototype.default_view=u,this.define({active:[n.Array,[]]})}}o.CheckboxButtonGroup=r,r.__name__=\"CheckboxButtonGroup\",r.init_CheckboxButtonGroup()},\n", + " 415: function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=t(1),o=t(405),i=t(72),r=n.__importStar(t(18)),_=t(281),u=n.__importDefault(t(283));class a extends o.ControlView{*controls(){yield*this._buttons}connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.button_type,()=>this.render()),this.on_change(t.labels,()=>this.render()),this.on_change(t.active,()=>this._update_active())}styles(){return[...super.styles(),u.default]}render(){super.render(),this._buttons=this.model.labels.map((t,e)=>{const s=i.div({class:[_.bk_btn,_.bk_btn_type(this.model.button_type)],disabled:this.model.disabled},t);return s.addEventListener(\"click\",()=>this.change_active(e)),s}),this._update_active();const t=i.div({class:_.bk_btn_group},this._buttons);this.el.appendChild(t)}}s.ButtonGroupView=a,a.__name__=\"ButtonGroupView\";class l extends o.Control{constructor(t){super(t)}static init_ButtonGroup(){this.define({labels:[r.Array,[]],button_type:[r.ButtonType,\"default\"]})}}s.ButtonGroup=l,l.__name__=\"ButtonGroup\",l.init_ButtonGroup()},\n", + " 416: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(417),o=e(72),c=e(9),a=n.__importStar(e(18)),l=e(173),d=e(412);class r extends s.InputGroupView{render(){super.render();const e=o.div({class:[d.bk_input_group,this.model.inline?l.bk_inline:null]});this.el.appendChild(e);const{active:t,labels:i}=this.model;this._inputs=[];for(let n=0;nthis.change_active(n)),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),c.includes(t,n)&&(s.checked=!0);const a=o.label({},s,o.span({},i[n]));e.appendChild(a)}}change_active(e){const t=new Set(this.model.active);t.has(e)?t.delete(e):t.add(e),this.model.active=[...t].sort()}}i.CheckboxGroupView=r,r.__name__=\"CheckboxGroupView\";class p extends s.InputGroup{constructor(e){super(e)}static init_CheckboxGroup(){this.prototype.default_view=r,this.define({active:[a.Array,[]],labels:[a.Array,[]],inline:[a.Boolean,!1]})}}i.CheckboxGroup=p,p.__name__=\"CheckboxGroup\",p.init_CheckboxGroup()},\n", + " 417: function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=e(1),o=e(405),r=s.__importDefault(e(411));class u extends o.ControlView{*controls(){yield*this._inputs}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render())}styles(){return[...super.styles(),r.default]}}n.InputGroupView=u,u.__name__=\"InputGroupView\";class _ extends o.Control{constructor(e){super(e)}}n.InputGroup=_,_.__name__=\"InputGroup\"},\n", + " 418: function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),o=e(410),s=e(72),l=n.__importStar(e(18)),r=e(412);class c extends o.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,()=>this.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.color.change,()=>this.input_el.value=this.model.color),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled)}render(){super.render(),this.input_el=s.input({type:\"color\",class:r.bk_input,name:this.model.name,value:this.model.color,disabled:this.model.disabled}),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.input_el)}change_input(){this.model.color=this.input_el.value,super.change_input()}}t.ColorPickerView=c,c.__name__=\"ColorPickerView\";class d extends o.InputWidget{constructor(e){super(e)}static init_ColorPicker(){this.prototype.default_view=c,this.define({color:[l.Color,\"#000000\"]})}}t.ColorPicker=d,d.__name__=\"ColorPicker\",d.init_ColorPicker()},\n", + " 419: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=n.__importDefault(e(420)),a=e(410),l=e(72),o=n.__importStar(e(18)),r=e(8),d=e(412),c=n.__importDefault(e(421));function u(e){const t=[];for(const i of e)if(r.isString(i))t.push(i);else{const[e,n]=i;t.push({from:e,to:n})}return t}class _ extends a.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,min_date:t,max_date:i,disabled_dates:n,enabled_dates:s,position:a,inline:l}=this.model.properties;this.connect(e.change,()=>{var t;return null===(t=this._picker)||void 0===t?void 0:t.setDate(e.value())}),this.connect(t.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"minDate\",t.value())}),this.connect(i.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"maxDate\",i.value())}),this.connect(n.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"disable\",n.value())}),this.connect(s.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"enable\",s.value())}),this.connect(a.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"position\",a.value())}),this.connect(l.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"inline\",l.value())})}remove(){var e;null===(e=this._picker)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),c.default]}render(){null==this._picker&&(super.render(),this.input_el=l.input({type:\"text\",class:d.bk_input,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el),this._picker=s.default(this.input_el,{defaultDate:this.model.value,minDate:this.model.min_date,maxDate:this.model.max_date,inline:this.model.inline,position:this.model.position,disable:u(this.model.disabled_dates),enable:u(this.model.enabled_dates),onChange:(e,t,i)=>this._on_change(e,t,i)}))}_on_change(e,t,i){this.model.value=t,this.change_input()}}i.DatePickerView=_,_.__name__=\"DatePickerView\";class h extends a.InputWidget{constructor(e){super(e)}static init_DatePicker(){this.prototype.default_view=_,this.define({value:[o.Any],min_date:[o.Any],max_date:[o.Any],disabled_dates:[o.Any,[]],enabled_dates:[o.Any,[]],position:[o.CalendarPosition,\"auto\"],inline:[o.Boolean,!1]})}}i.DatePicker=h,h.__name__=\"DatePicker\",h.init_DatePicker()},\n", + " 420: function _(e,t,n){\n", + " /* flatpickr v4.6.3, @license MIT */var a,i;a=this,i=function(){\"use strict\";\n", + " /*! *****************************************************************************\n", + " Copyright (c) Microsoft Corporation. All rights reserved.\n", + " Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\n", + " this file except in compliance with the License. You may obtain a copy of the\n", + " License at http://www.apache.org/licenses/LICENSE-2.0\n", + " \n", + " THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n", + " KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\n", + " WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\n", + " MERCHANTABLITY OR NON-INFRINGEMENT.\n", + " \n", + " See the Apache Version 2.0 License for specific language governing permissions\n", + " and limitations under the License.\n", + " ***************************************************************************** */var e=function(){return(e=Object.assign||function(e){for(var t,n=1,a=arguments.length;n\",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:\"auto\",positionElement:void 0,prevArrow:\"\",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},a={weekdays:{shorthand:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],longhand:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]},months:{shorthand:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],longhand:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return\"th\";switch(t%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\"}},rangeSeparator:\" to \",weekAbbreviation:\"Wk\",scrollTitle:\"Scroll to increment\",toggleTitle:\"Click to toggle\",amPM:[\"AM\",\"PM\"],yearAriaLabel:\"Year\",hourAriaLabel:\"Hour\",minuteAriaLabel:\"Minute\",time_24hr:!1},i=function(e){return(\"0\"+e).slice(-2)},o=function(e){return!0===e?1:0};function r(e,t,n){var a;return void 0===n&&(n=!1),function(){var i=this,o=arguments;null!==a&&clearTimeout(a),a=window.setTimeout((function(){a=null,n||e.apply(i,o)}),t),n&&!a&&e.apply(i,o)}}var l=function(e){return e instanceof Array?e:[e]};function c(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function d(e,t,n){var a=window.document.createElement(e);return t=t||\"\",n=n||\"\",a.className=t,void 0!==n&&(a.textContent=n),a}function s(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function u(e,t){var n=d(\"div\",\"numInputWrapper\"),a=d(\"input\",\"numInput \"+e),i=d(\"span\",\"arrowUp\"),o=d(\"span\",\"arrowDown\");if(-1===navigator.userAgent.indexOf(\"MSIE 9.0\")?a.type=\"number\":(a.type=\"text\",a.pattern=\"\\\\d*\"),void 0!==t)for(var r in t)a.setAttribute(r,t[r]);return n.appendChild(a),n.appendChild(i),n.appendChild(o),n}var f=function(){},m=function(e,t,n){return n.months[t?\"shorthand\":\"longhand\"][e]},g={D:f,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours(parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*o(new RegExp(n.amPM[1],\"i\").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var a=parseInt(t),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+n.firstDayOfWeek),i},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours(parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:f,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:f,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},p={D:\"(\\\\w+)\",F:\"(\\\\w+)\",G:\"(\\\\d\\\\d|\\\\d)\",H:\"(\\\\d\\\\d|\\\\d)\",J:\"(\\\\d\\\\d|\\\\d)\\\\w+\",K:\"\",M:\"(\\\\w+)\",S:\"(\\\\d\\\\d|\\\\d)\",U:\"(.+)\",W:\"(\\\\d\\\\d|\\\\d)\",Y:\"(\\\\d{4})\",Z:\"(.+)\",d:\"(\\\\d\\\\d|\\\\d)\",h:\"(\\\\d\\\\d|\\\\d)\",i:\"(\\\\d\\\\d|\\\\d)\",j:\"(\\\\d\\\\d|\\\\d)\",l:\"(\\\\w+)\",m:\"(\\\\d\\\\d|\\\\d)\",n:\"(\\\\d\\\\d|\\\\d)\",s:\"(\\\\d\\\\d|\\\\d)\",u:\"(.+)\",w:\"(\\\\d\\\\d|\\\\d)\",y:\"(\\\\d{2})\"},h={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[h.w(e,t,n)]},F:function(e,t,n){return m(h.n(e,t,n)-1,!1,t)},G:function(e,t,n){return i(h.h(e,t,n))},H:function(e){return i(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[o(e.getHours()>11)]},M:function(e,t){return m(e.getMonth(),!0,t)},S:function(e){return i(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return e.getFullYear()},d:function(e){return i(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return i(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return i(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},v=function(e){var t=e.config,i=void 0===t?n:t,o=e.l10n,r=void 0===o?a:o;return function(e,t,n){var a=n||r;return void 0!==i.formatDate?i.formatDate(e,t,a):t.split(\"\").map((function(t,n,o){return h[t]&&\"\\\\\"!==o[n-1]?h[t](e,a,i):\"\\\\\"!==t?t:\"\"})).join(\"\")}},D=function(e){var t=e.config,i=void 0===t?n:t,o=e.l10n,r=void 0===o?a:o;return function(e,t,a,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if(\"string\"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if(\"string\"==typeof e){var s=t||(i||n).dateFormat,u=String(e).trim();if(\"today\"===u)l=new Date,a=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(i&&i.parseDate)l=i.parseDate(e,s);else{l=i&&i.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],h=0,v=0,D=\"\";hr&&(s=n===h.hourElement?s-r-o(!h.amPM):a,f&&Y(void 0,1,h.hourElement)),h.amPM&&u&&(1===l?s+c===23:Math.abs(s-c)>l)&&(h.amPM.textContent=h.l10n.amPM[o(h.amPM.textContent===h.l10n.amPM[0])]),n.value=i(s)}}(e);var t=h._input.value;E(),ve(),h._input.value!==t&&h._debouncedChange()}function E(){if(void 0!==h.hourElement&&void 0!==h.minuteElement){var e,t,n=(parseInt(h.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(h.minuteElement.value,10)||0)%60,i=void 0!==h.secondElement?(parseInt(h.secondElement.value,10)||0)%60:0;void 0!==h.amPM&&(e=n,t=h.amPM.textContent,n=e%12+12*o(t===h.l10n.amPM[1]));var r=void 0!==h.config.minTime||h.config.minDate&&h.minDateHasTime&&h.latestSelectedDateObj&&0===w(h.latestSelectedDateObj,h.config.minDate,!0);if(void 0!==h.config.maxTime||h.config.maxDate&&h.maxDateHasTime&&h.latestSelectedDateObj&&0===w(h.latestSelectedDateObj,h.config.maxDate,!0)){var l=void 0!==h.config.maxTime?h.config.maxTime:h.config.maxDate;(n=Math.min(n,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(r){var c=void 0!==h.config.minTime?h.config.minTime:h.config.minDate;(n=Math.max(n,c.getHours()))===c.getHours()&&(a=Math.max(a,c.getMinutes())),a===c.getMinutes()&&(i=Math.max(i,c.getSeconds()))}I(n,a,i)}}function T(e){var t=e||h.latestSelectedDateObj;t&&I(t.getHours(),t.getMinutes(),t.getSeconds())}function k(){var e=h.config.defaultHour,t=h.config.defaultMinute,n=h.config.defaultSeconds;if(void 0!==h.config.minDate){var a=h.config.minDate.getHours(),i=h.config.minDate.getMinutes();(e=Math.max(e,a))===a&&(t=Math.max(i,t)),e===a&&t===i&&(n=h.config.minDate.getSeconds())}if(void 0!==h.config.maxDate){var o=h.config.maxDate.getHours(),r=h.config.maxDate.getMinutes();(e=Math.min(e,o))===o&&(t=Math.min(r,t)),e===o&&t===r&&(n=h.config.maxDate.getSeconds())}I(e,t,n)}function I(e,t,n){void 0!==h.latestSelectedDateObj&&h.latestSelectedDateObj.setHours(e%24,t,n||0,0),h.hourElement&&h.minuteElement&&!h.isMobile&&(h.hourElement.value=i(h.config.time_24hr?e:(12+e)%12+12*o(e%12==0)),h.minuteElement.value=i(t),void 0!==h.amPM&&(h.amPM.textContent=h.l10n.amPM[o(e>=12)]),void 0!==h.secondElement&&(h.secondElement.value=i(n)))}function S(e){var t=parseInt(e.target.value)+(e.delta||0);(t/1e3>1||\"Enter\"===e.key&&!/[^\\d]/.test(t.toString()))&&V(t)}function O(e,t,n,a){return t instanceof Array?t.forEach((function(t){return O(e,t,n,a)})):e instanceof Array?e.forEach((function(e){return O(e,t,n,a)})):(e.addEventListener(t,n,a),void h._handlers.push({element:e,event:t,handler:n,options:a}))}function _(e){return function(t){1===t.which&&e(t)}}function F(){fe(\"onChange\")}function N(e,t){var n=void 0!==e?h.parseDate(e):h.latestSelectedDateObj||(h.config.minDate&&h.config.minDate>h.now?h.config.minDate:h.config.maxDate&&h.config.maxDate=0&&w(e,h.selectedDates[1])<=0}(t)&&!ge(t)&&o.classList.add(\"inRange\"),h.weekNumbers&&1===h.config.showMonths&&\"prevMonthDay\"!==e&&n%7==1&&h.weekNumbers.insertAdjacentHTML(\"beforeend\",\"\"+h.config.getWeek(t)+\"\"),fe(\"onDayCreate\",o),o}function j(e){e.focus(),\"range\"===h.config.mode&&ee(e)}function H(e){for(var t=e>0?0:h.config.showMonths-1,n=e>0?h.config.showMonths:-1,a=t;a!=n;a+=e)for(var i=h.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf(\"hidden\")&&Z(c.dateObj))return c}}function L(e,t){var n=Q(document.activeElement||document.body),a=void 0!==e?e:n?document.activeElement:void 0!==h.selectedDateElem&&Q(h.selectedDateElem)?h.selectedDateElem:void 0!==h.todayDateElem&&Q(h.todayDateElem)?h.todayDateElem:H(t>0?1:-1);return void 0===a?h._input.focus():n?void function(e,t){for(var n=-1===e.className.indexOf(\"Month\")?e.dateObj.getMonth():h.currentMonth,a=t>0?h.config.showMonths:-1,i=t>0?1:-1,o=n-h.currentMonth;o!=a;o+=i)for(var r=h.daysContainer.children[o],l=n-h.currentMonth===o?e.$i+t:t<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf(\"hidden\")&&Z(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(t))return j(s)}h.changeMonth(i),L(H(i),0)}(a,t):j(a)}function W(e,t){for(var n=(new Date(e,t,1).getDay()-h.l10n.firstDayOfWeek+7)%7,a=h.utils.getDaysInMonth((t-1+12)%12),i=h.utils.getDaysInMonth(t),o=window.document.createDocumentFragment(),r=h.config.showMonths>1,l=r?\"prevMonthDay hidden\":\"prevMonthDay\",c=r?\"nextMonthDay hidden\":\"nextMonthDay\",s=a+1-n,u=0;s<=a;s++,u++)o.appendChild(A(l,new Date(e,t-1,s),s,u));for(s=1;s<=i;s++,u++)o.appendChild(A(\"\",new Date(e,t,s),s,u));for(var f=i+1;f<=42-n&&(1===h.config.showMonths||u%7!=0);f++,u++)o.appendChild(A(c,new Date(e,t+1,f%i),f,u));var m=d(\"div\",\"dayContainer\");return m.appendChild(o),m}function R(){if(void 0!==h.daysContainer){s(h.daysContainer),h.weekNumbers&&s(h.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t1||\"dropdown\"!==h.config.monthSelectorType)){var e=function(e){return!(void 0!==h.config.minDate&&h.currentYear===h.config.minDate.getFullYear()&&eh.config.maxDate.getMonth())};h.monthsDropdownContainer.tabIndex=-1,h.monthsDropdownContainer.innerHTML=\"\";for(var t=0;t<12;t++)if(e(t)){var n=d(\"option\",\"flatpickr-monthDropdown-month\");n.value=new Date(h.currentYear,t).getMonth().toString(),n.textContent=m(t,h.config.shorthandCurrentMonth,h.l10n),n.tabIndex=-1,h.currentMonth===t&&(n.selected=!0),h.monthsDropdownContainer.appendChild(n)}}}function J(){var e,t=d(\"div\",\"flatpickr-month\"),n=window.document.createDocumentFragment();h.config.showMonths>1||\"static\"===h.config.monthSelectorType?e=d(\"span\",\"cur-month\"):(h.monthsDropdownContainer=d(\"select\",\"flatpickr-monthDropdown-months\"),O(h.monthsDropdownContainer,\"change\",(function(e){var t=e.target,n=parseInt(t.value,10);h.changeMonth(n-h.currentMonth),fe(\"onMonthChange\")})),B(),e=h.monthsDropdownContainer);var a=u(\"cur-year\",{tabindex:\"-1\"}),i=a.getElementsByTagName(\"input\")[0];i.setAttribute(\"aria-label\",h.l10n.yearAriaLabel),h.config.minDate&&i.setAttribute(\"min\",h.config.minDate.getFullYear().toString()),h.config.maxDate&&(i.setAttribute(\"max\",h.config.maxDate.getFullYear().toString()),i.disabled=!!h.config.minDate&&h.config.minDate.getFullYear()===h.config.maxDate.getFullYear());var o=d(\"div\",\"flatpickr-current-month\");return o.appendChild(e),o.appendChild(a),n.appendChild(o),t.appendChild(n),{container:t,yearElement:i,monthElement:e}}function K(){s(h.monthNav),h.monthNav.appendChild(h.prevMonthNav),h.config.showMonths&&(h.yearElements=[],h.monthElements=[]);for(var e=h.config.showMonths;e--;){var t=J();h.yearElements.push(t.yearElement),h.monthElements.push(t.monthElement),h.monthNav.appendChild(t.container)}h.monthNav.appendChild(h.nextMonthNav)}function U(){h.weekdayContainer?s(h.weekdayContainer):h.weekdayContainer=d(\"div\",\"flatpickr-weekdays\");for(var e=h.config.showMonths;e--;){var t=d(\"div\",\"flatpickr-weekdaycontainer\");h.weekdayContainer.appendChild(t)}return q(),h.weekdayContainer}function q(){if(h.weekdayContainer){var e=h.l10n.firstDayOfWeek,t=h.l10n.weekdays.shorthand.slice();e>0&&e\\n \"+t.join(\"
\")+\"\\n \\n \"}}function $(e,t){void 0===t&&(t=!0);var n=t?e:e-h.currentMonth;n<0&&!0===h._hidePrevMonthArrow||n>0&&!0===h._hideNextMonthArrow||(h.currentMonth+=n,(h.currentMonth<0||h.currentMonth>11)&&(h.currentYear+=h.currentMonth>11?1:-1,h.currentMonth=(h.currentMonth+12)%12,fe(\"onYearChange\"),B()),R(),fe(\"onMonthChange\"),pe())}function z(e){return!(!h.config.appendTo||!h.config.appendTo.contains(e))||h.calendarContainer.contains(e)}function G(e){if(h.isOpen&&!h.config.inline){var t=\"function\"==typeof(r=e).composedPath?r.composedPath()[0]:r.target,n=z(t),a=t===h.input||t===h.altInput||h.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(h.input)||~e.path.indexOf(h.altInput)),i=\"blur\"===e.type?a&&e.relatedTarget&&!z(e.relatedTarget):!a&&!n&&!z(e.relatedTarget),o=!h.config.ignoredFocusElements.some((function(e){return e.contains(t)}));i&&o&&(void 0!==h.timeContainer&&void 0!==h.minuteElement&&void 0!==h.hourElement&&x(),h.close(),\"range\"===h.config.mode&&1===h.selectedDates.length&&(h.clear(!1),h.redraw()))}var r}function V(e){if(!(!e||h.config.minDate&&eh.config.maxDate.getFullYear())){var t=e,n=h.currentYear!==t;h.currentYear=t||h.currentYear,h.config.maxDate&&h.currentYear===h.config.maxDate.getFullYear()?h.currentMonth=Math.min(h.config.maxDate.getMonth(),h.currentMonth):h.config.minDate&&h.currentYear===h.config.minDate.getFullYear()&&(h.currentMonth=Math.max(h.config.minDate.getMonth(),h.currentMonth)),n&&(h.redraw(),fe(\"onYearChange\"),B())}}function Z(e,t){void 0===t&&(t=!0);var n=h.parseDate(e,void 0,t);if(h.config.minDate&&n&&w(n,h.config.minDate,void 0!==t?t:!h.minDateHasTime)<0||h.config.maxDate&&n&&w(n,h.config.maxDate,void 0!==t?t:!h.maxDateHasTime)>0)return!1;if(0===h.config.enable.length&&0===h.config.disable.length)return!0;if(void 0===n)return!1;for(var a=h.config.enable.length>0,i=a?h.config.enable:h.config.disable,o=0,r=void 0;o=r.from.getTime()&&n.getTime()<=r.to.getTime())return a}return!a}function Q(e){return void 0!==h.daysContainer&&-1===e.className.indexOf(\"hidden\")&&h.daysContainer.contains(e)}function X(e){var t=e.target===h._input,n=h.config.allowInput,a=h.isOpen&&(!n||!t),i=h.config.inline&&t&&!n;if(13===e.keyCode&&t){if(n)return h.setDate(h._input.value,!0,e.target===h.altInput?h.config.altFormat:h.config.dateFormat),e.target.blur();h.open()}else if(z(e.target)||a||i){var o=!!h.timeContainer&&h.timeContainer.contains(e.target);switch(e.keyCode){case 13:o?(e.preventDefault(),x(),le()):ce(e);break;case 27:e.preventDefault(),le();break;case 8:case 46:t&&!h.config.allowInput&&(e.preventDefault(),h.clear());break;case 37:case 39:if(o||t)h.hourElement&&h.hourElement.focus();else if(e.preventDefault(),void 0!==h.daysContainer&&(!1===n||document.activeElement&&Q(document.activeElement))){var r=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),$(r),L(H(1),0)):L(void 0,r)}break;case 38:case 40:e.preventDefault();var l=40===e.keyCode?1:-1;h.daysContainer&&void 0!==e.target.$i||e.target===h.input||e.target===h.altInput?e.ctrlKey?(e.stopPropagation(),V(h.currentYear-l),L(H(1),0)):o||L(void 0,7*l):e.target===h.currentYearElement?V(h.currentYear-l):h.config.enableTime&&(!o&&h.hourElement&&h.hourElement.focus(),x(e),h._debouncedChange());break;case 9:if(o){var c=[h.hourElement,h.minuteElement,h.secondElement,h.amPM].concat(h.pluginElements).filter((function(e){return e})),d=c.indexOf(e.target);if(-1!==d){var s=c[d+(e.shiftKey?-1:1)];e.preventDefault(),(s||h._input).focus()}}else!h.config.noCalendar&&h.daysContainer&&h.daysContainer.contains(e.target)&&e.shiftKey&&(e.preventDefault(),h._input.focus())}}if(void 0!==h.amPM&&e.target===h.amPM)switch(e.key){case h.l10n.amPM[0].charAt(0):case h.l10n.amPM[0].charAt(0).toLowerCase():h.amPM.textContent=h.l10n.amPM[0],E(),ve();break;case h.l10n.amPM[1].charAt(0):case h.l10n.amPM[1].charAt(0).toLowerCase():h.amPM.textContent=h.l10n.amPM[1],E(),ve()}(t||z(e.target))&&fe(\"onKeyDown\",e)}function ee(e){if(1===h.selectedDates.length&&(!e||e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\"))){for(var t=e?e.dateObj.getTime():h.days.firstElementChild.dateObj.getTime(),n=h.parseDate(h.selectedDates[0],void 0,!0).getTime(),a=Math.min(t,h.selectedDates[0].getTime()),i=Math.max(t,h.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;ca&&cr)?r=c:c>n&&(!l||c0&&m0&&m>l;return g?(f.classList.add(\"notAllowed\"),[\"inRange\",\"startRange\",\"endRange\"].forEach((function(e){f.classList.remove(e)})),\"continue\"):o&&!g?\"continue\":([\"startRange\",\"inRange\",\"endRange\",\"notAllowed\"].forEach((function(e){f.classList.remove(e)})),void(void 0!==e&&(e.classList.add(t<=h.selectedDates[0].getTime()?\"startRange\":\"endRange\"),nt&&m===n&&f.classList.add(\"endRange\"),m>=r&&(0===l||m<=l)&&(d=n,u=t,(c=m)>Math.min(d,u)&&c0||n.getMinutes()>0||n.getSeconds()>0),h.selectedDates&&(h.selectedDates=h.selectedDates.filter((function(e){return Z(e)})),h.selectedDates.length||\"min\"!==e||T(n),ve()),h.daysContainer&&(re(),void 0!==n?h.currentYearElement[e]=n.getFullYear().toString():h.currentYearElement.removeAttribute(e),h.currentYearElement.disabled=!!a&&void 0!==n&&a.getFullYear()===n.getFullYear())}}function ie(){\"object\"!=typeof h.config.locale&&void 0===y.l10ns[h.config.locale]&&h.config.errorHandler(new Error(\"flatpickr: invalid locale \"+h.config.locale)),h.l10n=e({},y.l10ns.default,\"object\"==typeof h.config.locale?h.config.locale:\"default\"!==h.config.locale?y.l10ns[h.config.locale]:void 0),p.K=\"(\"+h.l10n.amPM[0]+\"|\"+h.l10n.amPM[1]+\"|\"+h.l10n.amPM[0].toLowerCase()+\"|\"+h.l10n.amPM[1].toLowerCase()+\")\",void 0===e({},g,JSON.parse(JSON.stringify(f.dataset||{}))).time_24hr&&void 0===y.defaultConfig.time_24hr&&(h.config.time_24hr=h.l10n.time_24hr),h.formatDate=v(h),h.parseDate=D({config:h.config,l10n:h.l10n})}function oe(e){if(void 0!==h.calendarContainer){fe(\"onPreCalendarPosition\");var t=e||h._positionElement,n=Array.prototype.reduce.call(h.calendarContainer.children,(function(e,t){return e+t.offsetHeight}),0),a=h.calendarContainer.offsetWidth,i=h.config.position.split(\" \"),o=i[0],r=i.length>1?i[1]:null,l=t.getBoundingClientRect(),d=window.innerHeight-l.bottom,s=\"above\"===o||\"below\"!==o&&dn,u=window.pageYOffset+l.top+(s?-n-2:t.offsetHeight+2);if(c(h.calendarContainer,\"arrowTop\",!s),c(h.calendarContainer,\"arrowBottom\",s),!h.config.inline){var f=window.pageXOffset+l.left-(null!=r&&\"center\"===r?(a-l.width)/2:0),m=window.document.body.offsetWidth-(window.pageXOffset+l.right),g=f+a>window.document.body.offsetWidth,p=m+a>window.document.body.offsetWidth;if(c(h.calendarContainer,\"rightMost\",g),!h.config.static)if(h.calendarContainer.style.top=u+\"px\",g)if(p){var v=document.styleSheets[0];if(void 0===v)return;var D=window.document.body.offsetWidth,w=Math.max(0,D/2-a/2),b=v.cssRules.length,C=\"{left:\"+l.left+\"px;right:auto;}\";c(h.calendarContainer,\"rightMost\",!1),c(h.calendarContainer,\"centerMost\",!0),v.insertRule(\".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after\"+C,b),h.calendarContainer.style.left=w+\"px\",h.calendarContainer.style.right=\"auto\"}else h.calendarContainer.style.left=\"auto\",h.calendarContainer.style.right=m+\"px\";else h.calendarContainer.style.left=f+\"px\",h.calendarContainer.style.right=\"auto\"}}}function re(){h.config.noCalendar||h.isMobile||(pe(),R())}function le(){h._input.focus(),-1!==window.navigator.userAgent.indexOf(\"MSIE\")||void 0!==navigator.msMaxTouchPoints?setTimeout(h.close,0):h.close()}function ce(e){e.preventDefault(),e.stopPropagation();var t=function e(t,n){return n(t)?t:t.parentNode?e(t.parentNode,n):void 0}(e.target,(function(e){return e.classList&&e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\")&&!e.classList.contains(\"notAllowed\")}));if(void 0!==t){var n=t,a=h.latestSelectedDateObj=new Date(n.dateObj.getTime()),i=(a.getMonth()h.currentMonth+h.config.showMonths-1)&&\"range\"!==h.config.mode;if(h.selectedDateElem=n,\"single\"===h.config.mode)h.selectedDates=[a];else if(\"multiple\"===h.config.mode){var o=ge(a);o?h.selectedDates.splice(parseInt(o),1):h.selectedDates.push(a)}else\"range\"===h.config.mode&&(2===h.selectedDates.length&&h.clear(!1,!1),h.latestSelectedDateObj=a,h.selectedDates.push(a),0!==w(a,h.selectedDates[0],!0)&&h.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()})));if(E(),i){var r=h.currentYear!==a.getFullYear();h.currentYear=a.getFullYear(),h.currentMonth=a.getMonth(),r&&(fe(\"onYearChange\"),B()),fe(\"onMonthChange\")}if(pe(),R(),ve(),h.config.enableTime&&setTimeout((function(){return h.showTimeInput=!0}),50),i||\"range\"===h.config.mode||1!==h.config.showMonths?void 0!==h.selectedDateElem&&void 0===h.hourElement&&h.selectedDateElem&&h.selectedDateElem.focus():j(n),void 0!==h.hourElement&&void 0!==h.hourElement&&h.hourElement.focus(),h.config.closeOnSelect){var l=\"single\"===h.config.mode&&!h.config.enableTime,c=\"range\"===h.config.mode&&2===h.selectedDates.length&&!h.config.enableTime;(l||c)&&le()}F()}}h.parseDate=D({config:h.config,l10n:h.l10n}),h._handlers=[],h.pluginElements=[],h.loadedPlugins=[],h._bind=O,h._setHoursFromDate=T,h._positionCalendar=oe,h.changeMonth=$,h.changeYear=V,h.clear=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0),h.input.value=\"\",void 0!==h.altInput&&(h.altInput.value=\"\"),void 0!==h.mobileInput&&(h.mobileInput.value=\"\"),h.selectedDates=[],h.latestSelectedDateObj=void 0,!0===t&&(h.currentYear=h._initialDate.getFullYear(),h.currentMonth=h._initialDate.getMonth()),h.showTimeInput=!1,!0===h.config.enableTime&&k(),h.redraw(),e&&fe(\"onChange\")},h.close=function(){h.isOpen=!1,h.isMobile||(void 0!==h.calendarContainer&&h.calendarContainer.classList.remove(\"open\"),void 0!==h._input&&h._input.classList.remove(\"active\")),fe(\"onClose\")},h._createElement=d,h.destroy=function(){void 0!==h.config&&fe(\"onDestroy\");for(var e=h._handlers.length;e--;){var t=h._handlers[e];t.element.removeEventListener(t.event,t.handler,t.options)}if(h._handlers=[],h.mobileInput)h.mobileInput.parentNode&&h.mobileInput.parentNode.removeChild(h.mobileInput),h.mobileInput=void 0;else if(h.calendarContainer&&h.calendarContainer.parentNode)if(h.config.static&&h.calendarContainer.parentNode){var n=h.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else h.calendarContainer.parentNode.removeChild(h.calendarContainer);h.altInput&&(h.input.type=\"text\",h.altInput.parentNode&&h.altInput.parentNode.removeChild(h.altInput),delete h.altInput),h.input&&(h.input.type=h.input._type,h.input.classList.remove(\"flatpickr-input\"),h.input.removeAttribute(\"readonly\"),h.input.value=\"\"),[\"_showTimeInput\",\"latestSelectedDateObj\",\"_hideNextMonthArrow\",\"_hidePrevMonthArrow\",\"__hideNextMonthArrow\",\"__hidePrevMonthArrow\",\"isMobile\",\"isOpen\",\"selectedDateElem\",\"minDateHasTime\",\"maxDateHasTime\",\"days\",\"daysContainer\",\"_input\",\"_positionElement\",\"innerContainer\",\"rContainer\",\"monthNav\",\"todayDateElem\",\"calendarContainer\",\"weekdayContainer\",\"prevMonthNav\",\"nextMonthNav\",\"monthsDropdownContainer\",\"currentMonthElement\",\"currentYearElement\",\"navigationCurrentMonth\",\"selectedDateElem\",\"config\"].forEach((function(e){try{delete h[e]}catch(e){}}))},h.isEnabled=Z,h.jumpToDate=N,h.open=function(e,t){if(void 0===t&&(t=h._positionElement),!0===h.isMobile)return e&&(e.preventDefault(),e.target&&e.target.blur()),void 0!==h.mobileInput&&(h.mobileInput.focus(),h.mobileInput.click()),void fe(\"onOpen\");if(!h._input.disabled&&!h.config.inline){var n=h.isOpen;h.isOpen=!0,n||(h.calendarContainer.classList.add(\"open\"),h._input.classList.add(\"active\"),fe(\"onOpen\"),oe(t)),!0===h.config.enableTime&&!0===h.config.noCalendar&&(0===h.selectedDates.length&&ne(),!1!==h.config.allowInput||void 0!==e&&h.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return h.hourElement.select()}),50))}},h.redraw=re,h.set=function(e,n){if(null!==e&&\"object\"==typeof e)for(var a in Object.assign(h.config,e),e)void 0!==de[a]&&de[a].forEach((function(e){return e()}));else h.config[e]=n,void 0!==de[e]?de[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(h.config[e]=l(n));h.redraw(),ve(!1)},h.setDate=function(e,t,n){if(void 0===t&&(t=!1),void 0===n&&(n=h.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return h.clear(t);se(e,n),h.showTimeInput=h.selectedDates.length>0,h.latestSelectedDateObj=h.selectedDates[h.selectedDates.length-1],h.redraw(),N(),T(),0===h.selectedDates.length&&h.clear(!1),ve(t),t&&fe(\"onChange\")},h.toggle=function(e){if(!0===h.isOpen)return h.close();h.open(e)};var de={locale:[ie,q],showMonths:[K,M,U],minDate:[N],maxDate:[N]};function se(e,t){var n=[];if(e instanceof Array)n=e.map((function(e){return h.parseDate(e,t)}));else if(e instanceof Date||\"number\"==typeof e)n=[h.parseDate(e,t)];else if(\"string\"==typeof e)switch(h.config.mode){case\"single\":case\"time\":n=[h.parseDate(e,t)];break;case\"multiple\":n=e.split(h.config.conjunction).map((function(e){return h.parseDate(e,t)}));break;case\"range\":n=e.split(h.l10n.rangeSeparator).map((function(e){return h.parseDate(e,t)}))}else h.config.errorHandler(new Error(\"Invalid date supplied: \"+JSON.stringify(e)));h.selectedDates=n.filter((function(e){return e instanceof Date&&Z(e,!1)})),\"range\"===h.config.mode&&h.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()}))}function ue(e){return e.slice().map((function(e){return\"string\"==typeof e||\"number\"==typeof e||e instanceof Date?h.parseDate(e,void 0,!0):e&&\"object\"==typeof e&&e.from&&e.to?{from:h.parseDate(e.from,void 0),to:h.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function fe(e,t){if(void 0!==h.config){var n=h.config[e];if(void 0!==n&&n.length>0)for(var a=0;n[a]&&a1||\"static\"===h.config.monthSelectorType?h.monthElements[t].textContent=m(n.getMonth(),h.config.shorthandCurrentMonth,h.l10n)+\" \":h.monthsDropdownContainer.value=n.getMonth().toString(),e.value=n.getFullYear().toString()})),h._hidePrevMonthArrow=void 0!==h.config.minDate&&(h.currentYear===h.config.minDate.getFullYear()?h.currentMonth<=h.config.minDate.getMonth():h.currentYearh.config.maxDate.getMonth():h.currentYear>h.config.maxDate.getFullYear()))}function he(e){return h.selectedDates.map((function(t){return h.formatDate(t,e)})).filter((function(e,t,n){return\"range\"!==h.config.mode||h.config.enableTime||n.indexOf(e)===t})).join(\"range\"!==h.config.mode?h.config.conjunction:h.l10n.rangeSeparator)}function ve(e){void 0===e&&(e=!0),void 0!==h.mobileInput&&h.mobileFormatStr&&(h.mobileInput.value=void 0!==h.latestSelectedDateObj?h.formatDate(h.latestSelectedDateObj,h.mobileFormatStr):\"\"),h.input.value=he(h.config.dateFormat),void 0!==h.altInput&&(h.altInput.value=he(h.config.altFormat)),!1!==e&&fe(\"onValueUpdate\")}function De(e){var t=h.prevMonthNav.contains(e.target),n=h.nextMonthNav.contains(e.target);t||n?$(t?-1:1):h.yearElements.indexOf(e.target)>=0?e.target.select():e.target.classList.contains(\"arrowUp\")?h.changeYear(h.currentYear+1):e.target.classList.contains(\"arrowDown\")&&h.changeYear(h.currentYear-1)}return function(){h.element=h.input=f,h.isOpen=!1,function(){var a=[\"wrap\",\"weekNumbers\",\"allowInput\",\"clickOpens\",\"time_24hr\",\"enableTime\",\"noCalendar\",\"altInput\",\"shorthandCurrentMonth\",\"inline\",\"static\",\"enableSeconds\",\"disableMobile\"],i=e({},g,JSON.parse(JSON.stringify(f.dataset||{}))),o={};h.config.parseDate=i.parseDate,h.config.formatDate=i.formatDate,Object.defineProperty(h.config,\"enable\",{get:function(){return h.config._enable},set:function(e){h.config._enable=ue(e)}}),Object.defineProperty(h.config,\"disable\",{get:function(){return h.config._disable},set:function(e){h.config._disable=ue(e)}});var r=\"time\"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var c=y.defaultConfig.dateFormat||n.dateFormat;o.dateFormat=i.noCalendar||r?\"H:i\"+(i.enableSeconds?\":S\":\"\"):c+\" H:i\"+(i.enableSeconds?\":S\":\"\")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=y.defaultConfig.altFormat||n.altFormat;o.altFormat=i.noCalendar||r?\"h:i\"+(i.enableSeconds?\":S K\":\" K\"):d+\" h:i\"+(i.enableSeconds?\":S\":\"\")+\" K\"}i.altInputClass||(h.config.altInputClass=h.input.className+\" \"+h.config.altInputClass),Object.defineProperty(h.config,\"minDate\",{get:function(){return h.config._minDate},set:ae(\"min\")}),Object.defineProperty(h.config,\"maxDate\",{get:function(){return h.config._maxDate},set:ae(\"max\")});var s=function(e){return function(t){h.config[\"min\"===e?\"_minTime\":\"_maxTime\"]=h.parseDate(t,\"H:i:S\")}};Object.defineProperty(h.config,\"minTime\",{get:function(){return h.config._minTime},set:s(\"min\")}),Object.defineProperty(h.config,\"maxTime\",{get:function(){return h.config._maxTime},set:s(\"max\")}),\"time\"===i.mode&&(h.config.noCalendar=!0,h.config.enableTime=!0),Object.assign(h.config,o,i);for(var u=0;u-1?h.config[p]=l(m[p]).map(C).concat(h.config[p]):void 0===i[p]&&(h.config[p]=m[p])}fe(\"onParseConfig\")}(),ie(),h.input=h.config.wrap?f.querySelector(\"[data-input]\"):f,h.input?(h.input._type=h.input.type,h.input.type=\"text\",h.input.classList.add(\"flatpickr-input\"),h._input=h.input,h.config.altInput&&(h.altInput=d(h.input.nodeName,h.config.altInputClass),h._input=h.altInput,h.altInput.placeholder=h.input.placeholder,h.altInput.disabled=h.input.disabled,h.altInput.required=h.input.required,h.altInput.tabIndex=h.input.tabIndex,h.altInput.type=\"text\",h.input.setAttribute(\"type\",\"hidden\"),!h.config.static&&h.input.parentNode&&h.input.parentNode.insertBefore(h.altInput,h.input.nextSibling)),h.config.allowInput||h._input.setAttribute(\"readonly\",\"readonly\"),h._positionElement=h.config.positionElement||h._input):h.config.errorHandler(new Error(\"Invalid input element specified\")),function(){h.selectedDates=[],h.now=h.parseDate(h.config.now)||new Date;var e=h.config.defaultDate||(\"INPUT\"!==h.input.nodeName&&\"TEXTAREA\"!==h.input.nodeName||!h.input.placeholder||h.input.value!==h.input.placeholder?h.input.value:null);e&&se(e,h.config.dateFormat),h._initialDate=h.selectedDates.length>0?h.selectedDates[0]:h.config.minDate&&h.config.minDate.getTime()>h.now.getTime()?h.config.minDate:h.config.maxDate&&h.config.maxDate.getTime()0&&(h.latestSelectedDateObj=h.selectedDates[0]),void 0!==h.config.minTime&&(h.config.minTime=h.parseDate(h.config.minTime,\"H:i\")),void 0!==h.config.maxTime&&(h.config.maxTime=h.parseDate(h.config.maxTime,\"H:i\")),h.minDateHasTime=!!h.config.minDate&&(h.config.minDate.getHours()>0||h.config.minDate.getMinutes()>0||h.config.minDate.getSeconds()>0),h.maxDateHasTime=!!h.config.maxDate&&(h.config.maxDate.getHours()>0||h.config.maxDate.getMinutes()>0||h.config.maxDate.getSeconds()>0),Object.defineProperty(h,\"showTimeInput\",{get:function(){return h._showTimeInput},set:function(e){h._showTimeInput=e,h.calendarContainer&&c(h.calendarContainer,\"showTimeInput\",e),h.isOpen&&oe()}})}(),h.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=h.currentMonth),void 0===t&&(t=h.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:h.l10n.daysInMonth[e]}},h.isMobile||function(){var e=window.document.createDocumentFragment();if(h.calendarContainer=d(\"div\",\"flatpickr-calendar\"),h.calendarContainer.tabIndex=-1,!h.config.noCalendar){if(e.appendChild((h.monthNav=d(\"div\",\"flatpickr-months\"),h.yearElements=[],h.monthElements=[],h.prevMonthNav=d(\"span\",\"flatpickr-prev-month\"),h.prevMonthNav.innerHTML=h.config.prevArrow,h.nextMonthNav=d(\"span\",\"flatpickr-next-month\"),h.nextMonthNav.innerHTML=h.config.nextArrow,K(),Object.defineProperty(h,\"_hidePrevMonthArrow\",{get:function(){return h.__hidePrevMonthArrow},set:function(e){h.__hidePrevMonthArrow!==e&&(c(h.prevMonthNav,\"flatpickr-disabled\",e),h.__hidePrevMonthArrow=e)}}),Object.defineProperty(h,\"_hideNextMonthArrow\",{get:function(){return h.__hideNextMonthArrow},set:function(e){h.__hideNextMonthArrow!==e&&(c(h.nextMonthNav,\"flatpickr-disabled\",e),h.__hideNextMonthArrow=e)}}),h.currentYearElement=h.yearElements[0],pe(),h.monthNav)),h.innerContainer=d(\"div\",\"flatpickr-innerContainer\"),h.config.weekNumbers){var t=function(){h.calendarContainer.classList.add(\"hasWeeks\");var e=d(\"div\",\"flatpickr-weekwrapper\");e.appendChild(d(\"span\",\"flatpickr-weekday\",h.l10n.weekAbbreviation));var t=d(\"div\",\"flatpickr-weeks\");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),n=t.weekWrapper,a=t.weekNumbers;h.innerContainer.appendChild(n),h.weekNumbers=a,h.weekWrapper=n}h.rContainer=d(\"div\",\"flatpickr-rContainer\"),h.rContainer.appendChild(U()),h.daysContainer||(h.daysContainer=d(\"div\",\"flatpickr-days\"),h.daysContainer.tabIndex=-1),R(),h.rContainer.appendChild(h.daysContainer),h.innerContainer.appendChild(h.rContainer),e.appendChild(h.innerContainer)}h.config.enableTime&&e.appendChild(function(){h.calendarContainer.classList.add(\"hasTime\"),h.config.noCalendar&&h.calendarContainer.classList.add(\"noCalendar\"),h.timeContainer=d(\"div\",\"flatpickr-time\"),h.timeContainer.tabIndex=-1;var e=d(\"span\",\"flatpickr-time-separator\",\":\"),t=u(\"flatpickr-hour\",{\"aria-label\":h.l10n.hourAriaLabel});h.hourElement=t.getElementsByTagName(\"input\")[0];var n=u(\"flatpickr-minute\",{\"aria-label\":h.l10n.minuteAriaLabel});if(h.minuteElement=n.getElementsByTagName(\"input\")[0],h.hourElement.tabIndex=h.minuteElement.tabIndex=-1,h.hourElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getHours():h.config.time_24hr?h.config.defaultHour:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(h.config.defaultHour)),h.minuteElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getMinutes():h.config.defaultMinute),h.hourElement.setAttribute(\"step\",h.config.hourIncrement.toString()),h.minuteElement.setAttribute(\"step\",h.config.minuteIncrement.toString()),h.hourElement.setAttribute(\"min\",h.config.time_24hr?\"0\":\"1\"),h.hourElement.setAttribute(\"max\",h.config.time_24hr?\"23\":\"12\"),h.minuteElement.setAttribute(\"min\",\"0\"),h.minuteElement.setAttribute(\"max\",\"59\"),h.timeContainer.appendChild(t),h.timeContainer.appendChild(e),h.timeContainer.appendChild(n),h.config.time_24hr&&h.timeContainer.classList.add(\"time24hr\"),h.config.enableSeconds){h.timeContainer.classList.add(\"hasSeconds\");var a=u(\"flatpickr-second\");h.secondElement=a.getElementsByTagName(\"input\")[0],h.secondElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getSeconds():h.config.defaultSeconds),h.secondElement.setAttribute(\"step\",h.minuteElement.getAttribute(\"step\")),h.secondElement.setAttribute(\"min\",\"0\"),h.secondElement.setAttribute(\"max\",\"59\"),h.timeContainer.appendChild(d(\"span\",\"flatpickr-time-separator\",\":\")),h.timeContainer.appendChild(a)}return h.config.time_24hr||(h.amPM=d(\"span\",\"flatpickr-am-pm\",h.l10n.amPM[o((h.latestSelectedDateObj?h.hourElement.value:h.config.defaultHour)>11)]),h.amPM.title=h.l10n.toggleTitle,h.amPM.tabIndex=-1,h.timeContainer.appendChild(h.amPM)),h.timeContainer}()),c(h.calendarContainer,\"rangeMode\",\"range\"===h.config.mode),c(h.calendarContainer,\"animate\",!0===h.config.animate),c(h.calendarContainer,\"multiMonth\",h.config.showMonths>1),h.calendarContainer.appendChild(e);var r=void 0!==h.config.appendTo&&void 0!==h.config.appendTo.nodeType;if((h.config.inline||h.config.static)&&(h.calendarContainer.classList.add(h.config.inline?\"inline\":\"static\"),h.config.inline&&(!r&&h.element.parentNode?h.element.parentNode.insertBefore(h.calendarContainer,h._input.nextSibling):void 0!==h.config.appendTo&&h.config.appendTo.appendChild(h.calendarContainer)),h.config.static)){var l=d(\"div\",\"flatpickr-wrapper\");h.element.parentNode&&h.element.parentNode.insertBefore(l,h.element),l.appendChild(h.element),h.altInput&&l.appendChild(h.altInput),l.appendChild(h.calendarContainer)}h.config.static||h.config.inline||(void 0!==h.config.appendTo?h.config.appendTo:window.document.body).appendChild(h.calendarContainer)}(),function(){if(h.config.wrap&&[\"open\",\"close\",\"toggle\",\"clear\"].forEach((function(e){Array.prototype.forEach.call(h.element.querySelectorAll(\"[data-\"+e+\"]\"),(function(t){return O(t,\"click\",h[e])}))})),h.isMobile)!function(){var e=h.config.enableTime?h.config.noCalendar?\"time\":\"datetime-local\":\"date\";h.mobileInput=d(\"input\",h.input.className+\" flatpickr-mobile\"),h.mobileInput.step=h.input.getAttribute(\"step\")||\"any\",h.mobileInput.tabIndex=1,h.mobileInput.type=e,h.mobileInput.disabled=h.input.disabled,h.mobileInput.required=h.input.required,h.mobileInput.placeholder=h.input.placeholder,h.mobileFormatStr=\"datetime-local\"===e?\"Y-m-d\\\\TH:i:S\":\"date\"===e?\"Y-m-d\":\"H:i:S\",h.selectedDates.length>0&&(h.mobileInput.defaultValue=h.mobileInput.value=h.formatDate(h.selectedDates[0],h.mobileFormatStr)),h.config.minDate&&(h.mobileInput.min=h.formatDate(h.config.minDate,\"Y-m-d\")),h.config.maxDate&&(h.mobileInput.max=h.formatDate(h.config.maxDate,\"Y-m-d\")),h.input.type=\"hidden\",void 0!==h.altInput&&(h.altInput.type=\"hidden\");try{h.input.parentNode&&h.input.parentNode.insertBefore(h.mobileInput,h.input.nextSibling)}catch(e){}O(h.mobileInput,\"change\",(function(e){h.setDate(e.target.value,!1,h.mobileFormatStr),fe(\"onChange\"),fe(\"onClose\")}))}();else{var e=r(te,50);h._debouncedChange=r(F,300),h.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&O(h.daysContainer,\"mouseover\",(function(e){\"range\"===h.config.mode&&ee(e.target)})),O(window.document.body,\"keydown\",X),h.config.inline||h.config.static||O(window,\"resize\",e),void 0!==window.ontouchstart?O(window.document,\"touchstart\",G):O(window.document,\"mousedown\",_(G)),O(window.document,\"focus\",G,{capture:!0}),!0===h.config.clickOpens&&(O(h._input,\"focus\",h.open),O(h._input,\"mousedown\",_(h.open))),void 0!==h.daysContainer&&(O(h.monthNav,\"mousedown\",_(De)),O(h.monthNav,[\"keyup\",\"increment\"],S),O(h.daysContainer,\"mousedown\",_(ce))),void 0!==h.timeContainer&&void 0!==h.minuteElement&&void 0!==h.hourElement&&(O(h.timeContainer,[\"increment\"],x),O(h.timeContainer,\"blur\",x,{capture:!0}),O(h.timeContainer,\"mousedown\",_(P)),O([h.hourElement,h.minuteElement],[\"focus\",\"click\"],(function(e){return e.target.select()})),void 0!==h.secondElement&&O(h.secondElement,\"focus\",(function(){return h.secondElement&&h.secondElement.select()})),void 0!==h.amPM&&O(h.amPM,\"mousedown\",_((function(e){x(e),F()}))))}}(),(h.selectedDates.length||h.config.noCalendar)&&(h.config.enableTime&&T(h.config.noCalendar?h.latestSelectedDateObj||h.config.minDate:void 0),ve(!1)),M(),h.showTimeInput=h.selectedDates.length>0||h.config.noCalendar;var a=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!h.isMobile&&a&&oe(),fe(\"onReady\")}(),h}function M(e,t){for(var n=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;ithis.render());const{start:s,end:l,value:r,step:o,title:n}=this.model.properties;this.on_change([s,l,r,o],()=>{const{start:t,end:e,value:i,step:s}=this._calc_to();this.noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s})});const{bar_color:a}=this.model.properties;this.on_change(a,()=>{this._set_bar_color()});const{show_value:d}=this.model.properties;this.on_change([r,n,d],()=>this._update_title())}styles(){return[...super.styles(),h.default,c.default]}_update_title(){r.empty(this.title_el);const t=null==this.model.title||0==this.model.title.length&&!this.model.show_value;if(this.title_el.style.display=t?\"none\":\"\",!t&&(0!=this.model.title.length&&(this.title_el.textContent=this.model.title+\": \"),this.model.show_value)){const{value:t}=this._calc_to(),e=t.map(t=>this.model.pretty(t)).join(\" .. \");this.title_el.appendChild(r.span({class:d.bk_slider_value},e))}}_set_bar_color(){if(!this.model.disabled){this.slider_el.querySelector(\".noUi-connect\").style.backgroundColor=this.model.bar_color}}render(){super.render();const{start:t,end:e,value:i,step:s}=this._calc_to();let n;if(this.model.tooltips){const t={to:t=>this.model.pretty(t)};n=o.repeat(t,i.length)}else n=!1;if(null==this.slider_el){this.slider_el=r.div(),l.create(this.slider_el,{range:{min:t,max:e},start:i,step:s,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:n,orientation:this.model.orientation,direction:this.model.direction}),this.noUiSlider.on(\"slide\",(t,e,i)=>this._slide(i)),this.noUiSlider.on(\"change\",(t,e,i)=>this._change(i));const o=(t,e)=>{if(!n)return;this.slider_el.querySelectorAll(\".noUi-handle\")[t].querySelector(\".noUi-tooltip\").style.display=e?\"block\":\"\"};this.noUiSlider.on(\"start\",(t,e)=>o(e,!0)),this.noUiSlider.on(\"end\",(t,e)=>o(e,!1))}else this.noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s});this._set_bar_color(),this.model.disabled?this.slider_el.setAttribute(\"disabled\",\"true\"):this.slider_el.removeAttribute(\"disabled\"),this.title_el=r.div({class:d.bk_slider_title}),this._update_title(),this.group_el=r.div({class:_.bk_input_group},this.title_el,this.slider_el),this.el.appendChild(this.group_el)}_slide(t){this.model.value=this._calc_from(t)}_change(t){this.model.value=this._calc_from(t),this.model.value_throttled=this.model.value}}u.__name__=\"AbstractBaseSliderView\";class m extends u{_calc_to(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}}_calc_from([t]){return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(t):t}}i.AbstractSliderView=m,m.__name__=\"AbstractSliderView\";class p extends u{_calc_to(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}}_calc_from(t){return t}}i.AbstractRangeSliderView=p,p.__name__=\"AbstractRangeSliderView\";class b extends n.Control{constructor(t){super(t),this.connected=!1}static init_AbstractSlider(){this.define(({Any:t,Boolean:e,Number:i,String:s,Color:l,Or:r,Enum:o,Ref:n})=>({title:[s,\"\"],show_value:[e,!0],start:[t],end:[t],value:[t],value_throttled:[t],step:[i,1],format:[r(s,n(a.TickFormatter))],direction:[o(\"ltr\",\"rtl\"),\"ltr\"],tooltips:[e,!0],bar_color:[l,\"#e6e6e6\"]}))}_formatter(t,e){return\"\"+t}pretty(t){return this._formatter(t,this.format)}}i.AbstractSlider=b,b.__name__=\"AbstractSlider\",b.init_AbstractSlider()},\n", + " 424: function _(t,e,r){\n", + " /*! nouislider - 14.6.0 - 6/27/2020 */\n", + " var n;n=function(){\"use strict\";var t=\"14.6.0\";function e(t){t.parentElement.removeChild(t)}function r(t){return null!=t}function n(t){t.preventDefault()}function i(t){return\"number\"==typeof t&&!isNaN(t)&&isFinite(t)}function o(t,e,r){r>0&&(u(t,e),setTimeout((function(){c(t,e)}),r))}function s(t){return Math.max(Math.min(t,100),0)}function a(t){return Array.isArray(t)?t:[t]}function l(t){var e=(t=String(t)).split(\".\");return e.length>1?e[1].length:0}function u(t,e){t.classList&&!/\\s/.test(e)?t.classList.add(e):t.className+=\" \"+e}function c(t,e){t.classList&&!/\\s/.test(e)?t.classList.remove(e):t.className=t.className.replace(new RegExp(\"(^|\\\\b)\"+e.split(\" \").join(\"|\")+\"(\\\\b|$)\",\"gi\"),\" \")}function p(t){var e=void 0!==window.pageXOffset,r=\"CSS1Compat\"===(t.compatMode||\"\");return{x:e?window.pageXOffset:r?t.documentElement.scrollLeft:t.body.scrollLeft,y:e?window.pageYOffset:r?t.documentElement.scrollTop:t.body.scrollTop}}function f(t,e){return 100/(e-t)}function d(t,e,r){return 100*e/(t[r+1]-t[r])}function h(t,e){for(var r=1;t>=e[r];)r+=1;return r}function m(t,e,r){if(r>=t.slice(-1)[0])return 100;var n=h(r,t),i=t[n-1],o=t[n],s=e[n-1],a=e[n];return s+function(t,e){return d(t,t[0]<0?e+Math.abs(t[0]):e-t[0],0)}([i,o],r)/f(s,a)}function g(t,e,r,n){if(100===n)return n;var i=h(n,t),o=t[i-1],s=t[i];return r?n-o>(s-o)/2?s:o:e[i-1]?t[i-1]+function(t,e){return Math.round(t/e)*e}(n-t[i-1],e[i-1]):n}function v(t,e,r){var n;if(\"number\"==typeof e&&(e=[e]),!Array.isArray(e))throw new Error(\"noUiSlider (14.6.0): 'range' contains invalid value.\");if(!i(n=\"min\"===t?0:\"max\"===t?100:parseFloat(t))||!i(e[0]))throw new Error(\"noUiSlider (14.6.0): 'range' value isn't numeric.\");r.xPct.push(n),r.xVal.push(e[0]),n?r.xSteps.push(!isNaN(e[1])&&e[1]):isNaN(e[1])||(r.xSteps[0]=e[1]),r.xHighestCompleteStep.push(0)}function b(t,e,r){if(e)if(r.xVal[t]!==r.xVal[t+1]){r.xSteps[t]=d([r.xVal[t],r.xVal[t+1]],e,0)/f(r.xPct[t],r.xPct[t+1]);var n=(r.xVal[t+1]-r.xVal[t])/r.xNumSteps[t],i=Math.ceil(Number(n.toFixed(3))-1),o=r.xVal[t]+r.xNumSteps[t]*i;r.xHighestCompleteStep[t]=o}else r.xSteps[t]=r.xHighestCompleteStep[t]=r.xVal[t]}function x(t,e,r){var n;this.xPct=[],this.xVal=[],this.xSteps=[r||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=e;var i=[];for(n in t)t.hasOwnProperty(n)&&i.push([t[n],n]);for(i.length&&\"object\"==typeof i[0][0]?i.sort((function(t,e){return t[0][0]-e[0][0]})):i.sort((function(t,e){return t[0]-e[0]})),n=0;nthis.xPct[i+1];)i++;else t===this.xPct[this.xPct.length-1]&&(i=this.xPct.length-2);r||t!==this.xPct[i+1]||i++;var o=1,s=e[i],a=0,l=0,u=0,c=0;for(n=r?(t-this.xPct[i])/(this.xPct[i+1]-this.xPct[i]):(this.xPct[i+1]-t)/(this.xPct[i+1]-this.xPct[i]);s>0;)a=this.xPct[i+1+c]-this.xPct[i+c],e[i+c]*o+100-100*n>100?(l=a*n,o=(s-100*n)/e[i+c],n=1):(l=e[i+c]*a/100*o,o=0),r?(u-=l,this.xPct.length+c>=1&&c--):(u+=l,this.xPct.length-c>=1&&c++),s=e[i+c]*o;return t+u},x.prototype.toStepping=function(t){return t=m(this.xVal,this.xPct,t)},x.prototype.fromStepping=function(t){return function(t,e,r){if(r>=100)return t.slice(-1)[0];var n=h(r,e),i=t[n-1],o=t[n],s=e[n-1];return function(t,e){return e*(t[1]-t[0])/100+t[0]}([i,o],(r-s)*f(s,e[n]))}(this.xVal,this.xPct,t)},x.prototype.getStep=function(t){return t=g(this.xPct,this.xSteps,this.snap,t)},x.prototype.getDefaultStep=function(t,e,r){var n=h(t,this.xPct);return(100===t||e&&t===this.xPct[n-1])&&(n=Math.max(n-1,1)),(this.xVal[n]-this.xVal[n-1])/r},x.prototype.getNearbySteps=function(t){var e=h(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e],step:this.xNumSteps[e],highestStep:this.xHighestCompleteStep[e]}}},x.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(l);return Math.max.apply(null,t)},x.prototype.convert=function(t){return this.getStep(this.toStepping(t))};var S={to:function(t){return void 0!==t&&t.toFixed(2)},from:Number},w={target:\"target\",base:\"base\",origin:\"origin\",handle:\"handle\",handleLower:\"handle-lower\",handleUpper:\"handle-upper\",touchArea:\"touch-area\",horizontal:\"horizontal\",vertical:\"vertical\",background:\"background\",connect:\"connect\",connects:\"connects\",ltr:\"ltr\",rtl:\"rtl\",textDirectionLtr:\"txt-dir-ltr\",textDirectionRtl:\"txt-dir-rtl\",draggable:\"draggable\",drag:\"state-drag\",tap:\"state-tap\",active:\"active\",tooltip:\"tooltip\",pips:\"pips\",pipsHorizontal:\"pips-horizontal\",pipsVertical:\"pips-vertical\",marker:\"marker\",markerHorizontal:\"marker-horizontal\",markerVertical:\"marker-vertical\",markerNormal:\"marker-normal\",markerLarge:\"marker-large\",markerSub:\"marker-sub\",value:\"value\",valueHorizontal:\"value-horizontal\",valueVertical:\"value-vertical\",valueNormal:\"value-normal\",valueLarge:\"value-large\",valueSub:\"value-sub\"};function y(t){if(function(t){return\"object\"==typeof t&&\"function\"==typeof t.to&&\"function\"==typeof t.from}(t))return!0;throw new Error(\"noUiSlider (14.6.0): 'format' requires 'to' and 'from' methods.\")}function E(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.0): 'step' is not numeric.\");t.singleStep=e}function C(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.0): 'keyboardPageMultiplier' is not numeric.\");t.keyboardPageMultiplier=e}function P(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.0): 'keyboardDefaultStep' is not numeric.\");t.keyboardDefaultStep=e}function N(t,e){if(\"object\"!=typeof e||Array.isArray(e))throw new Error(\"noUiSlider (14.6.0): 'range' is not an object.\");if(void 0===e.min||void 0===e.max)throw new Error(\"noUiSlider (14.6.0): Missing 'min' or 'max' in 'range'.\");if(e.min===e.max)throw new Error(\"noUiSlider (14.6.0): 'range' 'min' and 'max' cannot be equal.\");t.spectrum=new x(e,t.snap,t.singleStep)}function k(t,e){if(e=a(e),!Array.isArray(e)||!e.length)throw new Error(\"noUiSlider (14.6.0): 'start' option is incorrect.\");t.handles=e.length,t.start=e}function U(t,e){if(t.snap=e,\"boolean\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'snap' option must be a boolean.\")}function A(t,e){if(t.animate=e,\"boolean\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'animate' option must be a boolean.\")}function V(t,e){if(t.animationDuration=e,\"number\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'animationDuration' option must be a number.\")}function D(t,e){var r,n=[!1];if(\"lower\"===e?e=[!0,!1]:\"upper\"===e&&(e=[!1,!0]),!0===e||!1===e){for(r=1;r1)throw new Error(\"noUiSlider (14.6.0): 'padding' option must not exceed 100% of the range.\")}}function H(t,e){switch(e){case\"ltr\":t.dir=0;break;case\"rtl\":t.dir=1;break;default:throw new Error(\"noUiSlider (14.6.0): 'direction' option was not recognized.\")}}function j(t,e){if(\"string\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'behaviour' must be a string containing options.\");var r=e.indexOf(\"tap\")>=0,n=e.indexOf(\"drag\")>=0,i=e.indexOf(\"fixed\")>=0,o=e.indexOf(\"snap\")>=0,s=e.indexOf(\"hover\")>=0,a=e.indexOf(\"unconstrained\")>=0;if(i){if(2!==t.handles)throw new Error(\"noUiSlider (14.6.0): 'fixed' behaviour must be used with 2 handles\");O(t,t.start[1]-t.start[0])}if(a&&(t.margin||t.limit))throw new Error(\"noUiSlider (14.6.0): 'unconstrained' behaviour cannot be used with margin or limit\");t.events={tap:r||o,drag:n,fixed:i,snap:o,hover:s,unconstrained:a}}function F(t,e){if(!1!==e)if(!0===e){t.tooltips=[];for(var r=0;r0&&((a=M(i,!1)).className=c(s,r.cssClasses.value),a.setAttribute(\"data-value\",o),a.style[r.style]=t+\"%\",a.innerHTML=n.to(o))}}(o,t[o][0],t[o][1])})),i}function B(){h&&(e(h),h=null)}function q(t){B();var e=t.mode,r=t.density||1,n=t.filter||!1,i=function(t,e,r){if(\"range\"===t||\"steps\"===t)return y.xVal;if(\"count\"===t){if(e<2)throw new Error(\"noUiSlider (14.6.0): 'values' (>= 2) required for mode 'count'.\");var n=e-1,i=100/n;for(e=[];n--;)e[n]=n*i;e.push(100),t=\"positions\"}return\"positions\"===t?e.map((function(t){return y.fromStepping(r?y.getStep(t):t)})):\"values\"===t?r?e.map((function(t){return y.fromStepping(y.getStep(y.toStepping(t)))})):e:void 0}(e,t.values||!1,t.stepped||!1),o=function(t,e,r){var n,i={},o=y.xVal[0],s=y.xVal[y.xVal.length-1],a=!1,l=!1,u=0;return n=r.slice().sort((function(t,e){return t-e})),(r=n.filter((function(t){return!this[t]&&(this[t]=!0)}),{}))[0]!==o&&(r.unshift(o),a=!0),r[r.length-1]!==s&&(r.push(s),l=!0),r.forEach((function(n,o){var s,c,p,f,d,h,m,g,v,b,x=n,S=r[o+1],w=\"steps\"===e;if(w&&(s=y.xNumSteps[o]),s||(s=S-x),!1!==x&&void 0!==S)for(s=Math.max(s,1e-7),c=x;c<=S;c=(c+s).toFixed(7)/1){for(g=(d=(f=y.toStepping(c))-u)/t,b=d/(v=Math.round(g)),p=1;p<=v;p+=1)i[(h=u+p*b).toFixed(5)]=[y.fromStepping(h),0];m=r.indexOf(c)>-1?1:w?2:0,!o&&a&&c!==S&&(m=0),c===S&&l||(i[f.toFixed(5)]=[c,m]),u=f}})),i}(r,e,i),s=t.format||{to:Math.round};return h=w.appendChild(T(o,n,s))}function X(){var t=l.getBoundingClientRect(),e=\"offset\"+[\"Width\",\"Height\"][r.ort];return 0===r.ort?t.width||l[e]:t.height||l[e]}function _(t,e,n,i){var o=function(o){return!!(o=function(t,e,r){var n,i,o=0===t.type.indexOf(\"touch\"),s=0===t.type.indexOf(\"mouse\"),a=0===t.type.indexOf(\"pointer\");if(0===t.type.indexOf(\"MSPointer\")&&(a=!0),o){var l=function(t){return t.target===r||r.contains(t.target)||t.target.shadowRoot&&t.target.shadowRoot.contains(r)};if(\"touchstart\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(u.length>1)return!1;n=u[0].pageX,i=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;n=c.pageX,i=c.pageY}}return e=e||p(U),(s||a)&&(n=t.clientX+e.x,i=t.clientY+e.y),t.pageOffset=e,t.points=[n,i],t.cursor=s||a,t}(o,i.pageOffset,i.target||e))&&!(H()&&!i.doNotReject)&&(s=w,a=r.cssClasses.tap,!((s.classList?s.classList.contains(a):new RegExp(\"\\\\b\"+a+\"\\\\b\").test(s.className))&&!i.doNotReject)&&!(t===x.start&&void 0!==o.buttons&&o.buttons>1)&&(!i.hover||!o.buttons)&&(S||o.preventDefault(),o.calcPoint=o.points[r.ort],void n(o,i)));var s,a},s=[];return t.split(\" \").forEach((function(t){e.addEventListener(t,o,!!S&&{passive:!0}),s.push([t,o])})),s}function I(t){var e,n,i,o,a,u,c=100*(t-(e=l,n=r.ort,i=e.getBoundingClientRect(),o=e.ownerDocument,a=o.documentElement,u=p(o),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(u.x=0),n?i.top+u.y-a.clientTop:i.left+u.x-a.clientLeft))/X();return c=s(c),r.dir?100-c:c}function W(t,e){\"mouseout\"===t.type&&\"HTML\"===t.target.nodeName&&null===t.relatedTarget&&G(t,e)}function $(t,e){if(-1===navigator.appVersion.indexOf(\"MSIE 9\")&&0===t.buttons&&0!==e.buttonsProperty)return G(t,e);var n=(r.dir?-1:1)*(t.calcPoint-e.startCalcPoint);it(n>0,100*n/e.baseSize,e.locations,e.handleNumbers)}function G(t,e){e.handle&&(c(e.handle,r.cssClasses.active),N-=1),e.listeners.forEach((function(t){A.removeEventListener(t[0],t[1])})),0===N&&(c(w,r.cssClasses.drag),st(),t.cursor&&(V.style.cursor=\"\",V.removeEventListener(\"selectstart\",n))),e.handleNumbers.forEach((function(t){et(\"change\",t),et(\"set\",t),et(\"end\",t)}))}function J(t,e){if(e.handleNumbers.some(j))return!1;var i;1===e.handleNumbers.length&&(i=f[e.handleNumbers[0]].children[0],N+=1,u(i,r.cssClasses.active)),t.stopPropagation();var o=[],s=_(x.move,A,$,{target:t.target,handle:i,listeners:o,startCalcPoint:t.calcPoint,baseSize:X(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:C.slice()}),a=_(x.end,A,G,{target:t.target,handle:i,listeners:o,doNotReject:!0,handleNumbers:e.handleNumbers}),l=_(\"mouseout\",A,W,{target:t.target,handle:i,listeners:o,doNotReject:!0,handleNumbers:e.handleNumbers});o.push.apply(o,s.concat(a,l)),t.cursor&&(V.style.cursor=getComputedStyle(t.target).cursor,f.length>1&&u(w,r.cssClasses.drag),V.addEventListener(\"selectstart\",n,!1)),e.handleNumbers.forEach((function(t){et(\"start\",t)}))}function K(t){if(!t.buttons&&!t.touches)return!1;t.stopPropagation();var e=I(t.calcPoint),n=function(t){var e=100,r=!1;return f.forEach((function(n,i){if(!j(i)){var o=C[i],s=Math.abs(o-t);(so||100===s&&100===e)&&(r=i,e=s)}})),r}(e);if(!1===n)return!1;r.events.snap||o(w,r.cssClasses.tap,r.animationDuration),at(n,e,!0,!0),st(),et(\"slide\",n,!0),et(\"update\",n,!0),et(\"change\",n,!0),et(\"set\",n,!0),r.events.snap&&J(t,{handleNumbers:[n]})}function Q(t){var e=I(t.calcPoint),r=y.getStep(e),n=y.fromStepping(r);Object.keys(k).forEach((function(t){\"hover\"===t.split(\".\")[0]&&k[t].forEach((function(t){t.call(g,n)}))}))}function Z(t,e){k[t]=k[t]||[],k[t].push(e),\"update\"===t.split(\".\")[0]&&f.forEach((function(t,e){et(\"update\",e)}))}function tt(t){var e=t&&t.split(\".\")[0],r=e&&t.substring(e.length);Object.keys(k).forEach((function(t){var n=t.split(\".\")[0],i=t.substring(n.length);e&&e!==n||r&&r!==i||delete k[t]}))}function et(t,e,n){Object.keys(k).forEach((function(i){var o=i.split(\".\")[0];t===o&&k[i].forEach((function(t){t.call(g,E.map(r.format.to),e,E.slice(),n||!1,C.slice(),g)}))}))}function rt(t,e,n,i,o,a){var l;return f.length>1&&!r.events.unconstrained&&(i&&e>0&&(l=y.getAbsoluteDistance(t[e-1],r.margin,0),n=Math.max(n,l)),o&&e1&&r.limit&&(i&&e>0&&(l=y.getAbsoluteDistance(t[e-1],r.limit,0),n=Math.min(n,l)),o&&e1?n.forEach((function(t,r){var n=rt(i,t,i[t]+e,o[r],s[r],!1);!1===n?e=0:(e=n-i[t],i[t]=n)})):o=s=[!0];var a=!1;n.forEach((function(t,n){a=at(t,r[t]+e,o[n],s[n])||a})),a&&n.forEach((function(t){et(\"update\",t),et(\"slide\",t)}))}function ot(t,e){return r.dir?100-t-e:t}function st(){P.forEach((function(t){var e=C[t]>50?-1:1,r=3+(f.length+e*t);f[t].style.zIndex=r}))}function at(t,e,n,i){return!1!==(e=rt(C,t,e,n,i,!1))&&(function(t,e){C[t]=e,E[t]=y.fromStepping(e);var n=\"translate(\"+nt(10*(ot(e,0)-D)+\"%\",\"0\")+\")\";f[t].style[r.transformRule]=n,lt(t),lt(t+1)}(t,e),!0)}function lt(t){if(d[t]){var e=0,n=100;0!==t&&(e=C[t-1]),t!==d.length-1&&(n=C[t]);var i=n-e,o=\"translate(\"+nt(ot(e,i)+\"%\",\"0\")+\")\",s=\"scale(\"+nt(i/100,\"1\")+\")\";d[t].style[r.transformRule]=o+\" \"+s}}function ut(t,e){return null===t||!1===t||void 0===t?C[e]:(\"number\"==typeof t&&(t=String(t)),t=r.format.from(t),!1===(t=y.toStepping(t))||isNaN(t)?C[e]:t)}function ct(t,e){var n=a(t),i=void 0===C[0];e=void 0===e||!!e,r.animate&&!i&&o(w,r.cssClasses.tap,r.animationDuration),P.forEach((function(t){at(t,ut(n[t],t),!0,!1)}));for(var s=1===P.length?0:1;sn.stepAfter.startValue&&(o=n.stepAfter.startValue-i),s=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===e?o=null:0===e&&(s=null);var a=y.countStepDecimals();return null!==o&&!1!==o&&(o=Number(o.toFixed(a))),null!==s&&!1!==s&&(s=Number(s.toFixed(a))),[s,o]}return u(v=w,r.cssClasses.target),0===r.dir?u(v,r.cssClasses.ltr):u(v,r.cssClasses.rtl),0===r.ort?u(v,r.cssClasses.horizontal):u(v,r.cssClasses.vertical),u(v,\"rtl\"===getComputedStyle(v).direction?r.cssClasses.textDirectionRtl:r.cssClasses.textDirectionLtr),l=M(v,r.cssClasses.base),function(t,e){var n=M(e,r.cssClasses.connects);f=[],(d=[]).push(L(n,t[0]));for(var i=0;i=0&&t .noUi-tooltip {\\n -webkit-transform: translate(50%, 0);\\n transform: translate(50%, 0);\\n left: auto;\\n bottom: 10px;\\n}\\n.bk-root .noUi-vertical .noUi-origin > .noUi-tooltip {\\n -webkit-transform: translate(0, -18px);\\n transform: translate(0, -18px);\\n top: auto;\\n right: 28px;\\n}\\n.bk-root .noUi-handle {\\n cursor: grab;\\n cursor: -webkit-grab;\\n}\\n.bk-root .noUi-handle.noUi-active {\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n}\\n.bk-root .noUi-handle:after,\\n.bk-root .noUi-handle:before {\\n display: none;\\n}\\n.bk-root .noUi-tooltip {\\n display: none;\\n white-space: nowrap;\\n}\\n.bk-root .noUi-handle:hover .noUi-tooltip {\\n display: block;\\n}\\n.bk-root .noUi-horizontal {\\n width: 100%;\\n height: 10px;\\n}\\n.bk-root .noUi-vertical {\\n width: 10px;\\n height: 100%;\\n}\\n.bk-root .noUi-horizontal .noUi-handle {\\n width: 14px;\\n height: 18px;\\n right: -7px;\\n top: -5px;\\n}\\n.bk-root .noUi-vertical .noUi-handle {\\n width: 18px;\\n height: 14px;\\n right: -5px;\\n top: -7px;\\n}\\n.bk-root .noUi-target.noUi-horizontal {\\n margin: 5px 0px;\\n}\\n.bk-root .noUi-target.noUi-vertical {\\n margin: 0px 5px;\\n}\\n\"},\n", + " 427: function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default=\"\\n.bk-root .bk-slider-title {\\n white-space: nowrap;\\n}\\n.bk-root .bk-slider-value {\\n font-weight: 600;\\n}\\n\"},\n", + " 428: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1).__importDefault(e(186)),a=e(423);class d extends a.AbstractSliderView{}i.DateSliderView=d,d.__name__=\"DateSliderView\";class s extends a.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}static init_DateSlider(){this.prototype.default_view=d,this.override({format:\"%d %b %Y\"})}_formatter(e,t){return r.default(e,t)}}i.DateSlider=s,s.__name__=\"DateSlider\",s.init_DateSlider()},\n", + " 429: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1),_=e(430),n=r.__importStar(e(18));class s extends _.MarkupView{render(){super.render(),this.model.render_as_text?this.markup_el.textContent=this.model.text:this.markup_el.innerHTML=this.model.text}}i.DivView=s,s.__name__=\"DivView\";class a extends _.Markup{constructor(e){super(e)}static init_Div(){this.prototype.default_view=s,this.define({render_as_text:[n.Boolean,!1]})}}i.Div=a,a.__name__=\"Div\",a.init_Div()},\n", + " 430: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),a=e(217),n=e(72),l=i.__importStar(e(18)),r=e(472),_=e(431),c=i.__importDefault(e(432));class u extends r.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>{this.layout.invalidate_cache(),this.render(),this.root.compute_layout()})}styles(){return[...super.styles(),c.default]}_update_layout(){this.layout=new a.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render();const e=Object.assign(Object.assign({},this.model.style),{display:\"inline-block\"});this.markup_el=n.div({class:_.bk_clearfix,style:e}),this.el.appendChild(this.markup_el)}}s.MarkupView=u,u.__name__=\"MarkupView\";class o extends r.Widget{constructor(e){super(e)}static init_Markup(){this.define({text:[l.String,\"\"],style:[l.Any,{}]})}}s.Markup=o,o.__name__=\"Markup\",o.init_Markup()},\n", + " 431: function _(e,c,f){Object.defineProperty(f,\"__esModule\",{value:!0}),f.bk_clearfix=\"bk-clearfix\"},\n", + " 432: function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root .bk-clearfix:before,\\n.bk-root .bk-clearfix:after {\\n content: \"\";\\n display: table;\\n}\\n.bk-root .bk-clearfix:after {\\n clear: both;\\n}\\n'},\n", + " 433: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(404),o=e(313),_=e(72),d=n.__importStar(e(18)),l=e(8),r=e(173),u=e(281),c=e(282),h=n.__importDefault(e(284));class p extends s.AbstractButtonView{constructor(){super(...arguments),this._open=!1}styles(){return[...super.styles(),h.default]}render(){super.render();const e=_.div({class:[c.bk_caret,r.bk_down]});if(this.model.is_split){const t=this._render_button(e);t.classList.add(u.bk_dropdown_toggle),t.addEventListener(\"click\",()=>this._toggle_menu()),this.group_el.appendChild(t)}else this.button_el.appendChild(e);const t=this.model.menu.map((e,t)=>{if(null==e)return _.div({class:c.bk_divider});{const i=l.isString(e)?e:e[0],n=_.div({},i);return n.addEventListener(\"click\",()=>this._item_click(t)),n}});this.menu=_.div({class:[c.bk_menu,r.bk_below]},t),this.el.appendChild(this.menu),_.undisplay(this.menu)}_show_menu(){if(!this._open){this._open=!0,_.display(this.menu);const e=t=>{const{target:i}=t;i instanceof HTMLElement&&!this.el.contains(i)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,_.undisplay(this.menu))}_toggle_menu(){this._open?this._hide_menu():this._show_menu()}click(){this.model.is_split?(this._hide_menu(),this.model.trigger_event(new o.ButtonClick),super.click()):this._toggle_menu()}_item_click(e){this._hide_menu();const t=this.model.menu[e];if(null!=t){const i=l.isString(t)?t:t[1];l.isString(i)?this.model.trigger_event(new o.MenuItemClick(i)):i.execute(this.model,{index:e})}}}i.DropdownView=p,p.__name__=\"DropdownView\";class m extends s.AbstractButton{constructor(e){super(e)}static init_Dropdown(){this.prototype.default_view=p,this.define({split:[d.Boolean,!1],menu:[d.Array,[]]}),this.override({label:\"Dropdown\"})}get is_split(){return this.split}}i.Dropdown=m,m.__name__=\"Dropdown\",m.init_Dropdown()},\n", + " 434: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const l=e(1).__importStar(e(18)),s=e(472);class n extends s.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render()),this.connect(this.model.properties.width.change,()=>this.render())}render(){null==this.dialogEl&&(this.dialogEl=document.createElement(\"input\"),this.dialogEl.type=\"file\",this.dialogEl.multiple=this.model.multiple,this.dialogEl.onchange=()=>{const{files:e}=this.dialogEl;null!=e&&this.load_files(e)},this.el.appendChild(this.dialogEl)),null!=this.model.accept&&\"\"!=this.model.accept&&(this.dialogEl.accept=this.model.accept),this.dialogEl.style.width=\"{this.model.width}px\",this.dialogEl.disabled=this.model.disabled}async load_files(e){const t=[],i=[],l=[];let s;for(s=0;s{const l=new FileReader;l.onload=()=>{var s;const{result:n}=l;null!=n?t(n):i(null!==(s=l.error)&&void 0!==s?s:new Error(`unable to read '${e.name}'`))},l.readAsDataURL(e)})}}i.FileInputView=n,n.__name__=\"FileInputView\";class o extends s.Widget{constructor(e){super(e)}static init_FileInput(){this.prototype.default_view=n,this.define({value:[l.Any,\"\"],mime_type:[l.Any,\"\"],filename:[l.Any,\"\"],accept:[l.String,\"\"],multiple:[l.Boolean,!1]})}}i.FileInput=o,o.__name__=\"FileInput\",o.init_FileInput()},\n", + " 435: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),n=e(72),l=e(8),o=i.__importStar(e(18)),c=e(410),r=e(412);class h extends c.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.value.change,()=>this.render_selection()),this.connect(this.model.properties.options.change,()=>this.render()),this.connect(this.model.properties.name.change,()=>this.render()),this.connect(this.model.properties.title.change,()=>this.render()),this.connect(this.model.properties.size.change,()=>this.render()),this.connect(this.model.properties.disabled.change,()=>this.render())}render(){super.render();const e=this.model.options.map(e=>{let t,s;return l.isString(e)?t=s=e:[t,s]=e,n.option({value:t},s)});this.select_el=n.select({multiple:!0,class:r.bk_input,name:this.model.name,disabled:this.model.disabled},e),this.select_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.select_el),this.render_selection()}render_selection(){const e=new Set(this.model.value);for(const t of this.el.querySelectorAll(\"option\"))t.selected=e.has(t.value);this.select_el.size=this.model.size}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.select_el.focus()}}s.MultiSelectView=h,h.__name__=\"MultiSelectView\";class d extends c.InputWidget{constructor(e){super(e)}static init_MultiSelect(){this.prototype.default_view=h,this.define({value:[o.Array,[]],options:[o.Array,[]],size:[o.Number,4]})}}s.MultiSelect=d,d.__name__=\"MultiSelect\",d.init_MultiSelect()},\n", + " 436: function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const t=a(430),p=a(72);class s extends t.MarkupView{render(){super.render();const a=p.p({style:{margin:0}},this.model.text);this.markup_el.appendChild(a)}}r.ParagraphView=s,s.__name__=\"ParagraphView\";class i extends t.Markup{constructor(a){super(a)}static init_Paragraph(){this.prototype.default_view=s}}r.Paragraph=i,i.__name__=\"Paragraph\",i.init_Paragraph()},\n", + " 437: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(409);class r extends n.TextInputView{render(){super.render(),this.input_el.type=\"password\"}}s.PasswordInputView=r,r.__name__=\"PasswordInputView\";class p extends n.TextInput{constructor(e){super(e)}static init_PasswordInput(){this.prototype.default_view=r}}s.PasswordInput=p,p.__name__=\"PasswordInput\",p.init_PasswordInput()},\n", + " 438: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const l=e(1),s=l.__importDefault(e(439)),o=e(72),n=e(8),h=e(217),a=l.__importStar(e(18)),c=e(412),u=l.__importDefault(e(440)),d=e(410);class _ extends d.InputWidgetView{constructor(){super(...arguments),this._last_height=null}connect_signals(){super.connect_signals(),this.connect(this.model.properties.disabled.change,()=>this.set_disabled());const{value:e,max_items:t,option_limit:i,delete_button:l,placeholder:s,options:o,name:n,title:h}=this.model.properties;this.on_change([e,t,i,l,s,o,n,h],()=>this.render())}styles(){return[...super.styles(),u.default]}_update_layout(){this.layout=new h.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render(),this.select_el=o.select({multiple:!0,class:c.bk_input,name:this.model.name,disabled:this.model.disabled}),this.group_el.appendChild(this.select_el);const e=new Set(this.model.value),t=this.model.options.map(t=>{let i,l;return n.isString(t)?i=l=t:[i,l]=t,{value:i,label:l,selected:e.has(i)}}),i=this.model.solid?\"solid\":\"light\",l=\"choices__item \"+i,h=\"choices__button \"+i,a={choices:t,duplicateItemsAllowed:!1,removeItemButton:this.model.delete_button,classNames:{item:l,button:h}};null!=this.model.placeholder&&(a.placeholderValue=this.model.placeholder),null!=this.model.max_items&&(a.maxItemCount=this.model.max_items),null!=this.model.option_limit&&(a.renderChoiceLimit=this.model.option_limit),this.choice_el=new s.default(this.select_el,a);const u=()=>this.choice_el.containerOuter.element.getBoundingClientRect().height;null!=this._last_height&&this._last_height!=u()&&this.root.invalidate_layout(),this._last_height=u(),this.select_el.addEventListener(\"change\",()=>this.change_input())}set_disabled(){this.model.disabled?this.choice_el.disable():this.choice_el.enable()}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.select_el.focus()}}i.MultiChoiceView=_,_.__name__=\"MultiChoiceView\";class r extends d.InputWidget{constructor(e){super(e)}static init_MultiChoice(){this.prototype.default_view=_,this.define({value:[a.Array,[]],options:[a.Array,[]],max_items:[a.Number,null],delete_button:[a.Boolean,!0],placeholder:[a.String,null],option_limit:[a.Number,null],solid:[a.Boolean,!0]})}}i.MultiChoice=r,r.__name__=\"MultiChoice\",r.init_MultiChoice()},\n", + " 439: function _(e,t,i){\n", + " /*! choices.js v9.0.1 | © 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n", + " var n,s;n=window,s=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"/public/assets/scripts/\",i(i.s=4)}([function(e,t,i){\"use strict\";var n=function(e){return function(e){return!!e&&\"object\"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return\"[object RegExp]\"===t||\"[object Date]\"===t||function(e){return e.$$typeof===s}(e)}(e)},s=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?l((i=e,Array.isArray(i)?[]:{}),e,t):e;var i}function o(e,t,i){return e.concat(t).map((function(e){return r(e,i)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function c(e,t,i){var n={};return i.isMergeableObject(e)&&a(e).forEach((function(t){n[t]=r(e[t],i)})),a(t).forEach((function(s){(function(e,t){try{return t in e&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}catch(e){return!1}})(e,s)||(i.isMergeableObject(t[s])&&e[s]?n[s]=function(e,t){if(!t.customMerge)return l;var i=t.customMerge(e);return\"function\"==typeof i?i:l}(s,i)(e[s],t[s],i):n[s]=r(t[s],i))})),n}function l(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||o,i.isMergeableObject=i.isMergeableObject||n,i.cloneUnlessOtherwiseSpecified=r;var s=Array.isArray(t);return s===Array.isArray(e)?s?i.arrayMerge(e,t,i):c(e,t,i):r(t,i)}l.all=function(e,t){if(!Array.isArray(e))throw new Error(\"first argument should be an array\");return e.reduce((function(e,i){return l(e,i,t)}),{})};var h=l;e.exports=h},function(e,t,i){\"use strict\";(function(e,n){var s,r=i(3);s=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==e?e:n;var o=Object(r.a)(s);t.a=o}).call(this,i(5),i(6)(e))},function(e,t,i){\n", + " /*!\n", + " * Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io)\n", + " *\n", + " * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)\n", + " * All Rights Reserved. Apache Software License 2.0\n", + " *\n", + " * http://www.apache.org/licenses/LICENSE-2.0\n", + " */\n", + " e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=1)}([function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===Object.prototype.toString.call(e)}},function(e,t,i){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function s(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\\nSearch pattern: \"'.concat(e,'\"'));var i=this._prepareSearchers(e),n=i.tokenSearchers,s=i.fullSearcher,r=this._search(n,s),o=r.weights,a=r.results;return this._computeScore(o,a),this.options.shouldSort&&this._sort(a),t.limit&&\"number\"==typeof t.limit&&(a=a.slice(0,t.limit)),this._format(a)}},{key:\"_prepareSearchers\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",t=[];if(this.options.tokenize)for(var i=e.split(this.options.tokenSeparator),n=0,s=i.length;n0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,i=this.list,n={},s=[];if(\"string\"==typeof i[0]){for(var r=0,o=i.length;r1)throw new Error(\"Key weight has to be > 0 and <= 1\");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(h,p),record:h,index:c},{resultMap:n,results:s,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:s}}},{key:\"_analyze\",value:function(e,t){var i=e.key,n=e.arrayIndex,s=void 0===n?-1:n,r=e.value,o=e.record,c=e.index,l=t.tokenSearchers,h=void 0===l?[]:l,u=t.fullSearcher,d=void 0===u?[]:u,p=t.resultMap,m=void 0===p?{}:p,f=t.results,v=void 0===f?[]:f;if(null!=r){var g=!1,_=-1,b=0;if(\"string\"==typeof r){this._log(\"\\nKey: \".concat(\"\"===i?\"-\":i));var y=d.search(r);if(this._log('Full text: \"'.concat(r,'\", score: ').concat(y.score)),this.options.tokenize){for(var E=r.split(this.options.tokenSeparator),I=[],S=0;S-1&&(P=(P+_)/2),this._log(\"Score average:\",P);var D=!this.options.tokenize||!this.options.matchAllTokens||b>=h.length;if(this._log(\"\\nCheck Matches: \".concat(D)),(g||y.isMatch)&&D){var M=m[c];M?M.output.push({key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}):(m[c]={item:o,output:[{key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}]},v.push(m[c]))}}else if(a(r))for(var N=0,F=r.length;N-1&&(o.arrayIndex=r.arrayIndex),t.matches.push(o)}}})),this.options.includeScore&&s.push((function(e,t){t.score=e.score}));for(var r=0,o=e.length;ri)return s(e,this.pattern,n);var o=this.options,a=o.location,c=o.distance,l=o.threshold,h=o.findAllMatches,u=o.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:a,distance:c,threshold:l,findAllMatches:h,minMatchCharLength:u})}}])&&n(t.prototype,i),e}();e.exports=a},function(e,t){var i=/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,s=new RegExp(t.replace(i,\"\\\\$&\").replace(n,\"|\")),r=e.match(s),o=!!r,a=[];if(o)for(var c=0,l=r.length;c=P;N-=1){var F=N-1,j=i[e.charAt(F)];if(j&&(E[F]=1),M[N]=(M[N+1]<<1|1)&j,0!==T&&(M[N]|=(O[N+1]|O[N])<<1|1|O[N+1]),M[N]&L&&(C=n(t,{errors:T,currentLocation:F,expectedLocation:v,distance:l}))<=_){if(_=C,(b=F)<=v)break;P=Math.max(1,2*v-b)}}if(n(t,{errors:T+1,currentLocation:v,expectedLocation:v,distance:l})>_)break;O=M}return{isMatch:b>=0,score:0===C?.001:C,matchedIndices:s(E,f)}}},function(e,t){e.exports=function(e,t){var i=t.errors,n=void 0===i?0:i,s=t.currentLocation,r=void 0===s?0:s,o=t.expectedLocation,a=void 0===o?0:o,c=t.distance,l=void 0===c?100:c,h=n/e.length,u=Math.abs(a-r);return l?h+u/l:u?1:h}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=[],n=-1,s=-1,r=0,o=e.length;r=t&&i.push([n,s]),n=-1)}return e[r-1]&&r-n>=t&&i.push([n,r-1]),i}},function(e,t){e.exports=function(e){for(var t={},i=e.length,n=0;n/g,\"&rt;\").replace(/-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!0),i})):e;case\"REMOVE_ITEM\":return t.choiceId>-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!1),i})):e;case\"FILTER_CHOICES\":return e.map((function(e){var i=e;return i.active=t.results.some((function(e){var t=e.item,n=e.score;return t.id===i.id&&(i.score=n,!0)})),i}));case\"ACTIVATE_CHOICES\":return e.map((function(e){var i=e;return i.active=t.active,i}));case\"CLEAR_CHOICES\":return v;default:return e}},general:_}),A=function(e,t){var i=e;if(\"CLEAR_ALL\"===t.type)i=void 0;else if(\"RESET_TO\"===t.type)return O(t.state);return C(i,t)};function L(e,t){for(var i=0;i\"'+I(e)+'\"'},maxItemText:function(e){return\"Only \"+e+\" values can be added\"},valueComparer:function(e,t){return e===t},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:{containerOuter:\"choices\",containerInner:\"choices__inner\",input:\"choices__input\",inputCloned:\"choices__input--cloned\",list:\"choices__list\",listItems:\"choices__list--multiple\",listSingle:\"choices__list--single\",listDropdown:\"choices__list--dropdown\",item:\"choices__item\",itemSelectable:\"choices__item--selectable\",itemDisabled:\"choices__item--disabled\",itemChoice:\"choices__item--choice\",placeholder:\"choices__placeholder\",group:\"choices__group\",groupHeading:\"choices__heading\",button:\"choices__button\",activeState:\"is-active\",focusState:\"is-focused\",openState:\"is-open\",disabledState:\"is-disabled\",highlightedState:\"is-highlighted\",selectedState:\"is-selected\",flippedState:\"is-flipped\",loadingState:\"is-loading\",noResults:\"has-no-results\",noChoices:\"has-no-choices\"}},D=\"showDropdown\",M=\"hideDropdown\",N=\"change\",F=\"choice\",j=\"search\",K=\"addItem\",R=\"removeItem\",H=\"highlightItem\",B=\"highlightChoice\",V=\"ADD_CHOICE\",G=\"FILTER_CHOICES\",q=\"ACTIVATE_CHOICES\",U=\"CLEAR_CHOICES\",z=\"ADD_GROUP\",W=\"ADD_ITEM\",X=\"REMOVE_ITEM\",$=\"HIGHLIGHT_ITEM\",J=46,Y=8,Z=13,Q=65,ee=27,te=38,ie=40,ne=33,se=34,re=function(){function e(e){var t=e.element,i=e.type,n=e.classNames,s=e.position;this.element=t,this.classNames=n,this.type=i,this.position=s,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t=e.prototype;return t.addEventListeners=function(){this.element.addEventListener(\"focus\",this._onFocus),this.element.addEventListener(\"blur\",this._onBlur)},t.removeEventListeners=function(){this.element.removeEventListener(\"focus\",this._onFocus),this.element.removeEventListener(\"blur\",this._onBlur)},t.shouldFlip=function(e){if(\"number\"!=typeof e)return!1;var t=!1;return\"auto\"===this.position?t=!window.matchMedia(\"(min-height: \"+(e+1)+\"px)\").matches:\"top\"===this.position&&(t=!0),t},t.setActiveDescendant=function(e){this.element.setAttribute(\"aria-activedescendant\",e)},t.removeActiveDescendant=function(){this.element.removeAttribute(\"aria-activedescendant\")},t.open=function(e){this.element.classList.add(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"true\"),this.isOpen=!0,this.shouldFlip(e)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},t.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"false\"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},t.focus=function(){this.isFocussed||this.element.focus()},t.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},t.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},t.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute(\"aria-disabled\"),\"select-one\"===this.type&&this.element.setAttribute(\"tabindex\",\"0\"),this.isDisabled=!1},t.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute(\"aria-disabled\",\"true\"),\"select-one\"===this.type&&this.element.setAttribute(\"tabindex\",\"-1\"),this.isDisabled=!0},t.wrap=function(e){!function(e,t){void 0===t&&(t=document.createElement(\"div\")),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)}(e,this.element)},t.unwrap=function(e){this.element.parentNode.insertBefore(e,this.element),this.element.parentNode.removeChild(this.element)},t.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute(\"aria-busy\",\"true\"),this.isLoading=!0},t.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute(\"aria-busy\"),this.isLoading=!1},t._onFocus=function(){this.isFocussed=!0},t._onBlur=function(){this.isFocussed=!1},e}();function oe(e,t){for(var i=0;i0?this.element.scrollTop+o-s:e.offsetTop;requestAnimationFrame((function(){i._animateScroll(a,t)}))}},t._scrollDown=function(e,t,i){var n=(i-e)/t,s=n>1?n:1;this.element.scrollTop=e+s},t._scrollUp=function(e,t,i){var n=(e-i)/t,s=n>1?n:1;this.element.scrollTop=e-s},t._animateScroll=function(e,t){var i=this,n=this.element.scrollTop,s=!1;t>0?(this._scrollDown(n,4,e),ne&&(s=!0)),s&&requestAnimationFrame((function(){i._animateScroll(e,t)}))},e}();function le(e,t){for(var i=0;i0?\"treeitem\":\"option\"),Object.assign(g.dataset,{choice:\"\",id:l,value:h,selectText:i}),m?(g.classList.add(a),g.dataset.choiceDisabled=\"\",g.setAttribute(\"aria-disabled\",\"true\")):(g.classList.add(r),g.dataset.choiceSelectable=\"\"),g},input:function(e,t){var i=e.input,n=e.inputCloned,s=Object.assign(document.createElement(\"input\"),{type:\"text\",className:i+\" \"+n,autocomplete:\"off\",autocapitalize:\"off\",spellcheck:!1});return s.setAttribute(\"role\",\"textbox\"),s.setAttribute(\"aria-autocomplete\",\"list\"),s.setAttribute(\"aria-label\",t),s},dropdown:function(e){var t=e.list,i=e.listDropdown,n=document.createElement(\"div\");return n.classList.add(t,i),n.setAttribute(\"aria-expanded\",\"false\"),n},notice:function(e,t,i){var n=e.item,s=e.itemChoice,r=e.noResults,o=e.noChoices;void 0===i&&(i=\"\");var a=[n,s];return\"no-choices\"===i?a.push(o):\"no-results\"===i&&a.push(r),Object.assign(document.createElement(\"div\"),{innerHTML:t,className:a.join(\" \")})},option:function(e){var t=e.label,i=e.value,n=e.customProperties,s=e.active,r=e.disabled,o=new Option(t,i,!1,s);return n&&(o.dataset.customProperties=n),o.disabled=r,o}},ve=function(e){return void 0===e&&(e=!0),{type:q,active:e}},ge=function(e,t){return{type:$,id:e,highlighted:t}},_e=function(e){var t=e.value,i=e.id,n=e.active,s=e.disabled;return{type:z,value:t,id:i,active:n,disabled:s}},be=function(e){return{type:\"SET_IS_LOADING\",isLoading:e}};function ye(e,t){for(var i=0;i=0?this._store.getGroupById(s):null;return this._store.dispatch(ge(i,!0)),t&&this.passedElement.triggerEvent(H,{id:i,value:o,label:c,groupValue:l&&l.value?l.value:null}),this},r.unhighlightItem=function(e){if(!e)return this;var t=e.id,i=e.groupId,n=void 0===i?-1:i,s=e.value,r=void 0===s?\"\":s,o=e.label,a=void 0===o?\"\":o,c=n>=0?this._store.getGroupById(n):null;return this._store.dispatch(ge(t,!1)),this.passedElement.triggerEvent(H,{id:t,value:r,label:a,groupValue:c&&c.value?c.value:null}),this},r.highlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.highlightItem(t)})),this},r.unhighlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.unhighlightItem(t)})),this},r.removeActiveItemsByValue=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.value===e})).forEach((function(e){return t._removeItem(e)})),this},r.removeActiveItems=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.id!==e})).forEach((function(e){return t._removeItem(e)})),this},r.removeHighlightedItems=function(e){var t=this;return void 0===e&&(e=!1),this._store.highlightedActiveItems.forEach((function(i){t._removeItem(i),e&&t._triggerChange(i.value)})),this},r.showDropdown=function(e){var t=this;return this.dropdown.isActive||requestAnimationFrame((function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(D,{})})),this},r.hideDropdown=function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame((function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(M,{})})),this):this},r.getValue=function(e){void 0===e&&(e=!1);var t=this._store.activeItems.reduce((function(t,i){var n=e?i.value:i;return t.push(n),t}),[]);return this._isSelectOneElement?t[0]:t},r.setValue=function(e){var t=this;return this.initialised?(e.forEach((function(e){return t._setChoiceOrItem(e)})),this):this},r.setChoiceByValue=function(e){var t=this;return!this.initialised||this._isTextElement||(Array.isArray(e)?e:[e]).forEach((function(e){return t._findAndSelectChoiceByValue(e)})),this},r.setChoices=function(e,t,i,n){var s=this;if(void 0===e&&(e=[]),void 0===t&&(t=\"value\"),void 0===i&&(i=\"label\"),void 0===n&&(n=!1),!this.initialised)throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");if(!this._isSelectElement)throw new TypeError(\"setChoices can't be used with INPUT based Choices\");if(\"string\"!=typeof t||!t)throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");if(n&&this.clearChoices(),\"function\"==typeof e){var r=e(this);if(\"function\"==typeof Promise&&r instanceof Promise)return new Promise((function(e){return requestAnimationFrame(e)})).then((function(){return s._handleLoadingState(!0)})).then((function(){return r})).then((function(e){return s.setChoices(e,t,i,n)})).catch((function(e){s.config.silent||console.error(e)})).then((function(){return s._handleLoadingState(!1)})).then((function(){return s}));if(!Array.isArray(r))throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \"+typeof r);return this.setChoices(r,t,i,!1)}if(!Array.isArray(e))throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");return this.containerOuter.removeLoadingState(),this._startLoading(),e.forEach((function(e){e.choices?s._addGroup({id:parseInt(e.id,10)||null,group:e,valueKey:t,labelKey:i}):s._addChoice({value:e[t],label:e[i],isSelected:e.selected,isDisabled:e.disabled,customProperties:e.customProperties,placeholder:e.placeholder})})),this._stopLoading(),this},r.clearChoices=function(){return this._store.dispatch({type:U}),this},r.clearStore=function(){return this._store.dispatch({type:\"CLEAR_ALL\"}),this},r.clearInput=function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(ve(!0))),this},r._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,i=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),i&&this._renderItems(),this._prevState=this._currentState)}},r._renderChoices=function(){var e=this,t=this._store,i=t.activeGroups,n=t.activeChoices,s=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame((function(){return e.choiceList.scrollToTop()})),i.length>=1&&!this._isSearching){var r=n.filter((function(e){return!0===e.placeholder&&-1===e.groupId}));r.length>=1&&(s=this._createChoicesFragment(r,s)),s=this._createGroupsFragment(i,n,s)}else n.length>=1&&(s=this._createChoicesFragment(n,s));if(s.childNodes&&s.childNodes.length>0){var o=this._store.activeItems,a=this._canAddItem(o,this.input.value);a.response?(this.choiceList.append(s),this._highlightChoice()):this.choiceList.append(this._getTemplate(\"notice\",a.notice))}else{var c,l;this._isSearching?(l=\"function\"==typeof this.config.noResultsText?this.config.noResultsText():this.config.noResultsText,c=this._getTemplate(\"notice\",l,\"no-results\")):(l=\"function\"==typeof this.config.noChoicesText?this.config.noChoicesText():this.config.noChoicesText,c=this._getTemplate(\"notice\",l,\"no-choices\")),this.choiceList.append(c)}},r._renderItems=function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)},r._createGroupsFragment=function(e,t,i){var n=this;return void 0===i&&(i=document.createDocumentFragment()),this.config.shouldSort&&e.sort(this.config.sorter),e.forEach((function(e){var s=function(e){return t.filter((function(t){return n._isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&(\"always\"===n.config.renderSelectedChoices||!t.selected)}))}(e);if(s.length>=1){var r=n._getTemplate(\"choiceGroup\",e);i.appendChild(r),n._createChoicesFragment(s,i,!0)}})),i},r._createChoicesFragment=function(e,t,i){var n=this;void 0===t&&(t=document.createDocumentFragment()),void 0===i&&(i=!1);var s=this.config,r=s.renderSelectedChoices,o=s.searchResultLimit,a=s.renderChoiceLimit,c=this._isSearching?w:this.config.sorter,l=function(e){if(\"auto\"!==r||n._isSelectOneElement||!e.selected){var i=n._getTemplate(\"choice\",e,n.config.itemSelectText);t.appendChild(i)}},h=e;\"auto\"!==r||this._isSelectOneElement||(h=e.filter((function(e){return!e.selected})));var u=h.reduce((function(e,t){return t.placeholder?e.placeholderChoices.push(t):e.normalChoices.push(t),e}),{placeholderChoices:[],normalChoices:[]}),d=u.placeholderChoices,p=u.normalChoices;(this.config.shouldSort||this._isSearching)&&p.sort(c);var m=h.length,f=this._isSelectOneElement?[].concat(d,p):p;this._isSearching?m=o:a&&a>0&&!i&&(m=a);for(var v=0;v=n){var o=s?this._searchChoices(e):0;this.passedElement.triggerEvent(j,{value:e,resultCount:o})}else r&&(this._isSearching=!1,this._store.dispatch(ve(!0)))}},r._canAddItem=function(e,t){var i=!0,n=\"function\"==typeof this.config.addItemText?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var s=function(e,t,i){return void 0===i&&(i=\"value\"),e.some((function(e){return\"string\"==typeof t?e[i]===t.trim():e[i]===t}))}(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=\"function\"==typeof this.config.maxItemText?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&s&&i&&(i=!1,n=\"function\"==typeof this.config.uniqueItemText?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&i&&\"function\"==typeof this.config.addItemFilter&&!this.config.addItemFilter(t)&&(i=!1,n=\"function\"==typeof this.config.customAddItemText?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:i,notice:n}},r._searchChoices=function(e){var t=\"string\"==typeof e?e.trim():e,i=\"string\"==typeof this._currentValue?this._currentValue.trim():this._currentValue;if(t.length<1&&t===i+\" \")return 0;var n=this._store.searchableChoices,r=t,o=[].concat(this.config.searchFields),a=Object.assign(this.config.fuseOptions,{keys:o}),c=new s.a(n,a).search(r);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(function(e){return{type:G,results:e}}(c)),c.length},r._addEventListeners=function(){var e=document.documentElement;e.addEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.addEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.addEventListener(\"mousedown\",this._onMouseDown,!0),e.addEventListener(\"click\",this._onClick,{passive:!0}),e.addEventListener(\"touchmove\",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener(\"mouseover\",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener(\"blur\",this._onBlur,{passive:!0})),this.input.element.addEventListener(\"keyup\",this._onKeyUp,{passive:!0}),this.input.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.input.element.addEventListener(\"blur\",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener(\"reset\",this._onFormReset,{passive:!0}),this.input.addEventListeners()},r._removeEventListeners=function(){var e=document.documentElement;e.removeEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.removeEventListener(\"mousedown\",this._onMouseDown,!0),e.removeEventListener(\"click\",this._onClick),e.removeEventListener(\"touchmove\",this._onTouchMove),this.dropdown.element.removeEventListener(\"mouseover\",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener(\"focus\",this._onFocus),this.containerOuter.element.removeEventListener(\"blur\",this._onBlur)),this.input.element.removeEventListener(\"keyup\",this._onKeyUp),this.input.element.removeEventListener(\"focus\",this._onFocus),this.input.element.removeEventListener(\"blur\",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener(\"reset\",this._onFormReset),this.input.removeEventListeners()},r._onKeyDown=function(e){var t,i=e.target,n=e.keyCode,s=e.ctrlKey,r=e.metaKey,o=this._store.activeItems,a=this.input.isFocussed,c=this.dropdown.isActive,l=this.itemList.hasChildren(),h=String.fromCharCode(n),u=J,d=Y,p=Z,m=Q,f=ee,v=te,g=ie,_=ne,b=se,y=s||r;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(h)&&this.showDropdown();var E=((t={})[m]=this._onAKey,t[p]=this._onEnterKey,t[f]=this._onEscapeKey,t[v]=this._onDirectionKey,t[_]=this._onDirectionKey,t[g]=this._onDirectionKey,t[b]=this._onDirectionKey,t[d]=this._onDeleteKey,t[u]=this._onDeleteKey,t);E[n]&&E[n]({event:e,target:i,keyCode:n,metaKey:r,activeItems:o,hasFocusedInput:a,hasActiveDropdown:c,hasItems:l,hasCtrlDownKeyPressed:y})},r._onKeyUp=function(e){var t=e.target,i=e.keyCode,n=this.input.value,s=this._store.activeItems,r=this._canAddItem(s,n),o=J,a=Y;if(this._isTextElement)if(r.notice&&n){var c=this._getTemplate(\"notice\",r.notice);this.dropdown.element.innerHTML=c.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0);else{var l=(i===o||i===a)&&!t.value,h=!this._isTextElement&&this._isSearching,u=this._canSearch&&r.response;l&&h?(this._isSearching=!1,this._store.dispatch(ve(!0))):u&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},r._onAKey=function(e){var t=e.hasItems;e.hasCtrlDownKeyPressed&&t&&(this._canSearch=!1,this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement&&this.highlightAll())},r._onEnterKey=function(e){var t=e.event,i=e.target,n=e.activeItems,s=e.hasActiveDropdown,r=Z,o=i.hasAttribute(\"data-button\");if(this._isTextElement&&i.value){var a=this.input.value;this._canAddItem(n,a).response&&(this.hideDropdown(!0),this._addItem({value:a}),this._triggerChange(a),this.clearInput())}if(o&&(this._handleButtonAction(n,i),t.preventDefault()),s){var c=this.dropdown.getChild(\".\"+this.config.classNames.highlightedState);c&&(n[0]&&(n[0].keyCode=r),this._handleChoiceAction(n,c)),t.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),t.preventDefault())},r._onEscapeKey=function(e){e.hasActiveDropdown&&(this.hideDropdown(!0),this.containerOuter.focus())},r._onDirectionKey=function(e){var t,i,n,s=e.event,r=e.hasActiveDropdown,o=e.keyCode,a=e.metaKey,c=ie,l=ne,h=se;if(r||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var u,d=o===c||o===h?1:-1;if(a||o===h||o===l)u=d>0?this.dropdown.element.querySelector(\"[data-choice-selectable]:last-of-type\"):this.dropdown.element.querySelector(\"[data-choice-selectable]\");else{var p=this.dropdown.element.querySelector(\".\"+this.config.classNames.highlightedState);u=p?function(e,t,i){if(void 0===i&&(i=1),e instanceof Element&&\"string\"==typeof t){for(var n=(i>0?\"next\":\"previous\")+\"ElementSibling\",s=e[n];s;){if(s.matches(t))return s;s=s[n]}return s}}(p,\"[data-choice-selectable]\",d):this.dropdown.element.querySelector(\"[data-choice-selectable]\")}u&&(t=u,i=this.choiceList.element,void 0===(n=d)&&(n=1),t&&(n>0?i.scrollTop+i.offsetHeight>=t.offsetTop+t.offsetHeight:t.offsetTop>=i.scrollTop)||this.choiceList.scrollToChildElement(u,d),this._highlightChoice(u)),s.preventDefault()}},r._onDeleteKey=function(e){var t=e.event,i=e.target,n=e.hasFocusedInput,s=e.activeItems;!n||i.value||this._isSelectOneElement||(this._handleBackspace(s),t.preventDefault())},r._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},r._onTouchEnd=function(e){var t=(e||e.touches[0]).target;this._wasTap&&this.containerOuter.element.contains(t)&&((t===this.containerOuter.element||t===this.containerInner.element)&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation()),this._wasTap=!0},r._onMouseDown=function(e){var t=e.target;if(t instanceof HTMLElement){if(Ee&&this.choiceList.element.contains(t)){var i=this.choiceList.element.firstElementChild,n=\"ltr\"===this._direction?e.offsetX>=i.offsetWidth:e.offsetX0&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0))},r._onFocus=function(e){var t,i=this,n=e.target;this.containerOuter.element.contains(n)&&((t={}).text=function(){n===i.input.element&&i.containerOuter.addFocusState()},t[\"select-one\"]=function(){i.containerOuter.addFocusState(),n===i.input.element&&i.showDropdown(!0)},t[\"select-multiple\"]=function(){n===i.input.element&&(i.showDropdown(!0),i.containerOuter.addFocusState())},t)[this.passedElement.element.type]()},r._onBlur=function(e){var t=this,i=e.target;if(this.containerOuter.element.contains(i)&&!this._isScrollingOnIe){var n,s=this._store.activeItems.some((function(e){return e.highlighted}));((n={}).text=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),s&&t.unhighlightAll(),t.hideDropdown(!0))},n[\"select-one\"]=function(){t.containerOuter.removeFocusState(),(i===t.input.element||i===t.containerOuter.element&&!t._canSearch)&&t.hideDropdown(!0)},n[\"select-multiple\"]=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),t.hideDropdown(!0),s&&t.unhighlightAll())},n)[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},r._onFormReset=function(){this._store.dispatch({type:\"RESET_TO\",state:this._initialState})},r._highlightChoice=function(e){var t=this;void 0===e&&(e=null);var i=Array.from(this.dropdown.element.querySelectorAll(\"[data-choice-selectable]\"));if(i.length){var n=e;Array.from(this.dropdown.element.querySelectorAll(\".\"+this.config.classNames.highlightedState)).forEach((function(e){e.classList.remove(t.config.classNames.highlightedState),e.setAttribute(\"aria-selected\",\"false\")})),n?this._highlightPosition=i.indexOf(n):(n=i.length>this._highlightPosition?i[this._highlightPosition]:i[i.length-1])||(n=i[0]),n.classList.add(this.config.classNames.highlightedState),n.setAttribute(\"aria-selected\",\"true\"),this.passedElement.triggerEvent(B,{el:n}),this.dropdown.isActive&&(this.input.setActiveDescendant(n.id),this.containerOuter.setActiveDescendant(n.id))}},r._addItem=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.choiceId,r=void 0===s?-1:s,o=e.groupId,a=void 0===o?-1:o,c=e.customProperties,l=void 0===c?null:c,h=e.placeholder,u=void 0!==h&&h,d=e.keyCode,p=void 0===d?null:d,m=\"string\"==typeof t?t.trim():t,f=p,v=l,g=this._store.items,_=n||m,b=r||-1,y=a>=0?this._store.getGroupById(a):null,E=g?g.length+1:1;return this.config.prependValue&&(m=this.config.prependValue+m.toString()),this.config.appendValue&&(m+=this.config.appendValue.toString()),this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.choiceId,r=e.groupId,o=e.customProperties,a=e.placeholder,c=e.keyCode;return{type:W,value:t,label:i,id:n,choiceId:s,groupId:r,customProperties:o,placeholder:a,keyCode:c}}({value:m,label:_,id:E,choiceId:b,groupId:a,customProperties:l,placeholder:u,keyCode:f})),this._isSelectOneElement&&this.removeActiveItems(E),this.passedElement.triggerEvent(K,{id:E,value:m,label:_,customProperties:v,groupValue:y&&y.value?y.value:void 0,keyCode:f}),this},r._removeItem=function(e){if(!e||!E(\"Object\",e))return this;var t=e.id,i=e.value,n=e.label,s=e.choiceId,r=e.groupId,o=r>=0?this._store.getGroupById(r):null;return this._store.dispatch(function(e,t){return{type:X,id:e,choiceId:t}}(t,s)),o&&o.value?this.passedElement.triggerEvent(R,{id:t,value:i,label:n,groupValue:o.value}):this.passedElement.triggerEvent(R,{id:t,value:i,label:n}),this},r._addChoice=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.isSelected,r=void 0!==s&&s,o=e.isDisabled,a=void 0!==o&&o,c=e.groupId,l=void 0===c?-1:c,h=e.customProperties,u=void 0===h?null:h,d=e.placeholder,p=void 0!==d&&d,m=e.keyCode,f=void 0===m?null:m;if(null!=t){var v=this._store.choices,g=n||t,_=v?v.length+1:1,b=this._baseId+\"-\"+this._idNames.itemChoice+\"-\"+_;this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.groupId,r=e.disabled,o=e.elementId,a=e.customProperties,c=e.placeholder,l=e.keyCode;return{type:V,value:t,label:i,id:n,groupId:s,disabled:r,elementId:o,customProperties:a,placeholder:c,keyCode:l}}({id:_,groupId:l,elementId:b,value:t,label:g,disabled:a,customProperties:u,placeholder:p,keyCode:f})),r&&this._addItem({value:t,label:g,choiceId:_,customProperties:u,placeholder:p,keyCode:f})}},r._addGroup=function(e){var t=this,i=e.group,n=e.id,s=e.valueKey,r=void 0===s?\"value\":s,o=e.labelKey,a=void 0===o?\"label\":o,c=E(\"Object\",i)?i.choices:Array.from(i.getElementsByTagName(\"OPTION\")),l=n||Math.floor((new Date).valueOf()*Math.random()),h=!!i.disabled&&i.disabled;c?(this._store.dispatch(_e({value:i.label,id:l,active:!0,disabled:h})),c.forEach((function(e){var i=e.disabled||e.parentNode&&e.parentNode.disabled;t._addChoice({value:e[r],label:E(\"Object\",e)?e[a]:e.innerHTML,isSelected:e.selected,isDisabled:i,groupId:l,customProperties:e.customProperties,placeholder:e.placeholder})}))):this._store.dispatch(_e({value:i.label,id:i.id,active:!1,disabled:i.disabled}))},r._getTemplate=function(e){var t;if(!e)return null;for(var i=this.config.classNames,n=arguments.length,s=new Array(n>1?n-1:0),r=1;rthis.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.value.change,()=>{this.input_el.value=this.format_value,this.old_value=this.input_el.value}),this.connect(this.model.properties.low.change,()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&h.assert(t<=l,\"Invalid bounds, low must be inferior to high\"),null!=e&&null!=t&&(this.model.value=Math.max(e,t))}),this.connect(this.model.properties.high.change,()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&h.assert(l>=t,\"Invalid bounds, high must be superior to low\"),null!=e&&null!=l&&(this.model.value=Math.min(e,l))}),this.connect(this.model.properties.high.change,()=>this.input_el.placeholder=this.model.placeholder),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled),this.connect(this.model.properties.placeholder.change,()=>this.input_el.placeholder=this.model.placeholder)}get format_value(){return null!=this.model.value?this.model.pretty(this.model.value):\"\"}_set_input_filter(e){this.input_el.addEventListener(\"input\",()=>{const{selectionStart:t,selectionEnd:l}=this.input_el;if(e(this.input_el.value))this.old_value=this.input_el.value;else{const e=this.old_value.length-this.input_el.value.length;this.input_el.value=this.old_value,t&&l&&this.input_el.setSelectionRange(t-1,l+e)}})}render(){super.render(),this.input_el=u.input({type:\"text\",class:r.bk_input,name:this.model.name,value:this.format_value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.old_value=this.format_value,this.set_input_filter(),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.input_el.addEventListener(\"focusout\",()=>this.input_el.value=this.format_value),this.group_el.appendChild(this.input_el)}set_input_filter(){\"int\"==this.model.mode?this._set_input_filter(e=>d.test(e)):\"float\"==this.model.mode&&this._set_input_filter(e=>p.test(e))}bound_value(e){let t=e;const{low:l,high:i}=this.model;return t=null!=l?Math.max(l,t):t,t=null!=i?Math.min(i,t):t,t}get value(){let e=\"\"!==this.input_el.value?Number(this.input_el.value):null;return null!=e&&(e=this.bound_value(e)),e}change_input(){null==this.value?this.model.value=null:Number.isNaN(this.value)||(this.model.value=this.value)}}l.NumericInputView=_,_.__name__=\"NumericInputView\";class m extends s.InputWidget{constructor(e){super(e)}static init_NumericInput(){this.prototype.default_view=_,this.define({value:[o.Number,null],placeholder:[o.String,\"\"],mode:[o.Any,\"int\"],format:[o.Any],low:[o.Number,null],high:[o.Number,null]})}_formatter(e,t){return a.isString(t)?n.format(e,t):t.doFormat([e],{loc:0})[0]}pretty(e){return null!=this.format?this._formatter(e,this.format):\"\"+e}}l.NumericInput=m,m.__name__=\"NumericInput\",m.init_NumericInput()},\n", + " 442: function _(t,_,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=t(1);e.__exportStar(t(13),r),e.__exportStar(t(9),r),e.__exportStar(t(29),r),e.__exportStar(t(443),r),e.__exportStar(t(8),r),e.__exportStar(t(25),r)},\n", + " 443: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});class n{constructor(e){this.seed=e%2147483647,this.seed<=0&&(this.seed+=2147483646)}integer(){return this.seed=48271*this.seed%2147483647,this.seed}float(){return(this.integer()-1)/2147483646}floats(e){const t=new Array(e);for(let s=0;s{n.classes(o).toggle(s.bk_active,t===e)})}}e.RadioButtonGroupView=_,_.__name__=\"RadioButtonGroupView\";class c extends a.ButtonGroup{constructor(t){super(t)}static init_RadioButtonGroup(){this.prototype.default_view=_,this.define({active:[u.Any,null]})}}e.RadioButtonGroup=c,c.__name__=\"RadioButtonGroup\",c.init_RadioButtonGroup()},\n", + " 446: function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),a=e(72),s=e(29),o=n.__importStar(e(18)),d=e(417),l=e(173),p=e(412);class r extends d.InputGroupView{render(){super.render();const e=a.div({class:[p.bk_input_group,this.model.inline?l.bk_inline:null]});this.el.appendChild(e);const i=s.uniqueId(),{active:t,labels:n}=this.model;this._inputs=[];for(let s=0;sthis.change_active(s)),this._inputs.push(o),this.model.disabled&&(o.disabled=!0),s==t&&(o.checked=!0);const d=a.label({},o,a.span({},n[s]));e.appendChild(d)}}change_active(e){this.model.active=e}}t.RadioGroupView=r,r.__name__=\"RadioGroupView\";class u extends d.InputGroup{constructor(e){super(e)}static init_RadioGroup(){this.prototype.default_view=r,this.define({active:[o.Number],labels:[o.Array,[]],inline:[o.Boolean,!1]})}}t.RadioGroup=u,u.__name__=\"RadioGroup\",u.init_RadioGroup()},\n", + " 447: function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1).__importStar(e(188)),a=e(423),n=e(8);class o extends a.AbstractRangeSliderView{}r.RangeSliderView=o,o.__name__=\"RangeSliderView\";class s extends a.AbstractSlider{constructor(e){super(e),this.behaviour=\"drag\",this.connected=[!1,!0,!1]}static init_RangeSlider(){this.prototype.default_view=o,this.override({format:\"0[.]00\"})}_formatter(e,t){return n.isString(t)?i.format(e,t):t.doFormat([e],{loc:0})[0]}}r.RangeSlider=s,s.__name__=\"RangeSlider\",s.init_RangeSlider()},\n", + " 448: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(72),l=e(8),o=e(13),p=n.__importStar(e(18)),u=e(410),a=e(412);class _ extends u.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,options:t}=this.model.properties;this.on_change(e,()=>{this._update_value()}),this.on_change(t,()=>{s.empty(this.input_el),s.append(this.input_el,...this.options_el())})}options_el(){function e(e){return e.map(e=>{let t,i;return l.isString(e)?t=i=e:[t,i]=e,s.option({value:t},i)})}const{options:t}=this.model;return l.isArray(t)?e(t):o.entries(t).map(([t,i])=>s.optgroup({label:t},e(i)))}render(){super.render(),this.input_el=s.select({class:a.bk_input,name:this.model.name,disabled:this.model.disabled},this.options_el()),this._update_value(),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.input_el)}change_input(){const e=this.input_el.value;this.model.value=e,super.change_input()}_update_value(){const{value:e}=this.model;null!=e&&0!=e.length&&(this.input_el.value=this.model.value)}}i.SelectView=_,_.__name__=\"SelectView\";class h extends u.InputWidget{constructor(e){super(e)}static init_Select(){this.prototype.default_view=_,this.define({value:[p.String,\"\"],options:[p.Any,[]]})}}i.Select=h,h.__name__=\"Select\",h.init_Select()},\n", + " 449: function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1).__importStar(e(188)),o=e(423),s=e(8);class _ extends o.AbstractSliderView{}r.SliderView=_,_.__name__=\"SliderView\";class a extends o.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}static init_Slider(){this.prototype.default_view=_,this.override({format:\"0[.]00\"})}_formatter(e,t){return s.isString(t)?i.format(e,t):t.doFormat([e],{loc:0})[0]}}r.Slider=a,a.__name__=\"Slider\",a.init_Slider()},\n", + " 450: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(441),l=n.__importStar(e(18)),r=e(72),{min:o,max:_,floor:a,abs:h}=Math;function u(e){return a(e)!==e?e.toFixed(16).replace(/0+$/,\"\").split(\".\")[1].length:0}class p extends s.NumericInputView{*buttons(){yield this.btn_up_el,yield this.btn_down_el}initialize(){super.initialize(),this._interval=200}connect_signals(){super.connect_signals();const e=this.model.properties;this.on_change(e.disabled,()=>{for(const e of this.buttons())r.toggle_attribute(e,\"disabled\",this.model.disabled)})}render(){super.render(),this.wrapper_el=r.div({class:\"bk-spin-wrapper\"}),this.group_el.replaceChild(this.wrapper_el,this.input_el),this.btn_up_el=r.button({class:\"bk-spin-btn bk-spin-btn-up\"}),this.btn_down_el=r.button({class:\"bk-spin-btn bk-spin-btn-down\"}),this.wrapper_el.appendChild(this.input_el),this.wrapper_el.appendChild(this.btn_up_el),this.wrapper_el.appendChild(this.btn_down_el);for(const e of this.buttons())r.toggle_attribute(e,\"disabled\",this.model.disabled),e.addEventListener(\"mousedown\",e=>this._btn_mouse_down(e)),e.addEventListener(\"mouseup\",()=>this._btn_mouse_up()),e.addEventListener(\"mouseleave\",()=>this._btn_mouse_leave());this.input_el.addEventListener(\"keydown\",e=>this._input_key_down(e)),this.input_el.addEventListener(\"keyup\",()=>this.model.value_throttled=this.model.value),this.input_el.addEventListener(\"wheel\",e=>this._input_mouse_wheel(e)),this.input_el.addEventListener(\"wheel\",function(e,t,i=!1){let n;return function(...s){const l=this,r=i&&void 0===n;void 0!==n&&clearTimeout(n),n=setTimeout((function(){n=void 0,i||e.apply(l,s)}),t),r&&e.apply(l,s)}}(()=>{this.model.value_throttled=this.model.value},this.model.wheel_wait,!1))}get precision(){const{low:e,high:t,step:i}=this.model;return _(...[e,t,i].map(h).reduce((e,t)=>(null!=t&&e.push(t),e),[]).map(u))}_start_incrementation(e){clearInterval(this._interval_handle),this._counter=0;const{step:t}=this.model,i=e=>{if(this._counter+=1,this._counter%5==0){const t=Math.floor(this._counter/5);t<10?(clearInterval(this._interval_handle),this._interval_handle=setInterval(()=>i(e),this._interval/(t+1))):t>=10&&t<=13&&(clearInterval(this._interval_handle),this._interval_handle=setInterval(()=>i(2*e),this._interval/10))}this.increment(e)};this._interval_handle=setInterval(()=>i(e*t),this._interval)}_stop_incrementation(){clearInterval(this._interval_handle),this.model.value_throttled=this.model.value}_btn_mouse_down(e){e.preventDefault();const t=e.currentTarget===this.btn_up_el?1:-1;this.increment(t*this.model.step),this.input_el.focus(),this._start_incrementation(t)}_btn_mouse_up(){this._stop_incrementation()}_btn_mouse_leave(){this._stop_incrementation()}_input_mouse_wheel(e){if(document.activeElement===this.input_el){e.preventDefault();const t=e.deltaY>0?-1:1;this.increment(t*this.model.step)}}_input_key_down(e){switch(e.keyCode){case r.Keys.Up:return e.preventDefault(),this.increment(this.model.step);case r.Keys.Down:return e.preventDefault(),this.increment(-this.model.step);case r.Keys.PageUp:return e.preventDefault(),this.increment(this.model.page_step_multiplier*this.model.step);case r.Keys.PageDown:return e.preventDefault(),this.increment(-this.model.page_step_multiplier*this.model.step)}}adjust_to_precision(e){return this.bound_value(Number(e.toFixed(this.precision)))}increment(e){const{low:t,high:i}=this.model;null==this.model.value?e>0?this.model.value=null!=t?t:null!=i?o(0,i):0:e<0&&(this.model.value=null!=i?i:null!=t?_(t,0):0):this.model.value=this.adjust_to_precision(this.model.value+e)}change_input(){super.change_input(),this.model.value_throttled=this.model.value}}i.SpinnerView=p,p.__name__=\"SpinnerView\";class d extends s.NumericInput{constructor(e){super(e)}static init_Spinner(){this.prototype.default_view=p,this.define({value_throttled:[l.Number,null],step:[l.Number,1],page_step_multiplier:[l.Number,10],wheel_wait:[l.Number,100]}),this.override({mode:\"float\"})}}i.Spinner=d,d.__name__=\"Spinner\",d.init_Spinner()},\n", + " 451: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(410),l=e(72),h=s.__importStar(e(18)),o=e(412);class a extends n.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,()=>this.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.value.change,()=>this.input_el.value=this.model.value),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled),this.connect(this.model.properties.placeholder.change,()=>this.input_el.placeholder=this.model.placeholder),this.connect(this.model.properties.rows.change,()=>this.input_el.rows=this.model.rows),this.connect(this.model.properties.cols.change,()=>this.input_el.cols=this.model.cols),this.connect(this.model.properties.max_length.change,()=>this.input_el.maxLength=this.model.max_length)}render(){super.render(),this.input_el=l.textarea({class:o.bk_input,name:this.model.name,disabled:this.model.disabled,placeholder:this.model.placeholder,cols:this.model.cols,rows:this.model.rows,maxLength:this.model.max_length}),this.input_el.textContent=this.model.value,this.input_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.input_el)}change_input(){this.model.value=this.input_el.value,super.change_input()}}i.TextAreaInputView=a,a.__name__=\"TextAreaInputView\";class p extends n.InputWidget{constructor(e){super(e)}static init_TextAreaInput(){this.prototype.default_view=a,this.define({value:[h.String,\"\"],value_input:[h.String,\"\"],placeholder:[h.String,\"\"],cols:[h.Number,20],rows:[h.Number,2],max_length:[h.Number,500]})}}i.TextAreaInput=p,p.__name__=\"TextAreaInput\",p.init_TextAreaInput()},\n", + " 452: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),c=e(404),o=e(72),a=s.__importStar(e(18)),n=e(173);class l extends c.AbstractButtonView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._update_active())}render(){super.render(),this._update_active()}click(){this.model.active=!this.model.active,super.click()}_update_active(){o.classes(this.button_el).toggle(n.bk_active,this.model.active)}}i.ToggleView=l,l.__name__=\"ToggleView\";class _ extends c.AbstractButton{constructor(e){super(e)}static init_Toggle(){this.prototype.default_view=l,this.define({active:[a.Boolean,!1]}),this.override({label:\"Toggle\"})}}i.Toggle=_,_.__name__=\"Toggle\",_.init_Toggle()},\n", + " }, 402, {\"models/widgets/main\":402,\"models/widgets/index\":403,\"models/widgets/abstract_button\":404,\"models/widgets/control\":405,\"models/widgets/widget\":472,\"models/widgets/abstract_icon\":407,\"models/widgets/autocomplete_input\":408,\"models/widgets/text_input\":409,\"models/widgets/input_widget\":410,\"styles/widgets/inputs.css\":411,\"styles/widgets/inputs\":412,\"models/widgets/button\":413,\"models/widgets/checkbox_button_group\":414,\"models/widgets/button_group\":415,\"models/widgets/checkbox_group\":416,\"models/widgets/input_group\":417,\"models/widgets/color_picker\":418,\"models/widgets/date_picker\":419,\"styles/widgets/flatpickr.css\":421,\"models/widgets/date_range_slider\":422,\"models/widgets/abstract_slider\":423,\"styles/widgets/sliders\":425,\"styles/widgets/nouislider.css\":426,\"styles/widgets/sliders.css\":427,\"models/widgets/date_slider\":428,\"models/widgets/div\":429,\"models/widgets/markup\":430,\"styles/clearfix\":431,\"styles/clearfix.css\":432,\"models/widgets/dropdown\":433,\"models/widgets/file_input\":434,\"models/widgets/multiselect\":435,\"models/widgets/paragraph\":436,\"models/widgets/password_input\":437,\"models/widgets/multichoice\":438,\"styles/widgets/choices.css\":440,\"models/widgets/numeric_input\":441,\"api/linalg\":442,\"core/util/random\":443,\"models/widgets/pretext\":444,\"models/widgets/radio_button_group\":445,\"models/widgets/radio_group\":446,\"models/widgets/range_slider\":447,\"models/widgets/selectbox\":448,\"models/widgets/slider\":449,\"models/widgets/spinner\":450,\"models/widgets/textarea_input\":451,\"models/widgets/toggle\":452}, {});\n", + " })\n", + "\n", + "\n", + " /* END bokeh-widgets.min.js */\n", + " },\n", + " \n", + " function(Bokeh) {\n", + " /* BEGIN bokeh-tables.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2020, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " factory(root[\"Bokeh\"], \"2.2.3\");\n", + " })(this, function(Bokeh, version) {\n", + " var define;\n", + " return (function(modules, entry, aliases, externals) {\n", + " const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n", + " if (bokeh != null) {\n", + " return bokeh.register_plugin(modules, entry, aliases);\n", + " } else {\n", + " throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n", + " }\n", + " })\n", + " ({\n", + " 453: function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(1).__importStar(e(454));o.Tables=r;e(7).register_models(r)},\n", + " 454: function _(a,g,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=a(1);e.__exportStar(a(455),r),e.__exportStar(a(475),r);var t=a(456);r.DataTable=t.DataTable;var o=a(474);r.TableColumn=o.TableColumn;var n=a(473);r.TableWidget=n.TableWidget;var u=a(481);r.AvgAggregator=u.AvgAggregator,r.MinAggregator=u.MinAggregator,r.MaxAggregator=u.MaxAggregator,r.SumAggregator=u.SumAggregator;var l=a(482);r.GroupingInfo=l.GroupingInfo,r.DataCube=l.DataCube},\n", + " 455: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1).__importStar(e(18)),r=e(72),a=e(78),n=e(81),l=e(456),u=e(478);class d extends a.DOMView{constructor(e){const{model:t,parent:i}=e.column;super(Object.assign({model:t,parent:i},e)),this.args=e,this.initialize(),this.render()}get emptyValue(){return null}initialize(){super.initialize(),this.inputEl=this._createInput(),this.defaultValue=null}async lazy_initialize(){throw new Error(\"unsupported\")}css_classes(){return super.css_classes().concat(u.bk_cell_editor)}render(){super.render(),this.args.container.append(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()}renderEditor(){}disableNavigation(){this.inputEl.addEventListener(\"keydown\",e=>{switch(e.keyCode){case r.Keys.Left:case r.Keys.Right:case r.Keys.Up:case r.Keys.Down:case r.Keys.PageUp:case r.Keys.PageDown:e.stopImmediatePropagation()}})}destroy(){this.remove()}focus(){this.inputEl.focus()}show(){}hide(){}position(){}getValue(){return this.inputEl.value}setValue(e){this.inputEl.value=e}serializeValue(){return this.getValue()}isValueChanged(){return!(\"\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue}applyValue(e,t){const i=this.args.grid.getData(),s=i.index.indexOf(e[l.DTINDEX_NAME]);i.setField(s,this.args.column.field,t)}loadValue(e){const t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)}validateValue(e){if(this.args.column.validator){const t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}}validate(){return this.validateValue(this.getValue())}}i.CellEditorView=d,d.__name__=\"CellEditorView\";class o extends n.Model{}i.CellEditor=o,o.__name__=\"CellEditor\";class _ extends d{get emptyValue(){return\"\"}_createInput(){return r.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}}i.StringEditorView=_,_.__name__=\"StringEditorView\";class c extends o{static init_StringEditor(){this.prototype.default_view=_,this.define({completions:[s.Array,[]]})}}i.StringEditor=c,c.__name__=\"StringEditor\",c.init_StringEditor();class p extends d{_createInput(){return r.textarea()}renderEditor(){this.inputEl.focus(),this.inputEl.select()}}i.TextEditorView=p,p.__name__=\"TextEditorView\";class h extends o{static init_TextEditor(){this.prototype.default_view=p}}i.TextEditor=h,h.__name__=\"TextEditor\",h.init_TextEditor();class E extends d{_createInput(){return r.select()}renderEditor(){for(const e of this.model.options)this.inputEl.appendChild(r.option({value:e},e));this.focus()}}i.SelectEditorView=E,E.__name__=\"SelectEditorView\";class V extends o{static init_SelectEditor(){this.prototype.default_view=E,this.define({options:[s.Array,[]]})}}i.SelectEditor=V,V.__name__=\"SelectEditor\",V.init_SelectEditor();class m extends d{_createInput(){return r.input({type:\"text\"})}}i.PercentEditorView=m,m.__name__=\"PercentEditorView\";class f extends o{static init_PercentEditor(){this.prototype.default_view=m}}i.PercentEditor=f,f.__name__=\"PercentEditor\",f.init_PercentEditor();class x extends d{_createInput(){return r.input({type:\"checkbox\"})}renderEditor(){this.focus()}loadValue(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue}serializeValue(){return this.inputEl.checked}}i.CheckboxEditorView=x,x.__name__=\"CheckboxEditorView\";class w extends o{static init_CheckboxEditor(){this.prototype.default_view=x}}i.CheckboxEditor=w,w.__name__=\"CheckboxEditor\",w.init_CheckboxEditor();class g extends d{_createInput(){return r.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){return parseInt(this.getValue(),10)||0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid integer\"}:super.validateValue(e)}}i.IntEditorView=g,g.__name__=\"IntEditorView\";class y extends o{static init_IntEditor(){this.prototype.default_view=g,this.define({step:[s.Number,1]})}}i.IntEditor=y,y.__name__=\"IntEditor\",y.init_IntEditor();class v extends d{_createInput(){return r.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){return parseFloat(this.getValue())||0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid number\"}:super.validateValue(e)}}i.NumberEditorView=v,v.__name__=\"NumberEditorView\";class b extends o{static init_NumberEditor(){this.prototype.default_view=v,this.define({step:[s.Number,.01]})}}i.NumberEditor=b,b.__name__=\"NumberEditor\",b.init_NumberEditor();class I extends d{_createInput(){return r.input({type:\"text\"})}}i.TimeEditorView=I,I.__name__=\"TimeEditorView\";class N extends o{static init_TimeEditor(){this.prototype.default_view=I}}i.TimeEditor=N,N.__name__=\"TimeEditor\",N.init_TimeEditor();class C extends d{_createInput(){return r.input({type:\"text\"})}get emptyValue(){return new Date}renderEditor(){this.inputEl.focus(),this.inputEl.select()}destroy(){super.destroy()}show(){super.show()}hide(){super.hide()}position(){return super.position()}getValue(){}setValue(e){}}i.DateEditorView=C,C.__name__=\"DateEditorView\";class D extends o{static init_DateEditor(){this.prototype.default_view=C}}i.DateEditor=D,D.__name__=\"DateEditor\",D.init_DateEditor()},\n", + " 456: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),o=e(457),n=e(461),l=e(462),r=e(463),d=e(29),a=e(8),h=e(9),u=e(13),c=e(19),_=e(472),m=e(473),g=e(474),p=e(478),f=s.__importDefault(e(479)),b=s.__importDefault(e(480));i.DTINDEX_NAME=\"__bkdt_internal_index__\",i.AutosizeModes={fit_columns:\"FCV\",fit_viewport:\"FVC\",force_fit:\"LFF\",none:\"NOA\"};class w{constructor(e,t){this.init(e,t)}init(e,t){if(i.DTINDEX_NAME in e.data)throw new Error(`special name ${i.DTINDEX_NAME} cannot be used as a data table column`);this.source=e,this.view=t,this.index=[...this.view.indices]}getLength(){return this.index.length}getItem(e){const t={};for(const i of u.keys(this.source.data))t[i]=this.source.data[i][this.index[e]];return t[i.DTINDEX_NAME]=this.index[e],t}getField(e,t){return t==i.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]}setField(e,t,i){const s=this.index[e];this.source.patch({[t]:[[s,i]]})}getRecords(){return h.range(0,this.getLength()).map(e=>this.getItem(e))}getItems(){return this.getRecords()}slice(e,t,i){return e=null!=e?e:0,t=null!=t?t:this.getLength(),i=null!=i?i:1,h.range(e,t,i).map(e=>this.getItem(e))}sort(e){let t=e.map(e=>[e.sortCol.field,e.sortAsc?1:-1]);0==t.length&&(t=[[i.DTINDEX_NAME,1]]);const s=this.getRecords(),o=this.index.slice();this.index.sort((e,i)=>{for(const[n,l]of t){const t=s[o.indexOf(e)][n],r=s[o.indexOf(i)][n];if(t!==r)return a.isNumber(t)&&a.isNumber(r)?l*(t-r||+isNaN(t)-+isNaN(r)):\"\"+t>\"\"+r?l:-l}return 0})}}i.TableDataProvider=w,w.__name__=\"TableDataProvider\";class x extends _.WidgetView{constructor(){super(...arguments),this._in_selection_update=!1,this._warned_not_reorderable=!1,this._width=null}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render()),this.connect(this.model.source.streaming,()=>this.updateGrid()),this.connect(this.model.source.patching,()=>this.updateGrid()),this.connect(this.model.source.change,()=>this.updateGrid()),this.connect(this.model.source.properties.data.change,()=>this.updateGrid()),this.connect(this.model.source.selected.change,()=>this.updateSelection()),this.connect(this.model.source.selected.properties.indices.change,()=>this.updateSelection())}remove(){var e;null===(e=this.grid)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),f.default,b.default]}update_position(){super.update_position(),this.grid.resizeCanvas()}after_layout(){super.after_layout(),this.updateLayout(!0,!1)}box_sizing(){const e=super.box_sizing();return\"fit_viewport\"===this.model.autosize_mode&&null!=this._width&&(e.width=this._width),e}updateLayout(e,t){const s=this.autosize;s===i.AutosizeModes.fit_columns||s===i.AutosizeModes.force_fit?(e||this.grid.resizeCanvas(),this.grid.autosizeColumns()):e&&t&&s===i.AutosizeModes.fit_viewport&&this.invalidate_layout()}updateGrid(){if(this.model.view.compute_indices(),this.data.init(this.model.source,this.model.view),this.model.sortable){const e=this.grid.getColumns(),t=this.grid.getSortColumns().map(t=>({sortCol:{field:e[this.grid.getColumnIndex(t.columnId)].field},sortAsc:t.sortAsc}));this.data.sort(t)}this.grid.invalidate(),this.updateLayout(!0,!0)}updateSelection(){if(this._in_selection_update)return;const{selected:e}=this.model.source,t=e.indices.map(e=>this.data.index.indexOf(e)).sort();this._in_selection_update=!0,this.grid.setSelectedRows(t),this._in_selection_update=!1;const i=this.grid.getViewport(),s=this.model.get_scroll_index(i,t);null!=s&&this.grid.scrollRowToTop(s)}newIndexColumn(){return{id:d.uniqueId(),name:this.model.index_header,field:i.DTINDEX_NAME,width:this.model.index_width,behavior:\"select\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:p.bk_cell_index,headerCssClass:p.bk_header_index}}css_classes(){return super.css_classes().concat(p.bk_data_table)}get autosize(){let e;return e=!0===this.model.fit_columns?i.AutosizeModes.force_fit:!1===this.model.fit_columns?i.AutosizeModes.none:i.AutosizeModes[this.model.autosize_mode],e}render(){var e;const t=this.model.columns.map(e=>Object.assign(Object.assign({},e.toColumn()),{parent:this}));let s=null;if(\"checkbox\"==this.model.selectable&&(s=new n.CheckboxSelectColumn({cssClass:p.bk_cell_select}),t.unshift(s.getColumnDefinition())),null!=this.model.index_position){const e=this.model.index_position,i=this.newIndexColumn();-1==e?t.push(i):e<-1?t.splice(e+1,0,i):t.splice(e,0,i)}let{reorderable:d}=this.model;!d||\"undefined\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(this._warned_not_reorderable||(c.logger.warn(\"jquery-ui is required to enable DataTable.reorderable\"),this._warned_not_reorderable=!0),d=!1);let h=-1,u=!1;const{frozen_rows:_,frozen_columns:m}=this.model,g=null==m?-1:m-1;null!=_&&(u=_<0,h=Math.abs(_));const f={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:d,autosizeColsMode:this.autosize,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:this.model.auto_edit,autoHeight:!1,rowHeight:this.model.row_height,frozenColumn:g,frozenRow:h,frozenBottom:u},b=null!=this.grid;if(this.data=new w(this.model.source,this.model.view),this.grid=new r.Grid(this.el,this.data,t,f),this.autosize==i.AutosizeModes.fit_viewport){this.grid.autosizeColumns();let i=0;for(const s of t)i+=null!==(e=s.width)&&void 0!==e?e:0;this._width=Math.ceil(i)}if(this.grid.onSort.subscribe((e,t)=>{if(!this.model.sortable)return;const i=t.sortCols;null!=i&&(this.data.sort(i),this.grid.invalidate(),this.updateSelection(),this.grid.render(),this.model.header_row||this._hide_header(),this.model.update_sort_columns(i))}),!1!==this.model.selectable){this.grid.setSelectionModel(new o.RowSelectionModel({selectActiveRow:null==s})),null!=s&&this.grid.registerPlugin(s);const e={dataItemColumnValueExtractor(e,t){let i=e[t.field];return a.isString(i)&&(i=i.replace(/\\n/g,\"\\\\n\")),i},includeHeaderWhenCopying:!1};this.grid.registerPlugin(new l.CellExternalCopyManager(e)),this.grid.onSelectedRowsChanged.subscribe((e,t)=>{this._in_selection_update||(this.model.source.selected.indices=t.rows.map(e=>this.data.index[e]))}),this.updateSelection(),this.model.header_row||this._hide_header()}b&&this.updateLayout(b,!1)}_hide_header(){for(const e of this.el.querySelectorAll(\".slick-header-columns\"))e.style.height=\"0px\";this.grid.resizeCanvas()}}i.DataTableView=x,x.__name__=\"DataTableView\";class C extends m.TableWidget{constructor(e){super(e),this._sort_columns=[]}get sort_columns(){return this._sort_columns}static init_DataTable(){this.prototype.default_view=x,this.define(({Array:e,Boolean:t,Int:i,Ref:s,String:o,Enum:n,Or:l,Null:r})=>({autosize_mode:[n(\"fit_columns\",\"fit_viewport\",\"none\",\"force_fit\"),\"force_fit\"],auto_edit:[t,!1],columns:[e(s(g.TableColumn)),[]],fit_columns:[l(t,r),null],frozen_columns:[l(i,r),null],frozen_rows:[l(i,r),null],sortable:[t,!0],reorderable:[t,!0],editable:[t,!1],selectable:[l(t,n(\"checkbox\")),!0],index_position:[l(i,r),0],index_header:[o,\"#\"],index_width:[i,40],scroll_to_selection:[t,!0],header_row:[t,!0],row_height:[i,25]})),this.override({width:600,height:400})}update_sort_columns(e){this._sort_columns=e.map(({sortCol:e,sortAsc:t})=>({field:e.field,sortAsc:t}))}get_scroll_index(e,t){return this.scroll_to_selection&&0!=t.length?h.some(t,t=>e.top<=t&&t<=e.bottom)?null:Math.max(0,Math.min(...t)-1):null}}i.DataTable=C,C.__name__=\"DataTable\",C.init_DataTable()},\n", + " 457: function _(e,t,n){var o=e(458),r=e(460);t.exports={RowSelectionModel:function(e){var t,n,l,i=[],c=this,u=new r.EventHandler,s={selectActiveRow:!0};function a(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function f(e){for(var t=[],n=0;n=0&&l0&&t-1 in e)}b.fn=b.prototype={jquery:\"3.5.1\",constructor:b,length:0,toArray:function(){return i.call(this)},get:function(e){return null==e?i.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return b.each(this,e)},map:function(e){return this.pushStack(b.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(i.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(b.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(b.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"�\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){p()},ae=be((function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()}),{dir:\"parentNode\",next:\"legend\"});try{H.apply(j=O.call(w.childNodes),w.childNodes),j[w.childNodes.length].nodeType}catch(e){H={apply:j.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(t),t=t||d,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return H.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return H.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+\" \"]&&(!v||!v.test(e))&&(1!==w||\"object\"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===w&&(U.test(e)||z.test(e))){for((m=ee.test(e)&&ye(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute(\"id\"))?c=c.replace(re,ie):t.setAttribute(\"id\",c=b)),s=(h=a(e)).length;s--;)h[s]=(c?\"#\"+c:\":scope\")+\" \"+xe(h[s]);y=h.join(\",\")}try{return H.apply(r,m.querySelectorAll(y)),r}catch(t){A(e,!0)}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace($,\"$1\"),t,r,i)}function ue(){var e=[];return function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}}function le(e){return e[b]=!0,e}function ce(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split(\"|\"),i=n.length;i--;)r.attrHandle[n[i]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function ge(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function ve(e){return le((function(t){return t=+t,le((function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},p=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!=d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,g=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",oe,!1):i.attachEvent&&i.attachEvent(\"onunload\",oe)),n.scope=ce((function(e){return h.appendChild(e).appendChild(d.createElement(\"div\")),void 0!==e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length})),n.attributes=ce((function(e){return e.className=\"i\",!e.getAttribute(\"className\")})),n.getElementsByTagName=ce((function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length})),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ce((function(e){var t;h.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||v.push(\"~=\"),(t=d.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[\"+M+\"*name\"+M+\"*=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")})),ce((function(e){e.innerHTML=\"\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")}))),(n.matchesSelector=K.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),y.push(\"!=\",F)})),v=v.length&&new RegExp(v.join(\"|\")),y=y.length&&new RegExp(y.join(\"|\")),t=K.test(h.compareDocumentPosition),x=t||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},N=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==d||e.ownerDocument==w&&x(w,e)?-1:t==d||t.ownerDocument==w&&x(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==d?-1:t==d?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]==w?-1:s[r]==w?1:0},d):d},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(p(e),n.matchesSelector&&g&&!A[t+\" \"]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return se(t,d,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!=d&&p(e),x(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&D.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(N),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&E(e,(function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")}))},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace(B,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=P(e,o[a])]=!(n[r]=o[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:le((function(e){var t=[],n=[],r=s(e.replace($,\"$1\"));return r[b]?le((function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return se(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:le((function(e){return V.test(e||\"\")||se.error(\"unsupported lang: \"+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve((function(){return[0]})),last:ve((function(e,t){return[t-1]})),eq:ve((function(e,t,n){return[n<0?n+t:n]})),even:ve((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ve((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1&&(o[l]=!(a[l]=f))}}else y=Te(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)}))}function Ee(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=be((function(e){return e===t}),s,!0),f=be((function(e){return P(t,e)>-1}),s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&we(p),u>1&&xe(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace($,\"$1\"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,v,y=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,S=C.length;for(c&&(l=a==d||a||c);m!==S&&null!=(f=C[m]);m++){if(i&&f){for(h=0,a||f.ownerDocument==d||(p(f),s=!g);v=e[h++];)if(v(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!v&&f)&&y--,o&&x.push(f))}if(y+=m,n&&m!==y){for(h=0;v=t[h++];)v(x,b,a,s);if(o){if(y>0)for(;m--;)x[m]||b[m]||(b[m]=q.call(u));b=Te(b)}H.apply(u,b),c&&!o&&b.length>0&&y+t.length>1&&se.uniqueSort(u)}return c&&(T=E,l=w),x};return n?le(o):o}(o,i))).selector=e}return s},u=se.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=G.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((f=r.find[c])&&(i=f(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ye(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&xe(u)))return H.apply(n,i),n;break}}return(p||s(e,d))(i,t,!g,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(N).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))})),ce((function(e){return e.innerHTML=\"\",\"#\"===e.firstChild.getAttribute(\"href\")}))||fe(\"type|href|height|width\",(function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")}))||fe(\"value\",(function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute(\"disabled\")}))||fe(R,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(e);b.find=T,b.expr=T.selectors,b.expr[\":\"]=b.expr.pseudos,b.uniqueSort=b.unique=T.uniqueSort,b.text=T.getText,b.isXMLDoc=T.isXML,b.contains=T.contains,b.escapeSelector=T.escape;var C=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&b(e).is(n))break;r.push(e)}return r},E=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},S=b.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function N(e,t,n){return h(t)?b.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?b.grep(e,(function(e){return e===t!==n})):\"string\"!=typeof t?b.grep(e,(function(e){return s.call(t,e)>-1!==n})):b.filter(t,e,n)}b.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?b.find.matchesSelector(r,e)?[r]:[]:b.find.matches(e,b.grep(t,(function(e){return 1===e.nodeType})))},b.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(b(e).filter((function(){for(t=0;t1?b.uniqueSort(n):n},filter:function(e){return this.pushStack(N(this,e||[],!1))},not:function(e){return this.pushStack(N(this,e||[],!0))},is:function(e){return!!N(this,\"string\"==typeof e&&S.test(e)?b(e):e||[],!1).length}});var D,j=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(b.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof b?t[0]:t,b.merge(this,b.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),A.test(r[1])&&b.isPlainObject(t))for(r in t)h(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):h(e)?void 0!==n.ready?n.ready(e):e(b):b.makeArray(e,this)}).prototype=b.fn,D=b(v);var q=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}b.fn.extend({has:function(e){var t=b(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&b.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?b.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?s.call(b(e),this[0]):s.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(b.uniqueSort(b.merge(this.get(),b(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return C(e,\"parentNode\")},parentsUntil:function(e,t,n){return C(e,\"parentNode\",n)},next:function(e){return H(e,\"nextSibling\")},prev:function(e){return H(e,\"previousSibling\")},nextAll:function(e){return C(e,\"nextSibling\")},prevAll:function(e){return C(e,\"previousSibling\")},nextUntil:function(e,t,n){return C(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return C(e,\"previousSibling\",n)},siblings:function(e){return E((e.parentNode||{}).firstChild,e)},children:function(e){return E(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(k(e,\"template\")&&(e=e.content||e),b.merge([],e.childNodes))}},(function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=b.filter(r,i)),this.length>1&&(L[e]||b.uniqueSort(i),q.test(e)&&i.reverse()),this.pushStack(i)}}));var O=/[^\\x20\\t\\r\\n\\f]+/g;function P(e){return e}function R(e){throw e}function M(e,t,n,r){var i;try{e&&h(i=e.promise)?i.call(e).done(t).fail(n):e&&h(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}b.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return b.each(e.match(O)||[],(function(e,n){t[n]=!0})),t}(e):b.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?b.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},b.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",b.Callbacks(\"memory\"),b.Callbacks(\"memory\"),2],[\"resolve\",\"done\",b.Callbacks(\"once memory\"),b.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",b.Callbacks(\"once memory\"),b.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return b.Deferred((function(t){b.each(n,(function(n,r){var i=h(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&h(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==R&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(b.Deferred.getStackHook&&(c.stackTrace=b.Deferred.getStackHook()),e.setTimeout(c))}}return b.Deferred((function(e){n[0][3].add(a(0,e,h(i)?i:P,e.notifyWith)),n[1][3].add(a(0,e,h(t)?t:P)),n[2][3].add(a(0,e,h(r)?r:R))})).promise()},promise:function(e){return null!=e?b.extend(e,i):i}},o={};return b.each(n,(function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add((function(){r=s}),n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith})),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),o=i.call(arguments),a=b.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?i.call(arguments):n,--t||a.resolveWith(r,o)}};if(t<=1&&(M(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||h(o[n]&&o[n].then)))return a.then();for(;n--;)M(o[n],s(n),a.reject);return a.promise()}});var I=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;b.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&I.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},b.readyException=function(t){e.setTimeout((function(){throw t}))};var W=b.Deferred();function F(){v.removeEventListener(\"DOMContentLoaded\",F),e.removeEventListener(\"load\",F),b.ready()}b.fn.ready=function(e){return W.then(e).catch((function(e){b.readyException(e)})),this},b.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--b.readyWait:b.isReady)||(b.isReady=!0,!0!==e&&--b.readyWait>0||W.resolveWith(v,[b]))}}),b.ready.then=W.then,\"complete\"===v.readyState||\"loading\"!==v.readyState&&!v.documentElement.doScroll?e.setTimeout(b.ready):(v.addEventListener(\"DOMContentLoaded\",F),e.addEventListener(\"load\",F));var B=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n))for(s in i=!0,n)B(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,h(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(b(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each((function(){Y.remove(this,e)}))}}),b.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=G.get(e,t),n&&(!r||Array.isArray(n)?r=G.access(e,t,b.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,(function(){b.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return G.get(e,n)||G.access(e,n,{empty:b.Callbacks(\"once memory\").add((function(){G.remove(e,[t+\"queue\",n])}))})}}),b.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i;ce=v.createDocumentFragment().appendChild(v.createElement(\"div\")),(fe=v.createElement(\"input\")).setAttribute(\"type\",\"radio\"),fe.setAttribute(\"checked\",\"checked\"),fe.setAttribute(\"name\",\"t\"),ce.appendChild(fe),d.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML=\"\",d.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=\"\",d.option=!!ce.lastChild;var ge={thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&k(e,t)?b.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n\",\"\"]);var me=/<|&#?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d-1)i&&i.push(o);else if(l=re(o),a=ve(f.appendChild(o),\"script\"),l&&ye(a),n)for(c=0;o=a[c++];)he.test(o.type||\"\")&&n.push(o);return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==(\"focus\"===t)}function ke(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return b().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=b.guid++)),e.each((function(){b.event.add(this,t,i,r,n)}))}function Ae(e,t,n){n?(G.set(e,t,!1),b.event.add(e,t,{namespace:!1,handler:function(e){var r,o,a=G.get(this,t);if(1&e.isTrigger&&this[t]){if(a.length)(b.event.special[t]||{}).delegateType&&e.stopPropagation();else if(a=i.call(arguments),G.set(this,t,a),r=n(this,t),this[t](),a!==(o=G.get(this,t))||r?G.set(this,t,!1):o={},a!==o)return e.stopImmediatePropagation(),e.preventDefault(),o.value}else a.length&&(G.set(this,t,{value:b.event.trigger(b.extend(a[0],b.Event.prototype),a.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===G.get(e,t)&&b.event.add(e,t,Ce)}b.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=G.get(e);if(X(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&b.find.matchesSelector(ne,i),n.guid||(n.guid=b.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(t){return void 0!==b&&b.event.triggered!==t.type?b.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(O)||[\"\"]).length;l--;)d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=b.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=b.event.special[d]||{},c=b.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&b.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),b.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=G.hasData(e)&&G.get(e);if(v&&(u=v.events)){for(l=(t=(t||\"\").match(O)||[\"\"]).length;l--;)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){for(f=b.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||b.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(u)&&G.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=b.event.fix(e),l=(G.get(this,\"events\")||Object.create(null))[u.type]||[],c=b.event.special[u.type]||{};for(s[0]=u,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:b.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\\s*$/g;function qe(e,t){return k(e,\"table\")&&k(11!==t.nodeType?t:t.firstChild,\"tr\")&&b(e).children(\"tbody\")[0]||e}function Le(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function He(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(G.hasData(e)&&(s=G.get(e).events))for(i in G.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n1&&\"string\"==typeof v&&!d.checkClone&&De.test(v))return e.each((function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Re(o,t,n,r)}));if(p&&(a=(i=xe(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(u=(s=b.map(ve(i,\"script\"),Le)).length;f0&&ye(a,!u&&ve(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=b.event.special,o=0;void 0!==(n=e[o]);o++)if(X(n)){if(t=n[G.expando]){if(t.events)for(r in t.events)i[r]?b.event.remove(n,r):b.removeEvent(n,r,t.handle);n[G.expando]=void 0}n[Y.expando]&&(n[Y.expando]=void 0)}}}),b.fn.extend({detach:function(e){return Me(this,e,!0)},remove:function(e){return Me(this,e)},text:function(e){return B(this,(function(e){return void 0===e?b.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Re(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)}))},prepend:function(){return Re(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(b.cleanData(ve(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return b.clone(this,e,t)}))},html:function(e){return B(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=b.htmlPrefilter(e);try{for(;n3,ne.removeChild(t)),s}}))}();var ze=[\"Webkit\",\"Moz\",\"ms\"],Ue=v.createElement(\"div\").style,Xe={};function Ve(e){var t=b.cssProps[e]||Xe[e];return t||(e in Ue?e:Xe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=ze.length;n--;)if((e=ze[n]+t)in Ue)return e}(e)||e)}var Ge=/^(none|table(?!-c[ea]).+)/,Ye=/^--/,Qe={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Je={letterSpacing:\"0\",fontWeight:\"400\"};function Ke(e,t,n){var r=ee.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Ze(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=b.css(e,n+te[a],!0,i)),r?(\"content\"===n&&(u-=b.css(e,\"padding\"+te[a],!0,i)),\"margin\"!==n&&(u-=b.css(e,\"border\"+te[a]+\"Width\",!0,i))):(u+=b.css(e,\"padding\"+te[a],!0,i),\"padding\"!==n?u+=b.css(e,\"border\"+te[a]+\"Width\",!0,i):s+=b.css(e,\"border\"+te[a]+\"Width\",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function et(e,t,n){var r=We(e),i=(!d.boxSizingReliable()||n)&&\"border-box\"===b.css(e,\"boxSizing\",!1,r),o=i,a=$e(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Ie.test(a)){if(!n)return a;a=\"auto\"}return(!d.boxSizingReliable()&&i||!d.reliableTrDimensions()&&k(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===b.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===b.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ze(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=$e(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=U(t),u=Ye.test(t),l=e.style;if(u||(t=Ve(s)),a=b.cssHooks[t]||b.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=ee.exec(n))&&i[1]&&(n=ae(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(b.cssNumber[s]?\"\":\"px\")),d.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=U(t);return Ye.test(t)||(t=Ve(s)),(a=b.cssHooks[t]||b.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=$e(e,t,r)),\"normal\"===i&&t in Je&&(i=Je[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),b.each([\"height\",\"width\"],(function(e,t){b.cssHooks[t]={get:function(e,n,r){if(n)return!Ge.test(b.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):Fe(e,Qe,(function(){return et(e,t,r)}))},set:function(e,n,r){var i,o=We(e),a=!d.scrollboxSize()&&\"absolute\"===o.position,s=(a||r)&&\"border-box\"===b.css(e,\"boxSizing\",!1,o),u=r?Ze(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,\"border\",!1,o)-.5)),u&&(i=ee.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=b.css(e,t)),Ke(0,n,u)}}})),b.cssHooks.marginLeft=_e(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat($e(e,\"marginLeft\"))||e.getBoundingClientRect().left-Fe(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+\"px\"})),b.each({margin:\"\",padding:\"\",border:\"Width\"},(function(e,t){b.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+te[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(b.cssHooks[e+t].set=Ke)})),b.fn.extend({css:function(e,t){return B(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=We(e),i=t.length;a1)}}),b.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||b.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?\"\":\"px\")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=b.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):1!==e.elem.nodeType||!b.cssHooks[e.prop]&&null==e.elem.style[Ve(e.prop)]?e.elem[e.prop]=e.now:b.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},b.fx=tt.prototype.init,b.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===v.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,b.fx.interval),b.fx.tick())}function st(){return e.setTimeout((function(){nt=void 0})),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=te[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(ct.tweeners[t]||[]).concat(ct.tweeners[\"*\"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){b.removeAttr(this,e)}))}}),b.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?b.prop(e,t,n):(1===o&&b.isXMLDoc(e)||(i=b.attrHooks[t.toLowerCase()]||(b.expr.match.bool.test(t)?ft:void 0)),void 0!==n?null===n?void b.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=b.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&\"radio\"===t&&k(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(O);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ft={set:function(e,t,n){return!1===t?b.removeAttr(e,n):e.setAttribute(n,n),n}},b.each(b.expr.match.bool.source.match(/\\w+/g),(function(e,t){var n=pt[t]||b.find.attr;pt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=pt[a],pt[a]=i,i=null!=n(e,t,r)?a:null,pt[a]=o),i}}));var dt=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function gt(e){return(e.match(O)||[]).join(\" \")}function vt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function yt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(O)||[]}b.fn.extend({prop:function(e,t){return B(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[b.propFix[e]||e]}))}}),b.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&b.isXMLDoc(e)||(t=b.propFix[t]||t,i=b.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=b.find.attr(e,\"tabindex\");return t?parseInt(t,10):dt.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),d.optSelected||(b.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),b.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],(function(){b.propFix[this.toLowerCase()]=this})),b.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){b(this).addClass(e.call(this,t,vt(this)))}));if((t=yt(e)).length)for(;n=this[u++];)if(i=vt(n),r=1===n.nodeType&&\" \"+gt(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=gt(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){b(this).removeClass(e.call(this,t,vt(this)))}));if(!arguments.length)return this.attr(\"class\",\"\");if((t=yt(e)).length)for(;n=this[u++];)if(i=vt(n),r=1===n.nodeType&&\" \"+gt(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=gt(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):h(e)?this.each((function(n){b(this).toggleClass(e.call(this,n,vt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=b(this),a=yt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=vt(this))&&G.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":G.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+gt(vt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var mt=/\\r/g;b.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=h(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,b(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=b.map(i,(function(e){return null==e?\"\":e+\"\"}))),(t=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))}))):i?(t=b.valHooks[i.type]||b.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(mt,\"\"):null==n?\"\":n:void 0}}),b.extend({valHooks:{option:{get:function(e){var t=b.find.attr(e,\"value\");return null!=t?t:gt(b.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),b.each([\"radio\",\"checkbox\"],(function(){b.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=b.inArray(b(e).val(),t)>-1}},d.checkOn||(b.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})})),d.focusin=\"onfocusin\"in e;var xt=/^(?:focusinfocus|focusoutblur)$/,bt=function(e){e.stopPropagation()};b.extend(b.event,{trigger:function(t,n,r,i){var o,a,s,u,l,f,p,d,y=[r||v],m=c.call(t,\"type\")?t.type:t,x=c.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(a=d=s=r=r||v,3!==r.nodeType&&8!==r.nodeType&&!xt.test(m+b.event.triggered)&&(m.indexOf(\".\")>-1&&(x=m.split(\".\"),m=x.shift(),x.sort()),l=m.indexOf(\":\")<0&&\"on\"+m,(t=t[b.expando]?t:new b.Event(m,\"object\"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:b.makeArray(n,[t]),p=b.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,xt.test(u+m)||(a=a.parentNode);a;a=a.parentNode)y.push(a),s=a;s===(r.ownerDocument||v)&&y.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=y[o++])&&!t.isPropagationStopped();)d=a,t.type=o>1?u:p.bindType||m,(f=(G.get(a,\"events\")||Object.create(null))[t.type]&&G.get(a,\"handle\"))&&f.apply(a,n),(f=l&&a[l])&&f.apply&&X(a)&&(t.result=f.apply(a,n),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(y.pop(),n)||!X(r)||l&&h(r[m])&&!g(r)&&((s=r[l])&&(r[l]=null),b.event.triggered=m,t.isPropagationStopped()&&d.addEventListener(m,bt),r[m](),t.isPropagationStopped()&&d.removeEventListener(m,bt),b.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=b.extend(new b.Event,n,{type:e,isSimulated:!0});b.event.trigger(r,null,t)}}),b.fn.extend({trigger:function(e,t){return this.each((function(){b.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return b.event.trigger(e,t,n,!0)}}),d.focusin||b.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){var n=function(e){b.event.simulate(t,e.target,b.event.fix(e))};b.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=G.access(r,t);i||r.addEventListener(e,n,!0),G.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=G.access(r,t)-1;i?G.access(r,t,i):(r.removeEventListener(e,n,!0),G.remove(r,t))}}}));var wt=e.location,Tt={guid:Date.now()},Ct=/\\?/;b.parseXML=function(t){var n;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){n=void 0}return n&&!n.getElementsByTagName(\"parsererror\").length||b.error(\"Invalid XML: \"+t),n};var Et=/\\[\\]$/,St=/\\r?\\n/g,kt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function Nt(e,t,n,r){var i;if(Array.isArray(t))b.each(t,(function(t,i){n||Et.test(e)?r(e,i):Nt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)}));else if(n||\"object\"!==x(t))r(e,t);else for(i in t)Nt(e+\"[\"+i+\"]\",t[i],n,r)}b.param=function(e,t){var n,r=[],i=function(e,t){var n=h(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,(function(){i(this.name,this.value)}));else for(n in e)Nt(n,e[n],t,i);return r.join(\"&\")},b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=b.prop(this,\"elements\");return e?b.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!b(this).is(\":disabled\")&&At.test(this.nodeName)&&!kt.test(e)&&(this.checked||!pe.test(e))})).map((function(e,t){var n=b(this).val();return null==n?null:Array.isArray(n)?b.map(n,(function(e){return{name:t.name,value:e.replace(St,\"\\r\\n\")}})):{name:t.name,value:n.replace(St,\"\\r\\n\")}})).get()}});var Dt=/%20/g,jt=/#.*$/,qt=/([?&])_=[^&]*/,Lt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Ht=/^(?:GET|HEAD)$/,Ot=/^\\/\\//,Pt={},Rt={},Mt=\"*/\".concat(\"*\"),It=v.createElement(\"a\");function Wt(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(O)||[];if(h(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ft(e,t,n,r){var i={},o=e===Rt;function a(s){var u;return i[s]=!0,b.each(e[s]||[],(function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function Bt(e,t){var n,r,i=b.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&b.extend(!0,e,r),e}It.href=wt.href,b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:wt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(wt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Mt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Bt(Bt(e,b.ajaxSettings),t):Bt(b.ajaxSettings,e)},ajaxPrefilter:Wt(Pt),ajaxTransport:Wt(Rt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,o,a,s,u,l,c,f,p,d=b.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?b(h):b.event,y=b.Deferred(),m=b.Callbacks(\"once memory\"),x=d.statusCode||{},w={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Lt.exec(o);)a[t[1].toLowerCase()+\" \"]=(a[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=a[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return r&&r.abort(t),S(0,t),this}};if(y.promise(E),d.url=((t||d.url||wt.href)+\"\").replace(Ot,wt.protocol+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||\"*\").toLowerCase().match(O)||[\"\"],null==d.crossDomain){u=v.createElement(\"a\");try{u.href=d.url,u.href=u.href,d.crossDomain=It.protocol+\"//\"+It.host!=u.protocol+\"//\"+u.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=b.param(d.data,d.traditional)),Ft(Pt,d,n,E),l)return E;for(f in(c=b.event&&d.global)&&0==b.active++&&b.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Ht.test(d.type),i=d.url.replace(jt,\"\"),d.hasContent?d.data&&d.processData&&0===(d.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(d.data=d.data.replace(Dt,\"+\")):(p=d.url.slice(i.length),d.data&&(d.processData||\"string\"==typeof d.data)&&(i+=(Ct.test(i)?\"&\":\"?\")+d.data,delete d.data),!1===d.cache&&(i=i.replace(qt,\"$1\"),p=(Ct.test(i)?\"&\":\"?\")+\"_=\"+Tt.guid+++p),d.url=i+p),d.ifModified&&(b.lastModified[i]&&E.setRequestHeader(\"If-Modified-Since\",b.lastModified[i]),b.etag[i]&&E.setRequestHeader(\"If-None-Match\",b.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",d.contentType),E.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+Mt+\"; q=0.01\":\"\"):d.accepts[\"*\"]),d.headers)E.setRequestHeader(f,d.headers[f]);if(d.beforeSend&&(!1===d.beforeSend.call(h,E,d)||l))return E.abort();if(C=\"abort\",m.add(d.complete),E.done(d.success),E.fail(d.error),r=Ft(Rt,d,n,E)){if(E.readyState=1,c&&g.trigger(\"ajaxSend\",[E,d]),l)return E;d.async&&d.timeout>0&&(s=e.setTimeout((function(){E.abort(\"timeout\")}),d.timeout));try{l=!1,r.send(w,S)}catch(e){if(l)throw e;S(-1,e)}}else S(-1,\"No Transport\");function S(t,n,a,u){var f,p,v,w,T,C=n;l||(l=!0,s&&e.clearTimeout(s),r=void 0,o=u||\"\",E.readyState=t>0?4:0,f=t>=200&&t<300||304===t,a&&(w=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(d,E,a)),!f&&b.inArray(\"script\",d.dataTypes)>-1&&(d.converters[\"text script\"]=function(){}),w=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(d,w,E,f),f?(d.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(b.lastModified[i]=T),(T=E.getResponseHeader(\"etag\"))&&(b.etag[i]=T)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=w.state,p=w.data,f=!(v=w.error))):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",f?y.resolveWith(h,[p,C,E]):y.rejectWith(h,[E,C,v]),E.statusCode(x),x=void 0,c&&g.trigger(f?\"ajaxSuccess\":\"ajaxError\",[E,d,f?p:v]),m.fireWith(h,[E,C]),c&&(g.trigger(\"ajaxComplete\",[E,d]),--b.active||b.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return b.get(e,t,n,\"json\")},getScript:function(e,t){return b.get(e,void 0,t,\"script\")}}),b.each([\"get\",\"post\"],(function(e,t){b[t]=function(e,n,r,i){return h(n)&&(i=i||r,r=n,n=void 0),b.ajax(b.extend({url:e,type:t,dataType:i,data:n,success:r},b.isPlainObject(e)&&e))}})),b.ajaxPrefilter((function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")})),b._evalUrl=function(e,t,n){return b.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){b.globalEval(e,t,n)}})},b.fn.extend({wrapAll:function(e){var t;return this[0]&&(h(e)&&(e=e.call(this[0])),t=b(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return h(e)?this.each((function(t){b(this).wrapInner(e.call(this,t))})):this.each((function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=h(e);return this.each((function(n){b(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not(\"body\").each((function(){b(this).replaceWith(this.childNodes)})),this}}),b.expr.pseudos.hidden=function(e){return!b.expr.pseudos.visible(e)},b.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},b.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var $t={0:200,1223:204},_t=b.ajaxSettings.xhr();d.cors=!!_t&&\"withCredentials\"in _t,d.ajax=_t=!!_t,b.ajaxTransport((function(t){var n,r;if(d.cors||_t&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o($t[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout((function(){n&&r()}))},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}})),b.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),b.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter(\"script\",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")})),b.ajaxTransport(\"script\",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=b(\"" + ], + "text/plain": [ + ":NdOverlay [Variable]\n", + " :Curve [tth] (value)" + ] + }, + "execution_count": 5, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1001" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "data_set.hvplot(y=['I', 'simulated'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We do not have the correct experimental parameters.." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":NdOverlay [Variable]\n", + " :Curve [tth] (value)" + ] + }, + "execution_count": 6, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1220" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "S.parameters.wavelength = 1.54\n", + "S.parameters.u_resolution = 0.031\n", + "S.parameters.v_resolution = -0.052\n", + "S.parameters.w_resolution = 0.032\n", + "S.parameters.x_resolution = 0.015\n", + "S.parameters.y_resolution = 0.0\n", + "\n", + "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(data_set['tth']))\n", + "data_set.hvplot(y=['I', 'simulated'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we need to set the background" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Background of 5 points.\n", + "Collection of 1 backgrounds.\n" + ] + } + ], + "source": [ + "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "\n", + "bg = PointBackground(linked_experiment='PbSO4')\n", + "bg.append(BackgroundPoint.from_pars(data_x[0], 166))\n", + "bg.append(BackgroundPoint.from_pars(16, 36))\n", + "bg.append(BackgroundPoint.from_pars(50, 120))\n", + "bg.append(BackgroundPoint.from_pars(100, 100))\n", + "bg.append(BackgroundPoint.from_pars(data_x[-1], 164))\n", + "print(bg)\n", + "\n", + "S.set_background(bg)\n", + "print(S.backgrounds)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":NdOverlay [Variable]\n", + " :Curve [tth] (value)" + ] + }, + "execution_count": 8, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1439" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(np.array(data_set['tth'])))\n", + "data_set.hvplot(y=['I', 'simulated'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Select CrysFML calculator" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['CrysPy', 'CrysFML', 'GSAS-II']\n", + "CrysPy\n", + "CrysFML\n" + ] + } + ], + "source": [ + "print(interface.available_interfaces)\n", + "print(interface.current_interface_name)\n", + "interface.switch('CrysFML')\n", + "S._updateInterface()\n", + "print(interface.current_interface_name)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":NdOverlay [Variable]\n", + " :Curve [tth] (value)" + ] + }, + "execution_count": 10, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1658" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(np.array(data_set['tth'])))\n", + "data_set.hvplot(y=['I', 'simulated'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Change scale manually" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":NdOverlay [Variable]\n", + " :Curve [tth] (value)" + ] + }, + "execution_count": 11, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1877" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "S.pattern.scale = 0.1\n", + "\n", + "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(np.array(data_set['tth'])))\n", + "data_set.hvplot(y=['I', 'simulated'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fitting to the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initalize the fitting engine and apply a few constraints" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "f = Fitter(S, interface.fit_func)\n", + "\n", + "# Vary the scale and the BG points\n", + "S.pattern.scale.fixed = False\n", + "S.pattern.zero_shift.fixed = False\n", + "#S.parameters.resolution_u.fixed = False\n", + "#S.parameters.resolution_v.fixed = False\n", + "#S.parameters.resolution_w.fixed = False\n", + "#S.parameters.resolution_x.fixed = False\n", + "#S.backgrounds[0][0].y.fixed = False\n", + "#S.backgrounds[0][1].y.fixed = False\n", + "#S.backgrounds[0][2].y.fixed = False\n", + "#S.backgrounds[0][3].y.fixed = False\n", + "#S.backgrounds[0][4].y.fixed = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Select bumps minimizer" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "available minimizers: ['lmfit', 'bumps', 'DFO_LS']\n", + "\n", + "current minimizer: lmfit\n", + "available methods of current minimizer: ['leastsq', 'least_squares', 'differential_evolution', 'basinhopping', 'ampgo', 'nelder', 'lbfgsb', 'powell', 'cg', 'newton', 'cobyla', 'bfgs']\n", + "\n", + "switch minimizer\n", + "current minimizer: bumps\n", + "available methods of current minimizer: ['amoeba', 'de', 'dream', 'newton', 'lm', 'mp', 'pt']\n" + ] + } + ], + "source": [ + "print(\"available minimizers:\", f.available_engines)\n", + "print()\n", + "print(\"current minimizer:\", f.current_engine.name)\n", + "print(\"available methods of current minimizer:\", f.available_methods())\n", + "print()\n", + "print(\"switch minimizer\")\n", + "f.switch_engine('bumps')\n", + "f_method = 'lm'\n", + "print(\"current minimizer:\", f.current_engine.name)\n", + "print(\"available methods of current minimizer:\", f.available_methods())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perform the fit" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "result = data_set['I'].easyCore.fit(f, fit_kwargs={'weights':1/data_e, 'method':f_method})" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The fit has been successful: True\n", + "The gooodness of fit is: 1507315286220.7224\n" + ] + } + ], + "source": [ + "if result.success:\n", + " print(\"The fit has been successful: {}\".format(result.success))\n", + " print(\"The gooodness of fit is: {}\".format(result.goodness_of_fit))\n", + " \n", + "data_set['best_fit'] = result.y_calc" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":NdOverlay [Variable]\n", + " :Curve [tth] (value)" + ] + }, + "execution_count": 16, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "2096" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "data_set.hvplot(y =['I', 'best_fit'])" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scale: \n", + "Scale: \n" + ] + } + ], + "source": [ + "print(f'Scale: {S.pattern.scale}')\n", + "print(f'Scale: {S.pattern.zero_shift}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tests/FittingData_CFML.ipynb b/tests/FittingData_CFML.ipynb index bfd4787d..46799e9e 100644 --- a/tests/FittingData_CFML.ipynb +++ b/tests/FittingData_CFML.ipynb @@ -18,29 +18,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Set current directory." + "Set the current directory." ] }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "os.chdir('/Users/andrewsazonov/Development/Projects/easyScience/easyDiffractionLib/tests')" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, + "execution_count": 1, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Test path: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffractionLib/tests\n", - "easyDiffractionLib path: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffractionLib\n" + "Test path: /home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests\n", + "easyDiffractionLib path: /home/simonward/PycharmProjects/easyScience/easyDiffractionLib\n" ] } ], @@ -55,21 +50,29 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "Import all the packages." ] }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, + "execution_count": 2, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /Users/andrewsazonov/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-P2avuC9_-py3.7/lib/python3.7/site-packages/libsDarwin/GSASII/bindist\n" + "GSAS-II binary directory: /home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/src/libslinux/libsLinux/GSASII/bindist\n" ] } ], @@ -89,29 +92,41 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Preparing the sample and data" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "We load up a cif file and then set the experimental parameters." ] }, { "cell_type": "code", - "execution_count": 25, - "metadata": {}, + "execution_count": 3, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "cif_path: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffractionLib/tests/PbSO4.cif\n", - "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" + "cif_path: /home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/PbSO4.cif\n", + "Temp CIF: /tmp/easydiffraction_temp.cif\n" ] } ], @@ -125,21 +140,29 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "We can load up some experimental data" ] }, { "cell_type": "code", - "execution_count": 26, - "metadata": {}, + "execution_count": 4, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "xye_path: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffractionLib/tests/PbSO4_xrays_short.xye\n", + "xye_path: /home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/PbSO4_xrays_short.xye\n", "data_x: [ 10. 10.025 10.05 ... 119.95 119.975 120. ]\n", "data_y: [179. 147. 165. ... 163. 164. 166.]\n", "data_e: [13.3791 12.1244 12.8452 ... 12.7671 12.8062 12.8841]\n" @@ -155,6 +178,60 @@ "print('data_e:', data_e)" ] }, + { + "cell_type": "markdown", + "source": [ + "Generate the simulation y-data" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "sim_y_data = interface.fit_func(data_x)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", + "plt.plot(data_x, sim_y_data, label=f'Calculations ({interface.current_interface_name})')\n", + "plt.legend()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "We can load up some experimental data" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "metadata": {}, @@ -164,60 +241,62 @@ }, { "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "y_calc: [0.000e+00 0.000e+00 0.000e+00 ... 5.094e-27 5.598e-27 4.636e-27]\n" - ] + "execution_count": 5, + "metadata": { + "pycharm": { + "name": "#%%\n" } - ], + }, + "outputs": [], "source": [ "sim_y_data = interface.fit_func(data_x)" ] }, { "cell_type": "code", - "execution_count": 29, - "metadata": {}, + "execution_count": 6, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", "window.mpl = {};\n", "\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", - " alert('Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", "\n", " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", + " var warnings = document.getElementById('mpl-warnings');\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", " }\n", " }\n", "\n", @@ -232,11 +311,11 @@ "\n", " this.image_mode = 'full';\n", "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", "\n", - " $(parent_element).append(this.root);\n", + " parent_element.appendChild(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", @@ -246,285 +325,360 @@ "\n", " this.waiting = false;\n", "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " if (mpl.ratio != 1) {\n", - " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", - " }\n", - " fig.send_message(\"refresh\", {});\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", " }\n", + " fig.send_message('refresh', {});\n", + " };\n", "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", "\n", - " this.imageObj.onunload = function() {\n", + " this.imageObj.onunload = function () {\n", " fig.ws.close();\n", - " }\n", + " };\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", + "};\n", "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", - "}\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", - "mpl.figure.prototype._init_canvas = function() {\n", + "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", " }\n", "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", + " this.context = canvas.getContext('2d');\n", "\n", - " var backingStore = this.context.backingStorePixelRatio ||\n", - "\tthis.context.webkitBackingStorePixelRatio ||\n", - "\tthis.context.mozBackingStorePixelRatio ||\n", - "\tthis.context.msBackingStorePixelRatio ||\n", - "\tthis.context.oBackingStorePixelRatio ||\n", - "\tthis.context.backingStorePixelRatio || 1;\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", "\n", - " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", + " if (this.ResizeObserver === undefined) {\n", + " if (window.ResizeObserver !== undefined) {\n", + " this.ResizeObserver = window.ResizeObserver;\n", + " } else {\n", + " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", + " this.ResizeObserver = obs.ResizeObserver;\n", + " }\n", + " }\n", "\n", - " var pass_mouse_events = true;\n", + " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", " });\n", + " this.resizeObserverInstance.observe(canvas_div);\n", "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", " }\n", "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", + " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", - " mouse_event_fn(event);\n", + " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", "\n", - " canvas.attr('width', width * mpl.ratio);\n", - " canvas.attr('height', height * mpl.ratio);\n", - " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", "\n", " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", " return false;\n", " });\n", "\n", - " function set_focus () {\n", + " function set_focus() {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", - "}\n", + "};\n", "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", + "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", - " var nav_element = $('
');\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", " }\n", "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", - " // put a spacer in here.\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", " });\n", - "}\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " if (event.target !== this) {\n", + " // Ignore bubbled events from children.\n", + " return;\n", + " }\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", + " el.setAttribute('tabindex', 0);\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", + " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", + "};\n", "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", + " if (!manager) {\n", " manager = IPython.keyboard_manager;\n", + " }\n", "\n", " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", + " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", - "}\n", + "};\n", "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", - "}\n", - "\n", + "};\n", "\n", - "mpl.find_output_cell = function(html_output) {\n", + "mpl.find_output_cell = function (html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", - " if (data['text/html'] == html_output) {\n", + " if (data['text/html'] === html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", - "}\n", + "};\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", "}\n" ], "text/plain": [ @@ -1783,7 +2246,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -1795,24 +2258,15 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 30, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "S.parameters.wavelength = 1.54\n", - "S.parameters.u_resolution = 0.031\n", - "S.parameters.v_resolution = -0.052\n", - "S.parameters.w_resolution = 0.032\n", - "S.parameters.x_resolution = 0.015\n", - "S.parameters.y_resolution = 0.0\n", - "\n", - "#sim_y_data = interface.fit_func(data_x)\n", - "\n", "%matplotlib notebook\n", "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", "plt.plot(data_x, sim_y_data, label=f'Calculations ({interface.current_interface_name})')\n", @@ -1823,84 +2277,91 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we need to set the background" + "We can load up some experimental data" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Background of 5 points.\n", - "Collection of 1 backgrounds.\n" + "xye_path: /home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/PbSO4_xrays_short.xye\n", + "data_x: [ 10. 10.025 10.05 ... 119.95 119.975 120. ]\n", + "data_y: [179. 147. 165. ... 163. 164. 166.]\n", + "data_e: [13.379 12.124 12.845 ... 12.767 12.806 12.884]\n" ] } ], "source": [ - "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", - "\n", - "bg = PointBackground(linked_experiment='PbSO4')\n", - "bg.append(BackgroundPoint.from_pars(data_x[0], 166))\n", - "bg.append(BackgroundPoint.from_pars(16, 36))\n", - "bg.append(BackgroundPoint.from_pars(50, 120))\n", - "bg.append(BackgroundPoint.from_pars(100, 100))\n", - "bg.append(BackgroundPoint.from_pars(data_x[-1], 164))\n", - "print(bg)\n", - "\n", - "S.set_background(bg)\n", - "print(S.backgrounds)" + "xye_path = os.path.join(tests_path, 'PbSO4_xrays_short.xye')\n", + "print('xye_path:', xye_path)\n", + "data_x, data_y, data_e = np.loadtxt(xye_path, unpack=True)\n", + "print('data_x:', data_x)\n", + "print('data_y:', data_y)\n", + "print('data_e:', data_e)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generate the simulation y-data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "sim_y_data = interface.fit_func(data_x)" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 12, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "y_calc: [166. 165.458 164.917 ... 163.84 164.777 167.43 ]\n" - ] - }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", "window.mpl = {};\n", "\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", - " alert('Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", "\n", " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", + " var warnings = document.getElementById('mpl-warnings');\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", " }\n", " }\n", "\n", @@ -1915,11 +2376,11 @@ "\n", " this.image_mode = 'full';\n", "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", "\n", - " $(parent_element).append(this.root);\n", + " parent_element.appendChild(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", @@ -1929,285 +2390,360 @@ "\n", " this.waiting = false;\n", "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " if (mpl.ratio != 1) {\n", - " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", - " }\n", - " fig.send_message(\"refresh\", {});\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", " }\n", + " fig.send_message('refresh', {});\n", + " };\n", "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", "\n", - " this.imageObj.onunload = function() {\n", + " this.imageObj.onunload = function () {\n", " fig.ws.close();\n", - " }\n", + " };\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", + "};\n", "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", - "}\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", - "mpl.figure.prototype._init_canvas = function() {\n", + "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", " }\n", "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", + " this.context = canvas.getContext('2d');\n", "\n", - " var backingStore = this.context.backingStorePixelRatio ||\n", - "\tthis.context.webkitBackingStorePixelRatio ||\n", - "\tthis.context.mozBackingStorePixelRatio ||\n", - "\tthis.context.msBackingStorePixelRatio ||\n", - "\tthis.context.oBackingStorePixelRatio ||\n", - "\tthis.context.backingStorePixelRatio || 1;\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", "\n", - " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", + " if (this.ResizeObserver === undefined) {\n", + " if (window.ResizeObserver !== undefined) {\n", + " this.ResizeObserver = window.ResizeObserver;\n", + " } else {\n", + " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", + " this.ResizeObserver = obs.ResizeObserver;\n", + " }\n", + " }\n", "\n", - " var pass_mouse_events = true;\n", + " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", " });\n", + " this.resizeObserverInstance.observe(canvas_div);\n", "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", " }\n", "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", + " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", - " mouse_event_fn(event);\n", + " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width * mpl.ratio);\n", - " canvas.attr('height', height * mpl.ratio);\n", - " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", "\n", " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", " return false;\n", " });\n", "\n", - " function set_focus () {\n", + " function set_focus() {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", - "}\n", + "};\n", "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", + "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", - " var nav_element = $('
');\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", " }\n", "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", - " // put a spacer in here.\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", " });\n", - "}\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " if (event.target !== this) {\n", + " // Ignore bubbled events from children.\n", + " return;\n", + " }\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", + " el.setAttribute('tabindex', 0);\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", + " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", + "};\n", "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", + " if (!manager) {\n", " manager = IPython.keyboard_manager;\n", + " }\n", "\n", " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", + " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", - "}\n", + "};\n", "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", - "}\n", - "\n", + "};\n", "\n", - "mpl.find_output_cell = function(html_output) {\n", + "mpl.find_output_cell = function (html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", - " if (data['text/html'] == html_output) {\n", + " if (data['text/html'] === html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", - "}\n", + "};\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", "}\n" ], "text/plain": [ @@ -3498,7 +4287,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -3510,16 +4299,23 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 34, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "sim_y_data = interface.fit_func(data_x)\n", + "S.parameters.wavelength = 1.54\n", + "S.parameters.u_resolution = 0.031\n", + "S.parameters.v_resolution = -0.052\n", + "S.parameters.w_resolution = 0.032\n", + "S.parameters.x_resolution = 0.015\n", + "S.parameters.y_resolution = 0.0\n", + "\n", + "#sim_y_data = interface.fit_func(data_x)\n", "\n", "%matplotlib notebook\n", "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", @@ -3531,55 +4327,79 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Change scale manually" + "Now we need to set the background" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "y_calc: [166. 165.458 164.917 ... 164.608 164.723 164.958]\n" + "Background of 5 points.\n", + "Collection of 1 backgrounds.\n" ] - }, + } + ], + "source": [ + "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "\n", + "bg = PointBackground(linked_experiment='PbSO4')\n", + "bg.append(BackgroundPoint.from_pars(data_x[0], 166))\n", + "bg.append(BackgroundPoint.from_pars(16, 36))\n", + "bg.append(BackgroundPoint.from_pars(50, 120))\n", + "bg.append(BackgroundPoint.from_pars(100, 100))\n", + "bg.append(BackgroundPoint.from_pars(data_x[-1], 164))\n", + "print(bg)\n", + "\n", + "S.set_background(bg)\n", + "print(S.backgrounds)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", "window.mpl = {};\n", "\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", - " alert('Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", "\n", " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", + " var warnings = document.getElementById('mpl-warnings');\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", " }\n", " }\n", "\n", @@ -3594,11 +4414,11 @@ "\n", " this.image_mode = 'full';\n", "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", "\n", - " $(parent_element).append(this.root);\n", + " parent_element.appendChild(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", @@ -3608,285 +4428,360 @@ "\n", " this.waiting = false;\n", "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " if (mpl.ratio != 1) {\n", - " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", - " }\n", - " fig.send_message(\"refresh\", {});\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", " }\n", + " fig.send_message('refresh', {});\n", + " };\n", "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", "\n", - " this.imageObj.onunload = function() {\n", + " this.imageObj.onunload = function () {\n", " fig.ws.close();\n", - " }\n", + " };\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", + "};\n", "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", "\n", - "}\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", "\n", - "mpl.figure.prototype._init_canvas = function() {\n", + "mpl.figure.prototype._init_canvas = function () {\n", " var fig = this;\n", "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", " }\n", "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + " this.context = canvas.getContext('2d');\n", "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", "\n", - " var backingStore = this.context.backingStorePixelRatio ||\n", - "\tthis.context.webkitBackingStorePixelRatio ||\n", - "\tthis.context.mozBackingStorePixelRatio ||\n", - "\tthis.context.msBackingStorePixelRatio ||\n", - "\tthis.context.oBackingStorePixelRatio ||\n", - "\tthis.context.backingStorePixelRatio || 1;\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", - " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", + " if (this.ResizeObserver === undefined) {\n", + " if (window.ResizeObserver !== undefined) {\n", + " this.ResizeObserver = window.ResizeObserver;\n", + " } else {\n", + " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", + " this.ResizeObserver = obs.ResizeObserver;\n", + " }\n", + " }\n", "\n", - " var pass_mouse_events = true;\n", + " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", " });\n", + " this.resizeObserverInstance.observe(canvas_div);\n", "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", " }\n", "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", + " canvas_div.addEventListener('wheel', function (event) {\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", - " mouse_event_fn(event);\n", + " on_mouse_event_closure('scroll')(event);\n", " });\n", "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", "\n", - " canvas.attr('width', width * mpl.ratio);\n", - " canvas.attr('height', height * mpl.ratio);\n", - " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", "\n", " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", " return false;\n", " });\n", "\n", - " function set_focus () {\n", + " function set_focus() {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", - "}\n", + "};\n", "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", + "mpl.figure.prototype._init_toolbar = function () {\n", " var fig = this;\n", "\n", - " var nav_element = $('
');\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", " }\n", "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", - " // put a spacer in here.\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", " continue;\n", " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", " }\n", "\n", " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", "\n", " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", " });\n", - "}\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " if (event.target !== this) {\n", + " // Ignore bubbled events from children.\n", + " return;\n", + " }\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", + " el.setAttribute('tabindex', 0);\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", + " } else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", + "};\n", "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", + " if (!manager) {\n", " manager = IPython.keyboard_manager;\n", + " }\n", "\n", " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", + " if (event.shiftKey && event.which === 13) {\n", " this.canvas_div.blur();\n", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\n", " }\n", - "}\n", + "};\n", "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", " fig.ondownload(fig, null);\n", - "}\n", - "\n", + "};\n", "\n", - "mpl.find_output_cell = function(html_output) {\n", + "mpl.find_output_cell = function (html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", - " if (data['text/html'] == html_output) {\n", + " if (data['text/html'] === html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", - "}\n", + "};\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", "}\n" ], "text/plain": [ @@ -5535,7 +6350,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -5547,14 +6362,140 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 40, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], + "source": [ + "sim_y_data = interface.fit_func(data_x)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", + "plt.plot(data_x, sim_y_data, label=f'Calculations ({interface.current_interface_name})')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Change scale manually" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "S.pattern.scale = 0.1\n", + "sim_y_data = interface.fit_func(data_x)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", + "plt.plot(data_x, sim_y_data, label=f'Calculations ({interface.current_interface_name})')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fitting to the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initalize the fitting engine and apply a few constraints" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "f = Fitter(S, interface.fit_func)\n", + "\n", + "# Vary the scale and the BG points\n", + "S.pattern.scale.fixed = False\n", + "S.pattern.zero_shift.fixed = False\n", + "#S.parameters.resolution_u.fixed = False\n", + "#S.parameters.resolution_v.fixed = False\n", + "#S.parameters.resolution_w.fixed = False\n", + "#S.parameters.resolution_x.fixed = False\n", + "#S.backgrounds[0][0].y.fixed = False\n", + "#S.backgrounds[0][1].y.fixed = False\n", + "#S.backgrounds[0][2].y.fixed = False\n", + "#S.backgrounds[0][3].y.fixed = False\n", + "#S.backgrounds[0][4].y.fixed = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Select bumps minimizer" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"available minimizers:\", f.available_engines)\n", + "print()\n", + "print(\"current minimizer:\", f.current_engine.name)\n", + "print(\"available methods of current minimizer:\", f.available_methods())\n", + "print()\n", + "print(\"switch minimizer\")\n", + "f.switch_engine('bumps')\n", + "f_method = 'lm'\n", + "print(\"current minimizer:\", f.current_engine.name)\n", + "print(\"available methods of current minimizer:\", f.available_methods())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perform the fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = f.fit(data_x, data_y, weights=1/data_e, method=f_method)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if result.success:\n", + " print(\"The fit has been successful: {}\".format(result.success))\n", + " print(\"The gooodness of fit is: {}\".format(result.goodness_of_fit))\n", + " \n", + "sim_y_data = interface.fit_func(data_x)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "%matplotlib notebook\n", "plt.plot(data_x, data_y, label='Experimental')\n", @@ -5564,18 +6505,9 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scale: \n", - "Scale: \n" - ] - } - ], + "outputs": [], "source": [ "print(f'Scale: {S.pattern.scale}')\n", "print(f'Scale: {S.pattern.zero_shift}')" @@ -5605,9 +6537,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.9" + "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/tests/fit_script.py b/tests/fit_script.py index 1fb304c5..22a30a92 100644 --- a/tests/fit_script.py +++ b/tests/fit_script.py @@ -10,7 +10,7 @@ from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint from easyCore.Fitting.Fitting import Fitter - +from easyCore.Datasets.xarray import xr interface = InterfaceFactory() c = Phases.from_cif_file('PbSO4.cif') @@ -19,6 +19,12 @@ file_path = 'PbSO4_neutrons_short.xye' data_x, data_y, data_e = np.loadtxt(file_path, unpack=True) +data_set = xr.Dataset() +data_set.easyCore.add_coordinate('tth', data_x) +data_set.easyCore.add_variable('I', ['tth'], data_y) +data_set.easyCore.sigma_attach('I', data_e) + + S.parameters.wavelength = 1.912 S.parameters.u_resolution = 1.4 S.parameters.v_resolution = -0.42 @@ -31,7 +37,6 @@ bg.append(BackgroundPoint.from_pars(data_x[-1], 200)) S.set_background(bg) - f = Fitter(S, interface.fit_func) # Vary the scale and the BG points @@ -42,7 +47,8 @@ S.backgrounds[0][0].y.fixed = False S.backgrounds[0][1].y.fixed = False -result = f.fit(data_x, data_y, weights=1/data_e) +# result = f.fit(data_x, data_y, weights=1/data_e) +result = data_set['I'].easyCore.fit(f) if result.success: print("The fit has been successful: {}".format(result.success)) diff --git a/tests/test3.py b/tests/test3.py index 6cd75da9..0f3c2403 100644 --- a/tests/test3.py +++ b/tests/test3.py @@ -13,7 +13,7 @@ i = InterfaceFactory() -c = Phases.from_cif_file('/home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/SrTiO3.cif') +c = Phases.from_cif_file('tests/SrTiO3.cif') S = Sample(phases=c, parameters=Pars1D.default(), interface=i) diff --git a/tests/xarray_test.ipynb b/tests/xarray_test.ipynb new file mode 100644 index 00000000..d04923e0 --- /dev/null +++ b/tests/xarray_test.ipynb @@ -0,0 +1,2378 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fitting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are two built in fitting engines, `lmfit` and `bumps`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import all the packages." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GSAS-II binary directory: /home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/src/libslinux/libsLinux/GSASII/bindist\n" + ] + } + ], + "source": [ + "# Import all the packages\n", + "from easyCore import np\n", + "from easyDiffractionLib.sample import Sample\n", + "from easyDiffractionLib import Phases\n", + "from easyDiffractionLib.interface import InterfaceFactory\n", + "from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "\n", + "from easyCore.Datasets.xarray import xr\n", + "from easyCore.Fitting.Fitting import Fitter" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " var force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error() {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var skip = [];\n", + " if (window.requirejs) {\n", + " require([], function() {\n", + " })\n", + " }\n", + " for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " if (skip.indexOf(url) >= 0) { on_load(); continue; }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + "\tif (!js_urls.length) {\n", + " on_load()\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var js_urls = [];\n", + " var css_urls = [];\n", + "\n", + " var inline_js = [\n", + " function(Bokeh) {\n", + " inject_raw_css(\".bk.panel-widget-box {\\n\\tmin-height: 20px;\\n\\tbackground-color: #f5f5f5;\\n\\tborder: 1px solid #e3e3e3;\\n\\tborder-radius: 4px;\\n\\t-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n\\tbox-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n\\toverflow-x: hidden;\\n\\toverflow-y: hidden;\\n}\\n\\n.scrollable {\\n overflow: scroll;\\n}\\n\\nprogress {\\n\\tappearance: none;\\n\\t-moz-appearance: none;\\n\\t-webkit-appearance: none;\\n\\n\\tborder: none;\\n\\theight: 20px;\\n\\tbackground-color: whiteSmoke;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n\\tcolor: royalblue;\\n\\tposition: relative;\\n\\tmargin: 0 0 1.5em;\\n}\\n\\nprogress[value]::-webkit-progress-bar {\\n\\tbackground-color: whiteSmoke;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n}\\n\\nprogress[value]::-webkit-progress-value {\\n\\tposition: relative;\\n\\n\\tbackground-size: 35px 20px, 100% 100%, 100% 100%;\\n\\tborder-radius:3px;\\n}\\n\\nprogress.active:not([value])::before {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress[value]::-moz-progress-bar {\\n\\tbackground-size: 35px 20px, 100% 100%, 100% 100%;\\n\\tborder-radius:3px;\\n}\\n\\nprogress:not([value])::-moz-progress-bar {\\n\\tborder-radius:3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n\\n}\\n\\nprogress.active:not([value])::-moz-progress-bar {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress.active:not([value])::-webkit-progress-bar {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress.primary[value]::-webkit-progress-value { background-color: #007bff; }\\nprogress.primary:not([value])::before { background-color: #007bff; }\\nprogress.primary:not([value])::-webkit-progress-bar { background-color: #007bff; }\\nprogress.primary::-moz-progress-bar { background-color: #007bff; }\\n\\nprogress.secondary[value]::-webkit-progress-value { background-color: #6c757d; }\\nprogress.secondary:not([value])::before { background-color: #6c757d; }\\nprogress.secondary:not([value])::-webkit-progress-bar { background-color: #6c757d; }\\nprogress.secondary::-moz-progress-bar { background-color: #6c757d; }\\n\\nprogress.success[value]::-webkit-progress-value { background-color: #28a745; }\\nprogress.success:not([value])::before { background-color: #28a745; }\\nprogress.success:not([value])::-webkit-progress-bar { background-color: #28a745; }\\nprogress.success::-moz-progress-bar { background-color: #28a745; }\\n\\nprogress.danger[value]::-webkit-progress-value { background-color: #dc3545; }\\nprogress.danger:not([value])::before { background-color: #dc3545; }\\nprogress.danger:not([value])::-webkit-progress-bar { background-color: #dc3545; }\\nprogress.danger::-moz-progress-bar { background-color: #dc3545; }\\n\\nprogress.warning[value]::-webkit-progress-value { background-color: #ffc107; }\\nprogress.warning:not([value])::before { background-color: #ffc107; }\\nprogress.warning:not([value])::-webkit-progress-bar { background-color: #ffc107; }\\nprogress.warning::-moz-progress-bar { background-color: #ffc107; }\\n\\nprogress.info[value]::-webkit-progress-value { background-color: #17a2b8; }\\nprogress.info:not([value])::before { background-color: #17a2b8; }\\nprogress.info:not([value])::-webkit-progress-bar { background-color: #17a2b8; }\\nprogress.info::-moz-progress-bar { background-color: #17a2b8; }\\n\\nprogress.light[value]::-webkit-progress-value { background-color: #f8f9fa; }\\nprogress.light:not([value])::before { background-color: #f8f9fa; }\\nprogress.light:not([value])::-webkit-progress-bar { background-color: #f8f9fa; }\\nprogress.light::-moz-progress-bar { background-color: #f8f9fa; }\\n\\nprogress.dark[value]::-webkit-progress-value { background-color: #343a40; }\\nprogress.dark:not([value])::-webkit-progress-bar { background-color: #343a40; }\\nprogress.dark:not([value])::before { background-color: #343a40; }\\nprogress.dark::-moz-progress-bar { background-color: #343a40; }\\n\\nprogress:not([value])::-webkit-progress-bar {\\n\\tborder-radius: 3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\nprogress:not([value])::before {\\n\\tcontent:\\\" \\\";\\n\\tposition:absolute;\\n\\theight: 20px;\\n\\ttop:0;\\n\\tleft:0;\\n\\tright:0;\\n\\tbottom:0;\\n\\tborder-radius: 3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\n@keyframes stripes {\\n from {background-position: 0%}\\n to {background-position: 100%}\\n}\\n\\n.bk.loader::after {\\n content: \\\"\\\";\\n border-radius: 50%;\\n -webkit-mask-image: radial-gradient(transparent 50%, rgba(0, 0, 0, 1) 54%);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n position: absolute;\\n}\\n\\n.bk-root .bk.loader.dark::after {\\n background: #0f0f0f;\\n}\\n\\n.bk-root .bk.loader.light::after {\\n background: #f0f0f0;\\n}\\n\\n.bk-root .bk.loader.spin::after {\\n animation: spin 2s linear infinite;\\n}\\n\\n.bk-root div.bk.loader.spin.primary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #dc3545 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.warning-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.dark-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #343a40 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.primary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #dc3545 50%)\\n}\\n\\n.bk-root div.bk.loader.spin.warning-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.dark-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #343a40 50%);\\n}\\n\\n/* Safari */\\n@-webkit-keyframes spin {\\n 0% { -webkit-transform: rotate(0deg); }\\n 100% { -webkit-transform: rotate(360deg); }\\n}\\n\\n@keyframes spin {\\n 0% { transform: rotate(0deg); }\\n 100% { transform: rotate(360deg); }\\n}\\n\\n.dot div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n background-color: #fff;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled.primary div {\\n background-color: #007bff;\\n}\\n\\n.dot-filled.secondary div {\\n background-color: #6c757d;\\n}\\n\\n.dot-filled.success div {\\n background-color: #28a745;\\n}\\n\\n.dot-filled.danger div {\\n background-color: #dc3545;\\n}\\n\\n.dot-filled.warning div {\\n background-color: #ffc107;\\n}\\n\\n.dot-filled.info div {\\n background-color: #17a2b8;\\n}\\n\\n.dot-filled.dark div {\\n background-color: #343a40;\\n}\\n\\n.dot-filled.light div {\\n background-color: #f8f9fa;\\n}\");\n", + " },\n", + " function(Bokeh) {\n", + " inject_raw_css(\"table.panel-df {\\n margin-left: auto;\\n margin-right: auto;\\n border: none;\\n border-collapse: collapse;\\n border-spacing: 0;\\n color: black;\\n font-size: 12px;\\n table-layout: fixed;\\n width: 100%;\\n}\\n\\n.panel-df tr, .panel-df th, .panel-df td {\\n text-align: right;\\n vertical-align: middle;\\n padding: 0.5em 0.5em !important;\\n line-height: normal;\\n white-space: normal;\\n max-width: none;\\n border: none;\\n}\\n\\n.panel-df tbody {\\n display: table-row-group;\\n vertical-align: middle;\\n border-color: inherit;\\n}\\n\\n.panel-df tbody tr:nth-child(odd) {\\n background: #f5f5f5;\\n}\\n\\n.panel-df thead {\\n border-bottom: 1px solid black;\\n vertical-align: bottom;\\n}\\n\\n.panel-df tr:hover {\\n background: lightblue !important;\\n cursor: pointer;\\n}\\n\");\n", + " },\n", + " function(Bokeh) {\n", + " inject_raw_css(\".json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n color: black;\\n text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n color: green;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: blue;\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n color: #00008B;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n color: white;\\n text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n color: #31F031;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: #027BFF;\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n color: #23A0DB;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n\");\n", + " },\n", + " function(Bokeh) {\n", + " inject_raw_css(\".bk.card {\\n border: 1px solid rgba(0,0,0,.125);\\n border-radius: 0.25rem;\\n}\\n.bk.accordion {\\n border: 1px solid rgba(0,0,0,.125);\\n}\\n.bk.card-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0.25rem;\\n display: flex;\\n justify-content: space-between;\\n padding: 0 1.25rem 0 0;\\n width: 100%;\\n}\\n.bk.accordion-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0;\\n display: flex;\\n justify-content: space-between;\\n padding: 0 1.25rem 0 0;\\n width: 100%;\\n}\\np.bk.card-button {\\n background-color: transparent;\\n font-size: 1.25rem;\\n font-weight: 700;\\n margin: 0;\\n margin-left: -15px;\\n}\\n.bk.card-header-row {\\n position: relative !important;\\n}\\n.bk.card-title {\\n align-items: center;\\n display: flex !important;\\n font-size: 1.4em;\\n font-weight: bold;\\n padding: 0.25em;\\n position: relative !important;\\n}\\n\");\n", + " },\n", + " function(Bokeh) {\n", + " inject_raw_css(\".codehilite .hll { background-color: #ffffcc }\\n.codehilite { background: #f8f8f8; }\\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\\n.codehilite .o { color: #666666 } /* Operator */\\n.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */\\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\\n.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\\n.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */\\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\\n.codehilite .ge { font-style: italic } /* Generic.Emph */\\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\\n.codehilite .go { color: #888888 } /* Generic.Output */\\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\\n.codehilite .gt { color: #0044DD } /* Generic.Traceback */\\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\\n.codehilite .m { color: #666666 } /* Literal.Number */\\n.codehilite .s { color: #BA2121 } /* Literal.String */\\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\\n.codehilite .nb { color: #008000 } /* Name.Builtin */\\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\\n.codehilite .no { color: #880000 } /* Name.Constant */\\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\\n.codehilite .nf { color: #0000FF } /* Name.Function */\\n.codehilite .nl { color: #A0A000 } /* Name.Label */\\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\\n.codehilite .nv { color: #19177C } /* Name.Variable */\\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\\n.codehilite .mb { color: #666666 } /* Literal.Number.Bin */\\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\\n.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */\\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\\n.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */\\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\\n.codehilite .fm { color: #0000FF } /* Name.Function.Magic */\\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\\n.codehilite .vm { color: #19177C } /* Name.Variable.Magic */\\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\\n\\n.markdown h1 { margin-block-start: 0.34em }\\n.markdown h2 { margin-block-start: 0.42em }\\n.markdown h3 { margin-block-start: 0.5em }\\n.markdown h4 { margin-block-start: 0.67em }\\n.markdown h5 { margin-block-start: 0.84em }\\n.markdown h6 { margin-block-start: 1.17em }\\n.markdown ul { padding-inline-start: 2em }\\n.markdown ol { padding-inline-start: 2em }\\n.markdown strong { font-weight: 600 }\\n.markdown a { color: -webkit-link }\\n.markdown a { color: -moz-hyperlinkText }\\n\");\n", + " },\n", + " function(Bokeh) {\n", + " inject_raw_css(\".bk.alert {\\n padding: 0.75rem 1.25rem;\\n border: 1px solid transparent;\\n border-radius: 0.25rem;\\n /* Don't set margin because that will not render correctly! */\\n /* margin-bottom: 1rem; */\\n margin-top: 15px;\\n margin-bottom: 15px;\\n}\\n.bk.alert a {\\n color: rgb(11, 46, 19); /* #002752; */\\n font-weight: 700;\\n text-decoration: rgb(11, 46, 19);\\n text-decoration-color: rgb(11, 46, 19);\\n text-decoration-line: none;\\n text-decoration-style: solid;\\n text-decoration-thickness: auto;\\n }\\n.bk.alert a:hover {\\n color: rgb(11, 46, 19);\\n font-weight: 700;\\n text-decoration: underline;\\n}\\n\\n.bk.alert-primary {\\n color: #004085;\\n background-color: #cce5ff;\\n border-color: #b8daff;\\n}\\n.bk.alert-primary hr {\\n border-top-color: #9fcdff;\\n}\\n\\n.bk.alert-secondary {\\n color: #383d41;\\n background-color: #e2e3e5;\\n border-color: #d6d8db;\\n }\\n.bk.alert-secondary hr {\\n border-top-color: #c8cbcf;\\n}\\n\\n.bk.alert-success {\\n color: #155724;\\n background-color: #d4edda;\\n border-color: #c3e6cb;\\n }\\n\\n.bk.alert-success hr {\\n border-top-color: #b1dfbb;\\n}\\n\\n.bk.alert-info {\\n color: #0c5460;\\n background-color: #d1ecf1;\\n border-color: #bee5eb;\\n }\\n.bk.alert-info hr {\\n border-top-color: #abdde5;\\n}\\n\\n.bk.alert-warning {\\n color: #856404;\\n background-color: #fff3cd;\\n border-color: #ffeeba;\\n }\\n\\n.bk.alert-warning hr {\\n border-top-color: #ffe8a1;\\n}\\n\\n.bk.alert-danger {\\n color: #721c24;\\n background-color: #f8d7da;\\n border-color: #f5c6cb;\\n}\\n.bk.alert-danger hr {\\n border-top-color: #f1b0b7;\\n}\\n\\n.bk.alert-light {\\n color: #818182;\\n background-color: #fefefe;\\n border-color: #fdfdfe;\\n }\\n.bk.alert-light hr {\\n border-top-color: #ececf6;\\n}\\n\\n.bk.alert-dark {\\n color: #1b1e21;\\n background-color: #d6d8d9;\\n border-color: #c6c8ca;\\n }\\n.bk.alert-dark hr {\\n border-top-color: #b9bbbe;\\n}\\n\\n\\n/* adjf\\u00e6l */\\n\\n.bk.alert-primary a {\\n color: #002752;\\n}\\n\\n.bk.alert-secondary a {\\n color: #202326;\\n}\\n\\n\\n.bk.alert-success a {\\n color: #0b2e13;\\n}\\n\\n\\n.bk.alert-info a {\\n color: #062c33;\\n}\\n\\n\\n.bk.alert-warning a {\\n color: #533f03;\\n}\\n\\n\\n.bk.alert-danger a {\\n color: #491217;\\n}\\n\\n.bk.alert-light a {\\n color: #686868;\\n}\\n\\n.bk.alert-dark a {\\n color: #040505;\\n}\");\n", + " },\n", + " function(Bokeh) {\n", + " /* BEGIN bokeh.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2020, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " const bokeh = factory();\n", + " bokeh.__bokeh__ = true;\n", + " if (typeof root.Bokeh === \"undefined\" || typeof root.Bokeh.__bokeh__ === \"undefined\") {\n", + " root.Bokeh = bokeh;\n", + " }\n", + " const Bokeh = root.Bokeh;\n", + " Bokeh[bokeh.version] = bokeh;\n", + " })(this, function() {\n", + " var define;\n", + " var parent_require = typeof require === \"function\" && require\n", + " return (function(modules, entry, aliases, externals) {\n", + " if (aliases === undefined) aliases = {};\n", + " if (externals === undefined) externals = {};\n", + "\n", + " var cache = {};\n", + "\n", + " var normalize = function(name) {\n", + " if (typeof name === \"number\")\n", + " return name;\n", + "\n", + " if (name === \"bokehjs\")\n", + " return entry;\n", + "\n", + " var prefix = \"@bokehjs/\"\n", + " if (name.slice(0, prefix.length) === prefix)\n", + " name = name.slice(prefix.length)\n", + "\n", + " var alias = aliases[name]\n", + " if (alias != null)\n", + " return alias;\n", + "\n", + " var trailing = name.length > 0 && name[name.lenght-1] === \"/\";\n", + " var index = aliases[name + (trailing ? \"\" : \"/\") + \"index\"];\n", + " if (index != null)\n", + " return index;\n", + "\n", + " return name;\n", + " }\n", + "\n", + " var require = function(name) {\n", + " var mod = cache[name];\n", + " if (!mod) {\n", + " var id = normalize(name);\n", + "\n", + " mod = cache[id];\n", + " if (!mod) {\n", + " if (!modules[id]) {\n", + " if (externals[id] === false || (externals[id] == true && parent_require)) {\n", + " try {\n", + " mod = {exports: externals[id] ? parent_require(id) : {}};\n", + " cache[id] = cache[name] = mod;\n", + " return mod.exports;\n", + " } catch (e) {}\n", + " }\n", + "\n", + " var err = new Error(\"Cannot find module '\" + name + \"'\");\n", + " err.code = 'MODULE_NOT_FOUND';\n", + " throw err;\n", + " }\n", + "\n", + " mod = {exports: {}};\n", + " cache[id] = cache[name] = mod;\n", + " modules[id].call(mod.exports, require, mod, mod.exports);\n", + " } else\n", + " cache[name] = mod;\n", + " }\n", + "\n", + " return mod.exports;\n", + " }\n", + " require.resolve = function(name) {\n", + " return \"\"\n", + " }\n", + "\n", + " var main = require(entry);\n", + " main.require = require;\n", + "\n", + " if (typeof Proxy !== \"undefined\") {\n", + " // allow Bokeh.loader[\"@bokehjs/module/name\"] syntax\n", + " main.loader = new Proxy({}, {\n", + " get: function(_obj, module) {\n", + " return require(module);\n", + " }\n", + " });\n", + " }\n", + "\n", + " main.register_plugin = function(plugin_modules, plugin_entry, plugin_aliases, plugin_externals) {\n", + " if (plugin_aliases === undefined) plugin_aliases = {};\n", + " if (plugin_externals === undefined) plugin_externals = {};\n", + "\n", + " for (var name in plugin_modules) {\n", + " modules[name] = plugin_modules[name];\n", + " }\n", + "\n", + " for (var name in plugin_aliases) {\n", + " aliases[name] = plugin_aliases[name];\n", + " }\n", + "\n", + " for (var name in plugin_externals) {\n", + " externals[name] = plugin_externals[name];\n", + " }\n", + "\n", + " var plugin = require(plugin_entry);\n", + "\n", + " for (var name in plugin) {\n", + " main[name] = plugin[name];\n", + " }\n", + "\n", + " return plugin;\n", + " }\n", + "\n", + " return main;\n", + " })\n", + " ([\n", + " function _(e,t,_){Object.defineProperty(_,\"__esModule\",{value:!0});e(1).__exportStar(e(2),_)},\n", + " function _(t,e,n){\n", + " /*! *****************************************************************************\n", + " Copyright (c) Microsoft Corporation.\n", + " \n", + " Permission to use, copy, modify, and/or distribute this software for any\n", + " purpose with or without fee is hereby granted.\n", + " \n", + " THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n", + " REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n", + " AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n", + " INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n", + " LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n", + " OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n", + " PERFORMANCE OF THIS SOFTWARE.\n", + " ***************************************************************************** */\n", + " Object.defineProperty(n,\"__esModule\",{value:!0});var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function o(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function a(t,e){var n=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,a=n.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}function i(t){return this instanceof i?(this.v=t,this):new i(t)}n.__extends=function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},n.__assign=function(){return n.__assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0;u--)(o=t[u])&&(i=(a<3?o(i):a>3?o(e,n,i):o(e,n))||i);return a>3&&i&&Object.defineProperty(e,n,i),i},n.__param=function(t,e){return function(n,r){e(n,r,t)}},n.__metadata=function(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},n.__awaiter=function(t,e,n,r){return new(n||(n=Promise))((function(o,a){function i(t){try{c(r.next(t))}catch(t){a(t)}}function u(t){try{c(r.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,u)}c((r=r.apply(t,e||[])).next())}))},n.__generator=function(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(a){return function(u){return function(a){if(n)throw new TypeError(\"Generator is already executing.\");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]1||c(t,e)}))})}function c(t,e){try{(n=o[t](e)).value instanceof i?Promise.resolve(n.value.v).then(f,l):s(a[0][2],n)}catch(t){s(a[0][3],t)}var n}function f(t){c(\"next\",t)}function l(t){c(\"throw\",t)}function s(t,e){t(e),a.shift(),a.length&&c(a[0][0],a[0][1])}},n.__asyncDelegator=function(t){var e,n;return e={},r(\"next\"),r(\"throw\",(function(t){throw t})),r(\"return\"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:i(t[r](e)),done:\"return\"===r}:o?o(e):e}:o}},n.__asyncValues=function(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=o(t),e={},r(\"next\"),r(\"throw\"),r(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise((function(r,o){(function(t,e,n,r){Promise.resolve(r).then((function(e){t({value:e,done:n})}),e)})(r,o,(e=t[n](e)).done,e.value)}))}}},n.__makeTemplateObject=function(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t},n.__importStar=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e},n.__importDefault=function(t){return t&&t.__esModule?t:{default:t}},n.__classPrivateFieldGet=function(t,e){if(!e.has(t))throw new TypeError(\"attempted to get private field on non-instance\");return e.get(t)},n.__classPrivateFieldSet=function(t,e,n){if(!e.has(t))throw new TypeError(\"attempted to set private field on non-instance\");return e.set(t,n),n}},\n", + " function _(e,r,t){var l=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r};Object.defineProperty(t,\"__esModule\",{value:!0});var o=e(3);t.version=o.version;var s=e(4);t.index=s.index,t.embed=l(e(4)),t.protocol=l(e(390)),t._testing=l(e(391));var n=e(19);t.logger=n.logger,t.set_log_level=n.set_log_level;var a=e(27);t.settings=a.settings;var i=e(7);t.Models=i.Models;var v=e(5);t.documents=v.documents;var _=e(392);t.safely=_.safely},\n", + " function _(e,n,o){Object.defineProperty(o,\"__esModule\",{value:!0}),o.version=\"2.2.3\"},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(5),s=e(19),r=e(29),d=e(13),_=e(8),c=e(16),i=e(381),a=e(383),u=e(382);var l=e(381);t.add_document_standalone=l.add_document_standalone,t.index=l.index;var m=e(383);t.add_document_from_session=m.add_document_from_session;var f=e(388);t.embed_items_notebook=f.embed_items_notebook,t.kernels=f.kernels;var g=e(382);async function O(e,o,t,c){_.isString(e)&&(e=JSON.parse(r.unescape(e)));const l={};for(const[o,t]of d.entries(e))l[o]=n.Document.from_json(t);const m=[];for(const e of o){const o=u._resolve_element(e),n=u._resolve_root_elements(e);if(null!=e.docid)m.push(await i.add_document_standalone(l[e.docid],o,n,e.use_for_title));else{if(null==e.token)throw new Error(\"Error rendering Bokeh items: either 'docid' or 'token' was expected.\");{const r=a._get_ws_url(t,c);s.logger.debug(\"embed: computed ws url: \"+r);try{m.push(await a.add_document_from_session(r,e.token,o,n,e.use_for_title)),console.log(\"Bokeh items were rendered successfully\")}catch(e){console.log(\"Error rendering Bokeh items:\",e)}}}}return m}t.BOKEH_ROOT=g.BOKEH_ROOT,t.embed_item=async function(e,o){const t={},n=r.uuid4();t[n]=e.doc,null==o&&(o=e.target_id);const s=document.getElementById(o);null!=s&&s.classList.add(u.BOKEH_ROOT);const d={roots:{[e.root_id]:o},root_ids:[e.root_id],docid:n},[_]=await c.defer(()=>O(t,[d]));return _},t.embed_items=async function(e,o,t,n){return await c.defer(()=>O(e,o,t,n))}},\n", + " function _(e,t,_){Object.defineProperty(_,\"__esModule\",{value:!0});const o=e(1);o.__exportStar(e(6),_),o.__exportStar(e(121),_)},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),n=e(7),r=e(3),i=e(19),_=e(313),a=e(14),l=e(15),c=e(17),h=e(31),d=e(9),f=e(13),u=o.__importStar(e(120)),m=e(25),g=e(8),p=e(272),w=e(85),v=e(81),b=e(121);class y{constructor(e){this.document=e,this.session=null,this.subscribed_models=new Set}send_event(e){const t=new b.MessageSentEvent(this.document,\"bokeh_event\",e.to_json());this.document._trigger_on_change(t)}trigger(e){for(const t of this.subscribed_models)null!=e.origin&&e.origin!=t||t._process_event(e)}}s.EventManager=y,y.__name__=\"EventManager\",s.documents=[],s.DEFAULT_TITLE=\"Bokeh Application\";class j{constructor(){s.documents.push(this),this._init_timestamp=Date.now(),this._title=s.DEFAULT_TITLE,this._roots=[],this._all_models=new Map,this._all_models_freeze_count=0,this._callbacks=new Map,this._message_callbacks=new Map,this.event_manager=new y(this),this.idle=new l.Signal0(this,\"idle\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}get layoutables(){return this._roots.filter(e=>e instanceof p.LayoutDOM)}get is_idle(){for(const e of this.layoutables)if(!this._idle_roots.has(e))return!1;return!0}notify_idle(e){this._idle_roots.set(e,!0),this.is_idle&&(i.logger.info(`document idle at ${Date.now()-this._init_timestamp} ms`),this.event_manager.send_event(new _.DocumentReady),this.idle.emit())}clear(){this._push_all_models_freeze();try{for(;this._roots.length>0;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}}interactive_start(e){null==this._interactive_plot&&(this._interactive_plot=e,this._interactive_plot.trigger_event(new _.LODStart)),this._interactive_timestamp=Date.now()}interactive_stop(){null!=this._interactive_plot&&this._interactive_plot.trigger_event(new _.LODEnd),this._interactive_plot=null,this._interactive_timestamp=null}interactive_duration(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp}destructively_move(e){if(e===this)throw new Error(\"Attempted to overwrite a document with itself\");e.clear();const t=d.copy(this._roots);this.clear();for(const e of t)if(null!=e.document)throw new Error(\"Somehow we didn't detach \"+e);if(0!=this._all_models.size)throw new Error(\"this._all_models still had stuff in it: \"+this._all_models);for(const s of t)e.add_root(s);e.set_title(this._title)}_push_all_models_freeze(){this._all_models_freeze_count+=1}_pop_all_models_freeze(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()}_invalidate_all_models(){i.logger.debug(\"invalidating document models\"),0===this._all_models_freeze_count&&this._recompute_all_models()}_recompute_all_models(){let e=new Set;for(const t of this._roots)e=u.union(e,t.references());const t=new Set(this._all_models.values()),s=u.difference(t,e),o=u.difference(e,t),n=new Map;for(const t of e)n.set(t.id,t);for(const e of s)e.detach_document();for(const e of o)e.attach_document(this);this._all_models=n}roots(){return this._roots}add_root(e,t){if(i.logger.debug(\"Adding root: \"+e),!d.includes(this._roots,e)){this._push_all_models_freeze();try{this._roots.push(e)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new b.RootAddedEvent(this,e,t))}}remove_root(e,t){const s=this._roots.indexOf(e);if(!(s<0)){this._push_all_models_freeze();try{this._roots.splice(s,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new b.RootRemovedEvent(this,e,t))}}title(){return this._title}set_title(e,t){e!==this._title&&(this._title=e,this._trigger_on_change(new b.TitleChangedEvent(this,e,t)))}get_model_by_id(e){var t;return null!==(t=this._all_models.get(e))&&void 0!==t?t:null}get_model_by_name(e){const t=[];for(const s of this._all_models.values())s instanceof v.Model&&s.name==e&&t.push(s);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(`Multiple models are named '${e}'`)}}on_message(e,t){const s=this._message_callbacks.get(e);null==s?this._message_callbacks.set(e,new Set([t])):s.add(t)}remove_on_message(e,t){var s;null===(s=this._message_callbacks.get(e))||void 0===s||s.delete(t)}_trigger_on_message(e,t){const s=this._message_callbacks.get(e);if(null!=s)for(const e of s)e(t)}on_change(e,t=!1){this._callbacks.has(e)||this._callbacks.set(e,t)}remove_on_change(e){this._callbacks.delete(e)}_trigger_on_change(e){for(const[t,s]of this._callbacks)if(!s&&e instanceof b.DocumentEventBatch)for(const s of e.events)t(s);else t(e)}_notify_change(e,t,s,o,n){this._trigger_on_change(new b.ModelChangedEvent(this,e,t,s,o,null==n?void 0:n.setter_id,null==n?void 0:n.hint))}static _references_json(e,t=!0){const s=[];for(const o of e){const e=o.struct();e.attributes=o.attributes_as_json(t),delete e.attributes.id,s.push(e)}return s}static _instantiate_object(e,t,s){const o=Object.assign(Object.assign({},s),{id:e,__deferred__:!0});return new(n.Models(t))(o)}static _instantiate_references_json(e,t){const s=new Map;for(const o of e){const e=o.id,n=o.type,r=o.attributes||{};let i=t.get(e);null==i&&(i=j._instantiate_object(e,n,r),null!=o.subtype&&i.set_subtype(o.subtype)),s.set(i.id,i)}return s}static _resolve_refs(e,t,s,o){function n(e){if(c.is_ref(e)){if(t.has(e.id))return t.get(e.id);if(s.has(e.id))return s.get(e.id);throw new Error(`reference ${JSON.stringify(e)} isn't known (not in Document?)`)}return h.is_NDArray_ref(e)?h.decode_NDArray(e,o):g.isArray(e)?function(e){const t=[];for(const s of e)t.push(n(s));return t}(e):g.isPlainObject(e)?function(e){const t={};for(const[s,o]of f.entries(e))t[s]=n(o);return t}(e):e}return n(e)}static _initialize_references_json(e,t,s,o){const n=new Map;for(const{id:r,attributes:i}of e){const e=!t.has(r),_=e?s.get(r):t.get(r),a=j._resolve_refs(i,t,s,o);_.setv(a,{silent:!0}),n.set(r,{instance:_,is_new:e})}const r=[],i=new Set;function _(e){if(e instanceof a.HasProps){if(n.has(e.id)&&!i.has(e.id)){i.add(e.id);const{instance:t,is_new:s}=n.get(e.id),{attributes:o}=t;for(const e of f.values(o))_(e);s&&(t.finalize(),r.push(t))}}else if(g.isArray(e))for(const t of e)_(t);else if(g.isPlainObject(e))for(const t of f.values(e))_(t)}for(const e of n.values())_(e.instance);for(const e of r)e.connect_signals()}static _event_for_attribute_change(e,t,s,o,n){if(o.get_model_by_id(e.id).property(t).syncable){const r={kind:\"ModelChanged\",model:{id:e.id},attr:t,new:s};return a.HasProps._json_record_references(o,s,n,{recursive:!0}),r}return null}static _events_to_sync_objects(e,t,s,o){const n=Object.keys(e.attributes),r=Object.keys(t.attributes),_=d.difference(n,r),a=d.difference(r,n),l=d.intersection(n,r),c=[];for(const e of _)i.logger.warn(`Server sent key ${e} but we don't seem to have it in our JSON`);for(const n of a){const r=t.attributes[n];c.push(j._event_for_attribute_change(e,n,r,s,o))}for(const n of l){const r=e.attributes[n],i=t.attributes[n];null==r&&null==i||(null==r||null==i?c.push(j._event_for_attribute_change(e,n,i,s,o)):m.isEqual(r,i)||c.push(j._event_for_attribute_change(e,n,i,s,o)))}return c.filter(e=>null!=e)}static _compute_patch_since_json(e,t){const s=t.to_json(!1);function o(e){const t=new Map;for(const s of e.roots.references)t.set(s.id,s);return t}const n=o(e),r=new Map,i=[];for(const t of e.roots.root_ids)r.set(t,n.get(t)),i.push(t);const _=o(s),a=new Map,l=[];for(const e of s.roots.root_ids)a.set(e,_.get(e)),l.push(e);if(i.sort(),l.sort(),d.difference(i,l).length>0||d.difference(l,i).length>0)throw new Error(\"Not implemented: computing add/remove of document roots\");const c=new Set;let h=[];for(const e of t._all_models.keys())if(n.has(e)){const s=j._events_to_sync_objects(n.get(e),_.get(e),t,c);h=h.concat(s)}return{references:j._references_json(c,!1),events:h}}to_json_string(e=!0){return JSON.stringify(this.to_json(e))}to_json(e=!0){const t=this._roots.map(e=>e.id),s=this._all_models.values();return{version:r.version,title:this._title,roots:{root_ids:t,references:j._references_json(s,e)}}}static from_json_string(e){const t=JSON.parse(e);return j.from_json(t)}static from_json(e){i.logger.debug(\"Creating Document from JSON\");const t=e.version,s=-1!==t.indexOf(\"+\")||-1!==t.indexOf(\"-\"),o=`Library versions: JS (${r.version}) / Python (${t})`;s||r.version.replace(/-(dev|rc)\\./,\"$1\")==t?i.logger.debug(o):(i.logger.warn(\"JS/Python version mismatch\"),i.logger.warn(o));const n=e.roots,_=n.root_ids,a=n.references,l=j._instantiate_references_json(a,new Map);j._initialize_references_json(a,new Map,l,new Map);const c=new j;for(const e of _){const t=l.get(e);null!=t&&c.add_root(t)}return c.set_title(e.title),c}replace_with_json(e){j.from_json(e).destructively_move(this)}create_json_patch_string(e){return JSON.stringify(this.create_json_patch(e))}create_json_patch(e){const t=new Set,s=[];for(const o of e){if(o.document!==this)throw i.logger.warn(\"Cannot create a patch using events from a different document, event had \",o.document,\" we are \",this),new Error(\"Cannot create a patch using events from a different document\");s.push(o.json(t))}return{events:s,references:j._references_json(t)}}apply_json_patch(e,t=new Map,s){const o=e.references,n=e.events,r=j._instantiate_references_json(o,this._all_models);t instanceof Map||(t=new Map(t));for(const e of n)switch(e.kind){case\"RootAdded\":case\"RootRemoved\":case\"ModelChanged\":{const t=e.model.id,s=this._all_models.get(t);if(null!=s)r.set(t,s);else if(!r.has(t))throw i.logger.warn(`Got an event for unknown model ${e.model}\"`),new Error(\"event model wasn't known\");break}}const _=new Map,a=new Map;for(const[e,t]of r)this._all_models.has(e)?_.set(e,t):a.set(e,t);j._initialize_references_json(o,_,a,t);for(const e of n)switch(e.kind){case\"MessageSent\":{const{msg_type:s,msg_data:o}=e;let n;if(void 0===o){if(1!=t.size)throw new Error(\"expected exactly one buffer\");{const[[,e]]=t;n=e}}else n=j._resolve_refs(o,_,a,t);this._trigger_on_message(s,n);break}case\"ModelChanged\":{const o=e.model.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot apply patch to ${o} which is not in the document`);const r=e.attr,i=j._resolve_refs(e.new,_,a,t);n.setv({[r]:i},{setter_id:s});break}case\"ColumnDataChanged\":{const o=e.column_source.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot stream to ${o} which is not in the document`);const r=j._resolve_refs(e.new,new Map,new Map,t);if(null!=e.cols)for(const e in n.data)e in r||(r[e]=n.data[e]);n.setv({data:r},{setter_id:s,check_eq:!1});break}case\"ColumnsStreamed\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot stream to ${t} which is not in the document`);if(!(o instanceof w.ColumnDataSource))throw new Error(\"Cannot stream to non-ColumnDataSource\");const n=e.data,r=e.rollover;o.stream(n,r,s);break}case\"ColumnsPatched\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot patch ${t} which is not in the document`);if(!(o instanceof w.ColumnDataSource))throw new Error(\"Cannot patch non-ColumnDataSource\");const n=e.patches;o.patch(n,s);break}case\"RootAdded\":{const t=e.model.id,o=r.get(t);this.add_root(o,s);break}case\"RootRemoved\":{const t=e.model.id,o=r.get(t);this.remove_root(o,s);break}case\"TitleChanged\":this.set_title(e.title,s);break;default:throw new Error(\"Unknown patch event \"+JSON.stringify(e))}}}s.Document=j,j.__name__=\"Document\"},\n", + " function _(e,r,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),t=e(8),d=e(13),i=e(14);s.overrides={};const l=new Map;s.Models=e=>{const r=s.overrides[e]||l.get(e);if(null==r)throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`);return r},s.Models.register=(e,r)=>{s.overrides[e]=r},s.Models.unregister=e=>{delete s.overrides[e]},s.Models.register_models=(e,r=!1,s)=>{var o;if(null!=e)for(const n of d.values(e))if(o=n,t.isObject(o)&&o.prototype instanceof i.HasProps){const e=n.__qualified__;r||!l.has(e)?l.set(e,n):null!=s?s(e):console.warn(`Model '${e}' was already registered`)}},s.register_models=s.Models.register_models,s.Models.registered_names=()=>Array.from(l.keys());const n=o.__importStar(e(34));s.register_models(n)},\n", + " function _(n,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});\n", + " // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n", + " // Underscore may be freely distributed under the MIT license.\n", + " const e=n(9),i=Object.prototype.toString;function o(n){return\"[object Number]\"===i.call(n)}function c(n){const t=typeof n;return\"function\"===t||\"object\"===t&&!!n}r.isBoolean=function(n){return!0===n||!1===n||\"[object Boolean]\"===i.call(n)},r.isNumber=o,r.isInteger=function(n){return o(n)&&Number.isInteger(n)},r.isString=function(n){return\"[object String]\"===i.call(n)},r.isFunction=function(n){return\"[object Function]\"===i.call(n)},r.isArray=function(n){return Array.isArray(n)},r.isArrayOf=function(n,t){return e.every(n,t)},r.isArrayableOf=function(n,t){for(let r=0,e=n.length;r0,\"'step' must be a positive number\"),null==t&&(t=n,n=0);const{max:r,ceil:i,abs:u}=Math,c=n<=t?e:-e,f=r(i(u(t-n)/e),0),s=new Array(f);for(let t=0;t=0?t:n.length+t]},e.zip=function(...n){if(0==n.length)return[];const t=i.min(n.map(n=>n.length)),e=n.length,r=new Array(t);for(let o=0;on.length)),r=Array(e);for(let n=0;nn[t])},e.argmax=function(n){return i.max_by(a(n.length),t=>n[t])},e.sort_by=function(n,t){const e=n.map((n,e)=>({value:n,index:e,key:t(n)}));return e.sort((n,t)=>{const e=n.key,r=t.key;if(e!==r){if(e>r||void 0===e)return 1;if(en.value)},e.uniq=function(n){const t=new Set;for(const e of n)t.add(e);return[...t]},e.uniq_by=function(n,t){const e=[],r=[];for(const o of n){const n=t(o);s(r,n)||(r.push(n),e.push(o))}return e},e.union=function(...n){const t=new Set;for(const e of n)for(const n of e)t.add(n);return[...t]},e.intersection=function(n,...t){const e=[];n:for(const r of n)if(!s(e,r)){for(const n of t)if(!s(n,r))continue n;e.push(r)}return e},e.difference=function(n,...t){const e=f(t);return n.filter(n=>!s(e,n))},e.remove_at=function(n,t){const e=c(n);return e.splice(t,1),e},e.remove_by=function(n,t){for(let e=0;e2*Math.PI;)n-=2*Math.PI;return n}function a(n,t){return e(n-t)}function o(){return Math.random()}Object.defineProperty(r,\"__esModule\",{value:!0}),r.angle_norm=e,r.angle_dist=a,r.angle_between=function(n,t,r,o){const u=a(t,r);if(0==u)return!1;if(u==2*Math.PI)return!0;const f=e(n),i=a(t,f)<=u&&a(f,r)<=u;return 0==o?i:!i},r.random=o,r.randomIn=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},r.atan2=function(n,t){return Math.atan2(t[1]-n[1],t[0]-n[0])},r.radians=function(n){return n*(Math.PI/180)},r.degrees=function(n){return n/(Math.PI/180)},r.rnorm=function(n,t){let r,e;for(;r=o(),e=o(),e=(2*e-1)*Math.sqrt(1/Math.E*2),!(-4*r*r*Math.log(r)>=e*e););let a=e/r;return a=n+t*a,a},r.clamp=function(n,t,r){return nr?r:n}},\n", + " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});class o extends Error{}n.AssertionError=o,o.__name__=\"AssertionError\",n.assert=function(e,r){if(!(!0===e||!1!==e&&e()))throw new o(null!=r?r:\"Assertion failed\")},n.unreachable=function(){throw new Error(\"unreachable code\")}},\n", + " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=n(8),o=n(10);function i(n,t,e,...r){const o=n.length;t<0&&(t+=o),t<0?t=0:t>o&&(t=o),null==e||e>o-t?e=o-t:e<0&&(e=0);const i=o-e+r.length,u=new n.constructor(i);let l=0;for(;l0?0:r-1;for(;o>=0&&ot[t.length-1])return t.length;let e=0,r=t.length-1;for(;r-e!=1;){const o=e+Math.floor((r-e)/2);n>=t[o]?e=o:r=o}return e}e.is_empty=function(n){return 0==n.length},e.copy=function(n){return r.isArray(n)?n.slice():new n.constructor(n)},e.splice=i,e.head=u,e.insert=function(n,t,e){return i(n,e,0,t)},e.append=function(n,t){return i(n,n.length,0,t)},e.prepend=function(n,t){return i(n,0,0,t)},e.indexOf=function(n,t){for(let e=0,r=n.length;ee&&(e=t);return e},e.minmax=function(n){let t,e=1/0,r=-1/0;for(let o=0,i=n.length;or&&(r=t));return[e,r]},e.min_by=function(n,t){if(0==n.length)throw new Error(\"min_by() called with an empty array\");let e=n[0],r=t(e);for(let o=1,i=n.length;or&&(e=i,r=u)}return e},e.sum=function(n){let t=0;for(let e=0,r=n.length;et[r]=n+e,0),t},e.every=function(n,t){for(let e=0,r=n.length;e(n-t)/r)}},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const c=e(9);function o(e){return Object.keys(e).length}n.keys=Object.keys,n.values=Object.values,n.entries=Object.entries,n.extend=Object.assign,n.clone=function(e){return Object.assign({},e)},n.merge=function(e,t){const n=Object.create(Object.prototype),o=c.concat([Object.keys(e),Object.keys(t)]);for(const s of o){const o=e.hasOwnProperty(s)?e[s]:[],r=t.hasOwnProperty(s)?t[s]:[];n[s]=c.union(o,r)}return n},n.size=o,n.isEmpty=function(e){return 0==o(e)},n.to_object=function(e){const t={};for(const[n,c]of e)t[n]=c;return t}},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const s=t(1),n=t(15),i=t(17),o=s.__importStar(t(18)),c=s.__importStar(t(21)),a=s.__importStar(t(28)),_=t(29),u=t(9),f=t(13),l=t(8),h=t(25),p=t(5),d=t(30),y=t(31),g=t(25),v=t(33),m=s.__importStar(t(21));class b extends(n.Signalable()){constructor(t={}){var e;super(),this._subtype=void 0,this.document=null,this.destroyed=new n.Signal0(this,\"destroyed\"),this.change=new n.Signal0(this,\"change\"),this.transformchange=new n.Signal0(this,\"transformchange\"),this.properties={},this._pending=!1,this._changing=!1;const r=t instanceof Map?t.get:e=>t[e];for(const[t,{type:e,default_value:s,options:n}]of f.entries(this._props)){let i;i=e instanceof c.Kind?new o.PrimitiveProperty(this,t,e,s,r(t),n):new e(this,t,c.Any,s,r(t),n),this.properties[t]=i}null!==(e=r(\"__deferred__\"))&&void 0!==e&&e||(this.finalize(),this.connect_signals())}set type(t){console.warn(\"prototype.type = 'ModelName' is deprecated, use static __name__ instead\"),this.constructor.__name__=t}get type(){return this.constructor.__qualified__}static get __qualified__(){const{__module__:t,__name__:e}=this;return null!=t?`${t}.${e}`:e}static get[Symbol.toStringTag](){return this.__name__}static init_HasProps(){this.prototype._props={},this.prototype._mixins=[],this.define({id:[o.String,()=>_.uniqueId()]})}static _fix_default(t,e){if(void 0!==t){if(l.isFunction(t))return t;if(l.isArray(t))return()=>u.copy(t);if(l.isPlainObject(t))return()=>f.clone(t);if(l.isObject(t))throw new Error(t+\" must be explicitly wrapped in a function\");return()=>t}}static define(t){for(const[e,r]of f.entries(l.isFunction(t)?t(m):t)){if(null!=this.prototype._props[e])throw new Error(`attempted to redefine property '${this.prototype.type}.${e}'`);if(null!=this.prototype[e])throw new Error(`attempted to redefine attribute '${this.prototype.type}.${e}'`);Object.defineProperty(this.prototype,e,{get(){return this.properties[e].get_value()},set(t){return this.setv({[e]:t}),this},configurable:!1,enumerable:!0});const[t,s,n]=r,i={type:t,default_value:this._fix_default(s,e),options:n},o=f.clone(this.prototype._props);o[e]=i,this.prototype._props=o}}static internal(t){const e={};for(const[r,s]of f.entries(t)){const[t,n,i={}]=s;e[r]=[t,n,Object.assign(Object.assign({},i),{internal:!0})]}this.define(e)}static mixins(t){function e(t){switch(t){case\"line\":return a.LineVector;case\"fill\":return a.FillVector;case\"hatch\":return a.HatchVector;case\"text\":return a.TextVector;default:throw new Error(`Unknown property mixin kind '${t}'`)}}function r(t,e){const r={};for(const[s,n]of f.entries(e))r[t+s]=n;return r}function s(t){const[e]=Object.keys(t),[r]=e.split(\"_\",1);return r}l.isArray(t)||(t=[t]);const n={},i=[];for(const o of t)if(l.isString(o)){const[t,s=\"\"]=o.split(\":\"),c=e(t);i.push(o),f.extend(n,r(s,c))}else if(l.isArray(o)){const[t,e]=o;i.push(`${s(e)}:${t}`),f.extend(n,r(t,e))}else{const t=o;i.push(s(t)),f.extend(n,t)}this.define(n),this.prototype._mixins=[...this.prototype._mixins,...i]}static override(t){for(const[e,r]of f.entries(t)){const t=this._fix_default(r,e),s=this.prototype._props[e];if(null==s)throw new Error(`attempted to override nonexistent '${this.prototype.type}.${e}'`);const n=f.clone(this.prototype._props);n[e]=Object.assign(Object.assign({},s),{default_value:t}),this.prototype._props=n}}toString(){return`${this.type}(${this.id})`}property(t){const e=this.properties[t];if(null!=e)return e;throw new Error(`unknown property ${this.type}.${t}`)}get attributes(){const t={};for(const e of this)t[e.attr]=e.get_value();return t}[g.equals](t,e){for(const r of this){const s=t.property(r.attr);if(e.eq(r.get_value(),s.get_value()))return!1}return!0}[v.pretty](t){const e=t.token,r=[];for(const s of this)if(s.dirty){const n=s.get_value();r.push(`${s.attr}${e(\":\")} ${t.to_string(n)}`)}return`${this.constructor.__qualified__}${e(\"(\")}${e(\"{\")}${r.join(e(\",\")+\" \")}${e(\"}\")}${e(\")\")}`}finalize(){for(const t of this)null!=t.spec.transform&&this.connect(t.spec.transform.change,()=>this.transformchange.emit());this.initialize()}initialize(){}connect_signals(){}disconnect_signals(){n.Signal.disconnectReceiver(this)}destroy(){this.disconnect_signals(),this.destroyed.emit()}clone(){return new this.constructor(this.attributes)}_setv(t,e){const r=e.check_eq,s=[],n=this._changing;this._changing=!0;for(const[e,n]of t)!1!==r&&h.isEqual(e.get_value(),n)||(e.set_value(n),s.push(e));s.length>0&&(this._pending=!0);for(const t of s)t.change.emit();if(!n){if(!e.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}}setv(t,e={}){const r=f.entries(t);if(0==r.length)return;if(!0===e.silent){for(const[t,e]of r)this.properties[t].set_value(e);return}const s=new Map,n=new Map;for(const[t,e]of r){const r=this.properties[t];s.set(r,e),n.set(r,r.get_value())}this._setv(s,e);const{document:i}=this;if(null!=i){const t=[];for(const[e,r]of n)t.push([e,r,e.get_value()]);for(const[,e,r]of t)if(this._needs_invalidate(e,r)){i._invalidate_all_models();break}this._push_changes(t,e)}}getv(t){return this.property(t).get_value()}ref(){return{id:this.id}}struct(){const t={type:this.type,id:this.id,attributes:{}};return null!=this._subtype&&(t.subtype=this._subtype),t}set_subtype(t){this._subtype=t}*[Symbol.iterator](){yield*f.values(this.properties)}*syncable_properties(){for(const t of this)t.syncable&&(yield t)}serializable_attributes(){const t={};for(const e of this.syncable_properties())t[e.attr]=e.get_value();return t}static _value_to_json(t){if(t instanceof b)return t.ref();if(d.is_NDArray(t))return y.encode_NDArray(t);if(l.isArray(t)||l.isTypedArray(t)){const e=t.length,r=new Array(e);for(let s=0;sn.signal===t&&n.slot===e&&n.context===l)}const g=new Set;function a(n){0===g.size&&l.defer(f),g.add(n)}function f(){for(const n of g)s.remove_by(n,n=>null==n.signal);g.clear()}},\n", + " function _(n,e,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.delay=\n", + " // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n", + " // Underscore may be freely distributed under the MIT license.\n", + " function(n,e){return setTimeout(n,e)};const u=\"function\"==typeof requestAnimationFrame?requestAnimationFrame:setImmediate;t.defer=function(n){return new Promise(e=>{u(()=>e(n()))})},t.throttle=function(n,e,t={}){let u,o,i,r=null,l=0;const c=function(){l=!1===t.leading?0:Date.now(),r=null,i=n.apply(u,o),r||(u=o=null)};return function(){const a=Date.now();l||!1!==t.leading||(l=a);const f=e-(a-l);return u=this,o=arguments,f<=0||f>e?(r&&(clearTimeout(r),r=null),l=a,i=n.apply(u,o),r||(u=o=null)):r||!1===t.trailing||(r=setTimeout(c,f)),i}},t.once=function(n){let e,t=!1;return function(){return t||(t=!0,e=n()),e}}},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(8),r=e(13);t.is_ref=function(e){if(i.isPlainObject(e)){const n=r.keys(e);return 1==n.length&&\"id\"==n[0]}return!1}},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const a=e(1),s=e(15),i=e(19),r=a.__importStar(e(20)),l=e(24),o=e(9),c=e(12),_=e(22),u=e(8),d=e(27);function p(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function S(e){return u.isPlainObject(e)&&(void 0===e.value?0:1)+(void 0===e.field?0:1)+(void 0===e.expr?0:1)==1}n.isSpec=S;class m{constructor(e,t,n,a,i,r={}){var l,o;let c;if(this.obj=e,this.attr=t,this.kind=n,this.default_value=a,this._dirty=!1,this.change=new s.Signal0(this.obj,\"change\"),this.internal=null!==(l=r.internal)&&void 0!==l&&l,this.optional=null!==(o=r.optional)&&void 0!==o&&o,void 0!==i)c=i,this._dirty=!0;else{const t=this._default_override();c=void 0!==t?t:void 0!==a?a(e):null}this._update(c)}get is_value(){return void 0!==this.spec.value}get syncable(){return!this.internal}get_value(){return this.spec.value}set_value(e){this._update(e),this._dirty=!0}_default_override(){}get dirty(){return this._dirty}_update(e){null!=e&&this.validate(e),this.spec={value:e}}toString(){return`Prop(${this.obj}.${this.attr}, spec: ${p(this.spec)})`}normalize(e){return e}validate(e){if(!this.valid(e))throw new Error(`${this.obj.type}.${this.attr} given invalid value: ${p(e)}`)}valid(e){return this.kind.valid(e)}value(e=!0){if(!this.is_value)throw new Error(\"attempted to retrieve property value for property without value specification\");let t=this.normalize([this.spec.value])[0];return null!=this.spec.transform&&e&&(t=this.spec.transform.compute(t)),t}}n.Property=m,m.__name__=\"Property\";class h extends m{}n.PrimitiveProperty=h,h.__name__=\"PrimitiveProperty\";class v extends m{}n.Any=v,v.__name__=\"Any\";class g extends m{valid(e){return u.isArray(e)||e instanceof Float32Array||e instanceof Float64Array}}n.Array=g,g.__name__=\"Array\";class x extends m{valid(e){return u.isBoolean(e)}}n.Boolean=x,x.__name__=\"Boolean\";class y extends m{valid(e){return u.isString(e)&&_.is_color(e)}}n.Color=y,y.__name__=\"Color\";class f extends m{}n.Instance=f,f.__name__=\"Instance\";class A extends m{valid(e){return u.isNumber(e)}}n.Number=A,A.__name__=\"Number\";class P extends A{valid(e){return u.isNumber(e)&&(0|e)==e}}n.Int=P,P.__name__=\"Int\";class C extends A{}n.Angle=C,C.__name__=\"Angle\";class b extends A{valid(e){return u.isNumber(e)&&0<=e&&e<=1}}n.Percent=b,b.__name__=\"Percent\";class L extends m{valid(e){return u.isString(e)}}n.String=L,L.__name__=\"String\";class N extends m{valid(e){return null===e||u.isString(e)}}n.NullString=N,N.__name__=\"NullString\";class T extends L{}n.FontSize=T,T.__name__=\"FontSize\";class q extends L{_default_override(){return d.settings.dev?\"Bokeh\":void 0}}n.Font=q,q.__name__=\"Font\";class B extends m{valid(e){return u.isString(e)&&o.includes(this.enum_values,e)}}function M(e){return class extends B{get enum_values(){return[...e]}}}n.EnumProperty=B,B.__name__=\"EnumProperty\",n.Enum=M;class w extends B{get enum_values(){return[...r.Direction]}normalize(e){const t=new Uint8Array(e.length);for(let n=0;ne*Math.PI/180)),e=c.map(e,e=>-e),super.normalize(e)}}n.AngleSpec=re,re.__name__=\"AngleSpec\";class le extends G{get default_units(){return\"data\"}get valid_units(){return[...r.SpatialUnits]}}n.DistanceSpec=le,le.__name__=\"DistanceSpec\";class oe extends J{array(e){return new Uint8Array(super.array(e))}}n.BooleanSpec=oe,oe.__name__=\"BooleanSpec\";class ce extends J{array(e){return new l.NumberArray(super.array(e))}}n.NumberSpec=ce,ce.__name__=\"NumberSpec\";class _e extends J{array(e){const t=super.array(e),n=t.length,a=new l.ColorArray(n);for(let e=0;e0){let o=s[e];return null==o&&(s[e]=o=new r(e,l)),o}throw new TypeError(\"Logger.get() expects a non-empty string name and an optional log-level\")}get level(){return this.get_level()}get_level(){return this._log_level}set_level(e){if(e instanceof g)this._log_level=e;else{if(!n.isString(e)||null==r.log_levels[e])throw new Error(\"Logger.set_level() expects a log-level object or a string name of a log-level\");this._log_level=r.log_levels[e]}const l=`[${this._name}]`;for(const[e,o]of t.entries(r.log_levels))o.level\",\"*\"),t.HTTPMethod=o.Enum(\"POST\",\"GET\"),t.HexTileOrientation=o.Enum(\"pointytop\",\"flattop\"),t.HoverMode=o.Enum(\"mouse\",\"hline\",\"vline\"),t.LatLon=o.Enum(\"lat\",\"lon\"),t.LegendClickPolicy=o.Enum(\"none\",\"hide\",\"mute\"),t.LegendLocation=t.Anchor,t.LineCap=o.Enum(\"butt\",\"round\",\"square\"),t.LineJoin=o.Enum(\"miter\",\"round\",\"bevel\"),t.LinePolicy=o.Enum(\"prev\",\"next\",\"nearest\",\"interp\",\"none\"),t.Location=o.Enum(\"above\",\"below\",\"left\",\"right\"),t.Logo=o.Enum(\"normal\",\"grey\"),t.MarkerType=o.Enum(\"asterisk\",\"circle\",\"circle_cross\",\"circle_dot\",\"circle_x\",\"circle_y\",\"cross\",\"dash\",\"diamond\",\"diamond_cross\",\"diamond_dot\",\"dot\",\"hex\",\"hex_dot\",\"inverted_triangle\",\"plus\",\"square\",\"square_cross\",\"square_dot\",\"square_pin\",\"square_x\",\"triangle\",\"triangle_dot\",\"triangle_pin\",\"x\",\"y\"),t.MutedPolicy=o.Enum(\"show\",\"ignore\"),t.Orientation=o.Enum(\"vertical\",\"horizontal\"),t.OutputBackend=o.Enum(\"canvas\",\"svg\",\"webgl\"),t.PaddingUnits=o.Enum(\"percent\",\"absolute\"),t.Place=o.Enum(\"above\",\"below\",\"left\",\"right\",\"center\"),t.PointPolicy=o.Enum(\"snap_to_data\",\"follow_mouse\",\"none\"),t.RadiusDimension=o.Enum(\"x\",\"y\",\"max\",\"min\"),t.RenderLevel=o.Enum(\"image\",\"underlay\",\"glyph\",\"guide\",\"annotation\",\"overlay\"),t.RenderMode=o.Enum(\"canvas\",\"css\"),t.ResetPolicy=o.Enum(\"standard\",\"event_only\"),t.RoundingFunction=o.Enum(\"round\",\"nearest\",\"floor\",\"rounddown\",\"ceil\",\"roundup\"),t.SelectionMode=o.Enum(\"replace\",\"append\",\"intersect\",\"subtract\"),t.Side=o.Enum(\"above\",\"below\",\"left\",\"right\"),t.SizingMode=o.Enum(\"stretch_width\",\"stretch_height\",\"stretch_both\",\"scale_width\",\"scale_height\",\"scale_both\",\"fixed\"),t.Sort=o.Enum(\"ascending\",\"descending\"),t.SpatialUnits=o.Enum(\"screen\",\"data\"),t.StartEnd=o.Enum(\"start\",\"end\"),t.StepMode=o.Enum(\"after\",\"before\",\"center\"),t.TapBehavior=o.Enum(\"select\",\"inspect\"),t.TextAlign=o.Enum(\"left\",\"right\",\"center\"),t.TextBaseline=o.Enum(\"top\",\"middle\",\"bottom\",\"alphabetic\",\"hanging\",\"ideographic\"),t.TextureRepetition=o.Enum(\"repeat\",\"repeat_x\",\"repeat_y\",\"no_repeat\"),t.TickLabelOrientation=o.Enum(\"vertical\",\"horizontal\",\"parallel\",\"normal\"),t.TooltipAttachment=o.Enum(\"horizontal\",\"vertical\",\"left\",\"right\",\"above\",\"below\"),t.UpdateMode=o.Enum(\"replace\",\"append\"),t.VerticalAlign=o.Enum(\"top\",\"middle\",\"bottom\")},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1).__importStar(e(8)),r=e(22);class i{}t.Kind=i,i.__name__=\"Kind\",function(e){class n extends i{valid(e){return!0}}n.__name__=\"Any\",e.Any=n;class t extends i{valid(e){return!0}}t.__name__=\"Unknown\",e.Unknown=t;class l extends i{valid(e){return s.isBoolean(e)}}l.__name__=\"Boolean\",e.Boolean=l;class a extends i{constructor(e){super(),this.obj_type=e}valid(e){return!0}}a.__name__=\"Ref\",e.Ref=a;class _ extends i{valid(e){return s.isNumber(e)}}_.__name__=\"Number\",e.Number=_;class u extends _{valid(e){return super.valid(e)&&s.isInteger(e)}}u.__name__=\"Int\",e.Int=u;class d extends i{constructor(e){super(),this.types=e,this.types=e}valid(e){return this.types.some(n=>n.valid(e))}}d.__name__=\"Or\",e.Or=d;class o extends i{constructor(e){super(),this.types=e,this.types=e}valid(e){if(!s.isArray(e))return!1;for(let n=0;nthis.item_type.valid(e))}}c.__name__=\"Array\",e.Array=c;class m extends i{valid(e){return null===e}}m.__name__=\"Null\",e.Null=m;class p extends i{constructor(e){super(),this.base_type=e}valid(e){return null===e||this.base_type.valid(e)}}p.__name__=\"Nullable\",e.Nullable=p;class y extends i{valid(e){return s.isString(e)}}y.__name__=\"String\",e.String=y;class v extends i{constructor(e){super(),this.values=new Set(e)}valid(e){return this.values.has(e)}*[Symbol.iterator](){yield*this.values}}v.__name__=\"Enum\",e.Enum=v;class h extends i{constructor(e){super(),this.item_type=e}valid(e){if(!s.isPlainObject(e))return!1;for(const n in e)if(e.hasOwnProperty(n)){const t=e[n];if(!this.item_type.valid(t))return!1}return!0}}h.__name__=\"Struct\",e.Struct=h;class w extends i{constructor(e,n){super(),this.key_type=e,this.item_type=n}valid(e){if(!(e instanceof Map))return!1;for(const[n,t]of e.entries())if(!this.key_type.valid(n)||!this.item_type.valid(t))return!1;return!0}}w.__name__=\"Dict\",e.Dict=w;class K extends i{valid(e){return s.isString(e)&&r.is_color(e)}}K.__name__=\"Color\",e.Color=K;class f extends _{valid(e){return super.valid(e)&&0<=e&&e<=1}}f.__name__=\"Percent\",e.Percent=f}(t.Kinds||(t.Kinds={})),t.Any=new t.Kinds.Any,t.Unknown=new t.Kinds.Unknown,t.Boolean=new t.Kinds.Boolean,t.Number=new t.Kinds.Number,t.Int=new t.Kinds.Int,t.String=new t.Kinds.String,t.Null=new t.Kinds.Null,t.Nullable=e=>new t.Kinds.Nullable(e),t.Or=(...e)=>new t.Kinds.Or(e),t.Tuple=(...e)=>new t.Kinds.Tuple(e),t.Array=e=>new t.Kinds.Array(e),t.Struct=e=>new t.Kinds.Struct(e),t.Dict=(e,n)=>new t.Kinds.Dict(e,n),t.Enum=(...e)=>new t.Kinds.Enum(e),t.Ref=e=>new t.Kinds.Ref(e),t.Percent=new t.Kinds.Percent,t.Color=new t.Kinds.Color,t.Auto=t.Enum(\"auto\"),t.FontSize=t.String,t.Font=t.String,t.Angle=t.Number},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(23),l=e(9);function a(e){const r=Number(e).toString(16);return 1==r.length?\"0\"+r:r}function o(e){if(0==(e+=\"\").indexOf(\"#\"))return e;if(n.is_svg_color(e))return n.svg_colors[e];if(0==e.indexOf(\"rgb\")){const r=e.replace(/^rgba?\\(|\\s+|\\)$/g,\"\").split(\",\");let t=r.slice(0,3).map(a).join(\"\");return 4==r.length&&(t+=a(Math.floor(255*parseFloat(r[3])))),\"#\"+t.slice(0,8)}return e}function s(e){let r;switch(e.substring(0,4)){case\"rgba\":r={start:\"rgba(\",len:4,alpha:!0};break;case\"rgb(\":r={start:\"rgb(\",len:3,alpha:!1};break;default:return!1}if(new RegExp(\".*?(\\\\.).*(,)\").test(e))return!1;const t=e.replace(r.start,\"\").replace(\")\",\"\").split(\",\").map(parseFloat);return t.length==r.len&&((!r.alpha||0<=t[3]&&t[3]<=1)&&!l.includes(t.slice(0,3).map(e=>0<=e&&e<=255),!1))}t.is_color=function(e){return n.is_svg_color(e.toLowerCase())||\"#\"==e.substring(0,1)||s(e)},t.rgb2hex=function(e,r,t){return`#${a(255&e)}${a(255&r)}${a(255&t)}`},t.color2hex=o,t.encode_rgba=function([e,r,t,n]){return(255*e|0)<<24|(255*r|0)<<16|(255*t|0)<<8|255*n|0},t.decode_rgba=function(e){return[(e>>24&255)/255,(e>>16&255)/255,(e>>8&255)/255,(e>>0&255)/255]},t.color2rgba=function(e,r=1){if(!e)return[0,0,0,0];let t=o(e);t=t.replace(/ |#/g,\"\"),t.length<=4&&(t=t.replace(/(.)/g,\"$1$1\"));const n=t.match(/../g).map(e=>parseInt(e,16)/255);for(;n.length<3;)n.push(0);return n.length<4&&n.push(r),n.slice(0,4)},t.valid_rgb=s},\n", + " function _(e,F,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.svg_colors={indianred:\"#CD5C5C\",lightcoral:\"#F08080\",salmon:\"#FA8072\",darksalmon:\"#E9967A\",lightsalmon:\"#FFA07A\",crimson:\"#DC143C\",red:\"#FF0000\",firebrick:\"#B22222\",darkred:\"#8B0000\",pink:\"#FFC0CB\",lightpink:\"#FFB6C1\",hotpink:\"#FF69B4\",deeppink:\"#FF1493\",mediumvioletred:\"#C71585\",palevioletred:\"#DB7093\",coral:\"#FF7F50\",tomato:\"#FF6347\",orangered:\"#FF4500\",darkorange:\"#FF8C00\",orange:\"#FFA500\",gold:\"#FFD700\",yellow:\"#FFFF00\",lightyellow:\"#FFFFE0\",lemonchiffon:\"#FFFACD\",lightgoldenrodyellow:\"#FAFAD2\",papayawhip:\"#FFEFD5\",moccasin:\"#FFE4B5\",peachpuff:\"#FFDAB9\",palegoldenrod:\"#EEE8AA\",khaki:\"#F0E68C\",darkkhaki:\"#BDB76B\",lavender:\"#E6E6FA\",thistle:\"#D8BFD8\",plum:\"#DDA0DD\",violet:\"#EE82EE\",orchid:\"#DA70D6\",fuchsia:\"#FF00FF\",magenta:\"#FF00FF\",mediumorchid:\"#BA55D3\",mediumpurple:\"#9370DB\",blueviolet:\"#8A2BE2\",darkviolet:\"#9400D3\",darkorchid:\"#9932CC\",darkmagenta:\"#8B008B\",purple:\"#800080\",indigo:\"#4B0082\",slateblue:\"#6A5ACD\",darkslateblue:\"#483D8B\",mediumslateblue:\"#7B68EE\",greenyellow:\"#ADFF2F\",chartreuse:\"#7FFF00\",lawngreen:\"#7CFC00\",lime:\"#00FF00\",limegreen:\"#32CD32\",palegreen:\"#98FB98\",lightgreen:\"#90EE90\",mediumspringgreen:\"#00FA9A\",springgreen:\"#00FF7F\",mediumseagreen:\"#3CB371\",seagreen:\"#2E8B57\",forestgreen:\"#228B22\",green:\"#008000\",darkgreen:\"#006400\",yellowgreen:\"#9ACD32\",olivedrab:\"#6B8E23\",olive:\"#808000\",darkolivegreen:\"#556B2F\",mediumaquamarine:\"#66CDAA\",darkseagreen:\"#8FBC8F\",lightseagreen:\"#20B2AA\",darkcyan:\"#008B8B\",teal:\"#008080\",aqua:\"#00FFFF\",cyan:\"#00FFFF\",lightcyan:\"#E0FFFF\",paleturquoise:\"#AFEEEE\",aquamarine:\"#7FFFD4\",turquoise:\"#40E0D0\",mediumturquoise:\"#48D1CC\",darkturquoise:\"#00CED1\",cadetblue:\"#5F9EA0\",steelblue:\"#4682B4\",lightsteelblue:\"#B0C4DE\",powderblue:\"#B0E0E6\",lightblue:\"#ADD8E6\",skyblue:\"#87CEEB\",lightskyblue:\"#87CEFA\",deepskyblue:\"#00BFFF\",dodgerblue:\"#1E90FF\",cornflowerblue:\"#6495ED\",royalblue:\"#4169E1\",blue:\"#0000FF\",mediumblue:\"#0000CD\",darkblue:\"#00008B\",navy:\"#000080\",midnightblue:\"#191970\",cornsilk:\"#FFF8DC\",blanchedalmond:\"#FFEBCD\",bisque:\"#FFE4C4\",navajowhite:\"#FFDEAD\",wheat:\"#F5DEB3\",burlywood:\"#DEB887\",tan:\"#D2B48C\",rosybrown:\"#BC8F8F\",sandybrown:\"#F4A460\",goldenrod:\"#DAA520\",darkgoldenrod:\"#B8860B\",peru:\"#CD853F\",chocolate:\"#D2691E\",saddlebrown:\"#8B4513\",sienna:\"#A0522D\",brown:\"#A52A2A\",maroon:\"#800000\",white:\"#FFFFFF\",snow:\"#FFFAFA\",honeydew:\"#F0FFF0\",mintcream:\"#F5FFFA\",azure:\"#F0FFFF\",aliceblue:\"#F0F8FF\",ghostwhite:\"#F8F8FF\",whitesmoke:\"#F5F5F5\",seashell:\"#FFF5EE\",beige:\"#F5F5DC\",oldlace:\"#FDF5E6\",floralwhite:\"#FFFAF0\",ivory:\"#FFFFF0\",antiquewhite:\"#FAEBD7\",linen:\"#FAF0E6\",lavenderblush:\"#FFF0F5\",mistyrose:\"#FFE4E1\",gainsboro:\"#DCDCDC\",lightgray:\"#D3D3D3\",lightgrey:\"#D3D3D3\",silver:\"#C0C0C0\",darkgray:\"#A9A9A9\",darkgrey:\"#A9A9A9\",gray:\"#808080\",grey:\"#808080\",dimgray:\"#696969\",dimgrey:\"#696969\",lightslategray:\"#778899\",lightslategrey:\"#778899\",slategray:\"#708090\",slategrey:\"#708090\",darkslategray:\"#2F4F4F\",darkslategrey:\"#2F4F4F\",black:\"#000000\"},r.is_svg_color=function(e){return e in r.svg_colors}},\n", + " function _(r,t,e){Object.defineProperty(e,\"__esModule\",{value:!0}),e.NumberArray=Float32Array,e.ColorArray=Uint32Array;const s=r(25);class a{constructor(r,t){this.offsets=r,this.array=t}[s.equals](r,t){return t.arrays(this.offsets,r.offsets)&&t.arrays(this.array,r.array)}get length(){return this.offsets.length}clone(){return new a(new Uint32Array(this.offsets),new e.NumberArray(this.array))}static from(r){const t=r.length,s=new Uint32Array(t);let n=0;for(let e=0;e{if(null!=t[r.equals]&&null!=e[r.equals])return t[r.equals](e,this);switch(s){case\"[object Array]\":case\"[object Uint8Array]\":case\"[object Int8Array]\":case\"[object Uint16Array]\":case\"[object Int16Array]\":case\"[object Uint32Array]\":case\"[object Int32Array]\":case\"[object Float32Array]\":case\"[object Float64Array]\":return this.arrays(t,e);case\"[object Map]\":return this.maps(t,e);case\"[object Set]\":return this.sets(t,e);case\"[object Object]\":if(t.constructor==e.constructor&&(null==t.constructor||t.constructor===Object))return this.objects(t,e);case\"[object Function]\":if(t.constructor==e.constructor&&t.constructor===Function)return this.eq(\"\"+t,\"\"+e)}if(t instanceof Node)return this.nodes(t,e);throw Error(\"can't compare objects of type \"+s)})();return o.pop(),c.pop(),i}numbers(t,e){return Object.is(t,e)}arrays(t,e){const{length:r}=t;if(r!=e.length)return!1;for(let n=0;n>>5,r=31&t;return!!(this._array[s]>>r&1)}set(t,s=!0){this._check_bounds(t),this._count=null;const r=t>>>5,e=31&t;s?this._array[r]|=1<>>t&1&&(e+=1)}return e}*ones(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1&&(yield e);else e+=32}}*zeros(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1||(yield e);else e+=32}}_check_size(t){e.assert(this.size==t.size,\"Size mismatch\")}add(t){this._check_size(t);for(let s=0;st(this.at(s,r),s,r))}apply(t){const s=a.from(t),{nrows:r,ncols:e}=this;if(r==s.nrows&&e==s.ncols)return new a(r,e,(t,r)=>s.at(t,r)(this.at(t,r),t,r));throw new Error(\"dimensions don't match\")}to_sparse(){return[...this]}static from(t,s){if(t instanceof a)return t;if(null!=s){const r=t,e=Math.floor(r.length/s);return new a(e,s,(t,e)=>r[t*s+e])}{const s=t,r=t.length,e=i.min(s.map(t=>t.length));return new a(r,e,(t,r)=>s[t][r])}}}r.Matrix=a,a.__name__=\"Matrix\"},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});class n{constructor(){this._dev=!1}set dev(e){this._dev=e}get dev(){return this._dev}}s.Settings=n,n.__name__=\"Settings\",s.settings=new n},\n", + " function _(e,l,t){Object.defineProperty(t,\"__esModule\",{value:!0});const a=e(1).__importStar(e(18));t.Line={line_color:[a.Color,\"black\"],line_alpha:[a.Number,1],line_width:[a.Number,1],line_join:[a.LineJoin,\"bevel\"],line_cap:[a.LineCap,\"butt\"],line_dash:[a.Array,[]],line_dash_offset:[a.Number,0]},t.Fill={fill_color:[a.Color,\"gray\"],fill_alpha:[a.Number,1]},t.Hatch={hatch_color:[a.Color,\"black\"],hatch_alpha:[a.Number,1],hatch_scale:[a.Number,12],hatch_pattern:[a.NullString,null],hatch_weight:[a.Number,1],hatch_extra:[a.Any,{}]},t.Text={text_color:[a.Color,\"#444444\"],text_alpha:[a.Number,1],text_font:[a.Font,\"helvetica\"],text_font_size:[a.FontSize,\"16px\"],text_font_style:[a.FontStyle,\"normal\"],text_align:[a.TextAlign,\"left\"],text_baseline:[a.TextBaseline,\"bottom\"],text_line_height:[a.Number,1.2]},t.LineScalar={line_color:[a.ColorScalar,\"black\"],line_alpha:[a.NumberScalar,1],line_width:[a.NumberScalar,1],line_join:[a.LineJoinScalar,\"bevel\"],line_cap:[a.LineCapScalar,\"butt\"],line_dash:[a.ArrayScalar,[]],line_dash_offset:[a.NumberScalar,0]},t.FillScalar={fill_color:[a.ColorScalar,\"gray\"],fill_alpha:[a.NumberScalar,1]},t.HatchScalar={hatch_color:[a.ColorScalar,\"black\"],hatch_alpha:[a.NumberScalar,1],hatch_scale:[a.NumberScalar,12],hatch_pattern:[a.NullStringScalar,null],hatch_weight:[a.NumberScalar,1],hatch_extra:[a.AnyScalar,{}]},t.TextScalar={text_color:[a.ColorScalar,\"#444444\"],text_alpha:[a.NumberScalar,1],text_font:[a.Font,\"helvetica\"],text_font_size:[a.FontSizeScalar,\"16px\"],text_font_style:[a.FontStyleScalar,\"normal\"],text_align:[a.TextAlignScalar,\"left\"],text_baseline:[a.TextBaselineScalar,\"bottom\"],text_line_height:[a.NumberScalar,1.2]},t.LineVector={line_color:[a.ColorSpec,\"black\"],line_alpha:[a.NumberSpec,1],line_width:[a.NumberSpec,1],line_join:[a.LineJoin,\"bevel\"],line_cap:[a.LineCap,\"butt\"],line_dash:[a.Array,[]],line_dash_offset:[a.Number,0]},t.FillVector={fill_color:[a.ColorSpec,\"gray\"],fill_alpha:[a.NumberSpec,1]},t.HatchVector={hatch_color:[a.ColorSpec,\"black\"],hatch_alpha:[a.NumberSpec,1],hatch_scale:[a.NumberSpec,12],hatch_pattern:[a.NullStringSpec,null],hatch_weight:[a.NumberSpec,1],hatch_extra:[a.Any,{}]},t.TextVector={text_color:[a.ColorSpec,\"#444444\"],text_alpha:[a.NumberSpec,1],text_font:[a.Font,\"helvetica\"],text_font_size:[a.FontSizeSpec,\"16px\"],text_font_style:[a.FontStyle,\"normal\"],text_align:[a.TextAlign,\"left\"],text_baseline:[a.TextBaseline,\"bottom\"],text_line_height:[a.Number,1.2]}},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const n=t(27);function u(){const t=new Array(32);for(let e=0;e<32;e++)t[e]=\"0123456789ABCDEF\".substr(Math.floor(16*Math.random()),1);return t[12]=\"4\",t[16]=\"0123456789ABCDEF\".substr(3&t[16].charCodeAt(0)|8,1),t.join(\"\")}r.startsWith=function(t,e,r=0){return t.substr(r,e.length)==e},r.uuid4=u;let s=1e3;r.uniqueId=function(t){const e=n.settings.dev?\"j\"+s++:u();return null!=t?`${t}-${e}`:e},r.escape=function(t){return t.replace(/(?:[&<>\"'`])/g,t=>{switch(t){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";case\"'\":return\"'\";case\"`\":return\"`\";default:return t}})},r.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,(t,e)=>{switch(e){case\"amp\":return\"&\";case\"lt\":return\"<\";case\"gt\":return\">\";case\"quot\":return'\"';case\"#x27\":return\"'\";case\"#x60\":return\"`\";default:return e}})},r.use_strict=function(t){return\"'use strict';\\n\"+t}},\n", + " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=t(8),a=t(11),n=t(25),i=Symbol(\"__ndarray__\");class h extends Uint8Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"uint8\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Uint8NDArray=h,h.__name__=\"Uint8NDArray\";class _ extends Int8Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"int8\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Int8NDArray=_,_.__name__=\"Int8NDArray\";class u extends Uint16Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"uint16\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Uint16NDArray=u,u.__name__=\"Uint16NDArray\";class l extends Int16Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"int16\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Int16NDArray=l,l.__name__=\"Int16NDArray\";class y extends Uint32Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"uint32\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Uint32NDArray=y,y.__name__=\"Uint32NDArray\";class c extends Int32Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"int32\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Int32NDArray=c,c.__name__=\"Int32NDArray\";class p extends Float32Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"float32\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Float32NDArray=p,p.__name__=\"Float32NDArray\";class o extends Float64Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"float64\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}function d(t){return r.isObject(t)&&t.__ndarray__==i}e.Float64NDArray=o,o.__name__=\"Float64NDArray\",e.is_NDArray=d,e.ndarray=function(t,s={}){let{dtype:e}=s;null==e&&(e=t instanceof ArrayBuffer||r.isArray(t)?\"float32\":(()=>{switch(!0){case t instanceof Uint8Array:return\"uint8\";case t instanceof Int8Array:return\"int8\";case t instanceof Uint16Array:return\"uint16\";case t instanceof Int16Array:return\"int16\";case t instanceof Uint32Array:return\"uint32\";case t instanceof Int32Array:return\"int32\";case t instanceof Float32Array:return\"float32\";case t instanceof Float64Array:return\"float64\";default:a.unreachable()}})());const{shape:n}=s;switch(e){case\"uint8\":return new h(t,n);case\"int8\":return new _(t,n);case\"uint16\":return new u(t,n);case\"int16\":return new l(t,n);case\"uint32\":return new y(t,n);case\"int32\":return new c(t,n);case\"float32\":return new p(t,n);case\"float64\":return new o(t,n)}}},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),a=e(8),f=e(32),_=n.__importStar(e(30));function o(e){const r=new Uint8Array(e),t=Array.from(r).map(e=>String.fromCharCode(e));return btoa(t.join(\"\"))}function s(e){const r=atob(e),t=r.length,n=new Uint8Array(t);for(let e=0,a=t;e{switch(a){case\"uint8\":return new _.Uint8NDArray(o,n);case\"int8\":return new _.Int8NDArray(o,n);case\"uint16\":return new _.Uint16NDArray(o,n);case\"int16\":return new _.Int16NDArray(o,n);case\"uint32\":return new _.Uint32NDArray(o,n);case\"int32\":return new _.Int32NDArray(o,n);case\"float32\":return new _.Float32NDArray(o,n);case\"float64\":return new _.Float64NDArray(o,n)}})();if(f!==t.BYTE_ORDER)switch(l.BYTES_PER_ELEMENT){case 2:i(l);break;case 4:u(l);break;case 8:c(l)}return l},t.encode_NDArray=function(e,r){const n={order:t.BYTE_ORDER,dtype:e.dtype,shape:e.shape};if(null!=r){const t=\"\"+r.size;return r.set(t,e.buffer),Object.assign({__buffer__:t},n)}{const r=o(e.buffer);return Object.assign({__ndarray__:r},n)}}},\n", + " function _(e,n,i){Object.defineProperty(i,\"__esModule\",{value:!0}),i.is_ie=(()=>{const e=\"undefined\"!=typeof navigator?navigator.userAgent:\"\";return e.indexOf(\"MSIE\")>=0||e.indexOf(\"Trident\")>0||e.indexOf(\"Edge\")>0})(),i.is_mobile=\"undefined\"!=typeof window&&(\"ontouchstart\"in window||navigator.maxTouchPoints>0),i.is_little_endian=(()=>{const e=new ArrayBuffer(4),n=new Uint8Array(e);new Uint32Array(e)[1]=168496141;let i=!0;return 10==n[4]&&11==n[5]&&12==n[6]&&13==n[7]&&(i=!1),i})()},\n", + " function _(t,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=t(8),i=t(13);n.pretty=Symbol(\"pretty\");class o{constructor(t){this.precision=null==t?void 0:t.precision}to_string(t){return function(t){return n.pretty in Object(t)}(t)?t[n.pretty](this):e.isBoolean(t)?this.boolean(t):e.isNumber(t)?this.number(t):e.isString(t)?this.string(t):e.isArray(t)?this.array(t):e.isIterable(t)?this.iterable(t):e.isPlainObject(t)?this.object(t):\"\"+t}token(t){return t}boolean(t){return\"\"+t}number(t){return null!=this.precision?t.toFixed(this.precision):\"\"+t}string(t){return`\"${t.replace(/'/g,\"\\\\'\")}\"`}array(t){const r=this.token,n=[];for(const r of t)n.push(this.to_string(r));return`${r(\"[\")}${n.join(r(\",\")+\" \")}${r(\"]\")}`}iterable(t){var r;const n=this.token,e=null!==(r=Object(t)[Symbol.toStringTag])&&void 0!==r?r:\"Object\",i=this.array(t);return`${e}${n(\"(\")}${i}${n(\")\")}`}object(t){const r=this.token,n=[];for(const[e,o]of i.entries(t))n.push(`${e}${r(\":\")} ${this.to_string(o)}`);return`${r(\"{\")}${n.join(r(\",\")+\" \")}${r(\"}\")}`}}n.Printer=o,o.__name__=\"Printer\",n.to_string=function(t,r){return new o(r).to_string(t)}},\n", + " function _(t,_,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=t(1);e.__exportStar(t(35),r),e.__exportStar(t(176),r),e.__exportStar(t(203),r),e.__exportStar(t(207),r),e.__exportStar(t(218),r),e.__exportStar(t(222),r),e.__exportStar(t(228),r),e.__exportStar(t(232),r),e.__exportStar(t(265),r),e.__exportStar(t(268),r),e.__exportStar(t(270),r),e.__exportStar(t(132),r),e.__exportStar(t(148),r),e.__exportStar(t(287),r),e.__exportStar(t(291),r),e.__exportStar(t(320),r),e.__exportStar(t(321),r),e.__exportStar(t(322),r),e.__exportStar(t(323),r),e.__exportStar(t(324),r),e.__exportStar(t(329),r),e.__exportStar(t(331),r),e.__exportStar(t(342),r),e.__exportStar(t(346),r)},\n", + " function _(a,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});var r=a(36);o.Annotation=r.Annotation;var n=a(83);o.Arrow=n.Arrow;var t=a(84);o.ArrowHead=t.ArrowHead;var v=a(84);o.OpenHead=v.OpenHead;var l=a(84);o.NormalHead=l.NormalHead;var d=a(84);o.TeeHead=d.TeeHead;var i=a(84);o.VeeHead=i.VeeHead;var A=a(122);o.Band=A.Band;var H=a(124);o.BoxAnnotation=H.BoxAnnotation;var T=a(125);o.ColorBar=T.ColorBar;var p=a(160);o.Label=p.Label;var L=a(162);o.LabelSet=L.LabelSet;var b=a(163);o.Legend=b.Legend;var B=a(164);o.LegendItem=B.LegendItem;var S=a(166);o.PolyAnnotation=S.PolyAnnotation;var P=a(167);o.Slope=P.Slope;var g=a(168);o.Span=g.Span;var m=a(161);o.TextAnnotation=m.TextAnnotation;var w=a(169);o.Title=w.Title;var x=a(170);o.ToolbarPanel=x.ToolbarPanel;var s=a(171);o.Tooltip=s.Tooltip;var u=a(175);o.Whisker=u.Whisker},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=t(1).__importStar(t(37)),i=t(13),o=t(70);class _ extends o.RendererView{get panel(){return this.layout}connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.visible,()=>this.plot_view.request_layout())}get_size(){if(this.model.visible){const{width:t,height:e}=this._get_size();return{width:Math.round(t),height:Math.round(e)}}return{width:0,height:0}}_get_size(){throw new Error(\"not implemented\")}set_data(t){const e=this.model.materialize_dataspecs(t);if(i.extend(this,e),this.plot_model.use_map){const t=this;null!=t._x&&([t._x,t._y]=s.project_xy(t._x,t._y)),null!=t._xs&&([t._xs,t._ys]=s.project_xsys(t._xs,t._ys))}}get needs_clip(){return null==this.layout}serializable_state(){const t=super.serializable_state();return null==this.layout?t:Object.assign(Object.assign({},t),{bbox:this.layout.bbox.box})}}n.AnnotationView=_,_.__name__=\"AnnotationView\";class a extends o.Renderer{constructor(t){super(t)}static init_Annotation(){this.override({level:\"annotation\"})}}n.Annotation=a,a.__name__=\"Annotation\",a.init_Annotation()},\n", + " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=n(1),o=r.__importDefault(n(38)),l=r.__importDefault(n(39)),c=n(24),i=new l.default(\"GOOGLE\"),u=new l.default(\"WGS84\"),a=o.default(u,i);e.wgs84_mercator={compute:(n,t)=>isFinite(n)&&isFinite(t)?a.forward([n,t]):[NaN,NaN],invert:(n,t)=>isFinite(n)&&isFinite(t)?a.inverse([n,t]):[NaN,NaN]};const s={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},f={lon:[-180,180],lat:[-85.06,85.06]},{min:_,max:p}=Math;function m(n,t){const r=_(n.length,t.length),o=new c.NumberArray(r),l=new c.NumberArray(r);return e.inplace.project_xy(n,t,o,l),[o,l]}e.clip_mercator=function(n,t,e){const[r,o]=s[e];return[p(n,r),_(t,o)]},e.in_bounds=function(n,t){const[e,r]=f[t];return e2?void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name?\"number\"==typeof r.z?[r.x,r.y,r.z].concat(t.splice(3)):[r.x,r.y,t[2]].concat(t.splice(3)):[r.x,r.y].concat(t.splice(2)):[r.x,r.y]):(o=a.default(e,n,t),2===(i=Object.keys(t)).length||i.forEach((function(r){if(void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name){if(\"x\"===r||\"y\"===r||\"z\"===r)return}else if(\"x\"===r||\"y\"===r)return;o[r]=t[r]})),o)}function u(e){return e instanceof o.default?e:e.oProj?e.oProj:o.default(e)}t.default=function(e,n,t){e=u(e);var r,o=!1;return void 0===n?(n=e,e=i,o=!0):(void 0!==n.x||Array.isArray(n))&&(t=n,n=e,e=i,o=!0),n=u(n),t?c(e,n,t):(r={forward:function(t){return c(e,n,t)},inverse:function(t){return c(n,e,t)}},o&&(r.oProj=n),r)}},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const s=e(1),i=s.__importDefault(e(40)),u=s.__importDefault(e(51)),l=s.__importDefault(e(52)),o=e(60),r=s.__importDefault(e(62)),f=s.__importDefault(e(63)),d=s.__importDefault(e(47));function p(e,t){if(!(this instanceof p))return new p(e);t=t||function(e){if(e)throw e};var a=i.default(e);if(\"object\"==typeof a){var s=p.projections.get(a.projName);if(s){if(a.datumCode&&\"none\"!==a.datumCode){var l=d.default(r.default,a.datumCode);l&&(a.datum_params=l.towgs84?l.towgs84.split(\",\"):null,a.ellps=l.ellipse,a.datumName=l.datumName?l.datumName:a.datumCode)}a.k0=a.k0||1,a.axis=a.axis||\"enu\",a.ellps=a.ellps||\"wgs84\";var m=o.sphere(a.a,a.b,a.rf,a.ellps,a.sphere),n=o.eccentricity(m.a,m.b,m.rf,a.R_A),h=a.datum||f.default(a.datumCode,a.datum_params,m.a,m.b,n.es,n.ep2);u.default(this,a),u.default(this,s),this.a=m.a,this.b=m.b,this.rf=m.rf,this.sphere=m.sphere,this.es=n.es,this.e=n.e,this.ep2=n.ep2,this.datum=h,this.init(),t(null,this)}else t(e)}else t(e)}p.projections=l.default,p.projections.start(),a.default=p},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const u=t(1),n=u.__importDefault(t(41)),f=u.__importDefault(t(48)),i=u.__importDefault(t(43)),a=u.__importDefault(t(47));var o=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];var l=[\"3857\",\"900913\",\"3785\",\"102113\"];r.default=function(t){if(!function(t){return\"string\"==typeof t}(t))return t;if(function(t){return t in n.default}(t))return n.default[t];if(function(t){return o.some((function(e){return t.indexOf(e)>-1}))}(t)){var e=f.default(t);if(function(t){var e=a.default(t,\"authority\");if(e){var r=a.default(e,\"epsg\");return r&&l.indexOf(r)>-1}}(e))return n.default[\"EPSG:3857\"];var r=function(t){var e=a.default(t,\"extension\");if(e)return a.default(e,\"proj4\")}(e);return r?i.default(r):e}return function(t){return\"+\"===t[0]}(t)?i.default(t):void 0}},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=t(1),n=i.__importDefault(t(42)),f=i.__importDefault(t(43)),a=i.__importDefault(t(48));function l(t){var e=this;if(2===arguments.length){var r=arguments[1];\"string\"==typeof r?\"+\"===r.charAt(0)?l[t]=f.default(arguments[1]):l[t]=a.default(arguments[1]):l[t]=r}else if(1===arguments.length){if(Array.isArray(t))return t.map((function(t){Array.isArray(t)?l.apply(e,t):l(t)}));if(\"string\"==typeof t){if(t in l)return l[t]}else\"EPSG\"in t?l[\"EPSG:\"+t.EPSG]=t:\"ESRI\"in t?l[\"ESRI:\"+t.ESRI]=t:\"IAU2000\"in t?l[\"IAU2000:\"+t.IAU2000]=t:console.log(t);return}}n.default(l),r.default=l},\n", + " function _(e,t,l){Object.defineProperty(l,\"__esModule\",{value:!0}),l.default=function(e){e(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),e(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),e(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),e.WGS84=e[\"EPSG:4326\"],e[\"EPSG:3785\"]=e[\"EPSG:3857\"],e.GOOGLE=e[\"EPSG:3857\"],e[\"EPSG:900913\"]=e[\"EPSG:3857\"],e[\"EPSG:102113\"]=e[\"EPSG:3857\"]}},\n", + " function _(t,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});const e=t(1),a=t(44),u=e.__importDefault(t(45)),r=e.__importDefault(t(46)),i=e.__importDefault(t(47));o.default=function(t){var n,o,e,f={},l=t.split(\"+\").map((function(t){return t.trim()})).filter((function(t){return t})).reduce((function(t,n){var o=n.split(\"=\");return o.push(!0),t[o[0].toLowerCase()]=o[1],t}),{}),c={proj:\"projName\",datum:\"datumCode\",rf:function(t){f.rf=parseFloat(t)},lat_0:function(t){f.lat0=t*a.D2R},lat_1:function(t){f.lat1=t*a.D2R},lat_2:function(t){f.lat2=t*a.D2R},lat_ts:function(t){f.lat_ts=t*a.D2R},lon_0:function(t){f.long0=t*a.D2R},lon_1:function(t){f.long1=t*a.D2R},lon_2:function(t){f.long2=t*a.D2R},alpha:function(t){f.alpha=parseFloat(t)*a.D2R},lonc:function(t){f.longc=t*a.D2R},x_0:function(t){f.x0=parseFloat(t)},y_0:function(t){f.y0=parseFloat(t)},k_0:function(t){f.k0=parseFloat(t)},k:function(t){f.k0=parseFloat(t)},a:function(t){f.a=parseFloat(t)},b:function(t){f.b=parseFloat(t)},r_a:function(){f.R_A=!0},zone:function(t){f.zone=parseInt(t,10)},south:function(){f.utmSouth=!0},towgs84:function(t){f.datum_params=t.split(\",\").map((function(t){return parseFloat(t)}))},to_meter:function(t){f.to_meter=parseFloat(t)},units:function(t){f.units=t;var n=i.default(r.default,t);n&&(f.to_meter=n.to_meter)},from_greenwich:function(t){f.from_greenwich=t*a.D2R},pm:function(t){var n=i.default(u.default,t);f.from_greenwich=(n||parseFloat(t))*a.D2R},nadgrids:function(t){\"@null\"===t?f.datumCode=\"none\":f.nadgrids=t},axis:function(t){3===t.length&&-1!==\"ewnsud\".indexOf(t.substr(0,1))&&-1!==\"ewnsud\".indexOf(t.substr(1,1))&&-1!==\"ewnsud\".indexOf(t.substr(2,1))&&(f.axis=t)}};for(n in l)o=l[n],n in c?\"function\"==typeof(e=c[n])?e(o):f[e]=o:f[n]=o;return\"string\"==typeof f.datumCode&&\"WGS84\"!==f.datumCode&&(f.datumCode=f.datumCode.toLowerCase()),f}},\n", + " function _(P,_,e){Object.defineProperty(e,\"__esModule\",{value:!0}),e.PJD_3PARAM=1,e.PJD_7PARAM=2,e.PJD_WGS84=4,e.PJD_NODATUM=5,e.SEC_TO_RAD=484813681109536e-20,e.HALF_PI=Math.PI/2,e.SIXTH=.16666666666666666,e.RA4=.04722222222222222,e.RA6=.022156084656084655,e.EPSLN=1e-10,e.D2R=.017453292519943295,e.R2D=57.29577951308232,e.FORTPI=Math.PI/4,e.TWO_PI=2*Math.PI,e.SPI=3.14159265359},\n", + " function _(e,o,r){Object.defineProperty(r,\"__esModule\",{value:!0});var a={};r.default=a,a.greenwich=0,a.lisbon=-9.131906111111,a.paris=2.337229166667,a.bogota=-74.080916666667,a.madrid=-3.687938888889,a.rome=12.452333333333,a.bern=7.439583333333,a.jakarta=106.807719444444,a.ferro=-17.666666666667,a.brussels=4.367975,a.stockholm=18.058277777778,a.athens=23.7163375,a.oslo=10.722916666667},\n", + " function _(e,t,f){Object.defineProperty(f,\"__esModule\",{value:!0}),f.default={ft:{to_meter:.3048},\"us-ft\":{to_meter:1200/3937}}},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});var o=/[\\s_\\-\\/\\(\\)]/g;t.default=function(e,r){if(e[r])return e[r];for(var t,a=Object.keys(e),n=r.toLowerCase().replace(o,\"\"),f=-1;++f0?90:-90),e.lat_ts=e.lat1)}(l),l}},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=function(t){return new a(t).output()};var i=/\\s/,s=/[A-Za-z]/,h=/[A-Za-z84]/,o=/[,\\]]/,n=/[\\d\\.E\\-\\+]/;function a(t){if(\"string\"!=typeof t)throw new Error(\"not a string\");this.text=t.trim(),this.level=0,this.place=0,this.root=null,this.stack=[],this.currentObject=null,this.state=1}a.prototype.readCharicter=function(){var t=this.text[this.place++];if(4!==this.state)for(;i.test(t);){if(this.place>=this.text.length)return;t=this.text[this.place++]}switch(this.state){case 1:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},a.prototype.afterquote=function(t){if('\"'===t)return this.word+='\"',void(this.state=4);if(o.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in afterquote yet, index '+this.place)},a.prototype.afterItem=function(t){return\",\"===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=1)):\"]\"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=1,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},a.prototype.number=function(t){if(!n.test(t)){if(o.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in number yet, index '+this.place)}this.word+=t},a.prototype.quoted=function(t){'\"'!==t?this.word+=t:this.state=5},a.prototype.keyword=function(t){if(h.test(t))this.word+=t;else{if(\"[\"===t){var e=[];return e.push(this.word),this.level++,null===this.root?this.root=e:this.currentObject.push(e),this.stack.push(this.currentObject),this.currentObject=e,void(this.state=1)}if(!o.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in keyword yet, index '+this.place);this.afterItem(t)}},a.prototype.neutral=function(t){if(s.test(t))return this.word=t,void(this.state=2);if('\"'===t)return this.word=\"\",void(this.state=4);if(n.test(t))return this.word=t,void(this.state=3);if(!o.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in neutral yet, index '+this.place);this.afterItem(t)},a.prototype.output=function(){for(;this.place90&&a*l.R2D<-90&&h*l.R2D>180&&h*l.R2D<-180)return null;if(Math.abs(Math.abs(a)-l.HALF_PI)<=l.EPSLN)return null;if(this.sphere)i=this.x0+this.a*this.k0*e.default(h-this.long0),s=this.y0+this.a*this.k0*Math.log(Math.tan(l.FORTPI+.5*a));else{var n=Math.sin(a),u=r.default(this.e,a,n);i=this.x0+this.a*this.k0*e.default(h-this.long0),s=this.y0-this.a*this.k0*Math.log(u)}return t.x=i,t.y=s,t}function f(t){var i,s,h=t.x-this.x0,a=t.y-this.y0;if(this.sphere)s=l.HALF_PI-2*Math.atan(Math.exp(-a/(this.a*this.k0)));else{var r=Math.exp(-a/(this.a*this.k0));if(-9999===(s=n.default(this.e,r)))return null}return i=e.default(this.long0+h/(this.a*this.k0)),t.x=i,t.y=s,t}s.init=u,s.forward=o,s.inverse=f,s.names=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"],s.default={init:u,forward:o,inverse:f,names:s.names}},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0}),n.default=function(e,t,n){var r=e*t;return n/Math.sqrt(1-r*r)}},\n", + " function _(e,t,u){Object.defineProperty(u,\"__esModule\",{value:!0});const n=e(1),a=e(44),f=n.__importDefault(e(56));u.default=function(e){return Math.abs(e)<=a.SPI?e:e-f.default(e)*a.TWO_PI}},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return e<0?-1:1}},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const a=t(44);n.default=function(t,e,n){var o=t*n,u=.5*t;return o=Math.pow((1-o)/(1+o),u),Math.tan(.5*(a.HALF_PI-e))/o}},\n", + " function _(t,a,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(44);e.default=function(t,a){for(var e,r,o=.5*t,u=n.HALF_PI-2*Math.atan(a),f=0;f<=15;f++)if(e=t*Math.sin(u),u+=r=n.HALF_PI-2*Math.atan(a*Math.pow((1-e)/(1+e),o))-u,Math.abs(r)<=1e-10)return u;return-9999}},\n", + " function _(e,n,i){function t(){}function r(e){return e}Object.defineProperty(i,\"__esModule\",{value:!0}),i.init=t,i.forward=r,i.inverse=r,i.names=[\"longlat\",\"identity\"],i.default={init:t,forward:r,inverse:r,names:i.names}},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const a=e(1),n=e(44),f=a.__importStar(e(61)),u=a.__importDefault(e(47));r.eccentricity=function(e,t,r,a){var f=e*e,u=t*t,i=(f-u)/f,c=0;return a?(f=(e*=1-i*(n.SIXTH+i*(n.RA4+i*n.RA6)))*e,i=0):c=Math.sqrt(i),{es:i,e:c,ep2:(f-u)/u}},r.sphere=function(e,t,r,a,i){if(!e){var c=u.default(f.default,a);c||(c=f.WGS84),e=c.a,t=c.b,r=c.rf}return r&&!t&&(t=(1-1/r)*e),(0===r||Math.abs(e-t)3&&(0===r.datum_params[3]&&0===r.datum_params[4]&&0===r.datum_params[5]&&0===r.datum_params[6]||(r.datum_type=t.PJD_7PARAM,r.datum_params[3]*=t.SEC_TO_RAD,r.datum_params[4]*=t.SEC_TO_RAD,r.datum_params[5]*=t.SEC_TO_RAD,r.datum_params[6]=r.datum_params[6]/1e6+1))),r.a=_,r.b=u,r.es=d,r.ep2=p,r}},\n", + " function _(t,e,a){Object.defineProperty(a,\"__esModule\",{value:!0});const r=t(1),u=t(44),m=r.__importDefault(t(65)),_=r.__importDefault(t(67)),o=r.__importDefault(t(39)),d=r.__importDefault(t(68)),f=r.__importDefault(t(69));a.default=function t(e,a,r){var n;if(Array.isArray(r)&&(r=d.default(r)),f.default(r),e.datum&&a.datum&&function(t,e){return(t.datum.datum_type===u.PJD_3PARAM||t.datum.datum_type===u.PJD_7PARAM)&&\"WGS84\"!==e.datumCode||(e.datum.datum_type===u.PJD_3PARAM||e.datum.datum_type===u.PJD_7PARAM)&&\"WGS84\"!==t.datumCode}(e,a)&&(r=t(e,n=new o.default(\"WGS84\"),r),e=n),\"enu\"!==e.axis&&(r=_.default(e,!1,r)),\"longlat\"===e.projName)r={x:r.x*u.D2R,y:r.y*u.D2R,z:r.z||0};else if(e.to_meter&&(r={x:r.x*e.to_meter,y:r.y*e.to_meter,z:r.z||0}),!(r=e.inverse(r)))return;return e.from_greenwich&&(r.x+=e.from_greenwich),r=m.default(e.datum,a.datum,r),a.from_greenwich&&(r={x:r.x-a.from_greenwich,y:r.y,z:r.z||0}),\"longlat\"===a.projName?r={x:r.x*u.R2D,y:r.y*u.R2D,z:r.z||0}:(r=a.forward(r),a.to_meter&&(r={x:r.x/a.to_meter,y:r.y/a.to_meter,z:r.z||0})),\"enu\"!==a.axis?_.default(a,!0,r):r}},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const u=e(44),o=e(66);function _(e){return e===u.PJD_3PARAM||e===u.PJD_7PARAM}a.default=function(e,t,a){return o.compareDatums(e,t)||e.datum_type===u.PJD_NODATUM||t.datum_type===u.PJD_NODATUM?a:e.es!==t.es||e.a!==t.a||_(e.datum_type)||_(t.datum_type)?(a=o.geodeticToGeocentric(a,e.es,e.a),_(e.datum_type)&&(a=o.geocentricToWgs84(a,e.datum_type,e.datum_params)),_(t.datum_type)&&(a=o.geocentricFromWgs84(a,t.datum_type,t.datum_params)),o.geocentricToGeodetic(a,t.es,t.a,t.b)):a}},\n", + " function _(a,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=a(44);r.compareDatums=function(a,t){return a.datum_type===t.datum_type&&(!(a.a!==t.a||Math.abs(a.es-t.es)>5e-11)&&(a.datum_type===e.PJD_3PARAM?a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]:a.datum_type!==e.PJD_7PARAM||a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]&&a.datum_params[3]===t.datum_params[3]&&a.datum_params[4]===t.datum_params[4]&&a.datum_params[5]===t.datum_params[5]&&a.datum_params[6]===t.datum_params[6]))},r.geodeticToGeocentric=function(a,t,r){var m,u,s,_,n=a.x,d=a.y,i=a.z?a.z:0;if(d<-e.HALF_PI&&d>-1.001*e.HALF_PI)d=-e.HALF_PI;else if(d>e.HALF_PI&&d<1.001*e.HALF_PI)d=e.HALF_PI;else{if(d<-e.HALF_PI)return{x:-1/0,y:-1/0,z:a.z};if(d>e.HALF_PI)return{x:1/0,y:1/0,z:a.z}}return n>Math.PI&&(n-=2*Math.PI),u=Math.sin(d),_=Math.cos(d),s=u*u,{x:((m=r/Math.sqrt(1-t*s))+i)*_*Math.cos(n),y:(m+i)*_*Math.sin(n),z:(m*(1-t)+i)*u}},r.geocentricToGeodetic=function(a,t,r,m){var u,s,_,n,d,i,p,P,o,y,M,z,c,A,x,f=a.x,h=a.y,I=a.z?a.z:0;if(u=Math.sqrt(f*f+h*h),s=Math.sqrt(f*f+h*h+I*I),u/r<1e-12){if(A=0,s/r<1e-12)return e.HALF_PI,x=-m,{x:a.x,y:a.y,z:a.z}}else A=Math.atan2(h,f);_=I/s,P=(n=u/s)*(1-t)*(d=1/Math.sqrt(1-t*(2-t)*n*n)),o=_*d,c=0;do{c++,i=t*(p=r/Math.sqrt(1-t*o*o))/(p+(x=u*P+I*o-p*(1-t*o*o))),z=(M=_*(d=1/Math.sqrt(1-i*(2-i)*n*n)))*P-(y=n*(1-i)*d)*o,P=y,o=M}while(z*z>1e-24&&c<30);return{x:A,y:Math.atan(M/Math.abs(y)),z:x}},r.geocentricToWgs84=function(a,t,r){if(t===e.PJD_3PARAM)return{x:a.x+r[0],y:a.y+r[1],z:a.z+r[2]};if(t===e.PJD_7PARAM){var m=r[0],u=r[1],s=r[2],_=r[3],n=r[4],d=r[5],i=r[6];return{x:i*(a.x-d*a.y+n*a.z)+m,y:i*(d*a.x+a.y-_*a.z)+u,z:i*(-n*a.x+_*a.y+a.z)+s}}},r.geocentricFromWgs84=function(a,t,r){if(t===e.PJD_3PARAM)return{x:a.x-r[0],y:a.y-r[1],z:a.z-r[2]};if(t===e.PJD_7PARAM){var m=r[0],u=r[1],s=r[2],_=r[3],n=r[4],d=r[5],i=r[6],p=(a.x-m)/i,P=(a.y-u)/i,o=(a.z-s)/i;return{x:p+d*P-n*o,y:-d*p+P+_*o,z:n*p-_*P+o}}}},\n", + " function _(e,a,i){Object.defineProperty(i,\"__esModule\",{value:!0}),i.default=function(e,a,i){var s,n,r,c=i.x,d=i.y,u=i.z||0,f={};for(r=0;r<3;r++)if(!a||2!==r||void 0!==i.z)switch(0===r?(s=c,n=-1!==\"ew\".indexOf(e.axis[r])?\"x\":\"y\"):1===r?(s=d,n=-1!==\"ns\".indexOf(e.axis[r])?\"y\":\"x\"):(s=u,n=\"z\"),e.axis[r]){case\"e\":case\"w\":case\"n\":case\"s\":f[n]=s;break;case\"u\":void 0!==i[n]&&(f.z=s);break;case\"d\":void 0!==i[n]&&(f.z=-s);break;default:return null}return f}},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var n={x:e[0],y:e[1]};return e.length>2&&(n.z=e[2]),e.length>3&&(n.m=e[3]),n}},\n", + " function _(e,i,n){function t(e){if(\"function\"==typeof Number.isFinite){if(Number.isFinite(e))return;throw new TypeError(\"coordinates must be finite numbers\")}if(\"number\"!=typeof e||e!=e||!isFinite(e))throw new TypeError(\"coordinates must be finite numbers\")}Object.defineProperty(n,\"__esModule\",{value:!0}),n.default=function(e){t(e.x),t(e.y)}},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),r=e(71),s=n.__importStar(e(74)),_=n.__importStar(e(18)),a=e(81),o=e(82);class l extends r.View{get coordinates(){return this._coordinates}initialize(){super.initialize(),this.visuals=new s.Visuals(this.model),this.needs_webgl_blit=!1,this._initialize_coordinates()}connect_signals(){super.connect_signals();const{x_range_name:e,y_range_name:i}=this.model.properties;this.on_change([e,i],()=>this._initialize_coordinates())}_initialize_coordinates(){const{x_range_name:e,y_range_name:i}=this.model,{frame:t}=this.plot_view,n=t.x_scales.get(e),r=t.y_scales.get(i);this._coordinates=new o.CoordinateTransform(n,r)}get plot_view(){return this.parent}get plot_model(){return this.parent.model}get layer(){const{overlays:e,primary:i}=this.plot_view.canvas_view;return\"overlay\"==this.model.level?e:i}request_render(){this.plot_view.request_render()}notify_finished(){this.plot_view.notify_finished()}get needs_clip(){return!1}get has_webgl(){return!1}render(){this.model.visible&&this._render(),this._has_finished=!0}}t.RendererView=l,l.__name__=\"RendererView\";class d extends a.Model{constructor(e){super(e)}static init_Renderer(){this.define({level:[_.RenderLevel],visible:[_.Boolean,!0],x_range_name:[_.String,\"default\"],y_range_name:[_.String,\"default\"]})}}t.Renderer=d,d.__name__=\"Renderer\",d.init_Renderer()},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),r=t(15),n=t(72),o=t(8),h=i.__importDefault(t(73));class a{constructor(t){if(this.removed=new r.Signal0(this,\"removed\"),this._ready=Promise.resolve(void 0),null==t.model)throw new Error(\"model of a view wasn't configured\");this.model=t.model,this._parent=t.parent}get ready(){return this._ready}connect(t,e){return t.connect((t,s)=>{const i=Promise.resolve(e.call(this,t,s));this._ready=this._ready.then(()=>i)},this)}disconnect(t,e){return t.disconnect(e,this)}initialize(){this._has_finished=!1,this.is_root&&(this._stylesheet=n.stylesheet);for(const t of this.styles())this.stylesheet.append(t)}async lazy_initialize(){}remove(){this._parent=void 0,this.disconnect_signals(),this.removed.emit()}toString(){return`${this.model.type}View(${this.model.id})`}serializable_state(){return{type:this.model.type}}get parent(){if(void 0!==this._parent)return this._parent;throw new Error(\"parent of a view wasn't configured\")}get is_root(){return null===this.parent}get root(){return this.is_root?this:this.parent.root}assert_root(){if(!this.is_root)throw new Error(this.toString()+\" is not a root layout\")}has_finished(){return this._has_finished}get is_idle(){return this.has_finished()}connect_signals(){}disconnect_signals(){r.Signal.disconnectReceiver(this)}on_change(t,e){for(const s of o.isArray(t)?t:[t])this.connect(s.change,e)}cursor(t,e){return null}get stylesheet(){return this.is_root?this._stylesheet:this.root.stylesheet}styles(){return[h.default]}}s.View=a,a.__name__=\"View\"},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=t(8),o=t(13),s=t=>(e={},...n)=>{const s=document.createElement(t);s.classList.add(\"bk\");for(let[t,n]of o.entries(e))if(null!=n&&(!i.isBoolean(n)||n))if(\"class\"===t&&(i.isString(n)&&(n=n.split(/\\s+/)),i.isArray(n)))for(const t of n)null!=t&&s.classList.add(t);else if(\"style\"===t&&i.isPlainObject(n))for(const[t,e]of o.entries(n))s.style[t]=e;else if(\"data\"===t&&i.isPlainObject(n))for(const[t,e]of o.entries(n))s.dataset[t]=e;else s.setAttribute(t,n);function l(t){if(i.isString(t))s.appendChild(document.createTextNode(t));else if(t instanceof Node)s.appendChild(t);else if(t instanceof NodeList||t instanceof HTMLCollection)for(const e of t)s.appendChild(e);else if(null!=t&&!1!==t)throw new Error(\"expected a DOM element, string, false or null, got \"+JSON.stringify(t))}for(const t of n)if(i.isArray(t))for(const e of t)l(e);else l(t);return s};function l(t){const e=t.parentNode;null!=e&&e.removeChild(t)}function r(t,...e){const n=t.firstChild;for(const i of e)t.insertBefore(i,n)}function a(t,e){const n=Element.prototype;return(n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector).call(t,e)}function c(t){return parseFloat(t)||0}function h(t){const e=getComputedStyle(t);return{border:{top:c(e.borderTopWidth),bottom:c(e.borderBottomWidth),left:c(e.borderLeftWidth),right:c(e.borderRightWidth)},margin:{top:c(e.marginTop),bottom:c(e.marginBottom),left:c(e.marginLeft),right:c(e.marginRight)},padding:{top:c(e.paddingTop),bottom:c(e.paddingBottom),left:c(e.paddingLeft),right:c(e.paddingRight)}}}function d(t){const e=t.getBoundingClientRect();return{width:Math.ceil(e.width),height:Math.ceil(e.height)}}n.createElement=function(t,e,...n){return s(t)(e,...n)},n.div=s(\"div\"),n.span=s(\"span\"),n.canvas=s(\"canvas\"),n.link=s(\"link\"),n.style=s(\"style\"),n.a=s(\"a\"),n.p=s(\"p\"),n.i=s(\"i\"),n.pre=s(\"pre\"),n.button=s(\"button\"),n.label=s(\"label\"),n.input=s(\"input\"),n.select=s(\"select\"),n.option=s(\"option\"),n.optgroup=s(\"optgroup\"),n.textarea=s(\"textarea\"),n.nbsp=function(){return document.createTextNode(\" \")},n.append=function(t,...e){for(const n of e)t.appendChild(n)},n.remove=l,n.removeElement=l,n.replaceWith=function(t,e){const n=t.parentNode;null!=n&&n.replaceChild(e,t)},n.prepend=r,n.empty=function(t,e=!1){let n;for(;n=t.firstChild;)t.removeChild(n);if(e&&t instanceof Element)for(const e of t.attributes)t.removeAttributeNode(e)},n.display=function(t){t.style.display=\"\"},n.undisplay=function(t){t.style.display=\"none\"},n.show=function(t){t.style.visibility=\"\"},n.hide=function(t){t.style.visibility=\"hidden\"},n.offset=function(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},n.matches=a,n.parent=function(t,e){let n=t;for(;n=n.parentElement;)if(a(n,e))return n;return null},n.extents=h,n.size=d,n.scroll_size=function(t){return{width:Math.ceil(t.scrollWidth),height:Math.ceil(t.scrollHeight)}},n.outer_size=function(t){const{margin:{left:e,right:n,top:i,bottom:o}}=h(t),{width:s,height:l}=d(t);return{width:Math.ceil(s+e+n),height:Math.ceil(l+i+o)}},n.content_size=function(t){const{left:e,top:n}=t.getBoundingClientRect(),{padding:i}=h(t);let o=0,s=0;for(const l of t.children){const t=l.getBoundingClientRect();o=Math.max(o,Math.ceil(t.left-e-i.left+t.width)),s=Math.max(s,Math.ceil(t.top-n-i.top+t.height))}return{width:o,height:s}},n.position=function(t,e,n){const{style:i}=t;if(i.left=e.x+\"px\",i.top=e.y+\"px\",i.width=e.width+\"px\",i.height=e.height+\"px\",null==n)i.margin=\"\";else{const{top:t,right:e,bottom:o,left:s}=n;i.margin=`${t}px ${e}px ${o}px ${s}px`}},n.children=function(t){return Array.from(t.children)};class f{constructor(t){this.el=t,this.classList=t.classList}get values(){const t=[];for(let e=0;e\":\"vertical_wave\",\"*\":\"criss_cross\"};class p{constructor(e,t=\"\"){this.obj=e,this.prefix=t,this.cache={};for(const a of this.attrs)this[a]=e.properties[t+a]}warm_cache(e,t){for(const a of this.attrs){const s=this.obj.properties[this.prefix+a];if(void 0!==s.spec.value)this.cache[a]=s.spec.value;else{if(!(null!=e&&s instanceof c.VectorSpec))throw new Error(\"source is required with a vectorized visual property\");{const l=s.array(e),c=null!=t?t.select(l):l;this.cache[a+\"_array\"]=c}}}}cache_select(e,t){const a=this.obj.properties[this.prefix+e];let s;return void 0!==a.spec.value?this.cache[e]=s=a.spec.value:this.cache[e]=s=this.cache[e+\"_array\"][t],s}get_array(e){return this.cache[e+\"_array\"]}set_vectorize(e,t){this._set_vectorize(e,t)}}a.ContextProperties=p,p.__name__=\"ContextProperties\";class f extends p{set_value(e){const t=this.line_color.value(),a=this.line_alpha.value();e.strokeStyle=n(t,a),e.lineWidth=this.line_width.value(),e.lineJoin=this.line_join.value(),e.lineCap=this.line_cap.value(),e.lineDash=this.line_dash.value(),e.lineDashOffset=this.line_dash_offset.value()}get doit(){return!(null===this.line_color.spec.value||0==this.line_alpha.spec.value||0==this.line_width.spec.value)}_set_vectorize(e,t){const a=this.cache_select(\"line_color\",t),s=this.cache_select(\"line_alpha\",t),l=this.cache_select(\"line_width\",t),c=this.cache_select(\"line_join\",t),i=this.cache_select(\"line_cap\",t),o=this.cache_select(\"line_dash\",t),r=this.cache_select(\"line_dash_offset\",t);e.strokeStyle=n(a,s),e.lineWidth=l,e.lineJoin=c,e.lineCap=i,e.lineDash=o,e.lineDashOffset=r}color_value(){return n(this.line_color.value(),this.line_alpha.value())}}a.Line=f,f.__name__=\"Line\",f.prototype.attrs=Object.keys(l.LineVector);class d extends p{set_value(e){const t=this.fill_color.value(),a=this.fill_alpha.value();e.fillStyle=n(t,a)}get doit(){return!(null===this.fill_color.spec.value||0==this.fill_alpha.spec.value)}_set_vectorize(e,t){const a=this.cache_select(\"fill_color\",t),s=this.cache_select(\"fill_alpha\",t);e.fillStyle=n(a,s)}color_value(){return n(this.fill_color.value(),this.fill_alpha.value())}}a.Fill=d,d.__name__=\"Fill\",d.prototype.attrs=Object.keys(l.FillVector);class k extends p{cache_select(e,t){let s;if(\"pattern\"==e){const e=this.cache_select(\"hatch_color\",t),s=this.cache_select(\"hatch_alpha\",t),l=this.cache_select(\"hatch_scale\",t),c=this.cache_select(\"hatch_pattern\",t),i=this.cache_select(\"hatch_weight\",t),{hatch_extra:o}=this.cache;if(null!=o&&o.hasOwnProperty(c)){const t=o[c];this.cache.pattern=t.get_pattern(e,s,l,i)}else this.cache.pattern=t=>{const o=t instanceof r.SVGRenderingContext2D?\"svg\":\"canvas\",p=new h.CanvasLayer(o,!0);return p.resize(l,l),p.prepare(),function(e,t,s,l,c,i){var o;const r=c,h=r/2,p=h/2;switch(e.strokeStyle=n(s,l),e.lineCap=\"square\",e.fillStyle=s,e.lineWidth=i,null!==(o=a.hatch_aliases[t])&&void 0!==o?o:t){case\"blank\":break;case\"dot\":e.arc(h,h,h/2,0,2*Math.PI,!0),e.fill();break;case\"ring\":e.arc(h,h,h/2,0,2*Math.PI,!0),e.stroke();break;case\"horizontal_line\":_(e,r,h);break;case\"vertical_line\":u(e,r,h);break;case\"cross\":_(e,r,h),u(e,r,h);break;case\"horizontal_dash\":_(e,h,h);break;case\"vertical_dash\":u(e,h,h);break;case\"spiral\":{const t=r/30;e.moveTo(h,h);for(let a=0;a<360;a++){const s=.1*a,l=h+t*s*Math.cos(s),c=h+t*s*Math.sin(s);e.lineTo(l,c)}e.stroke();break}case\"right_diagonal_line\":e.moveTo(.5-p,r),e.lineTo(p+.5,0),e.stroke(),e.moveTo(p+.5,r),e.lineTo(3*p+.5,0),e.stroke(),e.moveTo(3*p+.5,r),e.lineTo(5*p+.5,0),e.stroke(),e.stroke();break;case\"left_diagonal_line\":e.moveTo(p+.5,r),e.lineTo(.5-p,0),e.stroke(),e.moveTo(3*p+.5,r),e.lineTo(p+.5,0),e.stroke(),e.moveTo(5*p+.5,r),e.lineTo(3*p+.5,0),e.stroke(),e.stroke();break;case\"diagonal_cross\":v(e,r);break;case\"right_diagonal_dash\":e.moveTo(p+.5,3*p+.5),e.lineTo(3*p+.5,p+.5),e.stroke();break;case\"left_diagonal_dash\":e.moveTo(p+.5,p+.5),e.lineTo(3*p+.5,3*p+.5),e.stroke();break;case\"horizontal_wave\":e.moveTo(0,p),e.lineTo(h,3*p),e.lineTo(r,p),e.stroke();break;case\"vertical_wave\":e.moveTo(p,0),e.lineTo(3*p,h),e.lineTo(p,r),e.stroke();break;case\"criss_cross\":v(e,r),_(e,r,h),u(e,r,h)}}(p.ctx,c,e,s,l,i),t.createPattern(p.canvas,\"repeat\")}}else s=super.cache_select(e,t);return s}_try_defer(e){const{hatch_pattern:t,hatch_extra:a}=this.cache;if(null!=a&&a.hasOwnProperty(t)){a[t].onload(e)}}get doit(){return!(null===this.hatch_color.spec.value||0==this.hatch_alpha.spec.value||\" \"==this.hatch_pattern.spec.value||\"blank\"==this.hatch_pattern.spec.value||null===this.hatch_pattern.spec.value)}doit2(e,t,a,s){if(!this.doit)return;this.cache_select(\"pattern\",t);null==this.cache.pattern(e)?this._try_defer(s):(this.set_vectorize(e,t),a())}_set_vectorize(e,t){this.cache_select(\"pattern\",t),e.fillStyle=this.cache.pattern(e)}color_value(){return n(this.hatch_color.value(),this.hatch_alpha.value())}}a.Hatch=k,k.__name__=\"Hatch\",k.prototype.attrs=Object.keys(l.HatchVector);class x extends p{color_value(){return n(this.text_color.value(),this.text_alpha.value())}font_value(){const e=this.text_font.value(),t=this.text_font_size.value();return`${this.text_font_style.value()} ${t} ${e}`}v_font_value(e){super.cache_select(\"text_font_style\",e),super.cache_select(\"text_font_size\",e),super.cache_select(\"text_font\",e);const{text_font_style:t,text_font_size:a,text_font:s}=this.cache;return`${t} ${a} ${s}`}cache_select(e,t){let a;return\"font\"==e?this.cache.font=a=this.v_font_value(t):a=super.cache_select(e,t),a}set_value(e){const t=this.text_color.value(),a=this.text_alpha.value();e.fillStyle=n(t,a),e.font=this.font_value(),e.textAlign=this.text_align.value(),e.textBaseline=this.text_baseline.value()}get doit(){return!(null===this.text_color.spec.value||0==this.text_alpha.spec.value)}_set_vectorize(e,t){const a=this.cache_select(\"text_color\",t),s=this.cache_select(\"text_alpha\",t),l=this.cache_select(\"font\",t),c=this.cache_select(\"text_align\",t),i=this.cache_select(\"text_baseline\",t);e.fillStyle=n(a,s),e.font=l,e.textAlign=c,e.textBaseline=i}}a.Text=x,x.__name__=\"Text\",x.prototype.attrs=Object.keys(l.TextVector);class b{constructor(e){for(const t of e._mixins){const[a,s=\"\"]=t.split(\":\");let l;switch(a){case\"line\":l=f;break;case\"fill\":l=d;break;case\"hatch\":l=k;break;case\"text\":l=x;break;default:throw new Error(\"unknown visual: \"+a)}this[s+a]=new l(e,s)}}warm_cache(e,t){for(const a in this)if(this.hasOwnProperty(a)){const s=this[a];s instanceof p&&s.warm_cache(e,t)}}}a.Visuals=b,b.__name__=\"Visuals\"},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(76),n=t(8),r=t(72);function a(t){if(!t)throw new Error(\"cannot create a random attribute name for an undefined object\");const e=\"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\";let i=\"\";do{i=\"\";for(let t=0;t<12;t++)i+=e[Math.floor(Math.random()*e.length)]}while(t[i]);return i}function o(t){const e={left:\"start\",right:\"end\",center:\"middle\",start:\"start\",end:\"end\"};return e[t]||e.start}function l(t){const e={alphabetic:\"alphabetic\",hanging:\"hanging\",top:\"text-before-edge\",bottom:\"text-after-edge\",middle:\"central\"};return e[t]||e.alphabetic}const h=function(t,e){const i=new Map,s=t.split(\",\");e=e||10;for(let t=0;t=0?Math.acos(e):-Math.acos(e)}const b=w(f),v=w(g);this.lineTo(d+f[0]*n,m+f[1]*n),this.arc(d,m,n,b,v)}stroke(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"fill\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"stroke\"),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}fill(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"stroke\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"fill\"),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}rect(t,e,i,s){isFinite(t+e+i+s)&&(\"path\"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+s),this.lineTo(t,e+s),this.lineTo(t,e))}fillRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.fill())}strokeRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.stroke())}__clearCanvas(){r.empty(this.__defs),r.empty(this.__root),this.__root.appendChild(this.__defs),this.__currentElement=this.__root}clearRect(t,e,i,s){if(!isFinite(t+e+i+s))return;if(0===t&&0===e&&i===this.width&&s===this.height)return void this.__clearCanvas();const n=this.__createElement(\"rect\",{x:t,y:e,width:i,height:s,fill:\"#FFFFFF\"},!0);this._apply_transform(n),this.__root.appendChild(n)}createLinearGradient(t,e,i,s){if(!isFinite(t+e+i+s))throw new Error(\"The provided double value is non-finite\");const[n,r]=this._transform.apply(t,e),[o,l]=this._transform.apply(i,s),h=this.__createElement(\"linearGradient\",{id:a(this.__ids),x1:n+\"px\",x2:o+\"px\",y1:r+\"px\",y2:l+\"px\",gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(h),new _(h,this)}createRadialGradient(t,e,i,s,n,r){if(!isFinite(t+e+i+s+n+r))throw new Error(\"The provided double value is non-finite\");const[o,l]=this._transform.apply(t,e),[h,c]=this._transform.apply(s,n),u=this.__createElement(\"radialGradient\",{id:a(this.__ids),cx:h+\"px\",cy:c+\"px\",r:r+\"px\",fx:o+\"px\",fy:l+\"px\",gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(u),new _(u,this)}__parseFont(){const t=/^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-,\\'\\\"\\sa-z0-9]+?)\\s*$/i.exec(this.font),e={style:t[1]||\"normal\",size:t[4]||\"10px\",family:t[6]||\"sans-serif\",weight:t[3]||\"normal\",decoration:t[2]||\"normal\"};return\"underline\"===this.__fontUnderline&&(e.decoration=\"underline\"),null!=this.__fontHref&&(e.href=this.__fontHref),e}__wrapTextLink(t,e){if(t.href){const i=this.__createElement(\"a\");return i.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",t.href),i.appendChild(e),i}return e}__applyText(t,e,i,s){const n=this.__parseFont(),r=this.__createElement(\"text\",{\"font-family\":n.family,\"font-size\":n.size,\"font-style\":n.style,\"font-weight\":n.weight,\"text-decoration\":n.decoration,x:e,y:i,\"text-anchor\":o(this.textAlign),\"dominant-baseline\":l(this.textBaseline)},!0);r.appendChild(this.__document.createTextNode(t)),this._apply_transform(r),this.__currentElement=r,this.__applyStyleToCurrentElement(s),this.__root.appendChild(this.__wrapTextLink(n,r))}fillText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"fill\")}strokeText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"stroke\")}measureText(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)}arc(t,e,i,s,n,r=!1){if(!isFinite(t+e+i+s+n))return;if(s===n)return;(s%=2*Math.PI)===(n%=2*Math.PI)&&(n=(n+2*Math.PI-.001*(r?-1:1))%(2*Math.PI));const a=t+i*Math.cos(n),o=e+i*Math.sin(n),l=t+i*Math.cos(s),h=e+i*Math.sin(s),c=r?0:1;let _=0,u=n-s;u<0&&(u+=2*Math.PI),_=r?u>Math.PI?0:1:u>Math.PI?1:0,this.lineTo(l,h);const p=i,d=i,[m,f]=this._transform.apply(a,o);this.__addPathCommand(m,f,`A ${p} ${d} 0 ${_} ${c} ${m} ${f}`)}clip(){const t=this.__createElement(\"clipPath\"),e=a(this.__ids);this.__applyCurrentDefaultPath(),t.setAttribute(\"id\",e),t.appendChild(this.__currentElement),this.__defs.appendChild(t),this._clip_path=`url(#${e})`}drawImage(t,...e){let i,s,n,r,a,o,l,h;if(2==e.length){if([i,s]=e,!isFinite(i+s))return;a=0,o=0,l=t.width,h=t.height,n=l,r=h}else if(4==e.length){if([i,s,n,r]=e,!isFinite(i+s+n+r))return;a=0,o=0,l=t.width,h=t.height}else{if(8!==e.length)throw new Error(\"Inavlid number of arguments passed to drawImage: \"+arguments.length);if([a,o,l,h,i,s,n,r]=e,!isFinite(a+o+l+h+i+s+n+r))return}const c=this.__root,_=\"translate(\"+i+\", \"+s+\")\",u=this._transform.clone().translate(i,s);if(t instanceof p||t instanceof SVGSVGElement){const e=(t instanceof SVGSVGElement?t:t.get_svg()).cloneNode(!0);let i;u.is_identity?i=c:(i=this.__createElement(\"g\"),this._apply_transform(i,u),c.appendChild(i));for(const t of[...e.childNodes])if(t instanceof SVGDefsElement){for(const e of[...t.childNodes])if(e instanceof Element){const t=e.getAttribute(\"id\");this.__ids[t]=t,this.__defs.appendChild(e)}}else i.appendChild(t)}else if(t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__createElement(\"image\");if(e.setAttribute(\"width\",\"\"+n),e.setAttribute(\"height\",\"\"+r),e.setAttribute(\"preserveAspectRatio\",\"none\"),a||o||l!==t.width||h!==t.height){const e=this.__document.createElement(\"canvas\");e.width=n,e.height=r;e.getContext(\"2d\").drawImage(t,a,o,l,h,0,0,n,r),t=e}e.setAttribute(\"transform\",_);const i=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",i),c.appendChild(e)}else if(t instanceof HTMLCanvasElement){const e=this.__createElement(\"image\");e.setAttribute(\"width\",\"\"+n),e.setAttribute(\"height\",\"\"+r),e.setAttribute(\"preserveAspectRatio\",\"none\");const i=this.__document.createElement(\"canvas\");i.width=n,i.height=r;const s=i.getContext(\"2d\");s.imageSmoothingEnabled=!1,s.drawImage(t,a,o,l,h,0,0,n,r),t=i,e.setAttribute(\"transform\",_),e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",t.toDataURL()),c.appendChild(e)}}createPattern(t,e){const i=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"pattern\"),s=a(this.__ids);if(i.setAttribute(\"id\",s),i.setAttribute(\"width\",\"\"+this._to_number(t.width)),i.setAttribute(\"height\",\"\"+this._to_number(t.height)),i.setAttribute(\"patternUnits\",\"userSpaceOnUse\"),t instanceof HTMLCanvasElement||t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"image\"),s=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",s),i.appendChild(e),this.__defs.appendChild(i)}else if(t instanceof p){for(const e of[...t.__root.childNodes])e instanceof SVGDefsElement||i.appendChild(e);this.__defs.appendChild(i)}else{if(!(t instanceof SVGSVGElement))throw new Error(\"unsupported\");for(const e of[...t.childNodes])e instanceof SVGDefsElement||i.appendChild(e);this.__defs.appendChild(i)}return new u(i,this)}setLineDash(t){t&&t.length>0?this.lineDash=t.join(\",\"):this.lineDash=null}_to_number(t){return n.isNumber(t)?t:t.baseVal.value}}i.SVGRenderingContext2D=p,p.__name__=\"SVGRenderingContext2D\"},\n", + " function _(t,s,r){Object.defineProperty(r,\"__esModule\",{value:!0});const{sin:e,cos:n}=Math;class i{constructor(t=1,s=0,r=0,e=1,n=0,i=0){this.a=t,this.b=s,this.c=r,this.d=e,this.e=n,this.f=i}toString(){const{a:t,b:s,c:r,d:e,e:n,f:i}=this;return`matrix(${t}, ${s}, ${r}, ${e}, ${n}, ${i})`}clone(){const{a:t,b:s,c:r,d:e,e:n,f:a}=this;return new i(t,s,r,e,n,a)}get is_identity(){const{a:t,b:s,c:r,d:e,e:n,f:i}=this;return 1==t&&0==s&&0==r&&1==e&&0==n&&0==i}apply(t,s){const{a:r,b:e,c:n,d:i,e:a,f:h}=this;return[r*t+n*s+a,e*t+i*s+h]}iv_apply(t,s){const{a:r,b:e,c:n,d:i,e:a,f:h}=this,c=t.length;for(let o=0;o{const e=document.createElement(\"canvas\"),t=e.getContext(\"webgl\",{premultipliedAlpha:!0});return null!=t?{canvas:e,gl:t}:void l.logger.trace(\"WebGL is not supported\")})(),v={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class b{constructor(e,t){switch(this.backend=e,this.hidpi=t,this.pixel_ratio=1,this.bbox=new c.BBox,e){case\"webgl\":case\"canvas\":{this._el=this._canvas=r.canvas({style:v});const e=this.canvas.getContext(\"2d\");if(null==e)throw new Error(\"unable to obtain 2D rendering context\");this._ctx=e,t&&(this.pixel_ratio=devicePixelRatio);break}case\"svg\":{const e=new d.SVGRenderingContext2D;this._ctx=e,this._canvas=e.get_svg(),this._el=r.div({style:v},this._canvas);break}}_.fixup_ctx(this._ctx)}get canvas(){return this._canvas}get ctx(){return this._ctx}get el(){return this._el}resize(e,t){this.bbox=new c.BBox({left:0,top:0,width:e,height:t});const i=this._ctx instanceof d.SVGRenderingContext2D?this._ctx:this.canvas;i.width=e*this.pixel_ratio,i.height=t*this.pixel_ratio}prepare(){const{ctx:e,hidpi:t,pixel_ratio:i}=this;e.save(),t&&(e.scale(i,i),e.translate(.5,.5)),this.clear()}clear(){const{x:e,y:t,width:i,height:s}=this.bbox;this.ctx.clearRect(e,t,i,s)}finish(){this.ctx.restore()}to_blob(){const{_canvas:e}=this;if(e instanceof HTMLCanvasElement)return null!=e.msToBlob?Promise.resolve(e.msToBlob()):new Promise((t,i)=>{e.toBlob(e=>null!=e?t(e):i(),\"image/png\")});{const e=this._ctx.get_serialized_svg(!0),t=new Blob([e],{type:\"image/svg+xml\"});return Promise.resolve(t)}}}i.CanvasLayer=b,b.__name__=\"CanvasLayer\";class g extends n.DOMView{constructor(){super(...arguments),this.bbox=new c.BBox}initialize(){super.initialize();const{output_backend:e,hidpi:t}=this.model;\"webgl\"==e&&(this.webgl=p),this.underlays_el=r.div({style:v}),this.primary=new b(e,t),this.overlays=new b(e,t),this.overlays_el=r.div({style:v}),this.events_el=r.div({class:\"bk-canvas-events\",style:v});const i=[this.underlays_el,this.primary.el,this.overlays.el,this.overlays_el,this.events_el];h.extend(this.el.style,v),r.append(this.el,...i),l.logger.debug(\"CanvasView initialized\")}add_underlay(e){this.underlays_el.appendChild(e)}add_overlay(e){this.overlays_el.appendChild(e)}add_event(e){this.events_el.appendChild(e)}get pixel_ratio(){return this.primary.pixel_ratio}resize(e,t){this.bbox=new c.BBox({left:0,top:0,width:e,height:t}),this.primary.resize(e,t),this.overlays.resize(e,t)}prepare_webgl(e){const{webgl:t}=this;if(null!=t){const{width:i,height:s}=this.bbox;t.canvas.width=this.pixel_ratio*i,t.canvas.height=this.pixel_ratio*s;const{gl:a}=t;a.enable(a.SCISSOR_TEST);const[n,l,o,r]=e,{xview:h,yview:c}=this.bbox,_=h.compute(n),d=c.compute(l+r),p=this.pixel_ratio;a.scissor(p*_,p*d,p*o,p*r),a.enable(a.BLEND),a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,a.ONE_MINUS_DST_ALPHA,a.ONE)}}clear_webgl(){const{webgl:e}=this;if(null!=e){const{gl:t,canvas:i}=e;t.viewport(0,0,i.width,i.height),t.clearColor(0,0,0,0),t.clear(t.COLOR_BUFFER_BIT||t.DEPTH_BUFFER_BIT)}}blit_webgl(e){const{webgl:t}=this;if(null!=t&&(l.logger.debug(\"Blitting WebGL canvas\"),e.restore(),e.drawImage(t.canvas,0,0),e.save(),this.model.hidpi)){const t=this.pixel_ratio;e.scale(t,t),e.translate(.5,.5)}}compose(){const{output_backend:e,hidpi:t}=this.model,{width:i,height:s}=this.bbox,a=new b(e,t);return a.resize(i,s),a.ctx.drawImage(this.primary.canvas,0,0),a.ctx.drawImage(this.overlays.canvas,0,0),a}to_blob(){return this.compose().to_blob()}}i.CanvasView=g,g.__name__=\"CanvasView\";class x extends a.HasProps{constructor(e){super(e)}static init_Canvas(){this.prototype.default_view=g,this.internal({hidpi:[o.Boolean,!0],output_backend:[o.OutputBackend,\"canvas\"]})}}i.Canvas=x,x.__name__=\"Canvas\",x.init_Canvas()},\n", + " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(71),r=e(72);class n extends i.View{initialize(){super.initialize(),this.el=this._createElement()}remove(){r.remove(this.el),super.remove()}css_classes(){return[]}render(){}renderTo(e){e.appendChild(this.el),this.render()}_createElement(){return r.createElement(this.tagName,{class:this.css_classes()})}}t.DOMView=n,n.__name__=\"DOMView\",n.prototype.tagName=\"div\"},\n", + " function _(t,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const h=t(24),{min:r,max:s}=Math;e.empty=function(){return{x0:1/0,y0:1/0,x1:-1/0,y1:-1/0}},e.positive_x=function(){return{x0:Number.MIN_VALUE,y0:-1/0,x1:1/0,y1:1/0}},e.positive_y=function(){return{x0:-1/0,y0:Number.MIN_VALUE,x1:1/0,y1:1/0}},e.union=function(t,i){return{x0:r(t.x0,i.x0),x1:s(t.x1,i.x1),y0:r(t.y0,i.y0),y1:s(t.y1,i.y1)}};class n{constructor(t){if(null==t)this.x0=0,this.y0=0,this.x1=0,this.y1=0;else if(\"x0\"in t){const{x0:i,y0:e,x1:h,y1:r}=t;if(!(i<=h&&e<=r))throw new Error(`invalid bbox {x0: ${i}, y0: ${e}, x1: ${h}, y1: ${r}}`);this.x0=i,this.y0=e,this.x1=h,this.y1=r}else if(\"x\"in t){const{x:i,y:e,width:h,height:r}=t;if(!(h>=0&&r>=0))throw new Error(`invalid bbox {x: ${i}, y: ${e}, width: ${h}, height: ${r}}`);this.x0=i,this.y0=e,this.x1=i+h,this.y1=e+r}else{let i,e,h,r;if(\"width\"in t)if(\"left\"in t)i=t.left,e=i+t.width;else if(\"right\"in t)e=t.right,i=e-t.width;else{const h=t.width/2;i=t.hcenter-h,e=t.hcenter+h}else i=t.left,e=t.right;if(\"height\"in t)if(\"top\"in t)h=t.top,r=h+t.height;else if(\"bottom\"in t)r=t.bottom,h=r-t.height;else{const i=t.height/2;h=t.vcenter-i,r=t.vcenter+i}else h=t.top,r=t.bottom;if(!(i<=e&&h<=r))throw new Error(`invalid bbox {left: ${i}, top: ${h}, right: ${e}, bottom: ${r}}`);this.x0=i,this.y0=h,this.x1=e,this.y1=r}}toString(){return`BBox({left: ${this.left}, top: ${this.top}, width: ${this.width}, height: ${this.height}})`}get left(){return this.x0}get top(){return this.y0}get right(){return this.x1}get bottom(){return this.y1}get p0(){return[this.x0,this.y0]}get p1(){return[this.x1,this.y1]}get x(){return this.x0}get y(){return this.y0}get width(){return this.x1-this.x0}get height(){return this.y1-this.y0}get rect(){return{x0:this.x0,y0:this.y0,x1:this.x1,y1:this.y1}}get box(){return{x:this.x,y:this.y,width:this.width,height:this.height}}get h_range(){return{start:this.x0,end:this.x1}}get v_range(){return{start:this.y0,end:this.y1}}get ranges(){return[this.h_range,this.v_range]}get aspect(){return this.width/this.height}get hcenter(){return(this.left+this.right)/2}get vcenter(){return(this.top+this.bottom)/2}relativize(){const{width:t,height:i}=this;return new n({x:0,y:0,width:t,height:i})}contains(t,i){return t>=this.x0&&t<=this.x1&&i>=this.y0&&i<=this.y1}clip(t,i){return tthis.x1&&(t=this.x1),ithis.y1&&(i=this.y1),[t,i]}union(t){return new n({x0:r(this.x0,t.x0),y0:r(this.y0,t.y0),x1:s(this.x1,t.x1),y1:s(this.y1,t.y1)})}equals(t){return this.x0==t.x0&&this.y0==t.y0&&this.x1==t.x1&&this.y1==t.y1}get xview(){return{compute:t=>this.left+t,v_compute:t=>{const i=new h.NumberArray(t.length),e=this.left;for(let h=0;hthis.bottom-t,v_compute:t=>{const i=new h.NumberArray(t.length),e=this.bottom;for(let h=0;he.getLineDash(),set:t=>e.setLineDash(t)})}(e),function(e){e.setImageSmoothingEnabled=t=>{e.imageSmoothingEnabled=t,e.mozImageSmoothingEnabled=t,e.oImageSmoothingEnabled=t,e.webkitImageSmoothingEnabled=t,e.msImageSmoothingEnabled=t},e.getImageSmoothingEnabled=()=>{const t=e.imageSmoothingEnabled;return null==t||t}}(e),function(e){e.measureText&&null==e.html5MeasureText&&(e.html5MeasureText=e.measureText,e.measureText=t=>{const n=e.html5MeasureText(t);return n.ascent=1.6*e.html5MeasureText(\"m\").width,n})}(e),function(e){e.ellipse||(e.ellipse=function(t,n,o,a,i,l,m,r=!1){const u=.551784;e.translate(t,n),e.rotate(i);let s=o,g=a;r&&(s=-o,g=-a),e.moveTo(-s,0),e.bezierCurveTo(-s,g*u,-s*u,g,0,g),e.bezierCurveTo(s*u,g,s,g*u,s,0),e.bezierCurveTo(s,-g*u,s*u,-g,0,-g),e.bezierCurveTo(-s*u,-g,-s,-g*u,-s,0),e.rotate(-i),e.translate(-t,-n)})}(e)}},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(1),c=e(14),i=n.__importStar(e(18)),a=e(8),r=e(13),o=e(19);class l extends c.HasProps{constructor(e){super(e)}static init_Model(){this.define({tags:[i.Array,[]],name:[i.String],js_property_callbacks:[i.Any,{}],js_event_callbacks:[i.Any,{}],subscribed_events:[i.Array,[]]})}initialize(){super.initialize(),this._js_callbacks=new Map}connect_signals(){super.connect_signals(),this._update_property_callbacks(),this.connect(this.properties.js_property_callbacks.change,()=>this._update_property_callbacks()),this.connect(this.properties.js_event_callbacks.change,()=>this._update_event_callbacks()),this.connect(this.properties.subscribed_events.change,()=>this._update_event_callbacks())}_process_event(e){for(const t of this.js_event_callbacks[e.event_name]||[])t.execute(e);null!=this.document&&this.subscribed_events.some(t=>t==e.event_name)&&this.document.event_manager.send_event(e)}trigger_event(e){null!=this.document&&(e.origin=this,this.document.event_manager.trigger(e))}_update_event_callbacks(){null!=this.document?this.document.event_manager.subscribed_models.add(this):o.logger.warn(\"WARNING: Document not defined for updating event callbacks\")}_update_property_callbacks(){const e=e=>{const[t,s=null]=e.split(\":\");return null!=s?this.properties[s][t]:this[t]};for(const[t,s]of this._js_callbacks){const n=e(t);for(const e of s)this.disconnect(n,e)}this._js_callbacks.clear();for(const[t,s]of r.entries(this.js_property_callbacks)){const n=s.map(e=>()=>e.execute(this));this._js_callbacks.set(t,n);const c=e(t);for(const e of n)this.connect(c,e)}}_doc_attached(){r.isEmpty(this.js_event_callbacks)&&0==this.subscribed_events.length||this._update_event_callbacks()}_doc_detached(){this.document.event_manager.subscribed_models.delete(this)}select(e){if(a.isString(e))return[...this.references()].filter(t=>t instanceof l&&t.name===e);if(e.prototype instanceof c.HasProps)return[...this.references()].filter(t=>t instanceof e);throw new Error(\"invalid selector\")}select_one(e){const t=this.select(e);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(\"found more than one object matching given selector\")}}}s.Model=l,l.__name__=\"Model\",l.init_Model()},\n", + " function _(e,s,_){Object.defineProperty(_,\"__esModule\",{value:!0});class t{constructor(e,s){this.x_scale=e,this.y_scale=s,this.x_range=this.x_scale.source_range,this.y_range=this.y_scale.source_range,this.ranges=[this.x_range,this.y_range],this.scales=[this.x_scale,this.y_scale]}map_to_screen(e,s){return[this.x_scale.v_compute(e),this.y_scale.v_compute(s)]}map_from_screen(e,s){return[this.x_scale.v_invert(e),this.y_scale.v_invert(s)]}}_.CoordinateTransform=t,t.__name__=\"CoordinateTransform\"},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),a=t(36),o=t(84),r=t(85),n=t(28),_=i.__importStar(t(18)),h=t(10);class c extends a.AnnotationView{initialize(){super.initialize(),null==this.model.source&&(this.model.source=new r.ColumnDataSource),this.set_data(this.model.source)}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.set_data(this.model.source)),this.connect(this.model.source.streaming,()=>this.set_data(this.model.source)),this.connect(this.model.source.patching,()=>this.set_data(this.model.source)),this.connect(this.model.source.change,()=>this.set_data(this.model.source))}set_data(t){super.set_data(t),this.visuals.warm_cache(t),this.plot_view.request_render()}_map_data(){const{frame:t}=this.plot_view;let e,s,i,a;return\"data\"==this.model.start_units?(e=this.coordinates.x_scale.v_compute(this._x_start),s=this.coordinates.y_scale.v_compute(this._y_start)):(e=t.xview.v_compute(this._x_start),s=t.yview.v_compute(this._y_start)),\"data\"==this.model.end_units?(i=this.coordinates.x_scale.v_compute(this._x_end),a=this.coordinates.y_scale.v_compute(this._y_end)):(i=t.xview.v_compute(this._x_end),a=t.yview.v_compute(this._y_end)),[[e,s],[i,a]]}_render(){const{ctx:t}=this.layer;t.save();const[e,s]=this._map_data();null!=this.model.end&&this._arrow_head(t,\"render\",this.model.end,e,s),null!=this.model.start&&this._arrow_head(t,\"render\",this.model.start,s,e),t.beginPath();const{x:i,y:a,width:o,height:r}=this.plot_view.frame.bbox;t.rect(i,a,o,r),null!=this.model.end&&this._arrow_head(t,\"clip\",this.model.end,e,s),null!=this.model.start&&this._arrow_head(t,\"clip\",this.model.start,s,e),t.closePath(),t.clip(),this._arrow_body(t,e,s),t.restore()}_arrow_head(t,e,s,i,a){for(let o=0,r=this._x_start.length;onew o.OpenHead({})],source:[_.Instance]})}}s.Arrow=d,d.__name__=\"Arrow\",d.init_Arrow()},\n", + " function _(i,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=i(1),o=i(36),l=i(74),n=i(28),h=t.__importStar(i(18));class a extends o.Annotation{constructor(i){super(i)}static init_ArrowHead(){this.define({size:[h.Number,25]})}initialize(){super.initialize(),this.visuals=new l.Visuals(this)}}s.ArrowHead=a,a.__name__=\"ArrowHead\",a.init_ArrowHead();class r extends a{constructor(i){super(i)}static init_OpenHead(){this.mixins(n.LineVector)}clip(i,e){this.visuals.line.set_vectorize(i,e),i.moveTo(.5*this.size,this.size),i.lineTo(.5*this.size,-2),i.lineTo(-.5*this.size,-2),i.lineTo(-.5*this.size,this.size),i.lineTo(0,0),i.lineTo(.5*this.size,this.size)}render(i,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),i.beginPath(),i.moveTo(.5*this.size,this.size),i.lineTo(0,0),i.lineTo(-.5*this.size,this.size),i.stroke())}}s.OpenHead=r,r.__name__=\"OpenHead\",r.init_OpenHead();class z extends a{constructor(i){super(i)}static init_NormalHead(){this.mixins([n.LineVector,n.FillVector]),this.override({fill_color:\"black\"})}clip(i,e){this.visuals.line.set_vectorize(i,e),i.moveTo(.5*this.size,this.size),i.lineTo(.5*this.size,-2),i.lineTo(-.5*this.size,-2),i.lineTo(-.5*this.size,this.size),i.lineTo(.5*this.size,this.size)}render(i,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(i,e),this._normal(i,e),i.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),this._normal(i,e),i.stroke())}_normal(i,e){i.beginPath(),i.moveTo(.5*this.size,this.size),i.lineTo(0,0),i.lineTo(-.5*this.size,this.size),i.closePath()}}s.NormalHead=z,z.__name__=\"NormalHead\",z.init_NormalHead();class _ extends a{constructor(i){super(i)}static init_VeeHead(){this.mixins([n.LineVector,n.FillVector]),this.override({fill_color:\"black\"})}clip(i,e){this.visuals.line.set_vectorize(i,e),i.moveTo(.5*this.size,this.size),i.lineTo(.5*this.size,-2),i.lineTo(-.5*this.size,-2),i.lineTo(-.5*this.size,this.size),i.lineTo(0,.5*this.size),i.lineTo(.5*this.size,this.size)}render(i,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(i,e),this._vee(i,e),i.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),this._vee(i,e),i.stroke())}_vee(i,e){i.beginPath(),i.moveTo(.5*this.size,this.size),i.lineTo(0,0),i.lineTo(-.5*this.size,this.size),i.lineTo(0,.5*this.size),i.closePath()}}s.VeeHead=_,_.__name__=\"VeeHead\",_.init_VeeHead();class c extends a{constructor(i){super(i)}static init_TeeHead(){this.mixins(n.LineVector)}render(i,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),i.beginPath(),i.moveTo(.5*this.size,0),i.lineTo(-.5*this.size,0),i.stroke())}clip(i,e){}}s.TeeHead=c,c.__name__=\"TeeHead\",c.init_TeeHead()},\n", + " function _(t,n,e){Object.defineProperty(e,\"__esModule\",{value:!0});const s=t(1),o=t(86),r=s.__importStar(t(18)),i=t(8),l=t(13),a=s.__importStar(t(119)),c=t(120),u=t(121);function h(t,n,e){if(i.isArray(t)){const s=t.concat(n);return null!=e&&s.length>e?s.slice(-e):s}if(i.isTypedArray(t)){const s=t.length+n.length;if(null!=e&&s>e){const o=s-e,r=t.length;let i;t.lengthnew _.UnionRenderers]}),this.internal({selection_manager:[c.Instance,t=>new l.SelectionManager({source:t})],inspected:[c.Instance,()=>new g.Selection]})}initialize(){super.initialize(),this._select=new i.Signal0(this,\"select\"),this.inspect=new i.Signal(this,\"inspect\"),this.streaming=new i.Signal0(this,\"streaming\"),this.patching=new i.Signal(this,\"patching\")}get_column(t){const e=this.data[t];return null!=e?e:null}columns(){return h.keys(this.data)}get_length(t=!0){const e=u.uniq(h.values(this.data).map(t=>t.length));switch(e.length){case 0:return null;case 1:return e[0];default:{const n=\"data source has columns of inconsistent lengths\";if(t)return r.logger.warn(n),e.sort()[0];throw new Error(n)}}}get length(){var t;return null!==(t=this.get_length())&&void 0!==t?t:0}clear(){const t={};for(const e of this.columns())t[e]=new this.data[e].constructor(0);this.data=t}}n.ColumnarDataSource=d,d.__name__=\"ColumnarDataSource\",d.init_ColumnarDataSource()},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const c=e(1),n=e(81),o=e(88),i=c.__importStar(e(18));class r extends n.Model{constructor(e){super(e)}static init_DataSource(){this.define({selected:[i.Instance,()=>new o.Selection]})}}a.DataSource=r,r.__name__=\"DataSource\",r.init_DataSource()},\n", + " function _(i,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=i(1),n=i(81),l=t.__importStar(i(18)),c=i(9),h=i(13);class d extends n.Model{constructor(i){super(i)}get_view(){return this.view}static init_Selection(){this.define({indices:[l.Array,[]],line_indices:[l.Array,[]],multiline_indices:[l.Any,{}]}),this.internal({selected_glyphs:[l.Array,[]],view:[l.Any],image_indices:[l.Array,[]]})}initialize(){super.initialize()}get selected_glyph(){return this.selected_glyphs.length>0?this.selected_glyphs[0]:null}add_to_selected_glyphs(i){this.selected_glyphs.push(i)}update(i,e=!0,s=\"replace\"){switch(s){case\"replace\":this.indices=i.indices,this.line_indices=i.line_indices,this.selected_glyphs=i.selected_glyphs,this.view=i.view,this.multiline_indices=i.multiline_indices,this.image_indices=i.image_indices;break;case\"append\":this.update_through_union(i);break;case\"intersect\":this.update_through_intersection(i);break;case\"subtract\":this.update_through_subtraction(i)}}clear(){this.indices=[],this.line_indices=[],this.multiline_indices={},this.view=null,this.selected_glyphs=[]}is_empty(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length}update_through_union(i){this.indices=c.union(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}update_through_intersection(i){this.indices=c.intersection(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}update_through_subtraction(i){this.indices=c.difference(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}}s.Selection=d,d.__name__=\"Selection\",d.init_Selection()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),n=e(14),o=e(88),c=e(90),r=e(116),l=i.__importStar(e(18));class p extends n.HasProps{constructor(e){super(e),this.inspectors=new Map}static init_SelectionManager(){this.internal({source:[l.Any]})}select(e,t,s,i=\"replace\"){const n=[],o=[];for(const t of e)t instanceof c.GlyphRendererView?n.push(t):t instanceof r.GraphRendererView&&o.push(t);let l=!1;for(const e of o){const n=e.model.selection_policy.hit_test(t,e);l=l||e.model.selection_policy.do_selection(n,e.model,s,i)}if(n.length>0){const e=this.source.selection_policy.hit_test(t,n);l=l||this.source.selection_policy.do_selection(e,this.source,s,i)}return l}inspect(e,t){let s=!1;if(e instanceof c.GlyphRendererView){const i=e.hit_test(t);if(null!=i){s=!i.is_empty();const n=this.get_or_create_inspector(e.model);n.update(i,!0,\"replace\"),this.source.setv({inspected:n},{silent:!0}),this.source.inspect.emit([e,{geometry:t}])}}else if(e instanceof r.GraphRendererView){const i=e.model.inspection_policy.hit_test(t,e);s=s||e.model.inspection_policy.do_inspection(i,t,e,!1,\"replace\")}return s}clear(e){this.source.selected.clear(),null!=e&&this.get_or_create_inspector(e.model).clear()}get_or_create_inspector(e){let t=this.inspectors.get(e);return null==t&&(t=new o.Selection,this.inspectors.set(e,t)),t}}s.SelectionManager=p,p.__name__=\"SelectionManager\",p.init_SelectionManager()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),l=e(91),n=e(92),h=e(110),o=e(111),a=e(113),c=e(114),_=e(24),d=s.__importStar(e(18)),r=e(12),p=e(9),g=e(13),u=e(115),y=e(98),m={fill:{},line:{}},v={fill:{fill_alpha:.3,fill_color:\"grey\"},line:{line_alpha:.3,line_color:\"grey\"}},f={fill:{fill_alpha:.2},line:{}};class w extends l.DataRendererView{async lazy_initialize(){await super.lazy_initialize();const e=this.model.glyph,t=p.includes(e._mixins,\"fill\"),i=p.includes(e._mixins,\"line\"),s=g.clone(e.attributes);function l(l){const n=g.clone(s);return t&&g.extend(n,l.fill),i&&g.extend(n,l.line),new e.constructor(n)}delete s.id,this.glyph=await this.build_glyph_view(e);let{selection_glyph:n}=this.model;null==n?n=l({fill:{},line:{}}):\"auto\"===n&&(n=l(m)),this.selection_glyph=await this.build_glyph_view(n);let{nonselection_glyph:h}=this.model;null==h?h=l({fill:{},line:{}}):\"auto\"===h&&(h=l(f)),this.nonselection_glyph=await this.build_glyph_view(h);const{hover_glyph:o}=this.model;null!=o&&(this.hover_glyph=await this.build_glyph_view(o));const{muted_glyph:a}=this.model;null!=a&&(this.muted_glyph=await this.build_glyph_view(a));const c=l(v);this.decimated_glyph=await this.build_glyph_view(c),this.set_data(!1)}async build_glyph_view(e){return u.build_view(e,{parent:this})}remove(){var e,t;this.glyph.remove(),this.selection_glyph.remove(),this.nonselection_glyph.remove(),null===(e=this.hover_glyph)||void 0===e||e.remove(),null===(t=this.muted_glyph)||void 0===t||t.remove(),this.decimated_glyph.remove(),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.request_render()),this.connect(this.model.glyph.change,()=>this.set_data()),this.connect(this.model.data_source.change,()=>this.set_data()),this.connect(this.model.data_source.streaming,()=>this.set_data()),this.connect(this.model.data_source.patching,e=>this.set_data(!0,e)),this.connect(this.model.data_source.selected.change,()=>this.request_render()),this.connect(this.model.data_source._select,()=>this.request_render()),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,()=>this.request_render()),this.connect(this.model.properties.view.change,()=>this.set_data()),this.connect(this.model.view.properties.indices.change,()=>this.set_data()),this.connect(this.model.view.properties.masked.change,()=>this.set_visuals()),this.connect(this.model.properties.visible.change,()=>this.plot_view.update_dataranges());const{x_ranges:e,y_ranges:t}=this.plot_view.frame;for(const[,t]of e)t instanceof y.FactorRange&&this.connect(t.change,()=>this.set_data());for(const[,e]of t)e instanceof y.FactorRange&&this.connect(e.change,()=>this.set_data());this.connect(this.model.glyph.transformchange,()=>this.set_data())}_update_masked_indices(){const e=this.glyph.mask_data();return this.model.view.masked=e,e}set_data(e=!0,t=null){const i=this.model.data_source;this.all_indices=this.model.view.indices;const{all_indices:s}=this;this.glyph.set_data(i,s,t),this.set_visuals(),this._update_masked_indices();const{lod_factor:l}=this.plot_model,n=this.all_indices.count;this.decimated=new _.Indices(n);for(let e=0;e!_||_.is_empty()?[]:_.selected_glyph?this.model.view.convert_indices_from_subset(i):_.indices.length>0?_.indices:Object.keys(_.multiline_indices).map(e=>parseInt(e)))()),g=r.filter(i,e=>d.has(t[e])),{lod_threshold:u}=this.plot_model;let y,m,v;if(null!=this.model.document&&this.model.document.interactive_duration()>0&&!e&&null!=u&&t.length>u?(i=[...this.decimated],y=this.decimated_glyph,m=this.decimated_glyph,v=this.selection_glyph):(y=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,m=this.nonselection_glyph,v=this.selection_glyph),null!=this.hover_glyph&&g.length&&(i=p.difference(i,g)),c.length){const e={};for(const t of c)e[t]=!0;const l=new Array,h=new Array;if(this.glyph instanceof n.LineView)for(const i of t)null!=e[i]?l.push(i):h.push(i);else for(const s of i)null!=e[t[s]]?l.push(s):h.push(s);m.render(s,h,this.glyph),v.render(s,l,this.glyph),null!=this.hover_glyph&&(this.glyph instanceof n.LineView?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(g),this.glyph):this.hover_glyph.render(s,g,this.glyph))}else if(this.glyph instanceof n.LineView)this.hover_glyph&&g.length?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(g),this.glyph):y.render(s,t,this.glyph);else if(this.glyph instanceof h.PatchView||this.glyph instanceof o.HAreaView||this.glyph instanceof a.VAreaView)if(0==_.selected_glyphs.length||null==this.hover_glyph)y.render(s,t,this.glyph);else for(const e of _.selected_glyphs)e==this.glyph.model&&this.hover_glyph.render(s,t,this.glyph);else y.render(s,i,this.glyph),this.hover_glyph&&g.length&&this.hover_glyph.render(s,g,this.glyph);s.restore()}draw_legend(e,t,i,s,l,n,h,o){null==o&&(o=this.model.get_reference_point(n,h)),this.glyph.draw_legend_for_index(e,{x0:t,x1:i,y0:s,y1:l},o)}hit_test(e){if(!this.model.visible)return null;const t=this.glyph.hit_test(e);return null==t?null:this.model.view.convert_selection_from_subset(t)}}i.GlyphRendererView=w,w.__name__=\"GlyphRendererView\";class b extends l.DataRenderer{constructor(e){super(e)}static init_GlyphRenderer(){this.prototype.default_view=w,this.define({data_source:[d.Instance],view:[d.Instance,()=>new c.CDSView],glyph:[d.Instance],hover_glyph:[d.Instance],nonselection_glyph:[d.Any,\"auto\"],selection_glyph:[d.Any,\"auto\"],muted_glyph:[d.Instance],muted:[d.Boolean,!1]})}initialize(){super.initialize(),null==this.view.source&&(this.view.source=this.data_source,this.view.compute_indices())}get_reference_point(e,t){let i=0;if(null!=e){const s=this.data_source.get_column(e);if(null!=s){const e=r.indexOf(s,t);-1!=e&&(i=e)}}return i}get_selection_manager(){return this.data_source.selection_manager}}i.GlyphRenderer=b,b.__name__=\"GlyphRenderer\",b.init_GlyphRenderer()},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const a=e(70);class n extends a.RendererView{get xscale(){return this.coordinates.x_scale}get yscale(){return this.coordinates.y_scale}}t.DataRendererView=n,n.__name__=\"DataRendererView\";class s extends a.Renderer{constructor(e){super(e)}static init_DataRenderer(){this.override({level:\"glyph\"})}}t.DataRenderer=s,s.__name__=\"DataRenderer\",s.init_DataRenderer()},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1),n=e(93),l=e(100),_=e(102),r=s.__importStar(e(28)),o=s.__importStar(e(101)),h=e(88);class a extends n.XYGlyphView{initialize(){super.initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;null!=e&&(this.glglyph=new _.LineGL(e.gl,this))}_render(e,i,{sx:t,sy:s}){let n=!1,l=null;this.visuals.line.set_value(e);for(const _ of i){if(n){if(!isFinite(t[_]+s[_])){e.stroke(),e.beginPath(),n=!1,l=_;continue}null!=l&&_-l>1&&(e.stroke(),n=!1)}n?e.lineTo(t[_],s[_]):(e.beginPath(),e.moveTo(t[_],s[_]),n=!0),l=_}n&&e.stroke()}_hit_point(e){const i=new h.Selection,t={x:e.sx,y:e.sy};let s=9999;const n=Math.max(2,this.visuals.line.line_width.value()/2);for(let e=0,l=this.sx.length-1;et/2);a=new Float64Array(_);for(let i=0;i<_;i++)a[i]=e[i]-t[i];r=new Float64Array(_);for(let i=0;i<_;i++)r[i]=e[i]+t[i]}else{a=e,r=new Float64Array(_);for(let t=0;t<_;t++)r[t]=a[t]+i[t]}const l=t.v_compute(a),o=t.v_compute(r);return n?d.map(l,(t,e)=>Math.ceil(Math.abs(o[e]-l[e]))):d.map(l,(t,e)=>Math.abs(o[e]-l[e]))}draw_legend_for_index(t,e,i){}hit_test(t){switch(t.type){case\"point\":if(null!=this._hit_point)return this._hit_point(t);break;case\"span\":if(null!=this._hit_span)return this._hit_span(t);break;case\"rect\":if(null!=this._hit_rect)return this._hit_rect(t);break;case\"poly\":if(null!=this._hit_poly)return this._hit_poly(t)}return this._nohit_warned.has(t.type)||(o.logger.debug(`'${t.type}' selection not available for ${this.model.type}`),this._nohit_warned.add(t.type)),null}_hit_rect_against_index(t){const{sx0:e,sx1:i,sy0:s,sy1:n}=t,[a,r]=this.renderer.coordinates.x_scale.r_invert(e,i),[_,l]=this.renderer.coordinates.y_scale.r_invert(s,n),o=[...this.index.indices({x0:a,x1:r,y0:_,y1:l})];return new p.Selection({indices:o})}_project_data(){}set_data(t,e,i){var s,a;const{x_range:r,y_range:_}=this.renderer.coordinates;this._data_size=null!==(s=t.get_length())&&void 0!==s?s:1;for(const i of this.model){if(!(i instanceof n.VectorSpec))continue;if(i.optional&&null==i.spec.value&&!i.dirty)continue;const s=i.attr,a=i.array(t);let l=e.select(a);if(i instanceof n.BaseCoordinateSpec){const t=\"x\"==i.dimension?r:_;if(t instanceof u.FactorRange)if(i instanceof n.CoordinateSpec)l=t.v_synthetic(l);else if(i instanceof n.CoordinateSeqSpec)for(let e=0;e>1;n[s]>e?i=s:t=s+1}return n[t]}class x extends i.default{search_indices(e,n,t,i){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let o=this._boxes.length-4;const x=[],h=new s.Indices(this.numItems);for(;void 0!==o;){const s=Math.min(o+4*this.nodeSize,d(o,this._levelBounds));for(let d=o;d>2];tthis._boxes[d+2]||n>this._boxes[d+3]||(o<4*this.numItems?h.set(s):x.push(s)))}o=x.pop()}return h}}x.__name__=\"_FlatBush\";class h{constructor(e){this.index=null,e>0&&(this.index=new x(e))}add(e,n,t,i){var s;null===(s=this.index)||void 0===s||s.add(e,n,t,i)}add_empty(){var e;null===(e=this.index)||void 0===e||e.add(1/0,1/0,-1/0,-1/0)}finish(){var e;null===(e=this.index)||void 0===e||e.finish()}_normalize(e){let{x0:n,y0:t,x1:i,y1:s}=e;return n>i&&([n,i]=[i,n]),t>s&&([t,s]=[s,t]),{x0:n,y0:t,x1:i,y1:s}}get bbox(){if(null==this.index)return o.empty();{const{minX:e,minY:n,maxX:t,maxY:i}=this.index;return{x0:e,y0:n,x1:t,y1:i}}}indices(e){if(null==this.index)return new s.Indices(0);{const{x0:n,y0:t,x1:i,y1:s}=this._normalize(e);return this.index.search_indices(n,t,i,s)}}bounds(e){const n=o.empty();for(const t of this.indices(e)){const e=this.index._boxes,i=e[4*t+0],s=e[4*t+1],o=e[4*t+2],d=e[4*t+3];on.x1&&(n.x1=i),dn.y1&&(n.y1=s)}return n}}t.SpatialIndex=h,h.__name__=\"SpatialIndex\"},\n", + " function _(t,s,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(1).__importDefault(t(97)),h=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class n{static from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[s,i]=new Uint8Array(t,0,2);if(251!==s)throw new Error(\"Data does not appear to be in a Flatbush format.\");if(i>>4!=3)throw new Error(`Got v${i>>4} data when expected v3.`);const[e]=new Uint16Array(t,2,1),[o]=new Uint32Array(t,4,1);return new n(o,e,h[15&i],t)}constructor(t,s=16,i=Float64Array,n){if(void 0===t)throw new Error(\"Missing required argument: numItems.\");if(isNaN(t)||t<=0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+s,2),65535);let o=t,r=o;this._levelBounds=[4*o];do{o=Math.ceil(o/this.nodeSize),r+=o,this._levelBounds.push(4*r)}while(1!==o);this.ArrayType=i||Float64Array,this.IndexArrayType=r<16384?Uint16Array:Uint32Array;const a=h.indexOf(this.ArrayType),_=4*r*this.ArrayType.BYTES_PER_ELEMENT;if(a<0)throw new Error(`Unexpected typed array class: ${i}.`);n&&n instanceof ArrayBuffer?(this.data=n,this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=4*r,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+_+r*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+a]),new Uint16Array(this.data,2,1)[0]=s,new Uint32Array(this.data,4,1)[0]=t),this._queue=new e.default}add(t,s,i,e){const h=this._pos>>2;return this._indices[h]=h,this._boxes[this._pos++]=t,this._boxes[this._pos++]=s,this._boxes[this._pos++]=i,this._boxes[this._pos++]=e,tthis.maxX&&(this.maxX=i),e>this.maxY&&(this.maxY=e),h}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);if(this.numItems<=this.nodeSize)return this._boxes[this._pos++]=this.minX,this._boxes[this._pos++]=this.minY,this._boxes[this._pos++]=this.maxX,void(this._boxes[this._pos++]=this.maxY);const t=this.maxX-this.minX,s=this.maxY-this.minY,i=new Uint32Array(this.numItems);for(let e=0;e=Math.floor(n/o))return;const r=s[h+n>>1];let _=h-1,d=n+1;for(;;){do{_++}while(s[_]r);if(_>=d)break;a(s,i,e,_,d)}t(s,i,e,h,d,o),t(s,i,e,d+1,n,o)}(i,this._boxes,this._indices,0,this.numItems-1,this.nodeSize);for(let t=0,s=0;t>2]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=h,this._boxes[this._pos++]=n,this._boxes[this._pos++]=o}}}search(t,s,i,e,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=[],a=[];for(;void 0!==n;){const _=Math.min(n+4*this.nodeSize,r(n,this._levelBounds));for(let r=n;r<_;r+=4){const _=0|this._indices[r>>2];ithis._boxes[r+2]||s>this._boxes[r+3]||(n<4*this.numItems?(void 0===h||h(_))&&a.push(_):o.push(_)))}n=o.pop()}return a}neighbors(t,s,i=1/0,e=1/0,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const a=this._queue,_=[],d=e*e;for(;void 0!==n;){const e=Math.min(n+4*this.nodeSize,r(n,this._levelBounds));for(let i=n;i>2],r=o(t,this._boxes[i],this._boxes[i+2]),_=o(s,this._boxes[i+1],this._boxes[i+3]),d=r*r+_*_;n<4*this.numItems?(void 0===h||h(e))&&a.push(-e-1,d):a.push(e,d)}for(;a.length&&a.peek()<0;){if(a.peekValue()>d)return a.clear(),_;if(_.push(-a.pop()-1),_.length===i)return a.clear(),_}n=a.pop()}return a.clear(),_}}function o(t,s,i){return t>1;s[h]>t?e=h:i=h+1}return s[i]}function a(t,s,i,e,h){const n=t[e];t[e]=t[h],t[h]=n;const o=4*e,r=4*h,a=s[o],_=s[o+1],d=s[o+2],x=s[o+3];s[o]=s[r],s[o+1]=s[r+1],s[o+2]=s[r+2],s[o+3]=s[r+3],s[r]=a,s[r+1]=_,s[r+2]=d,s[r+3]=x;const l=i[e];i[e]=i[h],i[h]=l}function _(t,s){let i=t^s,e=65535^i,h=65535^(t|s),n=t&(65535^s),o=i|e>>1,r=i>>1^i,a=h>>1^e&n>>1^h,_=i&h>>1^n>>1^n;i=o,e=r,h=a,n=_,o=i&i>>2^e&e>>2,r=i&e>>2^e&(i^e)>>2,a^=i&h>>2^e&n>>2,_^=e&h>>2^(i^e)&n>>2,i=o,e=r,h=a,n=_,o=i&i>>4^e&e>>4,r=i&e>>4^e&(i^e)>>4,a^=i&h>>4^e&n>>4,_^=e&h>>4^(i^e)&n>>4,i=o,e=r,h=a,n=_,a^=i&h>>8^e&n>>8,_^=e&h>>8^(i^e)&n>>8,i=a^a>>1,e=_^_>>1;let d=t^s,x=e|65535^(d|i);return d=16711935&(d|d<<8),d=252645135&(d|d<<4),d=858993459&(d|d<<2),d=1431655765&(d|d<<1),x=16711935&(x|x<<8),x=252645135&(x|x<<4),x=858993459&(x|x<<2),x=1431655765&(x|x<<1),(x<<1|d)>>>0}i.default=n},\n", + " function _(s,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});i.default=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(s,t){let i=this.length++;for(this.ids[i]=s,this.values[i]=t;i>0;){const s=i-1>>1,h=this.values[s];if(t>=h)break;this.ids[i]=this.ids[s],this.values[i]=h,i=s}this.ids[i]=s,this.values[i]=t}pop(){if(0===this.length)return;const s=this.ids[0];if(this.length--,this.length>0){const s=this.ids[0]=this.ids[this.length],t=this.values[0]=this.values[this.length],i=this.length>>1;let h=0;for(;h=t)break;this.ids[h]=e,this.values[h]=l,h=s}this.ids[h]=s,this.values[h]=t}return s}peek(){if(0!==this.length)return this.ids[0]}peekValue(){if(0!==this.length)return this.values[0]}}},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=t(1),i=t(99),r=s.__importStar(t(18)),a=t(24),o=t(9),p=t(8),g=t(11);function c(t,e,n=0){const s=new Map;for(let i=0;ia.get(t).value));r.set(t,{value:u/i,mapping:a}),p+=i+e+l}return[r,(a.size-1)*e+g]}function u(t,e,n,s,i=0){var r;const a=new Map,p=new Map;for(const[e,n,s]of t){const t=null!==(r=p.get(e))&&void 0!==r?r:[];p.set(e,[...t,[n,s]])}let g=i,c=0;for(const[t,i]of p){const r=i.length,[p,u]=l(i,n,s,g);c+=u;const h=o.sum(i.map(([t])=>p.get(t).value));a.set(t,{value:h/r,mapping:p}),g+=r+e+u}return[a,(p.size-1)*e+c]}n.map_one_level=c,n.map_two_levels=l,n.map_three_levels=u;class h extends i.Range{constructor(t){super(t)}static init_FactorRange(){this.define({factors:[r.Array,[]],factor_padding:[r.Number,0],subgroup_padding:[r.Number,.8],group_padding:[r.Number,1.4],range_padding:[r.Number,0],range_padding_units:[r.PaddingUnits,\"percent\"],start:[r.Number],end:[r.Number]}),this.internal({levels:[r.Number],mids:[r.Array,null],tops:[r.Array,null]})}get min(){return this.start}get max(){return this.end}initialize(){super.initialize(),this._init(!0)}connect_signals(){super.connect_signals(),this.connect(this.properties.factors.change,()=>this.reset()),this.connect(this.properties.factor_padding.change,()=>this.reset()),this.connect(this.properties.group_padding.change,()=>this.reset()),this.connect(this.properties.subgroup_padding.change,()=>this.reset()),this.connect(this.properties.range_padding.change,()=>this.reset()),this.connect(this.properties.range_padding_units.change,()=>this.reset())}reset(){this._init(!1),this.change.emit()}_lookup(t){switch(t.length){case 1:{const[e]=t,n=this._mapping.get(e);return null!=n?n.value:NaN}case 2:{const[e,n]=t,s=this._mapping.get(e);if(null!=s){const t=s.mapping.get(n);if(null!=t)return t.value}return NaN}case 3:{const[e,n,s]=t,i=this._mapping.get(e);if(null!=i){const t=i.mapping.get(n);if(null!=t){const e=t.mapping.get(s);if(null!=e)return e.value}}return NaN}default:g.unreachable()}}synthetic(t){if(p.isNumber(t))return t;if(p.isString(t))return this._lookup([t]);let e=0;const n=t[t.length-1];return p.isNumber(n)&&(e=n,t=t.slice(0,-1)),this._lookup(t)+e}v_synthetic(t){const e=t.length,n=new a.NumberArray(e);for(let s=0;s{if(o.every(this.factors,p.isString)){const t=this.factors,[e,n]=c(t,this.factor_padding);return{levels:1,mapping:e,tops:null,mids:null,inside_padding:n}}if(o.every(this.factors,t=>p.isArray(t)&&2==t.length&&p.isString(t[0])&&p.isString(t[1]))){const t=this.factors,[e,n]=l(t,this.group_padding,this.factor_padding),s=[...e.keys()];return{levels:2,mapping:e,tops:s,mids:null,inside_padding:n}}if(o.every(this.factors,t=>p.isArray(t)&&3==t.length&&p.isString(t[0])&&p.isString(t[1])&&p.isString(t[2]))){const t=this.factors,[e,n]=u(t,this.group_padding,this.subgroup_padding,this.factor_padding),s=[...e.keys()],i=[];for(const[t,n]of e)for(const e of n.mapping.keys())i.push([t,e]);return{levels:3,mapping:e,tops:s,mids:i,inside_padding:n}}g.unreachable()})();this._mapping=n,this.tops=s,this.mids=i;let a=0,h=this.factors.length+r;if(\"percent\"==this.range_padding_units){const t=(h-a)*this.range_padding/2;a-=t,h+=t}else a-=this.range_padding,h+=this.range_padding;this.setv({start:a,end:h,levels:e},{silent:t}),\"auto\"==this.bounds&&this.setv({bounds:[a,h]},{silent:!0})}}n.FactorRange=h,h.__name__=\"FactorRange\",h.init_FactorRange()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(81),a=n.__importStar(e(18));class r extends s.Model{constructor(e){super(e),this.have_updated_interactively=!1}static init_Range(){this.define({bounds:[a.Any],min_interval:[a.Any],max_interval:[a.Any]}),this.internal({plots:[a.Array,[]]})}get is_reversed(){return this.start>this.end}get is_valid(){return!isNaN(this.min)&&!isNaN(this.max)}}i.Range=r,r.__name__=\"Range\",r.init_Range()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1).__importStar(e(101));i.generic_line_legend=function(e,t,{x0:i,x1:n,y0:c,y1:o},r){t.save(),t.beginPath(),t.moveTo(i,(c+o)/2),t.lineTo(n,(c+o)/2),e.line.doit&&(e.line.set_vectorize(t,r),t.stroke()),t.restore()},i.generic_area_legend=function(e,t,{x0:i,x1:n,y0:c,y1:o},r){const l=.1*Math.abs(n-i),a=.1*Math.abs(o-c),s=i+l,_=n-l,h=c+a,v=o-a;e.fill.doit&&(e.fill.set_vectorize(t,r),t.fillRect(s,h,_-s,v-h)),null!=e.hatch&&e.hatch.doit&&(e.hatch.set_vectorize(t,r),t.fillRect(s,h,_-s,v-h)),e.line&&e.line.doit&&(t.beginPath(),t.rect(s,h,_-s,v-h),e.line.set_vectorize(t,r),t.stroke())},i.line_interpolation=function(e,t,i,c,o,r){const{sx:l,sy:a}=t;let s,_,h,v;\"point\"==t.type?([h,v]=e.yscale.r_invert(a-1,a+1),[s,_]=e.xscale.r_invert(l-1,l+1)):\"v\"==t.direction?([h,v]=e.yscale.r_invert(a,a),[s,_]=[Math.min(i-1,o-1),Math.max(i+1,o+1)]):([s,_]=e.xscale.r_invert(l,l),[h,v]=[Math.min(c-1,r-1),Math.max(c+1,r+1)]);const{x,y}=n.check_2_segments_intersect(s,h,_,v,i,c,o,r);return[x,y]}},\n", + " function _(t,n,e){function i(t,n){return(t.x-n.x)**2+(t.y-n.y)**2}function r(t,n,e){const r=i(n,e);if(0==r)return i(t,n);const s=((t.x-n.x)*(e.x-n.x)+(t.y-n.y)*(e.y-n.y))/r;if(s<0)return i(t,n);if(s>1)return i(t,e);return i(t,{x:n.x+s*(e.x-n.x),y:n.y+s*(e.y-n.y)})}Object.defineProperty(e,\"__esModule\",{value:!0}),e.point_in_poly=function(t,n,e,i){let r=!1,s=e[e.length-1],o=i[i.length-1];for(let u=0;u0&&_<1&&l>0&&l<1,x:t+_*(e-t),y:n+_*(i-n)}}}},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(103),a=t(107),n=t(108),o=t(109),_=t(22);class h{constructor(t){this._atlas=new Map,this._width=256,this._height=256,this.tex=new i.Texture2d(t),this.tex.set_wrapping(t.REPEAT,t.REPEAT),this.tex.set_interpolation(t.NEAREST,t.NEAREST),this.tex.set_size([this._width,this._height],t.RGBA),this.tex.set_data([0,0],[this._width,this._height],new Uint8Array(4*this._width*this._height)),this.get_atlas_data([1])}get_atlas_data(t){const e=t.join(\"-\");let s=this._atlas.get(e);if(null==s){const[i,a]=this.make_pattern(t),n=this._atlas.size;this.tex.set_data([0,n],[this._width,1],new Uint8Array(i.map(t=>t+10))),s=[n/this._height,a],this._atlas.set(e,s)}return s}make_pattern(t){t.length>1&&t.length%2&&(t=t.concat(t));let e=0;for(const s of t)e+=s;const s=[];let i=0;for(let e=0,a=t.length+2;es[r]?-1:0,o=s[r-1],i=s[r]),n[4*t+0]=s[r],n[4*t+1]=_,n[4*t+2]=o,n[4*t+3]=i}return[n,e]}}h.__name__=\"DashAtlas\";const r={miter:0,round:1,bevel:2},l={\"\":0,none:0,\".\":0,round:1,\")\":1,\"(\":1,o:1,\"triangle in\":2,\"<\":2,\"triangle out\":3,\">\":3,square:4,\"[\":4,\"]\":4,\"=\":4,butt:5,\"|\":5};class g extends a.BaseGLGlyph{init(){const{gl:t}=this;this._scale_aspect=0;const e=n.vertex_shader,s=o.fragment_shader;this.prog=new i.Program(t),this.prog.set_shaders(e,s),this.index_buffer=new i.IndexBuffer(t),this.vbo_position=new i.VertexBuffer(t),this.vbo_tangents=new i.VertexBuffer(t),this.vbo_segment=new i.VertexBuffer(t),this.vbo_angles=new i.VertexBuffer(t),this.vbo_texcoord=new i.VertexBuffer(t),this.dash_atlas=new h(t)}draw(t,e,s){const i=e.glglyph;if(i.data_changed&&(i._set_data(),i.data_changed=!1),this.visuals_changed&&(this._set_visuals(),this.visuals_changed=!1),i._update_scale(1,1),this._scale_aspect=1,this.prog.set_attribute(\"a_position\",\"vec2\",i.vbo_position),this.prog.set_attribute(\"a_tangents\",\"vec4\",i.vbo_tangents),this.prog.set_attribute(\"a_segment\",\"vec2\",i.vbo_segment),this.prog.set_attribute(\"a_angles\",\"vec2\",i.vbo_angles),this.prog.set_attribute(\"a_texcoord\",\"vec2\",i.vbo_texcoord),this.prog.set_uniform(\"u_length\",\"float\",[i.cumsum]),this.prog.set_texture(\"u_dash_atlas\",this.dash_atlas.tex),this.prog.set_uniform(\"u_pixel_ratio\",\"float\",[s.pixel_ratio]),this.prog.set_uniform(\"u_canvas_size\",\"vec2\",[s.width,s.height]),this.prog.set_uniform(\"u_scale_aspect\",\"vec2\",[1,1]),this.prog.set_uniform(\"u_scale_length\",\"float\",[Math.sqrt(2)]),this.I_triangles=i.I_triangles,this.I_triangles.length<65535)this.index_buffer.set_size(2*this.I_triangles.length),this.index_buffer.set_data(0,new Uint16Array(this.I_triangles)),this.prog.draw(this.gl.TRIANGLES,this.index_buffer);else{t=Array.from(this.I_triangles);const e=this.I_triangles.length,s=64008,a=[];for(let t=0,i=Math.ceil(e/s);t1)for(let e=0;e0||console.log(`Variable ${t} is not an active attribute`));else if(this._unset_variables.has(t)&&this._unset_variables.delete(t),this.activate(),i instanceof s.VertexBuffer){const[s,n]=this.ATYPEINFO[e],h=\"vertexAttribPointer\",l=[s,n,!1,a,r];this._attributes.set(t,[i.handle,o,h,l])}else{const s=this.ATYPEMAP[e];this._attributes.set(t,[null,o,s,i])}}_pre_draw(){this.activate();for(const[t,e,i]of this._samplers.values())this.gl.activeTexture(this.gl.TEXTURE0+i),this.gl.bindTexture(t,e);for(const[t,e,i,s]of this._attributes.values())null!=t?(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t),this.gl.enableVertexAttribArray(e),this.gl[i].apply(this.gl,[e,...s])):(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null),this.gl.disableVertexAttribArray(e),this.gl[i].apply(this.gl,[e,...s]));this._validated||(this._validated=!0,this._validate())}_validate(){if(this._unset_variables.size&&console.log(\"Program has unset variables: \"+this._unset_variables),this.gl.validateProgram(this.handle),!this.gl.getProgramParameter(this.handle,this.gl.VALIDATE_STATUS))throw console.log(this.gl.getProgramInfoLog(this.handle)),new Error(\"Program validation error\")}draw(t,e){if(!this._linked)throw new Error(\"Cannot draw program if code has not been set\");if(e instanceof s.IndexBuffer){this._pre_draw(),e.activate();const i=e.buffer_size/2,s=this.gl.UNSIGNED_SHORT;this.gl.drawElements(t,i,s,0),e.deactivate()}else{const[i,s]=e;0!=s&&(this._pre_draw(),this.gl.drawArrays(t,i,s))}}}i.Program=a,a.__name__=\"Program\"},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});class i{constructor(e){this.gl=e,this._usage=35048,this.buffer_size=0,this.handle=this.gl.createBuffer()}delete(){this.gl.deleteBuffer(this.handle)}activate(){this.gl.bindBuffer(this._target,this.handle)}deactivate(){this.gl.bindBuffer(this._target,null)}set_size(e){e!=this.buffer_size&&(this.activate(),this.gl.bufferData(this._target,e,this._usage),this.buffer_size=e)}set_data(e,t){this.activate(),this.gl.bufferSubData(this._target,e,t)}}s.Buffer=i,i.__name__=\"Buffer\";class r extends i{constructor(){super(...arguments),this._target=34962}}s.VertexBuffer=r,r.__name__=\"VertexBuffer\";class a extends i{constructor(){super(...arguments),this._target=34963}}s.IndexBuffer=a,a.__name__=\"IndexBuffer\"},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const a=t(11);class r{constructor(t){this.gl=t,this._target=3553,this._types={Int8Array:5120,Uint8Array:5121,Int16Array:5122,Uint16Array:5123,Int32Array:5124,Uint32Array:5125,Float32Array:5126},this.handle=this.gl.createTexture()}delete(){this.gl.deleteTexture(this.handle)}activate(){this.gl.bindTexture(this._target,this.handle)}deactivate(){this.gl.bindTexture(this._target,0)}_get_alignment(t){const e=[4,8,2,1];for(const i of e)if(t%i==0)return i;a.unreachable()}set_wrapping(t,e){this.activate(),this.gl.texParameterf(this._target,this.gl.TEXTURE_WRAP_S,t),this.gl.texParameterf(this._target,this.gl.TEXTURE_WRAP_T,e)}set_interpolation(t,e){this.activate(),this.gl.texParameterf(this._target,this.gl.TEXTURE_MIN_FILTER,t),this.gl.texParameterf(this._target,this.gl.TEXTURE_MAG_FILTER,e)}set_size([t,e],i){var a,r,s;t==(null===(a=this._shape_format)||void 0===a?void 0:a.width)&&e==(null===(r=this._shape_format)||void 0===r?void 0:r.height)&&i==(null===(s=this._shape_format)||void 0===s?void 0:s.format)||(this._shape_format={width:t,height:e,format:i},this.activate(),this.gl.texImage2D(this._target,0,i,t,e,0,i,this.gl.UNSIGNED_BYTE,null))}set_data(t,[e,i],a){this.activate();const{format:r}=this._shape_format,[s,h]=t,l=this._types[a.constructor.name];if(null==l)throw new Error(`Type ${a.constructor.name} not allowed for texture`);const _=this._get_alignment(e);4!=_&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,_),this.gl.texSubImage2D(this._target,0,s,h,e,i,r,l,a),4!=_&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,4)}}i.Texture2d=r,r.__name__=\"Texture2d\"},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});class s{constructor(e,t){this.gl=e,this.glyph=t,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1,this.init()}set_data_changed(){const{data_size:e}=this.glyph;e!=this.nvertices&&(this.nvertices=e,this.size_changed=!0),this.data_changed=!0}set_visuals_changed(){this.visuals_changed=!0}render(e,t,i){if(0==t.length)return!0;const{width:s,height:h}=this.glyph.renderer.plot_view.canvas_view.webgl.canvas,a={pixel_ratio:this.glyph.renderer.plot_view.canvas_view.pixel_ratio,width:s,height:h};return this.draw(t,i,a),!0}}i.BaseGLGlyph=s,s.__name__=\"BaseGLGlyph\"},\n", + " function _(n,e,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.vertex_shader=\"\\nprecision mediump float;\\n\\nconst float PI = 3.14159265358979323846264;\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\n\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size, u_offset;\\nuniform vec2 u_scale_aspect;\\nuniform float u_scale_length;\\n\\nuniform vec4 u_color;\\nuniform float u_antialias;\\nuniform float u_length;\\nuniform float u_linewidth;\\nuniform float u_dash_index;\\nuniform float u_closed;\\n\\nattribute vec2 a_position;\\nattribute vec4 a_tangents;\\nattribute vec2 a_segment;\\nattribute vec2 a_angles;\\nattribute vec2 a_texcoord;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_segment;\\nvarying vec2 v_angles;\\nvarying vec2 v_texcoord;\\nvarying vec2 v_miter;\\nvarying float v_length;\\nvarying float v_linewidth;\\n\\nfloat cross(in vec2 v1, in vec2 v2)\\n{\\n return v1.x*v2.y - v1.y*v2.x;\\n}\\n\\nfloat signed_distance(in vec2 v1, in vec2 v2, in vec2 v3)\\n{\\n return cross(v2-v1,v1-v3) / length(v2-v1);\\n}\\n\\nvoid rotate( in vec2 v, in float alpha, out vec2 result )\\n{\\n float c = cos(alpha);\\n float s = sin(alpha);\\n result = vec2( c*v.x - s*v.y,\\n s*v.x + c*v.y );\\n}\\n\\nvoid main()\\n{\\n bool closed = (u_closed > 0.0);\\n\\n // Attributes and uniforms to varyings\\n v_color = u_color;\\n v_linewidth = u_linewidth;\\n v_segment = a_segment * u_scale_length;\\n v_length = u_length * u_scale_length;\\n\\n // Scale to map to pixel coordinates. The original algorithm from the paper\\n // assumed isotropic scale. We obviously do not have this.\\n vec2 abs_scale_aspect = abs(u_scale_aspect);\\n vec2 abs_scale = u_scale_length * abs_scale_aspect;\\n\\n // Correct angles for aspect ratio\\n vec2 av;\\n av = vec2(1.0, tan(a_angles.x)) / abs_scale_aspect;\\n v_angles.x = atan(av.y, av.x);\\n av = vec2(1.0, tan(a_angles.y)) / abs_scale_aspect;\\n v_angles.y = atan(av.y, av.x);\\n\\n // Thickness below 1 pixel are represented using a 1 pixel thickness\\n // and a modified alpha\\n v_color.a = min(v_linewidth, v_color.a);\\n v_linewidth = max(v_linewidth, 1.0);\\n\\n // If color is fully transparent we just will discard the fragment anyway\\n if( v_color.a <= 0.0 ) {\\n gl_Position = vec4(0.0,0.0,0.0,1.0);\\n return;\\n }\\n\\n // This is the actual half width of the line\\n float w = ceil(u_antialias+v_linewidth)/2.0;\\n\\n vec2 position = a_position;\\n\\n vec2 t1 = normalize(a_tangents.xy * abs_scale_aspect); // note the scaling for aspect ratio here\\n vec2 t2 = normalize(a_tangents.zw * abs_scale_aspect);\\n float u = a_texcoord.x;\\n float v = a_texcoord.y;\\n vec2 o1 = vec2( +t1.y, -t1.x);\\n vec2 o2 = vec2( +t2.y, -t2.x);\\n\\n // This is a join\\n // ----------------------------------------------------------------\\n if( t1 != t2 ) {\\n float angle = atan (t1.x*t2.y-t1.y*t2.x, t1.x*t2.x+t1.y*t2.y); // Angle needs recalculation for some reason\\n vec2 t = normalize(t1+t2);\\n vec2 o = vec2( + t.y, - t.x);\\n\\n if ( u_dash_index > 0.0 )\\n {\\n // Broken angle\\n // ----------------------------------------------------------------\\n if( (abs(angle) > THETA) ) {\\n position += v * w * o / cos(angle/2.0);\\n float s = sign(angle);\\n if( angle < 0.0 ) {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n if( v == 1.0 ) {\\n position -= 2.0 * w * t1 / sin(angle);\\n u -= 2.0 * w / sin(angle);\\n }\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n if( v == 1.0 ) {\\n position += 2.0 * w * t2 / sin(angle);\\n u += 2.0*w / sin(angle);\\n }\\n }\\n } else {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n if( v == -1.0 ) {\\n position += 2.0 * w * t1 / sin(angle);\\n u += 2.0 * w / sin(angle);\\n }\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n if( v == -1.0 ) {\\n position -= 2.0 * w * t2 / sin(angle);\\n u -= 2.0*w / sin(angle);\\n }\\n }\\n }\\n // Continuous angle\\n // ------------------------------------------------------------\\n } else {\\n position += v * w * o / cos(angle/2.0);\\n if( u == +1.0 ) u = v_segment.y;\\n else u = v_segment.x;\\n }\\n }\\n\\n // Solid line\\n // --------------------------------------------------------------------\\n else\\n {\\n position.xy += v * w * o / cos(angle/2.0);\\n if( angle < 0.0 ) {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n }\\n } else {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n }\\n }\\n }\\n\\n // This is a line start or end (t1 == t2)\\n // ------------------------------------------------------------------------\\n } else {\\n position += v * w * o1;\\n if( u == -1.0 ) {\\n u = v_segment.x - w;\\n position -= w * t1;\\n } else {\\n u = v_segment.y + w;\\n position += w * t2;\\n }\\n }\\n\\n // Miter distance\\n // ------------------------------------------------------------------------\\n vec2 t;\\n vec2 curr = a_position * abs_scale;\\n if( a_texcoord.x < 0.0 ) {\\n vec2 next = curr + t2*(v_segment.y-v_segment.x);\\n\\n rotate( t1, +v_angles.x/2.0, t);\\n v_miter.x = signed_distance(curr, curr+t, position);\\n\\n rotate( t2, +v_angles.y/2.0, t);\\n v_miter.y = signed_distance(next, next+t, position);\\n } else {\\n vec2 prev = curr - t1*(v_segment.y-v_segment.x);\\n\\n rotate( t1, -v_angles.x/2.0,t);\\n v_miter.x = signed_distance(prev, prev+t, position);\\n\\n rotate( t2, -v_angles.y/2.0,t);\\n v_miter.y = signed_distance(curr, curr+t, position);\\n }\\n\\n if (!closed && v_segment.x <= 0.0) {\\n v_miter.x = 1e10;\\n }\\n if (!closed && v_segment.y >= v_length)\\n {\\n v_miter.y = 1e10;\\n }\\n\\n v_texcoord = vec2( u, v*w );\\n\\n // Calculate position in device coordinates. Note that we\\n // already scaled with abs scale above.\\n vec2 normpos = position * sign(u_scale_aspect);\\n normpos += 0.5; // make up for Bokeh's offset\\n normpos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(normpos*2.0-1.0, 0.0, 1.0);\\n gl_Position.y *= -1.0;\\n}\\n\"},\n", + " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0}),e.fragment_shader=\"\\nprecision mediump float;\\n\\nconst float PI = 3.14159265358979323846264;\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\n\\nuniform sampler2D u_dash_atlas;\\n\\nuniform vec2 u_linecaps;\\nuniform float u_miter_limit;\\nuniform float u_linejoin;\\nuniform float u_antialias;\\nuniform float u_dash_phase;\\nuniform float u_dash_period;\\nuniform float u_dash_index;\\nuniform vec2 u_dash_caps;\\nuniform float u_closed;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_segment;\\nvarying vec2 v_angles;\\nvarying vec2 v_texcoord;\\nvarying vec2 v_miter;\\nvarying float v_length;\\nvarying float v_linewidth;\\n\\n// Compute distance to cap ----------------------------------------------------\\nfloat cap( int type, float dx, float dy, float t, float linewidth )\\n{\\n float d = 0.0;\\n dx = abs(dx);\\n dy = abs(dy);\\n if (type == 0) discard; // None\\n else if (type == 1) d = sqrt(dx*dx+dy*dy); // Round\\n else if (type == 3) d = (dx+abs(dy)); // Triangle in\\n else if (type == 2) d = max(abs(dy),(t+dx-abs(dy))); // Triangle out\\n else if (type == 4) d = max(dx,dy); // Square\\n else if (type == 5) d = max(dx+t,dy); // Butt\\n return d;\\n}\\n\\n// Compute distance to join -------------------------------------------------\\nfloat join( in int type, in float d, in vec2 segment, in vec2 texcoord, in vec2 miter,\\n in float linewidth )\\n{\\n // texcoord.x is distance from start\\n // texcoord.y is distance from centerline\\n // segment.x and y indicate the limits (as for texcoord.x) for this segment\\n\\n float dx = texcoord.x;\\n\\n // Round join\\n if( type == 1 ) {\\n if (dx < segment.x) {\\n d = max(d,length( texcoord - vec2(segment.x,0.0)));\\n //d = length( texcoord - vec2(segment.x,0.0));\\n } else if (dx > segment.y) {\\n d = max(d,length( texcoord - vec2(segment.y,0.0)));\\n //d = length( texcoord - vec2(segment.y,0.0));\\n }\\n }\\n // Bevel join\\n else if ( type == 2 ) {\\n if (dx < segment.x) {\\n vec2 x = texcoord - vec2(segment.x,0.0);\\n d = max(d, max(abs(x.x), abs(x.y)));\\n\\n } else if (dx > segment.y) {\\n vec2 x = texcoord - vec2(segment.y,0.0);\\n d = max(d, max(abs(x.x), abs(x.y)));\\n }\\n /* Original code for bevel which does not work for us\\n if( (dx < segment.x) || (dx > segment.y) )\\n d = max(d, min(abs(x.x),abs(x.y)));\\n */\\n }\\n\\n return d;\\n}\\n\\nvoid main()\\n{\\n // If color is fully transparent we just discard the fragment\\n if( v_color.a <= 0.0 ) {\\n discard;\\n }\\n\\n // Test if dash pattern is the solid one (0)\\n bool solid = (u_dash_index == 0.0);\\n\\n // Test if path is closed\\n bool closed = (u_closed > 0.0);\\n\\n vec4 color = v_color;\\n float dx = v_texcoord.x;\\n float dy = v_texcoord.y;\\n float t = v_linewidth/2.0-u_antialias;\\n float width = 1.0; //v_linewidth; original code had dashes scale with line width, we do not\\n float d = 0.0;\\n\\n vec2 linecaps = u_linecaps;\\n vec2 dash_caps = u_dash_caps;\\n float line_start = 0.0;\\n float line_stop = v_length;\\n\\n // Apply miter limit; fragments too far into the miter are simply discarded\\n if( (dx < v_segment.x) || (dx > v_segment.y) ) {\\n float into_miter = max(v_segment.x - dx, dx - v_segment.y);\\n if (into_miter > u_miter_limit*v_linewidth/2.0)\\n discard;\\n }\\n\\n // Solid line --------------------------------------------------------------\\n if( solid ) {\\n d = abs(dy);\\n if( (!closed) && (dx < line_start) ) {\\n d = cap( int(u_linecaps.x), abs(dx), abs(dy), t, v_linewidth );\\n }\\n else if( (!closed) && (dx > line_stop) ) {\\n d = cap( int(u_linecaps.y), abs(dx)-line_stop, abs(dy), t, v_linewidth );\\n }\\n else {\\n d = join( int(u_linejoin), abs(dy), v_segment, v_texcoord, v_miter, v_linewidth );\\n }\\n\\n // Dash line --------------------------------------------------------------\\n } else {\\n float segment_start = v_segment.x;\\n float segment_stop = v_segment.y;\\n float segment_center= (segment_start+segment_stop)/2.0;\\n float freq = u_dash_period*width;\\n float u = mod( dx + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n float dash_center= tex.x * width;\\n float dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n float dash_start = dx - u + _start;\\n float dash_stop = dx - u + _stop;\\n\\n // Compute extents of the first dash (the one relative to v_segment.x)\\n // Note: this could be computed in the vertex shader\\n if( (dash_stop < segment_start) && (dash_caps.x != 5.0) ) {\\n float u = mod(segment_start + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n dash_center= tex.x * width;\\n //dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n dash_start = segment_start - u + _start;\\n dash_stop = segment_start - u + _stop;\\n }\\n\\n // Compute extents of the last dash (the one relatives to v_segment.y)\\n // Note: This could be computed in the vertex shader\\n else if( (dash_start > segment_stop) && (dash_caps.y != 5.0) ) {\\n float u = mod(segment_stop + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n dash_center= tex.x * width;\\n //dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n dash_start = segment_stop - u + _start;\\n dash_stop = segment_stop - u + _stop;\\n }\\n\\n // This test if the we are dealing with a discontinuous angle\\n bool discontinuous = ((dx < segment_center) && abs(v_angles.x) > THETA) ||\\n ((dx >= segment_center) && abs(v_angles.y) > THETA);\\n //if( dx < line_start) discontinuous = false;\\n //if( dx > line_stop) discontinuous = false;\\n\\n float d_join = join( int(u_linejoin), abs(dy),\\n v_segment, v_texcoord, v_miter, v_linewidth );\\n\\n // When path is closed, we do not have room for linecaps, so we make room\\n // by shortening the total length\\n if (closed) {\\n line_start += v_linewidth/2.0;\\n line_stop -= v_linewidth/2.0;\\n }\\n\\n // We also need to take antialias area into account\\n //line_start += u_antialias;\\n //line_stop -= u_antialias;\\n\\n // Check is dash stop is before line start\\n if( dash_stop <= line_start ) {\\n discard;\\n }\\n // Check is dash start is beyond line stop\\n if( dash_start >= line_stop ) {\\n discard;\\n }\\n\\n // Check if current dash start is beyond segment stop\\n if( discontinuous ) {\\n // Dash start is beyond segment, we discard\\n if( (dash_start > segment_stop) ) {\\n discard;\\n //gl_FragColor = vec4(1.0,0.0,0.0,.25); return;\\n }\\n\\n // Dash stop is before segment, we discard\\n if( (dash_stop < segment_start) ) {\\n discard; //gl_FragColor = vec4(0.0,1.0,0.0,.25); return;\\n }\\n\\n // Special case for round caps (nicer with this)\\n if( dash_caps.x == 1.0 ) {\\n if( (u > _stop) && (dash_stop > segment_stop ) && (abs(v_angles.y) < PI/2.0)) {\\n discard;\\n }\\n }\\n\\n // Special case for round caps (nicer with this)\\n if( dash_caps.y == 1.0 ) {\\n if( (u < _start) && (dash_start < segment_start ) && (abs(v_angles.x) < PI/2.0)) {\\n discard;\\n }\\n }\\n\\n // Special case for triangle caps (in & out) and square\\n // We make sure the cap stop at crossing frontier\\n if( (dash_caps.x != 1.0) && (dash_caps.x != 5.0) ) {\\n if( (dash_start < segment_start ) && (abs(v_angles.x) < PI/2.0) ) {\\n float a = v_angles.x/2.0;\\n float x = (segment_start-dx)*cos(a) - dy*sin(a);\\n float y = (segment_start-dx)*sin(a) + dy*cos(a);\\n if( x > 0.0 ) discard;\\n // We transform the cap into square to avoid holes\\n dash_caps.x = 4.0;\\n }\\n }\\n\\n // Special case for triangle caps (in & out) and square\\n // We make sure the cap stop at crossing frontier\\n if( (dash_caps.y != 1.0) && (dash_caps.y != 5.0) ) {\\n if( (dash_stop > segment_stop ) && (abs(v_angles.y) < PI/2.0) ) {\\n float a = v_angles.y/2.0;\\n float x = (dx-segment_stop)*cos(a) - dy*sin(a);\\n float y = (dx-segment_stop)*sin(a) + dy*cos(a);\\n if( x > 0.0 ) discard;\\n // We transform the caps into square to avoid holes\\n dash_caps.y = 4.0;\\n }\\n }\\n }\\n\\n // Line cap at start\\n if( (dx < line_start) && (dash_start < line_start) && (dash_stop > line_start) ) {\\n d = cap( int(linecaps.x), dx-line_start, dy, t, v_linewidth);\\n }\\n // Line cap at stop\\n else if( (dx > line_stop) && (dash_stop > line_stop) && (dash_start < line_stop) ) {\\n d = cap( int(linecaps.y), dx-line_stop, dy, t, v_linewidth);\\n }\\n // Dash cap left - dash_type = -1, 0 or 1, but there may be roundoff errors\\n else if( dash_type < -0.5 ) {\\n d = cap( int(dash_caps.y), abs(u-dash_center), dy, t, v_linewidth);\\n if( (dx > line_start) && (dx < line_stop) )\\n d = max(d,d_join);\\n }\\n // Dash cap right\\n else if( dash_type > 0.5 ) {\\n d = cap( int(dash_caps.x), abs(dash_center-u), dy, t, v_linewidth);\\n if( (dx > line_start) && (dx < line_stop) )\\n d = max(d,d_join);\\n }\\n // Dash body (plain)\\n else {// if( dash_type > -0.5 && dash_type < 0.5) {\\n d = abs(dy);\\n }\\n\\n // Line join\\n if( (dx > line_start) && (dx < line_stop)) {\\n if( (dx <= segment_start) && (dash_start <= segment_start)\\n && (dash_stop >= segment_start) ) {\\n d = d_join;\\n // Antialias at outer border\\n float angle = PI/2.+v_angles.x;\\n float f = abs( (segment_start - dx)*cos(angle) - dy*sin(angle));\\n d = max(f,d);\\n }\\n else if( (dx > segment_stop) && (dash_start <= segment_stop)\\n && (dash_stop >= segment_stop) ) {\\n d = d_join;\\n // Antialias at outer border\\n float angle = PI/2.+v_angles.y;\\n float f = abs((dx - segment_stop)*cos(angle) - dy*sin(angle));\\n d = max(f,d);\\n }\\n else if( dx < (segment_start - v_linewidth/2.)) {\\n discard;\\n }\\n else if( dx > (segment_stop + v_linewidth/2.)) {\\n discard;\\n }\\n }\\n else if( dx < (segment_start - v_linewidth/2.)) {\\n discard;\\n }\\n else if( dx > (segment_stop + v_linewidth/2.)) {\\n discard;\\n }\\n }\\n\\n // Distance to border ------------------------------------------------------\\n d = d - t;\\n if( d < 0.0 ) {\\n gl_FragColor = color;\\n } else {\\n d /= u_antialias;\\n gl_FragColor = vec4(color.rgb, exp(-d*d)*color.a);\\n }\\n}\\n\"},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1),l=e(93),_=e(100),n=s.__importStar(e(101)),o=s.__importStar(e(28)),a=e(88);class h extends l.XYGlyphView{_inner_loop(e,i,t,s,l){for(const _ of i)0!=_?isNaN(t[_]+s[_])?(e.closePath(),l.apply(e),e.beginPath()):e.lineTo(t[_],s[_]):(e.beginPath(),e.moveTo(t[_],s[_]));e.closePath(),l.call(e)}_render(e,i,{sx:t,sy:s}){this.visuals.fill.doit&&(this.visuals.fill.set_value(e),this._inner_loop(e,i,t,s,e.fill)),this.visuals.hatch.doit2(e,0,()=>this._inner_loop(e,i,t,s,e.fill),()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_value(e),this._inner_loop(e,i,t,s,e.stroke))}draw_legend_for_index(e,i,t){_.generic_area_legend(this.visuals,e,i,t)}_hit_point(e){const i=new a.Selection;return n.point_in_poly(e.sx,e.sy,this.sx,this.sy)&&(i.add_to_selected_glyphs(this.model),i.view=this),i}}t.PatchView=h,h.__name__=\"PatchView\";class r extends l.XYGlyph{constructor(e){super(e)}static init_Patch(){this.prototype.default_view=h,this.mixins([o.Line,o.Fill,o.Hatch])}}t.Patch=r,r.__name__=\"Patch\",r.init_Patch()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),r=e(24),n=e(112),a=i.__importStar(e(101)),_=i.__importStar(e(18)),h=e(88);class l extends n.AreaView{_index_data(e){const{min:t,max:s}=Math,{data_size:i}=this;for(let r=0;r=0;t--)e.lineTo(s[t],i[t]);e.closePath(),r.call(e)}_render(e,t,{sx1:s,sx2:i,sy:r}){this.visuals.fill.doit&&(this.visuals.fill.set_value(e),this._inner(e,s,i,r,e.fill)),this.visuals.hatch.doit2(e,0,()=>this._inner(e,s,i,r,e.fill),()=>this.renderer.request_render())}_hit_point(e){const t=this.sy.length,s=new r.NumberArray(2*t),i=new r.NumberArray(2*t);for(let e=0,r=t;e=0;s--)e.lineTo(t[s],i[s]);e.closePath(),r.call(e)}_render(e,t,{sx:s,sy1:i,sy2:r}){this.visuals.fill.doit&&(this.visuals.fill.set_value(e),this._inner(e,s,i,r,e.fill)),this.visuals.hatch.doit2(e,0,()=>this._inner(e,s,i,r,e.fill),()=>this.renderer.request_render())}scenterxy(e){return[this.sx[e],(this.sy1[e]+this.sy2[e])/2]}_hit_point(e){const t=this.sx.length,s=new r.NumberArray(2*t),i=new r.NumberArray(2*t);for(let e=0,r=t;ethis.compute_indices());const i=()=>{const i=()=>this.compute_indices();null!=this.source&&(this.connect(this.source.change,i),this.source instanceof _.ColumnarDataSource&&(this.connect(this.source.streaming,i),this.connect(this.source.patching,i)))};let e=null!=this.source;e?i():this.connect(this.properties.source.change,()=>{e||(i(),e=!0)})}compute_indices(){var i;const{source:e}=this;if(null==e)return;const s=null!==(i=e.get_length())&&void 0!==i?i:1,t=r.Indices.all_set(s);for(const i of this.filters)t.intersect(i.compute_indices(e));this.indices=t,this._indices=[...t],this.indices_map_to_subset()}indices_map_to_subset(){this.indices_map={};for(let i=0;ithis._indices[i]);return new o.Selection(Object.assign(Object.assign({},i.attributes),{indices:e}))}convert_selection_to_subset(i){const e=i.indices.map(i=>this.indices_map[i]);return new o.Selection(Object.assign(Object.assign({},i.attributes),{indices:e}))}convert_indices_from_subset(i){return i.map(i=>this._indices[i])}}s.CDSView=a,a.__name__=\"CDSView\",a.init_CDSView()},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(9);async function i(e,n,t){const o=new e(Object.assign(Object.assign({},t),{model:n}));return o.initialize(),await o.lazy_initialize(),o}t.build_view=async function(e,n={parent:null},t=(e=>e.default_view)){const o=await i(t(e),e,n);return o.connect_signals(),o},t.build_views=async function(e,n,t={parent:null},s=(e=>e.default_view)){const c=o.difference([...e.keys()],n);for(const n of c)e.get(n).remove(),e.delete(n);const a=[],f=n.filter(n=>!e.has(n));for(const n of f){const o=await i(s(n),n,t);e.set(n,o),a.push(o)}for(const e of a)e.connect_signals();return a},t.remove_views=function(e){for(const[n,t]of e)t.remove(),e.delete(n)}},\n", + " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(1),i=e(91),s=e(117),a=t.__importStar(e(18)),o=e(115),_=e(11);class l extends i.DataRendererView{async lazy_initialize(){await super.lazy_initialize();const e=this.model;let r=null,n=null;const t={v_compute(n){_.assert(null==r);const[t]=r=e.layout_provider.get_edge_coordinates(n);return t}},i={v_compute(e){_.assert(null!=r);const[,n]=r;return r=null,n}},s={v_compute(r){_.assert(null==n);const[t]=n=e.layout_provider.get_node_coordinates(r);return t}},a={v_compute(e){_.assert(null!=n);const[,r]=n;return n=null,r}},{edge_renderer:l,node_renderer:d}=this.model;l.glyph.properties.xs.internal=!0,l.glyph.properties.ys.internal=!0,d.glyph.properties.x.internal=!0,d.glyph.properties.y.internal=!0,l.glyph.xs={expr:t},l.glyph.ys={expr:i},d.glyph.x={expr:s},d.glyph.y={expr:a};const{parent:p}=this;this.edge_view=await o.build_view(l,{parent:p}),this.node_view=await o.build_view(d,{parent:p})}connect_signals(){super.connect_signals(),this.connect(this.model.layout_provider.change,()=>{this.edge_view.set_data(!1),this.node_view.set_data(!1),this.request_render()})}remove(){this.edge_view.remove(),this.node_view.remove(),super.remove()}_render(){this.edge_view.render(),this.node_view.render()}}n.GraphRendererView=l,l.__name__=\"GraphRendererView\";class d extends i.DataRenderer{constructor(e){super(e)}static init_GraphRenderer(){this.prototype.default_view=l,this.define({layout_provider:[a.Instance],node_renderer:[a.Instance],edge_renderer:[a.Instance],selection_policy:[a.Instance,()=>new s.NodesOnly],inspection_policy:[a.Instance,()=>new s.NodesOnly]})}get_selection_manager(){return this.node_renderer.data_source.selection_manager}}n.GraphRenderer=d,d.__name__=\"GraphRenderer\",d.init_GraphRenderer()},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const d=e(81),s=e(12),o=e(9),_=e(88);class i extends d.Model{constructor(e){super(e)}_hit_test_nodes(e,t){if(!t.model.visible)return null;const n=t.node_view.glyph.hit_test(e);return null==n?null:t.node_view.model.view.convert_selection_from_subset(n)}_hit_test_edges(e,t){if(!t.model.visible)return null;const n=t.edge_view.glyph.hit_test(e);return null==n?null:t.edge_view.model.view.convert_selection_from_subset(n)}}n.GraphHitTestPolicy=i,i.__name__=\"GraphHitTestPolicy\";class r extends i{constructor(e){super(e)}hit_test(e,t){return this._hit_test_nodes(e,t)}do_selection(e,t,n,d){if(null==e)return!1;const s=t.node_renderer.data_source.selected;return s.update(e,n,d),t.node_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,n,d,s){if(null==e)return!1;const o=n.model.get_selection_manager().get_or_create_inspector(n.node_view.model);return o.update(e,d,s),n.node_view.model.data_source.setv({inspected:o},{silent:!0}),n.node_view.model.data_source.inspect.emit([n.node_view,{geometry:t}]),!o.is_empty()}}n.NodesOnly=r,r.__name__=\"NodesOnly\";class c extends i{constructor(e){super(e)}hit_test(e,t){return this._hit_test_nodes(e,t)}get_linked_edges(e,t,n){let d=[];\"selection\"==n?d=e.selected.indices.map(t=>e.data.index[t]):\"inspection\"==n&&(d=e.inspected.indices.map(t=>e.data.index[t]));const s=[];for(let e=0;es.indexOf(e.data.index,t));return new _.Selection({indices:r})}do_selection(e,t,n,d){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;s.update(e,n,d);const o=t.node_renderer.data_source.selected,_=this.get_linked_nodes(t.node_renderer.data_source,t.edge_renderer.data_source,\"selection\");return o.update(_,n,d),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,n,d,s){if(null==e)return!1;const o=n.edge_view.model.data_source.selection_manager.get_or_create_inspector(n.edge_view.model);o.update(e,d,s),n.edge_view.model.data_source.setv({inspected:o},{silent:!0});const _=n.node_view.model.data_source.selection_manager.get_or_create_inspector(n.node_view.model),i=this.get_linked_nodes(n.node_view.model.data_source,n.edge_view.model.data_source,\"inspection\");return _.update(i,d,s),n.node_view.model.data_source.setv({inspected:_},{silent:!0}),n.edge_view.model.data_source.inspect.emit([n.edge_view,{geometry:t}]),!o.is_empty()}}n.EdgesAndLinkedNodes=a,a.__name__=\"EdgesAndLinkedNodes\"},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=e(81);class o extends s.Model{do_selection(e,t,n,s){return null!==e&&(t.selected.update(e,n,s),t._select.emit(),!t.selected.is_empty())}}n.SelectionPolicy=o,o.__name__=\"SelectionPolicy\";class r extends o{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!==t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_intersection(t);return e}return null}}n.IntersectRenderers=r,r.__name__=\"IntersectRenderers\";class c extends o{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!==t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_union(t);return e}return null}}n.UnionRenderers=c,c.__name__=\"UnionRenderers\"},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0}),n.concat=function(t,...e){let n=t.length;for(const t of e)n+=t.length;const o=new t.constructor(n);o.set(t,0);let c=t.length;for(const t of e)o.set(t,c),c+=t.length;return o}},\n", + " function _(n,o,e){function t(...n){const o=new Set;for(const e of n)for(const n of e)o.add(n);return o}Object.defineProperty(e,\"__esModule\",{value:!0}),e.union=t,e.intersection=function(n,...o){const e=new Set;n:for(const t of n){for(const n of o)if(!n.has(t))continue n;e.add(t)}return e},e.difference=function(n,...o){const e=new Set(n);for(const n of t(...o))e.delete(n);return e}},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(14);class o{constructor(e){this.document=e}}s.DocumentEvent=o,o.__name__=\"DocumentEvent\";class r extends o{constructor(e,t,s){super(e),this.events=t,this.setter_id=s}}s.DocumentEventBatch=r,r.__name__=\"DocumentEventBatch\";class d extends o{}s.DocumentChangedEvent=d,d.__name__=\"DocumentChangedEvent\";class _ extends d{constructor(e,t,s){super(e),this.msg_type=t,this.msg_data=s}json(e){const t=this.msg_data,s=n.HasProps._value_to_json(t),o=new Set;return n.HasProps._value_record_references(t,o,{recursive:!0}),{kind:\"MessageSent\",msg_type:this.msg_type,msg_data:s}}}s.MessageSentEvent=_,_.__name__=\"MessageSentEvent\";class i extends d{constructor(e,t,s,n,o,r,d){super(e),this.model=t,this.attr=s,this.old=n,this.new_=o,this.setter_id=r,this.hint=d}json(e){if(\"id\"===this.attr)throw new Error(\"'id' field should never change, whatever code just set it is wrong\");if(null!=this.hint)return this.hint.json(e);const t=this.new_,s=n.HasProps._value_to_json(t),o=new Set;n.HasProps._value_record_references(t,o,{recursive:!0}),o.has(this.model)&&this.model!==t&&o.delete(this.model);for(const t of o)e.add(t);return{kind:\"ModelChanged\",model:this.model.ref(),attr:this.attr,new:s}}}s.ModelChangedEvent=i,i.__name__=\"ModelChangedEvent\";class a extends d{constructor(e,t,s){super(e),this.column_source=t,this.patches=s}json(e){return{kind:\"ColumnsPatched\",column_source:this.column_source,patches:this.patches}}}s.ColumnsPatchedEvent=a,a.__name__=\"ColumnsPatchedEvent\";class c extends d{constructor(e,t,s,n){super(e),this.column_source=t,this.data=s,this.rollover=n}json(e){return{kind:\"ColumnsStreamed\",column_source:this.column_source,data:this.data,rollover:this.rollover}}}s.ColumnsStreamedEvent=c,c.__name__=\"ColumnsStreamedEvent\";class h extends d{constructor(e,t,s){super(e),this.title=t,this.setter_id=s}json(e){return{kind:\"TitleChanged\",title:this.title}}}s.TitleChangedEvent=h,h.__name__=\"TitleChangedEvent\";class u extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}json(e){return n.HasProps._value_record_references(this.model,e,{recursive:!0}),{kind:\"RootAdded\",model:this.model.ref()}}}s.RootAddedEvent=u,u.__name__=\"RootAddedEvent\";class l extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}json(e){return{kind:\"RootRemoved\",model:this.model.ref()}}}s.RootRemovedEvent=l,l.__name__=\"RootRemovedEvent\"},\n", + " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(1),l=e(123),_=i.__importStar(e(28));class o extends l.UpperLowerView{connect_signals(){super.connect_signals();const e=()=>this.set_data(this.model.source);this.connect(this.model.change,e),this.connect(this.model.source.streaming,e),this.connect(this.model.source.patching,e),this.connect(this.model.source.change,e)}_render(){this._map_data();const{ctx:e}=this.layer;e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,t=this._lower_sx.length;s=0;s--)e.lineTo(this._upper_sx[s],this._upper_sy[s]);e.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_value(e),e.fill()),e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,t=this._lower_sx.length;snew r.ColumnDataSource]})}}i.UpperLower=a,a.__name__=\"UpperLower\",a.init_UpperLower()},\n", + " function _(t,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const e=t(1),o=t(36),n=t(15),l=e.__importStar(t(28)),a=e.__importStar(t(18)),h=t(79);s.EDGE_TOLERANCE=2.5;class r extends o.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_paint(this)),this.connect(this.model.data_update,()=>this.plot_view.request_paint(this))}_render(){if(null==this.model.left&&null==this.model.right&&null==this.model.top&&null==this.model.bottom)return;const{frame:t}=this.plot_view,i=this.coordinates.x_scale,s=this.coordinates.y_scale,e=(t,i,s,e,o)=>{let n;return n=null!=t?this.model.screen?t:\"data\"==i?s.compute(t):e.compute(t):o,n};this.sleft=e(this.model.left,this.model.left_units,i,t.xview,t.bbox.left),this.sright=e(this.model.right,this.model.right_units,i,t.xview,t.bbox.right),this.stop=e(this.model.top,this.model.top_units,s,t.yview,t.bbox.top),this.sbottom=e(this.model.bottom,this.model.bottom_units,s,t.yview,t.bbox.bottom),this._paint_box(this.sleft,this.sright,this.sbottom,this.stop)}_paint_box(t,i,s,e){const{ctx:o}=this.layer;o.save(),o.beginPath(),o.rect(t,e,i-t,s-e),this.visuals.fill.doit&&(this.visuals.fill.set_value(o),o.fill()),this.visuals.line.doit&&(this.visuals.line.set_value(o),o.stroke()),o.restore()}interactive_bbox(){const t=this.model.properties.line_width.value()+s.EDGE_TOLERANCE;return new h.BBox({x0:this.sleft-t,y0:this.stop-t,x1:this.sright+t,y1:this.sbottom+t})}interactive_hit(t,i){if(null==this.model.in_cursor)return!1;return this.interactive_bbox().contains(t,i)}cursor(t,i){return Math.abs(t-this.sleft)<3||Math.abs(t-this.sright)<3?this.model.ew_cursor:Math.abs(i-this.sbottom)<3||Math.abs(i-this.stop)<3?this.model.ns_cursor:t>this.sleft&&tthis.stop&&ithis.plot_view.request_render()),this.connect(this.model.formatter.change,()=>this.plot_view.request_render()),null!=this.model.color_mapper&&this.connect(this.model.color_mapper.change,()=>{this._set_canvas_image(),this.plot_view.request_render()})}_get_size(){if(null==this.model.color_mapper)return{width:0,height:0};{const{width:t,height:e}=this.compute_legend_dimensions();return{width:t,height:e}}}_set_canvas_image(){if(null==this.model.color_mapper)return;let t,e,{palette:i}=this.model.color_mapper;switch(\"vertical\"==this.model.orientation&&(i=g.reversed(i)),this.model.orientation){case\"vertical\":[t,e]=[1,i.length];break;case\"horizontal\":[t,e]=[i.length,1]}const o=document.createElement(\"canvas\");o.width=t,o.height=e;const a=o.getContext(\"2d\"),s=a.getImageData(0,0,t,e),r=new n.LinearColorMapper({palette:i}).rgba_mapper.v_compute(g.range(0,i.length));s.data.set(r),a.putImageData(s,0,0),this.image=o}compute_legend_dimensions(){const t=this._computed_image_dimensions(),[e,i]=[t.height,t.width],o=this._get_label_extent(),a=this._title_extent(),s=this._tick_extent(),{padding:r}=this.model;let n,l;switch(this.model.orientation){case\"vertical\":n=e+a+2*r,l=i+s+o+2*r;break;case\"horizontal\":n=e+a+s+o+2*r,l=i+2*r}return{width:l,height:n}}compute_legend_location(){const t=this.compute_legend_dimensions(),[e,i]=[t.height,t.width],o=this.model.margin,a=null!=this.panel?this.panel:this.plot_view.frame,[s,r]=a.bbox.ranges,{location:n}=this.model;let l,_;if(f.isString(n))switch(n){case\"top_left\":l=s.start+o,_=r.start+o;break;case\"top_center\":l=(s.end+s.start)/2-i/2,_=r.start+o;break;case\"top_right\":l=s.end-o-i,_=r.start+o;break;case\"bottom_right\":l=s.end-o-i,_=r.end-o-e;break;case\"bottom_center\":l=(s.end+s.start)/2-i/2,_=r.end-o-e;break;case\"bottom_left\":l=s.start+o,_=r.end-o-e;break;case\"center_left\":l=s.start+o,_=(r.end+r.start)/2-e/2;break;case\"center\":l=(s.end+s.start)/2-i/2,_=(r.end+r.start)/2-e/2;break;case\"center_right\":l=s.end-o-i,_=(r.end+r.start)/2-e/2}else if(f.isArray(n)&&2==n.length){const[t,i]=n;l=a.xview.compute(t),_=a.yview.compute(i)-e}else b.unreachable();return{sx:l,sy:_}}_render(){if(null==this.model.color_mapper)return;const{ctx:t}=this.layer;t.save();const{sx:e,sy:i}=this.compute_legend_location();t.translate(e,i),this._draw_bbox(t);const o=this._get_image_offset();t.translate(o.x,o.y),this._draw_image(t);const a=this.tick_info();this._draw_major_ticks(t,a),this._draw_minor_ticks(t,a),this._draw_major_labels(t,a),this.model.title&&this._draw_title(t),t.restore()}_draw_bbox(t){const e=this.compute_legend_dimensions();t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(0,0,e.width,e.height)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()}_draw_image(t){const e=this._computed_image_dimensions();t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this.image,0,0,e.width,e.height),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()}_draw_major_ticks(t,e){if(!this.visuals.major_tick_line.doit)return;const[i,o]=this._normals(),a=this._computed_image_dimensions(),[s,r]=[a.width*i,a.height*o],[n,l]=e.coords.major,_=this.model.major_tick_in,h=this.model.major_tick_out;t.save(),t.translate(s,r),this.visuals.major_tick_line.set_value(t);for(let e=0,a=n.length;ei.measureText(t.toString()).width));break;case\"horizontal\":e=u.measure_font(this.visuals.major_label_text.font_value()).height}e+=this.model.label_standoff,i.restore()}return e}_get_image_offset(){return{x:this.model.padding,y:this.model.padding+this._title_extent()}}_normals(){return\"vertical\"==this.model.orientation?[1,0]:[0,1]}_title_extent(){const t=this.model.title_text_font+\" \"+this.model.title_text_font_size+\" \"+this.model.title_text_font_style;return this.model.title?u.measure_font(t).height+this.model.title_standoff:0}_tick_extent(){return g.max([this.model.major_tick_out,this.model.minor_tick_out])}_computed_image_dimensions(){const t=this.plot_view.frame.bbox.height,e=this.plot_view.frame.bbox.width,i=this._title_extent();let o,a;switch(this.model.orientation){case\"vertical\":\"auto\"==this.model.height?null!=this.panel?o=t-2*this.model.padding-i:(o=g.max([25*this.model.color_mapper.palette.length,.3*t]),o=g.min([o,.8*t-2*this.model.padding-i])):o=this.model.height,a=\"auto\"==this.model.width?25:this.model.width;break;case\"horizontal\":o=\"auto\"==this.model.height?25:this.model.height,\"auto\"==this.model.width?null!=this.panel?a=e-2*this.model.padding:(a=g.max([25*this.model.color_mapper.palette.length,.3*e]),a=g.min([a,.8*e-2*this.model.padding])):a=this.model.width}return{width:a,height:o}}_tick_coordinate_scale(t){const e={source_range:new m.Range1d({start:this.model.color_mapper.metrics.min,end:this.model.color_mapper.metrics.max}),target_range:new m.Range1d({start:0,end:t})},{color_mapper:i}=this.model;if(i instanceof n.LinearColorMapper)return new l.LinearScale(e);if(i instanceof n.LogColorMapper)return new h.LogScale(e);if(i instanceof n.ScanningColorMapper){const{binning:t}=i.metrics;return new _.LinearInterpolationScale(Object.assign(Object.assign({},e),{binning:t}))}b.unreachable()}_format_major_labels(t,e){const i=this.model.formatter.doFormat(t,null);for(let t=0,o=e.length;tr||(h[o].push(l[t]),h[a].push(0));for(let t=0,e=_.length;tr||(m[o].push(_[t]),m[a].push(0));const d={major:this._format_major_labels(h[o],l)},c={major:[[],[]],minor:[[],[]]};return c.major[o]=i.v_compute(h[o]),c.minor[o]=i.v_compute(m[o]),c.major[a]=h[a],c.minor[a]=m[a],\"vertical\"==this.model.orientation&&(c.major[o]=p.map(c.major[o],t=>e-t),c.minor[o]=p.map(c.minor[o],t=>e-t)),{coords:c,labels:d}}}i.ColorBarView=v,v.__name__=\"ColorBarView\";class w extends a.Annotation{constructor(t){super(t)}static init_ColorBar(){this.prototype.default_view=v,this.mixins([[\"major_label_\",d.Text],[\"title_\",d.Text],[\"major_tick_\",d.Line],[\"minor_tick_\",d.Line],[\"border_\",d.Line],[\"bar_\",d.Line],[\"background_\",d.Fill]]),this.define({location:[c.Any,\"top_right\"],orientation:[c.Orientation,\"vertical\"],title:[c.String],title_standoff:[c.Number,2],width:[c.Any,\"auto\"],height:[c.Any,\"auto\"],scale_alpha:[c.Number,1],ticker:[c.Instance,()=>new s.BasicTicker],formatter:[c.Instance,()=>new r.BasicTickFormatter],major_label_overrides:[c.Any,{}],color_mapper:[c.Instance],label_standoff:[c.Number,5],margin:[c.Number,30],padding:[c.Number,10],major_tick_in:[c.Number,5],major_tick_out:[c.Number,0],minor_tick_in:[c.Number,0],minor_tick_out:[c.Number,0]}),this.override({background_fill_color:\"#ffffff\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_align:\"center\",major_label_text_baseline:\"middle\",major_label_text_font_size:\"11px\",major_tick_line_color:\"#ffffff\",minor_tick_line_color:null,title_text_font_size:\"13px\",title_text_font_style:\"italic\"})}}i.ColorBar=w,w.__name__=\"ColorBar\",w.init_ColorBar()},\n", + " function _(e,c,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(127);class r extends i.AdaptiveTicker{constructor(e){super(e)}}s.BasicTicker=r,r.__name__=\"BasicTicker\"},\n", + " function _(t,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const a=t(1),s=t(128),n=t(9),r=a.__importStar(t(18));class _ extends s.ContinuousTicker{constructor(t){super(t)}static init_AdaptiveTicker(){this.define({base:[r.Number,10],mantissas:[r.Array,[1,2,5]],min_interval:[r.Number,0],max_interval:[r.Number]})}initialize(){super.initialize();const t=n.nth(this.mantissas,-1)/this.base,i=n.nth(this.mantissas,0)*this.base;this.extended_mantissas=[t,...this.mantissas,i],this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()}get_interval(t,i,e){const a=i-t,s=this.get_ideal_interval(t,i,e),r=Math.floor(function(t,i=Math.E){return Math.log(t)/Math.log(i)}(s/this.base_factor,this.base)),_=this.base**r*this.base_factor,h=this.extended_mantissas,m=h.map(t=>Math.abs(e-a/(t*_))),o=h[n.argmin(m)];return c=o*_,l=this.get_min_interval(),u=this.get_max_interval(),Math.max(l,Math.min(u,c));var c,l,u}}e.AdaptiveTicker=_,_.__name__=\"AdaptiveTicker\",_.init_AdaptiveTicker()},\n", + " function _(t,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(1),r=t(129),s=n.__importStar(t(18)),o=t(9);class _ extends r.Ticker{constructor(t){super(t)}static init_ContinuousTicker(){this.define({num_minor_ticks:[s.Number,5],desired_num_ticks:[s.Number,6]})}get_ticks(t,i,e,n,r){return this.get_ticks_no_defaults(t,i,n,this.desired_num_ticks)}get_ticks_no_defaults(t,i,e,n){const r=this.get_interval(t,i,n),s=Math.floor(t/r),_=Math.ceil(i/r);let c;c=isFinite(s)&&isFinite(_)?o.range(s,_+1):[];const u=c.map(t=>t*r).filter(e=>t<=e&&e<=i),a=this.num_minor_ticks,l=[];if(a>0&&u.length>0){const e=r/a,n=o.range(0,a).map(t=>t*e);for(const e of n.slice(1)){const n=u[0]-e;t<=n&&n<=i&&l.push(n)}for(const e of u)for(const r of n){const n=e+r;t<=n&&n<=i&&l.push(n)}}return{major:u,minor:l}}get_min_interval(){return this.min_interval}get_max_interval(){return null!=this.max_interval?this.max_interval:1/0}get_ideal_interval(t,i,e){return(i-t)/e}}e.ContinuousTicker=_,_.__name__=\"ContinuousTicker\",_.init_ContinuousTicker()},\n", + " function _(e,c,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(81);class r extends o.Model{constructor(e){super(e)}}n.Ticker=r,r.__name__=\"Ticker\"},\n", + " function _(i,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=i(1),s=i(131),n=r.__importStar(i(18));class o extends s.TickFormatter{constructor(i){super(i),this.last_precision=3}static init_BasicTickFormatter(){this.define({precision:[n.Any,\"auto\"],use_scientific:[n.Boolean,!0],power_limit_high:[n.Number,5],power_limit_low:[n.Number,-3]})}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}_need_sci(i){if(!this.use_scientific)return!1;const{scientific_limit_high:t}=this,{scientific_limit_low:e}=this,r=i.length<2?0:Math.abs(i[1]-i[0])/1e4;for(const s of i){const i=Math.abs(s);if(!(i<=r)&&(i>=t||i<=e))return!0}return!1}_format_with_precision(i,t,e){const r=new Array(i.length);if(t)for(let t=0,s=i.length;t=1;r?s++:s--){if(t){e[0]=i[0].toExponential(s);for(let t=1;tu(e,d))),s=g<0||g>=t.length?r:t[g],c[_]=s}}},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const n=t(1),o=t(136),_=n.__importStar(t(18)),i=t(8),l=t(22),c=t(32);function a(t){return i.isNumber(t)?t:(\"#\"!=t[0]&&(t=l.color2hex(t)),9!=t.length&&(t+=\"ff\"),parseInt(t.slice(1),16))}function s(t){const e=new Uint32Array(t.length);for(let r=0,n=t.length;rt)),e}get rgba_mapper(){const t=this,e=s(this.palette),r=this._colors(a);return{v_compute(n){const o=new Uint32Array(n.length);return t._v_compute(n,o,e,r),p(o)}}}_colors(t){return{nan_color:t(this.nan_color)}}}r.ColorMapper=u,u.__name__=\"ColorMapper\",u.init_ColorMapper()},\n", + " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(137);class s extends o.Transform{constructor(e){super(e)}compute(e){throw new Error(\"mapping single values is not supported\")}}n.Mapper=s,s.__name__=\"Mapper\"},\n", + " function _(e,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(81);class s extends r.Model{constructor(e){super(e)}}o.Transform=s,s.__name__=\"Transform\"},\n", + " function _(r,e,a){Object.defineProperty(a,\"__esModule\",{value:!0});const t=r(1),s=r(134),i=r(136),c=t.__importStar(r(18));class n extends i.Mapper{constructor(r){super(r)}static init_CategoricalMarkerMapper(){this.define({factors:[c.Array],markers:[c.Array],start:[c.Number,0],end:[c.Number],default_value:[c.MarkerType,\"circle\"]})}v_compute(r){const e=new Array(r.length);return s.cat_v_compute(r,this.factors,this.markers,e,this.start,this.end,this.default_value),e}}a.CategoricalMarkerMapper=n,n.__name__=\"CategoricalMarkerMapper\",n.init_CategoricalMarkerMapper()},\n", + " function _(t,e,a){Object.defineProperty(a,\"__esModule\",{value:!0});const r=t(1),n=t(134),s=t(136),i=r.__importStar(t(18));class c extends s.Mapper{constructor(t){super(t)}static init_CategoricalPatternMapper(){this.define({factors:[i.Array],patterns:[i.Array],start:[i.Number,0],end:[i.Number],default_value:[i.HatchPatternType,\" \"]})}v_compute(t){const e=new Array(t.length);return n.cat_v_compute(t,this.factors,this.patterns,e,this.start,this.end,this.default_value),e}}a.CategoricalPatternMapper=c,c.__name__=\"CategoricalPatternMapper\",c.init_CategoricalPatternMapper()},\n", + " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(135),s=t(90),l=t(9),i=t(8);class c extends n.ColorMapper{constructor(t){super(t),this._scan_data=null}static init_ContinuousColorMapper(){this.define(({Number:t,String:o,Null:e,Ref:n,Color:l,Or:i,Tuple:c,Array:a})=>({high:[i(t,e),null],low:[i(t,e),null],high_color:[i(l,e),null],low_color:[i(l,e),null],domain:[a(c(n(s.GlyphRenderer),i(o,a(o)))),[]]}))}connect_signals(){super.connect_signals();const t=()=>{for(const[t]of this.domain)this.connect(t.view.change,()=>this.update_data()),this.connect(t.data_source.selected.change,()=>this.update_data())};this.connect(this.properties.domain.change,()=>t()),t()}update_data(){const{domain:t,palette:o}=this,e=[...this._collect(t)];this._scan_data=this.scan(e,o.length),this.change.emit()}get metrics(){return null==this._scan_data&&this.update_data(),this._scan_data}*_collect(t){for(const[o,e]of t)for(const t of i.isArray(e)?e:[e]){let e=o.data_source.get_column(t);e=o.view.indices.select(e);const n=o.view.masked,s=o.data_source.selected.indices;let c;if(null!=n&&s.length>0?c=l.intersection([...n],s):null!=n?c=[...n]:s.length>0&&(c=s),null!=c&&(e=l.map(c,t=>e[t])),e.length>0&&!i.isNumber(e[0]))for(const t of e)yield*t;else yield*e}}_v_compute(t,o,e,n){const{nan_color:s}=n;let{low_color:i,high_color:c}=n;null==i&&(i=e[0]),null==c&&(c=e[e.length-1]);const{domain:a}=this,r=l.is_empty(a)?t:[...this._collect(a)];this._scan_data=this.scan(r,e.length);for(let n=0,l=t.length;na?e:r[l]}}o.LinearColorMapper=a,a.__name__=\"LinearColorMapper\"},\n", + " function _(o,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=o(140),r=o(12);class l extends e.ContinuousColorMapper{constructor(o){super(o)}scan(o,t){const n=null!=this.low?this.low:r.min(o),e=null!=this.high?this.high:r.max(o);return{max:e,min:n,scale:t/(Math.log(e)-Math.log(n))}}cmap(o,t,n,e,r){const l=t.length-1;if(o>r.max)return e;if(o==r.max)return t[l];if(ol&&(s=l),t[s]}}n.LogColorMapper=l,l.__name__=\"LogColorMapper\"},\n", + " function _(n,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=n(140),o=n(12);class t extends i.ContinuousColorMapper{constructor(n){super(n)}cmap(n,e,r,i,t){if(nt.binning[t.binning.length-1])return i;return e[o.left_edge_index(n,t.binning)]}}r.ScanningColorMapper=t,t.__name__=\"ScanningColorMapper\"},\n", + " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=n(1),o=n(143),r=n(12),s=n(9),a=i.__importStar(n(18)),l=n(19);class p extends o.ScanningColorMapper{constructor(n){super(n)}static init_EqHistColorMapper(){this.define({bins:[a.Int,65536]})}scan(n,t){const e=null!=this.low?this.low:r.min(n),i=null!=this.high?this.high:r.max(n),o=this.bins,a=s.linspace(e,i,o+1),p=r.bin_counts(n,a),c=new Array(o);for(let n=0,t=a.length;nn/u);let m=t-1,_=[],M=0,f=2*t;for(;m!=t&&M<4&&0!=m;){const n=f/m;if(n>1e3)break;f=Math.round(Math.max(t*n,t));const e=s.range(0,f),i=r.map(g,n=>n*(f-1));_=r.interpolate(e,i,c);m=s.uniq(_).length-1,M++}if(0==m){_=[e,i];for(let n=0;nthis._sorted_dirty=!0)}v_compute(t){const e=new i.NumberArray(t.length);for(let r=0;rs*(e[t]-e[r])),this._x_sorted=new i.NumberArray(n),this._y_sorted=new i.NumberArray(n);for(let t=0;tthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(t==this._x_sorted[0])return this._y_sorted[0];const s=_.find_last_index(this._x_sorted,s=>sthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}let e;switch(this.mode){case\"after\":e=i.find_last_index(this._x_sorted,e=>t>=e);break;case\"before\":e=i.find_index(this._x_sorted,e=>t<=e);break;case\"center\":{const r=this._x_sorted.map(e=>Math.abs(e-t)),s=i.min(r);e=i.find_index(r,t=>s===t);break}default:throw new Error(\"unknown mode: \"+this.mode)}return-1!=e?this._y_sorted[e]:NaN}}r.StepInterpolator=n,n.__name__=\"StepInterpolator\",n.init_StepInterpolator()},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=e(1),a=e(147),i=e(24),s=e(9),o=e(12),c=r.__importStar(e(18));class _ extends a.Scale{constructor(e){super(e)}static init_LinearInterpolationScale(){this.internal({binning:[c.Array]})}compute(e){return e}v_compute(e){const t=o.norm(e,this.source_range.start,this.source_range.end),n=s.linspace(0,1,this.binning.length),r=o.interpolate(t,n,this.binning),a=o.norm(r,this.source_range.start,this.source_range.end),c=this.target_range.end-this.target_range.start,_=o.map(a,e=>this.target_range.start+e*c);return new i.NumberArray(_)}invert(e){return e}v_invert(e){return new i.NumberArray(e)}}n.LinearInterpolationScale=_,_.__name__=\"LinearInterpolationScale\",_.init_LinearInterpolationScale()},\n", + " function _(t,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const a=t(146),r=t(24);class s extends a.ContinuousScale{constructor(t){super(t)}compute(t){const[e,o,a,r]=this._compute_state();let s;if(0==a)s=0;else{const n=(Math.log(t)-r)/a;s=isFinite(n)?n*e+o:NaN}return s}v_compute(t){const[e,o,a,s]=this._compute_state(),n=new r.NumberArray(t.length);if(0==a)for(let e=0;ethis.render()):this.connect(this.model.change,()=>this.plot_view.request_render())}render(){this.model.visible||\"css\"!=this.model.render_mode||a.undisplay(this.el),super.render()}_calculate_text_dimensions(e,t){const{width:s}=e.measureText(t),{height:i}=o.measure_font(this.visuals.text.font_value());return[s,i]}_calculate_bounding_box_dimensions(e,t){const[s,i]=this._calculate_text_dimensions(e,t);let l,a;switch(e.textAlign){case\"left\":l=0;break;case\"center\":l=-s/2;break;case\"right\":l=-s;break;default:r.unreachable()}switch(e.textBaseline){case\"top\":a=0;break;case\"middle\":a=-.5*i;break;case\"bottom\":a=-1*i;break;case\"alphabetic\":a=-.8*i;break;case\"hanging\":a=-.17*i;break;case\"ideographic\":a=-.83*i;break;default:r.unreachable()}return[l,a,s,i]}_canvas_text(e,t,s,i,l){this.visuals.text.set_value(e);const a=this._calculate_bounding_box_dimensions(e,t);e.save(),e.beginPath(),e.translate(s,i),l&&e.rotate(l),e.rect(a[0],a[1],a[2],a[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),e.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(e),e.stroke()),this.visuals.text.doit&&(this.visuals.text.set_value(e),e.fillText(t,0,0)),e.restore()}_css_text(e,t,s,i,l){const{el:n}=this;r.assert(null!=n),a.undisplay(n),this.visuals.text.set_value(e);const o=this._calculate_bounding_box_dimensions(e,t),_=this.visuals.border_line.line_dash.value().length<2?\"solid\":\"dashed\";this.visuals.border_line.set_value(e),this.visuals.background_fill.set_value(e),n.style.position=\"absolute\",n.style.left=s+o[0]+\"px\",n.style.top=i+o[1]+\"px\",n.style.color=\"\"+this.visuals.text.text_color.value(),n.style.opacity=\"\"+this.visuals.text.text_alpha.value(),n.style.font=\"\"+this.visuals.text.font_value(),n.style.lineHeight=\"normal\",l&&(n.style.transform=`rotate(${l}rad)`),this.visuals.background_fill.doit&&(n.style.backgroundColor=\"\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(n.style.borderStyle=\"\"+_,n.style.borderWidth=this.visuals.border_line.line_width.value()+\"px\",n.style.borderColor=\"\"+this.visuals.border_line.color_value()),n.textContent=t,a.display(n)}}s.TextAnnotationView=_,_.__name__=\"TextAnnotationView\";class u extends l.Annotation{constructor(e){super(e)}static init_TextAnnotation(){this.define({render_mode:[n.RenderMode,\"canvas\"]})}}s.TextAnnotation=u,u.__name__=\"TextAnnotation\",u.init_TextAnnotation()},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),o=t(161),l=t(85),a=i.__importStar(t(28)),n=t(72),r=i.__importStar(t(18));class _ extends o.TextAnnotationView{initialize(){if(super.initialize(),this.set_data(this.model.source),\"css\"==this.model.render_mode)for(let t=0,e=this._text.length;t{this.set_data(this.model.source),this.render()}),this.connect(this.model.source.streaming,()=>{this.set_data(this.model.source),this.render()}),this.connect(this.model.source.patching,()=>{this.set_data(this.model.source),this.render()}),this.connect(this.model.source.change,()=>{this.set_data(this.model.source),this.render()})):(this.connect(this.model.change,()=>{this.set_data(this.model.source),this.plot_view.request_render()}),this.connect(this.model.source.streaming,()=>{this.set_data(this.model.source),this.plot_view.request_render()}),this.connect(this.model.source.patching,()=>{this.set_data(this.model.source),this.plot_view.request_render()}),this.connect(this.model.source.change,()=>{this.set_data(this.model.source),this.plot_view.request_render()}))}set_data(t){super.set_data(t),this.visuals.warm_cache(t)}_map_data(){const t=this.coordinates.x_scale,e=this.coordinates.y_scale,s=null!=this.panel?this.panel:this.plot_view.frame;return[\"data\"==this.model.x_units?t.v_compute(this._x):s.xview.v_compute(this._x),\"data\"==this.model.y_units?e.v_compute(this._y):s.yview.v_compute(this._y)]}_render(){const t=\"canvas\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),{ctx:e}=this.layer,[s,i]=this._map_data();for(let o=0,l=this._text.length;onew l.ColumnDataSource]}),this.override({background_fill_color:null,border_line_color:null})}}s.LabelSet=h,h.__name__=\"LabelSet\",h.init_LabelSet()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),l=t(36),n=s.__importStar(t(28)),h=s.__importStar(t(18)),a=t(15),_=t(159),o=t(79),r=t(9),d=t(8),c=t(11);class g extends l.AnnotationView{cursor(t,e){return\"none\"==this.model.click_policy?null:\"pointer\"}get legend_padding(){return null!=this.visuals.border_line.line_color.value()?this.model.padding:0}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_render()),this.connect(this.model.item_change,()=>this.plot_view.request_render())}compute_legend_bbox(){const t=this.model.get_legend_names(),{glyph_height:e,glyph_width:i}=this.model,{label_height:s,label_width:l}=this.model;this.max_label_height=r.max([_.measure_font(this.visuals.label_text.font_value()).height,s,e]);const{ctx:n}=this.layer;n.save(),this.visuals.label_text.set_value(n),this.text_widths=new Map;for(const e of t)this.text_widths.set(e,r.max([n.measureText(e).width,l]));this.visuals.title_text.set_value(n),this.title_height=this.model.title?_.measure_font(this.visuals.title_text.font_value()).height+this.model.title_standoff:0,this.title_width=this.model.title?n.measureText(this.model.title).width:0,n.restore();const h=Math.max(r.max([...this.text_widths.values()]),0),a=this.model.margin,{legend_padding:g}=this,m=this.model.spacing,{label_standoff:b}=this.model;let u,f;if(\"vertical\"==this.model.orientation)u=t.length*this.max_label_height+Math.max(t.length-1,0)*m+2*g+this.title_height,f=r.max([h+i+b+2*g,this.title_width+2*g]);else{let e=2*g+Math.max(t.length-1,0)*m;for(const[,t]of this.text_widths)e+=r.max([t,l])+i+b;f=r.max([this.title_width+2*g,e]),u=this.max_label_height+this.title_height+2*g}const x=null!=this.panel?this.panel:this.plot_view.frame,[p,w]=x.bbox.ranges,{location:v}=this.model;let y,k;if(d.isString(v))switch(v){case\"top_left\":y=p.start+a,k=w.start+a;break;case\"top_center\":y=(p.end+p.start)/2-f/2,k=w.start+a;break;case\"top_right\":y=p.end-a-f,k=w.start+a;break;case\"bottom_right\":y=p.end-a-f,k=w.end-a-u;break;case\"bottom_center\":y=(p.end+p.start)/2-f/2,k=w.end-a-u;break;case\"bottom_left\":y=p.start+a,k=w.end-a-u;break;case\"center_left\":y=p.start+a,k=(w.end+w.start)/2-u/2;break;case\"center\":y=(p.end+p.start)/2-f/2,k=(w.end+w.start)/2-u/2;break;case\"center_right\":y=p.end-a-f,k=(w.end+w.start)/2-u/2}else if(d.isArray(v)&&2==v.length){const[t,e]=v;y=x.xview.compute(t),k=x.yview.compute(e)-u}else c.unreachable();return new o.BBox({left:y,top:k,width:f,height:u})}interactive_bbox(){return this.compute_legend_bbox()}interactive_hit(t,e){return this.interactive_bbox().contains(t,e)}on_hit(t,e){let i;const{glyph_width:s}=this.model,{legend_padding:l}=this,n=this.model.spacing,{label_standoff:h}=this.model;let a=i=l;const _=this.compute_legend_bbox(),r=\"vertical\"==this.model.orientation;for(const d of this.model.items){const c=d.get_labels_list_from_label_prop();for(const g of c){const c=_.x+a,m=_.y+i+this.title_height;let b,u;[b,u]=r?[_.width-2*l,this.max_label_height]:[this.text_widths.get(g)+s+h,this.max_label_height];if(new o.BBox({left:c,top:m,width:b,height:u}).contains(t,e)){switch(this.model.click_policy){case\"hide\":for(const t of d.renderers)t.visible=!t.visible;break;case\"mute\":for(const t of d.renderers)t.muted=!t.muted}return!0}r?i+=this.max_label_height+n:a+=this.text_widths.get(g)+s+h+n}}return!1}_render(){if(0==this.model.items.length)return;for(const t of this.model.items)t.legend=this.model;const{ctx:t}=this.layer,e=this.compute_legend_bbox();t.save(),this._draw_legend_box(t,e),this._draw_legend_items(t,e),this.model.title&&this._draw_title(t,e),t.restore()}_draw_legend_box(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.set_value(t),t.fill(),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke())}_draw_legend_items(t,e){const{glyph_width:i,glyph_height:s}=this.model,{legend_padding:l}=this,n=this.model.spacing,{label_standoff:h}=this.model;let a=l,_=l;const o=\"vertical\"==this.model.orientation;for(const d of this.model.items){const c=d.get_labels_list_from_label_prop(),g=d.get_field_from_label_prop();if(0==c.length)continue;const m=(()=>{switch(this.model.click_policy){case\"none\":return!0;case\"hide\":return r.every(d.renderers,t=>t.visible);case\"mute\":return r.every(d.renderers,t=>!t.muted)}})();for(const r of c){const c=e.x+a,b=e.y+_+this.title_height,u=c+i,f=b+s;o?_+=this.max_label_height+n:a+=this.text_widths.get(r)+i+h+n,this.visuals.label_text.set_value(t),t.fillText(r,u+h,b+this.max_label_height/2);for(const e of d.renderers){this.plot_view.renderer_views.get(e).draw_legend(t,c,u,b,f,g,r,d.index)}if(!m){let s,n;[s,n]=o?[e.width-2*l,this.max_label_height]:[this.text_widths.get(r)+i+h,this.max_label_height],t.beginPath(),t.rect(c,b,s,n),this.visuals.inactive_fill.set_value(t),t.fill()}}}}_draw_title(t,e){this.visuals.title_text.doit&&(t.save(),t.translate(e.x0,e.y0+this.title_height),this.visuals.title_text.set_value(t),t.fillText(this.model.title,this.legend_padding,this.legend_padding-this.model.title_standoff),t.restore())}_get_size(){const{width:t,height:e}=this.compute_legend_bbox();return{width:t+2*this.model.margin,height:e+2*this.model.margin}}}i.LegendView=g,g.__name__=\"LegendView\";class m extends l.Annotation{constructor(t){super(t)}initialize(){super.initialize(),this.item_change=new a.Signal0(this,\"item_change\")}static init_Legend(){this.prototype.default_view=g,this.mixins([[\"label_\",n.Text],[\"title_\",n.Text],[\"inactive_\",n.Fill],[\"border_\",n.Line],[\"background_\",n.Fill]]),this.define({orientation:[h.Orientation,\"vertical\"],location:[h.Any,\"top_right\"],title:[h.String],title_standoff:[h.Number,5],label_standoff:[h.Number,5],glyph_height:[h.Number,20],glyph_width:[h.Number,20],label_height:[h.Number,20],label_width:[h.Number,20],margin:[h.Number,10],padding:[h.Number,10],spacing:[h.Number,3],items:[h.Array,[]],click_policy:[h.Any,\"none\"]}),this.override({border_line_color:\"#e5e5e5\",border_line_alpha:.5,border_line_width:1,background_fill_color:\"#ffffff\",background_fill_alpha:.95,inactive_fill_color:\"white\",inactive_fill_alpha:.7,label_text_font_size:\"13px\",label_text_baseline:\"middle\",title_text_font_size:\"13px\",title_text_font_style:\"italic\"})}get_legend_names(){const t=[];for(const e of this.items){const i=e.get_labels_list_from_label_prop();t.push(...i)}return t}}i.Legend=m,m.__name__=\"Legend\",m.init_Legend()},\n", + " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(1),l=e(81),i=e(86),s=e(165),o=t.__importStar(e(18)),_=e(19),a=e(9);class u extends l.Model{constructor(e){super(e)}static init_LegendItem(){this.define({label:[o.StringSpec,null],renderers:[o.Array,[]],index:[o.Number,null]})}_check_data_sources_on_renderers(){if(null!=this.get_field_from_label_prop()){if(this.renderers.length<1)return!1;const e=this.renderers[0].data_source;if(null!=e)for(const r of this.renderers)if(r.data_source!=e)return!1}return!0}_check_field_label_on_data_source(){const e=this.get_field_from_label_prop();if(null!=e){if(this.renderers.length<1)return!1;const r=this.renderers[0].data_source;if(null!=r&&!a.includes(r.columns(),e))return!1}return!0}initialize(){super.initialize(),this.legend=null,this.connect(this.change,()=>{var e;return null===(e=this.legend)||void 0===e?void 0:e.item_change.emit()});this._check_data_sources_on_renderers()||_.logger.error(\"Non matching data sources on legend item renderers\");this._check_field_label_on_data_source()||_.logger.error(\"Bad column name on label: \"+this.label)}get_field_from_label_prop(){const{label:e}=this;return s.isField(e)?e.field:null}get_labels_list_from_label_prop(){if(s.isValue(this.label)){const{value:e}=this.label;return null!=e?[e]:[]}const e=this.get_field_from_label_prop();if(null!=e){let r;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\"No source found\"];if(r=this.renderers[0].data_source,r instanceof i.ColumnarDataSource){const n=r.get_column(e);return null!=n?a.uniq(Array.from(n)):[\"Invalid field\"]}}return[]}}n.LegendItem=u,u.__name__=\"LegendItem\",u.init_LegendItem()},\n", + " function _(e,i,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(8);n.isValue=function(e){return t.isPlainObject(e)&&\"value\"in e},n.isField=function(e){return t.isPlainObject(e)&&\"field\"in e}},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),s=t(36),o=n.__importStar(t(28)),l=t(15),a=n.__importStar(t(18));class r extends s.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_render()),this.connect(this.model.data_update,()=>this.plot_view.request_render())}_render(){const{xs:t,ys:e}=this.model;if(t.length!=e.length)return;if(t.length<3||e.length<3)return;const{frame:i}=this.plot_view,{ctx:n}=this.layer;for(let s=0,o=t.length;sthis.plot_view.request_render())}_render(){const e=this.model.gradient,t=this.model.y_intercept;if(null==e||null==t)return;const{frame:i}=this.plot_view,n=this.coordinates.x_scale,o=this.coordinates.y_scale,s=i.bbox.top,l=s+i.bbox.height,r=(o.invert(s)-t)/e,_=(o.invert(l)-t)/e,a=n.compute(r),c=n.compute(_),{ctx:p}=this.layer;p.save(),p.beginPath(),this.visuals.line.set_value(p),p.moveTo(a,s),p.lineTo(c,l),p.stroke(),p.restore()}}i.SlopeView=r,r.__name__=\"SlopeView\";class _ extends o.Annotation{constructor(e){super(e)}static init_Slope(){this.prototype.default_view=r,this.mixins(s.Line),this.define({gradient:[l.Number,null],y_intercept:[l.Number,null]}),this.override({line_color:\"black\"})}}i.Slope=_,_.__name__=\"Slope\",_.init_Slope()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),o=e(36),s=n.__importStar(e(28)),a=n.__importStar(e(18));class l extends o.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_paint(this))}_render(){const{location:e}=this.model;if(null==e)return;const{frame:t}=this.plot_view,i=this.coordinates.x_scale,n=this.coordinates.y_scale,o=(t,i)=>\"data\"==this.model.location_units?t.compute(e):this.model.for_hover?e:i.compute(e);let s,a,l,r;\"width\"==this.model.dimension?(l=o(n,t.yview),a=t.bbox.left,r=t.bbox.width,s=this.model.properties.line_width.value()):(l=t.bbox.top,a=o(i,t.xview),r=this.model.properties.line_width.value(),s=t.bbox.height);const{ctx:_}=this.layer;_.save(),_.beginPath(),this.visuals.line.set_value(_),_.moveTo(a,l),\"width\"==this.model.dimension?_.lineTo(a+r,l):_.lineTo(a,l+s),_.stroke(),_.restore()}}i.SpanView=l,l.__name__=\"SpanView\";class r extends o.Annotation{constructor(e){super(e)}static init_Span(){this.prototype.default_view=l,this.mixins(s.Line),this.define({render_mode:[a.RenderMode,\"canvas\"],location:[a.Number,null],location_units:[a.SpatialUnits,\"data\"],dimension:[a.Dimension,\"width\"]}),this.override({line_color:\"black\"}),this.internal({for_hover:[a.Boolean,!1]})}}i.Span=r,r.__name__=\"Span\",r.init_Span()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const l=t(1),s=t(161),a=t(74),n=l.__importStar(t(28)),o=l.__importStar(t(18));class r extends s.TextAnnotationView{initialize(){super.initialize(),this.visuals.text=new a.Text(this.model)}_get_location(){const t=this.panel,e=this.model.offset;let i,l;const{bbox:s}=t;switch(t.side){case\"above\":case\"below\":switch(this.model.vertical_align){case\"top\":l=s.top+5;break;case\"middle\":l=s.vcenter;break;case\"bottom\":l=s.bottom-5}switch(this.model.align){case\"left\":i=s.left+e;break;case\"center\":i=s.hcenter;break;case\"right\":i=s.right-e}break;case\"left\":switch(this.model.vertical_align){case\"top\":i=s.left-5;break;case\"middle\":i=s.hcenter;break;case\"bottom\":i=s.right+5}switch(this.model.align){case\"left\":l=s.bottom-e;break;case\"center\":l=s.vcenter;break;case\"right\":l=s.top+e}break;case\"right\":switch(this.model.vertical_align){case\"top\":i=s.right-5;break;case\"middle\":i=s.hcenter;break;case\"bottom\":i=s.left+5}switch(this.model.align){case\"left\":l=s.top+e;break;case\"center\":l=s.vcenter;break;case\"right\":l=s.bottom-e}}return[i,l]}_render(){const{text:t}=this.model;if(null==t||0==t.length)return;this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;const[e,i]=this._get_location(),l=this.panel.get_label_angle_heuristic(\"parallel\");(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,t,e,i,l)}_get_size(){const{text:t}=this.model;if(null==t||0==t.length)return{width:0,height:0};{this.visuals.text.set_value(this.layer.ctx);const{width:e,ascent:i}=this.layer.ctx.measureText(t);return{width:e,height:i*this.visuals.text.text_line_height.value()+10}}}}i.TitleView=r,r.__name__=\"TitleView\";class c extends s.TextAnnotation{constructor(t){super(t)}static init_Title(){this.prototype.default_view=r,this.mixins([[\"border_\",n.Line],[\"background_\",n.Fill]]),this.define({text:[o.String],text_font:[o.Font,\"helvetica\"],text_font_size:[o.StringSpec,\"13px\"],text_font_style:[o.FontStyle,\"bold\"],text_color:[o.ColorSpec,\"#444444\"],text_alpha:[o.NumberSpec,1],text_line_height:[o.Number,1],vertical_align:[o.VerticalAlign,\"bottom\"],align:[o.TextAlign,\"left\"],offset:[o.Number,0]}),this.override({background_fill_color:null,border_line_color:null}),this.internal({text_align:[o.TextAlign,\"left\"],text_baseline:[o.TextBaseline,\"bottom\"]})}}i.Title=c,c.__name__=\"Title\",c.init_Title()},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(1),l=e(36),s=e(115),a=e(72),n=e(79),r=o.__importStar(e(18));class _ extends l.AnnotationView{constructor(){super(...arguments),this.rotate=!0,this._invalidate_toolbar=!0,this._previous_bbox=new n.BBox}initialize(){super.initialize(),this.el=a.div(),this.plot_view.canvas_view.add_event(this.el)}async lazy_initialize(){this._toolbar_view=await s.build_view(this.model.toolbar,{parent:this}),this.plot_view.visibility_callbacks.push(e=>this._toolbar_view.set_visibility(e))}remove(){this._toolbar_view.remove(),a.remove(this.el),super.remove()}render(){this.model.visible||a.undisplay(this.el),super.render()}_render(){const{bbox:e}=this.panel;this._previous_bbox.equals(e)||(a.position(this.el,e),this._previous_bbox=e),this._invalidate_toolbar&&(this.el.style.position=\"absolute\",this.el.style.overflow=\"hidden\",this._toolbar_view.render(),a.empty(this.el),this.el.appendChild(this._toolbar_view.el),this._invalidate_toolbar=!1),a.display(this.el)}_get_size(){const{tools:e,logo:i}=this.model.toolbar;return{width:30*e.length+(null!=i?25:0),height:30}}}t.ToolbarPanelView=_,_.__name__=\"ToolbarPanelView\";class h extends l.Annotation{constructor(e){super(e)}static init_ToolbarPanel(){this.prototype.default_view=_,this.define({toolbar:[r.Instance]})}}t.ToolbarPanel=h,h.__name__=\"ToolbarPanel\",h.init_ToolbarPanel()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),l=t(36),o=t(72),n=s.__importStar(t(18)),a=t(172),h=t(173),r=s.__importDefault(t(174));class c extends l.AnnotationView{initialize(){super.initialize(),this.el=o.div({class:a.bk_tooltip}),o.undisplay(this.el),this.plot_view.canvas_view.add_overlay(this.el)}remove(){o.remove(this.el),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.content.change,()=>this.render()),this.connect(this.model.properties.position.change,()=>this._reposition())}styles(){return[...super.styles(),r.default]}render(){this.model.visible||o.undisplay(this.el),super.render()}_render(){const{content:t}=this.model;null!=t?(o.empty(this.el),o.classes(this.el).toggle(a.bk_tooltip_custom,this.model.custom),this.el.appendChild(t),this.model.show_arrow&&this.el.classList.add(a.bk_tooltip_arrow)):o.undisplay(this.el)}_reposition(){const{position:t}=this.model;if(null==t)return void o.undisplay(this.el);const[e,i]=t,s=(()=>{const t=this.parent.layout.bbox.relativize(),{attachment:s}=this.model;switch(s){case\"horizontal\":return eo.div()],custom:[n.Any]})}clear(){this.position=null}}i.Tooltip=d,d.__name__=\"Tooltip\",d.init_Tooltip()},\n", + " function _(o,t,l){Object.defineProperty(l,\"__esModule\",{value:!0}),l.bk_tooltip=\"bk-tooltip\",l.bk_tooltip_arrow=\"bk-tooltip-arrow\",l.bk_tooltip_custom=\"bk-tooltip-custom\",l.bk_tooltip_row_label=\"bk-tooltip-row-label\",l.bk_tooltip_row_value=\"bk-tooltip-row-value\",l.bk_tooltip_color_block=\"bk-tooltip-color-block\"},\n", + " function _(e,b,k){Object.defineProperty(k,\"__esModule\",{value:!0}),k.bk_active=\"bk-active\",k.bk_inline=\"bk-inline\",k.bk_left=\"bk-left\",k.bk_right=\"bk-right\",k.bk_above=\"bk-above\",k.bk_below=\"bk-below\",k.bk_up=\"bk-up\",k.bk_down=\"bk-down\",k.bk_side=function(e){switch(e){case\"above\":return k.bk_above;case\"below\":return k.bk_below;case\"left\":return k.bk_left;case\"right\":return k.bk_right}}},\n", + " function _(o,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root {\\n /* Same border color used everywhere */\\n /* Gray of icons */\\n}\\n.bk-root .bk-tooltip {\\n font-weight: 300;\\n font-size: 12px;\\n position: absolute;\\n padding: 5px;\\n border: 1px solid #e5e5e5;\\n color: #2f2f2f;\\n background-color: white;\\n pointer-events: none;\\n opacity: 0.95;\\n z-index: 100;\\n}\\n.bk-root .bk-tooltip > div:not(:first-child) {\\n /* gives space when multiple elements are being hovered over */\\n margin-top: 5px;\\n border-top: #e5e5e5 1px dashed;\\n}\\n.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before {\\n position: absolute;\\n margin: -7px 0 0 0;\\n top: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 7px 0 7px 0;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n left: -10px;\\n border-right-width: 10px;\\n border-right-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-left::before {\\n left: -10px;\\n border-right-width: 10px;\\n border-right-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after {\\n position: absolute;\\n margin: -7px 0 0 0;\\n top: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 7px 0 7px 0;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n right: -10px;\\n border-left-width: 10px;\\n border-left-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-right::after {\\n right: -10px;\\n border-left-width: 10px;\\n border-left-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-above::before {\\n position: absolute;\\n margin: 0 0 0 -7px;\\n left: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 0 7px 0 7px;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n top: -10px;\\n border-bottom-width: 10px;\\n border-bottom-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-below::after {\\n position: absolute;\\n margin: 0 0 0 -7px;\\n left: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 0 7px 0 7px;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n bottom: -10px;\\n border-top-width: 10px;\\n border-top-color: #909599;\\n}\\n.bk-root .bk-tooltip-row-label {\\n text-align: right;\\n color: #26aae1;\\n /* blue from toolbar highlighting */\\n}\\n.bk-root .bk-tooltip-row-value {\\n color: default;\\n /* seems to be necessary for notebook */\\n}\\n.bk-root .bk-tooltip-color-block {\\n width: 12px;\\n height: 12px;\\n margin-left: 5px;\\n margin-right: 5px;\\n outline: #dddddd solid 1px;\\n display: inline-block;\\n}\\n'},\n", + " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(1),r=e(123),o=e(84),h=e(28),n=i.__importStar(e(18));class l extends r.UpperLowerView{connect_signals(){super.connect_signals(),this.connect(this.model.source.streaming,()=>this.set_data(this.model.source)),this.connect(this.model.source.patching,()=>this.set_data(this.model.source)),this.connect(this.model.source.change,()=>this.set_data(this.model.source))}_render(){this._map_data();const{ctx:e}=this.layer;if(this.visuals.line.doit)for(let s=0,t=this._lower_sx.length;snew o.TeeHead({level:\"underlay\",size:10})],upper_head:[n.Instance,()=>new o.TeeHead({level:\"underlay\",size:10})]}),this.override({level:\"underlay\"})}}t.Whisker=_,_.__name__=\"Whisker\",_.init_Whisker()},\n", + " function _(i,a,e){Object.defineProperty(e,\"__esModule\",{value:!0});var r=i(177);e.Axis=r.Axis;var s=i(179);e.CategoricalAxis=s.CategoricalAxis;var x=i(182);e.ContinuousAxis=x.ContinuousAxis;var A=i(183);e.DatetimeAxis=A.DatetimeAxis;var o=i(184);e.LinearAxis=o.LinearAxis;var t=i(197);e.LogAxis=t.LogAxis;var n=i(200);e.MercatorAxis=n.MercatorAxis},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),a=t(178),l=s.__importStar(t(28)),n=s.__importStar(t(18)),o=t(9),r=t(8),_=t(98),{abs:h,min:c,max:d}=Math;class m extends a.GuideRendererView{constructor(){super(...arguments),this.rotate=!0}get panel(){return this.layout}get is_renderable(){const[t,e]=this.ranges;return t.is_valid&&e.is_valid}_render(){var t;if(!this.is_renderable)return;const e={tick:this._tick_extent(),tick_label:this._tick_label_extents(),axis_label:this._axis_label_extent()},{tick_coords:i}=this,s=this.layer.ctx;s.save(),this._draw_rule(s,e),this._draw_major_ticks(s,e,i),this._draw_minor_ticks(s,e,i),this._draw_major_labels(s,e,i),this._draw_axis_label(s,e,i),null===(t=this._paint)||void 0===t||t.call(this,s,e,i),s.restore()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_layout())}get_size(){if(this.model.visible&&null==this.model.fixed_location&&this.is_renderable){const t=this._get_size();return{width:0,height:Math.round(t)}}return{width:0,height:0}}_get_size(){return this._tick_extent()+this._tick_label_extent()+this._axis_label_extent()}get needs_clip(){return null!=this.model.fixed_location}_draw_rule(t,e){if(!this.visuals.axis_line.doit)return;const[i,s]=this.rule_coords,[a,l]=this.coordinates.map_to_screen(i,s),[n,o]=this.normals,[r,_]=this.offsets;this.visuals.axis_line.set_value(t),t.beginPath(),t.moveTo(Math.round(a[0]+n*r),Math.round(l[0]+o*_));for(let e=1;ec&&(c=o)}return c>0&&(c+=s),c}get normals(){return this.panel.normals}get dimension(){return this.panel.dimension}compute_labels(t){const e=this.model.formatter.doFormat(t,this);for(let i=0;ih(n-o)?(t=d(c(a,l),n),s=c(d(a,l),o)):(t=c(a,l),s=d(a,l)),[t,s]}}get rule_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,l=[new Array(2),new Array(2)];return l[t][0]=Math.max(s,i.min),l[t][1]=Math.min(a,i.max),l[t][0]>l[t][1]&&(l[t][0]=l[t][1]=NaN),l[e][0]=this.loc,l[e][1]=this.loc,l}get tick_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,l=this.model.ticker.get_ticks(s,a,i,this.loc,{}),n=l.major,o=l.minor,r=[[],[]],_=[[],[]],[h,c]=[i.min,i.max];for(let i=0;ic||(r[t].push(n[i]),r[e].push(this.loc));for(let i=0;ic||(_[t].push(o[i]),_[e].push(this.loc));return{major:r,minor:_}}get loc(){const{fixed_location:t}=this.model;if(null!=t){if(r.isNumber(t))return t;const[,e]=this.ranges;if(e instanceof _.FactorRange)return e.synthetic(t);throw new Error(\"unexpected\")}const[,e]=this.ranges;switch(this.panel.side){case\"left\":case\"below\":return e.start;case\"right\":case\"above\":return e.end}}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box})}}i.AxisView=m,m.__name__=\"AxisView\";class b extends a.GuideRenderer{constructor(t){super(t)}static init_Axis(){this.prototype.default_view=m,this.mixins([[\"axis_\",l.Line],[\"major_tick_\",l.Line],[\"minor_tick_\",l.Line],[\"major_label_\",l.Text],[\"axis_label_\",l.Text]]),this.define({bounds:[n.Any,\"auto\"],ticker:[n.Instance],formatter:[n.Instance],axis_label:[n.String,\"\"],axis_label_standoff:[n.Int,5],major_label_standoff:[n.Int,5],major_label_orientation:[n.Any,\"horizontal\"],major_label_overrides:[n.Any,{}],major_tick_in:[n.Number,2],major_tick_out:[n.Number,6],minor_tick_in:[n.Number,0],minor_tick_out:[n.Number,4],fixed_location:[n.Any,null]}),this.override({axis_line_color:\"black\",major_tick_line_color:\"black\",minor_tick_line_color:\"black\",major_label_text_font_size:\"11px\",major_label_text_align:\"center\",major_label_text_baseline:\"alphabetic\",axis_label_text_font_size:\"13px\",axis_label_text_font_style:\"italic\"})}}i.Axis=b,b.__name__=\"Axis\",b.init_Axis()},\n", + " function _(e,r,d){Object.defineProperty(d,\"__esModule\",{value:!0});const i=e(70);class n extends i.RendererView{}d.GuideRendererView=n,n.__name__=\"GuideRendererView\";class t extends i.Renderer{constructor(e){super(e)}static init_GuideRenderer(){this.override({level:\"guide\"})}}d.GuideRenderer=t,t.__name__=\"GuideRenderer\",t.init_GuideRenderer()},\n", + " function _(t,s,o){Object.defineProperty(o,\"__esModule\",{value:!0});const e=t(1),i=t(177),r=t(180),a=t(181),l=e.__importStar(t(28)),_=e.__importStar(t(18));class n extends i.AxisView{_paint(t,s,o){this._draw_group_separators(t,s,o)}_draw_group_separators(t,s,o){const[e]=this.ranges,[i,r]=this.computed_bounds;if(!e.tops||e.tops.length<2||!this.visuals.separator_line.doit)return;const a=this.dimension,l=(a+1)%2,_=[[],[]];let n=0;for(let t=0;ti&&ht[1]),s=this.model.formatter.doFormat(t,this);a.push([s,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([i.tops,r.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){const t=i.major.map(t=>t[2]),s=this.model.formatter.doFormat(t,this),o=i.mids.map(t=>t[1]);a.push([s,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([o,r.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),a.push([i.tops,r.tops,this.model.group_label_orientation,this.visuals.group_text])}return a}get tick_coords(){const t=this.dimension,s=(t+1)%2,[o]=this.ranges,[e,i]=this.computed_bounds,r=this.model.ticker.get_ticks(e,i,o,this.loc,{}),a={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return a.major[t]=r.major,a.major[s]=r.major.map(t=>this.loc),3==o.levels&&(a.mids[t]=r.mids,a.mids[s]=r.mids.map(t=>this.loc)),o.levels>1&&(a.tops[t]=r.tops,a.tops[s]=r.tops.map(t=>this.loc)),a}}o.CategoricalAxisView=n,n.__name__=\"CategoricalAxisView\";class h extends i.Axis{constructor(t){super(t)}static init_CategoricalAxis(){this.prototype.default_view=n,this.mixins([[\"separator_\",l.Line],[\"group_\",l.Text],[\"subgroup_\",l.Text]]),this.define({group_label_orientation:[_.Any,\"parallel\"],subgroup_label_orientation:[_.Any,\"parallel\"]}),this.override({ticker:()=>new r.CategoricalTicker,formatter:()=>new a.CategoricalTickFormatter,separator_line_color:\"lightgrey\",separator_line_width:2,group_text_font_style:\"bold\",group_text_font_size:\"11px\",group_text_color:\"grey\",subgroup_text_font_style:\"bold\",subgroup_text_font_size:\"11px\"})}}o.CategoricalAxis=h,h.__name__=\"CategoricalAxis\",h.init_CategoricalAxis()},\n", + " function _(t,c,e){Object.defineProperty(e,\"__esModule\",{value:!0});const o=t(129);class s extends o.Ticker{constructor(t){super(t)}get_ticks(t,c,e,o,s){return{major:this._collect(e.factors,e,t,c),minor:[],tops:this._collect(e.tops||[],e,t,c),mids:this._collect(e.mids||[],e,t,c)}}_collect(t,c,e,o){const s=[];for(const r of t){const t=c.synthetic(r);t>e&&tnew r.DatetimeTicker,formatter:()=>new a.DatetimeTickFormatter})}}i.DatetimeAxis=_,_.__name__=\"DatetimeAxis\",_.init_DatetimeAxis()},\n", + " function _(e,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=e(177),n=e(182),r=e(130),a=e(126);class _ extends t.AxisView{}s.LinearAxisView=_,_.__name__=\"LinearAxisView\";class c extends n.ContinuousAxis{constructor(e){super(e)}static init_LinearAxis(){this.prototype.default_view=_,this.override({ticker:()=>new a.BasicTicker,formatter:()=>new r.BasicTickFormatter})}}s.LinearAxis=c,c.__name__=\"LinearAxis\",c.init_LinearAxis()},\n", + " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=t(1),i=r.__importDefault(t(186)),n=t(131),o=t(19),a=r.__importStar(t(18)),c=t(187),m=t(9),u=t(8);function h(t){return i.default(t,\"%Y %m %d %H %M %S\").split(/\\s+/).map(t=>parseInt(t,10))}function d(t,s){if(u.isFunction(s))return s(t);{const e=c.sprintf(\"$1%06d\",function(t){return Math.round(t/1e3%1*1e6)}(t));return-1==(s=s.replace(/((^|[^%])(%%)*)%f/,e)).indexOf(\"%\")?s:i.default(t,s)}}const l=[\"microseconds\",\"milliseconds\",\"seconds\",\"minsec\",\"minutes\",\"hourmin\",\"hours\",\"days\",\"months\",\"years\"];class _ extends n.TickFormatter{constructor(t){super(t),this.strip_leading_zeros=!0}static init_DatetimeTickFormatter(){this.define({microseconds:[a.Array,[\"%fus\"]],milliseconds:[a.Array,[\"%3Nms\",\"%S.%3Ns\"]],seconds:[a.Array,[\"%Ss\"]],minsec:[a.Array,[\":%M:%S\"]],minutes:[a.Array,[\":%M\",\"%Mm\"]],hourmin:[a.Array,[\"%H:%M\"]],hours:[a.Array,[\"%Hh\",\"%H:%M\"]],days:[a.Array,[\"%m/%d\",\"%a%d\"]],months:[a.Array,[\"%m/%Y\",\"%b %Y\"]],years:[a.Array,[\"%Y\"]]})}initialize(){super.initialize(),this._update_width_formats()}_update_width_formats(){const t=+i.default(new Date),s=function(s){const e=s.map(s=>d(t,s).length),r=m.sort_by(m.zip(e,s),([t])=>t);return m.unzip(r)};this._width_formats={microseconds:s(this.microseconds),milliseconds:s(this.milliseconds),seconds:s(this.seconds),minsec:s(this.minsec),minutes:s(this.minutes),hourmin:s(this.hourmin),hours:s(this.hours),days:s(this.days),months:s(this.months),years:s(this.years)}}_get_resolution_str(t,s){const e=1.1*t;switch(!1){case!(e<.001):return\"microseconds\";case!(e<1):return\"milliseconds\";case!(e<60):return s>=60?\"minsec\":\"seconds\";case!(e<3600):return s>=3600?\"hourmin\":\"minutes\";case!(e<86400):return\"hours\";case!(e<2678400):return\"days\";case!(e<31536e3):return\"months\";default:return\"years\"}}doFormat(t,s){if(0==t.length)return[];const e=Math.abs(t[t.length-1]-t[0])/1e3,r=e/(t.length-1),i=this._get_resolution_str(r,e),[,[n]]=this._width_formats[i],a=[],c=l.indexOf(i),m={};for(const t of l)m[t]=0;m.seconds=5,m.minsec=4,m.minutes=4,m.hourmin=3,m.hours=3;for(const s of t){let t,e;try{e=h(s),t=d(s,n)}catch(t){o.logger.warn(\"unable to format tick for timestamp value \"+s),o.logger.warn(\" - \"+t),a.push(\"ERR\");continue}let r=!1,u=c;for(;0==e[m[l[u]]];){let n;if(u+=1,u==l.length)break;if((\"minsec\"==i||\"hourmin\"==i)&&!r){if(\"minsec\"==i&&0==e[4]&&0!=e[5]||\"hourmin\"==i&&0==e[3]&&0!=e[4]){n=this._width_formats[l[c-1]][1][0],t=d(s,n);break}r=!0}n=this._width_formats[l[u]][1][0],t=d(s,n)}if(this.strip_leading_zeros){let s=t.replace(/^0+/g,\"\");s!=t&&isNaN(parseInt(s))&&(s=\"0\"+s),a.push(s)}else a.push(t)}return a}}e.DatetimeTickFormatter=_,_.__name__=\"DatetimeTickFormatter\",_.init_DatetimeTickFormatter()},\n", + " function _(e,t,n){!function(e){\"object\"==typeof t&&t.exports?t.exports=e():\"function\"==typeof define?define(e):this.tz=e()}((function(){function e(e,t,n){var r,o=t.day[1];do{r=new Date(Date.UTC(n,t.month,Math.abs(o++)))}while(t.day[0]<7&&r.getUTCDay()!=t.day[0]);return(r={clock:t.clock,sort:r.getTime(),rule:t,save:6e4*t.save,offset:e.offset})[r.clock]=r.sort+6e4*t.time,r.posix?r.wallclock=r[r.clock]+(e.offset+t.saved):r.posix=r[r.clock]-(e.offset+t.saved),r}function t(t,n,r){var o,a,u,i,l,s,c,f=t[t.zone],h=[],T=new Date(r).getUTCFullYear(),g=1;for(o=1,a=f.length;o=T-g;--c)for(o=0,a=s.length;o=h[o][n]&&h[o][h[o].clock]>u[h[o].clock]&&(i=h[o])}return i&&((l=/^(.*)\\/(.*)$/.exec(u.format))?i.abbrev=l[i.save?2:1]:i.abbrev=u.format.replace(/%s/,i.rule.letter)),i||u}function n(e,n){return\"UTC\"==e.zone?n:(e.entry=t(e,\"posix\",n),n+e.entry.offset+e.entry.save)}function r(e,n){return\"UTC\"==e.zone?n:(e.entry=r=t(e,\"wallclock\",n),0<(o=n-r.wallclock)&&o9)t+=s*l[c-10];else{if(a=new Date(n(e,t)),c<7)for(;s;)a.setUTCDate(a.getUTCDate()+i),a.getUTCDay()==c&&(s-=i);else 7==c?a.setUTCFullYear(a.getUTCFullYear()+s):8==c?a.setUTCMonth(a.getUTCMonth()+s):a.setUTCDate(a.getUTCDate()+s);null==(t=r(e,a.getTime()))&&(t=r(e,a.getTime()+864e5*i)-864e5*i)}return t}var a={clock:function(){return+new Date},zone:\"UTC\",entry:{abbrev:\"UTC\",offset:0,save:0},UTC:1,z:function(e,t,n,r){var o,a,u=this.entry.offset+this.entry.save,i=Math.abs(u/1e3),l=[],s=3600;for(o=0;o<3;o++)l.push((\"0\"+Math.floor(i/s)).slice(-2)),i%=s,s/=60;return\"^\"!=n||u?(\"^\"==n&&(r=3),3==r?(a=(a=l.join(\":\")).replace(/:00$/,\"\"),\"^\"!=n&&(a=a.replace(/:00$/,\"\"))):r?(a=l.slice(0,r+1).join(\":\"),\"^\"==n&&(a=a.replace(/:00$/,\"\"))):a=l.slice(0,2).join(\"\"),a=(a=(u<0?\"-\":\"+\")+a).replace(/([-+])(0)/,{_:\" $1\",\"-\":\"$1\"}[n]||\"$1$2\")):\"Z\"},\"%\":function(e){return\"%\"},n:function(e){return\"\\n\"},t:function(e){return\"\\t\"},U:function(e){return s(e,0)},W:function(e){return s(e,1)},V:function(e){return c(e)[0]},G:function(e){return c(e)[1]},g:function(e){return c(e)[1]%100},j:function(e){return Math.floor((e.getTime()-Date.UTC(e.getUTCFullYear(),0))/864e5)+1},s:function(e){return Math.floor(e.getTime()/1e3)},C:function(e){return Math.floor(e.getUTCFullYear()/100)},N:function(e){return e.getTime()%1e3*1e6},m:function(e){return e.getUTCMonth()+1},Y:function(e){return e.getUTCFullYear()},y:function(e){return e.getUTCFullYear()%100},H:function(e){return e.getUTCHours()},M:function(e){return e.getUTCMinutes()},S:function(e){return e.getUTCSeconds()},e:function(e){return e.getUTCDate()},d:function(e){return e.getUTCDate()},u:function(e){return e.getUTCDay()||7},w:function(e){return e.getUTCDay()},l:function(e){return e.getUTCHours()%12||12},I:function(e){return e.getUTCHours()%12||12},k:function(e){return e.getUTCHours()},Z:function(e){return this.entry.abbrev},a:function(e){return this[this.locale].day.abbrev[e.getUTCDay()]},A:function(e){return this[this.locale].day.full[e.getUTCDay()]},h:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},b:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},B:function(e){return this[this.locale].month.full[e.getUTCMonth()]},P:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)].toLowerCase()},p:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)]},R:function(e,t){return this.convert([t,\"%H:%M\"])},T:function(e,t){return this.convert([t,\"%H:%M:%S\"])},D:function(e,t){return this.convert([t,\"%m/%d/%y\"])},F:function(e,t){return this.convert([t,\"%Y-%m-%d\"])},x:function(e,t){return this.convert([t,this[this.locale].date])},r:function(e,t){return this.convert([t,this[this.locale].time12||\"%I:%M:%S\"])},X:function(e,t){return this.convert([t,this[this.locale].time24])},c:function(e,t){return this.convert([t,this[this.locale].dateTime])},convert:function(e){if(!e.length)return\"1.0.23\";var t,a,u,l,s,c=Object.create(this),f=[];for(t=0;t=o?Math.floor((n-o)/7)+1:0}function c(e){var t,n,r;return n=e.getUTCFullYear(),t=new Date(Date.UTC(n,0)).getUTCDay(),(r=s(e,1)+(t>1&&t<=4?1:0))?53!=r||4==t||3==t&&29==new Date(n,1,29).getDate()?[r,e.getUTCFullYear()]:[1,e.getUTCFullYear()+1]:(n=e.getUTCFullYear()-1,[r=4==(t=new Date(Date.UTC(n,0)).getUTCDay())||3==t&&29==new Date(n,1,29).getDate()?53:52,e.getUTCFullYear()-1])}return u=u.toLowerCase().split(\"|\"),\"delmHMSUWVgCIky\".replace(/./g,(function(e){a[e].pad=2})),a.N.pad=9,a.j.pad=3,a.k.style=\"_\",a.l.style=\"_\",a.e.style=\"_\",function(){return a.convert(arguments)}}))},\n", + " function _(r,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=r(1),i=n.__importStar(r(188)),u=r(189),a=n.__importDefault(r(186)),f=r(29),o=r(8);function l(r,...e){return u.sprintf(r,...e)}function s(r,e,t){if(o.isNumber(r)){return l((()=>{switch(!1){case Math.floor(r)!=r:return\"%d\";case!(Math.abs(r)>.1&&Math.abs(r)<1e3):return\"%0.3f\";default:return\"%0.3e\"}})(),r)}return\"\"+r}function c(r,e,n){if(null==e)return s;if(null!=n&&r in n){const e=n[r];if(o.isString(e)){if(e in t.DEFAULT_FORMATTERS)return t.DEFAULT_FORMATTERS[e];throw new Error(`Unknown tooltip field formatter type '${e}'`)}return function(r,t,n){return e.format(r,t,n)}}return t.DEFAULT_FORMATTERS.numeral}function m(r,e,t,n){if(\"$\"==r[0]){return function(r,e){if(r in e)return e[r];throw new Error(`Unknown special variable '$${r}'`)}(r.substring(1),n)}return function(r,e,t){const n=e.get_column(r);if(null==n)return null;if(o.isNumber(t))return n[t];const i=n[t.index];if(o.isTypedArray(i)||o.isArray(i)){if(o.isArray(i[0])){return i[t.dim2][t.dim1]}return i[t.flat_index]}return i}(r.substring(1).replace(/[{}]/g,\"\"),e,t)}t.DEFAULT_FORMATTERS={numeral:(r,e,t)=>i.format(r,e),datetime:(r,e,t)=>a.default(r,e),printf:(r,e,t)=>l(e,r)},t.sprintf=l,t.basic_formatter=s,t.get_formatter=c,t.get_value=m,t.replace_placeholders=function(r,e,t,n,i={}){let u,a;if(o.isString(r)?(u=r,a=!1):(u=r.html,a=!0),u=u.replace(/@\\$name/g,r=>`@{${i.name}}`),u=u.replace(/((?:\\$\\w+)|(?:@\\w+)|(?:@{(?:[^{}]+)}))(?:{([^{}]+)})?/g,(r,u,o)=>{const l=m(u,e,t,i);if(null==l)return\"\"+f.escape(\"???\");if(\"safe\"==o)return a=!0,\"\"+l;const s=c(u,o,n);return\"\"+f.escape(s(l,o,i))}),a){return[...(new DOMParser).parseFromString(u,\"text/html\").body.childNodes]}return u}},\n", + " function _(e,n,t){\n", + " /*!\n", + " * numbro.js\n", + " * version : 1.6.2\n", + " * author : Företagsplatsen AB\n", + " * license : MIT\n", + " * http://www.foretagsplatsen.se\n", + " */\n", + " var r,i={},a=i,o=\"en-US\",l=null,u=\"0,0\";void 0!==n&&n.exports;function c(e){this._value=e}function s(e){var n,t=\"\";for(n=0;n-1?function(e,n){var t,r,i,a;return t=(a=e.toString()).split(\"e\")[0],i=a.split(\"e\")[1],a=t.split(\".\")[0]+(r=t.split(\".\")[1]||\"\")+s(i-r.length),n>0&&(a+=\".\"+s(n)),a}(e,n):(t(e*o)/o).toFixed(n),r&&(i=new RegExp(\"0{1,\"+r+\"}$\"),a=a.replace(i,\"\")),a}function d(e,n,t){return n.indexOf(\"$\")>-1?function(e,n,t){var r,a,l=n,u=l.indexOf(\"$\"),c=l.indexOf(\"(\"),s=l.indexOf(\"+\"),f=l.indexOf(\"-\"),d=\"\",p=\"\";-1===l.indexOf(\"$\")?\"infix\"===i[o].currency.position?(p=i[o].currency.symbol,i[o].currency.spaceSeparated&&(p=\" \"+p+\" \")):i[o].currency.spaceSeparated&&(d=\" \"):l.indexOf(\" $\")>-1?(d=\" \",l=l.replace(\" $\",\"\")):l.indexOf(\"$ \")>-1?(d=\" \",l=l.replace(\"$ \",\"\")):l=l.replace(\"$\",\"\");if(a=h(e,l,t,p),-1===n.indexOf(\"$\"))switch(i[o].currency.position){case\"postfix\":a.indexOf(\")\")>-1?((a=a.split(\"\")).splice(-1,0,d+i[o].currency.symbol),a=a.join(\"\")):a=a+d+i[o].currency.symbol;break;case\"infix\":break;case\"prefix\":a.indexOf(\"(\")>-1||a.indexOf(\"-\")>-1?(a=a.split(\"\"),r=Math.max(c,f)+1,a.splice(r,0,i[o].currency.symbol+d),a=a.join(\"\")):a=i[o].currency.symbol+d+a;break;default:throw Error('Currency position should be among [\"prefix\", \"infix\", \"postfix\"]')}else u<=1?a.indexOf(\"(\")>-1||a.indexOf(\"+\")>-1||a.indexOf(\"-\")>-1?(a=a.split(\"\"),r=1,(u-1?((a=a.split(\"\")).splice(-1,0,d+i[o].currency.symbol),a=a.join(\"\")):a=a+d+i[o].currency.symbol;return a}(e,n,t):n.indexOf(\"%\")>-1?function(e,n,t){var r,i=\"\";e*=100,n.indexOf(\" %\")>-1?(i=\" \",n=n.replace(\" %\",\"\")):n=n.replace(\"%\",\"\");(r=h(e,n,t)).indexOf(\")\")>-1?((r=r.split(\"\")).splice(-1,0,i+\"%\"),r=r.join(\"\")):r=r+i+\"%\";return r}(e,n,t):n.indexOf(\":\")>-1?function(e){var n=Math.floor(e/60/60),t=Math.floor((e-60*n*60)/60),r=Math.round(e-60*n*60-60*t);return n+\":\"+(t<10?\"0\"+t:t)+\":\"+(r<10?\"0\"+r:r)}(e):h(e,n,t)}function h(e,n,t,r){var a,u,c,s,d,h,p,m,x,g,O,b,w,y,M,v,$,B=!1,E=!1,F=!1,k=\"\",U=!1,N=!1,S=!1,j=!1,D=!1,C=\"\",L=\"\",T=Math.abs(e),K=[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"],G=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"],I=\"\",P=!1,R=!1;if(0===e&&null!==l)return l;if(!isFinite(e))return\"\"+e;if(0===n.indexOf(\"{\")){var W=n.indexOf(\"}\");if(-1===W)throw Error('Format should also contain a \"}\"');b=n.slice(1,W),n=n.slice(W+1)}else b=\"\";if(n.indexOf(\"}\")===n.length-1){var Y=n.indexOf(\"{\");if(-1===Y)throw Error('Format should also contain a \"{\"');w=n.slice(Y+1,-1),n=n.slice(0,Y+1)}else w=\"\";if(v=null===($=-1===n.indexOf(\".\")?n.match(/([0-9]+).*/):n.match(/([0-9]+)\\..*/))?-1:$[1].length,-1!==n.indexOf(\"-\")&&(P=!0),n.indexOf(\"(\")>-1?(B=!0,n=n.slice(1,-1)):n.indexOf(\"+\")>-1&&(E=!0,n=n.replace(/\\+/g,\"\")),n.indexOf(\"a\")>-1){if(g=n.split(\".\")[0].match(/[0-9]+/g)||[\"0\"],g=parseInt(g[0],10),U=n.indexOf(\"aK\")>=0,N=n.indexOf(\"aM\")>=0,S=n.indexOf(\"aB\")>=0,j=n.indexOf(\"aT\")>=0,D=U||N||S||j,n.indexOf(\" a\")>-1?(k=\" \",n=n.replace(\" a\",\"\")):n=n.replace(\"a\",\"\"),p=0===(p=(d=Math.floor(Math.log(T)/Math.LN10)+1)%3)?3:p,g&&0!==T&&(h=Math.floor(Math.log(T)/Math.LN10)+1-g,m=3*~~((Math.min(g,d)-p)/3),T/=Math.pow(10,m),-1===n.indexOf(\".\")&&g>3))for(n+=\"[.]\",M=(M=0===h?0:3*~~(h/3)-h)<0?M+3:M,a=0;a=Math.pow(10,12)&&!D||j?(k+=i[o].abbreviations.trillion,e/=Math.pow(10,12)):T=Math.pow(10,9)&&!D||S?(k+=i[o].abbreviations.billion,e/=Math.pow(10,9)):T=Math.pow(10,6)&&!D||N?(k+=i[o].abbreviations.million,e/=Math.pow(10,6)):(T=Math.pow(10,3)&&!D||U)&&(k+=i[o].abbreviations.thousand,e/=Math.pow(10,3)))}if(n.indexOf(\"b\")>-1)for(n.indexOf(\" b\")>-1?(C=\" \",n=n.replace(\" b\",\"\")):n=n.replace(\"b\",\"\"),s=0;s<=K.length;s++)if(u=Math.pow(1024,s),c=Math.pow(1024,s+1),e>=u&&e0&&(e/=u);break}if(n.indexOf(\"d\")>-1)for(n.indexOf(\" d\")>-1?(C=\" \",n=n.replace(\" d\",\"\")):n=n.replace(\"d\",\"\"),s=0;s<=G.length;s++)if(u=Math.pow(1e3,s),c=Math.pow(1e3,s+1),e>=u&&e0&&(e/=u);break}if(n.indexOf(\"o\")>-1&&(n.indexOf(\" o\")>-1?(L=\" \",n=n.replace(\" o\",\"\")):n=n.replace(\"o\",\"\"),i[o].ordinal&&(L+=i[o].ordinal(e))),n.indexOf(\"[.]\")>-1&&(F=!0,n=n.replace(\"[.]\",\".\")),x=e.toString().split(\".\")[0],O=n.split(\".\")[1],y=n.indexOf(\",\"),O){if(x=(I=-1!==O.indexOf(\"*\")?f(e,e.toString().split(\".\")[1].length,t):O.indexOf(\"[\")>-1?f(e,(O=(O=O.replace(\"]\",\"\")).split(\"[\"))[0].length+O[1].length,t,O[1].length):f(e,O.length,t)).split(\".\")[0],I.split(\".\")[1].length)I=(r?k+r:i[o].delimiters.decimal)+I.split(\".\")[1];else I=\"\";F&&0===Number(I.slice(1))&&(I=\"\")}else x=f(e,null,t);return x.indexOf(\"-\")>-1&&(x=x.slice(1),R=!0),x.length-1&&(x=x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+i[o].delimiters.thousands)),0===n.indexOf(\".\")&&(x=\"\"),b+(n.indexOf(\"(\")2)&&(o.length<2?!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u):1===o[0].length?!!o[0].match(/^\\d+$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/):!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/)))))},n.exports={format:function(e,n,t,i){return null!=t&&t!==r.culture()&&r.setCulture(t),d(Number(e),null!=n?n:u,null==i?Math.round:i)}}},\n", + " function _(e,n,t){!function(){\"use strict\";var e={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function n(e){return i(a(e),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}function i(t,r){var i,s,a,o,p,c,l,u,f,d=1,g=t.length,y=\"\";for(s=0;s=0),o.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,o.width?parseInt(o.width):0);break;case\"e\":i=o.precision?parseFloat(i).toExponential(o.precision):parseFloat(i).toExponential();break;case\"f\":i=o.precision?parseFloat(i).toFixed(o.precision):parseFloat(i);break;case\"g\":i=o.precision?String(Number(i.toPrecision(o.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=o.precision?i.substring(0,o.precision):i;break;case\"t\":i=String(!!i),i=o.precision?i.substring(0,o.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o.precision?i.substring(0,o.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=o.precision?i.substring(0,o.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}e.json.test(o.type)?y+=i:(!e.number.test(o.type)||u&&!o.sign?f=\"\":(f=u?\"+\":\"-\",i=i.toString().replace(e.sign,\"\")),c=o.pad_char?\"0\"===o.pad_char?\"0\":o.pad_char.charAt(1):\" \",l=o.width-(f+i).length,p=o.width&&l>0?c.repeat(l):\"\",y+=o.align?f+i+p:\"0\"===c?f+p+i:p+f+i)}return y}var s=Object.create(null);function a(n){if(s[n])return s[n];for(var t,r=n,i=[],a=0;r;){if(null!==(t=e.text.exec(r)))i.push(t[0]);else if(null!==(t=e.modulo.exec(r)))i.push(\"%\");else{if(null===(t=e.placeholder.exec(r)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(t[2]){a|=1;var o=[],p=t[2],c=[];if(null===(c=e.key.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(o.push(c[1]);\"\"!==(p=p.substring(c[0].length));)if(null!==(c=e.key_access.exec(p)))o.push(c[1]);else{if(null===(c=e.index_access.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");o.push(c[1])}t[2]=o}else a|=2;if(3===a)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return s[n]=i}void 0!==t&&(t.sprintf=n,t.vsprintf=r),\"undefined\"!=typeof window&&(window.sprintf=n,window.vsprintf=r,\"function\"==typeof define&&define.amd&&define((function(){return{sprintf:n,vsprintf:r}})))}()},\n", + " function _(e,i,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(9),a=e(127),s=e(191),r=e(192),c=e(195),_=e(196),m=e(194);class k extends s.CompositeTicker{constructor(e){super(e)}static init_DatetimeTicker(){this.override({num_minor_ticks:0,tickers:()=>[new a.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*m.ONE_MILLI,num_minor_ticks:0}),new a.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:m.ONE_SECOND,max_interval:30*m.ONE_MINUTE,num_minor_ticks:0}),new a.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:m.ONE_HOUR,max_interval:12*m.ONE_HOUR,num_minor_ticks:0}),new r.DaysTicker({days:t.range(1,32)}),new r.DaysTicker({days:t.range(1,31,3)}),new r.DaysTicker({days:[1,8,15,22]}),new r.DaysTicker({days:[1,15]}),new c.MonthsTicker({months:t.range(0,12,1)}),new c.MonthsTicker({months:t.range(0,12,2)}),new c.MonthsTicker({months:t.range(0,12,4)}),new c.MonthsTicker({months:t.range(0,12,6)}),new _.YearsTicker({})]})}}n.DatetimeTicker=k,k.__name__=\"DatetimeTicker\",k.init_DatetimeTicker()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=t(1),s=t(128),n=r.__importStar(t(18)),_=t(9);class a extends s.ContinuousTicker{constructor(t){super(t)}static init_CompositeTicker(){this.define({tickers:[n.Array,[]]})}get min_intervals(){return this.tickers.map(t=>t.get_min_interval())}get max_intervals(){return this.tickers.map(t=>t.get_max_interval())}get min_interval(){return this.min_intervals[0]}get max_interval(){return this.max_intervals[0]}get_best_ticker(t,e,i){const r=e-t,s=this.get_ideal_interval(t,e,i),n=[_.sorted_index(this.min_intervals,s)-1,_.sorted_index(this.max_intervals,s)],a=[this.min_intervals[n[0]],this.max_intervals[n[1]]].map(t=>Math.abs(i-r/t));let c;if(_.is_empty(a.filter(t=>!isNaN(t))))c=this.tickers[0];else{const t=n[_.argmin(a)];c=this.tickers[t]}return c}get_interval(t,e,i){return this.get_best_ticker(t,e,i).get_interval(t,e,i)}get_ticks_no_defaults(t,e,i,r){return this.get_best_ticker(t,e,r).get_ticks_no_defaults(t,e,i,r)}}i.CompositeTicker=a,a.__name__=\"CompositeTicker\",a.init_CompositeTicker()},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=t(1),s=t(193),a=t(194),o=i.__importStar(t(18)),r=t(9);class _ extends s.SingleIntervalTicker{constructor(t){super(t)}static init_DaysTicker(){this.define({days:[o.Array,[]]}),this.override({num_minor_ticks:0})}initialize(){super.initialize();const t=this.days;t.length>1?this.interval=(t[1]-t[0])*a.ONE_DAY:this.interval=31*a.ONE_DAY}get_ticks_no_defaults(t,e,n,i){const s=function(t,e){const n=a.last_month_no_later_than(new Date(t)),i=a.last_month_no_later_than(new Date(e));i.setUTCMonth(i.getUTCMonth()+1);const s=[],o=n;for(;s.push(a.copy_date(o)),o.setUTCMonth(o.getUTCMonth()+1),!(o>i););return s}(t,e),o=this.days,_=this.interval;return{major:r.concat(s.map(t=>((t,e)=>{const n=t.getUTCMonth(),i=[];for(const s of o){const o=a.copy_date(t);o.setUTCDate(s);new Date(o.getTime()+e/2).getUTCMonth()==n&&i.push(o)}return i})(t,_))).map(t=>t.getTime()).filter(n=>t<=n&&n<=e),minor:[]}}}n.DaysTicker=_,_.__name__=\"DaysTicker\",_.init_DaysTicker()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),r=e(128),l=n.__importStar(e(18));class a extends r.ContinuousTicker{constructor(e){super(e)}static init_SingleIntervalTicker(){this.define({interval:[l.Number]})}get_interval(e,t,i){return this.interval}get min_interval(){return this.interval}get max_interval(){return this.interval}}i.SingleIntervalTicker=a,a.__name__=\"SingleIntervalTicker\",a.init_SingleIntervalTicker()},\n", + " function _(t,e,n){function _(t){return new Date(t.getTime())}function O(t){const e=_(t);return e.setUTCDate(1),e.setUTCHours(0),e.setUTCMinutes(0),e.setUTCSeconds(0),e.setUTCMilliseconds(0),e}Object.defineProperty(n,\"__esModule\",{value:!0}),n.ONE_MILLI=1,n.ONE_SECOND=1e3,n.ONE_MINUTE=60*n.ONE_SECOND,n.ONE_HOUR=60*n.ONE_MINUTE,n.ONE_DAY=24*n.ONE_HOUR,n.ONE_MONTH=30*n.ONE_DAY,n.ONE_YEAR=365*n.ONE_DAY,n.copy_date=_,n.last_month_no_later_than=O,n.last_year_no_later_than=function(t){const e=O(t);return e.setUTCMonth(0),e}},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=t(1),i=t(193),s=t(194),a=r.__importStar(t(18)),o=t(9);class _ extends i.SingleIntervalTicker{constructor(t){super(t)}static init_MonthsTicker(){this.define({months:[a.Array,[]]})}initialize(){super.initialize();const t=this.months;t.length>1?this.interval=(t[1]-t[0])*s.ONE_MONTH:this.interval=12*s.ONE_MONTH}get_ticks_no_defaults(t,e,n,r){const i=function(t,e){const n=s.last_year_no_later_than(new Date(t)),r=s.last_year_no_later_than(new Date(e));r.setUTCFullYear(r.getUTCFullYear()+1);const i=[],a=n;for(;i.push(s.copy_date(a)),a.setUTCFullYear(a.getUTCFullYear()+1),!(a>r););return i}(t,e),a=this.months;return{major:o.concat(i.map(t=>a.map(e=>{const n=s.copy_date(t);return n.setUTCMonth(e),n}))).map(t=>t.getTime()).filter(n=>t<=n&&n<=e),minor:[]}}}n.MonthsTicker=_,_.__name__=\"MonthsTicker\",_.init_MonthsTicker()},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const i=e(126),r=e(193),n=e(194);class _ extends r.SingleIntervalTicker{constructor(e){super(e)}initialize(){super.initialize(),this.interval=n.ONE_YEAR,this.basic_ticker=new i.BasicTicker({num_minor_ticks:0})}get_ticks_no_defaults(e,t,a,i){const r=n.last_year_no_later_than(new Date(e)).getUTCFullYear(),_=n.last_year_no_later_than(new Date(t)).getUTCFullYear();return{major:this.basic_ticker.get_ticks_no_defaults(r,_,a,i).major.map(e=>Date.UTC(e,0,1)).filter(a=>e<=a&&a<=t),minor:[]}}}a.YearsTicker=_,_.__name__=\"YearsTicker\"},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(177),o=e(182),n=e(198),r=e(199);class _ extends s.AxisView{}t.LogAxisView=_,_.__name__=\"LogAxisView\";class c extends o.ContinuousAxis{constructor(e){super(e)}static init_LogAxis(){this.prototype.default_view=_,this.override({ticker:()=>new r.LogTicker,formatter:()=>new n.LogTickFormatter})}}t.LogAxis=c,c.__name__=\"LogAxis\",c.init_LogAxis()},\n", + " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=t(1),o=t(131),a=t(130),n=i.__importStar(t(18));class c extends o.TickFormatter{constructor(t){super(t)}static init_LogTickFormatter(){this.define({ticker:[n.Instance,null]})}initialize(){super.initialize(),this.basic_formatter=new a.BasicTickFormatter}doFormat(t,e){if(0==t.length)return[];const r=null!=this.ticker?this.ticker.base:10;let i=!1;const o=new Array(t.length);for(let e=0,a=t.length;e0&&o[e]==o[e-1]){i=!0;break}return i?this.basic_formatter.doFormat(t,e):o}}r.LogTickFormatter=c,c.__name__=\"LogTickFormatter\",c.init_LogTickFormatter()},\n", + " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(127),s=t(9);class n extends i.AdaptiveTicker{constructor(t){super(t)}static init_LogTicker(){this.override({mantissas:[1,5]})}get_ticks_no_defaults(t,o,e,i){const n=this.num_minor_ticks,r=[],c=this.base,a=Math.log(t)/Math.log(c),f=Math.log(o)/Math.log(c),l=f-a;let h;if(isFinite(l))if(l<2){const e=this.get_interval(t,o,i),c=Math.floor(t/e),a=Math.ceil(o/e);if(h=s.range(c,a+1).filter(t=>0!=t).map(t=>t*e).filter(e=>t<=e&&e<=o),n>0&&h.length>0){const t=e/n,o=s.range(0,n).map(o=>o*t);for(const t of o.slice(1))r.push(h[0]-t);for(const t of h)for(const e of o)r.push(t+e)}}else{const t=Math.ceil(.999999*a),o=Math.floor(1.000001*f),e=Math.ceil((o-t)/9);if(h=s.range(t-1,o+1,e).map(t=>c**t),n>0&&h.length>0){const t=c**e/n,o=s.range(1,n+1).map(o=>o*t);for(const t of o)r.push(h[0]/t);r.push(h[0]);for(const t of h)for(const e of o)r.push(t*e)}}else h=[];return{major:h.filter(e=>t<=e&&e<=o),minor:r.filter(e=>t<=e&&e<=o)}}}e.LogTicker=n,n.__name__=\"LogTicker\",n.init_LogTicker()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(177),s=e(184),o=e(201),a=e(202);class c extends i.AxisView{}r.MercatorAxisView=c,c.__name__=\"MercatorAxisView\";class n extends s.LinearAxis{constructor(e){super(e)}static init_MercatorAxis(){this.prototype.default_view=c,this.override({ticker:()=>new a.MercatorTicker({dimension:\"lat\"}),formatter:()=>new o.MercatorTickFormatter({dimension:\"lat\"})})}}r.MercatorAxis=n,n.__name__=\"MercatorAxis\",n.init_MercatorAxis()},\n", + " function _(r,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const o=r(1),n=r(130),i=o.__importStar(r(18)),c=r(37);class a extends n.BasicTickFormatter{constructor(r){super(r)}static init_MercatorTickFormatter(){this.define({dimension:[i.LatLon]})}doFormat(r,t){if(null==this.dimension)throw new Error(\"MercatorTickFormatter.dimension not configured\");if(0==r.length)return[];const e=r.length,o=new Array(e);if(\"lon\"==this.dimension)for(let n=0;n{const n=s.replace_placeholders(this.url,t,e);if(!r.isString(n))throw new Error(\"HTML output is not supported in this context\");this.same_tab?window.location.href=n:window.open(n)},{selected:o}=t;for(const e of o.indices)n(e);for(const e of o.line_indices)n(e)}}n.OpenURL=a,a.__name__=\"OpenURL\",a.init_OpenURL()},\n", + " function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});var n=a(77);r.Canvas=n.Canvas;var s=a(208);r.CartesianFrame=s.CartesianFrame},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const a=e(209),_=e(146),n=e(157),r=e(158),i=e(210),g=e(98),c=e(212),o=e(13),l=e(11);class h extends c.LayoutItem{constructor(e,t,s,a,_={},n={}){super(),this.in_x_scale=e,this.in_y_scale=t,this.x_range=s,this.y_range=a,this.extra_x_ranges=_,this.extra_y_ranges=n,l.assert(null==e.source_range&&null==e.target_range),l.assert(null==t.source_range&&null==t.target_range),this._configure_scales()}_get_ranges(e,t){return new Map(o.entries(Object.assign(Object.assign({},t),{default:e})))}_get_scales(e,t,s){const c=new Map;for(const[o,l]of t){if((l instanceof i.DataRange1d||l instanceof r.Range1d)&&!(e instanceof _.ContinuousScale))throw new Error(`Range ${l.type} is incompatible is Scale ${e.type}`);if(l instanceof g.FactorRange&&!(e instanceof a.CategoricalScale))throw new Error(`Range ${l.type} is incompatible is Scale ${e.type}`);e instanceof n.LogScale&&l instanceof i.DataRange1d&&(l.scale_hint=\"log\");const t=e.clone();t.setv({source_range:l,target_range:s}),c.set(o,t)}return c}_configure_frame_ranges(){const{bbox:e}=this;this._x_target=new r.Range1d({start:e.left,end:e.right}),this._y_target=new r.Range1d({start:e.bottom,end:e.top})}_configure_scales(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._x_scales=this._get_scales(this.in_x_scale,this._x_ranges,this._x_target),this._y_scales=this._get_scales(this.in_y_scale,this._y_ranges,this._y_target)}_update_scales(){this._configure_frame_ranges();for(const[,e]of this._x_scales)e.target_range=this._x_target;for(const[,e]of this._y_scales)e.target_range=this._y_target}_set_geometry(e,t){super._set_geometry(e,t),this._update_scales()}get x_ranges(){return this._x_ranges}get y_ranges(){return this._y_ranges}get x_scales(){return this._x_scales}get y_scales(){return this._y_scales}get x_scale(){return this._x_scales.get(\"default\")}get y_scale(){return this._y_scales.get(\"default\")}get xscales(){return o.to_object(this.x_scales)}get yscales(){return o.to_object(this.y_scales)}}s.CartesianFrame=h,h.__name__=\"CartesianFrame\"},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(147);class _ extends n.Scale{constructor(e){super(e)}compute(e){return super._linear_compute(this.source_range.synthetic(e))}v_compute(e){return super._linear_v_compute(this.source_range.v_synthetic(e))}invert(e){return this._linear_invert(e)}v_invert(e){return this._linear_v_invert(e)}}t.CategoricalScale=_,_.__name__=\"CategoricalScale\"},\n", + " function _(t,i,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=t(1),a=t(211),s=t(90),l=t(19),_=e.__importStar(t(18)),o=e.__importStar(t(79)),r=t(9);class h extends a.DataRange{constructor(t){super(t),this.have_updated_interactively=!1}static init_DataRange1d(){this.define({start:[_.Number],end:[_.Number],range_padding:[_.Number,.1],range_padding_units:[_.PaddingUnits,\"percent\"],flipped:[_.Boolean,!1],follow:[_.StartEnd],follow_interval:[_.Number],default_span:[_.Number,2],only_visible:[_.Boolean,!1]}),this.internal({scale_hint:[_.String,\"auto\"]})}initialize(){super.initialize(),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span,this._plot_bounds=new Map}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}computed_renderers(){const t=this.names;let i=this.renderers;if(0==i.length)for(const t of this.plots){const n=t.renderers.filter(t=>t instanceof s.GlyphRenderer);i=i.concat(n)}t.length>0&&(i=i.filter(i=>r.includes(t,i.name))),l.logger.debug(`computed ${i.length} renderers for ${this}`);for(const t of i)l.logger.trace(\" - \"+t);return i}_compute_plot_bounds(t,i){let n=o.empty();for(const e of t){const t=i.get(e);null==t||!e.visible&&this.only_visible||(n=o.union(n,t))}return n}adjust_bounds_for_aspect(t,i){const n=o.empty();let e=t.x1-t.x0;e<=0&&(e=1);let a=t.y1-t.y0;a<=0&&(a=1);const s=.5*(t.x1+t.x0),l=.5*(t.y1+t.y0);return e_&&(\"start\"==this.follow?a=e+s*_:\"end\"==this.follow&&(e=a-s*_)),[e,a]}update(t,i,n,e){if(this.have_updated_interactively)return;const a=this.computed_renderers();let s=this._compute_plot_bounds(a,t);null!=e&&(s=this.adjust_bounds_for_aspect(s,e)),this._plot_bounds.set(n,s);const[l,_]=this._compute_min_max(this._plot_bounds.values(),i);let[o,r]=this._compute_range(l,_);null!=this._initial_start&&(\"log\"==this.scale_hint?this._initial_start>0&&(o=this._initial_start):o=this._initial_start),null!=this._initial_end&&(\"log\"==this.scale_hint?this._initial_end>0&&(r=this._initial_end):r=this._initial_end);const[h,d]=[this.start,this.end];if(o!=h||r!=d){const t={};o!=h&&(t.start=o),r!=d&&(t.end=r),this.setv(t)}\"auto\"==this.bounds&&this.setv({bounds:[o,r]},{silent:!0}),this.change.emit()}reset(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()}}n.DataRange1d=h,h.__name__=\"DataRange1d\",h.init_DataRange1d()},\n", + " function _(e,a,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),r=e(99),s=n.__importStar(e(18));class _ extends r.Range{constructor(e){super(e)}static init_DataRange(){this.define({names:[s.Array,[]],renderers:[s.Array,[]]})}}t.DataRange=_,_.__name__=\"DataRange\",_.init_DataRange()},\n", + " function _(a,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});var e=a(213);t.Sizeable=e.Sizeable,t.SizingPolicy=e.SizingPolicy;var i=a(214);t.Layoutable=i.Layoutable,t.LayoutItem=i.LayoutItem;var n=a(215);t.HStack=n.HStack,t.VStack=n.VStack,t.AnchorLayout=n.AnchorLayout;var r=a(216);t.Grid=r.Grid,t.Row=r.Row,t.Column=r.Column;var c=a(217);t.ContentBox=c.ContentBox,t.VariadicBox=c.VariadicBox},\n", + " function _(t,h,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(21),{min:d,max:n}=Math;class w{constructor(t={}){this.width=null!=t.width?t.width:0,this.height=null!=t.height?t.height:0}bounded_to({width:t,height:h}){return new w({width:this.width==1/0&&null!=t?t:this.width,height:this.height==1/0&&null!=h?h:this.height})}expanded_to({width:t,height:h}){return new w({width:t!=1/0?n(this.width,t):this.width,height:h!=1/0?n(this.height,h):this.height})}expand_to({width:t,height:h}){this.width=n(this.width,t),this.height=n(this.height,h)}narrowed_to({width:t,height:h}){return new w({width:d(this.width,t),height:d(this.height,h)})}narrow_to({width:t,height:h}){this.width=d(this.width,t),this.height=d(this.height,h)}grow_by({left:t,right:h,top:i,bottom:e}){const d=this.width+t+h,n=this.height+i+e;return new w({width:d,height:n})}shrink_by({left:t,right:h,top:i,bottom:e}){const d=n(this.width-t-h,0),s=n(this.height-i-e,0);return new w({width:d,height:s})}map(t,h){return new w({width:t(this.width),height:(null!=h?h:t)(this.height)})}}i.Sizeable=w,w.__name__=\"Sizeable\",i.SizingPolicy=e.Enum(\"fixed\",\"fit\",\"min\",\"max\")},\n", + " function _(i,t,h){Object.defineProperty(h,\"__esModule\",{value:!0});const e=i(213),s=i(79),{min:n,max:g,round:a}=Math;class l{constructor(){this._bbox=new s.BBox,this._inner_bbox=new s.BBox}get bbox(){return this._bbox}get inner_bbox(){return this._inner_bbox}get sizing(){return this._sizing}set_sizing(i){const t=i.width_policy||\"fit\",h=i.width,e=null!=i.min_width?i.min_width:0,s=null!=i.max_width?i.max_width:1/0,n=i.height_policy||\"fit\",g=i.height,a=null!=i.min_height?i.min_height:0,l=null!=i.max_height?i.max_height:1/0,_=i.aspect,d=i.margin||{top:0,right:0,bottom:0,left:0},r=!1!==i.visible,w=i.halign||\"start\",o=i.valign||\"start\";this._sizing={width_policy:t,min_width:e,width:h,max_width:s,height_policy:n,min_height:a,height:g,max_height:l,aspect:_,margin:d,visible:r,halign:w,valign:o,size:{width:h,height:g},min_size:{width:e,height:a},max_size:{width:s,height:l}},this._init()}_init(){}_set_geometry(i,t){this._bbox=i,this._inner_bbox=t}set_geometry(i,t){this._set_geometry(i,t||i)}is_width_expanding(){return\"max\"==this.sizing.width_policy}is_height_expanding(){return\"max\"==this.sizing.height_policy}apply_aspect(i,{width:t,height:h}){const{aspect:e}=this.sizing;if(null!=e){const{width_policy:s,height_policy:n}=this.sizing,g=(i,t)=>{const h={max:4,fit:3,min:2,fixed:1};return h[i]>h[t]};if(\"fixed\"!=s&&\"fixed\"!=n)if(s==n){const s=t,n=a(t/e),g=a(h*e),l=h;Math.abs(i.width-s)+Math.abs(i.height-n)<=Math.abs(i.width-g)+Math.abs(i.height-l)?(t=s,h=n):(t=g,h=l)}else g(s,n)?h=a(t/e):t=a(h*e);else\"fixed\"==s?h=a(t/e):\"fixed\"==n&&(t=a(h*e))}return{width:t,height:h}}measure(i){if(!this.sizing.visible)return{width:0,height:0};const t=i=>\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:i,h=i=>\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:i,s=new e.Sizeable(i).shrink_by(this.sizing.margin).map(t,h),n=this._measure(s),g=this.clip_size(n),a=t(g.width),l=h(g.height),_=this.apply_aspect(s,{width:a,height:l});return Object.assign(Object.assign({},n),_)}compute(i={}){const t=this.measure({width:null!=i.width&&this.is_width_expanding()?i.width:1/0,height:null!=i.height&&this.is_height_expanding()?i.height:1/0}),{width:h,height:e}=t,n=new s.BBox({left:0,top:0,width:h,height:e});let g=void 0;if(null!=t.inner){const{left:i,top:n,right:a,bottom:l}=t.inner;g=new s.BBox({left:i,top:n,right:h-a,bottom:e-l})}this.set_geometry(n,g)}get xview(){return this.bbox.xview}get yview(){return this.bbox.yview}clip_width(i){return g(this.sizing.min_width,n(i,this.sizing.max_width))}clip_height(i){return g(this.sizing.min_height,n(i,this.sizing.max_height))}clip_size({width:i,height:t}){return{width:this.clip_width(i),height:this.clip_height(t)}}}h.Layoutable=l,l.__name__=\"Layoutable\";class _ extends l{_measure(i){const{width_policy:t,height_policy:h}=this.sizing;let e,s;if(i.width==1/0)e=null!=this.sizing.width?this.sizing.width:0;else switch(t){case\"fixed\":e=null!=this.sizing.width?this.sizing.width:0;break;case\"min\":e=null!=this.sizing.width?n(i.width,this.sizing.width):0;break;case\"fit\":e=null!=this.sizing.width?n(i.width,this.sizing.width):i.width;break;case\"max\":e=null!=this.sizing.width?g(i.width,this.sizing.width):i.width}if(i.height==1/0)s=null!=this.sizing.height?this.sizing.height:0;else switch(h){case\"fixed\":s=null!=this.sizing.height?this.sizing.height:0;break;case\"min\":s=null!=this.sizing.height?n(i.height,this.sizing.height):0;break;case\"fit\":s=null!=this.sizing.height?n(i.height,this.sizing.height):i.height;break;case\"max\":s=null!=this.sizing.height?g(i.height,this.sizing.height):i.height}return{width:e,height:s}}}h.LayoutItem=_,_.__name__=\"LayoutItem\";class d extends l{_measure(i){const t=this._content_size(),h=i.bounded_to(this.sizing.size).bounded_to(t);return{width:(()=>{switch(this.sizing.width_policy){case\"fixed\":return null!=this.sizing.width?this.sizing.width:t.width;case\"min\":return t.width;case\"fit\":return h.width;case\"max\":return Math.max(t.width,h.width)}})(),height:(()=>{switch(this.sizing.height_policy){case\"fixed\":return null!=this.sizing.height?this.sizing.height:t.height;case\"min\":return t.height;case\"fit\":return h.height;case\"max\":return Math.max(t.height,h.height)}})()}}}h.ContentLayoutable=d,d.__name__=\"ContentLayoutable\"},\n", + " function _(t,e,h){Object.defineProperty(h,\"__esModule\",{value:!0});const o=t(214),r=t(79);class i extends o.Layoutable{constructor(){super(...arguments),this.children=[]}}h.Stack=i,i.__name__=\"Stack\";class s extends i{_measure(t){let e=0,h=0;for(const t of this.children){const o=t.measure({width:0,height:0});e+=o.width,h=Math.max(h,o.height)}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const{top:h,bottom:o}=t;let{left:i}=t;for(const t of this.children){const{width:e}=t.measure({width:0,height:0});t.set_geometry(new r.BBox({left:i,width:e,top:h,bottom:o})),i+=e}}}h.HStack=s,s.__name__=\"HStack\";class n extends i{_measure(t){let e=0,h=0;for(const t of this.children){const o=t.measure({width:0,height:0});e=Math.max(e,o.width),h+=o.height}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const{left:h,right:o}=t;let{top:i}=t;for(const t of this.children){const{height:e}=t.measure({width:0,height:0});t.set_geometry(new r.BBox({top:i,height:e,left:h,right:o})),i+=e}}}h.VStack=n,n.__name__=\"VStack\";class c extends o.Layoutable{constructor(){super(...arguments),this.children=[]}_measure(t){let e=0,h=0;for(const{layout:o}of this.children){const r=o.measure(t);e=Math.max(e,r.width),h=Math.max(h,r.height)}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);for(const{layout:e,anchor:h,margin:o}of this.children){const{left:i,right:s,top:n,bottom:c,hcenter:a,vcenter:_}=t,{width:g,height:d}=e.measure(t);let m;switch(h){case\"top_left\":m=new r.BBox({left:i+o,top:n+o,width:g,height:d});break;case\"top_center\":m=new r.BBox({hcenter:a,top:n+o,width:g,height:d});break;case\"top_right\":m=new r.BBox({right:s-o,top:n+o,width:g,height:d});break;case\"bottom_right\":m=new r.BBox({right:s-o,bottom:c-o,width:g,height:d});break;case\"bottom_center\":m=new r.BBox({hcenter:a,bottom:c-o,width:g,height:d});break;case\"bottom_left\":m=new r.BBox({left:i+o,bottom:c-o,width:g,height:d});break;case\"center_left\":m=new r.BBox({left:i+o,vcenter:_,width:g,height:d});break;case\"center\":m=new r.BBox({hcenter:a,vcenter:_,width:g,height:d});break;case\"center_right\":m=new r.BBox({right:s-o,vcenter:_,width:g,height:d})}e.set_geometry(m)}}}h.AnchorLayout=c,c.__name__=\"AnchorLayout\"},\n", + " function _(t,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const e=t(213),o=t(214),n=t(8),r=t(79),h=t(9),{max:l,round:c}=Math;class a{constructor(t){this.def=t,this._map=new Map}get(t){let i=this._map.get(t);return void 0===i&&(i=this.def(),this._map.set(t,i)),i}apply(t,i){const s=this.get(t);this._map.set(t,i(s))}}a.__name__=\"DefaultMap\";class g{constructor(){this._items=[],this._nrows=0,this._ncols=0}get nrows(){return this._nrows}get ncols(){return this._ncols}add(t,i){const{r1:s,c1:e}=t;this._nrows=l(this._nrows,s+1),this._ncols=l(this._ncols,e+1),this._items.push({span:t,data:i})}at(t,i){return this._items.filter(({span:s})=>s.r0<=t&&t<=s.r1&&s.c0<=i&&i<=s.c1).map(({data:t})=>t)}row(t){return this._items.filter(({span:i})=>i.r0<=t&&t<=i.r1).map(({data:t})=>t)}col(t){return this._items.filter(({span:i})=>i.c0<=t&&t<=i.c1).map(({data:t})=>t)}foreach(t){for(const{span:i,data:s}of this._items)t(i,s)}map(t){const i=new g;for(const{span:s,data:e}of this._items)i.add(s,t(s,e));return i}}g.__name__=\"Container\";class p extends o.Layoutable{constructor(t=[]){super(),this.items=t,this.rows=\"auto\",this.cols=\"auto\",this.spacing=0,this.absolute=!1}is_width_expanding(){if(super.is_width_expanding())return!0;if(\"fixed\"==this.sizing.width_policy)return!1;const{cols:t}=this._state;return h.some(t,t=>\"max\"==t.policy)}is_height_expanding(){if(super.is_height_expanding())return!0;if(\"fixed\"==this.sizing.height_policy)return!1;const{rows:t}=this._state;return h.some(t,t=>\"max\"==t.policy)}_init(){super._init();const t=new g;for(const{layout:i,row:s,col:e,row_span:o,col_span:n}of this.items)if(i.sizing.visible){const r=s,h=e,l=s+(null!=o?o:1)-1,c=e+(null!=n?n:1)-1;t.add({r0:r,c0:h,r1:l,c1:c},i)}const{nrows:i,ncols:s}=t,e=new Array(i);for(let s=0;s{const t=n.isPlainObject(this.rows)?this.rows[s]||this.rows[\"*\"]:this.rows;return null==t?{policy:\"auto\"}:n.isNumber(t)?{policy:\"fixed\",height:t}:n.isString(t)?{policy:t}:t})(),o=i.align||\"auto\";if(\"fixed\"==i.policy)e[s]={policy:\"fixed\",height:i.height,align:o};else if(\"min\"==i.policy)e[s]={policy:\"min\",align:o};else if(\"fit\"==i.policy||\"max\"==i.policy)e[s]={policy:i.policy,flex:i.flex||1,align:o};else{if(\"auto\"!=i.policy)throw new Error(\"unrechable\");h.some(t.row(s),t=>t.is_height_expanding())?e[s]={policy:\"max\",flex:1,align:o}:e[s]={policy:\"min\",align:o}}}const o=new Array(s);for(let i=0;i{const t=n.isPlainObject(this.cols)?this.cols[i]||this.cols[\"*\"]:this.cols;return null==t?{policy:\"auto\"}:n.isNumber(t)?{policy:\"fixed\",width:t}:n.isString(t)?{policy:t}:t})(),e=s.align||\"auto\";if(\"fixed\"==s.policy)o[i]={policy:\"fixed\",width:s.width,align:e};else if(\"min\"==s.policy)o[i]={policy:\"min\",align:e};else if(\"fit\"==s.policy||\"max\"==s.policy)o[i]={policy:s.policy,flex:s.flex||1,align:e};else{if(\"auto\"!=s.policy)throw new Error(\"unrechable\");h.some(t.col(i),t=>t.is_width_expanding())?o[i]={policy:\"max\",flex:1,align:e}:o[i]={policy:\"min\",align:e}}}const[r,l]=n.isNumber(this.spacing)?[this.spacing,this.spacing]:this.spacing;this._state={items:t,nrows:i,ncols:s,rows:e,cols:o,rspacing:r,cspacing:l}}_measure_totals(t,i){const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state;return{height:h.sum(t)+(s-1)*o,width:h.sum(i)+(e-1)*n}}_measure_cells(t){const{items:i,nrows:s,ncols:o,rows:n,cols:r,rspacing:h,cspacing:a}=this._state,p=new Array(s);for(let t=0;t{const{r0:o,c0:g,r1:d,c1:w}=i,u=(d-o)*h,m=(w-g)*a;let y=0;for(let i=o;i<=d;i++)y+=t(i,g).height;y+=u;let x=0;for(let i=g;i<=w;i++)x+=t(o,i).width;x+=m;const b=s.measure({width:x,height:y});f.add(i,{layout:s,size_hint:b});const z=new e.Sizeable(b).grow_by(s.sizing.margin);z.height-=u,z.width-=m;const j=[];for(let t=o;t<=d;t++){const i=n[t];\"fixed\"==i.policy?z.height-=i.height:j.push(t)}if(z.height>0){const t=c(z.height/j.length);for(const i of j)p[i]=l(p[i],t)}const O=[];for(let t=g;t<=w;t++){const i=r[t];\"fixed\"==i.policy?z.width-=i.width:O.push(t)}if(z.width>0){const t=c(z.width/O.length);for(const i of O)_[i]=l(_[i],t)}});return{size:this._measure_totals(p,_),row_heights:p,col_widths:_,size_hints:f}}_measure_grid(t){const{nrows:i,ncols:s,rows:e,cols:o,rspacing:n,cspacing:r}=this._state,h=this._measure_cells((t,i)=>{const s=e[t],n=o[i];return{width:\"fixed\"==n.policy?n.width:1/0,height:\"fixed\"==s.policy?s.height:1/0}});let a;a=\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:t.height!=1/0&&this.is_height_expanding()?t.height:h.size.height;let g,p=0;for(let t=0;t0)for(let t=0;ti?i:e,t--}}}g=\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:t.width!=1/0&&this.is_width_expanding()?t.width:h.size.width;let _=0;for(let t=0;t0)for(let t=0;ts?s:o,t--}}}const{row_heights:f,col_widths:d,size_hints:w}=this._measure_cells((t,i)=>({width:h.col_widths[i],height:h.row_heights[t]}));return{size:this._measure_totals(f,d),row_heights:f,col_widths:d,size_hints:w}}_measure(t){const{size:i}=this._measure_grid(t);return i}_set_geometry(t,i){super._set_geometry(t,i);const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state,{row_heights:h,col_widths:g,size_hints:p}=this._measure_grid(t),_=this._state.rows.map((t,i)=>Object.assign(Object.assign({},t),{top:0,height:h[i],get bottom(){return this.top+this.height}})),f=this._state.cols.map((t,i)=>Object.assign(Object.assign({},t),{left:0,width:g[i],get right(){return this.left+this.width}})),d=p.map((t,i)=>Object.assign(Object.assign({},i),{outer:new r.BBox,inner:new r.BBox}));for(let i=0,e=this.absolute?t.top:0;i{const{layout:l,size_hint:a}=h,{sizing:g}=l,{width:p,height:d}=a,w=function(t,i){let s=(i-t)*n;for(let e=t;e<=i;e++)s+=f[e].width;return s}(i,e),u=function(t,i){let s=(i-t)*o;for(let e=t;e<=i;e++)s+=_[e].height;return s}(t,s),m=i==e&&\"auto\"!=f[i].align?f[i].align:g.halign,y=t==s&&\"auto\"!=_[t].align?_[t].align:g.valign;let x=f[i].left;\"start\"==m?x+=g.margin.left:\"center\"==m?x+=c((w-p)/2):\"end\"==m&&(x+=w-g.margin.right-p);let b=_[t].top;\"start\"==y?b+=g.margin.top:\"center\"==y?b+=c((u-d)/2):\"end\"==y&&(b+=u-g.margin.bottom-d),h.outer=new r.BBox({left:x,top:b,width:p,height:d})});const w=_.map(()=>({start:new a(()=>0),end:new a(()=>0)})),u=f.map(()=>({start:new a(()=>0),end:new a(()=>0)}));d.foreach(({r0:t,c0:i,r1:s,c1:e},{size_hint:o,outer:n})=>{const{inner:r}=o;null!=r&&(w[t].start.apply(n.top,t=>l(t,r.top)),w[s].end.apply(_[s].bottom-n.bottom,t=>l(t,r.bottom)),u[i].start.apply(n.left,t=>l(t,r.left)),u[e].end.apply(f[e].right-n.right,t=>l(t,r.right)))}),d.foreach(({r0:t,c0:i,r1:s,c1:e},o)=>{const{size_hint:n,outer:h}=o;function l({left:t,right:i,top:s,bottom:e}){const o=h.width-t-i,n=h.height-s-e;return new r.BBox({left:t,top:s,width:o,height:n})}if(null!=n.inner){let r=l(n.inner);if(!1!==n.align){const o=w[t].start.get(h.top),n=w[s].end.get(_[s].bottom-h.bottom),c=u[i].start.get(h.left),a=u[e].end.get(f[e].right-h.right);try{r=l({top:o,bottom:n,left:c,right:a})}catch(t){}}o.inner=r}else o.inner=h}),d.foreach((t,{layout:i,outer:s,inner:e})=>{i.set_geometry(s,e)})}}s.Grid=p,p.__name__=\"Grid\";class _ extends p{constructor(t){super(),this.items=t.map((t,i)=>({layout:t,row:0,col:i})),this.rows=\"fit\"}}s.Row=_,_.__name__=\"Row\";class f extends p{constructor(t){super(),this.items=t.map((t,i)=>({layout:t,row:i,col:0})),this.cols=\"fit\"}}s.Column=f,f.__name__=\"Column\"},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(214),i=e(213),a=e(72);class c extends n.ContentLayoutable{constructor(e){super(),this.content_size=a.unsized(e,()=>new i.Sizeable(a.size(e)))}_content_size(){return this.content_size}}s.ContentBox=c,c.__name__=\"ContentBox\";class o extends n.Layoutable{constructor(e){super(),this.el=e}_measure(e){const t=new i.Sizeable(e).bounded_to(this.sizing.size);return a.sized(this.el,t,()=>{const e=new i.Sizeable(a.content_size(this.el)),{border:t,padding:s}=a.extents(this.el);return e.grow_by(t).grow_by(s).map(Math.ceil)})}}s.VariadicBox=o,o.__name__=\"VariadicBox\";class r extends o{constructor(e){super(e),this._cache=new Map}_measure(e){const{width:t,height:s}=e,n=`${t},${s}`;let i=this._cache.get(n);return null==i&&(i=super._measure(e),this._cache.set(n,i)),i}invalidate_cache(){this._cache.clear()}}s.CachedVariadicBox=r,r.__name__=\"CachedVariadicBox\"},\n", + " function _(e,r,u){Object.defineProperty(u,\"__esModule\",{value:!0});var a=e(219);u.Expression=a.Expression;var n=e(220);u.Stack=n.Stack;var o=e(221);u.CumSum=o.CumSum},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(81);class i extends n.Model{constructor(e){super(e)}initialize(){super.initialize(),this._connected=new Set,this._result=new Map}v_compute(e){this._connected.has(e)||(this.connect(e.change,()=>this._result.delete(e)),this.connect(e.patching,()=>this._result.delete(e)),this.connect(e.streaming,()=>this._result.delete(e)),this._connected.add(e));let t=this._result.get(e);return null==t&&(t=this._v_compute(e),this._result.set(e,t)),t}}s.Expression=i,i.__name__=\"Expression\"},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=t(1),i=t(219),s=t(24),o=r.__importStar(t(18));class a extends i.Expression{constructor(t){super(t)}static init_Stack(){this.define({fields:[o.Array,[]]})}_v_compute(t){var e;const n=null!==(e=t.get_length())&&void 0!==e?e:0,r=new s.NumberArray(n);for(const e of this.fields){const i=t.data[e];if(null!=i)for(let t=0,e=Math.min(n,i.length);tn(t,e,r,...this.values))}}n.FuncTickFormatter=u,u.__name__=\"FuncTickFormatter\",u.init_FuncTickFormatter()},\n", + " function _(r,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=r(1),o=e.__importStar(r(188)),a=r(131),i=e.__importStar(r(18));class u extends a.TickFormatter{constructor(r){super(r)}static init_NumeralTickFormatter(){this.define({format:[i.String,\"0,0\"],language:[i.String,\"en\"],rounding:[i.RoundingFunction,\"round\"]})}get _rounding_fn(){switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}}doFormat(r,t){const{format:n,language:e,_rounding_fn:a}=this;return r.map(r=>o.format(r,n,e,a))}}n.NumeralTickFormatter=u,u.__name__=\"NumeralTickFormatter\",u.init_NumeralTickFormatter()},\n", + " function _(t,r,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(1),n=t(131),o=t(187),a=e.__importStar(t(18));class c extends n.TickFormatter{constructor(t){super(t)}static init_PrintfTickFormatter(){this.define({format:[a.String,\"%s\"]})}doFormat(t,r){return t.map(t=>o.sprintf(this.format,t))}}i.PrintfTickFormatter=c,c.__name__=\"PrintfTickFormatter\",c.init_PrintfTickFormatter()},\n", + " function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});var v=a(233);r.AnnularWedge=v.AnnularWedge;var l=a(234);r.Annulus=l.Annulus;var t=a(235);r.Arc=t.Arc;var i=a(236);r.Bezier=i.Bezier;var n=a(237);r.Circle=n.Circle;var u=a(241);r.CenterRotatable=u.CenterRotatable;var c=a(242);r.Ellipse=c.Ellipse;var g=a(243);r.EllipseOval=g.EllipseOval;var A=a(94);r.Glyph=A.Glyph;var p=a(111);r.HArea=p.HArea;var s=a(244);r.HBar=s.HBar;var d=a(246);r.HexTile=d.HexTile;var R=a(247);r.Image=R.Image;var o=a(249);r.ImageRGBA=o.ImageRGBA;var y=a(250);r.ImageURL=y.ImageURL;var h=a(92);r.Line=h.Line;var m=a(252);r.MultiLine=m.MultiLine;var B=a(253);r.MultiPolygons=B.MultiPolygons;var P=a(254);r.Oval=P.Oval;var G=a(110);r.Patch=G.Patch;var H=a(255);r.Patches=H.Patches;var I=a(256);r.Quad=I.Quad;var L=a(257);r.Quadratic=L.Quadratic;var M=a(258);r.Ray=M.Ray;var O=a(259);r.Rect=O.Rect;var x=a(260);r.Segment=x.Segment;var C=a(261);r.Step=C.Step;var E=a(262);r.Text=E.Text;var Q=a(113);r.VArea=Q.VArea;var S=a(263);r.VBar=S.VBar;var T=a(264);r.Wedge=T.Wedge;var V=a(93);r.XYGlyph=V.XYGlyph},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),r=e(93),n=e(100),a=e(28),_=e(24),o=i.__importStar(e(18)),d=e(10),h=e(88);class u extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius,this._angle=new _.NumberArray(this._start_angle.length);for(let e=0,t=this._start_angle.length;e=s&&u.push(e)}const l=this.model.properties.direction.value(),c=[];for(const e of u){const i=Math.atan2(s-this.sy[e],t-this.sx[e]);d.angle_between(-i,-this._start_angle[e],-this._end_angle[e],l)&&c.push(e)}return new h.Selection({indices:c})}draw_legend_for_index(e,t,s){n.generic_area_legend(this.visuals,e,t,s)}scenterxy(e){const t=(this.sinner_radius[e]+this.souter_radius[e])/2,s=(this._start_angle[e]+this._end_angle[e])/2;return[this.sx[e]+t*Math.cos(s),this.sy[e]+t*Math.sin(s)]}}s.AnnularWedgeView=u,u.__name__=\"AnnularWedgeView\";class l extends r.XYGlyph{constructor(e){super(e)}static init_AnnularWedge(){this.prototype.default_view=u,this.mixins([a.LineVector,a.FillVector]),this.define({direction:[o.Direction,\"anticlock\"],inner_radius:[o.DistanceSpec],outer_radius:[o.DistanceSpec],start_angle:[o.AngleSpec],end_angle:[o.AngleSpec]})}}s.AnnularWedge=l,l.__name__=\"AnnularWedge\",l.init_AnnularWedge()},\n", + " function _(s,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const t=s(1),r=s(93),n=s(28),a=t.__importStar(s(18)),_=s(32),u=s(88);class o extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius}_render(s,i,{sx:e,sy:t,sinner_radius:r,souter_radius:n}){for(const a of i)if(!isNaN(e[a]+t[a]+r[a]+n[a])){if(this.visuals.fill.doit){if(this.visuals.fill.set_vectorize(s,a),s.beginPath(),_.is_ie)for(const i of[!1,!0])s.arc(e[a],t[a],r[a],0,Math.PI,i),s.arc(e[a],t[a],n[a],Math.PI,0,!i);else s.arc(e[a],t[a],r[a],0,2*Math.PI,!0),s.arc(e[a],t[a],n[a],2*Math.PI,0,!1);s.fill()}this.visuals.line.doit&&(this.visuals.line.set_vectorize(s,a),s.beginPath(),s.arc(e[a],t[a],r[a],0,2*Math.PI),s.moveTo(e[a]+n[a],t[a]),s.arc(e[a],t[a],n[a],0,2*Math.PI),s.stroke())}}_hit_point(s){const{sx:i,sy:e}=s,t=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(e);let n,a,_,o;if(\"data\"==this.model.properties.outer_radius.units)n=t-this.max_outer_radius,_=t+this.max_outer_radius,a=r-this.max_outer_radius,o=r+this.max_outer_radius;else{const s=i-this.max_outer_radius,t=i+this.max_outer_radius;[n,_]=this.renderer.xscale.r_invert(s,t);const r=e-this.max_outer_radius,u=e+this.max_outer_radius;[a,o]=this.renderer.yscale.r_invert(r,u)}const d=[];for(const s of this.index.indices({x0:n,x1:_,y0:a,y1:o})){const i=this.souter_radius[s]**2,e=this.sinner_radius[s]**2,[n,a]=this.renderer.xscale.r_compute(t,this._x[s]),[_,u]=this.renderer.yscale.r_compute(r,this._y[s]),o=(n-a)**2+(_-u)**2;o<=i&&o>=e&&d.push(s)}return new u.Selection({indices:d})}draw_legend_for_index(s,{x0:i,y0:e,x1:t,y1:r},n){const a=n+1,_=new Array(a);_[n]=(i+t)/2;const u=new Array(a);u[n]=(e+r)/2;const o=.5*Math.min(Math.abs(t-i),Math.abs(r-e)),d=new Array(a);d[n]=.4*o;const h=new Array(a);h[n]=.8*o,this._render(s,[n],{sx:_,sy:u,sinner_radius:d,souter_radius:h})}}e.AnnulusView=o,o.__name__=\"AnnulusView\";class d extends r.XYGlyph{constructor(s){super(s)}static init_Annulus(){this.prototype.default_view=o,this.mixins([n.LineVector,n.FillVector]),this.define({inner_radius:[a.DistanceSpec],outer_radius:[a.DistanceSpec]})}}e.Annulus=d,d.__name__=\"Annulus\",d.init_Annulus()},\n", + " function _(e,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=e(1),r=e(93),n=e(100),a=e(28),_=t.__importStar(e(18));class c extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius}_render(e,i,{sx:s,sy:t,sradius:r,_start_angle:n,_end_angle:a}){if(this.visuals.line.doit){const _=this.model.properties.direction.value();for(const c of i)isNaN(s[c]+t[c]+r[c]+n[c]+a[c])||(e.beginPath(),e.arc(s[c],t[c],r[c],n[c],a[c],_),this.visuals.line.set_vectorize(e,c),e.stroke())}}draw_legend_for_index(e,i,s){n.generic_line_legend(this.visuals,e,i,s)}}s.ArcView=c,c.__name__=\"ArcView\";class d extends r.XYGlyph{constructor(e){super(e)}static init_Arc(){this.prototype.default_view=c,this.mixins(a.LineVector),this.define({direction:[_.Direction,\"anticlock\"],radius:[_.DistanceSpec],start_angle:[_.AngleSpec],end_angle:[_.AngleSpec]})}}s.Arc=d,d.__name__=\"Arc\",d.init_Arc()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(28),c=e(94),o=e(100),_=e(37),r=s.__importStar(e(18));function a(e,t,i,s,n,c,o,_){const r=[],a=[[],[]];for(let a=0;a<=2;a++){let h,d,x;if(0===a?(d=6*e-12*i+6*n,h=-3*e+9*i-9*n+3*o,x=3*i-3*e):(d=6*t-12*s+6*c,h=-3*t+9*s-9*c+3*_,x=3*s-3*t),Math.abs(h)<1e-12){if(Math.abs(d)<1e-12)continue;const e=-x/d;0Math.max(s,i[e]));break}case\"min\":{const s=this.sdist(this.renderer.xscale,this._x,this._radius),i=this.sdist(this.renderer.yscale,this._y,this._radius);this.sradius=_.map(s,(s,e)=>Math.min(s,i[e]));break}}else this.sradius=this._radius,this.max_size=2*this.max_radius;else this.sradius=_.map(this._size,s=>s/2)}_mask_data(){const[s,i]=this.renderer.plot_view.frame.bbox.ranges;let e,t,r,a;if(null!=this._radius&&\"data\"==this.model.properties.radius.units){const n=s.start,h=s.end;[e,r]=this.renderer.xscale.r_invert(n,h),e-=this.max_radius,r+=this.max_radius;const d=i.start,l=i.end;[t,a]=this.renderer.yscale.r_invert(d,l),t-=this.max_radius,a+=this.max_radius}else{const n=s.start-this.max_size,h=s.end+this.max_size;[e,r]=this.renderer.xscale.r_invert(n,h);const d=i.start-this.max_size,l=i.end+this.max_size;[t,a]=this.renderer.yscale.r_invert(d,l)}return this.index.indices({x0:e,x1:r,y0:t,y1:a})}_render(s,i,{sx:e,sy:t,sradius:r}){for(const a of i)isNaN(e[a]+t[a]+r[a])||(s.beginPath(),s.arc(e[a],t[a],r[a],0,2*Math.PI,!1),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(s,a),s.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(s,a),s.stroke()))}_hit_point(s){const{sx:i,sy:e}=s,t=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(e);let a,n,h,d;if(null!=this._radius&&\"data\"==this.model.properties.radius.units)a=t-this.max_radius,n=t+this.max_radius,h=r-this.max_radius,d=r+this.max_radius;else{const s=i-this.max_size,t=i+this.max_size;[a,n]=this.renderer.xscale.r_invert(s,t);const r=e-this.max_size,l=e+this.max_size;[h,d]=this.renderer.yscale.r_invert(r,l)}const l=this.index.indices({x0:a,x1:n,y0:h,y1:d}),_=[];if(null!=this._radius&&\"data\"==this.model.properties.radius.units)for(const s of l){const i=this.sradius[s]**2,[e,a]=this.renderer.xscale.r_compute(t,this._x[s]),[n,h]=this.renderer.yscale.r_compute(r,this._y[s]);(e-a)**2+(n-h)**2<=i&&_.push(s)}else for(const s of l){const t=this.sradius[s]**2;(this.sx[s]-i)**2+(this.sy[s]-e)**2<=t&&_.push(s)}return new c.Selection({indices:_})}_hit_span(s){const{sx:i,sy:e}=s,t=this.bounds();let r,a,n,h;if(\"h\"==s.direction){let s,e;if(n=t.y0,h=t.y1,null!=this._radius&&\"data\"==this.model.properties.radius.units)s=i-this.max_radius,e=i+this.max_radius,[r,a]=this.renderer.xscale.r_invert(s,e);else{const t=this.max_size/2;s=i-t,e=i+t,[r,a]=this.renderer.xscale.r_invert(s,e)}}else{let s,i;if(r=t.x0,a=t.x1,null!=this._radius&&\"data\"==this.model.properties.radius.units)s=e-this.max_radius,i=e+this.max_radius,[n,h]=this.renderer.yscale.r_invert(s,i);else{const t=this.max_size/2;s=e-t,i=e+t,[n,h]=this.renderer.yscale.r_invert(s,i)}}const d=[...this.index.indices({x0:r,x1:a,y0:n,y1:h})];return new c.Selection({indices:d})}_hit_rect(s){const{sx0:i,sx1:e,sy0:t,sy1:r}=s,[a,n]=this.renderer.xscale.r_invert(i,e),[h,d]=this.renderer.yscale.r_invert(t,r),l=[...this.index.indices({x0:a,x1:n,y0:h,y1:d})];return new c.Selection({indices:l})}_hit_poly(s){const{sx:i,sy:e}=s,t=l.range(0,this.sx.length),r=[];for(let s=0,a=t.length;s2*t)),i.data_changed=!1),this.visuals_changed&&(this._set_visuals(a),this.visuals_changed=!1),this.prog.set_uniform(\"u_pixel_ratio\",\"float\",[s.pixel_ratio]),this.prog.set_uniform(\"u_canvas_size\",\"vec2\",[s.width,s.height]),this.prog.set_attribute(\"a_sx\",\"float\",i.vbo_sx),this.prog.set_attribute(\"a_sy\",\"float\",i.vbo_sy),this.prog.set_attribute(\"a_size\",\"float\",i.vbo_s),this.prog.set_attribute(\"a_angle\",\"float\",i.vbo_a),0!=t.length)if(t.length===a)this.prog.draw(this.gl.POINTS,[0,a]);else if(a<65535){const e=window.navigator.userAgent;e.indexOf(\"MSIE \")+e.indexOf(\"Trident/\")+e.indexOf(\"Edge/\")>0&&n.logger.warn(\"WebGL warning: IE is known to produce 1px sprites whith selections.\"),this.index_buffer.set_size(2*t.length),this.index_buffer.set_data(0,new Uint16Array(t)),this.prog.draw(this.gl.POINTS,this.index_buffer)}else{const e=64e3,s=[];for(let t=0,i=Math.ceil(a/e);t2*t)):this.vbo_s.set_data(0,new Float32Array(this.glyph._size))}_set_visuals(t){u(this.prog,this.vbo_linewidth,\"a_linewidth\",t,this.glyph.visuals.line,\"line_width\"),f(this.prog,this.vbo_fg_color,\"a_fg_color\",t,this.glyph.visuals.line,\"line\"),f(this.prog,this.vbo_bg_color,\"a_bg_color\",t,this.glyph.visuals.fill,\"fill\"),this.prog.set_uniform(\"u_antialias\",\"float\",[.8])}}function b(t){return class extends d{get _marker_code(){return t}}}s.MarkerGL=d,d.__name__=\"MarkerGL\";const c=i.__importStar(t(240));s.AsteriskGL=b(c.asterisk),s.CircleGL=b(c.circle),s.CircleCrossGL=b(c.circlecross),s.CircleXGL=b(c.circlex),s.CrossGL=b(c.cross),s.DiamondGL=b(c.diamond),s.DiamondCrossGL=b(c.diamondcross),s.HexGL=b(c.hex),s.InvertedTriangleGL=b(c.invertedtriangle),s.SquareGL=b(c.square),s.SquareCrossGL=b(c.squarecross),s.SquareXGL=b(c.squarex),s.TriangleGL=b(c.triangle),s.XGL=b(c.x)},\n", + " function _(n,i,a){Object.defineProperty(a,\"__esModule\",{value:!0}),a.vertex_shader=\"\\nprecision mediump float;\\nconst float SQRT_2 = 1.4142135623730951;\\n//\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size;\\nuniform vec2 u_offset;\\nuniform vec2 u_scale;\\nuniform float u_antialias;\\n//\\nattribute float a_sx;\\nattribute float a_sy;\\nattribute float a_size;\\nattribute float a_angle; // in radians\\nattribute float a_linewidth;\\nattribute vec4 a_fg_color;\\nattribute vec4 a_bg_color;\\n//\\nvarying float v_linewidth;\\nvarying float v_size;\\nvarying vec4 v_fg_color;\\nvarying vec4 v_bg_color;\\nvarying vec2 v_rotation;\\n\\nvoid main (void)\\n{\\n v_size = a_size * u_pixel_ratio;\\n v_linewidth = a_linewidth * u_pixel_ratio;\\n v_fg_color = a_fg_color;\\n v_bg_color = a_bg_color;\\n v_rotation = vec2(cos(-a_angle), sin(-a_angle));\\n vec2 pos = vec2(a_sx, a_sy); // in pixels\\n pos += 0.5; // make up for Bokeh's offset\\n pos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(pos*2.0-1.0, 0.0, 1.0);\\n gl_Position.y *= -1.0;\\n gl_PointSize = SQRT_2 * v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\n}\\n\"},\n", + " function _(a,n,s){Object.defineProperty(s,\"__esModule\",{value:!0}),s.fragment_shader=a=>`\\nprecision mediump float;\\nconst float SQRT_2 = 1.4142135623730951;\\nconst float PI = 3.14159265358979323846264;\\n//\\nuniform float u_antialias;\\n//\\nvarying vec4 v_fg_color;\\nvarying vec4 v_bg_color;\\nvarying float v_linewidth;\\nvarying float v_size;\\nvarying vec2 v_rotation;\\n\\n${a}\\n\\nvec4 outline(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)\\n{\\n vec4 frag_color;\\n float t = linewidth/2.0 - antialias;\\n float signed_distance = distance;\\n float border_distance = abs(signed_distance) - t;\\n float alpha = border_distance/antialias;\\n alpha = exp(-alpha*alpha);\\n\\n // If fg alpha is zero, it probably means no outline. To avoid a dark outline\\n // shining through due to aa, we set the fg color to the bg color. Avoid if (i.e. branching).\\n float select = float(bool(fg_color.a));\\n fg_color.rgb = select * fg_color.rgb + (1.0 - select) * bg_color.rgb;\\n // Similarly, if we want a transparent bg\\n select = float(bool(bg_color.a));\\n bg_color.rgb = select * bg_color.rgb + (1.0 - select) * fg_color.rgb;\\n\\n if( border_distance < 0.0)\\n frag_color = fg_color;\\n else if( signed_distance < 0.0 ) {\\n frag_color = mix(bg_color, fg_color, sqrt(alpha));\\n } else {\\n if( abs(signed_distance) < (linewidth/2.0 + antialias) ) {\\n frag_color = vec4(fg_color.rgb, fg_color.a * alpha);\\n } else {\\n discard;\\n }\\n }\\n return frag_color;\\n}\\n\\nvoid main()\\n{\\n vec2 P = gl_PointCoord.xy - vec2(0.5, 0.5);\\n P = vec2(v_rotation.x*P.x - v_rotation.y*P.y,\\n v_rotation.y*P.x + v_rotation.x*P.y);\\n float point_size = SQRT_2*v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\n float distance = marker(P*point_size, v_size);\\n gl_FragColor = outline(distance, v_linewidth, u_antialias, v_fg_color, v_bg_color);\\n}\\n`,s.circle=\"\\nfloat marker(vec2 P, float size)\\n{\\n return length(P) - size/2.0;\\n}\\n\",s.square=\"\\nfloat marker(vec2 P, float size)\\n{\\n return max(abs(P.x), abs(P.y)) - size/2.0;\\n}\\n\",s.diamond=\"\\nfloat marker(vec2 P, float size)\\n{\\n float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\n return r1 / SQRT_2;\\n}\\n\",s.hex=\"\\nfloat marker(vec2 P, float size)\\n{\\n vec2 q = abs(P);\\n return max(q.y * 0.57735 + q.x - 1.0 * size/2.0, q.y - 0.866 * size/2.0);\\n}\\n\",s.triangle=\"\\nfloat marker(vec2 P, float size)\\n{\\n P.y -= size * 0.3;\\n float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / 1.6;\\n float r2 = P.y;\\n return max(r1 / SQRT_2, r2); // Intersect diamond with rectangle\\n}\\n\",s.invertedtriangle=\"\\nfloat marker(vec2 P, float size)\\n{\\n P.y += size * 0.3;\\n float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / 1.6;\\n float r2 = - P.y;\\n return max(r1 / SQRT_2, r2); // Intersect diamond with rectangle\\n}\\n\",s.cross='\\nfloat marker(vec2 P, float size)\\n{\\n float square = max(abs(P.x), abs(P.y)) - size / 2.5; // 2.5 is a tweak\\n float cross = min(abs(P.x), abs(P.y)) - size / 100.0; // bit of \"width\" for aa\\n return max(square, cross);\\n}\\n',s.circlecross=\"\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float circle = length(P) - size/2.0;\\n float c1 = max(circle, s1);\\n float c2 = max(circle, s2);\\n float c3 = max(circle, s3);\\n float c4 = max(circle, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.squarecross=\"\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float square = max(abs(P.x), abs(P.y)) - size/2.0;\\n float c1 = max(square, s1);\\n float c2 = max(square, s2);\\n float c3 = max(square, s3);\\n float c4 = max(square, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.diamondcross=\"\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\n float diamond = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\n diamond /= SQRT_2;\\n float c1 = max(diamond, s1);\\n float c2 = max(diamond, s2);\\n float c3 = max(diamond, s3);\\n float c4 = max(diamond, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.x='\\nfloat marker(vec2 P, float size)\\n{\\n float circle = length(P) - size / 1.6;\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n return max(circle, X);\\n}\\n',s.circlex='\\nfloat marker(vec2 P, float size)\\n{\\n float x = P.x - P.y;\\n float y = P.x + P.y;\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\n float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\n float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\n float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float circle = length(P) - size/2.0;\\n float c1 = max(circle, s1);\\n float c2 = max(circle, s2);\\n float c3 = max(circle, s3);\\n float c4 = max(circle, s4);\\n // Union\\n float almost = min(min(min(c1, c2), c3), c4);\\n // In this case, the X is also outside of the main shape\\n float Xmask = length(P) - size / 1.6; // a circle\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n return min(max(X, Xmask), almost);\\n}\\n',s.squarex=\"\\nfloat marker(vec2 P, float size)\\n{\\n float x = P.x - P.y;\\n float y = P.x + P.y;\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\n float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\n float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\n float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float square = max(abs(P.x), abs(P.y)) - size/2.0;\\n float c1 = max(square, s1);\\n float c2 = max(square, s2);\\n float c3 = max(square, s3);\\n float c4 = max(square, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.asterisk='\\nfloat marker(vec2 P, float size)\\n{\\n // Masks\\n float diamond = max(abs(SQRT_2 / 2.0 * (P.x - P.y)), abs(SQRT_2 / 2.0 * (P.x + P.y))) - size / (2.0 * SQRT_2);\\n float square = max(abs(P.x), abs(P.y)) - size / (2.0 * SQRT_2);\\n // Shapes\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n float cross = min(abs(P.x), abs(P.y)) - size / 100.0; // bit of \"width\" for aa\\n // Result is union of masked shapes\\n return min(max(X, diamond), max(cross, square));\\n}\\n'},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const a=e(1),i=e(93),l=e(28),s=a.__importStar(e(18));class c extends i.XYGlyphView{}n.CenterRotatableView=c,c.__name__=\"CenterRotatableView\";class o extends i.XYGlyph{constructor(e){super(e)}static init_CenterRotatable(){this.mixins([l.LineVector,l.FillVector]),this.define({angle:[s.AngleSpec,0],width:[s.DistanceSpec],height:[s.DistanceSpec]})}}n.CenterRotatable=o,o.__name__=\"CenterRotatable\",o.init_CenterRotatable()},\n", + " function _(e,l,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(243);class t extends s.EllipseOvalView{}i.EllipseView=t,t.__name__=\"EllipseView\";class _ extends s.EllipseOval{constructor(e){super(e)}static init_Ellipse(){this.prototype.default_view=t}}i.Ellipse=_,_.__name__=\"Ellipse\",_.init_Ellipse()},\n", + " function _(t,s,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(1),h=t(241),a=e.__importStar(t(101)),r=t(88);class n extends h.CenterRotatableView{_set_data(){this.max_w2=0,\"data\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\"data\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)}_map_data(){\"data\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\"center\"):this.sw=this._width,\"data\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\"center\"):this.sh=this._height}_render(t,s,{sx:i,sy:e,sw:h,sh:a,_angle:r}){for(const n of s)isNaN(i[n]+e[n]+h[n]+a[n]+r[n])||(t.beginPath(),t.ellipse(i[n],e[n],h[n]/2,a[n]/2,r[n],0,2*Math.PI),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,n),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,n),t.stroke()))}_hit_point(t){let s,i,e,h,n,_,l,d,o;const{sx:x,sy:m}=t,w=this.renderer.xscale.invert(x),c=this.renderer.yscale.invert(m);\"data\"==this.model.properties.width.units?(s=w-this.max_width,i=w+this.max_width):(_=x-this.max_width,l=x+this.max_width,[s,i]=this.renderer.xscale.r_invert(_,l)),\"data\"==this.model.properties.height.units?(e=c-this.max_height,h=c+this.max_height):(d=m-this.max_height,o=m+this.max_height,[e,h]=this.renderer.yscale.r_invert(d,o));const p=this.index.indices({x0:s,x1:i,y0:e,y1:h}),y=[];for(const t of p)n=a.point_in_ellipse(x,m,this._angle[t],this.sh[t]/2,this.sw[t]/2,this.sx[t],this.sy[t]),n&&y.push(t);return new r.Selection({indices:y})}draw_legend_for_index(t,{x0:s,y0:i,x1:e,y1:h},a){const r=a+1,n=new Array(r);n[a]=(s+e)/2;const _=new Array(r);_[a]=(i+h)/2;const l=this.sw[a]/this.sh[a],d=.8*Math.min(Math.abs(e-s),Math.abs(h-i)),o=new Array(r),x=new Array(r);l>1?(o[a]=d,x[a]=d/l):(o[a]=d*l,x[a]=d),this._render(t,[a],{sx:n,sy:_,sw:o,sh:x,_angle:[0]})}_bounds({x0:t,x1:s,y0:i,y1:e}){return{x0:t-this.max_w2,x1:s+this.max_w2,y0:i-this.max_h2,y1:e+this.max_h2}}}i.EllipseOvalView=n,n.__name__=\"EllipseOvalView\";class _ extends h.CenterRotatable{constructor(t){super(t)}}i.EllipseOval=_,_.__name__=\"EllipseOval\"},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),h=t(245),r=t(24),_=i.__importStar(t(18));class a extends h.BoxView{scenterxy(t){return[(this.sleft[t]+this.sright[t])/2,this.sy[t]]}_lrtb(t){return[Math.min(this._left[t],this._right[t]),Math.max(this._left[t],this._right[t]),this._y[t]+.5*this._height[t],this._y[t]-.5*this._height[t]]}_map_data(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\"center\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);const t=this.sy.length;this.stop=new r.NumberArray(t),this.sbottom=new r.NumberArray(t);for(let e=0;e{t.beginPath(),t.rect(i[a],r[a],s[a]-i[a],n[a]-r[a]),t.fill()},()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,a),t.beginPath(),t.rect(i[a],r[a],s[a]-i[a],n[a]-r[a]),t.stroke()))}_clamp_viewport(){const t=this.renderer.plot_view.frame.bbox.h_range,e=this.renderer.plot_view.frame.bbox.v_range,i=this.stop.length;for(let s=0;sthis._update_image())}_update_image(){null!=this.image_data&&(this._set_data(null),this.renderer.plot_view.request_render())}_flat_img_to_buf8(e){return this.model.color_mapper.rgba_mapper.v_compute(e)}}a.ImageView=r,r.__name__=\"ImageView\";class o extends i.ImageBase{constructor(e){super(e)}static init_Image(){this.prototype.default_view=r,this.define({color_mapper:[s.Instance,()=>new n.LinearColorMapper({palette:[\"#000000\",\"#252525\",\"#525252\",\"#737373\",\"#969696\",\"#bdbdbd\",\"#d9d9d9\",\"#f0f0f0\",\"#ffffff\"]})]})}}a.Image=o,o.__name__=\"Image\",o.init_Image()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),a=e(93),h=e(24),_=i.__importStar(e(18)),n=e(88),r=e(9),d=e(30),l=e(11);class g extends a.XYGlyphView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,()=>this.renderer.request_render())}_render(e,t,{image_data:s,sx:i,sy:a,sw:h,sh:_}){const n=e.getImageSmoothingEnabled();e.setImageSmoothingEnabled(!1),e.globalAlpha=this.model.global_alpha;for(const n of t){if(null==s[n]||isNaN(i[n]+a[n]+h[n]+_[n]))continue;const t=a[n];e.translate(0,t),e.scale(1,-1),e.translate(0,-t),e.drawImage(s[n],0|i[n],0|a[n],h[n],_[n]),e.translate(0,t),e.scale(1,-1),e.translate(0,-t)}e.setImageSmoothingEnabled(n)}_set_data(e){this._set_width_heigh_data();for(let t=0,s=this._image.length;tthis.renderer.request_render())}_index_data(e){const{data_size:t}=this;for(let s=0;snull));const{retry_attempts:e,retry_timeout:t}=this.model;for(let s=0,r=this._url.length;s{this.image[s]=e,this.renderer.request_render()},attempts:e+1,timeout:t})}const s=\"data\"==this.model.properties.w.units,r=\"data\"==this.model.properties.h.units,i=this._x.length,n=new a.NumberArray(s?2*i:i),_=new a.NumberArray(r?2*i:i),{anchor:c}=this.model;function l(e,t){switch(c){case\"top_left\":case\"bottom_left\":case\"center_left\":return[e,e+t];case\"top_center\":case\"bottom_center\":case\"center\":return[e-t/2,e+t/2];case\"top_right\":case\"bottom_right\":case\"center_right\":return[e-t,e]}}function d(e,t){switch(c){case\"top_left\":case\"top_center\":case\"top_right\":return[e,e-t];case\"bottom_left\":case\"bottom_center\":case\"bottom_right\":return[e+t,e];case\"center_left\":case\"center\":case\"center_right\":return[e+t/2,e-t/2]}}if(s)for(let e=0;eNaN),t=null!=this.model.h?this._h:h.map(this._x,()=>NaN);switch(this.model.properties.w.units){case\"data\":this.sw=this.sdist(this.renderer.xscale,this._x,e,\"edge\",this.model.dilate);break;case\"screen\":this.sw=e}switch(this.model.properties.h.units){case\"data\":this.sh=this.sdist(this.renderer.yscale,this._y,t,\"edge\",this.model.dilate);break;case\"screen\":this.sh=t}}_render(e,t,{image:s,sx:r,sy:i,sw:a,sh:n,_angle:h}){const{frame:o}=this.renderer.plot_view;e.rect(o.bbox.left+1,o.bbox.top+1,o.bbox.width-2,o.bbox.height-2),e.clip();let _=!0;for(const o of t){if(isNaN(r[o]+i[o]+h[o]))continue;const t=s[o];null!=t?this._render_image(e,o,t,r,i,a,n,h):_=!1}_&&!this._images_rendered&&(this._images_rendered=!0,this.notify_finished())}_final_sx_sy(e,t,s,r,i){switch(e){case\"top_left\":return[t,s];case\"top_center\":return[t-r/2,s];case\"top_right\":return[t-r,s];case\"center_right\":return[t-r,s-i/2];case\"bottom_right\":return[t-r,s-i];case\"bottom_center\":return[t-r/2,s-i];case\"bottom_left\":return[t,s-i];case\"center_left\":return[t,s-i/2];case\"center\":return[t-r/2,s-i/2]}}_render_image(e,t,s,r,i,a,n,h){isNaN(a[t])&&(a[t]=s.width),isNaN(n[t])&&(n[t]=s.height);const{anchor:o}=this.model,[_,c]=this._final_sx_sy(o,r[t],i[t],a[t],n[t]);e.save(),e.globalAlpha=this.model.global_alpha;const l=a[t]/2,d=n[t]/2;h[t]?(e.translate(_,c),e.translate(l,d),e.rotate(h[t]),e.translate(-l,-d),e.drawImage(s,0,0,a[t],n[t]),e.translate(l,d),e.rotate(-h[t]),e.translate(-l,-d),e.translate(-_,-c)):e.drawImage(s,_,c,a[t],n[t]),e.restore()}bounds(){return this._bounds_rect}}s.ImageURLView=_,_.__name__=\"ImageURLView\";class c extends i.XYGlyph{constructor(e){super(e)}static init_ImageURL(){this.prototype.default_view=_,this.define({url:[n.StringSpec],anchor:[n.Anchor,\"top_left\"],global_alpha:[n.Number,1],angle:[n.AngleSpec,0],w:[n.DistanceSpec],h:[n.DistanceSpec],dilate:[n.Boolean,!1],retry_attempts:[n.Number,0],retry_timeout:[n.Number,0]})}}s.ImageURL=c,c.__name__=\"ImageURL\",c.init_ImageURL()},\n", + " function _(i,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=i(19);class a{constructor(i,e={}){this._image=new Image,this._finished=!1;const{attempts:t=1,timeout:a=1}=e;this.promise=new Promise((o,n)=>{this._image.crossOrigin=\"anonymous\";let r=0;this._image.onerror=()=>{if(++r==t){const a=`unable to load ${i} image after ${t} attempts`;if(s.logger.warn(a),null==this._image.crossOrigin)return void(null!=e.failed&&e.failed());s.logger.warn(`attempting to load ${i} without a cross origin policy`),this._image.crossOrigin=null,r=0}setTimeout(()=>this._image.src=i,a)},this._image.onload=()=>{this._finished=!0,null!=e.loaded&&e.loaded(this._image),o(this._image)},this._image.src=i})}get finished(){return this._finished}get image(){return this._image}}t.ImageLoader=a,a.__name__=\"ImageLoader\"},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(37),o=e(28),l=s.__importStar(e(101)),r=s.__importStar(e(18)),_=e(12),c=e(13),a=e(94),h=e(100),d=e(88);class y extends a.GlyphView{_project_data(){n.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(e){const{data_size:t}=this;for(let i=0;i0&&o.set(e,i)}return new d.Selection({indices:[...o.keys()],multiline_indices:c.to_object(o)})}get_interpolation_hit(e,t,i){const s=this._xs.get(e),n=this._ys.get(e),o=s[t],l=n[t],r=s[t+1],_=n[t+1];return h.line_interpolation(this.renderer,i,o,l,r,_)}draw_legend_for_index(e,t,i){h.generic_line_legend(this.visuals,e,t,i)}scenterxy(){throw new Error(this+\".scenterxy() is not implemented\")}}i.MultiLineView=y,y.__name__=\"MultiLineView\";class x extends a.Glyph{constructor(e){super(e)}static init_MultiLine(){this.prototype.default_view=y,this.define({xs:[r.XCoordinateSeqSpec,{field:\"xs\"}],ys:[r.YCoordinateSeqSpec,{field:\"ys\"}]}),this.mixins(o.LineVector)}}i.MultiLine=x,x.__name__=\"MultiLine\",x.init_MultiLine()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),n=e(95),o=e(94),r=e(100),l=e(12),h=e(12),_=e(28),a=i.__importStar(e(101)),d=i.__importStar(e(18)),c=e(88),x=e(11);class y extends o.GlyphView{_project_data(){}_index_data(e){const{min:t,max:s}=Math,{data_size:i}=this;for(let n=0;n1&&d.length>1)for(let s=1,i=n.length;s{this._inner_loop(e,t,o),e.fill(\"evenodd\")},()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,n),this._inner_loop(e,t,o),e.stroke())}}_hit_rect(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,o=[t,s,s,t],r=[i,i,n,n],[l,h]=this.renderer.xscale.r_invert(t,s),[_,d]=this.renderer.yscale.r_invert(i,n),x=this.index.indices({x0:l,x1:h,y0:_,y1:d}),y=[];for(const e of x){const t=this.sxs[e],s=this.sys[e];let i=!0;for(let e=0,n=t.length;e1){let r=!1;for(let e=1;ethis._inner_loop(e,t,r,e.fill),()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,n),this._inner_loop(e,t,r,e.stroke))}}_hit_rect(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,r=[t,s,s,t],o=[i,i,n,n],[a,c]=this.renderer.xscale.r_invert(t,s),[h,d]=this.renderer.yscale.r_invert(i,n),y=this.index.indices({x0:a,x1:c,y0:h,y1:d}),p=[];for(const e of y){const t=this.sxs.get(e),s=this.sys.get(e);let i=!0;for(let e=0,n=t.length;e1&&(e.stroke(),s=!1)}s?(e.lineTo(t,a),e.lineTo(l,_)):(e.beginPath(),e.moveTo(i[r],n[r]),s=!0),o=r}e.lineTo(i[r-1],n[r-1]),e.stroke()}}draw_legend_for_index(e,t,i){o.generic_line_legend(this.visuals,e,t,i)}}i.StepView=a,a.__name__=\"StepView\";class _ extends s.XYGlyph{constructor(e){super(e)}static init_Step(){this.prototype.default_view=a,this.mixins(r.LineVector),this.define({mode:[l.StepMode,\"before\"]})}}i.Step=_,_.__name__=\"Step\",_.init_Step()},\n", + " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(1),n=t(93),_=t(28),o=i.__importStar(t(101)),h=i.__importStar(t(18)),l=t(159),a=t(11),r=t(88);class c extends n.XYGlyphView{_rotate_point(t,s,e,i,n){return[(t-e)*Math.cos(n)-(s-i)*Math.sin(n)+e,(t-e)*Math.sin(n)+(s-i)*Math.cos(n)+i]}_text_bounds(t,s,e,i){return[[t,t+e,t+e,t,t],[s,s,s-i,s-i,s]]}_render(t,s,{sx:e,sy:i,_x_offset:n,_y_offset:_,_angle:o,_text:h}){this._sys=[],this._sxs=[];for(const a of s)if(this._sxs[a]=[],this._sys[a]=[],!isNaN(e[a]+i[a]+n[a]+_[a]+o[a])&&null!=h[a]&&this.visuals.text.doit){const s=\"\"+h[a];t.save(),t.translate(e[a]+n[a],i[a]+_[a]),t.rotate(o[a]),this.visuals.text.set_vectorize(t,a);const r=this.visuals.text.cache_select(\"font\",a),{height:c}=l.measure_font(r),x=this.visuals.text.text_line_height.value()*c;if(-1==s.indexOf(\"\\n\")){t.fillText(s,0,0);const o=e[a]+n[a],h=i[a]+_[a],l=t.measureText(s).width,[r,c]=this._text_bounds(o,h,l,x);this._sxs[a].push(r),this._sys[a].push(c)}else{const o=s.split(\"\\n\"),h=x*o.length,l=this.visuals.text.cache_select(\"text_baseline\",a);let r;switch(l){case\"top\":r=0;break;case\"middle\":r=-h/2+x/2;break;case\"bottom\":r=-h+x;break;default:r=0,console.warn(`'${l}' baseline not supported with multi line text`)}for(const s of o){t.fillText(s,0,r);const o=e[a]+n[a],h=r+i[a]+_[a],l=t.measureText(s).width,[c,u]=this._text_bounds(o,h,l,x);this._sxs[a].push(c),this._sys[a].push(u),r+=x}}t.restore()}}_hit_point(t){const{sx:s,sy:e}=t,i=[];for(let t=0;tthis.request_render())}_draw_regions(i){if(!this.visuals.band_fill.doit&&!this.visuals.band_hatch.doit)return;this.visuals.band_fill.set_value(i);const[e,t]=this.grid_coords(\"major\",!1);for(let s=0;s{i.fillRect(n[0],r[0],o[1]-n[0],d[1]-r[0])},()=>this.request_render())}}_draw_grids(i){if(!this.visuals.grid_line.doit)return;const[e,t]=this.grid_coords(\"major\");this._draw_grid_helper(i,this.visuals.grid_line,e,t)}_draw_minor_grids(i){if(!this.visuals.minor_grid_line.doit)return;const[e,t]=this.grid_coords(\"minor\");this._draw_grid_helper(i,this.visuals.minor_grid_line,e,t)}_draw_grid_helper(i,e,t,s){e.set_value(i),i.beginPath();for(let e=0;et[1]&&(n=t[1]);else{[s,n]=t;for(const i of this.plot_view.axis_views)i.dimension==this.model.dimension&&i.model.x_range_name==this.model.x_range_name&&i.model.y_range_name==this.model.y_range_name&&([s,n]=i.computed_bounds)}return[s,n]}grid_coords(i,e=!0){const t=this.model.dimension,s=(t+1)%2,[n,r]=this.ranges();let[o,d]=this.computed_bounds();[o,d]=[Math.min(o,d),Math.max(o,d)];const _=[[],[]],a=this.model.get_ticker();if(null==a)return _;const l=a.get_ticks(o,d,n,r.min,{})[i],h=n.min,c=n.max,u=r.min,m=r.max;e||(l[0]!=h&&l.splice(0,0,h),l[l.length-1]!=c&&l.push(c));for(let i=0;ithis.rebuild())}get child_models(){return this.model.children}}i.BoxView=c,c.__name__=\"BoxView\";class r extends s.LayoutDOM{constructor(e){super(e)}static init_Box(){this.define({children:[o.Array,[]],spacing:[o.Number,0]})}}i.Box=r,r.__name__=\"Box\",r.init_Box()},\n", + " function _(i,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const s=i(81),o=i(20),l=i(72),n=i(19),h=i(8),a=i(115),r=i(78),_=i(212),d=i(273),c=i(77);class u extends r.DOMView{constructor(){super(...arguments),this._idle_notified=!1,this._offset_parent=null,this._viewport={}}initialize(){super.initialize(),this.el.style.position=this.is_root?\"relative\":\"absolute\",this._child_views=new Map}async lazy_initialize(){await this.build_child_views()}remove(){for(const i of this.child_views)i.remove();this._child_views.clear(),super.remove()}connect_signals(){super.connect_signals(),this.is_root&&(this._on_resize=()=>this.resize_layout(),window.addEventListener(\"resize\",this._on_resize),this._parent_observer=setInterval(()=>{const i=this.el.offsetParent;this._offset_parent!=i&&(this._offset_parent=i,null!=i&&(this.compute_viewport(),this.invalidate_layout()))},250));const i=this.model.properties;this.on_change([i.width,i.height,i.min_width,i.min_height,i.max_width,i.max_height,i.margin,i.width_policy,i.height_policy,i.sizing_mode,i.aspect_ratio,i.visible],()=>this.invalidate_layout()),this.on_change([i.background,i.css_classes],()=>this.invalidate_render())}disconnect_signals(){null!=this._parent_observer&&clearTimeout(this._parent_observer),null!=this._on_resize&&window.removeEventListener(\"resize\",this._on_resize),super.disconnect_signals()}css_classes(){return super.css_classes().concat(this.model.css_classes)}get child_views(){return this.child_models.map(i=>this._child_views.get(i))}async build_child_views(){await a.build_views(this._child_views,this.child_models,{parent:this})}render(){super.render(),l.empty(this.el);const{background:i}=this.model;this.el.style.backgroundColor=null!=i?i:\"\",l.classes(this.el).clear().add(...this.css_classes());for(const i of this.child_views)this.el.appendChild(i.el),i.render()}update_layout(){for(const i of this.child_views)i.update_layout();this._update_layout()}update_position(){this.el.style.display=this.model.visible?\"block\":\"none\";const i=this.is_root?this.layout.sizing.margin:void 0;l.position(this.el,this.layout.bbox,i);for(const i of this.child_views)i.update_position()}after_layout(){for(const i of this.child_views)i.after_layout();this._has_finished=!0}compute_viewport(){this._viewport=this._viewport_size()}renderTo(i){i.appendChild(this.el),this._offset_parent=this.el.offsetParent,this.compute_viewport(),this.build()}build(){return this.assert_root(),this.render(),this.update_layout(),this.compute_layout(),this}async rebuild(){await this.build_child_views(),this.invalidate_render()}compute_layout(){const i=Date.now();this.layout.compute(this._viewport),this.update_position(),this.after_layout(),n.logger.debug(`layout computed in ${Date.now()-i} ms`),this.notify_finished()}resize_layout(){this.root.compute_viewport(),this.root.compute_layout()}invalidate_layout(){this.root.update_layout(),this.root.compute_layout()}invalidate_render(){this.render(),this.invalidate_layout()}has_finished(){if(!super.has_finished())return!1;for(const i of this.child_views)if(!i.has_finished())return!1;return!0}notify_finished(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):this.root.notify_finished()}_width_policy(){return null!=this.model.width?\"fixed\":\"fit\"}_height_policy(){return null!=this.model.height?\"fixed\":\"fit\"}box_sizing(){let{width_policy:i,height_policy:t,aspect_ratio:e}=this.model;\"auto\"==i&&(i=this._width_policy()),\"auto\"==t&&(t=this._height_policy());const{sizing_mode:s}=this.model;if(null!=s)if(\"fixed\"==s)i=t=\"fixed\";else if(\"stretch_both\"==s)i=t=\"max\";else if(\"stretch_width\"==s)i=\"max\";else if(\"stretch_height\"==s)t=\"max\";else switch(null==e&&(e=\"auto\"),s){case\"scale_width\":i=\"max\",t=\"min\";break;case\"scale_height\":i=\"min\",t=\"max\";break;case\"scale_both\":i=\"max\",t=\"max\"}const o={width_policy:i,height_policy:t},{min_width:l,min_height:n}=this.model;null!=l&&(o.min_width=l),null!=n&&(o.min_height=n);const{width:a,height:r}=this.model;null!=a&&(o.width=a),null!=r&&(o.height=r);const{max_width:_,max_height:d}=this.model;null!=_&&(o.max_width=_),null!=d&&(o.max_height=d),\"auto\"==e&&null!=a&&null!=r?o.aspect=a/r:h.isNumber(e)&&(o.aspect=e);const{margin:c}=this.model;if(null!=c)if(h.isNumber(c))o.margin={top:c,right:c,bottom:c,left:c};else if(2==c.length){const[i,t]=c;o.margin={top:i,right:t,bottom:i,left:t}}else{const[i,t,e,s]=c;o.margin={top:i,right:t,bottom:e,left:s}}o.visible=this.model.visible;const{align:u}=this.model;return h.isArray(u)?[o.halign,o.valign]=u:o.halign=o.valign=u,o}_viewport_size(){return l.undisplayed(this.el,()=>{let i=this.el;for(;i=i.parentElement;){if(i.classList.contains(d.bk_root))continue;if(i==document.body){const{margin:{left:i,right:t,top:e,bottom:s}}=l.extents(document.body);return{width:Math.ceil(document.documentElement.clientWidth-i-t),height:Math.ceil(document.documentElement.clientHeight-e-s)}}const{padding:{left:t,right:e,top:s,bottom:o}}=l.extents(i),{width:n,height:h}=i.getBoundingClientRect(),a=Math.ceil(n-t-e),r=Math.ceil(h-s-o);if(a>0||r>0)return{width:a>0?a:void 0,height:r>0?r:void 0}}return{}})}export(i,t=!0){const e=\"png\"==i?\"canvas\":\"svg\",s=new c.CanvasLayer(e,t),{width:o,height:l}=this.layout.bbox;s.resize(o,l);for(const e of this.child_views){const o=e.export(i,t),{x:l,y:n}=e.layout.bbox;s.ctx.drawImage(o.canvas,l,n)}return s}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box,children:this.child_views.map(i=>i.serializable_state())})}}e.LayoutDOMView=u,u.__name__=\"LayoutDOMView\";class m extends s.Model{constructor(i){super(i)}static init_LayoutDOM(){this.define(i=>{const{Boolean:t,Number:e,String:s,Null:l,Auto:n,Color:h,Array:a,Tuple:r,Or:d}=i,c=r(e,e),u=r(e,e,e,e);return{width:[d(e,l),null],height:[d(e,l),null],min_width:[d(e,l),null],min_height:[d(e,l),null],max_width:[d(e,l),null],max_height:[d(e,l),null],margin:[d(e,c,u),[0,0,0,0]],width_policy:[d(_.SizingPolicy,n),\"auto\"],height_policy:[d(_.SizingPolicy,n),\"auto\"],aspect_ratio:[d(e,n,l),null],sizing_mode:[d(o.SizingMode,l),null],visible:[t,!0],disabled:[t,!1],align:[d(o.Align,r(o.Align,o.Align)),\"start\"],background:[d(h,l),null],css_classes:[a(s),[]]}})}}e.LayoutDOM=m,m.__name__=\"LayoutDOM\",m.init_LayoutDOM()},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.bk_root=\"bk-root\"},\n", + " function _(t,o,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),e=t(271),n=t(216),l=s.__importStar(t(18));class u extends e.BoxView{_update_layout(){const t=this.child_views.map(t=>t.layout);this.layout=new n.Column(t),this.layout.rows=this.model.rows,this.layout.spacing=[this.model.spacing,0],this.layout.set_sizing(this.box_sizing())}}i.ColumnView=u,u.__name__=\"ColumnView\";class _ extends e.Box{constructor(t){super(t)}static init_Column(){this.prototype.default_view=u,this.define({rows:[l.Any,\"auto\"]})}}i.Column=_,_.__name__=\"Column\",_.init_Column()},\n", + " function _(t,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=t(1),e=t(272),n=t(216),l=o.__importStar(t(18));class r extends e.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.children.change,()=>this.rebuild())}get child_models(){return this.model.children.map(([t])=>t)}_update_layout(){this.layout=new n.Grid,this.layout.rows=this.model.rows,this.layout.cols=this.model.cols,this.layout.spacing=this.model.spacing;for(const[t,i,s,o,e]of this.model.children){const n=this._child_views.get(t);this.layout.items.push({layout:n.layout,row:i,col:s,row_span:o,col_span:e})}this.layout.set_sizing(this.box_sizing())}}s.GridBoxView=r,r.__name__=\"GridBoxView\";class a extends e.LayoutDOM{constructor(t){super(t)}static init_GridBox(){this.prototype.default_view=r,this.define({children:[l.Array,[]],rows:[l.Any,\"auto\"],cols:[l.Any,\"auto\"],spacing:[l.Any,0]})}}s.GridBox=a,a.__name__=\"GridBox\",a.init_GridBox()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(272),_=e(212);class n extends s.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new _.ContentBox(this.el),this.layout.set_sizing(this.box_sizing())}}o.HTMLBoxView=n,n.__name__=\"HTMLBoxView\";class i extends s.LayoutDOM{constructor(e){super(e)}}o.HTMLBox=i,i.__name__=\"HTMLBox\"},\n", + " function _(t,o,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),e=t(271),_=t(216),a=s.__importStar(t(18));class n extends e.BoxView{_update_layout(){const t=this.child_views.map(t=>t.layout);this.layout=new _.Row(t),this.layout.cols=this.model.cols,this.layout.spacing=[0,this.model.spacing],this.layout.set_sizing(this.box_sizing())}}i.RowView=n,n.__name__=\"RowView\";class l extends e.Box{constructor(t){super(t)}static init_Row(){this.prototype.default_view=n,this.define({cols:[a.Any,\"auto\"]})}}i.Row=l,l.__name__=\"Row\",l.init_Row()},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const i=e(272),s=e(212);class _ extends i.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new s.LayoutItem,this.layout.set_sizing(this.box_sizing())}}a.SpacerView=_,_.__name__=\"SpacerView\";class o extends i.LayoutDOM{constructor(e){super(e)}static init_Spacer(){this.prototype.default_view=_}}a.Spacer=o,o.__name__=\"Spacer\",o.init_Spacer()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),a=e(212),l=e(72),h=e(9),o=i.__importStar(e(18)),c=e(272),d=e(81),r=e(173),n=e(280),_=e(281),b=e(282),p=i.__importDefault(e(283)),u=i.__importDefault(e(284)),m=i.__importDefault(e(285));class v extends c.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.tabs.change,()=>this.rebuild()),this.connect(this.model.properties.active.change,()=>this.on_active_change())}styles(){return[...super.styles(),p.default,u.default,m.default]}get child_models(){return this.model.tabs.map(e=>e.child)}_update_layout(){const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,{scroll_el:s,headers_el:i}=this;this.header=new class extends a.ContentBox{_measure(e){const a=l.size(s),o=l.children(i).slice(0,3).map(e=>l.size(e)),{width:c,height:d}=super._measure(e);if(t){const t=a.width+h.sum(o.map(e=>e.width));return{width:e.width!=1/0?e.width:t,height:d}}{const t=a.height+h.sum(o.map(e=>e.height));return{width:c,height:e.height!=1/0?e.height:t}}}}(this.header_el),t?this.header.set_sizing({width_policy:\"fit\",height_policy:\"fixed\"}):this.header.set_sizing({width_policy:\"fixed\",height_policy:\"fit\"});let o=1,c=1;switch(e){case\"above\":o-=1;break;case\"below\":o+=1;break;case\"left\":c-=1;break;case\"right\":c+=1}const d={layout:this.header,row:o,col:c},r=this.child_views.map(e=>({layout:e.layout,row:1,col:1}));this.layout=new a.Grid([d,...r]),this.layout.set_sizing(this.box_sizing())}update_position(){super.update_position(),this.header_el.style.position=\"absolute\",l.position(this.header_el,this.header.bbox);const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,s=l.size(this.scroll_el),i=l.scroll_size(this.headers_el);if(t){const{width:e}=this.header.bbox;i.width>e?(this.wrapper_el.style.maxWidth=e-s.width+\"px\",l.display(this.scroll_el)):(this.wrapper_el.style.maxWidth=\"\",l.undisplay(this.scroll_el))}else{const{height:e}=this.header.bbox;i.height>e?(this.wrapper_el.style.maxHeight=e-s.height+\"px\",l.display(this.scroll_el)):(this.wrapper_el.style.maxHeight=\"\",l.undisplay(this.scroll_el))}const{child_views:a}=this;for(const e of a)l.hide(e.el);const h=a[this.model.active];null!=h&&l.show(h.el)}render(){super.render();const{active:e}=this.model,t=this.model.tabs_location,s=\"above\"==t||\"below\"==t,i=this.model.tabs.map((t,s)=>{const i=l.div({class:[n.bk_tab,s==e?r.bk_active:null]},t.title);if(i.addEventListener(\"click\",e=>{e.target==e.currentTarget&&this.change_active(s)}),t.closable){const e=l.div({class:n.bk_close});e.addEventListener(\"click\",e=>{if(e.target==e.currentTarget){this.model.tabs=h.remove_at(this.model.tabs,s);const e=this.model.tabs.length;this.model.active>e-1&&(this.model.active=e-1)}}),i.appendChild(e)}return i});this.headers_el=l.div({class:[n.bk_headers]},i),this.wrapper_el=l.div({class:n.bk_headers_wrapper},this.headers_el);const a=l.div({class:[_.bk_btn,_.bk_btn_default],disabled:\"\"},l.div({class:[b.bk_caret,r.bk_left]})),o=l.div({class:[_.bk_btn,_.bk_btn_default]},l.div({class:[b.bk_caret,r.bk_right]}));let c=0;const d=e=>()=>{const t=this.model.tabs.length;c=\"left\"==e?Math.max(c-1,0):Math.min(c+1,t-1),0==c?a.setAttribute(\"disabled\",\"\"):a.removeAttribute(\"disabled\"),c==t-1?o.setAttribute(\"disabled\",\"\"):o.removeAttribute(\"disabled\");const i=l.children(this.headers_el).slice(0,c).map(e=>e.getBoundingClientRect());if(s){const e=-h.sum(i.map(e=>e.width));this.headers_el.style.left=e+\"px\"}else{const e=-h.sum(i.map(e=>e.height));this.headers_el.style.top=e+\"px\"}};a.addEventListener(\"click\",d(\"left\")),o.addEventListener(\"click\",d(\"right\")),this.scroll_el=l.div({class:_.bk_btn_group},a,o),this.header_el=l.div({class:[n.bk_tabs_header,r.bk_side(t)]},this.scroll_el,this.wrapper_el),this.el.appendChild(this.header_el)}change_active(e){e!=this.model.active&&(this.model.active=e)}on_active_change(){const e=this.model.active,t=l.children(this.headers_el);for(const e of t)e.classList.remove(r.bk_active);t[e].classList.add(r.bk_active);const{child_views:s}=this;for(const e of s)l.hide(e.el);l.show(s[e].el)}}s.TabsView=v,v.__name__=\"TabsView\";class g extends c.LayoutDOM{constructor(e){super(e)}static init_Tabs(){this.prototype.default_view=v,this.define({tabs:[o.Array,[]],tabs_location:[o.Location,\"above\"],active:[o.Number,0]})}}s.Tabs=g,g.__name__=\"Tabs\",g.init_Tabs();class w extends d.Model{constructor(e){super(e)}static init_Panel(){this.define({title:[o.String,\"\"],child:[o.Instance],closable:[o.Boolean,!1]})}}s.Panel=w,w.__name__=\"Panel\",w.init_Panel()},\n", + " function _(e,b,a){Object.defineProperty(a,\"__esModule\",{value:!0}),a.bk_tabs_header=\"bk-tabs-header\",a.bk_headers_wrapper=\"bk-headers-wrapper\",a.bk_headers=\"bk-headers\",a.bk_tab=\"bk-tab\",a.bk_close=\"bk-close\"},\n", + " function _(n,b,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.bk_btn=\"bk-btn\",t.bk_btn_group=\"bk-btn-group\",t.bk_btn_default=\"bk-btn-default\",t.bk_btn_primary=\"bk-btn-primary\",t.bk_btn_success=\"bk-btn-success\",t.bk_btn_warning=\"bk-btn-warning\",t.bk_btn_danger=\"bk-btn-danger\",t.bk_btn_type=function(n){switch(n){case\"default\":return t.bk_btn_default;case\"primary\":return t.bk_btn_primary;case\"success\":return t.bk_btn_success;case\"warning\":return t.bk_btn_warning;case\"danger\":return t.bk_btn_danger}},t.bk_dropdown_toggle=\"bk-dropdown-toggle\"},\n", + " function _(e,b,d){Object.defineProperty(d,\"__esModule\",{value:!0}),d.bk_menu=\"bk-menu\",d.bk_caret=\"bk-caret\",d.bk_divider=\"bk-divider\"},\n", + " function _(n,o,b){Object.defineProperty(b,\"__esModule\",{value:!0});b.default=\"\\n.bk-root .bk-btn {\\n height: 100%;\\n display: inline-block;\\n text-align: center;\\n vertical-align: middle;\\n white-space: nowrap;\\n cursor: pointer;\\n padding: 6px 12px;\\n font-size: 12px;\\n border: 1px solid transparent;\\n border-radius: 4px;\\n outline: 0;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n}\\n.bk-root .bk-btn:hover,\\n.bk-root .bk-btn:focus {\\n text-decoration: none;\\n}\\n.bk-root .bk-btn:active,\\n.bk-root .bk-btn.bk-active {\\n background-image: none;\\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\\n}\\n.bk-root .bk-btn[disabled] {\\n cursor: not-allowed;\\n pointer-events: none;\\n opacity: 0.65;\\n box-shadow: none;\\n}\\n.bk-root .bk-btn-default {\\n color: #333;\\n background-color: #fff;\\n border-color: #ccc;\\n}\\n.bk-root .bk-btn-default:hover {\\n background-color: #f5f5f5;\\n border-color: #b8b8b8;\\n}\\n.bk-root .bk-btn-default.bk-active {\\n background-color: #ebebeb;\\n border-color: #adadad;\\n}\\n.bk-root .bk-btn-default[disabled],\\n.bk-root .bk-btn-default[disabled]:hover,\\n.bk-root .bk-btn-default[disabled]:focus,\\n.bk-root .bk-btn-default[disabled]:active,\\n.bk-root .bk-btn-default[disabled].bk-active {\\n background-color: #e6e6e6;\\n border-color: #ccc;\\n}\\n.bk-root .bk-btn-primary {\\n color: #fff;\\n background-color: #428bca;\\n border-color: #357ebd;\\n}\\n.bk-root .bk-btn-primary:hover {\\n background-color: #3681c1;\\n border-color: #2c699e;\\n}\\n.bk-root .bk-btn-primary.bk-active {\\n background-color: #3276b1;\\n border-color: #285e8e;\\n}\\n.bk-root .bk-btn-primary[disabled],\\n.bk-root .bk-btn-primary[disabled]:hover,\\n.bk-root .bk-btn-primary[disabled]:focus,\\n.bk-root .bk-btn-primary[disabled]:active,\\n.bk-root .bk-btn-primary[disabled].bk-active {\\n background-color: #506f89;\\n border-color: #357ebd;\\n}\\n.bk-root .bk-btn-success {\\n color: #fff;\\n background-color: #5cb85c;\\n border-color: #4cae4c;\\n}\\n.bk-root .bk-btn-success:hover {\\n background-color: #4eb24e;\\n border-color: #409240;\\n}\\n.bk-root .bk-btn-success.bk-active {\\n background-color: #47a447;\\n border-color: #398439;\\n}\\n.bk-root .bk-btn-success[disabled],\\n.bk-root .bk-btn-success[disabled]:hover,\\n.bk-root .bk-btn-success[disabled]:focus,\\n.bk-root .bk-btn-success[disabled]:active,\\n.bk-root .bk-btn-success[disabled].bk-active {\\n background-color: #667b66;\\n border-color: #4cae4c;\\n}\\n.bk-root .bk-btn-warning {\\n color: #fff;\\n background-color: #f0ad4e;\\n border-color: #eea236;\\n}\\n.bk-root .bk-btn-warning:hover {\\n background-color: #eea43b;\\n border-color: #e89014;\\n}\\n.bk-root .bk-btn-warning.bk-active {\\n background-color: #ed9c28;\\n border-color: #d58512;\\n}\\n.bk-root .bk-btn-warning[disabled],\\n.bk-root .bk-btn-warning[disabled]:hover,\\n.bk-root .bk-btn-warning[disabled]:focus,\\n.bk-root .bk-btn-warning[disabled]:active,\\n.bk-root .bk-btn-warning[disabled].bk-active {\\n background-color: #c89143;\\n border-color: #eea236;\\n}\\n.bk-root .bk-btn-danger {\\n color: #fff;\\n background-color: #d9534f;\\n border-color: #d43f3a;\\n}\\n.bk-root .bk-btn-danger:hover {\\n background-color: #d5433e;\\n border-color: #bd2d29;\\n}\\n.bk-root .bk-btn-danger.bk-active {\\n background-color: #d2322d;\\n border-color: #ac2925;\\n}\\n.bk-root .bk-btn-danger[disabled],\\n.bk-root .bk-btn-danger[disabled]:hover,\\n.bk-root .bk-btn-danger[disabled]:focus,\\n.bk-root .bk-btn-danger[disabled]:active,\\n.bk-root .bk-btn-danger[disabled].bk-active {\\n background-color: #a55350;\\n border-color: #d43f3a;\\n}\\n.bk-root .bk-btn-group {\\n height: 100%;\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-btn-group > .bk-btn {\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n}\\n.bk-root .bk-btn-group > .bk-btn + .bk-btn {\\n margin-left: -1px;\\n}\\n.bk-root .bk-btn-group > .bk-btn:first-child:not(:last-child) {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0;\\n}\\n.bk-root .bk-btn-group > .bk-btn:not(:first-child):last-child {\\n border-bottom-left-radius: 0;\\n border-top-left-radius: 0;\\n}\\n.bk-root .bk-btn-group > .bk-btn:not(:first-child):not(:last-child) {\\n border-radius: 0;\\n}\\n.bk-root .bk-btn-group .bk-dropdown-toggle {\\n flex: 0 0 0;\\n -webkit-flex: 0 0 0;\\n padding: 6px 6px;\\n}\\n\"},\n", + " function _(n,o,r){Object.defineProperty(r,\"__esModule\",{value:!0});r.default=\"\\n.bk-root .bk-menu-icon {\\n width: 28px;\\n height: 28px;\\n background-size: 60%;\\n background-color: transparent;\\n background-repeat: no-repeat;\\n background-position: center center;\\n}\\n.bk-root .bk-context-menu {\\n position: absolute;\\n display: inline-flex;\\n display: -webkit-inline-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n width: auto;\\n height: auto;\\n z-index: 100;\\n cursor: pointer;\\n font-size: 12px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\\n}\\n.bk-root .bk-context-menu.bk-horizontal {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-context-menu.bk-vertical {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-context-menu > .bk-divider {\\n cursor: default;\\n overflow: hidden;\\n background-color: #e5e5e5;\\n}\\n.bk-root .bk-context-menu.bk-horizontal > .bk-divider {\\n width: 1px;\\n margin: 5px 0;\\n}\\n.bk-root .bk-context-menu.bk-vertical > .bk-divider {\\n height: 1px;\\n margin: 0 5px;\\n}\\n.bk-root .bk-context-menu > :not(.bk-divider) {\\n border: 1px solid transparent;\\n}\\n.bk-root .bk-context-menu > :not(.bk-divider).bk-active {\\n border-color: #26aae1;\\n}\\n.bk-root .bk-context-menu > :not(.bk-divider):hover {\\n background-color: #f9f9f9;\\n}\\n.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):first-child {\\n border-top-left-radius: 4px;\\n border-bottom-left-radius: 4px;\\n}\\n.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):last-child {\\n border-top-right-radius: 4px;\\n border-bottom-right-radius: 4px;\\n}\\n.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):first-child {\\n border-top-left-radius: 4px;\\n border-top-right-radius: 4px;\\n}\\n.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):last-child {\\n border-bottom-left-radius: 4px;\\n border-bottom-right-radius: 4px;\\n}\\n.bk-root .bk-menu {\\n position: absolute;\\n left: 0;\\n width: 100%;\\n z-index: 100;\\n cursor: pointer;\\n font-size: 12px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\\n}\\n.bk-root .bk-menu.bk-above {\\n bottom: 100%;\\n}\\n.bk-root .bk-menu.bk-below {\\n top: 100%;\\n}\\n.bk-root .bk-menu > .bk-divider {\\n height: 1px;\\n margin: 7.5px 0;\\n overflow: hidden;\\n background-color: #e5e5e5;\\n}\\n.bk-root .bk-menu > :not(.bk-divider) {\\n padding: 6px 12px;\\n}\\n.bk-root .bk-menu > :not(.bk-divider):hover,\\n.bk-root .bk-menu > :not(.bk-divider).bk-active {\\n background-color: #e6e6e6;\\n}\\n.bk-root .bk-caret {\\n display: inline-block;\\n vertical-align: middle;\\n width: 0;\\n height: 0;\\n margin: 0 5px;\\n}\\n.bk-root .bk-caret.bk-down {\\n border-top: 4px solid;\\n}\\n.bk-root .bk-caret.bk-up {\\n border-bottom: 4px solid;\\n}\\n.bk-root .bk-caret.bk-down,\\n.bk-root .bk-caret.bk-up {\\n border-right: 4px solid transparent;\\n border-left: 4px solid transparent;\\n}\\n.bk-root .bk-caret.bk-left {\\n border-right: 4px solid;\\n}\\n.bk-root .bk-caret.bk-right {\\n border-left: 4px solid;\\n}\\n.bk-root .bk-caret.bk-left,\\n.bk-root .bk-caret.bk-right {\\n border-top: 4px solid transparent;\\n border-bottom: 4px solid transparent;\\n}\\n\"},\n", + " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});n.default='\\n.bk-root .bk-tabs-header {\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n overflow: hidden;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n}\\n.bk-root .bk-tabs-header .bk-btn-group {\\n height: auto;\\n margin-right: 5px;\\n}\\n.bk-root .bk-tabs-header .bk-btn-group > .bk-btn {\\n flex-grow: 0;\\n -webkit-flex-grow: 0;\\n height: auto;\\n padding: 4px 4px;\\n}\\n.bk-root .bk-tabs-header .bk-headers-wrapper {\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n overflow: hidden;\\n color: #666666;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-headers-wrapper {\\n border-bottom: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-right .bk-headers-wrapper {\\n border-left: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-below .bk-headers-wrapper {\\n border-top: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-headers-wrapper {\\n border-right: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-above,\\n.bk-root .bk-tabs-header.bk-below {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-headers,\\n.bk-root .bk-tabs-header.bk-below .bk-headers {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-tabs-header.bk-left,\\n.bk-root .bk-tabs-header.bk-right {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-headers,\\n.bk-root .bk-tabs-header.bk-right .bk-headers {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-tabs-header .bk-headers {\\n position: relative;\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n}\\n.bk-root .bk-tabs-header .bk-tab {\\n padding: 4px 8px;\\n border: solid transparent;\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.bk-root .bk-tabs-header .bk-tab:hover {\\n background-color: #f2f2f2;\\n}\\n.bk-root .bk-tabs-header .bk-tab.bk-active {\\n color: #4d4d4d;\\n background-color: white;\\n border-color: #e6e6e6;\\n}\\n.bk-root .bk-tabs-header .bk-tab .bk-close {\\n margin-left: 10px;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-tab {\\n border-width: 3px 1px 0px 1px;\\n border-radius: 4px 4px 0 0;\\n}\\n.bk-root .bk-tabs-header.bk-right .bk-tab {\\n border-width: 1px 3px 1px 0px;\\n border-radius: 0 4px 4px 0;\\n}\\n.bk-root .bk-tabs-header.bk-below .bk-tab {\\n border-width: 0px 1px 3px 1px;\\n border-radius: 0 0 4px 4px;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-tab {\\n border-width: 1px 0px 1px 3px;\\n border-radius: 4px 0 0 4px;\\n}\\n.bk-root .bk-close {\\n display: inline-block;\\n width: 10px;\\n height: 10px;\\n vertical-align: middle;\\n background-image: url(\\'data:image/svg+xml;utf8, \\');\\n}\\n.bk-root .bk-close:hover {\\n background-image: url(\\'data:image/svg+xml;utf8, \\');\\n}\\n'},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const o=e(274);class _ extends o.ColumnView{}i.WidgetBoxView=_,_.__name__=\"WidgetBoxView\";class n extends o.Column{constructor(e){super(e)}static init_WidgetBox(){this.prototype.default_view=_}}i.WidgetBox=n,n.__name__=\"WidgetBox\",n.init_WidgetBox()},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});e(1).__exportStar(e(288),t);var a=e(289);t.Marker=a.Marker;var _=e(290);t.Scatter=_.Scatter},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const i=e(1),r=e(289),n=i.__importStar(e(238)),s=Math.sqrt(3);function c(e,t){e.rotate(Math.PI/4),a(e,t),e.rotate(-Math.PI/4)}function l(e,t){const o=t*s,i=o/3;e.moveTo(-o/2,-i),e.lineTo(0,0),e.lineTo(o/2,-i),e.lineTo(0,0),e.lineTo(0,t)}function a(e,t){e.moveTo(0,t),e.lineTo(0,-t),e.moveTo(-t,0),e.lineTo(t,0)}function u(e,t){e.moveTo(0,t),e.lineTo(t/1.5,0),e.lineTo(0,-t),e.lineTo(-t/1.5,0),e.closePath()}function d(e,t){const o=t*s,i=o/3;e.moveTo(-t,i),e.lineTo(t,i),e.lineTo(0,i-o),e.closePath()}function v(e,t,o,i,r){a(e,o),c(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function _(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function f(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),a(e,o),e.stroke())}function T(e,t,o,i,r){_(e,t,o,i,r),P(e,t,o,i,r)}function z(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),l(e,o),e.stroke())}function C(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),c(e,o),e.stroke())}function k(e,t,o,i,r){a(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function m(e,t,o,i,r){u(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function h(e,t,o,i,r){u(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.moveTo(0,o),e.lineTo(0,-o),e.moveTo(-o/1.5,0),e.lineTo(o/1.5,0),e.stroke())}function q(e,t,o,i,r){m(e,t,o,i,r),P(e,t,o,i,r)}function P(e,t,o,i,r){!function(e,t){e.beginPath(),e.arc(0,0,t/4,0,2*Math.PI,!1),e.closePath()}(e,o),i.set_vectorize(e,t),e.fillStyle=e.strokeStyle,e.fill()}function D(e,t,o,i,r){!function(e,t){const o=t/2,i=s*o;e.moveTo(t,0),e.lineTo(o,-i),e.lineTo(-o,-i),e.lineTo(-t,0),e.lineTo(-o,i),e.lineTo(o,i),e.closePath()}(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function g(e,t,o,i,r){D(e,t,o,i,r),P(e,t,o,i)}function S(e,t,o,i,r){e.rotate(Math.PI),d(e,o),e.rotate(-Math.PI),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function G(e,t,o,i,r){const n=3*o/8,s=[n,n,o,o,n,n,-n,-n,-o,-o,-n,-n],c=[o,n,n,-n,-n,-o,-o,-n,-n,n,n,o];for(e.moveTo(s[0],c[0]),t=1;t<12;t++)e.lineTo(s[t],c[t]);e.closePath(),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function L(e,t,o,i,r){const n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function M(e,t,o,i,r){const n=3*o/8;e.moveTo(-o,-o),e.quadraticCurveTo(0,-n,o,-o),e.quadraticCurveTo(n,0,o,o),e.quadraticCurveTo(0,n,-o,o),e.quadraticCurveTo(-n,0,-o,-o),e.closePath(),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function p(e,t,o,i,r){const n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),a(e,o),e.stroke())}function x(e,t,o,i,r){L(e,t,o,i,r),P(e,t,o,i)}function I(e,t,o,i,r){const n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.moveTo(-o,o),e.lineTo(o,-o),e.moveTo(-o,-o),e.lineTo(o,o),e.stroke())}function y(e,t,o,i,r){d(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function X(e,t,o,i,r){y(e,t,o,i,r),P(e,t,o,i)}function H(e,t,o,i,r){const n=o*s,c=n/3,l=3*c/8;e.moveTo(-o,c),e.quadraticCurveTo(0,l,o,c),e.quadraticCurveTo(s*l/2,l/2,0,c-n),e.quadraticCurveTo(-s*l/2,l/2,-o,c),e.closePath(),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function Y(e,t,o,i,r){!function(e,t){e.moveTo(-t,0),e.lineTo(t,0)}(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function A(e,t,o,i,r){c(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function b(e,t,o,i,r){l(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function w(e,t,o){var i;const n=class extends r.MarkerView{static initClass(){this.prototype._render_one=t,this.prototype.glglyph_cls=o}};n.initClass();const s=((i=class extends r.Marker{static initClass(){this.prototype.default_view=n}}).__name__=e,i);return s.initClass(),s}o.Asterisk=w(\"Asterisk\",v,n.AsteriskGL),o.CircleCross=w(\"CircleCross\",f,n.CircleCrossGL),o.CircleDot=w(\"CircleDot\",T),o.CircleY=w(\"CircleY\",z),o.CircleX=w(\"CircleX\",C,n.CircleXGL),o.Cross=w(\"Cross\",k,n.CrossGL),o.Dash=w(\"Dash\",Y),o.Diamond=w(\"Diamond\",m,n.DiamondGL),o.DiamondCross=w(\"DiamondCross\",h,n.DiamondCrossGL),o.DiamondDot=w(\"DiamondDot\",q),o.Dot=w(\"Dot\",P),o.Hex=w(\"Hex\",D,n.HexGL),o.HexDot=w(\"HexDot\",g),o.InvertedTriangle=w(\"InvertedTriangle\",S,n.InvertedTriangleGL),o.Plus=w(\"Plus\",G),o.Square=w(\"Square\",L,n.SquareGL),o.SquareCross=w(\"SquareCross\",p,n.SquareCrossGL),o.SquareDot=w(\"SquareDot\",x),o.SquarePin=w(\"SquarePin\",M),o.SquareX=w(\"SquareX\",I,n.SquareXGL),o.Triangle=w(\"Triangle\",y,n.TriangleGL),o.TriangleDot=w(\"TriangleDot\",X),o.TrianglePin=w(\"TrianglePin\",H),o.X=w(\"X\",A,n.XGL),o.Y=w(\"Y\",b),o.marker_funcs={asterisk:v,circle:_,circle_cross:f,circle_dot:T,circle_y:z,circle_x:C,cross:k,diamond:m,diamond_dot:q,diamond_cross:h,dot:P,hex:D,hex_dot:g,inverted_triangle:S,plus:G,square:L,square_cross:p,square_dot:x,square_pin:M,square_x:I,triangle:y,triangle_dot:X,triangle_pin:H,dash:Y,x:A,y:b}},\n", + " function _(e,s,i){Object.defineProperty(i,\"__esModule\",{value:!0});const t=e(1),n=e(93),r=e(28),a=t.__importStar(e(101)),_=t.__importStar(e(18)),h=e(9),l=e(88);class c extends n.XYGlyphView{initialize(){super.initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;null!=e&&null!=this.glglyph_cls&&(this.glglyph=new this.glglyph_cls(e.gl,this))}_render(e,s,{sx:i,sy:t,_size:n,_angle:r}){for(const a of s){if(isNaN(i[a]+t[a]+n[a]+r[a]))continue;const s=n[a]/2;e.beginPath(),e.translate(i[a],t[a]),r[a]&&e.rotate(r[a]),this._render_one(e,a,s,this.visuals.line,this.visuals.fill),r[a]&&e.rotate(-r[a]),e.translate(-i[a],-t[a])}}_mask_data(){const e=this.renderer.plot_view.frame.bbox.h_range,s=e.start-this.max_size,i=e.end+this.max_size,[t,n]=this.renderer.xscale.r_invert(s,i),r=this.renderer.plot_view.frame.bbox.v_range,a=r.start-this.max_size,_=r.end+this.max_size,[h,l]=this.renderer.yscale.r_invert(a,_);return this.index.indices({x0:t,x1:n,y0:h,y1:l})}_hit_point(e){const{sx:s,sy:i}=e,t=s-this.max_size,n=s+this.max_size,[r,a]=this.renderer.xscale.r_invert(t,n),_=i-this.max_size,h=i+this.max_size,[c,o]=this.renderer.yscale.r_invert(_,h),x=this.index.indices({x0:r,x1:a,y0:c,y1:o}),d=[];for(const e of x){const t=this._size[e]/2;Math.abs(this.sx[e]-s)<=t&&Math.abs(this.sy[e]-i)<=t&&d.push(e)}return new l.Selection({indices:d})}_hit_span(e){const{sx:s,sy:i}=e,t=this.bounds(),n=this.max_size/2;let r,a,_,h;if(\"h\"==e.direction){_=t.y0,h=t.y1;const e=s-n,i=s+n;[r,a]=this.renderer.xscale.r_invert(e,i)}else{r=t.x0,a=t.x1;const e=i-n,s=i+n;[_,h]=this.renderer.yscale.r_invert(e,s)}const c=[...this.index.indices({x0:r,x1:a,y0:_,y1:h})];return new l.Selection({indices:c})}_hit_rect(e){const{sx0:s,sx1:i,sy0:t,sy1:n}=e,[r,a]=this.renderer.xscale.r_invert(s,i),[_,h]=this.renderer.yscale.r_invert(t,n),c=[...this.index.indices({x0:r,x1:a,y0:_,y1:h})];return new l.Selection({indices:c})}_hit_poly(e){const{sx:s,sy:i}=e,t=h.range(0,this.sx.length),n=[];for(let e=0,r=t.length;enew r.Range1d,y_range:()=>new r.Range1d})}initialize(){super.initialize(),this.use_map=!0,this.api_key||n.logger.error(\"api_key is required. See https://developers.google.com/maps/documentation/javascript/get-api-key for more information on how to obtain your own.\")}}i.GMapPlot=u,u.__name__=\"GMapPlot\",u.init_GMapPlot()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1),o=i.__importStar(e(28)),n=i.__importStar(e(18)),s=e(15),a=e(9),l=e(13),_=e(8),h=e(272),c=e(169),u=e(145),d=e(294),b=e(85),g=e(90),p=e(210),m=e(312);r.PlotView=m.PlotView;class f extends h.LayoutDOM{constructor(e){super(e)}static init_Plot(){this.prototype.default_view=m.PlotView,this.mixins([[\"outline_\",o.Line],[\"background_\",o.Fill],[\"border_\",o.Fill]]),this.define({toolbar:[n.Instance,()=>new d.Toolbar],toolbar_location:[n.Location,\"right\"],toolbar_sticky:[n.Boolean,!0],plot_width:[n.Number,600],plot_height:[n.Number,600],frame_width:[n.Number,null],frame_height:[n.Number,null],title:[n.Any,()=>new c.Title({text:\"\"})],title_location:[n.Location,\"above\"],above:[n.Array,[]],below:[n.Array,[]],left:[n.Array,[]],right:[n.Array,[]],center:[n.Array,[]],renderers:[n.Array,[]],x_range:[n.Instance,()=>new p.DataRange1d],extra_x_ranges:[n.Any,{}],y_range:[n.Instance,()=>new p.DataRange1d],extra_y_ranges:[n.Any,{}],x_scale:[n.Instance,()=>new u.LinearScale],y_scale:[n.Instance,()=>new u.LinearScale],lod_factor:[n.Number,10],lod_interval:[n.Number,300],lod_threshold:[n.Number,2e3],lod_timeout:[n.Number,500],hidpi:[n.Boolean,!0],output_backend:[n.OutputBackend,\"canvas\"],min_border:[n.Number,5],min_border_top:[n.Number,null],min_border_left:[n.Number,null],min_border_bottom:[n.Number,null],min_border_right:[n.Number,null],inner_width:[n.Number],inner_height:[n.Number],outer_width:[n.Number],outer_height:[n.Number],match_aspect:[n.Boolean,!1],aspect_scale:[n.Number,1],reset_policy:[n.ResetPolicy,\"standard\"]}),this.override({outline_line_color:\"#e5e5e5\",border_fill_color:\"#ffffff\",background_fill_color:\"#ffffff\"})}get width(){const e=this.properties.width.get_value();return null!=e?e:this.plot_width}set width(e){this.setv({width:e,plot_width:e})}get height(){const e=this.properties.height.get_value();return null!=e?e:this.plot_height}set height(e){this.setv({height:e,plot_height:e})}_doc_attached(){super._doc_attached(),this._push_changes([[this.properties.inner_height,null,this.inner_height],[this.properties.inner_width,null,this.inner_width]])}initialize(){super.initialize(),this.reset=new s.Signal0(this,\"reset\");for(const e of l.values(this.extra_x_ranges).concat(this.x_range)){let t=e.plots;_.isArray(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}for(const e of l.values(this.extra_y_ranges).concat(this.y_range)){let t=e.plots;_.isArray(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}}add_layout(e,t=\"center\"){const r=this.properties[t].get_value();this.setv({[t]:[...r,e]})}remove_layout(e){const t=t=>{a.remove_by(t,t=>t==e)};t(this.left),t(this.right),t(this.above),t(this.below),t(this.center)}add_renderers(...e){this.renderers=this.renderers.concat(e)}add_glyph(e,t=new b.ColumnDataSource,r={}){const i=Object.assign(Object.assign({},r),{data_source:t,glyph:e}),o=new g.GlyphRenderer(i);return this.add_renderers(o),o}add_tools(...e){this.toolbar.tools=this.toolbar.tools.concat(e)}get panels(){return[...this.side_panels,...this.center]}get side_panels(){const{above:e,below:t,left:r,right:i}=this;return a.concat([e,t,r,i])}}r.Plot=f,f.__name__=\"Plot\",f.init_Plot()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1).__importStar(t(18)),c=t(8),o=t(9),n=t(13),a=t(295),l=t(305),r=t=>{switch(t){case\"tap\":return\"active_tap\";case\"pan\":return\"active_drag\";case\"pinch\":case\"scroll\":return\"active_scroll\";case\"multi\":return\"active_multi\"}return null},_=t=>\"tap\"==t||\"pan\"==t;class h extends l.ToolbarBase{constructor(t){super(t)}static init_Toolbar(){this.prototype.default_view=l.ToolbarBaseView,this.define({active_drag:[s.Any,\"auto\"],active_inspect:[s.Any,\"auto\"],active_scroll:[s.Any,\"auto\"],active_tap:[s.Any,\"auto\"],active_multi:[s.Any,null]})}connect_signals(){super.connect_signals();const{tools:t,active_drag:e,active_inspect:i,active_scroll:s,active_tap:c,active_multi:o}=this.properties;this.on_change([t,e,i,s,c,o],()=>this._init_tools())}_init_tools(){if(super._init_tools(),\"auto\"==this.active_inspect);else if(this.active_inspect instanceof a.InspectTool){let t=!1;for(const e of this.inspectors)e!=this.active_inspect?e.active=!1:t=!0;t||(this.active_inspect=null)}else if(c.isArray(this.active_inspect)){const t=o.intersection(this.active_inspect,this.inspectors);t.length!=this.active_inspect.length&&(this.active_inspect=t);for(const t of this.inspectors)o.includes(this.active_inspect,t)||(t.active=!1)}else if(null==this.active_inspect)for(const t of this.inspectors)t.active=!1;const t=t=>{t.active?this._active_change(t):t.active=!0};for(const t of n.values(this.gestures)){t.tools=o.sort_by(t.tools,t=>t.default_order);for(const e of t.tools)this.connect(e.properties.active.change,()=>this._active_change(e))}for(const[e,i]of n.entries(this.gestures)){const s=r(e);if(s){const c=this[s];\"auto\"==c?0!=i.tools.length&&_(e)&&t(i.tools[0]):null!=c&&(o.includes(this.tools,c)?t(c):this[s]=null)}}}}i.Toolbar=h,h.__name__=\"Toolbar\",h.init_Toolbar()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const n=e(1),s=e(296),i=e(304),_=n.__importStar(e(18));class c extends s.ButtonToolView{}o.InspectToolView=c,c.__name__=\"InspectToolView\";class l extends s.ButtonTool{constructor(e){super(e),this.event_type=\"move\"}static init_InspectTool(){this.prototype.button_view=i.OnOffButtonView,this.define({toggleable:[_.Boolean,!0]}),this.override({active:!0})}}o.InspectTool=l,l.__name__=\"InspectTool\",l.init_InspectTool()},\n", + " function _(t,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const i=t(1),s=i.__importDefault(t(297)),n=t(78),l=t(298),r=t(72),a=i.__importStar(t(18)),u=t(29),_=t(8),h=t(9),c=t(299),m=i.__importDefault(t(300)),d=i.__importDefault(t(301)),p=i.__importDefault(t(284)),f=t(302);class g extends n.DOMView{initialize(){super.initialize();const t=this.model.menu;if(null!=t){const e=this.parent.model.toolbar_location,o=\"left\"==e||\"above\"==e,i=this.parent.model.horizontal?\"vertical\":\"horizontal\";this._menu=new f.ContextMenu(o?h.reversed(t):t,{orientation:i,prevent_hide:t=>t.target==this.el})}this._hammer=new s.default(this.el,{touchAction:\"auto\",inputClass:s.default.TouchMouseInput}),this.connect(this.model.change,()=>this.render()),this._hammer.on(\"tap\",t=>{var e;(null===(e=this._menu)||void 0===e?void 0:e.is_open)?this._menu.hide():t.target==this.el&&this._clicked()}),this._hammer.on(\"press\",()=>this._pressed())}remove(){var t;this._hammer.destroy(),null===(t=this._menu)||void 0===t||t.remove(),super.remove()}styles(){return[...super.styles(),m.default,d.default,p.default]}css_classes(){return super.css_classes().concat(c.bk_toolbar_button)}render(){r.empty(this.el);const t=this.model.computed_icon;_.isString(t)&&(u.startsWith(t,\"data:image\")?this.el.style.backgroundImage=\"url('\"+t+\"')\":this.el.classList.add(t)),this.el.title=this.model.tooltip,null!=this._menu&&this.root.el.appendChild(this._menu.el)}_pressed(){var t;const{left:e,top:o,right:i,bottom:s}=this.el.getBoundingClientRect(),n=(()=>{switch(this.parent.model.toolbar_location){case\"right\":return{right:e,top:o};case\"left\":return{left:i,top:o};case\"above\":return{left:e,top:s};case\"below\":return{left:e,bottom:o}}})();null===(t=this._menu)||void 0===t||t.toggle(n)}}o.ButtonToolButtonView=g,g.__name__=\"ButtonToolButtonView\";class v extends l.ToolView{}o.ButtonToolView=v,v.__name__=\"ButtonToolView\";class b extends l.Tool{constructor(t){super(t)}static init_ButtonTool(){this.internal({disabled:[a.Boolean,!1]})}get tooltip(){return this.tool_name}get computed_icon(){return this.icon}get menu(){return null}}o.ButtonTool=b,b.__name__=\"ButtonTool\",b.init_ButtonTool()},\n", + " function _(t,e,n){\n", + " /*! Hammer.JS - v2.0.7 - 2016-04-22\n", + " * http://hammerjs.github.io/\n", + " *\n", + " * Copyright (c) 2016 Jorik Tangelder;\n", + " * Licensed under the MIT license */\n", + " !function(t,n,i,r){\"use strict\";var s,o=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],a=n.createElement(\"div\"),h=Math.round,u=Math.abs,c=Date.now;function l(t,e,n){return setTimeout(y(t,n),e)}function p(t,e,n){return!!Array.isArray(t)&&(f(t,n[e],n),!0)}function f(t,e,n){var i;if(t)if(t.forEach)t.forEach(e,n);else if(void 0!==t.length)for(i=0;i\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",s=t.console&&(t.console.warn||t.console.log);return s&&s.call(t.console,r,i),e.apply(this,arguments)}}s=\"function\"!=typeof Object.assign?function(t){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),n=1;n-1}function S(t){return t.trim().split(/\\s+/g)}function b(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;in[e]})):i.sort()),i}function D(t,e){for(var n,i,r=e[0].toUpperCase()+e.slice(1),s=0;s1&&!n.firstMultiple?n.firstMultiple=W(e):1===r&&(n.firstMultiple=!1);var s=n.firstInput,o=n.firstMultiple,a=o?o.center:s.center,h=e.center=q(i);e.timeStamp=c(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=U(a,h),e.distance=L(a,h),function(t,e){var n=e.center,i=t.offsetDelta||{},r=t.prevDelta||{},s=t.prevInput||{};1!==e.eventType&&4!==s.eventType||(r=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},i=t.offsetDelta={x:n.x,y:n.y});e.deltaX=r.x+(n.x-i.x),e.deltaY=r.y+(n.y-i.y)}(n,e),e.offsetDirection=H(e.deltaX,e.deltaY);var l=k(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=l.x,e.overallVelocityY=l.y,e.overallVelocity=u(l.x)>u(l.y)?l.x:l.y,e.scale=o?(p=o.pointers,f=i,L(f[0],f[1],X)/L(p[0],p[1],X)):1,e.rotation=o?function(t,e){return U(e[1],e[0],X)+U(t[1],t[0],X)}(o.pointers,i):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,function(t,e){var n,i,r,s,o=t.lastInterval||e,a=e.timeStamp-o.timeStamp;if(8!=e.eventType&&(a>25||void 0===o.velocity)){var h=e.deltaX-o.deltaX,c=e.deltaY-o.deltaY,l=k(a,h,c);i=l.x,r=l.y,n=u(l.x)>u(l.y)?l.x:l.y,s=H(h,c),t.lastInterval=e}else n=o.velocity,i=o.velocityX,r=o.velocityY,s=o.direction;e.velocity=n,e.velocityX=i,e.velocityY=r,e.direction=s}(n,e);var p,f;var v=t.element;_(e.srcEvent.target,v)&&(v=e.srcEvent.target);e.target=v}(t,n),t.emit(\"hammer.input\",n),t.recognize(n),t.session.prevInput=n}function W(t){for(var e=[],n=0;n=u(e)?t<0?2:4:e<0?8:16}function L(t,e,n){n||(n=N);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return Math.sqrt(i*i+r*r)}function U(t,e,n){n||(n=N);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return 180*Math.atan2(r,i)/Math.PI}Y.prototype={handler:function(){},init:function(){this.evEl&&I(this.element,this.evEl,this.domHandler),this.evTarget&&I(this.target,this.evTarget,this.domHandler),this.evWin&&I(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&A(this.element,this.evEl,this.domHandler),this.evTarget&&A(this.target,this.evTarget,this.domHandler),this.evWin&&A(O(this.element),this.evWin,this.domHandler)}};var V={mousedown:1,mousemove:2,mouseup:4};function j(){this.evEl=\"mousedown\",this.evWin=\"mousemove mouseup\",this.pressed=!1,Y.apply(this,arguments)}g(j,Y,{handler:function(t){var e=V[t.type];1&e&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=4),this.pressed&&(4&e&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\"mouse\",srcEvent:t}))}});var G={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},Z={2:\"touch\",3:\"pen\",4:\"mouse\",5:\"kinect\"},B=\"pointerdown\",$=\"pointermove pointerup pointercancel\";function J(){this.evEl=B,this.evWin=$,Y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}t.MSPointerEvent&&!t.PointerEvent&&(B=\"MSPointerDown\",$=\"MSPointerMove MSPointerUp MSPointerCancel\"),g(J,Y,{handler:function(t){var e=this.store,n=!1,i=t.type.toLowerCase().replace(\"ms\",\"\"),r=G[i],s=Z[t.pointerType]||t.pointerType,o=\"touch\"==s,a=b(e,t.pointerId,\"pointerId\");1&r&&(0===t.button||o)?a<0&&(e.push(t),a=e.length-1):12&r&&(n=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),n&&e.splice(a,1))}});var K={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function Q(){this.evTarget=\"touchstart\",this.evWin=\"touchstart touchmove touchend touchcancel\",this.started=!1,Y.apply(this,arguments)}function tt(t,e){var n=x(t.touches),i=x(t.changedTouches);return 12&e&&(n=P(n.concat(i),\"identifier\",!0)),[n,i]}g(Q,Y,{handler:function(t){var e=K[t.type];if(1===e&&(this.started=!0),this.started){var n=tt.call(this,t,e);12&e&&n[0].length-n[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:\"touch\",srcEvent:t})}}});var et={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function nt(){this.evTarget=\"touchstart touchmove touchend touchcancel\",this.targetIds={},Y.apply(this,arguments)}function it(t,e){var n=x(t.touches),i=this.targetIds;if(3&e&&1===n.length)return i[n[0].identifier]=!0,[n,n];var r,s,o=x(t.changedTouches),a=[],h=this.target;if(s=n.filter((function(t){return _(t.target,h)})),1===e)for(r=0;r-1&&i.splice(t,1)}),2500)}}function at(t){for(var e=t.srcEvent.clientX,n=t.srcEvent.clientY,i=0;i-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,n=this.state;function i(n){e.manager.emit(n,t)}n<8&&i(e.options.event+ft(n)),i(e.options.event),t.additionalEvent&&i(t.additionalEvent),n>=8&&i(e.options.event+ft(n))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;te.threshold&&r&e.direction},attrTest:function(t){return mt.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=vt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),g(yt,mt,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[\"none\"]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),g(Tt,pt,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[\"auto\"]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distancee.time;if(this._input=t,!i||!n||12&t.eventType&&!r)this.reset();else if(1&t.eventType)this.reset(),this._timer=l((function(){this.state=8,this.tryEmit()}),e.time,this);else if(4&t.eventType)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&4&t.eventType?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=c(),this.manager.emit(this.options.event,this._input)))}}),g(Et,mt,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[\"none\"]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),g(It,mt,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:30,pointers:1},getTouchAction:function(){return gt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,n=this.options.direction;return 30&n?e=t.overallVelocity:6&n?e=t.overallVelocityX:24&n&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&u(e)>this.options.velocity&&4&t.eventType},emit:function(t){var e=vt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),g(At,pt,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[\"manipulation\"]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance{this.model.active?this.activate():this.deactivate()})}activate(){}deactivate(){}}i.ToolView=r,r.__name__=\"ToolView\";class _ extends a.Model{constructor(t){super(t)}static init_Tool(){this.prototype._known_aliases=new Map,this.internal({active:[n.Boolean,!1]})}get synthetic_renderers(){return[]}_get_dim_tooltip(t,e){switch(e){case\"width\":return t+\" (x-axis)\";case\"height\":return t+\" (y-axis)\";case\"both\":return t}}_get_dim_limits([t,e],[i,n],o,a){const r=o.bbox.h_range;let _;\"width\"==a||\"both\"==a?(_=[s.min([t,i]),s.max([t,i])],_=[s.max([_[0],r.start]),s.min([_[1],r.end])]):_=[r.start,r.end];const l=o.bbox.v_range;let c;return\"height\"==a||\"both\"==a?(c=[s.min([e,n]),s.max([e,n])],c=[s.max([c[0],l.start]),s.min([c[1],l.end])]):c=[l.start,l.end],[_,c]}static register_alias(t,e){this.prototype._known_aliases.set(t,e)}static from_string(t){const e=this.prototype._known_aliases.get(t);if(null!=e)return e();{const e=[...this.prototype._known_aliases.keys()];throw new Error(`unexpected tool name '${t}', possible tools are ${e.join(\", \")}`)}}}i.Tool=_,_.__name__=\"Tool\",_.init_Tool()},\n", + " function _(o,b,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.bk_toolbar=\"bk-toolbar\",t.bk_toolbar_hidden=\"bk-toolbar-hidden\",t.bk_toolbar_button=\"bk-toolbar-button\",t.bk_button_bar=\"bk-button-bar\",t.bk_toolbar_button_custom_action=\"bk-toolbar-button-custom-action\"},\n", + " function _(o,b,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root .bk-toolbar-hidden {\\n visibility: hidden;\\n opacity: 0;\\n transition: visibility 0.3s linear, opacity 0.3s linear;\\n}\\n.bk-root .bk-toolbar,\\n.bk-root .bk-button-bar {\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n}\\n.bk-root .bk-toolbar .bk-logo {\\n flex-shrink: 0;\\n -webkit-flex-shrink: 0;\\n}\\n.bk-root .bk-toolbar.bk-above,\\n.bk-root .bk-toolbar.bk-below {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n justify-content: flex-end;\\n -webkit-justify-content: flex-end;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-button-bar,\\n.bk-root .bk-toolbar.bk-below .bk-button-bar {\\n display: flex;\\n display: -webkit-flex;\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-logo,\\n.bk-root .bk-toolbar.bk-below .bk-logo {\\n order: 1;\\n -webkit-order: 1;\\n margin-left: 5px;\\n margin-right: 0px;\\n}\\n.bk-root .bk-toolbar.bk-left,\\n.bk-root .bk-toolbar.bk-right {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n justify-content: flex-start;\\n -webkit-justify-content: flex-start;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-button-bar,\\n.bk-root .bk-toolbar.bk-right .bk-button-bar {\\n display: flex;\\n display: -webkit-flex;\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-logo,\\n.bk-root .bk-toolbar.bk-right .bk-logo {\\n order: 0;\\n -webkit-order: 0;\\n margin-bottom: 5px;\\n margin-top: 0px;\\n}\\n.bk-root .bk-toolbar-button {\\n width: 30px;\\n height: 30px;\\n cursor: pointer;\\n background-size: 60% 60%;\\n background-origin: border-box;\\n background-color: transparent;\\n background-repeat: no-repeat;\\n background-position: center center;\\n}\\n.bk-root .bk-toolbar-button:hover {\\n background-color: rgba(192, 192, 192, 0.15);\\n}\\n.bk-root .bk-toolbar-button:focus {\\n outline: none;\\n}\\n.bk-root .bk-toolbar-button::-moz-focus-inner {\\n border: 0;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-toolbar-button {\\n border-bottom: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-toolbar-button.bk-active {\\n border-bottom-color: #26aae1;\\n}\\n.bk-root .bk-toolbar.bk-below .bk-toolbar-button {\\n border-top: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-below .bk-toolbar-button.bk-active {\\n border-top-color: #26aae1;\\n}\\n.bk-root .bk-toolbar.bk-right .bk-toolbar-button {\\n border-left: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-right .bk-toolbar-button.bk-active {\\n border-left-color: #26aae1;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-toolbar-button {\\n border-right: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-toolbar-button.bk-active {\\n border-right-color: #26aae1;\\n}\\n.bk-root .bk-button-bar + .bk-button-bar:before {\\n content: \" \";\\n display: inline-block;\\n background-color: lightgray;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-button-bar + .bk-button-bar:before,\\n.bk-root .bk-toolbar.bk-below .bk-button-bar + .bk-button-bar:before {\\n height: 10px;\\n width: 1px;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-button-bar + .bk-button-bar:before,\\n.bk-root .bk-toolbar.bk-right .bk-button-bar + .bk-button-bar:before {\\n height: 1px;\\n width: 10px;\\n}\\n'},\n", + " function _(A,g,C){Object.defineProperty(C,\"__esModule\",{value:!0});C.default='\\n.bk-root .bk-tool-icon-copy-to-clipboard {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUSDBoBvcHQeQAAAG9JREFUWMNjXLhsJcNAAiaGAQYwB/xHwh/Q+ITEkfHQCwEWND4jmeb8H/JpgBwfI6cNBhLSEkqaGXRpgFRAcZoZsmlg1AGjDhh1wKgDRh0w6gCaVcf/R2wIkNqw+D9s0wADvUNiyIYA47BJAwPuAAAj/Cjd0TCN6wAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-replace-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxokK3gniQAAAHpJREFUWMNjXLhsJcNAAiaGAQajDhhwB7DgEP+PxmeksvjgDwFcLmYkUh2hkBj8IcBIZXsYh1w2/I8v3sgAOM0bLYhGc8GgrwuICgldfQO88pcvXvg/aOuCUQeM5oLRuoCFCJcTbOMh5XOiW0JDNhdQS3y0IBp1ABwAAF8KGrhC1Eg6AAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-append-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxkZWD04WwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAoUlEQVRYw+1WQQ6AIAwrhO8Y/bIXEz9jIMSDr8ETCUEPQzA4pMeFLKNbu4l5WR0CDOMEALBGIzMuQIBEZQjPgP9JLjwTfBjY9sO9lZsFA9IafZng3BlIyVefgd8XQFZBAWe8jfNxwsDhir6rzoCiPiy1K+J8/FRQemv2XfAdFcQ9znU4Viqg9ta1qYJ+D1BnAIBrkgGVOrXNqUA9rbyZm/AEzFh4jEeY/soAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-intersect-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxkrkOpp2wAAAPhJREFUWMPtV1EKwjAMTUavI3oawR/vtn5srJdREfzwMvHHQlcT2mpdMzFfWxiP5r2+JMN+mAiCOB72CABgR1cln4oOGocJnuMTSxWk8jMm7OggYkYXA9gPE3uyd8NXHONJ+eYMdE/NqCJmEZ5ZqlJJ4sUksKN7cYSaPoCZFWR1QI+Xm1fBACU63Cw22x0AAJxudwrffVwvZ+JmQdAHZkw0d4EpAMCw8k87pMdbnwtizQumJYv3nwV6XOA1qbUT/oQLUJgFRbsiNwFVucBIlyR3p0tdMp+XmFjfLKi1LatyAXtCRjPWBdL3Ke3VuACJKFfDr/xFN2fgAR/Go0qaLlmEAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-subtract-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxgsF5XNOQAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABFUlEQVRYw9VWUQqDMAxNpWfxQxD1MoP97G7zQ5mH2RTZYLtM9lWoMbXtxLXNX4OG9r28l4hrd0PQoqxqAACYpxH25C/nkwCHyCBwSPoS09k1T5Fo+4EiExcC4v584xGFmyIXHBLRISAVZyZufUPVa4rcrwmPDgr93ylo+2GliLRUYHK6th/o/6r7nfLpqaCsagEA8Hh9FmcNKeRmgeYDC+SCq0B6FFi8/BcV6BdR9cL3gCv3ijPKOacsn3rBEcjmaVxpfGcg4wHxzgJJnc6241Hn23DERFRAu1bNcWa3Q0uXi62XR6sCaWoSejbtdLYmU3kTEunNgj0bUbQqYG/IcMaqwPS9jftoVCAQ0ZVDJwf0zQdH4AsyW6fpQu4YegAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-clear-selection {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUGEhcuan3d3wAAAoRJREFUWMPtlzFP3EAQhd+b3TNSzg0N5TWXLkJQUUaKhIQ4fgP/g5ArrriE/I3opEgRrZtIVJR0FJQ010SioUmEZHtnUpwN9gWHGA5BJCy58MraffvmfZ41v3z9hqe8BE98vQh4cgG+Ydzmnrng8efvQJNi/uN7dznx/B3ggtfhf4ehNdUttRzBDIm/2VTiiWCG1HK0nc+3UWtq8BQIiEEakEQOADBIA4QCQmBqoHBhFNR27ikQSmGdYCdTqCpEHMDZmEKRWUBEv1gBDg5SzRJnpopILWICgWuRYflLamuzxB2BmtYqSRIka5VWU8QduXO+1hRc5YZu5GAwmP2ZJzND0IBu5HCV2+NQcAhAVRsnC2IbPzPdSjzd6to6VtfWkXi6YLaVWr7xoAwkfpb8MnC3SH7rKSMBe4M0jA/OTicFIbtCGRIyNbURhcf3ErCd6YwA1m0HgAxhw1NGQnlXBHG4kylVlSJuH0RfIP2CkL2I/qS1gIAAQiBl1QwFggIHtyxgrxK5PgyfC0JWKoT0HLh8LwoietB4TYKaIl7yeNURxB05UtMxDOcVQlZIrlRKdK6m47gjR/fuBRQihyLArtNeJD50Izcx2Eczu7iFkIug4VM3cpOr3MKDekFED0fWUHv9Zq0kpLnridjhY3XDg7NTN0jDrhO3X7O9Wg7wwyANu4mnayNg3gmbu0tCNoUyBNGv2l4rB9EXynA7082FOxAQLhU6rQVO9T2AvWowFToNCJcPORGxIRcnpjZSKATSU9NxvOQnAPArDSaQoUKnNI4iufkGtD4P3EHIcWZhz4HLceSOyrR3Izf5memPAL2cX3yhAkonysZVaWLBkd9dw1Ivv2a/AYPkK+ty1U1DAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-box-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg0kduFrowAAAIdJREFUWMPtVtEKwCAI9KL//4e9DPZ3+wP3KgOjNZouFYI4C8q7s7DtB1lGIeMoRMRinCLXg/ML3EcFqpjjloOyZxRntxpwQ8HsgHYARKFAtSFrCg3TCdMFCE1BuuALEXJLjC4qENsFVXCESZw38/kWLOkC/K4PcOc/Hj03WkoDT3EaWW9egQul6CUbq90JTwAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-box-zoom {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg82t254aQAAAkBJREFUWMPN11+E1FEUB/DPTFn2qaeIpcSwr5NlUyJiKWVXWUqvlUh/iE3RY9mUekkPPURtLKNRrFJEeuphGfUUaVliiX1aVjGs6aG7+XX9ZnZ+d2fTl2vmnHvPPfeee/79Sk+may2/UQq/q7Qu+bAJoxjHIKqB/wlfUMcMVqI9bLZ+DGIKwzlzQ2GcxCx2xwvKOUKlaHTiX8bHNspjDONHkOmJBW5jIof/FvPh/06MZOb6cRc7cGn1AKUE5cdzlM/gAr5F/O24H3xkFRfxAbVygvK+cIsspjGWo1zgjeFpxL+BvnLw7laBA4xjIFJwrgu52DoVjKdY4HBEX8dSF3JLYe1fe6UcYCii3xWQjdfuSTnAtoheKCC7GNED5Zx4L4qt61jbTLHA94geKSC7P7ZeShQ0Inoi1IJuEOeORooFXkV0FZNdZs5qvFfKAeqYy7nZ6yg//HG0MBfffh71lFrQDCW2EvEP4mt4okZUDftz9rmGZkotmMxJRtlisy+MTniAWrty3AlXw0hFM2TD89l+oNsoOJXjbIs4EpqNtTCLXbiZ0g+M4mFObj8U3vsNjoZCVcmk60ZwthpepLZkB/AsivWfOJZxtpUQHfWib7KWDwzjeegBZJSdKFiE2qJTFFTwElsi/unQ/awXrU4WGMD7nOJxBY/1EO2iYConq93CHT1GOwucjdqnRyFz+VcHmMNefMY9nNkA3SWUOoXhQviSWQ4huLIRFlirFixnQq/XaKXUgg2xQNGv4V7x/RcW+AXPB3h7H1PaiQAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-zoom-in {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsUBmL8iQAAA2JJREFUWMO9l12IlFUYx3//MzPrLpSjkm5oN4FFIWVEl66IQlFYwtLOzozsjHdGRSCRF0sfBEXRVV0FQuQiLm5CZNBFgRRaRLVFhbJ2EdiN5gbK7toObTPn6eYdPTvNzPvOBz5Xh/ec5/n/n89zXtEHmZqeSXSuXBz/3zfdKvBWJHQrwZuRcP0El+QkbQXeBX6WZEgm6TtJk5lM5o4Lc+cV6qpf4Ga20Tm338zeATItVK9Ker6yvPzp4NDQ3+XieGsCU9MzTYumGbhz7m4ze9/MHgvBgItACrgfGAj2jgAvAYs3wlEujjc13kii8YyZrXXOfWhmo9GnFUlvOOemarVapVqtkslksmb2KjARqL62ecuWN9NxbRInzrldAXhV0uFSIfdew7G/gNLU9MwS8CwSmE3Oz88fcXG5blfpqVRq0Ix8VIAAX0XgrVL7HDCHGcCaWrV60LUBN8Dae58aQIxEqcA592I9M610JL0cpG/U9TIHJNKY3RV5z0R+7Nd4HZ0P1g/2RMBuegLAsRMnb4vT8d5vqKfMzOgtAlADrkmqGywmiMBTwfr3dC9j1Xv/r6Tvg/5/5ejxE6cO7M9faVbQZrYNOFSPmqQvVo9FKexvi5uWX58943aM7DwAfBDY+FbSCxP5sdkGx55GeguzrUEXPaSo2pFkAbiSZQCAzZJOmdkjwd6SpB/M7KykQTPbA2wDhoIzRzcNDx9MJwGNIXdJ0mEzmwbujL7dbma7gd03A7lKfnTOvf74nl0r6bonTUbujRSUCrm2d4L3/kvn3JPe+8+BDW2i9o+kT7z3kxP5sYsA6W47oE64TsR7P9tQL4vA2mh9WdIscKxUyJ0M7aR7acOGzikD65EQLEjaa2ZXzMwDFeB6qZBbbLTRE4EGeSaozNOZgYFf8qP7lmIvs354n0qlHpB0T7B9Ogl4IgJJrmjv/SiQjbrkD+BMUkfSbYATPdckrTOzkciWAXOlQu5cYgLdPEIapud9wMOR9zVJH3ViKx333mtHMJvNuoWFhZ3A+ojMcja77njXBEKwJJfTcqUyCIQ34Mf7nnh0paMnXacFuGoC1mr3AtuDfLzd8Zuyl+rfuGn4HLAD+Az4qZQf+61TAj0Noj8vX6oC35SL43u7teG6rf5+iXppwW7/JUL5D03qaFRvvUe+AAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-zoom-out {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsHgty9VwAAA0FJREFUWMO9l09oXFUUxn/fmXlpItppi22k7UJBRSlVkCytSAuKUloIdjKT0El3FXVXdVFKRVAQV7qQohsNwdA0UFvBhYtqUVyIVlRaogtFQVq7qSTVjA3z3nHzBq/jvPmTN/Ss7rv3nvN99/y794kByMzcfE/7picn/jenmwWeRUI3E7wdCRskuCSTdDfwBvCtJEdySV9KOhpF0e0/LF5SqKtBgbv7ZjObcvfXgShD9Zqk5+orKx8Oj4z8NT05kU1gZm6+bdK0Azezu9z9hLs/HoIBvwAF4H5gKFh7B3gBWFY3460kWve4+3oze9fdx9OpVUmvmNlMHMf1RqNBFEUldz8OHAxUX9q6bduryut+Sfvc/Wz62ZD0fK1afjND9y3gGSRwv1GMojstTxUUCoVhdyopEYDzKXjWwZ4FFnEHWBc3Goet00m7lZlZYQixKw0FZnakGZksHUnHgvCN5/KARBH37enpOVg58H13HV0Kxg/kIuD/ngSA2ZMLt3bTSZJkUzNk7k4+D0AM/CGpaXCyBw/sC8Y/qZd2GpZiuL9YLN4Sx/HpoP5/c/exQ1OVq+1yyt13SLoArEsJnMjlgfOffvK3u58Kprab2QezJxfG2iTzUzI70wRPG9jbmpmb95SNB9mpzp7/j2yVdNbdx4K565K+cvfPJQ27+x5gBzAS7Hlvy+jo4WIvoC3kWpcvS3rR3eeAO9K529x9N7C7zX6AC2b28hN7Hl1Vt44niVq13LUjmtlYkiQfA5s6eO+GpDNJkhw9NFX5ueNt2ARodyF1IHIN2JiOl4H16fiKpK+B2Vq1vBAqFAf4IJkGNiIhWJK0192vunsC1IE/a9XycquNXARa5OnApeeioaHvKuP7r3dTGsiLqFAo7JR0T7B8rhfwXARa2us4UEqr5Ffgs151i/08oTNKdIO770ptObBYq5Yv5ibQq/sl3Qc8lJ4+lnSqH1vFfp9koZRKJVtaWnqkWXqSVkqlDe+vmUDWpZMlK/X6MBDegKf3P/nYaj8ErN9fqZBYEsf3Ag8G8Xit33BaniTcvGX0IvAw8BHwTa1y4Md+CeRqRL9fudwAvpienNi7Vhu21uwflOT+L+i1X2TJP57iUvUFtHWsAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-help {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABltpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMzIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDNDIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMTIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDMjIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6U2VxLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNjoxMToyOCAxMToxMTo4MjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjY8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cphjt2AAAAT7SURBVFgJxRdbaFxFdGb2bhui227BWrsVKYgf2kJUbP9EUPuzEB803WTXJjH61Q/7Ya1+CMYKEVTsh4J/EpvY7BoabUiNiA8s1p+4KIhpoUUEselHqyS76TbZ3HuP58ydc3d2u4+IkQxczpz3mZkzZ86VYpXjvenpjZsLhUcliE4AuUuASAgptmt1EFdwPiclzIIUUwubNn17OJlcXo1p2UpodHRiux9xB1Eug1+slbzhFxGOKc851tu7/0oznYYBDA8Pt0U2tL8KQryIq2tvZqQhD0QJHRz3yqWhgYGBpXpydQMwqz6NCnurleCSADkJEfgKfOePqL80R/wV1ZaQyr1LenKfkPCkEPKeaj0xg7vxVL3duCmA0Vyuw/fl52hgBxsBED+h4Cv9z3R/zbRm8MTJTx7HQN7GQB6w5C4L4SX7M5lfLBpurjXMyvNIShiyi0l1pL8n9b7EDGPR8fHxzSsQ6XDB3618/xqo6Pk25V5MpVJllgHM1BO58RdQ612kOYZ+GXdij70TYQB05mpj+1kU5G2fB+l3PZtOf8NGx6ambnMXb3yAxg8wjSEG6OKKR9oicBQD+ZvpH2Wzj0lQpxCPG9qMv1x6hHNCsSAlHM7ZOa682vlI9tRDbvHGbD3nZAPpDoD/3JIrLpAs26UFkC3EMUA99hpfGtEBfJjNJnS2Gwnadnvl+Xw+iuc3DAJuNyIaSCHpilVldyDjjUxj3WDZIAhxhHHyRcdNuA7AAfUaXzVKODpzFiZ4/uLvh5G+m2no+C/pyIf7MqlEJB7bpqR6nXkEUfbeawuLaZsW2ISfNQ2vtaktQlGFQyIVGT0o2+2EC4iQNGwjBIN9qdQ5Qg4mk4X4rW3vCClLtowE2FOFUxKDfNmiZci3ovKKRFPh4FK9q4Zbdr+lKKJiA13TcHR2dmLBgdmQ0GAS2MZaEowY+XbAk09IvgtYZGp16SyvFhaHcIUh645t8T9DBCcnz5zZ4hZLu3DzK2QlL1QQa0Y+pHiJKPSuOGj3PmZTheM5w2TwqBxnvBZOTk7G5gvXJ5Aelms8wnJURL+olSWcfEhf6gDoUXPMq6ZlqbzWU2pE+3hi4s6F68tfIj9cBMlikr7Z0/P0b/X0yIcUXsDCF1WhtL4OROHaXk+xlkbV0Cu732Nmhc4peaWSg73pA8dq5RkvO37ldUTfXCKZv2q45MkhvG87WQEzpCCUSvV1d9GONBy3lMvgKSwrZig8gjAietWY0QriylO2jIo4yVbOSb7KB/qmI9BPKjHpSSXYauRyn92Nq9/Kcrj13x3s3v8D481glQ/0raiNYgX9njPSBOImbrHZePl+tfFmc9sH+Xaoh8NjOKSVdDMhjjYzQLy+dFceH5+IJQf9VYXX4tROg4ZFU8m31M3mfPEqUoJqCGJfvWpo2xnNfdrhC28n06SCeSzNZxlvBINGRXCtKS7EY1uV6V7HWAm38y1cXaXsMcOCvr9ySPj+af7A1U2HJXHzVNvUXVLIGyPf+jV0pf8GHoN+TLAyPkidTCi2RpPApmnR0Bd1zGRaB/B8Oj2HSw7LLbVR1MmskW8RdEWVXSJf3JbpAMgRtc4IZoxTh9qotQjCasm46M0YX9pV1VmbpvRH5OwwgdRtSg2vKaAz/1dNKVtb17Y8DCL4HVufHxMOYl1/zTgIgiYvBnFKfaNp3YjTdPz3n9Na8//X7/k/O1tdwopcZlcAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-hover {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4oVHp0SwAAAQJJREFUWMPtlsENgzAMRb8RQ5VJItFDOgaZAMaAA0iZpN3KPZSoEEHSQBCViI/G8pfNt/KAFFcPshPdoAGgZkYVVYjQAFCyFLN8tlAbXRwAxp61nc9XCkGERpZCxRDvBl0zoxp7K98GAACxxH29srNNmPsK2l7zHoHHXZDr+/9vwDfB3kgeSB5IHkgeOH0DmesJjSXi6pUvkYt5u9teVy6aWREDM0D0BRvmGRV5N6DsQkMzI64FidtI5t3AOKWaFhuioY8dlYf9TO1PREUh/9HVeAqzIThHgWZ6MuNmC1jiL1mK4pAzlKUojEmNsxcmL0J60tazWjLZFpClPbd9BMJfL95145YajN5RHQAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-crosshair {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADEUlEQVRYR81XXVIaQRCeHqug8CXmBNETaE4gniDwIgpVspxAbxC9ATkBkCpQ8gKeQDiB5AQxNyAvUlrldr7eHxyGXZi1rMJ5opbp7m++7un+htSGF204vsoMoNXrlzSpfWa1oxQfhAegCZGaEtPorHo8znIoJwCt6+td8uk7ApUQCIHTF4BNAWzImq8ap6cP68CsBdDp9i9ZqXM7ML79g/EnCWD+jgMKENKqWT+tXK0CkQqgNRjs0OxpQIqKhoMxaG6/6JeRnK7T6yO2UvVqhYSlLX+ryORfgKn9ORDFIy7ky41yGcwsr0QAQfDH5zucOswx819fs4egI9OFCcD8DjBF7VNbEX0JzdWEt3NHSSASAcCxBDqMgt/623kvyTgNgNjJIfTjk4D4FqaJR1715MjmYAmA5Bx3AwUXQL+t105KaTlcBSC26XRvhjEIoLiq1yqXpr8FAGG16/ug4IT27fxBWu7EiQuAiImJpEMKE6nYM30uAIDDttSUOPfJP7JzbjPhAiBIh9QE67vIvoOi9WJfCwDavf40ulpjbCqmUf+W753ezURuh7Dg1SqflwAEHU6pgfyBq9Y4qx0LG++2fnZ/eUzcstmdM2AWH+jfc+liWdBJfSENf8Lifi3GVwC9mybOfi5dzatWVrbbLIHNva8p5h/16gkaFiLGGxbufkoE6XguwePiXLF3XmMfCUCUAqtKXU7sumd1CowOuJEi3Pg1FBpjitIGhyvVSfvmjci6ZR+rFQfDiPVE2jFYeICQ+PoewwjC5h7CZld6DBdyu6nDSKgzOyIMhmhK5TTqXYbRorZYM46TmpKAAOrGWwSJJekSB1yqJNOzp1Gs7YJ0EDeySDIMtJbQHh6Kf/uFfNFZkolJICRmz0P8DKWZuIG2g1hpok+Mk0Qphs0h9lzMtWRoNvYLuVImUWrmPJDlBKeRBDfATGOpHkhw670QSHWGLLckmF1PTsMlYqMJpyUbiO0weiMMceqLVTcotnMCYAYJJbcuQrVgZFP0NOOJYpr62pf3AmrHfWUG4O7abefGAfwH7EXSMJafOlYAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-lasso-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgwlGP1qdAAABMBJREFUWMO9V1uIVVUY/r61z57ZMx4DnbzgkbQXL5iCJphlWdpIGY4jpFBkEiU9ZNaDRRcITcIwMwgxoQtU2IMXdAZfMjFvpERXYiSbysyBEXFmyuHMnLP32uvrwT2xnY5nxvHQ93Jg7fWv71/r//7L4a59TRgqJk+Z6v3a+sv0OI5nk5wu6VaSVZImAThHsgjgrKTvM5nMUWvtmf5n8HodCIKgOgzDhc65pSTrJQWDsSNpJX1ljHnDOfdT37oZLLHv+8OMMasKhcIJ59xHAJYMlhwAJGUAzJfUTHLFuFzOG5QDU6dNMyQfs9Yedc5tBpAD4IYYNQGoBrDtQnt7/b0LFrJsCHzfn2itfQfAnZLiazytA3AaQAuAiwDaEgeNpGkkswAWSBqRONB38b88z5uTKePt6iiKXkk8jq+iJC5LOmiMaTLGHLPWhmWeHr7vV0dRtATAapAzIVmSo51zyzIlbm2stesFPA6pKk0r6Ryg93y/ek8YFvPOOTg3cDSiKCoC2OP7/rEoirYm4rUkF12lAWNM1lr7lqQn0+QA8gI2jBg5cj6Aj8OwmB+KAKIoukhyp6SRJAUgl0ndPLDWPi9pJQCbuviXvu+/GIZhW1dnJ24UJFuTjCCA2ADA8sYGWmsXS3qmL94kDYAtkh4Nw7ANlQJ5U6INT1KrAYC9zQdykl7nFSj5fXp5Y8NWVBhy7mUAjqShMYdMXV2dJ2klyRwAJ8lIeuGWCRMP7N7frEqSG2OmAFhKshNAp5wrmO7u7jEAngPQm1S2z2pqapr+OPt7XEly0oxwzq2RdFmSD2AMgKKJouhhAL4kA+Cs53l7e3t7uytJHgRBreTWkXwkKVJnJD0B4GAGwIJE9R6AFufc6UqSZ7PZbD6ff5dkA4CQZEHSqwAOISmXtwGIE+F1SeqqIP8d+Xz+C0mLJYWSAODteXffczjdDQNJ0BWMCoLg5gqIbRTJNwHsljQhUb0luWPM2LE7Thw/9m/5NCT/TByxAOYWi8X6/gdWV1dnfN8fNRBxJpMZTXKdc+6IpFVJWAEgkvSJpA0X2tvtVTaSjgOYBCAEEADYSHK87/sfhmEYA9gShuEDkgzJHyWtB/B1irQ2juP7ADxkrX0wOUOpzmdpzEY590HJ7Ni1r2kSyZOSiv2+hSRjSTXp/QAukzySNJOJkmalyNIl10hqMcasdc61XDNcQRD8BnITgNp+36r6kfcNFMMlLQGwTNLMEuQGQBfJl2bdPru+HDkAZAqFQux53jZHEsC6aw0eg2gylNRBcqcx5v04ji999+03AwsWAOI4Lsy9a94WkisAnE5a5WCJYwCfA1g7LJudI2lTHMeXBm1faiQzxkyRtF3S5CTupeAB+KG2tnZFT0/P30NO2VKLzrmfAbwGMipjG5Oc0dPTc0Md05SZ5U4Q2FxChErtEYD7jTGNQ3UgM8Asv90Yc9I5LSKRlXSI5CxJa0jWSALJjKRnAewfkniT+vwf7N7fXHK9rq7O7+jo+BTA/NRrdBpjnnLOnUrvXd7YMPQXSBunneno6IhIHgYwW1JtkgmBpBkATlVMAwOk3nFJ+VSoqgCMr6gIy2FcLtdKspAedyQN/98caDt/3kpyabUmf8WvG/8A1vODTBVE/0MAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-pan {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4lKssI9gAAAOtJREFUWMPVll0KwyAMgNPgoc0JzDX2Mtgp3csKErSamGabIEUo/T6bHz0ezxdsjPJ5kvUDaROem7VJAp3gufkbtwtI+JYEOsHNEugIN0mgM1wtsVoF1MnyKtZHZBW4DVxoMh6jaAW0MTfnBAbALyUwCD6UwEB4VyJN4FXx4aqUAACgFLjzrsRP9AECAP4Cm88QtJeJrGivdeNdPpko+j1H7XzUB+6WYHmo4eDk4wj41XFMEfBZGXpK0F/eB+QhVcXslVo7i6eANjF5NYSojCN7wi05MJNgbfKiMaPZA75TBVKCrWWbnGrb3DPePZ9Bcbe/QecAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-xpan {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4X4hxZdgAAAMpJREFUWMPtlsEKwjAMhr/pwOOedINJe/PobWXCfAIvgo/nA4heOiilZQqN2yE5lpD/I38SWt3uD9aMHSuHAiiAAmwaYCqoM/0KMABtQYDW11wEaHyiEei28bWb8LGOkk5C4iEEgE11YBQWDyHGuAMD0CeS30IQPfACbC3o+Vd2bOIOWMCtoO1mC+ap3CfmoCokFs/SZd6E0ILjnzrhvFbyEJ2FIZzXyB6iZ3AkjITn8WOdSbbAoaD4NSW+tIZdQYBOPyQKoAAKkIsPv0se4A/1UC0AAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-ypan {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4anK0lywAAAMVJREFUWMPtlzEKwzAMRX/S7rlpIMXeOnaLaME36FLo8XqCdNFghGljyc4kgQi2Q/SUj0F/eL7eMMTKz6j9wNlYPGRrFcSoLH4XxQPvdQeYuPOlcLbw2dRTgqvoXEaolWM0aP4LYm0NkHYWzyFSSwlmzjw2sR6OvAXNwgEcwAEcwAEcwAEcoGYk20SiMCHlmVoCzACoojEqjHBmCeJOCOo1lgPA7Q8E8TvdjMmHuzsV3NFD4w+1t+Ai/gTx3qHuOFqdMQB8ASMwJX0IEHOeAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-range {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABCJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4zMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxkYzpzdWJqZWN0PgogICAgICAgICAgICA8cmRmOkJhZy8+CiAgICAgICAgIDwvZGM6c3ViamVjdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTgtMDQtMjhUMTQ6MDQ6NDk8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPlBpeGVsbWF0b3IgMy43PC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrsrWBhAAAD60lEQVRYCcVWv2scRxSemZ097SHbSeWkcYwwclDhzr1Q5T6QE1LghP6BGNIYJGRWNlaZItiFK1mr+JAu4HQu0kjpU8sgF3ITAsaFg0hOvt2Zyfvmdsa7a610Unx44Zgf773vvfneezPHNzrbhn3CT3xC3wPXYOC8LDzqdi8YY/gwh4BeknS/2th6dr2kf94AOp3OFyWgMyziOPbMDxV9FTtJnl1ut795Xd0/YQ0/vtYQwMT1KXWCfr2IjOWwtNehwN4xL9ykTrm6Pzl58yLn3J+mKh9mXbT3uRjGEDph+O8/TjfP5dBp7Ha7AX7O3o5nZeD/0E/OGyXntDgzA0X6qmCnrVutVlrUWV9f/3xo+pwhGDhvEPHOjoxnZjJggXmMHzBQ7NGNp9vxk61fr0HR7e/u7pZzCGHlc7qwBYYTT7tJYSx1AQzppyFPft5apta9w7SKcn0b7P7+/jCsDQ5mbc0dCmIJGDN0ehdcjsmkm6A6KUeKFOTE11PLxrC7Ukqh3ylL2fT0NAP9q6ur6rRCJJYsbKB0JsbCKMuy+xREePDyxQPCz+Crlw062QcA5wBOOt1l6vIl2WiI9F1fN6Q+BBqit6hEC4Hk08GQJMn4myjSP7RavVxgdaVUh/3U6HCMsPr9pYnJKRziHtWQ+un58+hGs6nsjQSjpuTyKGN3CX+FBwHXSiEVgjP+O8X6N12kIePES+GzTKAkGbNp8yJsGUMVzz8jPKReiyAQRimy5/cjye5RpF8utFp/+nwmT7d/NMzcFkS7yjJNGDaPURQxIQThEQy0SyF4l5WJYYhBa816vZ6dU7A6CAhbZVow/pDe0O9hVOoCi13r4BgBAvJHqMSQL2vE/iH6IAXEwgrRVUmBoRRwnwJQT98xEeVeSUyB4dJ5nwJBKdCFFGRmUCcu7rwIYypCTblaChuNBhWODrman5ub+4v0rMNBt8z6Ezh7GksJQpCbm79cMQE7QBFm/X6f0rjWnv8WRYg/QdbUpwDAEBy8vPyA8rNGzg3a8MiElwiM7dAtRqNoNptjGPM1laVxP9umWEMGLOKhKUOJDtBwDmzsw9fC/CzHr9SGuCTi2LbbKvVtmqXpCjMihBFa79Wrt5fGx9PDzc3fmu32Lf8qFliwU9emKhBSp+kRKn/hu9k1COEDbFdt/BoKWOAkuEbdVYyoIXv8+I/QK9dMHEb1Knb7MHOv8LFFOsjzCVHWOD7Ltn+MXCRF4729vWMDK+p8rLkvwjLg4N4v741m5YuwCI9CvHp1Ha8gFdBoPnQAkGsYYGxxcfEI7QQlFCTGUXwjAz4tWF+EpymOWu7fglE7qsOvrYE6g4+9/x/vhRbMdLOCFgAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-polygon-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjc1OfiVKAAAAe1JREFUWMPt1r9rU1EUB/DPK0XbqphFHETo4OCiFhwF0V1KHbRSROLqon+AUMVRRFBwEbRFMBiV+mMW/wIxi5OD1kERRVKRJHUwLvfBTZrU5OWBGXLgQu7Jfe98z/ec7z0vKa88b2q1BDtRHdAPBaylm1NzsxsOjPnPNt6WSWprbft+/c3I3zOAjhT1Y4+fvcjEQJIXnVECSa+AhqIHqlHH5lWCZoe+Gk4GRgDG86j9SAUdlDBSQaZhlOkuHyoVdJmsw98D1S5fM4NYM1LCpqM+Lwa240oLgmZzpVZvzKT75VLZcqksSZKWlQeAy/iORVwIvh31xvotvK7VG3Px4aWHj3Jl4C2uYSvq+Bn8v6LLbaVWb9zsBiKLCvbiNG7gLm7jAYqbPHMJMziZ9lsKoh8GtqCEVVzHftwJn+TFHp4/hg8BSCYVfMOZoPEv2NZGdy9WCGUr9toDR3E2/H4V6nwRe/BmgN65H1ZhvMuB3XiKIyFoGefwO6ysVkUlrNUNsyAK/jli533Q+Y8cJFvAeXyMS1CI/jiMr/gUtD2LQwMGr4R3p7bY3oQHQ5b38CT4D2AXXg6YcQXHpyYnlqKsi5iOAVSwL9zd7zJ09r+Cpwq72omFMazjT9Dnibym0dTkRDUKrrgwH7MwXVyYB38BstaGDfLUTsgAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-redo {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4itK+dVQAAAaFJREFUWMPt1L1rFFEUBfDfJDaBBSslIFjbaSFp1FJQFMVCHkzhKIqdUYOCoBgErVz8rCwiTDMwBCIKipDWyip/gxAIWAmBgBC0eYFh2Gx2l9lFcA5M8e59782Zc84dWrT435Hs1siLchqn43MS0zgW22vYxjesYjVLw3YjBPKinMUTBOwf8J5fKLGYpWFjJAJ5Uc7gIW6jM6Kim3iNZ1katgYmEL/6I+YasvY7Lg6iRpIX5VF8wuEe/XV8wGf8jN6LWTiAc7iEQ7ucPZ+lYW0vAtfwvlbfwCKW9gpXDOv1mJvZHiSO91MiyYsyiQSuxtpXXM7SsDmM5nlRdrCMMz3sOJWl4Xevc/vwBzdwAl+yNNwZxfRI+GxelK9ikHcwh8d4NNR/YFRES1ZwoTYdR7I0rNf3TzVNIGbmSvR/Bx08mIgCFSVu4l2ltIWD9WxNGR+W8KOynqnZ0rwCeVG+wa0hjrxtWoF5dAfc28V8Mib/n+Nev5dnabg/zgw87aNEN/bHOwVRiRe4Wym9zNKwMKkpgIWKEt24njxiJlq0aPFv4i9ZWXMSPPhE/QAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-reset {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4gWqH8eQAABLdJREFUWMPtlktsVGUUx3/nfvfOlLQaY2IiRRMQIRpI0PjamJhoVASDvNpCpYw1vJQYSVwZwIVQF6wwRHmkAUof9ElrI6VqDAXcID4TF0IiYQMkSlTokNCZ+b7jove2t+NMH7rQBWd3v+989/zP+Z8X3Jb/WGQySvUNTQBJESkNguAVYIWqzhaRhwBU9WcR+QXoymazn6jqzUQiMQSQzWZRVdal1vwzAI2tHQBPOuc2AbWTdOyQ53n7nHNfRwee51GzqoIQMCLDpr3x/tLQ0oZzrk5Vj0/BOEBt+KYuOlBVGlrahr0Wob27t3gEjnZ2AyQzmUwHsDgP6J/AYRE553neDwDOuUdU9QngNeCumK4TkRMhZUORcYC1qysLA6iuSQHIwkWLD6lqapQsuSmwTVV3h99I7EcAR462A2xR2Ilq6ehTaejvO1774kuLNALR33eclsaGsQDe3fYegHl43vyNwEeqGl1963mm2jl7YZRTQ82qlWP4HM6ZToC5ztkW4LHQoALru7s6Di5dvlIj/e6ujrEAWoZDn8hmMjXATMACGaAVuBjXTVVXFc/AxhaA+4zvn1DV+eHxVWPMAmvtb5GeMWZyZVhI2rt7qVy2pOh9U1snwIPW2vMi4oWJuBPYHkVAVScPoKmtkzVVK6cEMsyJraHhiCqJqJUwj/JRz7TW1iSSyR2rVyylqa0Ta+24Ic8vXaAEmDFc/l5Z2A/80OibuVyuz/f9ElUdHCmvw82t5HK5h6y1PYhsz2YyGw43t2KtBZHIGwB6+j4rCkBVUdV7gXrggnPuu8h4eP+xMeZS2D0rJYZ6AdAMzAt1b4nI26p6IFZOY8pugijcKSIHVLUK0LyST4vnrVfnWr3mjmP4QTATaERkXkypRFX3isjmuHdRJEK6Ckqquopp06bdKCkp2Sgi7XnGLcg7gzeutwNIiPYc8HixqIrIOlU9ONVIhHPEd851icgSVXUiskVV94gIqoonIt0i8gfQCfwae38e6BWRXuBZz5jZ8VbaOE4EIqlZVUEQBLlkMplS1QER2RwkEnsSyaREDUzyeNsvIhvCMqkH1kdIJ2o+k8iJB1LVVRfjZ6nqqlEAIbdVQGto8Lrv+/dbawcjAL7vc+6bs+zetetfLSHxniIFGofGGsU2oC7eOCbDfZ7nQawBOSAX74SF9oEPImOq+r7nmVmxb5raukZa8UReGmNmhbMkAwwBH467EYVZe49z7kdgenj8k7V2oTHm8kgdWcvrNdVFjR8cHkYzjDH9wLjDaEwEzpwa4MypgWvAjtjxfGNMj4jMiT+M+kFsZI/Q6Pv+HGNMT8w4wI7TAyevxXVPD5z8+zD64tRXAMHVK1eaVLUyVvuDqroV2BOnJF4ZIedviUidqt4Re9s+vbx8zZXLl7PR2+nl5Tz/zNOFp2FzxzGAklw22wUsLLaSKXwf8vhosZUM6PeDYEUum70VHfpBwKsVyyfeikOP6oBNwN1TrLbfgX3A1kKLzKeff8nLLzw38T5wZDgxn1LnNk5lLRfP26/OnR2hwfNYW2Atn9RCsrf+EECyrKysDFimqhXhyjY3VLkAXBKRDqA7nU6nS0tLhyIj6XSaN9bVclv+l/IXAmkwvZc+jNUAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-save {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4UexUIzAAAAIRJREFUWMNjXLhs5X+GAQRMDAMMWJDYjGhyf7CoIQf8x2H+f0KGM9M7BBio5FNcITo408CoA0YdQM1cwEhtB/ylgqMkCJmFLwrOQguj/xTg50hmkeyARAYGhlNUCIXjDAwM0eREwTUGBgbz0Ww46oBRB4w6YNQBow4YdcCIahP+H5EhAAAH2R8hH3Rg0QAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-tap-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3NzIwRUFGMDYyMjE2ODExOTdBNUNBNjVEQTY5OTRDRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCOTJBQzE0RDQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCOTJBQzE0QzQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTQ0QzIwMUM1RjIxNjgxMUE3QkFFMzhGRjc2NTI3MjgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzcyMEVBRjA2MjIxNjgxMTk3QTVDQTY1REE2OTk0Q0UiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6eYZ88AAADLklEQVR42rSXf2TUYRzHv7tuGcfE6Vwb5zLSSjEj7Y9KWqfEmFZJP+yPMdKKmUrrn0iUfjhWlLFi6YfNrF+StBoTo39iYkTGco4xxxG59P7k/T2PT8/37nu3bx9ezvPj+zyf5/PreS78bGLS8SmrwE6yje3NHJsDBTALpknBz6JhH3NiYAB0gHqPOVv52wJ6QQ48BzdAttTioRJjdeA8mAHHS2xuk3p+M8M16ipVQE49Ds6CiFO9RLjGONf05QLx6wPQaBlbBlPgJVgkP0ETiIJ2sB/E1XfimjfgBOOlKDUqCGOcqBcQnw6BYW5YTo4wbvQhMmCfGRemC2rBiGXzWUb+kM/NRZ6CHWBM9ce5R61NgX6ayhSJ5EPlItlDRNkz4JbFHf06BkSzHjXxM+gDv1S/mPUo2AXWgt9UUHL/IVhS8yUV1/EbV3o4N+NaoE9Fu/i827K5pNYHnqAVJECShWmAaddpscYFFXwR7vnXBRGlnUN/L6kqKJlxnRUuDbaDBiL+vst5d4gpcpBrqk/2jIgCKVUolhntplzivHmwh4stGOPfwBWwl/2dpp8p7xjQZqFLiQJtauKkivYm+kzccpK57yXfOUe+P23JqAnVbhMFmlXntCWnxbT31am9ZJ4BJifsUmNTqt0cYhA5ypympPg7VkEKunPbVb8cIG+0kyHLJZNR7fUMooUKFHAPkfQo58VLK+RzwRDd4FdWG9mjpaAXzqkJa1R7kQttqEABWXMjOOxxVRfnhRm5URX1prk/0pQHwNcKlchZ+jdpC+hFdVqO0my9Hj5dkYgCn1Rfh/KdlNDHrJhPqlDih+IfBd6qwpOgEqYMsorJ2HtWxtagLJDn/W3KRfPOZhoeBJfZPgVeGKeKrkQBh5dLXl25Ny3pc4/1fkTdbvFqFQgbxWeYD0hXulhQ0pYiM1jG547fcbMQpVnHTZEn9W3ljsCzwHxCdVteNHIZvQa7/7cC7nV6zHIfyFP9EXjFa7YxKAVqPP4bxhhoLWW+z9JyCb6M/MREg59/RlmmXbmneIybB+YC/ay+yrffqEddDzwGvKxxDmzhc0tc80XVgblqFfgjwAAPubcGjAOl1wAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-undo {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4em8Dh0gAAAatJREFUWMPt1rFrFFEQBvDfGhACASshkL/ALpWVrSAKEQV5sIULWlgZNSgIFkGIVQ412gkBt1lYLERREFJqJRaW1oHAoZUQsDqwecWy7N3tbe6C4H2wxc682Zn3zTfvLXPM8b8j6RqYF+UCzsfnHBawGt3fMcAX7GEvS8NgKgXkRbmMxwg41TLsN0psZmnodyogL8pFPMIdLHUk7hA7eJKl4U/rAuKu3+HslFr/FZezNPSTFslX8QErDe4DvMVH/Iq9F7VwGpdwZUjsPtaSFjv/1vCBPjaxO0xcNbHejLpZrrlvJCMCT+JzA+2fcC1Lw+GE4l3CG1yIptfjCtiKoqtiJ0vD3aM0Py/K57iIMxgkQxat4EdN7e9xdRzlk+LEEPvDWvIDXJ928sYxjL36icWK+VaWhlezOIqbGFirJd/H7szugrwoX+D2BDEvszSsT5OBdfRaru/F9dPXQF6U27g/KnmWhgctxqyzBrZGMNGL/rHI0nDkKXiKexXTsywNGx0OnFbFNk3BRoWJXnw//j+ivCi32/S8CxPVNiWOAdUiJtXITIqYY45/Cn8B2D97FYW2H+IAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-wheel-pan {\\n background-image: url(\"data:image/png;base64,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\");\\n}\\n.bk-root .bk-tool-icon-wheel-zoom {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgskILvMJQAABTtJREFUWMPdl1+MXVUVxn/fPvf2zrSFmUKnoBCUdjRoVaIxEpO2JhilMYBCtBQS2hejpg1Uo2NUrIFAoyGmtiE+GHwQGtvQJhqDmKYRBv+URFsFDNCSptH60DJTO3dKnX/33rM/H7rvsDu9M20fDMaVnGTvtb69z7fWXmvtc/TEzqd4OyXwNsv/FwFJQVI/sA14SZKRLOlPkr5TrVYXHz70quYkEEK4TtI2YAgYkrQthHDdhV5uuw+43/ZrwCbgRttgY/tjtrc0m83X3/f+D6ydnJhYcB4BSZcBA7aP2d4ELAGW2N5k+xgwkDB0IH19CGGH7R8B1aQeAf4KvAw0ku4K2zu7uru3ApdPEyiKohd4TNKjtjt5h6RHgccSNrddbvuHtm9Jqoak7xVF8WFgdavV+pSk5cCObNmXgK++85prCj3z28HKqZMnH7D9YAY4BvwujT8BvCuL1INX9vVt+dfwcCvNb7f9q2RuSfrGvWu/sL2Nf3LX7pzvj4ENSGBPVarVd4fRkZFltjdmoMGiKO4IIWwIIWwoiuIOYDDzeOPoyMiyFLkum7WJCMDztrcrTTrIRuAQZ6NcK1utL4dWq/VZoC8BhqvV6l1lWb4YYxyLMY6VZflitVq9CxhOmL60hhCKeYiV7WMKIXw9jT1HpXw3c+bOAKzOjJubzebJrKQCQLPZPClpc7bP6rMYKtjXth2OMf7tIkr11Wz8oQDc1Fb09vY+kQw1YAuwJY2nbUluAnCWpKkaFl6IQIzxivaR2SYA89sJVK/Xp2x32R6w/a30DNjuqtfrU0ArYecDCEqgLqm94T0dEm9mBG7PxkdDlkBnkhebgIezNQ8nHcCZPL9ijE1Jf/bZZoPtzbavmqNZLbf9tSxq+yoduuJ+SZ+zXSZyBXCqU+d8fvC5yRUrV+0G2j3g2hDCLyXd/+Su3QdnvP/zCuH72LWsgf2k0oHlH2c2odlkxcpVEdgr6aDtjyb8x20/J+mA7T9I6rL9SWA5dne2/GdXLl58qNJh398An85yTMA+4DOz8Dgu6Zu2dwJXJ91ltm8Gbp7Fgb+EEB4aHhpq5CEtACqVyr3AC0AlPS8k3TSmQ2YPhhBuS/1/LpmS9JTtNTHGfwBU2uUALARotVqniqJYH2Pck85pfavVaufAwnQvnHc0McaDKVptebN94QAnJB0EdtjekydyZXqjs/0ZgLIs/w6sy8bnYGYJ63pgERKC05JutT1kOwITwL9tvzlzUQUYB+Zjs2DBgu6xsbGJZHstByZbezregcBXeCsEz1bnzXt5anLyzLq71zDLxTRdVgemdx0fv2e2w5thO5DbiqL4oKT3ZKpnpyYnz+SY2ZpTAPZmJfdIrVZbNBNUq9UW2X4kU+2dcf53Aj1pj2PA7y/6m1DS00A9za9uNBq7iqJYBuoGdRdFsazRaOzKSqye1rTbaa/tlbYrqXQP2X4FIA9/J1l39xrC0v7+w5IeB8XkwS1lWe6TGJAYKMty31tfO4qSHl/a3384I3CDpI+kzC4lnRfrue6GytEjR8oQwlY73gC0L4qlth/q0M1/LYWtR48cKQF6enrC6dOnVwGLEpnxnp7en4+O1i/tszzGOCTpPmB7ahb57QUwBWyXdF+McWg6MScmuoA8OX8xOlpvXGz422XYTsB/SnpA0h7bX5R0WzI9HUL4qe2XbI+dk3xl+V7gxoztD5jRI+YK/zkEEokx2/uB/RdzIfUtueqVN04cXwF8G3iHY3z9Urw/j8ClyhsnjrcS2Vv/J/8NLxT+/zqBTkcxU/cfEkyEAu3kmjAAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-box-edit {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4QfHjM1QAAAGRJREFUWMNjXLhsJcNAAiaGAQYsDAwM/+lsJ+OgCwGsLqMB+D8o08CoA0YdMOqAUQewDFQdMBoFIyoN/B/U7YFRB7DQIc7xyo9GwbBMA4xDqhxgISH1klXbDYk0QOseEeOgDgEAIS0JQleje6IAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-freehand-draw {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADTElEQVRYCeWWTWwMYRjH/88721X1lZJIGxJxcEE4OOiBgzjXWh8TJKR76kWacOBGxdEJIdk4VChZI/phidRBHMRRIr7DSUiaSCRFRM3u88gz+o7Z6bBTdjmYZPf9eJ55fv/5zzvvDPC/H9QsA66Olo9Ga+/MdR+Ljm2/KQIULsz9FqItGdOfJKLhApLgVkiSCGODjWit7QpKWy+TNrFeXvzKVUT8NiTVaIgDcbiCFJ7GiT8WkARXAdYBK0Lbhi/CenArRNskuM7/tgNp4ArQ42dwjf3WY5gWTqC7O/NbNn2Xkfw/YwdSw/We14HP2IEZwX+y9cZ9SH0LmgFP7UCz4KkENBNeV0Cz4b8U8DfgKiDxMWwUXETqLvJpCQpXZfawbzS7t9v5pL19cHBwfja7YA0y/lyCM0+E5hv5+piZXwKYcF23as+37bTXsQVqgkL0p/34fHR7DcBtbetFsBmGDwMOJCggYG55yw7dMlk6DuC1Bdu2RsCU9TYWQq2IoGbsreZ5NzvEqfSBsIsIy8OTbcdgiRHeh4o8AFAEwDakbY2AaCCpH7V9aGhoUUUy3UyVbkPYFuYLDlUZH8XBpwxkK0Dbgxg5HcVi0ent7a0RULMIozaHBSMfF9b2SzdutFcFB2FkwMIJOG6qfteXOa1nHZ48tyefuwyfT9s6wtzZ3t7eZse2DR2I228TtHXzuWCx9g8MtK5cuHCZTH4tiHEOa4xFngvTyS8f35d6enomiCi4/foEXBkZaQuukChL4FYA2Whd7YcC4gEdW3CpdL3LtGAVCVYJywEyTpAuJKeMOKXZs/Bw947C50KhUFOG4cwz35cjWNBlHGeD53n3xsfHP/T19U1qciggar8Fa4I3PHobIotBWBtc2hSiChyZxVzM53Pv7FVH6Tp3uVy+g0r1ImD2GjIrQGYIxjnfuXTZGICS5k/bBwJoubwEFX4TLah9EXomJGMA3za+f9913Yl4TnzsDQ+vE6YTZOjHh4ngibstt1pzQwd04F0bPStEBpXqRoBeQ/AKghfBnOEKgS+Q7z91Xfdz/HGKg8Ox7z8iYD9z6wqTkZFgnvhMGP9VZ2or1XVkPM9z0mytSfVsHa1RLBZbLoyNzUnK+ydz3wC6I9x+lwbngwAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-poly-draw {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjglo9eZgwAAAc5JREFUWMPt1zFrU1EUB/DfS4OmVTGDIChCP4BgnQXRxVHqIJUupp9AB8VBQcRBQUXIB9DWQoMRiXZzcnQSA34A7aAuHSJKkgo2LvfBrU3aJnlYkBy4vHcP557zP/9z3r33JdXa647N0kHSZd5Nn0rSxc8G3cXp85sMcnZZ8vge3osZ+l3vB8CWFA0iL14t79h210swAjACMAIwAjACkB90D/8/GchI9ve4nPwTBh5E9ws7OepzGWb9EddSn51Op9ZstadSg4VK1UKlKkmSDSMLALewiuNh/hVJq71Wxttmqz0dG88vPc+MgWP4grvYG3SLOBrZFFFrttqPe4HIDxh4GSei+98iSlusuYopXEAjBtEPA3tQwUpwluAbDm4TPJUz+BTW9l2Ce6G7L0X/Bw8D3T/7SKKIDzHg7QCcxjvcQAEtXAnrrg/RP0/DKPbqgcN4iVOR7gcO4dcQgRuoh7HSqwlP4n20m63jJu5n8MkWMYfP3UowhzdR8FU8w9iQwevBdyq3/27CMRzAE5yLuvsRLg+ZcR1nJ8YL81HWJUzGAPaFZwe/Q5MdyYDyNHgjzO90YyGHtVDncuiJchaHw8R4oREFV5qdiVmYLM3OgD9k5209/atmIAAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-point-draw {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEiERGWPELgAAA4RJREFUWMO1lr1uG1cQhb9ztdRSP7AF1QxgwKlcuZSqRC9gWUUUINWqTh5AnaFOnVPEteQmRuhCURqWsSqqc9IolREXdEvQBElxtdw7KURSFEVKu4w8wAKLxdw9Z+bMnRmZGXfZ29//II8th4WwGVNyIoQLYB5vxA9Caq04iUd9A+7ZlsNC2I7TdSd2hZXMJKlnTqp9jtl/GBaqoyQ0noFKpUIzBicYYc+DEFpxkglc4oVJa5gvDn8v1xV2irG3FM4NSVwjUKlUaMcpJhCGmSEJQ6QGD8M5WnHCd8+f3QCXpPLx8WNwv0j6Bm9FMK7FJ3WBE+R/2t7c/GBmFvSBrzRTCsyTDjXrxUgEMtpxynJYmJoBJ4VAybwVARgvL7Oik0okCodnKpVKX7P0leiVMb0VvbJT+upznK4vh0GIeQwwQStJkHQD3MwsCALTJRG7Qrdrj5m/djgYaIa0hlkRdJk26XEgC9txurccBtVW3IudBImmZuACUP+ZlIDBt9FKcubYNTcAH/X0RYM1E7utJPlqe+uZzPxUcEkiSS4sTT95n15Mud0xWC0o2PAWOCdK3KYZlFxfM+tHOcnMzNr1es18ug+cgsVjP4yBU/Ppfrter1m/+l0+zYygML1xRVHU7TSb1cSzBzoBzszsH+AMdJJ49jrNZjWKou6wBnwOzcyndBpNbuueURR1Dw8Pq35p9cc5p/Dy9Dypt7jXrtdGwQECS9NPhr6Gq6txUzNigE6zydLK6lTw12/KT4FGFEUfJX2YJNONq5tVs4ODA7sD/DnwJ/BoADZuE3tHFs12dna6d4C/BI6AlbyzI8ii2TTw12/KK33gb2cdXsNZoAntbZC2SeO4c9592k/5eNQbiwvFd1kJuFGwLJr1wSPg/SwpvyFBHufOeXcFeAlE97U/uCxOY+P3b+Bn4B3Q+L8EdJfD4a+/AbC4UBzPxiPg3wlHZquB28Cn2IuR9x3gr3uV4DbwfvSDOvi4uFA8BDZmIRHkjHpS9Ht9iRqd8+5G3g05mAGcQbsdiX5QJ428G7Kygo8XYdb1/K4NWVmjzkNge2sz84bs+ELmpDDLtqWsNZBXgvmw8CTtpWVMT7x5YWBjLARnwZfKQNYN2U2LPvrh+5nBt7c2M2/It9bArCTKR8eZN+SJ13AScPnoODeRdqNenH+wul5w2gUr2WUjMFAt8bZ/0axX/wNnv4H8vTFb1QAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-poly-edit {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gELFi46qJmxxAAABV9JREFUWMOdl19vFFUYxn9n9u9sCyylUIzWUoMQBAWCMdEEIt6xIRQSLIEKtvHe6AcA4yeQb7CAUNJy0daLeomJN8SEULAC2kBBapBKoLvbmdl/c14vdmY7u91tF95kknPOnHmf95znPc97Ro2OTeBbdjFDT3c32ZxVHUOE9kSMB0/m6ExuoJn1H+ur6Y+OTfD50SMN5168OgrAlyf7CfuD+z7+iDs3p8hkLUQ0iFQ/yFl5Nm/qonfHVva+s32Zw9GxCYILsZ08tpNfBhbs+1YN4OH9+7huGdECSBVfqUosbsllfmauBqiR+cCNwOr7AEo8pPHJnymXykhg5fUWjoQpl0vVvhZhbSzGoUOHqgBlt6B6uruj2Zy1E9jo0fhfeyL2x4Mnc8VErK0KUEOB64JSyptfG4RSytsJjUJVxw2lsFy3urL9nx1Qd25ObctkrVMi+jQivd7U2ZyV/3Hzpq7h3h1b/7p9Y0o8v8rwAbTWrGpSocN/FGDlbAI0Rl23PCBan0Ok158H9Ipwzi25A/Mzc9Gl/BYx/E4kYqC1NKRARNAaDCNUM27Z+Zr+ouXs0q4+LSLBHPYCFkTkC6uU39kwCdsS7WRKmaYUiAhdnZ3MPX2K4+QjQI+C94A93rMzm8ltMwyDeDzWjMZeEb2pYQDdW3vITU2jtUZ5QThOPgm8C7wP7J15OPsBsB3oWpGnVWisCeDS1VHj4vBI92+/3tgB7Ab2AruAXiDBK5oIOkhtkEYRNRuJhObrd8Dl9ewf4D5wG7hVLpen29vb5wzD+BrkbBMaL3d1dk5nsrnlFDTTFWAWmAZueWD3gCemGde2k2fw1Al1YXhEvjozoO49eczdqekrWmsc2zlrmvEKOGoW1GUjFLqSk2KpJrCLwyMCPAP+BO54QL8DM6YZX/ClsP9YnwKkXnIBP4jdIpJRpdJTCYdMwwi98KU0Hjc/dDILNyUcwTCWdOSMJ0TRmBktGRhLugu0xyLk7CIqVNm+0bGJptl1YXikD0grpY4Rjc4a8Fbgdab/6OGbAJeCUuyJnnHmZH9pbSyGuBXV8NUwlUpR1EWyixmSyTWEwqGlJ2Swbo2JXbAAfgDGgGQA9I1A9t1tlq0AxrXxn0ilUpw4fhQqYkH/sT41OTnJJwf2s6FjI5mshdYa7bqVR2uezr9MJmJt14FvGrh/O9D+e6UkM/xyCuCqEKCYnJyUTKFQrZDHjxzGshwWLQcRsOz8Hi85P23id0ug/XilAMLBmm4tPGdoaKjSH5+oAGrhwvBI9SjZTn4QSK9yenoD7dlrExPoJlXW8G8ytpNHxRKk02lGxsdRKFwXLNvx5yY94HQLGhGk4LFCYQSqaE0AwWM1eOoEbR0dKBSW7bC4mKuffxs4D/wCLKwQQPAUzIkslfp6cVomROWSolh0GjldAM4nzDi2k9/i5UAzC9aKfwNJ3zgJg9YEvN6+C7SHgKm69+sD7RfNnKTTaZRPQfAut4oFV//IS7gkcB34VlVo8kGzphlfB+DU+TfNGBpZtRastvrvARJmfMF28ge9sc2B9/PNnCilMIDwK6y8/ow/Ai4kvILTljAXvDvEvrqKSUs60KolzPjBxspavQD2tKqCAGF/Ba+xE/Wbilu54wZV8NEKF5fXzQHl/bh4hUsE0WAXSlDMYcQSrQXgCmsTseXHsJkNnjqBFGwKJaHsKlxtUHYVhbLCzr1kaOA4bcn1y1Swmb+iLpJKpVrfgdpfsiVVCYcgluwgnU7jEgJ4s5UkLFtWYyHyEg0/N1q1tmQH+YXnAMFr97Nmv3p+0QsHQRsF8qpBOE5+rb9Nkaj50tVQKjqh4OU3GNL/1/So3vuUgbAAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-line-edit {\\n background-image: url(\"data:image/png;base64,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\");\\n}\\n'},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),s=t(72),o=t(303),l=n.__importStar(t(282));class h{constructor(t,e={}){this.items=t,this.options=e,this.el=s.div(),this._open=!1,this._item_click=t=>{var e;null===(e=this.items[t])||void 0===e||e.handler(),this.hide()},this._on_mousedown=t=>{var e,i;const{target:n}=t;n instanceof Node&&this.el.contains(n)||(null===(i=(e=this.options).prevent_hide)||void 0===i?void 0:i.call(e,t))||this.hide()},this._on_keydown=t=>{t.keyCode==s.Keys.Esc&&this.hide()},this._on_blur=()=>{this.hide()},s.undisplay(this.el)}get is_open(){return this._open}get can_open(){return 0!=this.items.length}remove(){s.remove(this.el),this._unlisten()}_listen(){document.addEventListener(\"mousedown\",this._on_mousedown),document.addEventListener(\"keydown\",this._on_keydown),window.addEventListener(\"blur\",this._on_blur)}_unlisten(){document.removeEventListener(\"mousedown\",this._on_mousedown),document.removeEventListener(\"keydown\",this._on_keydown),window.removeEventListener(\"blur\",this._on_blur)}_position(t){const e=this.el.parentElement;if(null!=e){const i=e.getBoundingClientRect();this.el.style.left=null!=t.left?t.left-i.left+\"px\":\"\",this.el.style.top=null!=t.top?t.top-i.top+\"px\":\"\",this.el.style.right=null!=t.right?i.right-t.right+\"px\":\"\",this.el.style.bottom=null!=t.bottom?i.bottom-t.bottom+\"px\":\"\"}}render(){var t,e;s.empty(this.el,!0);const i=null!==(t=this.options.orientation)&&void 0!==t?t:\"vertical\";s.classes(this.el).add(\"bk-context-menu\",\"bk-\"+i);for(const[t,i]of o.enumerate(this.items)){let n;if(null==t)n=s.div({class:l.bk_divider});else{if(null!=t.if&&!t.if())continue;{const i=null!=t.icon?s.div({class:[\"bk-menu-icon\",t.icon]}):null;n=s.div({class:(null===(e=t.active)||void 0===e?void 0:e.call(t))?\"bk-active\":null,title:t.tooltip},i,t.label)}}n.addEventListener(\"click\",()=>this._item_click(i)),this.el.appendChild(n)}}show(t){if(0!=this.items.length&&!this._open){if(this.render(),0==this.el.children.length)return;this._position(null!=t?t:{left:0,top:0}),s.display(this.el),this._listen(),this._open=!0}}hide(){this._open&&(this._open=!1,this._unlisten(),s.undisplay(this.el))}toggle(t){this._open?this.hide():this.show(t)}}i.ContextMenu=h,h.__name__=\"ContextMenu\"},\n", + " function _(e,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});const t=e(9);function*r(e,n){const o=e.length;if(n>o)return;const r=t.range(n);for(yield r.map(n=>e[n]);;){let f;for(const e of t.reversed(t.range(n)))if(r[e]!=e+o-n){f=e;break}if(null==f)return;r[f]+=1;for(const e of t.range(f+1,n))r[e]=r[e-1]+1;yield r.map(n=>e[n])}}o.enumerate=function*(e){let n=0;for(const o of e)yield[o,n++]},o.combinations=r,o.subsets=function*(e){for(const n of t.range(e.length+1))yield*r(e,n)}},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(296),i=e(173),s=e(72);class c extends o.ButtonToolButtonView{render(){super.render(),s.classes(this.el).toggle(i.bk_active,this.model.active)}_clicked(){const{active:e}=this.model;this.model.active=!e}}n.OnOffButtonView=c,c.__name__=\"OnOffButtonView\"},\n", + " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(1),s=t(19),l=t(72),n=t(115),a=i.__importStar(t(18)),r=t(78),_=t(9),c=t(13),h=t(8),u=t(81),v=t(306),d=t(307),b=t(308),p=t(295),g=t(299),f=t(310),m=t(173),w=i.__importDefault(t(300)),y=i.__importDefault(t(311));class T extends u.Model{constructor(t){super(t)}static init_ToolbarViewModel(){this.define({_visible:[a.Any,null],autohide:[a.Boolean,!1]})}get visible(){return!this.autohide||null!=this._visible&&this._visible}}e.ToolbarViewModel=T,T.__name__=\"ToolbarViewModel\",T.init_ToolbarViewModel();class k extends r.DOMView{initialize(){super.initialize(),this._tool_button_views=new Map,this._toolbar_view_model=new T({autohide:this.model.autohide})}async lazy_initialize(){await this._build_tool_button_views()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tools.change,async()=>{await this._build_tool_button_views(),this.render()}),this.connect(this.model.properties.autohide.change,()=>{this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change()}),this.connect(this._toolbar_view_model.properties._visible.change,()=>this._on_visible_change())}styles(){return[...super.styles(),w.default,y.default]}remove(){n.remove_views(this._tool_button_views),super.remove()}async _build_tool_button_views(){const t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;await n.build_views(this._tool_button_views,t,{parent:this},t=>t.button_view)}set_visibility(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)}_on_visible_change(){const t=this._toolbar_view_model.visible,o=g.bk_toolbar_hidden;this.el.classList.contains(o)&&t?this.el.classList.remove(o):t||this.el.classList.add(o)}render(){if(l.empty(this.el),this.el.classList.add(g.bk_toolbar),this.el.classList.add(m.bk_side(this.model.toolbar_location)),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change(),null!=this.model.logo){const t=\"grey\"===this.model.logo?f.bk_grey:null,o=l.a({href:\"https://bokeh.org/\",target:\"_blank\",class:[f.bk_logo,f.bk_logo_small,t]});this.el.appendChild(o)}for(const[,t]of this._tool_button_views)t.render();const t=[],o=t=>this._tool_button_views.get(t).el,{gestures:e}=this.model;for(const i of c.values(e))t.push(i.tools.map(o));t.push(this.model.actions.map(o)),t.push(this.model.inspectors.filter(t=>t.toggleable).map(o));for(const o of t)if(0!==o.length){const t=l.div({class:g.bk_button_bar},o);this.el.appendChild(t)}}update_layout(){}update_position(){}after_layout(){this._has_finished=!0}}function M(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}e.ToolbarBaseView=k,k.__name__=\"ToolbarBaseView\";class B extends u.Model{constructor(t){super(t)}static init_ToolbarBase(){this.prototype.default_view=k,this.define({tools:[a.Array,[]],logo:[a.Logo,\"normal\"],autohide:[a.Boolean,!1]}),this.internal({gestures:[a.Any,M],actions:[a.Array,[]],inspectors:[a.Array,[]],help:[a.Array,[]],toolbar_location:[a.Location,\"right\"]})}initialize(){super.initialize(),this._init_tools()}_init_tools(){const t=function(t,o){if(t.length!=o.length)return!0;const e=new Set(o.map(t=>t.id));return _.some(t,t=>!e.has(t.id))},o=this.tools.filter(t=>t instanceof p.InspectTool);t(this.inspectors,o)&&(this.inspectors=o);const e=this.tools.filter(t=>t instanceof b.HelpTool);t(this.help,e)&&(this.help=e);const i=this.tools.filter(t=>t instanceof d.ActionTool);t(this.actions,i)&&(this.actions=i);const l=(t,o)=>{t in this.gestures||s.logger.warn(`Toolbar: unknown event type '${t}' for tool: ${o}`)},n={pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}};for(const t of this.tools)if(t instanceof v.GestureTool&&t.event_type)if(h.isString(t.event_type))n[t.event_type].tools.push(t),l(t.event_type,t);else{n.multi.tools.push(t);for(const o of t.event_type)l(o,t)}for(const o of Object.keys(n)){const e=this.gestures[o];t(e.tools,n[o].tools)&&(e.tools=n[o].tools),e.active&&_.every(e.tools,t=>t.id!=e.active.id)&&(e.active=null)}}get horizontal(){return\"above\"===this.toolbar_location||\"below\"===this.toolbar_location}get vertical(){return\"left\"===this.toolbar_location||\"right\"===this.toolbar_location}_active_change(t){const{event_type:o}=t;if(null==o)return;const e=h.isString(o)?[o]:o;for(const o of e)if(t.active){const e=this.gestures[o].active;null!=e&&t!=e&&(s.logger.debug(`Toolbar: deactivating tool: ${e} for event type '${o}'`),e.active=!1),this.gestures[o].active=t,s.logger.debug(`Toolbar: activating tool: ${t} for event type '${o}'`)}else this.gestures[o].active=null}}e.ToolbarBase=B,B.__name__=\"ToolbarBase\",B.init_ToolbarBase()},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(296),n=e(304);class u extends s.ButtonToolView{}t.GestureToolView=u,u.__name__=\"GestureToolView\";class _ extends s.ButtonTool{constructor(e){super(e),this.button_view=n.OnOffButtonView}}t.GestureTool=_,_.__name__=\"GestureTool\"},\n", + " function _(o,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=o(296),i=o(15);class s extends e.ButtonToolButtonView{_clicked(){this.model.do.emit(void 0)}}n.ActionToolButtonView=s,s.__name__=\"ActionToolButtonView\";class c extends e.ButtonToolView{connect_signals(){super.connect_signals(),this.connect(this.model.do,o=>this.doit(o))}}n.ActionToolView=c,c.__name__=\"ActionToolView\";class l extends e.ButtonTool{constructor(o){super(o),this.button_view=s,this.do=new i.Signal(this,\"do\")}}n.ActionTool=l,l.__name__=\"ActionTool\"},\n", + " function _(o,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=o(1),l=o(307),s=i.__importStar(o(18)),n=o(309);class _ extends l.ActionToolView{doit(){window.open(this.model.redirect)}}t.HelpToolView=_,_.__name__=\"HelpToolView\";class r extends l.ActionTool{constructor(o){super(o),this.tool_name=\"Help\",this.icon=n.bk_tool_icon_help}static init_HelpTool(){this.prototype.default_view=_,this.define({help_tooltip:[s.String,\"Click the question mark to learn more about Bokeh plot tools.\"],redirect:[s.String,\"https://docs.bokeh.org/en/latest/docs/user_guide/tools.html\"]}),this.register_alias(\"help\",()=>new r)}get tooltip(){return this.help_tooltip}}t.HelpTool=r,r.__name__=\"HelpTool\",r.init_HelpTool()},\n", + " function _(o,_,l){Object.defineProperty(l,\"__esModule\",{value:!0}),l.bk_tool_icon_box_select=\"bk-tool-icon-box-select\",l.bk_tool_icon_box_zoom=\"bk-tool-icon-box-zoom\",l.bk_tool_icon_zoom_in=\"bk-tool-icon-zoom-in\",l.bk_tool_icon_zoom_out=\"bk-tool-icon-zoom-out\",l.bk_tool_icon_help=\"bk-tool-icon-help\",l.bk_tool_icon_hover=\"bk-tool-icon-hover\",l.bk_tool_icon_crosshair=\"bk-tool-icon-crosshair\",l.bk_tool_icon_lasso_select=\"bk-tool-icon-lasso-select\",l.bk_tool_icon_pan=\"bk-tool-icon-pan\",l.bk_tool_icon_xpan=\"bk-tool-icon-xpan\",l.bk_tool_icon_ypan=\"bk-tool-icon-ypan\",l.bk_tool_icon_range=\"bk-tool-icon-range\",l.bk_tool_icon_polygon_select=\"bk-tool-icon-polygon-select\",l.bk_tool_icon_redo=\"bk-tool-icon-redo\",l.bk_tool_icon_reset=\"bk-tool-icon-reset\",l.bk_tool_icon_save=\"bk-tool-icon-save\",l.bk_tool_icon_tap_select=\"bk-tool-icon-tap-select\",l.bk_tool_icon_undo=\"bk-tool-icon-undo\",l.bk_tool_icon_wheel_pan=\"bk-tool-icon-wheel-pan\",l.bk_tool_icon_wheel_zoom=\"bk-tool-icon-wheel-zoom\",l.bk_tool_icon_box_edit=\"bk-tool-icon-box-edit\",l.bk_tool_icon_freehand_draw=\"bk-tool-icon-freehand-draw\",l.bk_tool_icon_poly_draw=\"bk-tool-icon-poly-draw\",l.bk_tool_icon_point_draw=\"bk-tool-icon-point-draw\",l.bk_tool_icon_poly_edit=\"bk-tool-icon-poly-edit\",l.bk_tool_icon_line_edit=\"bk-tool-icon-line-edit\"},\n", + " function _(o,l,b){Object.defineProperty(b,\"__esModule\",{value:!0}),b.bk_logo=\"bk-logo\",b.bk_logo_notebook=\"bk-logo-notebook\",b.bk_logo_small=\"bk-logo-small\",b.bk_grey=\"bk-grey\"},\n", + " function _(l,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});o.default=\"\\n.bk-root .bk-logo {\\n margin: 5px;\\n position: relative;\\n display: block;\\n background-repeat: no-repeat;\\n}\\n.bk-root .bk-logo.bk-grey {\\n filter: url(\\\"data:image/svg+xml;utf8,#grayscale\\\");\\n /* Firefox 10+, Firefox on Android */\\n filter: gray;\\n /* IE6-9 */\\n -webkit-filter: grayscale(100%);\\n /* Chrome 19+, Safari 6+, Safari 6+ iOS */\\n}\\n.bk-root .bk-logo-small {\\n width: 20px;\\n height: 20px;\\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==);\\n}\\n.bk-root .bk-logo-notebook {\\n display: inline-block;\\n vertical-align: middle;\\n margin-right: 5px;\\n}\\n\"},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});var s=this&&this.__rest||function(t,e){var i={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(i[s]=t[s]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var n=0;for(s=Object.getOwnPropertySymbols(t);nt)}}request_layout(){this._needs_layout=!0,this.request_paint()}reset(){\"standard\"==this.model.reset_policy&&(this.clear_state(),this.reset_range(),this.reset_selection()),this.model.trigger_event(new c.Reset)}remove(){this.ui_event_bus.destroy(),p.remove_views(this.renderer_views),p.remove_views(this.tool_views),this.canvas_view.remove(),super.remove()}render(){super.render(),this.el.appendChild(this.canvas_view.el),this.canvas_view.render()}initialize(){this.pause(),super.initialize(),this.state_changed=new u.Signal0(this,\"state_changed\"),this.lod_started=!1,this.visuals=new b.Visuals(this.model),this._initial_state_info={selection:new Map,dimensions:{width:0,height:0}},this.visibility_callbacks=[],this.state={history:[],index:-1};const{hidpi:t,output_backend:e}=this.model;this.canvas=new a.Canvas({hidpi:t,output_backend:e}),this.frame=new n.CartesianFrame(this.model.x_scale,this.model.y_scale,this.model.x_range,this.model.y_range,this.model.extra_x_ranges,this.model.extra_y_ranges),this.throttled_paint=m.throttle(()=>this.repaint(),1e3/60);const{title_location:i,title:s}=this.model;null!=i&&null!=s&&(this._title=s instanceof h.Title?s:new h.Title({text:s}));const{toolbar_location:o,toolbar:l}=this.model;null!=o&&null!=l&&(this._toolbar=new d.ToolbarPanel({toolbar:l}),l.toolbar_location=o),this.renderer_views=new Map,this.tool_views=new Map}async lazy_initialize(){this.canvas_view=await p.build_view(this.canvas,{parent:this}),this.ui_event_bus=new f.UIEvents(this,this.model.toolbar,this.canvas_view.events_el),await this.build_renderer_views(),await this.build_tool_views(),this.update_dataranges(),this.unpause(!0),g.logger.debug(\"PlotView initialized\")}_width_policy(){return null==this.model.frame_width?super._width_policy():\"min\"}_height_policy(){return null==this.model.frame_height?super._height_policy():\"min\"}_update_layout(){this.layout=new x.BorderLayout,this.layout.set_sizing(this.box_sizing());const{frame_width:t,frame_height:e}=this.model;this.layout.center_panel=this.frame,this.layout.center_panel.set_sizing(Object.assign(Object.assign({},null!=t?{width_policy:\"fixed\",width:t}:{width_policy:\"fit\"}),null!=e?{height_policy:\"fixed\",height:e}:{height_policy:\"fit\"}));const i=w.copy(this.model.above),s=w.copy(this.model.below),n=w.copy(this.model.left),a=w.copy(this.model.right),o=t=>{switch(t){case\"above\":return i;case\"below\":return s;case\"left\":return n;case\"right\":return a}},{title_location:l,title:r}=this.model;null!=l&&null!=r&&o(l).push(this._title);const{toolbar_location:_,toolbar:c}=this.model;if(null!=_&&null!=c){const t=o(_);let e=!0;if(this.model.toolbar_sticky)for(let i=0;i{const i=this.renderer_views.get(e);return i.layout=new z.SidePanel(t,i)},p=(t,e)=>{const i=\"above\"==t||\"below\"==t,s=[];for(const n of e)if(v.isArray(n)){const e=n.map(e=>{const s=u(t,e);if(e instanceof d.ToolbarPanel){const t=i?\"width_policy\":\"height_policy\";s.set_sizing(Object.assign(Object.assign({},s.sizing),{[t]:\"min\"}))}return s});let a;i?(a=new M.Row(e),a.set_sizing({width_policy:\"max\",height_policy:\"min\"})):(a=new M.Column(e),a.set_sizing({width_policy:\"min\",height_policy:\"max\"})),a.absolute=!0,s.push(a)}else s.push(u(t,n));return s},f=null!=this.model.min_border?this.model.min_border:0;this.layout.min_border={left:null!=this.model.min_border_left?this.model.min_border_left:f,top:null!=this.model.min_border_top?this.model.min_border_top:f,right:null!=this.model.min_border_right?this.model.min_border_right:f,bottom:null!=this.model.min_border_bottom?this.model.min_border_bottom:f};const b=new y.VStack,g=new y.VStack,m=new y.HStack,O=new y.HStack;b.children=w.reversed(p(\"above\",i)),g.children=p(\"below\",s),m.children=w.reversed(p(\"left\",n)),O.children=p(\"right\",a),b.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),g.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),m.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),O.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),this.layout.top_panel=b,this.layout.bottom_panel=g,this.layout.left_panel=m,this.layout.right_panel=O}get axis_views(){const t=[];for(const[,e]of this.renderer_views)e instanceof _.AxisView&&t.push(e);return t}set_cursor(t=\"default\"){this.canvas_view.el.style.cursor=t}set_toolbar_visibility(t){for(const e of this.visibility_callbacks)e(t)}update_dataranges(){const t=new Map,e=new Map;let i=!1;for(const[,t]of this.frame.x_ranges)t instanceof o.DataRange1d&&\"log\"==t.scale_hint&&(i=!0);for(const[,t]of this.frame.y_ranges)t instanceof o.DataRange1d&&\"log\"==t.scale_hint&&(i=!0);for(const[s,n]of this.renderer_views)if(n instanceof l.GlyphRendererView){const a=n.glyph.bounds();if(null!=a&&t.set(s,a),i){const t=n.glyph.log_bounds();null!=t&&e.set(s,t)}}let s=!1,n=!1;const{width:a,height:r}=this.frame.bbox;let h;!1!==this.model.match_aspect&&0!=a&&0!=r&&(h=1/this.model.aspect_scale*(a/r));for(const[,i]of this.frame.x_ranges){if(i instanceof o.DataRange1d){const n=\"log\"==i.scale_hint?e:t;i.update(n,0,this.model,h),i.follow&&(s=!0)}null!=i.bounds&&(n=!0)}for(const[,i]of this.frame.y_ranges){if(i instanceof o.DataRange1d){const n=\"log\"==i.scale_hint?e:t;i.update(n,1,this.model,h),i.follow&&(s=!0)}null!=i.bounds&&(n=!0)}if(s&&n){g.logger.warn(\"Follow enabled so bounds are unset.\");for(const[,t]of this.frame.x_ranges)t.bounds=null;for(const[,t]of this.frame.y_ranges)t.bounds=null}this.range_update_timestamp=Date.now()}push_state(t,e){const{history:i,index:s}=this.state,n=null!=i[s]?i[s].info:{},a=Object.assign(Object.assign(Object.assign({},this._initial_state_info),n),e);this.state.history=this.state.history.slice(0,this.state.index+1),this.state.history.push({type:t,info:a}),this.state.index=this.state.history.length-1,this.state_changed.emit()}clear_state(){this.state={history:[],index:-1},this.state_changed.emit()}can_undo(){return this.state.index>=0}can_redo(){return this.state.index=a.end&&(n=!0,a.end=t,(e||i)&&(a.start=t+l)),null!=o&&o<=a.start&&(n=!0,a.start=o,(e||i)&&(a.end=o-l))):(null!=t&&t>=a.start&&(n=!0,a.start=t,(e||i)&&(a.end=t+l)),null!=o&&o<=a.end&&(n=!0,a.end=o,(e||i)&&(a.start=o-l)))}}if(!(i&&n&&s))for(const[e,i]of t)e.have_updated_interactively=!0,e.start==i.start&&e.end==i.end||e.setv(i)}_get_weight_to_constrain_interval(t,e){const{min_interval:i}=t;let{max_interval:s}=t;if(null!=t.bounds&&\"auto\"!=t.bounds){const[e,i]=t.bounds;if(null!=e&&null!=i){const t=Math.abs(i-e);s=null!=s?Math.min(s,t):t}}let n=1;if(null!=i||null!=s){const a=Math.abs(t.end-t.start),o=Math.abs(e.end-e.start);i>0&&o0&&o>s&&(n=(s-a)/(o-a)),n=Math.max(0,Math.min(1,n))}return n}update_range(t,e=!1,i=!1,s=!0){this.pause();const{x_ranges:n,y_ranges:a}=this.frame;if(null==t){for(const[,t]of n)t.reset();for(const[,t]of a)t.reset();this.update_dataranges()}else{const o=[];for(const[e,i]of n)o.push([i,t.xrs.get(e)]);for(const[e,i]of a)o.push([i,t.yrs.get(e)]);i&&this._update_ranges_together(o),this._update_ranges_individually(o,e,i,s)}this.unpause()}reset_range(){this.update_range(null)}_invalidate_layout(){(()=>{for(const t of this.model.side_panels){if(this.renderer_views.get(t).layout.has_size_changed())return!0}return!1})()&&this.root.compute_layout()}get_renderer_views(){return this.computed_renderers.map(t=>this.renderer_views.get(t))}async build_renderer_views(){this.computed_renderers=[];const{above:t,below:e,left:i,right:s,center:n,renderers:a}=this.model;this.computed_renderers.push(...t,...e,...i,...s,...n,...a),null!=this._title&&this.computed_renderers.push(this._title),null!=this._toolbar&&this.computed_renderers.push(this._toolbar);for(const t of this.model.toolbar.tools)null!=t.overlay&&this.computed_renderers.push(t.overlay),this.computed_renderers.push(...t.synthetic_renderers);await p.build_views(this.renderer_views,this.computed_renderers,{parent:this})}async build_tool_views(){const t=this.model.toolbar.tools;(await p.build_views(this.tool_views,t,{parent:this})).map(t=>this.ui_event_bus.register_tool(t))}connect_signals(){super.connect_signals();const{x_ranges:t,y_ranges:e}=this.frame;for(const[,e]of t)this.connect(e.change,()=>{this._needs_layout=!0,this.request_paint()});for(const[,t]of e)this.connect(t.change,()=>{this._needs_layout=!0,this.request_paint()});const{plot_width:i,plot_height:s}=this.model.properties;this.on_change([i,s],()=>this.invalidate_layout());const{above:n,below:a,left:o,right:l,center:r,renderers:h}=this.model.properties;this.on_change([n,a,o,l,r,h],async()=>await this.build_renderer_views()),this.connect(this.model.toolbar.properties.tools.change,async()=>{await this.build_renderer_views(),await this.build_tool_views()}),this.connect(this.model.change,()=>this.request_paint()),this.connect(this.model.reset,()=>this.reset())}set_initial_range(){let t=!0;const{x_ranges:e,y_ranges:i}=this.frame,s=new Map,n=new Map;for(const[i,n]of e){const{start:e,end:a}=n;if(null==e||null==a||isNaN(e+a)){t=!1;break}s.set(i,{start:e,end:a})}if(t)for(const[e,s]of i){const{start:i,end:a}=s;if(null==i||null==a||isNaN(i+a)){t=!1;break}n.set(e,{start:i,end:a})}t?(this._initial_state_info.range={xrs:s,yrs:n},g.logger.debug(\"initial ranges set\")):g.logger.warn(\"could not set initial ranges\")}has_finished(){if(!super.has_finished())return!1;if(this.model.visible)for(const[,t]of this.renderer_views)if(!t.has_finished())return!1;return!0}after_layout(){if(super.after_layout(),this._needs_layout=!1,this.model.setv({inner_width:Math.round(this.frame.bbox.width),inner_height:Math.round(this.frame.bbox.height),outer_width:Math.round(this.layout.bbox.width),outer_height:Math.round(this.layout.bbox.height)},{no_change:!0}),!1!==this.model.match_aspect&&(this.pause(),this.update_dataranges(),this.unpause(!0)),!this._outer_bbox.equals(this.layout.bbox)){const{width:t,height:e}=this.layout.bbox;this.canvas_view.resize(t,e),this._outer_bbox=this.layout.bbox,this._invalidate_all=!0,this._needs_paint=!0}this._inner_bbox.equals(this.frame.inner_bbox)||(this._inner_bbox=this.layout.inner_bbox,this._needs_paint=!0),this._needs_paint&&this.paint()}repaint(){this._needs_layout&&this._invalidate_layout(),this.paint()}paint(){if(this.is_paused||!this.model.visible)return;g.logger.trace(\"PlotView.paint() for \"+this.model.id);const{document:t}=this.model;if(null!=t){const e=t.interactive_duration();e>=0&&e{t.interactive_duration()>this.model.lod_timeout&&t.interactive_stop(),this.request_paint()},this.model.lod_timeout):t.interactive_stop()}for(const[,t]of this.renderer_views)if(null==this.range_update_timestamp||t instanceof l.GlyphRendererView&&t.set_data_timestamp>this.range_update_timestamp){this.update_dataranges();break}let e=!1,i=!1;if(this._invalidate_all)e=!0,i=!0;else for(const t of this._invalidated_painters){const{level:s}=t.model;if(\"overlay\"!=s?e=!0:i=!0,e&&i)break}this._invalidated_painters.clear(),this._invalidate_all=!1;const s=[this.frame.bbox.left,this.frame.bbox.top,this.frame.bbox.width,this.frame.bbox.height],{primary:n,overlays:a}=this.canvas_view;e&&(n.prepare(),this.canvas_view.prepare_webgl(s),this.canvas_view.clear_webgl(),this._map_hook(n.ctx,s),this._paint_empty(n.ctx,s),this._paint_outline(n.ctx,s),this._paint_levels(n.ctx,\"image\",s,!0),this._paint_levels(n.ctx,\"underlay\",s,!0),this._paint_levels(n.ctx,\"glyph\",s,!0),this._paint_levels(n.ctx,\"guide\",s,!1),this._paint_levels(n.ctx,\"annotation\",s,!1),n.finish()),i&&(a.prepare(),this._paint_levels(a.ctx,\"overlay\",s,!1),a.finish()),null==this._initial_state_info.range&&this.set_initial_range(),this._needs_paint=!1}_paint_levels(t,e,i,s){for(const n of this.computed_renderers){if(n.level!=e)continue;const a=this.renderer_views.get(n);t.save(),(s||a.needs_clip)&&(t.beginPath(),t.rect(...i),t.clip()),a.render(),t.restore(),a.has_webgl&&a.needs_webgl_blit&&(this.canvas_view.blit_webgl(t),this.canvas_view.clear_webgl())}}_map_hook(t,e){}_paint_empty(t,e){const[i,s,n,a]=[0,0,this.layout.bbox.width,this.layout.bbox.height],[o,l,r,h]=e;this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(t),t.fillRect(i,s,n,a),t.clearRect(o,l,r,h)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(o,l,r,h))}_paint_outline(t,e){if(this.visuals.outline_line.doit){t.save(),this.visuals.outline_line.set_value(t);let[i,s,n,a]=e;i+n==this.layout.bbox.width&&(n-=1),s+a==this.layout.bbox.height&&(a-=1),t.strokeRect(i,s,n,a),t.restore()}}to_blob(){return this.canvas_view.to_blob()}export(t,e=!0){const i=\"png\"==t?\"canvas\":\"svg\",s=new a.CanvasLayer(i,e),{width:n,height:o}=this.layout.bbox;s.resize(n,o);const{canvas:l}=this.canvas_view.compose();return s.ctx.drawImage(l,0,0),s}serializable_state(){const t=super.serializable_state(),{children:e}=t,i=s(t,[\"children\"]),n=this.get_renderer_views().map(t=>t.serializable_state()).filter(t=>\"bbox\"in t);return Object.assign(Object.assign({},i),{children:[...e,...n]})}}i.PlotView=k,k.__name__=\"PlotView\"},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});var n=this&&this.__decorate||function(e,t,s,n){var _,a=arguments.length,o=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,s):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)o=Reflect.decorate(e,t,s,n);else for(var r=e.length-1;r>=0;r--)(_=e[r])&&(o=(a<3?_(o):a>3?_(t,s,o):_(t,s))||o);return a>3&&o&&Object.defineProperty(t,s,o),o};function _(e){return function(t){t.prototype.event_name=e}}class a{to_json(){const{event_name:e}=this;return{event_name:e,event_values:this._to_json()}}}s.BokehEvent=a,a.__name__=\"BokehEvent\";class o extends a{constructor(){super(...arguments),this.origin=null}_to_json(){return{model:this.origin}}}s.ModelEvent=o,o.__name__=\"ModelEvent\";let r=class extends a{_to_json(){return{}}};s.DocumentReady=r,r.__name__=\"DocumentReady\",s.DocumentReady=r=n([_(\"document_ready\")],r);let c=class extends o{};s.ButtonClick=c,c.__name__=\"ButtonClick\",s.ButtonClick=c=n([_(\"button_click\")],c);let l=class extends o{constructor(e){super(),this.item=e}_to_json(){const{item:e}=this;return Object.assign(Object.assign({},super._to_json()),{item:e})}};s.MenuItemClick=l,l.__name__=\"MenuItemClick\",s.MenuItemClick=l=n([_(\"menu_item_click\")],l);class i extends o{}s.UIEvent=i,i.__name__=\"UIEvent\";let u=class extends i{};s.LODStart=u,u.__name__=\"LODStart\",s.LODStart=u=n([_(\"lodstart\")],u);let d=class extends i{};s.LODEnd=d,d.__name__=\"LODEnd\",s.LODEnd=d=n([_(\"lodend\")],d);let h=class extends i{constructor(e,t){super(),this.geometry=e,this.final=t}_to_json(){const{geometry:e,final:t}=this;return Object.assign(Object.assign({},super._to_json()),{geometry:e,final:t})}};s.SelectionGeometry=h,h.__name__=\"SelectionGeometry\",s.SelectionGeometry=h=n([_(\"selectiongeometry\")],h);let m=class extends i{};s.Reset=m,m.__name__=\"Reset\",s.Reset=m=n([_(\"reset\")],m);class x extends i{constructor(e,t,s,n){super(),this.sx=e,this.sy=t,this.x=s,this.y=n}_to_json(){const{sx:e,sy:t,x:s,y:n}=this;return Object.assign(Object.assign({},super._to_json()),{sx:e,sy:t,x:s,y:n})}}s.PointEvent=x,x.__name__=\"PointEvent\";let p=class extends x{constructor(e,t,s,n,_,a){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.delta_x=_,this.delta_y=a}_to_json(){const{delta_x:e,delta_y:t}=this;return Object.assign(Object.assign({},super._to_json()),{delta_x:e,delta_y:t})}};s.Pan=p,p.__name__=\"Pan\",s.Pan=p=n([_(\"pan\")],p);let j=class extends x{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.scale=_}_to_json(){const{scale:e}=this;return Object.assign(Object.assign({},super._to_json()),{scale:e})}};s.Pinch=j,j.__name__=\"Pinch\",s.Pinch=j=n([_(\"pinch\")],j);let y=class extends x{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.rotation=_}_to_json(){const{rotation:e}=this;return Object.assign(Object.assign({},super._to_json()),{rotation:e})}};s.Rotate=y,y.__name__=\"Rotate\",s.Rotate=y=n([_(\"rotate\")],y);let P=class extends x{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.delta=_}_to_json(){const{delta:e}=this;return Object.assign(Object.assign({},super._to_json()),{delta:e})}};s.MouseWheel=P,P.__name__=\"MouseWheel\",s.MouseWheel=P=n([_(\"wheel\")],P);let v=class extends x{};s.MouseMove=v,v.__name__=\"MouseMove\",s.MouseMove=v=n([_(\"mousemove\")],v);let O=class extends x{};s.MouseEnter=O,O.__name__=\"MouseEnter\",s.MouseEnter=O=n([_(\"mouseenter\")],O);let b=class extends x{};s.MouseLeave=b,b.__name__=\"MouseLeave\",s.MouseLeave=b=n([_(\"mouseleave\")],b);let g=class extends x{};s.Tap=g,g.__name__=\"Tap\",s.Tap=g=n([_(\"tap\")],g);let E=class extends x{};s.DoubleTap=E,E.__name__=\"DoubleTap\",s.DoubleTap=E=n([_(\"doubletap\")],E);let M=class extends x{};s.Press=M,M.__name__=\"Press\",s.Press=M=n([_(\"press\")],M);let R=class extends x{};s.PressUp=R,R.__name__=\"PressUp\",s.PressUp=R=n([_(\"pressup\")],R);let f=class extends x{};s.PanStart=f,f.__name__=\"PanStart\",s.PanStart=f=n([_(\"panstart\")],f);let S=class extends x{};s.PanEnd=S,S.__name__=\"PanEnd\",s.PanEnd=S=n([_(\"panend\")],S);let D=class extends x{};s.PinchStart=D,D.__name__=\"PinchStart\",s.PinchStart=D=n([_(\"pinchstart\")],D);let k=class extends x{};s.PinchEnd=k,k.__name__=\"PinchEnd\",s.PinchEnd=k=n([_(\"pinchend\")],k);let L=class extends x{};s.RotateStart=L,L.__name__=\"RotateStart\",s.RotateStart=L=n([_(\"rotatestart\")],L);let C=class extends x{};s.RotateEnd=C,C.__name__=\"RotateEnd\",s.RotateEnd=C=n([_(\"rotateend\")],C)},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=t(1),i=n.__importDefault(t(297)),r=t(15),a=t(19),h=t(72),_=n.__importStar(t(313)),o=t(315),c=t(9),l=t(8),p=t(32),u=t(302);class d{constructor(t,e,s){this.plot_view=t,this.toolbar=e,this.hit_area=s,this.pan_start=new r.Signal(this,\"pan:start\"),this.pan=new r.Signal(this,\"pan\"),this.pan_end=new r.Signal(this,\"pan:end\"),this.pinch_start=new r.Signal(this,\"pinch:start\"),this.pinch=new r.Signal(this,\"pinch\"),this.pinch_end=new r.Signal(this,\"pinch:end\"),this.rotate_start=new r.Signal(this,\"rotate:start\"),this.rotate=new r.Signal(this,\"rotate\"),this.rotate_end=new r.Signal(this,\"rotate:end\"),this.tap=new r.Signal(this,\"tap\"),this.doubletap=new r.Signal(this,\"doubletap\"),this.press=new r.Signal(this,\"press\"),this.pressup=new r.Signal(this,\"pressup\"),this.move_enter=new r.Signal(this,\"move:enter\"),this.move=new r.Signal(this,\"move\"),this.move_exit=new r.Signal(this,\"move:exit\"),this.scroll=new r.Signal(this,\"scroll\"),this.keydown=new r.Signal(this,\"keydown\"),this.keyup=new r.Signal(this,\"keyup\"),this.hammer=new i.default(this.hit_area,{touchAction:\"auto\",inputClass:i.default.TouchMouseInput}),this._configure_hammerjs(),this.hit_area.addEventListener(\"mousemove\",t=>this._mouse_move(t)),this.hit_area.addEventListener(\"mouseenter\",t=>this._mouse_enter(t)),this.hit_area.addEventListener(\"mouseleave\",t=>this._mouse_exit(t)),this.hit_area.addEventListener(\"contextmenu\",t=>this._context_menu(t)),this.hit_area.addEventListener(\"wheel\",t=>this._mouse_wheel(t)),document.addEventListener(\"keydown\",this),document.addEventListener(\"keyup\",this),this.menu=new u.ContextMenu([],{prevent_hide:t=>2==t.button&&t.target==this.hit_area}),this.hit_area.appendChild(this.menu.el)}destroy(){this.menu.remove(),this.hammer.destroy(),document.removeEventListener(\"keydown\",this),document.removeEventListener(\"keyup\",this)}handleEvent(t){\"keydown\"==t.type?this._key_down(t):\"keyup\"==t.type&&this._key_up(t)}_configure_hammerjs(){this.hammer.get(\"doubletap\").recognizeWith(\"tap\"),this.hammer.get(\"tap\").requireFailure(\"doubletap\"),this.hammer.get(\"doubletap\").dropRequireFailure(\"tap\"),this.hammer.on(\"doubletap\",t=>this._doubletap(t)),this.hammer.on(\"tap\",t=>this._tap(t)),this.hammer.on(\"press\",t=>this._press(t)),this.hammer.on(\"pressup\",t=>this._pressup(t)),this.hammer.get(\"pan\").set({direction:i.default.DIRECTION_ALL}),this.hammer.on(\"panstart\",t=>this._pan_start(t)),this.hammer.on(\"pan\",t=>this._pan(t)),this.hammer.on(\"panend\",t=>this._pan_end(t)),this.hammer.get(\"pinch\").set({enable:!0}),this.hammer.on(\"pinchstart\",t=>this._pinch_start(t)),this.hammer.on(\"pinch\",t=>this._pinch(t)),this.hammer.on(\"pinchend\",t=>this._pinch_end(t)),this.hammer.get(\"rotate\").set({enable:!0}),this.hammer.on(\"rotatestart\",t=>this._rotate_start(t)),this.hammer.on(\"rotate\",t=>this._rotate(t)),this.hammer.on(\"rotateend\",t=>this._rotate_end(t))}register_tool(t){const e=t.model.event_type;null!=e&&(l.isString(e)?this._register_tool(t,e):e.forEach((e,s)=>this._register_tool(t,e,s<1)))}_register_tool(t,e,s=!0){const n=t,{id:i}=n.model,r=t=>e=>{e.id==i&&t(e.e)},h=t=>e=>{t(e.e)};switch(e){case\"pan\":null!=n._pan_start&&n.connect(this.pan_start,r(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,r(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,r(n._pan_end.bind(n)));break;case\"pinch\":null!=n._pinch_start&&n.connect(this.pinch_start,r(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,r(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,r(n._pinch_end.bind(n)));break;case\"rotate\":null!=n._rotate_start&&n.connect(this.rotate_start,r(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,r(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,r(n._rotate_end.bind(n)));break;case\"move\":null!=n._move_enter&&n.connect(this.move_enter,r(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,r(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,r(n._move_exit.bind(n)));break;case\"tap\":null!=n._tap&&n.connect(this.tap,r(n._tap.bind(n)));break;case\"press\":null!=n._press&&n.connect(this.press,r(n._press.bind(n))),null!=n._pressup&&n.connect(this.pressup,r(n._pressup.bind(n)));break;case\"scroll\":null!=n._scroll&&n.connect(this.scroll,r(n._scroll.bind(n)));break;default:throw new Error(\"unsupported event_type: \"+e)}s&&(null!=n._doubletap&&n.connect(this.doubletap,h(n._doubletap.bind(n))),null!=n._keydown&&n.connect(this.keydown,h(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,h(n._keyup.bind(n))),p.is_mobile&&null!=n._scroll&&\"pinch\"==e&&(a.logger.debug(\"Registering scroll on touch screen\"),n.connect(this.scroll,r(n._scroll.bind(n)))))}_hit_test_renderers(t,e){const s=this.plot_view.get_renderer_views();for(const n of c.reversed(s)){const{level:s}=n.model;if((\"annotation\"==s||\"overlay\"==s)&&null!=n.interactive_hit&&n.interactive_hit(t,e))return n}return null}_hit_test_frame(t,e){return this.plot_view.frame.bbox.contains(t,e)}_hit_test_canvas(t,e){return this.plot_view.layout.bbox.contains(t,e)}_trigger(t,e,s){const n=this.toolbar.gestures,i=t.name.split(\":\")[0],r=this._hit_test_renderers(e.sx,e.sy),a=this._hit_test_canvas(e.sx,e.sy);switch(i){case\"move\":{const s=n[i].active;null!=s&&this.trigger(t,e,s.id);const h=this.toolbar.inspectors.filter(t=>t.active);let _=\"default\";null!=r?(_=r.cursor(e.sx,e.sy)||_,c.is_empty(h)||(t=this.move_exit)):this._hit_test_frame(e.sx,e.sy)&&(c.is_empty(h)||(_=\"crosshair\")),this.plot_view.set_cursor(_),this.plot_view.set_toolbar_visibility(a),h.map(s=>this.trigger(t,e,s.id));break}case\"tap\":{const{target:a}=s;if(null!=a&&a!=this.hit_area)return;null!=r&&null!=r.on_hit&&r.on_hit(e.sx,e.sy);const h=n[i].active;null!=h&&this.trigger(t,e,h.id);break}case\"scroll\":{const i=n[p.is_mobile?\"pinch\":\"scroll\"].active;null!=i&&(s.preventDefault(),s.stopPropagation(),this.trigger(t,e,i.id));break}case\"pan\":{const r=n[i].active;null!=r&&(s.preventDefault(),this.trigger(t,e,r.id));break}default:{const s=n[i].active;null!=s&&this.trigger(t,e,s.id)}}this._trigger_bokeh_event(e)}trigger(t,e,s=null){t.emit({id:s,e})}_trigger_bokeh_event(t){const e=(()=>{const{sx:e,sy:s}=t,n=this.plot_view.frame.x_scale.invert(e),i=this.plot_view.frame.y_scale.invert(s);switch(t.type){case\"wheel\":return new _.MouseWheel(e,s,n,i,t.delta);case\"mousemove\":return new _.MouseMove(e,s,n,i);case\"mouseenter\":return new _.MouseEnter(e,s,n,i);case\"mouseleave\":return new _.MouseLeave(e,s,n,i);case\"tap\":return new _.Tap(e,s,n,i);case\"doubletap\":return new _.DoubleTap(e,s,n,i);case\"press\":return new _.Press(e,s,n,i);case\"pressup\":return new _.PressUp(e,s,n,i);case\"pan\":return new _.Pan(e,s,n,i,t.deltaX,t.deltaY);case\"panstart\":return new _.PanStart(e,s,n,i);case\"panend\":return new _.PanEnd(e,s,n,i);case\"pinch\":return new _.Pinch(e,s,n,i,t.scale);case\"pinchstart\":return new _.PinchStart(e,s,n,i);case\"pinchend\":return new _.PinchEnd(e,s,n,i);case\"rotate\":return new _.Rotate(e,s,n,i,t.rotation);case\"rotatestart\":return new _.RotateStart(e,s,n,i);case\"rotateend\":return new _.RotateEnd(e,s,n,i);default:return}})();null!=e&&this.plot_view.model.trigger_event(e)}_get_sxy(t){const{pageX:e,pageY:s}=function(t){return\"undefined\"!=typeof TouchEvent&&t instanceof TouchEvent}(t)?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t,{left:n,top:i}=h.offset(this.hit_area);return{sx:e-n,sy:s-i}}_pan_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{deltaX:t.deltaX,deltaY:t.deltaY,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_pinch_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{scale:t.scale,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_rotate_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{rotation:t.rotation,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_tap_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_move_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_scroll_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{delta:o.getDeltaY(t),shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_key_event(t){return{type:t.type,keyCode:t.keyCode}}_pan_start(t){const e=this._pan_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)}_pan(t){this._trigger(this.pan,this._pan_event(t),t.srcEvent)}_pan_end(t){this._trigger(this.pan_end,this._pan_event(t),t.srcEvent)}_pinch_start(t){this._trigger(this.pinch_start,this._pinch_event(t),t.srcEvent)}_pinch(t){this._trigger(this.pinch,this._pinch_event(t),t.srcEvent)}_pinch_end(t){this._trigger(this.pinch_end,this._pinch_event(t),t.srcEvent)}_rotate_start(t){this._trigger(this.rotate_start,this._rotate_event(t),t.srcEvent)}_rotate(t){this._trigger(this.rotate,this._rotate_event(t),t.srcEvent)}_rotate_end(t){this._trigger(this.rotate_end,this._rotate_event(t),t.srcEvent)}_tap(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)}_doubletap(t){const e=this._tap_event(t);this._trigger_bokeh_event(e),this.trigger(this.doubletap,e)}_press(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)}_pressup(t){this._trigger(this.pressup,this._tap_event(t),t.srcEvent)}_mouse_enter(t){this._trigger(this.move_enter,this._move_event(t),t)}_mouse_move(t){this._trigger(this.move,this._move_event(t),t)}_mouse_exit(t){this._trigger(this.move_exit,this._move_event(t),t)}_mouse_wheel(t){this._trigger(this.scroll,this._scroll_event(t),t)}_context_menu(t){!this.menu.is_open&&this.menu.can_open&&t.preventDefault();const{sx:e,sy:s}=this._get_sxy(t);this.menu.toggle({left:e,top:s})}_key_down(t){this.trigger(this.keydown,this._key_event(t))}_key_up(t){this.trigger(this.keyup,this._key_event(t))}}s.UIEvents=d,d.__name__=\"UIEvents\"},\n", + " function _(e,t,n){\n", + " /*!\n", + " * jQuery Mousewheel 3.1.13\n", + " *\n", + " * Copyright jQuery Foundation and other contributors\n", + " * Released under the MIT license\n", + " * http://jquery.org/license\n", + " */\n", + " function r(e){const t=getComputedStyle(e).fontSize;return null!=t?parseInt(t,10):null}Object.defineProperty(n,\"__esModule\",{value:!0}),n.getDeltaY=function(e){let t=-e.deltaY;if(e.target instanceof HTMLElement)switch(e.deltaMode){case e.DOM_DELTA_LINE:t*=r((n=e.target).offsetParent||document.body)||r(n)||16;break;case e.DOM_DELTA_PAGE:t*=function(e){return e.clientHeight}(e.target)}var n;return t}},\n", + " function _(n,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const t=(\"undefined\"!=typeof window?window.requestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.webkitRequestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.mozRequestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.msRequestAnimationFrame:void 0)||function(n){return n(Date.now()),-1};o.throttle=function(n,e){let o=null,i=0,u=!1;return function(){return new Promise((d,w)=>{const r=function(){i=Date.now(),o=null,u=!1;try{n(),d()}catch(n){w(n)}},a=Date.now(),f=e-(a-i);f<=0&&!u?(null!=o&&clearTimeout(o),u=!0,t(r)):o||u?d():o=setTimeout(()=>t(r),f)})}}},\n", + " function _(t,e,h){Object.defineProperty(h,\"__esModule\",{value:!0});const i=t(213),o=t(214),r=t(79);class s extends o.Layoutable{constructor(){super(...arguments),this.min_border={left:0,top:0,right:0,bottom:0}}_measure(t){t=new i.Sizeable(t).bounded_to(this.sizing.size);const e=this.left_panel.measure({width:0,height:t.height}),h=Math.max(e.width,this.min_border.left),o=this.right_panel.measure({width:0,height:t.height}),r=Math.max(o.width,this.min_border.right),s=this.top_panel.measure({width:t.width,height:0}),n=Math.max(s.height,this.min_border.top),a=this.bottom_panel.measure({width:t.width,height:0}),g=Math.max(a.height,this.min_border.bottom),_=new i.Sizeable(t).shrink_by({left:h,right:r,top:n,bottom:g}),m=this.center_panel.measure(_);return{width:h+m.width+r,height:n+m.height+g,inner:{left:h,right:r,top:n,bottom:g},align:(()=>{const{width_policy:t,height_policy:e}=this.center_panel.sizing;return\"fixed\"!=t&&\"fixed\"!=e})()}}_set_geometry(t,e){super._set_geometry(t,e),this.center_panel.set_geometry(e);const h=this.left_panel.measure({width:0,height:t.height}),i=this.right_panel.measure({width:0,height:t.height}),o=this.top_panel.measure({width:t.width,height:0}),s=this.bottom_panel.measure({width:t.width,height:0}),{left:n,top:a,right:g,bottom:_}=e;this.top_panel.set_geometry(new r.BBox({left:n,right:g,bottom:a,height:o.height})),this.bottom_panel.set_geometry(new r.BBox({left:n,right:g,top:_,height:s.height})),this.left_panel.set_geometry(new r.BBox({top:a,bottom:_,right:n,width:h.width})),this.right_panel.set_geometry(new r.BBox({top:a,bottom:_,left:g,width:i.width}))}}h.BorderLayout=s,s.__name__=\"BorderLayout\"},\n", + " function _(i,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const l=i(213),a=i(214),r=i(8),o=Math.PI/2,h=\"left\",s=\"center\",n={above:{parallel:0,normal:-o,horizontal:0,vertical:-o},below:{parallel:0,normal:o,horizontal:0,vertical:o},left:{parallel:-o,normal:0,horizontal:0,vertical:-o},right:{parallel:o,normal:0,horizontal:0,vertical:o}},d={above:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"alphabetic\",vertical:\"middle\"},below:{justified:\"bottom\",parallel:\"hanging\",normal:\"middle\",horizontal:\"hanging\",vertical:\"middle\"},left:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"middle\",vertical:\"alphabetic\"},right:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"middle\",vertical:\"alphabetic\"}},_={above:{justified:s,parallel:s,normal:h,horizontal:s,vertical:h},below:{justified:s,parallel:s,normal:h,horizontal:s,vertical:h},left:{justified:s,parallel:s,normal:\"right\",horizontal:\"right\",vertical:s},right:{justified:s,parallel:s,normal:h,horizontal:h,vertical:s}},c={above:\"right\",below:h,left:\"right\",right:h},m={above:h,below:\"right\",left:\"right\",right:h};class g extends a.ContentLayoutable{constructor(i,t){switch(super(),this.side=i,this.obj=t,this.side){case\"above\":this._dim=0,this._normals=[0,-1];break;case\"below\":this._dim=0,this._normals=[0,1];break;case\"left\":this._dim=1,this._normals=[-1,0];break;case\"right\":this._dim=1,this._normals=[1,0]}this.is_horizontal?this.set_sizing({width_policy:\"max\",height_policy:\"fixed\"}):this.set_sizing({width_policy:\"fixed\",height_policy:\"max\"})}_content_size(){return new l.Sizeable(this.get_oriented_size())}get_oriented_size(){const{width:i,height:t}=this.obj.get_size();return!this.obj.rotate||this.is_horizontal?{width:i,height:t}:{width:t,height:i}}has_size_changed(){const{width:i,height:t}=this.get_oriented_size();return this.is_horizontal?this.bbox.height!=t:this.bbox.width!=i}get dimension(){return this._dim}get normals(){return this._normals}get is_horizontal(){return 0==this._dim}get is_vertical(){return 1==this._dim}apply_label_text_heuristics(i,t){const e=this.side;let l,a;r.isString(t)?(l=d[e][t],a=_[e][t]):t<0?(l=\"middle\",a=c[e]):(l=\"middle\",a=m[e]),i.textBaseline=l,i.textAlign=a}get_label_angle_heuristic(i){return n[this.side][i]}}e.SidePanel=g,g.__name__=\"SidePanel\"},\n", + " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(15),o=t(72),a=t(37),n=t(312),p=new i.Signal0({},\"gmaps_ready\");class l extends n.PlotView{initialize(){this.pause(),super.initialize(),this._tiles_loaded=!1,this.zoom_count=0;const{zoom:t,lat:e,lng:s}=this.model.map_options;if(this.initial_zoom=t,this.initial_lat=e,this.initial_lng=s,\"undefined\"==typeof google||null==google.maps){if(void 0===window._bokeh_gmaps_callback){!function(t){window._bokeh_gmaps_callback=()=>p.emit();const e=document.createElement(\"script\");e.type=\"text/javascript\",e.src=`https://maps.googleapis.com/maps/api/js?v=3.36&key=${t}&callback=_bokeh_gmaps_callback`,document.body.appendChild(e)}(atob(this.model.api_key))}p.connect(()=>this.request_render())}this.unpause()}remove(){o.remove(this.map_el),super.remove()}update_range(t){if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),super.update_range(null);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(t.sdx||0,t.sdy||0),super.update_range(t);else if(null!=t.factor){if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),super.update_range(t);const e=t.factor<0?-1:1,s=this.map.getZoom(),i=s+e;if(i>=2){this.map.setZoom(i);const[t,e,,]=this._get_projected_bounds();e-t<0&&this.map.setZoom(s)}this.unpause()}this._set_bokeh_ranges()}_build_map(){const{maps:t}=google;this.map_types={satellite:t.MapTypeId.SATELLITE,terrain:t.MapTypeId.TERRAIN,roadmap:t.MapTypeId.ROADMAP,hybrid:t.MapTypeId.HYBRID};const e=this.model.map_options,s={center:new t.LatLng(e.lat,e.lng),zoom:e.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[e.map_type],scaleControl:e.scale_control,tilt:e.tilt};null!=e.styles&&(s.styles=JSON.parse(e.styles)),this.map_el=o.div({style:{position:\"absolute\"}}),this.canvas_view.add_underlay(this.map_el),this.map=new t.Map(this.map_el,s),t.event.addListener(this.map,\"idle\",()=>this._set_bokeh_ranges()),t.event.addListener(this.map,\"bounds_changed\",()=>this._set_bokeh_ranges()),t.event.addListenerOnce(this.map,\"tilesloaded\",()=>this._render_finished()),this.connect(this.model.properties.map_options.change,()=>this._update_options()),this.connect(this.model.map_options.properties.styles.change,()=>this._update_styles()),this.connect(this.model.map_options.properties.lat.change,()=>this._update_center(\"lat\")),this.connect(this.model.map_options.properties.lng.change,()=>this._update_center(\"lng\")),this.connect(this.model.map_options.properties.zoom.change,()=>this._update_zoom()),this.connect(this.model.map_options.properties.map_type.change,()=>this._update_map_type()),this.connect(this.model.map_options.properties.scale_control.change,()=>this._update_scale_control()),this.connect(this.model.map_options.properties.tilt.change,()=>this._update_tilt())}_render_finished(){this._tiles_loaded=!0,this.notify_finished()}has_finished(){return super.has_finished()&&!0===this._tiles_loaded}_get_latlon_bounds(){const t=this.map.getBounds(),e=t.getNorthEast(),s=t.getSouthWest();return[s.lng(),e.lng(),s.lat(),e.lat()]}_get_projected_bounds(){const[t,e,s,i]=this._get_latlon_bounds(),[o,n]=a.wgs84_mercator.compute(t,s),[p,l]=a.wgs84_mercator.compute(e,i);return[o,p,n,l]}_set_bokeh_ranges(){const[t,e,s,i]=this._get_projected_bounds();this.frame.x_range.setv({start:t,end:e}),this.frame.y_range.setv({start:s,end:i})}_update_center(t){const e=this.map.getCenter().toJSON();e[t]=this.model.map_options[t],this.map.setCenter(e),this._set_bokeh_ranges()}_update_map_type(){this.map.setOptions({mapTypeId:this.map_types[this.model.map_options.map_type]})}_update_scale_control(){this.map.setOptions({scaleControl:this.model.map_options.scale_control})}_update_tilt(){this.map.setOptions({tilt:this.model.map_options.tilt})}_update_options(){this._update_styles(),this._update_center(\"lat\"),this._update_center(\"lng\"),this._update_zoom(),this._update_map_type()}_update_styles(){this.map.setOptions({styles:JSON.parse(this.model.map_options.styles)})}_update_zoom(){this.map.setOptions({zoom:this.model.map_options.zoom}),this._set_bokeh_ranges()}_map_hook(t,e){if(null==this.map&&\"undefined\"!=typeof google&&null!=google.maps&&this._build_map(),null!=this.map_el){const[t,s,i,o]=e;this.map_el.style.top=s+\"px\",this.map_el.style.left=t+\"px\",this.map_el.style.width=i+\"px\",this.map_el.style.height=o+\"px\"}}_paint_empty(t,e){const s=this.layout.bbox.width,i=this.layout.bbox.height,[o,a,n,p]=e;t.clearRect(0,0,s,i),t.beginPath(),t.moveTo(0,0),t.lineTo(0,i),t.lineTo(s,i),t.lineTo(s,0),t.lineTo(0,0),t.moveTo(o,a),t.lineTo(o+n,a),t.lineTo(o+n,a+p),t.lineTo(o,a+p),t.lineTo(o,a),t.closePath(),null!=this.model.border_fill_color&&(t.fillStyle=this.model.border_fill_color,t.fill())}}s.GMapPlotView=l,l.__name__=\"GMapPlotView\"},\n", + " function _(a,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});var g=a(211);n.DataRange=g.DataRange;var R=a(210);n.DataRange1d=R.DataRange1d;var r=a(98);n.FactorRange=r.FactorRange;var t=a(99);n.Range=t.Range;var d=a(158);n.Range1d=d.Range1d},\n", + " function _(e,r,d){Object.defineProperty(d,\"__esModule\",{value:!0});var n=e(90);d.GlyphRenderer=n.GlyphRenderer;var R=e(116);d.GraphRenderer=R.GraphRenderer;var a=e(178);d.GuideRenderer=a.GuideRenderer;var G=e(70);d.Renderer=G.Renderer},\n", + " function _(a,e,l){Object.defineProperty(l,\"__esModule\",{value:!0});var c=a(209);l.CategoricalScale=c.CategoricalScale;var r=a(146);l.ContinuousScale=r.ContinuousScale;var n=a(145);l.LinearScale=n.LinearScale;var o=a(156);l.LinearInterpolationScale=o.LinearInterpolationScale;var i=a(157);l.LogScale=i.LogScale;var S=a(147);l.Scale=S.Scale},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});e(1).__exportStar(e(118),o);var n=e(88);o.Selection=n.Selection},\n", + " function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});var o=a(325);r.ServerSentDataSource=o.ServerSentDataSource;var S=a(327);r.AjaxDataSource=S.AjaxDataSource;var u=a(85);r.ColumnDataSource=u.ColumnDataSource;var t=a(86);r.ColumnarDataSource=t.ColumnarDataSource;var c=a(114);r.CDSView=c.CDSView;var D=a(87);r.DataSource=D.DataSource;var v=a(328);r.GeoJSONDataSource=v.GeoJSONDataSource;var n=a(326);r.WebDataSource=n.WebDataSource},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const a=e(326);class s extends a.WebDataSource{constructor(e){super(e),this.initialized=!1}destroy(){super.destroy()}setup(){if(!this.initialized){this.initialized=!0;new EventSource(this.data_url).onmessage=e=>{this.load_data(JSON.parse(e.data),this.mode,this.max_size)}}}}i.ServerSentDataSource=s,s.__name__=\"ServerSentDataSource\"},\n", + " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const r=e(1),s=e(85),i=r.__importStar(e(18));class n extends s.ColumnDataSource{constructor(e){super(e)}get_column(e){const t=this.data[e];return null!=t?t:[]}initialize(){super.initialize(),this.setup()}load_data(e,t,a){const{adapter:r}=this;let s;switch(s=null!=r?r.execute(this,{response:e}):e,t){case\"replace\":this.data=s;break;case\"append\":{const e=this.data;for(const t of this.columns()){const r=Array.from(e[t]),i=Array.from(s[t]);s[t]=r.concat(i).slice(-a)}this.data=s;break}}}static init_WebDataSource(){this.define({mode:[i.UpdateMode,\"replace\"],max_size:[i.Number],adapter:[i.Any,null],data_url:[i.String]})}}a.WebDataSource=n,n.__name__=\"WebDataSource\",n.init_WebDataSource()},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),a=t(326),r=t(19),o=s.__importStar(t(18)),n=t(13);class d extends a.WebDataSource{constructor(t){super(t),this.initialized=!1}static init_AjaxDataSource(){this.define({polling_interval:[o.Number],content_type:[o.String,\"application/json\"],http_headers:[o.Any,{}],method:[o.HTTPMethod,\"POST\"],if_modified:[o.Boolean,!1]})}destroy(){null!=this.interval&&clearInterval(this.interval),super.destroy()}setup(){if(!this.initialized&&(this.initialized=!0,this.get_data(this.mode),this.polling_interval)){const t=()=>this.get_data(this.mode,this.max_size,this.if_modified);this.interval=setInterval(t,this.polling_interval)}}get_data(t,e=0,i=!1){const s=this.prepare_request();s.addEventListener(\"load\",()=>this.do_load(s,t,e)),s.addEventListener(\"error\",()=>this.do_error(s)),s.send()}prepare_request(){const t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\"Content-Type\",this.content_type);const e=this.http_headers;for(const[i,s]of n.entries(e))t.setRequestHeader(i,s);return t}do_load(t,e,i){if(200===t.status){const s=JSON.parse(t.responseText);this.load_data(s,e,i)}}do_error(t){r.logger.error(`Failed to fetch JSON from ${this.data_url} with code ${t.status}`)}}i.AjaxDataSource=d,d.__name__=\"AjaxDataSource\",d.init_AjaxDataSource()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(1),n=e(86),s=e(19),a=r.__importStar(e(18)),i=e(9),l=e(13);function c(e){return null!=e?e:NaN}class _ extends n.ColumnarDataSource{constructor(e){super(e)}static init_GeoJSONDataSource(){this.define({geojson:[a.Any]}),this.internal({data:[a.Any,{}]})}initialize(){super.initialize(),this._update_data()}connect_signals(){super.connect_signals(),this.connect(this.properties.geojson.change,()=>this._update_data())}_update_data(){this.data=this.geojson_to_column_data()}_get_new_list_array(e){return i.range(0,e).map(e=>[])}_get_new_nan_array(e){return i.range(0,e).map(e=>NaN)}_add_properties(e,t,o,r){var n;const s=null!==(n=e.properties)&&void 0!==n?n:{};for(const[e,n]of l.entries(s))t.hasOwnProperty(e)||(t[e]=this._get_new_nan_array(r)),t[e][o]=c(n)}_add_geometry(e,t,o){function r(e,t){return e.concat([[NaN,NaN,NaN]]).concat(t)}switch(e.type){case\"Point\":{const[r,n,s]=e.coordinates;t.x[o]=r,t.y[o]=n,t.z[o]=c(s);break}case\"LineString\":{const{coordinates:r}=e;for(let e=0;e1&&s.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\");const r=e.coordinates[0];for(let e=0;e1&&s.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\"),n.push(t[0]);const a=n.reduce(r);for(let e=0;ethis.get_resolution(t))}_computed_initial_resolution(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size}is_valid_tile(t,e,i){return!(!this.wrap_around&&(t<0||t>=2**i))&&!(e<0||e>=2**i)}parent_by_tile_xyz(t,e,i){const _=this.tile_xyz_to_quadkey(t,e,i),s=_.substring(0,_.length-1);return this.quadkey_to_tile_xyz(s)}get_resolution(t){return this._computed_initial_resolution()/2**t}get_resolution_by_extent(t,e,i){return[(t[2]-t[0])/i,(t[3]-t[1])/e]}get_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s);let o=0;for(const t of this._resolutions){if(r>t){if(0==o)return 0;if(o>0)return o-1}o+=1}return o-1}get_closest_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s),o=this._resolutions.reduce((function(t,e){return Math.abs(e-r)e?(u=o-s,a*=t):(u*=e,a=n-r)}const h=(u-(o-s))/2,c=(a-(n-r))/2;return[s-h,r-c,o+h,n+c]}tms_to_wmts(t,e,i){return[t,2**i-1-e,i]}wmts_to_tms(t,e,i){return[t,2**i-1-e,i]}pixels_to_meters(t,e,i){const _=this.get_resolution(i);return[t*_-this.x_origin_offset,e*_-this.y_origin_offset]}meters_to_pixels(t,e,i){const _=this.get_resolution(i);return[(t+this.x_origin_offset)/_,(e+this.y_origin_offset)/_]}pixels_to_tile(t,e){let i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;return[i,Math.max(Math.ceil(e/this.tile_size)-1,0)]}pixels_to_raster(t,e,i){return[t,(this.tile_size<=l;t--)for(let i=n;i<=u;i++)this.is_valid_tile(i,t,e)&&h.push([i,t,e,this.get_tile_meter_bounds(i,t,e)]);return this.sort_tiles_from_center(h,[n,l,u,a]),h}quadkey_to_tile_xyz(t){let e=0,i=0;const _=t.length;for(let s=_;s>0;s--){const r=1<0;s--){const i=1<0;)if(s=s.substring(0,s.length-1),[t,e,i]=this.quadkey_to_tile_xyz(s),[t,e,i]=this.denormalize_xyz(t,e,i,_),this.tiles.has(this.tile_xyz_to_key(t,e,i)))return[t,e,i];return[0,0,0]}normalize_xyz(t,e,i){if(this.wrap_around){const _=2**i;return[(t%_+_)%_,e,i]}return[t,e,i]}denormalize_xyz(t,e,i,_){return[t+_*2**i,e,i]}denormalize_meters(t,e,i,_){return[t+2*_*Math.PI*6378137,e]}calculate_world_x_by_tile_xyz(t,e,i){return Math.floor(t/2**i)}}i.MercatorTileSource=l,l.__name__=\"MercatorTileSource\",l.init_MercatorTileSource()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1),n=e(81),s=e(13),l=i.__importStar(e(18));class a extends n.Model{constructor(e){super(e)}static init_TileSource(){this.define({url:[l.String,\"\"],tile_size:[l.Number,256],max_zoom:[l.Number,30],min_zoom:[l.Number,0],extra_url_vars:[l.Any,{}],attribution:[l.String,\"\"],x_origin_offset:[l.Number],y_origin_offset:[l.Number],initial_resolution:[l.Number]})}initialize(){super.initialize(),this.tiles=new Map,this._normalize_case()}connect_signals(){super.connect_signals(),this.connect(this.change,()=>this._clear_cache())}string_lookup_replace(e,t){let r=e;for(const[e,i]of s.entries(t))r=r.replace(`{${e}}`,i);return r}_normalize_case(){const e=this.url.replace(\"{x}\",\"{X}\").replace(\"{y}\",\"{Y}\").replace(\"{z}\",\"{Z}\").replace(\"{q}\",\"{Q}\").replace(\"{xmin}\",\"{XMIN}\").replace(\"{ymin}\",\"{YMIN}\").replace(\"{xmax}\",\"{XMAX}\").replace(\"{ymax}\",\"{YMAX}\");this.url=e}_clear_cache(){this.tiles=new Map}tile_xyz_to_key(e,t,r){return`${e}:${t}:${r}`}key_to_tile_xyz(e){const[t,r,i]=e.split(\":\").map(e=>parseInt(e));return[t,r,i]}sort_tiles_from_center(e,t){const[r,i,n,s]=t,l=(n-r)/2+r,a=(s-i)/2+i;e.sort((function(e,t){return Math.sqrt((l-e[0])**2+(a-e[1])**2)-Math.sqrt((l-t[0])**2+(a-t[1])**2)}))}get_image_url(e,t,r){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",t.toString()).replace(\"{Z}\",r.toString())}}r.TileSource=a,a.__name__=\"TileSource\",a.init_TileSource()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const n=e(37);function o(e,t){return n.wgs84_mercator.compute(e,t)}function c(e,t){return n.wgs84_mercator.invert(e,t)}r.geographic_to_meters=o,r.meters_to_geographic=c,r.geographic_extent_to_meters=function(e){const[t,r,n,c]=e,[_,u]=o(t,r),[i,g]=o(n,c);return[_,u,i,g]},r.meters_extent_to_geographic=function(e){const[t,r,n,o]=e,[_,u]=c(t,r),[i,g]=c(n,o);return[_,u,i,g]}},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const _=e(333);class s extends _.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const _=this.string_lookup_replace(this.url,this.extra_url_vars),[s,o,u]=this.tms_to_wmts(e,t,r),c=this.tile_xyz_to_quadkey(s,o,u);return _.replace(\"{Q}\",c)}}r.QUADKEYTileSource=s,s.__name__=\"QUADKEYTileSource\"},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),_=t(338),n=t(91),a=t(158),r=t(72),o=s.__importStar(t(18)),h=t(251),l=t(9),d=t(8),m=t(89),c=t(85),g=t(339),p=s.__importDefault(t(340));class u extends n.DataRendererView{initialize(){this._tiles=[],super.initialize()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.request_render()),this.connect(this.model.tile_source.change,()=>this.request_render())}styles(){return[...super.styles(),p.default]}get_extent(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]}get map_plot(){return this.plot_model}get map_canvas(){return this.layer.ctx}get map_frame(){return this.plot_view.frame}get x_range(){return this.map_plot.x_range}get y_range(){return this.map_plot.y_range}_set_data(){this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0}_update_attribution(){null!=this.attribution_el&&r.removeElement(this.attribution_el);const{attribution:t}=this.model.tile_source;if(d.isString(t)&&t.length>0){const{layout:e,frame:i}=this.plot_view,s=e.bbox.width-i.bbox.right,_=e.bbox.height-i.bbox.bottom,n=i.bbox.width;this.attribution_el=r.div({class:g.bk_tile_attribution,style:{position:\"absolute\",right:s+\"px\",bottom:_+\"px\",\"max-width\":n-4+\"px\",padding:\"2px\",\"background-color\":\"rgba(255,255,255,0.5)\",\"font-size\":\"9px\",\"line-height\":\"1.05\",\"white-space\":\"nowrap\",overflow:\"hidden\",\"text-overflow\":\"ellipsis\"}}),this.plot_view.canvas_view.add_event(this.attribution_el),this.attribution_el.innerHTML=t,this.attribution_el.title=this.attribution_el.textContent.replace(/\\s*\\n\\s*/g,\" \")}}_map_data(){this.initial_extent=this.get_extent();const t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof a.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof a.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._update_attribution()}_create_tile(t,e,i,s,_=!1){const[n,a,r]=this.model.tile_source.normalize_xyz(t,e,i),o={img:void 0,tile_coords:[t,e,i],normalized_coords:[n,a,r],quadkey:this.model.tile_source.tile_xyz_to_quadkey(t,e,i),cache_key:this.model.tile_source.tile_xyz_to_key(t,e,i),bounds:s,loaded:!1,finished:!1,x_coord:s[0],y_coord:s[3]},l=this.model.tile_source.get_image_url(n,a,r);new h.ImageLoader(l,{loaded:t=>{Object.assign(o,{img:t,loaded:!0}),_?(o.finished=!0,this.notify_finished()):this.request_render()},failed(){o.finished=!0}}),this.model.tile_source.tiles.set(o.cache_key,o),this._tiles.push(o)}_enforce_aspect_ratio(){if(this._last_height!==this.map_frame.bbox.height||this._last_width!==this.map_frame.bbox.width){const t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame.bbox.height,this.map_frame.bbox.width),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame.bbox.height,this.map_frame.bbox.width,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame.bbox.height,this._last_width=this.map_frame.bbox.width}}has_finished(){if(!super.has_finished())return!1;if(0===this._tiles.length)return!1;for(const t of this._tiles)if(!t.finished)return!1;return!0}_render(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()}_draw_tile(t){const e=this.model.tile_source.tiles.get(t);if(null!=e&&e.loaded){const[[t],[i]]=this.coordinates.map_to_screen([e.bounds[0]],[e.bounds[3]]),[[s],[_]]=this.coordinates.map_to_screen([e.bounds[2]],[e.bounds[1]]),n=s-t,a=_-i,r=t,o=i,h=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,r,o,n,a),this.map_canvas.setImageSmoothingEnabled(h),e.finished=!0}}_set_rect(){const t=this.plot_model.properties.outline_line_width.value(),e=this.map_frame.bbox.left+t/2,i=this.map_frame.bbox.top+t/2,s=this.map_frame.bbox.width-t,_=this.map_frame.bbox.height-t;this.map_canvas.rect(e,i,s,_),this.map_canvas.clip()}_render_tiles(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(const e of t)this._draw_tile(e);this.map_canvas.restore()}_prefetch_tiles(){const{tile_source:t}=this.model,e=this.get_extent(),i=this.map_frame.bbox.height,s=this.map_frame.bbox.width,_=this.model.tile_source.get_level_by_extent(e,i,s),n=this.model.tile_source.get_tiles_by_extent(e,_);for(let e=0,i=Math.min(10,n.length);ei&&(s=this.extent,r=i,o=!0),o&&(this.x_range.setv({x_range:{start:s[0],end:s[2]}}),this.y_range.setv({start:s[1],end:s[3]})),this.extent=s;const h=t.get_tiles_by_extent(s,r),d=[],m=[],c=[],g=[];for(const e of h){const[i,s,n]=e,a=t.tile_xyz_to_key(i,s,n),r=t.tiles.get(a);if(null!=r&&r.loaded)m.push(a);else if(this.model.render_parents){const[e,a,r]=t.get_closest_parent_by_tile_xyz(i,s,n),o=t.tile_xyz_to_key(e,a,r),h=t.tiles.get(o);if(null!=h&&h.loaded&&!l.includes(c,o)&&c.push(o),_){const e=t.children_by_tile_xyz(i,s,n);for(const[i,s,_]of e){const e=t.tile_xyz_to_key(i,s,_);t.tiles.has(e)&&g.push(e)}}}null==r&&d.push(e)}this._render_tiles(c),this._render_tiles(g),this._render_tiles(m),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout(()=>this._fetch_tiles(d),65)}}i.TileRendererView=u,u.__name__=\"TileRendererView\";class b extends n.DataRenderer{constructor(t){super(t),this._selection_manager=new m.SelectionManager({source:new c.ColumnDataSource})}static init_TileRenderer(){this.prototype.default_view=u,this.define({alpha:[o.Number,1],smoothing:[o.Boolean,!0],tile_source:[o.Instance,()=>new _.WMTSTileSource],render_parents:[o.Boolean,!0]})}get_selection_manager(){return this._selection_manager}}i.TileRenderer=b,b.__name__=\"TileRenderer\",b.init_TileRenderer()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const o=e(333);class s extends o.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const o=this.string_lookup_replace(this.url,this.extra_url_vars),[s,c,_]=this.tms_to_wmts(e,t,r);return o.replace(\"{X}\",s.toString()).replace(\"{Y}\",c.toString()).replace(\"{Z}\",_.toString())}}r.WMTSTileSource=s,s.__name__=\"WMTSTileSource\"},\n", + " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0}),i.bk_tile_attribution=\"bk-tile-attribution\"},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});n.default=\"\\n.bk-root .bk-tile-attribution a {\\n color: black;\\n}\\n\"},\n", + " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(333);class c extends o.MercatorTileSource{constructor(e){super(e)}get_image_url(e,r,t){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",r.toString()).replace(\"{Z}\",t.toString())}}t.TMSTileSource=c,c.__name__=\"TMSTileSource\"},\n", + " function _(e,r,a){Object.defineProperty(a,\"__esModule\",{value:!0});var t=e(343);a.CanvasTexture=t.CanvasTexture;var u=e(345);a.ImageURLTexture=u.ImageURLTexture;var v=e(344);a.Texture=v.Texture},\n", + " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=t(1),c=t(344),s=r.__importStar(t(18)),i=t(29);class a extends c.Texture{constructor(t){super(t)}static init_CanvasTexture(){this.define({code:[s.String]})}get func(){const t=i.use_strict(this.code);return new Function(\"ctx\",\"color\",\"scale\",\"weight\",t)}get_pattern(t,e,n){return r=>{const c=document.createElement(\"canvas\");c.width=e,c.height=e;const s=c.getContext(\"2d\");return this.func.call(this,s,t,e,n),r.createPattern(c,this.repetition)}}}n.CanvasTexture=a,a.__name__=\"CanvasTexture\",a.init_CanvasTexture()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1),n=e(81),o=r.__importStar(e(18));class _ extends n.Model{constructor(e){super(e)}static init_Texture(){this.define({repetition:[o.TextureRepetition,\"repeat\"]})}onload(e){e()}}i.Texture=_,_.__name__=\"Texture\",_.init_Texture()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1),a=e(344),n=r.__importStar(e(18)),s=e(251);class o extends a.Texture{constructor(e){super(e)}static init_ImageURLTexture(){this.define({url:[n.String]})}initialize(){super.initialize(),this._loader=new s.ImageLoader(this.url)}get_pattern(e,t,i){return e=>this._loader.finished?e.createPattern(this._loader.image,this.repetition):null}onload(e){this._loader.promise.then(()=>e())}}i.ImageURLTexture=o,o.__name__=\"ImageURLTexture\",o.init_ImageURLTexture()},\n", + " function _(o,l,T){Object.defineProperty(T,\"__esModule\",{value:!0});var a=o(307);T.ActionTool=a.ActionTool;var r=o(347);T.CustomAction=r.CustomAction;var e=o(308);T.HelpTool=e.HelpTool;var v=o(348);T.RedoTool=v.RedoTool;var t=o(349);T.ResetTool=t.ResetTool;var n=o(350);T.SaveTool=n.SaveTool;var s=o(351);T.UndoTool=s.UndoTool;var i=o(352);T.ZoomInTool=i.ZoomInTool;var P=o(355);T.ZoomOutTool=P.ZoomOutTool;var c=o(296);T.ButtonTool=c.ButtonTool;var d=o(356);T.EditTool=d.EditTool;var u=o(357);T.BoxEditTool=u.BoxEditTool;var y=o(358);T.FreehandDrawTool=y.FreehandDrawTool;var m=o(359);T.PointDrawTool=m.PointDrawTool;var x=o(360);T.PolyDrawTool=x.PolyDrawTool;var B=o(361);T.PolyTool=B.PolyTool;var S=o(362);T.PolyEditTool=S.PolyEditTool;var b=o(363);T.BoxSelectTool=b.BoxSelectTool;var h=o(366);T.BoxZoomTool=h.BoxZoomTool;var E=o(306);T.GestureTool=E.GestureTool;var Z=o(367);T.LassoSelectTool=Z.LassoSelectTool;var p=o(369);T.LineEditTool=p.LineEditTool;var w=o(371);T.PanTool=w.PanTool;var C=o(368);T.PolySelectTool=C.PolySelectTool;var D=o(372);T.RangeTool=D.RangeTool;var H=o(364);T.SelectTool=H.SelectTool;var R=o(373);T.TapTool=R.TapTool;var A=o(374);T.WheelPanTool=A.WheelPanTool;var I=o(375);T.WheelZoomTool=I.WheelZoomTool;var L=o(376);T.CrosshairTool=L.CrosshairTool;var W=o(377);T.CustomJSHover=W.CustomJSHover;var O=o(378);T.HoverTool=O.HoverTool;var _=o(295);T.InspectTool=_.InspectTool;var f=o(298);T.Tool=f.Tool;var g=o(379);T.ToolProxy=g.ToolProxy;var F=o(294);T.Toolbar=F.Toolbar;var G=o(305);T.ToolbarBase=G.ToolbarBase;var J=o(380);T.ProxyToolbar=J.ProxyToolbar;var U=o(380);T.ToolbarBox=U.ToolbarBox},\n", + " function _(t,o,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),s=t(307),e=n.__importStar(t(18)),c=t(299);class _ extends s.ActionToolButtonView{css_classes(){return super.css_classes().concat(c.bk_toolbar_button_custom_action)}}i.CustomActionButtonView=_,_.__name__=\"CustomActionButtonView\";class l extends s.ActionToolView{doit(){null!=this.model.callback&&this.model.callback.execute(this.model)}}i.CustomActionView=l,l.__name__=\"CustomActionView\";class u extends s.ActionTool{constructor(t){super(t),this.tool_name=\"Custom Action\",this.button_view=_}static init_CustomAction(){this.prototype.default_view=l,this.define({action_tooltip:[e.String,\"Perform a Custom Action\"],callback:[e.Any],icon:[e.String]})}get tooltip(){return this.action_tooltip}}i.CustomAction=u,u.__name__=\"CustomAction\",u.init_CustomAction()},\n", + " function _(o,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=o(307),s=o(309);class n extends i.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state_changed,()=>this.model.disabled=!this.plot_view.can_redo())}doit(){this.plot_view.redo()}}t.RedoToolView=n,n.__name__=\"RedoToolView\";class _ extends i.ActionTool{constructor(o){super(o),this.tool_name=\"Redo\",this.icon=s.bk_tool_icon_redo}static init_RedoTool(){this.prototype.default_view=n,this.override({disabled:!0}),this.register_alias(\"redo\",()=>new _)}}t.RedoTool=_,_.__name__=\"RedoTool\",_.init_RedoTool()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(307),i=e(309);class _ extends s.ActionToolView{doit(){this.plot_view.reset()}}o.ResetToolView=_,_.__name__=\"ResetToolView\";class l extends s.ActionTool{constructor(e){super(e),this.tool_name=\"Reset\",this.icon=i.bk_tool_icon_reset}static init_ResetTool(){this.prototype.default_view=_,this.register_alias(\"reset\",()=>new l)}}o.ResetTool=l,l.__name__=\"ResetTool\",l.init_ResetTool()},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const a=e(307),i=e(309);class n extends a.ActionToolView{async copy(){const e=await this.plot_view.to_blob(),o=new ClipboardItem({[e.type]:e});await navigator.clipboard.write([o])}async save(e){const o=await this.plot_view.to_blob(),t=document.createElement(\"a\");t.href=URL.createObjectURL(o),t.download=e,t.target=\"_blank\",t.dispatchEvent(new MouseEvent(\"click\"))}doit(e=\"save\"){switch(e){case\"save\":this.save(\"bokeh_plot\");break;case\"copy\":this.copy()}}}t.SaveToolView=n,n.__name__=\"SaveToolView\";class s extends a.ActionTool{constructor(e){super(e),this.tool_name=\"Save\",this.icon=i.bk_tool_icon_save}static init_SaveTool(){this.prototype.default_view=n,this.register_alias(\"save\",()=>new s)}get menu(){return[{icon:\"bk-tool-icon-copy-to-clipboard\",tooltip:\"Copy image to clipboard\",if:()=>\"undefined\"!=typeof ClipboardItem,handler:()=>{this.do.emit(\"copy\")}}]}}t.SaveTool=s,s.__name__=\"SaveTool\",s.init_SaveTool()},\n", + " function _(o,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=o(307),i=o(309);class s extends n.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state_changed,()=>this.model.disabled=!this.plot_view.can_undo())}doit(){this.plot_view.undo()}}e.UndoToolView=s,s.__name__=\"UndoToolView\";class _ extends n.ActionTool{constructor(o){super(o),this.tool_name=\"Undo\",this.icon=i.bk_tool_icon_undo}static init_UndoTool(){this.prototype.default_view=s,this.override({disabled:!0}),this.register_alias(\"undo\",()=>new _)}}e.UndoTool=_,_.__name__=\"UndoTool\",_.init_UndoTool()},\n", + " function _(o,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=o(353),s=o(309);class t extends n.ZoomBaseTool{constructor(o){super(o),this.sign=1,this.tool_name=\"Zoom In\",this.icon=s.bk_tool_icon_zoom_in}static init_ZoomInTool(){this.prototype.default_view=n.ZoomBaseToolView,this.register_alias(\"zoom_in\",()=>new t({dimensions:\"both\"})),this.register_alias(\"xzoom_in\",()=>new t({dimensions:\"width\"})),this.register_alias(\"yzoom_in\",()=>new t({dimensions:\"height\"}))}}e.ZoomInTool=t,t.__name__=\"ZoomInTool\",t.init_ZoomInTool()},\n", + " function _(o,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=o(1),s=o(307),n=o(354),_=i.__importStar(o(18));class l extends s.ActionToolView{doit(){const o=this.plot_view.frame,t=this.model.dimensions,e=\"width\"==t||\"both\"==t,i=\"height\"==t||\"both\"==t,s=n.scale_range(o,this.model.sign*this.model.factor,e,i);this.plot_view.push_state(\"zoom_out\",{range:s}),this.plot_view.update_range(s,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model)}}e.ZoomBaseToolView=l,l.__name__=\"ZoomBaseToolView\";class a extends s.ActionTool{constructor(o){super(o)}static init_ZoomBaseTool(){this.prototype.default_view=l,this.define({factor:[_.Percent,.1],dimensions:[_.Dimensions,\"both\"]})}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}e.ZoomBaseTool=a,a.__name__=\"ZoomBaseTool\",a.init_ZoomBaseTool()},\n", + " function _(n,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=n(10);function r(n,e,t){const[o,r]=[n.start,n.end],s=null!=t?t:(r+o)/2;return[o-(o-s)*e,r-(r-s)*e]}function s(n,[e,t]){const o=new Map;for(const[r,s]of n){const[n,c]=s.r_invert(e,t);o.set(r,{start:n,end:c})}return o}t.scale_highlow=r,t.get_info=s,t.scale_range=function(n,e,t=!0,c=!0,l){e=o.clamp(e,-.9,.9);const a=t?e:0,[u,_]=r(n.bbox.h_range,a,null!=l?l.x:void 0),i=s(n.x_scales,[u,_]),f=c?e:0,[d,b]=r(n.bbox.v_range,f,null!=l?l.y:void 0);return{xrs:i,yrs:s(n.y_scales,[d,b]),factor:e}}},\n", + " function _(o,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=o(353),s=o(309);class n extends e.ZoomBaseTool{constructor(o){super(o),this.sign=-1,this.tool_name=\"Zoom Out\",this.icon=s.bk_tool_icon_zoom_out}static init_ZoomOutTool(){this.prototype.default_view=e.ZoomBaseToolView,this.register_alias(\"zoom_out\",()=>new n({dimensions:\"both\"})),this.register_alias(\"xzoom_out\",()=>new n({dimensions:\"width\"})),this.register_alias(\"yzoom_out\",()=>new n({dimensions:\"height\"}))}}i.ZoomOutTool=n,n.__name__=\"ZoomOutTool\",n.init_ZoomOutTool()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(1).__importStar(e(18)),i=e(9),n=e(8),r=e(11),_=e(306);class c extends _.GestureToolView{constructor(){super(...arguments),this._mouse_in_frame=!0}_select_mode(e){const{shiftKey:t,ctrlKey:o}=e;return t||o?t&&!o?\"append\":!t&&o?\"intersect\":t&&o?\"subtract\":void r.unreachable():\"replace\"}_move_enter(e){this._mouse_in_frame=!0}_move_exit(e){this._mouse_in_frame=!1}_map_drag(e,t,o){if(!this.plot_view.frame.bbox.contains(e,t))return null;const s=this.plot_view.renderer_views.get(o);return[s.coordinates.x_scale.invert(e),s.coordinates.y_scale.invert(t)]}_delete_selected(e){const t=e.data_source,o=t.selected.indices;o.sort();for(const e of t.columns()){const s=t.get_array(e);for(let e=0;ethis._show_vertices())}this._initialized=!0}}deactivate(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()}}s.PolyDrawToolView=d,d.__name__=\"PolyDrawToolView\";class l extends n.PolyTool{constructor(e){super(e),this.tool_name=\"Polygon Draw Tool\",this.icon=_.bk_tool_icon_poly_draw,this.event_type=[\"pan\",\"tap\",\"move\"],this.default_order=3}static init_PolyDrawTool(){this.prototype.default_view=d,this.define({drag:[a.Boolean,!0],num_objects:[a.Int,0]})}}s.PolyDrawTool=l,l.__name__=\"PolyDrawTool\",l.init_PolyDrawTool()},\n", + " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const o=e(1).__importStar(e(18)),i=e(8),s=e(356);class _ extends s.EditToolView{_set_vertices(e,t){const r=this.model.vertex_renderer.glyph,o=this.model.vertex_renderer.data_source,[s,_]=[r.x.field,r.y.field];s&&(i.isArray(e)?o.data[s]=e:r.x={value:e}),_&&(i.isArray(t)?o.data[_]=t:r.y={value:t}),this._emit_cds_changes(o,!0,!0,!1)}_hide_vertices(){this._set_vertices([],[])}_snap_to_vertex(e,t,r){if(this.model.vertex_renderer){const o=this._select_event(e,\"replace\",[this.model.vertex_renderer]),i=this.model.vertex_renderer.data_source,s=this.model.vertex_renderer.glyph,[_,l]=[s.x.field,s.y.field];if(o.length){const e=i.selected.indices[0];_&&(t=i.data[_][e]),l&&(r=i.data[l][e]),i.selection_manager.clear()}}return[t,r]}}r.PolyToolView=_,_.__name__=\"PolyToolView\";class l extends s.EditTool{constructor(e){super(e)}static init_PolyTool(){this.prototype.default_view=_,this.define({vertex_renderer:[o.Instance]})}}r.PolyTool=l,l.__name__=\"PolyTool\",l.init_PolyTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const r=e(72),i=e(8),_=e(361),d=e(309);class n extends _.PolyToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(e){if(!this.model.active)return;const t=this._map_drag(e.sx,e.sy,this.model.vertex_renderer);if(null==t)return;const[s,r]=t,i=this._select_event(e,\"replace\",[this.model.vertex_renderer]),_=this.model.vertex_renderer.data_source,d=this.model.vertex_renderer.glyph,[n,l]=[d.x.field,d.y.field];if(i.length&&null!=this._selected_renderer){const e=_.selected.indices[0];this._drawing?(this._drawing=!1,_.selection_manager.clear()):(_.selected.indices=[e+1],n&&_.get_array(n).splice(e+1,0,s),l&&_.get_array(l).splice(e+1,0,r),this._drawing=!0),_.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(e)}_show_vertices(e){if(!this.model.active)return;const t=this._select_event(e,\"replace\",this.model.renderers);if(!t.length)return this._set_vertices([],[]),this._selected_renderer=null,void(this._drawing=!1);const s=t[0],r=s.glyph,_=s.data_source,d=_.selected.indices[0],[n,l]=[r.xs.field,r.ys.field];let a,c;n?(a=_.data[n][d],i.isArray(a)||(_.data[n][d]=a=Array.from(a))):a=r.xs.value,l?(c=_.data[l][d],i.isArray(c)||(_.data[l][d]=c=Array.from(c))):c=r.ys.value,this._selected_renderer=s,this._set_vertices(a,c)}_move(e){if(this._drawing&&null!=this._selected_renderer){const t=this.model.vertex_renderer,s=t.data_source,r=t.glyph,i=this._map_drag(e.sx,e.sy,t);if(null==i)return;let[_,d]=i;const n=s.selected.indices;[_,d]=this._snap_to_vertex(e,_,d),s.selected.indices=n;const[l,a]=[r.x.field,r.y.field],c=n[0];l&&(s.data[l][c]=_),a&&(s.data[a][c]=d),s.change.emit(),this._selected_renderer.data_source.change.emit()}}_tap(e){const t=this.model.vertex_renderer,s=this._map_drag(e.sx,e.sy,t);if(null==s)return;if(this._drawing&&this._selected_renderer){let[r,i]=s;const _=t.data_source,d=t.glyph,[n,l]=[d.x.field,d.y.field],a=_.selected.indices;[r,i]=this._snap_to_vertex(e,r,i);const c=a[0];if(_.selected.indices=[c+1],n){const e=_.get_array(n),t=e[c];e[c]=r,e.splice(c+1,0,t)}if(l){const e=_.get_array(l),t=e[c];e[c]=i,e.splice(c+1,0,t)}return _.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}const r=this._select_mode(e);this._select_event(e,r,[t]),this._select_event(e,r,this.model.renderers)}_remove_vertex(){if(!this._drawing||!this._selected_renderer)return;const e=this.model.vertex_renderer,t=e.data_source,s=e.glyph,r=t.selected.indices[0],[i,_]=[s.x.field,s.y.field];i&&t.get_array(i).splice(r,1),_&&t.get_array(_).splice(r,1),t.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}_pan_start(e){this._select_event(e,\"append\",[this.model.vertex_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}_keyup(e){if(!this.model.active||!this._mouse_in_frame)return;let t;t=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(const s of t)e.keyCode===r.Keys.Backspace?(this._delete_selected(s),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):e.keyCode==r.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),s.data_source.selection_manager.clear())}deactivate(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())}}s.PolyEditToolView=n,n.__name__=\"PolyEditToolView\";class l extends _.PolyTool{constructor(e){super(e),this.tool_name=\"Poly Edit Tool\",this.icon=d.bk_tool_icon_poly_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}static init_PolyEditTool(){this.prototype.default_view=n}}s.PolyEditTool=l,l.__name__=\"PolyEditTool\",l.init_PolyEditTool()},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(1),i=e(364),l=e(124),_=s.__importStar(e(18)),n=e(309);class c extends i.SelectToolView{_compute_limits(e){const t=this.plot_view.frame,o=this.model.dimensions;let s=this._base_point;if(\"center\"==this.model.origin){const[t,o]=s,[i,l]=e;s=[t-(i-t),o-(l-o)]}return this.model._get_dim_limits(s,e,t,o)}_pan_start(e){const{sx:t,sy:o}=e;this._base_point=[t,o]}_pan(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this.model.overlay.update({left:i[0],right:i[1],top:l[0],bottom:l[1]}),this.model.select_every_mousemove&&this._do_select(i,l,!1,this._select_mode(e))}_pan_end(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this._do_select(i,l,!0,this._select_mode(e)),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.push_state(\"box_select\",{selection:this.plot_view.get_selection()})}_do_select([e,t],[o,s],i,l=\"replace\"){const _={type:\"rect\",sx0:e,sx1:t,sy0:o,sy1:s};this._select(_,i,l)}}o.BoxSelectToolView=c,c.__name__=\"BoxSelectToolView\";const r=()=>new l.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class h extends i.SelectTool{constructor(e){super(e),this.tool_name=\"Box Select\",this.icon=n.bk_tool_icon_box_select,this.event_type=\"pan\",this.default_order=30}static init_BoxSelectTool(){this.prototype.default_view=c,this.define({dimensions:[_.Dimensions,\"both\"],select_every_mousemove:[_.Boolean,!1],overlay:[_.Instance,r],origin:[_.BoxOrigin,\"corner\"]}),this.register_alias(\"box_select\",()=>new h),this.register_alias(\"xbox_select\",()=>new h({dimensions:\"width\"})),this.register_alias(\"ybox_select\",()=>new h({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}o.BoxSelectTool=h,h.__name__=\"BoxSelectTool\",h.init_BoxSelectTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(1),o=e(306),r=e(90),c=e(116),i=e(365),l=n.__importStar(e(18)),a=e(72),_=e(313),d=e(15),h=e(11);class p extends o.GestureToolView{connect_signals(){super.connect_signals(),this.model.clear.connect(()=>this._clear())}get computed_renderers(){const e=this.model.renderers,t=this.plot_model.renderers,s=this.model.names;return i.compute_renderers(e,t,s)}_computed_renderers_by_data_source(){var e;const t=new Map;for(const s of this.computed_renderers){let n;if(s instanceof r.GlyphRenderer)n=s.data_source;else{if(!(s instanceof c.GraphRenderer))continue;n=s.node_renderer.data_source}const o=null!==(e=t.get(n))&&void 0!==e?e:[];t.set(n,[...o,s])}return t}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void h.unreachable():this.model.mode}_keyup(e){e.keyCode==a.Keys.Esc&&this._clear()}_clear(){for(const e of this.computed_renderers)e.get_selection_manager().clear();this.plot_view.request_render()}_select(e,t,s){const n=this._computed_renderers_by_data_source();for(const[,o]of n){const n=o[0].get_selection_manager(),r=[];for(const e of o){const t=this.plot_view.renderer_views.get(e);null!=t&&r.push(t)}n.select(r,e,t,s)}null!=this.model.callback&&this._emit_callback(e),this._emit_selection_event(e,t)}_emit_selection_event(e,t=!0){const{x_scale:s,y_scale:n}=this.plot_view.frame;let o;switch(e.type){case\"point\":{const{sx:t,sy:r}=e,c=s.invert(t),i=n.invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"span\":{const{sx:t,sy:r}=e,c=s.invert(t),i=n.invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"rect\":{const{sx0:t,sx1:r,sy0:c,sy1:i}=e,[l,a]=s.r_invert(t,r),[_,d]=n.r_invert(c,i);o=Object.assign(Object.assign({},e),{x0:l,y0:_,x1:a,y1:d});break}case\"poly\":{const{sx:t,sy:r}=e,c=s.v_invert(t),i=n.v_invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}}this.plot_model.trigger_event(new _.SelectionGeometry(o,t))}}s.SelectToolView=p,p.__name__=\"SelectToolView\";class u extends o.GestureTool{constructor(e){super(e)}initialize(){super.initialize(),this.clear=new d.Signal0(this,\"clear\")}static init_SelectTool(){this.define({renderers:[l.Any,\"auto\"],names:[l.Array,[]],mode:[l.Any,\"replace\"]})}get menu(){return[{icon:\"bk-tool-icon-replace-mode\",tooltip:\"Replace the current selection\",active:()=>\"replace\"==this.mode,handler:()=>{this.mode=\"replace\",this.active=!0}},{icon:\"bk-tool-icon-append-mode\",tooltip:\"Append to the current selection (Shift)\",active:()=>\"append\"==this.mode,handler:()=>{this.mode=\"append\",this.active=!0}},{icon:\"bk-tool-icon-intersect-mode\",tooltip:\"Intersect with the current selection (Ctrl)\",active:()=>\"intersect\"==this.mode,handler:()=>{this.mode=\"intersect\",this.active=!0}},{icon:\"bk-tool-icon-subtract-mode\",tooltip:\"Subtract from the current selection (Shift+Ctrl)\",active:()=>\"subtract\"==this.mode,handler:()=>{this.mode=\"subtract\",this.active=!0}},null,{icon:\"bk-tool-icon-clear-selection\",tooltip:\"Clear the current selection (Esc)\",handler:()=>{this.clear.emit()}}]}}s.SelectTool=u,u.__name__=\"SelectTool\",u.init_SelectTool()},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const r=e(9);t.compute_renderers=function(e,n,t){if(null==e)return[];let u=\"auto\"==e?n:e;return t.length>0&&(u=u.filter(e=>r.includes(t,e.name))),u}},\n", + " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const s=t(1),i=t(306),n=t(124),_=s.__importStar(t(18)),a=t(309);class l extends i.GestureToolView{_match_aspect(t,o,e){const s=e.bbox.aspect,i=e.bbox.h_range.end,n=e.bbox.h_range.start,_=e.bbox.v_range.end,a=e.bbox.v_range.start;let l=Math.abs(t[0]-o[0]),r=Math.abs(t[1]-o[1]);const h=0==r?0:l/r,[c]=h>=s?[1,h/s]:[s/h,1];let m,p,d,b;return t[0]<=o[0]?(m=t[0],p=t[0]+l*c,p>i&&(p=i)):(p=t[0],m=t[0]-l*c,m_&&(d=_)):(d=t[1],b=t[1]-l/s,bnew n.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class h extends i.GestureTool{constructor(t){super(t),this.tool_name=\"Box Zoom\",this.icon=a.bk_tool_icon_box_zoom,this.event_type=\"pan\",this.default_order=20}static init_BoxZoomTool(){this.prototype.default_view=l,this.define({dimensions:[_.Dimensions,\"both\"],overlay:[_.Instance,r],match_aspect:[_.Boolean,!1],origin:[_.BoxOrigin,\"corner\"]}),this.register_alias(\"box_zoom\",()=>new h({dimensions:\"both\"})),this.register_alias(\"xbox_zoom\",()=>new h({dimensions:\"width\"})),this.register_alias(\"ybox_zoom\",()=>new h({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}e.BoxZoomTool=h,h.__name__=\"BoxZoomTool\",h.init_BoxZoomTool()},\n", + " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(1),a=e(364),i=e(368),l=e(72),_=o.__importStar(e(18)),c=e(309);class n extends a.SelectToolView{initialize(){super.initialize(),this.data=null}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._active_change())}_active_change(){this.model.active||this._clear_overlay()}_keyup(e){e.keyCode==l.Keys.Enter&&this._clear_overlay()}_pan_start(e){const{sx:s,sy:t}=e;this.data={sx:[s],sy:[t]}}_pan(e){const{sx:s,sy:t}=e,[o,a]=this.plot_view.frame.bbox.clip(s,t);this.data.sx.push(o),this.data.sy.push(a);this.model.overlay.update({xs:this.data.sx,ys:this.data.sy}),this.model.select_every_mousemove&&this._do_select(this.data.sx,this.data.sy,!1,this._select_mode(e))}_pan_end(e){this._clear_overlay(),this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(e)),this.plot_view.push_state(\"lasso_select\",{selection:this.plot_view.get_selection()})}_clear_overlay(){this.model.overlay.update({xs:[],ys:[]})}_do_select(e,s,t,o){const a={type:\"poly\",sx:e,sy:s};this._select(a,t,o)}}t.LassoSelectToolView=n,n.__name__=\"LassoSelectToolView\";class h extends a.SelectTool{constructor(e){super(e),this.tool_name=\"Lasso Select\",this.icon=c.bk_tool_icon_lasso_select,this.event_type=\"pan\",this.default_order=12}static init_LassoSelectTool(){this.prototype.default_view=n,this.define({select_every_mousemove:[_.Boolean,!0],overlay:[_.Instance,i.DEFAULT_POLY_OVERLAY]}),this.register_alias(\"lasso_select\",()=>new h)}}t.LassoSelectTool=h,h.__name__=\"LassoSelectTool\",h.init_LassoSelectTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const l=e(1),i=e(364),o=e(166),a=e(72),_=l.__importStar(e(18)),c=e(9),n=e(309);class h extends i.SelectToolView{initialize(){super.initialize(),this.data={sx:[],sy:[]}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._active_change())}_active_change(){this.model.active||this._clear_data()}_keyup(e){e.keyCode==a.Keys.Enter&&this._clear_data()}_doubletap(e){this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(e)),this.plot_view.push_state(\"poly_select\",{selection:this.plot_view.get_selection()}),this._clear_data()}_clear_data(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})}_tap(e){const{sx:t,sy:s}=e;this.plot_view.frame.bbox.contains(t,s)&&(this.data.sx.push(t),this.data.sy.push(s),this.model.overlay.update({xs:c.copy(this.data.sx),ys:c.copy(this.data.sy)}))}_do_select(e,t,s,l){const i={type:\"poly\",sx:e,sy:t};this._select(i,s,l)}}s.PolySelectToolView=h,h.__name__=\"PolySelectToolView\",s.DEFAULT_POLY_OVERLAY=()=>new o.PolyAnnotation({level:\"overlay\",xs_units:\"screen\",ys_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class y extends i.SelectTool{constructor(e){super(e),this.tool_name=\"Poly Select\",this.icon=n.bk_tool_icon_polygon_select,this.event_type=\"tap\",this.default_order=11}static init_PolySelectTool(){this.prototype.default_view=h,this.define({overlay:[_.Instance,s.DEFAULT_POLY_OVERLAY]}),this.register_alias(\"poly_select\",()=>new y)}}s.PolySelectTool=y,y.__name__=\"PolySelectTool\",y.init_PolySelectTool()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(370),r=s.__importStar(e(18)),_=e(309);class d extends n.LineToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(e){if(!this.model.active)return;const t=this.model.renderers;for(const i of t){1==this._select_event(e,\"replace\",[i]).length&&(this._selected_renderer=i)}this._show_intersections(),this._update_line_cds()}_show_intersections(){if(!this.model.active)return;if(null==this._selected_renderer)return;if(!this.model.renderers.length)return this._set_intersection([],[]),this._selected_renderer=null,void(this._drawing=!1);const e=this._selected_renderer.data_source,t=this._selected_renderer.glyph,[i,s]=[t.x.field,t.y.field],n=e.get_array(i),r=e.get_array(s);this._set_intersection(n,r)}_tap(e){const t=this.model.intersection_renderer;if(null==this._map_drag(e.sx,e.sy,t))return;if(this._drawing&&this._selected_renderer){const i=this._select_mode(e);if(0==this._select_event(e,i,[t]).length)return}const i=this._select_mode(e);this._select_event(e,i,[t]),this._select_event(e,i,this.model.renderers)}_update_line_cds(){if(null==this._selected_renderer)return;const e=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[i,s]=[e.x.field,e.y.field];if(i&&s){const e=t.data[i],n=t.data[s];this._selected_renderer.data_source.data[i]=e,this._selected_renderer.data_source.data[s]=n}this._emit_cds_changes(this._selected_renderer.data_source,!0,!0,!1)}_pan_start(e){this._select_event(e,\"append\",[this.model.intersection_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer],this.model.dimensions),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer]),this._emit_cds_changes(this.model.intersection_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}activate(){this._drawing=!0}deactivate(){this._selected_renderer&&(this._drawing&&(this._drawing=!1),this._hide_intersections())}}i.LineEditToolView=d,d.__name__=\"LineEditToolView\";class o extends n.LineTool{constructor(e){super(e),this.tool_name=\"Line Edit Tool\",this.icon=_.bk_tool_icon_line_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}static init_LineEditTool(){this.prototype.default_view=d,this.define({dimensions:[r.Dimensions,\"both\"]})}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}i.LineEditTool=o,o.__name__=\"LineEditTool\",o.init_LineEditTool()},\n", + " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1).__importStar(e(18)),o=e(8),s=e(356);class _ extends s.EditToolView{_set_intersection(e,i){const t=this.model.intersection_renderer.glyph,n=this.model.intersection_renderer.data_source,[s,_]=[t.x.field,t.y.field];s&&(o.isArray(e)?n.data[s]=e:t.x={value:e}),_&&(o.isArray(i)?n.data[_]=i:t.y={value:i}),this._emit_cds_changes(n,!0,!0,!1)}_hide_intersections(){this._set_intersection([],[])}}t.LineToolView=_,_.__name__=\"LineToolView\";class r extends s.EditTool{constructor(e){super(e)}static init_LineTool(){this.prototype.default_view=_,this.define({intersection_renderer:[n.Instance]})}}t.LineTool=r,r.__name__=\"LineTool\",r.init_LineTool()},\n", + " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(1),i=t(306),o=n.__importStar(t(18)),a=t(309);function _(t,s,e){const n=new Map;for(const[i,o]of t){const[t,a]=o.r_invert(s,e);n.set(i,{start:t,end:a})}return n}e.update_ranges=_;class h extends i.GestureToolView{_pan_start(t){this.last_dx=0,this.last_dy=0;const{sx:s,sy:e}=t,n=this.plot_view.frame.bbox;if(!n.contains(s,e)){const t=n.h_range,i=n.v_range;(st.end)&&(this.v_axis_only=!0),(ei.end)&&(this.h_axis_only=!0)}null!=this.model.document&&this.model.document.interactive_start(this.plot_model)}_pan(t){this._update(t.deltaX,t.deltaY),null!=this.model.document&&this.model.document.interactive_start(this.plot_model)}_pan_end(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.push_state(\"pan\",{range:this.pan_info})}_update(t,s){const e=this.plot_view.frame,n=t-this.last_dx,i=s-this.last_dy,o=e.bbox.h_range,a=o.start-n,h=o.end-n,l=e.bbox.v_range,r=l.start-i,d=l.end-i,p=this.model.dimensions;let c,u,m,x,y,g;\"width\"!=p&&\"both\"!=p||this.v_axis_only?(c=o.start,u=o.end,m=0):(c=a,u=h,m=-n),\"height\"!=p&&\"both\"!=p||this.h_axis_only?(x=l.start,y=l.end,g=0):(x=r,y=d,g=-i),this.last_dx=t,this.last_dy=s;const{x_scales:w,y_scales:b}=e,f=_(w,c,u),v=_(b,x,y);this.pan_info={xrs:f,yrs:v,sdx:m,sdy:g},this.plot_view.update_range(this.pan_info,!0)}}e.PanToolView=h,h.__name__=\"PanToolView\";class l extends i.GestureTool{constructor(t){super(t),this.tool_name=\"Pan\",this.event_type=\"pan\",this.default_order=10}static init_PanTool(){this.prototype.default_view=h,this.define({dimensions:[o.Dimensions,\"both\"]}),this.register_alias(\"pan\",()=>new l({dimensions:\"both\"})),this.register_alias(\"xpan\",()=>new l({dimensions:\"width\"})),this.register_alias(\"ypan\",()=>new l({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(\"Pan\",this.dimensions)}get icon(){switch(this.dimensions){case\"both\":return a.bk_tool_icon_pan;case\"width\":return a.bk_tool_icon_xpan;case\"height\":return a.bk_tool_icon_ypan}}}e.PanTool=l,l.__name__=\"PanTool\",l.init_PanTool()},\n", + " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(124),l=e(19),a=s.__importStar(e(18)),r=e(306),o=e(309);function _(e){switch(e){case 1:return 2;case 2:return 1;case 4:return 5;case 5:return 4;default:return e}}function h(e,t,i,s){if(null==t)return!1;const n=i.compute(t);return Math.abs(e-n)n.right)&&(l=!1)}if(null!=n.bottom&&null!=n.top){const e=s.invert(t);(en.top)&&(l=!1)}return l}function u(e,t,i){let s=0;return e>=i.start&&e<=i.end&&(s+=1),t>=i.start&&t<=i.end&&(s+=1),s}function c(e,t,i,s){const n=t.compute(e),l=t.invert(n+i);return l>=s.start&&l<=s.end?l:e}function g(e,t,i){return e>t.start?(t.end=e,i):(t.end=t.start,t.start=e,_(i))}function y(e,t,i){return e=o&&(e.start=a,e.end=r)}i.flip_side=_,i.is_near=h,i.is_inside=d,i.sides_inside=u,i.compute_value=c,i.update_range_end_side=g,i.update_range_start_side=y,i.update_range=f;class p extends r.GestureToolView{initialize(){super.initialize(),this.side=0,this.model.update_overlay_from_ranges()}connect_signals(){super.connect_signals(),null!=this.model.x_range&&this.connect(this.model.x_range.change,()=>this.model.update_overlay_from_ranges()),null!=this.model.y_range&&this.connect(this.model.y_range.change,()=>this.model.update_overlay_from_ranges())}_pan_start(e){this.last_dx=0,this.last_dy=0;const t=this.model.x_range,i=this.model.y_range,{frame:s}=this.plot_view,l=s.x_scale,a=s.y_scale,r=this.model.overlay,{left:o,right:_,top:u,bottom:c}=r,g=this.model.overlay.properties.line_width.value()+n.EDGE_TOLERANCE;null!=t&&this.model.x_interaction&&(h(e.sx,o,l,g)?this.side=1:h(e.sx,_,l,g)?this.side=2:d(e.sx,e.sy,l,a,r)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&h(e.sy,c,a,g)&&(this.side=4),0==this.side&&h(e.sy,u,a,g)?this.side=5:d(e.sx,e.sy,l,a,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))}_pan(e){const t=this.plot_view.frame,i=e.deltaX-this.last_dx,s=e.deltaY-this.last_dy,n=this.model.x_range,l=this.model.y_range,a=t.x_scale,r=t.y_scale;if(null!=n)if(3==this.side||7==this.side)f(n,a,i,t.x_range);else if(1==this.side){const e=c(n.start,a,i,t.x_range);this.side=y(e,n,this.side)}else if(2==this.side){const e=c(n.end,a,i,t.x_range);this.side=g(e,n,this.side)}if(null!=l)if(6==this.side||7==this.side)f(l,r,s,t.y_range);else if(4==this.side){const e=c(l.start,r,s,t.y_range);this.side=y(e,l,this.side)}else if(5==this.side){const e=c(l.end,r,s,t.y_range);this.side=g(e,l,this.side)}this.last_dx=e.deltaX,this.last_dy=e.deltaY}_pan_end(e){this.side=0}}i.RangeToolView=p,p.__name__=\"RangeToolView\";const m=()=>new n.BoxAnnotation({level:\"overlay\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:.5,line_dash:[2,2]});class v extends r.GestureTool{constructor(e){super(e),this.tool_name=\"Range Tool\",this.icon=o.bk_tool_icon_range,this.event_type=\"pan\",this.default_order=1}static init_RangeTool(){this.prototype.default_view=p,this.define({x_range:[a.Instance,null],x_interaction:[a.Boolean,!0],y_range:[a.Instance,null],y_interaction:[a.Boolean,!0],overlay:[a.Instance,m]})}initialize(){super.initialize(),this.overlay.in_cursor=\"grab\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\"ew-resize\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\"ns-resize\":null}update_overlay_from_ranges(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,l.logger.warn(\"RangeTool not configured with any Ranges.\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)}}i.RangeTool=v,v.__name__=\"RangeTool\",v.init_RangeTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),i=e(364),c=o.__importStar(e(18)),n=e(309);class a extends i.SelectToolView{_tap(e){const{sx:t,sy:s}=e,o={type:\"point\",sx:t,sy:s};this._select(o,!0,this._select_mode(e))}_select(e,t,s){const o=this.model.callback;if(\"select\"==this.model.behavior){const i=this._computed_renderers_by_data_source();for(const[,c]of i){const i=c[0].get_selection_manager(),n=c.map(e=>this.plot_view.renderer_views.get(e));if(i.select(n,e,t,s)&&null!=o){const t=n[0].coordinates.x_scale.invert(e.sx),s=n[0].coordinates.y_scale.invert(e.sy),c={geometries:Object.assign(Object.assign({},e),{x:t,y:s}),source:i.source};o.execute(this.model,c)}}this._emit_selection_event(e),this.plot_view.push_state(\"tap\",{selection:this.plot_view.get_selection()})}else for(const t of this.computed_renderers){const s=this.plot_view.renderer_views.get(t),i=t.get_selection_manager();if(i.inspect(s,e)&&null!=o){const t=s.coordinates.x_scale.invert(e.sx),c=s.coordinates.y_scale.invert(e.sy),n={geometries:Object.assign(Object.assign({},e),{x:t,y:c}),source:i.source};o.execute(this.model,n)}}}}s.TapToolView=a,a.__name__=\"TapToolView\";class _ extends i.SelectTool{constructor(e){super(e),this.tool_name=\"Tap\",this.icon=n.bk_tool_icon_tap_select,this.event_type=\"tap\",this.default_order=10}static init_TapTool(){this.prototype.default_view=a,this.define({behavior:[c.TapBehavior,\"select\"],callback:[c.Any]}),this.register_alias(\"click\",()=>new _({behavior:\"inspect\"})),this.register_alias(\"tap\",()=>new _)}}s.TapTool=_,_.__name__=\"TapTool\",_.init_TapTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),o=e(306),n=i.__importStar(e(18)),a=e(309),l=e(371);class _ extends o.GestureToolView{_scroll(e){let t=this.model.speed*e.delta;t>.9?t=.9:t<-.9&&(t=-.9),this._update_ranges(t)}_update_ranges(e){const{frame:t}=this.plot_view,s=t.bbox.h_range,i=t.bbox.v_range,[o,n]=[s.start,s.end],[a,_]=[i.start,i.end];let h,r,d,p;switch(this.model.dimension){case\"height\":{const t=Math.abs(_-a);h=o,r=n,d=a-t*e,p=_-t*e;break}case\"width\":{const t=Math.abs(n-o);h=o-t*e,r=n-t*e,d=a,p=_;break}default:throw new Error(\"this shouldn't have happened\")}const{x_scales:c,y_scales:u}=t,m={xrs:l.update_ranges(c,h,r),yrs:l.update_ranges(u,d,p),factor:e};this.plot_view.push_state(\"wheel_pan\",{range:m}),this.plot_view.update_range(m,!1,!0),null!=this.model.document&&this.model.document.interactive_start(this.plot_model)}}s.WheelPanToolView=_,_.__name__=\"WheelPanToolView\";class h extends o.GestureTool{constructor(e){super(e),this.tool_name=\"Wheel Pan\",this.icon=a.bk_tool_icon_wheel_pan,this.event_type=\"scroll\",this.default_order=12}static init_WheelPanTool(){this.prototype.default_view=_,this.define({dimension:[n.Dimension,\"width\"]}),this.internal({speed:[n.Number,.001]}),this.register_alias(\"xwheel_pan\",()=>new h({dimension:\"width\"})),this.register_alias(\"ywheel_pan\",()=>new h({dimension:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimension)}}s.WheelPanTool=h,h.__name__=\"WheelPanTool\",h.init_WheelPanTool()},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1),i=e(306),l=e(354),n=s.__importStar(e(18)),_=e(32),h=e(309);class a extends i.GestureToolView{_pinch(e){const{sx:o,sy:t,scale:s,ctrlKey:i,shiftKey:l}=e;let n;n=s>=1?20*(s-1):-20/s,this._scroll({type:\"wheel\",sx:o,sy:t,delta:n,ctrlKey:i,shiftKey:l})}_scroll(e){const{frame:o}=this.plot_view,t=o.bbox.h_range,s=o.bbox.v_range,{sx:i,sy:n}=e,_=this.model.dimensions,h=(\"width\"==_||\"both\"==_)&&t.startnew m({dimensions:\"both\"})),this.register_alias(\"xwheel_zoom\",()=>new m({dimensions:\"width\"})),this.register_alias(\"ywheel_zoom\",()=>new m({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}t.WheelZoomTool=m,m.__name__=\"WheelZoomTool\",m.init_WheelZoomTool()},\n", + " function _(i,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const t=i(1),o=i(295),n=i(168),l=t.__importStar(i(18)),h=i(13),a=i(309);class r extends o.InspectToolView{_move(i){if(!this.model.active)return;const{sx:s,sy:e}=i;this.plot_view.frame.bbox.contains(s,e)?this._update_spans(s,e):this._update_spans(null,null)}_move_exit(i){this._update_spans(null,null)}_update_spans(i,s){const e=this.model.dimensions;\"width\"!=e&&\"both\"!=e||(this.model.spans.width.location=s),\"height\"!=e&&\"both\"!=e||(this.model.spans.height.location=i)}}e.CrosshairToolView=r,r.__name__=\"CrosshairToolView\";class _ extends o.InspectTool{constructor(i){super(i),this.tool_name=\"Crosshair\",this.icon=a.bk_tool_icon_crosshair}static init_CrosshairTool(){this.prototype.default_view=r,this.define({dimensions:[l.Dimensions,\"both\"],line_color:[l.Color,\"black\"],line_width:[l.Number,1],line_alpha:[l.Number,1]}),this.internal({spans:[l.Any]}),this.register_alias(\"crosshair\",()=>new _)}get tooltip(){return this._get_dim_tooltip(\"Crosshair\",this.dimensions)}get synthetic_renderers(){return h.values(this.spans)}initialize(){super.initialize(),this.spans={width:new n.Span({for_hover:!0,dimension:\"width\",location_units:\"screen\",level:\"overlay\",line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha}),height:new n.Span({for_hover:!0,dimension:\"height\",location_units:\"screen\",level:\"overlay\",line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha})}}}e.CrosshairTool=_,_.__name__=\"CrosshairTool\",_.init_CrosshairTool()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const r=e(1),o=e(81),i=r.__importStar(e(18)),a=e(13),n=e(29);class u extends o.Model{constructor(e){super(e)}static init_CustomJSHover(){this.define({args:[i.Any,{}],code:[i.String,\"\"]})}get values(){return a.values(this.args)}_make_code(e,t,s,r){return new Function(...a.keys(this.args),e,t,s,n.use_strict(r))}format(e,t,s){return this._make_code(\"value\",\"format\",\"special_vars\",this.code)(...this.values,e,t,s)}}s.CustomJSHover=u,u.__name__=\"CustomJSHover\",u.init_CustomJSHover()},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),n=e(295),i=e(171),r=e(90),l=e(116),c=e(365),a=o.__importStar(e(101)),_=e(187),d=e(72),p=o.__importStar(e(18)),h=e(22),m=e(13),u=e(303),y=e(8),f=e(115),x=e(309),v=e(172);function w(e,t,s,o,n,i){const r={x:n[e],y:i[e]},l={x:n[e+1],y:i[e+1]};let c,_;if(\"span\"==t.type)\"h\"==t.direction?(c=Math.abs(r.x-s),_=Math.abs(l.x-s)):(c=Math.abs(r.y-o),_=Math.abs(l.y-o));else{const e={x:s,y:o};c=a.dist_2_pts(r,e),_=a.dist_2_pts(l,e)}return c<_?[[r.x,r.y],e]:[[l.x,l.y],e+1]}function g(e,t,s){return[[e[s],t[s]],s]}s._nearest_line_hit=w,s._line_hit=g;class b extends n.InspectToolView{initialize(){super.initialize(),this._ttmodels=null,this._ttviews=new Map;const{tooltips:e}=this.model;y.isArray(e)&&(this._template_el=this._create_template(e))}remove(){f.remove_views(this._ttviews),super.remove()}connect_signals(){super.connect_signals();for(const e of this.computed_renderers)e instanceof r.GlyphRenderer?this.connect(e.data_source.inspect,this._update):e instanceof l.GraphRenderer&&(this.connect(e.node_renderer.data_source.inspect,this._update),this.connect(e.edge_renderer.data_source.inspect,this._update));this.connect(this.model.properties.renderers.change,()=>this._computed_renderers=this._ttmodels=null),this.connect(this.model.properties.names.change,()=>this._computed_renderers=this._ttmodels=null),this.connect(this.model.properties.tooltips.change,()=>this._ttmodels=null)}_compute_ttmodels(){const e=new Map,t=this.model.tooltips;if(null!=t)for(const s of this.computed_renderers){const o=new i.Tooltip({custom:y.isString(t)||y.isFunction(t),attachment:this.model.attachment,show_arrow:this.model.show_arrow});s instanceof r.GlyphRenderer?e.set(s,o):s instanceof l.GraphRenderer&&(e.set(s.node_renderer,o),e.set(s.edge_renderer,o))}return(async()=>{const t=await f.build_views(this._ttviews,[...e.values()],{parent:this.plot_view});for(const e of t)e.render()})(),e}get computed_renderers(){if(null==this._computed_renderers){const e=this.model.renderers,t=this.plot_model.renderers,s=this.model.names;this._computed_renderers=c.compute_renderers(e,t,s)}return this._computed_renderers}get ttmodels(){return null==this._ttmodels&&(this._ttmodels=this._compute_ttmodels()),this._ttmodels}_clear(){this._inspect(1/0,1/0);for(const[,e]of this.ttmodels)e.clear()}_move(e){if(!this.model.active)return;const{sx:t,sy:s}=e;this.plot_view.frame.bbox.contains(t,s)?this._inspect(t,s):this._clear()}_move_exit(){this._clear()}_inspect(e,t){let s;if(\"mouse\"==this.model.mode)s={type:\"point\",sx:e,sy:t};else{s={type:\"span\",direction:\"vline\"==this.model.mode?\"h\":\"v\",sx:e,sy:t}}for(const e of this.computed_renderers){e.get_selection_manager().inspect(this.plot_view.renderer_views.get(e),s)}null!=this.model.callback&&this._emit_callback(s)}_update([e,{geometry:t}]){if(!this.model.active)return;if(!(e instanceof r.GlyphRendererView))return;const{model:s}=e;if(\"ignore\"==this.model.muted_policy&&s instanceof r.GlyphRenderer&&s.muted)return;const o=this.ttmodels.get(s);if(null==o)return;const n=s.get_selection_manager();let i=n.inspectors.get(s);if(s instanceof r.GlyphRenderer&&(i=s.view.convert_selection_to_subset(i)),i.is_empty())return void o.clear();const l=n.source,{sx:c,sy:a}=t,_=e.coordinates.x_scale,p=e.coordinates.y_scale,h=_.invert(c),u=p.invert(a),y=e.glyph,f=[];for(const s of i.line_indices){let o,n,r=y._x[s+1],d=y._y[s+1],m=s;switch(this.model.line_policy){case\"interp\":[r,d]=y.get_interpolation_hit(s,t),o=_.compute(r),n=p.compute(d);break;case\"prev\":[[o,n],m]=g(y.sx,y.sy,s);break;case\"next\":[[o,n],m]=g(y.sx,y.sy,s+1);break;case\"nearest\":[[o,n],m]=w(s,t,c,a,y.sx,y.sy),r=y._x[m],d=y._y[m];break;default:[o,n]=[c,a]}const x={index:m,x:h,y:u,sx:c,sy:a,data_x:r,data_y:d,rx:o,ry:n,indices:i.line_indices,name:e.model.name};f.push([o,n,this._render_tooltips(l,m,x)])}for(const t of i.image_indices){const s={index:t.index,x:h,y:u,sx:c,sy:a,name:e.model.name},o=this._render_tooltips(l,t,s);f.push([c,a,o])}for(const o of i.indices)if(m.isEmpty(i.multiline_indices)){const t=null!=y._x?y._x[o]:void 0,n=null!=y._y?y._y[o]:void 0;let _,d,p;if(\"snap_to_data\"==this.model.point_policy){let e=y.get_anchor_point(this.model.anchor,o,[c,a]);null==e&&(e=y.get_anchor_point(\"center\",o,[c,a])),_=e.x,d=e.y}else[_,d]=[c,a];p=s instanceof r.GlyphRenderer?s.view.convert_indices_from_subset([o])[0]:o;const m={index:p,x:h,y:u,sx:c,sy:a,data_x:t,data_y:n,indices:i.indices,name:e.model.name};f.push([_,d,this._render_tooltips(l,p,m)])}else for(const n of i.multiline_indices[o.toString()]){let d,m,x,v=y._xs[o][n],b=y._ys[o][n],k=n;switch(this.model.line_policy){case\"interp\":[v,b]=y.get_interpolation_hit(o,n,t),d=_.compute(v),m=p.compute(b);break;case\"prev\":[[d,m],k]=g(y.sxs[o],y.sys[o],n);break;case\"next\":[[d,m],k]=g(y.sxs[o],y.sys[o],n+1);break;case\"nearest\":[[d,m],k]=w(n,t,c,a,y.sxs[o],y.sys[o]),v=y._xs[o][k],b=y._ys[o][k];break;default:throw new Error(\"should't have happened\")}x=s instanceof r.GlyphRenderer?s.view.convert_indices_from_subset([o])[0]:o;const A={index:x,x:h,y:u,sx:c,sy:a,data_x:v,data_y:b,segment_index:k,indices:i.multiline_indices,name:e.model.name};f.push([d,m,this._render_tooltips(l,x,A)])}if(0==f.length)o.clear();else{const{content:e}=o;d.empty(o.content);for(const[,,t]of f)e.appendChild(t);const[t,s]=f[f.length-1];o.setv({position:[t,s]},{check_eq:!1})}}_emit_callback(e){for(const t of this.computed_renderers){const s=this.plot_view.renderer_views.get(t),o=s.coordinates.x_scale.invert(e.sx),n=s.coordinates.y_scale.invert(e.sy),i=t.data_source.inspected,r=Object.assign({x:o,y:n},e);this.model.callback.execute(this.model,{index:i,geometry:r,renderer:t})}}_create_template(e){const t=d.div({style:{display:\"table\",borderSpacing:\"2px\"}});for(const[s]of e){const e=d.div({style:{display:\"table-row\"}});t.appendChild(e);const o=d.div({style:{display:\"table-cell\"},class:v.bk_tooltip_row_label},0!=s.length?s+\": \":\"\");e.appendChild(o);const n=d.span();n.dataset.value=\"\";const i=d.span({class:v.bk_tooltip_color_block},\" \");i.dataset.swatch=\"\",d.undisplay(i);const r=d.div({style:{display:\"table-cell\"},class:v.bk_tooltip_row_value},n,i);e.appendChild(r)}return t}_render_template(e,t,s,o,n){const i=e.cloneNode(!0),r=i.querySelectorAll(\"[data-value]\"),l=i.querySelectorAll(\"[data-swatch]\"),c=/\\$color(\\[.*\\])?:(\\w*)/;for(const[[,e],i]of u.enumerate(t)){const t=e.match(c);if(null!=t){const[,e=\"\",n]=t,c=s.get_column(n);if(null==c){r[i].textContent=n+\" unknown\";continue}const a=e.indexOf(\"hex\")>=0,_=e.indexOf(\"swatch\")>=0;let p=y.isNumber(o)?c[o]:null;if(null==p){r[i].textContent=\"(null)\";continue}a&&(p=h.color2hex(p)),r[i].textContent=p,_&&(l[i].style.backgroundColor=p,d.display(l[i]))}else{const t=_.replace_placeholders(e.replace(\"$~\",\"$data_\"),s,o,this.model.formatters,n);if(y.isString(t))r[i].textContent=t;else for(const e of t)r[i].appendChild(e)}}return i}_render_tooltips(e,t,s){const o=this.model.tooltips;if(y.isString(o)){const n=_.replace_placeholders({html:o},e,t,this.model.formatters,s);return d.div({},n)}return y.isFunction(o)?o(e,s):this._render_template(this._template_el,o,e,t,s)}}s.HoverToolView=b,b.__name__=\"HoverToolView\";class k extends n.InspectTool{constructor(e){super(e),this.tool_name=\"Hover\",this.icon=x.bk_tool_icon_hover}static init_HoverTool(){this.prototype.default_view=b,this.define({tooltips:[p.Any,[[\"index\",\"$index\"],[\"data (x, y)\",\"($x, $y)\"],[\"screen (x, y)\",\"($sx, $sy)\"]]],formatters:[p.Any,{}],renderers:[p.Any,\"auto\"],names:[p.Array,[]],mode:[p.HoverMode,\"mouse\"],muted_policy:[p.MutedPolicy,\"show\"],point_policy:[p.PointPolicy,\"snap_to_data\"],line_policy:[p.LinePolicy,\"nearest\"],show_arrow:[p.Boolean,!0],anchor:[p.Anchor,\"center\"],attachment:[p.TooltipAttachment,\"horizontal\"],callback:[p.Any]}),this.register_alias(\"hover\",()=>new k)}}s.HoverTool=k,k.__name__=\"HoverTool\",k.init_HoverTool()},\n", + " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(1).__importStar(t(18)),n=t(15),s=t(81),l=t(295),c=t(303);class r extends s.Model{constructor(t){super(t)}static init_ToolProxy(){this.define({tools:[i.Array,[]],active:[i.Boolean,!1],disabled:[i.Boolean,!1]})}get button_view(){return this.tools[0].button_view}get event_type(){return this.tools[0].event_type}get tooltip(){return this.tools[0].tooltip}get tool_name(){return this.tools[0].tool_name}get icon(){return this.tools[0].computed_icon}get computed_icon(){return this.icon}get toggleable(){const t=this.tools[0];return t instanceof l.InspectTool&&t.toggleable}initialize(){super.initialize(),this.do=new n.Signal0(this,\"do\")}connect_signals(){super.connect_signals(),this.connect(this.do,()=>this.doit()),this.connect(this.properties.active.change,()=>this.set_active());for(const t of this.tools)this.connect(t.properties.active.change,()=>{this.active=t.active})}doit(){for(const t of this.tools)t.do.emit()}set_active(){for(const t of this.tools)t.active=this.active}get menu(){const{menu:t}=this.tools[0];if(null==t)return null;const o=[];for(const[e,i]of c.enumerate(t))if(null==e)o.push(null);else{const t=()=>{var t,o;for(const e of this.tools)null===(o=null===(t=e.menu)||void 0===t?void 0:t[i])||void 0===o||o.handler()};o.push(Object.assign(Object.assign({},e),{handler:t}))}return o}}e.ToolProxy=r,r.__name__=\"ToolProxy\",r.init_ToolProxy()},\n", + " function _(o,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=o(1).__importStar(o(18)),e=o(9),n=o(13),r=o(305),l=o(379),c=o(272),h=o(212);class a extends r.ToolbarBase{constructor(o){super(o)}static init_ProxyToolbar(){this.define({toolbars:[i.Array,[]]})}initialize(){super.initialize(),this._merge_tools()}_merge_tools(){this._proxied_tools=[];const o={},t={},s={},i=[],r=[];for(const o of this.help)e.includes(r,o.redirect)||(i.push(o),r.push(o.redirect));this._proxied_tools.push(...i),this.help=i;for(const[o,t]of n.entries(this.gestures)){o in s||(s[o]={});for(const i of t.tools)i.type in s[o]||(s[o][i.type]=[]),s[o][i.type].push(i)}for(const t of this.inspectors)t.type in o||(o[t.type]=[]),o[t.type].push(t);for(const o of this.actions)o.type in t||(t[o.type]=[]),t[o.type].push(o);const c=(o,t=!1)=>{const s=new l.ToolProxy({tools:o,active:t});return this._proxied_tools.push(s),s};for(const o of n.keys(s)){const t=this.gestures[o];t.tools=[];for(const i of n.keys(s[o])){const e=s[o][i];if(e.length>0)if(\"multi\"==o)for(const o of e){const s=c([o]);t.tools.push(s),this.connect(s.properties.active.change,()=>this._active_change(s))}else{const o=c(e);t.tools.push(o),this.connect(o.properties.active.change,()=>this._active_change(o))}}}this.actions=[];for(const[o,s]of n.entries(t))if(\"CustomAction\"==o)for(const o of s)this.actions.push(c([o]));else s.length>0&&this.actions.push(c(s));this.inspectors=[];for(const t of n.values(o))t.length>0&&this.inspectors.push(c(t,!0));for(const[o,t]of n.entries(this.gestures))0!=t.tools.length&&(t.tools=e.sort_by(t.tools,o=>o.default_order),\"pinch\"!=o&&\"scroll\"!=o&&\"multi\"!=o&&(t.tools[0].active=!0))}}s.ProxyToolbar=a,a.__name__=\"ProxyToolbar\",a.init_ProxyToolbar();class _ extends c.LayoutDOMView{initialize(){this.model.toolbar.toolbar_location=this.model.toolbar_location,super.initialize()}get child_models(){return[this.model.toolbar]}_update_layout(){this.layout=new h.ContentBox(this.child_views[0].el);const{toolbar:o}=this.model;o.horizontal?this.layout.set_sizing({width_policy:\"fit\",min_width:100,height_policy:\"fixed\"}):this.layout.set_sizing({width_policy:\"fixed\",height_policy:\"fit\",min_height:100})}}s.ToolbarBoxView=_,_.__name__=\"ToolbarBoxView\";class p extends c.LayoutDOM{constructor(o){super(o)}static init_ToolbarBox(){this.prototype.default_view=_,this.define({toolbar:[i.Instance],toolbar_location:[i.Location,\"right\"]})}}s.ToolbarBox=p,p.__name__=\"ToolbarBox\",p.init_ToolbarBox()},\n", + " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(5),i=e(78),d=e(115),c=e(72),l=e(382);t.index={},t.add_document_standalone=async function(e,n,s=[],a=!1){const u=new Map;async function r(o){let a;const r=e.roots().indexOf(o),f=s[r];null!=f?a=f:n.classList.contains(l.BOKEH_ROOT)?a=n:(a=c.div({class:l.BOKEH_ROOT}),n.appendChild(a));const v=await d.build_view(o,{parent:null});return v instanceof i.DOMView&&v.renderTo(a),u.set(o,v),t.index[o.id]=v,v}for(const n of e.roots())await r(n);return a&&(window.document.title=e.title()),e.on_change(e=>{e instanceof o.RootAddedEvent?r(e.model):e instanceof o.RootRemovedEvent?function(e){const n=u.get(e);null!=n&&(n.remove(),u.delete(e),delete t.index[e.id])}(e.model):a&&e instanceof o.TitleChangedEvent&&(window.document.title=e.title)}),[...u.values()]}},\n", + " function _(e,o,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(72),r=e(273);function l(e){let o=document.getElementById(e);if(null==o)throw new Error(`Error rendering Bokeh model: could not find #${e} HTML tag`);if(!document.body.contains(o))throw new Error(`Error rendering Bokeh model: element #${e} must be under `);if(\"SCRIPT\"==o.tagName){const e=t.div({class:n.BOKEH_ROOT});t.replaceWith(o,e),o=e}return o}n.BOKEH_ROOT=r.bk_root,n._resolve_element=function(e){const{elementid:o}=e;return null!=o?l(o):document.body},n._resolve_root_elements=function(e){const o=[];if(null!=e.root_ids&&null!=e.roots)for(const n of e.root_ids)o.push(l(e.roots[n]));return o}},\n", + " function _(n,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const e=n(384),s=n(19),c=n(381);t._get_ws_url=function(n,o){let t,e=\"ws:\";return\"https:\"==window.location.protocol&&(e=\"wss:\"),null!=o?(t=document.createElement(\"a\"),t.href=o):t=window.location,null!=n?\"/\"==n&&(n=\"\"):n=t.pathname.replace(/\\/+$/,\"\"),e+\"//\"+t.host+n+\"/ws\"};const r={};t.add_document_from_session=async function(n,o,t,a=[],i=!1){const l=window.location.search.substr(1);let d;try{d=await function(n,o,t){const s=e.parse_token(o).session_id;n in r||(r[n]={});const c=r[n];return s in c||(c[s]=e.pull_session(n,o,t)),c[s]}(n,o,l)}catch(n){const t=e.parse_token(o).session_id;throw s.logger.error(`Failed to load Bokeh session ${t}: ${n}`),n}return c.add_document_standalone(d.document,t,a,i)}},\n", + " function _(e,s,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(19),o=e(5),r=e(385),i=e(386),c=e(387);n.DEFAULT_SERVER_WEBSOCKET_URL=\"ws://localhost:5006/ws\",n.DEFAULT_TOKEN=\"eyJzZXNzaW9uX2lkIjogImRlZmF1bHQifQ\";let l=0;function _(e){let s=e.split(\".\")[0];const n=s.length%4;return 0!=n&&(s+=\"=\".repeat(4-n)),JSON.parse(atob(s.replace(/_/g,\"/\").replace(/-/g,\"+\")))}n.parse_token=_;class h{constructor(e=n.DEFAULT_SERVER_WEBSOCKET_URL,s=n.DEFAULT_TOKEN,o=null){this.url=e,this.token=s,this.args_string=o,this._number=l++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_replies=new Map,this._pending_messages=[],this._receiver=new i.Receiver,this.id=_(s).session_id.split(\".\")[0],t.logger.debug(`Creating websocket ${this._number} to '${this.url}' session '${this.id}'`)}async connect(){if(this.closed_permanently)throw new Error(\"Cannot connect() a closed ClientConnection\");if(null!=this.socket)throw new Error(\"Already connected\");this._current_handler=null,this._pending_replies.clear(),this._pending_messages=[];try{let e=\"\"+this.url;return null!=this.args_string&&this.args_string.length>0&&(e+=\"?\"+this.args_string),this.socket=new WebSocket(e,[\"bokeh\",this.token]),new Promise((e,s)=>{this.socket.binaryType=\"arraybuffer\",this.socket.onopen=()=>this._on_open(e,s),this.socket.onmessage=e=>this._on_message(e),this.socket.onclose=e=>this._on_close(e,s),this.socket.onerror=()=>this._on_error(s)})}catch(e){throw t.logger.error(\"websocket creation failed to url: \"+this.url),t.logger.error(\" - \"+e),e}}close(){this.closed_permanently||(t.logger.debug(\"Permanently closing websocket connection \"+this._number),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,\"close method called on ClientConnection \"+this._number),this.session._connection_closed())}_schedule_reconnect(e){setTimeout(()=>{this.closed_permanently||t.logger.info(`Websocket connection ${this._number} disconnected, will not attempt to reconnect`)},e)}send(e){if(null==this.socket)throw new Error(\"not connected so cannot send \"+e);e.send(this.socket)}async send_with_reply(e){const s=await new Promise((s,n)=>{this._pending_replies.set(e.msgid(),{resolve:s,reject:n}),this.send(e)});if(\"ERROR\"===s.msgtype())throw new Error(\"Error reply \"+s.content.text);return s}async _pull_doc_json(){const e=r.Message.create(\"PULL-DOC-REQ\",{}),s=await this.send_with_reply(e);if(!(\"doc\"in s.content))throw new Error(\"No 'doc' field in PULL-DOC-REPLY\");return s.content.doc}async _repull_session_doc(e,s){var n;t.logger.debug(this.session?\"Repulling session\":\"Pulling session for first time\");try{const n=await this._pull_doc_json();if(null==this.session)if(this.closed_permanently)t.logger.debug(\"Got new document after connection was already closed\"),s(new Error(\"The connection has been closed\"));else{const s=o.Document.from_json(n),i=o.Document._compute_patch_since_json(n,s);if(i.events.length>0){t.logger.debug(`Sending ${i.events.length} changes from model construction back to server`);const e=r.Message.create(\"PATCH-DOC\",{},i);this.send(e)}this.session=new c.ClientSession(this,s,this.id);for(const e of this._pending_messages)this.session.handle(e);this._pending_messages=[],t.logger.debug(\"Created a new session from new pulled doc\"),e(this.session)}else this.session.document.replace_with_json(n),t.logger.debug(\"Updated existing session with new pulled doc\")}catch(e){null===(n=console.trace)||void 0===n||n.call(console,e),t.logger.error(\"Failed to repull session \"+e),s(e)}}_on_open(e,s){t.logger.info(`Websocket connection ${this._number} is now open`),this._current_handler=n=>{this._awaiting_ack_handler(n,e,s)}}_on_message(e){null==this._current_handler&&t.logger.error(\"Got a message with no current handler set\");try{this._receiver.consume(e.data)}catch(e){this._close_bad_protocol(e.toString())}const s=this._receiver.message;if(null!=s){const e=s.problem();null!=e&&this._close_bad_protocol(e),this._current_handler(s)}}_on_close(e,s){t.logger.info(`Lost websocket ${this._number} connection, ${e.code} (${e.reason})`),this.socket=null,this._pending_replies.forEach(e=>e.reject(\"Disconnected\")),this._pending_replies.clear(),this.closed_permanently||this._schedule_reconnect(2e3),s(new Error(`Lost websocket connection, ${e.code} (${e.reason})`))}_on_error(e){t.logger.debug(\"Websocket error on socket \"+this._number);const s=\"Could not open websocket\";t.logger.error(\"Failed to connect to Bokeh server: \"+s),e(new Error(s))}_close_bad_protocol(e){t.logger.error(\"Closing connection: \"+e),null!=this.socket&&this.socket.close(1002,e)}_awaiting_ack_handler(e,s,n){\"ACK\"===e.msgtype()?(this._current_handler=e=>this._steady_state_handler(e),this._repull_session_doc(s,n)):this._close_bad_protocol(\"First message was not an ACK\")}_steady_state_handler(e){const s=e.reqid(),n=this._pending_replies.get(s);n?(this._pending_replies.delete(s),n.resolve(e)):this.session?this.session.handle(e):\"PATCH-DOC\"!=e.msgtype()&&this._pending_messages.push(e)}}n.ClientConnection=h,h.__name__=\"ClientConnection\",n.pull_session=function(e,s,n){return new h(e,s,n).connect()}},\n", + " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const r=e(29);class n{constructor(e,s,t){this.header=e,this.metadata=s,this.content=t,this.buffers=new Map}static assemble(e,s,t){const r=JSON.parse(e),i=JSON.parse(s),a=JSON.parse(t);return new n(r,i,a)}assemble_buffer(e,s){const t=null!=this.header.num_buffers?this.header.num_buffers:0;if(t<=this.buffers.size)throw new Error(\"too many buffers received, expecting \"+t);const{id:r}=JSON.parse(e);this.buffers.set(r,s)}static create(e,s,t={}){const r=n.create_header(e);return new n(r,s,t)}static create_header(e){return{msgid:r.uniqueId(),msgtype:e}}complete(){return null!=this.header&&null!=this.metadata&&null!=this.content&&(null==this.header.num_buffers||this.buffers.size==this.header.num_buffers)}send(e){if((null!=this.header.num_buffers?this.header.num_buffers:0)>0)throw new Error(\"BokehJS only supports receiving buffers, not sending\");const s=JSON.stringify(this.header),t=JSON.stringify(this.metadata),r=JSON.stringify(this.content);e.send(s),e.send(t),e.send(r)}msgid(){return this.header.msgid}msgtype(){return this.header.msgtype}reqid(){return this.header.reqid}problem(){return\"msgid\"in this.header?\"msgtype\"in this.header?null:\"No msgtype in header\":\"No msgid in header\"}}t.Message=n,n.__name__=\"Message\"},\n", + " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const _=e(385),r=e(8);class i{constructor(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}consume(e){this._current_consumer(e)}_HEADER(e){this._assume_text(e),this.message=null,this._partial=null,this._fragments=[e],this._buf_header=null,this._current_consumer=this._METADATA}_METADATA(e){this._assume_text(e),this._fragments.push(e),this._current_consumer=this._CONTENT}_CONTENT(e){this._assume_text(e),this._fragments.push(e);const[t,s,r]=this._fragments.slice(0,3);this._partial=_.Message.assemble(t,s,r),this._check_complete()}_BUFFER_HEADER(e){this._assume_text(e),this._buf_header=e,this._current_consumer=this._BUFFER_PAYLOAD}_BUFFER_PAYLOAD(e){this._assume_binary(e),this._partial.assemble_buffer(this._buf_header,e),this._check_complete()}_assume_text(e){if(!r.isString(e))throw new Error(\"Expected text fragment but received binary fragment\")}_assume_binary(e){if(!(e instanceof ArrayBuffer))throw new Error(\"Expected binary fragment but received text fragment\")}_check_complete(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER}}s.Receiver=i,i.__name__=\"Receiver\"},\n", + " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(5),s=e(385),c=e(19);class i{constructor(e,t,n){this._connection=e,this.document=t,this.id=n,this._document_listener=e=>{this._document_changed(e)},this.document.on_change(this._document_listener,!0)}handle(e){const t=e.msgtype();\"PATCH-DOC\"===t?this._handle_patch(e):\"OK\"===t?this._handle_ok(e):\"ERROR\"===t?this._handle_error(e):c.logger.debug(\"Doing nothing with message \"+e.msgtype())}close(){this._connection.close()}_connection_closed(){this.document.remove_on_change(this._document_listener)}async request_server_info(){const e=s.Message.create(\"SERVER-INFO-REQ\",{});return(await this._connection.send_with_reply(e)).content}async force_roundtrip(){await this.request_server_info()}_document_changed(e){if(e.setter_id===this.id)return;const t=e instanceof o.DocumentEventBatch?e.events:[e],n=this.document.create_json_patch(t),c=s.Message.create(\"PATCH-DOC\",{},n);this._connection.send(c)}_handle_patch(e){this.document.apply_json_patch(e.content,e.buffers,this.id)}_handle_ok(e){c.logger.trace(\"Unhandled OK reply to \"+e.reqid())}_handle_error(e){c.logger.error(`Unhandled ERROR reply to ${e.reqid()}: ${e.content.text}`)}}n.ClientSession=i,i.__name__=\"ClientSession\"},\n", + " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1);var r=this&&this.__asyncValues||function(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var o,t=e[Symbol.asyncIterator];return t?t.call(e):(e=\"function\"==typeof __values?__values(e):e[Symbol.iterator](),o={},n(\"next\"),n(\"throw\"),n(\"return\"),o[Symbol.asyncIterator]=function(){return this},o);function n(t){o[t]=e[t]&&function(o){return new Promise((function(n,r){(function(e,o,t,n){Promise.resolve(n).then((function(o){e({value:o,done:t})}),o)})(n,r,(o=e[t](o)).done,o.value)}))}}};const s=e(5),i=e(386),l=e(19),a=e(72),c=e(13),u=e(381),f=e(382),g=n.__importDefault(e(73)),m=n.__importDefault(e(311)),d=n.__importDefault(e(389));function p(e,o){o.buffers.length>0?e.consume(o.buffers[0].buffer):e.consume(o.content.data);const t=e.message;null!=t&&this.apply_json_patch(t.content,t.buffers)}function _(e,o){if(\"undefined\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){l.logger.info(\"Registering Jupyter comms for target \"+e);const t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(e,t=>{l.logger.info(\"Registering Jupyter comms for target \"+e);const n=new i.Receiver;t.on_msg(p.bind(o,n))})}catch(e){l.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(o.roots()[0].id in t.kernels){l.logger.info(\"Registering JupyterLab comms for target \"+e);const n=t.kernels[o.roots()[0].id];try{n.registerCommTarget(e,t=>{l.logger.info(\"Registering JupyterLab comms for target \"+e);const n=new i.Receiver;t.onMsg=p.bind(o,n)})}catch(e){l.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(\"undefined\"!=typeof google&&null!=google.colab.kernel){l.logger.info(\"Registering Google Colab comms for target \"+e);const t=google.colab.kernel.comms;try{t.registerTarget(e,async t=>{var n,s,a;l.logger.info(\"Registering Google Colab comms for target \"+e);const c=new i.Receiver;try{for(var u,f=r(t.messages);!(u=await f.next()).done;){const e=u.value,t={data:e.data},n=[];for(const o of null!==(a=e.buffers)&&void 0!==a?a:[])n.push(new DataView(o));const r={content:t,buffers:n};p.bind(o)(c,r)}}catch(e){n={error:e}}finally{try{u&&!u.done&&(s=f.return)&&await s.call(f)}finally{if(n)throw n.error}}})}catch(e){l.logger.warn(`Google Colab comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else console.warn(\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest @bokeh/jupyter_bokeh extension is installed. In an exported notebook this warning is expected.\")}a.stylesheet.append(g.default),a.stylesheet.append(m.default),a.stylesheet.append(d.default),t.kernels={},t.embed_items_notebook=function(e,o){if(1!=c.size(e))throw new Error(\"embed_items_notebook expects exactly one document in docs_json\");const t=s.Document.from_json(c.values(e)[0]);for(const e of o){null!=e.notebook_comms_target&&_(e.notebook_comms_target,t);const o=f._resolve_element(e),n=f._resolve_root_elements(e);u.add_document_standalone(t,o,n)}}},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});o.default=\"\\n/* notebook specific tweaks so no black outline and matching padding\\n/* can't be wrapped inside bk-root. here are the offending jupyter lines:\\n/* https://github.com/jupyter/notebook/blob/master/notebook/static/notebook/less/renderedhtml.less#L59-L76 */\\n.rendered_html .bk-root .bk-tooltip table,\\n.rendered_html .bk-root .bk-tooltip tr,\\n.rendered_html .bk-root .bk-tooltip th,\\n.rendered_html .bk-root .bk-tooltip td {\\n border: none;\\n padding: 1px;\\n}\\n\"},\n", + " function _(e,t,_){Object.defineProperty(_,\"__esModule\",{value:!0});const o=e(1);o.__exportStar(e(385),_),o.__exportStar(e(386),_)},\n", + " function _(e,t,n){function s(){const e=document.getElementsByTagName(\"body\")[0],t=document.getElementsByClassName(\"bokeh-test-div\");1==t.length&&(e.removeChild(t[0]),delete t[0]);const n=document.createElement(\"div\");n.classList.add(\"bokeh-test-div\"),n.style.display=\"none\",e.insertBefore(n,e.firstChild)}Object.defineProperty(n,\"__esModule\",{value:!0}),n.results={},n.init=function(){s()},n.record0=function(e,t){n.results[e]=t},n.record=function(e,t){n.results[e]=t,s()},n.count=function(e){null==n.results[e]&&(n.results[e]=0),n.results[e]+=1,s()}},\n", + " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0}),o.safely=function(e,t=!1){try{return e()}catch(e){if(function(e){const t=document.createElement(\"div\");t.style.backgroundColor=\"#f2dede\",t.style.border=\"1px solid #a94442\",t.style.borderRadius=\"4px\",t.style.display=\"inline-block\",t.style.fontFamily=\"sans-serif\",t.style.marginTop=\"5px\",t.style.minWidth=\"200px\",t.style.padding=\"5px 5px 5px 10px\",t.classList.add(\"bokeh-error-box-into-flames\");const o=document.createElement(\"span\");o.style.backgroundColor=\"#a94442\",o.style.borderRadius=\"0px 4px 0px 0px\",o.style.color=\"white\",o.style.cursor=\"pointer\",o.style.cssFloat=\"right\",o.style.fontSize=\"0.8em\",o.style.margin=\"-6px -6px 0px 0px\",o.style.padding=\"2px 5px 4px 5px\",o.title=\"close\",o.setAttribute(\"aria-label\",\"close\"),o.appendChild(document.createTextNode(\"x\")),o.addEventListener(\"click\",()=>r.removeChild(t));const n=document.createElement(\"h3\");n.style.color=\"#a94442\",n.style.margin=\"8px 0px 0px 0px\",n.style.padding=\"0px\",n.appendChild(document.createTextNode(\"Bokeh Error\"));const l=document.createElement(\"pre\");l.style.whiteSpace=\"unset\",l.style.overflowX=\"auto\";const s=e instanceof Error?e.message:e;l.appendChild(document.createTextNode(s)),t.appendChild(o),t.appendChild(n),t.appendChild(l);const r=document.getElementsByTagName(\"body\")[0];r.insertBefore(t,r.firstChild)}(e),t)return;throw e}}},\n", + " ], 0, {\"main\":0,\"tslib\":1,\"index\":2,\"version\":3,\"embed/index\":4,\"document/index\":5,\"document/document\":6,\"base\":7,\"core/util/types\":8,\"core/util/array\":9,\"core/util/math\":10,\"core/util/assert\":11,\"core/util/arrayable\":12,\"core/util/object\":13,\"core/has_props\":14,\"core/signaling\":15,\"core/util/callback\":16,\"core/util/refs\":17,\"core/properties\":18,\"core/logging\":19,\"core/enums\":20,\"core/kinds\":21,\"core/util/color\":22,\"core/util/svg_colors\":23,\"core/types\":24,\"core/util/eq\":25,\"core/util/data_structures\":26,\"core/settings\":27,\"core/property_mixins\":28,\"core/util/string\":29,\"core/util/ndarray\":30,\"core/util/serialization\":31,\"core/util/compat\":32,\"core/util/pretty\":33,\"models/index\":34,\"models/annotations/index\":35,\"models/annotations/annotation\":36,\"core/util/projections\":37,\"models/renderers/renderer\":70,\"core/view\":71,\"core/dom\":72,\"styles/root.css\":73,\"core/visuals\":74,\"core/util/svg\":75,\"core/util/affine\":76,\"models/canvas/canvas\":77,\"core/dom_view\":78,\"core/util/bbox\":79,\"core/util/canvas\":80,\"model\":81,\"models/canvas/coordinates\":82,\"models/annotations/arrow\":83,\"models/annotations/arrow_head\":84,\"models/sources/column_data_source\":85,\"models/sources/columnar_data_source\":86,\"models/sources/data_source\":87,\"models/selections/selection\":88,\"core/selection_manager\":89,\"models/renderers/glyph_renderer\":90,\"models/renderers/data_renderer\":91,\"models/glyphs/line\":92,\"models/glyphs/xy_glyph\":93,\"models/glyphs/glyph\":94,\"core/util/spatial\":95,\"models/ranges/factor_range\":98,\"models/ranges/range\":99,\"models/glyphs/utils\":100,\"core/hittest\":101,\"models/glyphs/webgl/line\":102,\"models/glyphs/webgl/utils/index\":103,\"models/glyphs/webgl/utils/program\":104,\"models/glyphs/webgl/utils/buffer\":105,\"models/glyphs/webgl/utils/texture\":106,\"models/glyphs/webgl/base\":107,\"models/glyphs/webgl/line.vert\":108,\"models/glyphs/webgl/line.frag\":109,\"models/glyphs/patch\":110,\"models/glyphs/harea\":111,\"models/glyphs/area\":112,\"models/glyphs/varea\":113,\"models/sources/cds_view\":114,\"core/build_views\":115,\"models/renderers/graph_renderer\":116,\"models/graphs/graph_hit_test_policy\":117,\"models/selections/interaction_policy\":118,\"core/util/typed_array\":119,\"core/util/set\":120,\"document/events\":121,\"models/annotations/band\":122,\"models/annotations/upper_lower\":123,\"models/annotations/box_annotation\":124,\"models/annotations/color_bar\":125,\"models/tickers/basic_ticker\":126,\"models/tickers/adaptive_ticker\":127,\"models/tickers/continuous_ticker\":128,\"models/tickers/ticker\":129,\"models/formatters/basic_tick_formatter\":130,\"models/formatters/tick_formatter\":131,\"models/mappers/index\":132,\"models/mappers/categorical_color_mapper\":133,\"models/mappers/categorical_mapper\":134,\"models/mappers/color_mapper\":135,\"models/mappers/mapper\":136,\"models/transforms/transform\":137,\"models/mappers/categorical_marker_mapper\":138,\"models/mappers/categorical_pattern_mapper\":139,\"models/mappers/continuous_color_mapper\":140,\"models/mappers/linear_color_mapper\":141,\"models/mappers/log_color_mapper\":142,\"models/mappers/scanning_color_mapper\":143,\"models/mappers/eqhist_color_mapper\":144,\"models/scales/linear_scale\":145,\"models/scales/continuous_scale\":146,\"models/scales/scale\":147,\"models/transforms/index\":148,\"models/transforms/customjs_transform\":149,\"models/transforms/dodge\":150,\"models/transforms/range_transform\":151,\"models/transforms/interpolator\":152,\"models/transforms/jitter\":153,\"models/transforms/linear_interpolator\":154,\"models/transforms/step_interpolator\":155,\"models/scales/linear_interpolation_scale\":156,\"models/scales/log_scale\":157,\"models/ranges/range1d\":158,\"core/util/text\":159,\"models/annotations/label\":160,\"models/annotations/text_annotation\":161,\"models/annotations/label_set\":162,\"models/annotations/legend\":163,\"models/annotations/legend_item\":164,\"core/vectorization\":165,\"models/annotations/poly_annotation\":166,\"models/annotations/slope\":167,\"models/annotations/span\":168,\"models/annotations/title\":169,\"models/annotations/toolbar_panel\":170,\"models/annotations/tooltip\":171,\"styles/tooltips\":172,\"styles/mixins\":173,\"styles/tooltips.css\":174,\"models/annotations/whisker\":175,\"models/axes/index\":176,\"models/axes/axis\":177,\"models/renderers/guide_renderer\":178,\"models/axes/categorical_axis\":179,\"models/tickers/categorical_ticker\":180,\"models/formatters/categorical_tick_formatter\":181,\"models/axes/continuous_axis\":182,\"models/axes/datetime_axis\":183,\"models/axes/linear_axis\":184,\"models/formatters/datetime_tick_formatter\":185,\"core/util/templating\":187,\"models/tickers/datetime_ticker\":190,\"models/tickers/composite_ticker\":191,\"models/tickers/days_ticker\":192,\"models/tickers/single_interval_ticker\":193,\"models/tickers/util\":194,\"models/tickers/months_ticker\":195,\"models/tickers/years_ticker\":196,\"models/axes/log_axis\":197,\"models/formatters/log_tick_formatter\":198,\"models/tickers/log_ticker\":199,\"models/axes/mercator_axis\":200,\"models/formatters/mercator_tick_formatter\":201,\"models/tickers/mercator_ticker\":202,\"models/callbacks/index\":203,\"models/callbacks/customjs\":204,\"models/callbacks/callback\":205,\"models/callbacks/open_url\":206,\"models/canvas/index\":207,\"models/canvas/cartesian_frame\":208,\"models/scales/categorical_scale\":209,\"models/ranges/data_range1d\":210,\"models/ranges/data_range\":211,\"core/layout/index\":212,\"core/layout/types\":213,\"core/layout/layoutable\":214,\"core/layout/alignments\":215,\"core/layout/grid\":216,\"core/layout/html\":217,\"models/expressions/index\":218,\"models/expressions/expression\":219,\"models/expressions/stack\":220,\"models/expressions/cumsum\":221,\"models/filters/index\":222,\"models/filters/boolean_filter\":223,\"models/filters/filter\":224,\"models/filters/customjs_filter\":225,\"models/filters/group_filter\":226,\"models/filters/index_filter\":227,\"models/formatters/index\":228,\"models/formatters/func_tick_formatter\":229,\"models/formatters/numeral_tick_formatter\":230,\"models/formatters/printf_tick_formatter\":231,\"models/glyphs/index\":232,\"models/glyphs/annular_wedge\":233,\"models/glyphs/annulus\":234,\"models/glyphs/arc\":235,\"models/glyphs/bezier\":236,\"models/glyphs/circle\":237,\"models/glyphs/webgl/markers\":238,\"models/glyphs/webgl/markers.vert\":239,\"models/glyphs/webgl/markers.frag\":240,\"models/glyphs/center_rotatable\":241,\"models/glyphs/ellipse\":242,\"models/glyphs/ellipse_oval\":243,\"models/glyphs/hbar\":244,\"models/glyphs/box\":245,\"models/glyphs/hex_tile\":246,\"models/glyphs/image\":247,\"models/glyphs/image_base\":248,\"models/glyphs/image_rgba\":249,\"models/glyphs/image_url\":250,\"core/util/image\":251,\"models/glyphs/multi_line\":252,\"models/glyphs/multi_polygons\":253,\"models/glyphs/oval\":254,\"models/glyphs/patches\":255,\"models/glyphs/quad\":256,\"models/glyphs/quadratic\":257,\"models/glyphs/ray\":258,\"models/glyphs/rect\":259,\"models/glyphs/segment\":260,\"models/glyphs/step\":261,\"models/glyphs/text\":262,\"models/glyphs/vbar\":263,\"models/glyphs/wedge\":264,\"models/graphs/index\":265,\"models/graphs/layout_provider\":266,\"models/graphs/static_layout_provider\":267,\"models/grids/index\":268,\"models/grids/grid\":269,\"models/layouts/index\":270,\"models/layouts/box\":271,\"models/layouts/layout_dom\":272,\"styles/root\":273,\"models/layouts/column\":274,\"models/layouts/grid_box\":275,\"models/layouts/html_box\":276,\"models/layouts/row\":277,\"models/layouts/spacer\":278,\"models/layouts/tabs\":279,\"styles/tabs\":280,\"styles/buttons\":281,\"styles/menus\":282,\"styles/buttons.css\":283,\"styles/menus.css\":284,\"styles/tabs.css\":285,\"models/layouts/widget_box\":286,\"models/markers/index\":287,\"models/markers/defs\":288,\"models/markers/marker\":289,\"models/markers/scatter\":290,\"models/plots/index\":291,\"models/plots/gmap_plot\":292,\"models/plots/plot\":293,\"models/tools/toolbar\":294,\"models/tools/inspectors/inspect_tool\":295,\"models/tools/button_tool\":296,\"models/tools/tool\":298,\"styles/toolbar\":299,\"styles/toolbar.css\":300,\"styles/icons.css\":301,\"core/util/menus\":302,\"core/util/iterator\":303,\"models/tools/on_off_button\":304,\"models/tools/toolbar_base\":305,\"models/tools/gestures/gesture_tool\":306,\"models/tools/actions/action_tool\":307,\"models/tools/actions/help_tool\":308,\"styles/icons\":309,\"styles/logo\":310,\"styles/logo.css\":311,\"models/plots/plot_canvas\":312,\"core/bokeh_events\":313,\"core/ui_events\":314,\"core/util/wheel\":315,\"core/util/throttle\":316,\"core/layout/border\":317,\"core/layout/side_panel\":318,\"models/plots/gmap_plot_canvas\":319,\"models/ranges/index\":320,\"models/renderers/index\":321,\"models/scales/index\":322,\"models/selections/index\":323,\"models/sources/index\":324,\"models/sources/server_sent_data_source\":325,\"models/sources/web_data_source\":326,\"models/sources/ajax_data_source\":327,\"models/sources/geojson_data_source\":328,\"models/tickers/index\":329,\"models/tickers/fixed_ticker\":330,\"models/tiles/index\":331,\"models/tiles/bbox_tile_source\":332,\"models/tiles/mercator_tile_source\":333,\"models/tiles/tile_source\":334,\"models/tiles/tile_utils\":335,\"models/tiles/quadkey_tile_source\":336,\"models/tiles/tile_renderer\":337,\"models/tiles/wmts_tile_source\":338,\"styles/tiles\":339,\"styles/tiles.css\":340,\"models/tiles/tms_tile_source\":341,\"models/textures/index\":342,\"models/textures/canvas_texture\":343,\"models/textures/texture\":344,\"models/textures/image_url_texture\":345,\"models/tools/index\":346,\"models/tools/actions/custom_action\":347,\"models/tools/actions/redo_tool\":348,\"models/tools/actions/reset_tool\":349,\"models/tools/actions/save_tool\":350,\"models/tools/actions/undo_tool\":351,\"models/tools/actions/zoom_in_tool\":352,\"models/tools/actions/zoom_base_tool\":353,\"core/util/zoom\":354,\"models/tools/actions/zoom_out_tool\":355,\"models/tools/edit/edit_tool\":356,\"models/tools/edit/box_edit_tool\":357,\"models/tools/edit/freehand_draw_tool\":358,\"models/tools/edit/point_draw_tool\":359,\"models/tools/edit/poly_draw_tool\":360,\"models/tools/edit/poly_tool\":361,\"models/tools/edit/poly_edit_tool\":362,\"models/tools/gestures/box_select_tool\":363,\"models/tools/gestures/select_tool\":364,\"models/tools/util\":365,\"models/tools/gestures/box_zoom_tool\":366,\"models/tools/gestures/lasso_select_tool\":367,\"models/tools/gestures/poly_select_tool\":368,\"models/tools/edit/line_edit_tool\":369,\"models/tools/edit/line_tool\":370,\"models/tools/gestures/pan_tool\":371,\"models/tools/gestures/range_tool\":372,\"models/tools/gestures/tap_tool\":373,\"models/tools/gestures/wheel_pan_tool\":374,\"models/tools/gestures/wheel_zoom_tool\":375,\"models/tools/inspectors/crosshair_tool\":376,\"models/tools/inspectors/customjs_hover\":377,\"models/tools/inspectors/hover_tool\":378,\"models/tools/tool_proxy\":379,\"models/tools/toolbar_box\":380,\"embed/standalone\":381,\"embed/dom\":382,\"embed/server\":383,\"client/connection\":384,\"protocol/message\":385,\"protocol/receiver\":386,\"client/session\":387,\"embed/notebook\":388,\"styles/notebook.css\":389,\"protocol/index\":390,\"testing\":391,\"safely\":392}, {});\n", + " })\n", + "\n", + "\n", + " /* END bokeh.min.js */\n", + " },\n", + " \n", + " function(Bokeh) {\n", + " /* BEGIN bokeh-widgets.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2020, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " factory(root[\"Bokeh\"], \"2.2.3\");\n", + " })(this, function(Bokeh, version) {\n", + " var define;\n", + " return (function(modules, entry, aliases, externals) {\n", + " const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n", + " if (bokeh != null) {\n", + " return bokeh.register_plugin(modules, entry, aliases);\n", + " } else {\n", + " throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n", + " }\n", + " })\n", + " ({\n", + " 402: function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(1).__importStar(e(403));o.Widgets=r;e(7).register_models(r)},\n", + " 403: function _(r,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});var a=r(404);t.AbstractButton=a.AbstractButton;var o=r(407);t.AbstractIcon=o.AbstractIcon;var u=r(408);t.AutocompleteInput=u.AutocompleteInput;var n=r(413);t.Button=n.Button;var i=r(414);t.CheckboxButtonGroup=i.CheckboxButtonGroup;var v=r(416);t.CheckboxGroup=v.CheckboxGroup;var p=r(418);t.ColorPicker=p.ColorPicker;var c=r(419);t.DatePicker=c.DatePicker;var l=r(422);t.DateRangeSlider=l.DateRangeSlider;var d=r(428);t.DateSlider=d.DateSlider;var I=r(429);t.Div=I.Div;var g=r(433);t.Dropdown=g.Dropdown;var S=r(434);t.FileInput=S.FileInput;var P=r(410);t.InputWidget=P.InputWidget;var k=r(430);t.Markup=k.Markup;var x=r(435);t.MultiSelect=x.MultiSelect;var D=r(436);t.Paragraph=D.Paragraph;var b=r(437);t.PasswordInput=b.PasswordInput;var s=r(438);t.MultiChoice=s.MultiChoice;var h=r(441);t.NumericInput=h.NumericInput;var A=r(444);t.PreText=A.PreText;var B=r(445);t.RadioButtonGroup=B.RadioButtonGroup;var C=r(446);t.RadioGroup=C.RadioGroup;var G=r(447);t.RangeSlider=G.RangeSlider;var R=r(448);t.Select=R.Select;var T=r(449);t.Slider=T.Slider;var M=r(450);t.Spinner=M.Spinner;var m=r(409);t.TextInput=m.TextInput;var w=r(451);t.TextAreaInput=w.TextAreaInput;var W=r(452);t.Toggle=W.Toggle;var _=r(472);t.Widget=_.Widget},\n", + " 404: function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=t(1),s=i.__importStar(t(18)),o=t(72),l=t(115),r=t(405),_=t(281),c=i.__importDefault(t(283));class u extends r.ControlView{*controls(){yield this.button_el}async lazy_initialize(){await super.lazy_initialize();const{icon:t}=this.model;null!=t&&(this.icon_view=await l.build_view(t,{parent:this}))}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render())}remove(){null!=this.icon_view&&this.icon_view.remove(),super.remove()}styles(){return[...super.styles(),c.default]}_render_button(...t){return o.button({type:\"button\",disabled:this.model.disabled,class:[_.bk_btn,_.bk_btn_type(this.model.button_type)]},...t)}render(){super.render(),this.button_el=this._render_button(this.model.label),this.button_el.addEventListener(\"click\",()=>this.click()),null!=this.icon_view&&(o.prepend(this.button_el,this.icon_view.el,o.nbsp()),this.icon_view.render()),this.group_el=o.div({class:_.bk_btn_group},this.button_el),this.el.appendChild(this.group_el)}click(){}}n.AbstractButtonView=u,u.__name__=\"AbstractButtonView\";class a extends r.Control{constructor(t){super(t)}static init_AbstractButton(){this.define({label:[s.String,\"Button\"],icon:[s.Instance],button_type:[s.ButtonType,\"default\"]})}}n.AbstractButton=a,a.__name__=\"AbstractButton\",a.init_AbstractButton()},\n", + " 405: function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(472),n=e(72);class i extends s.WidgetView{connect_signals(){super.connect_signals();const e=this.model.properties;this.on_change(e.disabled,()=>{for(const e of this.controls())n.toggle_attribute(e,\"disabled\",this.model.disabled)})}}o.ControlView=i,i.__name__=\"ControlView\";class l extends s.Widget{constructor(e){super(e)}}o.Control=l,l.__name__=\"Control\"},\n", + " 472: function _(i,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=i(1),n=i(276),r=o.__importStar(i(18));class _ extends n.HTMLBoxView{_width_policy(){return\"horizontal\"==this.model.orientation?super._width_policy():\"fixed\"}_height_policy(){return\"horizontal\"==this.model.orientation?\"fixed\":super._height_policy()}box_sizing(){const i=super.box_sizing();return\"horizontal\"==this.model.orientation?null==i.width&&(i.width=this.model.default_size):null==i.height&&(i.height=this.model.default_size),i}}t.WidgetView=_,_.__name__=\"WidgetView\";class s extends n.HTMLBox{constructor(i){super(i)}static init_Widget(){this.define({orientation:[r.Orientation,\"horizontal\"],default_size:[r.Number,300]}),this.override({margin:[5,5,5,5]})}}t.Widget=s,s.__name__=\"Widget\",s.init_Widget()},\n", + " 407: function _(e,t,c){Object.defineProperty(c,\"__esModule\",{value:!0});const s=e(81),n=e(78);class o extends n.DOMView{}c.AbstractIconView=o,o.__name__=\"AbstractIconView\";class _ extends s.Model{constructor(e){super(e)}}c.AbstractIcon=_,_.__name__=\"AbstractIcon\"},\n", + " 408: function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=e(1),s=e(409),h=e(72),_=i.__importStar(e(18)),o=e(10),u=e(173),r=e(282),c=i.__importDefault(e(284));class l extends s.TextInputView{constructor(){super(...arguments),this._open=!1,this._last_value=\"\",this._hover_index=0}styles(){return[...super.styles(),c.default]}render(){super.render(),this.input_el.addEventListener(\"keydown\",e=>this._keydown(e)),this.input_el.addEventListener(\"keyup\",e=>this._keyup(e)),this.menu=h.div({class:[r.bk_menu,u.bk_below]}),this.menu.addEventListener(\"click\",e=>this._menu_click(e)),this.menu.addEventListener(\"mouseover\",e=>this._menu_hover(e)),this.el.appendChild(this.menu),h.undisplay(this.menu)}change_input(){this._open&&this.menu.children.length>0&&(this.model.value=this.menu.children[this._hover_index].textContent,this.input_el.focus(),this._hide_menu())}_update_completions(e){h.empty(this.menu);for(const t of e){const e=h.div({},t);this.menu.appendChild(e)}e.length>0&&this.menu.children[0].classList.add(u.bk_active)}_show_menu(){if(!this._open){this._open=!0,this._hover_index=0,this._last_value=this.model.value,h.display(this.menu);const e=t=>{const{target:n}=t;n instanceof HTMLElement&&!this.el.contains(n)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,h.undisplay(this.menu))}_menu_click(e){e.target!=e.currentTarget&&e.target instanceof Element&&(this.model.value=e.target.textContent,this.input_el.focus(),this._hide_menu())}_menu_hover(e){if(e.target!=e.currentTarget&&e.target instanceof Element){let t=0;for(t=0;t0&&(this.menu.children[this._hover_index].classList.remove(u.bk_active),this._hover_index=o.clamp(e,0,t-1),this.menu.children[this._hover_index].classList.add(u.bk_active))}_keydown(e){}_keyup(e){switch(e.keyCode){case h.Keys.Enter:this.change_input();break;case h.Keys.Esc:this._hide_menu();break;case h.Keys.Up:this._bump_hover(this._hover_index-1);break;case h.Keys.Down:this._bump_hover(this._hover_index+1);break;default:{const e=this.input_el.value;if(e.lengthe:e=>e.toLowerCase();for(const n of this.model.completions)i(n).startsWith(i(e))&&t.push(n);this._update_completions(t),0==t.length?this._hide_menu():this._show_menu()}}}}n.AutocompleteInputView=l,l.__name__=\"AutocompleteInputView\";class a extends s.TextInput{constructor(e){super(e)}static init_AutocompleteInput(){this.prototype.default_view=l,this.define({completions:[_.Array,[]],min_characters:[_.Int,2],case_sensitive:[_.Boolean,!0]})}}n.AutocompleteInput=a,a.__name__=\"AutocompleteInput\",a.init_AutocompleteInput()},\n", + " 409: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(410),l=e(72),p=n.__importStar(e(18)),u=e(412);class a extends s.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,()=>this.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.value.change,()=>this.input_el.value=this.model.value),this.connect(this.model.properties.value_input.change,()=>this.input_el.value=this.model.value_input),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled),this.connect(this.model.properties.placeholder.change,()=>this.input_el.placeholder=this.model.placeholder)}render(){super.render(),this.input_el=l.input({type:\"text\",class:u.bk_input,name:this.model.name,value:this.model.value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.input_el.addEventListener(\"input\",()=>this.change_input_oninput()),this.group_el.appendChild(this.input_el)}change_input(){this.model.value=this.input_el.value,super.change_input()}change_input_oninput(){this.model.value_input=this.input_el.value,super.change_input()}}i.TextInputView=a,a.__name__=\"TextInputView\";class h extends s.InputWidget{constructor(e){super(e)}static init_TextInput(){this.prototype.default_view=a,this.define({value:[p.String,\"\"],value_input:[p.String,\"\"],placeholder:[p.String,\"\"]})}}i.TextInput=h,h.__name__=\"TextInput\",h.init_TextInput()},\n", + " 410: function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),l=t(405),s=t(72),_=n.__importStar(t(18)),o=n.__importDefault(t(411)),r=t(412);class p extends l.ControlView{*controls(){yield this.input_el}connect_signals(){super.connect_signals(),this.connect(this.model.properties.title.change,()=>{this.label_el.textContent=this.model.title})}styles(){return[...super.styles(),o.default]}render(){super.render();const{title:t}=this.model;this.label_el=s.label({style:{display:0==t.length?\"none\":\"\"}},t),this.group_el=s.div({class:r.bk_input_group},this.label_el),this.el.appendChild(this.group_el)}change_input(){}}i.InputWidgetView=p,p.__name__=\"InputWidgetView\";class u extends l.Control{constructor(t){super(t)}static init_InputWidget(){this.define({title:[_.String,\"\"]})}}i.InputWidget=u,u.__name__=\"InputWidget\",u.init_InputWidget()},\n", + " 411: function _(n,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root .bk-input {\\n display: inline-block;\\n width: 100%;\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n min-height: 31px;\\n padding: 0 12px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n}\\n.bk-root .bk-input:focus {\\n border-color: #66afe9;\\n outline: 0;\\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\\n}\\n.bk-root .bk-input::placeholder,\\n.bk-root .bk-input:-ms-input-placeholder,\\n.bk-root .bk-input::-moz-placeholder,\\n.bk-root .bk-input::-webkit-input-placeholder {\\n color: #999;\\n opacity: 1;\\n}\\n.bk-root .bk-input[disabled] {\\n cursor: not-allowed;\\n background-color: #eee;\\n opacity: 1;\\n}\\n.bk-root select:not([multiple]).bk-input,\\n.bk-root select:not([size]).bk-input {\\n height: auto;\\n appearance: none;\\n -webkit-appearance: none;\\n background-image: url(\\'data:image/svg+xml;utf8,\\');\\n background-position: right 0.5em center;\\n background-size: 8px 6px;\\n background-repeat: no-repeat;\\n}\\n.bk-root select[multiple].bk-input,\\n.bk-root select[size].bk-input,\\n.bk-root textarea.bk-input {\\n height: auto;\\n}\\n.bk-root .bk-input-group {\\n width: 100%;\\n height: 100%;\\n display: inline-flex;\\n display: -webkit-inline-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: start;\\n -webkit-align-items: start;\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n white-space: nowrap;\\n}\\n.bk-root .bk-input-group.bk-inline {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-input-group.bk-inline > *:not(:first-child) {\\n margin-left: 5px;\\n}\\n.bk-root .bk-input-group input[type=\"checkbox\"] + span,\\n.bk-root .bk-input-group input[type=\"radio\"] + span {\\n position: relative;\\n top: -2px;\\n margin-left: 3px;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper {\\n display: inherit;\\n width: inherit;\\n height: inherit;\\n position: relative;\\n overflow: hidden;\\n padding: 0;\\n vertical-align: middle;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper input {\\n padding-right: 20px;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn {\\n position: absolute;\\n display: block;\\n height: 50%;\\n min-height: 0;\\n min-width: 0;\\n width: 30px;\\n padding: 0;\\n margin: 0;\\n right: 0;\\n border: none;\\n background: none;\\n cursor: pointer;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn:before {\\n content: \"\";\\n display: inline-block;\\n transform: translateY(-50%);\\n border-left: 5px solid transparent;\\n border-right: 5px solid transparent;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up {\\n top: 0;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:before {\\n border-bottom: 5px solid black;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:disabled:before {\\n border-bottom-color: grey;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down {\\n bottom: 0;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:before {\\n border-top: 5px solid black;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:disabled:before {\\n border-top-color: grey;\\n}\\n'},\n", + " 412: function _(u,e,n){Object.defineProperty(n,\"__esModule\",{value:!0}),n.bk_input=\"bk-input\",n.bk_input_group=\"bk-input-group\"},\n", + " 413: function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=t(404),i=t(313);class s extends o.AbstractButtonView{click(){this.model.trigger_event(new i.ButtonClick),super.click()}}n.ButtonView=s,s.__name__=\"ButtonView\";class u extends o.AbstractButton{constructor(t){super(t)}static init_Button(){this.prototype.default_view=s,this.override({label:\"Button\"})}}n.Button=u,u.__name__=\"Button\",u.init_Button()},\n", + " 414: function _(t,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const i=t(1),c=t(415),s=t(72),n=i.__importStar(t(18)),a=t(173);class u extends c.ButtonGroupView{get active(){return new Set(this.model.active)}change_active(t){const{active:e}=this;e.has(t)?e.delete(t):e.add(t),this.model.active=[...e].sort()}_update_active(){const{active:t}=this;this._buttons.forEach((e,o)=>{s.classes(e).toggle(a.bk_active,t.has(o))})}}o.CheckboxButtonGroupView=u,u.__name__=\"CheckboxButtonGroupView\";class r extends c.ButtonGroup{constructor(t){super(t)}static init_CheckboxButtonGroup(){this.prototype.default_view=u,this.define({active:[n.Array,[]]})}}o.CheckboxButtonGroup=r,r.__name__=\"CheckboxButtonGroup\",r.init_CheckboxButtonGroup()},\n", + " 415: function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=t(1),o=t(405),i=t(72),r=n.__importStar(t(18)),_=t(281),u=n.__importDefault(t(283));class a extends o.ControlView{*controls(){yield*this._buttons}connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.button_type,()=>this.render()),this.on_change(t.labels,()=>this.render()),this.on_change(t.active,()=>this._update_active())}styles(){return[...super.styles(),u.default]}render(){super.render(),this._buttons=this.model.labels.map((t,e)=>{const s=i.div({class:[_.bk_btn,_.bk_btn_type(this.model.button_type)],disabled:this.model.disabled},t);return s.addEventListener(\"click\",()=>this.change_active(e)),s}),this._update_active();const t=i.div({class:_.bk_btn_group},this._buttons);this.el.appendChild(t)}}s.ButtonGroupView=a,a.__name__=\"ButtonGroupView\";class l extends o.Control{constructor(t){super(t)}static init_ButtonGroup(){this.define({labels:[r.Array,[]],button_type:[r.ButtonType,\"default\"]})}}s.ButtonGroup=l,l.__name__=\"ButtonGroup\",l.init_ButtonGroup()},\n", + " 416: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(417),o=e(72),c=e(9),a=n.__importStar(e(18)),l=e(173),d=e(412);class r extends s.InputGroupView{render(){super.render();const e=o.div({class:[d.bk_input_group,this.model.inline?l.bk_inline:null]});this.el.appendChild(e);const{active:t,labels:i}=this.model;this._inputs=[];for(let n=0;nthis.change_active(n)),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),c.includes(t,n)&&(s.checked=!0);const a=o.label({},s,o.span({},i[n]));e.appendChild(a)}}change_active(e){const t=new Set(this.model.active);t.has(e)?t.delete(e):t.add(e),this.model.active=[...t].sort()}}i.CheckboxGroupView=r,r.__name__=\"CheckboxGroupView\";class p extends s.InputGroup{constructor(e){super(e)}static init_CheckboxGroup(){this.prototype.default_view=r,this.define({active:[a.Array,[]],labels:[a.Array,[]],inline:[a.Boolean,!1]})}}i.CheckboxGroup=p,p.__name__=\"CheckboxGroup\",p.init_CheckboxGroup()},\n", + " 417: function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=e(1),o=e(405),r=s.__importDefault(e(411));class u extends o.ControlView{*controls(){yield*this._inputs}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render())}styles(){return[...super.styles(),r.default]}}n.InputGroupView=u,u.__name__=\"InputGroupView\";class _ extends o.Control{constructor(e){super(e)}}n.InputGroup=_,_.__name__=\"InputGroup\"},\n", + " 418: function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),o=e(410),s=e(72),l=n.__importStar(e(18)),r=e(412);class c extends o.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,()=>this.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.color.change,()=>this.input_el.value=this.model.color),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled)}render(){super.render(),this.input_el=s.input({type:\"color\",class:r.bk_input,name:this.model.name,value:this.model.color,disabled:this.model.disabled}),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.input_el)}change_input(){this.model.color=this.input_el.value,super.change_input()}}t.ColorPickerView=c,c.__name__=\"ColorPickerView\";class d extends o.InputWidget{constructor(e){super(e)}static init_ColorPicker(){this.prototype.default_view=c,this.define({color:[l.Color,\"#000000\"]})}}t.ColorPicker=d,d.__name__=\"ColorPicker\",d.init_ColorPicker()},\n", + " 419: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=n.__importDefault(e(420)),a=e(410),l=e(72),o=n.__importStar(e(18)),r=e(8),d=e(412),c=n.__importDefault(e(421));function u(e){const t=[];for(const i of e)if(r.isString(i))t.push(i);else{const[e,n]=i;t.push({from:e,to:n})}return t}class _ extends a.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,min_date:t,max_date:i,disabled_dates:n,enabled_dates:s,position:a,inline:l}=this.model.properties;this.connect(e.change,()=>{var t;return null===(t=this._picker)||void 0===t?void 0:t.setDate(e.value())}),this.connect(t.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"minDate\",t.value())}),this.connect(i.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"maxDate\",i.value())}),this.connect(n.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"disable\",n.value())}),this.connect(s.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"enable\",s.value())}),this.connect(a.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"position\",a.value())}),this.connect(l.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"inline\",l.value())})}remove(){var e;null===(e=this._picker)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),c.default]}render(){null==this._picker&&(super.render(),this.input_el=l.input({type:\"text\",class:d.bk_input,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el),this._picker=s.default(this.input_el,{defaultDate:this.model.value,minDate:this.model.min_date,maxDate:this.model.max_date,inline:this.model.inline,position:this.model.position,disable:u(this.model.disabled_dates),enable:u(this.model.enabled_dates),onChange:(e,t,i)=>this._on_change(e,t,i)}))}_on_change(e,t,i){this.model.value=t,this.change_input()}}i.DatePickerView=_,_.__name__=\"DatePickerView\";class h extends a.InputWidget{constructor(e){super(e)}static init_DatePicker(){this.prototype.default_view=_,this.define({value:[o.Any],min_date:[o.Any],max_date:[o.Any],disabled_dates:[o.Any,[]],enabled_dates:[o.Any,[]],position:[o.CalendarPosition,\"auto\"],inline:[o.Boolean,!1]})}}i.DatePicker=h,h.__name__=\"DatePicker\",h.init_DatePicker()},\n", + " 420: function _(e,t,n){\n", + " /* flatpickr v4.6.3, @license MIT */var a,i;a=this,i=function(){\"use strict\";\n", + " /*! *****************************************************************************\n", + " Copyright (c) Microsoft Corporation. All rights reserved.\n", + " Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\n", + " this file except in compliance with the License. You may obtain a copy of the\n", + " License at http://www.apache.org/licenses/LICENSE-2.0\n", + " \n", + " THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n", + " KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\n", + " WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\n", + " MERCHANTABLITY OR NON-INFRINGEMENT.\n", + " \n", + " See the Apache Version 2.0 License for specific language governing permissions\n", + " and limitations under the License.\n", + " ***************************************************************************** */var e=function(){return(e=Object.assign||function(e){for(var t,n=1,a=arguments.length;n\",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:\"auto\",positionElement:void 0,prevArrow:\"\",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},a={weekdays:{shorthand:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],longhand:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]},months:{shorthand:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],longhand:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return\"th\";switch(t%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\"}},rangeSeparator:\" to \",weekAbbreviation:\"Wk\",scrollTitle:\"Scroll to increment\",toggleTitle:\"Click to toggle\",amPM:[\"AM\",\"PM\"],yearAriaLabel:\"Year\",hourAriaLabel:\"Hour\",minuteAriaLabel:\"Minute\",time_24hr:!1},i=function(e){return(\"0\"+e).slice(-2)},o=function(e){return!0===e?1:0};function r(e,t,n){var a;return void 0===n&&(n=!1),function(){var i=this,o=arguments;null!==a&&clearTimeout(a),a=window.setTimeout((function(){a=null,n||e.apply(i,o)}),t),n&&!a&&e.apply(i,o)}}var l=function(e){return e instanceof Array?e:[e]};function c(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function d(e,t,n){var a=window.document.createElement(e);return t=t||\"\",n=n||\"\",a.className=t,void 0!==n&&(a.textContent=n),a}function s(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function u(e,t){var n=d(\"div\",\"numInputWrapper\"),a=d(\"input\",\"numInput \"+e),i=d(\"span\",\"arrowUp\"),o=d(\"span\",\"arrowDown\");if(-1===navigator.userAgent.indexOf(\"MSIE 9.0\")?a.type=\"number\":(a.type=\"text\",a.pattern=\"\\\\d*\"),void 0!==t)for(var r in t)a.setAttribute(r,t[r]);return n.appendChild(a),n.appendChild(i),n.appendChild(o),n}var f=function(){},m=function(e,t,n){return n.months[t?\"shorthand\":\"longhand\"][e]},g={D:f,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours(parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*o(new RegExp(n.amPM[1],\"i\").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var a=parseInt(t),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+n.firstDayOfWeek),i},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours(parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:f,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:f,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},p={D:\"(\\\\w+)\",F:\"(\\\\w+)\",G:\"(\\\\d\\\\d|\\\\d)\",H:\"(\\\\d\\\\d|\\\\d)\",J:\"(\\\\d\\\\d|\\\\d)\\\\w+\",K:\"\",M:\"(\\\\w+)\",S:\"(\\\\d\\\\d|\\\\d)\",U:\"(.+)\",W:\"(\\\\d\\\\d|\\\\d)\",Y:\"(\\\\d{4})\",Z:\"(.+)\",d:\"(\\\\d\\\\d|\\\\d)\",h:\"(\\\\d\\\\d|\\\\d)\",i:\"(\\\\d\\\\d|\\\\d)\",j:\"(\\\\d\\\\d|\\\\d)\",l:\"(\\\\w+)\",m:\"(\\\\d\\\\d|\\\\d)\",n:\"(\\\\d\\\\d|\\\\d)\",s:\"(\\\\d\\\\d|\\\\d)\",u:\"(.+)\",w:\"(\\\\d\\\\d|\\\\d)\",y:\"(\\\\d{2})\"},h={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[h.w(e,t,n)]},F:function(e,t,n){return m(h.n(e,t,n)-1,!1,t)},G:function(e,t,n){return i(h.h(e,t,n))},H:function(e){return i(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[o(e.getHours()>11)]},M:function(e,t){return m(e.getMonth(),!0,t)},S:function(e){return i(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return e.getFullYear()},d:function(e){return i(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return i(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return i(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},v=function(e){var t=e.config,i=void 0===t?n:t,o=e.l10n,r=void 0===o?a:o;return function(e,t,n){var a=n||r;return void 0!==i.formatDate?i.formatDate(e,t,a):t.split(\"\").map((function(t,n,o){return h[t]&&\"\\\\\"!==o[n-1]?h[t](e,a,i):\"\\\\\"!==t?t:\"\"})).join(\"\")}},D=function(e){var t=e.config,i=void 0===t?n:t,o=e.l10n,r=void 0===o?a:o;return function(e,t,a,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if(\"string\"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if(\"string\"==typeof e){var s=t||(i||n).dateFormat,u=String(e).trim();if(\"today\"===u)l=new Date,a=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(i&&i.parseDate)l=i.parseDate(e,s);else{l=i&&i.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],h=0,v=0,D=\"\";hr&&(s=n===h.hourElement?s-r-o(!h.amPM):a,f&&Y(void 0,1,h.hourElement)),h.amPM&&u&&(1===l?s+c===23:Math.abs(s-c)>l)&&(h.amPM.textContent=h.l10n.amPM[o(h.amPM.textContent===h.l10n.amPM[0])]),n.value=i(s)}}(e);var t=h._input.value;E(),ve(),h._input.value!==t&&h._debouncedChange()}function E(){if(void 0!==h.hourElement&&void 0!==h.minuteElement){var e,t,n=(parseInt(h.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(h.minuteElement.value,10)||0)%60,i=void 0!==h.secondElement?(parseInt(h.secondElement.value,10)||0)%60:0;void 0!==h.amPM&&(e=n,t=h.amPM.textContent,n=e%12+12*o(t===h.l10n.amPM[1]));var r=void 0!==h.config.minTime||h.config.minDate&&h.minDateHasTime&&h.latestSelectedDateObj&&0===w(h.latestSelectedDateObj,h.config.minDate,!0);if(void 0!==h.config.maxTime||h.config.maxDate&&h.maxDateHasTime&&h.latestSelectedDateObj&&0===w(h.latestSelectedDateObj,h.config.maxDate,!0)){var l=void 0!==h.config.maxTime?h.config.maxTime:h.config.maxDate;(n=Math.min(n,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(r){var c=void 0!==h.config.minTime?h.config.minTime:h.config.minDate;(n=Math.max(n,c.getHours()))===c.getHours()&&(a=Math.max(a,c.getMinutes())),a===c.getMinutes()&&(i=Math.max(i,c.getSeconds()))}I(n,a,i)}}function T(e){var t=e||h.latestSelectedDateObj;t&&I(t.getHours(),t.getMinutes(),t.getSeconds())}function k(){var e=h.config.defaultHour,t=h.config.defaultMinute,n=h.config.defaultSeconds;if(void 0!==h.config.minDate){var a=h.config.minDate.getHours(),i=h.config.minDate.getMinutes();(e=Math.max(e,a))===a&&(t=Math.max(i,t)),e===a&&t===i&&(n=h.config.minDate.getSeconds())}if(void 0!==h.config.maxDate){var o=h.config.maxDate.getHours(),r=h.config.maxDate.getMinutes();(e=Math.min(e,o))===o&&(t=Math.min(r,t)),e===o&&t===r&&(n=h.config.maxDate.getSeconds())}I(e,t,n)}function I(e,t,n){void 0!==h.latestSelectedDateObj&&h.latestSelectedDateObj.setHours(e%24,t,n||0,0),h.hourElement&&h.minuteElement&&!h.isMobile&&(h.hourElement.value=i(h.config.time_24hr?e:(12+e)%12+12*o(e%12==0)),h.minuteElement.value=i(t),void 0!==h.amPM&&(h.amPM.textContent=h.l10n.amPM[o(e>=12)]),void 0!==h.secondElement&&(h.secondElement.value=i(n)))}function S(e){var t=parseInt(e.target.value)+(e.delta||0);(t/1e3>1||\"Enter\"===e.key&&!/[^\\d]/.test(t.toString()))&&V(t)}function O(e,t,n,a){return t instanceof Array?t.forEach((function(t){return O(e,t,n,a)})):e instanceof Array?e.forEach((function(e){return O(e,t,n,a)})):(e.addEventListener(t,n,a),void h._handlers.push({element:e,event:t,handler:n,options:a}))}function _(e){return function(t){1===t.which&&e(t)}}function F(){fe(\"onChange\")}function N(e,t){var n=void 0!==e?h.parseDate(e):h.latestSelectedDateObj||(h.config.minDate&&h.config.minDate>h.now?h.config.minDate:h.config.maxDate&&h.config.maxDate=0&&w(e,h.selectedDates[1])<=0}(t)&&!ge(t)&&o.classList.add(\"inRange\"),h.weekNumbers&&1===h.config.showMonths&&\"prevMonthDay\"!==e&&n%7==1&&h.weekNumbers.insertAdjacentHTML(\"beforeend\",\"\"+h.config.getWeek(t)+\"\"),fe(\"onDayCreate\",o),o}function j(e){e.focus(),\"range\"===h.config.mode&&ee(e)}function H(e){for(var t=e>0?0:h.config.showMonths-1,n=e>0?h.config.showMonths:-1,a=t;a!=n;a+=e)for(var i=h.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf(\"hidden\")&&Z(c.dateObj))return c}}function L(e,t){var n=Q(document.activeElement||document.body),a=void 0!==e?e:n?document.activeElement:void 0!==h.selectedDateElem&&Q(h.selectedDateElem)?h.selectedDateElem:void 0!==h.todayDateElem&&Q(h.todayDateElem)?h.todayDateElem:H(t>0?1:-1);return void 0===a?h._input.focus():n?void function(e,t){for(var n=-1===e.className.indexOf(\"Month\")?e.dateObj.getMonth():h.currentMonth,a=t>0?h.config.showMonths:-1,i=t>0?1:-1,o=n-h.currentMonth;o!=a;o+=i)for(var r=h.daysContainer.children[o],l=n-h.currentMonth===o?e.$i+t:t<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf(\"hidden\")&&Z(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(t))return j(s)}h.changeMonth(i),L(H(i),0)}(a,t):j(a)}function W(e,t){for(var n=(new Date(e,t,1).getDay()-h.l10n.firstDayOfWeek+7)%7,a=h.utils.getDaysInMonth((t-1+12)%12),i=h.utils.getDaysInMonth(t),o=window.document.createDocumentFragment(),r=h.config.showMonths>1,l=r?\"prevMonthDay hidden\":\"prevMonthDay\",c=r?\"nextMonthDay hidden\":\"nextMonthDay\",s=a+1-n,u=0;s<=a;s++,u++)o.appendChild(A(l,new Date(e,t-1,s),s,u));for(s=1;s<=i;s++,u++)o.appendChild(A(\"\",new Date(e,t,s),s,u));for(var f=i+1;f<=42-n&&(1===h.config.showMonths||u%7!=0);f++,u++)o.appendChild(A(c,new Date(e,t+1,f%i),f,u));var m=d(\"div\",\"dayContainer\");return m.appendChild(o),m}function R(){if(void 0!==h.daysContainer){s(h.daysContainer),h.weekNumbers&&s(h.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t1||\"dropdown\"!==h.config.monthSelectorType)){var e=function(e){return!(void 0!==h.config.minDate&&h.currentYear===h.config.minDate.getFullYear()&&eh.config.maxDate.getMonth())};h.monthsDropdownContainer.tabIndex=-1,h.monthsDropdownContainer.innerHTML=\"\";for(var t=0;t<12;t++)if(e(t)){var n=d(\"option\",\"flatpickr-monthDropdown-month\");n.value=new Date(h.currentYear,t).getMonth().toString(),n.textContent=m(t,h.config.shorthandCurrentMonth,h.l10n),n.tabIndex=-1,h.currentMonth===t&&(n.selected=!0),h.monthsDropdownContainer.appendChild(n)}}}function J(){var e,t=d(\"div\",\"flatpickr-month\"),n=window.document.createDocumentFragment();h.config.showMonths>1||\"static\"===h.config.monthSelectorType?e=d(\"span\",\"cur-month\"):(h.monthsDropdownContainer=d(\"select\",\"flatpickr-monthDropdown-months\"),O(h.monthsDropdownContainer,\"change\",(function(e){var t=e.target,n=parseInt(t.value,10);h.changeMonth(n-h.currentMonth),fe(\"onMonthChange\")})),B(),e=h.monthsDropdownContainer);var a=u(\"cur-year\",{tabindex:\"-1\"}),i=a.getElementsByTagName(\"input\")[0];i.setAttribute(\"aria-label\",h.l10n.yearAriaLabel),h.config.minDate&&i.setAttribute(\"min\",h.config.minDate.getFullYear().toString()),h.config.maxDate&&(i.setAttribute(\"max\",h.config.maxDate.getFullYear().toString()),i.disabled=!!h.config.minDate&&h.config.minDate.getFullYear()===h.config.maxDate.getFullYear());var o=d(\"div\",\"flatpickr-current-month\");return o.appendChild(e),o.appendChild(a),n.appendChild(o),t.appendChild(n),{container:t,yearElement:i,monthElement:e}}function K(){s(h.monthNav),h.monthNav.appendChild(h.prevMonthNav),h.config.showMonths&&(h.yearElements=[],h.monthElements=[]);for(var e=h.config.showMonths;e--;){var t=J();h.yearElements.push(t.yearElement),h.monthElements.push(t.monthElement),h.monthNav.appendChild(t.container)}h.monthNav.appendChild(h.nextMonthNav)}function U(){h.weekdayContainer?s(h.weekdayContainer):h.weekdayContainer=d(\"div\",\"flatpickr-weekdays\");for(var e=h.config.showMonths;e--;){var t=d(\"div\",\"flatpickr-weekdaycontainer\");h.weekdayContainer.appendChild(t)}return q(),h.weekdayContainer}function q(){if(h.weekdayContainer){var e=h.l10n.firstDayOfWeek,t=h.l10n.weekdays.shorthand.slice();e>0&&e\\n \"+t.join(\"
\")+\"\\n \\n \"}}function $(e,t){void 0===t&&(t=!0);var n=t?e:e-h.currentMonth;n<0&&!0===h._hidePrevMonthArrow||n>0&&!0===h._hideNextMonthArrow||(h.currentMonth+=n,(h.currentMonth<0||h.currentMonth>11)&&(h.currentYear+=h.currentMonth>11?1:-1,h.currentMonth=(h.currentMonth+12)%12,fe(\"onYearChange\"),B()),R(),fe(\"onMonthChange\"),pe())}function z(e){return!(!h.config.appendTo||!h.config.appendTo.contains(e))||h.calendarContainer.contains(e)}function G(e){if(h.isOpen&&!h.config.inline){var t=\"function\"==typeof(r=e).composedPath?r.composedPath()[0]:r.target,n=z(t),a=t===h.input||t===h.altInput||h.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(h.input)||~e.path.indexOf(h.altInput)),i=\"blur\"===e.type?a&&e.relatedTarget&&!z(e.relatedTarget):!a&&!n&&!z(e.relatedTarget),o=!h.config.ignoredFocusElements.some((function(e){return e.contains(t)}));i&&o&&(void 0!==h.timeContainer&&void 0!==h.minuteElement&&void 0!==h.hourElement&&x(),h.close(),\"range\"===h.config.mode&&1===h.selectedDates.length&&(h.clear(!1),h.redraw()))}var r}function V(e){if(!(!e||h.config.minDate&&eh.config.maxDate.getFullYear())){var t=e,n=h.currentYear!==t;h.currentYear=t||h.currentYear,h.config.maxDate&&h.currentYear===h.config.maxDate.getFullYear()?h.currentMonth=Math.min(h.config.maxDate.getMonth(),h.currentMonth):h.config.minDate&&h.currentYear===h.config.minDate.getFullYear()&&(h.currentMonth=Math.max(h.config.minDate.getMonth(),h.currentMonth)),n&&(h.redraw(),fe(\"onYearChange\"),B())}}function Z(e,t){void 0===t&&(t=!0);var n=h.parseDate(e,void 0,t);if(h.config.minDate&&n&&w(n,h.config.minDate,void 0!==t?t:!h.minDateHasTime)<0||h.config.maxDate&&n&&w(n,h.config.maxDate,void 0!==t?t:!h.maxDateHasTime)>0)return!1;if(0===h.config.enable.length&&0===h.config.disable.length)return!0;if(void 0===n)return!1;for(var a=h.config.enable.length>0,i=a?h.config.enable:h.config.disable,o=0,r=void 0;o=r.from.getTime()&&n.getTime()<=r.to.getTime())return a}return!a}function Q(e){return void 0!==h.daysContainer&&-1===e.className.indexOf(\"hidden\")&&h.daysContainer.contains(e)}function X(e){var t=e.target===h._input,n=h.config.allowInput,a=h.isOpen&&(!n||!t),i=h.config.inline&&t&&!n;if(13===e.keyCode&&t){if(n)return h.setDate(h._input.value,!0,e.target===h.altInput?h.config.altFormat:h.config.dateFormat),e.target.blur();h.open()}else if(z(e.target)||a||i){var o=!!h.timeContainer&&h.timeContainer.contains(e.target);switch(e.keyCode){case 13:o?(e.preventDefault(),x(),le()):ce(e);break;case 27:e.preventDefault(),le();break;case 8:case 46:t&&!h.config.allowInput&&(e.preventDefault(),h.clear());break;case 37:case 39:if(o||t)h.hourElement&&h.hourElement.focus();else if(e.preventDefault(),void 0!==h.daysContainer&&(!1===n||document.activeElement&&Q(document.activeElement))){var r=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),$(r),L(H(1),0)):L(void 0,r)}break;case 38:case 40:e.preventDefault();var l=40===e.keyCode?1:-1;h.daysContainer&&void 0!==e.target.$i||e.target===h.input||e.target===h.altInput?e.ctrlKey?(e.stopPropagation(),V(h.currentYear-l),L(H(1),0)):o||L(void 0,7*l):e.target===h.currentYearElement?V(h.currentYear-l):h.config.enableTime&&(!o&&h.hourElement&&h.hourElement.focus(),x(e),h._debouncedChange());break;case 9:if(o){var c=[h.hourElement,h.minuteElement,h.secondElement,h.amPM].concat(h.pluginElements).filter((function(e){return e})),d=c.indexOf(e.target);if(-1!==d){var s=c[d+(e.shiftKey?-1:1)];e.preventDefault(),(s||h._input).focus()}}else!h.config.noCalendar&&h.daysContainer&&h.daysContainer.contains(e.target)&&e.shiftKey&&(e.preventDefault(),h._input.focus())}}if(void 0!==h.amPM&&e.target===h.amPM)switch(e.key){case h.l10n.amPM[0].charAt(0):case h.l10n.amPM[0].charAt(0).toLowerCase():h.amPM.textContent=h.l10n.amPM[0],E(),ve();break;case h.l10n.amPM[1].charAt(0):case h.l10n.amPM[1].charAt(0).toLowerCase():h.amPM.textContent=h.l10n.amPM[1],E(),ve()}(t||z(e.target))&&fe(\"onKeyDown\",e)}function ee(e){if(1===h.selectedDates.length&&(!e||e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\"))){for(var t=e?e.dateObj.getTime():h.days.firstElementChild.dateObj.getTime(),n=h.parseDate(h.selectedDates[0],void 0,!0).getTime(),a=Math.min(t,h.selectedDates[0].getTime()),i=Math.max(t,h.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;ca&&cr)?r=c:c>n&&(!l||c0&&m0&&m>l;return g?(f.classList.add(\"notAllowed\"),[\"inRange\",\"startRange\",\"endRange\"].forEach((function(e){f.classList.remove(e)})),\"continue\"):o&&!g?\"continue\":([\"startRange\",\"inRange\",\"endRange\",\"notAllowed\"].forEach((function(e){f.classList.remove(e)})),void(void 0!==e&&(e.classList.add(t<=h.selectedDates[0].getTime()?\"startRange\":\"endRange\"),nt&&m===n&&f.classList.add(\"endRange\"),m>=r&&(0===l||m<=l)&&(d=n,u=t,(c=m)>Math.min(d,u)&&c0||n.getMinutes()>0||n.getSeconds()>0),h.selectedDates&&(h.selectedDates=h.selectedDates.filter((function(e){return Z(e)})),h.selectedDates.length||\"min\"!==e||T(n),ve()),h.daysContainer&&(re(),void 0!==n?h.currentYearElement[e]=n.getFullYear().toString():h.currentYearElement.removeAttribute(e),h.currentYearElement.disabled=!!a&&void 0!==n&&a.getFullYear()===n.getFullYear())}}function ie(){\"object\"!=typeof h.config.locale&&void 0===y.l10ns[h.config.locale]&&h.config.errorHandler(new Error(\"flatpickr: invalid locale \"+h.config.locale)),h.l10n=e({},y.l10ns.default,\"object\"==typeof h.config.locale?h.config.locale:\"default\"!==h.config.locale?y.l10ns[h.config.locale]:void 0),p.K=\"(\"+h.l10n.amPM[0]+\"|\"+h.l10n.amPM[1]+\"|\"+h.l10n.amPM[0].toLowerCase()+\"|\"+h.l10n.amPM[1].toLowerCase()+\")\",void 0===e({},g,JSON.parse(JSON.stringify(f.dataset||{}))).time_24hr&&void 0===y.defaultConfig.time_24hr&&(h.config.time_24hr=h.l10n.time_24hr),h.formatDate=v(h),h.parseDate=D({config:h.config,l10n:h.l10n})}function oe(e){if(void 0!==h.calendarContainer){fe(\"onPreCalendarPosition\");var t=e||h._positionElement,n=Array.prototype.reduce.call(h.calendarContainer.children,(function(e,t){return e+t.offsetHeight}),0),a=h.calendarContainer.offsetWidth,i=h.config.position.split(\" \"),o=i[0],r=i.length>1?i[1]:null,l=t.getBoundingClientRect(),d=window.innerHeight-l.bottom,s=\"above\"===o||\"below\"!==o&&dn,u=window.pageYOffset+l.top+(s?-n-2:t.offsetHeight+2);if(c(h.calendarContainer,\"arrowTop\",!s),c(h.calendarContainer,\"arrowBottom\",s),!h.config.inline){var f=window.pageXOffset+l.left-(null!=r&&\"center\"===r?(a-l.width)/2:0),m=window.document.body.offsetWidth-(window.pageXOffset+l.right),g=f+a>window.document.body.offsetWidth,p=m+a>window.document.body.offsetWidth;if(c(h.calendarContainer,\"rightMost\",g),!h.config.static)if(h.calendarContainer.style.top=u+\"px\",g)if(p){var v=document.styleSheets[0];if(void 0===v)return;var D=window.document.body.offsetWidth,w=Math.max(0,D/2-a/2),b=v.cssRules.length,C=\"{left:\"+l.left+\"px;right:auto;}\";c(h.calendarContainer,\"rightMost\",!1),c(h.calendarContainer,\"centerMost\",!0),v.insertRule(\".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after\"+C,b),h.calendarContainer.style.left=w+\"px\",h.calendarContainer.style.right=\"auto\"}else h.calendarContainer.style.left=\"auto\",h.calendarContainer.style.right=m+\"px\";else h.calendarContainer.style.left=f+\"px\",h.calendarContainer.style.right=\"auto\"}}}function re(){h.config.noCalendar||h.isMobile||(pe(),R())}function le(){h._input.focus(),-1!==window.navigator.userAgent.indexOf(\"MSIE\")||void 0!==navigator.msMaxTouchPoints?setTimeout(h.close,0):h.close()}function ce(e){e.preventDefault(),e.stopPropagation();var t=function e(t,n){return n(t)?t:t.parentNode?e(t.parentNode,n):void 0}(e.target,(function(e){return e.classList&&e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\")&&!e.classList.contains(\"notAllowed\")}));if(void 0!==t){var n=t,a=h.latestSelectedDateObj=new Date(n.dateObj.getTime()),i=(a.getMonth()h.currentMonth+h.config.showMonths-1)&&\"range\"!==h.config.mode;if(h.selectedDateElem=n,\"single\"===h.config.mode)h.selectedDates=[a];else if(\"multiple\"===h.config.mode){var o=ge(a);o?h.selectedDates.splice(parseInt(o),1):h.selectedDates.push(a)}else\"range\"===h.config.mode&&(2===h.selectedDates.length&&h.clear(!1,!1),h.latestSelectedDateObj=a,h.selectedDates.push(a),0!==w(a,h.selectedDates[0],!0)&&h.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()})));if(E(),i){var r=h.currentYear!==a.getFullYear();h.currentYear=a.getFullYear(),h.currentMonth=a.getMonth(),r&&(fe(\"onYearChange\"),B()),fe(\"onMonthChange\")}if(pe(),R(),ve(),h.config.enableTime&&setTimeout((function(){return h.showTimeInput=!0}),50),i||\"range\"===h.config.mode||1!==h.config.showMonths?void 0!==h.selectedDateElem&&void 0===h.hourElement&&h.selectedDateElem&&h.selectedDateElem.focus():j(n),void 0!==h.hourElement&&void 0!==h.hourElement&&h.hourElement.focus(),h.config.closeOnSelect){var l=\"single\"===h.config.mode&&!h.config.enableTime,c=\"range\"===h.config.mode&&2===h.selectedDates.length&&!h.config.enableTime;(l||c)&&le()}F()}}h.parseDate=D({config:h.config,l10n:h.l10n}),h._handlers=[],h.pluginElements=[],h.loadedPlugins=[],h._bind=O,h._setHoursFromDate=T,h._positionCalendar=oe,h.changeMonth=$,h.changeYear=V,h.clear=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0),h.input.value=\"\",void 0!==h.altInput&&(h.altInput.value=\"\"),void 0!==h.mobileInput&&(h.mobileInput.value=\"\"),h.selectedDates=[],h.latestSelectedDateObj=void 0,!0===t&&(h.currentYear=h._initialDate.getFullYear(),h.currentMonth=h._initialDate.getMonth()),h.showTimeInput=!1,!0===h.config.enableTime&&k(),h.redraw(),e&&fe(\"onChange\")},h.close=function(){h.isOpen=!1,h.isMobile||(void 0!==h.calendarContainer&&h.calendarContainer.classList.remove(\"open\"),void 0!==h._input&&h._input.classList.remove(\"active\")),fe(\"onClose\")},h._createElement=d,h.destroy=function(){void 0!==h.config&&fe(\"onDestroy\");for(var e=h._handlers.length;e--;){var t=h._handlers[e];t.element.removeEventListener(t.event,t.handler,t.options)}if(h._handlers=[],h.mobileInput)h.mobileInput.parentNode&&h.mobileInput.parentNode.removeChild(h.mobileInput),h.mobileInput=void 0;else if(h.calendarContainer&&h.calendarContainer.parentNode)if(h.config.static&&h.calendarContainer.parentNode){var n=h.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else h.calendarContainer.parentNode.removeChild(h.calendarContainer);h.altInput&&(h.input.type=\"text\",h.altInput.parentNode&&h.altInput.parentNode.removeChild(h.altInput),delete h.altInput),h.input&&(h.input.type=h.input._type,h.input.classList.remove(\"flatpickr-input\"),h.input.removeAttribute(\"readonly\"),h.input.value=\"\"),[\"_showTimeInput\",\"latestSelectedDateObj\",\"_hideNextMonthArrow\",\"_hidePrevMonthArrow\",\"__hideNextMonthArrow\",\"__hidePrevMonthArrow\",\"isMobile\",\"isOpen\",\"selectedDateElem\",\"minDateHasTime\",\"maxDateHasTime\",\"days\",\"daysContainer\",\"_input\",\"_positionElement\",\"innerContainer\",\"rContainer\",\"monthNav\",\"todayDateElem\",\"calendarContainer\",\"weekdayContainer\",\"prevMonthNav\",\"nextMonthNav\",\"monthsDropdownContainer\",\"currentMonthElement\",\"currentYearElement\",\"navigationCurrentMonth\",\"selectedDateElem\",\"config\"].forEach((function(e){try{delete h[e]}catch(e){}}))},h.isEnabled=Z,h.jumpToDate=N,h.open=function(e,t){if(void 0===t&&(t=h._positionElement),!0===h.isMobile)return e&&(e.preventDefault(),e.target&&e.target.blur()),void 0!==h.mobileInput&&(h.mobileInput.focus(),h.mobileInput.click()),void fe(\"onOpen\");if(!h._input.disabled&&!h.config.inline){var n=h.isOpen;h.isOpen=!0,n||(h.calendarContainer.classList.add(\"open\"),h._input.classList.add(\"active\"),fe(\"onOpen\"),oe(t)),!0===h.config.enableTime&&!0===h.config.noCalendar&&(0===h.selectedDates.length&&ne(),!1!==h.config.allowInput||void 0!==e&&h.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return h.hourElement.select()}),50))}},h.redraw=re,h.set=function(e,n){if(null!==e&&\"object\"==typeof e)for(var a in Object.assign(h.config,e),e)void 0!==de[a]&&de[a].forEach((function(e){return e()}));else h.config[e]=n,void 0!==de[e]?de[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(h.config[e]=l(n));h.redraw(),ve(!1)},h.setDate=function(e,t,n){if(void 0===t&&(t=!1),void 0===n&&(n=h.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return h.clear(t);se(e,n),h.showTimeInput=h.selectedDates.length>0,h.latestSelectedDateObj=h.selectedDates[h.selectedDates.length-1],h.redraw(),N(),T(),0===h.selectedDates.length&&h.clear(!1),ve(t),t&&fe(\"onChange\")},h.toggle=function(e){if(!0===h.isOpen)return h.close();h.open(e)};var de={locale:[ie,q],showMonths:[K,M,U],minDate:[N],maxDate:[N]};function se(e,t){var n=[];if(e instanceof Array)n=e.map((function(e){return h.parseDate(e,t)}));else if(e instanceof Date||\"number\"==typeof e)n=[h.parseDate(e,t)];else if(\"string\"==typeof e)switch(h.config.mode){case\"single\":case\"time\":n=[h.parseDate(e,t)];break;case\"multiple\":n=e.split(h.config.conjunction).map((function(e){return h.parseDate(e,t)}));break;case\"range\":n=e.split(h.l10n.rangeSeparator).map((function(e){return h.parseDate(e,t)}))}else h.config.errorHandler(new Error(\"Invalid date supplied: \"+JSON.stringify(e)));h.selectedDates=n.filter((function(e){return e instanceof Date&&Z(e,!1)})),\"range\"===h.config.mode&&h.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()}))}function ue(e){return e.slice().map((function(e){return\"string\"==typeof e||\"number\"==typeof e||e instanceof Date?h.parseDate(e,void 0,!0):e&&\"object\"==typeof e&&e.from&&e.to?{from:h.parseDate(e.from,void 0),to:h.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function fe(e,t){if(void 0!==h.config){var n=h.config[e];if(void 0!==n&&n.length>0)for(var a=0;n[a]&&a1||\"static\"===h.config.monthSelectorType?h.monthElements[t].textContent=m(n.getMonth(),h.config.shorthandCurrentMonth,h.l10n)+\" \":h.monthsDropdownContainer.value=n.getMonth().toString(),e.value=n.getFullYear().toString()})),h._hidePrevMonthArrow=void 0!==h.config.minDate&&(h.currentYear===h.config.minDate.getFullYear()?h.currentMonth<=h.config.minDate.getMonth():h.currentYearh.config.maxDate.getMonth():h.currentYear>h.config.maxDate.getFullYear()))}function he(e){return h.selectedDates.map((function(t){return h.formatDate(t,e)})).filter((function(e,t,n){return\"range\"!==h.config.mode||h.config.enableTime||n.indexOf(e)===t})).join(\"range\"!==h.config.mode?h.config.conjunction:h.l10n.rangeSeparator)}function ve(e){void 0===e&&(e=!0),void 0!==h.mobileInput&&h.mobileFormatStr&&(h.mobileInput.value=void 0!==h.latestSelectedDateObj?h.formatDate(h.latestSelectedDateObj,h.mobileFormatStr):\"\"),h.input.value=he(h.config.dateFormat),void 0!==h.altInput&&(h.altInput.value=he(h.config.altFormat)),!1!==e&&fe(\"onValueUpdate\")}function De(e){var t=h.prevMonthNav.contains(e.target),n=h.nextMonthNav.contains(e.target);t||n?$(t?-1:1):h.yearElements.indexOf(e.target)>=0?e.target.select():e.target.classList.contains(\"arrowUp\")?h.changeYear(h.currentYear+1):e.target.classList.contains(\"arrowDown\")&&h.changeYear(h.currentYear-1)}return function(){h.element=h.input=f,h.isOpen=!1,function(){var a=[\"wrap\",\"weekNumbers\",\"allowInput\",\"clickOpens\",\"time_24hr\",\"enableTime\",\"noCalendar\",\"altInput\",\"shorthandCurrentMonth\",\"inline\",\"static\",\"enableSeconds\",\"disableMobile\"],i=e({},g,JSON.parse(JSON.stringify(f.dataset||{}))),o={};h.config.parseDate=i.parseDate,h.config.formatDate=i.formatDate,Object.defineProperty(h.config,\"enable\",{get:function(){return h.config._enable},set:function(e){h.config._enable=ue(e)}}),Object.defineProperty(h.config,\"disable\",{get:function(){return h.config._disable},set:function(e){h.config._disable=ue(e)}});var r=\"time\"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var c=y.defaultConfig.dateFormat||n.dateFormat;o.dateFormat=i.noCalendar||r?\"H:i\"+(i.enableSeconds?\":S\":\"\"):c+\" H:i\"+(i.enableSeconds?\":S\":\"\")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=y.defaultConfig.altFormat||n.altFormat;o.altFormat=i.noCalendar||r?\"h:i\"+(i.enableSeconds?\":S K\":\" K\"):d+\" h:i\"+(i.enableSeconds?\":S\":\"\")+\" K\"}i.altInputClass||(h.config.altInputClass=h.input.className+\" \"+h.config.altInputClass),Object.defineProperty(h.config,\"minDate\",{get:function(){return h.config._minDate},set:ae(\"min\")}),Object.defineProperty(h.config,\"maxDate\",{get:function(){return h.config._maxDate},set:ae(\"max\")});var s=function(e){return function(t){h.config[\"min\"===e?\"_minTime\":\"_maxTime\"]=h.parseDate(t,\"H:i:S\")}};Object.defineProperty(h.config,\"minTime\",{get:function(){return h.config._minTime},set:s(\"min\")}),Object.defineProperty(h.config,\"maxTime\",{get:function(){return h.config._maxTime},set:s(\"max\")}),\"time\"===i.mode&&(h.config.noCalendar=!0,h.config.enableTime=!0),Object.assign(h.config,o,i);for(var u=0;u-1?h.config[p]=l(m[p]).map(C).concat(h.config[p]):void 0===i[p]&&(h.config[p]=m[p])}fe(\"onParseConfig\")}(),ie(),h.input=h.config.wrap?f.querySelector(\"[data-input]\"):f,h.input?(h.input._type=h.input.type,h.input.type=\"text\",h.input.classList.add(\"flatpickr-input\"),h._input=h.input,h.config.altInput&&(h.altInput=d(h.input.nodeName,h.config.altInputClass),h._input=h.altInput,h.altInput.placeholder=h.input.placeholder,h.altInput.disabled=h.input.disabled,h.altInput.required=h.input.required,h.altInput.tabIndex=h.input.tabIndex,h.altInput.type=\"text\",h.input.setAttribute(\"type\",\"hidden\"),!h.config.static&&h.input.parentNode&&h.input.parentNode.insertBefore(h.altInput,h.input.nextSibling)),h.config.allowInput||h._input.setAttribute(\"readonly\",\"readonly\"),h._positionElement=h.config.positionElement||h._input):h.config.errorHandler(new Error(\"Invalid input element specified\")),function(){h.selectedDates=[],h.now=h.parseDate(h.config.now)||new Date;var e=h.config.defaultDate||(\"INPUT\"!==h.input.nodeName&&\"TEXTAREA\"!==h.input.nodeName||!h.input.placeholder||h.input.value!==h.input.placeholder?h.input.value:null);e&&se(e,h.config.dateFormat),h._initialDate=h.selectedDates.length>0?h.selectedDates[0]:h.config.minDate&&h.config.minDate.getTime()>h.now.getTime()?h.config.minDate:h.config.maxDate&&h.config.maxDate.getTime()0&&(h.latestSelectedDateObj=h.selectedDates[0]),void 0!==h.config.minTime&&(h.config.minTime=h.parseDate(h.config.minTime,\"H:i\")),void 0!==h.config.maxTime&&(h.config.maxTime=h.parseDate(h.config.maxTime,\"H:i\")),h.minDateHasTime=!!h.config.minDate&&(h.config.minDate.getHours()>0||h.config.minDate.getMinutes()>0||h.config.minDate.getSeconds()>0),h.maxDateHasTime=!!h.config.maxDate&&(h.config.maxDate.getHours()>0||h.config.maxDate.getMinutes()>0||h.config.maxDate.getSeconds()>0),Object.defineProperty(h,\"showTimeInput\",{get:function(){return h._showTimeInput},set:function(e){h._showTimeInput=e,h.calendarContainer&&c(h.calendarContainer,\"showTimeInput\",e),h.isOpen&&oe()}})}(),h.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=h.currentMonth),void 0===t&&(t=h.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:h.l10n.daysInMonth[e]}},h.isMobile||function(){var e=window.document.createDocumentFragment();if(h.calendarContainer=d(\"div\",\"flatpickr-calendar\"),h.calendarContainer.tabIndex=-1,!h.config.noCalendar){if(e.appendChild((h.monthNav=d(\"div\",\"flatpickr-months\"),h.yearElements=[],h.monthElements=[],h.prevMonthNav=d(\"span\",\"flatpickr-prev-month\"),h.prevMonthNav.innerHTML=h.config.prevArrow,h.nextMonthNav=d(\"span\",\"flatpickr-next-month\"),h.nextMonthNav.innerHTML=h.config.nextArrow,K(),Object.defineProperty(h,\"_hidePrevMonthArrow\",{get:function(){return h.__hidePrevMonthArrow},set:function(e){h.__hidePrevMonthArrow!==e&&(c(h.prevMonthNav,\"flatpickr-disabled\",e),h.__hidePrevMonthArrow=e)}}),Object.defineProperty(h,\"_hideNextMonthArrow\",{get:function(){return h.__hideNextMonthArrow},set:function(e){h.__hideNextMonthArrow!==e&&(c(h.nextMonthNav,\"flatpickr-disabled\",e),h.__hideNextMonthArrow=e)}}),h.currentYearElement=h.yearElements[0],pe(),h.monthNav)),h.innerContainer=d(\"div\",\"flatpickr-innerContainer\"),h.config.weekNumbers){var t=function(){h.calendarContainer.classList.add(\"hasWeeks\");var e=d(\"div\",\"flatpickr-weekwrapper\");e.appendChild(d(\"span\",\"flatpickr-weekday\",h.l10n.weekAbbreviation));var t=d(\"div\",\"flatpickr-weeks\");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),n=t.weekWrapper,a=t.weekNumbers;h.innerContainer.appendChild(n),h.weekNumbers=a,h.weekWrapper=n}h.rContainer=d(\"div\",\"flatpickr-rContainer\"),h.rContainer.appendChild(U()),h.daysContainer||(h.daysContainer=d(\"div\",\"flatpickr-days\"),h.daysContainer.tabIndex=-1),R(),h.rContainer.appendChild(h.daysContainer),h.innerContainer.appendChild(h.rContainer),e.appendChild(h.innerContainer)}h.config.enableTime&&e.appendChild(function(){h.calendarContainer.classList.add(\"hasTime\"),h.config.noCalendar&&h.calendarContainer.classList.add(\"noCalendar\"),h.timeContainer=d(\"div\",\"flatpickr-time\"),h.timeContainer.tabIndex=-1;var e=d(\"span\",\"flatpickr-time-separator\",\":\"),t=u(\"flatpickr-hour\",{\"aria-label\":h.l10n.hourAriaLabel});h.hourElement=t.getElementsByTagName(\"input\")[0];var n=u(\"flatpickr-minute\",{\"aria-label\":h.l10n.minuteAriaLabel});if(h.minuteElement=n.getElementsByTagName(\"input\")[0],h.hourElement.tabIndex=h.minuteElement.tabIndex=-1,h.hourElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getHours():h.config.time_24hr?h.config.defaultHour:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(h.config.defaultHour)),h.minuteElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getMinutes():h.config.defaultMinute),h.hourElement.setAttribute(\"step\",h.config.hourIncrement.toString()),h.minuteElement.setAttribute(\"step\",h.config.minuteIncrement.toString()),h.hourElement.setAttribute(\"min\",h.config.time_24hr?\"0\":\"1\"),h.hourElement.setAttribute(\"max\",h.config.time_24hr?\"23\":\"12\"),h.minuteElement.setAttribute(\"min\",\"0\"),h.minuteElement.setAttribute(\"max\",\"59\"),h.timeContainer.appendChild(t),h.timeContainer.appendChild(e),h.timeContainer.appendChild(n),h.config.time_24hr&&h.timeContainer.classList.add(\"time24hr\"),h.config.enableSeconds){h.timeContainer.classList.add(\"hasSeconds\");var a=u(\"flatpickr-second\");h.secondElement=a.getElementsByTagName(\"input\")[0],h.secondElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getSeconds():h.config.defaultSeconds),h.secondElement.setAttribute(\"step\",h.minuteElement.getAttribute(\"step\")),h.secondElement.setAttribute(\"min\",\"0\"),h.secondElement.setAttribute(\"max\",\"59\"),h.timeContainer.appendChild(d(\"span\",\"flatpickr-time-separator\",\":\")),h.timeContainer.appendChild(a)}return h.config.time_24hr||(h.amPM=d(\"span\",\"flatpickr-am-pm\",h.l10n.amPM[o((h.latestSelectedDateObj?h.hourElement.value:h.config.defaultHour)>11)]),h.amPM.title=h.l10n.toggleTitle,h.amPM.tabIndex=-1,h.timeContainer.appendChild(h.amPM)),h.timeContainer}()),c(h.calendarContainer,\"rangeMode\",\"range\"===h.config.mode),c(h.calendarContainer,\"animate\",!0===h.config.animate),c(h.calendarContainer,\"multiMonth\",h.config.showMonths>1),h.calendarContainer.appendChild(e);var r=void 0!==h.config.appendTo&&void 0!==h.config.appendTo.nodeType;if((h.config.inline||h.config.static)&&(h.calendarContainer.classList.add(h.config.inline?\"inline\":\"static\"),h.config.inline&&(!r&&h.element.parentNode?h.element.parentNode.insertBefore(h.calendarContainer,h._input.nextSibling):void 0!==h.config.appendTo&&h.config.appendTo.appendChild(h.calendarContainer)),h.config.static)){var l=d(\"div\",\"flatpickr-wrapper\");h.element.parentNode&&h.element.parentNode.insertBefore(l,h.element),l.appendChild(h.element),h.altInput&&l.appendChild(h.altInput),l.appendChild(h.calendarContainer)}h.config.static||h.config.inline||(void 0!==h.config.appendTo?h.config.appendTo:window.document.body).appendChild(h.calendarContainer)}(),function(){if(h.config.wrap&&[\"open\",\"close\",\"toggle\",\"clear\"].forEach((function(e){Array.prototype.forEach.call(h.element.querySelectorAll(\"[data-\"+e+\"]\"),(function(t){return O(t,\"click\",h[e])}))})),h.isMobile)!function(){var e=h.config.enableTime?h.config.noCalendar?\"time\":\"datetime-local\":\"date\";h.mobileInput=d(\"input\",h.input.className+\" flatpickr-mobile\"),h.mobileInput.step=h.input.getAttribute(\"step\")||\"any\",h.mobileInput.tabIndex=1,h.mobileInput.type=e,h.mobileInput.disabled=h.input.disabled,h.mobileInput.required=h.input.required,h.mobileInput.placeholder=h.input.placeholder,h.mobileFormatStr=\"datetime-local\"===e?\"Y-m-d\\\\TH:i:S\":\"date\"===e?\"Y-m-d\":\"H:i:S\",h.selectedDates.length>0&&(h.mobileInput.defaultValue=h.mobileInput.value=h.formatDate(h.selectedDates[0],h.mobileFormatStr)),h.config.minDate&&(h.mobileInput.min=h.formatDate(h.config.minDate,\"Y-m-d\")),h.config.maxDate&&(h.mobileInput.max=h.formatDate(h.config.maxDate,\"Y-m-d\")),h.input.type=\"hidden\",void 0!==h.altInput&&(h.altInput.type=\"hidden\");try{h.input.parentNode&&h.input.parentNode.insertBefore(h.mobileInput,h.input.nextSibling)}catch(e){}O(h.mobileInput,\"change\",(function(e){h.setDate(e.target.value,!1,h.mobileFormatStr),fe(\"onChange\"),fe(\"onClose\")}))}();else{var e=r(te,50);h._debouncedChange=r(F,300),h.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&O(h.daysContainer,\"mouseover\",(function(e){\"range\"===h.config.mode&&ee(e.target)})),O(window.document.body,\"keydown\",X),h.config.inline||h.config.static||O(window,\"resize\",e),void 0!==window.ontouchstart?O(window.document,\"touchstart\",G):O(window.document,\"mousedown\",_(G)),O(window.document,\"focus\",G,{capture:!0}),!0===h.config.clickOpens&&(O(h._input,\"focus\",h.open),O(h._input,\"mousedown\",_(h.open))),void 0!==h.daysContainer&&(O(h.monthNav,\"mousedown\",_(De)),O(h.monthNav,[\"keyup\",\"increment\"],S),O(h.daysContainer,\"mousedown\",_(ce))),void 0!==h.timeContainer&&void 0!==h.minuteElement&&void 0!==h.hourElement&&(O(h.timeContainer,[\"increment\"],x),O(h.timeContainer,\"blur\",x,{capture:!0}),O(h.timeContainer,\"mousedown\",_(P)),O([h.hourElement,h.minuteElement],[\"focus\",\"click\"],(function(e){return e.target.select()})),void 0!==h.secondElement&&O(h.secondElement,\"focus\",(function(){return h.secondElement&&h.secondElement.select()})),void 0!==h.amPM&&O(h.amPM,\"mousedown\",_((function(e){x(e),F()}))))}}(),(h.selectedDates.length||h.config.noCalendar)&&(h.config.enableTime&&T(h.config.noCalendar?h.latestSelectedDateObj||h.config.minDate:void 0),ve(!1)),M(),h.showTimeInput=h.selectedDates.length>0||h.config.noCalendar;var a=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!h.isMobile&&a&&oe(),fe(\"onReady\")}(),h}function M(e,t){for(var n=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;ithis.render());const{start:s,end:l,value:r,step:o,title:n}=this.model.properties;this.on_change([s,l,r,o],()=>{const{start:t,end:e,value:i,step:s}=this._calc_to();this.noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s})});const{bar_color:a}=this.model.properties;this.on_change(a,()=>{this._set_bar_color()});const{show_value:d}=this.model.properties;this.on_change([r,n,d],()=>this._update_title())}styles(){return[...super.styles(),h.default,c.default]}_update_title(){r.empty(this.title_el);const t=null==this.model.title||0==this.model.title.length&&!this.model.show_value;if(this.title_el.style.display=t?\"none\":\"\",!t&&(0!=this.model.title.length&&(this.title_el.textContent=this.model.title+\": \"),this.model.show_value)){const{value:t}=this._calc_to(),e=t.map(t=>this.model.pretty(t)).join(\" .. \");this.title_el.appendChild(r.span({class:d.bk_slider_value},e))}}_set_bar_color(){if(!this.model.disabled){this.slider_el.querySelector(\".noUi-connect\").style.backgroundColor=this.model.bar_color}}render(){super.render();const{start:t,end:e,value:i,step:s}=this._calc_to();let n;if(this.model.tooltips){const t={to:t=>this.model.pretty(t)};n=o.repeat(t,i.length)}else n=!1;if(null==this.slider_el){this.slider_el=r.div(),l.create(this.slider_el,{range:{min:t,max:e},start:i,step:s,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:n,orientation:this.model.orientation,direction:this.model.direction}),this.noUiSlider.on(\"slide\",(t,e,i)=>this._slide(i)),this.noUiSlider.on(\"change\",(t,e,i)=>this._change(i));const o=(t,e)=>{if(!n)return;this.slider_el.querySelectorAll(\".noUi-handle\")[t].querySelector(\".noUi-tooltip\").style.display=e?\"block\":\"\"};this.noUiSlider.on(\"start\",(t,e)=>o(e,!0)),this.noUiSlider.on(\"end\",(t,e)=>o(e,!1))}else this.noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s});this._set_bar_color(),this.model.disabled?this.slider_el.setAttribute(\"disabled\",\"true\"):this.slider_el.removeAttribute(\"disabled\"),this.title_el=r.div({class:d.bk_slider_title}),this._update_title(),this.group_el=r.div({class:_.bk_input_group},this.title_el,this.slider_el),this.el.appendChild(this.group_el)}_slide(t){this.model.value=this._calc_from(t)}_change(t){this.model.value=this._calc_from(t),this.model.value_throttled=this.model.value}}u.__name__=\"AbstractBaseSliderView\";class m extends u{_calc_to(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}}_calc_from([t]){return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(t):t}}i.AbstractSliderView=m,m.__name__=\"AbstractSliderView\";class p extends u{_calc_to(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}}_calc_from(t){return t}}i.AbstractRangeSliderView=p,p.__name__=\"AbstractRangeSliderView\";class b extends n.Control{constructor(t){super(t),this.connected=!1}static init_AbstractSlider(){this.define(({Any:t,Boolean:e,Number:i,String:s,Color:l,Or:r,Enum:o,Ref:n})=>({title:[s,\"\"],show_value:[e,!0],start:[t],end:[t],value:[t],value_throttled:[t],step:[i,1],format:[r(s,n(a.TickFormatter))],direction:[o(\"ltr\",\"rtl\"),\"ltr\"],tooltips:[e,!0],bar_color:[l,\"#e6e6e6\"]}))}_formatter(t,e){return\"\"+t}pretty(t){return this._formatter(t,this.format)}}i.AbstractSlider=b,b.__name__=\"AbstractSlider\",b.init_AbstractSlider()},\n", + " 424: function _(t,e,r){\n", + " /*! nouislider - 14.6.0 - 6/27/2020 */\n", + " var n;n=function(){\"use strict\";var t=\"14.6.0\";function e(t){t.parentElement.removeChild(t)}function r(t){return null!=t}function n(t){t.preventDefault()}function i(t){return\"number\"==typeof t&&!isNaN(t)&&isFinite(t)}function o(t,e,r){r>0&&(u(t,e),setTimeout((function(){c(t,e)}),r))}function s(t){return Math.max(Math.min(t,100),0)}function a(t){return Array.isArray(t)?t:[t]}function l(t){var e=(t=String(t)).split(\".\");return e.length>1?e[1].length:0}function u(t,e){t.classList&&!/\\s/.test(e)?t.classList.add(e):t.className+=\" \"+e}function c(t,e){t.classList&&!/\\s/.test(e)?t.classList.remove(e):t.className=t.className.replace(new RegExp(\"(^|\\\\b)\"+e.split(\" \").join(\"|\")+\"(\\\\b|$)\",\"gi\"),\" \")}function p(t){var e=void 0!==window.pageXOffset,r=\"CSS1Compat\"===(t.compatMode||\"\");return{x:e?window.pageXOffset:r?t.documentElement.scrollLeft:t.body.scrollLeft,y:e?window.pageYOffset:r?t.documentElement.scrollTop:t.body.scrollTop}}function f(t,e){return 100/(e-t)}function d(t,e,r){return 100*e/(t[r+1]-t[r])}function h(t,e){for(var r=1;t>=e[r];)r+=1;return r}function m(t,e,r){if(r>=t.slice(-1)[0])return 100;var n=h(r,t),i=t[n-1],o=t[n],s=e[n-1],a=e[n];return s+function(t,e){return d(t,t[0]<0?e+Math.abs(t[0]):e-t[0],0)}([i,o],r)/f(s,a)}function g(t,e,r,n){if(100===n)return n;var i=h(n,t),o=t[i-1],s=t[i];return r?n-o>(s-o)/2?s:o:e[i-1]?t[i-1]+function(t,e){return Math.round(t/e)*e}(n-t[i-1],e[i-1]):n}function v(t,e,r){var n;if(\"number\"==typeof e&&(e=[e]),!Array.isArray(e))throw new Error(\"noUiSlider (14.6.0): 'range' contains invalid value.\");if(!i(n=\"min\"===t?0:\"max\"===t?100:parseFloat(t))||!i(e[0]))throw new Error(\"noUiSlider (14.6.0): 'range' value isn't numeric.\");r.xPct.push(n),r.xVal.push(e[0]),n?r.xSteps.push(!isNaN(e[1])&&e[1]):isNaN(e[1])||(r.xSteps[0]=e[1]),r.xHighestCompleteStep.push(0)}function b(t,e,r){if(e)if(r.xVal[t]!==r.xVal[t+1]){r.xSteps[t]=d([r.xVal[t],r.xVal[t+1]],e,0)/f(r.xPct[t],r.xPct[t+1]);var n=(r.xVal[t+1]-r.xVal[t])/r.xNumSteps[t],i=Math.ceil(Number(n.toFixed(3))-1),o=r.xVal[t]+r.xNumSteps[t]*i;r.xHighestCompleteStep[t]=o}else r.xSteps[t]=r.xHighestCompleteStep[t]=r.xVal[t]}function x(t,e,r){var n;this.xPct=[],this.xVal=[],this.xSteps=[r||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=e;var i=[];for(n in t)t.hasOwnProperty(n)&&i.push([t[n],n]);for(i.length&&\"object\"==typeof i[0][0]?i.sort((function(t,e){return t[0][0]-e[0][0]})):i.sort((function(t,e){return t[0]-e[0]})),n=0;nthis.xPct[i+1];)i++;else t===this.xPct[this.xPct.length-1]&&(i=this.xPct.length-2);r||t!==this.xPct[i+1]||i++;var o=1,s=e[i],a=0,l=0,u=0,c=0;for(n=r?(t-this.xPct[i])/(this.xPct[i+1]-this.xPct[i]):(this.xPct[i+1]-t)/(this.xPct[i+1]-this.xPct[i]);s>0;)a=this.xPct[i+1+c]-this.xPct[i+c],e[i+c]*o+100-100*n>100?(l=a*n,o=(s-100*n)/e[i+c],n=1):(l=e[i+c]*a/100*o,o=0),r?(u-=l,this.xPct.length+c>=1&&c--):(u+=l,this.xPct.length-c>=1&&c++),s=e[i+c]*o;return t+u},x.prototype.toStepping=function(t){return t=m(this.xVal,this.xPct,t)},x.prototype.fromStepping=function(t){return function(t,e,r){if(r>=100)return t.slice(-1)[0];var n=h(r,e),i=t[n-1],o=t[n],s=e[n-1];return function(t,e){return e*(t[1]-t[0])/100+t[0]}([i,o],(r-s)*f(s,e[n]))}(this.xVal,this.xPct,t)},x.prototype.getStep=function(t){return t=g(this.xPct,this.xSteps,this.snap,t)},x.prototype.getDefaultStep=function(t,e,r){var n=h(t,this.xPct);return(100===t||e&&t===this.xPct[n-1])&&(n=Math.max(n-1,1)),(this.xVal[n]-this.xVal[n-1])/r},x.prototype.getNearbySteps=function(t){var e=h(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e],step:this.xNumSteps[e],highestStep:this.xHighestCompleteStep[e]}}},x.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(l);return Math.max.apply(null,t)},x.prototype.convert=function(t){return this.getStep(this.toStepping(t))};var S={to:function(t){return void 0!==t&&t.toFixed(2)},from:Number},w={target:\"target\",base:\"base\",origin:\"origin\",handle:\"handle\",handleLower:\"handle-lower\",handleUpper:\"handle-upper\",touchArea:\"touch-area\",horizontal:\"horizontal\",vertical:\"vertical\",background:\"background\",connect:\"connect\",connects:\"connects\",ltr:\"ltr\",rtl:\"rtl\",textDirectionLtr:\"txt-dir-ltr\",textDirectionRtl:\"txt-dir-rtl\",draggable:\"draggable\",drag:\"state-drag\",tap:\"state-tap\",active:\"active\",tooltip:\"tooltip\",pips:\"pips\",pipsHorizontal:\"pips-horizontal\",pipsVertical:\"pips-vertical\",marker:\"marker\",markerHorizontal:\"marker-horizontal\",markerVertical:\"marker-vertical\",markerNormal:\"marker-normal\",markerLarge:\"marker-large\",markerSub:\"marker-sub\",value:\"value\",valueHorizontal:\"value-horizontal\",valueVertical:\"value-vertical\",valueNormal:\"value-normal\",valueLarge:\"value-large\",valueSub:\"value-sub\"};function y(t){if(function(t){return\"object\"==typeof t&&\"function\"==typeof t.to&&\"function\"==typeof t.from}(t))return!0;throw new Error(\"noUiSlider (14.6.0): 'format' requires 'to' and 'from' methods.\")}function E(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.0): 'step' is not numeric.\");t.singleStep=e}function C(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.0): 'keyboardPageMultiplier' is not numeric.\");t.keyboardPageMultiplier=e}function P(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.0): 'keyboardDefaultStep' is not numeric.\");t.keyboardDefaultStep=e}function N(t,e){if(\"object\"!=typeof e||Array.isArray(e))throw new Error(\"noUiSlider (14.6.0): 'range' is not an object.\");if(void 0===e.min||void 0===e.max)throw new Error(\"noUiSlider (14.6.0): Missing 'min' or 'max' in 'range'.\");if(e.min===e.max)throw new Error(\"noUiSlider (14.6.0): 'range' 'min' and 'max' cannot be equal.\");t.spectrum=new x(e,t.snap,t.singleStep)}function k(t,e){if(e=a(e),!Array.isArray(e)||!e.length)throw new Error(\"noUiSlider (14.6.0): 'start' option is incorrect.\");t.handles=e.length,t.start=e}function U(t,e){if(t.snap=e,\"boolean\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'snap' option must be a boolean.\")}function A(t,e){if(t.animate=e,\"boolean\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'animate' option must be a boolean.\")}function V(t,e){if(t.animationDuration=e,\"number\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'animationDuration' option must be a number.\")}function D(t,e){var r,n=[!1];if(\"lower\"===e?e=[!0,!1]:\"upper\"===e&&(e=[!1,!0]),!0===e||!1===e){for(r=1;r1)throw new Error(\"noUiSlider (14.6.0): 'padding' option must not exceed 100% of the range.\")}}function H(t,e){switch(e){case\"ltr\":t.dir=0;break;case\"rtl\":t.dir=1;break;default:throw new Error(\"noUiSlider (14.6.0): 'direction' option was not recognized.\")}}function j(t,e){if(\"string\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'behaviour' must be a string containing options.\");var r=e.indexOf(\"tap\")>=0,n=e.indexOf(\"drag\")>=0,i=e.indexOf(\"fixed\")>=0,o=e.indexOf(\"snap\")>=0,s=e.indexOf(\"hover\")>=0,a=e.indexOf(\"unconstrained\")>=0;if(i){if(2!==t.handles)throw new Error(\"noUiSlider (14.6.0): 'fixed' behaviour must be used with 2 handles\");O(t,t.start[1]-t.start[0])}if(a&&(t.margin||t.limit))throw new Error(\"noUiSlider (14.6.0): 'unconstrained' behaviour cannot be used with margin or limit\");t.events={tap:r||o,drag:n,fixed:i,snap:o,hover:s,unconstrained:a}}function F(t,e){if(!1!==e)if(!0===e){t.tooltips=[];for(var r=0;r0&&((a=M(i,!1)).className=c(s,r.cssClasses.value),a.setAttribute(\"data-value\",o),a.style[r.style]=t+\"%\",a.innerHTML=n.to(o))}}(o,t[o][0],t[o][1])})),i}function B(){h&&(e(h),h=null)}function q(t){B();var e=t.mode,r=t.density||1,n=t.filter||!1,i=function(t,e,r){if(\"range\"===t||\"steps\"===t)return y.xVal;if(\"count\"===t){if(e<2)throw new Error(\"noUiSlider (14.6.0): 'values' (>= 2) required for mode 'count'.\");var n=e-1,i=100/n;for(e=[];n--;)e[n]=n*i;e.push(100),t=\"positions\"}return\"positions\"===t?e.map((function(t){return y.fromStepping(r?y.getStep(t):t)})):\"values\"===t?r?e.map((function(t){return y.fromStepping(y.getStep(y.toStepping(t)))})):e:void 0}(e,t.values||!1,t.stepped||!1),o=function(t,e,r){var n,i={},o=y.xVal[0],s=y.xVal[y.xVal.length-1],a=!1,l=!1,u=0;return n=r.slice().sort((function(t,e){return t-e})),(r=n.filter((function(t){return!this[t]&&(this[t]=!0)}),{}))[0]!==o&&(r.unshift(o),a=!0),r[r.length-1]!==s&&(r.push(s),l=!0),r.forEach((function(n,o){var s,c,p,f,d,h,m,g,v,b,x=n,S=r[o+1],w=\"steps\"===e;if(w&&(s=y.xNumSteps[o]),s||(s=S-x),!1!==x&&void 0!==S)for(s=Math.max(s,1e-7),c=x;c<=S;c=(c+s).toFixed(7)/1){for(g=(d=(f=y.toStepping(c))-u)/t,b=d/(v=Math.round(g)),p=1;p<=v;p+=1)i[(h=u+p*b).toFixed(5)]=[y.fromStepping(h),0];m=r.indexOf(c)>-1?1:w?2:0,!o&&a&&c!==S&&(m=0),c===S&&l||(i[f.toFixed(5)]=[c,m]),u=f}})),i}(r,e,i),s=t.format||{to:Math.round};return h=w.appendChild(T(o,n,s))}function X(){var t=l.getBoundingClientRect(),e=\"offset\"+[\"Width\",\"Height\"][r.ort];return 0===r.ort?t.width||l[e]:t.height||l[e]}function _(t,e,n,i){var o=function(o){return!!(o=function(t,e,r){var n,i,o=0===t.type.indexOf(\"touch\"),s=0===t.type.indexOf(\"mouse\"),a=0===t.type.indexOf(\"pointer\");if(0===t.type.indexOf(\"MSPointer\")&&(a=!0),o){var l=function(t){return t.target===r||r.contains(t.target)||t.target.shadowRoot&&t.target.shadowRoot.contains(r)};if(\"touchstart\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(u.length>1)return!1;n=u[0].pageX,i=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;n=c.pageX,i=c.pageY}}return e=e||p(U),(s||a)&&(n=t.clientX+e.x,i=t.clientY+e.y),t.pageOffset=e,t.points=[n,i],t.cursor=s||a,t}(o,i.pageOffset,i.target||e))&&!(H()&&!i.doNotReject)&&(s=w,a=r.cssClasses.tap,!((s.classList?s.classList.contains(a):new RegExp(\"\\\\b\"+a+\"\\\\b\").test(s.className))&&!i.doNotReject)&&!(t===x.start&&void 0!==o.buttons&&o.buttons>1)&&(!i.hover||!o.buttons)&&(S||o.preventDefault(),o.calcPoint=o.points[r.ort],void n(o,i)));var s,a},s=[];return t.split(\" \").forEach((function(t){e.addEventListener(t,o,!!S&&{passive:!0}),s.push([t,o])})),s}function I(t){var e,n,i,o,a,u,c=100*(t-(e=l,n=r.ort,i=e.getBoundingClientRect(),o=e.ownerDocument,a=o.documentElement,u=p(o),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(u.x=0),n?i.top+u.y-a.clientTop:i.left+u.x-a.clientLeft))/X();return c=s(c),r.dir?100-c:c}function W(t,e){\"mouseout\"===t.type&&\"HTML\"===t.target.nodeName&&null===t.relatedTarget&&G(t,e)}function $(t,e){if(-1===navigator.appVersion.indexOf(\"MSIE 9\")&&0===t.buttons&&0!==e.buttonsProperty)return G(t,e);var n=(r.dir?-1:1)*(t.calcPoint-e.startCalcPoint);it(n>0,100*n/e.baseSize,e.locations,e.handleNumbers)}function G(t,e){e.handle&&(c(e.handle,r.cssClasses.active),N-=1),e.listeners.forEach((function(t){A.removeEventListener(t[0],t[1])})),0===N&&(c(w,r.cssClasses.drag),st(),t.cursor&&(V.style.cursor=\"\",V.removeEventListener(\"selectstart\",n))),e.handleNumbers.forEach((function(t){et(\"change\",t),et(\"set\",t),et(\"end\",t)}))}function J(t,e){if(e.handleNumbers.some(j))return!1;var i;1===e.handleNumbers.length&&(i=f[e.handleNumbers[0]].children[0],N+=1,u(i,r.cssClasses.active)),t.stopPropagation();var o=[],s=_(x.move,A,$,{target:t.target,handle:i,listeners:o,startCalcPoint:t.calcPoint,baseSize:X(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:C.slice()}),a=_(x.end,A,G,{target:t.target,handle:i,listeners:o,doNotReject:!0,handleNumbers:e.handleNumbers}),l=_(\"mouseout\",A,W,{target:t.target,handle:i,listeners:o,doNotReject:!0,handleNumbers:e.handleNumbers});o.push.apply(o,s.concat(a,l)),t.cursor&&(V.style.cursor=getComputedStyle(t.target).cursor,f.length>1&&u(w,r.cssClasses.drag),V.addEventListener(\"selectstart\",n,!1)),e.handleNumbers.forEach((function(t){et(\"start\",t)}))}function K(t){if(!t.buttons&&!t.touches)return!1;t.stopPropagation();var e=I(t.calcPoint),n=function(t){var e=100,r=!1;return f.forEach((function(n,i){if(!j(i)){var o=C[i],s=Math.abs(o-t);(so||100===s&&100===e)&&(r=i,e=s)}})),r}(e);if(!1===n)return!1;r.events.snap||o(w,r.cssClasses.tap,r.animationDuration),at(n,e,!0,!0),st(),et(\"slide\",n,!0),et(\"update\",n,!0),et(\"change\",n,!0),et(\"set\",n,!0),r.events.snap&&J(t,{handleNumbers:[n]})}function Q(t){var e=I(t.calcPoint),r=y.getStep(e),n=y.fromStepping(r);Object.keys(k).forEach((function(t){\"hover\"===t.split(\".\")[0]&&k[t].forEach((function(t){t.call(g,n)}))}))}function Z(t,e){k[t]=k[t]||[],k[t].push(e),\"update\"===t.split(\".\")[0]&&f.forEach((function(t,e){et(\"update\",e)}))}function tt(t){var e=t&&t.split(\".\")[0],r=e&&t.substring(e.length);Object.keys(k).forEach((function(t){var n=t.split(\".\")[0],i=t.substring(n.length);e&&e!==n||r&&r!==i||delete k[t]}))}function et(t,e,n){Object.keys(k).forEach((function(i){var o=i.split(\".\")[0];t===o&&k[i].forEach((function(t){t.call(g,E.map(r.format.to),e,E.slice(),n||!1,C.slice(),g)}))}))}function rt(t,e,n,i,o,a){var l;return f.length>1&&!r.events.unconstrained&&(i&&e>0&&(l=y.getAbsoluteDistance(t[e-1],r.margin,0),n=Math.max(n,l)),o&&e1&&r.limit&&(i&&e>0&&(l=y.getAbsoluteDistance(t[e-1],r.limit,0),n=Math.min(n,l)),o&&e1?n.forEach((function(t,r){var n=rt(i,t,i[t]+e,o[r],s[r],!1);!1===n?e=0:(e=n-i[t],i[t]=n)})):o=s=[!0];var a=!1;n.forEach((function(t,n){a=at(t,r[t]+e,o[n],s[n])||a})),a&&n.forEach((function(t){et(\"update\",t),et(\"slide\",t)}))}function ot(t,e){return r.dir?100-t-e:t}function st(){P.forEach((function(t){var e=C[t]>50?-1:1,r=3+(f.length+e*t);f[t].style.zIndex=r}))}function at(t,e,n,i){return!1!==(e=rt(C,t,e,n,i,!1))&&(function(t,e){C[t]=e,E[t]=y.fromStepping(e);var n=\"translate(\"+nt(10*(ot(e,0)-D)+\"%\",\"0\")+\")\";f[t].style[r.transformRule]=n,lt(t),lt(t+1)}(t,e),!0)}function lt(t){if(d[t]){var e=0,n=100;0!==t&&(e=C[t-1]),t!==d.length-1&&(n=C[t]);var i=n-e,o=\"translate(\"+nt(ot(e,i)+\"%\",\"0\")+\")\",s=\"scale(\"+nt(i/100,\"1\")+\")\";d[t].style[r.transformRule]=o+\" \"+s}}function ut(t,e){return null===t||!1===t||void 0===t?C[e]:(\"number\"==typeof t&&(t=String(t)),t=r.format.from(t),!1===(t=y.toStepping(t))||isNaN(t)?C[e]:t)}function ct(t,e){var n=a(t),i=void 0===C[0];e=void 0===e||!!e,r.animate&&!i&&o(w,r.cssClasses.tap,r.animationDuration),P.forEach((function(t){at(t,ut(n[t],t),!0,!1)}));for(var s=1===P.length?0:1;sn.stepAfter.startValue&&(o=n.stepAfter.startValue-i),s=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===e?o=null:0===e&&(s=null);var a=y.countStepDecimals();return null!==o&&!1!==o&&(o=Number(o.toFixed(a))),null!==s&&!1!==s&&(s=Number(s.toFixed(a))),[s,o]}return u(v=w,r.cssClasses.target),0===r.dir?u(v,r.cssClasses.ltr):u(v,r.cssClasses.rtl),0===r.ort?u(v,r.cssClasses.horizontal):u(v,r.cssClasses.vertical),u(v,\"rtl\"===getComputedStyle(v).direction?r.cssClasses.textDirectionRtl:r.cssClasses.textDirectionLtr),l=M(v,r.cssClasses.base),function(t,e){var n=M(e,r.cssClasses.connects);f=[],(d=[]).push(L(n,t[0]));for(var i=0;i=0&&t .noUi-tooltip {\\n -webkit-transform: translate(50%, 0);\\n transform: translate(50%, 0);\\n left: auto;\\n bottom: 10px;\\n}\\n.bk-root .noUi-vertical .noUi-origin > .noUi-tooltip {\\n -webkit-transform: translate(0, -18px);\\n transform: translate(0, -18px);\\n top: auto;\\n right: 28px;\\n}\\n.bk-root .noUi-handle {\\n cursor: grab;\\n cursor: -webkit-grab;\\n}\\n.bk-root .noUi-handle.noUi-active {\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n}\\n.bk-root .noUi-handle:after,\\n.bk-root .noUi-handle:before {\\n display: none;\\n}\\n.bk-root .noUi-tooltip {\\n display: none;\\n white-space: nowrap;\\n}\\n.bk-root .noUi-handle:hover .noUi-tooltip {\\n display: block;\\n}\\n.bk-root .noUi-horizontal {\\n width: 100%;\\n height: 10px;\\n}\\n.bk-root .noUi-vertical {\\n width: 10px;\\n height: 100%;\\n}\\n.bk-root .noUi-horizontal .noUi-handle {\\n width: 14px;\\n height: 18px;\\n right: -7px;\\n top: -5px;\\n}\\n.bk-root .noUi-vertical .noUi-handle {\\n width: 18px;\\n height: 14px;\\n right: -5px;\\n top: -7px;\\n}\\n.bk-root .noUi-target.noUi-horizontal {\\n margin: 5px 0px;\\n}\\n.bk-root .noUi-target.noUi-vertical {\\n margin: 0px 5px;\\n}\\n\"},\n", + " 427: function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default=\"\\n.bk-root .bk-slider-title {\\n white-space: nowrap;\\n}\\n.bk-root .bk-slider-value {\\n font-weight: 600;\\n}\\n\"},\n", + " 428: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1).__importDefault(e(186)),a=e(423);class d extends a.AbstractSliderView{}i.DateSliderView=d,d.__name__=\"DateSliderView\";class s extends a.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}static init_DateSlider(){this.prototype.default_view=d,this.override({format:\"%d %b %Y\"})}_formatter(e,t){return r.default(e,t)}}i.DateSlider=s,s.__name__=\"DateSlider\",s.init_DateSlider()},\n", + " 429: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1),_=e(430),n=r.__importStar(e(18));class s extends _.MarkupView{render(){super.render(),this.model.render_as_text?this.markup_el.textContent=this.model.text:this.markup_el.innerHTML=this.model.text}}i.DivView=s,s.__name__=\"DivView\";class a extends _.Markup{constructor(e){super(e)}static init_Div(){this.prototype.default_view=s,this.define({render_as_text:[n.Boolean,!1]})}}i.Div=a,a.__name__=\"Div\",a.init_Div()},\n", + " 430: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),a=e(217),n=e(72),l=i.__importStar(e(18)),r=e(472),_=e(431),c=i.__importDefault(e(432));class u extends r.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>{this.layout.invalidate_cache(),this.render(),this.root.compute_layout()})}styles(){return[...super.styles(),c.default]}_update_layout(){this.layout=new a.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render();const e=Object.assign(Object.assign({},this.model.style),{display:\"inline-block\"});this.markup_el=n.div({class:_.bk_clearfix,style:e}),this.el.appendChild(this.markup_el)}}s.MarkupView=u,u.__name__=\"MarkupView\";class o extends r.Widget{constructor(e){super(e)}static init_Markup(){this.define({text:[l.String,\"\"],style:[l.Any,{}]})}}s.Markup=o,o.__name__=\"Markup\",o.init_Markup()},\n", + " 431: function _(e,c,f){Object.defineProperty(f,\"__esModule\",{value:!0}),f.bk_clearfix=\"bk-clearfix\"},\n", + " 432: function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root .bk-clearfix:before,\\n.bk-root .bk-clearfix:after {\\n content: \"\";\\n display: table;\\n}\\n.bk-root .bk-clearfix:after {\\n clear: both;\\n}\\n'},\n", + " 433: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(404),o=e(313),_=e(72),d=n.__importStar(e(18)),l=e(8),r=e(173),u=e(281),c=e(282),h=n.__importDefault(e(284));class p extends s.AbstractButtonView{constructor(){super(...arguments),this._open=!1}styles(){return[...super.styles(),h.default]}render(){super.render();const e=_.div({class:[c.bk_caret,r.bk_down]});if(this.model.is_split){const t=this._render_button(e);t.classList.add(u.bk_dropdown_toggle),t.addEventListener(\"click\",()=>this._toggle_menu()),this.group_el.appendChild(t)}else this.button_el.appendChild(e);const t=this.model.menu.map((e,t)=>{if(null==e)return _.div({class:c.bk_divider});{const i=l.isString(e)?e:e[0],n=_.div({},i);return n.addEventListener(\"click\",()=>this._item_click(t)),n}});this.menu=_.div({class:[c.bk_menu,r.bk_below]},t),this.el.appendChild(this.menu),_.undisplay(this.menu)}_show_menu(){if(!this._open){this._open=!0,_.display(this.menu);const e=t=>{const{target:i}=t;i instanceof HTMLElement&&!this.el.contains(i)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,_.undisplay(this.menu))}_toggle_menu(){this._open?this._hide_menu():this._show_menu()}click(){this.model.is_split?(this._hide_menu(),this.model.trigger_event(new o.ButtonClick),super.click()):this._toggle_menu()}_item_click(e){this._hide_menu();const t=this.model.menu[e];if(null!=t){const i=l.isString(t)?t:t[1];l.isString(i)?this.model.trigger_event(new o.MenuItemClick(i)):i.execute(this.model,{index:e})}}}i.DropdownView=p,p.__name__=\"DropdownView\";class m extends s.AbstractButton{constructor(e){super(e)}static init_Dropdown(){this.prototype.default_view=p,this.define({split:[d.Boolean,!1],menu:[d.Array,[]]}),this.override({label:\"Dropdown\"})}get is_split(){return this.split}}i.Dropdown=m,m.__name__=\"Dropdown\",m.init_Dropdown()},\n", + " 434: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const l=e(1).__importStar(e(18)),s=e(472);class n extends s.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render()),this.connect(this.model.properties.width.change,()=>this.render())}render(){null==this.dialogEl&&(this.dialogEl=document.createElement(\"input\"),this.dialogEl.type=\"file\",this.dialogEl.multiple=this.model.multiple,this.dialogEl.onchange=()=>{const{files:e}=this.dialogEl;null!=e&&this.load_files(e)},this.el.appendChild(this.dialogEl)),null!=this.model.accept&&\"\"!=this.model.accept&&(this.dialogEl.accept=this.model.accept),this.dialogEl.style.width=\"{this.model.width}px\",this.dialogEl.disabled=this.model.disabled}async load_files(e){const t=[],i=[],l=[];let s;for(s=0;s{const l=new FileReader;l.onload=()=>{var s;const{result:n}=l;null!=n?t(n):i(null!==(s=l.error)&&void 0!==s?s:new Error(`unable to read '${e.name}'`))},l.readAsDataURL(e)})}}i.FileInputView=n,n.__name__=\"FileInputView\";class o extends s.Widget{constructor(e){super(e)}static init_FileInput(){this.prototype.default_view=n,this.define({value:[l.Any,\"\"],mime_type:[l.Any,\"\"],filename:[l.Any,\"\"],accept:[l.String,\"\"],multiple:[l.Boolean,!1]})}}i.FileInput=o,o.__name__=\"FileInput\",o.init_FileInput()},\n", + " 435: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),n=e(72),l=e(8),o=i.__importStar(e(18)),c=e(410),r=e(412);class h extends c.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.value.change,()=>this.render_selection()),this.connect(this.model.properties.options.change,()=>this.render()),this.connect(this.model.properties.name.change,()=>this.render()),this.connect(this.model.properties.title.change,()=>this.render()),this.connect(this.model.properties.size.change,()=>this.render()),this.connect(this.model.properties.disabled.change,()=>this.render())}render(){super.render();const e=this.model.options.map(e=>{let t,s;return l.isString(e)?t=s=e:[t,s]=e,n.option({value:t},s)});this.select_el=n.select({multiple:!0,class:r.bk_input,name:this.model.name,disabled:this.model.disabled},e),this.select_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.select_el),this.render_selection()}render_selection(){const e=new Set(this.model.value);for(const t of this.el.querySelectorAll(\"option\"))t.selected=e.has(t.value);this.select_el.size=this.model.size}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.select_el.focus()}}s.MultiSelectView=h,h.__name__=\"MultiSelectView\";class d extends c.InputWidget{constructor(e){super(e)}static init_MultiSelect(){this.prototype.default_view=h,this.define({value:[o.Array,[]],options:[o.Array,[]],size:[o.Number,4]})}}s.MultiSelect=d,d.__name__=\"MultiSelect\",d.init_MultiSelect()},\n", + " 436: function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const t=a(430),p=a(72);class s extends t.MarkupView{render(){super.render();const a=p.p({style:{margin:0}},this.model.text);this.markup_el.appendChild(a)}}r.ParagraphView=s,s.__name__=\"ParagraphView\";class i extends t.Markup{constructor(a){super(a)}static init_Paragraph(){this.prototype.default_view=s}}r.Paragraph=i,i.__name__=\"Paragraph\",i.init_Paragraph()},\n", + " 437: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(409);class r extends n.TextInputView{render(){super.render(),this.input_el.type=\"password\"}}s.PasswordInputView=r,r.__name__=\"PasswordInputView\";class p extends n.TextInput{constructor(e){super(e)}static init_PasswordInput(){this.prototype.default_view=r}}s.PasswordInput=p,p.__name__=\"PasswordInput\",p.init_PasswordInput()},\n", + " 438: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const l=e(1),s=l.__importDefault(e(439)),o=e(72),n=e(8),h=e(217),a=l.__importStar(e(18)),c=e(412),u=l.__importDefault(e(440)),d=e(410);class _ extends d.InputWidgetView{constructor(){super(...arguments),this._last_height=null}connect_signals(){super.connect_signals(),this.connect(this.model.properties.disabled.change,()=>this.set_disabled());const{value:e,max_items:t,option_limit:i,delete_button:l,placeholder:s,options:o,name:n,title:h}=this.model.properties;this.on_change([e,t,i,l,s,o,n,h],()=>this.render())}styles(){return[...super.styles(),u.default]}_update_layout(){this.layout=new h.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render(),this.select_el=o.select({multiple:!0,class:c.bk_input,name:this.model.name,disabled:this.model.disabled}),this.group_el.appendChild(this.select_el);const e=new Set(this.model.value),t=this.model.options.map(t=>{let i,l;return n.isString(t)?i=l=t:[i,l]=t,{value:i,label:l,selected:e.has(i)}}),i=this.model.solid?\"solid\":\"light\",l=\"choices__item \"+i,h=\"choices__button \"+i,a={choices:t,duplicateItemsAllowed:!1,removeItemButton:this.model.delete_button,classNames:{item:l,button:h}};null!=this.model.placeholder&&(a.placeholderValue=this.model.placeholder),null!=this.model.max_items&&(a.maxItemCount=this.model.max_items),null!=this.model.option_limit&&(a.renderChoiceLimit=this.model.option_limit),this.choice_el=new s.default(this.select_el,a);const u=()=>this.choice_el.containerOuter.element.getBoundingClientRect().height;null!=this._last_height&&this._last_height!=u()&&this.root.invalidate_layout(),this._last_height=u(),this.select_el.addEventListener(\"change\",()=>this.change_input())}set_disabled(){this.model.disabled?this.choice_el.disable():this.choice_el.enable()}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.select_el.focus()}}i.MultiChoiceView=_,_.__name__=\"MultiChoiceView\";class r extends d.InputWidget{constructor(e){super(e)}static init_MultiChoice(){this.prototype.default_view=_,this.define({value:[a.Array,[]],options:[a.Array,[]],max_items:[a.Number,null],delete_button:[a.Boolean,!0],placeholder:[a.String,null],option_limit:[a.Number,null],solid:[a.Boolean,!0]})}}i.MultiChoice=r,r.__name__=\"MultiChoice\",r.init_MultiChoice()},\n", + " 439: function _(e,t,i){\n", + " /*! choices.js v9.0.1 | © 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n", + " var n,s;n=window,s=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"/public/assets/scripts/\",i(i.s=4)}([function(e,t,i){\"use strict\";var n=function(e){return function(e){return!!e&&\"object\"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return\"[object RegExp]\"===t||\"[object Date]\"===t||function(e){return e.$$typeof===s}(e)}(e)},s=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?l((i=e,Array.isArray(i)?[]:{}),e,t):e;var i}function o(e,t,i){return e.concat(t).map((function(e){return r(e,i)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function c(e,t,i){var n={};return i.isMergeableObject(e)&&a(e).forEach((function(t){n[t]=r(e[t],i)})),a(t).forEach((function(s){(function(e,t){try{return t in e&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}catch(e){return!1}})(e,s)||(i.isMergeableObject(t[s])&&e[s]?n[s]=function(e,t){if(!t.customMerge)return l;var i=t.customMerge(e);return\"function\"==typeof i?i:l}(s,i)(e[s],t[s],i):n[s]=r(t[s],i))})),n}function l(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||o,i.isMergeableObject=i.isMergeableObject||n,i.cloneUnlessOtherwiseSpecified=r;var s=Array.isArray(t);return s===Array.isArray(e)?s?i.arrayMerge(e,t,i):c(e,t,i):r(t,i)}l.all=function(e,t){if(!Array.isArray(e))throw new Error(\"first argument should be an array\");return e.reduce((function(e,i){return l(e,i,t)}),{})};var h=l;e.exports=h},function(e,t,i){\"use strict\";(function(e,n){var s,r=i(3);s=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==e?e:n;var o=Object(r.a)(s);t.a=o}).call(this,i(5),i(6)(e))},function(e,t,i){\n", + " /*!\n", + " * Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io)\n", + " *\n", + " * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)\n", + " * All Rights Reserved. Apache Software License 2.0\n", + " *\n", + " * http://www.apache.org/licenses/LICENSE-2.0\n", + " */\n", + " e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=1)}([function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===Object.prototype.toString.call(e)}},function(e,t,i){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function s(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\\nSearch pattern: \"'.concat(e,'\"'));var i=this._prepareSearchers(e),n=i.tokenSearchers,s=i.fullSearcher,r=this._search(n,s),o=r.weights,a=r.results;return this._computeScore(o,a),this.options.shouldSort&&this._sort(a),t.limit&&\"number\"==typeof t.limit&&(a=a.slice(0,t.limit)),this._format(a)}},{key:\"_prepareSearchers\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",t=[];if(this.options.tokenize)for(var i=e.split(this.options.tokenSeparator),n=0,s=i.length;n0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,i=this.list,n={},s=[];if(\"string\"==typeof i[0]){for(var r=0,o=i.length;r1)throw new Error(\"Key weight has to be > 0 and <= 1\");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(h,p),record:h,index:c},{resultMap:n,results:s,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:s}}},{key:\"_analyze\",value:function(e,t){var i=e.key,n=e.arrayIndex,s=void 0===n?-1:n,r=e.value,o=e.record,c=e.index,l=t.tokenSearchers,h=void 0===l?[]:l,u=t.fullSearcher,d=void 0===u?[]:u,p=t.resultMap,m=void 0===p?{}:p,f=t.results,v=void 0===f?[]:f;if(null!=r){var g=!1,_=-1,b=0;if(\"string\"==typeof r){this._log(\"\\nKey: \".concat(\"\"===i?\"-\":i));var y=d.search(r);if(this._log('Full text: \"'.concat(r,'\", score: ').concat(y.score)),this.options.tokenize){for(var E=r.split(this.options.tokenSeparator),I=[],S=0;S-1&&(P=(P+_)/2),this._log(\"Score average:\",P);var D=!this.options.tokenize||!this.options.matchAllTokens||b>=h.length;if(this._log(\"\\nCheck Matches: \".concat(D)),(g||y.isMatch)&&D){var M=m[c];M?M.output.push({key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}):(m[c]={item:o,output:[{key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}]},v.push(m[c]))}}else if(a(r))for(var N=0,F=r.length;N-1&&(o.arrayIndex=r.arrayIndex),t.matches.push(o)}}})),this.options.includeScore&&s.push((function(e,t){t.score=e.score}));for(var r=0,o=e.length;ri)return s(e,this.pattern,n);var o=this.options,a=o.location,c=o.distance,l=o.threshold,h=o.findAllMatches,u=o.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:a,distance:c,threshold:l,findAllMatches:h,minMatchCharLength:u})}}])&&n(t.prototype,i),e}();e.exports=a},function(e,t){var i=/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,s=new RegExp(t.replace(i,\"\\\\$&\").replace(n,\"|\")),r=e.match(s),o=!!r,a=[];if(o)for(var c=0,l=r.length;c=P;N-=1){var F=N-1,j=i[e.charAt(F)];if(j&&(E[F]=1),M[N]=(M[N+1]<<1|1)&j,0!==T&&(M[N]|=(O[N+1]|O[N])<<1|1|O[N+1]),M[N]&L&&(C=n(t,{errors:T,currentLocation:F,expectedLocation:v,distance:l}))<=_){if(_=C,(b=F)<=v)break;P=Math.max(1,2*v-b)}}if(n(t,{errors:T+1,currentLocation:v,expectedLocation:v,distance:l})>_)break;O=M}return{isMatch:b>=0,score:0===C?.001:C,matchedIndices:s(E,f)}}},function(e,t){e.exports=function(e,t){var i=t.errors,n=void 0===i?0:i,s=t.currentLocation,r=void 0===s?0:s,o=t.expectedLocation,a=void 0===o?0:o,c=t.distance,l=void 0===c?100:c,h=n/e.length,u=Math.abs(a-r);return l?h+u/l:u?1:h}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=[],n=-1,s=-1,r=0,o=e.length;r=t&&i.push([n,s]),n=-1)}return e[r-1]&&r-n>=t&&i.push([n,r-1]),i}},function(e,t){e.exports=function(e){for(var t={},i=e.length,n=0;n/g,\"&rt;\").replace(/-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!0),i})):e;case\"REMOVE_ITEM\":return t.choiceId>-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!1),i})):e;case\"FILTER_CHOICES\":return e.map((function(e){var i=e;return i.active=t.results.some((function(e){var t=e.item,n=e.score;return t.id===i.id&&(i.score=n,!0)})),i}));case\"ACTIVATE_CHOICES\":return e.map((function(e){var i=e;return i.active=t.active,i}));case\"CLEAR_CHOICES\":return v;default:return e}},general:_}),A=function(e,t){var i=e;if(\"CLEAR_ALL\"===t.type)i=void 0;else if(\"RESET_TO\"===t.type)return O(t.state);return C(i,t)};function L(e,t){for(var i=0;i\"'+I(e)+'\"'},maxItemText:function(e){return\"Only \"+e+\" values can be added\"},valueComparer:function(e,t){return e===t},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:{containerOuter:\"choices\",containerInner:\"choices__inner\",input:\"choices__input\",inputCloned:\"choices__input--cloned\",list:\"choices__list\",listItems:\"choices__list--multiple\",listSingle:\"choices__list--single\",listDropdown:\"choices__list--dropdown\",item:\"choices__item\",itemSelectable:\"choices__item--selectable\",itemDisabled:\"choices__item--disabled\",itemChoice:\"choices__item--choice\",placeholder:\"choices__placeholder\",group:\"choices__group\",groupHeading:\"choices__heading\",button:\"choices__button\",activeState:\"is-active\",focusState:\"is-focused\",openState:\"is-open\",disabledState:\"is-disabled\",highlightedState:\"is-highlighted\",selectedState:\"is-selected\",flippedState:\"is-flipped\",loadingState:\"is-loading\",noResults:\"has-no-results\",noChoices:\"has-no-choices\"}},D=\"showDropdown\",M=\"hideDropdown\",N=\"change\",F=\"choice\",j=\"search\",K=\"addItem\",R=\"removeItem\",H=\"highlightItem\",B=\"highlightChoice\",V=\"ADD_CHOICE\",G=\"FILTER_CHOICES\",q=\"ACTIVATE_CHOICES\",U=\"CLEAR_CHOICES\",z=\"ADD_GROUP\",W=\"ADD_ITEM\",X=\"REMOVE_ITEM\",$=\"HIGHLIGHT_ITEM\",J=46,Y=8,Z=13,Q=65,ee=27,te=38,ie=40,ne=33,se=34,re=function(){function e(e){var t=e.element,i=e.type,n=e.classNames,s=e.position;this.element=t,this.classNames=n,this.type=i,this.position=s,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t=e.prototype;return t.addEventListeners=function(){this.element.addEventListener(\"focus\",this._onFocus),this.element.addEventListener(\"blur\",this._onBlur)},t.removeEventListeners=function(){this.element.removeEventListener(\"focus\",this._onFocus),this.element.removeEventListener(\"blur\",this._onBlur)},t.shouldFlip=function(e){if(\"number\"!=typeof e)return!1;var t=!1;return\"auto\"===this.position?t=!window.matchMedia(\"(min-height: \"+(e+1)+\"px)\").matches:\"top\"===this.position&&(t=!0),t},t.setActiveDescendant=function(e){this.element.setAttribute(\"aria-activedescendant\",e)},t.removeActiveDescendant=function(){this.element.removeAttribute(\"aria-activedescendant\")},t.open=function(e){this.element.classList.add(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"true\"),this.isOpen=!0,this.shouldFlip(e)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},t.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"false\"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},t.focus=function(){this.isFocussed||this.element.focus()},t.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},t.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},t.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute(\"aria-disabled\"),\"select-one\"===this.type&&this.element.setAttribute(\"tabindex\",\"0\"),this.isDisabled=!1},t.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute(\"aria-disabled\",\"true\"),\"select-one\"===this.type&&this.element.setAttribute(\"tabindex\",\"-1\"),this.isDisabled=!0},t.wrap=function(e){!function(e,t){void 0===t&&(t=document.createElement(\"div\")),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)}(e,this.element)},t.unwrap=function(e){this.element.parentNode.insertBefore(e,this.element),this.element.parentNode.removeChild(this.element)},t.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute(\"aria-busy\",\"true\"),this.isLoading=!0},t.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute(\"aria-busy\"),this.isLoading=!1},t._onFocus=function(){this.isFocussed=!0},t._onBlur=function(){this.isFocussed=!1},e}();function oe(e,t){for(var i=0;i0?this.element.scrollTop+o-s:e.offsetTop;requestAnimationFrame((function(){i._animateScroll(a,t)}))}},t._scrollDown=function(e,t,i){var n=(i-e)/t,s=n>1?n:1;this.element.scrollTop=e+s},t._scrollUp=function(e,t,i){var n=(e-i)/t,s=n>1?n:1;this.element.scrollTop=e-s},t._animateScroll=function(e,t){var i=this,n=this.element.scrollTop,s=!1;t>0?(this._scrollDown(n,4,e),ne&&(s=!0)),s&&requestAnimationFrame((function(){i._animateScroll(e,t)}))},e}();function le(e,t){for(var i=0;i0?\"treeitem\":\"option\"),Object.assign(g.dataset,{choice:\"\",id:l,value:h,selectText:i}),m?(g.classList.add(a),g.dataset.choiceDisabled=\"\",g.setAttribute(\"aria-disabled\",\"true\")):(g.classList.add(r),g.dataset.choiceSelectable=\"\"),g},input:function(e,t){var i=e.input,n=e.inputCloned,s=Object.assign(document.createElement(\"input\"),{type:\"text\",className:i+\" \"+n,autocomplete:\"off\",autocapitalize:\"off\",spellcheck:!1});return s.setAttribute(\"role\",\"textbox\"),s.setAttribute(\"aria-autocomplete\",\"list\"),s.setAttribute(\"aria-label\",t),s},dropdown:function(e){var t=e.list,i=e.listDropdown,n=document.createElement(\"div\");return n.classList.add(t,i),n.setAttribute(\"aria-expanded\",\"false\"),n},notice:function(e,t,i){var n=e.item,s=e.itemChoice,r=e.noResults,o=e.noChoices;void 0===i&&(i=\"\");var a=[n,s];return\"no-choices\"===i?a.push(o):\"no-results\"===i&&a.push(r),Object.assign(document.createElement(\"div\"),{innerHTML:t,className:a.join(\" \")})},option:function(e){var t=e.label,i=e.value,n=e.customProperties,s=e.active,r=e.disabled,o=new Option(t,i,!1,s);return n&&(o.dataset.customProperties=n),o.disabled=r,o}},ve=function(e){return void 0===e&&(e=!0),{type:q,active:e}},ge=function(e,t){return{type:$,id:e,highlighted:t}},_e=function(e){var t=e.value,i=e.id,n=e.active,s=e.disabled;return{type:z,value:t,id:i,active:n,disabled:s}},be=function(e){return{type:\"SET_IS_LOADING\",isLoading:e}};function ye(e,t){for(var i=0;i=0?this._store.getGroupById(s):null;return this._store.dispatch(ge(i,!0)),t&&this.passedElement.triggerEvent(H,{id:i,value:o,label:c,groupValue:l&&l.value?l.value:null}),this},r.unhighlightItem=function(e){if(!e)return this;var t=e.id,i=e.groupId,n=void 0===i?-1:i,s=e.value,r=void 0===s?\"\":s,o=e.label,a=void 0===o?\"\":o,c=n>=0?this._store.getGroupById(n):null;return this._store.dispatch(ge(t,!1)),this.passedElement.triggerEvent(H,{id:t,value:r,label:a,groupValue:c&&c.value?c.value:null}),this},r.highlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.highlightItem(t)})),this},r.unhighlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.unhighlightItem(t)})),this},r.removeActiveItemsByValue=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.value===e})).forEach((function(e){return t._removeItem(e)})),this},r.removeActiveItems=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.id!==e})).forEach((function(e){return t._removeItem(e)})),this},r.removeHighlightedItems=function(e){var t=this;return void 0===e&&(e=!1),this._store.highlightedActiveItems.forEach((function(i){t._removeItem(i),e&&t._triggerChange(i.value)})),this},r.showDropdown=function(e){var t=this;return this.dropdown.isActive||requestAnimationFrame((function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(D,{})})),this},r.hideDropdown=function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame((function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(M,{})})),this):this},r.getValue=function(e){void 0===e&&(e=!1);var t=this._store.activeItems.reduce((function(t,i){var n=e?i.value:i;return t.push(n),t}),[]);return this._isSelectOneElement?t[0]:t},r.setValue=function(e){var t=this;return this.initialised?(e.forEach((function(e){return t._setChoiceOrItem(e)})),this):this},r.setChoiceByValue=function(e){var t=this;return!this.initialised||this._isTextElement||(Array.isArray(e)?e:[e]).forEach((function(e){return t._findAndSelectChoiceByValue(e)})),this},r.setChoices=function(e,t,i,n){var s=this;if(void 0===e&&(e=[]),void 0===t&&(t=\"value\"),void 0===i&&(i=\"label\"),void 0===n&&(n=!1),!this.initialised)throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");if(!this._isSelectElement)throw new TypeError(\"setChoices can't be used with INPUT based Choices\");if(\"string\"!=typeof t||!t)throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");if(n&&this.clearChoices(),\"function\"==typeof e){var r=e(this);if(\"function\"==typeof Promise&&r instanceof Promise)return new Promise((function(e){return requestAnimationFrame(e)})).then((function(){return s._handleLoadingState(!0)})).then((function(){return r})).then((function(e){return s.setChoices(e,t,i,n)})).catch((function(e){s.config.silent||console.error(e)})).then((function(){return s._handleLoadingState(!1)})).then((function(){return s}));if(!Array.isArray(r))throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \"+typeof r);return this.setChoices(r,t,i,!1)}if(!Array.isArray(e))throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");return this.containerOuter.removeLoadingState(),this._startLoading(),e.forEach((function(e){e.choices?s._addGroup({id:parseInt(e.id,10)||null,group:e,valueKey:t,labelKey:i}):s._addChoice({value:e[t],label:e[i],isSelected:e.selected,isDisabled:e.disabled,customProperties:e.customProperties,placeholder:e.placeholder})})),this._stopLoading(),this},r.clearChoices=function(){return this._store.dispatch({type:U}),this},r.clearStore=function(){return this._store.dispatch({type:\"CLEAR_ALL\"}),this},r.clearInput=function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(ve(!0))),this},r._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,i=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),i&&this._renderItems(),this._prevState=this._currentState)}},r._renderChoices=function(){var e=this,t=this._store,i=t.activeGroups,n=t.activeChoices,s=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame((function(){return e.choiceList.scrollToTop()})),i.length>=1&&!this._isSearching){var r=n.filter((function(e){return!0===e.placeholder&&-1===e.groupId}));r.length>=1&&(s=this._createChoicesFragment(r,s)),s=this._createGroupsFragment(i,n,s)}else n.length>=1&&(s=this._createChoicesFragment(n,s));if(s.childNodes&&s.childNodes.length>0){var o=this._store.activeItems,a=this._canAddItem(o,this.input.value);a.response?(this.choiceList.append(s),this._highlightChoice()):this.choiceList.append(this._getTemplate(\"notice\",a.notice))}else{var c,l;this._isSearching?(l=\"function\"==typeof this.config.noResultsText?this.config.noResultsText():this.config.noResultsText,c=this._getTemplate(\"notice\",l,\"no-results\")):(l=\"function\"==typeof this.config.noChoicesText?this.config.noChoicesText():this.config.noChoicesText,c=this._getTemplate(\"notice\",l,\"no-choices\")),this.choiceList.append(c)}},r._renderItems=function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)},r._createGroupsFragment=function(e,t,i){var n=this;return void 0===i&&(i=document.createDocumentFragment()),this.config.shouldSort&&e.sort(this.config.sorter),e.forEach((function(e){var s=function(e){return t.filter((function(t){return n._isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&(\"always\"===n.config.renderSelectedChoices||!t.selected)}))}(e);if(s.length>=1){var r=n._getTemplate(\"choiceGroup\",e);i.appendChild(r),n._createChoicesFragment(s,i,!0)}})),i},r._createChoicesFragment=function(e,t,i){var n=this;void 0===t&&(t=document.createDocumentFragment()),void 0===i&&(i=!1);var s=this.config,r=s.renderSelectedChoices,o=s.searchResultLimit,a=s.renderChoiceLimit,c=this._isSearching?w:this.config.sorter,l=function(e){if(\"auto\"!==r||n._isSelectOneElement||!e.selected){var i=n._getTemplate(\"choice\",e,n.config.itemSelectText);t.appendChild(i)}},h=e;\"auto\"!==r||this._isSelectOneElement||(h=e.filter((function(e){return!e.selected})));var u=h.reduce((function(e,t){return t.placeholder?e.placeholderChoices.push(t):e.normalChoices.push(t),e}),{placeholderChoices:[],normalChoices:[]}),d=u.placeholderChoices,p=u.normalChoices;(this.config.shouldSort||this._isSearching)&&p.sort(c);var m=h.length,f=this._isSelectOneElement?[].concat(d,p):p;this._isSearching?m=o:a&&a>0&&!i&&(m=a);for(var v=0;v=n){var o=s?this._searchChoices(e):0;this.passedElement.triggerEvent(j,{value:e,resultCount:o})}else r&&(this._isSearching=!1,this._store.dispatch(ve(!0)))}},r._canAddItem=function(e,t){var i=!0,n=\"function\"==typeof this.config.addItemText?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var s=function(e,t,i){return void 0===i&&(i=\"value\"),e.some((function(e){return\"string\"==typeof t?e[i]===t.trim():e[i]===t}))}(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=\"function\"==typeof this.config.maxItemText?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&s&&i&&(i=!1,n=\"function\"==typeof this.config.uniqueItemText?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&i&&\"function\"==typeof this.config.addItemFilter&&!this.config.addItemFilter(t)&&(i=!1,n=\"function\"==typeof this.config.customAddItemText?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:i,notice:n}},r._searchChoices=function(e){var t=\"string\"==typeof e?e.trim():e,i=\"string\"==typeof this._currentValue?this._currentValue.trim():this._currentValue;if(t.length<1&&t===i+\" \")return 0;var n=this._store.searchableChoices,r=t,o=[].concat(this.config.searchFields),a=Object.assign(this.config.fuseOptions,{keys:o}),c=new s.a(n,a).search(r);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(function(e){return{type:G,results:e}}(c)),c.length},r._addEventListeners=function(){var e=document.documentElement;e.addEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.addEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.addEventListener(\"mousedown\",this._onMouseDown,!0),e.addEventListener(\"click\",this._onClick,{passive:!0}),e.addEventListener(\"touchmove\",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener(\"mouseover\",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener(\"blur\",this._onBlur,{passive:!0})),this.input.element.addEventListener(\"keyup\",this._onKeyUp,{passive:!0}),this.input.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.input.element.addEventListener(\"blur\",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener(\"reset\",this._onFormReset,{passive:!0}),this.input.addEventListeners()},r._removeEventListeners=function(){var e=document.documentElement;e.removeEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.removeEventListener(\"mousedown\",this._onMouseDown,!0),e.removeEventListener(\"click\",this._onClick),e.removeEventListener(\"touchmove\",this._onTouchMove),this.dropdown.element.removeEventListener(\"mouseover\",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener(\"focus\",this._onFocus),this.containerOuter.element.removeEventListener(\"blur\",this._onBlur)),this.input.element.removeEventListener(\"keyup\",this._onKeyUp),this.input.element.removeEventListener(\"focus\",this._onFocus),this.input.element.removeEventListener(\"blur\",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener(\"reset\",this._onFormReset),this.input.removeEventListeners()},r._onKeyDown=function(e){var t,i=e.target,n=e.keyCode,s=e.ctrlKey,r=e.metaKey,o=this._store.activeItems,a=this.input.isFocussed,c=this.dropdown.isActive,l=this.itemList.hasChildren(),h=String.fromCharCode(n),u=J,d=Y,p=Z,m=Q,f=ee,v=te,g=ie,_=ne,b=se,y=s||r;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(h)&&this.showDropdown();var E=((t={})[m]=this._onAKey,t[p]=this._onEnterKey,t[f]=this._onEscapeKey,t[v]=this._onDirectionKey,t[_]=this._onDirectionKey,t[g]=this._onDirectionKey,t[b]=this._onDirectionKey,t[d]=this._onDeleteKey,t[u]=this._onDeleteKey,t);E[n]&&E[n]({event:e,target:i,keyCode:n,metaKey:r,activeItems:o,hasFocusedInput:a,hasActiveDropdown:c,hasItems:l,hasCtrlDownKeyPressed:y})},r._onKeyUp=function(e){var t=e.target,i=e.keyCode,n=this.input.value,s=this._store.activeItems,r=this._canAddItem(s,n),o=J,a=Y;if(this._isTextElement)if(r.notice&&n){var c=this._getTemplate(\"notice\",r.notice);this.dropdown.element.innerHTML=c.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0);else{var l=(i===o||i===a)&&!t.value,h=!this._isTextElement&&this._isSearching,u=this._canSearch&&r.response;l&&h?(this._isSearching=!1,this._store.dispatch(ve(!0))):u&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},r._onAKey=function(e){var t=e.hasItems;e.hasCtrlDownKeyPressed&&t&&(this._canSearch=!1,this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement&&this.highlightAll())},r._onEnterKey=function(e){var t=e.event,i=e.target,n=e.activeItems,s=e.hasActiveDropdown,r=Z,o=i.hasAttribute(\"data-button\");if(this._isTextElement&&i.value){var a=this.input.value;this._canAddItem(n,a).response&&(this.hideDropdown(!0),this._addItem({value:a}),this._triggerChange(a),this.clearInput())}if(o&&(this._handleButtonAction(n,i),t.preventDefault()),s){var c=this.dropdown.getChild(\".\"+this.config.classNames.highlightedState);c&&(n[0]&&(n[0].keyCode=r),this._handleChoiceAction(n,c)),t.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),t.preventDefault())},r._onEscapeKey=function(e){e.hasActiveDropdown&&(this.hideDropdown(!0),this.containerOuter.focus())},r._onDirectionKey=function(e){var t,i,n,s=e.event,r=e.hasActiveDropdown,o=e.keyCode,a=e.metaKey,c=ie,l=ne,h=se;if(r||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var u,d=o===c||o===h?1:-1;if(a||o===h||o===l)u=d>0?this.dropdown.element.querySelector(\"[data-choice-selectable]:last-of-type\"):this.dropdown.element.querySelector(\"[data-choice-selectable]\");else{var p=this.dropdown.element.querySelector(\".\"+this.config.classNames.highlightedState);u=p?function(e,t,i){if(void 0===i&&(i=1),e instanceof Element&&\"string\"==typeof t){for(var n=(i>0?\"next\":\"previous\")+\"ElementSibling\",s=e[n];s;){if(s.matches(t))return s;s=s[n]}return s}}(p,\"[data-choice-selectable]\",d):this.dropdown.element.querySelector(\"[data-choice-selectable]\")}u&&(t=u,i=this.choiceList.element,void 0===(n=d)&&(n=1),t&&(n>0?i.scrollTop+i.offsetHeight>=t.offsetTop+t.offsetHeight:t.offsetTop>=i.scrollTop)||this.choiceList.scrollToChildElement(u,d),this._highlightChoice(u)),s.preventDefault()}},r._onDeleteKey=function(e){var t=e.event,i=e.target,n=e.hasFocusedInput,s=e.activeItems;!n||i.value||this._isSelectOneElement||(this._handleBackspace(s),t.preventDefault())},r._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},r._onTouchEnd=function(e){var t=(e||e.touches[0]).target;this._wasTap&&this.containerOuter.element.contains(t)&&((t===this.containerOuter.element||t===this.containerInner.element)&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation()),this._wasTap=!0},r._onMouseDown=function(e){var t=e.target;if(t instanceof HTMLElement){if(Ee&&this.choiceList.element.contains(t)){var i=this.choiceList.element.firstElementChild,n=\"ltr\"===this._direction?e.offsetX>=i.offsetWidth:e.offsetX0&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0))},r._onFocus=function(e){var t,i=this,n=e.target;this.containerOuter.element.contains(n)&&((t={}).text=function(){n===i.input.element&&i.containerOuter.addFocusState()},t[\"select-one\"]=function(){i.containerOuter.addFocusState(),n===i.input.element&&i.showDropdown(!0)},t[\"select-multiple\"]=function(){n===i.input.element&&(i.showDropdown(!0),i.containerOuter.addFocusState())},t)[this.passedElement.element.type]()},r._onBlur=function(e){var t=this,i=e.target;if(this.containerOuter.element.contains(i)&&!this._isScrollingOnIe){var n,s=this._store.activeItems.some((function(e){return e.highlighted}));((n={}).text=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),s&&t.unhighlightAll(),t.hideDropdown(!0))},n[\"select-one\"]=function(){t.containerOuter.removeFocusState(),(i===t.input.element||i===t.containerOuter.element&&!t._canSearch)&&t.hideDropdown(!0)},n[\"select-multiple\"]=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),t.hideDropdown(!0),s&&t.unhighlightAll())},n)[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},r._onFormReset=function(){this._store.dispatch({type:\"RESET_TO\",state:this._initialState})},r._highlightChoice=function(e){var t=this;void 0===e&&(e=null);var i=Array.from(this.dropdown.element.querySelectorAll(\"[data-choice-selectable]\"));if(i.length){var n=e;Array.from(this.dropdown.element.querySelectorAll(\".\"+this.config.classNames.highlightedState)).forEach((function(e){e.classList.remove(t.config.classNames.highlightedState),e.setAttribute(\"aria-selected\",\"false\")})),n?this._highlightPosition=i.indexOf(n):(n=i.length>this._highlightPosition?i[this._highlightPosition]:i[i.length-1])||(n=i[0]),n.classList.add(this.config.classNames.highlightedState),n.setAttribute(\"aria-selected\",\"true\"),this.passedElement.triggerEvent(B,{el:n}),this.dropdown.isActive&&(this.input.setActiveDescendant(n.id),this.containerOuter.setActiveDescendant(n.id))}},r._addItem=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.choiceId,r=void 0===s?-1:s,o=e.groupId,a=void 0===o?-1:o,c=e.customProperties,l=void 0===c?null:c,h=e.placeholder,u=void 0!==h&&h,d=e.keyCode,p=void 0===d?null:d,m=\"string\"==typeof t?t.trim():t,f=p,v=l,g=this._store.items,_=n||m,b=r||-1,y=a>=0?this._store.getGroupById(a):null,E=g?g.length+1:1;return this.config.prependValue&&(m=this.config.prependValue+m.toString()),this.config.appendValue&&(m+=this.config.appendValue.toString()),this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.choiceId,r=e.groupId,o=e.customProperties,a=e.placeholder,c=e.keyCode;return{type:W,value:t,label:i,id:n,choiceId:s,groupId:r,customProperties:o,placeholder:a,keyCode:c}}({value:m,label:_,id:E,choiceId:b,groupId:a,customProperties:l,placeholder:u,keyCode:f})),this._isSelectOneElement&&this.removeActiveItems(E),this.passedElement.triggerEvent(K,{id:E,value:m,label:_,customProperties:v,groupValue:y&&y.value?y.value:void 0,keyCode:f}),this},r._removeItem=function(e){if(!e||!E(\"Object\",e))return this;var t=e.id,i=e.value,n=e.label,s=e.choiceId,r=e.groupId,o=r>=0?this._store.getGroupById(r):null;return this._store.dispatch(function(e,t){return{type:X,id:e,choiceId:t}}(t,s)),o&&o.value?this.passedElement.triggerEvent(R,{id:t,value:i,label:n,groupValue:o.value}):this.passedElement.triggerEvent(R,{id:t,value:i,label:n}),this},r._addChoice=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.isSelected,r=void 0!==s&&s,o=e.isDisabled,a=void 0!==o&&o,c=e.groupId,l=void 0===c?-1:c,h=e.customProperties,u=void 0===h?null:h,d=e.placeholder,p=void 0!==d&&d,m=e.keyCode,f=void 0===m?null:m;if(null!=t){var v=this._store.choices,g=n||t,_=v?v.length+1:1,b=this._baseId+\"-\"+this._idNames.itemChoice+\"-\"+_;this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.groupId,r=e.disabled,o=e.elementId,a=e.customProperties,c=e.placeholder,l=e.keyCode;return{type:V,value:t,label:i,id:n,groupId:s,disabled:r,elementId:o,customProperties:a,placeholder:c,keyCode:l}}({id:_,groupId:l,elementId:b,value:t,label:g,disabled:a,customProperties:u,placeholder:p,keyCode:f})),r&&this._addItem({value:t,label:g,choiceId:_,customProperties:u,placeholder:p,keyCode:f})}},r._addGroup=function(e){var t=this,i=e.group,n=e.id,s=e.valueKey,r=void 0===s?\"value\":s,o=e.labelKey,a=void 0===o?\"label\":o,c=E(\"Object\",i)?i.choices:Array.from(i.getElementsByTagName(\"OPTION\")),l=n||Math.floor((new Date).valueOf()*Math.random()),h=!!i.disabled&&i.disabled;c?(this._store.dispatch(_e({value:i.label,id:l,active:!0,disabled:h})),c.forEach((function(e){var i=e.disabled||e.parentNode&&e.parentNode.disabled;t._addChoice({value:e[r],label:E(\"Object\",e)?e[a]:e.innerHTML,isSelected:e.selected,isDisabled:i,groupId:l,customProperties:e.customProperties,placeholder:e.placeholder})}))):this._store.dispatch(_e({value:i.label,id:i.id,active:!1,disabled:i.disabled}))},r._getTemplate=function(e){var t;if(!e)return null;for(var i=this.config.classNames,n=arguments.length,s=new Array(n>1?n-1:0),r=1;rthis.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.value.change,()=>{this.input_el.value=this.format_value,this.old_value=this.input_el.value}),this.connect(this.model.properties.low.change,()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&h.assert(t<=l,\"Invalid bounds, low must be inferior to high\"),null!=e&&null!=t&&(this.model.value=Math.max(e,t))}),this.connect(this.model.properties.high.change,()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&h.assert(l>=t,\"Invalid bounds, high must be superior to low\"),null!=e&&null!=l&&(this.model.value=Math.min(e,l))}),this.connect(this.model.properties.high.change,()=>this.input_el.placeholder=this.model.placeholder),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled),this.connect(this.model.properties.placeholder.change,()=>this.input_el.placeholder=this.model.placeholder)}get format_value(){return null!=this.model.value?this.model.pretty(this.model.value):\"\"}_set_input_filter(e){this.input_el.addEventListener(\"input\",()=>{const{selectionStart:t,selectionEnd:l}=this.input_el;if(e(this.input_el.value))this.old_value=this.input_el.value;else{const e=this.old_value.length-this.input_el.value.length;this.input_el.value=this.old_value,t&&l&&this.input_el.setSelectionRange(t-1,l+e)}})}render(){super.render(),this.input_el=u.input({type:\"text\",class:r.bk_input,name:this.model.name,value:this.format_value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.old_value=this.format_value,this.set_input_filter(),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.input_el.addEventListener(\"focusout\",()=>this.input_el.value=this.format_value),this.group_el.appendChild(this.input_el)}set_input_filter(){\"int\"==this.model.mode?this._set_input_filter(e=>d.test(e)):\"float\"==this.model.mode&&this._set_input_filter(e=>p.test(e))}bound_value(e){let t=e;const{low:l,high:i}=this.model;return t=null!=l?Math.max(l,t):t,t=null!=i?Math.min(i,t):t,t}get value(){let e=\"\"!==this.input_el.value?Number(this.input_el.value):null;return null!=e&&(e=this.bound_value(e)),e}change_input(){null==this.value?this.model.value=null:Number.isNaN(this.value)||(this.model.value=this.value)}}l.NumericInputView=_,_.__name__=\"NumericInputView\";class m extends s.InputWidget{constructor(e){super(e)}static init_NumericInput(){this.prototype.default_view=_,this.define({value:[o.Number,null],placeholder:[o.String,\"\"],mode:[o.Any,\"int\"],format:[o.Any],low:[o.Number,null],high:[o.Number,null]})}_formatter(e,t){return a.isString(t)?n.format(e,t):t.doFormat([e],{loc:0})[0]}pretty(e){return null!=this.format?this._formatter(e,this.format):\"\"+e}}l.NumericInput=m,m.__name__=\"NumericInput\",m.init_NumericInput()},\n", + " 442: function _(t,_,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=t(1);e.__exportStar(t(13),r),e.__exportStar(t(9),r),e.__exportStar(t(29),r),e.__exportStar(t(443),r),e.__exportStar(t(8),r),e.__exportStar(t(25),r)},\n", + " 443: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});class n{constructor(e){this.seed=e%2147483647,this.seed<=0&&(this.seed+=2147483646)}integer(){return this.seed=48271*this.seed%2147483647,this.seed}float(){return(this.integer()-1)/2147483646}floats(e){const t=new Array(e);for(let s=0;s{n.classes(o).toggle(s.bk_active,t===e)})}}e.RadioButtonGroupView=_,_.__name__=\"RadioButtonGroupView\";class c extends a.ButtonGroup{constructor(t){super(t)}static init_RadioButtonGroup(){this.prototype.default_view=_,this.define({active:[u.Any,null]})}}e.RadioButtonGroup=c,c.__name__=\"RadioButtonGroup\",c.init_RadioButtonGroup()},\n", + " 446: function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),a=e(72),s=e(29),o=n.__importStar(e(18)),d=e(417),l=e(173),p=e(412);class r extends d.InputGroupView{render(){super.render();const e=a.div({class:[p.bk_input_group,this.model.inline?l.bk_inline:null]});this.el.appendChild(e);const i=s.uniqueId(),{active:t,labels:n}=this.model;this._inputs=[];for(let s=0;sthis.change_active(s)),this._inputs.push(o),this.model.disabled&&(o.disabled=!0),s==t&&(o.checked=!0);const d=a.label({},o,a.span({},n[s]));e.appendChild(d)}}change_active(e){this.model.active=e}}t.RadioGroupView=r,r.__name__=\"RadioGroupView\";class u extends d.InputGroup{constructor(e){super(e)}static init_RadioGroup(){this.prototype.default_view=r,this.define({active:[o.Number],labels:[o.Array,[]],inline:[o.Boolean,!1]})}}t.RadioGroup=u,u.__name__=\"RadioGroup\",u.init_RadioGroup()},\n", + " 447: function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1).__importStar(e(188)),a=e(423),n=e(8);class o extends a.AbstractRangeSliderView{}r.RangeSliderView=o,o.__name__=\"RangeSliderView\";class s extends a.AbstractSlider{constructor(e){super(e),this.behaviour=\"drag\",this.connected=[!1,!0,!1]}static init_RangeSlider(){this.prototype.default_view=o,this.override({format:\"0[.]00\"})}_formatter(e,t){return n.isString(t)?i.format(e,t):t.doFormat([e],{loc:0})[0]}}r.RangeSlider=s,s.__name__=\"RangeSlider\",s.init_RangeSlider()},\n", + " 448: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(72),l=e(8),o=e(13),p=n.__importStar(e(18)),u=e(410),a=e(412);class _ extends u.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,options:t}=this.model.properties;this.on_change(e,()=>{this._update_value()}),this.on_change(t,()=>{s.empty(this.input_el),s.append(this.input_el,...this.options_el())})}options_el(){function e(e){return e.map(e=>{let t,i;return l.isString(e)?t=i=e:[t,i]=e,s.option({value:t},i)})}const{options:t}=this.model;return l.isArray(t)?e(t):o.entries(t).map(([t,i])=>s.optgroup({label:t},e(i)))}render(){super.render(),this.input_el=s.select({class:a.bk_input,name:this.model.name,disabled:this.model.disabled},this.options_el()),this._update_value(),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.input_el)}change_input(){const e=this.input_el.value;this.model.value=e,super.change_input()}_update_value(){const{value:e}=this.model;null!=e&&0!=e.length&&(this.input_el.value=this.model.value)}}i.SelectView=_,_.__name__=\"SelectView\";class h extends u.InputWidget{constructor(e){super(e)}static init_Select(){this.prototype.default_view=_,this.define({value:[p.String,\"\"],options:[p.Any,[]]})}}i.Select=h,h.__name__=\"Select\",h.init_Select()},\n", + " 449: function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1).__importStar(e(188)),o=e(423),s=e(8);class _ extends o.AbstractSliderView{}r.SliderView=_,_.__name__=\"SliderView\";class a extends o.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}static init_Slider(){this.prototype.default_view=_,this.override({format:\"0[.]00\"})}_formatter(e,t){return s.isString(t)?i.format(e,t):t.doFormat([e],{loc:0})[0]}}r.Slider=a,a.__name__=\"Slider\",a.init_Slider()},\n", + " 450: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(441),l=n.__importStar(e(18)),r=e(72),{min:o,max:_,floor:a,abs:h}=Math;function u(e){return a(e)!==e?e.toFixed(16).replace(/0+$/,\"\").split(\".\")[1].length:0}class p extends s.NumericInputView{*buttons(){yield this.btn_up_el,yield this.btn_down_el}initialize(){super.initialize(),this._interval=200}connect_signals(){super.connect_signals();const e=this.model.properties;this.on_change(e.disabled,()=>{for(const e of this.buttons())r.toggle_attribute(e,\"disabled\",this.model.disabled)})}render(){super.render(),this.wrapper_el=r.div({class:\"bk-spin-wrapper\"}),this.group_el.replaceChild(this.wrapper_el,this.input_el),this.btn_up_el=r.button({class:\"bk-spin-btn bk-spin-btn-up\"}),this.btn_down_el=r.button({class:\"bk-spin-btn bk-spin-btn-down\"}),this.wrapper_el.appendChild(this.input_el),this.wrapper_el.appendChild(this.btn_up_el),this.wrapper_el.appendChild(this.btn_down_el);for(const e of this.buttons())r.toggle_attribute(e,\"disabled\",this.model.disabled),e.addEventListener(\"mousedown\",e=>this._btn_mouse_down(e)),e.addEventListener(\"mouseup\",()=>this._btn_mouse_up()),e.addEventListener(\"mouseleave\",()=>this._btn_mouse_leave());this.input_el.addEventListener(\"keydown\",e=>this._input_key_down(e)),this.input_el.addEventListener(\"keyup\",()=>this.model.value_throttled=this.model.value),this.input_el.addEventListener(\"wheel\",e=>this._input_mouse_wheel(e)),this.input_el.addEventListener(\"wheel\",function(e,t,i=!1){let n;return function(...s){const l=this,r=i&&void 0===n;void 0!==n&&clearTimeout(n),n=setTimeout((function(){n=void 0,i||e.apply(l,s)}),t),r&&e.apply(l,s)}}(()=>{this.model.value_throttled=this.model.value},this.model.wheel_wait,!1))}get precision(){const{low:e,high:t,step:i}=this.model;return _(...[e,t,i].map(h).reduce((e,t)=>(null!=t&&e.push(t),e),[]).map(u))}_start_incrementation(e){clearInterval(this._interval_handle),this._counter=0;const{step:t}=this.model,i=e=>{if(this._counter+=1,this._counter%5==0){const t=Math.floor(this._counter/5);t<10?(clearInterval(this._interval_handle),this._interval_handle=setInterval(()=>i(e),this._interval/(t+1))):t>=10&&t<=13&&(clearInterval(this._interval_handle),this._interval_handle=setInterval(()=>i(2*e),this._interval/10))}this.increment(e)};this._interval_handle=setInterval(()=>i(e*t),this._interval)}_stop_incrementation(){clearInterval(this._interval_handle),this.model.value_throttled=this.model.value}_btn_mouse_down(e){e.preventDefault();const t=e.currentTarget===this.btn_up_el?1:-1;this.increment(t*this.model.step),this.input_el.focus(),this._start_incrementation(t)}_btn_mouse_up(){this._stop_incrementation()}_btn_mouse_leave(){this._stop_incrementation()}_input_mouse_wheel(e){if(document.activeElement===this.input_el){e.preventDefault();const t=e.deltaY>0?-1:1;this.increment(t*this.model.step)}}_input_key_down(e){switch(e.keyCode){case r.Keys.Up:return e.preventDefault(),this.increment(this.model.step);case r.Keys.Down:return e.preventDefault(),this.increment(-this.model.step);case r.Keys.PageUp:return e.preventDefault(),this.increment(this.model.page_step_multiplier*this.model.step);case r.Keys.PageDown:return e.preventDefault(),this.increment(-this.model.page_step_multiplier*this.model.step)}}adjust_to_precision(e){return this.bound_value(Number(e.toFixed(this.precision)))}increment(e){const{low:t,high:i}=this.model;null==this.model.value?e>0?this.model.value=null!=t?t:null!=i?o(0,i):0:e<0&&(this.model.value=null!=i?i:null!=t?_(t,0):0):this.model.value=this.adjust_to_precision(this.model.value+e)}change_input(){super.change_input(),this.model.value_throttled=this.model.value}}i.SpinnerView=p,p.__name__=\"SpinnerView\";class d extends s.NumericInput{constructor(e){super(e)}static init_Spinner(){this.prototype.default_view=p,this.define({value_throttled:[l.Number,null],step:[l.Number,1],page_step_multiplier:[l.Number,10],wheel_wait:[l.Number,100]}),this.override({mode:\"float\"})}}i.Spinner=d,d.__name__=\"Spinner\",d.init_Spinner()},\n", + " 451: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(410),l=e(72),h=s.__importStar(e(18)),o=e(412);class a extends n.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,()=>this.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.value.change,()=>this.input_el.value=this.model.value),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled),this.connect(this.model.properties.placeholder.change,()=>this.input_el.placeholder=this.model.placeholder),this.connect(this.model.properties.rows.change,()=>this.input_el.rows=this.model.rows),this.connect(this.model.properties.cols.change,()=>this.input_el.cols=this.model.cols),this.connect(this.model.properties.max_length.change,()=>this.input_el.maxLength=this.model.max_length)}render(){super.render(),this.input_el=l.textarea({class:o.bk_input,name:this.model.name,disabled:this.model.disabled,placeholder:this.model.placeholder,cols:this.model.cols,rows:this.model.rows,maxLength:this.model.max_length}),this.input_el.textContent=this.model.value,this.input_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.input_el)}change_input(){this.model.value=this.input_el.value,super.change_input()}}i.TextAreaInputView=a,a.__name__=\"TextAreaInputView\";class p extends n.InputWidget{constructor(e){super(e)}static init_TextAreaInput(){this.prototype.default_view=a,this.define({value:[h.String,\"\"],value_input:[h.String,\"\"],placeholder:[h.String,\"\"],cols:[h.Number,20],rows:[h.Number,2],max_length:[h.Number,500]})}}i.TextAreaInput=p,p.__name__=\"TextAreaInput\",p.init_TextAreaInput()},\n", + " 452: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),c=e(404),o=e(72),a=s.__importStar(e(18)),n=e(173);class l extends c.AbstractButtonView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._update_active())}render(){super.render(),this._update_active()}click(){this.model.active=!this.model.active,super.click()}_update_active(){o.classes(this.button_el).toggle(n.bk_active,this.model.active)}}i.ToggleView=l,l.__name__=\"ToggleView\";class _ extends c.AbstractButton{constructor(e){super(e)}static init_Toggle(){this.prototype.default_view=l,this.define({active:[a.Boolean,!1]}),this.override({label:\"Toggle\"})}}i.Toggle=_,_.__name__=\"Toggle\",_.init_Toggle()},\n", + " }, 402, {\"models/widgets/main\":402,\"models/widgets/index\":403,\"models/widgets/abstract_button\":404,\"models/widgets/control\":405,\"models/widgets/widget\":472,\"models/widgets/abstract_icon\":407,\"models/widgets/autocomplete_input\":408,\"models/widgets/text_input\":409,\"models/widgets/input_widget\":410,\"styles/widgets/inputs.css\":411,\"styles/widgets/inputs\":412,\"models/widgets/button\":413,\"models/widgets/checkbox_button_group\":414,\"models/widgets/button_group\":415,\"models/widgets/checkbox_group\":416,\"models/widgets/input_group\":417,\"models/widgets/color_picker\":418,\"models/widgets/date_picker\":419,\"styles/widgets/flatpickr.css\":421,\"models/widgets/date_range_slider\":422,\"models/widgets/abstract_slider\":423,\"styles/widgets/sliders\":425,\"styles/widgets/nouislider.css\":426,\"styles/widgets/sliders.css\":427,\"models/widgets/date_slider\":428,\"models/widgets/div\":429,\"models/widgets/markup\":430,\"styles/clearfix\":431,\"styles/clearfix.css\":432,\"models/widgets/dropdown\":433,\"models/widgets/file_input\":434,\"models/widgets/multiselect\":435,\"models/widgets/paragraph\":436,\"models/widgets/password_input\":437,\"models/widgets/multichoice\":438,\"styles/widgets/choices.css\":440,\"models/widgets/numeric_input\":441,\"api/linalg\":442,\"core/util/random\":443,\"models/widgets/pretext\":444,\"models/widgets/radio_button_group\":445,\"models/widgets/radio_group\":446,\"models/widgets/range_slider\":447,\"models/widgets/selectbox\":448,\"models/widgets/slider\":449,\"models/widgets/spinner\":450,\"models/widgets/textarea_input\":451,\"models/widgets/toggle\":452}, {});\n", + " })\n", + "\n", + "\n", + " /* END bokeh-widgets.min.js */\n", + " },\n", + " \n", + " function(Bokeh) {\n", + " /* BEGIN bokeh-tables.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2020, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " factory(root[\"Bokeh\"], \"2.2.3\");\n", + " })(this, function(Bokeh, version) {\n", + " var define;\n", + " return (function(modules, entry, aliases, externals) {\n", + " const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n", + " if (bokeh != null) {\n", + " return bokeh.register_plugin(modules, entry, aliases);\n", + " } else {\n", + " throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n", + " }\n", + " })\n", + " ({\n", + " 453: function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(1).__importStar(e(454));o.Tables=r;e(7).register_models(r)},\n", + " 454: function _(a,g,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=a(1);e.__exportStar(a(455),r),e.__exportStar(a(475),r);var t=a(456);r.DataTable=t.DataTable;var o=a(474);r.TableColumn=o.TableColumn;var n=a(473);r.TableWidget=n.TableWidget;var u=a(481);r.AvgAggregator=u.AvgAggregator,r.MinAggregator=u.MinAggregator,r.MaxAggregator=u.MaxAggregator,r.SumAggregator=u.SumAggregator;var l=a(482);r.GroupingInfo=l.GroupingInfo,r.DataCube=l.DataCube},\n", + " 455: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1).__importStar(e(18)),r=e(72),a=e(78),n=e(81),l=e(456),u=e(478);class d extends a.DOMView{constructor(e){const{model:t,parent:i}=e.column;super(Object.assign({model:t,parent:i},e)),this.args=e,this.initialize(),this.render()}get emptyValue(){return null}initialize(){super.initialize(),this.inputEl=this._createInput(),this.defaultValue=null}async lazy_initialize(){throw new Error(\"unsupported\")}css_classes(){return super.css_classes().concat(u.bk_cell_editor)}render(){super.render(),this.args.container.append(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()}renderEditor(){}disableNavigation(){this.inputEl.addEventListener(\"keydown\",e=>{switch(e.keyCode){case r.Keys.Left:case r.Keys.Right:case r.Keys.Up:case r.Keys.Down:case r.Keys.PageUp:case r.Keys.PageDown:e.stopImmediatePropagation()}})}destroy(){this.remove()}focus(){this.inputEl.focus()}show(){}hide(){}position(){}getValue(){return this.inputEl.value}setValue(e){this.inputEl.value=e}serializeValue(){return this.getValue()}isValueChanged(){return!(\"\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue}applyValue(e,t){const i=this.args.grid.getData(),s=i.index.indexOf(e[l.DTINDEX_NAME]);i.setField(s,this.args.column.field,t)}loadValue(e){const t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)}validateValue(e){if(this.args.column.validator){const t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}}validate(){return this.validateValue(this.getValue())}}i.CellEditorView=d,d.__name__=\"CellEditorView\";class o extends n.Model{}i.CellEditor=o,o.__name__=\"CellEditor\";class _ extends d{get emptyValue(){return\"\"}_createInput(){return r.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}}i.StringEditorView=_,_.__name__=\"StringEditorView\";class c extends o{static init_StringEditor(){this.prototype.default_view=_,this.define({completions:[s.Array,[]]})}}i.StringEditor=c,c.__name__=\"StringEditor\",c.init_StringEditor();class p extends d{_createInput(){return r.textarea()}renderEditor(){this.inputEl.focus(),this.inputEl.select()}}i.TextEditorView=p,p.__name__=\"TextEditorView\";class h extends o{static init_TextEditor(){this.prototype.default_view=p}}i.TextEditor=h,h.__name__=\"TextEditor\",h.init_TextEditor();class E extends d{_createInput(){return r.select()}renderEditor(){for(const e of this.model.options)this.inputEl.appendChild(r.option({value:e},e));this.focus()}}i.SelectEditorView=E,E.__name__=\"SelectEditorView\";class V extends o{static init_SelectEditor(){this.prototype.default_view=E,this.define({options:[s.Array,[]]})}}i.SelectEditor=V,V.__name__=\"SelectEditor\",V.init_SelectEditor();class m extends d{_createInput(){return r.input({type:\"text\"})}}i.PercentEditorView=m,m.__name__=\"PercentEditorView\";class f extends o{static init_PercentEditor(){this.prototype.default_view=m}}i.PercentEditor=f,f.__name__=\"PercentEditor\",f.init_PercentEditor();class x extends d{_createInput(){return r.input({type:\"checkbox\"})}renderEditor(){this.focus()}loadValue(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue}serializeValue(){return this.inputEl.checked}}i.CheckboxEditorView=x,x.__name__=\"CheckboxEditorView\";class w extends o{static init_CheckboxEditor(){this.prototype.default_view=x}}i.CheckboxEditor=w,w.__name__=\"CheckboxEditor\",w.init_CheckboxEditor();class g extends d{_createInput(){return r.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){return parseInt(this.getValue(),10)||0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid integer\"}:super.validateValue(e)}}i.IntEditorView=g,g.__name__=\"IntEditorView\";class y extends o{static init_IntEditor(){this.prototype.default_view=g,this.define({step:[s.Number,1]})}}i.IntEditor=y,y.__name__=\"IntEditor\",y.init_IntEditor();class v extends d{_createInput(){return r.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){return parseFloat(this.getValue())||0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid number\"}:super.validateValue(e)}}i.NumberEditorView=v,v.__name__=\"NumberEditorView\";class b extends o{static init_NumberEditor(){this.prototype.default_view=v,this.define({step:[s.Number,.01]})}}i.NumberEditor=b,b.__name__=\"NumberEditor\",b.init_NumberEditor();class I extends d{_createInput(){return r.input({type:\"text\"})}}i.TimeEditorView=I,I.__name__=\"TimeEditorView\";class N extends o{static init_TimeEditor(){this.prototype.default_view=I}}i.TimeEditor=N,N.__name__=\"TimeEditor\",N.init_TimeEditor();class C extends d{_createInput(){return r.input({type:\"text\"})}get emptyValue(){return new Date}renderEditor(){this.inputEl.focus(),this.inputEl.select()}destroy(){super.destroy()}show(){super.show()}hide(){super.hide()}position(){return super.position()}getValue(){}setValue(e){}}i.DateEditorView=C,C.__name__=\"DateEditorView\";class D extends o{static init_DateEditor(){this.prototype.default_view=C}}i.DateEditor=D,D.__name__=\"DateEditor\",D.init_DateEditor()},\n", + " 456: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),o=e(457),n=e(461),l=e(462),r=e(463),d=e(29),a=e(8),h=e(9),u=e(13),c=e(19),_=e(472),m=e(473),g=e(474),p=e(478),f=s.__importDefault(e(479)),b=s.__importDefault(e(480));i.DTINDEX_NAME=\"__bkdt_internal_index__\",i.AutosizeModes={fit_columns:\"FCV\",fit_viewport:\"FVC\",force_fit:\"LFF\",none:\"NOA\"};class w{constructor(e,t){this.init(e,t)}init(e,t){if(i.DTINDEX_NAME in e.data)throw new Error(`special name ${i.DTINDEX_NAME} cannot be used as a data table column`);this.source=e,this.view=t,this.index=[...this.view.indices]}getLength(){return this.index.length}getItem(e){const t={};for(const i of u.keys(this.source.data))t[i]=this.source.data[i][this.index[e]];return t[i.DTINDEX_NAME]=this.index[e],t}getField(e,t){return t==i.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]}setField(e,t,i){const s=this.index[e];this.source.patch({[t]:[[s,i]]})}getRecords(){return h.range(0,this.getLength()).map(e=>this.getItem(e))}getItems(){return this.getRecords()}slice(e,t,i){return e=null!=e?e:0,t=null!=t?t:this.getLength(),i=null!=i?i:1,h.range(e,t,i).map(e=>this.getItem(e))}sort(e){let t=e.map(e=>[e.sortCol.field,e.sortAsc?1:-1]);0==t.length&&(t=[[i.DTINDEX_NAME,1]]);const s=this.getRecords(),o=this.index.slice();this.index.sort((e,i)=>{for(const[n,l]of t){const t=s[o.indexOf(e)][n],r=s[o.indexOf(i)][n];if(t!==r)return a.isNumber(t)&&a.isNumber(r)?l*(t-r||+isNaN(t)-+isNaN(r)):\"\"+t>\"\"+r?l:-l}return 0})}}i.TableDataProvider=w,w.__name__=\"TableDataProvider\";class x extends _.WidgetView{constructor(){super(...arguments),this._in_selection_update=!1,this._warned_not_reorderable=!1,this._width=null}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render()),this.connect(this.model.source.streaming,()=>this.updateGrid()),this.connect(this.model.source.patching,()=>this.updateGrid()),this.connect(this.model.source.change,()=>this.updateGrid()),this.connect(this.model.source.properties.data.change,()=>this.updateGrid()),this.connect(this.model.source.selected.change,()=>this.updateSelection()),this.connect(this.model.source.selected.properties.indices.change,()=>this.updateSelection())}remove(){var e;null===(e=this.grid)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),f.default,b.default]}update_position(){super.update_position(),this.grid.resizeCanvas()}after_layout(){super.after_layout(),this.updateLayout(!0,!1)}box_sizing(){const e=super.box_sizing();return\"fit_viewport\"===this.model.autosize_mode&&null!=this._width&&(e.width=this._width),e}updateLayout(e,t){const s=this.autosize;s===i.AutosizeModes.fit_columns||s===i.AutosizeModes.force_fit?(e||this.grid.resizeCanvas(),this.grid.autosizeColumns()):e&&t&&s===i.AutosizeModes.fit_viewport&&this.invalidate_layout()}updateGrid(){if(this.model.view.compute_indices(),this.data.init(this.model.source,this.model.view),this.model.sortable){const e=this.grid.getColumns(),t=this.grid.getSortColumns().map(t=>({sortCol:{field:e[this.grid.getColumnIndex(t.columnId)].field},sortAsc:t.sortAsc}));this.data.sort(t)}this.grid.invalidate(),this.updateLayout(!0,!0)}updateSelection(){if(this._in_selection_update)return;const{selected:e}=this.model.source,t=e.indices.map(e=>this.data.index.indexOf(e)).sort();this._in_selection_update=!0,this.grid.setSelectedRows(t),this._in_selection_update=!1;const i=this.grid.getViewport(),s=this.model.get_scroll_index(i,t);null!=s&&this.grid.scrollRowToTop(s)}newIndexColumn(){return{id:d.uniqueId(),name:this.model.index_header,field:i.DTINDEX_NAME,width:this.model.index_width,behavior:\"select\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:p.bk_cell_index,headerCssClass:p.bk_header_index}}css_classes(){return super.css_classes().concat(p.bk_data_table)}get autosize(){let e;return e=!0===this.model.fit_columns?i.AutosizeModes.force_fit:!1===this.model.fit_columns?i.AutosizeModes.none:i.AutosizeModes[this.model.autosize_mode],e}render(){var e;const t=this.model.columns.map(e=>Object.assign(Object.assign({},e.toColumn()),{parent:this}));let s=null;if(\"checkbox\"==this.model.selectable&&(s=new n.CheckboxSelectColumn({cssClass:p.bk_cell_select}),t.unshift(s.getColumnDefinition())),null!=this.model.index_position){const e=this.model.index_position,i=this.newIndexColumn();-1==e?t.push(i):e<-1?t.splice(e+1,0,i):t.splice(e,0,i)}let{reorderable:d}=this.model;!d||\"undefined\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(this._warned_not_reorderable||(c.logger.warn(\"jquery-ui is required to enable DataTable.reorderable\"),this._warned_not_reorderable=!0),d=!1);let h=-1,u=!1;const{frozen_rows:_,frozen_columns:m}=this.model,g=null==m?-1:m-1;null!=_&&(u=_<0,h=Math.abs(_));const f={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:d,autosizeColsMode:this.autosize,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:this.model.auto_edit,autoHeight:!1,rowHeight:this.model.row_height,frozenColumn:g,frozenRow:h,frozenBottom:u},b=null!=this.grid;if(this.data=new w(this.model.source,this.model.view),this.grid=new r.Grid(this.el,this.data,t,f),this.autosize==i.AutosizeModes.fit_viewport){this.grid.autosizeColumns();let i=0;for(const s of t)i+=null!==(e=s.width)&&void 0!==e?e:0;this._width=Math.ceil(i)}if(this.grid.onSort.subscribe((e,t)=>{if(!this.model.sortable)return;const i=t.sortCols;null!=i&&(this.data.sort(i),this.grid.invalidate(),this.updateSelection(),this.grid.render(),this.model.header_row||this._hide_header(),this.model.update_sort_columns(i))}),!1!==this.model.selectable){this.grid.setSelectionModel(new o.RowSelectionModel({selectActiveRow:null==s})),null!=s&&this.grid.registerPlugin(s);const e={dataItemColumnValueExtractor(e,t){let i=e[t.field];return a.isString(i)&&(i=i.replace(/\\n/g,\"\\\\n\")),i},includeHeaderWhenCopying:!1};this.grid.registerPlugin(new l.CellExternalCopyManager(e)),this.grid.onSelectedRowsChanged.subscribe((e,t)=>{this._in_selection_update||(this.model.source.selected.indices=t.rows.map(e=>this.data.index[e]))}),this.updateSelection(),this.model.header_row||this._hide_header()}b&&this.updateLayout(b,!1)}_hide_header(){for(const e of this.el.querySelectorAll(\".slick-header-columns\"))e.style.height=\"0px\";this.grid.resizeCanvas()}}i.DataTableView=x,x.__name__=\"DataTableView\";class C extends m.TableWidget{constructor(e){super(e),this._sort_columns=[]}get sort_columns(){return this._sort_columns}static init_DataTable(){this.prototype.default_view=x,this.define(({Array:e,Boolean:t,Int:i,Ref:s,String:o,Enum:n,Or:l,Null:r})=>({autosize_mode:[n(\"fit_columns\",\"fit_viewport\",\"none\",\"force_fit\"),\"force_fit\"],auto_edit:[t,!1],columns:[e(s(g.TableColumn)),[]],fit_columns:[l(t,r),null],frozen_columns:[l(i,r),null],frozen_rows:[l(i,r),null],sortable:[t,!0],reorderable:[t,!0],editable:[t,!1],selectable:[l(t,n(\"checkbox\")),!0],index_position:[l(i,r),0],index_header:[o,\"#\"],index_width:[i,40],scroll_to_selection:[t,!0],header_row:[t,!0],row_height:[i,25]})),this.override({width:600,height:400})}update_sort_columns(e){this._sort_columns=e.map(({sortCol:e,sortAsc:t})=>({field:e.field,sortAsc:t}))}get_scroll_index(e,t){return this.scroll_to_selection&&0!=t.length?h.some(t,t=>e.top<=t&&t<=e.bottom)?null:Math.max(0,Math.min(...t)-1):null}}i.DataTable=C,C.__name__=\"DataTable\",C.init_DataTable()},\n", + " 457: function _(e,t,n){var o=e(458),r=e(460);t.exports={RowSelectionModel:function(e){var t,n,l,i=[],c=this,u=new r.EventHandler,s={selectActiveRow:!0};function a(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function f(e){for(var t=[],n=0;n=0&&l0&&t-1 in e)}b.fn=b.prototype={jquery:\"3.5.1\",constructor:b,length:0,toArray:function(){return i.call(this)},get:function(e){return null==e?i.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return b.each(this,e)},map:function(e){return this.pushStack(b.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(i.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(b.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(b.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"�\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){p()},ae=be((function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()}),{dir:\"parentNode\",next:\"legend\"});try{H.apply(j=O.call(w.childNodes),w.childNodes),j[w.childNodes.length].nodeType}catch(e){H={apply:j.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(t),t=t||d,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return H.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return H.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+\" \"]&&(!v||!v.test(e))&&(1!==w||\"object\"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===w&&(U.test(e)||z.test(e))){for((m=ee.test(e)&&ye(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute(\"id\"))?c=c.replace(re,ie):t.setAttribute(\"id\",c=b)),s=(h=a(e)).length;s--;)h[s]=(c?\"#\"+c:\":scope\")+\" \"+xe(h[s]);y=h.join(\",\")}try{return H.apply(r,m.querySelectorAll(y)),r}catch(t){A(e,!0)}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace($,\"$1\"),t,r,i)}function ue(){var e=[];return function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}}function le(e){return e[b]=!0,e}function ce(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split(\"|\"),i=n.length;i--;)r.attrHandle[n[i]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function ge(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function ve(e){return le((function(t){return t=+t,le((function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},p=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!=d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,g=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",oe,!1):i.attachEvent&&i.attachEvent(\"onunload\",oe)),n.scope=ce((function(e){return h.appendChild(e).appendChild(d.createElement(\"div\")),void 0!==e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length})),n.attributes=ce((function(e){return e.className=\"i\",!e.getAttribute(\"className\")})),n.getElementsByTagName=ce((function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length})),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ce((function(e){var t;h.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||v.push(\"~=\"),(t=d.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[\"+M+\"*name\"+M+\"*=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")})),ce((function(e){e.innerHTML=\"\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")}))),(n.matchesSelector=K.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),y.push(\"!=\",F)})),v=v.length&&new RegExp(v.join(\"|\")),y=y.length&&new RegExp(y.join(\"|\")),t=K.test(h.compareDocumentPosition),x=t||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},N=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==d||e.ownerDocument==w&&x(w,e)?-1:t==d||t.ownerDocument==w&&x(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==d?-1:t==d?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]==w?-1:s[r]==w?1:0},d):d},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(p(e),n.matchesSelector&&g&&!A[t+\" \"]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return se(t,d,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!=d&&p(e),x(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&D.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(N),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&E(e,(function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")}))},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace(B,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=P(e,o[a])]=!(n[r]=o[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:le((function(e){var t=[],n=[],r=s(e.replace($,\"$1\"));return r[b]?le((function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return se(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:le((function(e){return V.test(e||\"\")||se.error(\"unsupported lang: \"+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve((function(){return[0]})),last:ve((function(e,t){return[t-1]})),eq:ve((function(e,t,n){return[n<0?n+t:n]})),even:ve((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ve((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1&&(o[l]=!(a[l]=f))}}else y=Te(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)}))}function Ee(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=be((function(e){return e===t}),s,!0),f=be((function(e){return P(t,e)>-1}),s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&we(p),u>1&&xe(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace($,\"$1\"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,v,y=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,S=C.length;for(c&&(l=a==d||a||c);m!==S&&null!=(f=C[m]);m++){if(i&&f){for(h=0,a||f.ownerDocument==d||(p(f),s=!g);v=e[h++];)if(v(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!v&&f)&&y--,o&&x.push(f))}if(y+=m,n&&m!==y){for(h=0;v=t[h++];)v(x,b,a,s);if(o){if(y>0)for(;m--;)x[m]||b[m]||(b[m]=q.call(u));b=Te(b)}H.apply(u,b),c&&!o&&b.length>0&&y+t.length>1&&se.uniqueSort(u)}return c&&(T=E,l=w),x};return n?le(o):o}(o,i))).selector=e}return s},u=se.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=G.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((f=r.find[c])&&(i=f(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ye(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&xe(u)))return H.apply(n,i),n;break}}return(p||s(e,d))(i,t,!g,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(N).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))})),ce((function(e){return e.innerHTML=\"\",\"#\"===e.firstChild.getAttribute(\"href\")}))||fe(\"type|href|height|width\",(function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")}))||fe(\"value\",(function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute(\"disabled\")}))||fe(R,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(e);b.find=T,b.expr=T.selectors,b.expr[\":\"]=b.expr.pseudos,b.uniqueSort=b.unique=T.uniqueSort,b.text=T.getText,b.isXMLDoc=T.isXML,b.contains=T.contains,b.escapeSelector=T.escape;var C=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&b(e).is(n))break;r.push(e)}return r},E=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},S=b.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function N(e,t,n){return h(t)?b.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?b.grep(e,(function(e){return e===t!==n})):\"string\"!=typeof t?b.grep(e,(function(e){return s.call(t,e)>-1!==n})):b.filter(t,e,n)}b.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?b.find.matchesSelector(r,e)?[r]:[]:b.find.matches(e,b.grep(t,(function(e){return 1===e.nodeType})))},b.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(b(e).filter((function(){for(t=0;t1?b.uniqueSort(n):n},filter:function(e){return this.pushStack(N(this,e||[],!1))},not:function(e){return this.pushStack(N(this,e||[],!0))},is:function(e){return!!N(this,\"string\"==typeof e&&S.test(e)?b(e):e||[],!1).length}});var D,j=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(b.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof b?t[0]:t,b.merge(this,b.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),A.test(r[1])&&b.isPlainObject(t))for(r in t)h(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):h(e)?void 0!==n.ready?n.ready(e):e(b):b.makeArray(e,this)}).prototype=b.fn,D=b(v);var q=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}b.fn.extend({has:function(e){var t=b(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&b.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?b.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?s.call(b(e),this[0]):s.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(b.uniqueSort(b.merge(this.get(),b(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return C(e,\"parentNode\")},parentsUntil:function(e,t,n){return C(e,\"parentNode\",n)},next:function(e){return H(e,\"nextSibling\")},prev:function(e){return H(e,\"previousSibling\")},nextAll:function(e){return C(e,\"nextSibling\")},prevAll:function(e){return C(e,\"previousSibling\")},nextUntil:function(e,t,n){return C(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return C(e,\"previousSibling\",n)},siblings:function(e){return E((e.parentNode||{}).firstChild,e)},children:function(e){return E(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(k(e,\"template\")&&(e=e.content||e),b.merge([],e.childNodes))}},(function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=b.filter(r,i)),this.length>1&&(L[e]||b.uniqueSort(i),q.test(e)&&i.reverse()),this.pushStack(i)}}));var O=/[^\\x20\\t\\r\\n\\f]+/g;function P(e){return e}function R(e){throw e}function M(e,t,n,r){var i;try{e&&h(i=e.promise)?i.call(e).done(t).fail(n):e&&h(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}b.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return b.each(e.match(O)||[],(function(e,n){t[n]=!0})),t}(e):b.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?b.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},b.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",b.Callbacks(\"memory\"),b.Callbacks(\"memory\"),2],[\"resolve\",\"done\",b.Callbacks(\"once memory\"),b.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",b.Callbacks(\"once memory\"),b.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return b.Deferred((function(t){b.each(n,(function(n,r){var i=h(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&h(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==R&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(b.Deferred.getStackHook&&(c.stackTrace=b.Deferred.getStackHook()),e.setTimeout(c))}}return b.Deferred((function(e){n[0][3].add(a(0,e,h(i)?i:P,e.notifyWith)),n[1][3].add(a(0,e,h(t)?t:P)),n[2][3].add(a(0,e,h(r)?r:R))})).promise()},promise:function(e){return null!=e?b.extend(e,i):i}},o={};return b.each(n,(function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add((function(){r=s}),n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith})),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),o=i.call(arguments),a=b.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?i.call(arguments):n,--t||a.resolveWith(r,o)}};if(t<=1&&(M(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||h(o[n]&&o[n].then)))return a.then();for(;n--;)M(o[n],s(n),a.reject);return a.promise()}});var I=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;b.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&I.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},b.readyException=function(t){e.setTimeout((function(){throw t}))};var W=b.Deferred();function F(){v.removeEventListener(\"DOMContentLoaded\",F),e.removeEventListener(\"load\",F),b.ready()}b.fn.ready=function(e){return W.then(e).catch((function(e){b.readyException(e)})),this},b.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--b.readyWait:b.isReady)||(b.isReady=!0,!0!==e&&--b.readyWait>0||W.resolveWith(v,[b]))}}),b.ready.then=W.then,\"complete\"===v.readyState||\"loading\"!==v.readyState&&!v.documentElement.doScroll?e.setTimeout(b.ready):(v.addEventListener(\"DOMContentLoaded\",F),e.addEventListener(\"load\",F));var B=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n))for(s in i=!0,n)B(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,h(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(b(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each((function(){Y.remove(this,e)}))}}),b.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=G.get(e,t),n&&(!r||Array.isArray(n)?r=G.access(e,t,b.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,(function(){b.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return G.get(e,n)||G.access(e,n,{empty:b.Callbacks(\"once memory\").add((function(){G.remove(e,[t+\"queue\",n])}))})}}),b.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i;ce=v.createDocumentFragment().appendChild(v.createElement(\"div\")),(fe=v.createElement(\"input\")).setAttribute(\"type\",\"radio\"),fe.setAttribute(\"checked\",\"checked\"),fe.setAttribute(\"name\",\"t\"),ce.appendChild(fe),d.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML=\"\",d.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=\"\",d.option=!!ce.lastChild;var ge={thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&k(e,t)?b.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n\",\"\"]);var me=/<|&#?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d-1)i&&i.push(o);else if(l=re(o),a=ve(f.appendChild(o),\"script\"),l&&ye(a),n)for(c=0;o=a[c++];)he.test(o.type||\"\")&&n.push(o);return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==(\"focus\"===t)}function ke(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return b().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=b.guid++)),e.each((function(){b.event.add(this,t,i,r,n)}))}function Ae(e,t,n){n?(G.set(e,t,!1),b.event.add(e,t,{namespace:!1,handler:function(e){var r,o,a=G.get(this,t);if(1&e.isTrigger&&this[t]){if(a.length)(b.event.special[t]||{}).delegateType&&e.stopPropagation();else if(a=i.call(arguments),G.set(this,t,a),r=n(this,t),this[t](),a!==(o=G.get(this,t))||r?G.set(this,t,!1):o={},a!==o)return e.stopImmediatePropagation(),e.preventDefault(),o.value}else a.length&&(G.set(this,t,{value:b.event.trigger(b.extend(a[0],b.Event.prototype),a.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===G.get(e,t)&&b.event.add(e,t,Ce)}b.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=G.get(e);if(X(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&b.find.matchesSelector(ne,i),n.guid||(n.guid=b.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(t){return void 0!==b&&b.event.triggered!==t.type?b.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(O)||[\"\"]).length;l--;)d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=b.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=b.event.special[d]||{},c=b.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&b.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),b.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=G.hasData(e)&&G.get(e);if(v&&(u=v.events)){for(l=(t=(t||\"\").match(O)||[\"\"]).length;l--;)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){for(f=b.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||b.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(u)&&G.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=b.event.fix(e),l=(G.get(this,\"events\")||Object.create(null))[u.type]||[],c=b.event.special[u.type]||{};for(s[0]=u,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:b.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\\s*$/g;function qe(e,t){return k(e,\"table\")&&k(11!==t.nodeType?t:t.firstChild,\"tr\")&&b(e).children(\"tbody\")[0]||e}function Le(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function He(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(G.hasData(e)&&(s=G.get(e).events))for(i in G.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n1&&\"string\"==typeof v&&!d.checkClone&&De.test(v))return e.each((function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Re(o,t,n,r)}));if(p&&(a=(i=xe(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(u=(s=b.map(ve(i,\"script\"),Le)).length;f0&&ye(a,!u&&ve(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=b.event.special,o=0;void 0!==(n=e[o]);o++)if(X(n)){if(t=n[G.expando]){if(t.events)for(r in t.events)i[r]?b.event.remove(n,r):b.removeEvent(n,r,t.handle);n[G.expando]=void 0}n[Y.expando]&&(n[Y.expando]=void 0)}}}),b.fn.extend({detach:function(e){return Me(this,e,!0)},remove:function(e){return Me(this,e)},text:function(e){return B(this,(function(e){return void 0===e?b.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Re(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)}))},prepend:function(){return Re(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(b.cleanData(ve(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return b.clone(this,e,t)}))},html:function(e){return B(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=b.htmlPrefilter(e);try{for(;n3,ne.removeChild(t)),s}}))}();var ze=[\"Webkit\",\"Moz\",\"ms\"],Ue=v.createElement(\"div\").style,Xe={};function Ve(e){var t=b.cssProps[e]||Xe[e];return t||(e in Ue?e:Xe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=ze.length;n--;)if((e=ze[n]+t)in Ue)return e}(e)||e)}var Ge=/^(none|table(?!-c[ea]).+)/,Ye=/^--/,Qe={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Je={letterSpacing:\"0\",fontWeight:\"400\"};function Ke(e,t,n){var r=ee.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Ze(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=b.css(e,n+te[a],!0,i)),r?(\"content\"===n&&(u-=b.css(e,\"padding\"+te[a],!0,i)),\"margin\"!==n&&(u-=b.css(e,\"border\"+te[a]+\"Width\",!0,i))):(u+=b.css(e,\"padding\"+te[a],!0,i),\"padding\"!==n?u+=b.css(e,\"border\"+te[a]+\"Width\",!0,i):s+=b.css(e,\"border\"+te[a]+\"Width\",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function et(e,t,n){var r=We(e),i=(!d.boxSizingReliable()||n)&&\"border-box\"===b.css(e,\"boxSizing\",!1,r),o=i,a=$e(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Ie.test(a)){if(!n)return a;a=\"auto\"}return(!d.boxSizingReliable()&&i||!d.reliableTrDimensions()&&k(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===b.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===b.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ze(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=$e(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=U(t),u=Ye.test(t),l=e.style;if(u||(t=Ve(s)),a=b.cssHooks[t]||b.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=ee.exec(n))&&i[1]&&(n=ae(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(b.cssNumber[s]?\"\":\"px\")),d.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=U(t);return Ye.test(t)||(t=Ve(s)),(a=b.cssHooks[t]||b.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=$e(e,t,r)),\"normal\"===i&&t in Je&&(i=Je[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),b.each([\"height\",\"width\"],(function(e,t){b.cssHooks[t]={get:function(e,n,r){if(n)return!Ge.test(b.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):Fe(e,Qe,(function(){return et(e,t,r)}))},set:function(e,n,r){var i,o=We(e),a=!d.scrollboxSize()&&\"absolute\"===o.position,s=(a||r)&&\"border-box\"===b.css(e,\"boxSizing\",!1,o),u=r?Ze(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,\"border\",!1,o)-.5)),u&&(i=ee.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=b.css(e,t)),Ke(0,n,u)}}})),b.cssHooks.marginLeft=_e(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat($e(e,\"marginLeft\"))||e.getBoundingClientRect().left-Fe(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+\"px\"})),b.each({margin:\"\",padding:\"\",border:\"Width\"},(function(e,t){b.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+te[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(b.cssHooks[e+t].set=Ke)})),b.fn.extend({css:function(e,t){return B(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=We(e),i=t.length;a1)}}),b.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||b.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?\"\":\"px\")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=b.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):1!==e.elem.nodeType||!b.cssHooks[e.prop]&&null==e.elem.style[Ve(e.prop)]?e.elem[e.prop]=e.now:b.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},b.fx=tt.prototype.init,b.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===v.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,b.fx.interval),b.fx.tick())}function st(){return e.setTimeout((function(){nt=void 0})),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=te[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(ct.tweeners[t]||[]).concat(ct.tweeners[\"*\"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){b.removeAttr(this,e)}))}}),b.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?b.prop(e,t,n):(1===o&&b.isXMLDoc(e)||(i=b.attrHooks[t.toLowerCase()]||(b.expr.match.bool.test(t)?ft:void 0)),void 0!==n?null===n?void b.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=b.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&\"radio\"===t&&k(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(O);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ft={set:function(e,t,n){return!1===t?b.removeAttr(e,n):e.setAttribute(n,n),n}},b.each(b.expr.match.bool.source.match(/\\w+/g),(function(e,t){var n=pt[t]||b.find.attr;pt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=pt[a],pt[a]=i,i=null!=n(e,t,r)?a:null,pt[a]=o),i}}));var dt=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function gt(e){return(e.match(O)||[]).join(\" \")}function vt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function yt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(O)||[]}b.fn.extend({prop:function(e,t){return B(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[b.propFix[e]||e]}))}}),b.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&b.isXMLDoc(e)||(t=b.propFix[t]||t,i=b.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=b.find.attr(e,\"tabindex\");return t?parseInt(t,10):dt.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),d.optSelected||(b.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),b.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],(function(){b.propFix[this.toLowerCase()]=this})),b.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){b(this).addClass(e.call(this,t,vt(this)))}));if((t=yt(e)).length)for(;n=this[u++];)if(i=vt(n),r=1===n.nodeType&&\" \"+gt(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=gt(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){b(this).removeClass(e.call(this,t,vt(this)))}));if(!arguments.length)return this.attr(\"class\",\"\");if((t=yt(e)).length)for(;n=this[u++];)if(i=vt(n),r=1===n.nodeType&&\" \"+gt(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=gt(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):h(e)?this.each((function(n){b(this).toggleClass(e.call(this,n,vt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=b(this),a=yt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=vt(this))&&G.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":G.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+gt(vt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var mt=/\\r/g;b.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=h(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,b(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=b.map(i,(function(e){return null==e?\"\":e+\"\"}))),(t=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))}))):i?(t=b.valHooks[i.type]||b.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(mt,\"\"):null==n?\"\":n:void 0}}),b.extend({valHooks:{option:{get:function(e){var t=b.find.attr(e,\"value\");return null!=t?t:gt(b.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),b.each([\"radio\",\"checkbox\"],(function(){b.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=b.inArray(b(e).val(),t)>-1}},d.checkOn||(b.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})})),d.focusin=\"onfocusin\"in e;var xt=/^(?:focusinfocus|focusoutblur)$/,bt=function(e){e.stopPropagation()};b.extend(b.event,{trigger:function(t,n,r,i){var o,a,s,u,l,f,p,d,y=[r||v],m=c.call(t,\"type\")?t.type:t,x=c.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(a=d=s=r=r||v,3!==r.nodeType&&8!==r.nodeType&&!xt.test(m+b.event.triggered)&&(m.indexOf(\".\")>-1&&(x=m.split(\".\"),m=x.shift(),x.sort()),l=m.indexOf(\":\")<0&&\"on\"+m,(t=t[b.expando]?t:new b.Event(m,\"object\"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:b.makeArray(n,[t]),p=b.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,xt.test(u+m)||(a=a.parentNode);a;a=a.parentNode)y.push(a),s=a;s===(r.ownerDocument||v)&&y.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=y[o++])&&!t.isPropagationStopped();)d=a,t.type=o>1?u:p.bindType||m,(f=(G.get(a,\"events\")||Object.create(null))[t.type]&&G.get(a,\"handle\"))&&f.apply(a,n),(f=l&&a[l])&&f.apply&&X(a)&&(t.result=f.apply(a,n),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(y.pop(),n)||!X(r)||l&&h(r[m])&&!g(r)&&((s=r[l])&&(r[l]=null),b.event.triggered=m,t.isPropagationStopped()&&d.addEventListener(m,bt),r[m](),t.isPropagationStopped()&&d.removeEventListener(m,bt),b.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=b.extend(new b.Event,n,{type:e,isSimulated:!0});b.event.trigger(r,null,t)}}),b.fn.extend({trigger:function(e,t){return this.each((function(){b.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return b.event.trigger(e,t,n,!0)}}),d.focusin||b.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){var n=function(e){b.event.simulate(t,e.target,b.event.fix(e))};b.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=G.access(r,t);i||r.addEventListener(e,n,!0),G.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=G.access(r,t)-1;i?G.access(r,t,i):(r.removeEventListener(e,n,!0),G.remove(r,t))}}}));var wt=e.location,Tt={guid:Date.now()},Ct=/\\?/;b.parseXML=function(t){var n;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){n=void 0}return n&&!n.getElementsByTagName(\"parsererror\").length||b.error(\"Invalid XML: \"+t),n};var Et=/\\[\\]$/,St=/\\r?\\n/g,kt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function Nt(e,t,n,r){var i;if(Array.isArray(t))b.each(t,(function(t,i){n||Et.test(e)?r(e,i):Nt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)}));else if(n||\"object\"!==x(t))r(e,t);else for(i in t)Nt(e+\"[\"+i+\"]\",t[i],n,r)}b.param=function(e,t){var n,r=[],i=function(e,t){var n=h(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,(function(){i(this.name,this.value)}));else for(n in e)Nt(n,e[n],t,i);return r.join(\"&\")},b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=b.prop(this,\"elements\");return e?b.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!b(this).is(\":disabled\")&&At.test(this.nodeName)&&!kt.test(e)&&(this.checked||!pe.test(e))})).map((function(e,t){var n=b(this).val();return null==n?null:Array.isArray(n)?b.map(n,(function(e){return{name:t.name,value:e.replace(St,\"\\r\\n\")}})):{name:t.name,value:n.replace(St,\"\\r\\n\")}})).get()}});var Dt=/%20/g,jt=/#.*$/,qt=/([?&])_=[^&]*/,Lt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Ht=/^(?:GET|HEAD)$/,Ot=/^\\/\\//,Pt={},Rt={},Mt=\"*/\".concat(\"*\"),It=v.createElement(\"a\");function Wt(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(O)||[];if(h(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ft(e,t,n,r){var i={},o=e===Rt;function a(s){var u;return i[s]=!0,b.each(e[s]||[],(function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function Bt(e,t){var n,r,i=b.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&b.extend(!0,e,r),e}It.href=wt.href,b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:wt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(wt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Mt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Bt(Bt(e,b.ajaxSettings),t):Bt(b.ajaxSettings,e)},ajaxPrefilter:Wt(Pt),ajaxTransport:Wt(Rt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,o,a,s,u,l,c,f,p,d=b.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?b(h):b.event,y=b.Deferred(),m=b.Callbacks(\"once memory\"),x=d.statusCode||{},w={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Lt.exec(o);)a[t[1].toLowerCase()+\" \"]=(a[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=a[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return r&&r.abort(t),S(0,t),this}};if(y.promise(E),d.url=((t||d.url||wt.href)+\"\").replace(Ot,wt.protocol+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||\"*\").toLowerCase().match(O)||[\"\"],null==d.crossDomain){u=v.createElement(\"a\");try{u.href=d.url,u.href=u.href,d.crossDomain=It.protocol+\"//\"+It.host!=u.protocol+\"//\"+u.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=b.param(d.data,d.traditional)),Ft(Pt,d,n,E),l)return E;for(f in(c=b.event&&d.global)&&0==b.active++&&b.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Ht.test(d.type),i=d.url.replace(jt,\"\"),d.hasContent?d.data&&d.processData&&0===(d.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(d.data=d.data.replace(Dt,\"+\")):(p=d.url.slice(i.length),d.data&&(d.processData||\"string\"==typeof d.data)&&(i+=(Ct.test(i)?\"&\":\"?\")+d.data,delete d.data),!1===d.cache&&(i=i.replace(qt,\"$1\"),p=(Ct.test(i)?\"&\":\"?\")+\"_=\"+Tt.guid+++p),d.url=i+p),d.ifModified&&(b.lastModified[i]&&E.setRequestHeader(\"If-Modified-Since\",b.lastModified[i]),b.etag[i]&&E.setRequestHeader(\"If-None-Match\",b.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",d.contentType),E.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+Mt+\"; q=0.01\":\"\"):d.accepts[\"*\"]),d.headers)E.setRequestHeader(f,d.headers[f]);if(d.beforeSend&&(!1===d.beforeSend.call(h,E,d)||l))return E.abort();if(C=\"abort\",m.add(d.complete),E.done(d.success),E.fail(d.error),r=Ft(Rt,d,n,E)){if(E.readyState=1,c&&g.trigger(\"ajaxSend\",[E,d]),l)return E;d.async&&d.timeout>0&&(s=e.setTimeout((function(){E.abort(\"timeout\")}),d.timeout));try{l=!1,r.send(w,S)}catch(e){if(l)throw e;S(-1,e)}}else S(-1,\"No Transport\");function S(t,n,a,u){var f,p,v,w,T,C=n;l||(l=!0,s&&e.clearTimeout(s),r=void 0,o=u||\"\",E.readyState=t>0?4:0,f=t>=200&&t<300||304===t,a&&(w=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(d,E,a)),!f&&b.inArray(\"script\",d.dataTypes)>-1&&(d.converters[\"text script\"]=function(){}),w=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(d,w,E,f),f?(d.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(b.lastModified[i]=T),(T=E.getResponseHeader(\"etag\"))&&(b.etag[i]=T)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=w.state,p=w.data,f=!(v=w.error))):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",f?y.resolveWith(h,[p,C,E]):y.rejectWith(h,[E,C,v]),E.statusCode(x),x=void 0,c&&g.trigger(f?\"ajaxSuccess\":\"ajaxError\",[E,d,f?p:v]),m.fireWith(h,[E,C]),c&&(g.trigger(\"ajaxComplete\",[E,d]),--b.active||b.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return b.get(e,t,n,\"json\")},getScript:function(e,t){return b.get(e,void 0,t,\"script\")}}),b.each([\"get\",\"post\"],(function(e,t){b[t]=function(e,n,r,i){return h(n)&&(i=i||r,r=n,n=void 0),b.ajax(b.extend({url:e,type:t,dataType:i,data:n,success:r},b.isPlainObject(e)&&e))}})),b.ajaxPrefilter((function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")})),b._evalUrl=function(e,t,n){return b.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){b.globalEval(e,t,n)}})},b.fn.extend({wrapAll:function(e){var t;return this[0]&&(h(e)&&(e=e.call(this[0])),t=b(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return h(e)?this.each((function(t){b(this).wrapInner(e.call(this,t))})):this.each((function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=h(e);return this.each((function(n){b(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not(\"body\").each((function(){b(this).replaceWith(this.childNodes)})),this}}),b.expr.pseudos.hidden=function(e){return!b.expr.pseudos.visible(e)},b.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},b.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var $t={0:200,1223:204},_t=b.ajaxSettings.xhr();d.cors=!!_t&&\"withCredentials\"in _t,d.ajax=_t=!!_t,b.ajaxTransport((function(t){var n,r;if(d.cors||_t&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o($t[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout((function(){n&&r()}))},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}})),b.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),b.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter(\"script\",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")})),b.ajaxTransport(\"script\",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=b(\"" + ], + "text/plain": [ + ":NdOverlay [Variable]\n", + " :Curve [tth] (value)" + ] + }, + "execution_count": 5, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1001" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "data_set.hvplot(y=['I', 'simulated'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We do not have the correct experimental parameters.." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":NdOverlay [Variable]\n", + " :Curve [tth] (value)" + ] + }, + "execution_count": 6, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1220" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "S.parameters.wavelength = 1.912\n", + "S.parameters.u_resolution = 1.4\n", + "S.parameters.v_resolution = -0.42\n", + "S.parameters.w_resolution = 0.38\n", + "S.parameters.x_resolution = 0.0\n", + "S.parameters.y_resolution = 0.0\n", + "\n", + "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(data_set['tth']))\n", + "data_set.hvplot(y=['I', 'simulated'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we need to set the background" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "\n", + "bg = PointBackground(linked_experiment='PbSO4')\n", + "bg.append(BackgroundPoint.from_pars(data_x[0], 200))\n", + "bg.append(BackgroundPoint.from_pars(data_x[-1], 200))\n", + "\n", + "S.set_background(bg)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collection of 1 backgrounds.\n" + ] + }, + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":NdOverlay [Variable]\n", + " :Curve [tth] (value)" + ] + }, + "execution_count": 8, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1439" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "print(S.backgrounds)\n", + "\n", + "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(np.array(data_set['tth'])))\n", + "data_set.hvplot(y=['I', 'simulated'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fitting to the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initalize the fitting engine and apply a few constraints" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "f = Fitter(S, interface.fit_func)\n", + "\n", + "# Vary the scale and the BG points\n", + "S.pattern.scale.fixed = False\n", + "S.parameters.resolution_u.fixed = False\n", + "S.parameters.resolution_v.fixed = False\n", + "S.parameters.resolution_w.fixed = False\n", + "S.backgrounds[0][0].y.fixed = False\n", + "S.backgrounds[0][1].y.fixed = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perform the fit" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The fit has been successful: True\n", + "The gooodness of fit is: 26888818314.89678\n" + ] + } + ], + "source": [ + "result = data_set['I'].easyCore.fit(f, weights=data_set['s_I'])\n", + "\n", + "if result.success:\n", + " print(\"The fit has been successful: {}\".format(result.success))\n", + " print(\"The gooodness of fit is: {}\".format(result.goodness_of_fit))\n", + " \n", + "\n", + "data_set['best_fit'] = result.y_calc" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":NdOverlay [Variable]\n", + " :Curve [tth] (value)" + ] + }, + "execution_count": 11, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1658" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "data_set.hvplot(y=['I', 'best_fit'])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scale: \n", + "BG 0: \n", + "BG 1: \n" + ] + } + ], + "source": [ + "print(f'Scale: {S.pattern.scale}')\n", + "print(f'BG 0: {S.backgrounds[0][0]}')\n", + "print(f'BG 1: {S.backgrounds[0][1]}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From dfcca6113f544143d78dc1a62ff0b2a7a3e6b745 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 8 Feb 2021 17:01:53 +0100 Subject: [PATCH 131/312] Add setup and requirements for binder --- README.rst | 3 +++ pyproject.toml | 9 +++++++++ requirements.txt | 10 ++++++++++ setup.py | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 README.rst create mode 100644 requirements.txt create mode 100644 setup.py diff --git a/README.rst b/README.rst new file mode 100644 index 00000000..a1c4a814 --- /dev/null +++ b/README.rst @@ -0,0 +1,3 @@ + +easyDiffractionLib +================== diff --git a/pyproject.toml b/pyproject.toml index ebbba10c..1c71a381 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,3 +40,12 @@ easyDiffractionLib = "easyDiffractionLib.main:main" [ci.pyinstaller] libs = { macos = 'libsDarwin', ubuntu = 'libsLinux', windows = 'libsWin32' } + + +[tool.dephell.main] +from = {format = "poetry", path = "pyproject.toml"} +to = {format = "setuppy", path = "setup.py"} + +[tool.dephell.requirements] +from = {format = "poetry", path = "pyproject.toml"} +to = {format = "pip", path = "requirements.txt"} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..d285e7bd --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +cryspy==0.*,>=0.4.11 +git+https://github.com/easyScience/easyCore.git@xarray#egg=easyCore +hvplot==0.*,>=0.7.0 +jupyter==1.*,>=1.0.0 +git+https://github.com/easyScience/libsDarwin.git@main#egg=libsDarwin; sys_platform == "darwin" +git+https://github.com/easyScience/libsLinux.git@main#egg=libsLinux; sys_platform == "linux" +git+https://github.com/easyScience/libsWin32.git@main#egg=libsWin32; sys_platform == "win32" +pytest==5.*,>=5.2.0 +requests==2.*,>=2.24.0 +toml==0.*,>=0.10.0 diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..8e2a90aa --- /dev/null +++ b/setup.py @@ -0,0 +1,41 @@ + +# -*- coding: utf-8 -*- + +# DO NOT EDIT THIS FILE! +# This file has been autogenerated by dephell <3 +# https://github.com/dephell/dephell + +try: + from setuptools import setup +except ImportError: + from distutils.core import setup + + +import os.path + +readme = '' +here = os.path.abspath(os.path.dirname(__file__)) +readme_path = os.path.join(here, 'README.rst') +if os.path.exists(readme_path): + with open(readme_path, 'rb') as stream: + readme = stream.read().decode('utf8') + + +setup( + long_description=readme, + name='easyDiffractionLib', + version='0.0.1', + description='Making diffraction data analysis and modelling easy.', + python_requires='<3.8,==3.*,>=3.7.0', + project_urls={"documentation": "https://github.com/easyScience/easyDiffractionLib", "homepage": "https://github.com/easyScience/easyDiffractionLib"}, + author='Andrew Sazonov', + maintainer='Simon Ward', + license='GPL-3.0-only', + entry_points={"console_scripts": ["easyDiffractionLib = easyDiffractionLib.main:main"]}, + packages=['easyDiffractionLib', 'easyDiffractionLib.Calculators', 'easyDiffractionLib.Elements', 'easyDiffractionLib.Elements.Backgrounds', 'easyDiffractionLib.Elements.Experiments', 'easyDiffractionLib.Interfaces'], + package_dir={"": "."}, + package_data={}, + install_requires=['cryspy==0.*,>=0.4.11', 'easycore', 'libsdarwin; sys_platform == "darwin"', 'libslinux; sys_platform == "linux"', 'libswin32; sys_platform == "win32"'], + dependency_links=['git+https://github.com/easyScience/easyCore.git@xarray#egg=easycore', 'git+https://github.com/easyScience/libsDarwin.git@main#egg=libsdarwin', 'git+https://github.com/easyScience/libsLinux.git@main#egg=libslinux', 'git+https://github.com/easyScience/libsWin32.git@main#egg=libswin32'], + extras_require={"dev": ["hvplot==0.*,>=0.7.0", "jupyter==1.*,>=1.0.0", "pytest==5.*,>=5.2.0", "requests==2.*,>=2.24.0", "toml==0.*,>=0.10.0"]}, +) From 0b482daf7b038462610fc6c367946c701d4b3548 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 1 Mar 2021 14:56:11 +0100 Subject: [PATCH 132/312] Move to easyCore develop --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1c71a381..b7961826 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ cryspy = "^0.4.11" libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } -easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'xarray' } +easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] From ba1dd0a615278c1e61f1ebae0dbf3042cec4791d Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 2 Mar 2021 16:19:39 +0100 Subject: [PATCH 133/312] Undo/Redo stack work --- easyDiffractionLib/sample.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 278d8520..60f61be6 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -5,6 +5,8 @@ from typing import Union from easyCore.Objects.Base import BaseObj +from easyCore.Utils.UndoRedo import stack_deco + from easyDiffractionLib import Phase, Phases from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D @@ -74,6 +76,7 @@ def phases(self): return self._phases @phases.setter + @stack_deco def phases(self, value): if isinstance(value, Phase): value = Phases('Phases', value) @@ -88,6 +91,7 @@ def parameters(self): return self._parameters @parameters.setter + @stack_deco def parameters(self, value): if not isinstance(value, Pars1D): raise ValueError From 75c7095754399f010367c1e97b79089683a4d45a Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 12 Mar 2021 16:09:48 +0100 Subject: [PATCH 134/312] Initial implementation of get_hkl --- easyDiffractionLib/Calculators/CFML.py | 21 ++++++++++- easyDiffractionLib/Calculators/GSASII.py | 20 +++++++++- easyDiffractionLib/Calculators/cryspy.py | 37 +++++++++++++++++++ easyDiffractionLib/Interfaces/CFML.py | 3 ++ easyDiffractionLib/Interfaces/GSASII.py | 3 ++ easyDiffractionLib/Interfaces/cryspy.py | 3 ++ .../Interfaces/interfaceTemplate.py | 4 ++ easyDiffractionLib/interface.py | 3 ++ 8 files changed, 91 insertions(+), 3 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 52526710..0945d2ad 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -17,7 +17,12 @@ def __init__(self, filename: str = None): self.conditions.bkg = 0.0 self.background = None self.pattern = None - + self.hkl_dict = { + 'ttheta': np.empty(0), + 'h': np.empty(0), + 'k': np.empty(0), + 'l': np.empty(0) + } def calculate(self, x_array: np.ndarray) -> np.ndarray: """ For a given x calculate the corresponding y @@ -83,12 +88,18 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if os.path.basename(p) != "easydiffraction_temp.cif": p.unlink() + self.hkl_dict = { + 'ttheta': np.array([12.950, 15.796, 20.409, 113.463, 114.292, 119.420, 119.827]), + 'h': np.array([1, 2, 1, 4, 5, 9, 0]), + 'k': np.array([-1, 0, 8, 9, 5, 0, 1]), + 'l': np.array([0, 2, 1, 0, 5, 9, 0]) + } + if self.background is None: bg = np.zeros_like(this_x_array) else: bg = self.background.calculate(this_x_array) - res = scale * diffraction_pattern.ycalc + bg np.set_printoptions(precision=3) @@ -96,3 +107,9 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: print(f"y_calc: {res}") return res + + def get_hkl(self, tth: np.array = None) -> dict: + hkl_dict = self.hkl_dict + if tth is not None: + pass + return hkl_dict diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 7184016b..00524537 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -27,7 +27,12 @@ def __init__(self, filename: str = None): self.filename = filename self.background = None self.pattern = None - + self.hkl_dict = { + 'ttheta': np.empty(0), + 'h': np.empty(0), + 'k': np.empty(0), + 'l': np.empty(0) + } def create_temp_prm(self): if self.filename is None: @@ -114,6 +119,13 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if os.path.basename(p) != "easydiffraction_temp.cif": p.unlink() + self.hkl_dict = { + 'ttheta': np.array([12.950, 15.796, 20.409, 113.463, 114.292, 119.420, 119.827]), + 'h': np.array([1, 2, 1, 4, 5, 9, 0]), + 'k': np.array([-1, 0, 8, 9, 5, 0, 1]), + 'l': np.array([0, 2, 1, 0, 5, 9, 0]) + } + if self.background is None: bg = np.zeros_like(this_x_array) else: @@ -126,3 +138,9 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: print(f"y_calc: {res}") return res + + def get_hkl(self, tth: np.array = None) -> dict: + hkl_dict = self.hkl_dict + if tth is not None: + pass + return hkl_dict diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 5d29139e..1951434d 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -27,6 +27,12 @@ def __init__(self): } self.background = None self.pattern = None + self.hkl_dict = { + 'ttheta': np.empty(0), + 'h': np.empty(0), + 'k': np.empty(0), + 'l': np.empty(0) + } def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -63,6 +69,13 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) profile = pd.calc_profile(this_x_array, [crystal], True, False) + self.hkl_dict = { + 'ttheta': pd.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, + 'h': pd.d_internal_val['peak_'+crystal.data_name].numpy_index_h, + 'k': pd.d_internal_val['peak_'+crystal.data_name].numpy_index_k, + 'l': pd.d_internal_val['peak_'+crystal.data_name].numpy_index_l, + } + if self.background is None: bg = np.zeros_like(this_x_array) else: @@ -75,3 +88,27 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: print(f"y_calc: {res}") return res + + def get_hkl(self, tth: np.array = None) -> dict: + + hkl_dict = self.hkl_dict + + if tth is not None: + crystal = cryspy.Crystal.from_cif(self.cif_str) + phase_list = cryspy.PhaseL() + phase = cryspy.Phase(label=crystal.data_name, scale=1, igsize=0) + phase_list.items.append(phase) + setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) + background = cryspy.PdBackgroundL() + resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) + pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) + _ = pd.calc_profile(this_x_array, [crystal], True, False) + + hkl_dict = { + 'ttheta': pd.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, + 'h': pd.d_internal_val['peak_' + crystal.data_name].numpy_index_h, + 'k': pd.d_internal_val['peak_' + crystal.data_name].numpy_index_k, + 'l': pd.d_internal_val['peak_' + crystal.data_name].numpy_index_l, + } + + return hkl_dict \ No newline at end of file diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index efbe50f0..b2bf7a6e 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -164,3 +164,6 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: :rtype: np.ndarray """ return self.calculator.calculate(x_array) + + def get_hkl(self, x_array: np.ndarray = None) -> dict: + return self.calculator.get_hkl(x_array) \ No newline at end of file diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 3568a7c1..b412eee7 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -164,3 +164,6 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: :rtype: np.ndarray """ return self.calculator.calculate(x_array) + + def get_hkl(self, x_array: np.ndarray = None) -> dict: + return self.calculator.get_hkl(x_array) \ No newline at end of file diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 13a493a0..a0766d51 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -164,3 +164,6 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: :rtype: np.ndarray """ return self.calculator.calculate(x_array) + + def get_hkl(self, x_array: np.ndarray = None) -> dict: + return self.calculator.get_hkl(x_array) diff --git a/easyDiffractionLib/Interfaces/interfaceTemplate.py b/easyDiffractionLib/Interfaces/interfaceTemplate.py index fe1dc50a..bbfc0091 100644 --- a/easyDiffractionLib/Interfaces/interfaceTemplate.py +++ b/easyDiffractionLib/Interfaces/interfaceTemplate.py @@ -42,3 +42,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: :rtype: np.ndarray """ pass + + @abstractmethod + def get_hkl(self, x_array: np.ndarray = None) -> dict: + pass \ No newline at end of file diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 345dee37..6b07ed86 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -210,3 +210,6 @@ def __set_pattern_item(obj, pattern, index) -> Callable: def inner(value): obj().set_pattern_value(pattern, index, value) return inner + + def get_hkl(self, x_array=None) -> dict: + return self().get_hkl(x_array) From 3a6a7b786bea5fea407b0a0a84a8d7aca64cf27b Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 12 Mar 2021 17:27:56 +0100 Subject: [PATCH 135/312] Set default hkl arrays empty --- easyDiffractionLib/Calculators/CFML.py | 8 ++++---- easyDiffractionLib/Calculators/GSASII.py | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 0945d2ad..9f4abd30 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -89,10 +89,10 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: p.unlink() self.hkl_dict = { - 'ttheta': np.array([12.950, 15.796, 20.409, 113.463, 114.292, 119.420, 119.827]), - 'h': np.array([1, 2, 1, 4, 5, 9, 0]), - 'k': np.array([-1, 0, 8, 9, 5, 0, 1]), - 'l': np.array([0, 2, 1, 0, 5, 9, 0]) + 'ttheta': np.array([]), + 'h': np.array([]), + 'k': np.array([]), + 'l': np.array([]) } if self.background is None: diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 00524537..574b1011 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -120,10 +120,10 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: p.unlink() self.hkl_dict = { - 'ttheta': np.array([12.950, 15.796, 20.409, 113.463, 114.292, 119.420, 119.827]), - 'h': np.array([1, 2, 1, 4, 5, 9, 0]), - 'k': np.array([-1, 0, 8, 9, 5, 0, 1]), - 'l': np.array([0, 2, 1, 0, 5, 9, 0]) + 'ttheta': np.array([]), + 'h': np.array([]), + 'k': np.array([]), + 'l': np.array([]) } if self.background is None: From fca17c79aca88f269926c178e7e0d156b7e20f42 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 12 Mar 2021 20:39:00 +0100 Subject: [PATCH 136/312] Rename stack_deco to property_stack_deco --- easyDiffractionLib/sample.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 60f61be6..9d58eb08 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -5,7 +5,7 @@ from typing import Union from easyCore.Objects.Base import BaseObj -from easyCore.Utils.UndoRedo import stack_deco +from easyCore.Utils.UndoRedo import property_stack_deco from easyDiffractionLib import Phase, Phases from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D @@ -76,7 +76,7 @@ def phases(self): return self._phases @phases.setter - @stack_deco + @property_stack_deco def phases(self, value): if isinstance(value, Phase): value = Phases('Phases', value) @@ -91,7 +91,7 @@ def parameters(self): return self._parameters @parameters.setter - @stack_deco + @property_stack_deco def parameters(self, value): if not isinstance(value, Pars1D): raise ValueError From ad70df779c8f3a7cd4ca246524b8c7a7d3cf90d9 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 26 Mar 2021 12:18:24 +0100 Subject: [PATCH 137/312] Change cryspy handling --- easyDiffractionLib/Calculators/cryspy.py | 57 +++++++++++++++++++----- easyDiffractionLib/Interfaces/cryspy.py | 17 ++++++- easyDiffractionLib/interface.py | 5 ++- 3 files changed, 65 insertions(+), 14 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 1951434d..5d316e37 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -13,7 +13,7 @@ class Cryspy: def __init__(self): - self.cif_str = "" + self._cif_str = "" self.conditions = { 'wavelength': 1.25, 'resolution': { @@ -33,6 +33,34 @@ def __init__(self): 'k': np.empty(0), 'l': np.empty(0) } + self.storage = {} + + @property + def cif_str(self): + return self._cif_str + + @cif_str.setter + def cif_str(self, value): + self._cif_str = value + self.createPhase() + + def createPhase(self): + crystal = cryspy.Crystal.from_cif(self.cif_str) + self.storage['crystal'] = crystal + phase = cryspy.Phase(label=crystal.data_name, scale=1, igsize=0) + # label = crystal.data_name + '_phase' + self.storage['phase'] = phase + return 'phase' + + def updateCrystal(self, name='crystal', **kwargs): + c = self.storage[name] + for key in kwargs.keys(): + setattr(c, key, kwargs[key]) + + def createSetup(self): + setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) + self.storage['setup'] = setup + return 'setup' def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -59,14 +87,24 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: print(self.conditions) print(self.cif_str) - crystal = cryspy.Crystal.from_cif(self.cif_str) + # self.createPhase() + self.createSetup() + phase_list = cryspy.PhaseL() - phase = cryspy.Phase(label=crystal.data_name, scale=1, igsize=0) - phase_list.items.append(phase) - setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) + phase_list.items.append(self.storage['phase']) background = cryspy.PdBackgroundL() resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) - pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) + pd = cryspy.Pd(setup=self.storage['setup'], resolution=resolution, phase=phase_list, background=background) + crystal = self.storage['crystal'] + + if self.background is None: + bg = np.zeros_like(this_x_array) + else: + bg = self.background.calculate(this_x_array) + + if crystal is None: + return bg + profile = pd.calc_profile(this_x_array, [crystal], True, False) self.hkl_dict = { @@ -76,11 +114,6 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: 'l': pd.d_internal_val['peak_'+crystal.data_name].numpy_index_l, } - if self.background is None: - bg = np.zeros_like(this_x_array) - else: - bg = self.background.calculate(this_x_array) - res = scale * np.array(profile.intensity_total) + bg np.set_printoptions(precision=3) @@ -102,7 +135,7 @@ def get_hkl(self, tth: np.array = None) -> dict: background = cryspy.PdBackgroundL() resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) - _ = pd.calc_profile(this_x_array, [crystal], True, False) + _ = pd.calc_profile(tth, [crystal], True, False) hkl_dict = { 'ttheta': pd.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index a0766d51..1d750dc0 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -17,6 +17,15 @@ class Cryspy(InterfaceTemplate): _sample_link = { 'cif_str': 'cif_str'} + _crystal_link = { + "length_a": "length_a", + "length_b": "length_b", + "length_c": "length_c", + "angle_alpha": "angle_alpha", + "angle_beta": "angle_beta", + "angle_gamma": "angle_gamma", + } + _instrument_link = { 'resolution_u': 'u', 'resolution_v': 'v', @@ -54,11 +63,17 @@ def set_value(self, value_label: str, value: float): :return: None :rtype: noneType """ + if value_label == 'filename': + return if self._borg.debug: print(f'Interface1: Value of {value_label} set to {value}') if value_label in self._sample_link.keys(): value_label = self._sample_link[value_label] - setattr(self.calculator, 'cif_str', value) + # if value_label in self._crystal_link and self.calculator.cif_str: + # self.calculator.updateCrystal(**{value_label: value}) + # else: + # self.calculator.cif_str = value + self.calculator.cif_str = value def get_instrument_value(self, value_label: str) -> float: """ diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 6b07ed86..8b292669 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -129,7 +129,10 @@ def inner(value): # !!! THIS IS NOT THE WAY TO DO IT !!! # !!! FOR TESTING ONLY !!!! if obj.current_interface_name == 'CrysPy': - obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) + try: + obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) + except: + obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) else: holder.phases.cif.to_file(holder.filename, holder.output_index) # obj().set_value(key, value) From e5b82b76a0336c3b76256e13b30accee1e75431e Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 7 Jun 2021 17:32:02 +0200 Subject: [PATCH 138/312] Merge the interfacing work of Sprint13 (#8) * Update reflection list generation * Some changes related to new interface * self.conditions to job_info * More changes related to new CFML interface * Adjust resolution parameters * Use new_cfml branch of libs * Bump Cryspy from ^0.4 to ^0.5 * Use develop branch of libsWin32/libsLinux/libsDarwin * Temporarily fix for bravis_type in cryspy * Use new CrysFML with Bragg peaks * First work on new interface This is a test implementation where only experimental parameters are properly bound in the cryspy engine. ``` from easyDiffractionLib.interface import InterfaceFactory from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D p = Pars1D.default() i = InterfaceFactory() p.interface = i p.generate_bindings() p.resolution_u = 0.2 ``` * More interfacing Continuing the cryspy interface with more details * More interfacing work * More interfacing work * Atom linking via ID * Hack to interface * Update fileless cryspy * File based CFML interface * File based GSAS2 interface * Fix BG issues with file based calculators * Fix a mistake (removal of phases) * Fix linking error (cryspy resolution and setup) * Reduce BG and HKL (CrysFML) computation time * Add matplotlib for cryspy * Fix for cryspy spacegroups (kinda) and GSAS peak HKL indexes * Modify MonkeyPatching of Phases The monkey patch of `Phases` to support the appending of interfaces was referencing the wrong append fn, hence the proper interfacing was not established. Modification of the sample, now when you do `obj.phases = phase` the phase is appended and `obj.phases = new_phases` overwrites the `obj.phases` field. sw * Fix Point BG evaluation when zero points Co-authored-by: Andrew Sazonov --- easyDiffractionLib/Calculators/CFML.py | 134 ++++-- easyDiffractionLib/Calculators/GSASII.py | 84 ++-- easyDiffractionLib/Calculators/cryspy.py | 249 ++++++++--- .../Elements/Backgrounds/Point.py | 35 +- easyDiffractionLib/Interfaces/CFML.py | 231 +++++----- easyDiffractionLib/Interfaces/GSASII.py | 259 ++++++----- easyDiffractionLib/Interfaces/__init__.py | 16 +- easyDiffractionLib/Interfaces/cryspy.py | 237 +++++----- .../Interfaces/interfaceTemplate.py | 45 +- easyDiffractionLib/__init__.py | 44 +- easyDiffractionLib/interface.py | 404 +++++++++--------- easyDiffractionLib/sample.py | 38 +- pyproject.toml | 16 +- 13 files changed, 992 insertions(+), 800 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 9f4abd30..a770ddc7 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -1,9 +1,10 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" -import os, pathlib, math +import os, pathlib import CFML_api +import timeit from easyCore import np, borg @@ -11,10 +12,7 @@ class CFML: def __init__(self, filename: str = None): self.filename = filename - self.conditions = CFML_api.PowderPatternSimulationConditions() - self.conditions.job = CFML_api.PowderPatternSimulationSource.Neutrons - self.conditions.lorentzian_size = 10000.0 - self.conditions.bkg = 0.0 + self.conditions = None self.background = None self.pattern = None self.hkl_dict = { @@ -23,6 +21,25 @@ def __init__(self, filename: str = None): 'k': np.empty(0), 'l': np.empty(0) } + + def createConditions(self, job_type='N'): + self.conditions = { + 'lamb': 1.54, + 'u_resolution': 0.01, + 'v_resolution': 0.0, + 'w_resolution': 0.0, + 'x_resolution': 0.0, + 'y_resolution': 0.0, + 'z_resolution': 0.0 + } + + def conditionsUpdate(self, _, **kwargs): + for key, value in kwargs.items(): + self.conditions[key]= value + + def conditionsReturn(self, _, name): + self.conditions.get(name) + def calculate(self, x_array: np.ndarray) -> np.ndarray: """ For a given x calculate the corresponding y @@ -34,7 +51,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if self.filename is None: raise AttributeError - #print("self.filename", self.filename) + print("\n\n\n") + start_time = timeit.default_timer() if self.pattern is None: scale = 1.0 @@ -43,6 +61,11 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: scale = self.pattern.scale.raw_value offset = self.pattern.zero_shift.raw_value + end_time = timeit.default_timer() + print("+ calculate A: {0:.4f} s".format(end_time - start_time)) + + start_time = timeit.default_timer() + this_x_array = x_array + offset # Sample parameters @@ -50,62 +73,107 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: cell = cif_file.cell space_group = cif_file.space_group atom_list = cif_file.atom_list + job_info = cif_file.job_info + + end_time = timeit.default_timer() + print("+ calculate B: {0:.4f} s".format(end_time - start_time)) + + start_time = timeit.default_timer() #cell.print_description() #space_group.print_description() #atom_list.print_description() - #print(self.conditions) + #job_info.print_description() - # Experiment/Instrumnet/Simulation parameters + # Experiment/Instrument/Simulation parameters x_min = this_x_array[0] x_max = this_x_array[-1] num_points = np.prod(x_array.shape) - self.conditions.theta_min = x_min - self.conditions.theta_max = x_max - self.conditions.theta_step = (x_max - x_min) / (num_points - 1) - - #print("self.conditions", self.conditions) - #print("self.conditions.theta_min", self.conditions.theta_min) - #print("self.conditions.theta_max", self.conditions.theta_max) - #print("self.conditions.theta_step", self.conditions.theta_step) - - sin_theta_over_lambda_max = math.sin(math.radians(0.5 * self.conditions.theta_max)) / self.conditions.lamb - sin_theta_over_lambda_max = max(1.0, sin_theta_over_lambda_max) - #print(f"Manually sin_theta_over_lambda_max: {sin_theta_over_lambda_max} for lambda: {self.conditions.lamb}") - #sin_theta_over_lambda_max = self.conditions.getSinThetaOverLambdaMax() - #print(f"CFML self.conditions.getSinThetaOverLambdaMax(): {sin_theta_over_lambda_max} for lambda: {self.conditions.lamb}") + x_step = (x_max - x_min) / (num_points - 1) + job_info.range_2theta = (x_min, x_max) + job_info.theta_step = x_step + job_info.u_resolution = self.conditions['u_resolution'] + job_info.v_resolution = self.conditions['v_resolution'] + job_info.w_resolution = self.conditions['w_resolution'] + job_info.x_resolution = self.conditions['x_resolution'] + job_info.y_resolution = self.conditions['y_resolution'] + job_info.lambdas = (self.conditions['lamb'], self.conditions['lamb']) + job_info.bkg = 0.0 + + end_time = timeit.default_timer() + print("+ calculate C: {0:.4f} s".format(end_time - start_time)) # Calculations try: - reflection_list = CFML_api.ReflectionList(cell, space_group, True, 0, sin_theta_over_lambda_max) - reflection_list.compute_structure_factors(space_group, atom_list) - diffraction_pattern = CFML_api.DiffractionPattern(self.conditions, reflection_list, cell.reciprocal_cell_vol) + start_time = timeit.default_timer() + reflection_list = CFML_api.ReflectionList(cell, + space_group, + True, + job_info) + end_time = timeit.default_timer() + print("+ reflection_list = CFML_api.ReflectionList: {0:.4f} s".format(end_time - start_time)) + + start_time = timeit.default_timer() + reflection_list.compute_structure_factors(space_group, + atom_list, + job_info) + end_time = timeit.default_timer() + print("+ reflection_list.compute_structure_factors: {0:.4f} s".format(end_time - start_time)) + + start_time = timeit.default_timer() + + hkltth = np.array([[*reflection_list[i].hkl, reflection_list[i].stl] for i in range(reflection_list.nrefs)]) + + self.hkl_dict['ttheta'] = np.rad2deg(np.arcsin(hkltth[:, 3] * job_info.lambdas[0])) * 2 + self.hkl_dict['h'] = hkltth[:, 0] + self.hkl_dict['k'] = hkltth[:, 1] + self.hkl_dict['l'] = hkltth[:, 2] + + end_time = timeit.default_timer() + print("+ set reflection_list: {0:.4f} s".format(end_time - start_time)) + + start_time = timeit.default_timer() + diffraction_pattern = CFML_api.DiffractionPattern(job_info, + reflection_list, + cell.reciprocal_cell_vol) + end_time = timeit.default_timer() + print("+ diffraction_pattern = CFML_api.DiffractionPattern: {0:.4f} s".format(end_time - start_time)) + except: raise ArithmeticError finally: + + start_time = timeit.default_timer() + # Clean up for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): if os.path.basename(p) != "easydiffraction_temp.cif": p.unlink() - self.hkl_dict = { - 'ttheta': np.array([]), - 'h': np.array([]), - 'k': np.array([]), - 'l': np.array([]) - } + end_time = timeit.default_timer() + print("+ calculate D: {0:.4f} s".format(end_time - start_time)) + + start_time = timeit.default_timer() - if self.background is None: + if len(self.pattern.backgrounds) == 0: bg = np.zeros_like(this_x_array) else: - bg = self.background.calculate(this_x_array) + bg = self.pattern.backgrounds[0].calculate(this_x_array) res = scale * diffraction_pattern.ycalc + bg + end_time = timeit.default_timer() + print("+ calculate E: {0:.4f} s".format(end_time - start_time)) + + start_time = timeit.default_timer() + np.set_printoptions(precision=3) if borg.debug: print(f"y_calc: {res}") + end_time = timeit.default_timer() + print("+ calculate F: {0:.4f} s".format(end_time - start_time)) + return res def get_hkl(self, tth: np.array = None) -> dict: diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 574b1011..59a3a153 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -14,16 +14,7 @@ def __init__(self, filename: str = None): self.prm_file_name = 'easydiffraction_temp.prm' self.prm_file_path = "" self.prm_dir_path = "" - self.conditions = { - 'wavelength': 1.25, - 'resolution': { - 'u': 0.001, - 'v': 0.001, - 'w': 0.001, - 'x': 0.000, - 'y': 0.000 - } - } + self.conditions = None self.filename = filename self.background = None self.pattern = None @@ -34,6 +25,24 @@ def __init__(self, filename: str = None): 'l': np.empty(0) } + def createConditions(self, job_type=None): + self.conditions = { + 'wavelength' : 1.54, + 'u_resolution': 0.01, + 'v_resolution': 0.0, + 'w_resolution': 0.0, + 'x_resolution': 0.0, + 'y_resolution': 0.0, + 'z_resolution': 0.0 + } + + def conditionsUpdate(self, _, **kwargs): + for key, value in kwargs.items(): + self.conditions[key]= value + + def conditionsReturn(self, _, name): + self.conditions.get(name) + def create_temp_prm(self): if self.filename is None: return @@ -63,7 +72,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: scale = 1.0 offset = 0 else: - scale = self.pattern.scale.raw_value + scale = self.pattern.scale.raw_value / 1000.0 offset = self.pattern.zero_shift.raw_value this_x_array = x_array + offset @@ -73,25 +82,33 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: # step 1, setup: add a phase to the project cif_file = self.filename phase_name = 'Phase' - gpx.add_phase(cif_file, phasename=phase_name, fmthint='CIF') + phase_index = 0 + phase0 = gpx.add_phase(cif_file, + phasename=phase_name, + fmthint='CIF') # step 2, setup: add a simulated histogram and link it to the previous phase(s) x_min = this_x_array[0] x_max = this_x_array[-1] n_points = np.prod(x_array.shape) - x_step = (x_max-x_min)/(n_points - 1) - gpx.add_simulated_powder_histogram(f"{phase_name} simulation", - self.prm_file_path, - x_min, x_max, Tstep=x_step, - phases=gpx.phases()) - - # Set instrumental parameters - resolution_multiplier = 1000 - u = self.conditions["resolution"]["u"] * resolution_multiplier - v = self.conditions["resolution"]["v"] * resolution_multiplier - w = self.conditions["resolution"]["w"] * resolution_multiplier - x = self.conditions["resolution"]["x"] * resolution_multiplier - y = self.conditions["resolution"]["y"] * resolution_multiplier + x_step = (x_max - x_min)/(n_points - 1) + histogram0 = gpx.add_simulated_powder_histogram(f"{phase_name} simulation", + self.prm_file_path, + x_min, x_max, Tstep=x_step, + phases=gpx.phases()) + + # Set parameters + val1 = 10000.0 #1000000.0 + val2 = None + LGmix = 0.0 # 1.0 -> 0.0: NO VISIBLE INFLUENCE... + phase0.setSampleProfile(phase_index, 'size', 'isotropic', val1, val2=val2, LGmix=LGmix) + print("- size", phase0.data['Histograms'][f'PWDR {phase_name} simulation']['Size']) + + u = self.conditions["u_resolution"] * 1850 # ~ CrysPy/CrysFML + v = self.conditions["v_resolution"] * 1850 # ~ CrysPy/CrysFML + w = self.conditions["w_resolution"] * 1850 # ~ CrysPy/CrysFML + x = self.conditions["x_resolution"] * 16 # ~ CrysPy/CrysFML + y = self.conditions["y_resolution"] - 6 # y - 6 ~ 0 in CrysPy/CrysFML gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['U'] = [u,u,0] gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['V'] = [v,v,0] gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['W'] = [w,w,0] @@ -102,7 +119,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: gpx.data[f'PWDR {phase_name} simulation']['Instrument Parameters'][0]['Lam'] = [wl,wl,0] # Step 3: Set the scale factor to adjust the y scale - #hist1.SampleParameters['Scale'][0] = 1000000. + #histogram0.SampleParameters['Scale'][0] = 1000000. # step 4, compute: turn off parameter optimization and calculate pattern gpx.data['Controls']['data']['max cyc'] = 0 # refinement not needed @@ -119,17 +136,18 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if os.path.basename(p) != "easydiffraction_temp.cif": p.unlink() + self.hkl_dict = { - 'ttheta': np.array([]), - 'h': np.array([]), - 'k': np.array([]), - 'l': np.array([]) + 'ttheta': gpx.data[f'PWDR {phase_name} simulation']['Reflection Lists'][phase_name]['RefList'][:, 5], + 'h': gpx.data[f'PWDR {phase_name} simulation']['Reflection Lists'][phase_name]['RefList'][:, 0], + 'k': gpx.data[f'PWDR {phase_name} simulation']['Reflection Lists'][phase_name]['RefList'][:, 1], + 'l': gpx.data[f'PWDR {phase_name} simulation']['Reflection Lists'][phase_name]['RefList'][:, 2] } - if self.background is None: + if len(self.pattern.backgrounds) == 0: bg = np.zeros_like(this_x_array) else: - bg = self.background.calculate(this_x_array) + bg = self.pattern.backgrounds[0].calculate(this_x_array) res = scale * ycalc + bg @@ -143,4 +161,4 @@ def get_hkl(self, tth: np.array = None) -> dict: hkl_dict = self.hkl_dict if tth is not None: pass - return hkl_dict + return hkl_dict \ No newline at end of file diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 5d316e37..5446402c 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -1,19 +1,16 @@ __author__ = "github.com/wardsimon" -__version__ = "0.0.1" +__version__ = "0.0.2" -from easyCore import np -from easyCore import borg -import cryspy +import cryspy import warnings - +from easyCore import np, borg warnings.filterwarnings('ignore') class Cryspy: - def __init__(self): - self._cif_str = "" + self.pattern = None self.conditions = { 'wavelength': 1.25, 'resolution': { @@ -26,7 +23,6 @@ def __init__(self): } self.background = None - self.pattern = None self.hkl_dict = { 'ttheta': np.empty(0), 'h': np.empty(0), @@ -34,33 +30,162 @@ def __init__(self): 'l': np.empty(0) } self.storage = {} + self.current_crystal = {} + self.model = None @property def cif_str(self): - return self._cif_str + key = list(self.current_crystal.keys())[0] + return self.storage[key].to_cif() @cif_str.setter def cif_str(self, value): - self._cif_str = value - self.createPhase() - - def createPhase(self): - crystal = cryspy.Crystal.from_cif(self.cif_str) - self.storage['crystal'] = crystal - phase = cryspy.Phase(label=crystal.data_name, scale=1, igsize=0) - # label = crystal.data_name + '_phase' - self.storage['phase'] = phase - return 'phase' - - def updateCrystal(self, name='crystal', **kwargs): - c = self.storage[name] - for key in kwargs.keys(): - setattr(c, key, kwargs[key]) - - def createSetup(self): + self.createCrystal_fromCifStr(value) + + def createModel(self, model_id, model_type=None): + self.model = cryspy.Pd(background=cryspy.PdBackgroundL(), phase=cryspy.PhaseL()) + + def createPhase(self, crystal_name, key='phase'): + phase = cryspy.Phase(label=crystal_name, scale=1, igsize=0) + self.storage[key] = phase + return key + + def assignPhase(self, model_name, phase_name): + phase = self.storage[phase_name] + self.model.phase.items.append(phase) + + def removePhase(self, model_name, phase_name): + phase = self.storage[phase_name] + idx = self.model.phase.items.index(phase) + self.model.phase.items.pop(idx) + + def createCrystal_fromCifStr(self, cif_str: str): + crystal = cryspy.Crystal.from_cif(cif_str) + key = crystal.data_name + self.storage[key] = crystal + self.current_crystal[key] = key + self.createPhase(key) + return key + + def createEmptyCrystal(self, crystal_name, key=None): + crystal = cryspy.Crystal(crystal_name, atom_site=cryspy.AtomSiteL()) + if key is None: + key = crystal_name + self.storage[key] = crystal + self.createPhase(crystal_name, key=str(key) + '_phase') + self.current_crystal[key] = crystal_name + return key + + def createCell(self, key='cell'): + cell = cryspy.Cell() + self.storage[key] = cell + return key + + def assignCell_toCrystal(self, cell_name, crystal_name): + crystal = self.storage[crystal_name] + cell = self.storage[cell_name] + crystal.cell = cell + + def createSpaceGroup(self, key='spacegroup', name_hm_alt='P 1'): + sg_split = name_hm_alt.split(':') + opts = {'name_hm_alt': sg_split[0]} + # if len(sg_split) > 1: + # opts['it_coordinate_system_code'] = sg_split[1] + # try: + # sg = cryspy.SpaceGroup(**opts) + # except Exception as e: + sg = cryspy.SpaceGroup(**opts) + # print(e) + self.storage[key] = sg + return key + + def getSpaceGroupSymbol(self, spacegroup_name: str, *args, **kwargs): + sg = self.storage[spacegroup_name] + hm_alt = getattr(sg, 'name_hm_alt') + setting = getattr(sg, 'it_coordinate_system_code') + if setting: + hm_alt += ':' + setting + return hm_alt + + def assignSpaceGroup_toCrystal(self, spacegroup_name, crystal_name): + if not crystal_name: + return + crystal = self.storage[crystal_name] + space_group: cryspy.SpaceGroup = self.storage[spacegroup_name] + setattr(crystal, 'space_group', space_group) + for atom in crystal.atom_site.items: + atom.define_space_group_wyckoff(space_group.space_group_wyckoff) + atom.form_object() + + def updateSpacegroup(self, sg_key, **kwargs): + # This has to be done as sg.name_hm_alt = 'blah' doesn't work :-( + sg_key = self.createSpaceGroup(key=sg_key, **kwargs) + key = list(self.current_crystal.keys()) + if len(key) > 0: + key = key[0] + else: + key = '' + self.assignSpaceGroup_toCrystal(sg_key, key) + + def createAtom(self, atom_name, **kwargs): + atom = cryspy.AtomSite(**kwargs) + self.storage[atom_name] = atom + return atom_name + + def assignAtom_toCrystal(self, atom_label, crystal_name): + crystal = self.storage[crystal_name] + atom = self.storage[atom_label] + wyckoff = crystal.space_group.space_group_wyckoff + atom.define_space_group_wyckoff(wyckoff) + atom.form_object() + for item in crystal.items: + if not isinstance(item, cryspy.AtomSiteL): + continue + item.items.append(atom) + + def removeAtom_fromCrystal(self, atom_label, crystal_name): + crystal = self.storage[crystal_name] + atom = self.storage[atom_label] + for item in crystal.items: + if not isinstance(item, cryspy.AtomSiteL): + continue + idx = item.items.index(atom) + del item.items[idx] + + def createBackground(self, background_obj): + key = 'background' + self.storage[key] = background_obj + return key + + def createSetup(self, key='setup'): setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) - self.storage['setup'] = setup - return 'setup' + self.storage[key] = setup + if self.model is not None: + setattr(self.model, 'setup', setup) + return key + + def genericUpdate(self, item_key, **kwargs): + item = self.storage[item_key] + for key, value in kwargs.items(): + setattr(item, key, kwargs[key]) + + def genericReturn(self, item_key, value_key): + item = self.storage[item_key] + value = getattr(item, value_key) + return value + + def createResolution(self): + key = 'pd_instr_resolution' + resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) + self.storage[key] = resolution + if self.model is not None: + setattr(self.model, 'pd_instr_resolution', resolution) + return key + + def updateResolution(self, key, **kwargs): + resolution = self.storage[key] + for r_key in kwargs.keys(): + setattr(resolution, r_key, kwargs[key]) def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -70,56 +195,43 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: :return: points calculated at `x` :rtype: np.ndarray """ - if not self.cif_str: - raise AttributeError + + for key_inner in ['pd_instr_resolution', 'setup']: + if not hasattr(self.model, key_inner): + setattr(self.model, key_inner, self.storage[key_inner]) if self.pattern is None: scale = 1.0 offset = 0 else: - scale = self.pattern.scale.raw_value + scale = self.pattern.scale.raw_value / 500.0 offset = self.pattern.zero_shift.raw_value this_x_array = x_array + offset if borg.debug: print('CALLING FROM Cryspy\n----------------------') - print(self.conditions) - print(self.cif_str) - - # self.createPhase() - self.createSetup() - - phase_list = cryspy.PhaseL() - phase_list.items.append(self.storage['phase']) - background = cryspy.PdBackgroundL() - resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) - pd = cryspy.Pd(setup=self.storage['setup'], resolution=resolution, phase=phase_list, background=background) - crystal = self.storage['crystal'] + # USe the default for now + crystal = self.storage[list(self.current_crystal.keys())[-1]] - if self.background is None: + if len(self.pattern.backgrounds) == 0: bg = np.zeros_like(this_x_array) else: - bg = self.background.calculate(this_x_array) + bg = self.pattern.backgrounds[0].calculate(this_x_array) if crystal is None: return bg - profile = pd.calc_profile(this_x_array, [crystal], True, False) - + profile = self.model.calc_profile(this_x_array, [crystal], True, False) self.hkl_dict = { - 'ttheta': pd.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, - 'h': pd.d_internal_val['peak_'+crystal.data_name].numpy_index_h, - 'k': pd.d_internal_val['peak_'+crystal.data_name].numpy_index_k, - 'l': pd.d_internal_val['peak_'+crystal.data_name].numpy_index_l, + 'ttheta': self.model.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, + 'h': self.model.d_internal_val['peak_'+crystal.data_name].numpy_index_h, + 'k': self.model.d_internal_val['peak_'+crystal.data_name].numpy_index_k, + 'l': self.model.d_internal_val['peak_'+crystal.data_name].numpy_index_l, } - res = scale * np.array(profile.intensity_total) + bg - - np.set_printoptions(precision=3) if borg.debug: print(f"y_calc: {res}") - return res def get_hkl(self, tth: np.array = None) -> dict: @@ -127,21 +239,22 @@ def get_hkl(self, tth: np.array = None) -> dict: hkl_dict = self.hkl_dict if tth is not None: - crystal = cryspy.Crystal.from_cif(self.cif_str) - phase_list = cryspy.PhaseL() - phase = cryspy.Phase(label=crystal.data_name, scale=1, igsize=0) - phase_list.items.append(phase) - setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) - background = cryspy.PdBackgroundL() - resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) - pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) - _ = pd.calc_profile(tth, [crystal], True, False) + # crystal = cryspy.Crystal.from_cif(self.cif_str) + # phase_list = cryspy.PhaseL() + # phase = cryspy.Phase(label=crystal.data_name, scale=1, igsize=0) + # phase_list.items.append(phase) + # setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) + # background = cryspy.PdBackgroundL() + # resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) + # pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) + crystal = self.storage[list(self.current_crystal.keys())[-1]] + _ = self.model.calc_profile(tth, [crystal], True, False) hkl_dict = { - 'ttheta': pd.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, - 'h': pd.d_internal_val['peak_' + crystal.data_name].numpy_index_h, - 'k': pd.d_internal_val['peak_' + crystal.data_name].numpy_index_k, - 'l': pd.d_internal_val['peak_' + crystal.data_name].numpy_index_l, + 'ttheta': self.model.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, + 'h': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_h, + 'k': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_k, + 'l': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_l, } return hkl_dict \ No newline at end of file diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/Elements/Backgrounds/Point.py index 1b6f8dd6..05f177ed 100644 --- a/easyDiffractionLib/Elements/Backgrounds/Point.py +++ b/easyDiffractionLib/Elements/Backgrounds/Point.py @@ -112,26 +112,29 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: :rtype: np.ndarray """ - shape_x = x_array.shape - reduced_x = x_array.flat + # shape_x = x_array.shape + # reduced_x = x_array.flat - y = np.zeros_like(reduced_x) + # y = np.zeros_like(reduced_x) - low_x = x_array.flat[0] - 1e-10 + # low_x = x_array.flat[0] - 1e-10 x_points = self.x_sorted_points - low_y = 0 + if not len(x_points): + return np.zeros_like(x_array) + # low_y = 0 y_points = self.y_sorted_points - - for point, intensity in zip(x_points, y_points): - idx = (reduced_x > low_x) & (reduced_x <= point) - if np.any(idx): - y[idx] = np.interp(reduced_x[idx], [low_x, point], [low_y, intensity]) - low_x = point - low_y = intensity - - idx = reduced_x > low_x - y[idx] = low_y - return y.reshape(shape_x) + return np.interp(x_array, x_points, y_points) + # + # for point, intensity in zip(x_points, y_points): + # idx = (reduced_x > low_x) & (reduced_x <= point) + # if np.any(idx): + # y[idx] = np.interp(reduced_x[idx], [low_x, point], [low_y, intensity]) + # low_x = point + # low_y = intensity + # + # idx = reduced_x > low_x + # y[idx] = low_y + # return y.reshape(shape_x) def __repr__(self) -> str: """ diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index b2bf7a6e..fd78e8d3 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -1,22 +1,33 @@ __author__ = "github.com/wardsimon" -__version__ = "0.0.1" - -from typing import List - -import numpy as np +__version__ = "0.0.2" +from easyCore import borg, np from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate +from easyCore.Objects.Inferface import ItemContainer from easyDiffractionLib.Calculators.CFML import CFML as CFML_calc +from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D +from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D +from easyDiffractionLib.sample import Sample +from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases class CFML(InterfaceTemplate): """ - A simple example interface using CFML + A simple FILE interface using CrysFML """ _sample_link = { 'filename': 'filename'} + _crystal_link = { + "length_a": "length_a", + "length_b": "length_b", + "length_c": "length_c", + "angle_alpha": "angle_alpha", + "angle_beta": "angle_beta", + "angle_gamma": "angle_gamma", + } + _instrument_link = { 'resolution_u': 'u_resolution', 'resolution_v': 'v_resolution', @@ -26,6 +37,19 @@ class CFML(InterfaceTemplate): 'wavelength': 'lamb' } + _atom_link = { + 'label': 'label', + 'specie': 'specie', + 'fract_x': 'fract_x', + 'fract_y': 'fract_y', + 'fract_z': 'fract_z', + 'occupancy': 'occupancy', + 'adp_type': 'adp_type', + 'Uiso': 'Uiso', + 'Biso': 'Biso', + 'Uani': 'Uani', + 'Bani': 'Bani' + } _pattern_link = { 'scale': 'scale', 'x_offset': 'x_offset' @@ -35,125 +59,66 @@ class CFML(InterfaceTemplate): def __init__(self): self.calculator = CFML_calc() - self._namespace = {} - - def get_value(self, value_label: str) -> float: - """ - Method to get a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :return: associated value - :rtype: float - """ - if value_label in self._sample_link.keys(): - value_label = self._sample_link[value_label] - return getattr(self.calculator, value_label, None) - - def set_value(self, value_label: str, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - if self._borg.debug: - print(f'Interface1: Value of {value_label} set to {value}') - if value_label in self._sample_link.keys(): - value_label = self._sample_link[value_label] - setattr(self.calculator, value_label, value) - - def get_instrument_value(self, value_label: str) -> float: - """ - Method to get a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :return: associated value - :rtype: float - """ - if value_label in self._instrument_link.keys(): - value_label = self._instrument_link[value_label] - return getattr(self.calculator.conditions, value_label, None) - - def set_instrument_value(self, value_label: str, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - if self._borg.debug: - print(f'Interface1: Value of {value_label} set to {value}') - if value_label in self._instrument_link.keys(): - value_label = self._instrument_link[value_label] - setattr(self.calculator.conditions, value_label, value) - - def get_background_value(self, background, value_label: int) -> float: - """ - Method to get a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :return: associated value - :rtype: float - """ - self.calculator.background = background - # if value_label <= len(self.calculator.background): - # return self.calculator.background[value_label] - # else: - # raise IndexError - - def set_background_value(self, background, value_label: int, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - self.calculator.background = background - # if value_label <= len(self.calculator.background): - # self.calculator.background[value_label].set(value) - # else: - # raise IndexError - - def set_pattern_value(self, pattern, value_label: int, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - self.calculator.pattern = pattern - - def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): - """ - Perform an update of multiple values at once to save time on expensive updates - - :param value_label_list: list of parameters to set - :type value_label_list: List[str] - :param value_list: list of new numeric values - :type value_list: List[float] - :param external: should we lookup a name conversion to internal labeling? - :type external: bool - :return: None - :rtype: noneType - """ - for label, value in zip(value_label_list, value_list): - # This is a simple case so we will serially update - if label in self._sample_link: - self.set_value(label, value) - elif label in self._instrument_link: - self.set_instrument_value(label, value) + self._phase = None + self._filename = None + + def create(self, model): + r_list = [] + t_ = type(model) + model_key = self.__identify(model) + if issubclass(t_, Pars1D): + # These parameters are linked to the Resolution and Setup CFML objects. Note that we can set the job type! + self.calculator.createConditions(job_type='N') + keys = self._instrument_link.copy() + r_list.append( + ItemContainer(model_key, keys, + self.calculator.conditionsReturn, + self.calculator.conditionsUpdate) + ) + elif issubclass(t_, Pattern1D): + # These parameters do not link directly to CFML objects. + self.calculator.pattern = model + elif issubclass(t_, Lattice): + keys = self._crystal_link.copy() + r_list.append( + ItemContainer(model_key, keys, + self.get_value, + self.dump_cif) + ) + elif issubclass(t_, SpaceGroup): + keys = {'_space_group_HM_name': '_space_group_HM_name'} + r_list.append( + ItemContainer(model_key, keys, + self.get_value, + self.dump_cif) + ) + elif issubclass(t_, Site): + keys = self._atom_link.copy() + r_list.append(ItemContainer(model_key, keys, + self.get_value, + self.dump_cif)) + elif issubclass(t_, Phases): + self._phase = model + elif issubclass(t_, Sample): + self._filename = model.filename + self.calculator.filename = model.filename + self.dump_cif() + else: + if self._borg.debug: + print(f"I'm a: {type(model)}") + return r_list + + def link_atom(self, crystal_obj, atom): + pass + + def remove_atom(self, crystal_obj, atom): + pass + + def add_phase(self, phases_obj, phase_obj): + pass + + def remove_phase(self, phases_obj, phase_obj): + pass def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ @@ -166,4 +131,18 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: return self.calculator.calculate(x_array) def get_hkl(self, x_array: np.ndarray = None) -> dict: - return self.calculator.get_hkl(x_array) \ No newline at end of file + return self.calculator.get_hkl(x_array) + + def dump_cif(self, *args, **kwargs): + if self._filename is None: + return + with open(self._filename, 'w') as fid: + fid.write(str(self._phase.cif)) + + def get_value(self, key, item_key): + item = borg.map.get_item_by_key(key) + return getattr(item, item_key).raw_value + + @staticmethod + def __identify(obj): + return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index b412eee7..610dedec 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -1,159 +1,124 @@ __author__ = "github.com/wardsimon" -__version__ = "0.0.1" +__version__ = "0.0.2" -from typing import List - -import numpy as np - -from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate -from easyDiffractionLib.Calculators.GSASII import GSASII as GSASII_calc +from easyCore import borg, np +from ..Interfaces.interfaceTemplate import InterfaceTemplate +from easyCore.Objects.Inferface import ItemContainer +from ..Calculators.GSASII import GSASII as GSAS_calc +from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D +from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D +from easyDiffractionLib.sample import Sample +from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases class GSASII(InterfaceTemplate): """ - A simple example interface using GSASII + A simple FILE interface using GSASII """ _sample_link = { 'filename': 'filename'} + _crystal_link = { + "length_a": "length_a", + "length_b": "length_b", + "length_c": "length_c", + "angle_alpha": "angle_alpha", + "angle_beta": "angle_beta", + "angle_gamma": "angle_gamma", + } + _instrument_link = { - 'resolution_u': 'u', - 'resolution_v': 'v', - 'resolution_w': 'w', - 'resolution_x': 'x', - 'resolution_y': 'y', + 'resolution_u': 'u_resolution', + 'resolution_v': 'v_resolution', + 'resolution_w': 'w_resolution', + 'resolution_x': 'x_resolution', + 'resolution_y': 'y_resolution', 'wavelength': 'wavelength' } - name = 'GSAS-II' - - def __init__(self): - self.calculator = GSASII_calc() - self._namespace = {} - - def get_value(self, value_label: str) -> float: - """ - Method to get a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :return: associated value - :rtype: float - """ - if value_label in self._sample_link.keys(): - value_label = self._sample_link[value_label] - return getattr(self.calculator, value_label, None) - - def set_value(self, value_label: str, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - if self._borg.debug: - print(f'Interface1: Value of {value_label} set to {value}') - if value_label in self._sample_link.keys(): - value_label = self._sample_link[value_label] - setattr(self.calculator, value_label, value) - - def get_background_value(self, background, value_label: int) -> float: - """ - Method to get a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :return: associated value - :rtype: float - """ - self.calculator.background = background - # if value_label <= len(self.calculator.background): - # return self.calculator.background[value_label] - # else: - # raise IndexError - - def set_pattern_value(self, pattern, value_label: int, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - self.calculator.pattern = pattern + _atom_link = { + 'label': 'label', + 'specie': 'specie', + 'fract_x': 'fract_x', + 'fract_y': 'fract_y', + 'fract_z': 'fract_z', + 'occupancy': 'occupancy', + 'adp_type': 'adp_type', + 'Uiso': 'Uiso', + 'Biso': 'Biso', + 'Uani': 'Uani', + 'Bani': 'Bani' + } + _pattern_link = { + 'scale': 'scale', + 'x_offset': 'x_offset' + } - def set_background_value(self, background, value_label: int, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - self.calculator.background = background - # if value_label <= len(self.calculator.background): - # self.calculator.background[value_label].set(value) - # else: - # raise IndexError + name = 'GSASII' - def get_instrument_value(self, value_label: str) -> float: - """ - Method to get a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :return: associated value - :rtype: float - """ - if value_label in self._instrument_link.keys(): - value_label = self._instrument_link[value_label] - if value_label == 'wavelength': - return self.calculator.conditions.get(value_label, None) - return self.calculator.conditions['resolution'].get(value_label, None) - - def set_instrument_value(self, value_label: str, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - if self._borg.debug: - print(f'Interface1: Value of {value_label} set to {value}') - if value_label in self._instrument_link.keys(): - value_label = self._instrument_link[value_label] - if value_label == 'wavelength': - self.calculator.conditions[value_label] = value - return - self.calculator.conditions['resolution'][value_label] = value - - def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): - """ - Perform an update of multiple values at once to save time on expensive updates - - :param value_label_list: list of parameters to set - :type value_label_list: List[str] - :param value_list: list of new numeric values - :type value_list: List[float] - :param external: should we lookup a name conversion to internal labeling? - :type external: bool - :return: None - :rtype: noneType - """ - for label, value in zip(value_label_list, value_list): - # This is a simple case so we will serially update - if label in self._sample_link: - self.set_value(label, value) - elif label in self._instrument_link: - self.set_instrument_value(label, value) + def __init__(self): + self.calculator = GSAS_calc() + self._phase = None + self._filename = None + + def create(self, model): + r_list = [] + t_ = type(model) + model_key = self.__identify(model) + if issubclass(t_, Pars1D): + # These parameters are linked to the Resolution and Setup CFML objects. Note that we can set the job type! + self.calculator.createConditions(job_type='N') + keys = self._instrument_link.copy() + r_list.append( + ItemContainer(model_key, keys, + self.calculator.conditionsReturn, + self.calculator.conditionsUpdate) + ) + elif issubclass(t_, Pattern1D): + # These parameters do not link directly to CFML objects. + self.calculator.pattern = model + elif issubclass(t_, Lattice): + keys = self._crystal_link.copy() + r_list.append( + ItemContainer(model_key, keys, + self.get_value, + self.dump_cif) + ) + elif issubclass(t_, SpaceGroup): + keys = {'_space_group_HM_name': '_space_group_HM_name'} + r_list.append( + ItemContainer(model_key, keys, + self.get_value, + self.dump_cif) + ) + elif issubclass(t_, Site): + keys = self._atom_link.copy() + r_list.append(ItemContainer(model_key, keys, + self.get_value, + self.dump_cif)) + elif issubclass(t_, Phases): + self._phase = model + elif issubclass(t_, Sample): + self._filename = model.filename + self.calculator.filename = model.filename + self.dump_cif() + else: + if self._borg.debug: + print(f"I'm a: {type(model)}") + return r_list + + def link_atom(self, crystal_obj, atom): + pass + + def remove_atom(self, crystal_obj, atom): + pass + + def add_phase(self, phases_obj, phase_obj): + pass + + def remove_phase(self, phases_obj, phase_obj): + pass def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ @@ -166,4 +131,18 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: return self.calculator.calculate(x_array) def get_hkl(self, x_array: np.ndarray = None) -> dict: - return self.calculator.get_hkl(x_array) \ No newline at end of file + return self.calculator.get_hkl(x_array) + + def dump_cif(self, *args, **kwargs): + if self._filename is None: + return + with open(self._filename, 'w') as fid: + fid.write(str(self._phase.cif)) + + def get_value(self, key, item_key): + item = borg.map.get_item_by_key(key) + return getattr(item, item_key).raw_value + + @staticmethod + def __identify(obj): + return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index b700168a..88400b7c 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -13,16 +13,16 @@ print('Warning: CrysPy is not installed') try: - from easyDiffractionLib.Interfaces.CFML import CFML -except Exception: - traceback.print_exc() - print('Warning: CFML is not installed') - + from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 +except ImportError: + # TODO make this a proper message (use logging?) + print('Warning: CrysFML is not installed') + try: from easyDiffractionLib.Interfaces.GSASII import GSASII # noqa: F401 -except Exception: - traceback.print_exc() - print('Warning: GSAS-II is not installed') +except ImportError: + # TODO make this a proper message (use logging?) + print('Warning: GSAS-2 is not installed') from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 1d750dc0..7881c81e 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -1,17 +1,18 @@ __author__ = "github.com/wardsimon" -__version__ = "0.0.1" - -from typing import List - -import numpy as np +__version__ = "0.0.2" +from easyCore import borg, np from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate +from easyCore.Objects.Inferface import ItemContainer from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc +from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D +from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D +from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases class Cryspy(InterfaceTemplate): """ - A simple example interface using CFML + A simple example interface using Cryspy """ _sample_link = { @@ -26,6 +27,19 @@ class Cryspy(InterfaceTemplate): "angle_gamma": "angle_gamma", } + _atom_link = { + 'label': 'label', + 'specie': 'type_symbol', + 'fract_x': 'fract_x', + 'fract_y': 'fract_y', + 'fract_z': 'fract_z', + 'occupancy': 'occupancy', + 'adp_type': 'adp_type', + 'Uiso': 'u_iso_or_equiv', + 'Biso': 'b_iso_or_equiv', + 'Uani': 'u_iso_or_equiv', + 'Bani': 'b_iso_or_equiv' + } _instrument_link = { 'resolution_u': 'u', 'resolution_v': 'v', @@ -39,136 +53,85 @@ class Cryspy(InterfaceTemplate): def __init__(self): self.calculator = Cryspy_calc() - self._namespace = {} - def get_value(self, value_label: str) -> float: - """ - Method to get a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :return: associated value - :rtype: float - """ - if value_label in self._sample_link.keys(): - value_label = self._sample_link[value_label] - return getattr(self.calculator, value_label, None) - - def set_value(self, value_label: str, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - if value_label == 'filename': - return - if self._borg.debug: - print(f'Interface1: Value of {value_label} set to {value}') - if value_label in self._sample_link.keys(): - value_label = self._sample_link[value_label] - # if value_label in self._crystal_link and self.calculator.cif_str: - # self.calculator.updateCrystal(**{value_label: value}) - # else: - # self.calculator.cif_str = value - self.calculator.cif_str = value - - def get_instrument_value(self, value_label: str) -> float: - """ - Method to get a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :return: associated value - :rtype: float - """ - if value_label in self._instrument_link.keys(): - value_label = self._instrument_link[value_label] - if value_label == 'wavelength': - return self.calculator.conditions.get(value_label, None) - return self.calculator.conditions['resolution'].get(value_label, None) - - def set_instrument_value(self, value_label: str, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - if self._borg.debug: - print(f'Interface1: Value of {value_label} set to {value}') - if value_label in self._instrument_link.keys(): - value_label = self._instrument_link[value_label] - if value_label == 'wavelength': - self.calculator.conditions[value_label] = value - return - self.calculator.conditions['resolution'][value_label] = value - - def get_background_value(self, background, value_label: int) -> float: - """ - Method to get a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :return: associated value - :rtype: float - """ - self.calculator.background = background - # if value_label <= len(self.calculator.background): - # return self.calculator.background[value_label] - # else: - # raise IndexError - - def set_background_value(self, background, value_label: int, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - self.calculator.background = background - # if value_label <= len(self.calculator.background): - # self.calculator.background[value_label].set(value) - # else: - # raise IndexError - - def set_pattern_value(self, pattern, value_label: int, value: float): - """ - Method to set a value from the calculator - :param value_label: parameter name to get - :type value_label: str - :param value: new numeric value - :type value: float - :return: None - :rtype: noneType - """ - self.calculator.pattern = pattern - - def bulk_update(self, value_label_list: List[str], value_list: List[float], external: bool): - """ - Perform an update of multiple values at once to save time on expensive updates - - :param value_label_list: list of parameters to set - :type value_label_list: List[str] - :param value_list: list of new numeric values - :type value_list: List[float] - :param external: should we lookup a name conversion to internal labeling? - :type external: bool - :return: None - :rtype: noneType - """ - for label, value in zip(value_label_list, value_list): - # This is a simple case so we will serially update - if label in self._sample_link: - self.set_value(label, value) - elif label in self._instrument_link: - self.set_instrument_value(label, value) + def create(self, model): + r_list = [] + t_ = type(model) + model_key = self.__identify(model) + if issubclass(t_, Pars1D): + # These parameters are linked to the Resolution and Setup cryspy objects + res_key = self.calculator.createResolution() + setup_key = self.calculator.createSetup() + keys = self._instrument_link.copy() + keys.pop('wavelength') + r_list.append( + ItemContainer(res_key, keys, + self.calculator.genericReturn, + self.calculator.genericUpdate) + ) + r_list.append( + ItemContainer(setup_key, {'wavelength': self._instrument_link['wavelength']}, + self.calculator.genericReturn, + self.calculator.genericUpdate) + ) + elif issubclass(t_, Pattern1D): + # These parameters do not link directly to cryspy objects. + self.calculator.pattern = model + elif issubclass(t_, Lattice): + l_key = self.calculator.createCell(model_key) + keys = self._crystal_link.copy() + r_list.append( + ItemContainer(l_key, keys, + self.calculator.genericReturn, + self.calculator.genericUpdate) + ) + elif issubclass(t_, SpaceGroup): + s_key = self.calculator.createSpaceGroup(key=model_key, name_hm_alt='P 1') + keys = {'_space_group_HM_name': 'name_hm_alt'} + r_list.append( + ItemContainer(s_key, keys, + self.calculator.getSpaceGroupSymbol, + self.calculator.updateSpacegroup) + ) + elif issubclass(t_, Site): + a_key = self.calculator.createAtom(model_key) + keys = self._atom_link.copy() + r_list.append(ItemContainer(a_key, keys, + lambda x, y: self.calculator.genericReturn(a_key, y), + lambda x, **y: self.calculator.genericUpdate(a_key, **y))) + elif issubclass(t_, Phase): + ident = str(model_key) + '_phase' + self.calculator.createPhase(ident) + crystal_name = self.calculator.createEmptyCrystal(model.name, key=model_key) + self.calculator.assignCell_toCrystal(self.__identify(model.cell), model_key) + self.calculator.assignSpaceGroup_toCrystal(self.__identify(model._spacegroup), model_key) + for atom in model.atoms: + self.calculator.assignAtom_toCrystal(self.__identify(atom), model_key) + elif issubclass(t_, Phases): + self.calculator.createModel(model_key) + for phase in model: + ident = str(self.__identify(phase)) + '_phase' + self.calculator.assignPhase(model_key, ident) + else: + if self._borg.debug: + print(f"I'm a: {type(model)}") + return r_list + + def link_atom(self, crystal_obj, atom): + crystal_name = self.__identify(crystal_obj) + self.calculator.assignAtom_toCrystal(self.__identify(atom), crystal_name) + + def remove_atom(self, crystal_obj, atom): + crystal_name = self.__identify(crystal_obj) + self.calculator.removeAtom_fromCrystal(self.__identify(atom), crystal_name) + + def add_phase(self, phases_obj, phase_obj): + ident = str(self.__identify(phase_obj)) + '_phase' + self.calculator.assignPhase(self.__identify(phases_obj), ident) + + def remove_phase(self, phases_obj, phase_obj): + ident = str(self.__identify(phase_obj)) + '_phase' + self.calculator.removePhase(self.__identify(phases_obj), ident) def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ @@ -182,3 +145,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: def get_hkl(self, x_array: np.ndarray = None) -> dict: return self.calculator.get_hkl(x_array) + + @staticmethod + def __identify(obj): + return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/interfaceTemplate.py b/easyDiffractionLib/Interfaces/interfaceTemplate.py index bbfc0091..c91579b0 100644 --- a/easyDiffractionLib/Interfaces/interfaceTemplate.py +++ b/easyDiffractionLib/Interfaces/interfaceTemplate.py @@ -1,10 +1,9 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" -import numpy as np from abc import ABCMeta, abstractmethod - -from easyCore import borg +from typing import Tuple +from easyCore import np, borg from easyCore.Utils.json import MSONable @@ -31,6 +30,44 @@ def __init_subclass__(cls, is_abstract: bool = False, **kwargs): if not is_abstract: cls._interfaces.append(cls) + @abstractmethod + def create(self, model) -> Tuple[str, dict]: + """ + Method to create an object in the calculator workspace and return it's ID. + This ID will be used in the implicit get/set for properties. + + :param model: + :type model: + :return: + :rtype: + """ + + @abstractmethod + def link_atom(self, model_name: str, atom): + """ + This links an atom to a model + + :param model_name: Name of Phase + :type model_name: str + :param atom: Site object + :type atom: Atom + :return: + :rtype: + """ + + @abstractmethod + def remove_atom(self, model_name: str, atom: str): + """ + This links an atom to a model + + :param model_name: Name of Phase + :type model_name: str + :param atom: Site object + :type atom: Atom + :return: + :rtype: + """ + @abstractmethod def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ @@ -45,4 +82,4 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: @abstractmethod def get_hkl(self, x_array: np.ndarray = None) -> dict: - pass \ No newline at end of file + pass diff --git a/easyDiffractionLib/__init__.py b/easyDiffractionLib/__init__.py index 331abf7d..b22bddec 100644 --- a/easyDiffractionLib/__init__.py +++ b/easyDiffractionLib/__init__.py @@ -1,4 +1,46 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -from easyCore.Elements.HigherLevel.Phase import Phase, Phases, Atoms, Site, SpaceGroup, Lattice + +from easyCore.Elements.HigherLevel.Phase import Phases, Atoms, Site, SpaceGroup, Lattice, Phase + +""" +This is a horrendous monkey patch of the Phase and Phases class so that adding and removing communicates +with the interface. If you are shaking your head in disbelief, I'm sorry........ +""" + +_a_atom = getattr(Phase, "add_atom") +_rm_atom = getattr(Phase, "remove_atom") +_d_item = getattr(Phases, "__delitem__") +_a_item = getattr(Phases, "append") + +def _add_atom(self, *args, **kwargs): + _a_atom(self, *args, **kwargs) + if self.interface is not None: + self.interface().link_atom(self, self.atoms[-1]) + + +def _remove_atom(self, key): + item = self.atoms[key] + _rm_atom(self, key) + if self.interface is not None: + self.interface().remove_atom(self, item) + + +def _p_append(self, item: Phase): + _a_item(self, item) + if self.interface is not None: + self.interface().add_phase(self, item) + + +def _p__delitem__(self, key): + item = self[key] + if self.interface is not None: + self.interface().remove_phase(self, item) + return _d_item(self, key) + +setattr(Phase, "add_atom", _add_atom) +setattr(Phase, "remove_atom", _remove_atom) +setattr(Phases, "__delitem__", _p__delitem__) +setattr(Phases, "append", _p_append) + diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 8b292669..66cb0a56 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -11,208 +11,208 @@ class InterfaceFactory(InterfaceFactoryTemplate): def __init__(self): super(InterfaceFactory, self).__init__(InterfaceTemplate._interfaces) - def generate_sample_binding(self, name, *args) -> property: - """ - Automatically bind a `Parameter` to the corresponding interface. - :param name: parameter name - :type name: str - :return: binding property - :rtype: property - """ - fun = self.__set_item(self, 'filename') - fun(args[0].filename) - return property(fget=None, - fset=self.__set_sample_item(self, name, *args)) - - def generate_instrument_binding(self, name) -> property: - """ - Automatically bind a `Parameter` to the corresponding interface. - :param name: parameter name - :type name: str - :return: binding property - :rtype: property - """ - return property(fget=self.__get_instrument_item(self, name), - fset=self.__set_instrument_item(self, name)) - - def generate_background_binding(self, name, background) -> property: - """ - Automatically bind a `Parameter` to the corresponding interface. - :param name: parameter name - :type name: str - :return: binding property - :rtype: property - """ - return property(fget=None, - fset=self.__set_background_item(self, background, name)) - - def generate_pattern_binding(self, name, pattern) -> property: - """ - Automatically bind a `Parameter` to the corresponding interface. - :param name: parameter name - :type name: str - :return: binding property - :rtype: property - """ - return property(fget=None, - fset=self.__set_pattern_item(self, pattern, name)) - - def generate_binding(self, name, *args, **kwargs) -> property: - """ - Automatically bind a `Parameter` to the corresponding interface. - :param name: parameter name - :type name: str - :return: binding property - :rtype: property - """ - return property(self.__get_item(self, name), self.__set_item(self, name)) - - @staticmethod - def __get_item(obj, key: str, external: bool = True) -> Callable: - """ - Access the value of a key by a callable object - :param key: name of parameter to be retrieved - :type key: str - :return: function to get key - :rtype: Callable - """ - - def inner(): - return obj().get_value(key, external) - - return inner - - @staticmethod - def __set_item(obj, key) -> Callable: - """ - Set the value of a key by a callable object - :param obj: object to be created from - :type obj: InterfaceFactory - :param key: name of parameter to be set - :type key: str - :return: function to set key - :rtype: Callable - """ - - def inner(value): - obj().set_value(key, value) - return inner - - @staticmethod - def __get_sample_item(obj, key: str, holder) -> Callable: - """ - Access the value of a key by a callable object - :param key: name of parameter to be retrieved - :type key: str - :return: function to get key - :rtype: Callable - """ - - def inner(): - # return obj().get_value(key) - return None - return inner - - @staticmethod - def __set_sample_item(obj, key, holder) -> Callable: - """ - Set the value of a key by a callable object - :param obj: object to be created from - :type obj: InterfaceFactory - :param key: name of parameter to be set - :type key: str - :return: function to set key - :rtype: Callable - """ - - def inner(value): - # !!! THIS IS NOT THE WAY TO DO IT !!! - # !!! FOR TESTING ONLY !!!! - if obj.current_interface_name == 'CrysPy': - try: - obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) - except: - obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) - else: - holder.phases.cif.to_file(holder.filename, holder.output_index) - # obj().set_value(key, value) - return inner - - @staticmethod - def __get_instrument_item(obj, key: str) -> Callable: - """ - Access the value of a key by a callable object - :param key: name of parameter to be retrieved - :type key: str - :return: function to get key - :rtype: Callable - """ - - def inner(): - return obj().get_instrument_value(key) - return inner - - @staticmethod - def __set_instrument_item(obj, key) -> Callable: - """ - Set the value of a key by a callable object - :param obj: object to be created from - :type obj: InterfaceFactory - :param key: name of parameter to be set - :type key: str - :return: function to set key - :rtype: Callable - """ - - def inner(value): - obj().set_instrument_value(key, value) - return inner - - @staticmethod - def __get_background_item(obj, background, index: int) -> Callable: - """ - Access the value of a key by a callable object - :param key: name of parameter to be retrieved - :type key: str - :return: function to get key - :rtype: Callable - """ - - def inner(): - return obj().get_background_value(background, index) - return inner - - @staticmethod - def __set_background_item(obj, background, index) -> Callable: - """ - Set the value of a key by a callable object - :param obj: object to be created from - :type obj: InterfaceFactory - :param key: name of parameter to be set - :type key: str - :return: function to set key - :rtype: Callable - """ - - def inner(value): - obj().set_background_value(background, index, value) - return inner - - @staticmethod - def __set_pattern_item(obj, pattern, index) -> Callable: - """ - Set the value of a key by a callable object - :param obj: object to be created from - :type obj: InterfaceFactory - :param key: name of parameter to be set - :type key: str - :return: function to set key - :rtype: Callable - """ - - def inner(value): - obj().set_pattern_value(pattern, index, value) - return inner + # def generate_sample_binding(self, name, *args) -> property: + # """ + # Automatically bind a `Parameter` to the corresponding interface. + # :param name: parameter name + # :type name: str + # :return: binding property + # :rtype: property + # """ + # fun = self.__set_item(self, 'filename') + # fun(args[0].filename) + # return property(fget=None, + # fset=self.__set_sample_item(self, name, *args)) + # + # def generate_instrument_binding(self, name) -> property: + # """ + # Automatically bind a `Parameter` to the corresponding interface. + # :param name: parameter name + # :type name: str + # :return: binding property + # :rtype: property + # """ + # return property(fget=self.__get_instrument_item(self, name), + # fset=self.__set_instrument_item(self, name)) + # + # def generate_background_binding(self, name, background) -> property: + # """ + # Automatically bind a `Parameter` to the corresponding interface. + # :param name: parameter name + # :type name: str + # :return: binding property + # :rtype: property + # """ + # return property(fget=None, + # fset=self.__set_background_item(self, background, name)) + # + # def generate_pattern_binding(self, name, pattern) -> property: + # """ + # Automatically bind a `Parameter` to the corresponding interface. + # :param name: parameter name + # :type name: str + # :return: binding property + # :rtype: property + # """ + # return property(fget=None, + # fset=self.__set_pattern_item(self, pattern, name)) + # + # def generate_binding(self, name, *args, **kwargs) -> property: + # """ + # Automatically bind a `Parameter` to the corresponding interface. + # :param name: parameter name + # :type name: str + # :return: binding property + # :rtype: property + # """ + # return property(self.__get_item(self, name), self.__set_item(self, name)) + # + # @staticmethod + # def __get_item(obj, key: str, external: bool = True) -> Callable: + # """ + # Access the value of a key by a callable object + # :param key: name of parameter to be retrieved + # :type key: str + # :return: function to get key + # :rtype: Callable + # """ + # + # def inner(): + # return obj().get_value(key, external) + # + # return inner + # + # @staticmethod + # def __set_item(obj, key) -> Callable: + # """ + # Set the value of a key by a callable object + # :param obj: object to be created from + # :type obj: InterfaceFactory + # :param key: name of parameter to be set + # :type key: str + # :return: function to set key + # :rtype: Callable + # """ + # + # def inner(value): + # obj().set_value(key, value) + # return inner + # + # @staticmethod + # def __get_sample_item(obj, key: str, holder) -> Callable: + # """ + # Access the value of a key by a callable object + # :param key: name of parameter to be retrieved + # :type key: str + # :return: function to get key + # :rtype: Callable + # """ + # + # def inner(): + # # return obj().get_value(key) + # return None + # return inner + # + # @staticmethod + # def __set_sample_item(obj, key, holder) -> Callable: + # """ + # Set the value of a key by a callable object + # :param obj: object to be created from + # :type obj: InterfaceFactory + # :param key: name of parameter to be set + # :type key: str + # :return: function to set key + # :rtype: Callable + # """ + # + # def inner(value): + # # !!! THIS IS NOT THE WAY TO DO IT !!! + # # !!! FOR TESTING ONLY !!!! + # if obj.current_interface_name == 'CrysPy': + # try: + # obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) + # except: + # obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) + # else: + # holder.phases.cif.to_file(holder.filename, holder.output_index) + # # obj().set_value(key, value) + # return inner + # + # @staticmethod + # def __get_instrument_item(obj, key: str) -> Callable: + # """ + # Access the value of a key by a callable object + # :param key: name of parameter to be retrieved + # :type key: str + # :return: function to get key + # :rtype: Callable + # """ + # + # def inner(): + # return obj().get_instrument_value(key) + # return inner + # + # @staticmethod + # def __set_instrument_item(obj, key) -> Callable: + # """ + # Set the value of a key by a callable object + # :param obj: object to be created from + # :type obj: InterfaceFactory + # :param key: name of parameter to be set + # :type key: str + # :return: function to set key + # :rtype: Callable + # """ + # + # def inner(value): + # obj().set_instrument_value(key, value) + # return inner + # + # @staticmethod + # def __get_background_item(obj, background, index: int) -> Callable: + # """ + # Access the value of a key by a callable object + # :param key: name of parameter to be retrieved + # :type key: str + # :return: function to get key + # :rtype: Callable + # """ + # + # def inner(): + # return obj().get_background_value(background, index) + # return inner + # + # @staticmethod + # def __set_background_item(obj, background, index) -> Callable: + # """ + # Set the value of a key by a callable object + # :param obj: object to be created from + # :type obj: InterfaceFactory + # :param key: name of parameter to be set + # :type key: str + # :return: function to set key + # :rtype: Callable + # """ + # + # def inner(value): + # obj().set_background_value(background, index, value) + # return inner + # + # @staticmethod + # def __set_pattern_item(obj, pattern, index) -> Callable: + # """ + # Set the value of a key by a callable object + # :param obj: object to be created from + # :type obj: InterfaceFactory + # :param key: name of parameter to be set + # :type key: str + # :return: function to set key + # :rtype: Callable + # """ + # + # def inner(value): + # obj().set_pattern_value(pattern, index, value) + # return inner def get_hkl(self, x_array=None) -> dict: return self().get_hkl(x_array) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 9d58eb08..94503406 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -24,31 +24,18 @@ def __init__(self, phases: Union[Phase, Phases] = None, if not isinstance(phases, Phases): raise AttributeError('`phases` must be a Crystal or Crystals') + if parameters is None: + parameters = Pars1D.default() + if pattern is None: pattern = Pattern1D.default() super(Sample, self).__init__(name, _phases=phases, _parameters=parameters, _pattern=pattern) - self.interface = interface self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') print(f"Temp CIF: {self.filename}") self.output_index = None - self._updateInterface() - - def _updateInterface(self, interface_call: str = None): - if self.interface is not None: - if self._phases is not None and \ - (interface_call is None or interface_call == 'phases'): - self.interface.generate_bindings(self._phases, self, ifun=self.interface.generate_sample_binding) - if self._parameters is not None and \ - (interface_call is None or interface_call == 'pars'): - self.interface.generate_bindings(self._parameters, ifun=self.interface.generate_instrument_binding) - self.interface.generate_bindings(self._pattern, self._pattern, ifun=self.interface.generate_pattern_binding) - if len(self._pattern.backgrounds) > 0 and \ - self.interface is not None and \ - (interface_call is None or interface_call == 'background'): - # TODO: At the moment we're only going to support 1 BG as there are no experiments yet. - self.interface.generate_bindings(self._pattern.backgrounds, self._pattern.backgrounds[0], ifun=self.interface.generate_background_binding) + self.interface = interface def get_phase(self, phase_index): return self._phases[phase_index] @@ -58,12 +45,10 @@ def get_background(self, experiment_name: str): def set_background(self, background): self._pattern.backgrounds.append(background) - self._updateInterface(interface_call='background') def remove_background(self, background): if background.linked_experiment.raw_value in self._pattern.backgrounds.linked_experiments: del self._pattern.backgrounds[background.linked_experiment.raw_value] - self._updateInterface(interface_call='background') else: raise ValueError @@ -79,12 +64,13 @@ def phases(self): @property_stack_deco def phases(self, value): if isinstance(value, Phase): - value = Phases('Phases', value) - if not isinstance(value, Phases): + self._phases.append(value) + elif isinstance(value, Phases): + self._phases = value + self._borg.map.add_edge(self, value) + self._phases.interface = self.interface + else: raise ValueError - self._phases = value - self._borg.map.add_edge(self, value) - self._updateInterface(interface_call='phases') @property def parameters(self): @@ -96,10 +82,10 @@ def parameters(self, value): if not isinstance(value, Pars1D): raise ValueError self._parameters = value - self._updateInterface(interface_call='pars') + self._parameters.interface = self._interface def update_bindings(self): - self._updateInterface() + self.generate_bindings() @property def pattern(self): diff --git a/pyproject.toml b/pyproject.toml index b7961826..d87f370f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,13 +18,14 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.8" -cryspy = "^0.4.11" +#cryspy = "^0.5" +cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } +matplotlib = "^3.4" # easyScience -libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'main', platform = 'darwin' } -libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'main', platform = 'linux' } -libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'main', platform = 'win32' } -easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } - +libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'develop', platform = 'darwin' } +libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'develop', platform = 'linux' } +libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'develop', platform = 'win32' } +easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'InterfacingRedux' } [tool.poetry.dev-dependencies] pytest = "^5.2" @@ -41,11 +42,10 @@ easyDiffractionLib = "easyDiffractionLib.main:main" [ci.pyinstaller] libs = { macos = 'libsDarwin', ubuntu = 'libsLinux', windows = 'libsWin32' } - [tool.dephell.main] from = {format = "poetry", path = "pyproject.toml"} to = {format = "setuppy", path = "setup.py"} [tool.dephell.requirements] from = {format = "poetry", path = "pyproject.toml"} -to = {format = "pip", path = "requirements.txt"} \ No newline at end of file +to = {format = "pip", path = "requirements.txt"} From 903cd383f01ef2f52e1eb464b8acacb067e71b13 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 8 Jun 2021 13:53:18 +0200 Subject: [PATCH 139/312] Use 'develop' branch of easyCore --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index d87f370f..a00bfb08 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "poetry.masonry.api" [tool.poetry] name = "easyDiffractionLib" -version = "0.0.1" +version = "0.0.2" description = 'Making diffraction data analysis and modelling easy.' license = "GPL-3.0-only" authors = ["Andrew Sazonov", "Simon Ward"] @@ -25,7 +25,7 @@ matplotlib = "^3.4" libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'develop', platform = 'darwin' } libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'develop', platform = 'linux' } libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'develop', platform = 'win32' } -easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'InterfacingRedux' } +easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] pytest = "^5.2" From 2b12aec908519f5652820b69251925493e3a8e82 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 16 Jun 2021 14:02:47 +0200 Subject: [PATCH 140/312] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a00bfb08..2ff424b2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ matplotlib = "^3.4" libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'develop', platform = 'darwin' } libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'develop', platform = 'linux' } libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'develop', platform = 'win32' } -easyCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } +easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] pytest = "^5.2" From d2cd6aabf923a831794ebe0429fac8dedad111c6 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 23 Jul 2021 11:57:27 +0200 Subject: [PATCH 141/312] Update pyproject.toml --- pyproject.toml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2ff424b2..959917ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,15 +16,21 @@ documentation = "https://github.com/easyScience/easyDiffractionLib" include = ["CHANGELOG.md"] packages = [ { include = "easyDiffractionLib" } ] +[[tool.poetry.source]] +name = "easyScience" +url = "https://easyscience.github.io/pypi/" +secondary = true + [tool.poetry.dependencies] python = "^3.7, <3.8" #cryspy = "^0.5" cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } matplotlib = "^3.4" # easyScience -libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'develop', platform = 'darwin' } -libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'develop', platform = 'linux' } -libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'develop', platform = 'win32' } +# libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'develop', platform = 'darwin' } +# libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'develop', platform = 'linux' } +# libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'develop', platform = 'win32' } +CFML = '^0.0.1' easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] From 3300b0dc7e4d94e589d624cb2f81142d8098d83d Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 23 Jul 2021 11:58:42 +0200 Subject: [PATCH 142/312] Update __init__.py --- easyDiffractionLib/Calculators/__init__.py | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/easyDiffractionLib/Calculators/__init__.py b/easyDiffractionLib/Calculators/__init__.py index c4a4ad0a..db73d94a 100644 --- a/easyDiffractionLib/Calculators/__init__.py +++ b/easyDiffractionLib/Calculators/__init__.py @@ -1,21 +1,3 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -import os, sys - -if 'darwin' in sys.platform: - import libsDarwin - libs_path = list(libsDarwin.__path__)[0] -elif 'linux' in sys.platform: - import libsLinux - libs_path = list(libsLinux.__path__)[0] -elif 'win32' in sys.platform: - import libsWin32 - libs_path = list(libsWin32.__path__)[0] -else: - raise NotImplementedError(f"Platform '{sys.platform}' is not supported") - -gsasii_path = os.path.join(libs_path, "GSASII") - -sys.path.append(libs_path) -sys.path.append(gsasii_path) From 7b0fdc0c50c9f4072e7eb5dcca20c436bf198ef0 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 23 Jul 2021 12:02:21 +0200 Subject: [PATCH 143/312] Update test.yml --- .github/workflows/test.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index eca056da..66e204be 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,9 +31,9 @@ jobs: # with: # ssh-private-key: ${{ secrets.GH_WEBFACTORY_KEY }} - - name: Set up dependences - if: runner.os == 'Linux' - run: sudo apt-get install libgfortran4 +# - name: Set up dependences +# if: runner.os == 'Linux' +# run: sudo apt-get install libgfortran4 - name: Set up Python environment uses: actions/setup-python@v2 @@ -52,8 +52,8 @@ jobs: - name: Create venv and install dependences run: poetry update - - name: Relink CrysFML from default Python dylib - run: poetry run python tools/Scripts/RelinkCrysfml.py $pythonLocation +# - name: Relink CrysFML from default Python dylib +# run: poetry run python tools/Scripts/RelinkCrysfml.py $pythonLocation - name: Run main.py run: poetry run easyDiffractionLib From bd53c9bcf422b8ad1b1d1dc8901dc4bc4bdf2a4b Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 26 Jul 2021 16:32:01 +0200 Subject: [PATCH 144/312] Update pyproject.toml --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 959917ae..0c9f8393 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,7 @@ matplotlib = "^3.4" # libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'develop', platform = 'linux' } # libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'develop', platform = 'win32' } CFML = '^0.0.1' +GSASII = '^0.0.1' easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] From 479a62081aa0ca169b44ca8c3975898a2231f3b6 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 26 Jul 2021 16:36:31 +0200 Subject: [PATCH 145/312] Update GSASII.py --- easyDiffractionLib/Calculators/GSASII.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 59a3a153..578ead58 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -3,7 +3,7 @@ import os, pathlib from easyCore import borg -import GSASIIscriptable as G2sc +from GSASII import GSASIIscriptable as G2sc from easyCore import np @@ -161,4 +161,4 @@ def get_hkl(self, tth: np.array = None) -> dict: hkl_dict = self.hkl_dict if tth is not None: pass - return hkl_dict \ No newline at end of file + return hkl_dict From 2fd651063aa4f9d77d757d715948476f1c461abc Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 27 Jul 2021 20:39:09 +0200 Subject: [PATCH 146/312] ReflectionList nrefs to nref --- easyDiffractionLib/Calculators/CFML.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index a770ddc7..194e2cfb 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -122,7 +122,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: start_time = timeit.default_timer() - hkltth = np.array([[*reflection_list[i].hkl, reflection_list[i].stl] for i in range(reflection_list.nrefs)]) + hkltth = np.array([[*reflection_list[i].hkl, reflection_list[i].stl] for i in range(reflection_list.nref)]) self.hkl_dict['ttheta'] = np.rad2deg(np.arcsin(hkltth[:, 3] * job_info.lambdas[0])) * 2 self.hkl_dict['h'] = hkltth[:, 0] From 4cdd1946e96aee111ef5412c2f9182edd89348d2 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 30 Jul 2021 14:03:25 +0200 Subject: [PATCH 147/312] Moving to a more module based scheme --- easyDiffractionLib/Calculators/cryspy.py | 28 +- .../Elements/Experiments/Experiment.py | 9 +- easyDiffractionLib/Interfaces/cryspy.py | 11 +- easyDiffractionLib/Jobs.py | 63 +++++ easyDiffractionLib/Profiles/P1D.py | 248 ++++++++++++++++++ easyDiffractionLib/Profiles/__init__.py | 2 + easyDiffractionLib/Profiles/common.py | 148 +++++++++++ easyDiffractionLib/Runner.py | 49 ++++ pyproject.toml | 5 +- tests/fit_script.py | 15 +- 10 files changed, 556 insertions(+), 22 deletions(-) create mode 100644 easyDiffractionLib/Jobs.py create mode 100644 easyDiffractionLib/Profiles/P1D.py create mode 100644 easyDiffractionLib/Profiles/__init__.py create mode 100644 easyDiffractionLib/Profiles/common.py create mode 100644 easyDiffractionLib/Runner.py diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 5446402c..34ac06b5 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -32,6 +32,7 @@ def __init__(self): self.storage = {} self.current_crystal = {} self.model = None + self.type = 'powder1D' @property def cif_str(self): @@ -42,8 +43,16 @@ def cif_str(self): def cif_str(self, value): self.createCrystal_fromCifStr(value) - def createModel(self, model_id, model_type=None): - self.model = cryspy.Pd(background=cryspy.PdBackgroundL(), phase=cryspy.PhaseL()) + def createModel(self, model_id, model_type=''): + model = { + 'background': cryspy.PdBackgroundL(), + 'phase': cryspy.PhaseL() + } + cls = cryspy.Pd + if model_type == 'tof': + cls = cryspy.Tof + model['background'] = cryspy.TOFBackground() + self.model = cls(**model) def createPhase(self, crystal_name, key='phase'): phase = cryspy.Phase(label=crystal_name, scale=1, igsize=0) @@ -187,7 +196,7 @@ def updateResolution(self, key, **kwargs): for r_key in kwargs.keys(): setattr(resolution, r_key, kwargs[key]) - def calculate(self, x_array: np.ndarray) -> np.ndarray: + def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated @@ -234,6 +243,19 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: print(f"y_calc: {res}") return res + def calculate(self, x_array: np.ndarray) -> np.ndarray: + """ + For a given x calculate the corresponding y + :param x_array: array of data points to be calculated + :type x_array: np.ndarray + :return: points calculated at `x` + :rtype: np.ndarray + """ + res = np.zeros_like(x_array) + if self.type == 'powder1D': + return self.powder_1d_calculate(x_array) + return res + def get_hkl(self, tth: np.array = None) -> dict: hkl_dict = self.hkl_dict diff --git a/easyDiffractionLib/Elements/Experiments/Experiment.py b/easyDiffractionLib/Elements/Experiments/Experiment.py index feffb550..8ca424d3 100644 --- a/easyDiffractionLib/Elements/Experiments/Experiment.py +++ b/easyDiffractionLib/Elements/Experiments/Experiment.py @@ -14,16 +14,15 @@ class Pars1D(BaseObj): 'wavelength': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'wavelength', 'units': 'angstrom', 'value': 1.54056, - 'fixed': True + 'fixed': True, + 'min': 0 }, 'resolution_u': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'resolution_u', 'value': 0.0002, 'fixed': True @@ -31,7 +30,6 @@ class Pars1D(BaseObj): 'resolution_v': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'resolution_v', 'value': -0.0002, 'fixed': True @@ -40,7 +38,6 @@ class Pars1D(BaseObj): 'resolution_w': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'resolution_w', 'value': 0.012, 'fixed': True @@ -49,7 +46,6 @@ class Pars1D(BaseObj): 'resolution_x': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'resolution_x', 'value': 0.0, 'fixed': True @@ -57,7 +53,6 @@ class Pars1D(BaseObj): 'resolution_y': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'resolution_y', 'value': 0.0, 'fixed': True diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 7881c81e..0e9f6dab 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -5,7 +5,7 @@ from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D +from easyDiffractionLib.Profiles.P1D import Instrument1DParameters, Powder1DParameters from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases @@ -58,7 +58,7 @@ def create(self, model): r_list = [] t_ = type(model) model_key = self.__identify(model) - if issubclass(t_, Pars1D): + if issubclass(t_, Instrument1DParameters): # These parameters are linked to the Resolution and Setup cryspy objects res_key = self.calculator.createResolution() setup_key = self.calculator.createSetup() @@ -74,7 +74,7 @@ def create(self, model): self.calculator.genericReturn, self.calculator.genericUpdate) ) - elif issubclass(t_, Pattern1D): + elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to cryspy objects. self.calculator.pattern = model elif issubclass(t_, Lattice): @@ -108,10 +108,13 @@ def create(self, model): for atom in model.atoms: self.calculator.assignAtom_toCrystal(self.__identify(atom), model_key) elif issubclass(t_, Phases): - self.calculator.createModel(model_key) + # self.calculator.createModel(model_key, 'powder1D') for phase in model: ident = str(self.__identify(phase)) + '_phase' self.calculator.assignPhase(model_key, ident) + elif t_.__name__ == 'Powder1D': + # #TODO Check to see if parameters and pattern should be initialized here. + self.calculator.createModel(model_key, 'powder1D') else: if self._borg.debug: print(f"I'm a: {type(model)}") diff --git a/easyDiffractionLib/Jobs.py b/easyDiffractionLib/Jobs.py new file mode 100644 index 00000000..3f0d1f08 --- /dev/null +++ b/easyDiffractionLib/Jobs.py @@ -0,0 +1,63 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.1.1' + +from easyCore.Datasets.xarray import xr, np +from easyDiffractionLib.Profiles.common import _PowderBase +from easyDiffractionLib.interface import InterfaceFactory +from easyCore.Fitting.Fitting import Fitter + + +class Powder1D(_PowderBase): + def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): + from easyDiffractionLib.Profiles.P1D import Unpolarized1DClasses + interface = InterfaceFactory() + super(Powder1D, self).__init__(name, Unpolarized1DClasses, datastore, phases, parameters, pattern, interface=interface) + self._x_axis_name = 'tth' + self._y_axis_prefix = 'Intensity_' + + def create_simulation(self, tth, simulation_name=None): + if not isinstance(tth, xr.DataArray): + coord_name = self.datastore._simulations._simulation_prefix + self.name + '_tth' + self.datastore.add_coordinate(coord_name, tth) + self.datastore.store[coord_name].name = self._x_axis_name + else: + coord_name = tth.name + x, f = self.datastore.store[coord_name].easyCore.fit_prep(self.interface.fit_func, + bdims=xr.broadcast(self.datastore.store[coord_name].transpose())) + y = xr.apply_ufunc(f, *x) + y.name = self._y_axis_prefix + self.name + '_sim' + if simulation_name is None: + simulation_name = self.name + self.datastore._simulations.add_simulation(simulation_name, y) + return y + + def plot_simulation(self, simulation_name=None): + if simulation_name is None: + sim_name = self.datastore._simulations._simulation_prefix + self.name + else: + sim_name = self.datastore._simulations._simulation_prefix + self.name + '_' + simulation_name + return self.datastore.store[sim_name].plot() + + def add_experiment(self, experiment_name, file_path): + data_x, data_y, data_e = np.loadtxt(file_path, unpack=True) + coord_name = self.name + '_' + experiment_name + '_tth' + + self.datastore.store.easyCore.add_coordinate(coord_name, data_x) + self.datastore.store.easyCore.add_variable(self.name + '_' + experiment_name + '_I', [coord_name], data_y) + self.datastore.store.easyCore.sigma_attach(self.name + '_' + experiment_name + '_I', data_e) + # self._experiments[] + + def simulate_experiment(self, experiment_name=None): + tth_name = self.name + '_' + experiment_name + '_tth' + tth = self.datastore.store[tth_name] + return self.create_simulation(tth, simulation_name=self.name + '_' + experiment_name) + + def plot_experiment(self, experiment_name=None): + dataarray_name = self.name + '_' + experiment_name + '_I' + return self.datastore.store[dataarray_name].plot() + + def fit_experiment(self, experiment_name, fitter=None): + dataarray_name = self.name + '_' + experiment_name + '_I' + if fitter is None: + fitter = Fitter(self, self.interface.fit_func) + return self.datastore.store[dataarray_name].easyCore.fit(fitter) \ No newline at end of file diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py new file mode 100644 index 00000000..d1b98b73 --- /dev/null +++ b/easyDiffractionLib/Profiles/P1D.py @@ -0,0 +1,248 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from typing import TypeVar, List + +from easyCore.Datasets.xarray import xr +from easyCore.Objects.Base import BaseObj, Parameter +from copy import deepcopy +from easyCore.Utils.json import MontyDecoder +from easyDiffractionLib.Elements.Backgrounds.Background import BackgroundContainer +from easyDiffractionLib.Profiles.common import JobSetup, _DataClassBase + +_decoder = MontyDecoder() +T = TypeVar('T') + + +class Powder1DSim(_DataClassBase): + def __init__(self, dataset): + super(Powder1DSim, self).__init__(dataset) + self._simulation_prefix = 'sim_' + self.name = '' + + def add_simulation(self, simulation_name, simulation): + self._dataset[self._simulation_prefix + simulation_name] = simulation + + # @property + # def simulations(self) -> xr.Dataset: + # temp_dataset = xr.Dataset() + # for sim in self.simulation_names: + # temp_dataset[sim] = self._dataset[sim] + # return temp_dataset + # + # @property + # def simulation_names(self) -> List[str]: + # sims = [a for a in self._dataset.variables.keys() if a.startswith(self._simulation_prefix)] + # return sims + + +class Powder1DExp(_DataClassBase): + def __init__(self, dataset, simulation_prefix): + super(Powder1DExp, self).__init__(dataset) + self.simulation_prefix = simulation_prefix + + @property + def experiments(self) -> xr.Dataset: + temp_dataset = xr.Dataset() + for exp in self.experiment_names: + temp_dataset[exp] = self._dataset[exp] + return temp_dataset + + @property + def experiment_names(self) -> List[str]: + exps = [a for a in self._dataset.variables.keys() + if not a.startswith(self.simulation_prefix) and + not a in self._dataset.dims] + return exps + + +class Powder1DPolSim(Powder1DSim): + def __init__(self, dataset): + super(Powder1DPolSim, self).__init__(dataset) + + +class Powder1DPolExp(Powder1DExp): + def __init__(self, dataset, simulation_prefix): + super(Powder1DPolExp, self).__init__(dataset, simulation_prefix) + + +class Powder1DParameters(BaseObj): + _name = '1DPowderProfile' + _defaults = { + 'zero_shift': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'zero_shift', + 'units': 'degree', + 'value': 0.0, + 'fixed': True + }, + 'scale': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'scale', + 'value': 1, + 'fixed': True + }, + 'backgrounds': { + '@module': 'easyDiffractionLib.Elements.Backgrounds.Background', + '@class': 'BackgroundContainer', + '@version': '0.0.1', + 'data': [], + } + } + + def __init__(self, + zero_shift: Parameter, scale: Parameter, + backgrounds: BackgroundContainer, + interface=None): + super().__init__(self.__class__.__name__, + zero_shift=zero_shift, scale=scale, + backgrounds=backgrounds) + self.name = self._name + self.interface = interface + + @classmethod + def from_pars(cls, + zero_shift: float = _defaults['zero_shift']['value'], + scale: float = _defaults['scale']['value'] + ): + defaults = deepcopy(cls._defaults) + defaults['zero_shift']['value'] = zero_shift + zero_shift = _decoder.process_decoded(defaults['zero_shift']) + defaults['scale']['value'] = scale + scale = _decoder.process_decoded(defaults['scale']) + backgrounds = BackgroundContainer() + return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) + + @classmethod + def default(cls): + defaults = deepcopy(cls._defaults) + zero_shift = _decoder.process_decoded(defaults['zero_shift']) + scale = _decoder.process_decoded(defaults['scale']) + backgrounds = BackgroundContainer() + + return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) + + +class PolPowder1DParameters(Powder1DParameters): + pass + + +class Instrument1DParameters(BaseObj): + _name = 'InstrumentalParameters' + _defaults = { + 'wavelength': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'wavelength', + 'units': 'angstrom', + 'value': 1.54056, + 'fixed': True + }, + 'resolution_u': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_u', + 'value': 0.0002, + 'fixed': True + }, + 'resolution_v': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_v', + 'value': -0.0002, + 'fixed': True + + }, + 'resolution_w': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_w', + 'value': 0.012, + 'fixed': True + + }, + 'resolution_x': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_x', + 'value': 0.0, + 'fixed': True + }, + 'resolution_y': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_y', + 'value': 0.0, + 'fixed': True + } + } + + def __init__(self, + wavelength: Parameter, + resolution_u: Parameter, resolution_v: Parameter, resolution_w: Parameter, + resolution_x: Parameter, resolution_y: Parameter, + interface=None): + super().__init__(self.__class__.__name__, + wavelength=wavelength, + resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, + resolution_x=resolution_x, resolution_y=resolution_y) + self.name = self._name + self.interface = interface + + @classmethod + def from_pars(cls, + wavelength: float = _defaults['wavelength']['value'], + resolution_u: float = _defaults['resolution_u']['value'], + resolution_v: float = _defaults['resolution_v']['value'], + resolution_w: float = _defaults['resolution_w']['value'], + resolution_x: float = _defaults['resolution_x']['value'], + resolution_y: float = _defaults['resolution_y']['value'] + ): + defaults = deepcopy(cls._defaults) + defaults['wavelength']['value'] = wavelength + wavelength = _decoder.process_decoded(defaults['wavelength']) + defaults['resolution_u']['value'] = resolution_u + resolution_u = _decoder.process_decoded(defaults['resolution_u']) + defaults['resolution_v']['value'] = resolution_v + resolution_v = _decoder.process_decoded(defaults['resolution_v']) + defaults['resolution_w']['value'] = resolution_w + resolution_w = _decoder.process_decoded(defaults['resolution_w']) + defaults['resolution_x']['value'] = resolution_x + resolution_x = _decoder.process_decoded(defaults['resolution_x']) + defaults['resolution_y']['value'] = resolution_y + resolution_y = _decoder.process_decoded(defaults['resolution_y']) + return cls(wavelength=wavelength, + resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, + resolution_x=resolution_x, resolution_y=resolution_y) + + @classmethod + def default(cls): + defaults = deepcopy(cls._defaults) + wavelength = _decoder.process_decoded(defaults['wavelength']) + resolution_u = _decoder.process_decoded(defaults['resolution_u']) + resolution_v = _decoder.process_decoded(defaults['resolution_v']) + resolution_w = _decoder.process_decoded(defaults['resolution_w']) + resolution_x = _decoder.process_decoded(defaults['resolution_x']) + resolution_y = _decoder.process_decoded(defaults['resolution_y']) + return cls(wavelength=wavelength, + resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, + resolution_x=resolution_x, resolution_y=resolution_y) + + +class Instrument1DPolParameters(Instrument1DParameters): + pass + + +Unpolarized1DClasses = JobSetup([Powder1DSim, Powder1DExp], + Powder1DParameters, + Instrument1DParameters) diff --git a/easyDiffractionLib/Profiles/__init__.py b/easyDiffractionLib/Profiles/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/easyDiffractionLib/Profiles/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/easyDiffractionLib/Profiles/common.py b/easyDiffractionLib/Profiles/common.py new file mode 100644 index 00000000..9d34ae80 --- /dev/null +++ b/easyDiffractionLib/Profiles/common.py @@ -0,0 +1,148 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +import os +import tempfile +from typing import Union, TypeVar + +from easyCore.Utils.UndoRedo import property_stack_deco +from easyCore.Objects.Base import BaseObj +from easyDiffractionLib import Phases, Phase +from easyCore.Datasets.xarray import xr + + +DataClassBaseType = TypeVar('DataClassBaseType', bound='_DataClassBase') + + +class _DataClassBase: + def __init__(self, dataset): + self._dataset = dataset + + +class DataContainer: + + def __init__(self, sim_store: DataClassBaseType, exp_store: DataClassBaseType): + self._simulations = sim_store + self._experiments = exp_store + self.store = sim_store._dataset + self._relations = {} + self.coordinate_labels = [] + self.coordinate_units = [] + + @classmethod + def prepare(cls, dataset, simulation_class, experiment_class): + class Simulation(simulation_class): + def __init__(self): + super(Simulation, self).__init__(dataset) + + class Experiment(experiment_class): + def __init__(self, sim_prefix): + super(Experiment, self).__init__(dataset, sim_prefix) + + s = Simulation() + e = Experiment(s._simulation_prefix) + + return cls(s, e) + + def add_coordinate(self, coordinate_name, coordinate_values): + self.store.easyCore.add_coordinate(coordinate_name, coordinate_values) + + def add_variable(self, variable_name, variable_coordinates, values): + self.store.easyCore.add_variable(variable_name, variable_coordinates, values) + + +class JobSetup: + def __init__(self, datastore_classes, + instrumental_parameter_class, + pattern_class): + self.datastore_classes = datastore_classes + self.instrumental_parameter_class = instrumental_parameter_class + self.pattern_class = pattern_class + + +class _PowderBase(BaseObj): + def __init__(self, + name: str = '', + job_type=None, + datastore: xr.Dataset = None, + phases: Union[Phase, Phases] = None, + parameters=None, + pattern=None, + interface=None): + if isinstance(phases, Phase): + phases = Phases('Phases', phases) + elif phases is None: + phases = Phases('Phases') + + if not isinstance(phases, Phases): + raise AttributeError('`phases` must be a Crystal or Crystals') + + if parameters is None: + parameters = job_type.pattern_class.default() + + if pattern is None: + pattern = job_type.instrumental_parameter_class.default() + + super(_PowderBase, self).__init__(name, _phases=phases, _parameters=parameters, _pattern=pattern) + + self.__constituting_classes = job_type + self.__dataset = datastore + self.datastore = DataContainer.prepare(self.__dataset, *job_type.datastore_classes) + + self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') + self.output_index = None + self.interface = interface + + def get_phase(self, phase_index): + return self._phases[phase_index] + + def get_background(self, experiment_name: str): + return self._pattern.backgrounds[experiment_name] + + def set_background(self, background): + self._pattern.backgrounds.append(background) + + def remove_background(self, background): + if background.linked_experiment.raw_value in self._pattern.backgrounds.linked_experiments: + del self._pattern.backgrounds[background.linked_experiment.raw_value] + else: + raise ValueError + + @property + def backgrounds(self): + return self._pattern.backgrounds + + @property + def phases(self): + return self._phases + + @phases.setter + @property_stack_deco + def phases(self, value): + if isinstance(value, Phase): + value = Phases('Phases', value) + if not isinstance(value, Phases): + raise ValueError + self._phases = value + self._borg.map.add_edge(self, value) + self._phases.interface = self.interface + @property + def parameters(self): + return self._parameters + + @parameters.setter + @property_stack_deco + def parameters(self, value): + self._parameters = value + self._parameters.interface = self._interface + + @property + def pattern(self): + return self._pattern + + def as_dict(self, skip: list = None) -> dict: + d = super(_PowderBase, self).as_dict(skip=skip) + del d['_phases'] + del d['_parameters'] + del d['_pattern'] + return d \ No newline at end of file diff --git a/easyDiffractionLib/Runner.py b/easyDiffractionLib/Runner.py new file mode 100644 index 00000000..7415936e --- /dev/null +++ b/easyDiffractionLib/Runner.py @@ -0,0 +1,49 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCore.Datasets.xarray import xr + + +class Runner: + def __init__(self): + self._data = xr.Dataset() + self._jobs = {} + self._instrumental_parameters = [] + self._instrumental_parameters_link = {} + self._experimental_parameters = [] + self._experimental_parameters_link = {} + self._phases = [] + self._phase_link = {} + + def add_job(self, name: str, job_type: str = 'powder1d'): + if job_type == 'powder1d': + from easyDiffractionLib.Jobs import Powder1D + job_type = Powder1D + else: + raise NotImplementedError + job = job_type(name, self._data) + self._jobs[name] = { + 'object': job, + 'phases': job.phases, + 'instrumental_parameters': job.parameters, + 'experimental_parameters': job.pattern + } + + @property + def phases(self): + return [phase.name for phase in self._phases] + + def add_phase(self, phase, job_name: str = None): + if phase.name in self.phases: + raise AttributeError + if job_name is None: + self._phases.append(phase) + return + if job_name not in self._jobs.keys(): + raise AttributeError + self._phases.append(phase) + self._jobs[job_name]['object'].phases = phase + + @property + def jobs(self): + return {key: job['object'] for key, job in self._jobs.items()} \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 0c9f8393..2d5645d5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,14 +22,11 @@ url = "https://easyscience.github.io/pypi/" secondary = true [tool.poetry.dependencies] -python = "^3.7, <3.8" +python = "^3.7, <3.9" #cryspy = "^0.5" cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } matplotlib = "^3.4" # easyScience -# libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'develop', platform = 'darwin' } -# libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'develop', platform = 'linux' } -# libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'develop', platform = 'win32' } CFML = '^0.0.1' GSASII = '^0.0.1' easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } diff --git a/tests/fit_script.py b/tests/fit_script.py index 22a30a92..8e9bb53a 100644 --- a/tests/fit_script.py +++ b/tests/fit_script.py @@ -41,17 +41,24 @@ # Vary the scale and the BG points S.pattern.scale.fixed = False +S.pattern.zero_shift.fixed = False S.parameters.resolution_u.fixed = False S.parameters.resolution_v.fixed = False S.parameters.resolution_w.fixed = False -S.backgrounds[0][0].y.fixed = False -S.backgrounds[0][1].y.fixed = False +S.backgrounds[0][0].y.fixed = True +S.backgrounds[0][1].y.fixed = True -# result = f.fit(data_x, data_y, weights=1/data_e) -result = data_set['I'].easyCore.fit(f) +result = f.fit(data_x, data_y) +# result = data_set['I'].easyCore.fit(f) if result.success: print("The fit has been successful: {}".format(result.success)) print("The gooodness of fit is: {}".format(result.goodness_of_fit)) sim_y_data = interface.fit_func(data_x) + +import matplotlib.pyplot as plt + +plt.plot(data_x, data_y, label='Data') +plt.plot(data_x, result.y_calc, label='Calculate') +plt.show() From 456375bcc7ab3462dd856c616751e37c88ef5fbc Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 9 Aug 2021 16:19:03 +0200 Subject: [PATCH 148/312] TOF support As easy as: ``` from easyCore import np from easyDiffractionLib import Phase from easyDiffractionLib.Runner import Runner import matplotlib.pyplot as plt r = Runner() p = Phase.from_cif_file('tests/PbSO4.cif') r.add_job('testing', job_type='powder1dTOF') r.add_phase(p, 'testing') job = r.jobs['testing'] job.pattern.zero_shift = 2.9121 job.create_simulation(np.linspace(3000, 11000, 801)) job.plot_simulation() plt.show() ``` --- easyDiffractionLib/Calculators/cryspy.py | 132 ++++++++++-- easyDiffractionLib/Interfaces/cryspy.py | 36 +++- easyDiffractionLib/Jobs.py | 42 +++- easyDiffractionLib/Profiles/P1D.py | 261 ++++++++++++++++++++--- easyDiffractionLib/Runner.py | 7 +- 5 files changed, 418 insertions(+), 60 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 34ac06b5..9decad32 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -1,10 +1,10 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.2" - import cryspy import warnings from easyCore import np, borg + warnings.filterwarnings('ignore') @@ -22,12 +22,28 @@ def __init__(self): } } + self.conditions_TOF = { + 'ttheta_bank': 0, + 'dtt1': 0.1, + 'dtt2': 0, + 'resolution': { + 'sigma0': 0, + 'sigma1': 0, + 'sigma2': 0, + 'gamma0': 0, + 'gamma1': 0, + 'gamma2': 0, + 'alpha0': 0, + 'alpha1': 0, + 'beta0': 0, + 'beta1': 0} + } self.background = None self.hkl_dict = { 'ttheta': np.empty(0), - 'h': np.empty(0), - 'k': np.empty(0), - 'l': np.empty(0) + 'h': np.empty(0), + 'k': np.empty(0), + 'l': np.empty(0) } self.storage = {} self.current_crystal = {} @@ -46,12 +62,13 @@ def cif_str(self, value): def createModel(self, model_id, model_type=''): model = { 'background': cryspy.PdBackgroundL(), - 'phase': cryspy.PhaseL() + 'phase': cryspy.PhaseL() } cls = cryspy.Pd - if model_type == 'tof': - cls = cryspy.Tof + if model_type == 'Powder1DTOF': + cls = cryspy.TOF model['background'] = cryspy.TOFBackground() + self.type = 'powder1DTOF' self.model = cls(**model) def createPhase(self, crystal_name, key='phase'): @@ -104,7 +121,7 @@ def createSpaceGroup(self, key='spacegroup', name_hm_alt='P 1'): # sg = cryspy.SpaceGroup(**opts) # except Exception as e: sg = cryspy.SpaceGroup(**opts) - # print(e) + # print(e) self.storage[key] = sg return key @@ -166,8 +183,18 @@ def createBackground(self, background_obj): self.storage[key] = background_obj return key - def createSetup(self, key='setup'): - setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) + def createSetup(self, key='setup', cls_type = None): + + if cls_type is None: + cls_type = self.type + + if cls_type == 'powder1D': + setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) + elif cls_type == 'powder1DTOF': + setup = cryspy.TOFParameters(zero=0, dtt1=self.conditions_TOF['dtt1'], dtt2=self.conditions_TOF['dtt2'], + ttheta_bank=self.conditions_TOF['ttheta_bank']) + else: + raise AttributeError('The experiment is of an unknown type') self.storage[key] = setup if self.model is not None: setattr(self.model, 'setup', setup) @@ -183,12 +210,23 @@ def genericReturn(self, item_key, value_key): value = getattr(item, value_key) return value - def createResolution(self): - key = 'pd_instr_resolution' - resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) + def createResolution(self, cls_type = None): + + if cls_type is None: + cls_type = self.type + + if cls_type == 'powder1D': + key = 'pd_instr_resolution' + resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) + elif cls_type == 'powder1DTOF': + key = 'tof_profile' + resolution = cryspy.TOFProfile(**self.conditions_TOF['resolution']) + resolution.peak_shape = 'Gauss' + else: + raise AttributeError('The experiment is of an unknown type') self.storage[key] = resolution if self.model is not None: - setattr(self.model, 'pd_instr_resolution', resolution) + setattr(self.model, key, resolution) return key def updateResolution(self, key, **kwargs): @@ -234,15 +272,65 @@ def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: profile = self.model.calc_profile(this_x_array, [crystal], True, False) self.hkl_dict = { 'ttheta': self.model.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, - 'h': self.model.d_internal_val['peak_'+crystal.data_name].numpy_index_h, - 'k': self.model.d_internal_val['peak_'+crystal.data_name].numpy_index_k, - 'l': self.model.d_internal_val['peak_'+crystal.data_name].numpy_index_l, + 'h': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_h, + 'k': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_k, + 'l': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_l, } res = scale * np.array(profile.intensity_total) + bg if borg.debug: print(f"y_calc: {res}") return res + def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: + """ + For a given x calculate the corresponding y + :param x_array: array of data points to be calculated + :type x_array: np.ndarray + :return: points calculated at `x` + :rtype: np.ndarray + setup, tof_profile, phase, tof_background, tof_meas + """ + + for key_inner in ['tof_profile', 'setup']: + if not hasattr(self.model, key_inner): + setattr(self.model, key_inner, self.storage[key_inner]) + + if self.pattern is None: + scale = 1.0 + offset = 0 + else: + scale = self.pattern.scale.raw_value / 500.0 + offset = self.pattern.zero_shift.raw_value + + self.model['tof_parameters'].zero = offset + this_x_array = x_array + + if borg.debug: + print('CALLING FROM Cryspy\n----------------------') + # USe the default for now + crystal = self.storage[list(self.current_crystal.keys())[-1]] + + if len(self.pattern.backgrounds) == 0: + bg = np.zeros_like(this_x_array) + else: + bg = self.pattern.backgrounds[0].calculate(this_x_array) + + if crystal is None: + return bg + + profile = self.model.calc_profile(this_x_array, [crystal], True, False) + self.hkl_dict = { + 'time': self.model.d_internal_val['peak_' + crystal.data_name].time, + 'h': self.model.d_internal_val['peak_' + crystal.data_name].index_h, + 'k': self.model.d_internal_val['peak_' + crystal.data_name].index_k, + 'l': self.model.d_internal_val['peak_' + crystal.data_name].index_l, + } + res = scale * np.array(profile.intensity_total) + bg + if borg.debug: + print(f"y_calc: {res}") + return res + + def calculate(self, x_array: np.ndarray) -> np.ndarray: """ For a given x calculate the corresponding y @@ -254,6 +342,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: res = np.zeros_like(x_array) if self.type == 'powder1D': return self.powder_1d_calculate(x_array) + if self.type == 'powder1DTOF': + return self.powder_1d_tof_calculate(x_array) return res def get_hkl(self, tth: np.array = None) -> dict: @@ -274,9 +364,9 @@ def get_hkl(self, tth: np.array = None) -> dict: hkl_dict = { 'ttheta': self.model.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, - 'h': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_h, - 'k': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_k, - 'l': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_l, + 'h': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_h, + 'k': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_k, + 'l': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_l, } - return hkl_dict \ No newline at end of file + return hkl_dict diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 0e9f6dab..748c8207 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -5,7 +5,7 @@ from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc -from easyDiffractionLib.Profiles.P1D import Instrument1DParameters, Powder1DParameters +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters, Powder1DParameters from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases @@ -49,6 +49,8 @@ class Cryspy(InterfaceTemplate): 'wavelength': 'wavelength' } + _instrument_tof_link = {k:k for k in Instrument1DTOFParameters._defaults.keys()} + name = 'CrysPy' def __init__(self): @@ -58,7 +60,7 @@ def create(self, model): r_list = [] t_ = type(model) model_key = self.__identify(model) - if issubclass(t_, Instrument1DParameters): + if issubclass(t_, Instrument1DCWParameters): # These parameters are linked to the Resolution and Setup cryspy objects res_key = self.calculator.createResolution() setup_key = self.calculator.createSetup() @@ -74,6 +76,31 @@ def create(self, model): self.calculator.genericReturn, self.calculator.genericUpdate) ) + if issubclass(t_, Instrument1DTOFParameters): + # These parameters are linked to the Resolution and Setup cryspy objects + res_key = self.calculator.createResolution(cls_type='powder1DTOF') + setup_key = self.calculator.createSetup(cls_type='powder1DTOF') + keys = self._instrument_tof_link.copy() + + setup_keys = { + k: keys[k] for k in ['ttheta_bank', 'dtt1', 'dtt2'] + } + res_keys = { + k: keys[k] for k in ['sigma0', 'sigma1', 'sigma2', + 'gamma0', 'gamma1', 'gamma2', + 'alpha0', 'alpha1', + 'beta0', 'beta1'] + } + r_list.append( + ItemContainer(res_key, res_keys, + self.calculator.genericReturn, + self.calculator.genericUpdate) + ) + r_list.append( + ItemContainer(setup_key, setup_keys, + self.calculator.genericReturn, + self.calculator.genericUpdate) + ) elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to cryspy objects. self.calculator.pattern = model @@ -112,9 +139,12 @@ def create(self, model): for phase in model: ident = str(self.__identify(phase)) + '_phase' self.calculator.assignPhase(model_key, ident) - elif t_.__name__ == 'Powder1D': + elif t_.__name__ == 'Powder1DCW': # #TODO Check to see if parameters and pattern should be initialized here. self.calculator.createModel(model_key, 'powder1D') + elif t_.__name__ == 'Powder1DTOF': + # #TODO Check to see if parameters and pattern should be initialized here. + self.calculator.createModel(model_key, 'Powder1DTOF') else: if self._borg.debug: print(f"I'm a: {type(model)}") diff --git a/easyDiffractionLib/Jobs.py b/easyDiffractionLib/Jobs.py index 3f0d1f08..620494e1 100644 --- a/easyDiffractionLib/Jobs.py +++ b/easyDiffractionLib/Jobs.py @@ -7,17 +7,25 @@ from easyCore.Fitting.Fitting import Fitter -class Powder1D(_PowderBase): - def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): - from easyDiffractionLib.Profiles.P1D import Unpolarized1DClasses +class JobBase_1D(_PowderBase): + + def __init__(self, name: str, profileClass, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): interface = InterfaceFactory() - super(Powder1D, self).__init__(name, Unpolarized1DClasses, datastore, phases, parameters, pattern, interface=interface) - self._x_axis_name = 'tth' + super(JobBase_1D, self).__init__(name, profileClass, datastore, phases, parameters, pattern, interface=interface) + self._x_axis_name = '' self._y_axis_prefix = 'Intensity_' + @property + def simulation_data(self): + sim_name = self.datastore._simulations._simulation_prefix + self.name + data = None + if sim_name in self.datastore.store.keys(): + data = self.datastore.store[sim_name] + return data + def create_simulation(self, tth, simulation_name=None): if not isinstance(tth, xr.DataArray): - coord_name = self.datastore._simulations._simulation_prefix + self.name + '_tth' + coord_name = self.datastore._simulations._simulation_prefix + self.name + '_' + self._x_axis_name self.datastore.add_coordinate(coord_name, tth) self.datastore.store[coord_name].name = self._x_axis_name else: @@ -40,7 +48,7 @@ def plot_simulation(self, simulation_name=None): def add_experiment(self, experiment_name, file_path): data_x, data_y, data_e = np.loadtxt(file_path, unpack=True) - coord_name = self.name + '_' + experiment_name + '_tth' + coord_name = self.name + '_' + experiment_name + '_' + self._x_axis_name self.datastore.store.easyCore.add_coordinate(coord_name, data_x) self.datastore.store.easyCore.add_variable(self.name + '_' + experiment_name + '_I', [coord_name], data_y) @@ -48,7 +56,7 @@ def add_experiment(self, experiment_name, file_path): # self._experiments[] def simulate_experiment(self, experiment_name=None): - tth_name = self.name + '_' + experiment_name + '_tth' + tth_name = self.name + '_' + experiment_name + '_' + self._x_axis_name tth = self.datastore.store[tth_name] return self.create_simulation(tth, simulation_name=self.name + '_' + experiment_name) @@ -60,4 +68,20 @@ def fit_experiment(self, experiment_name, fitter=None): dataarray_name = self.name + '_' + experiment_name + '_I' if fitter is None: fitter = Fitter(self, self.interface.fit_func) - return self.datastore.store[dataarray_name].easyCore.fit(fitter) \ No newline at end of file + return self.datastore.store[dataarray_name].easyCore.fit(fitter) + + +class Powder1DCW(JobBase_1D): + + def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): + from easyDiffractionLib.Profiles.P1D import Unpolarized1DClasses + super(Powder1DCW, self).__init__(name, Unpolarized1DClasses, datastore, phases, parameters, pattern) + self._x_axis_name = 'tth' + + +class Powder1DTOF(JobBase_1D): + + def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): + from easyDiffractionLib.Profiles.P1D import Unpolarized1DTOFClasses + super(Powder1DTOF, self).__init__(name, Unpolarized1DTOFClasses, datastore, phases, parameters, pattern) + self._x_axis_name = 'time' diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index d1b98b73..7c00b5f7 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -69,28 +69,28 @@ def __init__(self, dataset, simulation_prefix): class Powder1DParameters(BaseObj): _name = '1DPowderProfile' _defaults = { - 'zero_shift': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', + 'zero_shift': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', '@version': '0.0.1', - 'name': 'zero_shift', - 'units': 'degree', - 'value': 0.0, - 'fixed': True + 'name': 'zero_shift', + 'units': 'degree', + 'value': 0.0, + 'fixed': True }, - 'scale': { + 'scale': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', 'name': 'scale', 'value': 1, - 'fixed': True + 'fixed': True }, 'backgrounds': { - '@module': 'easyDiffractionLib.Elements.Backgrounds.Background', - '@class': 'BackgroundContainer', + '@module': 'easyDiffractionLib.Elements.Backgrounds.Background', + '@class': 'BackgroundContainer', '@version': '0.0.1', - 'data': [], + 'data': [], } } @@ -131,7 +131,7 @@ class PolPowder1DParameters(Powder1DParameters): pass -class Instrument1DParameters(BaseObj): +class Instrument1DCWParameters(BaseObj): _name = 'InstrumentalParameters' _defaults = { 'wavelength': { @@ -141,7 +141,7 @@ class Instrument1DParameters(BaseObj): 'name': 'wavelength', 'units': 'angstrom', 'value': 1.54056, - 'fixed': True + 'fixed': True }, 'resolution_u': { '@module': 'easyCore.Objects.Base', @@ -149,7 +149,7 @@ class Instrument1DParameters(BaseObj): '@version': '0.0.1', 'name': 'resolution_u', 'value': 0.0002, - 'fixed': True + 'fixed': True }, 'resolution_v': { '@module': 'easyCore.Objects.Base', @@ -157,7 +157,7 @@ class Instrument1DParameters(BaseObj): '@version': '0.0.1', 'name': 'resolution_v', 'value': -0.0002, - 'fixed': True + 'fixed': True }, 'resolution_w': { @@ -166,7 +166,7 @@ class Instrument1DParameters(BaseObj): '@version': '0.0.1', 'name': 'resolution_w', 'value': 0.012, - 'fixed': True + 'fixed': True }, 'resolution_x': { @@ -175,15 +175,15 @@ class Instrument1DParameters(BaseObj): '@version': '0.0.1', 'name': 'resolution_x', 'value': 0.0, - 'fixed': True + 'fixed': True }, 'resolution_y': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', '@version': '0.0.1', - 'name': 'resolution_y', - 'value': 0.0, - 'fixed': True + 'name': 'resolution_y', + 'value': 0.0, + 'fixed': True } } @@ -239,10 +239,221 @@ def default(cls): resolution_x=resolution_x, resolution_y=resolution_y) -class Instrument1DPolParameters(Instrument1DParameters): +class Instrument1DTOFParameters(BaseObj): + _name = 'InstrumentalParameters' + _defaults = { + 'ttheta_bank': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'ttheta_bank', + 'units': 'deg', + 'value': 145.00, + 'fixed': True + }, + 'dtt1': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'dtt1', + 'units': 'deg', + 'value': 6167.24700, + 'fixed': True + }, + 'dtt2': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'dtt2', + 'units': 'deg', + 'value': -2.28000, + 'fixed': True + }, + 'sigma0': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'sigma0', + 'value': 0.409, + 'fixed': True + }, + 'sigma1': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'sigma1', + 'value': 8.118, + 'fixed': True + + }, + 'sigma2': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'sigma2', + 'value': 0.0, + 'fixed': True + + }, + 'gamma0': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'gamma0', + 'value': 0.0, + 'fixed': True + }, + 'gamma1': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'gamma1', + 'value': 0.60400, + 'fixed': True + }, + 'gamma2': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'gamma2', + 'value': 0.0, + 'fixed': True + }, + 'alpha0': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'alpha0', + 'value': 0.0, + 'fixed': True + }, + 'alpha1': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'alpha1', + 'value': 0.29710, + 'fixed': True + }, + 'beta0': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'beta0', + 'value': 0.04182, + 'fixed': True + }, + 'beta1': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'beta1', + 'value': 0.00224, + 'fixed': True + } + } + + def __init__(self, + ttheta_bank: Parameter, + dtt1: Parameter, dtt2: Parameter, + sigma0: Parameter, sigma1: Parameter, sigma2: Parameter, + gamma0: Parameter, gamma1: Parameter, gamma2: Parameter, + alpha0: Parameter, alpha1: Parameter, + beta0: Parameter, beta1: Parameter, + interface=None): + super().__init__(self.__class__.__name__, + ttheta_bank=ttheta_bank, + dtt1=dtt1, dtt2=dtt2, + sigma0=sigma0, sigma1=sigma1, sigma2=sigma2, + gamma0=gamma0, gamma1=gamma1, gamma2=gamma2, + alpha0=alpha0, alpha1=alpha1, + beta0=beta0, beta1=beta1) + self.name = self._name + self.interface = interface + + @classmethod + def from_pars(cls, + ttheta_bank: float = _defaults['ttheta_bank']['value'], + dtt1: float = _defaults['dtt1']['value'], + dtt2: float = _defaults['dtt2']['value'], + sigma0: float = _defaults['sigma0']['value'], + sigma1: float = _defaults['sigma1']['value'], + sigma2: float = _defaults['sigma2']['value'], + gamma0: float = _defaults['gamma0']['value'], + gamma1: float = _defaults['gamma1']['value'], + gamma2: float = _defaults['gamma2']['value'], + alpha0: float = _defaults['alpha0']['value'], + alpha1: float = _defaults['alpha1']['value'], + beta0: float = _defaults['beta0']['value'], + beta1: float = _defaults['beta1']['value'], + ): + defaults = deepcopy(cls._defaults) + defaults['ttheta_bank']['value'] = ttheta_bank + ttheta_bank = _decoder.process_decoded(defaults['ttheta_bank']) + defaults['dtt1']['value'] = dtt1 + dtt1 = _decoder.process_decoded(defaults['dtt1']) + defaults['dtt2']['value'] = dtt2 + dtt2 = _decoder.process_decoded(defaults['dtt2']) + defaults['sigma0']['value'] = sigma0 + sigma0 = _decoder.process_decoded(defaults['sigma0']) + defaults['sigma1']['value'] = sigma1 + sigma1 = _decoder.process_decoded(defaults['sigma1']) + defaults['sigma2']['value'] = sigma2 + sigma2 = _decoder.process_decoded(defaults['sigma2']) + defaults['gamma0']['value'] = gamma0 + gamma0 = _decoder.process_decoded(defaults['gamma0']) + defaults['gamma1']['value'] = gamma1 + gamma1 = _decoder.process_decoded(defaults['gamma1']) + defaults['gamma2']['value'] = gamma2 + gamma2 = _decoder.process_decoded(defaults['gamma2']) + defaults['alpha0']['value'] = alpha0 + alpha0 = _decoder.process_decoded(defaults['alpha0']) + defaults['alpha1']['value'] = alpha1 + alpha1 = _decoder.process_decoded(defaults['alpha1']) + defaults['beta0']['value'] = beta0 + beta0 = _decoder.process_decoded(defaults['beta0']) + defaults['beta1']['value'] = beta1 + beta1 = _decoder.process_decoded(defaults['beta1']) + + return cls(ttheta_bank=ttheta_bank, + dtt1=dtt1, dtt2=dtt2, + sigma0=sigma0, sigma1=sigma1, sigma2=sigma2, + gamma0=gamma0, gamma1=gamma1, gamma2=gamma2, + alpha0=alpha0, alpha1=alpha1, + beta0=beta0, beta1=beta1) + + @classmethod + def default(cls): + defaults = deepcopy(cls._defaults) + ttheta_bank = _decoder.process_decoded(defaults['ttheta_bank']) + dtt1 = _decoder.process_decoded(defaults['dtt1']) + dtt2 = _decoder.process_decoded(defaults['dtt2']) + sigma0 = _decoder.process_decoded(defaults['sigma0']) + sigma1 = _decoder.process_decoded(defaults['sigma1']) + sigma2 = _decoder.process_decoded(defaults['sigma2']) + gamma0 = _decoder.process_decoded(defaults['gamma0']) + gamma1 = _decoder.process_decoded(defaults['gamma1']) + gamma2 = _decoder.process_decoded(defaults['gamma2']) + alpha0 = _decoder.process_decoded(defaults['alpha0']) + alpha1 = _decoder.process_decoded(defaults['alpha1']) + beta0 = _decoder.process_decoded(defaults['beta0']) + beta1 = _decoder.process_decoded(defaults['beta1']) + return cls(ttheta_bank=ttheta_bank, + dtt1=dtt1, dtt2=dtt2, + sigma0=sigma0, sigma1=sigma1, sigma2=sigma2, + gamma0=gamma0, gamma1=gamma1, gamma2=gamma2, + alpha0=alpha0, alpha1=alpha1, + beta0=beta0, beta1=beta1) + + +class Instrument1DCWPolParameters(Instrument1DCWParameters): pass Unpolarized1DClasses = JobSetup([Powder1DSim, Powder1DExp], Powder1DParameters, - Instrument1DParameters) + Instrument1DCWParameters) + +Unpolarized1DTOFClasses = JobSetup([Powder1DSim, Powder1DExp], + Powder1DParameters, + Instrument1DTOFParameters) \ No newline at end of file diff --git a/easyDiffractionLib/Runner.py b/easyDiffractionLib/Runner.py index 7415936e..a7977dfd 100644 --- a/easyDiffractionLib/Runner.py +++ b/easyDiffractionLib/Runner.py @@ -17,8 +17,11 @@ def __init__(self): def add_job(self, name: str, job_type: str = 'powder1d'): if job_type == 'powder1d': - from easyDiffractionLib.Jobs import Powder1D - job_type = Powder1D + from easyDiffractionLib.Jobs import Powder1DCW + job_type = Powder1DCW + elif job_type == 'powder1dTOF': + from easyDiffractionLib.Jobs import Powder1DTOF + job_type = Powder1DTOF else: raise NotImplementedError job = job_type(name, self._data) From 073b41356aea0f8ad3b851a0dbd3ca4bcb3d309d Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 10 Aug 2021 13:49:29 +0200 Subject: [PATCH 149/312] Decouple phases and EXP in cryspy --- easyDiffractionLib/Calculators/cryspy.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 9decad32..1c39fdf4 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -48,6 +48,7 @@ def __init__(self): self.storage = {} self.current_crystal = {} self.model = None + self.phases = cryspy.PhaseL() self.type = 'powder1D' @property @@ -62,7 +63,7 @@ def cif_str(self, value): def createModel(self, model_id, model_type=''): model = { 'background': cryspy.PdBackgroundL(), - 'phase': cryspy.PhaseL() + 'phase': self.phases } cls = cryspy.Pd if model_type == 'Powder1DTOF': @@ -78,7 +79,7 @@ def createPhase(self, crystal_name, key='phase'): def assignPhase(self, model_name, phase_name): phase = self.storage[phase_name] - self.model.phase.items.append(phase) + self.phases.items.append(phase) def removePhase(self, model_name, phase_name): phase = self.storage[phase_name] From 1f2b9cb7f052caac597fbd236f1b0d5f512a7838 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 10 Aug 2021 14:13:19 +0200 Subject: [PATCH 150/312] Fix legacy mode loading --- easyDiffractionLib/Interfaces/cryspy.py | 7 +++++++ easyDiffractionLib/sample.py | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 748c8207..287d4f8c 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -145,6 +145,13 @@ def create(self, model): elif t_.__name__ == 'Powder1DTOF': # #TODO Check to see if parameters and pattern should be initialized here. self.calculator.createModel(model_key, 'Powder1DTOF') + elif t_.__name__ == 'Sample': # This is legacy mode. Boo + if issubclass(t_.pattern, Instrument1DCWParameters): + self.calculator.createModel(model_key, 'powder1D') + elif issubclass(t_.pattern, Instrument1DTOFParameters): + self.calculator.createModel(model_key, 'Powder1DTOF') + else: + raise AttributeError('Unknown EXP type') else: if self._borg.debug: print(f"I'm a: {type(model)}") diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 94503406..db319564 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -8,8 +8,8 @@ from easyCore.Utils.UndoRedo import property_stack_deco from easyDiffractionLib import Phase, Phases -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D -from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as Pars1D +from easyDiffractionLib.Profiles.P1D import Powder1DParameters as Pattern1D class Sample(BaseObj): From 236d27de02717f94db434de32e9e419b6863757d Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 10 Aug 2021 14:28:28 +0200 Subject: [PATCH 151/312] Use the correct references for legacy mode --- easyDiffractionLib/Interfaces/cryspy.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 287d4f8c..aff190ea 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -146,9 +146,9 @@ def create(self, model): # #TODO Check to see if parameters and pattern should be initialized here. self.calculator.createModel(model_key, 'Powder1DTOF') elif t_.__name__ == 'Sample': # This is legacy mode. Boo - if issubclass(t_.pattern, Instrument1DCWParameters): + if issubclass(type(model.parameters), Instrument1DCWParameters): self.calculator.createModel(model_key, 'powder1D') - elif issubclass(t_.pattern, Instrument1DTOFParameters): + elif issubclass(type(model.parameters), Instrument1DTOFParameters): self.calculator.createModel(model_key, 'Powder1DTOF') else: raise AttributeError('Unknown EXP type') From 695473b189d367a05879066127e3b3d275d27908 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 11 Aug 2021 10:07:23 +0200 Subject: [PATCH 152/312] Unification of naming conventions --- easyDiffractionLib/Calculators/cryspy.py | 20 ++++++++++---------- easyDiffractionLib/Interfaces/cryspy.py | 18 ++++++++++-------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 1c39fdf4..c606e208 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -49,7 +49,7 @@ def __init__(self): self.current_crystal = {} self.model = None self.phases = cryspy.PhaseL() - self.type = 'powder1D' + self.type = 'powder1DCW' @property def cif_str(self): @@ -60,13 +60,13 @@ def cif_str(self): def cif_str(self, value): self.createCrystal_fromCifStr(value) - def createModel(self, model_id, model_type=''): + def createModel(self, model_id, model_type='powder1DCW'): model = { 'background': cryspy.PdBackgroundL(), 'phase': self.phases } cls = cryspy.Pd - if model_type == 'Powder1DTOF': + if model_type == 'powder1DTOF': cls = cryspy.TOF model['background'] = cryspy.TOFBackground() self.type = 'powder1DTOF' @@ -189,7 +189,7 @@ def createSetup(self, key='setup', cls_type = None): if cls_type is None: cls_type = self.type - if cls_type == 'powder1D': + if cls_type == 'powder1DCW': setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) elif cls_type == 'powder1DTOF': setup = cryspy.TOFParameters(zero=0, dtt1=self.conditions_TOF['dtt1'], dtt2=self.conditions_TOF['dtt2'], @@ -216,7 +216,7 @@ def createResolution(self, cls_type = None): if cls_type is None: cls_type = self.type - if cls_type == 'powder1D': + if cls_type == 'powder1DCW': key = 'pd_instr_resolution' resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) elif cls_type == 'powder1DTOF': @@ -321,10 +321,10 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: profile = self.model.calc_profile(this_x_array, [crystal], True, False) self.hkl_dict = { - 'time': self.model.d_internal_val['peak_' + crystal.data_name].time, - 'h': self.model.d_internal_val['peak_' + crystal.data_name].index_h, - 'k': self.model.d_internal_val['peak_' + crystal.data_name].index_k, - 'l': self.model.d_internal_val['peak_' + crystal.data_name].index_l, + 'time': np.array(self.model.d_internal_val['peak_' + crystal.data_name].time), + 'h': np.array(self.model.d_internal_val['peak_' + crystal.data_name].index_h), + 'k': np.array(self.model.d_internal_val['peak_' + crystal.data_name].index_k), + 'l': np.array(self.model.d_internal_val['peak_' + crystal.data_name].index_l), } res = scale * np.array(profile.intensity_total) + bg if borg.debug: @@ -341,7 +341,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: :rtype: np.ndarray """ res = np.zeros_like(x_array) - if self.type == 'powder1D': + if self.type == 'powder1DCW': return self.powder_1d_calculate(x_array) if self.type == 'powder1DTOF': return self.powder_1d_tof_calculate(x_array) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index aff190ea..02585fe7 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -61,6 +61,7 @@ def create(self, model): t_ = type(model) model_key = self.__identify(model) if issubclass(t_, Instrument1DCWParameters): + self.calculator.createModel(model_key, 'powder1DCW') # These parameters are linked to the Resolution and Setup cryspy objects res_key = self.calculator.createResolution() setup_key = self.calculator.createSetup() @@ -77,6 +78,7 @@ def create(self, model): self.calculator.genericUpdate) ) if issubclass(t_, Instrument1DTOFParameters): + self.calculator.createModel(model_key, 'powder1DTOF') # These parameters are linked to the Resolution and Setup cryspy objects res_key = self.calculator.createResolution(cls_type='powder1DTOF') setup_key = self.calculator.createSetup(cls_type='powder1DTOF') @@ -139,17 +141,17 @@ def create(self, model): for phase in model: ident = str(self.__identify(phase)) + '_phase' self.calculator.assignPhase(model_key, ident) - elif t_.__name__ == 'Powder1DCW': - # #TODO Check to see if parameters and pattern should be initialized here. - self.calculator.createModel(model_key, 'powder1D') - elif t_.__name__ == 'Powder1DTOF': - # #TODO Check to see if parameters and pattern should be initialized here. - self.calculator.createModel(model_key, 'Powder1DTOF') + # elif t_.__name__ == 'Powder1DCW': + # # #TODO Check to see if parameters and pattern should be initialized here. + # + # elif t_.__name__ == 'Powder1DTOF': + # # #TODO Check to see if parameters and pattern should be initialized here. + # elif t_.__name__ == 'Sample': # This is legacy mode. Boo if issubclass(type(model.parameters), Instrument1DCWParameters): - self.calculator.createModel(model_key, 'powder1D') + self.calculator.createModel(model_key, 'powder1DCW') elif issubclass(type(model.parameters), Instrument1DTOFParameters): - self.calculator.createModel(model_key, 'Powder1DTOF') + self.calculator.createModel(model_key, 'powder1DTOF') else: raise AttributeError('Unknown EXP type') else: From 888ad48df76ca96d35788515b67933aee1d094f7 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 11 Aug 2021 12:02:22 +0200 Subject: [PATCH 153/312] Fix TOF generation --- easyDiffractionLib/Calculators/cryspy.py | 11 ++++++++++- easyDiffractionLib/Interfaces/cryspy.py | 12 ++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index c606e208..f44ad526 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -294,7 +294,16 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: for key_inner in ['tof_profile', 'setup']: if not hasattr(self.model, key_inner): - setattr(self.model, key_inner, self.storage[key_inner]) + try: + setattr(self.model, key_inner, self.storage[key_inner]) + except ValueError: + # Try to fix cryspy.... + s = self.storage[key_inner] + cls = s.__class__ + for idx, item in enumerate(self.model.items): + if isinstance(item, cls) and id(item) is not id(s): + self.model.items[idx] = s + break if self.pattern is None: scale = 1.0 diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 02585fe7..a7c8fa69 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -141,12 +141,12 @@ def create(self, model): for phase in model: ident = str(self.__identify(phase)) + '_phase' self.calculator.assignPhase(model_key, ident) - # elif t_.__name__ == 'Powder1DCW': - # # #TODO Check to see if parameters and pattern should be initialized here. - # - # elif t_.__name__ == 'Powder1DTOF': - # # #TODO Check to see if parameters and pattern should be initialized here. - # + elif t_.__name__ == 'Powder1DCW': + # #TODO Check to see if parameters and pattern should be initialized here. + self.calculator.createModel(model_key, 'powder1DCW') + elif t_.__name__ == 'Powder1DTOF': + # #TODO Check to see if parameters and pattern should be initialized here. + self.calculator.createModel(model_key, 'powder1DTOF') elif t_.__name__ == 'Sample': # This is legacy mode. Boo if issubclass(type(model.parameters), Instrument1DCWParameters): self.calculator.createModel(model_key, 'powder1DCW') From a88eef87d008439d9979111b01cbf49ae3caa0e3 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Thu, 12 Aug 2021 10:52:18 +0200 Subject: [PATCH 154/312] Fix changing from TOF->CW --- easyDiffractionLib/Calculators/cryspy.py | 2 +- easyDiffractionLib/Interfaces/cryspy.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index f44ad526..a27ca20b 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -69,7 +69,7 @@ def createModel(self, model_id, model_type='powder1DCW'): if model_type == 'powder1DTOF': cls = cryspy.TOF model['background'] = cryspy.TOFBackground() - self.type = 'powder1DTOF' + self.type = model_type self.model = cls(**model) def createPhase(self, crystal_name, key='phase'): diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index a7c8fa69..d45c8b8a 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -1,12 +1,12 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.2" + from easyCore import borg, np from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters, Powder1DParameters -from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases From a61dd37ab030571c6661a29eb701d487d8022bd4 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 18 Aug 2021 11:09:30 +0200 Subject: [PATCH 155/312] Fix all interfaces to use new schema --- easyDiffractionLib/Interfaces/CFML.py | 18 ++- easyDiffractionLib/Interfaces/GSASII.py | 19 ++- easyDiffractionLib/Interfaces/cryspy.py | 15 +- easyDiffractionLib/interface.py | 203 ------------------------ 4 files changed, 32 insertions(+), 223 deletions(-) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index fd78e8d3..341afca6 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -5,8 +5,7 @@ from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer from easyDiffractionLib.Calculators.CFML import CFML as CFML_calc -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D -from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters from easyDiffractionLib.sample import Sample from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases @@ -66,7 +65,7 @@ def create(self, model): r_list = [] t_ = type(model) model_key = self.__identify(model) - if issubclass(t_, Pars1D): + if issubclass(t_, Instrument1DCWParameters): # These parameters are linked to the Resolution and Setup CFML objects. Note that we can set the job type! self.calculator.createConditions(job_type='N') keys = self._instrument_link.copy() @@ -75,7 +74,7 @@ def create(self, model): self.calculator.conditionsReturn, self.calculator.conditionsUpdate) ) - elif issubclass(t_, Pattern1D): + elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to CFML objects. self.calculator.pattern = model elif issubclass(t_, Lattice): @@ -100,9 +99,9 @@ def create(self, model): elif issubclass(t_, Phases): self._phase = model elif issubclass(t_, Sample): - self._filename = model.filename - self.calculator.filename = model.filename - self.dump_cif() + self.__createModel(model) + elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW']: + self.__createModel(model) else: if self._borg.debug: print(f"I'm a: {type(model)}") @@ -139,6 +138,11 @@ def dump_cif(self, *args, **kwargs): with open(self._filename, 'w') as fid: fid.write(str(self._phase.cif)) + def __createModel(self, model): + self._filename = model.filename + self.calculator.filename = model.filename + self.dump_cif() + def get_value(self, key, item_key): item = borg.map.get_item_by_key(key) return getattr(item, item_key).raw_value diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 610dedec..15574b3a 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -5,8 +5,7 @@ from ..Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer from ..Calculators.GSASII import GSASII as GSAS_calc -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D -from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters from easyDiffractionLib.sample import Sample from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases @@ -66,7 +65,7 @@ def create(self, model): r_list = [] t_ = type(model) model_key = self.__identify(model) - if issubclass(t_, Pars1D): + if issubclass(t_, Instrument1DCWParameters): # These parameters are linked to the Resolution and Setup CFML objects. Note that we can set the job type! self.calculator.createConditions(job_type='N') keys = self._instrument_link.copy() @@ -75,7 +74,7 @@ def create(self, model): self.calculator.conditionsReturn, self.calculator.conditionsUpdate) ) - elif issubclass(t_, Pattern1D): + elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to CFML objects. self.calculator.pattern = model elif issubclass(t_, Lattice): @@ -99,10 +98,11 @@ def create(self, model): self.dump_cif)) elif issubclass(t_, Phases): self._phase = model + elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW']: + # #TODO Check to see if parameters and pattern should be initialized here. + self.__createModel(model_key, 'powder1DCW') elif issubclass(t_, Sample): - self._filename = model.filename - self.calculator.filename = model.filename - self.dump_cif() + self.__createModel(model) else: if self._borg.debug: print(f"I'm a: {type(model)}") @@ -143,6 +143,11 @@ def get_value(self, key, item_key): item = borg.map.get_item_by_key(key) return getattr(item, item_key).raw_value + def __createModel(self, model): + self._filename = model.filename + self.calculator.filename = model.filename + self.dump_cif() + @staticmethod def __identify(obj): return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index d45c8b8a..24d44bf9 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -141,17 +141,17 @@ def create(self, model): for phase in model: ident = str(self.__identify(phase)) + '_phase' self.calculator.assignPhase(model_key, ident) - elif t_.__name__ == 'Powder1DCW': + elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW']: # #TODO Check to see if parameters and pattern should be initialized here. - self.calculator.createModel(model_key, 'powder1DCW') - elif t_.__name__ == 'Powder1DTOF': + self.__createModel(model_key, 'powder1DCW') + elif t_.__name__ in ['Powder1DTOF', 'powder1DTOF', 'Npowder1DTOF']: # #TODO Check to see if parameters and pattern should be initialized here. - self.calculator.createModel(model_key, 'powder1DTOF') + self.__createModel(model_key, 'powder1DTOF') elif t_.__name__ == 'Sample': # This is legacy mode. Boo if issubclass(type(model.parameters), Instrument1DCWParameters): - self.calculator.createModel(model_key, 'powder1DCW') + self.__createModel(model_key, 'powder1DCW') elif issubclass(type(model.parameters), Instrument1DTOFParameters): - self.calculator.createModel(model_key, 'powder1DTOF') + self.__createModel(model_key, 'powder1DTOF') else: raise AttributeError('Unknown EXP type') else: @@ -188,6 +188,9 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: def get_hkl(self, x_array: np.ndarray = None) -> dict: return self.calculator.get_hkl(x_array) + def __createModel(self, model, model_type): + self.calculator.createModel(model, model_type) + @staticmethod def __identify(obj): return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 66cb0a56..52116a4d 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -11,208 +11,5 @@ class InterfaceFactory(InterfaceFactoryTemplate): def __init__(self): super(InterfaceFactory, self).__init__(InterfaceTemplate._interfaces) - # def generate_sample_binding(self, name, *args) -> property: - # """ - # Automatically bind a `Parameter` to the corresponding interface. - # :param name: parameter name - # :type name: str - # :return: binding property - # :rtype: property - # """ - # fun = self.__set_item(self, 'filename') - # fun(args[0].filename) - # return property(fget=None, - # fset=self.__set_sample_item(self, name, *args)) - # - # def generate_instrument_binding(self, name) -> property: - # """ - # Automatically bind a `Parameter` to the corresponding interface. - # :param name: parameter name - # :type name: str - # :return: binding property - # :rtype: property - # """ - # return property(fget=self.__get_instrument_item(self, name), - # fset=self.__set_instrument_item(self, name)) - # - # def generate_background_binding(self, name, background) -> property: - # """ - # Automatically bind a `Parameter` to the corresponding interface. - # :param name: parameter name - # :type name: str - # :return: binding property - # :rtype: property - # """ - # return property(fget=None, - # fset=self.__set_background_item(self, background, name)) - # - # def generate_pattern_binding(self, name, pattern) -> property: - # """ - # Automatically bind a `Parameter` to the corresponding interface. - # :param name: parameter name - # :type name: str - # :return: binding property - # :rtype: property - # """ - # return property(fget=None, - # fset=self.__set_pattern_item(self, pattern, name)) - # - # def generate_binding(self, name, *args, **kwargs) -> property: - # """ - # Automatically bind a `Parameter` to the corresponding interface. - # :param name: parameter name - # :type name: str - # :return: binding property - # :rtype: property - # """ - # return property(self.__get_item(self, name), self.__set_item(self, name)) - # - # @staticmethod - # def __get_item(obj, key: str, external: bool = True) -> Callable: - # """ - # Access the value of a key by a callable object - # :param key: name of parameter to be retrieved - # :type key: str - # :return: function to get key - # :rtype: Callable - # """ - # - # def inner(): - # return obj().get_value(key, external) - # - # return inner - # - # @staticmethod - # def __set_item(obj, key) -> Callable: - # """ - # Set the value of a key by a callable object - # :param obj: object to be created from - # :type obj: InterfaceFactory - # :param key: name of parameter to be set - # :type key: str - # :return: function to set key - # :rtype: Callable - # """ - # - # def inner(value): - # obj().set_value(key, value) - # return inner - # - # @staticmethod - # def __get_sample_item(obj, key: str, holder) -> Callable: - # """ - # Access the value of a key by a callable object - # :param key: name of parameter to be retrieved - # :type key: str - # :return: function to get key - # :rtype: Callable - # """ - # - # def inner(): - # # return obj().get_value(key) - # return None - # return inner - # - # @staticmethod - # def __set_sample_item(obj, key, holder) -> Callable: - # """ - # Set the value of a key by a callable object - # :param obj: object to be created from - # :type obj: InterfaceFactory - # :param key: name of parameter to be set - # :type key: str - # :return: function to set key - # :rtype: Callable - # """ - # - # def inner(value): - # # !!! THIS IS NOT THE WAY TO DO IT !!! - # # !!! FOR TESTING ONLY !!!! - # if obj.current_interface_name == 'CrysPy': - # try: - # obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) - # except: - # obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) - # else: - # holder.phases.cif.to_file(holder.filename, holder.output_index) - # # obj().set_value(key, value) - # return inner - # - # @staticmethod - # def __get_instrument_item(obj, key: str) -> Callable: - # """ - # Access the value of a key by a callable object - # :param key: name of parameter to be retrieved - # :type key: str - # :return: function to get key - # :rtype: Callable - # """ - # - # def inner(): - # return obj().get_instrument_value(key) - # return inner - # - # @staticmethod - # def __set_instrument_item(obj, key) -> Callable: - # """ - # Set the value of a key by a callable object - # :param obj: object to be created from - # :type obj: InterfaceFactory - # :param key: name of parameter to be set - # :type key: str - # :return: function to set key - # :rtype: Callable - # """ - # - # def inner(value): - # obj().set_instrument_value(key, value) - # return inner - # - # @staticmethod - # def __get_background_item(obj, background, index: int) -> Callable: - # """ - # Access the value of a key by a callable object - # :param key: name of parameter to be retrieved - # :type key: str - # :return: function to get key - # :rtype: Callable - # """ - # - # def inner(): - # return obj().get_background_value(background, index) - # return inner - # - # @staticmethod - # def __set_background_item(obj, background, index) -> Callable: - # """ - # Set the value of a key by a callable object - # :param obj: object to be created from - # :type obj: InterfaceFactory - # :param key: name of parameter to be set - # :type key: str - # :return: function to set key - # :rtype: Callable - # """ - # - # def inner(value): - # obj().set_background_value(background, index, value) - # return inner - # - # @staticmethod - # def __set_pattern_item(obj, pattern, index) -> Callable: - # """ - # Set the value of a key by a callable object - # :param obj: object to be created from - # :type obj: InterfaceFactory - # :param key: name of parameter to be set - # :type key: str - # :return: function to set key - # :rtype: Callable - # """ - # - # def inner(value): - # obj().set_pattern_value(pattern, index, value) - # return inner - def get_hkl(self, x_array=None) -> dict: return self().get_hkl(x_array) From 15795213b55598a6c6f4ce11362dfc2faa4b6f73 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 18 Aug 2021 14:49:49 +0200 Subject: [PATCH 156/312] Update interface and exp_type verification logic --- easyDiffractionLib/Interfaces/CFML.py | 18 +++++-- easyDiffractionLib/Interfaces/GSASII.py | 10 ++++ easyDiffractionLib/Interfaces/cryspy.py | 17 +++++-- .../Interfaces/interfaceTemplate.py | 48 ++++++++++++++++++- easyDiffractionLib/interface.py | 9 +++- easyDiffractionLib/sample.py | 21 ++++++-- 6 files changed, 110 insertions(+), 13 deletions(-) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 341afca6..934a244f 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -2,12 +2,12 @@ __version__ = "0.0.2" from easyCore import borg, np -from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer -from easyDiffractionLib.Calculators.CFML import CFML as CFML_calc -from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters -from easyDiffractionLib.sample import Sample from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases +from easyDiffractionLib.sample import Sample +from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters +from easyDiffractionLib.Calculators.CFML import CFML as CFML_calc class CFML(InterfaceTemplate): @@ -54,6 +54,10 @@ class CFML(InterfaceTemplate): 'x_offset': 'x_offset' } + feature_available = { + 'Npowder1DCW': True + } + name = 'CrysFML' def __init__(self): @@ -61,6 +65,12 @@ def __init__(self): self._phase = None self._filename = None + @staticmethod + def feature_checker(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None): + return InterfaceTemplate.features(radiation=radiation, exp_type=exp_type, sample_type=sample_type, + dimensionality=dimensionality, test_str=test_str, + FEATURES=CFML.feature_available) + def create(self, model): r_list = [] t_ = type(model) diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 15574b3a..92798bfd 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -54,6 +54,10 @@ class GSASII(InterfaceTemplate): 'x_offset': 'x_offset' } + feature_available = { + 'Npowder1DCW': True + } + name = 'GSASII' def __init__(self): @@ -61,6 +65,12 @@ def __init__(self): self._phase = None self._filename = None + @staticmethod + def feature_checker(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None): + return InterfaceTemplate.features(radiation=radiation, exp_type=exp_type, sample_type=sample_type, + dimensionality=dimensionality, test_str=test_str, + FEATURES=GSASII.feature_available) + def create(self, model): r_list = [] t_ = type(model) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 24d44bf9..20cb2264 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -3,11 +3,11 @@ from easyCore import borg, np -from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer -from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc -from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters, Powder1DParameters from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters, Powder1DParameters +from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate +from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc class Cryspy(InterfaceTemplate): @@ -53,9 +53,20 @@ class Cryspy(InterfaceTemplate): name = 'CrysPy' + feature_available = { + 'Npowder1DCW': True, + 'Npowder1DTOF': True + } + def __init__(self): self.calculator = Cryspy_calc() + @staticmethod + def feature_checker(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None): + return InterfaceTemplate.features(radiation=radiation, exp_type=exp_type, sample_type=sample_type, + dimensionality=dimensionality, test_str=test_str, + FEATURES=Cryspy.feature_available) + def create(self, model): r_list = [] t_ = type(model) diff --git a/easyDiffractionLib/Interfaces/interfaceTemplate.py b/easyDiffractionLib/Interfaces/interfaceTemplate.py index c91579b0..843b0ac7 100644 --- a/easyDiffractionLib/Interfaces/interfaceTemplate.py +++ b/easyDiffractionLib/Interfaces/interfaceTemplate.py @@ -2,10 +2,17 @@ __version__ = "0.0.1" from abc import ABCMeta, abstractmethod -from typing import Tuple +from typing import Tuple, List from easyCore import np, borg from easyCore.Utils.json import MSONable +exp_type_strings = { + 'radiation_options': ['N', 'X'], + 'exp_type_options': ['CW', 'TOF'], + 'dimensional_options': ['1D', '2D'], + 'sample_options': ['powder', 'single'] +} + class InterfaceTemplate(MSONable, metaclass=ABCMeta): """ @@ -15,6 +22,44 @@ class InterfaceTemplate(MSONable, metaclass=ABCMeta): _borg = borg _link = {} + @staticmethod + def features(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None, FEATURES=None): + + if FEATURES is None: + raise AttributeError + feature_dict = InterfaceTemplate._feature_generator(radiation=radiation, exp_type=exp_type, + sample_type=sample_type, dimensionality=dimensionality) + + for key in FEATURES.keys(): + feature_dict[key] = FEATURES[key] + if test_str is None: + test_str = radiation + sample_type + dimensionality + exp_type + + return feature_dict[test_str] + + @staticmethod + def _feature_generator(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D'): + radiation_options = exp_type_strings['radiation_options'] + if radiation not in radiation_options: + raise AttributeError(f'"{radiation}" is not supported, only: {radiation_options}') + exp_type_options = exp_type_strings['exp_type_options'] + if exp_type not in exp_type_options: + raise AttributeError(f'"{exp_type}" is not supported, only: {exp_type_options}') + dimensional_options = exp_type_strings['dimensional_options'] + if dimensionality not in dimensional_options: + raise AttributeError(f'"{dimensionality}" is not supported, only: {dimensional_options}') + sample_options = exp_type_strings['sample_options'] + if sample_type not in sample_options: + raise AttributeError(f'"{sample_type}" is not supported, only: {sample_options}') + + features = [''.join(item) for item in np.array(np.meshgrid(radiation_options, + sample_options, + dimensional_options, + exp_type_options)).T.reshape(-1, + len(exp_type_strings)).tolist()] + feature_dict = dict.fromkeys(features, False) + return feature_dict + def __init_subclass__(cls, is_abstract: bool = False, **kwargs): """ Initialise all subclasses so that they can be created in the factory @@ -83,3 +128,4 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: @abstractmethod def get_hkl(self, x_array: np.ndarray = None) -> dict: pass + \ No newline at end of file diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 52116a4d..ab294584 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -1,7 +1,7 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" -from typing import Callable +from typing import Callable, List from easyDiffractionLib.Interfaces import InterfaceTemplate from easyCore.Objects.Inferface import InterfaceFactoryTemplate @@ -13,3 +13,10 @@ def __init__(self): def get_hkl(self, x_array=None) -> dict: return self().get_hkl(x_array) + + def interface_compatability(self, check_str: str) -> List[str]: + compatible_interfaces = [] + for interface in self._interfaces: + if interface.feature_checker(test_str=check_str): + compatible_interfaces.append(self.return_name(interface)) + return compatible_interfaces diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index db319564..d7244eae 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -8,7 +8,7 @@ from easyCore.Utils.UndoRedo import property_stack_deco from easyDiffractionLib import Phase, Phases -from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as Pars1D +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters from easyDiffractionLib.Profiles.P1D import Powder1DParameters as Pattern1D @@ -25,7 +25,7 @@ def __init__(self, phases: Union[Phase, Phases] = None, raise AttributeError('`phases` must be a Crystal or Crystals') if parameters is None: - parameters = Pars1D.default() + parameters = Instrument1DCWParameters.default() if pattern is None: pattern = Pattern1D.default() @@ -79,12 +79,14 @@ def parameters(self): @parameters.setter @property_stack_deco def parameters(self, value): - if not isinstance(value, Pars1D): + if not isinstance(value, Instrument1DCWParameters): raise ValueError self._parameters = value self._parameters.interface = self._interface def update_bindings(self): + if not self.interface.current_interface.feature_checker(test_str=self.exp_type_str): + raise AssertionError('The interface is not suitable for this experiment') self.generate_bindings() @property @@ -96,4 +98,15 @@ def as_dict(self, skip: list = None) -> dict: del d['_phases'] del d['_parameters'] del d['_pattern'] - return d \ No newline at end of file + return d + + @property + def exp_type_str(self) -> str: + type_str = 'Npowder1D' + if isinstance(self._parameters, Instrument1DCWParameters): + type_str += 'CW' + elif isinstance(self._parameters, Instrument1DTOFParameters): + type_str += 'TOF' + else: + raise TypeError(f'Experiment is of unknown type: {type(self._parameters)}') + return type_str From bcf347488cd525bb4f2f3a3eea4a1abf6f593400 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Thu, 19 Aug 2021 15:37:31 +0200 Subject: [PATCH 157/312] cryspy multiprocess support --- easyDiffractionLib/Calculators/cryspy.py | 94 +++++++++++++++--------- pyproject.toml | 1 + 2 files changed, 62 insertions(+), 33 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index a27ca20b..4c69e5c7 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -1,9 +1,13 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.2" +import time + import cryspy import warnings from easyCore import np, borg +from pathos import multiprocessing as mp +import functools warnings.filterwarnings('ignore') @@ -50,6 +54,7 @@ def __init__(self): self.model = None self.phases = cryspy.PhaseL() self.type = 'powder1DCW' + self.additional_data = {} @property def cif_str(self): @@ -83,8 +88,9 @@ def assignPhase(self, model_name, phase_name): def removePhase(self, model_name, phase_name): phase = self.storage[phase_name] - idx = self.model.phase.items.index(phase) - self.model.phase.items.pop(idx) + del self.storage[phase_name] + self.phases.items.pop(self.phases.items.index(phase)) + self.current_crystal.pop(int(phase_name.split('_')[0])) def createCrystal_fromCifStr(self, cif_str: str): crystal = cryspy.Crystal.from_cif(cif_str) @@ -259,28 +265,7 @@ def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: if borg.debug: print('CALLING FROM Cryspy\n----------------------') - # USe the default for now - crystal = self.storage[list(self.current_crystal.keys())[-1]] - - if len(self.pattern.backgrounds) == 0: - bg = np.zeros_like(this_x_array) - else: - bg = self.pattern.backgrounds[0].calculate(this_x_array) - - if crystal is None: - return bg - - profile = self.model.calc_profile(this_x_array, [crystal], True, False) - self.hkl_dict = { - 'ttheta': self.model.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, - 'h': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_h, - 'k': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_k, - 'l': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_l, - } - res = scale * np.array(profile.intensity_total) + bg - if borg.debug: - print(f"y_calc: {res}") - return res + return self.do_calc(scale, this_x_array) def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -317,29 +302,72 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: if borg.debug: print('CALLING FROM Cryspy\n----------------------') - # USe the default for now - crystal = self.storage[list(self.current_crystal.keys())[-1]] + return self.do_calc(scale, this_x_array) + def do_calc(self, scale, this_x_array): if len(self.pattern.backgrounds) == 0: bg = np.zeros_like(this_x_array) else: bg = self.pattern.backgrounds[0].calculate(this_x_array) - if crystal is None: + num_crys = len(self.current_crystal.keys()) + if num_crys == 0: return bg + elif num_crys == 1: + crystals = [self.storage[list(self.current_crystal.keys())[-1]]] + profiles = [self.model.calc_profile(this_x_array, crystals, True, False)] + peak_dat = [self.model.d_internal_val['peak_' + crystals[0].data_name]] + crystals = [crystals] + elif num_crys > 1: + pool = mp.ProcessPool(num_crys) + crystals = [[self.storage[key]] for key in self.current_crystal.keys()] + result = pool.amap(functools.partial(self._do_run, this_x_array), crystals) + while not result.ready(): + time.sleep(0.1) + obtained = result.get() + profiles = [obj[0] for obj in obtained] + peak_dat = [obj[1] for obj in obtained] + else: + raise ArithmeticError - profile = self.model.calc_profile(this_x_array, [crystal], True, False) + # Do this for now + x_str = 'ttheta' + if self.type == 'powder1DTOF': + x_str = 'time' self.hkl_dict = { - 'time': np.array(self.model.d_internal_val['peak_' + crystal.data_name].time), - 'h': np.array(self.model.d_internal_val['peak_' + crystal.data_name].index_h), - 'k': np.array(self.model.d_internal_val['peak_' + crystal.data_name].index_k), - 'l': np.array(self.model.d_internal_val['peak_' + crystal.data_name].index_l), + x_str: getattr(peak_dat[0], 'numpy_' + x_str), + 'h': peak_dat[0].numpy_index_h, + 'k': peak_dat[0].numpy_index_k, + 'l': peak_dat[0].numpy_index_l, } - res = scale * np.array(profile.intensity_total) + bg + res = scale * np.sum(np.array([[np.array(prof.intensity_total)] for prof in profiles]), axis=0) + bg + + self.additional_data = { + crystal[0].data_name: { + 'hkl': { + x_str: getattr(peak_dat[idx], 'numpy_' + x_str), + 'h': peak_dat[idx].numpy_index_h, + 'k': peak_dat[idx].numpy_index_k, + 'l': peak_dat[idx].numpy_index_l, + }, + 'profile': scale * np.array(profiles[idx].intensity_total) + } for idx, crystal in enumerate(crystals) + } + self.additional_data['background'] = bg + if borg.debug: print(f"y_calc: {res}") return res + def _do_run(self, x_array, crystals): + phasesL = cryspy.PhaseL() + idx = [idx for idx, item in enumerate(self.phases.items) if item.label == crystals[0].data_name][0] + phasesL.items.append(self.phases.items[idx]) + idx = [idx for idx, item in enumerate(self.model.items) if isinstance(item, cryspy.PhaseL)][0] + self.model.items[idx] = phasesL + result1 = self.model.calc_profile(x_array, crystals, flag_internal=True, flag_polarized=False) + result2 = self.model.d_internal_val['peak_' + crystals[0].data_name] + return result1, result2 def calculate(self, x_array: np.ndarray) -> np.ndarray: """ diff --git a/pyproject.toml b/pyproject.toml index 2d5645d5..24a647a3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ matplotlib = "^3.4" CFML = '^0.0.1' GSASII = '^0.0.1' easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } +pathos = "^0.2.8" [tool.poetry.dev-dependencies] pytest = "^5.2" From b5bb31e778db65d0f50dd999a6b5d1bbb082bcca Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 20 Aug 2021 14:06:00 +0200 Subject: [PATCH 158/312] Change mp pool methodology --- easyDiffractionLib/Calculators/cryspy.py | 88 ++++++++++++------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 4c69e5c7..431e03d9 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -27,10 +27,10 @@ def __init__(self): } self.conditions_TOF = { - 'ttheta_bank': 0, - 'dtt1': 0.1, - 'dtt2': 0, - 'resolution': { + 'ttheta_bank': 0, + 'dtt1': 0.1, + 'dtt2': 0, + 'resolution': { 'sigma0': 0, 'sigma1': 0, 'sigma2': 0, @@ -190,7 +190,7 @@ def createBackground(self, background_obj): self.storage[key] = background_obj return key - def createSetup(self, key='setup', cls_type = None): + def createSetup(self, key='setup', cls_type=None): if cls_type is None: cls_type = self.type @@ -217,7 +217,7 @@ def genericReturn(self, item_key, value_key): value = getattr(item, value_key) return value - def createResolution(self, cls_type = None): + def createResolution(self, cls_type=None): if cls_type is None: cls_type = self.type @@ -265,7 +265,7 @@ def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: if borg.debug: print('CALLING FROM Cryspy\n----------------------') - return self.do_calc(scale, this_x_array) + return self.do_calc_setup(scale, this_x_array) def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -302,33 +302,34 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: if borg.debug: print('CALLING FROM Cryspy\n----------------------') - return self.do_calc(scale, this_x_array) + return self.do_calc_setup(scale, this_x_array) - def do_calc(self, scale, this_x_array): + def do_calc_setup(self, scale, this_x_array): if len(self.pattern.backgrounds) == 0: bg = np.zeros_like(this_x_array) else: bg = self.pattern.backgrounds[0].calculate(this_x_array) num_crys = len(self.current_crystal.keys()) + if num_crys == 0: return bg - elif num_crys == 1: - crystals = [self.storage[list(self.current_crystal.keys())[-1]]] - profiles = [self.model.calc_profile(this_x_array, crystals, True, False)] - peak_dat = [self.model.d_internal_val['peak_' + crystals[0].data_name]] - crystals = [crystals] - elif num_crys > 1: - pool = mp.ProcessPool(num_crys) - crystals = [[self.storage[key]] for key in self.current_crystal.keys()] - result = pool.amap(functools.partial(self._do_run, this_x_array), crystals) - while not result.ready(): - time.sleep(0.1) - obtained = result.get() - profiles = [obj[0] for obj in obtained] - peak_dat = [obj[1] for obj in obtained] - else: - raise ArithmeticError + + crystals = [self.storage[key] for key in self.current_crystal.keys()] + phase_lists = [] + for crystal in crystals: + phasesL = cryspy.PhaseL() + idx = [idx for idx, item in enumerate(self.phases.items) if item.label == crystal.data_name][0] + phasesL.items.append(self.phases.items[idx]) + phase_lists.append(phasesL) + pool = mp.ProcessPool(num_crys) + result = pool.amap(functools.partial(_do_run, self.model, this_x_array), crystals, phase_lists) + while not result.ready(): + time.sleep(0.1) + obtained = result.get() + profiles, peak_dat = zip(*obtained) + # else: + # raise ArithmeticError # Do this for now x_str = 'ttheta' @@ -336,20 +337,21 @@ def do_calc(self, scale, this_x_array): x_str = 'time' self.hkl_dict = { x_str: getattr(peak_dat[0], 'numpy_' + x_str), - 'h': peak_dat[0].numpy_index_h, - 'k': peak_dat[0].numpy_index_k, - 'l': peak_dat[0].numpy_index_l, + 'h': peak_dat[0].numpy_index_h, + 'k': peak_dat[0].numpy_index_k, + 'l': peak_dat[0].numpy_index_l, } + res = scale * np.sum(np.array([[np.array(prof.intensity_total)] for prof in profiles]), axis=0) + bg self.additional_data = { - crystal[0].data_name: { - 'hkl': { + crystal.data_name: { + 'hkl': { x_str: getattr(peak_dat[idx], 'numpy_' + x_str), - 'h': peak_dat[idx].numpy_index_h, - 'k': peak_dat[idx].numpy_index_k, - 'l': peak_dat[idx].numpy_index_l, - }, + 'h': peak_dat[idx].numpy_index_h, + 'k': peak_dat[idx].numpy_index_k, + 'l': peak_dat[idx].numpy_index_l, + }, 'profile': scale * np.array(profiles[idx].intensity_total) } for idx, crystal in enumerate(crystals) } @@ -359,16 +361,6 @@ def do_calc(self, scale, this_x_array): print(f"y_calc: {res}") return res - def _do_run(self, x_array, crystals): - phasesL = cryspy.PhaseL() - idx = [idx for idx, item in enumerate(self.phases.items) if item.label == crystals[0].data_name][0] - phasesL.items.append(self.phases.items[idx]) - idx = [idx for idx, item in enumerate(self.model.items) if isinstance(item, cryspy.PhaseL)][0] - self.model.items[idx] = phasesL - result1 = self.model.calc_profile(x_array, crystals, flag_internal=True, flag_polarized=False) - result2 = self.model.d_internal_val['peak_' + crystals[0].data_name] - return result1, result2 - def calculate(self, x_array: np.ndarray) -> np.ndarray: """ For a given x calculate the corresponding y @@ -408,3 +400,11 @@ def get_hkl(self, tth: np.array = None) -> dict: } return hkl_dict + + +def _do_run(model, x_array, crystals, phase_list): + idx = [idx for idx, item in enumerate(model.items) if isinstance(item, cryspy.PhaseL)][0] + model.items[idx] = phase_list + result1 = model.calc_profile(x_array, [crystals], flag_internal=True, flag_polarized=False) + result2 = model.d_internal_val['peak_' + crystals.data_name] + return result1, result2 From be81a22e7141b319c30803a44cdd368a625e9ada Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 20 Aug 2021 15:00:58 +0200 Subject: [PATCH 159/312] Add scaling parameters for phases --- easyDiffractionLib/Calculators/cryspy.py | 10 +++++++++- easyDiffractionLib/Interfaces/cryspy.py | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 431e03d9..7fd3a56c 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -89,9 +89,16 @@ def assignPhase(self, model_name, phase_name): def removePhase(self, model_name, phase_name): phase = self.storage[phase_name] del self.storage[phase_name] + del self.storage[str(model_name) + '_scale'] self.phases.items.pop(self.phases.items.index(phase)) self.current_crystal.pop(int(phase_name.split('_')[0])) + def setPhaseScale(self, model_name, scale=1): + self.storage[str(model_name) + '_scale'] = scale + + def getPhaseScale(self, model_name, *args, **kwargs): + return self.storage.get(str(model_name) + '_scale', 1) + def createCrystal_fromCifStr(self, cif_str: str): crystal = cryspy.Crystal.from_cif(cif_str) key = crystal.data_name @@ -316,6 +323,7 @@ def do_calc_setup(self, scale, this_x_array): return bg crystals = [self.storage[key] for key in self.current_crystal.keys()] + phase_scales = [self.storage[str(key) + '_scale'] for key in self.current_crystal.keys()] phase_lists = [] for crystal in crystals: phasesL = cryspy.PhaseL() @@ -342,7 +350,7 @@ def do_calc_setup(self, scale, this_x_array): 'l': peak_dat[0].numpy_index_l, } - res = scale * np.sum(np.array([[np.array(prof.intensity_total)] for prof in profiles]), axis=0) + bg + res = scale * np.sum(np.array([[phase_scales[idx] * np.array(prof.intensity_total)] for idx, prof in enumerate(profiles)]), axis=0) + bg self.additional_data = { crystal.data_name: { diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 20cb2264..ed4276d2 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -145,6 +145,12 @@ def create(self, model): crystal_name = self.calculator.createEmptyCrystal(model.name, key=model_key) self.calculator.assignCell_toCrystal(self.__identify(model.cell), model_key) self.calculator.assignSpaceGroup_toCrystal(self.__identify(model._spacegroup), model_key) + self.calculator.setPhaseScale(model_key, scale=model.scale.raw_value) + r_list.append( + ItemContainer(model_key, {'scale': 'scale'}, + self.calculator.getPhaseScale, + self.calculator.setPhaseScale) + ) for atom in model.atoms: self.calculator.assignAtom_toCrystal(self.__identify(atom), model_key) elif issubclass(t_, Phases): From c5a005c29f61c7e7a3b4fb41d30f835ea279f925 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 23 Aug 2021 15:07:22 +0200 Subject: [PATCH 160/312] Initial Polarization work --- easyDiffractionLib/Calculators/CFML.py | 2 +- easyDiffractionLib/Calculators/GSASII.py | 2 +- easyDiffractionLib/Calculators/cryspy.py | 155 ++++++++++++++--------- easyDiffractionLib/Interfaces/CFML.py | 2 +- easyDiffractionLib/Interfaces/GSASII.py | 2 +- easyDiffractionLib/Interfaces/cryspy.py | 2 +- easyDiffractionLib/interface.py | 4 +- 7 files changed, 104 insertions(+), 65 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 194e2cfb..5b470dc3 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -176,7 +176,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: return res - def get_hkl(self, tth: np.array = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: hkl_dict = self.hkl_dict if tth is not None: pass diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 578ead58..c41c8b67 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -157,7 +157,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: return res - def get_hkl(self, tth: np.array = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: hkl_dict = self.hkl_dict if tth is not None: pass diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 7fd3a56c..95ddd8f2 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -43,18 +43,13 @@ def __init__(self): 'beta1': 0} } self.background = None - self.hkl_dict = { - 'ttheta': np.empty(0), - 'h': np.empty(0), - 'k': np.empty(0), - 'l': np.empty(0) - } self.storage = {} self.current_crystal = {} self.model = None self.phases = cryspy.PhaseL() self.type = 'powder1DCW' self.additional_data = {} + self.polarized = False @property def cif_str(self): @@ -70,6 +65,12 @@ def createModel(self, model_id, model_type='powder1DCW'): 'background': cryspy.PdBackgroundL(), 'phase': self.phases } + + self.polarized = False + if model_type.endswith('Pol'): + self.polarized = True + model_type = model_type.split('Pol')[0] + cls = cryspy.Pd if model_type == 'powder1DTOF': cls = cryspy.TOF @@ -331,9 +332,9 @@ def do_calc_setup(self, scale, this_x_array): phasesL.items.append(self.phases.items[idx]) phase_lists.append(phasesL) pool = mp.ProcessPool(num_crys) - result = pool.amap(functools.partial(_do_run, self.model, this_x_array), crystals, phase_lists) + result = pool.amap(functools.partial(_do_run, self.model, self.polarized, this_x_array), crystals, phase_lists) while not result.ready(): - time.sleep(0.1) + time.sleep(0.01) obtained = result.get() profiles, peak_dat = zip(*obtained) # else: @@ -343,31 +344,25 @@ def do_calc_setup(self, scale, this_x_array): x_str = 'ttheta' if self.type == 'powder1DTOF': x_str = 'time' - self.hkl_dict = { - x_str: getattr(peak_dat[0], 'numpy_' + x_str), - 'h': peak_dat[0].numpy_index_h, - 'k': peak_dat[0].numpy_index_k, - 'l': peak_dat[0].numpy_index_l, - } - - res = scale * np.sum(np.array([[phase_scales[idx] * np.array(prof.intensity_total)] for idx, prof in enumerate(profiles)]), axis=0) + bg - - self.additional_data = { - crystal.data_name: { - 'hkl': { - x_str: getattr(peak_dat[idx], 'numpy_' + x_str), - 'h': peak_dat[idx].numpy_index_h, - 'k': peak_dat[idx].numpy_index_k, - 'l': peak_dat[idx].numpy_index_l, - }, - 'profile': scale * np.array(profiles[idx].intensity_total) - } for idx, crystal in enumerate(crystals) - } + if self.polarized: + # TODO *REPLACE PLACEHOLDER FN* + dependents, additional_data = self.polarized_update(lambda up, down: up + down, crystals, profiles, + peak_dat, phase_scales, x_str) + else: + dependents, additional_data = self.nonPolarized_update(crystals, profiles, peak_dat, phase_scales, x_str) + self.additional_data.update(additional_data) + self.additional_data['global_scale'] = scale self.additional_data['background'] = bg + self.additional_data['ivar_run'] = this_x_array + self.additional_data['components'] = dependents + self.additional_data['phase_names'] = list(additional_data.keys()) + self.additional_data['type'] = self.type + + dependent_output = scale * np.sum(dependents, axis=0) + bg if borg.debug: - print(f"y_calc: {res}") - return res + print(f"y_calc: {dependent_output}") + return dependent_output def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -378,41 +373,85 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: :rtype: np.ndarray """ res = np.zeros_like(x_array) + self.additional_data['ivar'] = res if self.type == 'powder1DCW': return self.powder_1d_calculate(x_array) if self.type == 'powder1DTOF': return self.powder_1d_tof_calculate(x_array) return res - def get_hkl(self, tth: np.array = None) -> dict: - - hkl_dict = self.hkl_dict - - if tth is not None: - # crystal = cryspy.Crystal.from_cif(self.cif_str) - # phase_list = cryspy.PhaseL() - # phase = cryspy.Phase(label=crystal.data_name, scale=1, igsize=0) - # phase_list.items.append(phase) - # setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) - # background = cryspy.PdBackgroundL() - # resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) - # pd = cryspy.Pd(setup=setup, resolution=resolution, phase=phase_list, background=background) - crystal = self.storage[list(self.current_crystal.keys())[-1]] - _ = self.model.calc_profile(tth, [crystal], True, False) - - hkl_dict = { - 'ttheta': self.model.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, - 'h': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_h, - 'k': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_k, - 'l': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_l, - } - - return hkl_dict - - -def _do_run(model, x_array, crystals, phase_list): + def get_hkl(self, x_array: np.ndarray = None, idx: int = 0, phase_name=None) -> dict: + + # Do we need to re-run a calculation to get the HKL's + do_run = False + old_x = self.additional_data.get('ivar', np.array(())) + if not np.array_equal(old_x, x_array): + do_run = True + if do_run and x_array is not None: + _ = self.calculate(x_array) + + # Collate and return + if phase_name is None: + known_phases = list(self.current_crystal.values()) + phase_name = known_phases[idx] + phase_data = self.additional_data.get(phase_name, False) + return phase_data['hkl'] + + @staticmethod + def nonPolarized_update(crystals, profiles, peak_dat, scales, x_str): + dependent = np.array([profile.intensity_total for profile in profiles]) + + output = {} + for idx, profile in enumerate(profiles): + output.update({ + crystals[idx].data_name: { + 'hkl': { + x_str: getattr(peak_dat[idx], 'numpy_' + x_str), + 'h': peak_dat[idx].numpy_index_h, + 'k': peak_dat[idx].numpy_index_k, + 'l': peak_dat[idx].numpy_index_l, + }, + 'profile': scales[idx] * dependent[idx, :], + 'components': { + 'total': dependent[idx, :] + }, + 'profile_scale': scales[idx], + } + }) + return dependent, output + + @staticmethod + def polarized_update(func, crystals, profiles, peak_dat, scales, x_str): + up = np.array([profile.intensity_up_total for profile in profiles]) + down = np.array([profile.intensity_down_total for profile in profiles]) + dependent = np.array([func(u, d) for u, d in zip(up, down)]) + + output = {} + for idx, profile in enumerate(profiles): + output.update({ + crystals[idx].data_name: { + 'hkl': { + x_str: getattr(peak_dat[idx], 'numpy_' + x_str), + 'h': peak_dat[idx].numpy_index_h, + 'k': peak_dat[idx].numpy_index_k, + 'l': peak_dat[idx].numpy_index_l, + }, + 'profile': scales[idx] * dependent[idx, :], + 'components': { + 'total': dependent[idx, :], + 'up': up[idx, :], + 'down': down[idx, :] + }, + 'profile_scale': scales[idx], + 'func': func + } + }) + return dependent, output + + +def _do_run(model, polarized, x_array, crystals, phase_list, ): idx = [idx for idx, item in enumerate(model.items) if isinstance(item, cryspy.PhaseL)][0] model.items[idx] = phase_list - result1 = model.calc_profile(x_array, [crystals], flag_internal=True, flag_polarized=False) + result1 = model.calc_profile(x_array, [crystals], flag_internal=True, flag_polarized=polarized) result2 = model.d_internal_val['peak_' + crystals.data_name] return result1, result2 diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 934a244f..5a32299c 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -139,7 +139,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: return self.calculator.get_hkl(x_array) def dump_cif(self, *args, **kwargs): diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 92798bfd..4b3ea812 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -140,7 +140,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: return self.calculator.get_hkl(x_array) def dump_cif(self, *args, **kwargs): diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index ed4276d2..c6fdecc3 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -202,7 +202,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: return self.calculator.get_hkl(x_array) def __createModel(self, model, model_type): diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index ab294584..95c4e998 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -11,8 +11,8 @@ class InterfaceFactory(InterfaceFactoryTemplate): def __init__(self): super(InterfaceFactory, self).__init__(InterfaceTemplate._interfaces) - def get_hkl(self, x_array=None) -> dict: - return self().get_hkl(x_array) + def get_hkl(self, x_array=None, idx=None, phase_name=None) -> dict: + return self().get_hkl(x_array, idx=idx, phase_name=phase_name) def interface_compatability(self, check_str: str) -> List[str]: compatible_interfaces = [] From 32d85c0de6352919d803b67c9143cab4f9f498ff Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 24 Aug 2021 10:23:35 +0200 Subject: [PATCH 161/312] Work on obtaining HKL --- easyDiffractionLib/Calculators/CFML.py | 85 ++++++++++++++++++++---- easyDiffractionLib/Calculators/cryspy.py | 15 ++++- easyDiffractionLib/Interfaces/CFML.py | 13 +++- easyDiffractionLib/Interfaces/GSASII.py | 3 + easyDiffractionLib/Interfaces/cryspy.py | 4 ++ easyDiffractionLib/interface.py | 3 + 6 files changed, 105 insertions(+), 18 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 5b470dc3..e41291d0 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -21,6 +21,8 @@ def __init__(self, filename: str = None): 'k': np.empty(0), 'l': np.empty(0) } + self.known_phases = {} + self.additional_data = {} def createConditions(self, job_type='N'): self.conditions = { @@ -122,13 +124,6 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: start_time = timeit.default_timer() - hkltth = np.array([[*reflection_list[i].hkl, reflection_list[i].stl] for i in range(reflection_list.nref)]) - - self.hkl_dict['ttheta'] = np.rad2deg(np.arcsin(hkltth[:, 3] * job_info.lambdas[0])) * 2 - self.hkl_dict['h'] = hkltth[:, 0] - self.hkl_dict['k'] = hkltth[:, 1] - self.hkl_dict['l'] = hkltth[:, 2] - end_time = timeit.default_timer() print("+ set reflection_list: {0:.4f} s".format(end_time - start_time)) @@ -160,7 +155,18 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: else: bg = self.pattern.backgrounds[0].calculate(this_x_array) - res = scale * diffraction_pattern.ycalc + bg + dependent, additional_data = self.nonPolarized_update(list(self.known_phases.items())[0], diffraction_pattern, + reflection_list, job_info, scales=1) + self.additional_data.update(additional_data) + self.additional_data['global_scale'] = scale + self.additional_data['background'] = bg + self.additional_data['ivar_run'] = this_x_array + self.additional_data['ivar'] = x_array + self.additional_data['components'] = diffraction_pattern.ycalc + self.additional_data['phase_names'] = list(self.known_phases.items()) + self.additional_data['type'] = 'powder1DCW' + + res = scale * dependent + bg end_time = timeit.default_timer() print("+ calculate E: {0:.4f} s".format(end_time - start_time)) @@ -176,8 +182,61 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: return res - def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: - hkl_dict = self.hkl_dict - if tth is not None: - pass - return hkl_dict + def get_hkl(self, x_array: np.ndarray = None, idx=0, phase_name=None) -> dict: + + # Do we need to re-run a calculation to get the HKL's + do_run = False + old_x = self.additional_data.get('ivar', np.array(())) + if not np.array_equal(old_x, x_array): + do_run = True + if do_run and x_array is not None: + _ = self.calculate(x_array) + + # Collate and return + if phase_name is None: + known_phases = list(self.known_phases.values()) + phase_name = known_phases[idx] + phase_data = self.additional_data.get(phase_name, {}) + return phase_data.get('hkl', { + 'ttheta': np.array([]), + 'h': np.array([]), + 'k': np.array([]), + 'l': np.array([]) + }) + + @staticmethod + def nonPolarized_update(crystal_name, diffraction_pattern, reflection_list, job_info, scales=1): + # dependent = np.array([diffraction_pattern.ycalc for diffraction_pattern in profiles]) + dependent = diffraction_pattern.ycalc + + hkltth = np.array([[*reflection_list[i].hkl, reflection_list[i].stl] for i in range(reflection_list.nref)]) + + output = { + crystal_name: { + 'hkl': { + 'ttheta': np.rad2deg(np.arcsin(hkltth[:, 3] * job_info.lambdas[0])) * 2, + 'h': hkltth[:, 0], + 'k': hkltth[:, 1], + 'l': hkltth[:, 2], + }, + 'profile': scales * dependent, + 'components': { + 'total': dependent + }, + 'profile_scale': scales, + } + } + return dependent, output + + def add_phase(self, phase_id, phase_name): + self.known_phases[phase_id] = phase_name + + def remove_phase(self, phases_id): + if phases_id in self.known_phases: + del self.known_phases[phases_id] + + def get_phase_components(self, phase_name): + data = None + if phase_name in self.additional_data['phase_names']: + data = self.additional_data[phase_name].copy() + return data diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 95ddd8f2..720f2f55 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -394,8 +394,13 @@ def get_hkl(self, x_array: np.ndarray = None, idx: int = 0, phase_name=None) -> if phase_name is None: known_phases = list(self.current_crystal.values()) phase_name = known_phases[idx] - phase_data = self.additional_data.get(phase_name, False) - return phase_data['hkl'] + phase_data = self.additional_data.get(phase_name, {}) + return phase_data.get('hkl', { + 'ttheta': np.array([]), + 'h': np.array([]), + 'k': np.array([]), + 'l': np.array([]) + }) @staticmethod def nonPolarized_update(crystals, profiles, peak_dat, scales, x_str): @@ -448,6 +453,12 @@ def polarized_update(func, crystals, profiles, peak_dat, scales, x_str): }) return dependent, output + def get_phase_components(self, phase_name): + data = None + if phase_name in self.additional_data['phase_names']: + data = self.additional_data[phase_name].copy() + return data + def _do_run(model, polarized, x_array, crystals, phase_list, ): idx = [idx for idx, item in enumerate(model.items) if isinstance(item, cryspy.PhaseL)][0] diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 5a32299c..4cbf81a6 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -3,7 +3,7 @@ from easyCore import borg, np from easyCore.Objects.Inferface import ItemContainer -from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases +from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases, Phase from easyDiffractionLib.sample import Sample from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters @@ -108,6 +108,8 @@ def create(self, model): self.dump_cif)) elif issubclass(t_, Phases): self._phase = model + elif issubclass(t_, Phase): + self.calculator.add_phase(str(model_key), model.name) elif issubclass(t_, Sample): self.__createModel(model) elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW']: @@ -124,10 +126,12 @@ def remove_atom(self, crystal_obj, atom): pass def add_phase(self, phases_obj, phase_obj): - pass + ident = str(self.__identify(phase_obj)) + self.calculator.add_phase(ident, phase_obj.name) def remove_phase(self, phases_obj, phase_obj): - pass + ident = str(self.__identify(phase_obj)) + self.calculator.remove_phase(ident) def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ @@ -157,6 +161,9 @@ def get_value(self, key, item_key): item = borg.map.get_item_by_key(key) return getattr(item, item_key).raw_value + def get_phase_components(self, phase_name): + return None + @staticmethod def __identify(obj): return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 4b3ea812..190b12f1 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -158,6 +158,9 @@ def __createModel(self, model): self.calculator.filename = model.filename self.dump_cif() + def get_phase_components(self, phase_name): + return None + @staticmethod def __identify(obj): return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index c6fdecc3..01220469 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -205,6 +205,10 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: return self.calculator.get_hkl(x_array) + def get_phase_components(self, phase_name): + data = self.calculator.get_phase_components(phase_name) + return data + def __createModel(self, model, model_type): self.calculator.createModel(model, model_type) diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 95c4e998..0d991ce6 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -14,6 +14,9 @@ def __init__(self): def get_hkl(self, x_array=None, idx=None, phase_name=None) -> dict: return self().get_hkl(x_array, idx=idx, phase_name=phase_name) + def get_phase_components(self, phase_name): + return self().get_phase_components(phase_name) + def interface_compatability(self, check_str: str) -> List[str]: compatible_interfaces = [] for interface in self._interfaces: From 28d9177fbaa526a2f2160600cc864f81b8949d0c Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 24 Aug 2021 10:32:45 +0200 Subject: [PATCH 162/312] Fix get HKL --- easyDiffractionLib/Interfaces/CFML.py | 2 +- easyDiffractionLib/Interfaces/GSASII.py | 2 +- easyDiffractionLib/Interfaces/cryspy.py | 2 +- easyDiffractionLib/Interfaces/interfaceTemplate.py | 2 +- easyDiffractionLib/interface.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 934a244f..6c47a403 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -139,7 +139,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: return self.calculator.get_hkl(x_array) def dump_cif(self, *args, **kwargs): diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 92798bfd..f4fadd79 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -140,7 +140,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: return self.calculator.get_hkl(x_array) def dump_cif(self, *args, **kwargs): diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 20cb2264..2e70a8ce 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -196,7 +196,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: return self.calculator.get_hkl(x_array) def __createModel(self, model, model_type): diff --git a/easyDiffractionLib/Interfaces/interfaceTemplate.py b/easyDiffractionLib/Interfaces/interfaceTemplate.py index 843b0ac7..4ce4fed8 100644 --- a/easyDiffractionLib/Interfaces/interfaceTemplate.py +++ b/easyDiffractionLib/Interfaces/interfaceTemplate.py @@ -126,6 +126,6 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: pass @abstractmethod - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: pass \ No newline at end of file diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index ab294584..f4a3f7bb 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -11,7 +11,7 @@ class InterfaceFactory(InterfaceFactoryTemplate): def __init__(self): super(InterfaceFactory, self).__init__(InterfaceTemplate._interfaces) - def get_hkl(self, x_array=None) -> dict: + def get_hkl(self, x_array=None, idx=None) -> dict: return self().get_hkl(x_array) def interface_compatability(self, check_str: str) -> List[str]: From fa52239b12fae3b533f6b3074c0280144f4ca25d Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 24 Aug 2021 11:18:09 +0200 Subject: [PATCH 163/312] Update requirements --- requirements.txt | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/requirements.txt b/requirements.txt index d285e7bd..0af28cd3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,29 @@ -cryspy==0.*,>=0.4.11 -git+https://github.com/easyScience/easyCore.git@xarray#egg=easyCore -hvplot==0.*,>=0.7.0 -jupyter==1.*,>=1.0.0 -git+https://github.com/easyScience/libsDarwin.git@main#egg=libsDarwin; sys_platform == "darwin" -git+https://github.com/easyScience/libsLinux.git@main#egg=libsLinux; sys_platform == "linux" -git+https://github.com/easyScience/libsWin32.git@main#egg=libsWin32; sys_platform == "win32" -pytest==5.*,>=5.2.0 -requests==2.*,>=2.24.0 -toml==0.*,>=0.10.0 +--extra-index-url https://easyscience.github.io/pypi + +asteval==0.9.25; python_version >= "3.7" and python_version < "4.0" +bumps==0.8.0; python_version >= "3.7" and python_version < "4.0" +cfml==0.0.1 +cryspy @ git+https://github.com/ikibalin/cryspy.git@bravis_type_fix +cycler==0.10.0; python_version >= "3.7" +easysciencecore @ git+https://github.com/easyScience/easyCore.git@develop ; python_version >= "3.7" and python_version < "4.0" +future==0.18.2; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.3.0" +gsasii==0.0.1 +importlib-metadata==4.6.4; python_version >= "3.7" and python_version < "3.8" +kiwisolver==1.3.1; python_version >= "3.7" +lmfit==1.0.2; python_version >= "3.7" and python_version < "4.0" +matplotlib==3.4.3; python_version >= "3.7" +numpy==1.21.2; python_version >= "3.7" and python_version < "3.10" and python_full_version >= "3.6.1" +packaging==21.0; python_version >= "3.7" and python_version < "4.0" +pandas==1.1.5; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.6.1" +pillow==8.3.1; python_version >= "3.7" +pint==0.17; python_version >= "3.7" and python_version < "4.0" +pycifstar==0.2.8 +pyparsing==2.4.7; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.3.0" and python_version >= "3.7" and python_version < "4.0" +python-dateutil==2.8.2; python_full_version >= "3.6.1" and python_version >= "3.7" and python_version < "4.0" +pytz==2021.1; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.6.1" +scipy==1.7.1; python_version >= "3.7" and python_version < "3.10" +six==1.16.0; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.3.0" and python_version >= "3.7" and python_version < "4.0" +typing-extensions==3.10.0.0; python_version >= "3.7" and python_version < "3.8" +uncertainties==3.1.6; python_version >= "3.7" and python_version < "4.0" +xarray==0.19.0; python_version >= "3.7" and python_version < "4.0" +zipp==3.5.0; python_version >= "3.7" and python_version < "3.8" From ab2100b919563fc92d6db2d0ebddf726cbc017fa Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 24 Aug 2021 11:54:57 +0200 Subject: [PATCH 164/312] Add TOF calculation for cryspy (#10) * Update pyproject.toml * Update __init__.py * Update test.yml * Update pyproject.toml * Update GSASII.py * ReflectionList nrefs to nref * Moving to a more module based scheme * TOF support As easy as: ``` from easyCore import np from easyDiffractionLib import Phase from easyDiffractionLib.Runner import Runner import matplotlib.pyplot as plt r = Runner() p = Phase.from_cif_file('tests/PbSO4.cif') r.add_job('testing', job_type='powder1dTOF') r.add_phase(p, 'testing') job = r.jobs['testing'] job.pattern.zero_shift = 2.9121 job.create_simulation(np.linspace(3000, 11000, 801)) job.plot_simulation() plt.show() ``` * Decouple phases and EXP in cryspy * Fix legacy mode loading * Use the correct references for legacy mode * Unification of naming conventions * Fix TOF generation * Fix changing from TOF->CW * Fix all interfaces to use new schema * Update interface and exp_type verification logic * Fix get HKL * Update requirements Co-authored-by: Andrew Sazonov --- .github/workflows/test.yml | 10 +- easyDiffractionLib/Calculators/CFML.py | 2 +- easyDiffractionLib/Calculators/GSASII.py | 4 +- easyDiffractionLib/Calculators/__init__.py | 18 - easyDiffractionLib/Calculators/cryspy.py | 166 ++++++- .../Elements/Experiments/Experiment.py | 9 +- easyDiffractionLib/Interfaces/CFML.py | 36 +- easyDiffractionLib/Interfaces/GSASII.py | 31 +- easyDiffractionLib/Interfaces/cryspy.py | 72 ++- .../Interfaces/interfaceTemplate.py | 50 +- easyDiffractionLib/Jobs.py | 87 ++++ easyDiffractionLib/Profiles/P1D.py | 459 ++++++++++++++++++ easyDiffractionLib/Profiles/__init__.py | 2 + easyDiffractionLib/Profiles/common.py | 148 ++++++ easyDiffractionLib/Runner.py | 52 ++ easyDiffractionLib/interface.py | 214 +------- easyDiffractionLib/sample.py | 23 +- pyproject.toml | 12 +- requirements.txt | 39 +- tests/fit_script.py | 15 +- 20 files changed, 1137 insertions(+), 312 deletions(-) create mode 100644 easyDiffractionLib/Jobs.py create mode 100644 easyDiffractionLib/Profiles/P1D.py create mode 100644 easyDiffractionLib/Profiles/__init__.py create mode 100644 easyDiffractionLib/Profiles/common.py create mode 100644 easyDiffractionLib/Runner.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index eca056da..66e204be 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,9 +31,9 @@ jobs: # with: # ssh-private-key: ${{ secrets.GH_WEBFACTORY_KEY }} - - name: Set up dependences - if: runner.os == 'Linux' - run: sudo apt-get install libgfortran4 +# - name: Set up dependences +# if: runner.os == 'Linux' +# run: sudo apt-get install libgfortran4 - name: Set up Python environment uses: actions/setup-python@v2 @@ -52,8 +52,8 @@ jobs: - name: Create venv and install dependences run: poetry update - - name: Relink CrysFML from default Python dylib - run: poetry run python tools/Scripts/RelinkCrysfml.py $pythonLocation +# - name: Relink CrysFML from default Python dylib +# run: poetry run python tools/Scripts/RelinkCrysfml.py $pythonLocation - name: Run main.py run: poetry run easyDiffractionLib diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index a770ddc7..194e2cfb 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -122,7 +122,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: start_time = timeit.default_timer() - hkltth = np.array([[*reflection_list[i].hkl, reflection_list[i].stl] for i in range(reflection_list.nrefs)]) + hkltth = np.array([[*reflection_list[i].hkl, reflection_list[i].stl] for i in range(reflection_list.nref)]) self.hkl_dict['ttheta'] = np.rad2deg(np.arcsin(hkltth[:, 3] * job_info.lambdas[0])) * 2 self.hkl_dict['h'] = hkltth[:, 0] diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 59a3a153..578ead58 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -3,7 +3,7 @@ import os, pathlib from easyCore import borg -import GSASIIscriptable as G2sc +from GSASII import GSASIIscriptable as G2sc from easyCore import np @@ -161,4 +161,4 @@ def get_hkl(self, tth: np.array = None) -> dict: hkl_dict = self.hkl_dict if tth is not None: pass - return hkl_dict \ No newline at end of file + return hkl_dict diff --git a/easyDiffractionLib/Calculators/__init__.py b/easyDiffractionLib/Calculators/__init__.py index c4a4ad0a..db73d94a 100644 --- a/easyDiffractionLib/Calculators/__init__.py +++ b/easyDiffractionLib/Calculators/__init__.py @@ -1,21 +1,3 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -import os, sys - -if 'darwin' in sys.platform: - import libsDarwin - libs_path = list(libsDarwin.__path__)[0] -elif 'linux' in sys.platform: - import libsLinux - libs_path = list(libsLinux.__path__)[0] -elif 'win32' in sys.platform: - import libsWin32 - libs_path = list(libsWin32.__path__)[0] -else: - raise NotImplementedError(f"Platform '{sys.platform}' is not supported") - -gsasii_path = os.path.join(libs_path, "GSASII") - -sys.path.append(libs_path) -sys.path.append(gsasii_path) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 5446402c..a27ca20b 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -1,10 +1,10 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.2" - import cryspy import warnings from easyCore import np, borg + warnings.filterwarnings('ignore') @@ -22,16 +22,34 @@ def __init__(self): } } + self.conditions_TOF = { + 'ttheta_bank': 0, + 'dtt1': 0.1, + 'dtt2': 0, + 'resolution': { + 'sigma0': 0, + 'sigma1': 0, + 'sigma2': 0, + 'gamma0': 0, + 'gamma1': 0, + 'gamma2': 0, + 'alpha0': 0, + 'alpha1': 0, + 'beta0': 0, + 'beta1': 0} + } self.background = None self.hkl_dict = { 'ttheta': np.empty(0), - 'h': np.empty(0), - 'k': np.empty(0), - 'l': np.empty(0) + 'h': np.empty(0), + 'k': np.empty(0), + 'l': np.empty(0) } self.storage = {} self.current_crystal = {} self.model = None + self.phases = cryspy.PhaseL() + self.type = 'powder1DCW' @property def cif_str(self): @@ -42,8 +60,17 @@ def cif_str(self): def cif_str(self, value): self.createCrystal_fromCifStr(value) - def createModel(self, model_id, model_type=None): - self.model = cryspy.Pd(background=cryspy.PdBackgroundL(), phase=cryspy.PhaseL()) + def createModel(self, model_id, model_type='powder1DCW'): + model = { + 'background': cryspy.PdBackgroundL(), + 'phase': self.phases + } + cls = cryspy.Pd + if model_type == 'powder1DTOF': + cls = cryspy.TOF + model['background'] = cryspy.TOFBackground() + self.type = model_type + self.model = cls(**model) def createPhase(self, crystal_name, key='phase'): phase = cryspy.Phase(label=crystal_name, scale=1, igsize=0) @@ -52,7 +79,7 @@ def createPhase(self, crystal_name, key='phase'): def assignPhase(self, model_name, phase_name): phase = self.storage[phase_name] - self.model.phase.items.append(phase) + self.phases.items.append(phase) def removePhase(self, model_name, phase_name): phase = self.storage[phase_name] @@ -95,7 +122,7 @@ def createSpaceGroup(self, key='spacegroup', name_hm_alt='P 1'): # sg = cryspy.SpaceGroup(**opts) # except Exception as e: sg = cryspy.SpaceGroup(**opts) - # print(e) + # print(e) self.storage[key] = sg return key @@ -157,8 +184,18 @@ def createBackground(self, background_obj): self.storage[key] = background_obj return key - def createSetup(self, key='setup'): - setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) + def createSetup(self, key='setup', cls_type = None): + + if cls_type is None: + cls_type = self.type + + if cls_type == 'powder1DCW': + setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) + elif cls_type == 'powder1DTOF': + setup = cryspy.TOFParameters(zero=0, dtt1=self.conditions_TOF['dtt1'], dtt2=self.conditions_TOF['dtt2'], + ttheta_bank=self.conditions_TOF['ttheta_bank']) + else: + raise AttributeError('The experiment is of an unknown type') self.storage[key] = setup if self.model is not None: setattr(self.model, 'setup', setup) @@ -174,12 +211,23 @@ def genericReturn(self, item_key, value_key): value = getattr(item, value_key) return value - def createResolution(self): - key = 'pd_instr_resolution' - resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) + def createResolution(self, cls_type = None): + + if cls_type is None: + cls_type = self.type + + if cls_type == 'powder1DCW': + key = 'pd_instr_resolution' + resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) + elif cls_type == 'powder1DTOF': + key = 'tof_profile' + resolution = cryspy.TOFProfile(**self.conditions_TOF['resolution']) + resolution.peak_shape = 'Gauss' + else: + raise AttributeError('The experiment is of an unknown type') self.storage[key] = resolution if self.model is not None: - setattr(self.model, 'pd_instr_resolution', resolution) + setattr(self.model, key, resolution) return key def updateResolution(self, key, **kwargs): @@ -187,7 +235,7 @@ def updateResolution(self, key, **kwargs): for r_key in kwargs.keys(): setattr(resolution, r_key, kwargs[key]) - def calculate(self, x_array: np.ndarray) -> np.ndarray: + def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated @@ -225,15 +273,89 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: profile = self.model.calc_profile(this_x_array, [crystal], True, False) self.hkl_dict = { 'ttheta': self.model.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, - 'h': self.model.d_internal_val['peak_'+crystal.data_name].numpy_index_h, - 'k': self.model.d_internal_val['peak_'+crystal.data_name].numpy_index_k, - 'l': self.model.d_internal_val['peak_'+crystal.data_name].numpy_index_l, + 'h': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_h, + 'k': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_k, + 'l': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_l, + } + res = scale * np.array(profile.intensity_total) + bg + if borg.debug: + print(f"y_calc: {res}") + return res + + def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: + """ + For a given x calculate the corresponding y + :param x_array: array of data points to be calculated + :type x_array: np.ndarray + :return: points calculated at `x` + :rtype: np.ndarray + setup, tof_profile, phase, tof_background, tof_meas + """ + + for key_inner in ['tof_profile', 'setup']: + if not hasattr(self.model, key_inner): + try: + setattr(self.model, key_inner, self.storage[key_inner]) + except ValueError: + # Try to fix cryspy.... + s = self.storage[key_inner] + cls = s.__class__ + for idx, item in enumerate(self.model.items): + if isinstance(item, cls) and id(item) is not id(s): + self.model.items[idx] = s + break + + if self.pattern is None: + scale = 1.0 + offset = 0 + else: + scale = self.pattern.scale.raw_value / 500.0 + offset = self.pattern.zero_shift.raw_value + + self.model['tof_parameters'].zero = offset + this_x_array = x_array + + if borg.debug: + print('CALLING FROM Cryspy\n----------------------') + # USe the default for now + crystal = self.storage[list(self.current_crystal.keys())[-1]] + + if len(self.pattern.backgrounds) == 0: + bg = np.zeros_like(this_x_array) + else: + bg = self.pattern.backgrounds[0].calculate(this_x_array) + + if crystal is None: + return bg + + profile = self.model.calc_profile(this_x_array, [crystal], True, False) + self.hkl_dict = { + 'time': np.array(self.model.d_internal_val['peak_' + crystal.data_name].time), + 'h': np.array(self.model.d_internal_val['peak_' + crystal.data_name].index_h), + 'k': np.array(self.model.d_internal_val['peak_' + crystal.data_name].index_k), + 'l': np.array(self.model.d_internal_val['peak_' + crystal.data_name].index_l), } res = scale * np.array(profile.intensity_total) + bg if borg.debug: print(f"y_calc: {res}") return res + + def calculate(self, x_array: np.ndarray) -> np.ndarray: + """ + For a given x calculate the corresponding y + :param x_array: array of data points to be calculated + :type x_array: np.ndarray + :return: points calculated at `x` + :rtype: np.ndarray + """ + res = np.zeros_like(x_array) + if self.type == 'powder1DCW': + return self.powder_1d_calculate(x_array) + if self.type == 'powder1DTOF': + return self.powder_1d_tof_calculate(x_array) + return res + def get_hkl(self, tth: np.array = None) -> dict: hkl_dict = self.hkl_dict @@ -252,9 +374,9 @@ def get_hkl(self, tth: np.array = None) -> dict: hkl_dict = { 'ttheta': self.model.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, - 'h': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_h, - 'k': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_k, - 'l': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_l, + 'h': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_h, + 'k': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_k, + 'l': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_l, } - return hkl_dict \ No newline at end of file + return hkl_dict diff --git a/easyDiffractionLib/Elements/Experiments/Experiment.py b/easyDiffractionLib/Elements/Experiments/Experiment.py index feffb550..8ca424d3 100644 --- a/easyDiffractionLib/Elements/Experiments/Experiment.py +++ b/easyDiffractionLib/Elements/Experiments/Experiment.py @@ -14,16 +14,15 @@ class Pars1D(BaseObj): 'wavelength': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'wavelength', 'units': 'angstrom', 'value': 1.54056, - 'fixed': True + 'fixed': True, + 'min': 0 }, 'resolution_u': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'resolution_u', 'value': 0.0002, 'fixed': True @@ -31,7 +30,6 @@ class Pars1D(BaseObj): 'resolution_v': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'resolution_v', 'value': -0.0002, 'fixed': True @@ -40,7 +38,6 @@ class Pars1D(BaseObj): 'resolution_w': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'resolution_w', 'value': 0.012, 'fixed': True @@ -49,7 +46,6 @@ class Pars1D(BaseObj): 'resolution_x': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'resolution_x', 'value': 0.0, 'fixed': True @@ -57,7 +53,6 @@ class Pars1D(BaseObj): 'resolution_y': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', - '@version': '0.0.1', 'name': 'resolution_y', 'value': 0.0, 'fixed': True diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index fd78e8d3..6c47a403 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -2,13 +2,12 @@ __version__ = "0.0.2" from easyCore import borg, np -from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer -from easyDiffractionLib.Calculators.CFML import CFML as CFML_calc -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D -from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D -from easyDiffractionLib.sample import Sample from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases +from easyDiffractionLib.sample import Sample +from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters +from easyDiffractionLib.Calculators.CFML import CFML as CFML_calc class CFML(InterfaceTemplate): @@ -55,6 +54,10 @@ class CFML(InterfaceTemplate): 'x_offset': 'x_offset' } + feature_available = { + 'Npowder1DCW': True + } + name = 'CrysFML' def __init__(self): @@ -62,11 +65,17 @@ def __init__(self): self._phase = None self._filename = None + @staticmethod + def feature_checker(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None): + return InterfaceTemplate.features(radiation=radiation, exp_type=exp_type, sample_type=sample_type, + dimensionality=dimensionality, test_str=test_str, + FEATURES=CFML.feature_available) + def create(self, model): r_list = [] t_ = type(model) model_key = self.__identify(model) - if issubclass(t_, Pars1D): + if issubclass(t_, Instrument1DCWParameters): # These parameters are linked to the Resolution and Setup CFML objects. Note that we can set the job type! self.calculator.createConditions(job_type='N') keys = self._instrument_link.copy() @@ -75,7 +84,7 @@ def create(self, model): self.calculator.conditionsReturn, self.calculator.conditionsUpdate) ) - elif issubclass(t_, Pattern1D): + elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to CFML objects. self.calculator.pattern = model elif issubclass(t_, Lattice): @@ -100,9 +109,9 @@ def create(self, model): elif issubclass(t_, Phases): self._phase = model elif issubclass(t_, Sample): - self._filename = model.filename - self.calculator.filename = model.filename - self.dump_cif() + self.__createModel(model) + elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW']: + self.__createModel(model) else: if self._borg.debug: print(f"I'm a: {type(model)}") @@ -130,7 +139,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: return self.calculator.get_hkl(x_array) def dump_cif(self, *args, **kwargs): @@ -139,6 +148,11 @@ def dump_cif(self, *args, **kwargs): with open(self._filename, 'w') as fid: fid.write(str(self._phase.cif)) + def __createModel(self, model): + self._filename = model.filename + self.calculator.filename = model.filename + self.dump_cif() + def get_value(self, key, item_key): item = borg.map.get_item_by_key(key) return getattr(item, item_key).raw_value diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 610dedec..f4fadd79 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -5,8 +5,7 @@ from ..Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer from ..Calculators.GSASII import GSASII as GSAS_calc -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D -from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters from easyDiffractionLib.sample import Sample from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases @@ -55,6 +54,10 @@ class GSASII(InterfaceTemplate): 'x_offset': 'x_offset' } + feature_available = { + 'Npowder1DCW': True + } + name = 'GSASII' def __init__(self): @@ -62,11 +65,17 @@ def __init__(self): self._phase = None self._filename = None + @staticmethod + def feature_checker(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None): + return InterfaceTemplate.features(radiation=radiation, exp_type=exp_type, sample_type=sample_type, + dimensionality=dimensionality, test_str=test_str, + FEATURES=GSASII.feature_available) + def create(self, model): r_list = [] t_ = type(model) model_key = self.__identify(model) - if issubclass(t_, Pars1D): + if issubclass(t_, Instrument1DCWParameters): # These parameters are linked to the Resolution and Setup CFML objects. Note that we can set the job type! self.calculator.createConditions(job_type='N') keys = self._instrument_link.copy() @@ -75,7 +84,7 @@ def create(self, model): self.calculator.conditionsReturn, self.calculator.conditionsUpdate) ) - elif issubclass(t_, Pattern1D): + elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to CFML objects. self.calculator.pattern = model elif issubclass(t_, Lattice): @@ -99,10 +108,11 @@ def create(self, model): self.dump_cif)) elif issubclass(t_, Phases): self._phase = model + elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW']: + # #TODO Check to see if parameters and pattern should be initialized here. + self.__createModel(model_key, 'powder1DCW') elif issubclass(t_, Sample): - self._filename = model.filename - self.calculator.filename = model.filename - self.dump_cif() + self.__createModel(model) else: if self._borg.debug: print(f"I'm a: {type(model)}") @@ -130,7 +140,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: return self.calculator.get_hkl(x_array) def dump_cif(self, *args, **kwargs): @@ -143,6 +153,11 @@ def get_value(self, key, item_key): item = borg.map.get_item_by_key(key) return getattr(item, item_key).raw_value + def __createModel(self, model): + self._filename = model.filename + self.calculator.filename = model.filename + self.dump_cif() + @staticmethod def __identify(obj): return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 7881c81e..2e70a8ce 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -1,13 +1,13 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.2" + from easyCore import borg, np -from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer -from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D -from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters, Powder1DParameters +from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate +from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc class Cryspy(InterfaceTemplate): @@ -49,16 +49,30 @@ class Cryspy(InterfaceTemplate): 'wavelength': 'wavelength' } + _instrument_tof_link = {k:k for k in Instrument1DTOFParameters._defaults.keys()} + name = 'CrysPy' + feature_available = { + 'Npowder1DCW': True, + 'Npowder1DTOF': True + } + def __init__(self): self.calculator = Cryspy_calc() + @staticmethod + def feature_checker(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None): + return InterfaceTemplate.features(radiation=radiation, exp_type=exp_type, sample_type=sample_type, + dimensionality=dimensionality, test_str=test_str, + FEATURES=Cryspy.feature_available) + def create(self, model): r_list = [] t_ = type(model) model_key = self.__identify(model) - if issubclass(t_, Pars1D): + if issubclass(t_, Instrument1DCWParameters): + self.calculator.createModel(model_key, 'powder1DCW') # These parameters are linked to the Resolution and Setup cryspy objects res_key = self.calculator.createResolution() setup_key = self.calculator.createSetup() @@ -74,7 +88,33 @@ def create(self, model): self.calculator.genericReturn, self.calculator.genericUpdate) ) - elif issubclass(t_, Pattern1D): + if issubclass(t_, Instrument1DTOFParameters): + self.calculator.createModel(model_key, 'powder1DTOF') + # These parameters are linked to the Resolution and Setup cryspy objects + res_key = self.calculator.createResolution(cls_type='powder1DTOF') + setup_key = self.calculator.createSetup(cls_type='powder1DTOF') + keys = self._instrument_tof_link.copy() + + setup_keys = { + k: keys[k] for k in ['ttheta_bank', 'dtt1', 'dtt2'] + } + res_keys = { + k: keys[k] for k in ['sigma0', 'sigma1', 'sigma2', + 'gamma0', 'gamma1', 'gamma2', + 'alpha0', 'alpha1', + 'beta0', 'beta1'] + } + r_list.append( + ItemContainer(res_key, res_keys, + self.calculator.genericReturn, + self.calculator.genericUpdate) + ) + r_list.append( + ItemContainer(setup_key, setup_keys, + self.calculator.genericReturn, + self.calculator.genericUpdate) + ) + elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to cryspy objects. self.calculator.pattern = model elif issubclass(t_, Lattice): @@ -108,10 +148,23 @@ def create(self, model): for atom in model.atoms: self.calculator.assignAtom_toCrystal(self.__identify(atom), model_key) elif issubclass(t_, Phases): - self.calculator.createModel(model_key) + # self.calculator.createModel(model_key, 'powder1D') for phase in model: ident = str(self.__identify(phase)) + '_phase' self.calculator.assignPhase(model_key, ident) + elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW']: + # #TODO Check to see if parameters and pattern should be initialized here. + self.__createModel(model_key, 'powder1DCW') + elif t_.__name__ in ['Powder1DTOF', 'powder1DTOF', 'Npowder1DTOF']: + # #TODO Check to see if parameters and pattern should be initialized here. + self.__createModel(model_key, 'powder1DTOF') + elif t_.__name__ == 'Sample': # This is legacy mode. Boo + if issubclass(type(model.parameters), Instrument1DCWParameters): + self.__createModel(model_key, 'powder1DCW') + elif issubclass(type(model.parameters), Instrument1DTOFParameters): + self.__createModel(model_key, 'powder1DTOF') + else: + raise AttributeError('Unknown EXP type') else: if self._borg.debug: print(f"I'm a: {type(model)}") @@ -143,9 +196,12 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: return self.calculator.get_hkl(x_array) + def __createModel(self, model, model_type): + self.calculator.createModel(model, model_type) + @staticmethod def __identify(obj): return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/interfaceTemplate.py b/easyDiffractionLib/Interfaces/interfaceTemplate.py index c91579b0..4ce4fed8 100644 --- a/easyDiffractionLib/Interfaces/interfaceTemplate.py +++ b/easyDiffractionLib/Interfaces/interfaceTemplate.py @@ -2,10 +2,17 @@ __version__ = "0.0.1" from abc import ABCMeta, abstractmethod -from typing import Tuple +from typing import Tuple, List from easyCore import np, borg from easyCore.Utils.json import MSONable +exp_type_strings = { + 'radiation_options': ['N', 'X'], + 'exp_type_options': ['CW', 'TOF'], + 'dimensional_options': ['1D', '2D'], + 'sample_options': ['powder', 'single'] +} + class InterfaceTemplate(MSONable, metaclass=ABCMeta): """ @@ -15,6 +22,44 @@ class InterfaceTemplate(MSONable, metaclass=ABCMeta): _borg = borg _link = {} + @staticmethod + def features(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None, FEATURES=None): + + if FEATURES is None: + raise AttributeError + feature_dict = InterfaceTemplate._feature_generator(radiation=radiation, exp_type=exp_type, + sample_type=sample_type, dimensionality=dimensionality) + + for key in FEATURES.keys(): + feature_dict[key] = FEATURES[key] + if test_str is None: + test_str = radiation + sample_type + dimensionality + exp_type + + return feature_dict[test_str] + + @staticmethod + def _feature_generator(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D'): + radiation_options = exp_type_strings['radiation_options'] + if radiation not in radiation_options: + raise AttributeError(f'"{radiation}" is not supported, only: {radiation_options}') + exp_type_options = exp_type_strings['exp_type_options'] + if exp_type not in exp_type_options: + raise AttributeError(f'"{exp_type}" is not supported, only: {exp_type_options}') + dimensional_options = exp_type_strings['dimensional_options'] + if dimensionality not in dimensional_options: + raise AttributeError(f'"{dimensionality}" is not supported, only: {dimensional_options}') + sample_options = exp_type_strings['sample_options'] + if sample_type not in sample_options: + raise AttributeError(f'"{sample_type}" is not supported, only: {sample_options}') + + features = [''.join(item) for item in np.array(np.meshgrid(radiation_options, + sample_options, + dimensional_options, + exp_type_options)).T.reshape(-1, + len(exp_type_strings)).tolist()] + feature_dict = dict.fromkeys(features, False) + return feature_dict + def __init_subclass__(cls, is_abstract: bool = False, **kwargs): """ Initialise all subclasses so that they can be created in the factory @@ -81,5 +126,6 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: pass @abstractmethod - def get_hkl(self, x_array: np.ndarray = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: pass + \ No newline at end of file diff --git a/easyDiffractionLib/Jobs.py b/easyDiffractionLib/Jobs.py new file mode 100644 index 00000000..620494e1 --- /dev/null +++ b/easyDiffractionLib/Jobs.py @@ -0,0 +1,87 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.1.1' + +from easyCore.Datasets.xarray import xr, np +from easyDiffractionLib.Profiles.common import _PowderBase +from easyDiffractionLib.interface import InterfaceFactory +from easyCore.Fitting.Fitting import Fitter + + +class JobBase_1D(_PowderBase): + + def __init__(self, name: str, profileClass, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): + interface = InterfaceFactory() + super(JobBase_1D, self).__init__(name, profileClass, datastore, phases, parameters, pattern, interface=interface) + self._x_axis_name = '' + self._y_axis_prefix = 'Intensity_' + + @property + def simulation_data(self): + sim_name = self.datastore._simulations._simulation_prefix + self.name + data = None + if sim_name in self.datastore.store.keys(): + data = self.datastore.store[sim_name] + return data + + def create_simulation(self, tth, simulation_name=None): + if not isinstance(tth, xr.DataArray): + coord_name = self.datastore._simulations._simulation_prefix + self.name + '_' + self._x_axis_name + self.datastore.add_coordinate(coord_name, tth) + self.datastore.store[coord_name].name = self._x_axis_name + else: + coord_name = tth.name + x, f = self.datastore.store[coord_name].easyCore.fit_prep(self.interface.fit_func, + bdims=xr.broadcast(self.datastore.store[coord_name].transpose())) + y = xr.apply_ufunc(f, *x) + y.name = self._y_axis_prefix + self.name + '_sim' + if simulation_name is None: + simulation_name = self.name + self.datastore._simulations.add_simulation(simulation_name, y) + return y + + def plot_simulation(self, simulation_name=None): + if simulation_name is None: + sim_name = self.datastore._simulations._simulation_prefix + self.name + else: + sim_name = self.datastore._simulations._simulation_prefix + self.name + '_' + simulation_name + return self.datastore.store[sim_name].plot() + + def add_experiment(self, experiment_name, file_path): + data_x, data_y, data_e = np.loadtxt(file_path, unpack=True) + coord_name = self.name + '_' + experiment_name + '_' + self._x_axis_name + + self.datastore.store.easyCore.add_coordinate(coord_name, data_x) + self.datastore.store.easyCore.add_variable(self.name + '_' + experiment_name + '_I', [coord_name], data_y) + self.datastore.store.easyCore.sigma_attach(self.name + '_' + experiment_name + '_I', data_e) + # self._experiments[] + + def simulate_experiment(self, experiment_name=None): + tth_name = self.name + '_' + experiment_name + '_' + self._x_axis_name + tth = self.datastore.store[tth_name] + return self.create_simulation(tth, simulation_name=self.name + '_' + experiment_name) + + def plot_experiment(self, experiment_name=None): + dataarray_name = self.name + '_' + experiment_name + '_I' + return self.datastore.store[dataarray_name].plot() + + def fit_experiment(self, experiment_name, fitter=None): + dataarray_name = self.name + '_' + experiment_name + '_I' + if fitter is None: + fitter = Fitter(self, self.interface.fit_func) + return self.datastore.store[dataarray_name].easyCore.fit(fitter) + + +class Powder1DCW(JobBase_1D): + + def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): + from easyDiffractionLib.Profiles.P1D import Unpolarized1DClasses + super(Powder1DCW, self).__init__(name, Unpolarized1DClasses, datastore, phases, parameters, pattern) + self._x_axis_name = 'tth' + + +class Powder1DTOF(JobBase_1D): + + def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): + from easyDiffractionLib.Profiles.P1D import Unpolarized1DTOFClasses + super(Powder1DTOF, self).__init__(name, Unpolarized1DTOFClasses, datastore, phases, parameters, pattern) + self._x_axis_name = 'time' diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py new file mode 100644 index 00000000..7c00b5f7 --- /dev/null +++ b/easyDiffractionLib/Profiles/P1D.py @@ -0,0 +1,459 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from typing import TypeVar, List + +from easyCore.Datasets.xarray import xr +from easyCore.Objects.Base import BaseObj, Parameter +from copy import deepcopy +from easyCore.Utils.json import MontyDecoder +from easyDiffractionLib.Elements.Backgrounds.Background import BackgroundContainer +from easyDiffractionLib.Profiles.common import JobSetup, _DataClassBase + +_decoder = MontyDecoder() +T = TypeVar('T') + + +class Powder1DSim(_DataClassBase): + def __init__(self, dataset): + super(Powder1DSim, self).__init__(dataset) + self._simulation_prefix = 'sim_' + self.name = '' + + def add_simulation(self, simulation_name, simulation): + self._dataset[self._simulation_prefix + simulation_name] = simulation + + # @property + # def simulations(self) -> xr.Dataset: + # temp_dataset = xr.Dataset() + # for sim in self.simulation_names: + # temp_dataset[sim] = self._dataset[sim] + # return temp_dataset + # + # @property + # def simulation_names(self) -> List[str]: + # sims = [a for a in self._dataset.variables.keys() if a.startswith(self._simulation_prefix)] + # return sims + + +class Powder1DExp(_DataClassBase): + def __init__(self, dataset, simulation_prefix): + super(Powder1DExp, self).__init__(dataset) + self.simulation_prefix = simulation_prefix + + @property + def experiments(self) -> xr.Dataset: + temp_dataset = xr.Dataset() + for exp in self.experiment_names: + temp_dataset[exp] = self._dataset[exp] + return temp_dataset + + @property + def experiment_names(self) -> List[str]: + exps = [a for a in self._dataset.variables.keys() + if not a.startswith(self.simulation_prefix) and + not a in self._dataset.dims] + return exps + + +class Powder1DPolSim(Powder1DSim): + def __init__(self, dataset): + super(Powder1DPolSim, self).__init__(dataset) + + +class Powder1DPolExp(Powder1DExp): + def __init__(self, dataset, simulation_prefix): + super(Powder1DPolExp, self).__init__(dataset, simulation_prefix) + + +class Powder1DParameters(BaseObj): + _name = '1DPowderProfile' + _defaults = { + 'zero_shift': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'zero_shift', + 'units': 'degree', + 'value': 0.0, + 'fixed': True + }, + 'scale': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'scale', + 'value': 1, + 'fixed': True + }, + 'backgrounds': { + '@module': 'easyDiffractionLib.Elements.Backgrounds.Background', + '@class': 'BackgroundContainer', + '@version': '0.0.1', + 'data': [], + } + } + + def __init__(self, + zero_shift: Parameter, scale: Parameter, + backgrounds: BackgroundContainer, + interface=None): + super().__init__(self.__class__.__name__, + zero_shift=zero_shift, scale=scale, + backgrounds=backgrounds) + self.name = self._name + self.interface = interface + + @classmethod + def from_pars(cls, + zero_shift: float = _defaults['zero_shift']['value'], + scale: float = _defaults['scale']['value'] + ): + defaults = deepcopy(cls._defaults) + defaults['zero_shift']['value'] = zero_shift + zero_shift = _decoder.process_decoded(defaults['zero_shift']) + defaults['scale']['value'] = scale + scale = _decoder.process_decoded(defaults['scale']) + backgrounds = BackgroundContainer() + return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) + + @classmethod + def default(cls): + defaults = deepcopy(cls._defaults) + zero_shift = _decoder.process_decoded(defaults['zero_shift']) + scale = _decoder.process_decoded(defaults['scale']) + backgrounds = BackgroundContainer() + + return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) + + +class PolPowder1DParameters(Powder1DParameters): + pass + + +class Instrument1DCWParameters(BaseObj): + _name = 'InstrumentalParameters' + _defaults = { + 'wavelength': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'wavelength', + 'units': 'angstrom', + 'value': 1.54056, + 'fixed': True + }, + 'resolution_u': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_u', + 'value': 0.0002, + 'fixed': True + }, + 'resolution_v': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_v', + 'value': -0.0002, + 'fixed': True + + }, + 'resolution_w': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_w', + 'value': 0.012, + 'fixed': True + + }, + 'resolution_x': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_x', + 'value': 0.0, + 'fixed': True + }, + 'resolution_y': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'resolution_y', + 'value': 0.0, + 'fixed': True + } + } + + def __init__(self, + wavelength: Parameter, + resolution_u: Parameter, resolution_v: Parameter, resolution_w: Parameter, + resolution_x: Parameter, resolution_y: Parameter, + interface=None): + super().__init__(self.__class__.__name__, + wavelength=wavelength, + resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, + resolution_x=resolution_x, resolution_y=resolution_y) + self.name = self._name + self.interface = interface + + @classmethod + def from_pars(cls, + wavelength: float = _defaults['wavelength']['value'], + resolution_u: float = _defaults['resolution_u']['value'], + resolution_v: float = _defaults['resolution_v']['value'], + resolution_w: float = _defaults['resolution_w']['value'], + resolution_x: float = _defaults['resolution_x']['value'], + resolution_y: float = _defaults['resolution_y']['value'] + ): + defaults = deepcopy(cls._defaults) + defaults['wavelength']['value'] = wavelength + wavelength = _decoder.process_decoded(defaults['wavelength']) + defaults['resolution_u']['value'] = resolution_u + resolution_u = _decoder.process_decoded(defaults['resolution_u']) + defaults['resolution_v']['value'] = resolution_v + resolution_v = _decoder.process_decoded(defaults['resolution_v']) + defaults['resolution_w']['value'] = resolution_w + resolution_w = _decoder.process_decoded(defaults['resolution_w']) + defaults['resolution_x']['value'] = resolution_x + resolution_x = _decoder.process_decoded(defaults['resolution_x']) + defaults['resolution_y']['value'] = resolution_y + resolution_y = _decoder.process_decoded(defaults['resolution_y']) + return cls(wavelength=wavelength, + resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, + resolution_x=resolution_x, resolution_y=resolution_y) + + @classmethod + def default(cls): + defaults = deepcopy(cls._defaults) + wavelength = _decoder.process_decoded(defaults['wavelength']) + resolution_u = _decoder.process_decoded(defaults['resolution_u']) + resolution_v = _decoder.process_decoded(defaults['resolution_v']) + resolution_w = _decoder.process_decoded(defaults['resolution_w']) + resolution_x = _decoder.process_decoded(defaults['resolution_x']) + resolution_y = _decoder.process_decoded(defaults['resolution_y']) + return cls(wavelength=wavelength, + resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, + resolution_x=resolution_x, resolution_y=resolution_y) + + +class Instrument1DTOFParameters(BaseObj): + _name = 'InstrumentalParameters' + _defaults = { + 'ttheta_bank': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'ttheta_bank', + 'units': 'deg', + 'value': 145.00, + 'fixed': True + }, + 'dtt1': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'dtt1', + 'units': 'deg', + 'value': 6167.24700, + 'fixed': True + }, + 'dtt2': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'dtt2', + 'units': 'deg', + 'value': -2.28000, + 'fixed': True + }, + 'sigma0': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'sigma0', + 'value': 0.409, + 'fixed': True + }, + 'sigma1': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'sigma1', + 'value': 8.118, + 'fixed': True + + }, + 'sigma2': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'sigma2', + 'value': 0.0, + 'fixed': True + + }, + 'gamma0': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'gamma0', + 'value': 0.0, + 'fixed': True + }, + 'gamma1': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'gamma1', + 'value': 0.60400, + 'fixed': True + }, + 'gamma2': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'gamma2', + 'value': 0.0, + 'fixed': True + }, + 'alpha0': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'alpha0', + 'value': 0.0, + 'fixed': True + }, + 'alpha1': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'alpha1', + 'value': 0.29710, + 'fixed': True + }, + 'beta0': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'beta0', + 'value': 0.04182, + 'fixed': True + }, + 'beta1': { + '@module': 'easyCore.Objects.Base', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'beta1', + 'value': 0.00224, + 'fixed': True + } + } + + def __init__(self, + ttheta_bank: Parameter, + dtt1: Parameter, dtt2: Parameter, + sigma0: Parameter, sigma1: Parameter, sigma2: Parameter, + gamma0: Parameter, gamma1: Parameter, gamma2: Parameter, + alpha0: Parameter, alpha1: Parameter, + beta0: Parameter, beta1: Parameter, + interface=None): + super().__init__(self.__class__.__name__, + ttheta_bank=ttheta_bank, + dtt1=dtt1, dtt2=dtt2, + sigma0=sigma0, sigma1=sigma1, sigma2=sigma2, + gamma0=gamma0, gamma1=gamma1, gamma2=gamma2, + alpha0=alpha0, alpha1=alpha1, + beta0=beta0, beta1=beta1) + self.name = self._name + self.interface = interface + + @classmethod + def from_pars(cls, + ttheta_bank: float = _defaults['ttheta_bank']['value'], + dtt1: float = _defaults['dtt1']['value'], + dtt2: float = _defaults['dtt2']['value'], + sigma0: float = _defaults['sigma0']['value'], + sigma1: float = _defaults['sigma1']['value'], + sigma2: float = _defaults['sigma2']['value'], + gamma0: float = _defaults['gamma0']['value'], + gamma1: float = _defaults['gamma1']['value'], + gamma2: float = _defaults['gamma2']['value'], + alpha0: float = _defaults['alpha0']['value'], + alpha1: float = _defaults['alpha1']['value'], + beta0: float = _defaults['beta0']['value'], + beta1: float = _defaults['beta1']['value'], + ): + defaults = deepcopy(cls._defaults) + defaults['ttheta_bank']['value'] = ttheta_bank + ttheta_bank = _decoder.process_decoded(defaults['ttheta_bank']) + defaults['dtt1']['value'] = dtt1 + dtt1 = _decoder.process_decoded(defaults['dtt1']) + defaults['dtt2']['value'] = dtt2 + dtt2 = _decoder.process_decoded(defaults['dtt2']) + defaults['sigma0']['value'] = sigma0 + sigma0 = _decoder.process_decoded(defaults['sigma0']) + defaults['sigma1']['value'] = sigma1 + sigma1 = _decoder.process_decoded(defaults['sigma1']) + defaults['sigma2']['value'] = sigma2 + sigma2 = _decoder.process_decoded(defaults['sigma2']) + defaults['gamma0']['value'] = gamma0 + gamma0 = _decoder.process_decoded(defaults['gamma0']) + defaults['gamma1']['value'] = gamma1 + gamma1 = _decoder.process_decoded(defaults['gamma1']) + defaults['gamma2']['value'] = gamma2 + gamma2 = _decoder.process_decoded(defaults['gamma2']) + defaults['alpha0']['value'] = alpha0 + alpha0 = _decoder.process_decoded(defaults['alpha0']) + defaults['alpha1']['value'] = alpha1 + alpha1 = _decoder.process_decoded(defaults['alpha1']) + defaults['beta0']['value'] = beta0 + beta0 = _decoder.process_decoded(defaults['beta0']) + defaults['beta1']['value'] = beta1 + beta1 = _decoder.process_decoded(defaults['beta1']) + + return cls(ttheta_bank=ttheta_bank, + dtt1=dtt1, dtt2=dtt2, + sigma0=sigma0, sigma1=sigma1, sigma2=sigma2, + gamma0=gamma0, gamma1=gamma1, gamma2=gamma2, + alpha0=alpha0, alpha1=alpha1, + beta0=beta0, beta1=beta1) + + @classmethod + def default(cls): + defaults = deepcopy(cls._defaults) + ttheta_bank = _decoder.process_decoded(defaults['ttheta_bank']) + dtt1 = _decoder.process_decoded(defaults['dtt1']) + dtt2 = _decoder.process_decoded(defaults['dtt2']) + sigma0 = _decoder.process_decoded(defaults['sigma0']) + sigma1 = _decoder.process_decoded(defaults['sigma1']) + sigma2 = _decoder.process_decoded(defaults['sigma2']) + gamma0 = _decoder.process_decoded(defaults['gamma0']) + gamma1 = _decoder.process_decoded(defaults['gamma1']) + gamma2 = _decoder.process_decoded(defaults['gamma2']) + alpha0 = _decoder.process_decoded(defaults['alpha0']) + alpha1 = _decoder.process_decoded(defaults['alpha1']) + beta0 = _decoder.process_decoded(defaults['beta0']) + beta1 = _decoder.process_decoded(defaults['beta1']) + return cls(ttheta_bank=ttheta_bank, + dtt1=dtt1, dtt2=dtt2, + sigma0=sigma0, sigma1=sigma1, sigma2=sigma2, + gamma0=gamma0, gamma1=gamma1, gamma2=gamma2, + alpha0=alpha0, alpha1=alpha1, + beta0=beta0, beta1=beta1) + + +class Instrument1DCWPolParameters(Instrument1DCWParameters): + pass + + +Unpolarized1DClasses = JobSetup([Powder1DSim, Powder1DExp], + Powder1DParameters, + Instrument1DCWParameters) + +Unpolarized1DTOFClasses = JobSetup([Powder1DSim, Powder1DExp], + Powder1DParameters, + Instrument1DTOFParameters) \ No newline at end of file diff --git a/easyDiffractionLib/Profiles/__init__.py b/easyDiffractionLib/Profiles/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/easyDiffractionLib/Profiles/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/easyDiffractionLib/Profiles/common.py b/easyDiffractionLib/Profiles/common.py new file mode 100644 index 00000000..9d34ae80 --- /dev/null +++ b/easyDiffractionLib/Profiles/common.py @@ -0,0 +1,148 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +import os +import tempfile +from typing import Union, TypeVar + +from easyCore.Utils.UndoRedo import property_stack_deco +from easyCore.Objects.Base import BaseObj +from easyDiffractionLib import Phases, Phase +from easyCore.Datasets.xarray import xr + + +DataClassBaseType = TypeVar('DataClassBaseType', bound='_DataClassBase') + + +class _DataClassBase: + def __init__(self, dataset): + self._dataset = dataset + + +class DataContainer: + + def __init__(self, sim_store: DataClassBaseType, exp_store: DataClassBaseType): + self._simulations = sim_store + self._experiments = exp_store + self.store = sim_store._dataset + self._relations = {} + self.coordinate_labels = [] + self.coordinate_units = [] + + @classmethod + def prepare(cls, dataset, simulation_class, experiment_class): + class Simulation(simulation_class): + def __init__(self): + super(Simulation, self).__init__(dataset) + + class Experiment(experiment_class): + def __init__(self, sim_prefix): + super(Experiment, self).__init__(dataset, sim_prefix) + + s = Simulation() + e = Experiment(s._simulation_prefix) + + return cls(s, e) + + def add_coordinate(self, coordinate_name, coordinate_values): + self.store.easyCore.add_coordinate(coordinate_name, coordinate_values) + + def add_variable(self, variable_name, variable_coordinates, values): + self.store.easyCore.add_variable(variable_name, variable_coordinates, values) + + +class JobSetup: + def __init__(self, datastore_classes, + instrumental_parameter_class, + pattern_class): + self.datastore_classes = datastore_classes + self.instrumental_parameter_class = instrumental_parameter_class + self.pattern_class = pattern_class + + +class _PowderBase(BaseObj): + def __init__(self, + name: str = '', + job_type=None, + datastore: xr.Dataset = None, + phases: Union[Phase, Phases] = None, + parameters=None, + pattern=None, + interface=None): + if isinstance(phases, Phase): + phases = Phases('Phases', phases) + elif phases is None: + phases = Phases('Phases') + + if not isinstance(phases, Phases): + raise AttributeError('`phases` must be a Crystal or Crystals') + + if parameters is None: + parameters = job_type.pattern_class.default() + + if pattern is None: + pattern = job_type.instrumental_parameter_class.default() + + super(_PowderBase, self).__init__(name, _phases=phases, _parameters=parameters, _pattern=pattern) + + self.__constituting_classes = job_type + self.__dataset = datastore + self.datastore = DataContainer.prepare(self.__dataset, *job_type.datastore_classes) + + self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') + self.output_index = None + self.interface = interface + + def get_phase(self, phase_index): + return self._phases[phase_index] + + def get_background(self, experiment_name: str): + return self._pattern.backgrounds[experiment_name] + + def set_background(self, background): + self._pattern.backgrounds.append(background) + + def remove_background(self, background): + if background.linked_experiment.raw_value in self._pattern.backgrounds.linked_experiments: + del self._pattern.backgrounds[background.linked_experiment.raw_value] + else: + raise ValueError + + @property + def backgrounds(self): + return self._pattern.backgrounds + + @property + def phases(self): + return self._phases + + @phases.setter + @property_stack_deco + def phases(self, value): + if isinstance(value, Phase): + value = Phases('Phases', value) + if not isinstance(value, Phases): + raise ValueError + self._phases = value + self._borg.map.add_edge(self, value) + self._phases.interface = self.interface + @property + def parameters(self): + return self._parameters + + @parameters.setter + @property_stack_deco + def parameters(self, value): + self._parameters = value + self._parameters.interface = self._interface + + @property + def pattern(self): + return self._pattern + + def as_dict(self, skip: list = None) -> dict: + d = super(_PowderBase, self).as_dict(skip=skip) + del d['_phases'] + del d['_parameters'] + del d['_pattern'] + return d \ No newline at end of file diff --git a/easyDiffractionLib/Runner.py b/easyDiffractionLib/Runner.py new file mode 100644 index 00000000..a7977dfd --- /dev/null +++ b/easyDiffractionLib/Runner.py @@ -0,0 +1,52 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCore.Datasets.xarray import xr + + +class Runner: + def __init__(self): + self._data = xr.Dataset() + self._jobs = {} + self._instrumental_parameters = [] + self._instrumental_parameters_link = {} + self._experimental_parameters = [] + self._experimental_parameters_link = {} + self._phases = [] + self._phase_link = {} + + def add_job(self, name: str, job_type: str = 'powder1d'): + if job_type == 'powder1d': + from easyDiffractionLib.Jobs import Powder1DCW + job_type = Powder1DCW + elif job_type == 'powder1dTOF': + from easyDiffractionLib.Jobs import Powder1DTOF + job_type = Powder1DTOF + else: + raise NotImplementedError + job = job_type(name, self._data) + self._jobs[name] = { + 'object': job, + 'phases': job.phases, + 'instrumental_parameters': job.parameters, + 'experimental_parameters': job.pattern + } + + @property + def phases(self): + return [phase.name for phase in self._phases] + + def add_phase(self, phase, job_name: str = None): + if phase.name in self.phases: + raise AttributeError + if job_name is None: + self._phases.append(phase) + return + if job_name not in self._jobs.keys(): + raise AttributeError + self._phases.append(phase) + self._jobs[job_name]['object'].phases = phase + + @property + def jobs(self): + return {key: job['object'] for key, job in self._jobs.items()} \ No newline at end of file diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 66cb0a56..f4a3f7bb 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -1,7 +1,7 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" -from typing import Callable +from typing import Callable, List from easyDiffractionLib.Interfaces import InterfaceTemplate from easyCore.Objects.Inferface import InterfaceFactoryTemplate @@ -11,208 +11,12 @@ class InterfaceFactory(InterfaceFactoryTemplate): def __init__(self): super(InterfaceFactory, self).__init__(InterfaceTemplate._interfaces) - # def generate_sample_binding(self, name, *args) -> property: - # """ - # Automatically bind a `Parameter` to the corresponding interface. - # :param name: parameter name - # :type name: str - # :return: binding property - # :rtype: property - # """ - # fun = self.__set_item(self, 'filename') - # fun(args[0].filename) - # return property(fget=None, - # fset=self.__set_sample_item(self, name, *args)) - # - # def generate_instrument_binding(self, name) -> property: - # """ - # Automatically bind a `Parameter` to the corresponding interface. - # :param name: parameter name - # :type name: str - # :return: binding property - # :rtype: property - # """ - # return property(fget=self.__get_instrument_item(self, name), - # fset=self.__set_instrument_item(self, name)) - # - # def generate_background_binding(self, name, background) -> property: - # """ - # Automatically bind a `Parameter` to the corresponding interface. - # :param name: parameter name - # :type name: str - # :return: binding property - # :rtype: property - # """ - # return property(fget=None, - # fset=self.__set_background_item(self, background, name)) - # - # def generate_pattern_binding(self, name, pattern) -> property: - # """ - # Automatically bind a `Parameter` to the corresponding interface. - # :param name: parameter name - # :type name: str - # :return: binding property - # :rtype: property - # """ - # return property(fget=None, - # fset=self.__set_pattern_item(self, pattern, name)) - # - # def generate_binding(self, name, *args, **kwargs) -> property: - # """ - # Automatically bind a `Parameter` to the corresponding interface. - # :param name: parameter name - # :type name: str - # :return: binding property - # :rtype: property - # """ - # return property(self.__get_item(self, name), self.__set_item(self, name)) - # - # @staticmethod - # def __get_item(obj, key: str, external: bool = True) -> Callable: - # """ - # Access the value of a key by a callable object - # :param key: name of parameter to be retrieved - # :type key: str - # :return: function to get key - # :rtype: Callable - # """ - # - # def inner(): - # return obj().get_value(key, external) - # - # return inner - # - # @staticmethod - # def __set_item(obj, key) -> Callable: - # """ - # Set the value of a key by a callable object - # :param obj: object to be created from - # :type obj: InterfaceFactory - # :param key: name of parameter to be set - # :type key: str - # :return: function to set key - # :rtype: Callable - # """ - # - # def inner(value): - # obj().set_value(key, value) - # return inner - # - # @staticmethod - # def __get_sample_item(obj, key: str, holder) -> Callable: - # """ - # Access the value of a key by a callable object - # :param key: name of parameter to be retrieved - # :type key: str - # :return: function to get key - # :rtype: Callable - # """ - # - # def inner(): - # # return obj().get_value(key) - # return None - # return inner - # - # @staticmethod - # def __set_sample_item(obj, key, holder) -> Callable: - # """ - # Set the value of a key by a callable object - # :param obj: object to be created from - # :type obj: InterfaceFactory - # :param key: name of parameter to be set - # :type key: str - # :return: function to set key - # :rtype: Callable - # """ - # - # def inner(value): - # # !!! THIS IS NOT THE WAY TO DO IT !!! - # # !!! FOR TESTING ONLY !!!! - # if obj.current_interface_name == 'CrysPy': - # try: - # obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) - # except: - # obj().set_value(key, holder.phases.cif.__str__(holder.output_index)) - # else: - # holder.phases.cif.to_file(holder.filename, holder.output_index) - # # obj().set_value(key, value) - # return inner - # - # @staticmethod - # def __get_instrument_item(obj, key: str) -> Callable: - # """ - # Access the value of a key by a callable object - # :param key: name of parameter to be retrieved - # :type key: str - # :return: function to get key - # :rtype: Callable - # """ - # - # def inner(): - # return obj().get_instrument_value(key) - # return inner - # - # @staticmethod - # def __set_instrument_item(obj, key) -> Callable: - # """ - # Set the value of a key by a callable object - # :param obj: object to be created from - # :type obj: InterfaceFactory - # :param key: name of parameter to be set - # :type key: str - # :return: function to set key - # :rtype: Callable - # """ - # - # def inner(value): - # obj().set_instrument_value(key, value) - # return inner - # - # @staticmethod - # def __get_background_item(obj, background, index: int) -> Callable: - # """ - # Access the value of a key by a callable object - # :param key: name of parameter to be retrieved - # :type key: str - # :return: function to get key - # :rtype: Callable - # """ - # - # def inner(): - # return obj().get_background_value(background, index) - # return inner - # - # @staticmethod - # def __set_background_item(obj, background, index) -> Callable: - # """ - # Set the value of a key by a callable object - # :param obj: object to be created from - # :type obj: InterfaceFactory - # :param key: name of parameter to be set - # :type key: str - # :return: function to set key - # :rtype: Callable - # """ - # - # def inner(value): - # obj().set_background_value(background, index, value) - # return inner - # - # @staticmethod - # def __set_pattern_item(obj, pattern, index) -> Callable: - # """ - # Set the value of a key by a callable object - # :param obj: object to be created from - # :type obj: InterfaceFactory - # :param key: name of parameter to be set - # :type key: str - # :return: function to set key - # :rtype: Callable - # """ - # - # def inner(value): - # obj().set_pattern_value(pattern, index, value) - # return inner - - def get_hkl(self, x_array=None) -> dict: + def get_hkl(self, x_array=None, idx=None) -> dict: return self().get_hkl(x_array) + + def interface_compatability(self, check_str: str) -> List[str]: + compatible_interfaces = [] + for interface in self._interfaces: + if interface.feature_checker(test_str=check_str): + compatible_interfaces.append(self.return_name(interface)) + return compatible_interfaces diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 94503406..d7244eae 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -8,8 +8,8 @@ from easyCore.Utils.UndoRedo import property_stack_deco from easyDiffractionLib import Phase, Phases -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D -from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters +from easyDiffractionLib.Profiles.P1D import Powder1DParameters as Pattern1D class Sample(BaseObj): @@ -25,7 +25,7 @@ def __init__(self, phases: Union[Phase, Phases] = None, raise AttributeError('`phases` must be a Crystal or Crystals') if parameters is None: - parameters = Pars1D.default() + parameters = Instrument1DCWParameters.default() if pattern is None: pattern = Pattern1D.default() @@ -79,12 +79,14 @@ def parameters(self): @parameters.setter @property_stack_deco def parameters(self, value): - if not isinstance(value, Pars1D): + if not isinstance(value, Instrument1DCWParameters): raise ValueError self._parameters = value self._parameters.interface = self._interface def update_bindings(self): + if not self.interface.current_interface.feature_checker(test_str=self.exp_type_str): + raise AssertionError('The interface is not suitable for this experiment') self.generate_bindings() @property @@ -96,4 +98,15 @@ def as_dict(self, skip: list = None) -> dict: del d['_phases'] del d['_parameters'] del d['_pattern'] - return d \ No newline at end of file + return d + + @property + def exp_type_str(self) -> str: + type_str = 'Npowder1D' + if isinstance(self._parameters, Instrument1DCWParameters): + type_str += 'CW' + elif isinstance(self._parameters, Instrument1DTOFParameters): + type_str += 'TOF' + else: + raise TypeError(f'Experiment is of unknown type: {type(self._parameters)}') + return type_str diff --git a/pyproject.toml b/pyproject.toml index 2ff424b2..2d5645d5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,15 +16,19 @@ documentation = "https://github.com/easyScience/easyDiffractionLib" include = ["CHANGELOG.md"] packages = [ { include = "easyDiffractionLib" } ] +[[tool.poetry.source]] +name = "easyScience" +url = "https://easyscience.github.io/pypi/" +secondary = true + [tool.poetry.dependencies] -python = "^3.7, <3.8" +python = "^3.7, <3.9" #cryspy = "^0.5" cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } matplotlib = "^3.4" # easyScience -libsDarwin = { git = 'https://github.com/easyScience/libsDarwin.git', rev = 'develop', platform = 'darwin' } -libsLinux = { git = 'https://github.com/easyScience/libsLinux.git', rev = 'develop', platform = 'linux' } -libsWin32 = { git = 'https://github.com/easyScience/libsWin32.git', rev = 'develop', platform = 'win32' } +CFML = '^0.0.1' +GSASII = '^0.0.1' easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] diff --git a/requirements.txt b/requirements.txt index d285e7bd..0af28cd3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,29 @@ -cryspy==0.*,>=0.4.11 -git+https://github.com/easyScience/easyCore.git@xarray#egg=easyCore -hvplot==0.*,>=0.7.0 -jupyter==1.*,>=1.0.0 -git+https://github.com/easyScience/libsDarwin.git@main#egg=libsDarwin; sys_platform == "darwin" -git+https://github.com/easyScience/libsLinux.git@main#egg=libsLinux; sys_platform == "linux" -git+https://github.com/easyScience/libsWin32.git@main#egg=libsWin32; sys_platform == "win32" -pytest==5.*,>=5.2.0 -requests==2.*,>=2.24.0 -toml==0.*,>=0.10.0 +--extra-index-url https://easyscience.github.io/pypi + +asteval==0.9.25; python_version >= "3.7" and python_version < "4.0" +bumps==0.8.0; python_version >= "3.7" and python_version < "4.0" +cfml==0.0.1 +cryspy @ git+https://github.com/ikibalin/cryspy.git@bravis_type_fix +cycler==0.10.0; python_version >= "3.7" +easysciencecore @ git+https://github.com/easyScience/easyCore.git@develop ; python_version >= "3.7" and python_version < "4.0" +future==0.18.2; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.3.0" +gsasii==0.0.1 +importlib-metadata==4.6.4; python_version >= "3.7" and python_version < "3.8" +kiwisolver==1.3.1; python_version >= "3.7" +lmfit==1.0.2; python_version >= "3.7" and python_version < "4.0" +matplotlib==3.4.3; python_version >= "3.7" +numpy==1.21.2; python_version >= "3.7" and python_version < "3.10" and python_full_version >= "3.6.1" +packaging==21.0; python_version >= "3.7" and python_version < "4.0" +pandas==1.1.5; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.6.1" +pillow==8.3.1; python_version >= "3.7" +pint==0.17; python_version >= "3.7" and python_version < "4.0" +pycifstar==0.2.8 +pyparsing==2.4.7; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.3.0" and python_version >= "3.7" and python_version < "4.0" +python-dateutil==2.8.2; python_full_version >= "3.6.1" and python_version >= "3.7" and python_version < "4.0" +pytz==2021.1; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.6.1" +scipy==1.7.1; python_version >= "3.7" and python_version < "3.10" +six==1.16.0; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.3.0" and python_version >= "3.7" and python_version < "4.0" +typing-extensions==3.10.0.0; python_version >= "3.7" and python_version < "3.8" +uncertainties==3.1.6; python_version >= "3.7" and python_version < "4.0" +xarray==0.19.0; python_version >= "3.7" and python_version < "4.0" +zipp==3.5.0; python_version >= "3.7" and python_version < "3.8" diff --git a/tests/fit_script.py b/tests/fit_script.py index 22a30a92..8e9bb53a 100644 --- a/tests/fit_script.py +++ b/tests/fit_script.py @@ -41,17 +41,24 @@ # Vary the scale and the BG points S.pattern.scale.fixed = False +S.pattern.zero_shift.fixed = False S.parameters.resolution_u.fixed = False S.parameters.resolution_v.fixed = False S.parameters.resolution_w.fixed = False -S.backgrounds[0][0].y.fixed = False -S.backgrounds[0][1].y.fixed = False +S.backgrounds[0][0].y.fixed = True +S.backgrounds[0][1].y.fixed = True -# result = f.fit(data_x, data_y, weights=1/data_e) -result = data_set['I'].easyCore.fit(f) +result = f.fit(data_x, data_y) +# result = data_set['I'].easyCore.fit(f) if result.success: print("The fit has been successful: {}".format(result.success)) print("The gooodness of fit is: {}".format(result.goodness_of_fit)) sim_y_data = interface.fit_func(data_x) + +import matplotlib.pyplot as plt + +plt.plot(data_x, data_y, label='Data') +plt.plot(data_x, result.y_calc, label='Calculate') +plt.show() From 3650c46c2e2d26d61f2fc6966e6e427b980c6738 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 24 Aug 2021 11:57:28 +0200 Subject: [PATCH 165/312] Delete .devcontainer directory --- .devcontainer/Base.Dockerfile | 50 --- .devcontainer/Dockerfile | 45 --- .devcontainer/devcontainer.json | 45 --- .../library-scripts/common-debian.sh | 327 ------------------ .devcontainer/library-scripts/node-debian.sh | 119 ------- .../library-scripts/python-debian.sh | 134 ------- 6 files changed, 720 deletions(-) delete mode 100644 .devcontainer/Base.Dockerfile delete mode 100644 .devcontainer/Dockerfile delete mode 100644 .devcontainer/devcontainer.json delete mode 100644 .devcontainer/library-scripts/common-debian.sh delete mode 100644 .devcontainer/library-scripts/node-debian.sh delete mode 100644 .devcontainer/library-scripts/python-debian.sh diff --git a/.devcontainer/Base.Dockerfile b/.devcontainer/Base.Dockerfile deleted file mode 100644 index 13117a59..00000000 --- a/.devcontainer/Base.Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -# [Choice] Python version: 3, 3.9, 3.8, 3.7, 3.6 -ARG VARIANT=3 -FROM python:${VARIANT} - -# [Option] Install zsh -ARG INSTALL_ZSH="true" -# [Option] Upgrade OS packages to their latest versions -ARG UPGRADE_PACKAGES="true" - -# Install needed packages and setup non-root user. Use a separate RUN statement to add your own dependencies. -ARG USERNAME=vscode -ARG USER_UID=1000 -ARG USER_GID=$USER_UID -COPY .devcontainer/library-scripts/common-debian.sh /tmp/library-scripts/ -RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ - # Remove imagemagick due to https://security-tracker.debian.org/tracker/CVE-2019-10131 - && apt-get purge -y imagemagick imagemagick-6-common \ - # Install common packages, non-root user - && bash /tmp/library-scripts/common-debian.sh "${INSTALL_ZSH}" "${USERNAME}" "${USER_UID}" "${USER_GID}" "${UPGRADE_PACKAGES}" \ - && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts - -# Setup default python tools in a venv via pipx to avoid conflicts -ENV PIPX_HOME=/usr/local/py-utils \ - PIPX_BIN_DIR=/usr/local/py-utils/bin -ENV PATH=${PATH}:${PIPX_BIN_DIR} -COPY .devcontainer/library-scripts/python-debian.sh /tmp/library-scripts/ -RUN bash /tmp/library-scripts/python-debian.sh "none" "/usr/local" "${PIPX_HOME}" "${USERNAME}" "false" \ - && apt-get clean -y && rm -rf /tmp/library-scripts - -# [Option] Install Node.js -ARG INSTALL_NODE="true" -ARG NODE_VERSION="none" -ENV NVM_DIR=/usr/local/share/nvm -ENV NVM_SYMLINK_CURRENT=true \ - PATH=${NVM_DIR}/current/bin:${PATH} -COPY .devcontainer/library-scripts/node-debian.sh /tmp/library-scripts/ -RUN if [ "$INSTALL_NODE" = "true" ]; then bash /tmp/library-scripts/node-debian.sh "${NVM_DIR}" "${NODE_VERSION}" "${USERNAME}"; fi \ - && apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts - -# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image. -# COPY requirements.txt /tmp/pip-tmp/ -# RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \ -# && rm -rf /tmp/pip-tmp - -# [Optional] Uncomment this section to install additional OS packages. -# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ -# && apt-get -y install --no-install-recommends - -# [Optional] Uncomment this line to install global node packages. -# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index 5662abae..00000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "Python 3", - "build": { - "dockerfile": "Dockerfile", - "context": "..", - "args": { - // Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9 - "VARIANT": "3", - // Options - "INSTALL_NODE": "true", - "NODE_VERSION": "lts/*" - } - }, - - // Set *default* container specific settings.json values on container create. - "settings": { - "terminal.integrated.shell.linux": "/bin/bash", - "python.pythonPath": "/usr/local/bin/python", - "python.linting.enabled": true, - "python.linting.pylintEnabled": true, - "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", - "python.formatting.blackPath": "/usr/local/py-utils/bin/black", - "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", - "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", - "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", - "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", - "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", - "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", - "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint" - }, - - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "ms-python.python" - ] - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "pip3 install --user -r requirements.txt", - - // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. - // "remoteUser": "vscode" -} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index 21382447..00000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "easyDiffractionLib dev", - "build": { - "dockerfile": "Dockerfile", - "context": "..", - "args": { - // Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9 - "VARIANT": "3.7", - // Options - "INSTALL_NODE": "true", - "NODE_VERSION": "lts/*" - } - }, - - // Set *default* container specific settings.json values on container create. - "settings": { - "terminal.integrated.shell.linux": "/bin/bash", - "python.pythonPath": "/usr/local/bin/python", - "python.linting.enabled": true, - "python.linting.pylintEnabled": true, - "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", - "python.formatting.blackPath": "/usr/local/py-utils/bin/black", - "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", - "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", - "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", - "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", - "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", - "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", - "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint" - }, - - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "ms-python.python" - ] - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "pip3 install --user -r requirements.txt", - "postCreateCommand": "curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 && export PATH=$PATH:$HOME/.poetry/bin", - // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. - // "remoteUser": "vscode" -} diff --git a/.devcontainer/library-scripts/common-debian.sh b/.devcontainer/library-scripts/common-debian.sh deleted file mode 100644 index 5939e852..00000000 --- a/.devcontainer/library-scripts/common-debian.sh +++ /dev/null @@ -1,327 +0,0 @@ -#!/usr/bin/env bash -#------------------------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. -#------------------------------------------------------------------------------------------------------------- -# -# Docs: https://github.com/microsoft/vscode-dev-containers/blob/master/script-library/docs/common.md -# -# Syntax: ./common-debian.sh [install zsh flag] [username] [user UID] [user GID] [upgrade packages flag] [install Oh My *! flag] - -INSTALL_ZSH=${1:-"true"} -USERNAME=${2:-"automatic"} -USER_UID=${3:-"automatic"} -USER_GID=${4:-"automatic"} -UPGRADE_PACKAGES=${5:-"true"} -INSTALL_OH_MYS=${6:-"true"} - -set -e - -if [ "$(id -u)" -ne 0 ]; then - echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.' - exit 1 -fi - -# If in automatic mode, determine if a user already exists, if not use vscode -if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then - USERNAME="" - POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)") - for CURRENT_USER in ${POSSIBLE_USERS[@]}; do - if id -u ${CURRENT_USER} > /dev/null 2>&1; then - USERNAME=${CURRENT_USER} - break - fi - done - if [ "${USERNAME}" = "" ]; then - USERNAME=vscode - fi -elif [ "${USERNAME}" = "none" ]; then - USERNAME=root - USER_UID=0 - USER_GID=0 -fi - -# Load markers to see which steps have already run -MARKER_FILE="/usr/local/etc/vscode-dev-containers/common" -if [ -f "${MARKER_FILE}" ]; then - echo "Marker file found:" - cat "${MARKER_FILE}" - source "${MARKER_FILE}" -fi - -# Ensure apt is in non-interactive to avoid prompts -export DEBIAN_FRONTEND=noninteractive - -# Function to call apt-get if needed -apt-get-update-if-needed() -{ - if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then - echo "Running apt-get update..." - apt-get update - else - echo "Skipping apt-get update." - fi -} - -# Run install apt-utils to avoid debconf warning then verify presence of other common developer tools and dependencies -if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then - apt-get-update-if-needed - - PACKAGE_LIST="apt-utils \ - git \ - openssh-client \ - gnupg2 \ - iproute2 \ - procps \ - lsof \ - htop \ - net-tools \ - psmisc \ - curl \ - wget \ - rsync \ - ca-certificates \ - unzip \ - zip \ - nano \ - vim-tiny \ - less \ - jq \ - lsb-release \ - apt-transport-https \ - dialog \ - libc6 \ - libgcc1 \ - libgssapi-krb5-2 \ - libicu[0-9][0-9] \ - liblttng-ust0 \ - libstdc++6 \ - zlib1g \ - locales \ - sudo \ - ncdu \ - man-db \ - strace" - - # Install libssl1.1 if available - if [[ ! -z $(apt-cache --names-only search ^libssl1.1$) ]]; then - PACKAGE_LIST="${PACKAGE_LIST} libssl1.1" - fi - - # Install appropriate version of libssl1.0.x if available - LIBSSL=$(dpkg-query -f '${db:Status-Abbrev}\t${binary:Package}\n' -W 'libssl1\.0\.?' 2>&1 || echo '') - if [ "$(echo "$LIBSSL" | grep -o 'libssl1\.0\.[0-9]:' | uniq | sort | wc -l)" -eq 0 ]; then - if [[ ! -z $(apt-cache --names-only search ^libssl1.0.2$) ]]; then - # Debian 9 - PACKAGE_LIST="${PACKAGE_LIST} libssl1.0.2" - elif [[ ! -z $(apt-cache --names-only search ^libssl1.0.0$) ]]; then - # Ubuntu 18.04, 16.04, earlier - PACKAGE_LIST="${PACKAGE_LIST} libssl1.0.0" - fi - fi - - echo "Packages to verify are installed: ${PACKAGE_LIST}" - apt-get -y install --no-install-recommends ${PACKAGE_LIST} 2> >( grep -v 'debconf: delaying package configuration, since apt-utils is not installed' >&2 ) - - PACKAGES_ALREADY_INSTALLED="true" -fi - -# Get to latest versions of all packages -if [ "${UPGRADE_PACKAGES}" = "true" ]; then - apt-get-update-if-needed - apt-get -y upgrade --no-install-recommends - apt-get autoremove -y -fi - -# Ensure at least the en_US.UTF-8 UTF-8 locale is available. -# Common need for both applications and things like the agnoster ZSH theme. -if [ "${LOCALE_ALREADY_SET}" != "true" ] && ! grep -o -E '^\s*en_US.UTF-8\s+UTF-8' /etc/locale.gen > /dev/null; then - echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen - locale-gen - LOCALE_ALREADY_SET="true" -fi - -# Create or update a non-root user to match UID/GID. -if id -u ${USERNAME} > /dev/null 2>&1; then - # User exists, update if needed - if [ "${USER_GID}" != "automatic" ] && [ "$USER_GID" != "$(id -G $USERNAME)" ]; then - groupmod --gid $USER_GID $USERNAME - usermod --gid $USER_GID $USERNAME - fi - if [ "${USER_UID}" != "automatic" ] && [ "$USER_UID" != "$(id -u $USERNAME)" ]; then - usermod --uid $USER_UID $USERNAME - fi -else - # Create user - if [ "${USER_GID}" = "automatic" ]; then - groupadd $USERNAME - else - groupadd --gid $USER_GID $USERNAME - fi - if [ "${USER_UID}" = "automatic" ]; then - useradd -s /bin/bash --gid $USERNAME -m $USERNAME - else - useradd -s /bin/bash --uid $USER_UID --gid $USERNAME -m $USERNAME - fi -fi - -# Add add sudo support for non-root user -if [ "${USERNAME}" != "root" ] && [ "${EXISTING_NON_ROOT_USER}" != "${USERNAME}" ]; then - echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME - chmod 0440 /etc/sudoers.d/$USERNAME - EXISTING_NON_ROOT_USER="${USERNAME}" -fi - -# ** Shell customization section ** -if [ "${USERNAME}" = "root" ]; then - USER_RC_PATH="/root" -else - USER_RC_PATH="/home/${USERNAME}" -fi - -# .bashrc/.zshrc snippet -RC_SNIPPET="$(cat << EOF -export USER=\$(whoami) - -export PATH=\$PATH:\$HOME/.local/bin -EOF -)" - -# code shim, it fallbacks to code-insiders if code is not available -cat << 'EOF' > /usr/local/bin/code -#!/bin/sh - -get_in_path_except_current() { - which -a "$1" | grep -v "$0" | head -1 -} - -code="$(get_in_path_except_current code)" - -if [ -n "$code" ]; then - exec "$code" "$@" -elif [ "$(command -v code-insiders)" ]; then - exec code-insiders "$@" -else - echo "code or code-insiders is not installed" >&2 - exit 127 -fi -EOF -chmod +x /usr/local/bin/code - -# Codespaces themes - partly inspired by https://github.com/ohmyzsh/ohmyzsh/blob/master/themes/robbyrussell.zsh-theme -CODESPACES_BASH="$(cat \ -<&1 - echo -e "$(cat "${TEMPLATE}")\nDISABLE_AUTO_UPDATE=true\nDISABLE_UPDATE_PROMPT=true" > ${USER_RC_FILE} - if [ "${OH_MY}" = "bash" ]; then - sed -i -e 's/OSH_THEME=.*/OSH_THEME="codespaces"/g' ${USER_RC_FILE} - mkdir -p ${OH_MY_INSTALL_DIR}/custom/themes/codespaces - echo "${CODESPACES_BASH}" > ${OH_MY_INSTALL_DIR}/custom/themes/codespaces/codespaces.theme.sh - else - sed -i -e 's/ZSH_THEME=.*/ZSH_THEME="codespaces"/g' ${USER_RC_FILE} - mkdir -p ${OH_MY_INSTALL_DIR}/custom/themes - echo "${CODESPACES_ZSH}" > ${OH_MY_INSTALL_DIR}/custom/themes/codespaces.zsh-theme - fi - # Shrink git while still enabling updates - cd ${OH_MY_INSTALL_DIR} - git repack -a -d -f --depth=1 --window=1 - - if [ "${USERNAME}" != "root" ]; then - cp -rf ${USER_RC_FILE} ${OH_MY_INSTALL_DIR} /root - chown -R ${USERNAME}:${USERNAME} ${USER_RC_PATH} - fi -} - -if [ "${RC_SNIPPET_ALREADY_ADDED}" != "true" ]; then - echo "${RC_SNIPPET}" >> /etc/bash.bashrc - RC_SNIPPET_ALREADY_ADDED="true" -fi -install-oh-my bash bashrc.osh-template https://github.com/ohmybash/oh-my-bash - -# Optionally install and configure zsh and Oh My Zsh! -if [ "${INSTALL_ZSH}" = "true" ]; then - if ! type zsh > /dev/null 2>&1; then - apt-get-update-if-needed - apt-get install -y zsh - fi - if [ "${ZSH_ALREADY_INSTALLED}" != "true" ]; then - echo "${RC_SNIPPET}" >> /etc/zsh/zshrc - ZSH_ALREADY_INSTALLED="true" - fi - install-oh-my zsh zshrc.zsh-template https://github.com/ohmyzsh/ohmyzsh -fi - -# Write marker file -mkdir -p "$(dirname "${MARKER_FILE}")" -echo -e "\ - PACKAGES_ALREADY_INSTALLED=${PACKAGES_ALREADY_INSTALLED}\n\ - LOCALE_ALREADY_SET=${LOCALE_ALREADY_SET}\n\ - EXISTING_NON_ROOT_USER=${EXISTING_NON_ROOT_USER}\n\ - RC_SNIPPET_ALREADY_ADDED=${RC_SNIPPET_ALREADY_ADDED}\n\ - ZSH_ALREADY_INSTALLED=${ZSH_ALREADY_INSTALLED}" > "${MARKER_FILE}" - -echo "Done!" diff --git a/.devcontainer/library-scripts/node-debian.sh b/.devcontainer/library-scripts/node-debian.sh deleted file mode 100644 index de2e8eba..00000000 --- a/.devcontainer/library-scripts/node-debian.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/bash -#------------------------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. -#------------------------------------------------------------------------------------------------------------- -# -# Docs: https://github.com/microsoft/vscode-dev-containers/blob/master/script-library/docs/node.md -# -# Syntax: ./node-debian.sh [directory to install nvm] [node version to install (use "none" to skip)] [non-root user] [Update rc files flag] - -export NVM_DIR=${1:-"/usr/local/share/nvm"} -export NODE_VERSION=${2:-"lts/*"} -USERNAME=${3:-"automatic"} -UPDATE_RC=${4:-"true"} - -set -e - -if [ "$(id -u)" -ne 0 ]; then - echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.' - exit 1 -fi - -# Determine the appropriate non-root user -if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then - USERNAME="" - POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)") - for CURRENT_USER in ${POSSIBLE_USERS[@]}; do - if id -u ${CURRENT_USER} > /dev/null 2>&1; then - USERNAME=${CURRENT_USER} - break - fi - done - if [ "${USERNAME}" = "" ]; then - USERNAME=root - fi -elif [ "${USERNAME}" = "none" ] || ! id -u ${USERNAME} > /dev/null 2>&1; then - USERNAME=root -fi - -if [ "${NODE_VERSION}" = "none" ]; then - export NODE_VERSION= -fi - -# Ensure apt is in non-interactive to avoid prompts -export DEBIAN_FRONTEND=noninteractive - -# Install curl, apt-transport-https, tar, or gpg if missing -if ! dpkg -s apt-transport-https curl ca-certificates tar > /dev/null 2>&1 || ! type gpg > /dev/null 2>&1; then - if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then - apt-get update - fi - apt-get -y install --no-install-recommends apt-transport-https curl ca-certificates tar gnupg2 -fi - -# Install yarn -if type yarn > /dev/null 2>&1; then - echo "Yarn already installed." -else - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | (OUT=$(apt-key add - 2>&1) || echo $OUT) - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list - apt-get update - apt-get -y install --no-install-recommends yarn -fi - -# Install the specified node version if NVM directory already exists, then exit -if [ -d "${NVM_DIR}" ]; then - echo "NVM already installed." - if [ "${NODE_VERSION}" != "" ]; then - su ${USERNAME} -c "source $NVM_DIR/nvm.sh && nvm install ${NODE_VERSION} && nvm clear-cache" - fi - exit 0 -fi - - -# Run NVM installer as non-root if needed -mkdir -p ${NVM_DIR} -chown ${USERNAME} ${NVM_DIR} -su ${USERNAME} -c "$(cat << EOF - set -e - - # Do not update profile - we'll do this manually - export PROFILE=/dev/null - - curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash - source ${NVM_DIR}/nvm.sh - if [ "${NODE_VERSION}" != "" ]; then - nvm alias default ${NODE_VERSION} - fi - nvm clear-cache -EOF -)" 2>&1 - -if [ "${UPDATE_RC}" = "true" ]; then - echo "Updating /etc/bash.bashrc and /etc/zsh/zshrc with NVM scripts..." -(cat < /dev/null 2>&1; then - echo "Fixing permissions of \"\$NVM_DIR\"..." - sudoIf chown -R ${USERNAME}:root \$NVM_DIR - else - echo "Warning: NVM directory is not owned by ${USERNAME} and sudo is not installed. Unable to correct permissions." - fi -fi -[ -s "\$NVM_DIR/nvm.sh" ] && . "\$NVM_DIR/nvm.sh" -[ -s "\$NVM_DIR/bash_completion" ] && . "\$NVM_DIR/bash_completion" -EOF -) | tee -a /etc/bash.bashrc >> /etc/zsh/zshrc -fi - -echo "Done!" diff --git a/.devcontainer/library-scripts/python-debian.sh b/.devcontainer/library-scripts/python-debian.sh deleted file mode 100644 index 3f96a6db..00000000 --- a/.devcontainer/library-scripts/python-debian.sh +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env bash -#------------------------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. -#------------------------------------------------------------------------------------------------------------- -# -# Docs: https://github.com/microsoft/vscode-dev-containers/blob/master/script-library/docs/python.md -# -# Syntax: ./python-debian.sh [Python Version] [Python intall path] [PIPX_HOME] [non-root user] [Update rc files flag] [install tools] - -PYTHON_VERSION=${1:-"3.8.3"} -PYTHON_INSTALL_PATH=${2:-"/usr/local/python${PYTHON_VERSION}"} -export PIPX_HOME=${3:-"/usr/local/py-utils"} -USERNAME=${4:-"automatic"} -UPDATE_RC=${5:-"true"} -INSTALL_PYTHON_TOOLS=${6:-"true"} - -set -e - -if [ "$(id -u)" -ne 0 ]; then - echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.' - exit 1 -fi - -# Determine the appropriate non-root user -if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then - USERNAME="" - POSSIBLE_USERS=("vscode" "node" "codespace" "$(awk -v val=1000 -F ":" '$3==val{print $1}' /etc/passwd)") - for CURRENT_USER in ${POSSIBLE_USERS[@]}; do - if id -u ${CURRENT_USER} > /dev/null 2>&1; then - USERNAME=${CURRENT_USER} - break - fi - done - if [ "${USERNAME}" = "" ]; then - USERNAME=root - fi -elif [ "${USERNAME}" = "none" ] || ! id -u ${USERNAME} > /dev/null 2>&1; then - USERNAME=root -fi - -function updaterc() { - if [ "${UPDATE_RC}" = "true" ]; then - echo "Updating /etc/bash.bashrc and /etc/zsh/zshrc..." - echo -e "$1" | tee -a /etc/bash.bashrc >> /etc/zsh/zshrc - fi -} - -export DEBIAN_FRONTEND=noninteractive - -# Install python from source if needed -if [ "${PYTHON_VERSION}" != "none" ]; then - - if [ -d "${PYTHON_INSTALL_PATH}" ]; then - echo "Path ${PYTHON_INSTALL_PATH} already exists. Assuming Python already installed." - else - echo "Building Python ${PYTHON_VERSION} from source..." - # Install prereqs if missing - PREREQ_PKGS="curl ca-certificates tar make build-essential libffi-dev \ - libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ - libncurses5-dev libncursesw5-dev xz-utils tk-dev" - if ! dpkg -s ${PREREQ_PKGS} > /dev/null 2>&1; then - if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then - apt-get update - fi - apt-get -y install --no-install-recommends ${PREREQ_PKGS} - fi - - # Download and build from src - mkdir -p /tmp/python-src "${PYTHON_INSTALL_PATH}" - cd /tmp/python-src - curl -sSL -o /tmp/python-dl.tgz "https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz" - tar -xzf /tmp/python-dl.tgz -C "/tmp/python-src" --strip-components=1 - ./configure --prefix="${PYTHON_INSTALL_PATH}" --enable-optimizations --with-ensurepip=install - make -j 8 - make install - rm -rf /tmp/python-dl.tgz /tmp/python-src - cd /tmp - chown -R ${USERNAME} "${PYTHON_INSTALL_PATH}" - ln -s ${PYTHON_INSTALL_PATH}/bin/python3 ${PYTHON_INSTALL_PATH}/bin/python - ln -s ${PYTHON_INSTALL_PATH}/bin/pip3 ${PYTHON_INSTALL_PATH}/bin/pip - ln -s ${PYTHON_INSTALL_PATH}/bin/idle3 ${PYTHON_INSTALL_PATH}/bin/idle - ln -s ${PYTHON_INSTALL_PATH}/bin/pydoc3 ${PYTHON_INSTALL_PATH}/bin/pydoc - ln -s ${PYTHON_INSTALL_PATH}/bin/python3-config ${PYTHON_INSTALL_PATH}/bin/python-config - updaterc "export PATH=${PYTHON_INSTALL_PATH}/bin:\${PATH}" - fi -fi - -# If not installing python tools, exit -if [ "${INSTALL_PYTHON_TOOLS}" != "true" ]; then - echo "Done!" - exit 0; -fi - -DEFAULT_UTILS="\ - pylint \ - flake8 \ - autopep8 \ - black \ - yapf \ - mypy \ - pydocstyle \ - pycodestyle \ - bandit \ - pipenv \ - virtualenv" - - -export PIPX_BIN_DIR=${PIPX_HOME}/bin -export PATH=${PYTHON_INSTALL_PATH}/bin:${PIPX_BIN_DIR}:${PATH} - -# Update pip -echo "Updating pip..." -python3 -m pip install --no-cache-dir --upgrade pip - -# Install tools -mkdir -p ${PIPX_BIN_DIR} -chown -R ${USERNAME} ${PIPX_HOME} ${PIPX_BIN_DIR} -su ${USERNAME} -c "$(cat << EOF - set -e - echo "Installing Python tools..." - export PIPX_HOME=${PIPX_HOME} - export PIPX_BIN_DIR=${PIPX_BIN_DIR} - export PYTHONUSERBASE=/tmp/pip-tmp - export PIP_CACHE_DIR=/tmp/pip-tmp/cache - export PATH=${PATH} - pip3 install --disable-pip-version-check --no-warn-script-location --no-cache-dir --user pipx - /tmp/pip-tmp/bin/pipx install --pip-args=--no-cache-dir pipx - echo "${DEFAULT_UTILS}" | xargs -n 1 /tmp/pip-tmp/bin/pipx install --system-site-packages --pip-args '--no-cache-dir --force-reinstall' - chown -R ${USERNAME} ${PIPX_HOME} - rm -rf /tmp/pip-tmp -EOF -)" -updaterc "export PIPX_HOME=${PIPX_HOME}\nexport PIPX_BIN_DIR=${PIPX_BIN_DIR}\nexport PATH=\${PATH}:\${PIPX_BIN_DIR}" From 0cbd66bcde3561f1e82fae03e6b736cd13919ed9 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 24 Aug 2021 11:58:55 +0200 Subject: [PATCH 166/312] Delete tools directory --- tools/Scripts/Config.py | 15 -- tools/Scripts/Functions.py | 301 --------------------------------- tools/Scripts/RelinkCrysfml.py | 111 ------------ 3 files changed, 427 deletions(-) delete mode 100644 tools/Scripts/Config.py delete mode 100755 tools/Scripts/Functions.py delete mode 100644 tools/Scripts/RelinkCrysfml.py diff --git a/tools/Scripts/Config.py b/tools/Scripts/Config.py deleted file mode 100644 index af19fc36..00000000 --- a/tools/Scripts/Config.py +++ /dev/null @@ -1,15 +0,0 @@ -__author__ = "github.com/AndrewSazonov" -__version__ = '0.0.1' - -import os, sys -import Functions - - -class Config(): - def __init__(self): - # Main - self.__dict__ = Functions.config() - self.os = Functions.osName() - - def __getitem__(self, key): - return self.__dict__[key] diff --git a/tools/Scripts/Functions.py b/tools/Scripts/Functions.py deleted file mode 100755 index 3712fee8..00000000 --- a/tools/Scripts/Functions.py +++ /dev/null @@ -1,301 +0,0 @@ -__author__ = "github.com/AndrewSazonov" -__version__ = '0.0.1' - -import os, sys -import toml -import zipfile -import subprocess -import requests -import shutil -from distutils import dir_util - -# FUNCTIONS - -def coloredText(message='', style='1', background_color='49m', text_color='39'): - # http://ozzmaker.com/add-colour-to-text-in-python/ - escape = '\033[' - reset = '0m' - return f'{escape}{style};{text_color};{background_color}{message}{escape}{reset}' - -def printFailMessage(message, exception=None): - bright_red = '31' - extended_message = f'- Failed to {message}' - if exception: - extended_message += os.linesep - extended_message += str(exception) - report = coloredText(message=extended_message, text_color=bright_red) - print(report) - -def printSuccessMessage(message): - bright_green = '32' - extended_message = f'+ Succeeded to {message}' - report = coloredText(message=extended_message, text_color=bright_green) - print(report) - -def printNeutralMessage(message): - bright_blue = '34' - extended_message = f'* {message}' - report = coloredText(message=extended_message, text_color=bright_blue) - print(report) - -def run(*args): - subprocess.run( - args, - capture_output=False, - universal_newlines=True, # converts the output to a string instead of a byte array. - #check=True # forces the Python method to throw an exception if the underlying process encounters errors - ) - -def downloadFile(url, destination): - if os.path.exists(destination): - printNeutralMessage(f'File already exists {destination}') - return - try: - message = f'download from {url}' - file = requests.get(url, allow_redirects=True) - open(destination, 'wb').write(file.content) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def attachDmg(file): - try: - message = f'attach {file}' - run('hdiutil', 'attach', file) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def installSilently(installer, silent_script): - try: - message = f'run installer {installer}' - run( - installer, - '--script', silent_script, - '--no-force-installations' - ) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def config(): - return toml.load(os.path.join(os.getcwd(), 'pyproject.toml')) - -def osName(): - platform = sys.platform - if platform.startswith('darwin'): - return 'macos' - elif platform.startswith('lin'): - return 'ubuntu' - elif platform.startswith('win'): - return 'windows' - else: - print("- Unsupported platform '{0}'".format(platform)) - return None - -def environmentVariable(name, default=None): - value = os.getenv(name) - if value is not None: - return value - else: - printNeutralMessage(f'Environment variable {name} is not found, using default value {default}') - return default - -def setEnvironmentVariable(name, value): - try: - message = f'set environment variable {name} to {value}' - os.environ[name] = value - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def addReadPermission(file): - try: - message = f'add read permissions to {file}' - run('chmod', 'a+x', file) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def createFile(path, content): - if os.path.exists(path): - printNeutralMessage(f'File already exists {path}') - return - try: - message = f'create file {path}' - with open(path, "w") as file: - file.write(content) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def copyFile(source, destination): - path = os.path.join(destination, os.path.basename(source)) - if os.path.exists(path): - printNeutralMessage(f'File already exists {path}') - return - try: - message = f'copy file {source} to {destination}' - shutil.copy2(source, destination, follow_symlinks=True) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def removeFile(path): - if not os.path.exists(path): - printNeutralMessage(f'File does not exist {path}') - return - try: - message = f'delete file {path}' - os.remove(path) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def createDir(path): - if os.path.exists(path): - printNeutralMessage(f'Directory already exists {path}') - return - try: - message = f'create dir {path}' - os.mkdir(path) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def copyDir(source, destination): - path = os.path.join(destination, os.path.basename(source)) - if os.path.exists(path): - printNeutralMessage(f'Directory already exists {path}') - return - try: - message = f'copy dir {source} to {destination}' - dir_util.copy_tree(source, destination) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def moveDir(source, destination): - path = os.path.join(destination, os.path.basename(source)) - if os.path.exists(path): - printNeutralMessage(f'Directory already exists {path}') - return - try: - message = f'move dir {source} to {destination}' - shutil.move(source, destination) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def dict2xml(d, root_node=None, add_xml_version=True): - wrap = False if root_node is None or isinstance(d, list) else True - root = 'root' if root_node is None else root_node - xml = '' - attr = '' - children = [] - - if add_xml_version: - xml += '' - - if isinstance(d, dict): - for key, value in dict.items(d): - if isinstance(value, (dict, list)): - children.append(dict2xml(value, root_node=key, add_xml_version=False)) - elif key[0] == '@': - attr = attr + ' ' + key[1::] + '="' + str(value) + '"' - else: - xml = '<' + key + ">" + str(value) + '' - children.append(xml) - - elif isinstance(d, list): - for value in d: - children.append(dict2xml(value, root_node=root, add_xml_version=False)) - - else: - raise TypeError(f"Type {type(d)} is not supported") - - end_tag = '>' if children else '/>' - - if wrap: - xml = '<' + root + attr + end_tag - - if children: - xml += "".join(children) - - if wrap: - xml += '' - - return xml - -def unzip(archive_path, destination_dir): - try: - message = f'unzip {archive_path} to {destination_dir}' - with zipfile.ZipFile(archive_path, 'r') as zip_ref: - zip_ref.extractall(destination_dir) - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) - -def zip(source, destination): - # https://thispointer.com/python-how-to-create-a-zip-archive-from-multiple-files-or-directory/ - # https://stackoverflow.com/questions/27991745/zip-file-and-avoid-directory-structure - # https://stackoverflow.com/questions/32640053/compressing-directory-using-shutil-make-archive-while-preserving-directory-str - # Zip all the files from given directory - """ - Compress a file/directory. - """ - # Check if src exists - if not os.path.exists(source): - printFailMessage(f"zip file/directory (it doesn't exist): {source}") - sys.exit() - return - # create a ZipFile object - try: - with zipfile.ZipFile(destination, 'w') as zf: - rootdirname = os.path.basename(source) - if os.path.isfile(source): - message = f'zip file {source} to {destination}' - filepath = source - parentpath = os.path.relpath(filepath, source) - arcpath = os.path.join(rootdirname, parentpath) - zf.write(filepath, arcpath) - elif os.path.isdir(source): - message = f'zip dir {source} to {destination}' - for dirpath, _, filenames in os.walk(source): - for filename in filenames: - filepath = os.path.join(dirpath, filename) - parentpath = os.path.relpath(filepath, source) - arcpath = os.path.join(rootdirname, parentpath) - zf.write(filepath, arcpath) - else: - printFailMessage(message + ": It is a special file (socket, FIFO, device file)" ) - sys.exit() - except Exception as exception: - printFailMessage(message, exception) - sys.exit() - else: - printSuccessMessage(message) diff --git a/tools/Scripts/RelinkCrysfml.py b/tools/Scripts/RelinkCrysfml.py deleted file mode 100644 index 1219d168..00000000 --- a/tools/Scripts/RelinkCrysfml.py +++ /dev/null @@ -1,111 +0,0 @@ -__author__ = "github.com/AndrewSazonov" -__version__ = '0.0.1' - -import os, sys -import importlib -import Functions, Config - - -CONFIG = Config.Config() - -def pythonLibLocation(): - if len(sys.argv) > 1: - return os.path.join(sys.argv[1], 'lib') - return '@rpath' - -def pythonDylib(): - python_dylib_file = { - #'macos': 'Python', - 'macos': 'libpython3.7m.dylib', - 'ubuntu': 'libpython3.7m.dylib', - 'windows': None - }[CONFIG.os] - return os.path.join(pythonLibLocation(), python_dylib_file) - -def crysfmlPythonDylib(): - d = { - 'macos': '/Library/Frameworks/Python.framework/Versions/3.7/Python', - 'ubuntu': 'libpython3.7m.so.1.0', - 'windows': None - } - return d[CONFIG.os] - -def rpath(): - d = { - 'macos': '@executable_path', - 'ubuntu': './libsLinux/lib', - 'windows': None - } - return d[CONFIG.os] - -def crysfmlRpath(): - d = { - 'macos': '/opt/intel//compilers_and_libraries_2020.2.258/mac/compiler/lib', - 'ubuntu': None, - 'windows': None - } - return d[CONFIG.os] - -def crysfmlSoFile(): - lib = CONFIG['ci']['pyinstaller']['libs'][CONFIG.os] - lib_path = importlib.import_module(lib).__path__[0] - so_location = os.path.join(lib_path, 'CFML_api') - so_file = { - 'macos': 'crysfml_api.so', - 'ubuntu': 'crysfml_api.so', - 'windows': None - }[CONFIG.os] - return os.path.join(so_location, so_file) - -def relinkCrysfml(): - if CONFIG.os == 'windows': - Functions.printNeutralMessage(f'No CrysFML relinking is needed for platform {CONFIG.os}') - return - - Functions.printNeutralMessage(f"pythonLibLocation: {pythonLibLocation()}") - Functions.printNeutralMessage(f"crysfmlPythonDylib: {crysfmlPythonDylib()}") - Functions.printNeutralMessage(f"pythonDylib: {pythonDylib()}") - Functions.printNeutralMessage(f"crysfmlRpath: {crysfmlRpath()}") - Functions.printNeutralMessage(f"rpath: {rpath()}") - Functions.printNeutralMessage(f"crysfmlSoFile: {crysfmlSoFile()}") - - try: - message = f'relink CrysFML from default Python dylib for platform {CONFIG.os}' - if CONFIG.os == 'macos': - Functions.run('otool', '-l', crysfmlSoFile()) - Functions.run('otool', '-L', crysfmlSoFile()) - Functions.run('install_name_tool', '-rpath', crysfmlRpath(), rpath(), crysfmlSoFile()) - #Functions.run('install_name_tool', '-add_rpath', rpath(), crysfmlSoFile()) - #Functions.run('install_name_tool', '-add_rpath', pythonLibLocation(), crysfmlSoFile()) - Functions.run('install_name_tool', '-change', crysfmlPythonDylib(), pythonDylib(), crysfmlSoFile()) - Functions.run('otool', '-l', crysfmlSoFile()) - Functions.run('otool', '-L', crysfmlSoFile()) - elif CONFIG.os == 'ubuntu': - Functions.run('sudo', 'apt-get', 'update', '-y') - Functions.run('sudo', 'apt-get', 'install', '-y', 'patchelf') - Functions.run('sudo', 'apt-get', 'install', '-y', 'chrpath') - # Python lib - Functions.run('chrpath', '-l', crysfmlSoFile()) - Functions.run('patchelf', '--set-rpath', rpath(), crysfmlSoFile()) - #Functions.run('patchelf', '--replace-needed', crysfmlPythonDylib(), pythonDylib(), crysfmlSoFile()) - # Intel fortran libs - # Instead of LD_LIBRARY_PATH... - #import libsLinux - #lib_path = os.path.join(list(libsLinux.__path__)[0], 'lib') - #libs = ['libifcoremt.so.5', 'libifport.so.5', 'libimf.so', 'libintlc.so.5', 'libsvml.so'] - #for lib in libs: - # Functions.run('patchelf', '--replace-needed', lib, os.path.join(lib_path, lib), crysfmlSoFile()) - # https://nehckl0.medium.com/creating-relocatable-linux-executables-by-setting-rpath-with-origin-45de573a2e98 - # https://github.com/microsoft/ShaderConductor/issues/52 - # https://unix.stackexchange.com/questions/479421/how-to-link-to-a-shared-library-with-a-relative-path - else: - Functions.printFailMessage(f'Platform {CONFIG.os} is unsupported') - except Exception as exception: - Functions.printFailMessage(message, exception) - sys.exit() - else: - Functions.printSuccessMessage(message) - - -if __name__ == "__main__": - relinkCrysfml() From 69d53ac203360e623cfec279a77e1322dd97b934 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 25 Aug 2021 10:39:22 +0200 Subject: [PATCH 167/312] Tests base and README --- .pre-commit-config.yaml | 37 +++++++++ README.md | 76 +++++++++++++++++- pyproject.toml | 59 +++++++++++--- resources/images/ed_logo.svg | 29 +++++++ resources/images/ed_logo_single.svg | 27 +++++++ resources/images/ed_logo_wfont.svg | 42 ++++++++++ tests/{description.txt => __init__.py} | 0 tests/{ => integration_tests}/CFML_Cryspy.png | Bin .../{ => integration_tests}/FittingData.ipynb | 0 .../FittingData_CFML-xarrays.ipynb | 0 .../FittingData_CFML.ipynb | 0 tests/{ => integration_tests}/PbSO4.cif | 0 .../PbSO4_neutrons_short.xye | 0 .../PbSO4_xrays_short.xye | 0 tests/{ => integration_tests}/SrTiO3.cif | 0 .../WorkedExample2.ipynb | 0 tests/integration_tests/description.txt | 0 tests/{ => integration_tests}/fit_script.py | 0 tests/{ => integration_tests}/test1.py | 0 tests/{ => integration_tests}/test3.py | 0 .../workedExample1.ipynb | 0 .../{ => integration_tests}/xarray_test.ipynb | 0 tests/unit_tests/Calculators/__init__.py | 2 + tests/unit_tests/Elements/__init__.py | 2 + tests/unit_tests/Interfaces/__init__.py | 2 + tests/unit_tests/Profiles/__init__.py | 2 + tests/unit_tests/__init__.py | 0 tests/unit_tests/test_Jobs.py | 14 ++++ tests/unit_tests/test_Runner.py | 18 +++++ tests/unit_tests/test_interface.py | 10 +++ tests/unit_tests/test_sample.py | 54 +++++++++++++ 31 files changed, 362 insertions(+), 12 deletions(-) create mode 100644 .pre-commit-config.yaml create mode 100644 resources/images/ed_logo.svg create mode 100644 resources/images/ed_logo_single.svg create mode 100644 resources/images/ed_logo_wfont.svg rename tests/{description.txt => __init__.py} (100%) rename tests/{ => integration_tests}/CFML_Cryspy.png (100%) rename tests/{ => integration_tests}/FittingData.ipynb (100%) rename tests/{ => integration_tests}/FittingData_CFML-xarrays.ipynb (100%) rename tests/{ => integration_tests}/FittingData_CFML.ipynb (100%) rename tests/{ => integration_tests}/PbSO4.cif (100%) rename tests/{ => integration_tests}/PbSO4_neutrons_short.xye (100%) rename tests/{ => integration_tests}/PbSO4_xrays_short.xye (100%) rename tests/{ => integration_tests}/SrTiO3.cif (100%) rename tests/{ => integration_tests}/WorkedExample2.ipynb (100%) create mode 100644 tests/integration_tests/description.txt rename tests/{ => integration_tests}/fit_script.py (100%) rename tests/{ => integration_tests}/test1.py (100%) rename tests/{ => integration_tests}/test3.py (100%) rename tests/{ => integration_tests}/workedExample1.ipynb (100%) rename tests/{ => integration_tests}/xarray_test.ipynb (100%) create mode 100644 tests/unit_tests/Calculators/__init__.py create mode 100644 tests/unit_tests/Elements/__init__.py create mode 100644 tests/unit_tests/Interfaces/__init__.py create mode 100644 tests/unit_tests/Profiles/__init__.py create mode 100644 tests/unit_tests/__init__.py create mode 100644 tests/unit_tests/test_Jobs.py create mode 100644 tests/unit_tests/test_Runner.py create mode 100644 tests/unit_tests/test_interface.py create mode 100644 tests/unit_tests/test_sample.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..436634be --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,37 @@ +repos: +- repo: https://github.com/psf/black + rev: stable # Replace by any tag/version: https://github.com/psf/black/tags + hooks: + - id: black + language_version: python3 # Should be a command that runs python3.6+ + +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.0.1 # Use the ref you want to point at + hooks: + - id: trailing-whitespace + - id: check-yaml + - id: check-xml + - id: requirements-txt-fixer + - id: check-toml + - id: pretty-format-json + - id: detect-private-key +- repo: local + hooks: + - id: export-requirements + name: Export requeriments.txt + language: system + pass_filenames: false + entry: poetry export --without-hashes -o requirements.txt + files: ^(pyproject.toml|poetry.lock)$ +# - id: export-setup +# name: Export setup.py +# language: system +# pass_filenames: false +# entry: ~/anaconda3/bin/poetry2setup > setup.py +- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks + rev: v2.1.0 + hooks: + - id: pretty-format-yaml + args: [--autofix, --indent, '2'] + - id: pretty-format-toml + args: [--autofix] diff --git a/README.md b/README.md index 37a696df..6367e799 100644 --- a/README.md +++ b/README.md @@ -1 +1,75 @@ -# easyDiffractionLib \ No newline at end of file +# [![License][50]][51] [![Release][32]][33] [![Downloads][70]][71] [![CI Build][20]][21] + +[![CodeFactor][83]][84] [![Lines of code][81]](<>) [![Total lines][80]](<>) [![Files][82]](<>) + + + + +**easyDiffractionLib** is the foundation of the *easyScience* universe, providing the building blocks for libraries and applications which aim to make scientific data simulation and analysis easier. + +## Install + +**easyDiffractionLib** can be downloaded using pip: + +```pip install easysciencecore``` + +Or direct from the repository: + +```pip install https://github.com/easyScience/easyDiffractionLib``` + +## Test + +After installation, launch the test suite: + +```python -m pytest``` + +## Documentation + +Documentation can be found at: + +[https://easyScience.github.io/easyDiffractionLib](https://easyScience.github.io/easyDiffractionLib) + +## Contributing +We absolutely welcome contributions. **easyDiffractionLib** is maintained by the ESS and on a volunteer basis and thus we need to foster a community that can support user questions and develop new features to make this software a useful tool for all users while encouraging every member of the community to share their ideas. + +## License +While **easyDiffractionLib** is under the BSD-3 license, DFO_LS is subject to the GPL license. + + + +[20]: https://github.com/easyScience/easyDiffractionLib/workflows/CI%20using%20pip/badge.svg + +[21]: https://github.com/easyScience/easyDiffractionLib/actions + + + + +[32]: https://img.shields.io/pypi/v/easyScienceCore.svg + +[33]: https://pypi.org/project/easyScienceCore + + + + +[50]: https://img.shields.io/github/license/easyScience/easyDiffractionLib.svg + +[51]: https://github.com/easyScience/easyDiffractionLib/blob/master/LICENSE.md + + + + +[70]: https://img.shields.io/pypi/dm/easyScienceCore.svg + +[71]: https://pypi.org/project/easyScienceCore + + + +[80]: https://tokei.rs/b1/github/easyScience/easyDiffractionLib + +[81]: https://tokei.rs/b1/github/easyScience/easyDiffractionLib?category=code + +[82]: https://tokei.rs/b1/github/easyScience/easyDiffractionLib?category=files + +[83]: https://www.codefactor.io/repository/github/easyscience/easyDiffractionLib/badge + +[84]: https://www.codefactor.io/repository/github/easyscience/easyDiffractionLib diff --git a/pyproject.toml b/pyproject.toml index 2d5645d5..a56c5e7c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,11 +8,18 @@ build-backend = "poetry.masonry.api" name = "easyDiffractionLib" version = "0.0.2" description = 'Making diffraction data analysis and modelling easy.' -license = "GPL-3.0-only" -authors = ["Andrew Sazonov", "Simon Ward"] +license = "BSD-3" +authors = ["Simon Ward", "Andrew Sazonov"] readme = "README.md" homepage = "https://github.com/easyScience/easyDiffractionLib" documentation = "https://github.com/easyScience/easyDiffractionLib" +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", # Define that your audience are developers + "Topic :: Scientific/Engineering :: Physics", + "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", # Again, pick a license + "Programming Language :: Python :: 3 :: Only", +] include = ["CHANGELOG.md"] packages = [ { include = "easyDiffractionLib" } ] @@ -38,18 +45,48 @@ requests = '^2.24' hvplot = "^0.7.0" jupyter = "^1.0.0" +[tool.coverage.run] +source = ['easyDiffractionLib'] + +[tool.github.info] +organization = 'easyScience' +repo = 'easyDiffractionLib' + [tool.poetry.scripts] easyDiffractionLib = "easyDiffractionLib.main:main" # CUSTOM CONFIG -[ci.pyinstaller] -libs = { macos = 'libsDarwin', ubuntu = 'libsLinux', windows = 'libsWin32' } - -[tool.dephell.main] -from = {format = "poetry", path = "pyproject.toml"} -to = {format = "setuppy", path = "setup.py"} +[tool.tox] +legacy_tox_ini = """ +[tox] +isolated_build = True +envlist = py{37,38,39} +[gh-actions] +python = + 3.7: py37 + 3.8: py38 + 3.9: py39 +[gh-actions:env] +PLATFORM = + ubuntu-latest: linux + macos-latest: macos + windows-latest: windows +[testenv] +passenv = + CI + GITHUB_ACTIONS + GITHUB_ACTION + GITHUB_REF + GITHUB_REPOSITORY + GITHUB_HEAD_REF + GITHUB_RUN_ID + GITHUB_SHA + COVERAGE_FILE +deps = coverage +whitelist_externals = poetry +commands = + poetry install -vvv + poetry run pytest --cov --cov-report=xml +""" -[tool.dephell.requirements] -from = {format = "poetry", path = "pyproject.toml"} -to = {format = "pip", path = "requirements.txt"} diff --git a/resources/images/ed_logo.svg b/resources/images/ed_logo.svg new file mode 100644 index 00000000..de319d8d --- /dev/null +++ b/resources/images/ed_logo.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/images/ed_logo_single.svg b/resources/images/ed_logo_single.svg new file mode 100644 index 00000000..5aab6b19 --- /dev/null +++ b/resources/images/ed_logo_single.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/images/ed_logo_wfont.svg b/resources/images/ed_logo_wfont.svg new file mode 100644 index 00000000..97697d02 --- /dev/null +++ b/resources/images/ed_logo_wfont.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + easydiffraction + \ No newline at end of file diff --git a/tests/description.txt b/tests/__init__.py similarity index 100% rename from tests/description.txt rename to tests/__init__.py diff --git a/tests/CFML_Cryspy.png b/tests/integration_tests/CFML_Cryspy.png similarity index 100% rename from tests/CFML_Cryspy.png rename to tests/integration_tests/CFML_Cryspy.png diff --git a/tests/FittingData.ipynb b/tests/integration_tests/FittingData.ipynb similarity index 100% rename from tests/FittingData.ipynb rename to tests/integration_tests/FittingData.ipynb diff --git a/tests/FittingData_CFML-xarrays.ipynb b/tests/integration_tests/FittingData_CFML-xarrays.ipynb similarity index 100% rename from tests/FittingData_CFML-xarrays.ipynb rename to tests/integration_tests/FittingData_CFML-xarrays.ipynb diff --git a/tests/FittingData_CFML.ipynb b/tests/integration_tests/FittingData_CFML.ipynb similarity index 100% rename from tests/FittingData_CFML.ipynb rename to tests/integration_tests/FittingData_CFML.ipynb diff --git a/tests/PbSO4.cif b/tests/integration_tests/PbSO4.cif similarity index 100% rename from tests/PbSO4.cif rename to tests/integration_tests/PbSO4.cif diff --git a/tests/PbSO4_neutrons_short.xye b/tests/integration_tests/PbSO4_neutrons_short.xye similarity index 100% rename from tests/PbSO4_neutrons_short.xye rename to tests/integration_tests/PbSO4_neutrons_short.xye diff --git a/tests/PbSO4_xrays_short.xye b/tests/integration_tests/PbSO4_xrays_short.xye similarity index 100% rename from tests/PbSO4_xrays_short.xye rename to tests/integration_tests/PbSO4_xrays_short.xye diff --git a/tests/SrTiO3.cif b/tests/integration_tests/SrTiO3.cif similarity index 100% rename from tests/SrTiO3.cif rename to tests/integration_tests/SrTiO3.cif diff --git a/tests/WorkedExample2.ipynb b/tests/integration_tests/WorkedExample2.ipynb similarity index 100% rename from tests/WorkedExample2.ipynb rename to tests/integration_tests/WorkedExample2.ipynb diff --git a/tests/integration_tests/description.txt b/tests/integration_tests/description.txt new file mode 100644 index 00000000..e69de29b diff --git a/tests/fit_script.py b/tests/integration_tests/fit_script.py similarity index 100% rename from tests/fit_script.py rename to tests/integration_tests/fit_script.py diff --git a/tests/test1.py b/tests/integration_tests/test1.py similarity index 100% rename from tests/test1.py rename to tests/integration_tests/test1.py diff --git a/tests/test3.py b/tests/integration_tests/test3.py similarity index 100% rename from tests/test3.py rename to tests/integration_tests/test3.py diff --git a/tests/workedExample1.ipynb b/tests/integration_tests/workedExample1.ipynb similarity index 100% rename from tests/workedExample1.ipynb rename to tests/integration_tests/workedExample1.ipynb diff --git a/tests/xarray_test.ipynb b/tests/integration_tests/xarray_test.ipynb similarity index 100% rename from tests/xarray_test.ipynb rename to tests/integration_tests/xarray_test.ipynb diff --git a/tests/unit_tests/Calculators/__init__.py b/tests/unit_tests/Calculators/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/tests/unit_tests/Calculators/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/tests/unit_tests/Elements/__init__.py b/tests/unit_tests/Elements/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/tests/unit_tests/Elements/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/tests/unit_tests/Interfaces/__init__.py b/tests/unit_tests/Interfaces/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/tests/unit_tests/Interfaces/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/tests/unit_tests/Profiles/__init__.py b/tests/unit_tests/Profiles/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/tests/unit_tests/Profiles/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/tests/unit_tests/__init__.py b/tests/unit_tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/unit_tests/test_Jobs.py b/tests/unit_tests/test_Jobs.py new file mode 100644 index 00000000..080465b8 --- /dev/null +++ b/tests/unit_tests/test_Jobs.py @@ -0,0 +1,14 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + + +def test_job_base_1d(): + assert False + + +def test_powder1dcw(): + assert False + + +def test_powder1dtof(): + assert False diff --git a/tests/unit_tests/test_Runner.py b/tests/unit_tests/test_Runner.py new file mode 100644 index 00000000..cdd17ac1 --- /dev/null +++ b/tests/unit_tests/test_Runner.py @@ -0,0 +1,18 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + + +def test_add_job(): + assert False + + +def test_phases(): + assert False + + +def test_add_phase(): + assert False + + +def test_jobs(): + assert False diff --git a/tests/unit_tests/test_interface.py b/tests/unit_tests/test_interface.py new file mode 100644 index 00000000..07c95353 --- /dev/null +++ b/tests/unit_tests/test_interface.py @@ -0,0 +1,10 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + + +def test_get_hkl(): + assert False + + +def test_interface_compatability(): + assert False diff --git a/tests/unit_tests/test_sample.py b/tests/unit_tests/test_sample.py new file mode 100644 index 00000000..505728ea --- /dev/null +++ b/tests/unit_tests/test_sample.py @@ -0,0 +1,54 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + + +def test_get_phase(): + assert False + + +def test_get_background(): + assert False + + +def test_set_background(): + assert False + + +def test_remove_background(): + assert False + + +def test_backgrounds(): + assert False + + +def test_phases(): + assert False + + +def test_phases(): + assert False + + +def test_parameters(): + assert False + + +def test_parameters(): + assert False + + +def test_update_bindings(): + assert False + + +def test_pattern(): + assert False + + +def test_as_dict(): + assert False + + +def test_exp_type_str(): + assert False From 419ca5cc96141b129720034ffc11c8dc93a423aa Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 25 Aug 2021 10:40:36 +0200 Subject: [PATCH 168/312] Update LICENSE --- LICENSE | 703 +++----------------------------------------------------- 1 file changed, 29 insertions(+), 674 deletions(-) diff --git a/LICENSE b/LICENSE index f288702d..c0f7977a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,674 +1,29 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. +BSD 3-Clause License + +Copyright (c) 2021, European Spallation Source +All rights reserved. + +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. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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 bfed5836d1bfe8d8ce09b2f78559ac28fea7a29f Mon Sep 17 00:00:00 2001 From: Piotr R Date: Fri, 10 Sep 2021 21:30:17 +0200 Subject: [PATCH 169/312] fixed/updated FittingData notebook --- easyDiffractionLib/Interfaces/CFML.py | 2 +- easyDiffractionLib/Interfaces/GSASII.py | 2 +- easyDiffractionLib/sample.py | 10 +- tests/FittingData.ipynb | 3570 ++--------------------- tests/FittingData_CFML.ipynb | 83 +- tests/test1.py | 58 +- tests/test3.py | 4 +- 7 files changed, 269 insertions(+), 3460 deletions(-) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 6c47a403..f0baf709 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -4,7 +4,6 @@ from easyCore import borg, np from easyCore.Objects.Inferface import ItemContainer from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases -from easyDiffractionLib.sample import Sample from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters from easyDiffractionLib.Calculators.CFML import CFML as CFML_calc @@ -72,6 +71,7 @@ def feature_checker(radiation='N', exp_type='CW', sample_type='powder', dimensio FEATURES=CFML.feature_available) def create(self, model): + from easyDiffractionLib.sample import Sample r_list = [] t_ = type(model) model_key = self.__identify(model) diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index f4fadd79..ddac205f 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -6,7 +6,6 @@ from easyCore.Objects.Inferface import ItemContainer from ..Calculators.GSASII import GSASII as GSAS_calc from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters -from easyDiffractionLib.sample import Sample from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases @@ -72,6 +71,7 @@ def feature_checker(radiation='N', exp_type='CW', sample_type='powder', dimensio FEATURES=GSASII.feature_available) def create(self, model): + from easyDiffractionLib.sample import Sample r_list = [] t_ = type(model) model_key = self.__identify(model) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index d7244eae..84ab2d29 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -9,12 +9,13 @@ from easyDiffractionLib import Phase, Phases from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters +from easyDiffractionLib.interface import InterfaceFactory from easyDiffractionLib.Profiles.P1D import Powder1DParameters as Pattern1D class Sample(BaseObj): def __init__(self, phases: Union[Phase, Phases] = None, - parameters=None, pattern=None, + parameters=None, pattern=None, calculator=None, interface=None, name: str = 'easySample'): if isinstance(phases, Phase): phases = Phases('Phases', phases) @@ -35,7 +36,12 @@ def __init__(self, phases: Union[Phase, Phases] = None, self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') print(f"Temp CIF: {self.filename}") self.output_index = None - self.interface = interface + if calculator is not None: + self.interface = calculator + elif interface is not None: + self.interface = interface + else: + self.interface = InterfaceFactory() def get_phase(self, phase_index): return self._phases[phase_index] diff --git a/tests/FittingData.ipynb b/tests/FittingData.ipynb index b8ade219..1e59c17e 100644 --- a/tests/FittingData.ipynb +++ b/tests/FittingData.ipynb @@ -14,16 +14,9 @@ "There are two built in fitting engines, `lmfit` and `bumps`." ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import all the packages." - ] - }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -31,9 +24,10 @@ "from easyCore import np\n", "from easyDiffractionLib.sample import Sample\n", "from easyDiffractionLib import Phases\n", - "from easyDiffractionLib.interface import InterfaceFactory\n", - "from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", + "\n", "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", "\n", "from easyCore.Fitting.Fitting import Fitter\n", "\n", @@ -51,861 +45,47 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We load up a cif file and then set the experimental parameters." + "Load structure from a CIF file" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Temp CIF: /tmp/easydiffraction_temp.cif\n" - ] - } - ], + "outputs": [], "source": [ - "interface = InterfaceFactory()\n", - "c = Phases.from_cif_file('PbSO4.cif')\n", - "S = Sample(phases=c, parameters=Pars1D.default(), pattern=Pattern1D.default(), interface=interface)" + "calculator = Calculator()\n", + "phase = Phases.from_cif_file('PbSO4.cif')\n", + "sample = Sample(phases=phase, parameters=Instrument1DCWParameters.default(), calculator=calculator)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can load up some experimental data" + "Load experimental data from a file" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "y_calc: [0.000e+00 0.000e+00 0.000e+00 ... 1.785e-27 5.036e-27 4.583e-27]\n" - ] - } - ], + "outputs": [], "source": [ "file_path = 'PbSO4_neutrons_short.xye'\n", "data_x, data_y, data_e = np.loadtxt(file_path, unpack=True)\n", "\n", + "data_y = data_y/100.0\n", + "\n", "# Generate the simulation y-data\n", - "sim_y_data = interface.fit_func(data_x)\n" + "sim_y_data = calculator.fit_func(data_x)\n" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " if (mpl.ratio != 1) {\n", - " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", - " }\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " fig.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var backingStore = this.context.backingStorePixelRatio ||\n", - "\tthis.context.webkitBackingStorePixelRatio ||\n", - "\tthis.context.mozBackingStorePixelRatio ||\n", - "\tthis.context.msBackingStorePixelRatio ||\n", - "\tthis.context.oBackingStorePixelRatio ||\n", - "\tthis.context.backingStorePixelRatio || 1;\n", - "\n", - " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width * mpl.ratio);\n", - " canvas.attr('height', height * mpl.ratio);\n", - " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
');\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "S.parameters.wavelength = 1.912\n", - "S.parameters.u_resolution = 1.4\n", - "S.parameters.v_resolution = -0.42\n", - "S.parameters.w_resolution = 0.38\n", - "S.parameters.x_resolution = 0.0\n", - "S.parameters.y_resolution = 0.0\n", + "sample.parameters.wavelength = 1.912\n", + "sample.parameters.u_resolution = 1.4\n", + "sample.parameters.v_resolution = -0.42\n", + "sample.parameters.w_resolution = 0.38\n", + "sample.parameters.x_resolution = 0.0\n", + "sample.parameters.y_resolution = 0.0\n", "\n", - "sim_y_data = interface.fit_func(data_x)\n", + "sim_y_data = calculator.fit_func(data_x)\n", "\n", "%matplotlib notebook\n", "plt.plot(data_x, data_y, label='Experimental')\n", @@ -1752,848 +126,44 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we need to set the background" + "This looks much better now - experimental and theoretical peaks seem to be very close but there is no background included in our simulation." ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", "\n", "bg = PointBackground(linked_experiment='PbSO4')\n", - "bg.append(BackgroundPoint.from_pars(data_x[0], 200))\n", - "bg.append(BackgroundPoint.from_pars(data_x[-1], 200))\n", + "bg.append(BackgroundPoint.from_pars(data_x[0], 2))\n", + "bg.append(BackgroundPoint.from_pars(data_x[-1], 2))\n", "\n", - "S.set_background(bg)" + "sample.set_background(bg)" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collection of 1 backgrounds.\n", - "y_calc: [200. 200. 200. ... 200. 200. 200.]\n" - ] - }, - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " if (mpl.ratio != 1) {\n", - " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", - " }\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " fig.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var backingStore = this.context.backingStorePixelRatio ||\n", - "\tthis.context.webkitBackingStorePixelRatio ||\n", - "\tthis.context.mozBackingStorePixelRatio ||\n", - "\tthis.context.msBackingStorePixelRatio ||\n", - "\tthis.context.oBackingStorePixelRatio ||\n", - "\tthis.context.backingStorePixelRatio || 1;\n", - "\n", - " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width * mpl.ratio);\n", - " canvas.attr('height', height * mpl.ratio);\n", - " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
');\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('');\n", - " button.click(method_name, toolbar_event);\n", - " button.mouseover(tooltip, toolbar_mouse_event);\n", - " nav_element.append(button);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = $('');\n", - " nav_element.append(status_bar);\n", - " this.message = status_bar[0];\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = $('
');\n", - " var button = $('');\n", - " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", - " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", - " buttongrp.append(button);\n", - " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", - " titlebar.prepend(buttongrp);\n", - "}\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(el){\n", - " var fig = this\n", - " el.on(\"remove\", function(){\n", - "\tfig.close_ws(fig, {});\n", - " });\n", - "}\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(el){\n", - " // this is important to make the div 'focusable\n", - " el.attr('tabindex', 0)\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " }\n", - " else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._key_event_extra = function(event, name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager)\n", - " manager = IPython.keyboard_manager;\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which == 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "}\n", - "\n", - "mpl.figure.prototype.handle_save = function(fig, msg) {\n", - " fig.ondownload(fig, null);\n", - "}\n", - "\n", - "\n", - "mpl.find_output_cell = function(html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] == html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel != null) {\n", - " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "%matplotlib notebook\n", "plt.plot(data_x, data_y, label='Experimental')\n", @@ -3545,25 +229,127 @@ "plt.legend()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fitted parameters" + ] + }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f'Scale: {sample.pattern.scale}')\n", + "print(f'BG 0: {sample.backgrounds[0][0]}')\n", + "print(f'BG 1: {sample.backgrounds[0][1]}')" + ] + }, + { + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scale: \n", - "BG 0: \n", - "BG 1: \n" - ] - } - ], "source": [ - "print(f'Scale: {S.pattern.scale}')\n", - "print(f'BG 0: {S.backgrounds[0][0]}')\n", - "print(f'BG 1: {S.backgrounds[0][1]}')" + "**Parameter object with varying accessors**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f'Scale: {sample.pattern.scale}')\n", + "print(f'Scale: {sample.pattern.scale.value}')\n", + "print(f'Scale: {sample.pattern.scale.raw_value}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fit is quite good, but let's see if we can do better with a different optimizer." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Change the optimizer to `bumps`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"available minimizers:\", f.available_engines)\n", + "print()\n", + "print(\"current minimizer:\", f.current_engine.name)\n", + "print(\"available methods of current minimizer:\", f.available_methods())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"switch minimizer\")\n", + "f.switch_engine('bumps')\n", + "f_method = 'lm'\n", + "print(\"current minimizer:\", f.current_engine.name)\n", + "print(\"available methods of current minimizer:\", f.available_methods())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Rerun fitting** (takes a while!)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = f.fit(data_x, data_y, weights=1/data_e)\n", + "\n", + "if result.success:\n", + " print(\"The fit has been successful: {}\".format(result.success))\n", + " print(\"The gooodness of fit is: {}\".format(result.goodness_of_fit))\n", + " \n", + "sim_y_data = calculator.fit_func(data_x)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experimental')\n", + "plt.plot(data_x, sim_y_data, label='Best Fit')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f'Scale: {sample.pattern.scale}')\n", + "print(f'BG 0: {sample.backgrounds[0][0]}')\n", + "print(f'BG 1: {sample.backgrounds[0][1]}')\n", + "#print(f'Res U: {sample.parameters.resolution_u}')\n", + "#print(f'Res V: {sample.parameters.resolution_v}')\n", + "#print(f'Res W: {sample.parameters.resolution_w}')" ] }, { @@ -3576,7 +362,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -3590,9 +376,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.7.10" } }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/tests/FittingData_CFML.ipynb b/tests/FittingData_CFML.ipynb index 46799e9e..9b890011 100644 --- a/tests/FittingData_CFML.ipynb +++ b/tests/FittingData_CFML.ipynb @@ -34,8 +34,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Test path: /home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests\n", - "easyDiffractionLib path: /home/simonward/PycharmProjects/easyScience/easyDiffractionLib\n" + "Test path: D:\\projects\\easyScience\\easyDiffractionLib\\tests\n", + "easyDiffractionLib path: D:\\projects\\easyScience\\easyDiffractionLib\n" ] } ], @@ -72,7 +72,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/src/libslinux/libsLinux/GSASII/bindist\n" + "Warning: GSAS-2 is not installed\n" ] } ], @@ -82,7 +82,7 @@ "from easyDiffractionLib.sample import Sample\n", "from easyDiffractionLib import Phases\n", "from easyDiffractionLib.interface import InterfaceFactory\n", - "from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", "\n", "from easyCore.Fitting.Fitting import Fitter\n", @@ -125,8 +125,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "cif_path: /home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/PbSO4.cif\n", - "Temp CIF: /tmp/easydiffraction_temp.cif\n" + "cif_path: D:\\projects\\easyScience\\easyDiffractionLib\\tests\\PbSO4.cif\n", + "Temp CIF: C:\\Users\\PIOTRR~1\\AppData\\Local\\Temp\\easydiffraction_temp.cif\n" ] } ], @@ -135,7 +135,7 @@ "cif_path = os.path.join(tests_path, 'PbSO4.cif')\n", "print('cif_path:', cif_path)\n", "c = Phases.from_cif_file(cif_path)\n", - "S = Sample(phases=c, parameters=Pars1D.default(), pattern=Pattern1D.default(), interface=interface)" + "S = Sample(phases=c, parameters=Instrument1DCWParameters.default(), pattern=Pattern1D.default(), interface=interface)" ] }, { @@ -162,9 +162,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "xye_path: /home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/PbSO4_xrays_short.xye\n", + "xye_path: D:\\projects\\easyScience\\easyDiffractionLib\\tests\\PbSO4_xrays_short.xye\n", "data_x: [ 10. 10.025 10.05 ... 119.95 119.975 120. ]\n", - "data_y: [179. 147. 165. ... 163. 164. 166.]\n", + "data_y: [1.79 1.47 1.65 ... 1.63 1.64 1.66]\n", "data_e: [13.3791 12.1244 12.8452 ... 12.7671 12.8062 12.8841]\n" ] } @@ -173,6 +173,7 @@ "xye_path = os.path.join(tests_path, 'PbSO4_xrays_short.xye')\n", "print('xye_path:', xye_path)\n", "data_x, data_y, data_e = np.loadtxt(xye_path, unpack=True)\n", + "data_y = data_y/100.0\n", "print('data_x:', data_x)\n", "print('data_y:', data_y)\n", "print('data_e:', data_e)" @@ -180,57 +181,67 @@ }, { "cell_type": "markdown", + "metadata": {}, "source": [ "Generate the simulation y-data" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "sim_y_data = interface.fit_func(data_x)" - ], + "execution_count": 5, "metadata": { - "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'NoneType' object has no attribute 'backgrounds'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mC:\\Users\\PIOTRR~1\\AppData\\Local\\Temp/ipykernel_11604/3886639634.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msim_y_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0minterface\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata_x\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mD:\\projects\\easyScience\\easyDiffractionLib\\easyDiffractionLib\\Interfaces\\cryspy.py\u001b[0m in \u001b[0;36mfit_func\u001b[1;34m(self, x_array)\u001b[0m\n\u001b[0;32m 195\u001b[0m \u001b[1;33m:\u001b[0m\u001b[0mrtype\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 196\u001b[0m \"\"\"\n\u001b[1;32m--> 197\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcalculator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcalculate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 198\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 199\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mget_hkl\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx_array\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndarray\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0midx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mdict\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mD:\\projects\\easyScience\\easyDiffractionLib\\easyDiffractionLib\\Calculators\\cryspy.py\u001b[0m in \u001b[0;36mcalculate\u001b[1;34m(self, x_array)\u001b[0m\n\u001b[0;32m 352\u001b[0m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mzeros_like\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 353\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtype\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'powder1DCW'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 354\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpowder_1d_calculate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 355\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtype\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'powder1DTOF'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 356\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpowder_1d_tof_calculate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mD:\\projects\\easyScience\\easyDiffractionLib\\easyDiffractionLib\\Calculators\\cryspy.py\u001b[0m in \u001b[0;36mpowder_1d_calculate\u001b[1;34m(self, x_array)\u001b[0m\n\u001b[0;32m 263\u001b[0m \u001b[0mcrystal\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstorage\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcurrent_crystal\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 264\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 265\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpattern\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbackgrounds\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 266\u001b[0m \u001b[0mbg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mzeros_like\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mthis_x_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 267\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'backgrounds'" + ] + } + ], + "source": [ + "sim_y_data = interface.fit_func(data_x)" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "%matplotlib notebook\n", "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", "plt.plot(data_x, sim_y_data, label=f'Calculations ({interface.current_interface_name})')\n", "plt.legend()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, - "outputs": [], - "source": [ - "We can load up some experimental data" - ], "metadata": { - "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "We can load up some experimental data" + ] }, { "cell_type": "markdown", @@ -6523,7 +6534,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -6537,9 +6548,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.7.9" } }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/tests/test1.py b/tests/test1.py index 7d29a3a9..ea0c5c6f 100644 --- a/tests/test1.py +++ b/tests/test1.py @@ -5,54 +5,60 @@ from easyDiffractionLib.sample import Sample from easyDiffractionLib import Phase -from easyDiffractionLib.interface import InterfaceFactory -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D +from easyDiffractionLib.interface import InterfaceFactory as Calculator +# from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters import matplotlib.pyplot as plt -i = InterfaceFactory() +calculator = Calculator() -c = Phase.from_cif_file('tests/SrTiO3.cif') +phase = Phase.from_cif_file('tests/SrTiO3.cif') -S = Sample(phases=c, parameters=Pars1D.default(), interface=i) +sample = Sample(phases=phase, + parameters=Instrument1DCWParameters.default(), + calculator=calculator) # S.phase.cell.length_a = 5 # S.parameters.wavelength = 1.25 # print(S) x_data = np.linspace(5, 150, 100) -y_data = i.fit_func(x_data) +y_data = calculator.fit_func(x_data) -plt.plot(x_data, y_data, label="CFL") -plt.show() +# plt.plot(x_data, y_data, label="CFL") +# plt.show() -S.parameters.wavelength = 2.5 -y_data = i.fit_func(x_data) -plt.plot(x_data, y_data, label="CFL") -plt.show() +sample.parameters.wavelength = 2.5 +y_data = calculator.fit_func(x_data) +# plt.plot(x_data, y_data, label="CFL") +# plt.show() -S.phases[0].cell.length_a = 10 -y_data = i.fit_func(x_data) -plt.plot(x_data, y_data, label="CFL") -plt.show() +sample.phases[0].cell.length_a = 10 +y_data = calculator.fit_func(x_data) +# plt.plot(x_data, y_data, label="CFL") +# plt.show() -i.switch('CrysPy') -S._updateInterface() +calculator.switch('CrysFML') +sample = Sample(phases=phase, + parameters=Instrument1DCWParameters.default(), + calculator=calculator) +# ._updateInterface() # S.phase.cell.length_a = 5 # S.parameters.wavelength = 1.25 # print(S) x_data = np.linspace(5, 150, 100) -y_data = i.fit_func(x_data) +y_data = calculator.fit_func(x_data) plt.plot(x_data, y_data, label="CFL") plt.show() -S.parameters.wavelength = 2.5 -y_data = i.fit_func(x_data) -plt.plot(x_data, y_data, label="CFL") -plt.show() +# sample.parameters.wavelength = 2.5 +#y_data = calculator.fit_func(x_data) +#plt.plot(x_data, y_data, label="CFL") +#plt.show() -S.phases[0].cell.length_a = 10 -y_data = i.fit_func(x_data) +sample.phases[0].cell.length_a = 10 +y_data = calculator.fit_func(x_data) plt.plot(x_data, y_data, label="CFL") -plt.show() \ No newline at end of file +plt.show() diff --git a/tests/test3.py b/tests/test3.py index 0f3c2403..ce1c2faa 100644 --- a/tests/test3.py +++ b/tests/test3.py @@ -6,7 +6,7 @@ from easyDiffractionLib.sample import Sample from easyDiffractionLib import Phase, Phases from easyDiffractionLib.interface import InterfaceFactory -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters import matplotlib.pyplot as plt @@ -15,7 +15,7 @@ c = Phases.from_cif_file('tests/SrTiO3.cif') -S = Sample(phases=c, parameters=Pars1D.default(), interface=i) +S = Sample(phases=c, parameters=Instrument1DCWParameters.default(), interface=i) x_data = np.linspace(5, 150, 10000) y_data = i.fit_func(x_data) From 97a36b36d4705365478b67e95f73f4829cc61050 Mon Sep 17 00:00:00 2001 From: Piotr R Date: Mon, 13 Sep 2021 22:20:05 +0200 Subject: [PATCH 170/312] more updates for new eC and eDL --- tests/FittingData.ipynb | 29 +- tests/FittingData_CFML-xarrays.ipynb | 1848 +------- tests/FittingData_CFML.ipynb | 6222 +------------------------- tests/test1.py | 10 +- tests/test4.py | 32 + 5 files changed, 255 insertions(+), 7886 deletions(-) create mode 100644 tests/test4.py diff --git a/tests/FittingData.ipynb b/tests/FittingData.ipynb index 1e59c17e..d83de8bf 100644 --- a/tests/FittingData.ipynb +++ b/tests/FittingData.ipynb @@ -16,9 +16,18 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GSAS-II binary directory: c:\\anaconda3\\envs\\easy\\lib\\site-packages\\GSASII\\bindist\n", + "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" + ] + } + ], "source": [ "# Import all the packages\n", "from easyCore import np\n", @@ -50,9 +59,17 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: C:\\Users\\piotr\\AppData\\Local\\Temp\\easydiffraction_temp.cif\n" + ] + } + ], "source": [ "calculator = Calculator()\n", "phase = Phases.from_cif_file('PbSO4.cif')\n", diff --git a/tests/FittingData_CFML-xarrays.ipynb b/tests/FittingData_CFML-xarrays.ipynb index af5dde72..0d7aafc6 100644 --- a/tests/FittingData_CFML-xarrays.ipynb +++ b/tests/FittingData_CFML-xarrays.ipynb @@ -23,25 +23,17 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 53, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GSAS-II binary directory: /home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/src/libslinux/libsLinux/GSASII/bindist\n" - ] - } - ], + "outputs": [], "source": [ "# Import all the packages\n", "from easyCore import np\n", "from easyDiffractionLib.sample import Sample\n", "from easyDiffractionLib import Phases\n", "from easyDiffractionLib.interface import InterfaceFactory\n", - "from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D\n", "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", "\n", "from easyCore.Fitting.Fitting import Fitter\n", "\n", @@ -50,1410 +42,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 54, "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "\n", - "(function(root) {\n", - " function now() {\n", - " return new Date();\n", - " }\n", - "\n", - " var force = true;\n", - "\n", - " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", - " root._bokeh_onload_callbacks = [];\n", - " root._bokeh_is_loading = undefined;\n", - " }\n", - "\n", - " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", - " root._bokeh_timeout = Date.now() + 5000;\n", - " root._bokeh_failed_load = false;\n", - " }\n", - "\n", - " function run_callbacks() {\n", - " try {\n", - " root._bokeh_onload_callbacks.forEach(function(callback) {\n", - " if (callback != null)\n", - " callback();\n", - " });\n", - " } finally {\n", - " delete root._bokeh_onload_callbacks\n", - " }\n", - " console.debug(\"Bokeh: all callbacks have finished\");\n", - " }\n", - "\n", - " function load_libs(css_urls, js_urls, callback) {\n", - " if (css_urls == null) css_urls = [];\n", - " if (js_urls == null) js_urls = [];\n", - "\n", - " root._bokeh_onload_callbacks.push(callback);\n", - " if (root._bokeh_is_loading > 0) {\n", - " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", - " return null;\n", - " }\n", - " if (js_urls == null || js_urls.length === 0) {\n", - " run_callbacks();\n", - " return null;\n", - " }\n", - " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", - " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", - "\n", - " function on_load() {\n", - " root._bokeh_is_loading--;\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", - " run_callbacks()\n", - " }\n", - " }\n", - "\n", - " function on_error() {\n", - " console.error(\"failed to load \" + url);\n", - " }\n", - "\n", - " for (var i = 0; i < css_urls.length; i++) {\n", - " var url = css_urls[i];\n", - " const element = document.createElement(\"link\");\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.rel = \"stylesheet\";\n", - " element.type = \"text/css\";\n", - " element.href = url;\n", - " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " var skip = [];\n", - " if (window.requirejs) {\n", - " require([], function() {\n", - " })\n", - " }\n", - " for (var i = 0; i < js_urls.length; i++) {\n", - " var url = js_urls[i];\n", - " if (skip.indexOf(url) >= 0) { on_load(); continue; }\n", - " var element = document.createElement('script');\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.async = false;\n", - " element.src = url;\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.head.appendChild(element);\n", - " }\n", - "\tif (!js_urls.length) {\n", - " on_load()\n", - " }\n", - " };\n", - "\n", - " function inject_raw_css(css) {\n", - " const element = document.createElement(\"style\");\n", - " element.appendChild(document.createTextNode(css));\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " var js_urls = [];\n", - " var css_urls = [];\n", - "\n", - " var inline_js = [\n", - " function(Bokeh) {\n", - " inject_raw_css(\".bk.panel-widget-box {\\n\\tmin-height: 20px;\\n\\tbackground-color: #f5f5f5;\\n\\tborder: 1px solid #e3e3e3;\\n\\tborder-radius: 4px;\\n\\t-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n\\tbox-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n\\toverflow-x: hidden;\\n\\toverflow-y: hidden;\\n}\\n\\n.scrollable {\\n overflow: scroll;\\n}\\n\\nprogress {\\n\\tappearance: none;\\n\\t-moz-appearance: none;\\n\\t-webkit-appearance: none;\\n\\n\\tborder: none;\\n\\theight: 20px;\\n\\tbackground-color: whiteSmoke;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n\\tcolor: royalblue;\\n\\tposition: relative;\\n\\tmargin: 0 0 1.5em;\\n}\\n\\nprogress[value]::-webkit-progress-bar {\\n\\tbackground-color: whiteSmoke;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n}\\n\\nprogress[value]::-webkit-progress-value {\\n\\tposition: relative;\\n\\n\\tbackground-size: 35px 20px, 100% 100%, 100% 100%;\\n\\tborder-radius:3px;\\n}\\n\\nprogress.active:not([value])::before {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress[value]::-moz-progress-bar {\\n\\tbackground-size: 35px 20px, 100% 100%, 100% 100%;\\n\\tborder-radius:3px;\\n}\\n\\nprogress:not([value])::-moz-progress-bar {\\n\\tborder-radius:3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n\\n}\\n\\nprogress.active:not([value])::-moz-progress-bar {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress.active:not([value])::-webkit-progress-bar {\\n\\tbackground-position: 10%;\\n\\tanimation-name: stripes;\\n\\tanimation-duration: 3s;\\n\\tanimation-timing-function: linear;\\n\\tanimation-iteration-count: infinite;\\n}\\n\\nprogress.primary[value]::-webkit-progress-value { background-color: #007bff; }\\nprogress.primary:not([value])::before { background-color: #007bff; }\\nprogress.primary:not([value])::-webkit-progress-bar { background-color: #007bff; }\\nprogress.primary::-moz-progress-bar { background-color: #007bff; }\\n\\nprogress.secondary[value]::-webkit-progress-value { background-color: #6c757d; }\\nprogress.secondary:not([value])::before { background-color: #6c757d; }\\nprogress.secondary:not([value])::-webkit-progress-bar { background-color: #6c757d; }\\nprogress.secondary::-moz-progress-bar { background-color: #6c757d; }\\n\\nprogress.success[value]::-webkit-progress-value { background-color: #28a745; }\\nprogress.success:not([value])::before { background-color: #28a745; }\\nprogress.success:not([value])::-webkit-progress-bar { background-color: #28a745; }\\nprogress.success::-moz-progress-bar { background-color: #28a745; }\\n\\nprogress.danger[value]::-webkit-progress-value { background-color: #dc3545; }\\nprogress.danger:not([value])::before { background-color: #dc3545; }\\nprogress.danger:not([value])::-webkit-progress-bar { background-color: #dc3545; }\\nprogress.danger::-moz-progress-bar { background-color: #dc3545; }\\n\\nprogress.warning[value]::-webkit-progress-value { background-color: #ffc107; }\\nprogress.warning:not([value])::before { background-color: #ffc107; }\\nprogress.warning:not([value])::-webkit-progress-bar { background-color: #ffc107; }\\nprogress.warning::-moz-progress-bar { background-color: #ffc107; }\\n\\nprogress.info[value]::-webkit-progress-value { background-color: #17a2b8; }\\nprogress.info:not([value])::before { background-color: #17a2b8; }\\nprogress.info:not([value])::-webkit-progress-bar { background-color: #17a2b8; }\\nprogress.info::-moz-progress-bar { background-color: #17a2b8; }\\n\\nprogress.light[value]::-webkit-progress-value { background-color: #f8f9fa; }\\nprogress.light:not([value])::before { background-color: #f8f9fa; }\\nprogress.light:not([value])::-webkit-progress-bar { background-color: #f8f9fa; }\\nprogress.light::-moz-progress-bar { background-color: #f8f9fa; }\\n\\nprogress.dark[value]::-webkit-progress-value { background-color: #343a40; }\\nprogress.dark:not([value])::-webkit-progress-bar { background-color: #343a40; }\\nprogress.dark:not([value])::before { background-color: #343a40; }\\nprogress.dark::-moz-progress-bar { background-color: #343a40; }\\n\\nprogress:not([value])::-webkit-progress-bar {\\n\\tborder-radius: 3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\nprogress:not([value])::before {\\n\\tcontent:\\\" \\\";\\n\\tposition:absolute;\\n\\theight: 20px;\\n\\ttop:0;\\n\\tleft:0;\\n\\tright:0;\\n\\tbottom:0;\\n\\tborder-radius: 3px;\\n\\tbackground:\\n\\tlinear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\n@keyframes stripes {\\n from {background-position: 0%}\\n to {background-position: 100%}\\n}\\n\\n.bk.loader::after {\\n content: \\\"\\\";\\n border-radius: 50%;\\n -webkit-mask-image: radial-gradient(transparent 50%, rgba(0, 0, 0, 1) 54%);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n position: absolute;\\n}\\n\\n.bk-root .bk.loader.dark::after {\\n background: #0f0f0f;\\n}\\n\\n.bk-root .bk.loader.light::after {\\n background: #f0f0f0;\\n}\\n\\n.bk-root .bk.loader.spin::after {\\n animation: spin 2s linear infinite;\\n}\\n\\n.bk-root div.bk.loader.spin.primary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #dc3545 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.warning-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.dark-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #343a40 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.primary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #dc3545 50%)\\n}\\n\\n.bk-root div.bk.loader.spin.warning-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.dark-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #343a40 50%);\\n}\\n\\n/* Safari */\\n@-webkit-keyframes spin {\\n 0% { -webkit-transform: rotate(0deg); }\\n 100% { -webkit-transform: rotate(360deg); }\\n}\\n\\n@keyframes spin {\\n 0% { transform: rotate(0deg); }\\n 100% { transform: rotate(360deg); }\\n}\\n\\n.dot div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n background-color: #fff;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled.primary div {\\n background-color: #007bff;\\n}\\n\\n.dot-filled.secondary div {\\n background-color: #6c757d;\\n}\\n\\n.dot-filled.success div {\\n background-color: #28a745;\\n}\\n\\n.dot-filled.danger div {\\n background-color: #dc3545;\\n}\\n\\n.dot-filled.warning div {\\n background-color: #ffc107;\\n}\\n\\n.dot-filled.info div {\\n background-color: #17a2b8;\\n}\\n\\n.dot-filled.dark div {\\n background-color: #343a40;\\n}\\n\\n.dot-filled.light div {\\n background-color: #f8f9fa;\\n}\");\n", - " },\n", - " function(Bokeh) {\n", - " inject_raw_css(\"table.panel-df {\\n margin-left: auto;\\n margin-right: auto;\\n border: none;\\n border-collapse: collapse;\\n border-spacing: 0;\\n color: black;\\n font-size: 12px;\\n table-layout: fixed;\\n width: 100%;\\n}\\n\\n.panel-df tr, .panel-df th, .panel-df td {\\n text-align: right;\\n vertical-align: middle;\\n padding: 0.5em 0.5em !important;\\n line-height: normal;\\n white-space: normal;\\n max-width: none;\\n border: none;\\n}\\n\\n.panel-df tbody {\\n display: table-row-group;\\n vertical-align: middle;\\n border-color: inherit;\\n}\\n\\n.panel-df tbody tr:nth-child(odd) {\\n background: #f5f5f5;\\n}\\n\\n.panel-df thead {\\n border-bottom: 1px solid black;\\n vertical-align: bottom;\\n}\\n\\n.panel-df tr:hover {\\n background: lightblue !important;\\n cursor: pointer;\\n}\\n\");\n", - " },\n", - " function(Bokeh) {\n", - " inject_raw_css(\".json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n color: black;\\n text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n color: green;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: blue;\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n color: #00008B;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n color: white;\\n text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n color: #31F031;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: #027BFF;\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n color: #23A0DB;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n\");\n", - " },\n", - " function(Bokeh) {\n", - " inject_raw_css(\".bk.card {\\n border: 1px solid rgba(0,0,0,.125);\\n border-radius: 0.25rem;\\n}\\n.bk.accordion {\\n border: 1px solid rgba(0,0,0,.125);\\n}\\n.bk.card-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0.25rem;\\n display: flex;\\n justify-content: space-between;\\n padding: 0 1.25rem 0 0;\\n width: 100%;\\n}\\n.bk.accordion-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0;\\n display: flex;\\n justify-content: space-between;\\n padding: 0 1.25rem 0 0;\\n width: 100%;\\n}\\np.bk.card-button {\\n background-color: transparent;\\n font-size: 1.25rem;\\n font-weight: 700;\\n margin: 0;\\n margin-left: -15px;\\n}\\n.bk.card-header-row {\\n position: relative !important;\\n}\\n.bk.card-title {\\n align-items: center;\\n display: flex !important;\\n font-size: 1.4em;\\n font-weight: bold;\\n padding: 0.25em;\\n position: relative !important;\\n}\\n\");\n", - " },\n", - " function(Bokeh) {\n", - " inject_raw_css(\".codehilite .hll { background-color: #ffffcc }\\n.codehilite { background: #f8f8f8; }\\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\\n.codehilite .o { color: #666666 } /* Operator */\\n.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */\\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\\n.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\\n.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */\\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\\n.codehilite .ge { font-style: italic } /* Generic.Emph */\\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\\n.codehilite .go { color: #888888 } /* Generic.Output */\\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\\n.codehilite .gt { color: #0044DD } /* Generic.Traceback */\\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\\n.codehilite .m { color: #666666 } /* Literal.Number */\\n.codehilite .s { color: #BA2121 } /* Literal.String */\\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\\n.codehilite .nb { color: #008000 } /* Name.Builtin */\\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\\n.codehilite .no { color: #880000 } /* Name.Constant */\\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\\n.codehilite .nf { color: #0000FF } /* Name.Function */\\n.codehilite .nl { color: #A0A000 } /* Name.Label */\\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\\n.codehilite .nv { color: #19177C } /* Name.Variable */\\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\\n.codehilite .mb { color: #666666 } /* Literal.Number.Bin */\\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\\n.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */\\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\\n.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */\\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\\n.codehilite .fm { color: #0000FF } /* Name.Function.Magic */\\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\\n.codehilite .vm { color: #19177C } /* Name.Variable.Magic */\\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\\n\\n.markdown h1 { margin-block-start: 0.34em }\\n.markdown h2 { margin-block-start: 0.42em }\\n.markdown h3 { margin-block-start: 0.5em }\\n.markdown h4 { margin-block-start: 0.67em }\\n.markdown h5 { margin-block-start: 0.84em }\\n.markdown h6 { margin-block-start: 1.17em }\\n.markdown ul { padding-inline-start: 2em }\\n.markdown ol { padding-inline-start: 2em }\\n.markdown strong { font-weight: 600 }\\n.markdown a { color: -webkit-link }\\n.markdown a { color: -moz-hyperlinkText }\\n\");\n", - " },\n", - " function(Bokeh) {\n", - " inject_raw_css(\".bk.alert {\\n padding: 0.75rem 1.25rem;\\n border: 1px solid transparent;\\n border-radius: 0.25rem;\\n /* Don't set margin because that will not render correctly! */\\n /* margin-bottom: 1rem; */\\n margin-top: 15px;\\n margin-bottom: 15px;\\n}\\n.bk.alert a {\\n color: rgb(11, 46, 19); /* #002752; */\\n font-weight: 700;\\n text-decoration: rgb(11, 46, 19);\\n text-decoration-color: rgb(11, 46, 19);\\n text-decoration-line: none;\\n text-decoration-style: solid;\\n text-decoration-thickness: auto;\\n }\\n.bk.alert a:hover {\\n color: rgb(11, 46, 19);\\n font-weight: 700;\\n text-decoration: underline;\\n}\\n\\n.bk.alert-primary {\\n color: #004085;\\n background-color: #cce5ff;\\n border-color: #b8daff;\\n}\\n.bk.alert-primary hr {\\n border-top-color: #9fcdff;\\n}\\n\\n.bk.alert-secondary {\\n color: #383d41;\\n background-color: #e2e3e5;\\n border-color: #d6d8db;\\n }\\n.bk.alert-secondary hr {\\n border-top-color: #c8cbcf;\\n}\\n\\n.bk.alert-success {\\n color: #155724;\\n background-color: #d4edda;\\n border-color: #c3e6cb;\\n }\\n\\n.bk.alert-success hr {\\n border-top-color: #b1dfbb;\\n}\\n\\n.bk.alert-info {\\n color: #0c5460;\\n background-color: #d1ecf1;\\n border-color: #bee5eb;\\n }\\n.bk.alert-info hr {\\n border-top-color: #abdde5;\\n}\\n\\n.bk.alert-warning {\\n color: #856404;\\n background-color: #fff3cd;\\n border-color: #ffeeba;\\n }\\n\\n.bk.alert-warning hr {\\n border-top-color: #ffe8a1;\\n}\\n\\n.bk.alert-danger {\\n color: #721c24;\\n background-color: #f8d7da;\\n border-color: #f5c6cb;\\n}\\n.bk.alert-danger hr {\\n border-top-color: #f1b0b7;\\n}\\n\\n.bk.alert-light {\\n color: #818182;\\n background-color: #fefefe;\\n border-color: #fdfdfe;\\n }\\n.bk.alert-light hr {\\n border-top-color: #ececf6;\\n}\\n\\n.bk.alert-dark {\\n color: #1b1e21;\\n background-color: #d6d8d9;\\n border-color: #c6c8ca;\\n }\\n.bk.alert-dark hr {\\n border-top-color: #b9bbbe;\\n}\\n\\n\\n/* adjf\\u00e6l */\\n\\n.bk.alert-primary a {\\n color: #002752;\\n}\\n\\n.bk.alert-secondary a {\\n color: #202326;\\n}\\n\\n\\n.bk.alert-success a {\\n color: #0b2e13;\\n}\\n\\n\\n.bk.alert-info a {\\n color: #062c33;\\n}\\n\\n\\n.bk.alert-warning a {\\n color: #533f03;\\n}\\n\\n\\n.bk.alert-danger a {\\n color: #491217;\\n}\\n\\n.bk.alert-light a {\\n color: #686868;\\n}\\n\\n.bk.alert-dark a {\\n color: #040505;\\n}\");\n", - " },\n", - " function(Bokeh) {\n", - " /* BEGIN bokeh.min.js */\n", - " /*!\n", - " * Copyright (c) 2012 - 2020, Anaconda, Inc., and Bokeh Contributors\n", - " * All rights reserved.\n", - " * \n", - " * Redistribution and use in source and binary forms, with or without modification,\n", - " * are permitted provided that the following conditions are met:\n", - " * \n", - " * Redistributions of source code must retain the above copyright notice,\n", - " * this list of conditions and the following disclaimer.\n", - " * \n", - " * Redistributions in binary form must reproduce the above copyright notice,\n", - " * this list of conditions and the following disclaimer in the documentation\n", - " * and/or other materials provided with the distribution.\n", - " * \n", - " * Neither the name of Anaconda nor the names of any contributors\n", - " * may be used to endorse or promote products derived from this software\n", - " * without specific prior written permission.\n", - " * \n", - " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", - " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", - " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", - " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", - " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", - " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", - " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", - " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", - " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", - " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", - " * THE POSSIBILITY OF SUCH DAMAGE.\n", - " */\n", - " (function(root, factory) {\n", - " const bokeh = factory();\n", - " bokeh.__bokeh__ = true;\n", - " if (typeof root.Bokeh === \"undefined\" || typeof root.Bokeh.__bokeh__ === \"undefined\") {\n", - " root.Bokeh = bokeh;\n", - " }\n", - " const Bokeh = root.Bokeh;\n", - " Bokeh[bokeh.version] = bokeh;\n", - " })(this, function() {\n", - " var define;\n", - " var parent_require = typeof require === \"function\" && require\n", - " return (function(modules, entry, aliases, externals) {\n", - " if (aliases === undefined) aliases = {};\n", - " if (externals === undefined) externals = {};\n", - "\n", - " var cache = {};\n", - "\n", - " var normalize = function(name) {\n", - " if (typeof name === \"number\")\n", - " return name;\n", - "\n", - " if (name === \"bokehjs\")\n", - " return entry;\n", - "\n", - " var prefix = \"@bokehjs/\"\n", - " if (name.slice(0, prefix.length) === prefix)\n", - " name = name.slice(prefix.length)\n", - "\n", - " var alias = aliases[name]\n", - " if (alias != null)\n", - " return alias;\n", - "\n", - " var trailing = name.length > 0 && name[name.lenght-1] === \"/\";\n", - " var index = aliases[name + (trailing ? \"\" : \"/\") + \"index\"];\n", - " if (index != null)\n", - " return index;\n", - "\n", - " return name;\n", - " }\n", - "\n", - " var require = function(name) {\n", - " var mod = cache[name];\n", - " if (!mod) {\n", - " var id = normalize(name);\n", - "\n", - " mod = cache[id];\n", - " if (!mod) {\n", - " if (!modules[id]) {\n", - " if (externals[id] === false || (externals[id] == true && parent_require)) {\n", - " try {\n", - " mod = {exports: externals[id] ? parent_require(id) : {}};\n", - " cache[id] = cache[name] = mod;\n", - " return mod.exports;\n", - " } catch (e) {}\n", - " }\n", - "\n", - " var err = new Error(\"Cannot find module '\" + name + \"'\");\n", - " err.code = 'MODULE_NOT_FOUND';\n", - " throw err;\n", - " }\n", - "\n", - " mod = {exports: {}};\n", - " cache[id] = cache[name] = mod;\n", - " modules[id].call(mod.exports, require, mod, mod.exports);\n", - " } else\n", - " cache[name] = mod;\n", - " }\n", - "\n", - " return mod.exports;\n", - " }\n", - " require.resolve = function(name) {\n", - " return \"\"\n", - " }\n", - "\n", - " var main = require(entry);\n", - " main.require = require;\n", - "\n", - " if (typeof Proxy !== \"undefined\") {\n", - " // allow Bokeh.loader[\"@bokehjs/module/name\"] syntax\n", - " main.loader = new Proxy({}, {\n", - " get: function(_obj, module) {\n", - " return require(module);\n", - " }\n", - " });\n", - " }\n", - "\n", - " main.register_plugin = function(plugin_modules, plugin_entry, plugin_aliases, plugin_externals) {\n", - " if (plugin_aliases === undefined) plugin_aliases = {};\n", - " if (plugin_externals === undefined) plugin_externals = {};\n", - "\n", - " for (var name in plugin_modules) {\n", - " modules[name] = plugin_modules[name];\n", - " }\n", - "\n", - " for (var name in plugin_aliases) {\n", - " aliases[name] = plugin_aliases[name];\n", - " }\n", - "\n", - " for (var name in plugin_externals) {\n", - " externals[name] = plugin_externals[name];\n", - " }\n", - "\n", - " var plugin = require(plugin_entry);\n", - "\n", - " for (var name in plugin) {\n", - " main[name] = plugin[name];\n", - " }\n", - "\n", - " return plugin;\n", - " }\n", - "\n", - " return main;\n", - " })\n", - " ([\n", - " function _(e,t,_){Object.defineProperty(_,\"__esModule\",{value:!0});e(1).__exportStar(e(2),_)},\n", - " function _(t,e,n){\n", - " /*! *****************************************************************************\n", - " Copyright (c) Microsoft Corporation.\n", - " \n", - " Permission to use, copy, modify, and/or distribute this software for any\n", - " purpose with or without fee is hereby granted.\n", - " \n", - " THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n", - " REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n", - " AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n", - " INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n", - " LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n", - " OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n", - " PERFORMANCE OF THIS SOFTWARE.\n", - " ***************************************************************************** */\n", - " Object.defineProperty(n,\"__esModule\",{value:!0});var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function o(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function a(t,e){var n=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,a=n.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}function i(t){return this instanceof i?(this.v=t,this):new i(t)}n.__extends=function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},n.__assign=function(){return n.__assign=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0;u--)(o=t[u])&&(i=(a<3?o(i):a>3?o(e,n,i):o(e,n))||i);return a>3&&i&&Object.defineProperty(e,n,i),i},n.__param=function(t,e){return function(n,r){e(n,r,t)}},n.__metadata=function(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},n.__awaiter=function(t,e,n,r){return new(n||(n=Promise))((function(o,a){function i(t){try{c(r.next(t))}catch(t){a(t)}}function u(t){try{c(r.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,u)}c((r=r.apply(t,e||[])).next())}))},n.__generator=function(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:u(0),throw:u(1),return:u(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(a){return function(u){return function(a){if(n)throw new TypeError(\"Generator is already executing.\");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]1||c(t,e)}))})}function c(t,e){try{(n=o[t](e)).value instanceof i?Promise.resolve(n.value.v).then(f,l):s(a[0][2],n)}catch(t){s(a[0][3],t)}var n}function f(t){c(\"next\",t)}function l(t){c(\"throw\",t)}function s(t,e){t(e),a.shift(),a.length&&c(a[0][0],a[0][1])}},n.__asyncDelegator=function(t){var e,n;return e={},r(\"next\"),r(\"throw\",(function(t){throw t})),r(\"return\"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:i(t[r](e)),done:\"return\"===r}:o?o(e):e}:o}},n.__asyncValues=function(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=o(t),e={},r(\"next\"),r(\"throw\"),r(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise((function(r,o){(function(t,e,n,r){Promise.resolve(r).then((function(e){t({value:e,done:n})}),e)})(r,o,(e=t[n](e)).done,e.value)}))}}},n.__makeTemplateObject=function(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t},n.__importStar=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e},n.__importDefault=function(t){return t&&t.__esModule?t:{default:t}},n.__classPrivateFieldGet=function(t,e){if(!e.has(t))throw new TypeError(\"attempted to get private field on non-instance\");return e.get(t)},n.__classPrivateFieldSet=function(t,e,n){if(!e.has(t))throw new TypeError(\"attempted to set private field on non-instance\");return e.set(t,n),n}},\n", - " function _(e,r,t){var l=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r};Object.defineProperty(t,\"__esModule\",{value:!0});var o=e(3);t.version=o.version;var s=e(4);t.index=s.index,t.embed=l(e(4)),t.protocol=l(e(390)),t._testing=l(e(391));var n=e(19);t.logger=n.logger,t.set_log_level=n.set_log_level;var a=e(27);t.settings=a.settings;var i=e(7);t.Models=i.Models;var v=e(5);t.documents=v.documents;var _=e(392);t.safely=_.safely},\n", - " function _(e,n,o){Object.defineProperty(o,\"__esModule\",{value:!0}),o.version=\"2.2.3\"},\n", - " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(5),s=e(19),r=e(29),d=e(13),_=e(8),c=e(16),i=e(381),a=e(383),u=e(382);var l=e(381);t.add_document_standalone=l.add_document_standalone,t.index=l.index;var m=e(383);t.add_document_from_session=m.add_document_from_session;var f=e(388);t.embed_items_notebook=f.embed_items_notebook,t.kernels=f.kernels;var g=e(382);async function O(e,o,t,c){_.isString(e)&&(e=JSON.parse(r.unescape(e)));const l={};for(const[o,t]of d.entries(e))l[o]=n.Document.from_json(t);const m=[];for(const e of o){const o=u._resolve_element(e),n=u._resolve_root_elements(e);if(null!=e.docid)m.push(await i.add_document_standalone(l[e.docid],o,n,e.use_for_title));else{if(null==e.token)throw new Error(\"Error rendering Bokeh items: either 'docid' or 'token' was expected.\");{const r=a._get_ws_url(t,c);s.logger.debug(\"embed: computed ws url: \"+r);try{m.push(await a.add_document_from_session(r,e.token,o,n,e.use_for_title)),console.log(\"Bokeh items were rendered successfully\")}catch(e){console.log(\"Error rendering Bokeh items:\",e)}}}}return m}t.BOKEH_ROOT=g.BOKEH_ROOT,t.embed_item=async function(e,o){const t={},n=r.uuid4();t[n]=e.doc,null==o&&(o=e.target_id);const s=document.getElementById(o);null!=s&&s.classList.add(u.BOKEH_ROOT);const d={roots:{[e.root_id]:o},root_ids:[e.root_id],docid:n},[_]=await c.defer(()=>O(t,[d]));return _},t.embed_items=async function(e,o,t,n){return await c.defer(()=>O(e,o,t,n))}},\n", - " function _(e,t,_){Object.defineProperty(_,\"__esModule\",{value:!0});const o=e(1);o.__exportStar(e(6),_),o.__exportStar(e(121),_)},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),n=e(7),r=e(3),i=e(19),_=e(313),a=e(14),l=e(15),c=e(17),h=e(31),d=e(9),f=e(13),u=o.__importStar(e(120)),m=e(25),g=e(8),p=e(272),w=e(85),v=e(81),b=e(121);class y{constructor(e){this.document=e,this.session=null,this.subscribed_models=new Set}send_event(e){const t=new b.MessageSentEvent(this.document,\"bokeh_event\",e.to_json());this.document._trigger_on_change(t)}trigger(e){for(const t of this.subscribed_models)null!=e.origin&&e.origin!=t||t._process_event(e)}}s.EventManager=y,y.__name__=\"EventManager\",s.documents=[],s.DEFAULT_TITLE=\"Bokeh Application\";class j{constructor(){s.documents.push(this),this._init_timestamp=Date.now(),this._title=s.DEFAULT_TITLE,this._roots=[],this._all_models=new Map,this._all_models_freeze_count=0,this._callbacks=new Map,this._message_callbacks=new Map,this.event_manager=new y(this),this.idle=new l.Signal0(this,\"idle\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}get layoutables(){return this._roots.filter(e=>e instanceof p.LayoutDOM)}get is_idle(){for(const e of this.layoutables)if(!this._idle_roots.has(e))return!1;return!0}notify_idle(e){this._idle_roots.set(e,!0),this.is_idle&&(i.logger.info(`document idle at ${Date.now()-this._init_timestamp} ms`),this.event_manager.send_event(new _.DocumentReady),this.idle.emit())}clear(){this._push_all_models_freeze();try{for(;this._roots.length>0;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}}interactive_start(e){null==this._interactive_plot&&(this._interactive_plot=e,this._interactive_plot.trigger_event(new _.LODStart)),this._interactive_timestamp=Date.now()}interactive_stop(){null!=this._interactive_plot&&this._interactive_plot.trigger_event(new _.LODEnd),this._interactive_plot=null,this._interactive_timestamp=null}interactive_duration(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp}destructively_move(e){if(e===this)throw new Error(\"Attempted to overwrite a document with itself\");e.clear();const t=d.copy(this._roots);this.clear();for(const e of t)if(null!=e.document)throw new Error(\"Somehow we didn't detach \"+e);if(0!=this._all_models.size)throw new Error(\"this._all_models still had stuff in it: \"+this._all_models);for(const s of t)e.add_root(s);e.set_title(this._title)}_push_all_models_freeze(){this._all_models_freeze_count+=1}_pop_all_models_freeze(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()}_invalidate_all_models(){i.logger.debug(\"invalidating document models\"),0===this._all_models_freeze_count&&this._recompute_all_models()}_recompute_all_models(){let e=new Set;for(const t of this._roots)e=u.union(e,t.references());const t=new Set(this._all_models.values()),s=u.difference(t,e),o=u.difference(e,t),n=new Map;for(const t of e)n.set(t.id,t);for(const e of s)e.detach_document();for(const e of o)e.attach_document(this);this._all_models=n}roots(){return this._roots}add_root(e,t){if(i.logger.debug(\"Adding root: \"+e),!d.includes(this._roots,e)){this._push_all_models_freeze();try{this._roots.push(e)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new b.RootAddedEvent(this,e,t))}}remove_root(e,t){const s=this._roots.indexOf(e);if(!(s<0)){this._push_all_models_freeze();try{this._roots.splice(s,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new b.RootRemovedEvent(this,e,t))}}title(){return this._title}set_title(e,t){e!==this._title&&(this._title=e,this._trigger_on_change(new b.TitleChangedEvent(this,e,t)))}get_model_by_id(e){var t;return null!==(t=this._all_models.get(e))&&void 0!==t?t:null}get_model_by_name(e){const t=[];for(const s of this._all_models.values())s instanceof v.Model&&s.name==e&&t.push(s);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(`Multiple models are named '${e}'`)}}on_message(e,t){const s=this._message_callbacks.get(e);null==s?this._message_callbacks.set(e,new Set([t])):s.add(t)}remove_on_message(e,t){var s;null===(s=this._message_callbacks.get(e))||void 0===s||s.delete(t)}_trigger_on_message(e,t){const s=this._message_callbacks.get(e);if(null!=s)for(const e of s)e(t)}on_change(e,t=!1){this._callbacks.has(e)||this._callbacks.set(e,t)}remove_on_change(e){this._callbacks.delete(e)}_trigger_on_change(e){for(const[t,s]of this._callbacks)if(!s&&e instanceof b.DocumentEventBatch)for(const s of e.events)t(s);else t(e)}_notify_change(e,t,s,o,n){this._trigger_on_change(new b.ModelChangedEvent(this,e,t,s,o,null==n?void 0:n.setter_id,null==n?void 0:n.hint))}static _references_json(e,t=!0){const s=[];for(const o of e){const e=o.struct();e.attributes=o.attributes_as_json(t),delete e.attributes.id,s.push(e)}return s}static _instantiate_object(e,t,s){const o=Object.assign(Object.assign({},s),{id:e,__deferred__:!0});return new(n.Models(t))(o)}static _instantiate_references_json(e,t){const s=new Map;for(const o of e){const e=o.id,n=o.type,r=o.attributes||{};let i=t.get(e);null==i&&(i=j._instantiate_object(e,n,r),null!=o.subtype&&i.set_subtype(o.subtype)),s.set(i.id,i)}return s}static _resolve_refs(e,t,s,o){function n(e){if(c.is_ref(e)){if(t.has(e.id))return t.get(e.id);if(s.has(e.id))return s.get(e.id);throw new Error(`reference ${JSON.stringify(e)} isn't known (not in Document?)`)}return h.is_NDArray_ref(e)?h.decode_NDArray(e,o):g.isArray(e)?function(e){const t=[];for(const s of e)t.push(n(s));return t}(e):g.isPlainObject(e)?function(e){const t={};for(const[s,o]of f.entries(e))t[s]=n(o);return t}(e):e}return n(e)}static _initialize_references_json(e,t,s,o){const n=new Map;for(const{id:r,attributes:i}of e){const e=!t.has(r),_=e?s.get(r):t.get(r),a=j._resolve_refs(i,t,s,o);_.setv(a,{silent:!0}),n.set(r,{instance:_,is_new:e})}const r=[],i=new Set;function _(e){if(e instanceof a.HasProps){if(n.has(e.id)&&!i.has(e.id)){i.add(e.id);const{instance:t,is_new:s}=n.get(e.id),{attributes:o}=t;for(const e of f.values(o))_(e);s&&(t.finalize(),r.push(t))}}else if(g.isArray(e))for(const t of e)_(t);else if(g.isPlainObject(e))for(const t of f.values(e))_(t)}for(const e of n.values())_(e.instance);for(const e of r)e.connect_signals()}static _event_for_attribute_change(e,t,s,o,n){if(o.get_model_by_id(e.id).property(t).syncable){const r={kind:\"ModelChanged\",model:{id:e.id},attr:t,new:s};return a.HasProps._json_record_references(o,s,n,{recursive:!0}),r}return null}static _events_to_sync_objects(e,t,s,o){const n=Object.keys(e.attributes),r=Object.keys(t.attributes),_=d.difference(n,r),a=d.difference(r,n),l=d.intersection(n,r),c=[];for(const e of _)i.logger.warn(`Server sent key ${e} but we don't seem to have it in our JSON`);for(const n of a){const r=t.attributes[n];c.push(j._event_for_attribute_change(e,n,r,s,o))}for(const n of l){const r=e.attributes[n],i=t.attributes[n];null==r&&null==i||(null==r||null==i?c.push(j._event_for_attribute_change(e,n,i,s,o)):m.isEqual(r,i)||c.push(j._event_for_attribute_change(e,n,i,s,o)))}return c.filter(e=>null!=e)}static _compute_patch_since_json(e,t){const s=t.to_json(!1);function o(e){const t=new Map;for(const s of e.roots.references)t.set(s.id,s);return t}const n=o(e),r=new Map,i=[];for(const t of e.roots.root_ids)r.set(t,n.get(t)),i.push(t);const _=o(s),a=new Map,l=[];for(const e of s.roots.root_ids)a.set(e,_.get(e)),l.push(e);if(i.sort(),l.sort(),d.difference(i,l).length>0||d.difference(l,i).length>0)throw new Error(\"Not implemented: computing add/remove of document roots\");const c=new Set;let h=[];for(const e of t._all_models.keys())if(n.has(e)){const s=j._events_to_sync_objects(n.get(e),_.get(e),t,c);h=h.concat(s)}return{references:j._references_json(c,!1),events:h}}to_json_string(e=!0){return JSON.stringify(this.to_json(e))}to_json(e=!0){const t=this._roots.map(e=>e.id),s=this._all_models.values();return{version:r.version,title:this._title,roots:{root_ids:t,references:j._references_json(s,e)}}}static from_json_string(e){const t=JSON.parse(e);return j.from_json(t)}static from_json(e){i.logger.debug(\"Creating Document from JSON\");const t=e.version,s=-1!==t.indexOf(\"+\")||-1!==t.indexOf(\"-\"),o=`Library versions: JS (${r.version}) / Python (${t})`;s||r.version.replace(/-(dev|rc)\\./,\"$1\")==t?i.logger.debug(o):(i.logger.warn(\"JS/Python version mismatch\"),i.logger.warn(o));const n=e.roots,_=n.root_ids,a=n.references,l=j._instantiate_references_json(a,new Map);j._initialize_references_json(a,new Map,l,new Map);const c=new j;for(const e of _){const t=l.get(e);null!=t&&c.add_root(t)}return c.set_title(e.title),c}replace_with_json(e){j.from_json(e).destructively_move(this)}create_json_patch_string(e){return JSON.stringify(this.create_json_patch(e))}create_json_patch(e){const t=new Set,s=[];for(const o of e){if(o.document!==this)throw i.logger.warn(\"Cannot create a patch using events from a different document, event had \",o.document,\" we are \",this),new Error(\"Cannot create a patch using events from a different document\");s.push(o.json(t))}return{events:s,references:j._references_json(t)}}apply_json_patch(e,t=new Map,s){const o=e.references,n=e.events,r=j._instantiate_references_json(o,this._all_models);t instanceof Map||(t=new Map(t));for(const e of n)switch(e.kind){case\"RootAdded\":case\"RootRemoved\":case\"ModelChanged\":{const t=e.model.id,s=this._all_models.get(t);if(null!=s)r.set(t,s);else if(!r.has(t))throw i.logger.warn(`Got an event for unknown model ${e.model}\"`),new Error(\"event model wasn't known\");break}}const _=new Map,a=new Map;for(const[e,t]of r)this._all_models.has(e)?_.set(e,t):a.set(e,t);j._initialize_references_json(o,_,a,t);for(const e of n)switch(e.kind){case\"MessageSent\":{const{msg_type:s,msg_data:o}=e;let n;if(void 0===o){if(1!=t.size)throw new Error(\"expected exactly one buffer\");{const[[,e]]=t;n=e}}else n=j._resolve_refs(o,_,a,t);this._trigger_on_message(s,n);break}case\"ModelChanged\":{const o=e.model.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot apply patch to ${o} which is not in the document`);const r=e.attr,i=j._resolve_refs(e.new,_,a,t);n.setv({[r]:i},{setter_id:s});break}case\"ColumnDataChanged\":{const o=e.column_source.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot stream to ${o} which is not in the document`);const r=j._resolve_refs(e.new,new Map,new Map,t);if(null!=e.cols)for(const e in n.data)e in r||(r[e]=n.data[e]);n.setv({data:r},{setter_id:s,check_eq:!1});break}case\"ColumnsStreamed\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot stream to ${t} which is not in the document`);if(!(o instanceof w.ColumnDataSource))throw new Error(\"Cannot stream to non-ColumnDataSource\");const n=e.data,r=e.rollover;o.stream(n,r,s);break}case\"ColumnsPatched\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot patch ${t} which is not in the document`);if(!(o instanceof w.ColumnDataSource))throw new Error(\"Cannot patch non-ColumnDataSource\");const n=e.patches;o.patch(n,s);break}case\"RootAdded\":{const t=e.model.id,o=r.get(t);this.add_root(o,s);break}case\"RootRemoved\":{const t=e.model.id,o=r.get(t);this.remove_root(o,s);break}case\"TitleChanged\":this.set_title(e.title,s);break;default:throw new Error(\"Unknown patch event \"+JSON.stringify(e))}}}s.Document=j,j.__name__=\"Document\"},\n", - " function _(e,r,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),t=e(8),d=e(13),i=e(14);s.overrides={};const l=new Map;s.Models=e=>{const r=s.overrides[e]||l.get(e);if(null==r)throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`);return r},s.Models.register=(e,r)=>{s.overrides[e]=r},s.Models.unregister=e=>{delete s.overrides[e]},s.Models.register_models=(e,r=!1,s)=>{var o;if(null!=e)for(const n of d.values(e))if(o=n,t.isObject(o)&&o.prototype instanceof i.HasProps){const e=n.__qualified__;r||!l.has(e)?l.set(e,n):null!=s?s(e):console.warn(`Model '${e}' was already registered`)}},s.register_models=s.Models.register_models,s.Models.registered_names=()=>Array.from(l.keys());const n=o.__importStar(e(34));s.register_models(n)},\n", - " function _(n,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});\n", - " // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n", - " // Underscore may be freely distributed under the MIT license.\n", - " const e=n(9),i=Object.prototype.toString;function o(n){return\"[object Number]\"===i.call(n)}function c(n){const t=typeof n;return\"function\"===t||\"object\"===t&&!!n}r.isBoolean=function(n){return!0===n||!1===n||\"[object Boolean]\"===i.call(n)},r.isNumber=o,r.isInteger=function(n){return o(n)&&Number.isInteger(n)},r.isString=function(n){return\"[object String]\"===i.call(n)},r.isFunction=function(n){return\"[object Function]\"===i.call(n)},r.isArray=function(n){return Array.isArray(n)},r.isArrayOf=function(n,t){return e.every(n,t)},r.isArrayableOf=function(n,t){for(let r=0,e=n.length;r0,\"'step' must be a positive number\"),null==t&&(t=n,n=0);const{max:r,ceil:i,abs:u}=Math,c=n<=t?e:-e,f=r(i(u(t-n)/e),0),s=new Array(f);for(let t=0;t=0?t:n.length+t]},e.zip=function(...n){if(0==n.length)return[];const t=i.min(n.map(n=>n.length)),e=n.length,r=new Array(t);for(let o=0;on.length)),r=Array(e);for(let n=0;nn[t])},e.argmax=function(n){return i.max_by(a(n.length),t=>n[t])},e.sort_by=function(n,t){const e=n.map((n,e)=>({value:n,index:e,key:t(n)}));return e.sort((n,t)=>{const e=n.key,r=t.key;if(e!==r){if(e>r||void 0===e)return 1;if(en.value)},e.uniq=function(n){const t=new Set;for(const e of n)t.add(e);return[...t]},e.uniq_by=function(n,t){const e=[],r=[];for(const o of n){const n=t(o);s(r,n)||(r.push(n),e.push(o))}return e},e.union=function(...n){const t=new Set;for(const e of n)for(const n of e)t.add(n);return[...t]},e.intersection=function(n,...t){const e=[];n:for(const r of n)if(!s(e,r)){for(const n of t)if(!s(n,r))continue n;e.push(r)}return e},e.difference=function(n,...t){const e=f(t);return n.filter(n=>!s(e,n))},e.remove_at=function(n,t){const e=c(n);return e.splice(t,1),e},e.remove_by=function(n,t){for(let e=0;e2*Math.PI;)n-=2*Math.PI;return n}function a(n,t){return e(n-t)}function o(){return Math.random()}Object.defineProperty(r,\"__esModule\",{value:!0}),r.angle_norm=e,r.angle_dist=a,r.angle_between=function(n,t,r,o){const u=a(t,r);if(0==u)return!1;if(u==2*Math.PI)return!0;const f=e(n),i=a(t,f)<=u&&a(f,r)<=u;return 0==o?i:!i},r.random=o,r.randomIn=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},r.atan2=function(n,t){return Math.atan2(t[1]-n[1],t[0]-n[0])},r.radians=function(n){return n*(Math.PI/180)},r.degrees=function(n){return n/(Math.PI/180)},r.rnorm=function(n,t){let r,e;for(;r=o(),e=o(),e=(2*e-1)*Math.sqrt(1/Math.E*2),!(-4*r*r*Math.log(r)>=e*e););let a=e/r;return a=n+t*a,a},r.clamp=function(n,t,r){return nr?r:n}},\n", - " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});class o extends Error{}n.AssertionError=o,o.__name__=\"AssertionError\",n.assert=function(e,r){if(!(!0===e||!1!==e&&e()))throw new o(null!=r?r:\"Assertion failed\")},n.unreachable=function(){throw new Error(\"unreachable code\")}},\n", - " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=n(8),o=n(10);function i(n,t,e,...r){const o=n.length;t<0&&(t+=o),t<0?t=0:t>o&&(t=o),null==e||e>o-t?e=o-t:e<0&&(e=0);const i=o-e+r.length,u=new n.constructor(i);let l=0;for(;l0?0:r-1;for(;o>=0&&ot[t.length-1])return t.length;let e=0,r=t.length-1;for(;r-e!=1;){const o=e+Math.floor((r-e)/2);n>=t[o]?e=o:r=o}return e}e.is_empty=function(n){return 0==n.length},e.copy=function(n){return r.isArray(n)?n.slice():new n.constructor(n)},e.splice=i,e.head=u,e.insert=function(n,t,e){return i(n,e,0,t)},e.append=function(n,t){return i(n,n.length,0,t)},e.prepend=function(n,t){return i(n,0,0,t)},e.indexOf=function(n,t){for(let e=0,r=n.length;ee&&(e=t);return e},e.minmax=function(n){let t,e=1/0,r=-1/0;for(let o=0,i=n.length;or&&(r=t));return[e,r]},e.min_by=function(n,t){if(0==n.length)throw new Error(\"min_by() called with an empty array\");let e=n[0],r=t(e);for(let o=1,i=n.length;or&&(e=i,r=u)}return e},e.sum=function(n){let t=0;for(let e=0,r=n.length;et[r]=n+e,0),t},e.every=function(n,t){for(let e=0,r=n.length;e(n-t)/r)}},\n", - " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const c=e(9);function o(e){return Object.keys(e).length}n.keys=Object.keys,n.values=Object.values,n.entries=Object.entries,n.extend=Object.assign,n.clone=function(e){return Object.assign({},e)},n.merge=function(e,t){const n=Object.create(Object.prototype),o=c.concat([Object.keys(e),Object.keys(t)]);for(const s of o){const o=e.hasOwnProperty(s)?e[s]:[],r=t.hasOwnProperty(s)?t[s]:[];n[s]=c.union(o,r)}return n},n.size=o,n.isEmpty=function(e){return 0==o(e)},n.to_object=function(e){const t={};for(const[n,c]of e)t[n]=c;return t}},\n", - " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const s=t(1),n=t(15),i=t(17),o=s.__importStar(t(18)),c=s.__importStar(t(21)),a=s.__importStar(t(28)),_=t(29),u=t(9),f=t(13),l=t(8),h=t(25),p=t(5),d=t(30),y=t(31),g=t(25),v=t(33),m=s.__importStar(t(21));class b extends(n.Signalable()){constructor(t={}){var e;super(),this._subtype=void 0,this.document=null,this.destroyed=new n.Signal0(this,\"destroyed\"),this.change=new n.Signal0(this,\"change\"),this.transformchange=new n.Signal0(this,\"transformchange\"),this.properties={},this._pending=!1,this._changing=!1;const r=t instanceof Map?t.get:e=>t[e];for(const[t,{type:e,default_value:s,options:n}]of f.entries(this._props)){let i;i=e instanceof c.Kind?new o.PrimitiveProperty(this,t,e,s,r(t),n):new e(this,t,c.Any,s,r(t),n),this.properties[t]=i}null!==(e=r(\"__deferred__\"))&&void 0!==e&&e||(this.finalize(),this.connect_signals())}set type(t){console.warn(\"prototype.type = 'ModelName' is deprecated, use static __name__ instead\"),this.constructor.__name__=t}get type(){return this.constructor.__qualified__}static get __qualified__(){const{__module__:t,__name__:e}=this;return null!=t?`${t}.${e}`:e}static get[Symbol.toStringTag](){return this.__name__}static init_HasProps(){this.prototype._props={},this.prototype._mixins=[],this.define({id:[o.String,()=>_.uniqueId()]})}static _fix_default(t,e){if(void 0!==t){if(l.isFunction(t))return t;if(l.isArray(t))return()=>u.copy(t);if(l.isPlainObject(t))return()=>f.clone(t);if(l.isObject(t))throw new Error(t+\" must be explicitly wrapped in a function\");return()=>t}}static define(t){for(const[e,r]of f.entries(l.isFunction(t)?t(m):t)){if(null!=this.prototype._props[e])throw new Error(`attempted to redefine property '${this.prototype.type}.${e}'`);if(null!=this.prototype[e])throw new Error(`attempted to redefine attribute '${this.prototype.type}.${e}'`);Object.defineProperty(this.prototype,e,{get(){return this.properties[e].get_value()},set(t){return this.setv({[e]:t}),this},configurable:!1,enumerable:!0});const[t,s,n]=r,i={type:t,default_value:this._fix_default(s,e),options:n},o=f.clone(this.prototype._props);o[e]=i,this.prototype._props=o}}static internal(t){const e={};for(const[r,s]of f.entries(t)){const[t,n,i={}]=s;e[r]=[t,n,Object.assign(Object.assign({},i),{internal:!0})]}this.define(e)}static mixins(t){function e(t){switch(t){case\"line\":return a.LineVector;case\"fill\":return a.FillVector;case\"hatch\":return a.HatchVector;case\"text\":return a.TextVector;default:throw new Error(`Unknown property mixin kind '${t}'`)}}function r(t,e){const r={};for(const[s,n]of f.entries(e))r[t+s]=n;return r}function s(t){const[e]=Object.keys(t),[r]=e.split(\"_\",1);return r}l.isArray(t)||(t=[t]);const n={},i=[];for(const o of t)if(l.isString(o)){const[t,s=\"\"]=o.split(\":\"),c=e(t);i.push(o),f.extend(n,r(s,c))}else if(l.isArray(o)){const[t,e]=o;i.push(`${s(e)}:${t}`),f.extend(n,r(t,e))}else{const t=o;i.push(s(t)),f.extend(n,t)}this.define(n),this.prototype._mixins=[...this.prototype._mixins,...i]}static override(t){for(const[e,r]of f.entries(t)){const t=this._fix_default(r,e),s=this.prototype._props[e];if(null==s)throw new Error(`attempted to override nonexistent '${this.prototype.type}.${e}'`);const n=f.clone(this.prototype._props);n[e]=Object.assign(Object.assign({},s),{default_value:t}),this.prototype._props=n}}toString(){return`${this.type}(${this.id})`}property(t){const e=this.properties[t];if(null!=e)return e;throw new Error(`unknown property ${this.type}.${t}`)}get attributes(){const t={};for(const e of this)t[e.attr]=e.get_value();return t}[g.equals](t,e){for(const r of this){const s=t.property(r.attr);if(e.eq(r.get_value(),s.get_value()))return!1}return!0}[v.pretty](t){const e=t.token,r=[];for(const s of this)if(s.dirty){const n=s.get_value();r.push(`${s.attr}${e(\":\")} ${t.to_string(n)}`)}return`${this.constructor.__qualified__}${e(\"(\")}${e(\"{\")}${r.join(e(\",\")+\" \")}${e(\"}\")}${e(\")\")}`}finalize(){for(const t of this)null!=t.spec.transform&&this.connect(t.spec.transform.change,()=>this.transformchange.emit());this.initialize()}initialize(){}connect_signals(){}disconnect_signals(){n.Signal.disconnectReceiver(this)}destroy(){this.disconnect_signals(),this.destroyed.emit()}clone(){return new this.constructor(this.attributes)}_setv(t,e){const r=e.check_eq,s=[],n=this._changing;this._changing=!0;for(const[e,n]of t)!1!==r&&h.isEqual(e.get_value(),n)||(e.set_value(n),s.push(e));s.length>0&&(this._pending=!0);for(const t of s)t.change.emit();if(!n){if(!e.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}}setv(t,e={}){const r=f.entries(t);if(0==r.length)return;if(!0===e.silent){for(const[t,e]of r)this.properties[t].set_value(e);return}const s=new Map,n=new Map;for(const[t,e]of r){const r=this.properties[t];s.set(r,e),n.set(r,r.get_value())}this._setv(s,e);const{document:i}=this;if(null!=i){const t=[];for(const[e,r]of n)t.push([e,r,e.get_value()]);for(const[,e,r]of t)if(this._needs_invalidate(e,r)){i._invalidate_all_models();break}this._push_changes(t,e)}}getv(t){return this.property(t).get_value()}ref(){return{id:this.id}}struct(){const t={type:this.type,id:this.id,attributes:{}};return null!=this._subtype&&(t.subtype=this._subtype),t}set_subtype(t){this._subtype=t}*[Symbol.iterator](){yield*f.values(this.properties)}*syncable_properties(){for(const t of this)t.syncable&&(yield t)}serializable_attributes(){const t={};for(const e of this.syncable_properties())t[e.attr]=e.get_value();return t}static _value_to_json(t){if(t instanceof b)return t.ref();if(d.is_NDArray(t))return y.encode_NDArray(t);if(l.isArray(t)||l.isTypedArray(t)){const e=t.length,r=new Array(e);for(let s=0;sn.signal===t&&n.slot===e&&n.context===l)}const g=new Set;function a(n){0===g.size&&l.defer(f),g.add(n)}function f(){for(const n of g)s.remove_by(n,n=>null==n.signal);g.clear()}},\n", - " function _(n,e,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.delay=\n", - " // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n", - " // Underscore may be freely distributed under the MIT license.\n", - " function(n,e){return setTimeout(n,e)};const u=\"function\"==typeof requestAnimationFrame?requestAnimationFrame:setImmediate;t.defer=function(n){return new Promise(e=>{u(()=>e(n()))})},t.throttle=function(n,e,t={}){let u,o,i,r=null,l=0;const c=function(){l=!1===t.leading?0:Date.now(),r=null,i=n.apply(u,o),r||(u=o=null)};return function(){const a=Date.now();l||!1!==t.leading||(l=a);const f=e-(a-l);return u=this,o=arguments,f<=0||f>e?(r&&(clearTimeout(r),r=null),l=a,i=n.apply(u,o),r||(u=o=null)):r||!1===t.trailing||(r=setTimeout(c,f)),i}},t.once=function(n){let e,t=!1;return function(){return t||(t=!0,e=n()),e}}},\n", - " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(8),r=e(13);t.is_ref=function(e){if(i.isPlainObject(e)){const n=r.keys(e);return 1==n.length&&\"id\"==n[0]}return!1}},\n", - " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const a=e(1),s=e(15),i=e(19),r=a.__importStar(e(20)),l=e(24),o=e(9),c=e(12),_=e(22),u=e(8),d=e(27);function p(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function S(e){return u.isPlainObject(e)&&(void 0===e.value?0:1)+(void 0===e.field?0:1)+(void 0===e.expr?0:1)==1}n.isSpec=S;class m{constructor(e,t,n,a,i,r={}){var l,o;let c;if(this.obj=e,this.attr=t,this.kind=n,this.default_value=a,this._dirty=!1,this.change=new s.Signal0(this.obj,\"change\"),this.internal=null!==(l=r.internal)&&void 0!==l&&l,this.optional=null!==(o=r.optional)&&void 0!==o&&o,void 0!==i)c=i,this._dirty=!0;else{const t=this._default_override();c=void 0!==t?t:void 0!==a?a(e):null}this._update(c)}get is_value(){return void 0!==this.spec.value}get syncable(){return!this.internal}get_value(){return this.spec.value}set_value(e){this._update(e),this._dirty=!0}_default_override(){}get dirty(){return this._dirty}_update(e){null!=e&&this.validate(e),this.spec={value:e}}toString(){return`Prop(${this.obj}.${this.attr}, spec: ${p(this.spec)})`}normalize(e){return e}validate(e){if(!this.valid(e))throw new Error(`${this.obj.type}.${this.attr} given invalid value: ${p(e)}`)}valid(e){return this.kind.valid(e)}value(e=!0){if(!this.is_value)throw new Error(\"attempted to retrieve property value for property without value specification\");let t=this.normalize([this.spec.value])[0];return null!=this.spec.transform&&e&&(t=this.spec.transform.compute(t)),t}}n.Property=m,m.__name__=\"Property\";class h extends m{}n.PrimitiveProperty=h,h.__name__=\"PrimitiveProperty\";class v extends m{}n.Any=v,v.__name__=\"Any\";class g extends m{valid(e){return u.isArray(e)||e instanceof Float32Array||e instanceof Float64Array}}n.Array=g,g.__name__=\"Array\";class x extends m{valid(e){return u.isBoolean(e)}}n.Boolean=x,x.__name__=\"Boolean\";class y extends m{valid(e){return u.isString(e)&&_.is_color(e)}}n.Color=y,y.__name__=\"Color\";class f extends m{}n.Instance=f,f.__name__=\"Instance\";class A extends m{valid(e){return u.isNumber(e)}}n.Number=A,A.__name__=\"Number\";class P extends A{valid(e){return u.isNumber(e)&&(0|e)==e}}n.Int=P,P.__name__=\"Int\";class C extends A{}n.Angle=C,C.__name__=\"Angle\";class b extends A{valid(e){return u.isNumber(e)&&0<=e&&e<=1}}n.Percent=b,b.__name__=\"Percent\";class L extends m{valid(e){return u.isString(e)}}n.String=L,L.__name__=\"String\";class N extends m{valid(e){return null===e||u.isString(e)}}n.NullString=N,N.__name__=\"NullString\";class T extends L{}n.FontSize=T,T.__name__=\"FontSize\";class q extends L{_default_override(){return d.settings.dev?\"Bokeh\":void 0}}n.Font=q,q.__name__=\"Font\";class B extends m{valid(e){return u.isString(e)&&o.includes(this.enum_values,e)}}function M(e){return class extends B{get enum_values(){return[...e]}}}n.EnumProperty=B,B.__name__=\"EnumProperty\",n.Enum=M;class w extends B{get enum_values(){return[...r.Direction]}normalize(e){const t=new Uint8Array(e.length);for(let n=0;ne*Math.PI/180)),e=c.map(e,e=>-e),super.normalize(e)}}n.AngleSpec=re,re.__name__=\"AngleSpec\";class le extends G{get default_units(){return\"data\"}get valid_units(){return[...r.SpatialUnits]}}n.DistanceSpec=le,le.__name__=\"DistanceSpec\";class oe extends J{array(e){return new Uint8Array(super.array(e))}}n.BooleanSpec=oe,oe.__name__=\"BooleanSpec\";class ce extends J{array(e){return new l.NumberArray(super.array(e))}}n.NumberSpec=ce,ce.__name__=\"NumberSpec\";class _e extends J{array(e){const t=super.array(e),n=t.length,a=new l.ColorArray(n);for(let e=0;e0){let o=s[e];return null==o&&(s[e]=o=new r(e,l)),o}throw new TypeError(\"Logger.get() expects a non-empty string name and an optional log-level\")}get level(){return this.get_level()}get_level(){return this._log_level}set_level(e){if(e instanceof g)this._log_level=e;else{if(!n.isString(e)||null==r.log_levels[e])throw new Error(\"Logger.set_level() expects a log-level object or a string name of a log-level\");this._log_level=r.log_levels[e]}const l=`[${this._name}]`;for(const[e,o]of t.entries(r.log_levels))o.level\",\"*\"),t.HTTPMethod=o.Enum(\"POST\",\"GET\"),t.HexTileOrientation=o.Enum(\"pointytop\",\"flattop\"),t.HoverMode=o.Enum(\"mouse\",\"hline\",\"vline\"),t.LatLon=o.Enum(\"lat\",\"lon\"),t.LegendClickPolicy=o.Enum(\"none\",\"hide\",\"mute\"),t.LegendLocation=t.Anchor,t.LineCap=o.Enum(\"butt\",\"round\",\"square\"),t.LineJoin=o.Enum(\"miter\",\"round\",\"bevel\"),t.LinePolicy=o.Enum(\"prev\",\"next\",\"nearest\",\"interp\",\"none\"),t.Location=o.Enum(\"above\",\"below\",\"left\",\"right\"),t.Logo=o.Enum(\"normal\",\"grey\"),t.MarkerType=o.Enum(\"asterisk\",\"circle\",\"circle_cross\",\"circle_dot\",\"circle_x\",\"circle_y\",\"cross\",\"dash\",\"diamond\",\"diamond_cross\",\"diamond_dot\",\"dot\",\"hex\",\"hex_dot\",\"inverted_triangle\",\"plus\",\"square\",\"square_cross\",\"square_dot\",\"square_pin\",\"square_x\",\"triangle\",\"triangle_dot\",\"triangle_pin\",\"x\",\"y\"),t.MutedPolicy=o.Enum(\"show\",\"ignore\"),t.Orientation=o.Enum(\"vertical\",\"horizontal\"),t.OutputBackend=o.Enum(\"canvas\",\"svg\",\"webgl\"),t.PaddingUnits=o.Enum(\"percent\",\"absolute\"),t.Place=o.Enum(\"above\",\"below\",\"left\",\"right\",\"center\"),t.PointPolicy=o.Enum(\"snap_to_data\",\"follow_mouse\",\"none\"),t.RadiusDimension=o.Enum(\"x\",\"y\",\"max\",\"min\"),t.RenderLevel=o.Enum(\"image\",\"underlay\",\"glyph\",\"guide\",\"annotation\",\"overlay\"),t.RenderMode=o.Enum(\"canvas\",\"css\"),t.ResetPolicy=o.Enum(\"standard\",\"event_only\"),t.RoundingFunction=o.Enum(\"round\",\"nearest\",\"floor\",\"rounddown\",\"ceil\",\"roundup\"),t.SelectionMode=o.Enum(\"replace\",\"append\",\"intersect\",\"subtract\"),t.Side=o.Enum(\"above\",\"below\",\"left\",\"right\"),t.SizingMode=o.Enum(\"stretch_width\",\"stretch_height\",\"stretch_both\",\"scale_width\",\"scale_height\",\"scale_both\",\"fixed\"),t.Sort=o.Enum(\"ascending\",\"descending\"),t.SpatialUnits=o.Enum(\"screen\",\"data\"),t.StartEnd=o.Enum(\"start\",\"end\"),t.StepMode=o.Enum(\"after\",\"before\",\"center\"),t.TapBehavior=o.Enum(\"select\",\"inspect\"),t.TextAlign=o.Enum(\"left\",\"right\",\"center\"),t.TextBaseline=o.Enum(\"top\",\"middle\",\"bottom\",\"alphabetic\",\"hanging\",\"ideographic\"),t.TextureRepetition=o.Enum(\"repeat\",\"repeat_x\",\"repeat_y\",\"no_repeat\"),t.TickLabelOrientation=o.Enum(\"vertical\",\"horizontal\",\"parallel\",\"normal\"),t.TooltipAttachment=o.Enum(\"horizontal\",\"vertical\",\"left\",\"right\",\"above\",\"below\"),t.UpdateMode=o.Enum(\"replace\",\"append\"),t.VerticalAlign=o.Enum(\"top\",\"middle\",\"bottom\")},\n", - " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1).__importStar(e(8)),r=e(22);class i{}t.Kind=i,i.__name__=\"Kind\",function(e){class n extends i{valid(e){return!0}}n.__name__=\"Any\",e.Any=n;class t extends i{valid(e){return!0}}t.__name__=\"Unknown\",e.Unknown=t;class l extends i{valid(e){return s.isBoolean(e)}}l.__name__=\"Boolean\",e.Boolean=l;class a extends i{constructor(e){super(),this.obj_type=e}valid(e){return!0}}a.__name__=\"Ref\",e.Ref=a;class _ extends i{valid(e){return s.isNumber(e)}}_.__name__=\"Number\",e.Number=_;class u extends _{valid(e){return super.valid(e)&&s.isInteger(e)}}u.__name__=\"Int\",e.Int=u;class d extends i{constructor(e){super(),this.types=e,this.types=e}valid(e){return this.types.some(n=>n.valid(e))}}d.__name__=\"Or\",e.Or=d;class o extends i{constructor(e){super(),this.types=e,this.types=e}valid(e){if(!s.isArray(e))return!1;for(let n=0;nthis.item_type.valid(e))}}c.__name__=\"Array\",e.Array=c;class m extends i{valid(e){return null===e}}m.__name__=\"Null\",e.Null=m;class p extends i{constructor(e){super(),this.base_type=e}valid(e){return null===e||this.base_type.valid(e)}}p.__name__=\"Nullable\",e.Nullable=p;class y extends i{valid(e){return s.isString(e)}}y.__name__=\"String\",e.String=y;class v extends i{constructor(e){super(),this.values=new Set(e)}valid(e){return this.values.has(e)}*[Symbol.iterator](){yield*this.values}}v.__name__=\"Enum\",e.Enum=v;class h extends i{constructor(e){super(),this.item_type=e}valid(e){if(!s.isPlainObject(e))return!1;for(const n in e)if(e.hasOwnProperty(n)){const t=e[n];if(!this.item_type.valid(t))return!1}return!0}}h.__name__=\"Struct\",e.Struct=h;class w extends i{constructor(e,n){super(),this.key_type=e,this.item_type=n}valid(e){if(!(e instanceof Map))return!1;for(const[n,t]of e.entries())if(!this.key_type.valid(n)||!this.item_type.valid(t))return!1;return!0}}w.__name__=\"Dict\",e.Dict=w;class K extends i{valid(e){return s.isString(e)&&r.is_color(e)}}K.__name__=\"Color\",e.Color=K;class f extends _{valid(e){return super.valid(e)&&0<=e&&e<=1}}f.__name__=\"Percent\",e.Percent=f}(t.Kinds||(t.Kinds={})),t.Any=new t.Kinds.Any,t.Unknown=new t.Kinds.Unknown,t.Boolean=new t.Kinds.Boolean,t.Number=new t.Kinds.Number,t.Int=new t.Kinds.Int,t.String=new t.Kinds.String,t.Null=new t.Kinds.Null,t.Nullable=e=>new t.Kinds.Nullable(e),t.Or=(...e)=>new t.Kinds.Or(e),t.Tuple=(...e)=>new t.Kinds.Tuple(e),t.Array=e=>new t.Kinds.Array(e),t.Struct=e=>new t.Kinds.Struct(e),t.Dict=(e,n)=>new t.Kinds.Dict(e,n),t.Enum=(...e)=>new t.Kinds.Enum(e),t.Ref=e=>new t.Kinds.Ref(e),t.Percent=new t.Kinds.Percent,t.Color=new t.Kinds.Color,t.Auto=t.Enum(\"auto\"),t.FontSize=t.String,t.Font=t.String,t.Angle=t.Number},\n", - " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(23),l=e(9);function a(e){const r=Number(e).toString(16);return 1==r.length?\"0\"+r:r}function o(e){if(0==(e+=\"\").indexOf(\"#\"))return e;if(n.is_svg_color(e))return n.svg_colors[e];if(0==e.indexOf(\"rgb\")){const r=e.replace(/^rgba?\\(|\\s+|\\)$/g,\"\").split(\",\");let t=r.slice(0,3).map(a).join(\"\");return 4==r.length&&(t+=a(Math.floor(255*parseFloat(r[3])))),\"#\"+t.slice(0,8)}return e}function s(e){let r;switch(e.substring(0,4)){case\"rgba\":r={start:\"rgba(\",len:4,alpha:!0};break;case\"rgb(\":r={start:\"rgb(\",len:3,alpha:!1};break;default:return!1}if(new RegExp(\".*?(\\\\.).*(,)\").test(e))return!1;const t=e.replace(r.start,\"\").replace(\")\",\"\").split(\",\").map(parseFloat);return t.length==r.len&&((!r.alpha||0<=t[3]&&t[3]<=1)&&!l.includes(t.slice(0,3).map(e=>0<=e&&e<=255),!1))}t.is_color=function(e){return n.is_svg_color(e.toLowerCase())||\"#\"==e.substring(0,1)||s(e)},t.rgb2hex=function(e,r,t){return`#${a(255&e)}${a(255&r)}${a(255&t)}`},t.color2hex=o,t.encode_rgba=function([e,r,t,n]){return(255*e|0)<<24|(255*r|0)<<16|(255*t|0)<<8|255*n|0},t.decode_rgba=function(e){return[(e>>24&255)/255,(e>>16&255)/255,(e>>8&255)/255,(e>>0&255)/255]},t.color2rgba=function(e,r=1){if(!e)return[0,0,0,0];let t=o(e);t=t.replace(/ |#/g,\"\"),t.length<=4&&(t=t.replace(/(.)/g,\"$1$1\"));const n=t.match(/../g).map(e=>parseInt(e,16)/255);for(;n.length<3;)n.push(0);return n.length<4&&n.push(r),n.slice(0,4)},t.valid_rgb=s},\n", - " function _(e,F,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.svg_colors={indianred:\"#CD5C5C\",lightcoral:\"#F08080\",salmon:\"#FA8072\",darksalmon:\"#E9967A\",lightsalmon:\"#FFA07A\",crimson:\"#DC143C\",red:\"#FF0000\",firebrick:\"#B22222\",darkred:\"#8B0000\",pink:\"#FFC0CB\",lightpink:\"#FFB6C1\",hotpink:\"#FF69B4\",deeppink:\"#FF1493\",mediumvioletred:\"#C71585\",palevioletred:\"#DB7093\",coral:\"#FF7F50\",tomato:\"#FF6347\",orangered:\"#FF4500\",darkorange:\"#FF8C00\",orange:\"#FFA500\",gold:\"#FFD700\",yellow:\"#FFFF00\",lightyellow:\"#FFFFE0\",lemonchiffon:\"#FFFACD\",lightgoldenrodyellow:\"#FAFAD2\",papayawhip:\"#FFEFD5\",moccasin:\"#FFE4B5\",peachpuff:\"#FFDAB9\",palegoldenrod:\"#EEE8AA\",khaki:\"#F0E68C\",darkkhaki:\"#BDB76B\",lavender:\"#E6E6FA\",thistle:\"#D8BFD8\",plum:\"#DDA0DD\",violet:\"#EE82EE\",orchid:\"#DA70D6\",fuchsia:\"#FF00FF\",magenta:\"#FF00FF\",mediumorchid:\"#BA55D3\",mediumpurple:\"#9370DB\",blueviolet:\"#8A2BE2\",darkviolet:\"#9400D3\",darkorchid:\"#9932CC\",darkmagenta:\"#8B008B\",purple:\"#800080\",indigo:\"#4B0082\",slateblue:\"#6A5ACD\",darkslateblue:\"#483D8B\",mediumslateblue:\"#7B68EE\",greenyellow:\"#ADFF2F\",chartreuse:\"#7FFF00\",lawngreen:\"#7CFC00\",lime:\"#00FF00\",limegreen:\"#32CD32\",palegreen:\"#98FB98\",lightgreen:\"#90EE90\",mediumspringgreen:\"#00FA9A\",springgreen:\"#00FF7F\",mediumseagreen:\"#3CB371\",seagreen:\"#2E8B57\",forestgreen:\"#228B22\",green:\"#008000\",darkgreen:\"#006400\",yellowgreen:\"#9ACD32\",olivedrab:\"#6B8E23\",olive:\"#808000\",darkolivegreen:\"#556B2F\",mediumaquamarine:\"#66CDAA\",darkseagreen:\"#8FBC8F\",lightseagreen:\"#20B2AA\",darkcyan:\"#008B8B\",teal:\"#008080\",aqua:\"#00FFFF\",cyan:\"#00FFFF\",lightcyan:\"#E0FFFF\",paleturquoise:\"#AFEEEE\",aquamarine:\"#7FFFD4\",turquoise:\"#40E0D0\",mediumturquoise:\"#48D1CC\",darkturquoise:\"#00CED1\",cadetblue:\"#5F9EA0\",steelblue:\"#4682B4\",lightsteelblue:\"#B0C4DE\",powderblue:\"#B0E0E6\",lightblue:\"#ADD8E6\",skyblue:\"#87CEEB\",lightskyblue:\"#87CEFA\",deepskyblue:\"#00BFFF\",dodgerblue:\"#1E90FF\",cornflowerblue:\"#6495ED\",royalblue:\"#4169E1\",blue:\"#0000FF\",mediumblue:\"#0000CD\",darkblue:\"#00008B\",navy:\"#000080\",midnightblue:\"#191970\",cornsilk:\"#FFF8DC\",blanchedalmond:\"#FFEBCD\",bisque:\"#FFE4C4\",navajowhite:\"#FFDEAD\",wheat:\"#F5DEB3\",burlywood:\"#DEB887\",tan:\"#D2B48C\",rosybrown:\"#BC8F8F\",sandybrown:\"#F4A460\",goldenrod:\"#DAA520\",darkgoldenrod:\"#B8860B\",peru:\"#CD853F\",chocolate:\"#D2691E\",saddlebrown:\"#8B4513\",sienna:\"#A0522D\",brown:\"#A52A2A\",maroon:\"#800000\",white:\"#FFFFFF\",snow:\"#FFFAFA\",honeydew:\"#F0FFF0\",mintcream:\"#F5FFFA\",azure:\"#F0FFFF\",aliceblue:\"#F0F8FF\",ghostwhite:\"#F8F8FF\",whitesmoke:\"#F5F5F5\",seashell:\"#FFF5EE\",beige:\"#F5F5DC\",oldlace:\"#FDF5E6\",floralwhite:\"#FFFAF0\",ivory:\"#FFFFF0\",antiquewhite:\"#FAEBD7\",linen:\"#FAF0E6\",lavenderblush:\"#FFF0F5\",mistyrose:\"#FFE4E1\",gainsboro:\"#DCDCDC\",lightgray:\"#D3D3D3\",lightgrey:\"#D3D3D3\",silver:\"#C0C0C0\",darkgray:\"#A9A9A9\",darkgrey:\"#A9A9A9\",gray:\"#808080\",grey:\"#808080\",dimgray:\"#696969\",dimgrey:\"#696969\",lightslategray:\"#778899\",lightslategrey:\"#778899\",slategray:\"#708090\",slategrey:\"#708090\",darkslategray:\"#2F4F4F\",darkslategrey:\"#2F4F4F\",black:\"#000000\"},r.is_svg_color=function(e){return e in r.svg_colors}},\n", - " function _(r,t,e){Object.defineProperty(e,\"__esModule\",{value:!0}),e.NumberArray=Float32Array,e.ColorArray=Uint32Array;const s=r(25);class a{constructor(r,t){this.offsets=r,this.array=t}[s.equals](r,t){return t.arrays(this.offsets,r.offsets)&&t.arrays(this.array,r.array)}get length(){return this.offsets.length}clone(){return new a(new Uint32Array(this.offsets),new e.NumberArray(this.array))}static from(r){const t=r.length,s=new Uint32Array(t);let n=0;for(let e=0;e{if(null!=t[r.equals]&&null!=e[r.equals])return t[r.equals](e,this);switch(s){case\"[object Array]\":case\"[object Uint8Array]\":case\"[object Int8Array]\":case\"[object Uint16Array]\":case\"[object Int16Array]\":case\"[object Uint32Array]\":case\"[object Int32Array]\":case\"[object Float32Array]\":case\"[object Float64Array]\":return this.arrays(t,e);case\"[object Map]\":return this.maps(t,e);case\"[object Set]\":return this.sets(t,e);case\"[object Object]\":if(t.constructor==e.constructor&&(null==t.constructor||t.constructor===Object))return this.objects(t,e);case\"[object Function]\":if(t.constructor==e.constructor&&t.constructor===Function)return this.eq(\"\"+t,\"\"+e)}if(t instanceof Node)return this.nodes(t,e);throw Error(\"can't compare objects of type \"+s)})();return o.pop(),c.pop(),i}numbers(t,e){return Object.is(t,e)}arrays(t,e){const{length:r}=t;if(r!=e.length)return!1;for(let n=0;n>>5,r=31&t;return!!(this._array[s]>>r&1)}set(t,s=!0){this._check_bounds(t),this._count=null;const r=t>>>5,e=31&t;s?this._array[r]|=1<>>t&1&&(e+=1)}return e}*ones(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1&&(yield e);else e+=32}}*zeros(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1||(yield e);else e+=32}}_check_size(t){e.assert(this.size==t.size,\"Size mismatch\")}add(t){this._check_size(t);for(let s=0;st(this.at(s,r),s,r))}apply(t){const s=a.from(t),{nrows:r,ncols:e}=this;if(r==s.nrows&&e==s.ncols)return new a(r,e,(t,r)=>s.at(t,r)(this.at(t,r),t,r));throw new Error(\"dimensions don't match\")}to_sparse(){return[...this]}static from(t,s){if(t instanceof a)return t;if(null!=s){const r=t,e=Math.floor(r.length/s);return new a(e,s,(t,e)=>r[t*s+e])}{const s=t,r=t.length,e=i.min(s.map(t=>t.length));return new a(r,e,(t,r)=>s[t][r])}}}r.Matrix=a,a.__name__=\"Matrix\"},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});class n{constructor(){this._dev=!1}set dev(e){this._dev=e}get dev(){return this._dev}}s.Settings=n,n.__name__=\"Settings\",s.settings=new n},\n", - " function _(e,l,t){Object.defineProperty(t,\"__esModule\",{value:!0});const a=e(1).__importStar(e(18));t.Line={line_color:[a.Color,\"black\"],line_alpha:[a.Number,1],line_width:[a.Number,1],line_join:[a.LineJoin,\"bevel\"],line_cap:[a.LineCap,\"butt\"],line_dash:[a.Array,[]],line_dash_offset:[a.Number,0]},t.Fill={fill_color:[a.Color,\"gray\"],fill_alpha:[a.Number,1]},t.Hatch={hatch_color:[a.Color,\"black\"],hatch_alpha:[a.Number,1],hatch_scale:[a.Number,12],hatch_pattern:[a.NullString,null],hatch_weight:[a.Number,1],hatch_extra:[a.Any,{}]},t.Text={text_color:[a.Color,\"#444444\"],text_alpha:[a.Number,1],text_font:[a.Font,\"helvetica\"],text_font_size:[a.FontSize,\"16px\"],text_font_style:[a.FontStyle,\"normal\"],text_align:[a.TextAlign,\"left\"],text_baseline:[a.TextBaseline,\"bottom\"],text_line_height:[a.Number,1.2]},t.LineScalar={line_color:[a.ColorScalar,\"black\"],line_alpha:[a.NumberScalar,1],line_width:[a.NumberScalar,1],line_join:[a.LineJoinScalar,\"bevel\"],line_cap:[a.LineCapScalar,\"butt\"],line_dash:[a.ArrayScalar,[]],line_dash_offset:[a.NumberScalar,0]},t.FillScalar={fill_color:[a.ColorScalar,\"gray\"],fill_alpha:[a.NumberScalar,1]},t.HatchScalar={hatch_color:[a.ColorScalar,\"black\"],hatch_alpha:[a.NumberScalar,1],hatch_scale:[a.NumberScalar,12],hatch_pattern:[a.NullStringScalar,null],hatch_weight:[a.NumberScalar,1],hatch_extra:[a.AnyScalar,{}]},t.TextScalar={text_color:[a.ColorScalar,\"#444444\"],text_alpha:[a.NumberScalar,1],text_font:[a.Font,\"helvetica\"],text_font_size:[a.FontSizeScalar,\"16px\"],text_font_style:[a.FontStyleScalar,\"normal\"],text_align:[a.TextAlignScalar,\"left\"],text_baseline:[a.TextBaselineScalar,\"bottom\"],text_line_height:[a.NumberScalar,1.2]},t.LineVector={line_color:[a.ColorSpec,\"black\"],line_alpha:[a.NumberSpec,1],line_width:[a.NumberSpec,1],line_join:[a.LineJoin,\"bevel\"],line_cap:[a.LineCap,\"butt\"],line_dash:[a.Array,[]],line_dash_offset:[a.Number,0]},t.FillVector={fill_color:[a.ColorSpec,\"gray\"],fill_alpha:[a.NumberSpec,1]},t.HatchVector={hatch_color:[a.ColorSpec,\"black\"],hatch_alpha:[a.NumberSpec,1],hatch_scale:[a.NumberSpec,12],hatch_pattern:[a.NullStringSpec,null],hatch_weight:[a.NumberSpec,1],hatch_extra:[a.Any,{}]},t.TextVector={text_color:[a.ColorSpec,\"#444444\"],text_alpha:[a.NumberSpec,1],text_font:[a.Font,\"helvetica\"],text_font_size:[a.FontSizeSpec,\"16px\"],text_font_style:[a.FontStyle,\"normal\"],text_align:[a.TextAlign,\"left\"],text_baseline:[a.TextBaseline,\"bottom\"],text_line_height:[a.Number,1.2]}},\n", - " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const n=t(27);function u(){const t=new Array(32);for(let e=0;e<32;e++)t[e]=\"0123456789ABCDEF\".substr(Math.floor(16*Math.random()),1);return t[12]=\"4\",t[16]=\"0123456789ABCDEF\".substr(3&t[16].charCodeAt(0)|8,1),t.join(\"\")}r.startsWith=function(t,e,r=0){return t.substr(r,e.length)==e},r.uuid4=u;let s=1e3;r.uniqueId=function(t){const e=n.settings.dev?\"j\"+s++:u();return null!=t?`${t}-${e}`:e},r.escape=function(t){return t.replace(/(?:[&<>\"'`])/g,t=>{switch(t){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";case\"'\":return\"'\";case\"`\":return\"`\";default:return t}})},r.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,(t,e)=>{switch(e){case\"amp\":return\"&\";case\"lt\":return\"<\";case\"gt\":return\">\";case\"quot\":return'\"';case\"#x27\":return\"'\";case\"#x60\":return\"`\";default:return e}})},r.use_strict=function(t){return\"'use strict';\\n\"+t}},\n", - " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=t(8),a=t(11),n=t(25),i=Symbol(\"__ndarray__\");class h extends Uint8Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"uint8\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Uint8NDArray=h,h.__name__=\"Uint8NDArray\";class _ extends Int8Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"int8\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Int8NDArray=_,_.__name__=\"Int8NDArray\";class u extends Uint16Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"uint16\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Uint16NDArray=u,u.__name__=\"Uint16NDArray\";class l extends Int16Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"int16\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Int16NDArray=l,l.__name__=\"Int16NDArray\";class y extends Uint32Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"uint32\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Uint32NDArray=y,y.__name__=\"Uint32NDArray\";class c extends Int32Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"int32\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Int32NDArray=c,c.__name__=\"Int32NDArray\";class p extends Float32Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"float32\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}e.Float32NDArray=p,p.__name__=\"Float32NDArray\";class o extends Float64Array{constructor(t,s){super(t),this.__ndarray__=i,this.dtype=\"float64\",this.shape=null!=s?s:d(t)?t.shape:[this.length],this.dimension=this.shape.length}[n.equals](t,s){return s.eq(this.shape,t.shape)&&s.arrays(this,t)}}function d(t){return r.isObject(t)&&t.__ndarray__==i}e.Float64NDArray=o,o.__name__=\"Float64NDArray\",e.is_NDArray=d,e.ndarray=function(t,s={}){let{dtype:e}=s;null==e&&(e=t instanceof ArrayBuffer||r.isArray(t)?\"float32\":(()=>{switch(!0){case t instanceof Uint8Array:return\"uint8\";case t instanceof Int8Array:return\"int8\";case t instanceof Uint16Array:return\"uint16\";case t instanceof Int16Array:return\"int16\";case t instanceof Uint32Array:return\"uint32\";case t instanceof Int32Array:return\"int32\";case t instanceof Float32Array:return\"float32\";case t instanceof Float64Array:return\"float64\";default:a.unreachable()}})());const{shape:n}=s;switch(e){case\"uint8\":return new h(t,n);case\"int8\":return new _(t,n);case\"uint16\":return new u(t,n);case\"int16\":return new l(t,n);case\"uint32\":return new y(t,n);case\"int32\":return new c(t,n);case\"float32\":return new p(t,n);case\"float64\":return new o(t,n)}}},\n", - " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),a=e(8),f=e(32),_=n.__importStar(e(30));function o(e){const r=new Uint8Array(e),t=Array.from(r).map(e=>String.fromCharCode(e));return btoa(t.join(\"\"))}function s(e){const r=atob(e),t=r.length,n=new Uint8Array(t);for(let e=0,a=t;e{switch(a){case\"uint8\":return new _.Uint8NDArray(o,n);case\"int8\":return new _.Int8NDArray(o,n);case\"uint16\":return new _.Uint16NDArray(o,n);case\"int16\":return new _.Int16NDArray(o,n);case\"uint32\":return new _.Uint32NDArray(o,n);case\"int32\":return new _.Int32NDArray(o,n);case\"float32\":return new _.Float32NDArray(o,n);case\"float64\":return new _.Float64NDArray(o,n)}})();if(f!==t.BYTE_ORDER)switch(l.BYTES_PER_ELEMENT){case 2:i(l);break;case 4:u(l);break;case 8:c(l)}return l},t.encode_NDArray=function(e,r){const n={order:t.BYTE_ORDER,dtype:e.dtype,shape:e.shape};if(null!=r){const t=\"\"+r.size;return r.set(t,e.buffer),Object.assign({__buffer__:t},n)}{const r=o(e.buffer);return Object.assign({__ndarray__:r},n)}}},\n", - " function _(e,n,i){Object.defineProperty(i,\"__esModule\",{value:!0}),i.is_ie=(()=>{const e=\"undefined\"!=typeof navigator?navigator.userAgent:\"\";return e.indexOf(\"MSIE\")>=0||e.indexOf(\"Trident\")>0||e.indexOf(\"Edge\")>0})(),i.is_mobile=\"undefined\"!=typeof window&&(\"ontouchstart\"in window||navigator.maxTouchPoints>0),i.is_little_endian=(()=>{const e=new ArrayBuffer(4),n=new Uint8Array(e);new Uint32Array(e)[1]=168496141;let i=!0;return 10==n[4]&&11==n[5]&&12==n[6]&&13==n[7]&&(i=!1),i})()},\n", - " function _(t,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=t(8),i=t(13);n.pretty=Symbol(\"pretty\");class o{constructor(t){this.precision=null==t?void 0:t.precision}to_string(t){return function(t){return n.pretty in Object(t)}(t)?t[n.pretty](this):e.isBoolean(t)?this.boolean(t):e.isNumber(t)?this.number(t):e.isString(t)?this.string(t):e.isArray(t)?this.array(t):e.isIterable(t)?this.iterable(t):e.isPlainObject(t)?this.object(t):\"\"+t}token(t){return t}boolean(t){return\"\"+t}number(t){return null!=this.precision?t.toFixed(this.precision):\"\"+t}string(t){return`\"${t.replace(/'/g,\"\\\\'\")}\"`}array(t){const r=this.token,n=[];for(const r of t)n.push(this.to_string(r));return`${r(\"[\")}${n.join(r(\",\")+\" \")}${r(\"]\")}`}iterable(t){var r;const n=this.token,e=null!==(r=Object(t)[Symbol.toStringTag])&&void 0!==r?r:\"Object\",i=this.array(t);return`${e}${n(\"(\")}${i}${n(\")\")}`}object(t){const r=this.token,n=[];for(const[e,o]of i.entries(t))n.push(`${e}${r(\":\")} ${this.to_string(o)}`);return`${r(\"{\")}${n.join(r(\",\")+\" \")}${r(\"}\")}`}}n.Printer=o,o.__name__=\"Printer\",n.to_string=function(t,r){return new o(r).to_string(t)}},\n", - " function _(t,_,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=t(1);e.__exportStar(t(35),r),e.__exportStar(t(176),r),e.__exportStar(t(203),r),e.__exportStar(t(207),r),e.__exportStar(t(218),r),e.__exportStar(t(222),r),e.__exportStar(t(228),r),e.__exportStar(t(232),r),e.__exportStar(t(265),r),e.__exportStar(t(268),r),e.__exportStar(t(270),r),e.__exportStar(t(132),r),e.__exportStar(t(148),r),e.__exportStar(t(287),r),e.__exportStar(t(291),r),e.__exportStar(t(320),r),e.__exportStar(t(321),r),e.__exportStar(t(322),r),e.__exportStar(t(323),r),e.__exportStar(t(324),r),e.__exportStar(t(329),r),e.__exportStar(t(331),r),e.__exportStar(t(342),r),e.__exportStar(t(346),r)},\n", - " function _(a,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});var r=a(36);o.Annotation=r.Annotation;var n=a(83);o.Arrow=n.Arrow;var t=a(84);o.ArrowHead=t.ArrowHead;var v=a(84);o.OpenHead=v.OpenHead;var l=a(84);o.NormalHead=l.NormalHead;var d=a(84);o.TeeHead=d.TeeHead;var i=a(84);o.VeeHead=i.VeeHead;var A=a(122);o.Band=A.Band;var H=a(124);o.BoxAnnotation=H.BoxAnnotation;var T=a(125);o.ColorBar=T.ColorBar;var p=a(160);o.Label=p.Label;var L=a(162);o.LabelSet=L.LabelSet;var b=a(163);o.Legend=b.Legend;var B=a(164);o.LegendItem=B.LegendItem;var S=a(166);o.PolyAnnotation=S.PolyAnnotation;var P=a(167);o.Slope=P.Slope;var g=a(168);o.Span=g.Span;var m=a(161);o.TextAnnotation=m.TextAnnotation;var w=a(169);o.Title=w.Title;var x=a(170);o.ToolbarPanel=x.ToolbarPanel;var s=a(171);o.Tooltip=s.Tooltip;var u=a(175);o.Whisker=u.Whisker},\n", - " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=t(1).__importStar(t(37)),i=t(13),o=t(70);class _ extends o.RendererView{get panel(){return this.layout}connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.visible,()=>this.plot_view.request_layout())}get_size(){if(this.model.visible){const{width:t,height:e}=this._get_size();return{width:Math.round(t),height:Math.round(e)}}return{width:0,height:0}}_get_size(){throw new Error(\"not implemented\")}set_data(t){const e=this.model.materialize_dataspecs(t);if(i.extend(this,e),this.plot_model.use_map){const t=this;null!=t._x&&([t._x,t._y]=s.project_xy(t._x,t._y)),null!=t._xs&&([t._xs,t._ys]=s.project_xsys(t._xs,t._ys))}}get needs_clip(){return null==this.layout}serializable_state(){const t=super.serializable_state();return null==this.layout?t:Object.assign(Object.assign({},t),{bbox:this.layout.bbox.box})}}n.AnnotationView=_,_.__name__=\"AnnotationView\";class a extends o.Renderer{constructor(t){super(t)}static init_Annotation(){this.override({level:\"annotation\"})}}n.Annotation=a,a.__name__=\"Annotation\",a.init_Annotation()},\n", - " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=n(1),o=r.__importDefault(n(38)),l=r.__importDefault(n(39)),c=n(24),i=new l.default(\"GOOGLE\"),u=new l.default(\"WGS84\"),a=o.default(u,i);e.wgs84_mercator={compute:(n,t)=>isFinite(n)&&isFinite(t)?a.forward([n,t]):[NaN,NaN],invert:(n,t)=>isFinite(n)&&isFinite(t)?a.inverse([n,t]):[NaN,NaN]};const s={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},f={lon:[-180,180],lat:[-85.06,85.06]},{min:_,max:p}=Math;function m(n,t){const r=_(n.length,t.length),o=new c.NumberArray(r),l=new c.NumberArray(r);return e.inplace.project_xy(n,t,o,l),[o,l]}e.clip_mercator=function(n,t,e){const[r,o]=s[e];return[p(n,r),_(t,o)]},e.in_bounds=function(n,t){const[e,r]=f[t];return e2?void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name?\"number\"==typeof r.z?[r.x,r.y,r.z].concat(t.splice(3)):[r.x,r.y,t[2]].concat(t.splice(3)):[r.x,r.y].concat(t.splice(2)):[r.x,r.y]):(o=a.default(e,n,t),2===(i=Object.keys(t)).length||i.forEach((function(r){if(void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name){if(\"x\"===r||\"y\"===r||\"z\"===r)return}else if(\"x\"===r||\"y\"===r)return;o[r]=t[r]})),o)}function u(e){return e instanceof o.default?e:e.oProj?e.oProj:o.default(e)}t.default=function(e,n,t){e=u(e);var r,o=!1;return void 0===n?(n=e,e=i,o=!0):(void 0!==n.x||Array.isArray(n))&&(t=n,n=e,e=i,o=!0),n=u(n),t?c(e,n,t):(r={forward:function(t){return c(e,n,t)},inverse:function(t){return c(n,e,t)}},o&&(r.oProj=n),r)}},\n", - " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const s=e(1),i=s.__importDefault(e(40)),u=s.__importDefault(e(51)),l=s.__importDefault(e(52)),o=e(60),r=s.__importDefault(e(62)),f=s.__importDefault(e(63)),d=s.__importDefault(e(47));function p(e,t){if(!(this instanceof p))return new p(e);t=t||function(e){if(e)throw e};var a=i.default(e);if(\"object\"==typeof a){var s=p.projections.get(a.projName);if(s){if(a.datumCode&&\"none\"!==a.datumCode){var l=d.default(r.default,a.datumCode);l&&(a.datum_params=l.towgs84?l.towgs84.split(\",\"):null,a.ellps=l.ellipse,a.datumName=l.datumName?l.datumName:a.datumCode)}a.k0=a.k0||1,a.axis=a.axis||\"enu\",a.ellps=a.ellps||\"wgs84\";var m=o.sphere(a.a,a.b,a.rf,a.ellps,a.sphere),n=o.eccentricity(m.a,m.b,m.rf,a.R_A),h=a.datum||f.default(a.datumCode,a.datum_params,m.a,m.b,n.es,n.ep2);u.default(this,a),u.default(this,s),this.a=m.a,this.b=m.b,this.rf=m.rf,this.sphere=m.sphere,this.es=n.es,this.e=n.e,this.ep2=n.ep2,this.datum=h,this.init(),t(null,this)}else t(e)}else t(e)}p.projections=l.default,p.projections.start(),a.default=p},\n", - " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const u=t(1),n=u.__importDefault(t(41)),f=u.__importDefault(t(48)),i=u.__importDefault(t(43)),a=u.__importDefault(t(47));var o=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];var l=[\"3857\",\"900913\",\"3785\",\"102113\"];r.default=function(t){if(!function(t){return\"string\"==typeof t}(t))return t;if(function(t){return t in n.default}(t))return n.default[t];if(function(t){return o.some((function(e){return t.indexOf(e)>-1}))}(t)){var e=f.default(t);if(function(t){var e=a.default(t,\"authority\");if(e){var r=a.default(e,\"epsg\");return r&&l.indexOf(r)>-1}}(e))return n.default[\"EPSG:3857\"];var r=function(t){var e=a.default(t,\"extension\");if(e)return a.default(e,\"proj4\")}(e);return r?i.default(r):e}return function(t){return\"+\"===t[0]}(t)?i.default(t):void 0}},\n", - " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=t(1),n=i.__importDefault(t(42)),f=i.__importDefault(t(43)),a=i.__importDefault(t(48));function l(t){var e=this;if(2===arguments.length){var r=arguments[1];\"string\"==typeof r?\"+\"===r.charAt(0)?l[t]=f.default(arguments[1]):l[t]=a.default(arguments[1]):l[t]=r}else if(1===arguments.length){if(Array.isArray(t))return t.map((function(t){Array.isArray(t)?l.apply(e,t):l(t)}));if(\"string\"==typeof t){if(t in l)return l[t]}else\"EPSG\"in t?l[\"EPSG:\"+t.EPSG]=t:\"ESRI\"in t?l[\"ESRI:\"+t.ESRI]=t:\"IAU2000\"in t?l[\"IAU2000:\"+t.IAU2000]=t:console.log(t);return}}n.default(l),r.default=l},\n", - " function _(e,t,l){Object.defineProperty(l,\"__esModule\",{value:!0}),l.default=function(e){e(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),e(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),e(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),e.WGS84=e[\"EPSG:4326\"],e[\"EPSG:3785\"]=e[\"EPSG:3857\"],e.GOOGLE=e[\"EPSG:3857\"],e[\"EPSG:900913\"]=e[\"EPSG:3857\"],e[\"EPSG:102113\"]=e[\"EPSG:3857\"]}},\n", - " function _(t,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});const e=t(1),a=t(44),u=e.__importDefault(t(45)),r=e.__importDefault(t(46)),i=e.__importDefault(t(47));o.default=function(t){var n,o,e,f={},l=t.split(\"+\").map((function(t){return t.trim()})).filter((function(t){return t})).reduce((function(t,n){var o=n.split(\"=\");return o.push(!0),t[o[0].toLowerCase()]=o[1],t}),{}),c={proj:\"projName\",datum:\"datumCode\",rf:function(t){f.rf=parseFloat(t)},lat_0:function(t){f.lat0=t*a.D2R},lat_1:function(t){f.lat1=t*a.D2R},lat_2:function(t){f.lat2=t*a.D2R},lat_ts:function(t){f.lat_ts=t*a.D2R},lon_0:function(t){f.long0=t*a.D2R},lon_1:function(t){f.long1=t*a.D2R},lon_2:function(t){f.long2=t*a.D2R},alpha:function(t){f.alpha=parseFloat(t)*a.D2R},lonc:function(t){f.longc=t*a.D2R},x_0:function(t){f.x0=parseFloat(t)},y_0:function(t){f.y0=parseFloat(t)},k_0:function(t){f.k0=parseFloat(t)},k:function(t){f.k0=parseFloat(t)},a:function(t){f.a=parseFloat(t)},b:function(t){f.b=parseFloat(t)},r_a:function(){f.R_A=!0},zone:function(t){f.zone=parseInt(t,10)},south:function(){f.utmSouth=!0},towgs84:function(t){f.datum_params=t.split(\",\").map((function(t){return parseFloat(t)}))},to_meter:function(t){f.to_meter=parseFloat(t)},units:function(t){f.units=t;var n=i.default(r.default,t);n&&(f.to_meter=n.to_meter)},from_greenwich:function(t){f.from_greenwich=t*a.D2R},pm:function(t){var n=i.default(u.default,t);f.from_greenwich=(n||parseFloat(t))*a.D2R},nadgrids:function(t){\"@null\"===t?f.datumCode=\"none\":f.nadgrids=t},axis:function(t){3===t.length&&-1!==\"ewnsud\".indexOf(t.substr(0,1))&&-1!==\"ewnsud\".indexOf(t.substr(1,1))&&-1!==\"ewnsud\".indexOf(t.substr(2,1))&&(f.axis=t)}};for(n in l)o=l[n],n in c?\"function\"==typeof(e=c[n])?e(o):f[e]=o:f[n]=o;return\"string\"==typeof f.datumCode&&\"WGS84\"!==f.datumCode&&(f.datumCode=f.datumCode.toLowerCase()),f}},\n", - " function _(P,_,e){Object.defineProperty(e,\"__esModule\",{value:!0}),e.PJD_3PARAM=1,e.PJD_7PARAM=2,e.PJD_WGS84=4,e.PJD_NODATUM=5,e.SEC_TO_RAD=484813681109536e-20,e.HALF_PI=Math.PI/2,e.SIXTH=.16666666666666666,e.RA4=.04722222222222222,e.RA6=.022156084656084655,e.EPSLN=1e-10,e.D2R=.017453292519943295,e.R2D=57.29577951308232,e.FORTPI=Math.PI/4,e.TWO_PI=2*Math.PI,e.SPI=3.14159265359},\n", - " function _(e,o,r){Object.defineProperty(r,\"__esModule\",{value:!0});var a={};r.default=a,a.greenwich=0,a.lisbon=-9.131906111111,a.paris=2.337229166667,a.bogota=-74.080916666667,a.madrid=-3.687938888889,a.rome=12.452333333333,a.bern=7.439583333333,a.jakarta=106.807719444444,a.ferro=-17.666666666667,a.brussels=4.367975,a.stockholm=18.058277777778,a.athens=23.7163375,a.oslo=10.722916666667},\n", - " function _(e,t,f){Object.defineProperty(f,\"__esModule\",{value:!0}),f.default={ft:{to_meter:.3048},\"us-ft\":{to_meter:1200/3937}}},\n", - " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});var o=/[\\s_\\-\\/\\(\\)]/g;t.default=function(e,r){if(e[r])return e[r];for(var t,a=Object.keys(e),n=r.toLowerCase().replace(o,\"\"),f=-1;++f0?90:-90),e.lat_ts=e.lat1)}(l),l}},\n", - " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=function(t){return new a(t).output()};var i=/\\s/,s=/[A-Za-z]/,h=/[A-Za-z84]/,o=/[,\\]]/,n=/[\\d\\.E\\-\\+]/;function a(t){if(\"string\"!=typeof t)throw new Error(\"not a string\");this.text=t.trim(),this.level=0,this.place=0,this.root=null,this.stack=[],this.currentObject=null,this.state=1}a.prototype.readCharicter=function(){var t=this.text[this.place++];if(4!==this.state)for(;i.test(t);){if(this.place>=this.text.length)return;t=this.text[this.place++]}switch(this.state){case 1:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},a.prototype.afterquote=function(t){if('\"'===t)return this.word+='\"',void(this.state=4);if(o.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in afterquote yet, index '+this.place)},a.prototype.afterItem=function(t){return\",\"===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=1)):\"]\"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=1,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},a.prototype.number=function(t){if(!n.test(t)){if(o.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in number yet, index '+this.place)}this.word+=t},a.prototype.quoted=function(t){'\"'!==t?this.word+=t:this.state=5},a.prototype.keyword=function(t){if(h.test(t))this.word+=t;else{if(\"[\"===t){var e=[];return e.push(this.word),this.level++,null===this.root?this.root=e:this.currentObject.push(e),this.stack.push(this.currentObject),this.currentObject=e,void(this.state=1)}if(!o.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in keyword yet, index '+this.place);this.afterItem(t)}},a.prototype.neutral=function(t){if(s.test(t))return this.word=t,void(this.state=2);if('\"'===t)return this.word=\"\",void(this.state=4);if(n.test(t))return this.word=t,void(this.state=3);if(!o.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in neutral yet, index '+this.place);this.afterItem(t)},a.prototype.output=function(){for(;this.place90&&a*l.R2D<-90&&h*l.R2D>180&&h*l.R2D<-180)return null;if(Math.abs(Math.abs(a)-l.HALF_PI)<=l.EPSLN)return null;if(this.sphere)i=this.x0+this.a*this.k0*e.default(h-this.long0),s=this.y0+this.a*this.k0*Math.log(Math.tan(l.FORTPI+.5*a));else{var n=Math.sin(a),u=r.default(this.e,a,n);i=this.x0+this.a*this.k0*e.default(h-this.long0),s=this.y0-this.a*this.k0*Math.log(u)}return t.x=i,t.y=s,t}function f(t){var i,s,h=t.x-this.x0,a=t.y-this.y0;if(this.sphere)s=l.HALF_PI-2*Math.atan(Math.exp(-a/(this.a*this.k0)));else{var r=Math.exp(-a/(this.a*this.k0));if(-9999===(s=n.default(this.e,r)))return null}return i=e.default(this.long0+h/(this.a*this.k0)),t.x=i,t.y=s,t}s.init=u,s.forward=o,s.inverse=f,s.names=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"],s.default={init:u,forward:o,inverse:f,names:s.names}},\n", - " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0}),n.default=function(e,t,n){var r=e*t;return n/Math.sqrt(1-r*r)}},\n", - " function _(e,t,u){Object.defineProperty(u,\"__esModule\",{value:!0});const n=e(1),a=e(44),f=n.__importDefault(e(56));u.default=function(e){return Math.abs(e)<=a.SPI?e:e-f.default(e)*a.TWO_PI}},\n", - " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){return e<0?-1:1}},\n", - " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const a=t(44);n.default=function(t,e,n){var o=t*n,u=.5*t;return o=Math.pow((1-o)/(1+o),u),Math.tan(.5*(a.HALF_PI-e))/o}},\n", - " function _(t,a,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(44);e.default=function(t,a){for(var e,r,o=.5*t,u=n.HALF_PI-2*Math.atan(a),f=0;f<=15;f++)if(e=t*Math.sin(u),u+=r=n.HALF_PI-2*Math.atan(a*Math.pow((1-e)/(1+e),o))-u,Math.abs(r)<=1e-10)return u;return-9999}},\n", - " function _(e,n,i){function t(){}function r(e){return e}Object.defineProperty(i,\"__esModule\",{value:!0}),i.init=t,i.forward=r,i.inverse=r,i.names=[\"longlat\",\"identity\"],i.default={init:t,forward:r,inverse:r,names:i.names}},\n", - " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const a=e(1),n=e(44),f=a.__importStar(e(61)),u=a.__importDefault(e(47));r.eccentricity=function(e,t,r,a){var f=e*e,u=t*t,i=(f-u)/f,c=0;return a?(f=(e*=1-i*(n.SIXTH+i*(n.RA4+i*n.RA6)))*e,i=0):c=Math.sqrt(i),{es:i,e:c,ep2:(f-u)/u}},r.sphere=function(e,t,r,a,i){if(!e){var c=u.default(f.default,a);c||(c=f.WGS84),e=c.a,t=c.b,r=c.rf}return r&&!t&&(t=(1-1/r)*e),(0===r||Math.abs(e-t)3&&(0===r.datum_params[3]&&0===r.datum_params[4]&&0===r.datum_params[5]&&0===r.datum_params[6]||(r.datum_type=t.PJD_7PARAM,r.datum_params[3]*=t.SEC_TO_RAD,r.datum_params[4]*=t.SEC_TO_RAD,r.datum_params[5]*=t.SEC_TO_RAD,r.datum_params[6]=r.datum_params[6]/1e6+1))),r.a=_,r.b=u,r.es=d,r.ep2=p,r}},\n", - " function _(t,e,a){Object.defineProperty(a,\"__esModule\",{value:!0});const r=t(1),u=t(44),m=r.__importDefault(t(65)),_=r.__importDefault(t(67)),o=r.__importDefault(t(39)),d=r.__importDefault(t(68)),f=r.__importDefault(t(69));a.default=function t(e,a,r){var n;if(Array.isArray(r)&&(r=d.default(r)),f.default(r),e.datum&&a.datum&&function(t,e){return(t.datum.datum_type===u.PJD_3PARAM||t.datum.datum_type===u.PJD_7PARAM)&&\"WGS84\"!==e.datumCode||(e.datum.datum_type===u.PJD_3PARAM||e.datum.datum_type===u.PJD_7PARAM)&&\"WGS84\"!==t.datumCode}(e,a)&&(r=t(e,n=new o.default(\"WGS84\"),r),e=n),\"enu\"!==e.axis&&(r=_.default(e,!1,r)),\"longlat\"===e.projName)r={x:r.x*u.D2R,y:r.y*u.D2R,z:r.z||0};else if(e.to_meter&&(r={x:r.x*e.to_meter,y:r.y*e.to_meter,z:r.z||0}),!(r=e.inverse(r)))return;return e.from_greenwich&&(r.x+=e.from_greenwich),r=m.default(e.datum,a.datum,r),a.from_greenwich&&(r={x:r.x-a.from_greenwich,y:r.y,z:r.z||0}),\"longlat\"===a.projName?r={x:r.x*u.R2D,y:r.y*u.R2D,z:r.z||0}:(r=a.forward(r),a.to_meter&&(r={x:r.x/a.to_meter,y:r.y/a.to_meter,z:r.z||0})),\"enu\"!==a.axis?_.default(a,!0,r):r}},\n", - " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const u=e(44),o=e(66);function _(e){return e===u.PJD_3PARAM||e===u.PJD_7PARAM}a.default=function(e,t,a){return o.compareDatums(e,t)||e.datum_type===u.PJD_NODATUM||t.datum_type===u.PJD_NODATUM?a:e.es!==t.es||e.a!==t.a||_(e.datum_type)||_(t.datum_type)?(a=o.geodeticToGeocentric(a,e.es,e.a),_(e.datum_type)&&(a=o.geocentricToWgs84(a,e.datum_type,e.datum_params)),_(t.datum_type)&&(a=o.geocentricFromWgs84(a,t.datum_type,t.datum_params)),o.geocentricToGeodetic(a,t.es,t.a,t.b)):a}},\n", - " function _(a,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=a(44);r.compareDatums=function(a,t){return a.datum_type===t.datum_type&&(!(a.a!==t.a||Math.abs(a.es-t.es)>5e-11)&&(a.datum_type===e.PJD_3PARAM?a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]:a.datum_type!==e.PJD_7PARAM||a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]&&a.datum_params[3]===t.datum_params[3]&&a.datum_params[4]===t.datum_params[4]&&a.datum_params[5]===t.datum_params[5]&&a.datum_params[6]===t.datum_params[6]))},r.geodeticToGeocentric=function(a,t,r){var m,u,s,_,n=a.x,d=a.y,i=a.z?a.z:0;if(d<-e.HALF_PI&&d>-1.001*e.HALF_PI)d=-e.HALF_PI;else if(d>e.HALF_PI&&d<1.001*e.HALF_PI)d=e.HALF_PI;else{if(d<-e.HALF_PI)return{x:-1/0,y:-1/0,z:a.z};if(d>e.HALF_PI)return{x:1/0,y:1/0,z:a.z}}return n>Math.PI&&(n-=2*Math.PI),u=Math.sin(d),_=Math.cos(d),s=u*u,{x:((m=r/Math.sqrt(1-t*s))+i)*_*Math.cos(n),y:(m+i)*_*Math.sin(n),z:(m*(1-t)+i)*u}},r.geocentricToGeodetic=function(a,t,r,m){var u,s,_,n,d,i,p,P,o,y,M,z,c,A,x,f=a.x,h=a.y,I=a.z?a.z:0;if(u=Math.sqrt(f*f+h*h),s=Math.sqrt(f*f+h*h+I*I),u/r<1e-12){if(A=0,s/r<1e-12)return e.HALF_PI,x=-m,{x:a.x,y:a.y,z:a.z}}else A=Math.atan2(h,f);_=I/s,P=(n=u/s)*(1-t)*(d=1/Math.sqrt(1-t*(2-t)*n*n)),o=_*d,c=0;do{c++,i=t*(p=r/Math.sqrt(1-t*o*o))/(p+(x=u*P+I*o-p*(1-t*o*o))),z=(M=_*(d=1/Math.sqrt(1-i*(2-i)*n*n)))*P-(y=n*(1-i)*d)*o,P=y,o=M}while(z*z>1e-24&&c<30);return{x:A,y:Math.atan(M/Math.abs(y)),z:x}},r.geocentricToWgs84=function(a,t,r){if(t===e.PJD_3PARAM)return{x:a.x+r[0],y:a.y+r[1],z:a.z+r[2]};if(t===e.PJD_7PARAM){var m=r[0],u=r[1],s=r[2],_=r[3],n=r[4],d=r[5],i=r[6];return{x:i*(a.x-d*a.y+n*a.z)+m,y:i*(d*a.x+a.y-_*a.z)+u,z:i*(-n*a.x+_*a.y+a.z)+s}}},r.geocentricFromWgs84=function(a,t,r){if(t===e.PJD_3PARAM)return{x:a.x-r[0],y:a.y-r[1],z:a.z-r[2]};if(t===e.PJD_7PARAM){var m=r[0],u=r[1],s=r[2],_=r[3],n=r[4],d=r[5],i=r[6],p=(a.x-m)/i,P=(a.y-u)/i,o=(a.z-s)/i;return{x:p+d*P-n*o,y:-d*p+P+_*o,z:n*p-_*P+o}}}},\n", - " function _(e,a,i){Object.defineProperty(i,\"__esModule\",{value:!0}),i.default=function(e,a,i){var s,n,r,c=i.x,d=i.y,u=i.z||0,f={};for(r=0;r<3;r++)if(!a||2!==r||void 0!==i.z)switch(0===r?(s=c,n=-1!==\"ew\".indexOf(e.axis[r])?\"x\":\"y\"):1===r?(s=d,n=-1!==\"ns\".indexOf(e.axis[r])?\"y\":\"x\"):(s=u,n=\"z\"),e.axis[r]){case\"e\":case\"w\":case\"n\":case\"s\":f[n]=s;break;case\"u\":void 0!==i[n]&&(f.z=s);break;case\"d\":void 0!==i[n]&&(f.z=-s);break;default:return null}return f}},\n", - " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var n={x:e[0],y:e[1]};return e.length>2&&(n.z=e[2]),e.length>3&&(n.m=e[3]),n}},\n", - " function _(e,i,n){function t(e){if(\"function\"==typeof Number.isFinite){if(Number.isFinite(e))return;throw new TypeError(\"coordinates must be finite numbers\")}if(\"number\"!=typeof e||e!=e||!isFinite(e))throw new TypeError(\"coordinates must be finite numbers\")}Object.defineProperty(n,\"__esModule\",{value:!0}),n.default=function(e){t(e.x),t(e.y)}},\n", - " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),r=e(71),s=n.__importStar(e(74)),_=n.__importStar(e(18)),a=e(81),o=e(82);class l extends r.View{get coordinates(){return this._coordinates}initialize(){super.initialize(),this.visuals=new s.Visuals(this.model),this.needs_webgl_blit=!1,this._initialize_coordinates()}connect_signals(){super.connect_signals();const{x_range_name:e,y_range_name:i}=this.model.properties;this.on_change([e,i],()=>this._initialize_coordinates())}_initialize_coordinates(){const{x_range_name:e,y_range_name:i}=this.model,{frame:t}=this.plot_view,n=t.x_scales.get(e),r=t.y_scales.get(i);this._coordinates=new o.CoordinateTransform(n,r)}get plot_view(){return this.parent}get plot_model(){return this.parent.model}get layer(){const{overlays:e,primary:i}=this.plot_view.canvas_view;return\"overlay\"==this.model.level?e:i}request_render(){this.plot_view.request_render()}notify_finished(){this.plot_view.notify_finished()}get needs_clip(){return!1}get has_webgl(){return!1}render(){this.model.visible&&this._render(),this._has_finished=!0}}t.RendererView=l,l.__name__=\"RendererView\";class d extends a.Model{constructor(e){super(e)}static init_Renderer(){this.define({level:[_.RenderLevel],visible:[_.Boolean,!0],x_range_name:[_.String,\"default\"],y_range_name:[_.String,\"default\"]})}}t.Renderer=d,d.__name__=\"Renderer\",d.init_Renderer()},\n", - " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),r=t(15),n=t(72),o=t(8),h=i.__importDefault(t(73));class a{constructor(t){if(this.removed=new r.Signal0(this,\"removed\"),this._ready=Promise.resolve(void 0),null==t.model)throw new Error(\"model of a view wasn't configured\");this.model=t.model,this._parent=t.parent}get ready(){return this._ready}connect(t,e){return t.connect((t,s)=>{const i=Promise.resolve(e.call(this,t,s));this._ready=this._ready.then(()=>i)},this)}disconnect(t,e){return t.disconnect(e,this)}initialize(){this._has_finished=!1,this.is_root&&(this._stylesheet=n.stylesheet);for(const t of this.styles())this.stylesheet.append(t)}async lazy_initialize(){}remove(){this._parent=void 0,this.disconnect_signals(),this.removed.emit()}toString(){return`${this.model.type}View(${this.model.id})`}serializable_state(){return{type:this.model.type}}get parent(){if(void 0!==this._parent)return this._parent;throw new Error(\"parent of a view wasn't configured\")}get is_root(){return null===this.parent}get root(){return this.is_root?this:this.parent.root}assert_root(){if(!this.is_root)throw new Error(this.toString()+\" is not a root layout\")}has_finished(){return this._has_finished}get is_idle(){return this.has_finished()}connect_signals(){}disconnect_signals(){r.Signal.disconnectReceiver(this)}on_change(t,e){for(const s of o.isArray(t)?t:[t])this.connect(s.change,e)}cursor(t,e){return null}get stylesheet(){return this.is_root?this._stylesheet:this.root.stylesheet}styles(){return[h.default]}}s.View=a,a.__name__=\"View\"},\n", - " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=t(8),o=t(13),s=t=>(e={},...n)=>{const s=document.createElement(t);s.classList.add(\"bk\");for(let[t,n]of o.entries(e))if(null!=n&&(!i.isBoolean(n)||n))if(\"class\"===t&&(i.isString(n)&&(n=n.split(/\\s+/)),i.isArray(n)))for(const t of n)null!=t&&s.classList.add(t);else if(\"style\"===t&&i.isPlainObject(n))for(const[t,e]of o.entries(n))s.style[t]=e;else if(\"data\"===t&&i.isPlainObject(n))for(const[t,e]of o.entries(n))s.dataset[t]=e;else s.setAttribute(t,n);function l(t){if(i.isString(t))s.appendChild(document.createTextNode(t));else if(t instanceof Node)s.appendChild(t);else if(t instanceof NodeList||t instanceof HTMLCollection)for(const e of t)s.appendChild(e);else if(null!=t&&!1!==t)throw new Error(\"expected a DOM element, string, false or null, got \"+JSON.stringify(t))}for(const t of n)if(i.isArray(t))for(const e of t)l(e);else l(t);return s};function l(t){const e=t.parentNode;null!=e&&e.removeChild(t)}function r(t,...e){const n=t.firstChild;for(const i of e)t.insertBefore(i,n)}function a(t,e){const n=Element.prototype;return(n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector).call(t,e)}function c(t){return parseFloat(t)||0}function h(t){const e=getComputedStyle(t);return{border:{top:c(e.borderTopWidth),bottom:c(e.borderBottomWidth),left:c(e.borderLeftWidth),right:c(e.borderRightWidth)},margin:{top:c(e.marginTop),bottom:c(e.marginBottom),left:c(e.marginLeft),right:c(e.marginRight)},padding:{top:c(e.paddingTop),bottom:c(e.paddingBottom),left:c(e.paddingLeft),right:c(e.paddingRight)}}}function d(t){const e=t.getBoundingClientRect();return{width:Math.ceil(e.width),height:Math.ceil(e.height)}}n.createElement=function(t,e,...n){return s(t)(e,...n)},n.div=s(\"div\"),n.span=s(\"span\"),n.canvas=s(\"canvas\"),n.link=s(\"link\"),n.style=s(\"style\"),n.a=s(\"a\"),n.p=s(\"p\"),n.i=s(\"i\"),n.pre=s(\"pre\"),n.button=s(\"button\"),n.label=s(\"label\"),n.input=s(\"input\"),n.select=s(\"select\"),n.option=s(\"option\"),n.optgroup=s(\"optgroup\"),n.textarea=s(\"textarea\"),n.nbsp=function(){return document.createTextNode(\" \")},n.append=function(t,...e){for(const n of e)t.appendChild(n)},n.remove=l,n.removeElement=l,n.replaceWith=function(t,e){const n=t.parentNode;null!=n&&n.replaceChild(e,t)},n.prepend=r,n.empty=function(t,e=!1){let n;for(;n=t.firstChild;)t.removeChild(n);if(e&&t instanceof Element)for(const e of t.attributes)t.removeAttributeNode(e)},n.display=function(t){t.style.display=\"\"},n.undisplay=function(t){t.style.display=\"none\"},n.show=function(t){t.style.visibility=\"\"},n.hide=function(t){t.style.visibility=\"hidden\"},n.offset=function(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},n.matches=a,n.parent=function(t,e){let n=t;for(;n=n.parentElement;)if(a(n,e))return n;return null},n.extents=h,n.size=d,n.scroll_size=function(t){return{width:Math.ceil(t.scrollWidth),height:Math.ceil(t.scrollHeight)}},n.outer_size=function(t){const{margin:{left:e,right:n,top:i,bottom:o}}=h(t),{width:s,height:l}=d(t);return{width:Math.ceil(s+e+n),height:Math.ceil(l+i+o)}},n.content_size=function(t){const{left:e,top:n}=t.getBoundingClientRect(),{padding:i}=h(t);let o=0,s=0;for(const l of t.children){const t=l.getBoundingClientRect();o=Math.max(o,Math.ceil(t.left-e-i.left+t.width)),s=Math.max(s,Math.ceil(t.top-n-i.top+t.height))}return{width:o,height:s}},n.position=function(t,e,n){const{style:i}=t;if(i.left=e.x+\"px\",i.top=e.y+\"px\",i.width=e.width+\"px\",i.height=e.height+\"px\",null==n)i.margin=\"\";else{const{top:t,right:e,bottom:o,left:s}=n;i.margin=`${t}px ${e}px ${o}px ${s}px`}},n.children=function(t){return Array.from(t.children)};class f{constructor(t){this.el=t,this.classList=t.classList}get values(){const t=[];for(let e=0;e\":\"vertical_wave\",\"*\":\"criss_cross\"};class p{constructor(e,t=\"\"){this.obj=e,this.prefix=t,this.cache={};for(const a of this.attrs)this[a]=e.properties[t+a]}warm_cache(e,t){for(const a of this.attrs){const s=this.obj.properties[this.prefix+a];if(void 0!==s.spec.value)this.cache[a]=s.spec.value;else{if(!(null!=e&&s instanceof c.VectorSpec))throw new Error(\"source is required with a vectorized visual property\");{const l=s.array(e),c=null!=t?t.select(l):l;this.cache[a+\"_array\"]=c}}}}cache_select(e,t){const a=this.obj.properties[this.prefix+e];let s;return void 0!==a.spec.value?this.cache[e]=s=a.spec.value:this.cache[e]=s=this.cache[e+\"_array\"][t],s}get_array(e){return this.cache[e+\"_array\"]}set_vectorize(e,t){this._set_vectorize(e,t)}}a.ContextProperties=p,p.__name__=\"ContextProperties\";class f extends p{set_value(e){const t=this.line_color.value(),a=this.line_alpha.value();e.strokeStyle=n(t,a),e.lineWidth=this.line_width.value(),e.lineJoin=this.line_join.value(),e.lineCap=this.line_cap.value(),e.lineDash=this.line_dash.value(),e.lineDashOffset=this.line_dash_offset.value()}get doit(){return!(null===this.line_color.spec.value||0==this.line_alpha.spec.value||0==this.line_width.spec.value)}_set_vectorize(e,t){const a=this.cache_select(\"line_color\",t),s=this.cache_select(\"line_alpha\",t),l=this.cache_select(\"line_width\",t),c=this.cache_select(\"line_join\",t),i=this.cache_select(\"line_cap\",t),o=this.cache_select(\"line_dash\",t),r=this.cache_select(\"line_dash_offset\",t);e.strokeStyle=n(a,s),e.lineWidth=l,e.lineJoin=c,e.lineCap=i,e.lineDash=o,e.lineDashOffset=r}color_value(){return n(this.line_color.value(),this.line_alpha.value())}}a.Line=f,f.__name__=\"Line\",f.prototype.attrs=Object.keys(l.LineVector);class d extends p{set_value(e){const t=this.fill_color.value(),a=this.fill_alpha.value();e.fillStyle=n(t,a)}get doit(){return!(null===this.fill_color.spec.value||0==this.fill_alpha.spec.value)}_set_vectorize(e,t){const a=this.cache_select(\"fill_color\",t),s=this.cache_select(\"fill_alpha\",t);e.fillStyle=n(a,s)}color_value(){return n(this.fill_color.value(),this.fill_alpha.value())}}a.Fill=d,d.__name__=\"Fill\",d.prototype.attrs=Object.keys(l.FillVector);class k extends p{cache_select(e,t){let s;if(\"pattern\"==e){const e=this.cache_select(\"hatch_color\",t),s=this.cache_select(\"hatch_alpha\",t),l=this.cache_select(\"hatch_scale\",t),c=this.cache_select(\"hatch_pattern\",t),i=this.cache_select(\"hatch_weight\",t),{hatch_extra:o}=this.cache;if(null!=o&&o.hasOwnProperty(c)){const t=o[c];this.cache.pattern=t.get_pattern(e,s,l,i)}else this.cache.pattern=t=>{const o=t instanceof r.SVGRenderingContext2D?\"svg\":\"canvas\",p=new h.CanvasLayer(o,!0);return p.resize(l,l),p.prepare(),function(e,t,s,l,c,i){var o;const r=c,h=r/2,p=h/2;switch(e.strokeStyle=n(s,l),e.lineCap=\"square\",e.fillStyle=s,e.lineWidth=i,null!==(o=a.hatch_aliases[t])&&void 0!==o?o:t){case\"blank\":break;case\"dot\":e.arc(h,h,h/2,0,2*Math.PI,!0),e.fill();break;case\"ring\":e.arc(h,h,h/2,0,2*Math.PI,!0),e.stroke();break;case\"horizontal_line\":_(e,r,h);break;case\"vertical_line\":u(e,r,h);break;case\"cross\":_(e,r,h),u(e,r,h);break;case\"horizontal_dash\":_(e,h,h);break;case\"vertical_dash\":u(e,h,h);break;case\"spiral\":{const t=r/30;e.moveTo(h,h);for(let a=0;a<360;a++){const s=.1*a,l=h+t*s*Math.cos(s),c=h+t*s*Math.sin(s);e.lineTo(l,c)}e.stroke();break}case\"right_diagonal_line\":e.moveTo(.5-p,r),e.lineTo(p+.5,0),e.stroke(),e.moveTo(p+.5,r),e.lineTo(3*p+.5,0),e.stroke(),e.moveTo(3*p+.5,r),e.lineTo(5*p+.5,0),e.stroke(),e.stroke();break;case\"left_diagonal_line\":e.moveTo(p+.5,r),e.lineTo(.5-p,0),e.stroke(),e.moveTo(3*p+.5,r),e.lineTo(p+.5,0),e.stroke(),e.moveTo(5*p+.5,r),e.lineTo(3*p+.5,0),e.stroke(),e.stroke();break;case\"diagonal_cross\":v(e,r);break;case\"right_diagonal_dash\":e.moveTo(p+.5,3*p+.5),e.lineTo(3*p+.5,p+.5),e.stroke();break;case\"left_diagonal_dash\":e.moveTo(p+.5,p+.5),e.lineTo(3*p+.5,3*p+.5),e.stroke();break;case\"horizontal_wave\":e.moveTo(0,p),e.lineTo(h,3*p),e.lineTo(r,p),e.stroke();break;case\"vertical_wave\":e.moveTo(p,0),e.lineTo(3*p,h),e.lineTo(p,r),e.stroke();break;case\"criss_cross\":v(e,r),_(e,r,h),u(e,r,h)}}(p.ctx,c,e,s,l,i),t.createPattern(p.canvas,\"repeat\")}}else s=super.cache_select(e,t);return s}_try_defer(e){const{hatch_pattern:t,hatch_extra:a}=this.cache;if(null!=a&&a.hasOwnProperty(t)){a[t].onload(e)}}get doit(){return!(null===this.hatch_color.spec.value||0==this.hatch_alpha.spec.value||\" \"==this.hatch_pattern.spec.value||\"blank\"==this.hatch_pattern.spec.value||null===this.hatch_pattern.spec.value)}doit2(e,t,a,s){if(!this.doit)return;this.cache_select(\"pattern\",t);null==this.cache.pattern(e)?this._try_defer(s):(this.set_vectorize(e,t),a())}_set_vectorize(e,t){this.cache_select(\"pattern\",t),e.fillStyle=this.cache.pattern(e)}color_value(){return n(this.hatch_color.value(),this.hatch_alpha.value())}}a.Hatch=k,k.__name__=\"Hatch\",k.prototype.attrs=Object.keys(l.HatchVector);class x extends p{color_value(){return n(this.text_color.value(),this.text_alpha.value())}font_value(){const e=this.text_font.value(),t=this.text_font_size.value();return`${this.text_font_style.value()} ${t} ${e}`}v_font_value(e){super.cache_select(\"text_font_style\",e),super.cache_select(\"text_font_size\",e),super.cache_select(\"text_font\",e);const{text_font_style:t,text_font_size:a,text_font:s}=this.cache;return`${t} ${a} ${s}`}cache_select(e,t){let a;return\"font\"==e?this.cache.font=a=this.v_font_value(t):a=super.cache_select(e,t),a}set_value(e){const t=this.text_color.value(),a=this.text_alpha.value();e.fillStyle=n(t,a),e.font=this.font_value(),e.textAlign=this.text_align.value(),e.textBaseline=this.text_baseline.value()}get doit(){return!(null===this.text_color.spec.value||0==this.text_alpha.spec.value)}_set_vectorize(e,t){const a=this.cache_select(\"text_color\",t),s=this.cache_select(\"text_alpha\",t),l=this.cache_select(\"font\",t),c=this.cache_select(\"text_align\",t),i=this.cache_select(\"text_baseline\",t);e.fillStyle=n(a,s),e.font=l,e.textAlign=c,e.textBaseline=i}}a.Text=x,x.__name__=\"Text\",x.prototype.attrs=Object.keys(l.TextVector);class b{constructor(e){for(const t of e._mixins){const[a,s=\"\"]=t.split(\":\");let l;switch(a){case\"line\":l=f;break;case\"fill\":l=d;break;case\"hatch\":l=k;break;case\"text\":l=x;break;default:throw new Error(\"unknown visual: \"+a)}this[s+a]=new l(e,s)}}warm_cache(e,t){for(const a in this)if(this.hasOwnProperty(a)){const s=this[a];s instanceof p&&s.warm_cache(e,t)}}}a.Visuals=b,b.__name__=\"Visuals\"},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(76),n=t(8),r=t(72);function a(t){if(!t)throw new Error(\"cannot create a random attribute name for an undefined object\");const e=\"ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\";let i=\"\";do{i=\"\";for(let t=0;t<12;t++)i+=e[Math.floor(Math.random()*e.length)]}while(t[i]);return i}function o(t){const e={left:\"start\",right:\"end\",center:\"middle\",start:\"start\",end:\"end\"};return e[t]||e.start}function l(t){const e={alphabetic:\"alphabetic\",hanging:\"hanging\",top:\"text-before-edge\",bottom:\"text-after-edge\",middle:\"central\"};return e[t]||e.alphabetic}const h=function(t,e){const i=new Map,s=t.split(\",\");e=e||10;for(let t=0;t=0?Math.acos(e):-Math.acos(e)}const b=w(f),v=w(g);this.lineTo(d+f[0]*n,m+f[1]*n),this.arc(d,m,n,b,v)}stroke(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"fill\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"stroke\"),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}fill(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"stroke\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"fill\"),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}rect(t,e,i,s){isFinite(t+e+i+s)&&(\"path\"!==this.__currentElement.nodeName&&this.beginPath(),this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+s),this.lineTo(t,e+s),this.lineTo(t,e))}fillRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.fill())}strokeRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.stroke())}__clearCanvas(){r.empty(this.__defs),r.empty(this.__root),this.__root.appendChild(this.__defs),this.__currentElement=this.__root}clearRect(t,e,i,s){if(!isFinite(t+e+i+s))return;if(0===t&&0===e&&i===this.width&&s===this.height)return void this.__clearCanvas();const n=this.__createElement(\"rect\",{x:t,y:e,width:i,height:s,fill:\"#FFFFFF\"},!0);this._apply_transform(n),this.__root.appendChild(n)}createLinearGradient(t,e,i,s){if(!isFinite(t+e+i+s))throw new Error(\"The provided double value is non-finite\");const[n,r]=this._transform.apply(t,e),[o,l]=this._transform.apply(i,s),h=this.__createElement(\"linearGradient\",{id:a(this.__ids),x1:n+\"px\",x2:o+\"px\",y1:r+\"px\",y2:l+\"px\",gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(h),new _(h,this)}createRadialGradient(t,e,i,s,n,r){if(!isFinite(t+e+i+s+n+r))throw new Error(\"The provided double value is non-finite\");const[o,l]=this._transform.apply(t,e),[h,c]=this._transform.apply(s,n),u=this.__createElement(\"radialGradient\",{id:a(this.__ids),cx:h+\"px\",cy:c+\"px\",r:r+\"px\",fx:o+\"px\",fy:l+\"px\",gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(u),new _(u,this)}__parseFont(){const t=/^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-,\\'\\\"\\sa-z0-9]+?)\\s*$/i.exec(this.font),e={style:t[1]||\"normal\",size:t[4]||\"10px\",family:t[6]||\"sans-serif\",weight:t[3]||\"normal\",decoration:t[2]||\"normal\"};return\"underline\"===this.__fontUnderline&&(e.decoration=\"underline\"),null!=this.__fontHref&&(e.href=this.__fontHref),e}__wrapTextLink(t,e){if(t.href){const i=this.__createElement(\"a\");return i.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",t.href),i.appendChild(e),i}return e}__applyText(t,e,i,s){const n=this.__parseFont(),r=this.__createElement(\"text\",{\"font-family\":n.family,\"font-size\":n.size,\"font-style\":n.style,\"font-weight\":n.weight,\"text-decoration\":n.decoration,x:e,y:i,\"text-anchor\":o(this.textAlign),\"dominant-baseline\":l(this.textBaseline)},!0);r.appendChild(this.__document.createTextNode(t)),this._apply_transform(r),this.__currentElement=r,this.__applyStyleToCurrentElement(s),this.__root.appendChild(this.__wrapTextLink(n,r))}fillText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"fill\")}strokeText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"stroke\")}measureText(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)}arc(t,e,i,s,n,r=!1){if(!isFinite(t+e+i+s+n))return;if(s===n)return;(s%=2*Math.PI)===(n%=2*Math.PI)&&(n=(n+2*Math.PI-.001*(r?-1:1))%(2*Math.PI));const a=t+i*Math.cos(n),o=e+i*Math.sin(n),l=t+i*Math.cos(s),h=e+i*Math.sin(s),c=r?0:1;let _=0,u=n-s;u<0&&(u+=2*Math.PI),_=r?u>Math.PI?0:1:u>Math.PI?1:0,this.lineTo(l,h);const p=i,d=i,[m,f]=this._transform.apply(a,o);this.__addPathCommand(m,f,`A ${p} ${d} 0 ${_} ${c} ${m} ${f}`)}clip(){const t=this.__createElement(\"clipPath\"),e=a(this.__ids);this.__applyCurrentDefaultPath(),t.setAttribute(\"id\",e),t.appendChild(this.__currentElement),this.__defs.appendChild(t),this._clip_path=`url(#${e})`}drawImage(t,...e){let i,s,n,r,a,o,l,h;if(2==e.length){if([i,s]=e,!isFinite(i+s))return;a=0,o=0,l=t.width,h=t.height,n=l,r=h}else if(4==e.length){if([i,s,n,r]=e,!isFinite(i+s+n+r))return;a=0,o=0,l=t.width,h=t.height}else{if(8!==e.length)throw new Error(\"Inavlid number of arguments passed to drawImage: \"+arguments.length);if([a,o,l,h,i,s,n,r]=e,!isFinite(a+o+l+h+i+s+n+r))return}const c=this.__root,_=\"translate(\"+i+\", \"+s+\")\",u=this._transform.clone().translate(i,s);if(t instanceof p||t instanceof SVGSVGElement){const e=(t instanceof SVGSVGElement?t:t.get_svg()).cloneNode(!0);let i;u.is_identity?i=c:(i=this.__createElement(\"g\"),this._apply_transform(i,u),c.appendChild(i));for(const t of[...e.childNodes])if(t instanceof SVGDefsElement){for(const e of[...t.childNodes])if(e instanceof Element){const t=e.getAttribute(\"id\");this.__ids[t]=t,this.__defs.appendChild(e)}}else i.appendChild(t)}else if(t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__createElement(\"image\");if(e.setAttribute(\"width\",\"\"+n),e.setAttribute(\"height\",\"\"+r),e.setAttribute(\"preserveAspectRatio\",\"none\"),a||o||l!==t.width||h!==t.height){const e=this.__document.createElement(\"canvas\");e.width=n,e.height=r;e.getContext(\"2d\").drawImage(t,a,o,l,h,0,0,n,r),t=e}e.setAttribute(\"transform\",_);const i=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",i),c.appendChild(e)}else if(t instanceof HTMLCanvasElement){const e=this.__createElement(\"image\");e.setAttribute(\"width\",\"\"+n),e.setAttribute(\"height\",\"\"+r),e.setAttribute(\"preserveAspectRatio\",\"none\");const i=this.__document.createElement(\"canvas\");i.width=n,i.height=r;const s=i.getContext(\"2d\");s.imageSmoothingEnabled=!1,s.drawImage(t,a,o,l,h,0,0,n,r),t=i,e.setAttribute(\"transform\",_),e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",t.toDataURL()),c.appendChild(e)}}createPattern(t,e){const i=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"pattern\"),s=a(this.__ids);if(i.setAttribute(\"id\",s),i.setAttribute(\"width\",\"\"+this._to_number(t.width)),i.setAttribute(\"height\",\"\"+this._to_number(t.height)),i.setAttribute(\"patternUnits\",\"userSpaceOnUse\"),t instanceof HTMLCanvasElement||t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"image\"),s=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",s),i.appendChild(e),this.__defs.appendChild(i)}else if(t instanceof p){for(const e of[...t.__root.childNodes])e instanceof SVGDefsElement||i.appendChild(e);this.__defs.appendChild(i)}else{if(!(t instanceof SVGSVGElement))throw new Error(\"unsupported\");for(const e of[...t.childNodes])e instanceof SVGDefsElement||i.appendChild(e);this.__defs.appendChild(i)}return new u(i,this)}setLineDash(t){t&&t.length>0?this.lineDash=t.join(\",\"):this.lineDash=null}_to_number(t){return n.isNumber(t)?t:t.baseVal.value}}i.SVGRenderingContext2D=p,p.__name__=\"SVGRenderingContext2D\"},\n", - " function _(t,s,r){Object.defineProperty(r,\"__esModule\",{value:!0});const{sin:e,cos:n}=Math;class i{constructor(t=1,s=0,r=0,e=1,n=0,i=0){this.a=t,this.b=s,this.c=r,this.d=e,this.e=n,this.f=i}toString(){const{a:t,b:s,c:r,d:e,e:n,f:i}=this;return`matrix(${t}, ${s}, ${r}, ${e}, ${n}, ${i})`}clone(){const{a:t,b:s,c:r,d:e,e:n,f:a}=this;return new i(t,s,r,e,n,a)}get is_identity(){const{a:t,b:s,c:r,d:e,e:n,f:i}=this;return 1==t&&0==s&&0==r&&1==e&&0==n&&0==i}apply(t,s){const{a:r,b:e,c:n,d:i,e:a,f:h}=this;return[r*t+n*s+a,e*t+i*s+h]}iv_apply(t,s){const{a:r,b:e,c:n,d:i,e:a,f:h}=this,c=t.length;for(let o=0;o{const e=document.createElement(\"canvas\"),t=e.getContext(\"webgl\",{premultipliedAlpha:!0});return null!=t?{canvas:e,gl:t}:void l.logger.trace(\"WebGL is not supported\")})(),v={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class b{constructor(e,t){switch(this.backend=e,this.hidpi=t,this.pixel_ratio=1,this.bbox=new c.BBox,e){case\"webgl\":case\"canvas\":{this._el=this._canvas=r.canvas({style:v});const e=this.canvas.getContext(\"2d\");if(null==e)throw new Error(\"unable to obtain 2D rendering context\");this._ctx=e,t&&(this.pixel_ratio=devicePixelRatio);break}case\"svg\":{const e=new d.SVGRenderingContext2D;this._ctx=e,this._canvas=e.get_svg(),this._el=r.div({style:v},this._canvas);break}}_.fixup_ctx(this._ctx)}get canvas(){return this._canvas}get ctx(){return this._ctx}get el(){return this._el}resize(e,t){this.bbox=new c.BBox({left:0,top:0,width:e,height:t});const i=this._ctx instanceof d.SVGRenderingContext2D?this._ctx:this.canvas;i.width=e*this.pixel_ratio,i.height=t*this.pixel_ratio}prepare(){const{ctx:e,hidpi:t,pixel_ratio:i}=this;e.save(),t&&(e.scale(i,i),e.translate(.5,.5)),this.clear()}clear(){const{x:e,y:t,width:i,height:s}=this.bbox;this.ctx.clearRect(e,t,i,s)}finish(){this.ctx.restore()}to_blob(){const{_canvas:e}=this;if(e instanceof HTMLCanvasElement)return null!=e.msToBlob?Promise.resolve(e.msToBlob()):new Promise((t,i)=>{e.toBlob(e=>null!=e?t(e):i(),\"image/png\")});{const e=this._ctx.get_serialized_svg(!0),t=new Blob([e],{type:\"image/svg+xml\"});return Promise.resolve(t)}}}i.CanvasLayer=b,b.__name__=\"CanvasLayer\";class g extends n.DOMView{constructor(){super(...arguments),this.bbox=new c.BBox}initialize(){super.initialize();const{output_backend:e,hidpi:t}=this.model;\"webgl\"==e&&(this.webgl=p),this.underlays_el=r.div({style:v}),this.primary=new b(e,t),this.overlays=new b(e,t),this.overlays_el=r.div({style:v}),this.events_el=r.div({class:\"bk-canvas-events\",style:v});const i=[this.underlays_el,this.primary.el,this.overlays.el,this.overlays_el,this.events_el];h.extend(this.el.style,v),r.append(this.el,...i),l.logger.debug(\"CanvasView initialized\")}add_underlay(e){this.underlays_el.appendChild(e)}add_overlay(e){this.overlays_el.appendChild(e)}add_event(e){this.events_el.appendChild(e)}get pixel_ratio(){return this.primary.pixel_ratio}resize(e,t){this.bbox=new c.BBox({left:0,top:0,width:e,height:t}),this.primary.resize(e,t),this.overlays.resize(e,t)}prepare_webgl(e){const{webgl:t}=this;if(null!=t){const{width:i,height:s}=this.bbox;t.canvas.width=this.pixel_ratio*i,t.canvas.height=this.pixel_ratio*s;const{gl:a}=t;a.enable(a.SCISSOR_TEST);const[n,l,o,r]=e,{xview:h,yview:c}=this.bbox,_=h.compute(n),d=c.compute(l+r),p=this.pixel_ratio;a.scissor(p*_,p*d,p*o,p*r),a.enable(a.BLEND),a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,a.ONE_MINUS_DST_ALPHA,a.ONE)}}clear_webgl(){const{webgl:e}=this;if(null!=e){const{gl:t,canvas:i}=e;t.viewport(0,0,i.width,i.height),t.clearColor(0,0,0,0),t.clear(t.COLOR_BUFFER_BIT||t.DEPTH_BUFFER_BIT)}}blit_webgl(e){const{webgl:t}=this;if(null!=t&&(l.logger.debug(\"Blitting WebGL canvas\"),e.restore(),e.drawImage(t.canvas,0,0),e.save(),this.model.hidpi)){const t=this.pixel_ratio;e.scale(t,t),e.translate(.5,.5)}}compose(){const{output_backend:e,hidpi:t}=this.model,{width:i,height:s}=this.bbox,a=new b(e,t);return a.resize(i,s),a.ctx.drawImage(this.primary.canvas,0,0),a.ctx.drawImage(this.overlays.canvas,0,0),a}to_blob(){return this.compose().to_blob()}}i.CanvasView=g,g.__name__=\"CanvasView\";class x extends a.HasProps{constructor(e){super(e)}static init_Canvas(){this.prototype.default_view=g,this.internal({hidpi:[o.Boolean,!0],output_backend:[o.OutputBackend,\"canvas\"]})}}i.Canvas=x,x.__name__=\"Canvas\",x.init_Canvas()},\n", - " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(71),r=e(72);class n extends i.View{initialize(){super.initialize(),this.el=this._createElement()}remove(){r.remove(this.el),super.remove()}css_classes(){return[]}render(){}renderTo(e){e.appendChild(this.el),this.render()}_createElement(){return r.createElement(this.tagName,{class:this.css_classes()})}}t.DOMView=n,n.__name__=\"DOMView\",n.prototype.tagName=\"div\"},\n", - " function _(t,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const h=t(24),{min:r,max:s}=Math;e.empty=function(){return{x0:1/0,y0:1/0,x1:-1/0,y1:-1/0}},e.positive_x=function(){return{x0:Number.MIN_VALUE,y0:-1/0,x1:1/0,y1:1/0}},e.positive_y=function(){return{x0:-1/0,y0:Number.MIN_VALUE,x1:1/0,y1:1/0}},e.union=function(t,i){return{x0:r(t.x0,i.x0),x1:s(t.x1,i.x1),y0:r(t.y0,i.y0),y1:s(t.y1,i.y1)}};class n{constructor(t){if(null==t)this.x0=0,this.y0=0,this.x1=0,this.y1=0;else if(\"x0\"in t){const{x0:i,y0:e,x1:h,y1:r}=t;if(!(i<=h&&e<=r))throw new Error(`invalid bbox {x0: ${i}, y0: ${e}, x1: ${h}, y1: ${r}}`);this.x0=i,this.y0=e,this.x1=h,this.y1=r}else if(\"x\"in t){const{x:i,y:e,width:h,height:r}=t;if(!(h>=0&&r>=0))throw new Error(`invalid bbox {x: ${i}, y: ${e}, width: ${h}, height: ${r}}`);this.x0=i,this.y0=e,this.x1=i+h,this.y1=e+r}else{let i,e,h,r;if(\"width\"in t)if(\"left\"in t)i=t.left,e=i+t.width;else if(\"right\"in t)e=t.right,i=e-t.width;else{const h=t.width/2;i=t.hcenter-h,e=t.hcenter+h}else i=t.left,e=t.right;if(\"height\"in t)if(\"top\"in t)h=t.top,r=h+t.height;else if(\"bottom\"in t)r=t.bottom,h=r-t.height;else{const i=t.height/2;h=t.vcenter-i,r=t.vcenter+i}else h=t.top,r=t.bottom;if(!(i<=e&&h<=r))throw new Error(`invalid bbox {left: ${i}, top: ${h}, right: ${e}, bottom: ${r}}`);this.x0=i,this.y0=h,this.x1=e,this.y1=r}}toString(){return`BBox({left: ${this.left}, top: ${this.top}, width: ${this.width}, height: ${this.height}})`}get left(){return this.x0}get top(){return this.y0}get right(){return this.x1}get bottom(){return this.y1}get p0(){return[this.x0,this.y0]}get p1(){return[this.x1,this.y1]}get x(){return this.x0}get y(){return this.y0}get width(){return this.x1-this.x0}get height(){return this.y1-this.y0}get rect(){return{x0:this.x0,y0:this.y0,x1:this.x1,y1:this.y1}}get box(){return{x:this.x,y:this.y,width:this.width,height:this.height}}get h_range(){return{start:this.x0,end:this.x1}}get v_range(){return{start:this.y0,end:this.y1}}get ranges(){return[this.h_range,this.v_range]}get aspect(){return this.width/this.height}get hcenter(){return(this.left+this.right)/2}get vcenter(){return(this.top+this.bottom)/2}relativize(){const{width:t,height:i}=this;return new n({x:0,y:0,width:t,height:i})}contains(t,i){return t>=this.x0&&t<=this.x1&&i>=this.y0&&i<=this.y1}clip(t,i){return tthis.x1&&(t=this.x1),ithis.y1&&(i=this.y1),[t,i]}union(t){return new n({x0:r(this.x0,t.x0),y0:r(this.y0,t.y0),x1:s(this.x1,t.x1),y1:s(this.y1,t.y1)})}equals(t){return this.x0==t.x0&&this.y0==t.y0&&this.x1==t.x1&&this.y1==t.y1}get xview(){return{compute:t=>this.left+t,v_compute:t=>{const i=new h.NumberArray(t.length),e=this.left;for(let h=0;hthis.bottom-t,v_compute:t=>{const i=new h.NumberArray(t.length),e=this.bottom;for(let h=0;he.getLineDash(),set:t=>e.setLineDash(t)})}(e),function(e){e.setImageSmoothingEnabled=t=>{e.imageSmoothingEnabled=t,e.mozImageSmoothingEnabled=t,e.oImageSmoothingEnabled=t,e.webkitImageSmoothingEnabled=t,e.msImageSmoothingEnabled=t},e.getImageSmoothingEnabled=()=>{const t=e.imageSmoothingEnabled;return null==t||t}}(e),function(e){e.measureText&&null==e.html5MeasureText&&(e.html5MeasureText=e.measureText,e.measureText=t=>{const n=e.html5MeasureText(t);return n.ascent=1.6*e.html5MeasureText(\"m\").width,n})}(e),function(e){e.ellipse||(e.ellipse=function(t,n,o,a,i,l,m,r=!1){const u=.551784;e.translate(t,n),e.rotate(i);let s=o,g=a;r&&(s=-o,g=-a),e.moveTo(-s,0),e.bezierCurveTo(-s,g*u,-s*u,g,0,g),e.bezierCurveTo(s*u,g,s,g*u,s,0),e.bezierCurveTo(s,-g*u,s*u,-g,0,-g),e.bezierCurveTo(-s*u,-g,-s,-g*u,-s,0),e.rotate(-i),e.translate(-t,-n)})}(e)}},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(1),c=e(14),i=n.__importStar(e(18)),a=e(8),r=e(13),o=e(19);class l extends c.HasProps{constructor(e){super(e)}static init_Model(){this.define({tags:[i.Array,[]],name:[i.String],js_property_callbacks:[i.Any,{}],js_event_callbacks:[i.Any,{}],subscribed_events:[i.Array,[]]})}initialize(){super.initialize(),this._js_callbacks=new Map}connect_signals(){super.connect_signals(),this._update_property_callbacks(),this.connect(this.properties.js_property_callbacks.change,()=>this._update_property_callbacks()),this.connect(this.properties.js_event_callbacks.change,()=>this._update_event_callbacks()),this.connect(this.properties.subscribed_events.change,()=>this._update_event_callbacks())}_process_event(e){for(const t of this.js_event_callbacks[e.event_name]||[])t.execute(e);null!=this.document&&this.subscribed_events.some(t=>t==e.event_name)&&this.document.event_manager.send_event(e)}trigger_event(e){null!=this.document&&(e.origin=this,this.document.event_manager.trigger(e))}_update_event_callbacks(){null!=this.document?this.document.event_manager.subscribed_models.add(this):o.logger.warn(\"WARNING: Document not defined for updating event callbacks\")}_update_property_callbacks(){const e=e=>{const[t,s=null]=e.split(\":\");return null!=s?this.properties[s][t]:this[t]};for(const[t,s]of this._js_callbacks){const n=e(t);for(const e of s)this.disconnect(n,e)}this._js_callbacks.clear();for(const[t,s]of r.entries(this.js_property_callbacks)){const n=s.map(e=>()=>e.execute(this));this._js_callbacks.set(t,n);const c=e(t);for(const e of n)this.connect(c,e)}}_doc_attached(){r.isEmpty(this.js_event_callbacks)&&0==this.subscribed_events.length||this._update_event_callbacks()}_doc_detached(){this.document.event_manager.subscribed_models.delete(this)}select(e){if(a.isString(e))return[...this.references()].filter(t=>t instanceof l&&t.name===e);if(e.prototype instanceof c.HasProps)return[...this.references()].filter(t=>t instanceof e);throw new Error(\"invalid selector\")}select_one(e){const t=this.select(e);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(\"found more than one object matching given selector\")}}}s.Model=l,l.__name__=\"Model\",l.init_Model()},\n", - " function _(e,s,_){Object.defineProperty(_,\"__esModule\",{value:!0});class t{constructor(e,s){this.x_scale=e,this.y_scale=s,this.x_range=this.x_scale.source_range,this.y_range=this.y_scale.source_range,this.ranges=[this.x_range,this.y_range],this.scales=[this.x_scale,this.y_scale]}map_to_screen(e,s){return[this.x_scale.v_compute(e),this.y_scale.v_compute(s)]}map_from_screen(e,s){return[this.x_scale.v_invert(e),this.y_scale.v_invert(s)]}}_.CoordinateTransform=t,t.__name__=\"CoordinateTransform\"},\n", - " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),a=t(36),o=t(84),r=t(85),n=t(28),_=i.__importStar(t(18)),h=t(10);class c extends a.AnnotationView{initialize(){super.initialize(),null==this.model.source&&(this.model.source=new r.ColumnDataSource),this.set_data(this.model.source)}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.set_data(this.model.source)),this.connect(this.model.source.streaming,()=>this.set_data(this.model.source)),this.connect(this.model.source.patching,()=>this.set_data(this.model.source)),this.connect(this.model.source.change,()=>this.set_data(this.model.source))}set_data(t){super.set_data(t),this.visuals.warm_cache(t),this.plot_view.request_render()}_map_data(){const{frame:t}=this.plot_view;let e,s,i,a;return\"data\"==this.model.start_units?(e=this.coordinates.x_scale.v_compute(this._x_start),s=this.coordinates.y_scale.v_compute(this._y_start)):(e=t.xview.v_compute(this._x_start),s=t.yview.v_compute(this._y_start)),\"data\"==this.model.end_units?(i=this.coordinates.x_scale.v_compute(this._x_end),a=this.coordinates.y_scale.v_compute(this._y_end)):(i=t.xview.v_compute(this._x_end),a=t.yview.v_compute(this._y_end)),[[e,s],[i,a]]}_render(){const{ctx:t}=this.layer;t.save();const[e,s]=this._map_data();null!=this.model.end&&this._arrow_head(t,\"render\",this.model.end,e,s),null!=this.model.start&&this._arrow_head(t,\"render\",this.model.start,s,e),t.beginPath();const{x:i,y:a,width:o,height:r}=this.plot_view.frame.bbox;t.rect(i,a,o,r),null!=this.model.end&&this._arrow_head(t,\"clip\",this.model.end,e,s),null!=this.model.start&&this._arrow_head(t,\"clip\",this.model.start,s,e),t.closePath(),t.clip(),this._arrow_body(t,e,s),t.restore()}_arrow_head(t,e,s,i,a){for(let o=0,r=this._x_start.length;onew o.OpenHead({})],source:[_.Instance]})}}s.Arrow=d,d.__name__=\"Arrow\",d.init_Arrow()},\n", - " function _(i,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=i(1),o=i(36),l=i(74),n=i(28),h=t.__importStar(i(18));class a extends o.Annotation{constructor(i){super(i)}static init_ArrowHead(){this.define({size:[h.Number,25]})}initialize(){super.initialize(),this.visuals=new l.Visuals(this)}}s.ArrowHead=a,a.__name__=\"ArrowHead\",a.init_ArrowHead();class r extends a{constructor(i){super(i)}static init_OpenHead(){this.mixins(n.LineVector)}clip(i,e){this.visuals.line.set_vectorize(i,e),i.moveTo(.5*this.size,this.size),i.lineTo(.5*this.size,-2),i.lineTo(-.5*this.size,-2),i.lineTo(-.5*this.size,this.size),i.lineTo(0,0),i.lineTo(.5*this.size,this.size)}render(i,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),i.beginPath(),i.moveTo(.5*this.size,this.size),i.lineTo(0,0),i.lineTo(-.5*this.size,this.size),i.stroke())}}s.OpenHead=r,r.__name__=\"OpenHead\",r.init_OpenHead();class z extends a{constructor(i){super(i)}static init_NormalHead(){this.mixins([n.LineVector,n.FillVector]),this.override({fill_color:\"black\"})}clip(i,e){this.visuals.line.set_vectorize(i,e),i.moveTo(.5*this.size,this.size),i.lineTo(.5*this.size,-2),i.lineTo(-.5*this.size,-2),i.lineTo(-.5*this.size,this.size),i.lineTo(.5*this.size,this.size)}render(i,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(i,e),this._normal(i,e),i.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),this._normal(i,e),i.stroke())}_normal(i,e){i.beginPath(),i.moveTo(.5*this.size,this.size),i.lineTo(0,0),i.lineTo(-.5*this.size,this.size),i.closePath()}}s.NormalHead=z,z.__name__=\"NormalHead\",z.init_NormalHead();class _ extends a{constructor(i){super(i)}static init_VeeHead(){this.mixins([n.LineVector,n.FillVector]),this.override({fill_color:\"black\"})}clip(i,e){this.visuals.line.set_vectorize(i,e),i.moveTo(.5*this.size,this.size),i.lineTo(.5*this.size,-2),i.lineTo(-.5*this.size,-2),i.lineTo(-.5*this.size,this.size),i.lineTo(0,.5*this.size),i.lineTo(.5*this.size,this.size)}render(i,e){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(i,e),this._vee(i,e),i.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),this._vee(i,e),i.stroke())}_vee(i,e){i.beginPath(),i.moveTo(.5*this.size,this.size),i.lineTo(0,0),i.lineTo(-.5*this.size,this.size),i.lineTo(0,.5*this.size),i.closePath()}}s.VeeHead=_,_.__name__=\"VeeHead\",_.init_VeeHead();class c extends a{constructor(i){super(i)}static init_TeeHead(){this.mixins(n.LineVector)}render(i,e){this.visuals.line.doit&&(this.visuals.line.set_vectorize(i,e),i.beginPath(),i.moveTo(.5*this.size,0),i.lineTo(-.5*this.size,0),i.stroke())}clip(i,e){}}s.TeeHead=c,c.__name__=\"TeeHead\",c.init_TeeHead()},\n", - " function _(t,n,e){Object.defineProperty(e,\"__esModule\",{value:!0});const s=t(1),o=t(86),r=s.__importStar(t(18)),i=t(8),l=t(13),a=s.__importStar(t(119)),c=t(120),u=t(121);function h(t,n,e){if(i.isArray(t)){const s=t.concat(n);return null!=e&&s.length>e?s.slice(-e):s}if(i.isTypedArray(t)){const s=t.length+n.length;if(null!=e&&s>e){const o=s-e,r=t.length;let i;t.lengthnew _.UnionRenderers]}),this.internal({selection_manager:[c.Instance,t=>new l.SelectionManager({source:t})],inspected:[c.Instance,()=>new g.Selection]})}initialize(){super.initialize(),this._select=new i.Signal0(this,\"select\"),this.inspect=new i.Signal(this,\"inspect\"),this.streaming=new i.Signal0(this,\"streaming\"),this.patching=new i.Signal(this,\"patching\")}get_column(t){const e=this.data[t];return null!=e?e:null}columns(){return h.keys(this.data)}get_length(t=!0){const e=u.uniq(h.values(this.data).map(t=>t.length));switch(e.length){case 0:return null;case 1:return e[0];default:{const n=\"data source has columns of inconsistent lengths\";if(t)return r.logger.warn(n),e.sort()[0];throw new Error(n)}}}get length(){var t;return null!==(t=this.get_length())&&void 0!==t?t:0}clear(){const t={};for(const e of this.columns())t[e]=new this.data[e].constructor(0);this.data=t}}n.ColumnarDataSource=d,d.__name__=\"ColumnarDataSource\",d.init_ColumnarDataSource()},\n", - " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const c=e(1),n=e(81),o=e(88),i=c.__importStar(e(18));class r extends n.Model{constructor(e){super(e)}static init_DataSource(){this.define({selected:[i.Instance,()=>new o.Selection]})}}a.DataSource=r,r.__name__=\"DataSource\",r.init_DataSource()},\n", - " function _(i,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=i(1),n=i(81),l=t.__importStar(i(18)),c=i(9),h=i(13);class d extends n.Model{constructor(i){super(i)}get_view(){return this.view}static init_Selection(){this.define({indices:[l.Array,[]],line_indices:[l.Array,[]],multiline_indices:[l.Any,{}]}),this.internal({selected_glyphs:[l.Array,[]],view:[l.Any],image_indices:[l.Array,[]]})}initialize(){super.initialize()}get selected_glyph(){return this.selected_glyphs.length>0?this.selected_glyphs[0]:null}add_to_selected_glyphs(i){this.selected_glyphs.push(i)}update(i,e=!0,s=\"replace\"){switch(s){case\"replace\":this.indices=i.indices,this.line_indices=i.line_indices,this.selected_glyphs=i.selected_glyphs,this.view=i.view,this.multiline_indices=i.multiline_indices,this.image_indices=i.image_indices;break;case\"append\":this.update_through_union(i);break;case\"intersect\":this.update_through_intersection(i);break;case\"subtract\":this.update_through_subtraction(i)}}clear(){this.indices=[],this.line_indices=[],this.multiline_indices={},this.view=null,this.selected_glyphs=[]}is_empty(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length}update_through_union(i){this.indices=c.union(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}update_through_intersection(i){this.indices=c.intersection(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}update_through_subtraction(i){this.indices=c.difference(this.indices,i.indices),this.selected_glyphs=c.union(i.selected_glyphs,this.selected_glyphs),this.line_indices=c.union(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=h.merge(i.multiline_indices,this.multiline_indices)}}s.Selection=d,d.__name__=\"Selection\",d.init_Selection()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),n=e(14),o=e(88),c=e(90),r=e(116),l=i.__importStar(e(18));class p extends n.HasProps{constructor(e){super(e),this.inspectors=new Map}static init_SelectionManager(){this.internal({source:[l.Any]})}select(e,t,s,i=\"replace\"){const n=[],o=[];for(const t of e)t instanceof c.GlyphRendererView?n.push(t):t instanceof r.GraphRendererView&&o.push(t);let l=!1;for(const e of o){const n=e.model.selection_policy.hit_test(t,e);l=l||e.model.selection_policy.do_selection(n,e.model,s,i)}if(n.length>0){const e=this.source.selection_policy.hit_test(t,n);l=l||this.source.selection_policy.do_selection(e,this.source,s,i)}return l}inspect(e,t){let s=!1;if(e instanceof c.GlyphRendererView){const i=e.hit_test(t);if(null!=i){s=!i.is_empty();const n=this.get_or_create_inspector(e.model);n.update(i,!0,\"replace\"),this.source.setv({inspected:n},{silent:!0}),this.source.inspect.emit([e,{geometry:t}])}}else if(e instanceof r.GraphRendererView){const i=e.model.inspection_policy.hit_test(t,e);s=s||e.model.inspection_policy.do_inspection(i,t,e,!1,\"replace\")}return s}clear(e){this.source.selected.clear(),null!=e&&this.get_or_create_inspector(e.model).clear()}get_or_create_inspector(e){let t=this.inspectors.get(e);return null==t&&(t=new o.Selection,this.inspectors.set(e,t)),t}}s.SelectionManager=p,p.__name__=\"SelectionManager\",p.init_SelectionManager()},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),l=e(91),n=e(92),h=e(110),o=e(111),a=e(113),c=e(114),_=e(24),d=s.__importStar(e(18)),r=e(12),p=e(9),g=e(13),u=e(115),y=e(98),m={fill:{},line:{}},v={fill:{fill_alpha:.3,fill_color:\"grey\"},line:{line_alpha:.3,line_color:\"grey\"}},f={fill:{fill_alpha:.2},line:{}};class w extends l.DataRendererView{async lazy_initialize(){await super.lazy_initialize();const e=this.model.glyph,t=p.includes(e._mixins,\"fill\"),i=p.includes(e._mixins,\"line\"),s=g.clone(e.attributes);function l(l){const n=g.clone(s);return t&&g.extend(n,l.fill),i&&g.extend(n,l.line),new e.constructor(n)}delete s.id,this.glyph=await this.build_glyph_view(e);let{selection_glyph:n}=this.model;null==n?n=l({fill:{},line:{}}):\"auto\"===n&&(n=l(m)),this.selection_glyph=await this.build_glyph_view(n);let{nonselection_glyph:h}=this.model;null==h?h=l({fill:{},line:{}}):\"auto\"===h&&(h=l(f)),this.nonselection_glyph=await this.build_glyph_view(h);const{hover_glyph:o}=this.model;null!=o&&(this.hover_glyph=await this.build_glyph_view(o));const{muted_glyph:a}=this.model;null!=a&&(this.muted_glyph=await this.build_glyph_view(a));const c=l(v);this.decimated_glyph=await this.build_glyph_view(c),this.set_data(!1)}async build_glyph_view(e){return u.build_view(e,{parent:this})}remove(){var e,t;this.glyph.remove(),this.selection_glyph.remove(),this.nonselection_glyph.remove(),null===(e=this.hover_glyph)||void 0===e||e.remove(),null===(t=this.muted_glyph)||void 0===t||t.remove(),this.decimated_glyph.remove(),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.request_render()),this.connect(this.model.glyph.change,()=>this.set_data()),this.connect(this.model.data_source.change,()=>this.set_data()),this.connect(this.model.data_source.streaming,()=>this.set_data()),this.connect(this.model.data_source.patching,e=>this.set_data(!0,e)),this.connect(this.model.data_source.selected.change,()=>this.request_render()),this.connect(this.model.data_source._select,()=>this.request_render()),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,()=>this.request_render()),this.connect(this.model.properties.view.change,()=>this.set_data()),this.connect(this.model.view.properties.indices.change,()=>this.set_data()),this.connect(this.model.view.properties.masked.change,()=>this.set_visuals()),this.connect(this.model.properties.visible.change,()=>this.plot_view.update_dataranges());const{x_ranges:e,y_ranges:t}=this.plot_view.frame;for(const[,t]of e)t instanceof y.FactorRange&&this.connect(t.change,()=>this.set_data());for(const[,e]of t)e instanceof y.FactorRange&&this.connect(e.change,()=>this.set_data());this.connect(this.model.glyph.transformchange,()=>this.set_data())}_update_masked_indices(){const e=this.glyph.mask_data();return this.model.view.masked=e,e}set_data(e=!0,t=null){const i=this.model.data_source;this.all_indices=this.model.view.indices;const{all_indices:s}=this;this.glyph.set_data(i,s,t),this.set_visuals(),this._update_masked_indices();const{lod_factor:l}=this.plot_model,n=this.all_indices.count;this.decimated=new _.Indices(n);for(let e=0;e!_||_.is_empty()?[]:_.selected_glyph?this.model.view.convert_indices_from_subset(i):_.indices.length>0?_.indices:Object.keys(_.multiline_indices).map(e=>parseInt(e)))()),g=r.filter(i,e=>d.has(t[e])),{lod_threshold:u}=this.plot_model;let y,m,v;if(null!=this.model.document&&this.model.document.interactive_duration()>0&&!e&&null!=u&&t.length>u?(i=[...this.decimated],y=this.decimated_glyph,m=this.decimated_glyph,v=this.selection_glyph):(y=this.model.muted&&null!=this.muted_glyph?this.muted_glyph:this.glyph,m=this.nonselection_glyph,v=this.selection_glyph),null!=this.hover_glyph&&g.length&&(i=p.difference(i,g)),c.length){const e={};for(const t of c)e[t]=!0;const l=new Array,h=new Array;if(this.glyph instanceof n.LineView)for(const i of t)null!=e[i]?l.push(i):h.push(i);else for(const s of i)null!=e[t[s]]?l.push(s):h.push(s);m.render(s,h,this.glyph),v.render(s,l,this.glyph),null!=this.hover_glyph&&(this.glyph instanceof n.LineView?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(g),this.glyph):this.hover_glyph.render(s,g,this.glyph))}else if(this.glyph instanceof n.LineView)this.hover_glyph&&g.length?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(g),this.glyph):y.render(s,t,this.glyph);else if(this.glyph instanceof h.PatchView||this.glyph instanceof o.HAreaView||this.glyph instanceof a.VAreaView)if(0==_.selected_glyphs.length||null==this.hover_glyph)y.render(s,t,this.glyph);else for(const e of _.selected_glyphs)e==this.glyph.model&&this.hover_glyph.render(s,t,this.glyph);else y.render(s,i,this.glyph),this.hover_glyph&&g.length&&this.hover_glyph.render(s,g,this.glyph);s.restore()}draw_legend(e,t,i,s,l,n,h,o){null==o&&(o=this.model.get_reference_point(n,h)),this.glyph.draw_legend_for_index(e,{x0:t,x1:i,y0:s,y1:l},o)}hit_test(e){if(!this.model.visible)return null;const t=this.glyph.hit_test(e);return null==t?null:this.model.view.convert_selection_from_subset(t)}}i.GlyphRendererView=w,w.__name__=\"GlyphRendererView\";class b extends l.DataRenderer{constructor(e){super(e)}static init_GlyphRenderer(){this.prototype.default_view=w,this.define({data_source:[d.Instance],view:[d.Instance,()=>new c.CDSView],glyph:[d.Instance],hover_glyph:[d.Instance],nonselection_glyph:[d.Any,\"auto\"],selection_glyph:[d.Any,\"auto\"],muted_glyph:[d.Instance],muted:[d.Boolean,!1]})}initialize(){super.initialize(),null==this.view.source&&(this.view.source=this.data_source,this.view.compute_indices())}get_reference_point(e,t){let i=0;if(null!=e){const s=this.data_source.get_column(e);if(null!=s){const e=r.indexOf(s,t);-1!=e&&(i=e)}}return i}get_selection_manager(){return this.data_source.selection_manager}}i.GlyphRenderer=b,b.__name__=\"GlyphRenderer\",b.init_GlyphRenderer()},\n", - " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const a=e(70);class n extends a.RendererView{get xscale(){return this.coordinates.x_scale}get yscale(){return this.coordinates.y_scale}}t.DataRendererView=n,n.__name__=\"DataRendererView\";class s extends a.Renderer{constructor(e){super(e)}static init_DataRenderer(){this.override({level:\"glyph\"})}}t.DataRenderer=s,s.__name__=\"DataRenderer\",s.init_DataRenderer()},\n", - " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1),n=e(93),l=e(100),_=e(102),r=s.__importStar(e(28)),o=s.__importStar(e(101)),h=e(88);class a extends n.XYGlyphView{initialize(){super.initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;null!=e&&(this.glglyph=new _.LineGL(e.gl,this))}_render(e,i,{sx:t,sy:s}){let n=!1,l=null;this.visuals.line.set_value(e);for(const _ of i){if(n){if(!isFinite(t[_]+s[_])){e.stroke(),e.beginPath(),n=!1,l=_;continue}null!=l&&_-l>1&&(e.stroke(),n=!1)}n?e.lineTo(t[_],s[_]):(e.beginPath(),e.moveTo(t[_],s[_]),n=!0),l=_}n&&e.stroke()}_hit_point(e){const i=new h.Selection,t={x:e.sx,y:e.sy};let s=9999;const n=Math.max(2,this.visuals.line.line_width.value()/2);for(let e=0,l=this.sx.length-1;et/2);a=new Float64Array(_);for(let i=0;i<_;i++)a[i]=e[i]-t[i];r=new Float64Array(_);for(let i=0;i<_;i++)r[i]=e[i]+t[i]}else{a=e,r=new Float64Array(_);for(let t=0;t<_;t++)r[t]=a[t]+i[t]}const l=t.v_compute(a),o=t.v_compute(r);return n?d.map(l,(t,e)=>Math.ceil(Math.abs(o[e]-l[e]))):d.map(l,(t,e)=>Math.abs(o[e]-l[e]))}draw_legend_for_index(t,e,i){}hit_test(t){switch(t.type){case\"point\":if(null!=this._hit_point)return this._hit_point(t);break;case\"span\":if(null!=this._hit_span)return this._hit_span(t);break;case\"rect\":if(null!=this._hit_rect)return this._hit_rect(t);break;case\"poly\":if(null!=this._hit_poly)return this._hit_poly(t)}return this._nohit_warned.has(t.type)||(o.logger.debug(`'${t.type}' selection not available for ${this.model.type}`),this._nohit_warned.add(t.type)),null}_hit_rect_against_index(t){const{sx0:e,sx1:i,sy0:s,sy1:n}=t,[a,r]=this.renderer.coordinates.x_scale.r_invert(e,i),[_,l]=this.renderer.coordinates.y_scale.r_invert(s,n),o=[...this.index.indices({x0:a,x1:r,y0:_,y1:l})];return new p.Selection({indices:o})}_project_data(){}set_data(t,e,i){var s,a;const{x_range:r,y_range:_}=this.renderer.coordinates;this._data_size=null!==(s=t.get_length())&&void 0!==s?s:1;for(const i of this.model){if(!(i instanceof n.VectorSpec))continue;if(i.optional&&null==i.spec.value&&!i.dirty)continue;const s=i.attr,a=i.array(t);let l=e.select(a);if(i instanceof n.BaseCoordinateSpec){const t=\"x\"==i.dimension?r:_;if(t instanceof u.FactorRange)if(i instanceof n.CoordinateSpec)l=t.v_synthetic(l);else if(i instanceof n.CoordinateSeqSpec)for(let e=0;e>1;n[s]>e?i=s:t=s+1}return n[t]}class x extends i.default{search_indices(e,n,t,i){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let o=this._boxes.length-4;const x=[],h=new s.Indices(this.numItems);for(;void 0!==o;){const s=Math.min(o+4*this.nodeSize,d(o,this._levelBounds));for(let d=o;d>2];tthis._boxes[d+2]||n>this._boxes[d+3]||(o<4*this.numItems?h.set(s):x.push(s)))}o=x.pop()}return h}}x.__name__=\"_FlatBush\";class h{constructor(e){this.index=null,e>0&&(this.index=new x(e))}add(e,n,t,i){var s;null===(s=this.index)||void 0===s||s.add(e,n,t,i)}add_empty(){var e;null===(e=this.index)||void 0===e||e.add(1/0,1/0,-1/0,-1/0)}finish(){var e;null===(e=this.index)||void 0===e||e.finish()}_normalize(e){let{x0:n,y0:t,x1:i,y1:s}=e;return n>i&&([n,i]=[i,n]),t>s&&([t,s]=[s,t]),{x0:n,y0:t,x1:i,y1:s}}get bbox(){if(null==this.index)return o.empty();{const{minX:e,minY:n,maxX:t,maxY:i}=this.index;return{x0:e,y0:n,x1:t,y1:i}}}indices(e){if(null==this.index)return new s.Indices(0);{const{x0:n,y0:t,x1:i,y1:s}=this._normalize(e);return this.index.search_indices(n,t,i,s)}}bounds(e){const n=o.empty();for(const t of this.indices(e)){const e=this.index._boxes,i=e[4*t+0],s=e[4*t+1],o=e[4*t+2],d=e[4*t+3];on.x1&&(n.x1=i),dn.y1&&(n.y1=s)}return n}}t.SpatialIndex=h,h.__name__=\"SpatialIndex\"},\n", - " function _(t,s,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(1).__importDefault(t(97)),h=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class n{static from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[s,i]=new Uint8Array(t,0,2);if(251!==s)throw new Error(\"Data does not appear to be in a Flatbush format.\");if(i>>4!=3)throw new Error(`Got v${i>>4} data when expected v3.`);const[e]=new Uint16Array(t,2,1),[o]=new Uint32Array(t,4,1);return new n(o,e,h[15&i],t)}constructor(t,s=16,i=Float64Array,n){if(void 0===t)throw new Error(\"Missing required argument: numItems.\");if(isNaN(t)||t<=0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+s,2),65535);let o=t,r=o;this._levelBounds=[4*o];do{o=Math.ceil(o/this.nodeSize),r+=o,this._levelBounds.push(4*r)}while(1!==o);this.ArrayType=i||Float64Array,this.IndexArrayType=r<16384?Uint16Array:Uint32Array;const a=h.indexOf(this.ArrayType),_=4*r*this.ArrayType.BYTES_PER_ELEMENT;if(a<0)throw new Error(`Unexpected typed array class: ${i}.`);n&&n instanceof ArrayBuffer?(this.data=n,this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=4*r,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+_+r*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+a]),new Uint16Array(this.data,2,1)[0]=s,new Uint32Array(this.data,4,1)[0]=t),this._queue=new e.default}add(t,s,i,e){const h=this._pos>>2;return this._indices[h]=h,this._boxes[this._pos++]=t,this._boxes[this._pos++]=s,this._boxes[this._pos++]=i,this._boxes[this._pos++]=e,tthis.maxX&&(this.maxX=i),e>this.maxY&&(this.maxY=e),h}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);if(this.numItems<=this.nodeSize)return this._boxes[this._pos++]=this.minX,this._boxes[this._pos++]=this.minY,this._boxes[this._pos++]=this.maxX,void(this._boxes[this._pos++]=this.maxY);const t=this.maxX-this.minX,s=this.maxY-this.minY,i=new Uint32Array(this.numItems);for(let e=0;e=Math.floor(n/o))return;const r=s[h+n>>1];let _=h-1,d=n+1;for(;;){do{_++}while(s[_]r);if(_>=d)break;a(s,i,e,_,d)}t(s,i,e,h,d,o),t(s,i,e,d+1,n,o)}(i,this._boxes,this._indices,0,this.numItems-1,this.nodeSize);for(let t=0,s=0;t>2]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=h,this._boxes[this._pos++]=n,this._boxes[this._pos++]=o}}}search(t,s,i,e,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=[],a=[];for(;void 0!==n;){const _=Math.min(n+4*this.nodeSize,r(n,this._levelBounds));for(let r=n;r<_;r+=4){const _=0|this._indices[r>>2];ithis._boxes[r+2]||s>this._boxes[r+3]||(n<4*this.numItems?(void 0===h||h(_))&&a.push(_):o.push(_)))}n=o.pop()}return a}neighbors(t,s,i=1/0,e=1/0,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const a=this._queue,_=[],d=e*e;for(;void 0!==n;){const e=Math.min(n+4*this.nodeSize,r(n,this._levelBounds));for(let i=n;i>2],r=o(t,this._boxes[i],this._boxes[i+2]),_=o(s,this._boxes[i+1],this._boxes[i+3]),d=r*r+_*_;n<4*this.numItems?(void 0===h||h(e))&&a.push(-e-1,d):a.push(e,d)}for(;a.length&&a.peek()<0;){if(a.peekValue()>d)return a.clear(),_;if(_.push(-a.pop()-1),_.length===i)return a.clear(),_}n=a.pop()}return a.clear(),_}}function o(t,s,i){return t>1;s[h]>t?e=h:i=h+1}return s[i]}function a(t,s,i,e,h){const n=t[e];t[e]=t[h],t[h]=n;const o=4*e,r=4*h,a=s[o],_=s[o+1],d=s[o+2],x=s[o+3];s[o]=s[r],s[o+1]=s[r+1],s[o+2]=s[r+2],s[o+3]=s[r+3],s[r]=a,s[r+1]=_,s[r+2]=d,s[r+3]=x;const l=i[e];i[e]=i[h],i[h]=l}function _(t,s){let i=t^s,e=65535^i,h=65535^(t|s),n=t&(65535^s),o=i|e>>1,r=i>>1^i,a=h>>1^e&n>>1^h,_=i&h>>1^n>>1^n;i=o,e=r,h=a,n=_,o=i&i>>2^e&e>>2,r=i&e>>2^e&(i^e)>>2,a^=i&h>>2^e&n>>2,_^=e&h>>2^(i^e)&n>>2,i=o,e=r,h=a,n=_,o=i&i>>4^e&e>>4,r=i&e>>4^e&(i^e)>>4,a^=i&h>>4^e&n>>4,_^=e&h>>4^(i^e)&n>>4,i=o,e=r,h=a,n=_,a^=i&h>>8^e&n>>8,_^=e&h>>8^(i^e)&n>>8,i=a^a>>1,e=_^_>>1;let d=t^s,x=e|65535^(d|i);return d=16711935&(d|d<<8),d=252645135&(d|d<<4),d=858993459&(d|d<<2),d=1431655765&(d|d<<1),x=16711935&(x|x<<8),x=252645135&(x|x<<4),x=858993459&(x|x<<2),x=1431655765&(x|x<<1),(x<<1|d)>>>0}i.default=n},\n", - " function _(s,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});i.default=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(s,t){let i=this.length++;for(this.ids[i]=s,this.values[i]=t;i>0;){const s=i-1>>1,h=this.values[s];if(t>=h)break;this.ids[i]=this.ids[s],this.values[i]=h,i=s}this.ids[i]=s,this.values[i]=t}pop(){if(0===this.length)return;const s=this.ids[0];if(this.length--,this.length>0){const s=this.ids[0]=this.ids[this.length],t=this.values[0]=this.values[this.length],i=this.length>>1;let h=0;for(;h=t)break;this.ids[h]=e,this.values[h]=l,h=s}this.ids[h]=s,this.values[h]=t}return s}peek(){if(0!==this.length)return this.ids[0]}peekValue(){if(0!==this.length)return this.values[0]}}},\n", - " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=t(1),i=t(99),r=s.__importStar(t(18)),a=t(24),o=t(9),p=t(8),g=t(11);function c(t,e,n=0){const s=new Map;for(let i=0;ia.get(t).value));r.set(t,{value:u/i,mapping:a}),p+=i+e+l}return[r,(a.size-1)*e+g]}function u(t,e,n,s,i=0){var r;const a=new Map,p=new Map;for(const[e,n,s]of t){const t=null!==(r=p.get(e))&&void 0!==r?r:[];p.set(e,[...t,[n,s]])}let g=i,c=0;for(const[t,i]of p){const r=i.length,[p,u]=l(i,n,s,g);c+=u;const h=o.sum(i.map(([t])=>p.get(t).value));a.set(t,{value:h/r,mapping:p}),g+=r+e+u}return[a,(p.size-1)*e+c]}n.map_one_level=c,n.map_two_levels=l,n.map_three_levels=u;class h extends i.Range{constructor(t){super(t)}static init_FactorRange(){this.define({factors:[r.Array,[]],factor_padding:[r.Number,0],subgroup_padding:[r.Number,.8],group_padding:[r.Number,1.4],range_padding:[r.Number,0],range_padding_units:[r.PaddingUnits,\"percent\"],start:[r.Number],end:[r.Number]}),this.internal({levels:[r.Number],mids:[r.Array,null],tops:[r.Array,null]})}get min(){return this.start}get max(){return this.end}initialize(){super.initialize(),this._init(!0)}connect_signals(){super.connect_signals(),this.connect(this.properties.factors.change,()=>this.reset()),this.connect(this.properties.factor_padding.change,()=>this.reset()),this.connect(this.properties.group_padding.change,()=>this.reset()),this.connect(this.properties.subgroup_padding.change,()=>this.reset()),this.connect(this.properties.range_padding.change,()=>this.reset()),this.connect(this.properties.range_padding_units.change,()=>this.reset())}reset(){this._init(!1),this.change.emit()}_lookup(t){switch(t.length){case 1:{const[e]=t,n=this._mapping.get(e);return null!=n?n.value:NaN}case 2:{const[e,n]=t,s=this._mapping.get(e);if(null!=s){const t=s.mapping.get(n);if(null!=t)return t.value}return NaN}case 3:{const[e,n,s]=t,i=this._mapping.get(e);if(null!=i){const t=i.mapping.get(n);if(null!=t){const e=t.mapping.get(s);if(null!=e)return e.value}}return NaN}default:g.unreachable()}}synthetic(t){if(p.isNumber(t))return t;if(p.isString(t))return this._lookup([t]);let e=0;const n=t[t.length-1];return p.isNumber(n)&&(e=n,t=t.slice(0,-1)),this._lookup(t)+e}v_synthetic(t){const e=t.length,n=new a.NumberArray(e);for(let s=0;s{if(o.every(this.factors,p.isString)){const t=this.factors,[e,n]=c(t,this.factor_padding);return{levels:1,mapping:e,tops:null,mids:null,inside_padding:n}}if(o.every(this.factors,t=>p.isArray(t)&&2==t.length&&p.isString(t[0])&&p.isString(t[1]))){const t=this.factors,[e,n]=l(t,this.group_padding,this.factor_padding),s=[...e.keys()];return{levels:2,mapping:e,tops:s,mids:null,inside_padding:n}}if(o.every(this.factors,t=>p.isArray(t)&&3==t.length&&p.isString(t[0])&&p.isString(t[1])&&p.isString(t[2]))){const t=this.factors,[e,n]=u(t,this.group_padding,this.subgroup_padding,this.factor_padding),s=[...e.keys()],i=[];for(const[t,n]of e)for(const e of n.mapping.keys())i.push([t,e]);return{levels:3,mapping:e,tops:s,mids:i,inside_padding:n}}g.unreachable()})();this._mapping=n,this.tops=s,this.mids=i;let a=0,h=this.factors.length+r;if(\"percent\"==this.range_padding_units){const t=(h-a)*this.range_padding/2;a-=t,h+=t}else a-=this.range_padding,h+=this.range_padding;this.setv({start:a,end:h,levels:e},{silent:t}),\"auto\"==this.bounds&&this.setv({bounds:[a,h]},{silent:!0})}}n.FactorRange=h,h.__name__=\"FactorRange\",h.init_FactorRange()},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(81),a=n.__importStar(e(18));class r extends s.Model{constructor(e){super(e),this.have_updated_interactively=!1}static init_Range(){this.define({bounds:[a.Any],min_interval:[a.Any],max_interval:[a.Any]}),this.internal({plots:[a.Array,[]]})}get is_reversed(){return this.start>this.end}get is_valid(){return!isNaN(this.min)&&!isNaN(this.max)}}i.Range=r,r.__name__=\"Range\",r.init_Range()},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1).__importStar(e(101));i.generic_line_legend=function(e,t,{x0:i,x1:n,y0:c,y1:o},r){t.save(),t.beginPath(),t.moveTo(i,(c+o)/2),t.lineTo(n,(c+o)/2),e.line.doit&&(e.line.set_vectorize(t,r),t.stroke()),t.restore()},i.generic_area_legend=function(e,t,{x0:i,x1:n,y0:c,y1:o},r){const l=.1*Math.abs(n-i),a=.1*Math.abs(o-c),s=i+l,_=n-l,h=c+a,v=o-a;e.fill.doit&&(e.fill.set_vectorize(t,r),t.fillRect(s,h,_-s,v-h)),null!=e.hatch&&e.hatch.doit&&(e.hatch.set_vectorize(t,r),t.fillRect(s,h,_-s,v-h)),e.line&&e.line.doit&&(t.beginPath(),t.rect(s,h,_-s,v-h),e.line.set_vectorize(t,r),t.stroke())},i.line_interpolation=function(e,t,i,c,o,r){const{sx:l,sy:a}=t;let s,_,h,v;\"point\"==t.type?([h,v]=e.yscale.r_invert(a-1,a+1),[s,_]=e.xscale.r_invert(l-1,l+1)):\"v\"==t.direction?([h,v]=e.yscale.r_invert(a,a),[s,_]=[Math.min(i-1,o-1),Math.max(i+1,o+1)]):([s,_]=e.xscale.r_invert(l,l),[h,v]=[Math.min(c-1,r-1),Math.max(c+1,r+1)]);const{x,y}=n.check_2_segments_intersect(s,h,_,v,i,c,o,r);return[x,y]}},\n", - " function _(t,n,e){function i(t,n){return(t.x-n.x)**2+(t.y-n.y)**2}function r(t,n,e){const r=i(n,e);if(0==r)return i(t,n);const s=((t.x-n.x)*(e.x-n.x)+(t.y-n.y)*(e.y-n.y))/r;if(s<0)return i(t,n);if(s>1)return i(t,e);return i(t,{x:n.x+s*(e.x-n.x),y:n.y+s*(e.y-n.y)})}Object.defineProperty(e,\"__esModule\",{value:!0}),e.point_in_poly=function(t,n,e,i){let r=!1,s=e[e.length-1],o=i[i.length-1];for(let u=0;u0&&_<1&&l>0&&l<1,x:t+_*(e-t),y:n+_*(i-n)}}}},\n", - " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(103),a=t(107),n=t(108),o=t(109),_=t(22);class h{constructor(t){this._atlas=new Map,this._width=256,this._height=256,this.tex=new i.Texture2d(t),this.tex.set_wrapping(t.REPEAT,t.REPEAT),this.tex.set_interpolation(t.NEAREST,t.NEAREST),this.tex.set_size([this._width,this._height],t.RGBA),this.tex.set_data([0,0],[this._width,this._height],new Uint8Array(4*this._width*this._height)),this.get_atlas_data([1])}get_atlas_data(t){const e=t.join(\"-\");let s=this._atlas.get(e);if(null==s){const[i,a]=this.make_pattern(t),n=this._atlas.size;this.tex.set_data([0,n],[this._width,1],new Uint8Array(i.map(t=>t+10))),s=[n/this._height,a],this._atlas.set(e,s)}return s}make_pattern(t){t.length>1&&t.length%2&&(t=t.concat(t));let e=0;for(const s of t)e+=s;const s=[];let i=0;for(let e=0,a=t.length+2;es[r]?-1:0,o=s[r-1],i=s[r]),n[4*t+0]=s[r],n[4*t+1]=_,n[4*t+2]=o,n[4*t+3]=i}return[n,e]}}h.__name__=\"DashAtlas\";const r={miter:0,round:1,bevel:2},l={\"\":0,none:0,\".\":0,round:1,\")\":1,\"(\":1,o:1,\"triangle in\":2,\"<\":2,\"triangle out\":3,\">\":3,square:4,\"[\":4,\"]\":4,\"=\":4,butt:5,\"|\":5};class g extends a.BaseGLGlyph{init(){const{gl:t}=this;this._scale_aspect=0;const e=n.vertex_shader,s=o.fragment_shader;this.prog=new i.Program(t),this.prog.set_shaders(e,s),this.index_buffer=new i.IndexBuffer(t),this.vbo_position=new i.VertexBuffer(t),this.vbo_tangents=new i.VertexBuffer(t),this.vbo_segment=new i.VertexBuffer(t),this.vbo_angles=new i.VertexBuffer(t),this.vbo_texcoord=new i.VertexBuffer(t),this.dash_atlas=new h(t)}draw(t,e,s){const i=e.glglyph;if(i.data_changed&&(i._set_data(),i.data_changed=!1),this.visuals_changed&&(this._set_visuals(),this.visuals_changed=!1),i._update_scale(1,1),this._scale_aspect=1,this.prog.set_attribute(\"a_position\",\"vec2\",i.vbo_position),this.prog.set_attribute(\"a_tangents\",\"vec4\",i.vbo_tangents),this.prog.set_attribute(\"a_segment\",\"vec2\",i.vbo_segment),this.prog.set_attribute(\"a_angles\",\"vec2\",i.vbo_angles),this.prog.set_attribute(\"a_texcoord\",\"vec2\",i.vbo_texcoord),this.prog.set_uniform(\"u_length\",\"float\",[i.cumsum]),this.prog.set_texture(\"u_dash_atlas\",this.dash_atlas.tex),this.prog.set_uniform(\"u_pixel_ratio\",\"float\",[s.pixel_ratio]),this.prog.set_uniform(\"u_canvas_size\",\"vec2\",[s.width,s.height]),this.prog.set_uniform(\"u_scale_aspect\",\"vec2\",[1,1]),this.prog.set_uniform(\"u_scale_length\",\"float\",[Math.sqrt(2)]),this.I_triangles=i.I_triangles,this.I_triangles.length<65535)this.index_buffer.set_size(2*this.I_triangles.length),this.index_buffer.set_data(0,new Uint16Array(this.I_triangles)),this.prog.draw(this.gl.TRIANGLES,this.index_buffer);else{t=Array.from(this.I_triangles);const e=this.I_triangles.length,s=64008,a=[];for(let t=0,i=Math.ceil(e/s);t1)for(let e=0;e0||console.log(`Variable ${t} is not an active attribute`));else if(this._unset_variables.has(t)&&this._unset_variables.delete(t),this.activate(),i instanceof s.VertexBuffer){const[s,n]=this.ATYPEINFO[e],h=\"vertexAttribPointer\",l=[s,n,!1,a,r];this._attributes.set(t,[i.handle,o,h,l])}else{const s=this.ATYPEMAP[e];this._attributes.set(t,[null,o,s,i])}}_pre_draw(){this.activate();for(const[t,e,i]of this._samplers.values())this.gl.activeTexture(this.gl.TEXTURE0+i),this.gl.bindTexture(t,e);for(const[t,e,i,s]of this._attributes.values())null!=t?(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t),this.gl.enableVertexAttribArray(e),this.gl[i].apply(this.gl,[e,...s])):(this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null),this.gl.disableVertexAttribArray(e),this.gl[i].apply(this.gl,[e,...s]));this._validated||(this._validated=!0,this._validate())}_validate(){if(this._unset_variables.size&&console.log(\"Program has unset variables: \"+this._unset_variables),this.gl.validateProgram(this.handle),!this.gl.getProgramParameter(this.handle,this.gl.VALIDATE_STATUS))throw console.log(this.gl.getProgramInfoLog(this.handle)),new Error(\"Program validation error\")}draw(t,e){if(!this._linked)throw new Error(\"Cannot draw program if code has not been set\");if(e instanceof s.IndexBuffer){this._pre_draw(),e.activate();const i=e.buffer_size/2,s=this.gl.UNSIGNED_SHORT;this.gl.drawElements(t,i,s,0),e.deactivate()}else{const[i,s]=e;0!=s&&(this._pre_draw(),this.gl.drawArrays(t,i,s))}}}i.Program=a,a.__name__=\"Program\"},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});class i{constructor(e){this.gl=e,this._usage=35048,this.buffer_size=0,this.handle=this.gl.createBuffer()}delete(){this.gl.deleteBuffer(this.handle)}activate(){this.gl.bindBuffer(this._target,this.handle)}deactivate(){this.gl.bindBuffer(this._target,null)}set_size(e){e!=this.buffer_size&&(this.activate(),this.gl.bufferData(this._target,e,this._usage),this.buffer_size=e)}set_data(e,t){this.activate(),this.gl.bufferSubData(this._target,e,t)}}s.Buffer=i,i.__name__=\"Buffer\";class r extends i{constructor(){super(...arguments),this._target=34962}}s.VertexBuffer=r,r.__name__=\"VertexBuffer\";class a extends i{constructor(){super(...arguments),this._target=34963}}s.IndexBuffer=a,a.__name__=\"IndexBuffer\"},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const a=t(11);class r{constructor(t){this.gl=t,this._target=3553,this._types={Int8Array:5120,Uint8Array:5121,Int16Array:5122,Uint16Array:5123,Int32Array:5124,Uint32Array:5125,Float32Array:5126},this.handle=this.gl.createTexture()}delete(){this.gl.deleteTexture(this.handle)}activate(){this.gl.bindTexture(this._target,this.handle)}deactivate(){this.gl.bindTexture(this._target,0)}_get_alignment(t){const e=[4,8,2,1];for(const i of e)if(t%i==0)return i;a.unreachable()}set_wrapping(t,e){this.activate(),this.gl.texParameterf(this._target,this.gl.TEXTURE_WRAP_S,t),this.gl.texParameterf(this._target,this.gl.TEXTURE_WRAP_T,e)}set_interpolation(t,e){this.activate(),this.gl.texParameterf(this._target,this.gl.TEXTURE_MIN_FILTER,t),this.gl.texParameterf(this._target,this.gl.TEXTURE_MAG_FILTER,e)}set_size([t,e],i){var a,r,s;t==(null===(a=this._shape_format)||void 0===a?void 0:a.width)&&e==(null===(r=this._shape_format)||void 0===r?void 0:r.height)&&i==(null===(s=this._shape_format)||void 0===s?void 0:s.format)||(this._shape_format={width:t,height:e,format:i},this.activate(),this.gl.texImage2D(this._target,0,i,t,e,0,i,this.gl.UNSIGNED_BYTE,null))}set_data(t,[e,i],a){this.activate();const{format:r}=this._shape_format,[s,h]=t,l=this._types[a.constructor.name];if(null==l)throw new Error(`Type ${a.constructor.name} not allowed for texture`);const _=this._get_alignment(e);4!=_&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,_),this.gl.texSubImage2D(this._target,0,s,h,e,i,r,l,a),4!=_&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,4)}}i.Texture2d=r,r.__name__=\"Texture2d\"},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});class s{constructor(e,t){this.gl=e,this.glyph=t,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1,this.init()}set_data_changed(){const{data_size:e}=this.glyph;e!=this.nvertices&&(this.nvertices=e,this.size_changed=!0),this.data_changed=!0}set_visuals_changed(){this.visuals_changed=!0}render(e,t,i){if(0==t.length)return!0;const{width:s,height:h}=this.glyph.renderer.plot_view.canvas_view.webgl.canvas,a={pixel_ratio:this.glyph.renderer.plot_view.canvas_view.pixel_ratio,width:s,height:h};return this.draw(t,i,a),!0}}i.BaseGLGlyph=s,s.__name__=\"BaseGLGlyph\"},\n", - " function _(n,e,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.vertex_shader=\"\\nprecision mediump float;\\n\\nconst float PI = 3.14159265358979323846264;\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\n\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size, u_offset;\\nuniform vec2 u_scale_aspect;\\nuniform float u_scale_length;\\n\\nuniform vec4 u_color;\\nuniform float u_antialias;\\nuniform float u_length;\\nuniform float u_linewidth;\\nuniform float u_dash_index;\\nuniform float u_closed;\\n\\nattribute vec2 a_position;\\nattribute vec4 a_tangents;\\nattribute vec2 a_segment;\\nattribute vec2 a_angles;\\nattribute vec2 a_texcoord;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_segment;\\nvarying vec2 v_angles;\\nvarying vec2 v_texcoord;\\nvarying vec2 v_miter;\\nvarying float v_length;\\nvarying float v_linewidth;\\n\\nfloat cross(in vec2 v1, in vec2 v2)\\n{\\n return v1.x*v2.y - v1.y*v2.x;\\n}\\n\\nfloat signed_distance(in vec2 v1, in vec2 v2, in vec2 v3)\\n{\\n return cross(v2-v1,v1-v3) / length(v2-v1);\\n}\\n\\nvoid rotate( in vec2 v, in float alpha, out vec2 result )\\n{\\n float c = cos(alpha);\\n float s = sin(alpha);\\n result = vec2( c*v.x - s*v.y,\\n s*v.x + c*v.y );\\n}\\n\\nvoid main()\\n{\\n bool closed = (u_closed > 0.0);\\n\\n // Attributes and uniforms to varyings\\n v_color = u_color;\\n v_linewidth = u_linewidth;\\n v_segment = a_segment * u_scale_length;\\n v_length = u_length * u_scale_length;\\n\\n // Scale to map to pixel coordinates. The original algorithm from the paper\\n // assumed isotropic scale. We obviously do not have this.\\n vec2 abs_scale_aspect = abs(u_scale_aspect);\\n vec2 abs_scale = u_scale_length * abs_scale_aspect;\\n\\n // Correct angles for aspect ratio\\n vec2 av;\\n av = vec2(1.0, tan(a_angles.x)) / abs_scale_aspect;\\n v_angles.x = atan(av.y, av.x);\\n av = vec2(1.0, tan(a_angles.y)) / abs_scale_aspect;\\n v_angles.y = atan(av.y, av.x);\\n\\n // Thickness below 1 pixel are represented using a 1 pixel thickness\\n // and a modified alpha\\n v_color.a = min(v_linewidth, v_color.a);\\n v_linewidth = max(v_linewidth, 1.0);\\n\\n // If color is fully transparent we just will discard the fragment anyway\\n if( v_color.a <= 0.0 ) {\\n gl_Position = vec4(0.0,0.0,0.0,1.0);\\n return;\\n }\\n\\n // This is the actual half width of the line\\n float w = ceil(u_antialias+v_linewidth)/2.0;\\n\\n vec2 position = a_position;\\n\\n vec2 t1 = normalize(a_tangents.xy * abs_scale_aspect); // note the scaling for aspect ratio here\\n vec2 t2 = normalize(a_tangents.zw * abs_scale_aspect);\\n float u = a_texcoord.x;\\n float v = a_texcoord.y;\\n vec2 o1 = vec2( +t1.y, -t1.x);\\n vec2 o2 = vec2( +t2.y, -t2.x);\\n\\n // This is a join\\n // ----------------------------------------------------------------\\n if( t1 != t2 ) {\\n float angle = atan (t1.x*t2.y-t1.y*t2.x, t1.x*t2.x+t1.y*t2.y); // Angle needs recalculation for some reason\\n vec2 t = normalize(t1+t2);\\n vec2 o = vec2( + t.y, - t.x);\\n\\n if ( u_dash_index > 0.0 )\\n {\\n // Broken angle\\n // ----------------------------------------------------------------\\n if( (abs(angle) > THETA) ) {\\n position += v * w * o / cos(angle/2.0);\\n float s = sign(angle);\\n if( angle < 0.0 ) {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n if( v == 1.0 ) {\\n position -= 2.0 * w * t1 / sin(angle);\\n u -= 2.0 * w / sin(angle);\\n }\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n if( v == 1.0 ) {\\n position += 2.0 * w * t2 / sin(angle);\\n u += 2.0*w / sin(angle);\\n }\\n }\\n } else {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n if( v == -1.0 ) {\\n position += 2.0 * w * t1 / sin(angle);\\n u += 2.0 * w / sin(angle);\\n }\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n if( v == -1.0 ) {\\n position -= 2.0 * w * t2 / sin(angle);\\n u -= 2.0*w / sin(angle);\\n }\\n }\\n }\\n // Continuous angle\\n // ------------------------------------------------------------\\n } else {\\n position += v * w * o / cos(angle/2.0);\\n if( u == +1.0 ) u = v_segment.y;\\n else u = v_segment.x;\\n }\\n }\\n\\n // Solid line\\n // --------------------------------------------------------------------\\n else\\n {\\n position.xy += v * w * o / cos(angle/2.0);\\n if( angle < 0.0 ) {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n }\\n } else {\\n if( u == +1.0 ) {\\n u = v_segment.y + v * w * tan(angle/2.0);\\n } else {\\n u = v_segment.x - v * w * tan(angle/2.0);\\n }\\n }\\n }\\n\\n // This is a line start or end (t1 == t2)\\n // ------------------------------------------------------------------------\\n } else {\\n position += v * w * o1;\\n if( u == -1.0 ) {\\n u = v_segment.x - w;\\n position -= w * t1;\\n } else {\\n u = v_segment.y + w;\\n position += w * t2;\\n }\\n }\\n\\n // Miter distance\\n // ------------------------------------------------------------------------\\n vec2 t;\\n vec2 curr = a_position * abs_scale;\\n if( a_texcoord.x < 0.0 ) {\\n vec2 next = curr + t2*(v_segment.y-v_segment.x);\\n\\n rotate( t1, +v_angles.x/2.0, t);\\n v_miter.x = signed_distance(curr, curr+t, position);\\n\\n rotate( t2, +v_angles.y/2.0, t);\\n v_miter.y = signed_distance(next, next+t, position);\\n } else {\\n vec2 prev = curr - t1*(v_segment.y-v_segment.x);\\n\\n rotate( t1, -v_angles.x/2.0,t);\\n v_miter.x = signed_distance(prev, prev+t, position);\\n\\n rotate( t2, -v_angles.y/2.0,t);\\n v_miter.y = signed_distance(curr, curr+t, position);\\n }\\n\\n if (!closed && v_segment.x <= 0.0) {\\n v_miter.x = 1e10;\\n }\\n if (!closed && v_segment.y >= v_length)\\n {\\n v_miter.y = 1e10;\\n }\\n\\n v_texcoord = vec2( u, v*w );\\n\\n // Calculate position in device coordinates. Note that we\\n // already scaled with abs scale above.\\n vec2 normpos = position * sign(u_scale_aspect);\\n normpos += 0.5; // make up for Bokeh's offset\\n normpos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(normpos*2.0-1.0, 0.0, 1.0);\\n gl_Position.y *= -1.0;\\n}\\n\"},\n", - " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0}),e.fragment_shader=\"\\nprecision mediump float;\\n\\nconst float PI = 3.14159265358979323846264;\\nconst float THETA = 15.0 * 3.14159265358979323846264/180.0;\\n\\nuniform sampler2D u_dash_atlas;\\n\\nuniform vec2 u_linecaps;\\nuniform float u_miter_limit;\\nuniform float u_linejoin;\\nuniform float u_antialias;\\nuniform float u_dash_phase;\\nuniform float u_dash_period;\\nuniform float u_dash_index;\\nuniform vec2 u_dash_caps;\\nuniform float u_closed;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_segment;\\nvarying vec2 v_angles;\\nvarying vec2 v_texcoord;\\nvarying vec2 v_miter;\\nvarying float v_length;\\nvarying float v_linewidth;\\n\\n// Compute distance to cap ----------------------------------------------------\\nfloat cap( int type, float dx, float dy, float t, float linewidth )\\n{\\n float d = 0.0;\\n dx = abs(dx);\\n dy = abs(dy);\\n if (type == 0) discard; // None\\n else if (type == 1) d = sqrt(dx*dx+dy*dy); // Round\\n else if (type == 3) d = (dx+abs(dy)); // Triangle in\\n else if (type == 2) d = max(abs(dy),(t+dx-abs(dy))); // Triangle out\\n else if (type == 4) d = max(dx,dy); // Square\\n else if (type == 5) d = max(dx+t,dy); // Butt\\n return d;\\n}\\n\\n// Compute distance to join -------------------------------------------------\\nfloat join( in int type, in float d, in vec2 segment, in vec2 texcoord, in vec2 miter,\\n in float linewidth )\\n{\\n // texcoord.x is distance from start\\n // texcoord.y is distance from centerline\\n // segment.x and y indicate the limits (as for texcoord.x) for this segment\\n\\n float dx = texcoord.x;\\n\\n // Round join\\n if( type == 1 ) {\\n if (dx < segment.x) {\\n d = max(d,length( texcoord - vec2(segment.x,0.0)));\\n //d = length( texcoord - vec2(segment.x,0.0));\\n } else if (dx > segment.y) {\\n d = max(d,length( texcoord - vec2(segment.y,0.0)));\\n //d = length( texcoord - vec2(segment.y,0.0));\\n }\\n }\\n // Bevel join\\n else if ( type == 2 ) {\\n if (dx < segment.x) {\\n vec2 x = texcoord - vec2(segment.x,0.0);\\n d = max(d, max(abs(x.x), abs(x.y)));\\n\\n } else if (dx > segment.y) {\\n vec2 x = texcoord - vec2(segment.y,0.0);\\n d = max(d, max(abs(x.x), abs(x.y)));\\n }\\n /* Original code for bevel which does not work for us\\n if( (dx < segment.x) || (dx > segment.y) )\\n d = max(d, min(abs(x.x),abs(x.y)));\\n */\\n }\\n\\n return d;\\n}\\n\\nvoid main()\\n{\\n // If color is fully transparent we just discard the fragment\\n if( v_color.a <= 0.0 ) {\\n discard;\\n }\\n\\n // Test if dash pattern is the solid one (0)\\n bool solid = (u_dash_index == 0.0);\\n\\n // Test if path is closed\\n bool closed = (u_closed > 0.0);\\n\\n vec4 color = v_color;\\n float dx = v_texcoord.x;\\n float dy = v_texcoord.y;\\n float t = v_linewidth/2.0-u_antialias;\\n float width = 1.0; //v_linewidth; original code had dashes scale with line width, we do not\\n float d = 0.0;\\n\\n vec2 linecaps = u_linecaps;\\n vec2 dash_caps = u_dash_caps;\\n float line_start = 0.0;\\n float line_stop = v_length;\\n\\n // Apply miter limit; fragments too far into the miter are simply discarded\\n if( (dx < v_segment.x) || (dx > v_segment.y) ) {\\n float into_miter = max(v_segment.x - dx, dx - v_segment.y);\\n if (into_miter > u_miter_limit*v_linewidth/2.0)\\n discard;\\n }\\n\\n // Solid line --------------------------------------------------------------\\n if( solid ) {\\n d = abs(dy);\\n if( (!closed) && (dx < line_start) ) {\\n d = cap( int(u_linecaps.x), abs(dx), abs(dy), t, v_linewidth );\\n }\\n else if( (!closed) && (dx > line_stop) ) {\\n d = cap( int(u_linecaps.y), abs(dx)-line_stop, abs(dy), t, v_linewidth );\\n }\\n else {\\n d = join( int(u_linejoin), abs(dy), v_segment, v_texcoord, v_miter, v_linewidth );\\n }\\n\\n // Dash line --------------------------------------------------------------\\n } else {\\n float segment_start = v_segment.x;\\n float segment_stop = v_segment.y;\\n float segment_center= (segment_start+segment_stop)/2.0;\\n float freq = u_dash_period*width;\\n float u = mod( dx + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n float dash_center= tex.x * width;\\n float dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n float dash_start = dx - u + _start;\\n float dash_stop = dx - u + _stop;\\n\\n // Compute extents of the first dash (the one relative to v_segment.x)\\n // Note: this could be computed in the vertex shader\\n if( (dash_stop < segment_start) && (dash_caps.x != 5.0) ) {\\n float u = mod(segment_start + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n dash_center= tex.x * width;\\n //dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n dash_start = segment_start - u + _start;\\n dash_stop = segment_start - u + _stop;\\n }\\n\\n // Compute extents of the last dash (the one relatives to v_segment.y)\\n // Note: This could be computed in the vertex shader\\n else if( (dash_start > segment_stop) && (dash_caps.y != 5.0) ) {\\n float u = mod(segment_stop + u_dash_phase*width, freq);\\n vec4 tex = texture2D(u_dash_atlas, vec2(u/freq, u_dash_index)) * 255.0 -10.0; // conversion to int-like\\n dash_center= tex.x * width;\\n //dash_type = tex.y;\\n float _start = tex.z * width;\\n float _stop = tex.a * width;\\n dash_start = segment_stop - u + _start;\\n dash_stop = segment_stop - u + _stop;\\n }\\n\\n // This test if the we are dealing with a discontinuous angle\\n bool discontinuous = ((dx < segment_center) && abs(v_angles.x) > THETA) ||\\n ((dx >= segment_center) && abs(v_angles.y) > THETA);\\n //if( dx < line_start) discontinuous = false;\\n //if( dx > line_stop) discontinuous = false;\\n\\n float d_join = join( int(u_linejoin), abs(dy),\\n v_segment, v_texcoord, v_miter, v_linewidth );\\n\\n // When path is closed, we do not have room for linecaps, so we make room\\n // by shortening the total length\\n if (closed) {\\n line_start += v_linewidth/2.0;\\n line_stop -= v_linewidth/2.0;\\n }\\n\\n // We also need to take antialias area into account\\n //line_start += u_antialias;\\n //line_stop -= u_antialias;\\n\\n // Check is dash stop is before line start\\n if( dash_stop <= line_start ) {\\n discard;\\n }\\n // Check is dash start is beyond line stop\\n if( dash_start >= line_stop ) {\\n discard;\\n }\\n\\n // Check if current dash start is beyond segment stop\\n if( discontinuous ) {\\n // Dash start is beyond segment, we discard\\n if( (dash_start > segment_stop) ) {\\n discard;\\n //gl_FragColor = vec4(1.0,0.0,0.0,.25); return;\\n }\\n\\n // Dash stop is before segment, we discard\\n if( (dash_stop < segment_start) ) {\\n discard; //gl_FragColor = vec4(0.0,1.0,0.0,.25); return;\\n }\\n\\n // Special case for round caps (nicer with this)\\n if( dash_caps.x == 1.0 ) {\\n if( (u > _stop) && (dash_stop > segment_stop ) && (abs(v_angles.y) < PI/2.0)) {\\n discard;\\n }\\n }\\n\\n // Special case for round caps (nicer with this)\\n if( dash_caps.y == 1.0 ) {\\n if( (u < _start) && (dash_start < segment_start ) && (abs(v_angles.x) < PI/2.0)) {\\n discard;\\n }\\n }\\n\\n // Special case for triangle caps (in & out) and square\\n // We make sure the cap stop at crossing frontier\\n if( (dash_caps.x != 1.0) && (dash_caps.x != 5.0) ) {\\n if( (dash_start < segment_start ) && (abs(v_angles.x) < PI/2.0) ) {\\n float a = v_angles.x/2.0;\\n float x = (segment_start-dx)*cos(a) - dy*sin(a);\\n float y = (segment_start-dx)*sin(a) + dy*cos(a);\\n if( x > 0.0 ) discard;\\n // We transform the cap into square to avoid holes\\n dash_caps.x = 4.0;\\n }\\n }\\n\\n // Special case for triangle caps (in & out) and square\\n // We make sure the cap stop at crossing frontier\\n if( (dash_caps.y != 1.0) && (dash_caps.y != 5.0) ) {\\n if( (dash_stop > segment_stop ) && (abs(v_angles.y) < PI/2.0) ) {\\n float a = v_angles.y/2.0;\\n float x = (dx-segment_stop)*cos(a) - dy*sin(a);\\n float y = (dx-segment_stop)*sin(a) + dy*cos(a);\\n if( x > 0.0 ) discard;\\n // We transform the caps into square to avoid holes\\n dash_caps.y = 4.0;\\n }\\n }\\n }\\n\\n // Line cap at start\\n if( (dx < line_start) && (dash_start < line_start) && (dash_stop > line_start) ) {\\n d = cap( int(linecaps.x), dx-line_start, dy, t, v_linewidth);\\n }\\n // Line cap at stop\\n else if( (dx > line_stop) && (dash_stop > line_stop) && (dash_start < line_stop) ) {\\n d = cap( int(linecaps.y), dx-line_stop, dy, t, v_linewidth);\\n }\\n // Dash cap left - dash_type = -1, 0 or 1, but there may be roundoff errors\\n else if( dash_type < -0.5 ) {\\n d = cap( int(dash_caps.y), abs(u-dash_center), dy, t, v_linewidth);\\n if( (dx > line_start) && (dx < line_stop) )\\n d = max(d,d_join);\\n }\\n // Dash cap right\\n else if( dash_type > 0.5 ) {\\n d = cap( int(dash_caps.x), abs(dash_center-u), dy, t, v_linewidth);\\n if( (dx > line_start) && (dx < line_stop) )\\n d = max(d,d_join);\\n }\\n // Dash body (plain)\\n else {// if( dash_type > -0.5 && dash_type < 0.5) {\\n d = abs(dy);\\n }\\n\\n // Line join\\n if( (dx > line_start) && (dx < line_stop)) {\\n if( (dx <= segment_start) && (dash_start <= segment_start)\\n && (dash_stop >= segment_start) ) {\\n d = d_join;\\n // Antialias at outer border\\n float angle = PI/2.+v_angles.x;\\n float f = abs( (segment_start - dx)*cos(angle) - dy*sin(angle));\\n d = max(f,d);\\n }\\n else if( (dx > segment_stop) && (dash_start <= segment_stop)\\n && (dash_stop >= segment_stop) ) {\\n d = d_join;\\n // Antialias at outer border\\n float angle = PI/2.+v_angles.y;\\n float f = abs((dx - segment_stop)*cos(angle) - dy*sin(angle));\\n d = max(f,d);\\n }\\n else if( dx < (segment_start - v_linewidth/2.)) {\\n discard;\\n }\\n else if( dx > (segment_stop + v_linewidth/2.)) {\\n discard;\\n }\\n }\\n else if( dx < (segment_start - v_linewidth/2.)) {\\n discard;\\n }\\n else if( dx > (segment_stop + v_linewidth/2.)) {\\n discard;\\n }\\n }\\n\\n // Distance to border ------------------------------------------------------\\n d = d - t;\\n if( d < 0.0 ) {\\n gl_FragColor = color;\\n } else {\\n d /= u_antialias;\\n gl_FragColor = vec4(color.rgb, exp(-d*d)*color.a);\\n }\\n}\\n\"},\n", - " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1),l=e(93),_=e(100),n=s.__importStar(e(101)),o=s.__importStar(e(28)),a=e(88);class h extends l.XYGlyphView{_inner_loop(e,i,t,s,l){for(const _ of i)0!=_?isNaN(t[_]+s[_])?(e.closePath(),l.apply(e),e.beginPath()):e.lineTo(t[_],s[_]):(e.beginPath(),e.moveTo(t[_],s[_]));e.closePath(),l.call(e)}_render(e,i,{sx:t,sy:s}){this.visuals.fill.doit&&(this.visuals.fill.set_value(e),this._inner_loop(e,i,t,s,e.fill)),this.visuals.hatch.doit2(e,0,()=>this._inner_loop(e,i,t,s,e.fill),()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_value(e),this._inner_loop(e,i,t,s,e.stroke))}draw_legend_for_index(e,i,t){_.generic_area_legend(this.visuals,e,i,t)}_hit_point(e){const i=new a.Selection;return n.point_in_poly(e.sx,e.sy,this.sx,this.sy)&&(i.add_to_selected_glyphs(this.model),i.view=this),i}}t.PatchView=h,h.__name__=\"PatchView\";class r extends l.XYGlyph{constructor(e){super(e)}static init_Patch(){this.prototype.default_view=h,this.mixins([o.Line,o.Fill,o.Hatch])}}t.Patch=r,r.__name__=\"Patch\",r.init_Patch()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),r=e(24),n=e(112),a=i.__importStar(e(101)),_=i.__importStar(e(18)),h=e(88);class l extends n.AreaView{_index_data(e){const{min:t,max:s}=Math,{data_size:i}=this;for(let r=0;r=0;t--)e.lineTo(s[t],i[t]);e.closePath(),r.call(e)}_render(e,t,{sx1:s,sx2:i,sy:r}){this.visuals.fill.doit&&(this.visuals.fill.set_value(e),this._inner(e,s,i,r,e.fill)),this.visuals.hatch.doit2(e,0,()=>this._inner(e,s,i,r,e.fill),()=>this.renderer.request_render())}_hit_point(e){const t=this.sy.length,s=new r.NumberArray(2*t),i=new r.NumberArray(2*t);for(let e=0,r=t;e=0;s--)e.lineTo(t[s],i[s]);e.closePath(),r.call(e)}_render(e,t,{sx:s,sy1:i,sy2:r}){this.visuals.fill.doit&&(this.visuals.fill.set_value(e),this._inner(e,s,i,r,e.fill)),this.visuals.hatch.doit2(e,0,()=>this._inner(e,s,i,r,e.fill),()=>this.renderer.request_render())}scenterxy(e){return[this.sx[e],(this.sy1[e]+this.sy2[e])/2]}_hit_point(e){const t=this.sx.length,s=new r.NumberArray(2*t),i=new r.NumberArray(2*t);for(let e=0,r=t;ethis.compute_indices());const i=()=>{const i=()=>this.compute_indices();null!=this.source&&(this.connect(this.source.change,i),this.source instanceof _.ColumnarDataSource&&(this.connect(this.source.streaming,i),this.connect(this.source.patching,i)))};let e=null!=this.source;e?i():this.connect(this.properties.source.change,()=>{e||(i(),e=!0)})}compute_indices(){var i;const{source:e}=this;if(null==e)return;const s=null!==(i=e.get_length())&&void 0!==i?i:1,t=r.Indices.all_set(s);for(const i of this.filters)t.intersect(i.compute_indices(e));this.indices=t,this._indices=[...t],this.indices_map_to_subset()}indices_map_to_subset(){this.indices_map={};for(let i=0;ithis._indices[i]);return new o.Selection(Object.assign(Object.assign({},i.attributes),{indices:e}))}convert_selection_to_subset(i){const e=i.indices.map(i=>this.indices_map[i]);return new o.Selection(Object.assign(Object.assign({},i.attributes),{indices:e}))}convert_indices_from_subset(i){return i.map(i=>this._indices[i])}}s.CDSView=a,a.__name__=\"CDSView\",a.init_CDSView()},\n", - " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(9);async function i(e,n,t){const o=new e(Object.assign(Object.assign({},t),{model:n}));return o.initialize(),await o.lazy_initialize(),o}t.build_view=async function(e,n={parent:null},t=(e=>e.default_view)){const o=await i(t(e),e,n);return o.connect_signals(),o},t.build_views=async function(e,n,t={parent:null},s=(e=>e.default_view)){const c=o.difference([...e.keys()],n);for(const n of c)e.get(n).remove(),e.delete(n);const a=[],f=n.filter(n=>!e.has(n));for(const n of f){const o=await i(s(n),n,t);e.set(n,o),a.push(o)}for(const e of a)e.connect_signals();return a},t.remove_views=function(e){for(const[n,t]of e)t.remove(),e.delete(n)}},\n", - " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(1),i=e(91),s=e(117),a=t.__importStar(e(18)),o=e(115),_=e(11);class l extends i.DataRendererView{async lazy_initialize(){await super.lazy_initialize();const e=this.model;let r=null,n=null;const t={v_compute(n){_.assert(null==r);const[t]=r=e.layout_provider.get_edge_coordinates(n);return t}},i={v_compute(e){_.assert(null!=r);const[,n]=r;return r=null,n}},s={v_compute(r){_.assert(null==n);const[t]=n=e.layout_provider.get_node_coordinates(r);return t}},a={v_compute(e){_.assert(null!=n);const[,r]=n;return n=null,r}},{edge_renderer:l,node_renderer:d}=this.model;l.glyph.properties.xs.internal=!0,l.glyph.properties.ys.internal=!0,d.glyph.properties.x.internal=!0,d.glyph.properties.y.internal=!0,l.glyph.xs={expr:t},l.glyph.ys={expr:i},d.glyph.x={expr:s},d.glyph.y={expr:a};const{parent:p}=this;this.edge_view=await o.build_view(l,{parent:p}),this.node_view=await o.build_view(d,{parent:p})}connect_signals(){super.connect_signals(),this.connect(this.model.layout_provider.change,()=>{this.edge_view.set_data(!1),this.node_view.set_data(!1),this.request_render()})}remove(){this.edge_view.remove(),this.node_view.remove(),super.remove()}_render(){this.edge_view.render(),this.node_view.render()}}n.GraphRendererView=l,l.__name__=\"GraphRendererView\";class d extends i.DataRenderer{constructor(e){super(e)}static init_GraphRenderer(){this.prototype.default_view=l,this.define({layout_provider:[a.Instance],node_renderer:[a.Instance],edge_renderer:[a.Instance],selection_policy:[a.Instance,()=>new s.NodesOnly],inspection_policy:[a.Instance,()=>new s.NodesOnly]})}get_selection_manager(){return this.node_renderer.data_source.selection_manager}}n.GraphRenderer=d,d.__name__=\"GraphRenderer\",d.init_GraphRenderer()},\n", - " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const d=e(81),s=e(12),o=e(9),_=e(88);class i extends d.Model{constructor(e){super(e)}_hit_test_nodes(e,t){if(!t.model.visible)return null;const n=t.node_view.glyph.hit_test(e);return null==n?null:t.node_view.model.view.convert_selection_from_subset(n)}_hit_test_edges(e,t){if(!t.model.visible)return null;const n=t.edge_view.glyph.hit_test(e);return null==n?null:t.edge_view.model.view.convert_selection_from_subset(n)}}n.GraphHitTestPolicy=i,i.__name__=\"GraphHitTestPolicy\";class r extends i{constructor(e){super(e)}hit_test(e,t){return this._hit_test_nodes(e,t)}do_selection(e,t,n,d){if(null==e)return!1;const s=t.node_renderer.data_source.selected;return s.update(e,n,d),t.node_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,n,d,s){if(null==e)return!1;const o=n.model.get_selection_manager().get_or_create_inspector(n.node_view.model);return o.update(e,d,s),n.node_view.model.data_source.setv({inspected:o},{silent:!0}),n.node_view.model.data_source.inspect.emit([n.node_view,{geometry:t}]),!o.is_empty()}}n.NodesOnly=r,r.__name__=\"NodesOnly\";class c extends i{constructor(e){super(e)}hit_test(e,t){return this._hit_test_nodes(e,t)}get_linked_edges(e,t,n){let d=[];\"selection\"==n?d=e.selected.indices.map(t=>e.data.index[t]):\"inspection\"==n&&(d=e.inspected.indices.map(t=>e.data.index[t]));const s=[];for(let e=0;es.indexOf(e.data.index,t));return new _.Selection({indices:r})}do_selection(e,t,n,d){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;s.update(e,n,d);const o=t.node_renderer.data_source.selected,_=this.get_linked_nodes(t.node_renderer.data_source,t.edge_renderer.data_source,\"selection\");return o.update(_,n,d),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,n,d,s){if(null==e)return!1;const o=n.edge_view.model.data_source.selection_manager.get_or_create_inspector(n.edge_view.model);o.update(e,d,s),n.edge_view.model.data_source.setv({inspected:o},{silent:!0});const _=n.node_view.model.data_source.selection_manager.get_or_create_inspector(n.node_view.model),i=this.get_linked_nodes(n.node_view.model.data_source,n.edge_view.model.data_source,\"inspection\");return _.update(i,d,s),n.node_view.model.data_source.setv({inspected:_},{silent:!0}),n.edge_view.model.data_source.inspect.emit([n.edge_view,{geometry:t}]),!o.is_empty()}}n.EdgesAndLinkedNodes=a,a.__name__=\"EdgesAndLinkedNodes\"},\n", - " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=e(81);class o extends s.Model{do_selection(e,t,n,s){return null!==e&&(t.selected.update(e,n,s),t._select.emit(),!t.selected.is_empty())}}n.SelectionPolicy=o,o.__name__=\"SelectionPolicy\";class r extends o{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!==t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_intersection(t);return e}return null}}n.IntersectRenderers=r,r.__name__=\"IntersectRenderers\";class c extends o{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!==t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_union(t);return e}return null}}n.UnionRenderers=c,c.__name__=\"UnionRenderers\"},\n", - " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0}),n.concat=function(t,...e){let n=t.length;for(const t of e)n+=t.length;const o=new t.constructor(n);o.set(t,0);let c=t.length;for(const t of e)o.set(t,c),c+=t.length;return o}},\n", - " function _(n,o,e){function t(...n){const o=new Set;for(const e of n)for(const n of e)o.add(n);return o}Object.defineProperty(e,\"__esModule\",{value:!0}),e.union=t,e.intersection=function(n,...o){const e=new Set;n:for(const t of n){for(const n of o)if(!n.has(t))continue n;e.add(t)}return e},e.difference=function(n,...o){const e=new Set(n);for(const n of t(...o))e.delete(n);return e}},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(14);class o{constructor(e){this.document=e}}s.DocumentEvent=o,o.__name__=\"DocumentEvent\";class r extends o{constructor(e,t,s){super(e),this.events=t,this.setter_id=s}}s.DocumentEventBatch=r,r.__name__=\"DocumentEventBatch\";class d extends o{}s.DocumentChangedEvent=d,d.__name__=\"DocumentChangedEvent\";class _ extends d{constructor(e,t,s){super(e),this.msg_type=t,this.msg_data=s}json(e){const t=this.msg_data,s=n.HasProps._value_to_json(t),o=new Set;return n.HasProps._value_record_references(t,o,{recursive:!0}),{kind:\"MessageSent\",msg_type:this.msg_type,msg_data:s}}}s.MessageSentEvent=_,_.__name__=\"MessageSentEvent\";class i extends d{constructor(e,t,s,n,o,r,d){super(e),this.model=t,this.attr=s,this.old=n,this.new_=o,this.setter_id=r,this.hint=d}json(e){if(\"id\"===this.attr)throw new Error(\"'id' field should never change, whatever code just set it is wrong\");if(null!=this.hint)return this.hint.json(e);const t=this.new_,s=n.HasProps._value_to_json(t),o=new Set;n.HasProps._value_record_references(t,o,{recursive:!0}),o.has(this.model)&&this.model!==t&&o.delete(this.model);for(const t of o)e.add(t);return{kind:\"ModelChanged\",model:this.model.ref(),attr:this.attr,new:s}}}s.ModelChangedEvent=i,i.__name__=\"ModelChangedEvent\";class a extends d{constructor(e,t,s){super(e),this.column_source=t,this.patches=s}json(e){return{kind:\"ColumnsPatched\",column_source:this.column_source,patches:this.patches}}}s.ColumnsPatchedEvent=a,a.__name__=\"ColumnsPatchedEvent\";class c extends d{constructor(e,t,s,n){super(e),this.column_source=t,this.data=s,this.rollover=n}json(e){return{kind:\"ColumnsStreamed\",column_source:this.column_source,data:this.data,rollover:this.rollover}}}s.ColumnsStreamedEvent=c,c.__name__=\"ColumnsStreamedEvent\";class h extends d{constructor(e,t,s){super(e),this.title=t,this.setter_id=s}json(e){return{kind:\"TitleChanged\",title:this.title}}}s.TitleChangedEvent=h,h.__name__=\"TitleChangedEvent\";class u extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}json(e){return n.HasProps._value_record_references(this.model,e,{recursive:!0}),{kind:\"RootAdded\",model:this.model.ref()}}}s.RootAddedEvent=u,u.__name__=\"RootAddedEvent\";class l extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}json(e){return{kind:\"RootRemoved\",model:this.model.ref()}}}s.RootRemovedEvent=l,l.__name__=\"RootRemovedEvent\"},\n", - " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(1),l=e(123),_=i.__importStar(e(28));class o extends l.UpperLowerView{connect_signals(){super.connect_signals();const e=()=>this.set_data(this.model.source);this.connect(this.model.change,e),this.connect(this.model.source.streaming,e),this.connect(this.model.source.patching,e),this.connect(this.model.source.change,e)}_render(){this._map_data();const{ctx:e}=this.layer;e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,t=this._lower_sx.length;s=0;s--)e.lineTo(this._upper_sx[s],this._upper_sy[s]);e.closePath(),this.visuals.fill.doit&&(this.visuals.fill.set_value(e),e.fill()),e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,t=this._lower_sx.length;snew r.ColumnDataSource]})}}i.UpperLower=a,a.__name__=\"UpperLower\",a.init_UpperLower()},\n", - " function _(t,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const e=t(1),o=t(36),n=t(15),l=e.__importStar(t(28)),a=e.__importStar(t(18)),h=t(79);s.EDGE_TOLERANCE=2.5;class r extends o.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_paint(this)),this.connect(this.model.data_update,()=>this.plot_view.request_paint(this))}_render(){if(null==this.model.left&&null==this.model.right&&null==this.model.top&&null==this.model.bottom)return;const{frame:t}=this.plot_view,i=this.coordinates.x_scale,s=this.coordinates.y_scale,e=(t,i,s,e,o)=>{let n;return n=null!=t?this.model.screen?t:\"data\"==i?s.compute(t):e.compute(t):o,n};this.sleft=e(this.model.left,this.model.left_units,i,t.xview,t.bbox.left),this.sright=e(this.model.right,this.model.right_units,i,t.xview,t.bbox.right),this.stop=e(this.model.top,this.model.top_units,s,t.yview,t.bbox.top),this.sbottom=e(this.model.bottom,this.model.bottom_units,s,t.yview,t.bbox.bottom),this._paint_box(this.sleft,this.sright,this.sbottom,this.stop)}_paint_box(t,i,s,e){const{ctx:o}=this.layer;o.save(),o.beginPath(),o.rect(t,e,i-t,s-e),this.visuals.fill.doit&&(this.visuals.fill.set_value(o),o.fill()),this.visuals.line.doit&&(this.visuals.line.set_value(o),o.stroke()),o.restore()}interactive_bbox(){const t=this.model.properties.line_width.value()+s.EDGE_TOLERANCE;return new h.BBox({x0:this.sleft-t,y0:this.stop-t,x1:this.sright+t,y1:this.sbottom+t})}interactive_hit(t,i){if(null==this.model.in_cursor)return!1;return this.interactive_bbox().contains(t,i)}cursor(t,i){return Math.abs(t-this.sleft)<3||Math.abs(t-this.sright)<3?this.model.ew_cursor:Math.abs(i-this.sbottom)<3||Math.abs(i-this.stop)<3?this.model.ns_cursor:t>this.sleft&&tthis.stop&&ithis.plot_view.request_render()),this.connect(this.model.formatter.change,()=>this.plot_view.request_render()),null!=this.model.color_mapper&&this.connect(this.model.color_mapper.change,()=>{this._set_canvas_image(),this.plot_view.request_render()})}_get_size(){if(null==this.model.color_mapper)return{width:0,height:0};{const{width:t,height:e}=this.compute_legend_dimensions();return{width:t,height:e}}}_set_canvas_image(){if(null==this.model.color_mapper)return;let t,e,{palette:i}=this.model.color_mapper;switch(\"vertical\"==this.model.orientation&&(i=g.reversed(i)),this.model.orientation){case\"vertical\":[t,e]=[1,i.length];break;case\"horizontal\":[t,e]=[i.length,1]}const o=document.createElement(\"canvas\");o.width=t,o.height=e;const a=o.getContext(\"2d\"),s=a.getImageData(0,0,t,e),r=new n.LinearColorMapper({palette:i}).rgba_mapper.v_compute(g.range(0,i.length));s.data.set(r),a.putImageData(s,0,0),this.image=o}compute_legend_dimensions(){const t=this._computed_image_dimensions(),[e,i]=[t.height,t.width],o=this._get_label_extent(),a=this._title_extent(),s=this._tick_extent(),{padding:r}=this.model;let n,l;switch(this.model.orientation){case\"vertical\":n=e+a+2*r,l=i+s+o+2*r;break;case\"horizontal\":n=e+a+s+o+2*r,l=i+2*r}return{width:l,height:n}}compute_legend_location(){const t=this.compute_legend_dimensions(),[e,i]=[t.height,t.width],o=this.model.margin,a=null!=this.panel?this.panel:this.plot_view.frame,[s,r]=a.bbox.ranges,{location:n}=this.model;let l,_;if(f.isString(n))switch(n){case\"top_left\":l=s.start+o,_=r.start+o;break;case\"top_center\":l=(s.end+s.start)/2-i/2,_=r.start+o;break;case\"top_right\":l=s.end-o-i,_=r.start+o;break;case\"bottom_right\":l=s.end-o-i,_=r.end-o-e;break;case\"bottom_center\":l=(s.end+s.start)/2-i/2,_=r.end-o-e;break;case\"bottom_left\":l=s.start+o,_=r.end-o-e;break;case\"center_left\":l=s.start+o,_=(r.end+r.start)/2-e/2;break;case\"center\":l=(s.end+s.start)/2-i/2,_=(r.end+r.start)/2-e/2;break;case\"center_right\":l=s.end-o-i,_=(r.end+r.start)/2-e/2}else if(f.isArray(n)&&2==n.length){const[t,i]=n;l=a.xview.compute(t),_=a.yview.compute(i)-e}else b.unreachable();return{sx:l,sy:_}}_render(){if(null==this.model.color_mapper)return;const{ctx:t}=this.layer;t.save();const{sx:e,sy:i}=this.compute_legend_location();t.translate(e,i),this._draw_bbox(t);const o=this._get_image_offset();t.translate(o.x,o.y),this._draw_image(t);const a=this.tick_info();this._draw_major_ticks(t,a),this._draw_minor_ticks(t,a),this._draw_major_labels(t,a),this.model.title&&this._draw_title(t),t.restore()}_draw_bbox(t){const e=this.compute_legend_dimensions();t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(0,0,e.width,e.height)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()}_draw_image(t){const e=this._computed_image_dimensions();t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this.image,0,0,e.width,e.height),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(0,0,e.width,e.height)),t.restore()}_draw_major_ticks(t,e){if(!this.visuals.major_tick_line.doit)return;const[i,o]=this._normals(),a=this._computed_image_dimensions(),[s,r]=[a.width*i,a.height*o],[n,l]=e.coords.major,_=this.model.major_tick_in,h=this.model.major_tick_out;t.save(),t.translate(s,r),this.visuals.major_tick_line.set_value(t);for(let e=0,a=n.length;ei.measureText(t.toString()).width));break;case\"horizontal\":e=u.measure_font(this.visuals.major_label_text.font_value()).height}e+=this.model.label_standoff,i.restore()}return e}_get_image_offset(){return{x:this.model.padding,y:this.model.padding+this._title_extent()}}_normals(){return\"vertical\"==this.model.orientation?[1,0]:[0,1]}_title_extent(){const t=this.model.title_text_font+\" \"+this.model.title_text_font_size+\" \"+this.model.title_text_font_style;return this.model.title?u.measure_font(t).height+this.model.title_standoff:0}_tick_extent(){return g.max([this.model.major_tick_out,this.model.minor_tick_out])}_computed_image_dimensions(){const t=this.plot_view.frame.bbox.height,e=this.plot_view.frame.bbox.width,i=this._title_extent();let o,a;switch(this.model.orientation){case\"vertical\":\"auto\"==this.model.height?null!=this.panel?o=t-2*this.model.padding-i:(o=g.max([25*this.model.color_mapper.palette.length,.3*t]),o=g.min([o,.8*t-2*this.model.padding-i])):o=this.model.height,a=\"auto\"==this.model.width?25:this.model.width;break;case\"horizontal\":o=\"auto\"==this.model.height?25:this.model.height,\"auto\"==this.model.width?null!=this.panel?a=e-2*this.model.padding:(a=g.max([25*this.model.color_mapper.palette.length,.3*e]),a=g.min([a,.8*e-2*this.model.padding])):a=this.model.width}return{width:a,height:o}}_tick_coordinate_scale(t){const e={source_range:new m.Range1d({start:this.model.color_mapper.metrics.min,end:this.model.color_mapper.metrics.max}),target_range:new m.Range1d({start:0,end:t})},{color_mapper:i}=this.model;if(i instanceof n.LinearColorMapper)return new l.LinearScale(e);if(i instanceof n.LogColorMapper)return new h.LogScale(e);if(i instanceof n.ScanningColorMapper){const{binning:t}=i.metrics;return new _.LinearInterpolationScale(Object.assign(Object.assign({},e),{binning:t}))}b.unreachable()}_format_major_labels(t,e){const i=this.model.formatter.doFormat(t,null);for(let t=0,o=e.length;tr||(h[o].push(l[t]),h[a].push(0));for(let t=0,e=_.length;tr||(m[o].push(_[t]),m[a].push(0));const d={major:this._format_major_labels(h[o],l)},c={major:[[],[]],minor:[[],[]]};return c.major[o]=i.v_compute(h[o]),c.minor[o]=i.v_compute(m[o]),c.major[a]=h[a],c.minor[a]=m[a],\"vertical\"==this.model.orientation&&(c.major[o]=p.map(c.major[o],t=>e-t),c.minor[o]=p.map(c.minor[o],t=>e-t)),{coords:c,labels:d}}}i.ColorBarView=v,v.__name__=\"ColorBarView\";class w extends a.Annotation{constructor(t){super(t)}static init_ColorBar(){this.prototype.default_view=v,this.mixins([[\"major_label_\",d.Text],[\"title_\",d.Text],[\"major_tick_\",d.Line],[\"minor_tick_\",d.Line],[\"border_\",d.Line],[\"bar_\",d.Line],[\"background_\",d.Fill]]),this.define({location:[c.Any,\"top_right\"],orientation:[c.Orientation,\"vertical\"],title:[c.String],title_standoff:[c.Number,2],width:[c.Any,\"auto\"],height:[c.Any,\"auto\"],scale_alpha:[c.Number,1],ticker:[c.Instance,()=>new s.BasicTicker],formatter:[c.Instance,()=>new r.BasicTickFormatter],major_label_overrides:[c.Any,{}],color_mapper:[c.Instance],label_standoff:[c.Number,5],margin:[c.Number,30],padding:[c.Number,10],major_tick_in:[c.Number,5],major_tick_out:[c.Number,0],minor_tick_in:[c.Number,0],minor_tick_out:[c.Number,0]}),this.override({background_fill_color:\"#ffffff\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_align:\"center\",major_label_text_baseline:\"middle\",major_label_text_font_size:\"11px\",major_tick_line_color:\"#ffffff\",minor_tick_line_color:null,title_text_font_size:\"13px\",title_text_font_style:\"italic\"})}}i.ColorBar=w,w.__name__=\"ColorBar\",w.init_ColorBar()},\n", - " function _(e,c,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(127);class r extends i.AdaptiveTicker{constructor(e){super(e)}}s.BasicTicker=r,r.__name__=\"BasicTicker\"},\n", - " function _(t,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const a=t(1),s=t(128),n=t(9),r=a.__importStar(t(18));class _ extends s.ContinuousTicker{constructor(t){super(t)}static init_AdaptiveTicker(){this.define({base:[r.Number,10],mantissas:[r.Array,[1,2,5]],min_interval:[r.Number,0],max_interval:[r.Number]})}initialize(){super.initialize();const t=n.nth(this.mantissas,-1)/this.base,i=n.nth(this.mantissas,0)*this.base;this.extended_mantissas=[t,...this.mantissas,i],this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()}get_interval(t,i,e){const a=i-t,s=this.get_ideal_interval(t,i,e),r=Math.floor(function(t,i=Math.E){return Math.log(t)/Math.log(i)}(s/this.base_factor,this.base)),_=this.base**r*this.base_factor,h=this.extended_mantissas,m=h.map(t=>Math.abs(e-a/(t*_))),o=h[n.argmin(m)];return c=o*_,l=this.get_min_interval(),u=this.get_max_interval(),Math.max(l,Math.min(u,c));var c,l,u}}e.AdaptiveTicker=_,_.__name__=\"AdaptiveTicker\",_.init_AdaptiveTicker()},\n", - " function _(t,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(1),r=t(129),s=n.__importStar(t(18)),o=t(9);class _ extends r.Ticker{constructor(t){super(t)}static init_ContinuousTicker(){this.define({num_minor_ticks:[s.Number,5],desired_num_ticks:[s.Number,6]})}get_ticks(t,i,e,n,r){return this.get_ticks_no_defaults(t,i,n,this.desired_num_ticks)}get_ticks_no_defaults(t,i,e,n){const r=this.get_interval(t,i,n),s=Math.floor(t/r),_=Math.ceil(i/r);let c;c=isFinite(s)&&isFinite(_)?o.range(s,_+1):[];const u=c.map(t=>t*r).filter(e=>t<=e&&e<=i),a=this.num_minor_ticks,l=[];if(a>0&&u.length>0){const e=r/a,n=o.range(0,a).map(t=>t*e);for(const e of n.slice(1)){const n=u[0]-e;t<=n&&n<=i&&l.push(n)}for(const e of u)for(const r of n){const n=e+r;t<=n&&n<=i&&l.push(n)}}return{major:u,minor:l}}get_min_interval(){return this.min_interval}get_max_interval(){return null!=this.max_interval?this.max_interval:1/0}get_ideal_interval(t,i,e){return(i-t)/e}}e.ContinuousTicker=_,_.__name__=\"ContinuousTicker\",_.init_ContinuousTicker()},\n", - " function _(e,c,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(81);class r extends o.Model{constructor(e){super(e)}}n.Ticker=r,r.__name__=\"Ticker\"},\n", - " function _(i,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=i(1),s=i(131),n=r.__importStar(i(18));class o extends s.TickFormatter{constructor(i){super(i),this.last_precision=3}static init_BasicTickFormatter(){this.define({precision:[n.Any,\"auto\"],use_scientific:[n.Boolean,!0],power_limit_high:[n.Number,5],power_limit_low:[n.Number,-3]})}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}_need_sci(i){if(!this.use_scientific)return!1;const{scientific_limit_high:t}=this,{scientific_limit_low:e}=this,r=i.length<2?0:Math.abs(i[1]-i[0])/1e4;for(const s of i){const i=Math.abs(s);if(!(i<=r)&&(i>=t||i<=e))return!0}return!1}_format_with_precision(i,t,e){const r=new Array(i.length);if(t)for(let t=0,s=i.length;t=1;r?s++:s--){if(t){e[0]=i[0].toExponential(s);for(let t=1;tu(e,d))),s=g<0||g>=t.length?r:t[g],c[_]=s}}},\n", - " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const n=t(1),o=t(136),_=n.__importStar(t(18)),i=t(8),l=t(22),c=t(32);function a(t){return i.isNumber(t)?t:(\"#\"!=t[0]&&(t=l.color2hex(t)),9!=t.length&&(t+=\"ff\"),parseInt(t.slice(1),16))}function s(t){const e=new Uint32Array(t.length);for(let r=0,n=t.length;rt)),e}get rgba_mapper(){const t=this,e=s(this.palette),r=this._colors(a);return{v_compute(n){const o=new Uint32Array(n.length);return t._v_compute(n,o,e,r),p(o)}}}_colors(t){return{nan_color:t(this.nan_color)}}}r.ColorMapper=u,u.__name__=\"ColorMapper\",u.init_ColorMapper()},\n", - " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(137);class s extends o.Transform{constructor(e){super(e)}compute(e){throw new Error(\"mapping single values is not supported\")}}n.Mapper=s,s.__name__=\"Mapper\"},\n", - " function _(e,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(81);class s extends r.Model{constructor(e){super(e)}}o.Transform=s,s.__name__=\"Transform\"},\n", - " function _(r,e,a){Object.defineProperty(a,\"__esModule\",{value:!0});const t=r(1),s=r(134),i=r(136),c=t.__importStar(r(18));class n extends i.Mapper{constructor(r){super(r)}static init_CategoricalMarkerMapper(){this.define({factors:[c.Array],markers:[c.Array],start:[c.Number,0],end:[c.Number],default_value:[c.MarkerType,\"circle\"]})}v_compute(r){const e=new Array(r.length);return s.cat_v_compute(r,this.factors,this.markers,e,this.start,this.end,this.default_value),e}}a.CategoricalMarkerMapper=n,n.__name__=\"CategoricalMarkerMapper\",n.init_CategoricalMarkerMapper()},\n", - " function _(t,e,a){Object.defineProperty(a,\"__esModule\",{value:!0});const r=t(1),n=t(134),s=t(136),i=r.__importStar(t(18));class c extends s.Mapper{constructor(t){super(t)}static init_CategoricalPatternMapper(){this.define({factors:[i.Array],patterns:[i.Array],start:[i.Number,0],end:[i.Number],default_value:[i.HatchPatternType,\" \"]})}v_compute(t){const e=new Array(t.length);return n.cat_v_compute(t,this.factors,this.patterns,e,this.start,this.end,this.default_value),e}}a.CategoricalPatternMapper=c,c.__name__=\"CategoricalPatternMapper\",c.init_CategoricalPatternMapper()},\n", - " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(135),s=t(90),l=t(9),i=t(8);class c extends n.ColorMapper{constructor(t){super(t),this._scan_data=null}static init_ContinuousColorMapper(){this.define(({Number:t,String:o,Null:e,Ref:n,Color:l,Or:i,Tuple:c,Array:a})=>({high:[i(t,e),null],low:[i(t,e),null],high_color:[i(l,e),null],low_color:[i(l,e),null],domain:[a(c(n(s.GlyphRenderer),i(o,a(o)))),[]]}))}connect_signals(){super.connect_signals();const t=()=>{for(const[t]of this.domain)this.connect(t.view.change,()=>this.update_data()),this.connect(t.data_source.selected.change,()=>this.update_data())};this.connect(this.properties.domain.change,()=>t()),t()}update_data(){const{domain:t,palette:o}=this,e=[...this._collect(t)];this._scan_data=this.scan(e,o.length),this.change.emit()}get metrics(){return null==this._scan_data&&this.update_data(),this._scan_data}*_collect(t){for(const[o,e]of t)for(const t of i.isArray(e)?e:[e]){let e=o.data_source.get_column(t);e=o.view.indices.select(e);const n=o.view.masked,s=o.data_source.selected.indices;let c;if(null!=n&&s.length>0?c=l.intersection([...n],s):null!=n?c=[...n]:s.length>0&&(c=s),null!=c&&(e=l.map(c,t=>e[t])),e.length>0&&!i.isNumber(e[0]))for(const t of e)yield*t;else yield*e}}_v_compute(t,o,e,n){const{nan_color:s}=n;let{low_color:i,high_color:c}=n;null==i&&(i=e[0]),null==c&&(c=e[e.length-1]);const{domain:a}=this,r=l.is_empty(a)?t:[...this._collect(a)];this._scan_data=this.scan(r,e.length);for(let n=0,l=t.length;na?e:r[l]}}o.LinearColorMapper=a,a.__name__=\"LinearColorMapper\"},\n", - " function _(o,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=o(140),r=o(12);class l extends e.ContinuousColorMapper{constructor(o){super(o)}scan(o,t){const n=null!=this.low?this.low:r.min(o),e=null!=this.high?this.high:r.max(o);return{max:e,min:n,scale:t/(Math.log(e)-Math.log(n))}}cmap(o,t,n,e,r){const l=t.length-1;if(o>r.max)return e;if(o==r.max)return t[l];if(ol&&(s=l),t[s]}}n.LogColorMapper=l,l.__name__=\"LogColorMapper\"},\n", - " function _(n,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=n(140),o=n(12);class t extends i.ContinuousColorMapper{constructor(n){super(n)}cmap(n,e,r,i,t){if(nt.binning[t.binning.length-1])return i;return e[o.left_edge_index(n,t.binning)]}}r.ScanningColorMapper=t,t.__name__=\"ScanningColorMapper\"},\n", - " function _(n,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=n(1),o=n(143),r=n(12),s=n(9),a=i.__importStar(n(18)),l=n(19);class p extends o.ScanningColorMapper{constructor(n){super(n)}static init_EqHistColorMapper(){this.define({bins:[a.Int,65536]})}scan(n,t){const e=null!=this.low?this.low:r.min(n),i=null!=this.high?this.high:r.max(n),o=this.bins,a=s.linspace(e,i,o+1),p=r.bin_counts(n,a),c=new Array(o);for(let n=0,t=a.length;nn/u);let m=t-1,_=[],M=0,f=2*t;for(;m!=t&&M<4&&0!=m;){const n=f/m;if(n>1e3)break;f=Math.round(Math.max(t*n,t));const e=s.range(0,f),i=r.map(g,n=>n*(f-1));_=r.interpolate(e,i,c);m=s.uniq(_).length-1,M++}if(0==m){_=[e,i];for(let n=0;nthis._sorted_dirty=!0)}v_compute(t){const e=new i.NumberArray(t.length);for(let r=0;rs*(e[t]-e[r])),this._x_sorted=new i.NumberArray(n),this._y_sorted=new i.NumberArray(n);for(let t=0;tthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(t==this._x_sorted[0])return this._y_sorted[0];const s=_.find_last_index(this._x_sorted,s=>sthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}let e;switch(this.mode){case\"after\":e=i.find_last_index(this._x_sorted,e=>t>=e);break;case\"before\":e=i.find_index(this._x_sorted,e=>t<=e);break;case\"center\":{const r=this._x_sorted.map(e=>Math.abs(e-t)),s=i.min(r);e=i.find_index(r,t=>s===t);break}default:throw new Error(\"unknown mode: \"+this.mode)}return-1!=e?this._y_sorted[e]:NaN}}r.StepInterpolator=n,n.__name__=\"StepInterpolator\",n.init_StepInterpolator()},\n", - " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=e(1),a=e(147),i=e(24),s=e(9),o=e(12),c=r.__importStar(e(18));class _ extends a.Scale{constructor(e){super(e)}static init_LinearInterpolationScale(){this.internal({binning:[c.Array]})}compute(e){return e}v_compute(e){const t=o.norm(e,this.source_range.start,this.source_range.end),n=s.linspace(0,1,this.binning.length),r=o.interpolate(t,n,this.binning),a=o.norm(r,this.source_range.start,this.source_range.end),c=this.target_range.end-this.target_range.start,_=o.map(a,e=>this.target_range.start+e*c);return new i.NumberArray(_)}invert(e){return e}v_invert(e){return new i.NumberArray(e)}}n.LinearInterpolationScale=_,_.__name__=\"LinearInterpolationScale\",_.init_LinearInterpolationScale()},\n", - " function _(t,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const a=t(146),r=t(24);class s extends a.ContinuousScale{constructor(t){super(t)}compute(t){const[e,o,a,r]=this._compute_state();let s;if(0==a)s=0;else{const n=(Math.log(t)-r)/a;s=isFinite(n)?n*e+o:NaN}return s}v_compute(t){const[e,o,a,s]=this._compute_state(),n=new r.NumberArray(t.length);if(0==a)for(let e=0;ethis.render()):this.connect(this.model.change,()=>this.plot_view.request_render())}render(){this.model.visible||\"css\"!=this.model.render_mode||a.undisplay(this.el),super.render()}_calculate_text_dimensions(e,t){const{width:s}=e.measureText(t),{height:i}=o.measure_font(this.visuals.text.font_value());return[s,i]}_calculate_bounding_box_dimensions(e,t){const[s,i]=this._calculate_text_dimensions(e,t);let l,a;switch(e.textAlign){case\"left\":l=0;break;case\"center\":l=-s/2;break;case\"right\":l=-s;break;default:r.unreachable()}switch(e.textBaseline){case\"top\":a=0;break;case\"middle\":a=-.5*i;break;case\"bottom\":a=-1*i;break;case\"alphabetic\":a=-.8*i;break;case\"hanging\":a=-.17*i;break;case\"ideographic\":a=-.83*i;break;default:r.unreachable()}return[l,a,s,i]}_canvas_text(e,t,s,i,l){this.visuals.text.set_value(e);const a=this._calculate_bounding_box_dimensions(e,t);e.save(),e.beginPath(),e.translate(s,i),l&&e.rotate(l),e.rect(a[0],a[1],a[2],a[3]),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),e.fill()),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(e),e.stroke()),this.visuals.text.doit&&(this.visuals.text.set_value(e),e.fillText(t,0,0)),e.restore()}_css_text(e,t,s,i,l){const{el:n}=this;r.assert(null!=n),a.undisplay(n),this.visuals.text.set_value(e);const o=this._calculate_bounding_box_dimensions(e,t),_=this.visuals.border_line.line_dash.value().length<2?\"solid\":\"dashed\";this.visuals.border_line.set_value(e),this.visuals.background_fill.set_value(e),n.style.position=\"absolute\",n.style.left=s+o[0]+\"px\",n.style.top=i+o[1]+\"px\",n.style.color=\"\"+this.visuals.text.text_color.value(),n.style.opacity=\"\"+this.visuals.text.text_alpha.value(),n.style.font=\"\"+this.visuals.text.font_value(),n.style.lineHeight=\"normal\",l&&(n.style.transform=`rotate(${l}rad)`),this.visuals.background_fill.doit&&(n.style.backgroundColor=\"\"+this.visuals.background_fill.color_value()),this.visuals.border_line.doit&&(n.style.borderStyle=\"\"+_,n.style.borderWidth=this.visuals.border_line.line_width.value()+\"px\",n.style.borderColor=\"\"+this.visuals.border_line.color_value()),n.textContent=t,a.display(n)}}s.TextAnnotationView=_,_.__name__=\"TextAnnotationView\";class u extends l.Annotation{constructor(e){super(e)}static init_TextAnnotation(){this.define({render_mode:[n.RenderMode,\"canvas\"]})}}s.TextAnnotation=u,u.__name__=\"TextAnnotation\",u.init_TextAnnotation()},\n", - " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),o=t(161),l=t(85),a=i.__importStar(t(28)),n=t(72),r=i.__importStar(t(18));class _ extends o.TextAnnotationView{initialize(){if(super.initialize(),this.set_data(this.model.source),\"css\"==this.model.render_mode)for(let t=0,e=this._text.length;t{this.set_data(this.model.source),this.render()}),this.connect(this.model.source.streaming,()=>{this.set_data(this.model.source),this.render()}),this.connect(this.model.source.patching,()=>{this.set_data(this.model.source),this.render()}),this.connect(this.model.source.change,()=>{this.set_data(this.model.source),this.render()})):(this.connect(this.model.change,()=>{this.set_data(this.model.source),this.plot_view.request_render()}),this.connect(this.model.source.streaming,()=>{this.set_data(this.model.source),this.plot_view.request_render()}),this.connect(this.model.source.patching,()=>{this.set_data(this.model.source),this.plot_view.request_render()}),this.connect(this.model.source.change,()=>{this.set_data(this.model.source),this.plot_view.request_render()}))}set_data(t){super.set_data(t),this.visuals.warm_cache(t)}_map_data(){const t=this.coordinates.x_scale,e=this.coordinates.y_scale,s=null!=this.panel?this.panel:this.plot_view.frame;return[\"data\"==this.model.x_units?t.v_compute(this._x):s.xview.v_compute(this._x),\"data\"==this.model.y_units?e.v_compute(this._y):s.yview.v_compute(this._y)]}_render(){const t=\"canvas\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),{ctx:e}=this.layer,[s,i]=this._map_data();for(let o=0,l=this._text.length;onew l.ColumnDataSource]}),this.override({background_fill_color:null,border_line_color:null})}}s.LabelSet=h,h.__name__=\"LabelSet\",h.init_LabelSet()},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),l=t(36),n=s.__importStar(t(28)),h=s.__importStar(t(18)),a=t(15),_=t(159),o=t(79),r=t(9),d=t(8),c=t(11);class g extends l.AnnotationView{cursor(t,e){return\"none\"==this.model.click_policy?null:\"pointer\"}get legend_padding(){return null!=this.visuals.border_line.line_color.value()?this.model.padding:0}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_render()),this.connect(this.model.item_change,()=>this.plot_view.request_render())}compute_legend_bbox(){const t=this.model.get_legend_names(),{glyph_height:e,glyph_width:i}=this.model,{label_height:s,label_width:l}=this.model;this.max_label_height=r.max([_.measure_font(this.visuals.label_text.font_value()).height,s,e]);const{ctx:n}=this.layer;n.save(),this.visuals.label_text.set_value(n),this.text_widths=new Map;for(const e of t)this.text_widths.set(e,r.max([n.measureText(e).width,l]));this.visuals.title_text.set_value(n),this.title_height=this.model.title?_.measure_font(this.visuals.title_text.font_value()).height+this.model.title_standoff:0,this.title_width=this.model.title?n.measureText(this.model.title).width:0,n.restore();const h=Math.max(r.max([...this.text_widths.values()]),0),a=this.model.margin,{legend_padding:g}=this,m=this.model.spacing,{label_standoff:b}=this.model;let u,f;if(\"vertical\"==this.model.orientation)u=t.length*this.max_label_height+Math.max(t.length-1,0)*m+2*g+this.title_height,f=r.max([h+i+b+2*g,this.title_width+2*g]);else{let e=2*g+Math.max(t.length-1,0)*m;for(const[,t]of this.text_widths)e+=r.max([t,l])+i+b;f=r.max([this.title_width+2*g,e]),u=this.max_label_height+this.title_height+2*g}const x=null!=this.panel?this.panel:this.plot_view.frame,[p,w]=x.bbox.ranges,{location:v}=this.model;let y,k;if(d.isString(v))switch(v){case\"top_left\":y=p.start+a,k=w.start+a;break;case\"top_center\":y=(p.end+p.start)/2-f/2,k=w.start+a;break;case\"top_right\":y=p.end-a-f,k=w.start+a;break;case\"bottom_right\":y=p.end-a-f,k=w.end-a-u;break;case\"bottom_center\":y=(p.end+p.start)/2-f/2,k=w.end-a-u;break;case\"bottom_left\":y=p.start+a,k=w.end-a-u;break;case\"center_left\":y=p.start+a,k=(w.end+w.start)/2-u/2;break;case\"center\":y=(p.end+p.start)/2-f/2,k=(w.end+w.start)/2-u/2;break;case\"center_right\":y=p.end-a-f,k=(w.end+w.start)/2-u/2}else if(d.isArray(v)&&2==v.length){const[t,e]=v;y=x.xview.compute(t),k=x.yview.compute(e)-u}else c.unreachable();return new o.BBox({left:y,top:k,width:f,height:u})}interactive_bbox(){return this.compute_legend_bbox()}interactive_hit(t,e){return this.interactive_bbox().contains(t,e)}on_hit(t,e){let i;const{glyph_width:s}=this.model,{legend_padding:l}=this,n=this.model.spacing,{label_standoff:h}=this.model;let a=i=l;const _=this.compute_legend_bbox(),r=\"vertical\"==this.model.orientation;for(const d of this.model.items){const c=d.get_labels_list_from_label_prop();for(const g of c){const c=_.x+a,m=_.y+i+this.title_height;let b,u;[b,u]=r?[_.width-2*l,this.max_label_height]:[this.text_widths.get(g)+s+h,this.max_label_height];if(new o.BBox({left:c,top:m,width:b,height:u}).contains(t,e)){switch(this.model.click_policy){case\"hide\":for(const t of d.renderers)t.visible=!t.visible;break;case\"mute\":for(const t of d.renderers)t.muted=!t.muted}return!0}r?i+=this.max_label_height+n:a+=this.text_widths.get(g)+s+h+n}}return!1}_render(){if(0==this.model.items.length)return;for(const t of this.model.items)t.legend=this.model;const{ctx:t}=this.layer,e=this.compute_legend_bbox();t.save(),this._draw_legend_box(t,e),this._draw_legend_items(t,e),this.model.title&&this._draw_title(t,e),t.restore()}_draw_legend_box(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.set_value(t),t.fill(),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.stroke())}_draw_legend_items(t,e){const{glyph_width:i,glyph_height:s}=this.model,{legend_padding:l}=this,n=this.model.spacing,{label_standoff:h}=this.model;let a=l,_=l;const o=\"vertical\"==this.model.orientation;for(const d of this.model.items){const c=d.get_labels_list_from_label_prop(),g=d.get_field_from_label_prop();if(0==c.length)continue;const m=(()=>{switch(this.model.click_policy){case\"none\":return!0;case\"hide\":return r.every(d.renderers,t=>t.visible);case\"mute\":return r.every(d.renderers,t=>!t.muted)}})();for(const r of c){const c=e.x+a,b=e.y+_+this.title_height,u=c+i,f=b+s;o?_+=this.max_label_height+n:a+=this.text_widths.get(r)+i+h+n,this.visuals.label_text.set_value(t),t.fillText(r,u+h,b+this.max_label_height/2);for(const e of d.renderers){this.plot_view.renderer_views.get(e).draw_legend(t,c,u,b,f,g,r,d.index)}if(!m){let s,n;[s,n]=o?[e.width-2*l,this.max_label_height]:[this.text_widths.get(r)+i+h,this.max_label_height],t.beginPath(),t.rect(c,b,s,n),this.visuals.inactive_fill.set_value(t),t.fill()}}}}_draw_title(t,e){this.visuals.title_text.doit&&(t.save(),t.translate(e.x0,e.y0+this.title_height),this.visuals.title_text.set_value(t),t.fillText(this.model.title,this.legend_padding,this.legend_padding-this.model.title_standoff),t.restore())}_get_size(){const{width:t,height:e}=this.compute_legend_bbox();return{width:t+2*this.model.margin,height:e+2*this.model.margin}}}i.LegendView=g,g.__name__=\"LegendView\";class m extends l.Annotation{constructor(t){super(t)}initialize(){super.initialize(),this.item_change=new a.Signal0(this,\"item_change\")}static init_Legend(){this.prototype.default_view=g,this.mixins([[\"label_\",n.Text],[\"title_\",n.Text],[\"inactive_\",n.Fill],[\"border_\",n.Line],[\"background_\",n.Fill]]),this.define({orientation:[h.Orientation,\"vertical\"],location:[h.Any,\"top_right\"],title:[h.String],title_standoff:[h.Number,5],label_standoff:[h.Number,5],glyph_height:[h.Number,20],glyph_width:[h.Number,20],label_height:[h.Number,20],label_width:[h.Number,20],margin:[h.Number,10],padding:[h.Number,10],spacing:[h.Number,3],items:[h.Array,[]],click_policy:[h.Any,\"none\"]}),this.override({border_line_color:\"#e5e5e5\",border_line_alpha:.5,border_line_width:1,background_fill_color:\"#ffffff\",background_fill_alpha:.95,inactive_fill_color:\"white\",inactive_fill_alpha:.7,label_text_font_size:\"13px\",label_text_baseline:\"middle\",title_text_font_size:\"13px\",title_text_font_style:\"italic\"})}get_legend_names(){const t=[];for(const e of this.items){const i=e.get_labels_list_from_label_prop();t.push(...i)}return t}}i.Legend=m,m.__name__=\"Legend\",m.init_Legend()},\n", - " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(1),l=e(81),i=e(86),s=e(165),o=t.__importStar(e(18)),_=e(19),a=e(9);class u extends l.Model{constructor(e){super(e)}static init_LegendItem(){this.define({label:[o.StringSpec,null],renderers:[o.Array,[]],index:[o.Number,null]})}_check_data_sources_on_renderers(){if(null!=this.get_field_from_label_prop()){if(this.renderers.length<1)return!1;const e=this.renderers[0].data_source;if(null!=e)for(const r of this.renderers)if(r.data_source!=e)return!1}return!0}_check_field_label_on_data_source(){const e=this.get_field_from_label_prop();if(null!=e){if(this.renderers.length<1)return!1;const r=this.renderers[0].data_source;if(null!=r&&!a.includes(r.columns(),e))return!1}return!0}initialize(){super.initialize(),this.legend=null,this.connect(this.change,()=>{var e;return null===(e=this.legend)||void 0===e?void 0:e.item_change.emit()});this._check_data_sources_on_renderers()||_.logger.error(\"Non matching data sources on legend item renderers\");this._check_field_label_on_data_source()||_.logger.error(\"Bad column name on label: \"+this.label)}get_field_from_label_prop(){const{label:e}=this;return s.isField(e)?e.field:null}get_labels_list_from_label_prop(){if(s.isValue(this.label)){const{value:e}=this.label;return null!=e?[e]:[]}const e=this.get_field_from_label_prop();if(null!=e){let r;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\"No source found\"];if(r=this.renderers[0].data_source,r instanceof i.ColumnarDataSource){const n=r.get_column(e);return null!=n?a.uniq(Array.from(n)):[\"Invalid field\"]}}return[]}}n.LegendItem=u,u.__name__=\"LegendItem\",u.init_LegendItem()},\n", - " function _(e,i,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(8);n.isValue=function(e){return t.isPlainObject(e)&&\"value\"in e},n.isField=function(e){return t.isPlainObject(e)&&\"field\"in e}},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),s=t(36),o=n.__importStar(t(28)),l=t(15),a=n.__importStar(t(18));class r extends s.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_render()),this.connect(this.model.data_update,()=>this.plot_view.request_render())}_render(){const{xs:t,ys:e}=this.model;if(t.length!=e.length)return;if(t.length<3||e.length<3)return;const{frame:i}=this.plot_view,{ctx:n}=this.layer;for(let s=0,o=t.length;sthis.plot_view.request_render())}_render(){const e=this.model.gradient,t=this.model.y_intercept;if(null==e||null==t)return;const{frame:i}=this.plot_view,n=this.coordinates.x_scale,o=this.coordinates.y_scale,s=i.bbox.top,l=s+i.bbox.height,r=(o.invert(s)-t)/e,_=(o.invert(l)-t)/e,a=n.compute(r),c=n.compute(_),{ctx:p}=this.layer;p.save(),p.beginPath(),this.visuals.line.set_value(p),p.moveTo(a,s),p.lineTo(c,l),p.stroke(),p.restore()}}i.SlopeView=r,r.__name__=\"SlopeView\";class _ extends o.Annotation{constructor(e){super(e)}static init_Slope(){this.prototype.default_view=r,this.mixins(s.Line),this.define({gradient:[l.Number,null],y_intercept:[l.Number,null]}),this.override({line_color:\"black\"})}}i.Slope=_,_.__name__=\"Slope\",_.init_Slope()},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),o=e(36),s=n.__importStar(e(28)),a=n.__importStar(e(18));class l extends o.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_paint(this))}_render(){const{location:e}=this.model;if(null==e)return;const{frame:t}=this.plot_view,i=this.coordinates.x_scale,n=this.coordinates.y_scale,o=(t,i)=>\"data\"==this.model.location_units?t.compute(e):this.model.for_hover?e:i.compute(e);let s,a,l,r;\"width\"==this.model.dimension?(l=o(n,t.yview),a=t.bbox.left,r=t.bbox.width,s=this.model.properties.line_width.value()):(l=t.bbox.top,a=o(i,t.xview),r=this.model.properties.line_width.value(),s=t.bbox.height);const{ctx:_}=this.layer;_.save(),_.beginPath(),this.visuals.line.set_value(_),_.moveTo(a,l),\"width\"==this.model.dimension?_.lineTo(a+r,l):_.lineTo(a,l+s),_.stroke(),_.restore()}}i.SpanView=l,l.__name__=\"SpanView\";class r extends o.Annotation{constructor(e){super(e)}static init_Span(){this.prototype.default_view=l,this.mixins(s.Line),this.define({render_mode:[a.RenderMode,\"canvas\"],location:[a.Number,null],location_units:[a.SpatialUnits,\"data\"],dimension:[a.Dimension,\"width\"]}),this.override({line_color:\"black\"}),this.internal({for_hover:[a.Boolean,!1]})}}i.Span=r,r.__name__=\"Span\",r.init_Span()},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const l=t(1),s=t(161),a=t(74),n=l.__importStar(t(28)),o=l.__importStar(t(18));class r extends s.TextAnnotationView{initialize(){super.initialize(),this.visuals.text=new a.Text(this.model)}_get_location(){const t=this.panel,e=this.model.offset;let i,l;const{bbox:s}=t;switch(t.side){case\"above\":case\"below\":switch(this.model.vertical_align){case\"top\":l=s.top+5;break;case\"middle\":l=s.vcenter;break;case\"bottom\":l=s.bottom-5}switch(this.model.align){case\"left\":i=s.left+e;break;case\"center\":i=s.hcenter;break;case\"right\":i=s.right-e}break;case\"left\":switch(this.model.vertical_align){case\"top\":i=s.left-5;break;case\"middle\":i=s.hcenter;break;case\"bottom\":i=s.right+5}switch(this.model.align){case\"left\":l=s.bottom-e;break;case\"center\":l=s.vcenter;break;case\"right\":l=s.top+e}break;case\"right\":switch(this.model.vertical_align){case\"top\":i=s.right-5;break;case\"middle\":i=s.hcenter;break;case\"bottom\":i=s.left+5}switch(this.model.align){case\"left\":l=s.top+e;break;case\"center\":l=s.vcenter;break;case\"right\":l=s.bottom-e}}return[i,l]}_render(){const{text:t}=this.model;if(null==t||0==t.length)return;this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;const[e,i]=this._get_location(),l=this.panel.get_label_angle_heuristic(\"parallel\");(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,t,e,i,l)}_get_size(){const{text:t}=this.model;if(null==t||0==t.length)return{width:0,height:0};{this.visuals.text.set_value(this.layer.ctx);const{width:e,ascent:i}=this.layer.ctx.measureText(t);return{width:e,height:i*this.visuals.text.text_line_height.value()+10}}}}i.TitleView=r,r.__name__=\"TitleView\";class c extends s.TextAnnotation{constructor(t){super(t)}static init_Title(){this.prototype.default_view=r,this.mixins([[\"border_\",n.Line],[\"background_\",n.Fill]]),this.define({text:[o.String],text_font:[o.Font,\"helvetica\"],text_font_size:[o.StringSpec,\"13px\"],text_font_style:[o.FontStyle,\"bold\"],text_color:[o.ColorSpec,\"#444444\"],text_alpha:[o.NumberSpec,1],text_line_height:[o.Number,1],vertical_align:[o.VerticalAlign,\"bottom\"],align:[o.TextAlign,\"left\"],offset:[o.Number,0]}),this.override({background_fill_color:null,border_line_color:null}),this.internal({text_align:[o.TextAlign,\"left\"],text_baseline:[o.TextBaseline,\"bottom\"]})}}i.Title=c,c.__name__=\"Title\",c.init_Title()},\n", - " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(1),l=e(36),s=e(115),a=e(72),n=e(79),r=o.__importStar(e(18));class _ extends l.AnnotationView{constructor(){super(...arguments),this.rotate=!0,this._invalidate_toolbar=!0,this._previous_bbox=new n.BBox}initialize(){super.initialize(),this.el=a.div(),this.plot_view.canvas_view.add_event(this.el)}async lazy_initialize(){this._toolbar_view=await s.build_view(this.model.toolbar,{parent:this}),this.plot_view.visibility_callbacks.push(e=>this._toolbar_view.set_visibility(e))}remove(){this._toolbar_view.remove(),a.remove(this.el),super.remove()}render(){this.model.visible||a.undisplay(this.el),super.render()}_render(){const{bbox:e}=this.panel;this._previous_bbox.equals(e)||(a.position(this.el,e),this._previous_bbox=e),this._invalidate_toolbar&&(this.el.style.position=\"absolute\",this.el.style.overflow=\"hidden\",this._toolbar_view.render(),a.empty(this.el),this.el.appendChild(this._toolbar_view.el),this._invalidate_toolbar=!1),a.display(this.el)}_get_size(){const{tools:e,logo:i}=this.model.toolbar;return{width:30*e.length+(null!=i?25:0),height:30}}}t.ToolbarPanelView=_,_.__name__=\"ToolbarPanelView\";class h extends l.Annotation{constructor(e){super(e)}static init_ToolbarPanel(){this.prototype.default_view=_,this.define({toolbar:[r.Instance]})}}t.ToolbarPanel=h,h.__name__=\"ToolbarPanel\",h.init_ToolbarPanel()},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),l=t(36),o=t(72),n=s.__importStar(t(18)),a=t(172),h=t(173),r=s.__importDefault(t(174));class c extends l.AnnotationView{initialize(){super.initialize(),this.el=o.div({class:a.bk_tooltip}),o.undisplay(this.el),this.plot_view.canvas_view.add_overlay(this.el)}remove(){o.remove(this.el),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.content.change,()=>this.render()),this.connect(this.model.properties.position.change,()=>this._reposition())}styles(){return[...super.styles(),r.default]}render(){this.model.visible||o.undisplay(this.el),super.render()}_render(){const{content:t}=this.model;null!=t?(o.empty(this.el),o.classes(this.el).toggle(a.bk_tooltip_custom,this.model.custom),this.el.appendChild(t),this.model.show_arrow&&this.el.classList.add(a.bk_tooltip_arrow)):o.undisplay(this.el)}_reposition(){const{position:t}=this.model;if(null==t)return void o.undisplay(this.el);const[e,i]=t,s=(()=>{const t=this.parent.layout.bbox.relativize(),{attachment:s}=this.model;switch(s){case\"horizontal\":return eo.div()],custom:[n.Any]})}clear(){this.position=null}}i.Tooltip=d,d.__name__=\"Tooltip\",d.init_Tooltip()},\n", - " function _(o,t,l){Object.defineProperty(l,\"__esModule\",{value:!0}),l.bk_tooltip=\"bk-tooltip\",l.bk_tooltip_arrow=\"bk-tooltip-arrow\",l.bk_tooltip_custom=\"bk-tooltip-custom\",l.bk_tooltip_row_label=\"bk-tooltip-row-label\",l.bk_tooltip_row_value=\"bk-tooltip-row-value\",l.bk_tooltip_color_block=\"bk-tooltip-color-block\"},\n", - " function _(e,b,k){Object.defineProperty(k,\"__esModule\",{value:!0}),k.bk_active=\"bk-active\",k.bk_inline=\"bk-inline\",k.bk_left=\"bk-left\",k.bk_right=\"bk-right\",k.bk_above=\"bk-above\",k.bk_below=\"bk-below\",k.bk_up=\"bk-up\",k.bk_down=\"bk-down\",k.bk_side=function(e){switch(e){case\"above\":return k.bk_above;case\"below\":return k.bk_below;case\"left\":return k.bk_left;case\"right\":return k.bk_right}}},\n", - " function _(o,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root {\\n /* Same border color used everywhere */\\n /* Gray of icons */\\n}\\n.bk-root .bk-tooltip {\\n font-weight: 300;\\n font-size: 12px;\\n position: absolute;\\n padding: 5px;\\n border: 1px solid #e5e5e5;\\n color: #2f2f2f;\\n background-color: white;\\n pointer-events: none;\\n opacity: 0.95;\\n z-index: 100;\\n}\\n.bk-root .bk-tooltip > div:not(:first-child) {\\n /* gives space when multiple elements are being hovered over */\\n margin-top: 5px;\\n border-top: #e5e5e5 1px dashed;\\n}\\n.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before {\\n position: absolute;\\n margin: -7px 0 0 0;\\n top: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 7px 0 7px 0;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n left: -10px;\\n border-right-width: 10px;\\n border-right-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-left::before {\\n left: -10px;\\n border-right-width: 10px;\\n border-right-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after {\\n position: absolute;\\n margin: -7px 0 0 0;\\n top: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 7px 0 7px 0;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n right: -10px;\\n border-left-width: 10px;\\n border-left-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-right::after {\\n right: -10px;\\n border-left-width: 10px;\\n border-left-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-above::before {\\n position: absolute;\\n margin: 0 0 0 -7px;\\n left: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 0 7px 0 7px;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n top: -10px;\\n border-bottom-width: 10px;\\n border-bottom-color: #909599;\\n}\\n.bk-root .bk-tooltip.bk-below::after {\\n position: absolute;\\n margin: 0 0 0 -7px;\\n left: 50%;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 0 7px 0 7px;\\n border-color: transparent;\\n content: \" \";\\n display: block;\\n bottom: -10px;\\n border-top-width: 10px;\\n border-top-color: #909599;\\n}\\n.bk-root .bk-tooltip-row-label {\\n text-align: right;\\n color: #26aae1;\\n /* blue from toolbar highlighting */\\n}\\n.bk-root .bk-tooltip-row-value {\\n color: default;\\n /* seems to be necessary for notebook */\\n}\\n.bk-root .bk-tooltip-color-block {\\n width: 12px;\\n height: 12px;\\n margin-left: 5px;\\n margin-right: 5px;\\n outline: #dddddd solid 1px;\\n display: inline-block;\\n}\\n'},\n", - " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=e(1),r=e(123),o=e(84),h=e(28),n=i.__importStar(e(18));class l extends r.UpperLowerView{connect_signals(){super.connect_signals(),this.connect(this.model.source.streaming,()=>this.set_data(this.model.source)),this.connect(this.model.source.patching,()=>this.set_data(this.model.source)),this.connect(this.model.source.change,()=>this.set_data(this.model.source))}_render(){this._map_data();const{ctx:e}=this.layer;if(this.visuals.line.doit)for(let s=0,t=this._lower_sx.length;snew o.TeeHead({level:\"underlay\",size:10})],upper_head:[n.Instance,()=>new o.TeeHead({level:\"underlay\",size:10})]}),this.override({level:\"underlay\"})}}t.Whisker=_,_.__name__=\"Whisker\",_.init_Whisker()},\n", - " function _(i,a,e){Object.defineProperty(e,\"__esModule\",{value:!0});var r=i(177);e.Axis=r.Axis;var s=i(179);e.CategoricalAxis=s.CategoricalAxis;var x=i(182);e.ContinuousAxis=x.ContinuousAxis;var A=i(183);e.DatetimeAxis=A.DatetimeAxis;var o=i(184);e.LinearAxis=o.LinearAxis;var t=i(197);e.LogAxis=t.LogAxis;var n=i(200);e.MercatorAxis=n.MercatorAxis},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),a=t(178),l=s.__importStar(t(28)),n=s.__importStar(t(18)),o=t(9),r=t(8),_=t(98),{abs:h,min:c,max:d}=Math;class m extends a.GuideRendererView{constructor(){super(...arguments),this.rotate=!0}get panel(){return this.layout}get is_renderable(){const[t,e]=this.ranges;return t.is_valid&&e.is_valid}_render(){var t;if(!this.is_renderable)return;const e={tick:this._tick_extent(),tick_label:this._tick_label_extents(),axis_label:this._axis_label_extent()},{tick_coords:i}=this,s=this.layer.ctx;s.save(),this._draw_rule(s,e),this._draw_major_ticks(s,e,i),this._draw_minor_ticks(s,e,i),this._draw_major_labels(s,e,i),this._draw_axis_label(s,e,i),null===(t=this._paint)||void 0===t||t.call(this,s,e,i),s.restore()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.plot_view.request_layout())}get_size(){if(this.model.visible&&null==this.model.fixed_location&&this.is_renderable){const t=this._get_size();return{width:0,height:Math.round(t)}}return{width:0,height:0}}_get_size(){return this._tick_extent()+this._tick_label_extent()+this._axis_label_extent()}get needs_clip(){return null!=this.model.fixed_location}_draw_rule(t,e){if(!this.visuals.axis_line.doit)return;const[i,s]=this.rule_coords,[a,l]=this.coordinates.map_to_screen(i,s),[n,o]=this.normals,[r,_]=this.offsets;this.visuals.axis_line.set_value(t),t.beginPath(),t.moveTo(Math.round(a[0]+n*r),Math.round(l[0]+o*_));for(let e=1;ec&&(c=o)}return c>0&&(c+=s),c}get normals(){return this.panel.normals}get dimension(){return this.panel.dimension}compute_labels(t){const e=this.model.formatter.doFormat(t,this);for(let i=0;ih(n-o)?(t=d(c(a,l),n),s=c(d(a,l),o)):(t=c(a,l),s=d(a,l)),[t,s]}}get rule_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,l=[new Array(2),new Array(2)];return l[t][0]=Math.max(s,i.min),l[t][1]=Math.min(a,i.max),l[t][0]>l[t][1]&&(l[t][0]=l[t][1]=NaN),l[e][0]=this.loc,l[e][1]=this.loc,l}get tick_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,l=this.model.ticker.get_ticks(s,a,i,this.loc,{}),n=l.major,o=l.minor,r=[[],[]],_=[[],[]],[h,c]=[i.min,i.max];for(let i=0;ic||(r[t].push(n[i]),r[e].push(this.loc));for(let i=0;ic||(_[t].push(o[i]),_[e].push(this.loc));return{major:r,minor:_}}get loc(){const{fixed_location:t}=this.model;if(null!=t){if(r.isNumber(t))return t;const[,e]=this.ranges;if(e instanceof _.FactorRange)return e.synthetic(t);throw new Error(\"unexpected\")}const[,e]=this.ranges;switch(this.panel.side){case\"left\":case\"below\":return e.start;case\"right\":case\"above\":return e.end}}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box})}}i.AxisView=m,m.__name__=\"AxisView\";class b extends a.GuideRenderer{constructor(t){super(t)}static init_Axis(){this.prototype.default_view=m,this.mixins([[\"axis_\",l.Line],[\"major_tick_\",l.Line],[\"minor_tick_\",l.Line],[\"major_label_\",l.Text],[\"axis_label_\",l.Text]]),this.define({bounds:[n.Any,\"auto\"],ticker:[n.Instance],formatter:[n.Instance],axis_label:[n.String,\"\"],axis_label_standoff:[n.Int,5],major_label_standoff:[n.Int,5],major_label_orientation:[n.Any,\"horizontal\"],major_label_overrides:[n.Any,{}],major_tick_in:[n.Number,2],major_tick_out:[n.Number,6],minor_tick_in:[n.Number,0],minor_tick_out:[n.Number,4],fixed_location:[n.Any,null]}),this.override({axis_line_color:\"black\",major_tick_line_color:\"black\",minor_tick_line_color:\"black\",major_label_text_font_size:\"11px\",major_label_text_align:\"center\",major_label_text_baseline:\"alphabetic\",axis_label_text_font_size:\"13px\",axis_label_text_font_style:\"italic\"})}}i.Axis=b,b.__name__=\"Axis\",b.init_Axis()},\n", - " function _(e,r,d){Object.defineProperty(d,\"__esModule\",{value:!0});const i=e(70);class n extends i.RendererView{}d.GuideRendererView=n,n.__name__=\"GuideRendererView\";class t extends i.Renderer{constructor(e){super(e)}static init_GuideRenderer(){this.override({level:\"guide\"})}}d.GuideRenderer=t,t.__name__=\"GuideRenderer\",t.init_GuideRenderer()},\n", - " function _(t,s,o){Object.defineProperty(o,\"__esModule\",{value:!0});const e=t(1),i=t(177),r=t(180),a=t(181),l=e.__importStar(t(28)),_=e.__importStar(t(18));class n extends i.AxisView{_paint(t,s,o){this._draw_group_separators(t,s,o)}_draw_group_separators(t,s,o){const[e]=this.ranges,[i,r]=this.computed_bounds;if(!e.tops||e.tops.length<2||!this.visuals.separator_line.doit)return;const a=this.dimension,l=(a+1)%2,_=[[],[]];let n=0;for(let t=0;ti&&ht[1]),s=this.model.formatter.doFormat(t,this);a.push([s,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([i.tops,r.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){const t=i.major.map(t=>t[2]),s=this.model.formatter.doFormat(t,this),o=i.mids.map(t=>t[1]);a.push([s,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([o,r.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),a.push([i.tops,r.tops,this.model.group_label_orientation,this.visuals.group_text])}return a}get tick_coords(){const t=this.dimension,s=(t+1)%2,[o]=this.ranges,[e,i]=this.computed_bounds,r=this.model.ticker.get_ticks(e,i,o,this.loc,{}),a={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return a.major[t]=r.major,a.major[s]=r.major.map(t=>this.loc),3==o.levels&&(a.mids[t]=r.mids,a.mids[s]=r.mids.map(t=>this.loc)),o.levels>1&&(a.tops[t]=r.tops,a.tops[s]=r.tops.map(t=>this.loc)),a}}o.CategoricalAxisView=n,n.__name__=\"CategoricalAxisView\";class h extends i.Axis{constructor(t){super(t)}static init_CategoricalAxis(){this.prototype.default_view=n,this.mixins([[\"separator_\",l.Line],[\"group_\",l.Text],[\"subgroup_\",l.Text]]),this.define({group_label_orientation:[_.Any,\"parallel\"],subgroup_label_orientation:[_.Any,\"parallel\"]}),this.override({ticker:()=>new r.CategoricalTicker,formatter:()=>new a.CategoricalTickFormatter,separator_line_color:\"lightgrey\",separator_line_width:2,group_text_font_style:\"bold\",group_text_font_size:\"11px\",group_text_color:\"grey\",subgroup_text_font_style:\"bold\",subgroup_text_font_size:\"11px\"})}}o.CategoricalAxis=h,h.__name__=\"CategoricalAxis\",h.init_CategoricalAxis()},\n", - " function _(t,c,e){Object.defineProperty(e,\"__esModule\",{value:!0});const o=t(129);class s extends o.Ticker{constructor(t){super(t)}get_ticks(t,c,e,o,s){return{major:this._collect(e.factors,e,t,c),minor:[],tops:this._collect(e.tops||[],e,t,c),mids:this._collect(e.mids||[],e,t,c)}}_collect(t,c,e,o){const s=[];for(const r of t){const t=c.synthetic(r);t>e&&tnew r.DatetimeTicker,formatter:()=>new a.DatetimeTickFormatter})}}i.DatetimeAxis=_,_.__name__=\"DatetimeAxis\",_.init_DatetimeAxis()},\n", - " function _(e,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=e(177),n=e(182),r=e(130),a=e(126);class _ extends t.AxisView{}s.LinearAxisView=_,_.__name__=\"LinearAxisView\";class c extends n.ContinuousAxis{constructor(e){super(e)}static init_LinearAxis(){this.prototype.default_view=_,this.override({ticker:()=>new a.BasicTicker,formatter:()=>new r.BasicTickFormatter})}}s.LinearAxis=c,c.__name__=\"LinearAxis\",c.init_LinearAxis()},\n", - " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const r=t(1),i=r.__importDefault(t(186)),n=t(131),o=t(19),a=r.__importStar(t(18)),c=t(187),m=t(9),u=t(8);function h(t){return i.default(t,\"%Y %m %d %H %M %S\").split(/\\s+/).map(t=>parseInt(t,10))}function d(t,s){if(u.isFunction(s))return s(t);{const e=c.sprintf(\"$1%06d\",function(t){return Math.round(t/1e3%1*1e6)}(t));return-1==(s=s.replace(/((^|[^%])(%%)*)%f/,e)).indexOf(\"%\")?s:i.default(t,s)}}const l=[\"microseconds\",\"milliseconds\",\"seconds\",\"minsec\",\"minutes\",\"hourmin\",\"hours\",\"days\",\"months\",\"years\"];class _ extends n.TickFormatter{constructor(t){super(t),this.strip_leading_zeros=!0}static init_DatetimeTickFormatter(){this.define({microseconds:[a.Array,[\"%fus\"]],milliseconds:[a.Array,[\"%3Nms\",\"%S.%3Ns\"]],seconds:[a.Array,[\"%Ss\"]],minsec:[a.Array,[\":%M:%S\"]],minutes:[a.Array,[\":%M\",\"%Mm\"]],hourmin:[a.Array,[\"%H:%M\"]],hours:[a.Array,[\"%Hh\",\"%H:%M\"]],days:[a.Array,[\"%m/%d\",\"%a%d\"]],months:[a.Array,[\"%m/%Y\",\"%b %Y\"]],years:[a.Array,[\"%Y\"]]})}initialize(){super.initialize(),this._update_width_formats()}_update_width_formats(){const t=+i.default(new Date),s=function(s){const e=s.map(s=>d(t,s).length),r=m.sort_by(m.zip(e,s),([t])=>t);return m.unzip(r)};this._width_formats={microseconds:s(this.microseconds),milliseconds:s(this.milliseconds),seconds:s(this.seconds),minsec:s(this.minsec),minutes:s(this.minutes),hourmin:s(this.hourmin),hours:s(this.hours),days:s(this.days),months:s(this.months),years:s(this.years)}}_get_resolution_str(t,s){const e=1.1*t;switch(!1){case!(e<.001):return\"microseconds\";case!(e<1):return\"milliseconds\";case!(e<60):return s>=60?\"minsec\":\"seconds\";case!(e<3600):return s>=3600?\"hourmin\":\"minutes\";case!(e<86400):return\"hours\";case!(e<2678400):return\"days\";case!(e<31536e3):return\"months\";default:return\"years\"}}doFormat(t,s){if(0==t.length)return[];const e=Math.abs(t[t.length-1]-t[0])/1e3,r=e/(t.length-1),i=this._get_resolution_str(r,e),[,[n]]=this._width_formats[i],a=[],c=l.indexOf(i),m={};for(const t of l)m[t]=0;m.seconds=5,m.minsec=4,m.minutes=4,m.hourmin=3,m.hours=3;for(const s of t){let t,e;try{e=h(s),t=d(s,n)}catch(t){o.logger.warn(\"unable to format tick for timestamp value \"+s),o.logger.warn(\" - \"+t),a.push(\"ERR\");continue}let r=!1,u=c;for(;0==e[m[l[u]]];){let n;if(u+=1,u==l.length)break;if((\"minsec\"==i||\"hourmin\"==i)&&!r){if(\"minsec\"==i&&0==e[4]&&0!=e[5]||\"hourmin\"==i&&0==e[3]&&0!=e[4]){n=this._width_formats[l[c-1]][1][0],t=d(s,n);break}r=!0}n=this._width_formats[l[u]][1][0],t=d(s,n)}if(this.strip_leading_zeros){let s=t.replace(/^0+/g,\"\");s!=t&&isNaN(parseInt(s))&&(s=\"0\"+s),a.push(s)}else a.push(t)}return a}}e.DatetimeTickFormatter=_,_.__name__=\"DatetimeTickFormatter\",_.init_DatetimeTickFormatter()},\n", - " function _(e,t,n){!function(e){\"object\"==typeof t&&t.exports?t.exports=e():\"function\"==typeof define?define(e):this.tz=e()}((function(){function e(e,t,n){var r,o=t.day[1];do{r=new Date(Date.UTC(n,t.month,Math.abs(o++)))}while(t.day[0]<7&&r.getUTCDay()!=t.day[0]);return(r={clock:t.clock,sort:r.getTime(),rule:t,save:6e4*t.save,offset:e.offset})[r.clock]=r.sort+6e4*t.time,r.posix?r.wallclock=r[r.clock]+(e.offset+t.saved):r.posix=r[r.clock]-(e.offset+t.saved),r}function t(t,n,r){var o,a,u,i,l,s,c,f=t[t.zone],h=[],T=new Date(r).getUTCFullYear(),g=1;for(o=1,a=f.length;o=T-g;--c)for(o=0,a=s.length;o=h[o][n]&&h[o][h[o].clock]>u[h[o].clock]&&(i=h[o])}return i&&((l=/^(.*)\\/(.*)$/.exec(u.format))?i.abbrev=l[i.save?2:1]:i.abbrev=u.format.replace(/%s/,i.rule.letter)),i||u}function n(e,n){return\"UTC\"==e.zone?n:(e.entry=t(e,\"posix\",n),n+e.entry.offset+e.entry.save)}function r(e,n){return\"UTC\"==e.zone?n:(e.entry=r=t(e,\"wallclock\",n),0<(o=n-r.wallclock)&&o9)t+=s*l[c-10];else{if(a=new Date(n(e,t)),c<7)for(;s;)a.setUTCDate(a.getUTCDate()+i),a.getUTCDay()==c&&(s-=i);else 7==c?a.setUTCFullYear(a.getUTCFullYear()+s):8==c?a.setUTCMonth(a.getUTCMonth()+s):a.setUTCDate(a.getUTCDate()+s);null==(t=r(e,a.getTime()))&&(t=r(e,a.getTime()+864e5*i)-864e5*i)}return t}var a={clock:function(){return+new Date},zone:\"UTC\",entry:{abbrev:\"UTC\",offset:0,save:0},UTC:1,z:function(e,t,n,r){var o,a,u=this.entry.offset+this.entry.save,i=Math.abs(u/1e3),l=[],s=3600;for(o=0;o<3;o++)l.push((\"0\"+Math.floor(i/s)).slice(-2)),i%=s,s/=60;return\"^\"!=n||u?(\"^\"==n&&(r=3),3==r?(a=(a=l.join(\":\")).replace(/:00$/,\"\"),\"^\"!=n&&(a=a.replace(/:00$/,\"\"))):r?(a=l.slice(0,r+1).join(\":\"),\"^\"==n&&(a=a.replace(/:00$/,\"\"))):a=l.slice(0,2).join(\"\"),a=(a=(u<0?\"-\":\"+\")+a).replace(/([-+])(0)/,{_:\" $1\",\"-\":\"$1\"}[n]||\"$1$2\")):\"Z\"},\"%\":function(e){return\"%\"},n:function(e){return\"\\n\"},t:function(e){return\"\\t\"},U:function(e){return s(e,0)},W:function(e){return s(e,1)},V:function(e){return c(e)[0]},G:function(e){return c(e)[1]},g:function(e){return c(e)[1]%100},j:function(e){return Math.floor((e.getTime()-Date.UTC(e.getUTCFullYear(),0))/864e5)+1},s:function(e){return Math.floor(e.getTime()/1e3)},C:function(e){return Math.floor(e.getUTCFullYear()/100)},N:function(e){return e.getTime()%1e3*1e6},m:function(e){return e.getUTCMonth()+1},Y:function(e){return e.getUTCFullYear()},y:function(e){return e.getUTCFullYear()%100},H:function(e){return e.getUTCHours()},M:function(e){return e.getUTCMinutes()},S:function(e){return e.getUTCSeconds()},e:function(e){return e.getUTCDate()},d:function(e){return e.getUTCDate()},u:function(e){return e.getUTCDay()||7},w:function(e){return e.getUTCDay()},l:function(e){return e.getUTCHours()%12||12},I:function(e){return e.getUTCHours()%12||12},k:function(e){return e.getUTCHours()},Z:function(e){return this.entry.abbrev},a:function(e){return this[this.locale].day.abbrev[e.getUTCDay()]},A:function(e){return this[this.locale].day.full[e.getUTCDay()]},h:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},b:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},B:function(e){return this[this.locale].month.full[e.getUTCMonth()]},P:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)].toLowerCase()},p:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)]},R:function(e,t){return this.convert([t,\"%H:%M\"])},T:function(e,t){return this.convert([t,\"%H:%M:%S\"])},D:function(e,t){return this.convert([t,\"%m/%d/%y\"])},F:function(e,t){return this.convert([t,\"%Y-%m-%d\"])},x:function(e,t){return this.convert([t,this[this.locale].date])},r:function(e,t){return this.convert([t,this[this.locale].time12||\"%I:%M:%S\"])},X:function(e,t){return this.convert([t,this[this.locale].time24])},c:function(e,t){return this.convert([t,this[this.locale].dateTime])},convert:function(e){if(!e.length)return\"1.0.23\";var t,a,u,l,s,c=Object.create(this),f=[];for(t=0;t=o?Math.floor((n-o)/7)+1:0}function c(e){var t,n,r;return n=e.getUTCFullYear(),t=new Date(Date.UTC(n,0)).getUTCDay(),(r=s(e,1)+(t>1&&t<=4?1:0))?53!=r||4==t||3==t&&29==new Date(n,1,29).getDate()?[r,e.getUTCFullYear()]:[1,e.getUTCFullYear()+1]:(n=e.getUTCFullYear()-1,[r=4==(t=new Date(Date.UTC(n,0)).getUTCDay())||3==t&&29==new Date(n,1,29).getDate()?53:52,e.getUTCFullYear()-1])}return u=u.toLowerCase().split(\"|\"),\"delmHMSUWVgCIky\".replace(/./g,(function(e){a[e].pad=2})),a.N.pad=9,a.j.pad=3,a.k.style=\"_\",a.l.style=\"_\",a.e.style=\"_\",function(){return a.convert(arguments)}}))},\n", - " function _(r,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=r(1),i=n.__importStar(r(188)),u=r(189),a=n.__importDefault(r(186)),f=r(29),o=r(8);function l(r,...e){return u.sprintf(r,...e)}function s(r,e,t){if(o.isNumber(r)){return l((()=>{switch(!1){case Math.floor(r)!=r:return\"%d\";case!(Math.abs(r)>.1&&Math.abs(r)<1e3):return\"%0.3f\";default:return\"%0.3e\"}})(),r)}return\"\"+r}function c(r,e,n){if(null==e)return s;if(null!=n&&r in n){const e=n[r];if(o.isString(e)){if(e in t.DEFAULT_FORMATTERS)return t.DEFAULT_FORMATTERS[e];throw new Error(`Unknown tooltip field formatter type '${e}'`)}return function(r,t,n){return e.format(r,t,n)}}return t.DEFAULT_FORMATTERS.numeral}function m(r,e,t,n){if(\"$\"==r[0]){return function(r,e){if(r in e)return e[r];throw new Error(`Unknown special variable '$${r}'`)}(r.substring(1),n)}return function(r,e,t){const n=e.get_column(r);if(null==n)return null;if(o.isNumber(t))return n[t];const i=n[t.index];if(o.isTypedArray(i)||o.isArray(i)){if(o.isArray(i[0])){return i[t.dim2][t.dim1]}return i[t.flat_index]}return i}(r.substring(1).replace(/[{}]/g,\"\"),e,t)}t.DEFAULT_FORMATTERS={numeral:(r,e,t)=>i.format(r,e),datetime:(r,e,t)=>a.default(r,e),printf:(r,e,t)=>l(e,r)},t.sprintf=l,t.basic_formatter=s,t.get_formatter=c,t.get_value=m,t.replace_placeholders=function(r,e,t,n,i={}){let u,a;if(o.isString(r)?(u=r,a=!1):(u=r.html,a=!0),u=u.replace(/@\\$name/g,r=>`@{${i.name}}`),u=u.replace(/((?:\\$\\w+)|(?:@\\w+)|(?:@{(?:[^{}]+)}))(?:{([^{}]+)})?/g,(r,u,o)=>{const l=m(u,e,t,i);if(null==l)return\"\"+f.escape(\"???\");if(\"safe\"==o)return a=!0,\"\"+l;const s=c(u,o,n);return\"\"+f.escape(s(l,o,i))}),a){return[...(new DOMParser).parseFromString(u,\"text/html\").body.childNodes]}return u}},\n", - " function _(e,n,t){\n", - " /*!\n", - " * numbro.js\n", - " * version : 1.6.2\n", - " * author : Företagsplatsen AB\n", - " * license : MIT\n", - " * http://www.foretagsplatsen.se\n", - " */\n", - " var r,i={},a=i,o=\"en-US\",l=null,u=\"0,0\";void 0!==n&&n.exports;function c(e){this._value=e}function s(e){var n,t=\"\";for(n=0;n-1?function(e,n){var t,r,i,a;return t=(a=e.toString()).split(\"e\")[0],i=a.split(\"e\")[1],a=t.split(\".\")[0]+(r=t.split(\".\")[1]||\"\")+s(i-r.length),n>0&&(a+=\".\"+s(n)),a}(e,n):(t(e*o)/o).toFixed(n),r&&(i=new RegExp(\"0{1,\"+r+\"}$\"),a=a.replace(i,\"\")),a}function d(e,n,t){return n.indexOf(\"$\")>-1?function(e,n,t){var r,a,l=n,u=l.indexOf(\"$\"),c=l.indexOf(\"(\"),s=l.indexOf(\"+\"),f=l.indexOf(\"-\"),d=\"\",p=\"\";-1===l.indexOf(\"$\")?\"infix\"===i[o].currency.position?(p=i[o].currency.symbol,i[o].currency.spaceSeparated&&(p=\" \"+p+\" \")):i[o].currency.spaceSeparated&&(d=\" \"):l.indexOf(\" $\")>-1?(d=\" \",l=l.replace(\" $\",\"\")):l.indexOf(\"$ \")>-1?(d=\" \",l=l.replace(\"$ \",\"\")):l=l.replace(\"$\",\"\");if(a=h(e,l,t,p),-1===n.indexOf(\"$\"))switch(i[o].currency.position){case\"postfix\":a.indexOf(\")\")>-1?((a=a.split(\"\")).splice(-1,0,d+i[o].currency.symbol),a=a.join(\"\")):a=a+d+i[o].currency.symbol;break;case\"infix\":break;case\"prefix\":a.indexOf(\"(\")>-1||a.indexOf(\"-\")>-1?(a=a.split(\"\"),r=Math.max(c,f)+1,a.splice(r,0,i[o].currency.symbol+d),a=a.join(\"\")):a=i[o].currency.symbol+d+a;break;default:throw Error('Currency position should be among [\"prefix\", \"infix\", \"postfix\"]')}else u<=1?a.indexOf(\"(\")>-1||a.indexOf(\"+\")>-1||a.indexOf(\"-\")>-1?(a=a.split(\"\"),r=1,(u-1?((a=a.split(\"\")).splice(-1,0,d+i[o].currency.symbol),a=a.join(\"\")):a=a+d+i[o].currency.symbol;return a}(e,n,t):n.indexOf(\"%\")>-1?function(e,n,t){var r,i=\"\";e*=100,n.indexOf(\" %\")>-1?(i=\" \",n=n.replace(\" %\",\"\")):n=n.replace(\"%\",\"\");(r=h(e,n,t)).indexOf(\")\")>-1?((r=r.split(\"\")).splice(-1,0,i+\"%\"),r=r.join(\"\")):r=r+i+\"%\";return r}(e,n,t):n.indexOf(\":\")>-1?function(e){var n=Math.floor(e/60/60),t=Math.floor((e-60*n*60)/60),r=Math.round(e-60*n*60-60*t);return n+\":\"+(t<10?\"0\"+t:t)+\":\"+(r<10?\"0\"+r:r)}(e):h(e,n,t)}function h(e,n,t,r){var a,u,c,s,d,h,p,m,x,g,O,b,w,y,M,v,$,B=!1,E=!1,F=!1,k=\"\",U=!1,N=!1,S=!1,j=!1,D=!1,C=\"\",L=\"\",T=Math.abs(e),K=[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"],G=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"],I=\"\",P=!1,R=!1;if(0===e&&null!==l)return l;if(!isFinite(e))return\"\"+e;if(0===n.indexOf(\"{\")){var W=n.indexOf(\"}\");if(-1===W)throw Error('Format should also contain a \"}\"');b=n.slice(1,W),n=n.slice(W+1)}else b=\"\";if(n.indexOf(\"}\")===n.length-1){var Y=n.indexOf(\"{\");if(-1===Y)throw Error('Format should also contain a \"{\"');w=n.slice(Y+1,-1),n=n.slice(0,Y+1)}else w=\"\";if(v=null===($=-1===n.indexOf(\".\")?n.match(/([0-9]+).*/):n.match(/([0-9]+)\\..*/))?-1:$[1].length,-1!==n.indexOf(\"-\")&&(P=!0),n.indexOf(\"(\")>-1?(B=!0,n=n.slice(1,-1)):n.indexOf(\"+\")>-1&&(E=!0,n=n.replace(/\\+/g,\"\")),n.indexOf(\"a\")>-1){if(g=n.split(\".\")[0].match(/[0-9]+/g)||[\"0\"],g=parseInt(g[0],10),U=n.indexOf(\"aK\")>=0,N=n.indexOf(\"aM\")>=0,S=n.indexOf(\"aB\")>=0,j=n.indexOf(\"aT\")>=0,D=U||N||S||j,n.indexOf(\" a\")>-1?(k=\" \",n=n.replace(\" a\",\"\")):n=n.replace(\"a\",\"\"),p=0===(p=(d=Math.floor(Math.log(T)/Math.LN10)+1)%3)?3:p,g&&0!==T&&(h=Math.floor(Math.log(T)/Math.LN10)+1-g,m=3*~~((Math.min(g,d)-p)/3),T/=Math.pow(10,m),-1===n.indexOf(\".\")&&g>3))for(n+=\"[.]\",M=(M=0===h?0:3*~~(h/3)-h)<0?M+3:M,a=0;a=Math.pow(10,12)&&!D||j?(k+=i[o].abbreviations.trillion,e/=Math.pow(10,12)):T=Math.pow(10,9)&&!D||S?(k+=i[o].abbreviations.billion,e/=Math.pow(10,9)):T=Math.pow(10,6)&&!D||N?(k+=i[o].abbreviations.million,e/=Math.pow(10,6)):(T=Math.pow(10,3)&&!D||U)&&(k+=i[o].abbreviations.thousand,e/=Math.pow(10,3)))}if(n.indexOf(\"b\")>-1)for(n.indexOf(\" b\")>-1?(C=\" \",n=n.replace(\" b\",\"\")):n=n.replace(\"b\",\"\"),s=0;s<=K.length;s++)if(u=Math.pow(1024,s),c=Math.pow(1024,s+1),e>=u&&e0&&(e/=u);break}if(n.indexOf(\"d\")>-1)for(n.indexOf(\" d\")>-1?(C=\" \",n=n.replace(\" d\",\"\")):n=n.replace(\"d\",\"\"),s=0;s<=G.length;s++)if(u=Math.pow(1e3,s),c=Math.pow(1e3,s+1),e>=u&&e0&&(e/=u);break}if(n.indexOf(\"o\")>-1&&(n.indexOf(\" o\")>-1?(L=\" \",n=n.replace(\" o\",\"\")):n=n.replace(\"o\",\"\"),i[o].ordinal&&(L+=i[o].ordinal(e))),n.indexOf(\"[.]\")>-1&&(F=!0,n=n.replace(\"[.]\",\".\")),x=e.toString().split(\".\")[0],O=n.split(\".\")[1],y=n.indexOf(\",\"),O){if(x=(I=-1!==O.indexOf(\"*\")?f(e,e.toString().split(\".\")[1].length,t):O.indexOf(\"[\")>-1?f(e,(O=(O=O.replace(\"]\",\"\")).split(\"[\"))[0].length+O[1].length,t,O[1].length):f(e,O.length,t)).split(\".\")[0],I.split(\".\")[1].length)I=(r?k+r:i[o].delimiters.decimal)+I.split(\".\")[1];else I=\"\";F&&0===Number(I.slice(1))&&(I=\"\")}else x=f(e,null,t);return x.indexOf(\"-\")>-1&&(x=x.slice(1),R=!0),x.length-1&&(x=x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+i[o].delimiters.thousands)),0===n.indexOf(\".\")&&(x=\"\"),b+(n.indexOf(\"(\")2)&&(o.length<2?!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u):1===o[0].length?!!o[0].match(/^\\d+$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/):!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/)))))},n.exports={format:function(e,n,t,i){return null!=t&&t!==r.culture()&&r.setCulture(t),d(Number(e),null!=n?n:u,null==i?Math.round:i)}}},\n", - " function _(e,n,t){!function(){\"use strict\";var e={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function n(e){return i(a(e),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}function i(t,r){var i,s,a,o,p,c,l,u,f,d=1,g=t.length,y=\"\";for(s=0;s=0),o.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,o.width?parseInt(o.width):0);break;case\"e\":i=o.precision?parseFloat(i).toExponential(o.precision):parseFloat(i).toExponential();break;case\"f\":i=o.precision?parseFloat(i).toFixed(o.precision):parseFloat(i);break;case\"g\":i=o.precision?String(Number(i.toPrecision(o.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=o.precision?i.substring(0,o.precision):i;break;case\"t\":i=String(!!i),i=o.precision?i.substring(0,o.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o.precision?i.substring(0,o.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=o.precision?i.substring(0,o.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}e.json.test(o.type)?y+=i:(!e.number.test(o.type)||u&&!o.sign?f=\"\":(f=u?\"+\":\"-\",i=i.toString().replace(e.sign,\"\")),c=o.pad_char?\"0\"===o.pad_char?\"0\":o.pad_char.charAt(1):\" \",l=o.width-(f+i).length,p=o.width&&l>0?c.repeat(l):\"\",y+=o.align?f+i+p:\"0\"===c?f+p+i:p+f+i)}return y}var s=Object.create(null);function a(n){if(s[n])return s[n];for(var t,r=n,i=[],a=0;r;){if(null!==(t=e.text.exec(r)))i.push(t[0]);else if(null!==(t=e.modulo.exec(r)))i.push(\"%\");else{if(null===(t=e.placeholder.exec(r)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(t[2]){a|=1;var o=[],p=t[2],c=[];if(null===(c=e.key.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(o.push(c[1]);\"\"!==(p=p.substring(c[0].length));)if(null!==(c=e.key_access.exec(p)))o.push(c[1]);else{if(null===(c=e.index_access.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");o.push(c[1])}t[2]=o}else a|=2;if(3===a)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return s[n]=i}void 0!==t&&(t.sprintf=n,t.vsprintf=r),\"undefined\"!=typeof window&&(window.sprintf=n,window.vsprintf=r,\"function\"==typeof define&&define.amd&&define((function(){return{sprintf:n,vsprintf:r}})))}()},\n", - " function _(e,i,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(9),a=e(127),s=e(191),r=e(192),c=e(195),_=e(196),m=e(194);class k extends s.CompositeTicker{constructor(e){super(e)}static init_DatetimeTicker(){this.override({num_minor_ticks:0,tickers:()=>[new a.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*m.ONE_MILLI,num_minor_ticks:0}),new a.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:m.ONE_SECOND,max_interval:30*m.ONE_MINUTE,num_minor_ticks:0}),new a.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:m.ONE_HOUR,max_interval:12*m.ONE_HOUR,num_minor_ticks:0}),new r.DaysTicker({days:t.range(1,32)}),new r.DaysTicker({days:t.range(1,31,3)}),new r.DaysTicker({days:[1,8,15,22]}),new r.DaysTicker({days:[1,15]}),new c.MonthsTicker({months:t.range(0,12,1)}),new c.MonthsTicker({months:t.range(0,12,2)}),new c.MonthsTicker({months:t.range(0,12,4)}),new c.MonthsTicker({months:t.range(0,12,6)}),new _.YearsTicker({})]})}}n.DatetimeTicker=k,k.__name__=\"DatetimeTicker\",k.init_DatetimeTicker()},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=t(1),s=t(128),n=r.__importStar(t(18)),_=t(9);class a extends s.ContinuousTicker{constructor(t){super(t)}static init_CompositeTicker(){this.define({tickers:[n.Array,[]]})}get min_intervals(){return this.tickers.map(t=>t.get_min_interval())}get max_intervals(){return this.tickers.map(t=>t.get_max_interval())}get min_interval(){return this.min_intervals[0]}get max_interval(){return this.max_intervals[0]}get_best_ticker(t,e,i){const r=e-t,s=this.get_ideal_interval(t,e,i),n=[_.sorted_index(this.min_intervals,s)-1,_.sorted_index(this.max_intervals,s)],a=[this.min_intervals[n[0]],this.max_intervals[n[1]]].map(t=>Math.abs(i-r/t));let c;if(_.is_empty(a.filter(t=>!isNaN(t))))c=this.tickers[0];else{const t=n[_.argmin(a)];c=this.tickers[t]}return c}get_interval(t,e,i){return this.get_best_ticker(t,e,i).get_interval(t,e,i)}get_ticks_no_defaults(t,e,i,r){return this.get_best_ticker(t,e,r).get_ticks_no_defaults(t,e,i,r)}}i.CompositeTicker=a,a.__name__=\"CompositeTicker\",a.init_CompositeTicker()},\n", - " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=t(1),s=t(193),a=t(194),o=i.__importStar(t(18)),r=t(9);class _ extends s.SingleIntervalTicker{constructor(t){super(t)}static init_DaysTicker(){this.define({days:[o.Array,[]]}),this.override({num_minor_ticks:0})}initialize(){super.initialize();const t=this.days;t.length>1?this.interval=(t[1]-t[0])*a.ONE_DAY:this.interval=31*a.ONE_DAY}get_ticks_no_defaults(t,e,n,i){const s=function(t,e){const n=a.last_month_no_later_than(new Date(t)),i=a.last_month_no_later_than(new Date(e));i.setUTCMonth(i.getUTCMonth()+1);const s=[],o=n;for(;s.push(a.copy_date(o)),o.setUTCMonth(o.getUTCMonth()+1),!(o>i););return s}(t,e),o=this.days,_=this.interval;return{major:r.concat(s.map(t=>((t,e)=>{const n=t.getUTCMonth(),i=[];for(const s of o){const o=a.copy_date(t);o.setUTCDate(s);new Date(o.getTime()+e/2).getUTCMonth()==n&&i.push(o)}return i})(t,_))).map(t=>t.getTime()).filter(n=>t<=n&&n<=e),minor:[]}}}n.DaysTicker=_,_.__name__=\"DaysTicker\",_.init_DaysTicker()},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),r=e(128),l=n.__importStar(e(18));class a extends r.ContinuousTicker{constructor(e){super(e)}static init_SingleIntervalTicker(){this.define({interval:[l.Number]})}get_interval(e,t,i){return this.interval}get min_interval(){return this.interval}get max_interval(){return this.interval}}i.SingleIntervalTicker=a,a.__name__=\"SingleIntervalTicker\",a.init_SingleIntervalTicker()},\n", - " function _(t,e,n){function _(t){return new Date(t.getTime())}function O(t){const e=_(t);return e.setUTCDate(1),e.setUTCHours(0),e.setUTCMinutes(0),e.setUTCSeconds(0),e.setUTCMilliseconds(0),e}Object.defineProperty(n,\"__esModule\",{value:!0}),n.ONE_MILLI=1,n.ONE_SECOND=1e3,n.ONE_MINUTE=60*n.ONE_SECOND,n.ONE_HOUR=60*n.ONE_MINUTE,n.ONE_DAY=24*n.ONE_HOUR,n.ONE_MONTH=30*n.ONE_DAY,n.ONE_YEAR=365*n.ONE_DAY,n.copy_date=_,n.last_month_no_later_than=O,n.last_year_no_later_than=function(t){const e=O(t);return e.setUTCMonth(0),e}},\n", - " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=t(1),i=t(193),s=t(194),a=r.__importStar(t(18)),o=t(9);class _ extends i.SingleIntervalTicker{constructor(t){super(t)}static init_MonthsTicker(){this.define({months:[a.Array,[]]})}initialize(){super.initialize();const t=this.months;t.length>1?this.interval=(t[1]-t[0])*s.ONE_MONTH:this.interval=12*s.ONE_MONTH}get_ticks_no_defaults(t,e,n,r){const i=function(t,e){const n=s.last_year_no_later_than(new Date(t)),r=s.last_year_no_later_than(new Date(e));r.setUTCFullYear(r.getUTCFullYear()+1);const i=[],a=n;for(;i.push(s.copy_date(a)),a.setUTCFullYear(a.getUTCFullYear()+1),!(a>r););return i}(t,e),a=this.months;return{major:o.concat(i.map(t=>a.map(e=>{const n=s.copy_date(t);return n.setUTCMonth(e),n}))).map(t=>t.getTime()).filter(n=>t<=n&&n<=e),minor:[]}}}n.MonthsTicker=_,_.__name__=\"MonthsTicker\",_.init_MonthsTicker()},\n", - " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const i=e(126),r=e(193),n=e(194);class _ extends r.SingleIntervalTicker{constructor(e){super(e)}initialize(){super.initialize(),this.interval=n.ONE_YEAR,this.basic_ticker=new i.BasicTicker({num_minor_ticks:0})}get_ticks_no_defaults(e,t,a,i){const r=n.last_year_no_later_than(new Date(e)).getUTCFullYear(),_=n.last_year_no_later_than(new Date(t)).getUTCFullYear();return{major:this.basic_ticker.get_ticks_no_defaults(r,_,a,i).major.map(e=>Date.UTC(e,0,1)).filter(a=>e<=a&&a<=t),minor:[]}}}a.YearsTicker=_,_.__name__=\"YearsTicker\"},\n", - " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(177),o=e(182),n=e(198),r=e(199);class _ extends s.AxisView{}t.LogAxisView=_,_.__name__=\"LogAxisView\";class c extends o.ContinuousAxis{constructor(e){super(e)}static init_LogAxis(){this.prototype.default_view=_,this.override({ticker:()=>new r.LogTicker,formatter:()=>new n.LogTickFormatter})}}t.LogAxis=c,c.__name__=\"LogAxis\",c.init_LogAxis()},\n", - " function _(t,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=t(1),o=t(131),a=t(130),n=i.__importStar(t(18));class c extends o.TickFormatter{constructor(t){super(t)}static init_LogTickFormatter(){this.define({ticker:[n.Instance,null]})}initialize(){super.initialize(),this.basic_formatter=new a.BasicTickFormatter}doFormat(t,e){if(0==t.length)return[];const r=null!=this.ticker?this.ticker.base:10;let i=!1;const o=new Array(t.length);for(let e=0,a=t.length;e0&&o[e]==o[e-1]){i=!0;break}return i?this.basic_formatter.doFormat(t,e):o}}r.LogTickFormatter=c,c.__name__=\"LogTickFormatter\",c.init_LogTickFormatter()},\n", - " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(127),s=t(9);class n extends i.AdaptiveTicker{constructor(t){super(t)}static init_LogTicker(){this.override({mantissas:[1,5]})}get_ticks_no_defaults(t,o,e,i){const n=this.num_minor_ticks,r=[],c=this.base,a=Math.log(t)/Math.log(c),f=Math.log(o)/Math.log(c),l=f-a;let h;if(isFinite(l))if(l<2){const e=this.get_interval(t,o,i),c=Math.floor(t/e),a=Math.ceil(o/e);if(h=s.range(c,a+1).filter(t=>0!=t).map(t=>t*e).filter(e=>t<=e&&e<=o),n>0&&h.length>0){const t=e/n,o=s.range(0,n).map(o=>o*t);for(const t of o.slice(1))r.push(h[0]-t);for(const t of h)for(const e of o)r.push(t+e)}}else{const t=Math.ceil(.999999*a),o=Math.floor(1.000001*f),e=Math.ceil((o-t)/9);if(h=s.range(t-1,o+1,e).map(t=>c**t),n>0&&h.length>0){const t=c**e/n,o=s.range(1,n+1).map(o=>o*t);for(const t of o)r.push(h[0]/t);r.push(h[0]);for(const t of h)for(const e of o)r.push(t*e)}}else h=[];return{major:h.filter(e=>t<=e&&e<=o),minor:r.filter(e=>t<=e&&e<=o)}}}e.LogTicker=n,n.__name__=\"LogTicker\",n.init_LogTicker()},\n", - " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(177),s=e(184),o=e(201),a=e(202);class c extends i.AxisView{}r.MercatorAxisView=c,c.__name__=\"MercatorAxisView\";class n extends s.LinearAxis{constructor(e){super(e)}static init_MercatorAxis(){this.prototype.default_view=c,this.override({ticker:()=>new a.MercatorTicker({dimension:\"lat\"}),formatter:()=>new o.MercatorTickFormatter({dimension:\"lat\"})})}}r.MercatorAxis=n,n.__name__=\"MercatorAxis\",n.init_MercatorAxis()},\n", - " function _(r,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const o=r(1),n=r(130),i=o.__importStar(r(18)),c=r(37);class a extends n.BasicTickFormatter{constructor(r){super(r)}static init_MercatorTickFormatter(){this.define({dimension:[i.LatLon]})}doFormat(r,t){if(null==this.dimension)throw new Error(\"MercatorTickFormatter.dimension not configured\");if(0==r.length)return[];const e=r.length,o=new Array(e);if(\"lon\"==this.dimension)for(let n=0;n{const n=s.replace_placeholders(this.url,t,e);if(!r.isString(n))throw new Error(\"HTML output is not supported in this context\");this.same_tab?window.location.href=n:window.open(n)},{selected:o}=t;for(const e of o.indices)n(e);for(const e of o.line_indices)n(e)}}n.OpenURL=a,a.__name__=\"OpenURL\",a.init_OpenURL()},\n", - " function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});var n=a(77);r.Canvas=n.Canvas;var s=a(208);r.CartesianFrame=s.CartesianFrame},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const a=e(209),_=e(146),n=e(157),r=e(158),i=e(210),g=e(98),c=e(212),o=e(13),l=e(11);class h extends c.LayoutItem{constructor(e,t,s,a,_={},n={}){super(),this.in_x_scale=e,this.in_y_scale=t,this.x_range=s,this.y_range=a,this.extra_x_ranges=_,this.extra_y_ranges=n,l.assert(null==e.source_range&&null==e.target_range),l.assert(null==t.source_range&&null==t.target_range),this._configure_scales()}_get_ranges(e,t){return new Map(o.entries(Object.assign(Object.assign({},t),{default:e})))}_get_scales(e,t,s){const c=new Map;for(const[o,l]of t){if((l instanceof i.DataRange1d||l instanceof r.Range1d)&&!(e instanceof _.ContinuousScale))throw new Error(`Range ${l.type} is incompatible is Scale ${e.type}`);if(l instanceof g.FactorRange&&!(e instanceof a.CategoricalScale))throw new Error(`Range ${l.type} is incompatible is Scale ${e.type}`);e instanceof n.LogScale&&l instanceof i.DataRange1d&&(l.scale_hint=\"log\");const t=e.clone();t.setv({source_range:l,target_range:s}),c.set(o,t)}return c}_configure_frame_ranges(){const{bbox:e}=this;this._x_target=new r.Range1d({start:e.left,end:e.right}),this._y_target=new r.Range1d({start:e.bottom,end:e.top})}_configure_scales(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._x_scales=this._get_scales(this.in_x_scale,this._x_ranges,this._x_target),this._y_scales=this._get_scales(this.in_y_scale,this._y_ranges,this._y_target)}_update_scales(){this._configure_frame_ranges();for(const[,e]of this._x_scales)e.target_range=this._x_target;for(const[,e]of this._y_scales)e.target_range=this._y_target}_set_geometry(e,t){super._set_geometry(e,t),this._update_scales()}get x_ranges(){return this._x_ranges}get y_ranges(){return this._y_ranges}get x_scales(){return this._x_scales}get y_scales(){return this._y_scales}get x_scale(){return this._x_scales.get(\"default\")}get y_scale(){return this._y_scales.get(\"default\")}get xscales(){return o.to_object(this.x_scales)}get yscales(){return o.to_object(this.y_scales)}}s.CartesianFrame=h,h.__name__=\"CartesianFrame\"},\n", - " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(147);class _ extends n.Scale{constructor(e){super(e)}compute(e){return super._linear_compute(this.source_range.synthetic(e))}v_compute(e){return super._linear_v_compute(this.source_range.v_synthetic(e))}invert(e){return this._linear_invert(e)}v_invert(e){return this._linear_v_invert(e)}}t.CategoricalScale=_,_.__name__=\"CategoricalScale\"},\n", - " function _(t,i,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=t(1),a=t(211),s=t(90),l=t(19),_=e.__importStar(t(18)),o=e.__importStar(t(79)),r=t(9);class h extends a.DataRange{constructor(t){super(t),this.have_updated_interactively=!1}static init_DataRange1d(){this.define({start:[_.Number],end:[_.Number],range_padding:[_.Number,.1],range_padding_units:[_.PaddingUnits,\"percent\"],flipped:[_.Boolean,!1],follow:[_.StartEnd],follow_interval:[_.Number],default_span:[_.Number,2],only_visible:[_.Boolean,!1]}),this.internal({scale_hint:[_.String,\"auto\"]})}initialize(){super.initialize(),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span,this._plot_bounds=new Map}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}computed_renderers(){const t=this.names;let i=this.renderers;if(0==i.length)for(const t of this.plots){const n=t.renderers.filter(t=>t instanceof s.GlyphRenderer);i=i.concat(n)}t.length>0&&(i=i.filter(i=>r.includes(t,i.name))),l.logger.debug(`computed ${i.length} renderers for ${this}`);for(const t of i)l.logger.trace(\" - \"+t);return i}_compute_plot_bounds(t,i){let n=o.empty();for(const e of t){const t=i.get(e);null==t||!e.visible&&this.only_visible||(n=o.union(n,t))}return n}adjust_bounds_for_aspect(t,i){const n=o.empty();let e=t.x1-t.x0;e<=0&&(e=1);let a=t.y1-t.y0;a<=0&&(a=1);const s=.5*(t.x1+t.x0),l=.5*(t.y1+t.y0);return e_&&(\"start\"==this.follow?a=e+s*_:\"end\"==this.follow&&(e=a-s*_)),[e,a]}update(t,i,n,e){if(this.have_updated_interactively)return;const a=this.computed_renderers();let s=this._compute_plot_bounds(a,t);null!=e&&(s=this.adjust_bounds_for_aspect(s,e)),this._plot_bounds.set(n,s);const[l,_]=this._compute_min_max(this._plot_bounds.values(),i);let[o,r]=this._compute_range(l,_);null!=this._initial_start&&(\"log\"==this.scale_hint?this._initial_start>0&&(o=this._initial_start):o=this._initial_start),null!=this._initial_end&&(\"log\"==this.scale_hint?this._initial_end>0&&(r=this._initial_end):r=this._initial_end);const[h,d]=[this.start,this.end];if(o!=h||r!=d){const t={};o!=h&&(t.start=o),r!=d&&(t.end=r),this.setv(t)}\"auto\"==this.bounds&&this.setv({bounds:[o,r]},{silent:!0}),this.change.emit()}reset(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()}}n.DataRange1d=h,h.__name__=\"DataRange1d\",h.init_DataRange1d()},\n", - " function _(e,a,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),r=e(99),s=n.__importStar(e(18));class _ extends r.Range{constructor(e){super(e)}static init_DataRange(){this.define({names:[s.Array,[]],renderers:[s.Array,[]]})}}t.DataRange=_,_.__name__=\"DataRange\",_.init_DataRange()},\n", - " function _(a,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});var e=a(213);t.Sizeable=e.Sizeable,t.SizingPolicy=e.SizingPolicy;var i=a(214);t.Layoutable=i.Layoutable,t.LayoutItem=i.LayoutItem;var n=a(215);t.HStack=n.HStack,t.VStack=n.VStack,t.AnchorLayout=n.AnchorLayout;var r=a(216);t.Grid=r.Grid,t.Row=r.Row,t.Column=r.Column;var c=a(217);t.ContentBox=c.ContentBox,t.VariadicBox=c.VariadicBox},\n", - " function _(t,h,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(21),{min:d,max:n}=Math;class w{constructor(t={}){this.width=null!=t.width?t.width:0,this.height=null!=t.height?t.height:0}bounded_to({width:t,height:h}){return new w({width:this.width==1/0&&null!=t?t:this.width,height:this.height==1/0&&null!=h?h:this.height})}expanded_to({width:t,height:h}){return new w({width:t!=1/0?n(this.width,t):this.width,height:h!=1/0?n(this.height,h):this.height})}expand_to({width:t,height:h}){this.width=n(this.width,t),this.height=n(this.height,h)}narrowed_to({width:t,height:h}){return new w({width:d(this.width,t),height:d(this.height,h)})}narrow_to({width:t,height:h}){this.width=d(this.width,t),this.height=d(this.height,h)}grow_by({left:t,right:h,top:i,bottom:e}){const d=this.width+t+h,n=this.height+i+e;return new w({width:d,height:n})}shrink_by({left:t,right:h,top:i,bottom:e}){const d=n(this.width-t-h,0),s=n(this.height-i-e,0);return new w({width:d,height:s})}map(t,h){return new w({width:t(this.width),height:(null!=h?h:t)(this.height)})}}i.Sizeable=w,w.__name__=\"Sizeable\",i.SizingPolicy=e.Enum(\"fixed\",\"fit\",\"min\",\"max\")},\n", - " function _(i,t,h){Object.defineProperty(h,\"__esModule\",{value:!0});const e=i(213),s=i(79),{min:n,max:g,round:a}=Math;class l{constructor(){this._bbox=new s.BBox,this._inner_bbox=new s.BBox}get bbox(){return this._bbox}get inner_bbox(){return this._inner_bbox}get sizing(){return this._sizing}set_sizing(i){const t=i.width_policy||\"fit\",h=i.width,e=null!=i.min_width?i.min_width:0,s=null!=i.max_width?i.max_width:1/0,n=i.height_policy||\"fit\",g=i.height,a=null!=i.min_height?i.min_height:0,l=null!=i.max_height?i.max_height:1/0,_=i.aspect,d=i.margin||{top:0,right:0,bottom:0,left:0},r=!1!==i.visible,w=i.halign||\"start\",o=i.valign||\"start\";this._sizing={width_policy:t,min_width:e,width:h,max_width:s,height_policy:n,min_height:a,height:g,max_height:l,aspect:_,margin:d,visible:r,halign:w,valign:o,size:{width:h,height:g},min_size:{width:e,height:a},max_size:{width:s,height:l}},this._init()}_init(){}_set_geometry(i,t){this._bbox=i,this._inner_bbox=t}set_geometry(i,t){this._set_geometry(i,t||i)}is_width_expanding(){return\"max\"==this.sizing.width_policy}is_height_expanding(){return\"max\"==this.sizing.height_policy}apply_aspect(i,{width:t,height:h}){const{aspect:e}=this.sizing;if(null!=e){const{width_policy:s,height_policy:n}=this.sizing,g=(i,t)=>{const h={max:4,fit:3,min:2,fixed:1};return h[i]>h[t]};if(\"fixed\"!=s&&\"fixed\"!=n)if(s==n){const s=t,n=a(t/e),g=a(h*e),l=h;Math.abs(i.width-s)+Math.abs(i.height-n)<=Math.abs(i.width-g)+Math.abs(i.height-l)?(t=s,h=n):(t=g,h=l)}else g(s,n)?h=a(t/e):t=a(h*e);else\"fixed\"==s?h=a(t/e):\"fixed\"==n&&(t=a(h*e))}return{width:t,height:h}}measure(i){if(!this.sizing.visible)return{width:0,height:0};const t=i=>\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:i,h=i=>\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:i,s=new e.Sizeable(i).shrink_by(this.sizing.margin).map(t,h),n=this._measure(s),g=this.clip_size(n),a=t(g.width),l=h(g.height),_=this.apply_aspect(s,{width:a,height:l});return Object.assign(Object.assign({},n),_)}compute(i={}){const t=this.measure({width:null!=i.width&&this.is_width_expanding()?i.width:1/0,height:null!=i.height&&this.is_height_expanding()?i.height:1/0}),{width:h,height:e}=t,n=new s.BBox({left:0,top:0,width:h,height:e});let g=void 0;if(null!=t.inner){const{left:i,top:n,right:a,bottom:l}=t.inner;g=new s.BBox({left:i,top:n,right:h-a,bottom:e-l})}this.set_geometry(n,g)}get xview(){return this.bbox.xview}get yview(){return this.bbox.yview}clip_width(i){return g(this.sizing.min_width,n(i,this.sizing.max_width))}clip_height(i){return g(this.sizing.min_height,n(i,this.sizing.max_height))}clip_size({width:i,height:t}){return{width:this.clip_width(i),height:this.clip_height(t)}}}h.Layoutable=l,l.__name__=\"Layoutable\";class _ extends l{_measure(i){const{width_policy:t,height_policy:h}=this.sizing;let e,s;if(i.width==1/0)e=null!=this.sizing.width?this.sizing.width:0;else switch(t){case\"fixed\":e=null!=this.sizing.width?this.sizing.width:0;break;case\"min\":e=null!=this.sizing.width?n(i.width,this.sizing.width):0;break;case\"fit\":e=null!=this.sizing.width?n(i.width,this.sizing.width):i.width;break;case\"max\":e=null!=this.sizing.width?g(i.width,this.sizing.width):i.width}if(i.height==1/0)s=null!=this.sizing.height?this.sizing.height:0;else switch(h){case\"fixed\":s=null!=this.sizing.height?this.sizing.height:0;break;case\"min\":s=null!=this.sizing.height?n(i.height,this.sizing.height):0;break;case\"fit\":s=null!=this.sizing.height?n(i.height,this.sizing.height):i.height;break;case\"max\":s=null!=this.sizing.height?g(i.height,this.sizing.height):i.height}return{width:e,height:s}}}h.LayoutItem=_,_.__name__=\"LayoutItem\";class d extends l{_measure(i){const t=this._content_size(),h=i.bounded_to(this.sizing.size).bounded_to(t);return{width:(()=>{switch(this.sizing.width_policy){case\"fixed\":return null!=this.sizing.width?this.sizing.width:t.width;case\"min\":return t.width;case\"fit\":return h.width;case\"max\":return Math.max(t.width,h.width)}})(),height:(()=>{switch(this.sizing.height_policy){case\"fixed\":return null!=this.sizing.height?this.sizing.height:t.height;case\"min\":return t.height;case\"fit\":return h.height;case\"max\":return Math.max(t.height,h.height)}})()}}}h.ContentLayoutable=d,d.__name__=\"ContentLayoutable\"},\n", - " function _(t,e,h){Object.defineProperty(h,\"__esModule\",{value:!0});const o=t(214),r=t(79);class i extends o.Layoutable{constructor(){super(...arguments),this.children=[]}}h.Stack=i,i.__name__=\"Stack\";class s extends i{_measure(t){let e=0,h=0;for(const t of this.children){const o=t.measure({width:0,height:0});e+=o.width,h=Math.max(h,o.height)}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const{top:h,bottom:o}=t;let{left:i}=t;for(const t of this.children){const{width:e}=t.measure({width:0,height:0});t.set_geometry(new r.BBox({left:i,width:e,top:h,bottom:o})),i+=e}}}h.HStack=s,s.__name__=\"HStack\";class n extends i{_measure(t){let e=0,h=0;for(const t of this.children){const o=t.measure({width:0,height:0});e=Math.max(e,o.width),h+=o.height}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const{left:h,right:o}=t;let{top:i}=t;for(const t of this.children){const{height:e}=t.measure({width:0,height:0});t.set_geometry(new r.BBox({top:i,height:e,left:h,right:o})),i+=e}}}h.VStack=n,n.__name__=\"VStack\";class c extends o.Layoutable{constructor(){super(...arguments),this.children=[]}_measure(t){let e=0,h=0;for(const{layout:o}of this.children){const r=o.measure(t);e=Math.max(e,r.width),h=Math.max(h,r.height)}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);for(const{layout:e,anchor:h,margin:o}of this.children){const{left:i,right:s,top:n,bottom:c,hcenter:a,vcenter:_}=t,{width:g,height:d}=e.measure(t);let m;switch(h){case\"top_left\":m=new r.BBox({left:i+o,top:n+o,width:g,height:d});break;case\"top_center\":m=new r.BBox({hcenter:a,top:n+o,width:g,height:d});break;case\"top_right\":m=new r.BBox({right:s-o,top:n+o,width:g,height:d});break;case\"bottom_right\":m=new r.BBox({right:s-o,bottom:c-o,width:g,height:d});break;case\"bottom_center\":m=new r.BBox({hcenter:a,bottom:c-o,width:g,height:d});break;case\"bottom_left\":m=new r.BBox({left:i+o,bottom:c-o,width:g,height:d});break;case\"center_left\":m=new r.BBox({left:i+o,vcenter:_,width:g,height:d});break;case\"center\":m=new r.BBox({hcenter:a,vcenter:_,width:g,height:d});break;case\"center_right\":m=new r.BBox({right:s-o,vcenter:_,width:g,height:d})}e.set_geometry(m)}}}h.AnchorLayout=c,c.__name__=\"AnchorLayout\"},\n", - " function _(t,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const e=t(213),o=t(214),n=t(8),r=t(79),h=t(9),{max:l,round:c}=Math;class a{constructor(t){this.def=t,this._map=new Map}get(t){let i=this._map.get(t);return void 0===i&&(i=this.def(),this._map.set(t,i)),i}apply(t,i){const s=this.get(t);this._map.set(t,i(s))}}a.__name__=\"DefaultMap\";class g{constructor(){this._items=[],this._nrows=0,this._ncols=0}get nrows(){return this._nrows}get ncols(){return this._ncols}add(t,i){const{r1:s,c1:e}=t;this._nrows=l(this._nrows,s+1),this._ncols=l(this._ncols,e+1),this._items.push({span:t,data:i})}at(t,i){return this._items.filter(({span:s})=>s.r0<=t&&t<=s.r1&&s.c0<=i&&i<=s.c1).map(({data:t})=>t)}row(t){return this._items.filter(({span:i})=>i.r0<=t&&t<=i.r1).map(({data:t})=>t)}col(t){return this._items.filter(({span:i})=>i.c0<=t&&t<=i.c1).map(({data:t})=>t)}foreach(t){for(const{span:i,data:s}of this._items)t(i,s)}map(t){const i=new g;for(const{span:s,data:e}of this._items)i.add(s,t(s,e));return i}}g.__name__=\"Container\";class p extends o.Layoutable{constructor(t=[]){super(),this.items=t,this.rows=\"auto\",this.cols=\"auto\",this.spacing=0,this.absolute=!1}is_width_expanding(){if(super.is_width_expanding())return!0;if(\"fixed\"==this.sizing.width_policy)return!1;const{cols:t}=this._state;return h.some(t,t=>\"max\"==t.policy)}is_height_expanding(){if(super.is_height_expanding())return!0;if(\"fixed\"==this.sizing.height_policy)return!1;const{rows:t}=this._state;return h.some(t,t=>\"max\"==t.policy)}_init(){super._init();const t=new g;for(const{layout:i,row:s,col:e,row_span:o,col_span:n}of this.items)if(i.sizing.visible){const r=s,h=e,l=s+(null!=o?o:1)-1,c=e+(null!=n?n:1)-1;t.add({r0:r,c0:h,r1:l,c1:c},i)}const{nrows:i,ncols:s}=t,e=new Array(i);for(let s=0;s{const t=n.isPlainObject(this.rows)?this.rows[s]||this.rows[\"*\"]:this.rows;return null==t?{policy:\"auto\"}:n.isNumber(t)?{policy:\"fixed\",height:t}:n.isString(t)?{policy:t}:t})(),o=i.align||\"auto\";if(\"fixed\"==i.policy)e[s]={policy:\"fixed\",height:i.height,align:o};else if(\"min\"==i.policy)e[s]={policy:\"min\",align:o};else if(\"fit\"==i.policy||\"max\"==i.policy)e[s]={policy:i.policy,flex:i.flex||1,align:o};else{if(\"auto\"!=i.policy)throw new Error(\"unrechable\");h.some(t.row(s),t=>t.is_height_expanding())?e[s]={policy:\"max\",flex:1,align:o}:e[s]={policy:\"min\",align:o}}}const o=new Array(s);for(let i=0;i{const t=n.isPlainObject(this.cols)?this.cols[i]||this.cols[\"*\"]:this.cols;return null==t?{policy:\"auto\"}:n.isNumber(t)?{policy:\"fixed\",width:t}:n.isString(t)?{policy:t}:t})(),e=s.align||\"auto\";if(\"fixed\"==s.policy)o[i]={policy:\"fixed\",width:s.width,align:e};else if(\"min\"==s.policy)o[i]={policy:\"min\",align:e};else if(\"fit\"==s.policy||\"max\"==s.policy)o[i]={policy:s.policy,flex:s.flex||1,align:e};else{if(\"auto\"!=s.policy)throw new Error(\"unrechable\");h.some(t.col(i),t=>t.is_width_expanding())?o[i]={policy:\"max\",flex:1,align:e}:o[i]={policy:\"min\",align:e}}}const[r,l]=n.isNumber(this.spacing)?[this.spacing,this.spacing]:this.spacing;this._state={items:t,nrows:i,ncols:s,rows:e,cols:o,rspacing:r,cspacing:l}}_measure_totals(t,i){const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state;return{height:h.sum(t)+(s-1)*o,width:h.sum(i)+(e-1)*n}}_measure_cells(t){const{items:i,nrows:s,ncols:o,rows:n,cols:r,rspacing:h,cspacing:a}=this._state,p=new Array(s);for(let t=0;t{const{r0:o,c0:g,r1:d,c1:w}=i,u=(d-o)*h,m=(w-g)*a;let y=0;for(let i=o;i<=d;i++)y+=t(i,g).height;y+=u;let x=0;for(let i=g;i<=w;i++)x+=t(o,i).width;x+=m;const b=s.measure({width:x,height:y});f.add(i,{layout:s,size_hint:b});const z=new e.Sizeable(b).grow_by(s.sizing.margin);z.height-=u,z.width-=m;const j=[];for(let t=o;t<=d;t++){const i=n[t];\"fixed\"==i.policy?z.height-=i.height:j.push(t)}if(z.height>0){const t=c(z.height/j.length);for(const i of j)p[i]=l(p[i],t)}const O=[];for(let t=g;t<=w;t++){const i=r[t];\"fixed\"==i.policy?z.width-=i.width:O.push(t)}if(z.width>0){const t=c(z.width/O.length);for(const i of O)_[i]=l(_[i],t)}});return{size:this._measure_totals(p,_),row_heights:p,col_widths:_,size_hints:f}}_measure_grid(t){const{nrows:i,ncols:s,rows:e,cols:o,rspacing:n,cspacing:r}=this._state,h=this._measure_cells((t,i)=>{const s=e[t],n=o[i];return{width:\"fixed\"==n.policy?n.width:1/0,height:\"fixed\"==s.policy?s.height:1/0}});let a;a=\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:t.height!=1/0&&this.is_height_expanding()?t.height:h.size.height;let g,p=0;for(let t=0;t0)for(let t=0;ti?i:e,t--}}}g=\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:t.width!=1/0&&this.is_width_expanding()?t.width:h.size.width;let _=0;for(let t=0;t0)for(let t=0;ts?s:o,t--}}}const{row_heights:f,col_widths:d,size_hints:w}=this._measure_cells((t,i)=>({width:h.col_widths[i],height:h.row_heights[t]}));return{size:this._measure_totals(f,d),row_heights:f,col_widths:d,size_hints:w}}_measure(t){const{size:i}=this._measure_grid(t);return i}_set_geometry(t,i){super._set_geometry(t,i);const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state,{row_heights:h,col_widths:g,size_hints:p}=this._measure_grid(t),_=this._state.rows.map((t,i)=>Object.assign(Object.assign({},t),{top:0,height:h[i],get bottom(){return this.top+this.height}})),f=this._state.cols.map((t,i)=>Object.assign(Object.assign({},t),{left:0,width:g[i],get right(){return this.left+this.width}})),d=p.map((t,i)=>Object.assign(Object.assign({},i),{outer:new r.BBox,inner:new r.BBox}));for(let i=0,e=this.absolute?t.top:0;i{const{layout:l,size_hint:a}=h,{sizing:g}=l,{width:p,height:d}=a,w=function(t,i){let s=(i-t)*n;for(let e=t;e<=i;e++)s+=f[e].width;return s}(i,e),u=function(t,i){let s=(i-t)*o;for(let e=t;e<=i;e++)s+=_[e].height;return s}(t,s),m=i==e&&\"auto\"!=f[i].align?f[i].align:g.halign,y=t==s&&\"auto\"!=_[t].align?_[t].align:g.valign;let x=f[i].left;\"start\"==m?x+=g.margin.left:\"center\"==m?x+=c((w-p)/2):\"end\"==m&&(x+=w-g.margin.right-p);let b=_[t].top;\"start\"==y?b+=g.margin.top:\"center\"==y?b+=c((u-d)/2):\"end\"==y&&(b+=u-g.margin.bottom-d),h.outer=new r.BBox({left:x,top:b,width:p,height:d})});const w=_.map(()=>({start:new a(()=>0),end:new a(()=>0)})),u=f.map(()=>({start:new a(()=>0),end:new a(()=>0)}));d.foreach(({r0:t,c0:i,r1:s,c1:e},{size_hint:o,outer:n})=>{const{inner:r}=o;null!=r&&(w[t].start.apply(n.top,t=>l(t,r.top)),w[s].end.apply(_[s].bottom-n.bottom,t=>l(t,r.bottom)),u[i].start.apply(n.left,t=>l(t,r.left)),u[e].end.apply(f[e].right-n.right,t=>l(t,r.right)))}),d.foreach(({r0:t,c0:i,r1:s,c1:e},o)=>{const{size_hint:n,outer:h}=o;function l({left:t,right:i,top:s,bottom:e}){const o=h.width-t-i,n=h.height-s-e;return new r.BBox({left:t,top:s,width:o,height:n})}if(null!=n.inner){let r=l(n.inner);if(!1!==n.align){const o=w[t].start.get(h.top),n=w[s].end.get(_[s].bottom-h.bottom),c=u[i].start.get(h.left),a=u[e].end.get(f[e].right-h.right);try{r=l({top:o,bottom:n,left:c,right:a})}catch(t){}}o.inner=r}else o.inner=h}),d.foreach((t,{layout:i,outer:s,inner:e})=>{i.set_geometry(s,e)})}}s.Grid=p,p.__name__=\"Grid\";class _ extends p{constructor(t){super(),this.items=t.map((t,i)=>({layout:t,row:0,col:i})),this.rows=\"fit\"}}s.Row=_,_.__name__=\"Row\";class f extends p{constructor(t){super(),this.items=t.map((t,i)=>({layout:t,row:i,col:0})),this.cols=\"fit\"}}s.Column=f,f.__name__=\"Column\"},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(214),i=e(213),a=e(72);class c extends n.ContentLayoutable{constructor(e){super(),this.content_size=a.unsized(e,()=>new i.Sizeable(a.size(e)))}_content_size(){return this.content_size}}s.ContentBox=c,c.__name__=\"ContentBox\";class o extends n.Layoutable{constructor(e){super(),this.el=e}_measure(e){const t=new i.Sizeable(e).bounded_to(this.sizing.size);return a.sized(this.el,t,()=>{const e=new i.Sizeable(a.content_size(this.el)),{border:t,padding:s}=a.extents(this.el);return e.grow_by(t).grow_by(s).map(Math.ceil)})}}s.VariadicBox=o,o.__name__=\"VariadicBox\";class r extends o{constructor(e){super(e),this._cache=new Map}_measure(e){const{width:t,height:s}=e,n=`${t},${s}`;let i=this._cache.get(n);return null==i&&(i=super._measure(e),this._cache.set(n,i)),i}invalidate_cache(){this._cache.clear()}}s.CachedVariadicBox=r,r.__name__=\"CachedVariadicBox\"},\n", - " function _(e,r,u){Object.defineProperty(u,\"__esModule\",{value:!0});var a=e(219);u.Expression=a.Expression;var n=e(220);u.Stack=n.Stack;var o=e(221);u.CumSum=o.CumSum},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(81);class i extends n.Model{constructor(e){super(e)}initialize(){super.initialize(),this._connected=new Set,this._result=new Map}v_compute(e){this._connected.has(e)||(this.connect(e.change,()=>this._result.delete(e)),this.connect(e.patching,()=>this._result.delete(e)),this.connect(e.streaming,()=>this._result.delete(e)),this._connected.add(e));let t=this._result.get(e);return null==t&&(t=this._v_compute(e),this._result.set(e,t)),t}}s.Expression=i,i.__name__=\"Expression\"},\n", - " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=t(1),i=t(219),s=t(24),o=r.__importStar(t(18));class a extends i.Expression{constructor(t){super(t)}static init_Stack(){this.define({fields:[o.Array,[]]})}_v_compute(t){var e;const n=null!==(e=t.get_length())&&void 0!==e?e:0,r=new s.NumberArray(n);for(const e of this.fields){const i=t.data[e];if(null!=i)for(let t=0,e=Math.min(n,i.length);tn(t,e,r,...this.values))}}n.FuncTickFormatter=u,u.__name__=\"FuncTickFormatter\",u.init_FuncTickFormatter()},\n", - " function _(r,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=r(1),o=e.__importStar(r(188)),a=r(131),i=e.__importStar(r(18));class u extends a.TickFormatter{constructor(r){super(r)}static init_NumeralTickFormatter(){this.define({format:[i.String,\"0,0\"],language:[i.String,\"en\"],rounding:[i.RoundingFunction,\"round\"]})}get _rounding_fn(){switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}}doFormat(r,t){const{format:n,language:e,_rounding_fn:a}=this;return r.map(r=>o.format(r,n,e,a))}}n.NumeralTickFormatter=u,u.__name__=\"NumeralTickFormatter\",u.init_NumeralTickFormatter()},\n", - " function _(t,r,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(1),n=t(131),o=t(187),a=e.__importStar(t(18));class c extends n.TickFormatter{constructor(t){super(t)}static init_PrintfTickFormatter(){this.define({format:[a.String,\"%s\"]})}doFormat(t,r){return t.map(t=>o.sprintf(this.format,t))}}i.PrintfTickFormatter=c,c.__name__=\"PrintfTickFormatter\",c.init_PrintfTickFormatter()},\n", - " function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});var v=a(233);r.AnnularWedge=v.AnnularWedge;var l=a(234);r.Annulus=l.Annulus;var t=a(235);r.Arc=t.Arc;var i=a(236);r.Bezier=i.Bezier;var n=a(237);r.Circle=n.Circle;var u=a(241);r.CenterRotatable=u.CenterRotatable;var c=a(242);r.Ellipse=c.Ellipse;var g=a(243);r.EllipseOval=g.EllipseOval;var A=a(94);r.Glyph=A.Glyph;var p=a(111);r.HArea=p.HArea;var s=a(244);r.HBar=s.HBar;var d=a(246);r.HexTile=d.HexTile;var R=a(247);r.Image=R.Image;var o=a(249);r.ImageRGBA=o.ImageRGBA;var y=a(250);r.ImageURL=y.ImageURL;var h=a(92);r.Line=h.Line;var m=a(252);r.MultiLine=m.MultiLine;var B=a(253);r.MultiPolygons=B.MultiPolygons;var P=a(254);r.Oval=P.Oval;var G=a(110);r.Patch=G.Patch;var H=a(255);r.Patches=H.Patches;var I=a(256);r.Quad=I.Quad;var L=a(257);r.Quadratic=L.Quadratic;var M=a(258);r.Ray=M.Ray;var O=a(259);r.Rect=O.Rect;var x=a(260);r.Segment=x.Segment;var C=a(261);r.Step=C.Step;var E=a(262);r.Text=E.Text;var Q=a(113);r.VArea=Q.VArea;var S=a(263);r.VBar=S.VBar;var T=a(264);r.Wedge=T.Wedge;var V=a(93);r.XYGlyph=V.XYGlyph},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),r=e(93),n=e(100),a=e(28),_=e(24),o=i.__importStar(e(18)),d=e(10),h=e(88);class u extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius,this._angle=new _.NumberArray(this._start_angle.length);for(let e=0,t=this._start_angle.length;e=s&&u.push(e)}const l=this.model.properties.direction.value(),c=[];for(const e of u){const i=Math.atan2(s-this.sy[e],t-this.sx[e]);d.angle_between(-i,-this._start_angle[e],-this._end_angle[e],l)&&c.push(e)}return new h.Selection({indices:c})}draw_legend_for_index(e,t,s){n.generic_area_legend(this.visuals,e,t,s)}scenterxy(e){const t=(this.sinner_radius[e]+this.souter_radius[e])/2,s=(this._start_angle[e]+this._end_angle[e])/2;return[this.sx[e]+t*Math.cos(s),this.sy[e]+t*Math.sin(s)]}}s.AnnularWedgeView=u,u.__name__=\"AnnularWedgeView\";class l extends r.XYGlyph{constructor(e){super(e)}static init_AnnularWedge(){this.prototype.default_view=u,this.mixins([a.LineVector,a.FillVector]),this.define({direction:[o.Direction,\"anticlock\"],inner_radius:[o.DistanceSpec],outer_radius:[o.DistanceSpec],start_angle:[o.AngleSpec],end_angle:[o.AngleSpec]})}}s.AnnularWedge=l,l.__name__=\"AnnularWedge\",l.init_AnnularWedge()},\n", - " function _(s,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const t=s(1),r=s(93),n=s(28),a=t.__importStar(s(18)),_=s(32),u=s(88);class o extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this._inner_radius):this.sinner_radius=this._inner_radius,\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this._outer_radius):this.souter_radius=this._outer_radius}_render(s,i,{sx:e,sy:t,sinner_radius:r,souter_radius:n}){for(const a of i)if(!isNaN(e[a]+t[a]+r[a]+n[a])){if(this.visuals.fill.doit){if(this.visuals.fill.set_vectorize(s,a),s.beginPath(),_.is_ie)for(const i of[!1,!0])s.arc(e[a],t[a],r[a],0,Math.PI,i),s.arc(e[a],t[a],n[a],Math.PI,0,!i);else s.arc(e[a],t[a],r[a],0,2*Math.PI,!0),s.arc(e[a],t[a],n[a],2*Math.PI,0,!1);s.fill()}this.visuals.line.doit&&(this.visuals.line.set_vectorize(s,a),s.beginPath(),s.arc(e[a],t[a],r[a],0,2*Math.PI),s.moveTo(e[a]+n[a],t[a]),s.arc(e[a],t[a],n[a],0,2*Math.PI),s.stroke())}}_hit_point(s){const{sx:i,sy:e}=s,t=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(e);let n,a,_,o;if(\"data\"==this.model.properties.outer_radius.units)n=t-this.max_outer_radius,_=t+this.max_outer_radius,a=r-this.max_outer_radius,o=r+this.max_outer_radius;else{const s=i-this.max_outer_radius,t=i+this.max_outer_radius;[n,_]=this.renderer.xscale.r_invert(s,t);const r=e-this.max_outer_radius,u=e+this.max_outer_radius;[a,o]=this.renderer.yscale.r_invert(r,u)}const d=[];for(const s of this.index.indices({x0:n,x1:_,y0:a,y1:o})){const i=this.souter_radius[s]**2,e=this.sinner_radius[s]**2,[n,a]=this.renderer.xscale.r_compute(t,this._x[s]),[_,u]=this.renderer.yscale.r_compute(r,this._y[s]),o=(n-a)**2+(_-u)**2;o<=i&&o>=e&&d.push(s)}return new u.Selection({indices:d})}draw_legend_for_index(s,{x0:i,y0:e,x1:t,y1:r},n){const a=n+1,_=new Array(a);_[n]=(i+t)/2;const u=new Array(a);u[n]=(e+r)/2;const o=.5*Math.min(Math.abs(t-i),Math.abs(r-e)),d=new Array(a);d[n]=.4*o;const h=new Array(a);h[n]=.8*o,this._render(s,[n],{sx:_,sy:u,sinner_radius:d,souter_radius:h})}}e.AnnulusView=o,o.__name__=\"AnnulusView\";class d extends r.XYGlyph{constructor(s){super(s)}static init_Annulus(){this.prototype.default_view=o,this.mixins([n.LineVector,n.FillVector]),this.define({inner_radius:[a.DistanceSpec],outer_radius:[a.DistanceSpec]})}}e.Annulus=d,d.__name__=\"Annulus\",d.init_Annulus()},\n", - " function _(e,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const t=e(1),r=e(93),n=e(100),a=e(28),_=t.__importStar(e(18));class c extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this._radius):this.sradius=this._radius}_render(e,i,{sx:s,sy:t,sradius:r,_start_angle:n,_end_angle:a}){if(this.visuals.line.doit){const _=this.model.properties.direction.value();for(const c of i)isNaN(s[c]+t[c]+r[c]+n[c]+a[c])||(e.beginPath(),e.arc(s[c],t[c],r[c],n[c],a[c],_),this.visuals.line.set_vectorize(e,c),e.stroke())}}draw_legend_for_index(e,i,s){n.generic_line_legend(this.visuals,e,i,s)}}s.ArcView=c,c.__name__=\"ArcView\";class d extends r.XYGlyph{constructor(e){super(e)}static init_Arc(){this.prototype.default_view=c,this.mixins(a.LineVector),this.define({direction:[_.Direction,\"anticlock\"],radius:[_.DistanceSpec],start_angle:[_.AngleSpec],end_angle:[_.AngleSpec]})}}s.Arc=d,d.__name__=\"Arc\",d.init_Arc()},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(28),c=e(94),o=e(100),_=e(37),r=s.__importStar(e(18));function a(e,t,i,s,n,c,o,_){const r=[],a=[[],[]];for(let a=0;a<=2;a++){let h,d,x;if(0===a?(d=6*e-12*i+6*n,h=-3*e+9*i-9*n+3*o,x=3*i-3*e):(d=6*t-12*s+6*c,h=-3*t+9*s-9*c+3*_,x=3*s-3*t),Math.abs(h)<1e-12){if(Math.abs(d)<1e-12)continue;const e=-x/d;0Math.max(s,i[e]));break}case\"min\":{const s=this.sdist(this.renderer.xscale,this._x,this._radius),i=this.sdist(this.renderer.yscale,this._y,this._radius);this.sradius=_.map(s,(s,e)=>Math.min(s,i[e]));break}}else this.sradius=this._radius,this.max_size=2*this.max_radius;else this.sradius=_.map(this._size,s=>s/2)}_mask_data(){const[s,i]=this.renderer.plot_view.frame.bbox.ranges;let e,t,r,a;if(null!=this._radius&&\"data\"==this.model.properties.radius.units){const n=s.start,h=s.end;[e,r]=this.renderer.xscale.r_invert(n,h),e-=this.max_radius,r+=this.max_radius;const d=i.start,l=i.end;[t,a]=this.renderer.yscale.r_invert(d,l),t-=this.max_radius,a+=this.max_radius}else{const n=s.start-this.max_size,h=s.end+this.max_size;[e,r]=this.renderer.xscale.r_invert(n,h);const d=i.start-this.max_size,l=i.end+this.max_size;[t,a]=this.renderer.yscale.r_invert(d,l)}return this.index.indices({x0:e,x1:r,y0:t,y1:a})}_render(s,i,{sx:e,sy:t,sradius:r}){for(const a of i)isNaN(e[a]+t[a]+r[a])||(s.beginPath(),s.arc(e[a],t[a],r[a],0,2*Math.PI,!1),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(s,a),s.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(s,a),s.stroke()))}_hit_point(s){const{sx:i,sy:e}=s,t=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(e);let a,n,h,d;if(null!=this._radius&&\"data\"==this.model.properties.radius.units)a=t-this.max_radius,n=t+this.max_radius,h=r-this.max_radius,d=r+this.max_radius;else{const s=i-this.max_size,t=i+this.max_size;[a,n]=this.renderer.xscale.r_invert(s,t);const r=e-this.max_size,l=e+this.max_size;[h,d]=this.renderer.yscale.r_invert(r,l)}const l=this.index.indices({x0:a,x1:n,y0:h,y1:d}),_=[];if(null!=this._radius&&\"data\"==this.model.properties.radius.units)for(const s of l){const i=this.sradius[s]**2,[e,a]=this.renderer.xscale.r_compute(t,this._x[s]),[n,h]=this.renderer.yscale.r_compute(r,this._y[s]);(e-a)**2+(n-h)**2<=i&&_.push(s)}else for(const s of l){const t=this.sradius[s]**2;(this.sx[s]-i)**2+(this.sy[s]-e)**2<=t&&_.push(s)}return new c.Selection({indices:_})}_hit_span(s){const{sx:i,sy:e}=s,t=this.bounds();let r,a,n,h;if(\"h\"==s.direction){let s,e;if(n=t.y0,h=t.y1,null!=this._radius&&\"data\"==this.model.properties.radius.units)s=i-this.max_radius,e=i+this.max_radius,[r,a]=this.renderer.xscale.r_invert(s,e);else{const t=this.max_size/2;s=i-t,e=i+t,[r,a]=this.renderer.xscale.r_invert(s,e)}}else{let s,i;if(r=t.x0,a=t.x1,null!=this._radius&&\"data\"==this.model.properties.radius.units)s=e-this.max_radius,i=e+this.max_radius,[n,h]=this.renderer.yscale.r_invert(s,i);else{const t=this.max_size/2;s=e-t,i=e+t,[n,h]=this.renderer.yscale.r_invert(s,i)}}const d=[...this.index.indices({x0:r,x1:a,y0:n,y1:h})];return new c.Selection({indices:d})}_hit_rect(s){const{sx0:i,sx1:e,sy0:t,sy1:r}=s,[a,n]=this.renderer.xscale.r_invert(i,e),[h,d]=this.renderer.yscale.r_invert(t,r),l=[...this.index.indices({x0:a,x1:n,y0:h,y1:d})];return new c.Selection({indices:l})}_hit_poly(s){const{sx:i,sy:e}=s,t=l.range(0,this.sx.length),r=[];for(let s=0,a=t.length;s2*t)),i.data_changed=!1),this.visuals_changed&&(this._set_visuals(a),this.visuals_changed=!1),this.prog.set_uniform(\"u_pixel_ratio\",\"float\",[s.pixel_ratio]),this.prog.set_uniform(\"u_canvas_size\",\"vec2\",[s.width,s.height]),this.prog.set_attribute(\"a_sx\",\"float\",i.vbo_sx),this.prog.set_attribute(\"a_sy\",\"float\",i.vbo_sy),this.prog.set_attribute(\"a_size\",\"float\",i.vbo_s),this.prog.set_attribute(\"a_angle\",\"float\",i.vbo_a),0!=t.length)if(t.length===a)this.prog.draw(this.gl.POINTS,[0,a]);else if(a<65535){const e=window.navigator.userAgent;e.indexOf(\"MSIE \")+e.indexOf(\"Trident/\")+e.indexOf(\"Edge/\")>0&&n.logger.warn(\"WebGL warning: IE is known to produce 1px sprites whith selections.\"),this.index_buffer.set_size(2*t.length),this.index_buffer.set_data(0,new Uint16Array(t)),this.prog.draw(this.gl.POINTS,this.index_buffer)}else{const e=64e3,s=[];for(let t=0,i=Math.ceil(a/e);t2*t)):this.vbo_s.set_data(0,new Float32Array(this.glyph._size))}_set_visuals(t){u(this.prog,this.vbo_linewidth,\"a_linewidth\",t,this.glyph.visuals.line,\"line_width\"),f(this.prog,this.vbo_fg_color,\"a_fg_color\",t,this.glyph.visuals.line,\"line\"),f(this.prog,this.vbo_bg_color,\"a_bg_color\",t,this.glyph.visuals.fill,\"fill\"),this.prog.set_uniform(\"u_antialias\",\"float\",[.8])}}function b(t){return class extends d{get _marker_code(){return t}}}s.MarkerGL=d,d.__name__=\"MarkerGL\";const c=i.__importStar(t(240));s.AsteriskGL=b(c.asterisk),s.CircleGL=b(c.circle),s.CircleCrossGL=b(c.circlecross),s.CircleXGL=b(c.circlex),s.CrossGL=b(c.cross),s.DiamondGL=b(c.diamond),s.DiamondCrossGL=b(c.diamondcross),s.HexGL=b(c.hex),s.InvertedTriangleGL=b(c.invertedtriangle),s.SquareGL=b(c.square),s.SquareCrossGL=b(c.squarecross),s.SquareXGL=b(c.squarex),s.TriangleGL=b(c.triangle),s.XGL=b(c.x)},\n", - " function _(n,i,a){Object.defineProperty(a,\"__esModule\",{value:!0}),a.vertex_shader=\"\\nprecision mediump float;\\nconst float SQRT_2 = 1.4142135623730951;\\n//\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size;\\nuniform vec2 u_offset;\\nuniform vec2 u_scale;\\nuniform float u_antialias;\\n//\\nattribute float a_sx;\\nattribute float a_sy;\\nattribute float a_size;\\nattribute float a_angle; // in radians\\nattribute float a_linewidth;\\nattribute vec4 a_fg_color;\\nattribute vec4 a_bg_color;\\n//\\nvarying float v_linewidth;\\nvarying float v_size;\\nvarying vec4 v_fg_color;\\nvarying vec4 v_bg_color;\\nvarying vec2 v_rotation;\\n\\nvoid main (void)\\n{\\n v_size = a_size * u_pixel_ratio;\\n v_linewidth = a_linewidth * u_pixel_ratio;\\n v_fg_color = a_fg_color;\\n v_bg_color = a_bg_color;\\n v_rotation = vec2(cos(-a_angle), sin(-a_angle));\\n vec2 pos = vec2(a_sx, a_sy); // in pixels\\n pos += 0.5; // make up for Bokeh's offset\\n pos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(pos*2.0-1.0, 0.0, 1.0);\\n gl_Position.y *= -1.0;\\n gl_PointSize = SQRT_2 * v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\n}\\n\"},\n", - " function _(a,n,s){Object.defineProperty(s,\"__esModule\",{value:!0}),s.fragment_shader=a=>`\\nprecision mediump float;\\nconst float SQRT_2 = 1.4142135623730951;\\nconst float PI = 3.14159265358979323846264;\\n//\\nuniform float u_antialias;\\n//\\nvarying vec4 v_fg_color;\\nvarying vec4 v_bg_color;\\nvarying float v_linewidth;\\nvarying float v_size;\\nvarying vec2 v_rotation;\\n\\n${a}\\n\\nvec4 outline(float distance, float linewidth, float antialias, vec4 fg_color, vec4 bg_color)\\n{\\n vec4 frag_color;\\n float t = linewidth/2.0 - antialias;\\n float signed_distance = distance;\\n float border_distance = abs(signed_distance) - t;\\n float alpha = border_distance/antialias;\\n alpha = exp(-alpha*alpha);\\n\\n // If fg alpha is zero, it probably means no outline. To avoid a dark outline\\n // shining through due to aa, we set the fg color to the bg color. Avoid if (i.e. branching).\\n float select = float(bool(fg_color.a));\\n fg_color.rgb = select * fg_color.rgb + (1.0 - select) * bg_color.rgb;\\n // Similarly, if we want a transparent bg\\n select = float(bool(bg_color.a));\\n bg_color.rgb = select * bg_color.rgb + (1.0 - select) * fg_color.rgb;\\n\\n if( border_distance < 0.0)\\n frag_color = fg_color;\\n else if( signed_distance < 0.0 ) {\\n frag_color = mix(bg_color, fg_color, sqrt(alpha));\\n } else {\\n if( abs(signed_distance) < (linewidth/2.0 + antialias) ) {\\n frag_color = vec4(fg_color.rgb, fg_color.a * alpha);\\n } else {\\n discard;\\n }\\n }\\n return frag_color;\\n}\\n\\nvoid main()\\n{\\n vec2 P = gl_PointCoord.xy - vec2(0.5, 0.5);\\n P = vec2(v_rotation.x*P.x - v_rotation.y*P.y,\\n v_rotation.y*P.x + v_rotation.x*P.y);\\n float point_size = SQRT_2*v_size + 2.0 * (v_linewidth + 1.5*u_antialias);\\n float distance = marker(P*point_size, v_size);\\n gl_FragColor = outline(distance, v_linewidth, u_antialias, v_fg_color, v_bg_color);\\n}\\n`,s.circle=\"\\nfloat marker(vec2 P, float size)\\n{\\n return length(P) - size/2.0;\\n}\\n\",s.square=\"\\nfloat marker(vec2 P, float size)\\n{\\n return max(abs(P.x), abs(P.y)) - size/2.0;\\n}\\n\",s.diamond=\"\\nfloat marker(vec2 P, float size)\\n{\\n float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\n return r1 / SQRT_2;\\n}\\n\",s.hex=\"\\nfloat marker(vec2 P, float size)\\n{\\n vec2 q = abs(P);\\n return max(q.y * 0.57735 + q.x - 1.0 * size/2.0, q.y - 0.866 * size/2.0);\\n}\\n\",s.triangle=\"\\nfloat marker(vec2 P, float size)\\n{\\n P.y -= size * 0.3;\\n float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / 1.6;\\n float r2 = P.y;\\n return max(r1 / SQRT_2, r2); // Intersect diamond with rectangle\\n}\\n\",s.invertedtriangle=\"\\nfloat marker(vec2 P, float size)\\n{\\n P.y += size * 0.3;\\n float x = SQRT_2 / 2.0 * (P.x * 1.7 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.7 + P.y);\\n float r1 = max(abs(x), abs(y)) - size / 1.6;\\n float r2 = - P.y;\\n return max(r1 / SQRT_2, r2); // Intersect diamond with rectangle\\n}\\n\",s.cross='\\nfloat marker(vec2 P, float size)\\n{\\n float square = max(abs(P.x), abs(P.y)) - size / 2.5; // 2.5 is a tweak\\n float cross = min(abs(P.x), abs(P.y)) - size / 100.0; // bit of \"width\" for aa\\n return max(square, cross);\\n}\\n',s.circlecross=\"\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float circle = length(P) - size/2.0;\\n float c1 = max(circle, s1);\\n float c2 = max(circle, s2);\\n float c3 = max(circle, s3);\\n float c4 = max(circle, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.squarecross=\"\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float square = max(abs(P.x), abs(P.y)) - size/2.0;\\n float c1 = max(square, s1);\\n float c2 = max(square, s2);\\n float c3 = max(square, s3);\\n float c4 = max(square, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.diamondcross=\"\\nfloat marker(vec2 P, float size)\\n{\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(P.x - qs), abs(P.y - qs)) - qs;\\n float s2 = max(abs(P.x + qs), abs(P.y - qs)) - qs;\\n float s3 = max(abs(P.x - qs), abs(P.y + qs)) - qs;\\n float s4 = max(abs(P.x + qs), abs(P.y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float x = SQRT_2 / 2.0 * (P.x * 1.5 - P.y);\\n float y = SQRT_2 / 2.0 * (P.x * 1.5 + P.y);\\n float diamond = max(abs(x), abs(y)) - size / (2.0 * SQRT_2);\\n diamond /= SQRT_2;\\n float c1 = max(diamond, s1);\\n float c2 = max(diamond, s2);\\n float c3 = max(diamond, s3);\\n float c4 = max(diamond, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.x='\\nfloat marker(vec2 P, float size)\\n{\\n float circle = length(P) - size / 1.6;\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n return max(circle, X);\\n}\\n',s.circlex='\\nfloat marker(vec2 P, float size)\\n{\\n float x = P.x - P.y;\\n float y = P.x + P.y;\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\n float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\n float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\n float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float circle = length(P) - size/2.0;\\n float c1 = max(circle, s1);\\n float c2 = max(circle, s2);\\n float c3 = max(circle, s3);\\n float c4 = max(circle, s4);\\n // Union\\n float almost = min(min(min(c1, c2), c3), c4);\\n // In this case, the X is also outside of the main shape\\n float Xmask = length(P) - size / 1.6; // a circle\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n return min(max(X, Xmask), almost);\\n}\\n',s.squarex=\"\\nfloat marker(vec2 P, float size)\\n{\\n float x = P.x - P.y;\\n float y = P.x + P.y;\\n // Define quadrants\\n float qs = size / 2.0; // quadrant size\\n float s1 = max(abs(x - qs), abs(y - qs)) - qs;\\n float s2 = max(abs(x + qs), abs(y - qs)) - qs;\\n float s3 = max(abs(x - qs), abs(y + qs)) - qs;\\n float s4 = max(abs(x + qs), abs(y + qs)) - qs;\\n // Intersect main shape with quadrants (to form cross)\\n float square = max(abs(P.x), abs(P.y)) - size/2.0;\\n float c1 = max(square, s1);\\n float c2 = max(square, s2);\\n float c3 = max(square, s3);\\n float c4 = max(square, s4);\\n // Union\\n return min(min(min(c1, c2), c3), c4);\\n}\\n\",s.asterisk='\\nfloat marker(vec2 P, float size)\\n{\\n // Masks\\n float diamond = max(abs(SQRT_2 / 2.0 * (P.x - P.y)), abs(SQRT_2 / 2.0 * (P.x + P.y))) - size / (2.0 * SQRT_2);\\n float square = max(abs(P.x), abs(P.y)) - size / (2.0 * SQRT_2);\\n // Shapes\\n float X = min(abs(P.x - P.y), abs(P.x + P.y)) - size / 100.0; // bit of \"width\" for aa\\n float cross = min(abs(P.x), abs(P.y)) - size / 100.0; // bit of \"width\" for aa\\n // Result is union of masked shapes\\n return min(max(X, diamond), max(cross, square));\\n}\\n'},\n", - " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const a=e(1),i=e(93),l=e(28),s=a.__importStar(e(18));class c extends i.XYGlyphView{}n.CenterRotatableView=c,c.__name__=\"CenterRotatableView\";class o extends i.XYGlyph{constructor(e){super(e)}static init_CenterRotatable(){this.mixins([l.LineVector,l.FillVector]),this.define({angle:[s.AngleSpec,0],width:[s.DistanceSpec],height:[s.DistanceSpec]})}}n.CenterRotatable=o,o.__name__=\"CenterRotatable\",o.init_CenterRotatable()},\n", - " function _(e,l,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(243);class t extends s.EllipseOvalView{}i.EllipseView=t,t.__name__=\"EllipseView\";class _ extends s.EllipseOval{constructor(e){super(e)}static init_Ellipse(){this.prototype.default_view=t}}i.Ellipse=_,_.__name__=\"Ellipse\",_.init_Ellipse()},\n", - " function _(t,s,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=t(1),h=t(241),a=e.__importStar(t(101)),r=t(88);class n extends h.CenterRotatableView{_set_data(){this.max_w2=0,\"data\"==this.model.properties.width.units&&(this.max_w2=this.max_width/2),this.max_h2=0,\"data\"==this.model.properties.height.units&&(this.max_h2=this.max_height/2)}_map_data(){\"data\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this._width,\"center\"):this.sw=this._width,\"data\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\"center\"):this.sh=this._height}_render(t,s,{sx:i,sy:e,sw:h,sh:a,_angle:r}){for(const n of s)isNaN(i[n]+e[n]+h[n]+a[n]+r[n])||(t.beginPath(),t.ellipse(i[n],e[n],h[n]/2,a[n]/2,r[n],0,2*Math.PI),this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(t,n),t.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,n),t.stroke()))}_hit_point(t){let s,i,e,h,n,_,l,d,o;const{sx:x,sy:m}=t,w=this.renderer.xscale.invert(x),c=this.renderer.yscale.invert(m);\"data\"==this.model.properties.width.units?(s=w-this.max_width,i=w+this.max_width):(_=x-this.max_width,l=x+this.max_width,[s,i]=this.renderer.xscale.r_invert(_,l)),\"data\"==this.model.properties.height.units?(e=c-this.max_height,h=c+this.max_height):(d=m-this.max_height,o=m+this.max_height,[e,h]=this.renderer.yscale.r_invert(d,o));const p=this.index.indices({x0:s,x1:i,y0:e,y1:h}),y=[];for(const t of p)n=a.point_in_ellipse(x,m,this._angle[t],this.sh[t]/2,this.sw[t]/2,this.sx[t],this.sy[t]),n&&y.push(t);return new r.Selection({indices:y})}draw_legend_for_index(t,{x0:s,y0:i,x1:e,y1:h},a){const r=a+1,n=new Array(r);n[a]=(s+e)/2;const _=new Array(r);_[a]=(i+h)/2;const l=this.sw[a]/this.sh[a],d=.8*Math.min(Math.abs(e-s),Math.abs(h-i)),o=new Array(r),x=new Array(r);l>1?(o[a]=d,x[a]=d/l):(o[a]=d*l,x[a]=d),this._render(t,[a],{sx:n,sy:_,sw:o,sh:x,_angle:[0]})}_bounds({x0:t,x1:s,y0:i,y1:e}){return{x0:t-this.max_w2,x1:s+this.max_w2,y0:i-this.max_h2,y1:e+this.max_h2}}}i.EllipseOvalView=n,n.__name__=\"EllipseOvalView\";class _ extends h.CenterRotatable{constructor(t){super(t)}}i.EllipseOval=_,_.__name__=\"EllipseOval\"},\n", - " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(1),h=t(245),r=t(24),_=i.__importStar(t(18));class a extends h.BoxView{scenterxy(t){return[(this.sleft[t]+this.sright[t])/2,this.sy[t]]}_lrtb(t){return[Math.min(this._left[t],this._right[t]),Math.max(this._left[t],this._right[t]),this._y[t]+.5*this._height[t],this._y[t]-.5*this._height[t]]}_map_data(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this._height,\"center\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);const t=this.sy.length;this.stop=new r.NumberArray(t),this.sbottom=new r.NumberArray(t);for(let e=0;e{t.beginPath(),t.rect(i[a],r[a],s[a]-i[a],n[a]-r[a]),t.fill()},()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(t,a),t.beginPath(),t.rect(i[a],r[a],s[a]-i[a],n[a]-r[a]),t.stroke()))}_clamp_viewport(){const t=this.renderer.plot_view.frame.bbox.h_range,e=this.renderer.plot_view.frame.bbox.v_range,i=this.stop.length;for(let s=0;sthis._update_image())}_update_image(){null!=this.image_data&&(this._set_data(null),this.renderer.plot_view.request_render())}_flat_img_to_buf8(e){return this.model.color_mapper.rgba_mapper.v_compute(e)}}a.ImageView=r,r.__name__=\"ImageView\";class o extends i.ImageBase{constructor(e){super(e)}static init_Image(){this.prototype.default_view=r,this.define({color_mapper:[s.Instance,()=>new n.LinearColorMapper({palette:[\"#000000\",\"#252525\",\"#525252\",\"#737373\",\"#969696\",\"#bdbdbd\",\"#d9d9d9\",\"#f0f0f0\",\"#ffffff\"]})]})}}a.Image=o,o.__name__=\"Image\",o.init_Image()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),a=e(93),h=e(24),_=i.__importStar(e(18)),n=e(88),r=e(9),d=e(30),l=e(11);class g extends a.XYGlyphView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,()=>this.renderer.request_render())}_render(e,t,{image_data:s,sx:i,sy:a,sw:h,sh:_}){const n=e.getImageSmoothingEnabled();e.setImageSmoothingEnabled(!1),e.globalAlpha=this.model.global_alpha;for(const n of t){if(null==s[n]||isNaN(i[n]+a[n]+h[n]+_[n]))continue;const t=a[n];e.translate(0,t),e.scale(1,-1),e.translate(0,-t),e.drawImage(s[n],0|i[n],0|a[n],h[n],_[n]),e.translate(0,t),e.scale(1,-1),e.translate(0,-t)}e.setImageSmoothingEnabled(n)}_set_data(e){this._set_width_heigh_data();for(let t=0,s=this._image.length;tthis.renderer.request_render())}_index_data(e){const{data_size:t}=this;for(let s=0;snull));const{retry_attempts:e,retry_timeout:t}=this.model;for(let s=0,r=this._url.length;s{this.image[s]=e,this.renderer.request_render()},attempts:e+1,timeout:t})}const s=\"data\"==this.model.properties.w.units,r=\"data\"==this.model.properties.h.units,i=this._x.length,n=new a.NumberArray(s?2*i:i),_=new a.NumberArray(r?2*i:i),{anchor:c}=this.model;function l(e,t){switch(c){case\"top_left\":case\"bottom_left\":case\"center_left\":return[e,e+t];case\"top_center\":case\"bottom_center\":case\"center\":return[e-t/2,e+t/2];case\"top_right\":case\"bottom_right\":case\"center_right\":return[e-t,e]}}function d(e,t){switch(c){case\"top_left\":case\"top_center\":case\"top_right\":return[e,e-t];case\"bottom_left\":case\"bottom_center\":case\"bottom_right\":return[e+t,e];case\"center_left\":case\"center\":case\"center_right\":return[e+t/2,e-t/2]}}if(s)for(let e=0;eNaN),t=null!=this.model.h?this._h:h.map(this._x,()=>NaN);switch(this.model.properties.w.units){case\"data\":this.sw=this.sdist(this.renderer.xscale,this._x,e,\"edge\",this.model.dilate);break;case\"screen\":this.sw=e}switch(this.model.properties.h.units){case\"data\":this.sh=this.sdist(this.renderer.yscale,this._y,t,\"edge\",this.model.dilate);break;case\"screen\":this.sh=t}}_render(e,t,{image:s,sx:r,sy:i,sw:a,sh:n,_angle:h}){const{frame:o}=this.renderer.plot_view;e.rect(o.bbox.left+1,o.bbox.top+1,o.bbox.width-2,o.bbox.height-2),e.clip();let _=!0;for(const o of t){if(isNaN(r[o]+i[o]+h[o]))continue;const t=s[o];null!=t?this._render_image(e,o,t,r,i,a,n,h):_=!1}_&&!this._images_rendered&&(this._images_rendered=!0,this.notify_finished())}_final_sx_sy(e,t,s,r,i){switch(e){case\"top_left\":return[t,s];case\"top_center\":return[t-r/2,s];case\"top_right\":return[t-r,s];case\"center_right\":return[t-r,s-i/2];case\"bottom_right\":return[t-r,s-i];case\"bottom_center\":return[t-r/2,s-i];case\"bottom_left\":return[t,s-i];case\"center_left\":return[t,s-i/2];case\"center\":return[t-r/2,s-i/2]}}_render_image(e,t,s,r,i,a,n,h){isNaN(a[t])&&(a[t]=s.width),isNaN(n[t])&&(n[t]=s.height);const{anchor:o}=this.model,[_,c]=this._final_sx_sy(o,r[t],i[t],a[t],n[t]);e.save(),e.globalAlpha=this.model.global_alpha;const l=a[t]/2,d=n[t]/2;h[t]?(e.translate(_,c),e.translate(l,d),e.rotate(h[t]),e.translate(-l,-d),e.drawImage(s,0,0,a[t],n[t]),e.translate(l,d),e.rotate(-h[t]),e.translate(-l,-d),e.translate(-_,-c)):e.drawImage(s,_,c,a[t],n[t]),e.restore()}bounds(){return this._bounds_rect}}s.ImageURLView=_,_.__name__=\"ImageURLView\";class c extends i.XYGlyph{constructor(e){super(e)}static init_ImageURL(){this.prototype.default_view=_,this.define({url:[n.StringSpec],anchor:[n.Anchor,\"top_left\"],global_alpha:[n.Number,1],angle:[n.AngleSpec,0],w:[n.DistanceSpec],h:[n.DistanceSpec],dilate:[n.Boolean,!1],retry_attempts:[n.Number,0],retry_timeout:[n.Number,0]})}}s.ImageURL=c,c.__name__=\"ImageURL\",c.init_ImageURL()},\n", - " function _(i,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=i(19);class a{constructor(i,e={}){this._image=new Image,this._finished=!1;const{attempts:t=1,timeout:a=1}=e;this.promise=new Promise((o,n)=>{this._image.crossOrigin=\"anonymous\";let r=0;this._image.onerror=()=>{if(++r==t){const a=`unable to load ${i} image after ${t} attempts`;if(s.logger.warn(a),null==this._image.crossOrigin)return void(null!=e.failed&&e.failed());s.logger.warn(`attempting to load ${i} without a cross origin policy`),this._image.crossOrigin=null,r=0}setTimeout(()=>this._image.src=i,a)},this._image.onload=()=>{this._finished=!0,null!=e.loaded&&e.loaded(this._image),o(this._image)},this._image.src=i})}get finished(){return this._finished}get image(){return this._image}}t.ImageLoader=a,a.__name__=\"ImageLoader\"},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(37),o=e(28),l=s.__importStar(e(101)),r=s.__importStar(e(18)),_=e(12),c=e(13),a=e(94),h=e(100),d=e(88);class y extends a.GlyphView{_project_data(){n.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(e){const{data_size:t}=this;for(let i=0;i0&&o.set(e,i)}return new d.Selection({indices:[...o.keys()],multiline_indices:c.to_object(o)})}get_interpolation_hit(e,t,i){const s=this._xs.get(e),n=this._ys.get(e),o=s[t],l=n[t],r=s[t+1],_=n[t+1];return h.line_interpolation(this.renderer,i,o,l,r,_)}draw_legend_for_index(e,t,i){h.generic_line_legend(this.visuals,e,t,i)}scenterxy(){throw new Error(this+\".scenterxy() is not implemented\")}}i.MultiLineView=y,y.__name__=\"MultiLineView\";class x extends a.Glyph{constructor(e){super(e)}static init_MultiLine(){this.prototype.default_view=y,this.define({xs:[r.XCoordinateSeqSpec,{field:\"xs\"}],ys:[r.YCoordinateSeqSpec,{field:\"ys\"}]}),this.mixins(o.LineVector)}}i.MultiLine=x,x.__name__=\"MultiLine\",x.init_MultiLine()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),n=e(95),o=e(94),r=e(100),l=e(12),h=e(12),_=e(28),a=i.__importStar(e(101)),d=i.__importStar(e(18)),c=e(88),x=e(11);class y extends o.GlyphView{_project_data(){}_index_data(e){const{min:t,max:s}=Math,{data_size:i}=this;for(let n=0;n1&&d.length>1)for(let s=1,i=n.length;s{this._inner_loop(e,t,o),e.fill(\"evenodd\")},()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,n),this._inner_loop(e,t,o),e.stroke())}}_hit_rect(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,o=[t,s,s,t],r=[i,i,n,n],[l,h]=this.renderer.xscale.r_invert(t,s),[_,d]=this.renderer.yscale.r_invert(i,n),x=this.index.indices({x0:l,x1:h,y0:_,y1:d}),y=[];for(const e of x){const t=this.sxs[e],s=this.sys[e];let i=!0;for(let e=0,n=t.length;e1){let r=!1;for(let e=1;ethis._inner_loop(e,t,r,e.fill),()=>this.renderer.request_render()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,n),this._inner_loop(e,t,r,e.stroke))}}_hit_rect(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,r=[t,s,s,t],o=[i,i,n,n],[a,c]=this.renderer.xscale.r_invert(t,s),[h,d]=this.renderer.yscale.r_invert(i,n),y=this.index.indices({x0:a,x1:c,y0:h,y1:d}),p=[];for(const e of y){const t=this.sxs.get(e),s=this.sys.get(e);let i=!0;for(let e=0,n=t.length;e1&&(e.stroke(),s=!1)}s?(e.lineTo(t,a),e.lineTo(l,_)):(e.beginPath(),e.moveTo(i[r],n[r]),s=!0),o=r}e.lineTo(i[r-1],n[r-1]),e.stroke()}}draw_legend_for_index(e,t,i){o.generic_line_legend(this.visuals,e,t,i)}}i.StepView=a,a.__name__=\"StepView\";class _ extends s.XYGlyph{constructor(e){super(e)}static init_Step(){this.prototype.default_view=a,this.mixins(r.LineVector),this.define({mode:[l.StepMode,\"before\"]})}}i.Step=_,_.__name__=\"Step\",_.init_Step()},\n", - " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(1),n=t(93),_=t(28),o=i.__importStar(t(101)),h=i.__importStar(t(18)),l=t(159),a=t(11),r=t(88);class c extends n.XYGlyphView{_rotate_point(t,s,e,i,n){return[(t-e)*Math.cos(n)-(s-i)*Math.sin(n)+e,(t-e)*Math.sin(n)+(s-i)*Math.cos(n)+i]}_text_bounds(t,s,e,i){return[[t,t+e,t+e,t,t],[s,s,s-i,s-i,s]]}_render(t,s,{sx:e,sy:i,_x_offset:n,_y_offset:_,_angle:o,_text:h}){this._sys=[],this._sxs=[];for(const a of s)if(this._sxs[a]=[],this._sys[a]=[],!isNaN(e[a]+i[a]+n[a]+_[a]+o[a])&&null!=h[a]&&this.visuals.text.doit){const s=\"\"+h[a];t.save(),t.translate(e[a]+n[a],i[a]+_[a]),t.rotate(o[a]),this.visuals.text.set_vectorize(t,a);const r=this.visuals.text.cache_select(\"font\",a),{height:c}=l.measure_font(r),x=this.visuals.text.text_line_height.value()*c;if(-1==s.indexOf(\"\\n\")){t.fillText(s,0,0);const o=e[a]+n[a],h=i[a]+_[a],l=t.measureText(s).width,[r,c]=this._text_bounds(o,h,l,x);this._sxs[a].push(r),this._sys[a].push(c)}else{const o=s.split(\"\\n\"),h=x*o.length,l=this.visuals.text.cache_select(\"text_baseline\",a);let r;switch(l){case\"top\":r=0;break;case\"middle\":r=-h/2+x/2;break;case\"bottom\":r=-h+x;break;default:r=0,console.warn(`'${l}' baseline not supported with multi line text`)}for(const s of o){t.fillText(s,0,r);const o=e[a]+n[a],h=r+i[a]+_[a],l=t.measureText(s).width,[c,u]=this._text_bounds(o,h,l,x);this._sxs[a].push(c),this._sys[a].push(u),r+=x}}t.restore()}}_hit_point(t){const{sx:s,sy:e}=t,i=[];for(let t=0;tthis.request_render())}_draw_regions(i){if(!this.visuals.band_fill.doit&&!this.visuals.band_hatch.doit)return;this.visuals.band_fill.set_value(i);const[e,t]=this.grid_coords(\"major\",!1);for(let s=0;s{i.fillRect(n[0],r[0],o[1]-n[0],d[1]-r[0])},()=>this.request_render())}}_draw_grids(i){if(!this.visuals.grid_line.doit)return;const[e,t]=this.grid_coords(\"major\");this._draw_grid_helper(i,this.visuals.grid_line,e,t)}_draw_minor_grids(i){if(!this.visuals.minor_grid_line.doit)return;const[e,t]=this.grid_coords(\"minor\");this._draw_grid_helper(i,this.visuals.minor_grid_line,e,t)}_draw_grid_helper(i,e,t,s){e.set_value(i),i.beginPath();for(let e=0;et[1]&&(n=t[1]);else{[s,n]=t;for(const i of this.plot_view.axis_views)i.dimension==this.model.dimension&&i.model.x_range_name==this.model.x_range_name&&i.model.y_range_name==this.model.y_range_name&&([s,n]=i.computed_bounds)}return[s,n]}grid_coords(i,e=!0){const t=this.model.dimension,s=(t+1)%2,[n,r]=this.ranges();let[o,d]=this.computed_bounds();[o,d]=[Math.min(o,d),Math.max(o,d)];const _=[[],[]],a=this.model.get_ticker();if(null==a)return _;const l=a.get_ticks(o,d,n,r.min,{})[i],h=n.min,c=n.max,u=r.min,m=r.max;e||(l[0]!=h&&l.splice(0,0,h),l[l.length-1]!=c&&l.push(c));for(let i=0;ithis.rebuild())}get child_models(){return this.model.children}}i.BoxView=c,c.__name__=\"BoxView\";class r extends s.LayoutDOM{constructor(e){super(e)}static init_Box(){this.define({children:[o.Array,[]],spacing:[o.Number,0]})}}i.Box=r,r.__name__=\"Box\",r.init_Box()},\n", - " function _(i,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const s=i(81),o=i(20),l=i(72),n=i(19),h=i(8),a=i(115),r=i(78),_=i(212),d=i(273),c=i(77);class u extends r.DOMView{constructor(){super(...arguments),this._idle_notified=!1,this._offset_parent=null,this._viewport={}}initialize(){super.initialize(),this.el.style.position=this.is_root?\"relative\":\"absolute\",this._child_views=new Map}async lazy_initialize(){await this.build_child_views()}remove(){for(const i of this.child_views)i.remove();this._child_views.clear(),super.remove()}connect_signals(){super.connect_signals(),this.is_root&&(this._on_resize=()=>this.resize_layout(),window.addEventListener(\"resize\",this._on_resize),this._parent_observer=setInterval(()=>{const i=this.el.offsetParent;this._offset_parent!=i&&(this._offset_parent=i,null!=i&&(this.compute_viewport(),this.invalidate_layout()))},250));const i=this.model.properties;this.on_change([i.width,i.height,i.min_width,i.min_height,i.max_width,i.max_height,i.margin,i.width_policy,i.height_policy,i.sizing_mode,i.aspect_ratio,i.visible],()=>this.invalidate_layout()),this.on_change([i.background,i.css_classes],()=>this.invalidate_render())}disconnect_signals(){null!=this._parent_observer&&clearTimeout(this._parent_observer),null!=this._on_resize&&window.removeEventListener(\"resize\",this._on_resize),super.disconnect_signals()}css_classes(){return super.css_classes().concat(this.model.css_classes)}get child_views(){return this.child_models.map(i=>this._child_views.get(i))}async build_child_views(){await a.build_views(this._child_views,this.child_models,{parent:this})}render(){super.render(),l.empty(this.el);const{background:i}=this.model;this.el.style.backgroundColor=null!=i?i:\"\",l.classes(this.el).clear().add(...this.css_classes());for(const i of this.child_views)this.el.appendChild(i.el),i.render()}update_layout(){for(const i of this.child_views)i.update_layout();this._update_layout()}update_position(){this.el.style.display=this.model.visible?\"block\":\"none\";const i=this.is_root?this.layout.sizing.margin:void 0;l.position(this.el,this.layout.bbox,i);for(const i of this.child_views)i.update_position()}after_layout(){for(const i of this.child_views)i.after_layout();this._has_finished=!0}compute_viewport(){this._viewport=this._viewport_size()}renderTo(i){i.appendChild(this.el),this._offset_parent=this.el.offsetParent,this.compute_viewport(),this.build()}build(){return this.assert_root(),this.render(),this.update_layout(),this.compute_layout(),this}async rebuild(){await this.build_child_views(),this.invalidate_render()}compute_layout(){const i=Date.now();this.layout.compute(this._viewport),this.update_position(),this.after_layout(),n.logger.debug(`layout computed in ${Date.now()-i} ms`),this.notify_finished()}resize_layout(){this.root.compute_viewport(),this.root.compute_layout()}invalidate_layout(){this.root.update_layout(),this.root.compute_layout()}invalidate_render(){this.render(),this.invalidate_layout()}has_finished(){if(!super.has_finished())return!1;for(const i of this.child_views)if(!i.has_finished())return!1;return!0}notify_finished(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):this.root.notify_finished()}_width_policy(){return null!=this.model.width?\"fixed\":\"fit\"}_height_policy(){return null!=this.model.height?\"fixed\":\"fit\"}box_sizing(){let{width_policy:i,height_policy:t,aspect_ratio:e}=this.model;\"auto\"==i&&(i=this._width_policy()),\"auto\"==t&&(t=this._height_policy());const{sizing_mode:s}=this.model;if(null!=s)if(\"fixed\"==s)i=t=\"fixed\";else if(\"stretch_both\"==s)i=t=\"max\";else if(\"stretch_width\"==s)i=\"max\";else if(\"stretch_height\"==s)t=\"max\";else switch(null==e&&(e=\"auto\"),s){case\"scale_width\":i=\"max\",t=\"min\";break;case\"scale_height\":i=\"min\",t=\"max\";break;case\"scale_both\":i=\"max\",t=\"max\"}const o={width_policy:i,height_policy:t},{min_width:l,min_height:n}=this.model;null!=l&&(o.min_width=l),null!=n&&(o.min_height=n);const{width:a,height:r}=this.model;null!=a&&(o.width=a),null!=r&&(o.height=r);const{max_width:_,max_height:d}=this.model;null!=_&&(o.max_width=_),null!=d&&(o.max_height=d),\"auto\"==e&&null!=a&&null!=r?o.aspect=a/r:h.isNumber(e)&&(o.aspect=e);const{margin:c}=this.model;if(null!=c)if(h.isNumber(c))o.margin={top:c,right:c,bottom:c,left:c};else if(2==c.length){const[i,t]=c;o.margin={top:i,right:t,bottom:i,left:t}}else{const[i,t,e,s]=c;o.margin={top:i,right:t,bottom:e,left:s}}o.visible=this.model.visible;const{align:u}=this.model;return h.isArray(u)?[o.halign,o.valign]=u:o.halign=o.valign=u,o}_viewport_size(){return l.undisplayed(this.el,()=>{let i=this.el;for(;i=i.parentElement;){if(i.classList.contains(d.bk_root))continue;if(i==document.body){const{margin:{left:i,right:t,top:e,bottom:s}}=l.extents(document.body);return{width:Math.ceil(document.documentElement.clientWidth-i-t),height:Math.ceil(document.documentElement.clientHeight-e-s)}}const{padding:{left:t,right:e,top:s,bottom:o}}=l.extents(i),{width:n,height:h}=i.getBoundingClientRect(),a=Math.ceil(n-t-e),r=Math.ceil(h-s-o);if(a>0||r>0)return{width:a>0?a:void 0,height:r>0?r:void 0}}return{}})}export(i,t=!0){const e=\"png\"==i?\"canvas\":\"svg\",s=new c.CanvasLayer(e,t),{width:o,height:l}=this.layout.bbox;s.resize(o,l);for(const e of this.child_views){const o=e.export(i,t),{x:l,y:n}=e.layout.bbox;s.ctx.drawImage(o.canvas,l,n)}return s}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box,children:this.child_views.map(i=>i.serializable_state())})}}e.LayoutDOMView=u,u.__name__=\"LayoutDOMView\";class m extends s.Model{constructor(i){super(i)}static init_LayoutDOM(){this.define(i=>{const{Boolean:t,Number:e,String:s,Null:l,Auto:n,Color:h,Array:a,Tuple:r,Or:d}=i,c=r(e,e),u=r(e,e,e,e);return{width:[d(e,l),null],height:[d(e,l),null],min_width:[d(e,l),null],min_height:[d(e,l),null],max_width:[d(e,l),null],max_height:[d(e,l),null],margin:[d(e,c,u),[0,0,0,0]],width_policy:[d(_.SizingPolicy,n),\"auto\"],height_policy:[d(_.SizingPolicy,n),\"auto\"],aspect_ratio:[d(e,n,l),null],sizing_mode:[d(o.SizingMode,l),null],visible:[t,!0],disabled:[t,!1],align:[d(o.Align,r(o.Align,o.Align)),\"start\"],background:[d(h,l),null],css_classes:[a(s),[]]}})}}e.LayoutDOM=m,m.__name__=\"LayoutDOM\",m.init_LayoutDOM()},\n", - " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.bk_root=\"bk-root\"},\n", - " function _(t,o,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),e=t(271),n=t(216),l=s.__importStar(t(18));class u extends e.BoxView{_update_layout(){const t=this.child_views.map(t=>t.layout);this.layout=new n.Column(t),this.layout.rows=this.model.rows,this.layout.spacing=[this.model.spacing,0],this.layout.set_sizing(this.box_sizing())}}i.ColumnView=u,u.__name__=\"ColumnView\";class _ extends e.Box{constructor(t){super(t)}static init_Column(){this.prototype.default_view=u,this.define({rows:[l.Any,\"auto\"]})}}i.Column=_,_.__name__=\"Column\",_.init_Column()},\n", - " function _(t,i,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=t(1),e=t(272),n=t(216),l=o.__importStar(t(18));class r extends e.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.children.change,()=>this.rebuild())}get child_models(){return this.model.children.map(([t])=>t)}_update_layout(){this.layout=new n.Grid,this.layout.rows=this.model.rows,this.layout.cols=this.model.cols,this.layout.spacing=this.model.spacing;for(const[t,i,s,o,e]of this.model.children){const n=this._child_views.get(t);this.layout.items.push({layout:n.layout,row:i,col:s,row_span:o,col_span:e})}this.layout.set_sizing(this.box_sizing())}}s.GridBoxView=r,r.__name__=\"GridBoxView\";class a extends e.LayoutDOM{constructor(t){super(t)}static init_GridBox(){this.prototype.default_view=r,this.define({children:[l.Array,[]],rows:[l.Any,\"auto\"],cols:[l.Any,\"auto\"],spacing:[l.Any,0]})}}s.GridBox=a,a.__name__=\"GridBox\",a.init_GridBox()},\n", - " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(272),_=e(212);class n extends s.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new _.ContentBox(this.el),this.layout.set_sizing(this.box_sizing())}}o.HTMLBoxView=n,n.__name__=\"HTMLBoxView\";class i extends s.LayoutDOM{constructor(e){super(e)}}o.HTMLBox=i,i.__name__=\"HTMLBox\"},\n", - " function _(t,o,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),e=t(271),_=t(216),a=s.__importStar(t(18));class n extends e.BoxView{_update_layout(){const t=this.child_views.map(t=>t.layout);this.layout=new _.Row(t),this.layout.cols=this.model.cols,this.layout.spacing=[0,this.model.spacing],this.layout.set_sizing(this.box_sizing())}}i.RowView=n,n.__name__=\"RowView\";class l extends e.Box{constructor(t){super(t)}static init_Row(){this.prototype.default_view=n,this.define({cols:[a.Any,\"auto\"]})}}i.Row=l,l.__name__=\"Row\",l.init_Row()},\n", - " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const i=e(272),s=e(212);class _ extends i.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new s.LayoutItem,this.layout.set_sizing(this.box_sizing())}}a.SpacerView=_,_.__name__=\"SpacerView\";class o extends i.LayoutDOM{constructor(e){super(e)}static init_Spacer(){this.prototype.default_view=_}}a.Spacer=o,o.__name__=\"Spacer\",o.init_Spacer()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),a=e(212),l=e(72),h=e(9),o=i.__importStar(e(18)),c=e(272),d=e(81),r=e(173),n=e(280),_=e(281),b=e(282),p=i.__importDefault(e(283)),u=i.__importDefault(e(284)),m=i.__importDefault(e(285));class v extends c.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.tabs.change,()=>this.rebuild()),this.connect(this.model.properties.active.change,()=>this.on_active_change())}styles(){return[...super.styles(),p.default,u.default,m.default]}get child_models(){return this.model.tabs.map(e=>e.child)}_update_layout(){const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,{scroll_el:s,headers_el:i}=this;this.header=new class extends a.ContentBox{_measure(e){const a=l.size(s),o=l.children(i).slice(0,3).map(e=>l.size(e)),{width:c,height:d}=super._measure(e);if(t){const t=a.width+h.sum(o.map(e=>e.width));return{width:e.width!=1/0?e.width:t,height:d}}{const t=a.height+h.sum(o.map(e=>e.height));return{width:c,height:e.height!=1/0?e.height:t}}}}(this.header_el),t?this.header.set_sizing({width_policy:\"fit\",height_policy:\"fixed\"}):this.header.set_sizing({width_policy:\"fixed\",height_policy:\"fit\"});let o=1,c=1;switch(e){case\"above\":o-=1;break;case\"below\":o+=1;break;case\"left\":c-=1;break;case\"right\":c+=1}const d={layout:this.header,row:o,col:c},r=this.child_views.map(e=>({layout:e.layout,row:1,col:1}));this.layout=new a.Grid([d,...r]),this.layout.set_sizing(this.box_sizing())}update_position(){super.update_position(),this.header_el.style.position=\"absolute\",l.position(this.header_el,this.header.bbox);const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,s=l.size(this.scroll_el),i=l.scroll_size(this.headers_el);if(t){const{width:e}=this.header.bbox;i.width>e?(this.wrapper_el.style.maxWidth=e-s.width+\"px\",l.display(this.scroll_el)):(this.wrapper_el.style.maxWidth=\"\",l.undisplay(this.scroll_el))}else{const{height:e}=this.header.bbox;i.height>e?(this.wrapper_el.style.maxHeight=e-s.height+\"px\",l.display(this.scroll_el)):(this.wrapper_el.style.maxHeight=\"\",l.undisplay(this.scroll_el))}const{child_views:a}=this;for(const e of a)l.hide(e.el);const h=a[this.model.active];null!=h&&l.show(h.el)}render(){super.render();const{active:e}=this.model,t=this.model.tabs_location,s=\"above\"==t||\"below\"==t,i=this.model.tabs.map((t,s)=>{const i=l.div({class:[n.bk_tab,s==e?r.bk_active:null]},t.title);if(i.addEventListener(\"click\",e=>{e.target==e.currentTarget&&this.change_active(s)}),t.closable){const e=l.div({class:n.bk_close});e.addEventListener(\"click\",e=>{if(e.target==e.currentTarget){this.model.tabs=h.remove_at(this.model.tabs,s);const e=this.model.tabs.length;this.model.active>e-1&&(this.model.active=e-1)}}),i.appendChild(e)}return i});this.headers_el=l.div({class:[n.bk_headers]},i),this.wrapper_el=l.div({class:n.bk_headers_wrapper},this.headers_el);const a=l.div({class:[_.bk_btn,_.bk_btn_default],disabled:\"\"},l.div({class:[b.bk_caret,r.bk_left]})),o=l.div({class:[_.bk_btn,_.bk_btn_default]},l.div({class:[b.bk_caret,r.bk_right]}));let c=0;const d=e=>()=>{const t=this.model.tabs.length;c=\"left\"==e?Math.max(c-1,0):Math.min(c+1,t-1),0==c?a.setAttribute(\"disabled\",\"\"):a.removeAttribute(\"disabled\"),c==t-1?o.setAttribute(\"disabled\",\"\"):o.removeAttribute(\"disabled\");const i=l.children(this.headers_el).slice(0,c).map(e=>e.getBoundingClientRect());if(s){const e=-h.sum(i.map(e=>e.width));this.headers_el.style.left=e+\"px\"}else{const e=-h.sum(i.map(e=>e.height));this.headers_el.style.top=e+\"px\"}};a.addEventListener(\"click\",d(\"left\")),o.addEventListener(\"click\",d(\"right\")),this.scroll_el=l.div({class:_.bk_btn_group},a,o),this.header_el=l.div({class:[n.bk_tabs_header,r.bk_side(t)]},this.scroll_el,this.wrapper_el),this.el.appendChild(this.header_el)}change_active(e){e!=this.model.active&&(this.model.active=e)}on_active_change(){const e=this.model.active,t=l.children(this.headers_el);for(const e of t)e.classList.remove(r.bk_active);t[e].classList.add(r.bk_active);const{child_views:s}=this;for(const e of s)l.hide(e.el);l.show(s[e].el)}}s.TabsView=v,v.__name__=\"TabsView\";class g extends c.LayoutDOM{constructor(e){super(e)}static init_Tabs(){this.prototype.default_view=v,this.define({tabs:[o.Array,[]],tabs_location:[o.Location,\"above\"],active:[o.Number,0]})}}s.Tabs=g,g.__name__=\"Tabs\",g.init_Tabs();class w extends d.Model{constructor(e){super(e)}static init_Panel(){this.define({title:[o.String,\"\"],child:[o.Instance],closable:[o.Boolean,!1]})}}s.Panel=w,w.__name__=\"Panel\",w.init_Panel()},\n", - " function _(e,b,a){Object.defineProperty(a,\"__esModule\",{value:!0}),a.bk_tabs_header=\"bk-tabs-header\",a.bk_headers_wrapper=\"bk-headers-wrapper\",a.bk_headers=\"bk-headers\",a.bk_tab=\"bk-tab\",a.bk_close=\"bk-close\"},\n", - " function _(n,b,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.bk_btn=\"bk-btn\",t.bk_btn_group=\"bk-btn-group\",t.bk_btn_default=\"bk-btn-default\",t.bk_btn_primary=\"bk-btn-primary\",t.bk_btn_success=\"bk-btn-success\",t.bk_btn_warning=\"bk-btn-warning\",t.bk_btn_danger=\"bk-btn-danger\",t.bk_btn_type=function(n){switch(n){case\"default\":return t.bk_btn_default;case\"primary\":return t.bk_btn_primary;case\"success\":return t.bk_btn_success;case\"warning\":return t.bk_btn_warning;case\"danger\":return t.bk_btn_danger}},t.bk_dropdown_toggle=\"bk-dropdown-toggle\"},\n", - " function _(e,b,d){Object.defineProperty(d,\"__esModule\",{value:!0}),d.bk_menu=\"bk-menu\",d.bk_caret=\"bk-caret\",d.bk_divider=\"bk-divider\"},\n", - " function _(n,o,b){Object.defineProperty(b,\"__esModule\",{value:!0});b.default=\"\\n.bk-root .bk-btn {\\n height: 100%;\\n display: inline-block;\\n text-align: center;\\n vertical-align: middle;\\n white-space: nowrap;\\n cursor: pointer;\\n padding: 6px 12px;\\n font-size: 12px;\\n border: 1px solid transparent;\\n border-radius: 4px;\\n outline: 0;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n}\\n.bk-root .bk-btn:hover,\\n.bk-root .bk-btn:focus {\\n text-decoration: none;\\n}\\n.bk-root .bk-btn:active,\\n.bk-root .bk-btn.bk-active {\\n background-image: none;\\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\\n}\\n.bk-root .bk-btn[disabled] {\\n cursor: not-allowed;\\n pointer-events: none;\\n opacity: 0.65;\\n box-shadow: none;\\n}\\n.bk-root .bk-btn-default {\\n color: #333;\\n background-color: #fff;\\n border-color: #ccc;\\n}\\n.bk-root .bk-btn-default:hover {\\n background-color: #f5f5f5;\\n border-color: #b8b8b8;\\n}\\n.bk-root .bk-btn-default.bk-active {\\n background-color: #ebebeb;\\n border-color: #adadad;\\n}\\n.bk-root .bk-btn-default[disabled],\\n.bk-root .bk-btn-default[disabled]:hover,\\n.bk-root .bk-btn-default[disabled]:focus,\\n.bk-root .bk-btn-default[disabled]:active,\\n.bk-root .bk-btn-default[disabled].bk-active {\\n background-color: #e6e6e6;\\n border-color: #ccc;\\n}\\n.bk-root .bk-btn-primary {\\n color: #fff;\\n background-color: #428bca;\\n border-color: #357ebd;\\n}\\n.bk-root .bk-btn-primary:hover {\\n background-color: #3681c1;\\n border-color: #2c699e;\\n}\\n.bk-root .bk-btn-primary.bk-active {\\n background-color: #3276b1;\\n border-color: #285e8e;\\n}\\n.bk-root .bk-btn-primary[disabled],\\n.bk-root .bk-btn-primary[disabled]:hover,\\n.bk-root .bk-btn-primary[disabled]:focus,\\n.bk-root .bk-btn-primary[disabled]:active,\\n.bk-root .bk-btn-primary[disabled].bk-active {\\n background-color: #506f89;\\n border-color: #357ebd;\\n}\\n.bk-root .bk-btn-success {\\n color: #fff;\\n background-color: #5cb85c;\\n border-color: #4cae4c;\\n}\\n.bk-root .bk-btn-success:hover {\\n background-color: #4eb24e;\\n border-color: #409240;\\n}\\n.bk-root .bk-btn-success.bk-active {\\n background-color: #47a447;\\n border-color: #398439;\\n}\\n.bk-root .bk-btn-success[disabled],\\n.bk-root .bk-btn-success[disabled]:hover,\\n.bk-root .bk-btn-success[disabled]:focus,\\n.bk-root .bk-btn-success[disabled]:active,\\n.bk-root .bk-btn-success[disabled].bk-active {\\n background-color: #667b66;\\n border-color: #4cae4c;\\n}\\n.bk-root .bk-btn-warning {\\n color: #fff;\\n background-color: #f0ad4e;\\n border-color: #eea236;\\n}\\n.bk-root .bk-btn-warning:hover {\\n background-color: #eea43b;\\n border-color: #e89014;\\n}\\n.bk-root .bk-btn-warning.bk-active {\\n background-color: #ed9c28;\\n border-color: #d58512;\\n}\\n.bk-root .bk-btn-warning[disabled],\\n.bk-root .bk-btn-warning[disabled]:hover,\\n.bk-root .bk-btn-warning[disabled]:focus,\\n.bk-root .bk-btn-warning[disabled]:active,\\n.bk-root .bk-btn-warning[disabled].bk-active {\\n background-color: #c89143;\\n border-color: #eea236;\\n}\\n.bk-root .bk-btn-danger {\\n color: #fff;\\n background-color: #d9534f;\\n border-color: #d43f3a;\\n}\\n.bk-root .bk-btn-danger:hover {\\n background-color: #d5433e;\\n border-color: #bd2d29;\\n}\\n.bk-root .bk-btn-danger.bk-active {\\n background-color: #d2322d;\\n border-color: #ac2925;\\n}\\n.bk-root .bk-btn-danger[disabled],\\n.bk-root .bk-btn-danger[disabled]:hover,\\n.bk-root .bk-btn-danger[disabled]:focus,\\n.bk-root .bk-btn-danger[disabled]:active,\\n.bk-root .bk-btn-danger[disabled].bk-active {\\n background-color: #a55350;\\n border-color: #d43f3a;\\n}\\n.bk-root .bk-btn-group {\\n height: 100%;\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-btn-group > .bk-btn {\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n}\\n.bk-root .bk-btn-group > .bk-btn + .bk-btn {\\n margin-left: -1px;\\n}\\n.bk-root .bk-btn-group > .bk-btn:first-child:not(:last-child) {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0;\\n}\\n.bk-root .bk-btn-group > .bk-btn:not(:first-child):last-child {\\n border-bottom-left-radius: 0;\\n border-top-left-radius: 0;\\n}\\n.bk-root .bk-btn-group > .bk-btn:not(:first-child):not(:last-child) {\\n border-radius: 0;\\n}\\n.bk-root .bk-btn-group .bk-dropdown-toggle {\\n flex: 0 0 0;\\n -webkit-flex: 0 0 0;\\n padding: 6px 6px;\\n}\\n\"},\n", - " function _(n,o,r){Object.defineProperty(r,\"__esModule\",{value:!0});r.default=\"\\n.bk-root .bk-menu-icon {\\n width: 28px;\\n height: 28px;\\n background-size: 60%;\\n background-color: transparent;\\n background-repeat: no-repeat;\\n background-position: center center;\\n}\\n.bk-root .bk-context-menu {\\n position: absolute;\\n display: inline-flex;\\n display: -webkit-inline-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n width: auto;\\n height: auto;\\n z-index: 100;\\n cursor: pointer;\\n font-size: 12px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\\n}\\n.bk-root .bk-context-menu.bk-horizontal {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-context-menu.bk-vertical {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-context-menu > .bk-divider {\\n cursor: default;\\n overflow: hidden;\\n background-color: #e5e5e5;\\n}\\n.bk-root .bk-context-menu.bk-horizontal > .bk-divider {\\n width: 1px;\\n margin: 5px 0;\\n}\\n.bk-root .bk-context-menu.bk-vertical > .bk-divider {\\n height: 1px;\\n margin: 0 5px;\\n}\\n.bk-root .bk-context-menu > :not(.bk-divider) {\\n border: 1px solid transparent;\\n}\\n.bk-root .bk-context-menu > :not(.bk-divider).bk-active {\\n border-color: #26aae1;\\n}\\n.bk-root .bk-context-menu > :not(.bk-divider):hover {\\n background-color: #f9f9f9;\\n}\\n.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):first-child {\\n border-top-left-radius: 4px;\\n border-bottom-left-radius: 4px;\\n}\\n.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):last-child {\\n border-top-right-radius: 4px;\\n border-bottom-right-radius: 4px;\\n}\\n.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):first-child {\\n border-top-left-radius: 4px;\\n border-top-right-radius: 4px;\\n}\\n.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):last-child {\\n border-bottom-left-radius: 4px;\\n border-bottom-right-radius: 4px;\\n}\\n.bk-root .bk-menu {\\n position: absolute;\\n left: 0;\\n width: 100%;\\n z-index: 100;\\n cursor: pointer;\\n font-size: 12px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\\n}\\n.bk-root .bk-menu.bk-above {\\n bottom: 100%;\\n}\\n.bk-root .bk-menu.bk-below {\\n top: 100%;\\n}\\n.bk-root .bk-menu > .bk-divider {\\n height: 1px;\\n margin: 7.5px 0;\\n overflow: hidden;\\n background-color: #e5e5e5;\\n}\\n.bk-root .bk-menu > :not(.bk-divider) {\\n padding: 6px 12px;\\n}\\n.bk-root .bk-menu > :not(.bk-divider):hover,\\n.bk-root .bk-menu > :not(.bk-divider).bk-active {\\n background-color: #e6e6e6;\\n}\\n.bk-root .bk-caret {\\n display: inline-block;\\n vertical-align: middle;\\n width: 0;\\n height: 0;\\n margin: 0 5px;\\n}\\n.bk-root .bk-caret.bk-down {\\n border-top: 4px solid;\\n}\\n.bk-root .bk-caret.bk-up {\\n border-bottom: 4px solid;\\n}\\n.bk-root .bk-caret.bk-down,\\n.bk-root .bk-caret.bk-up {\\n border-right: 4px solid transparent;\\n border-left: 4px solid transparent;\\n}\\n.bk-root .bk-caret.bk-left {\\n border-right: 4px solid;\\n}\\n.bk-root .bk-caret.bk-right {\\n border-left: 4px solid;\\n}\\n.bk-root .bk-caret.bk-left,\\n.bk-root .bk-caret.bk-right {\\n border-top: 4px solid transparent;\\n border-bottom: 4px solid transparent;\\n}\\n\"},\n", - " function _(e,r,n){Object.defineProperty(n,\"__esModule\",{value:!0});n.default='\\n.bk-root .bk-tabs-header {\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n overflow: hidden;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n}\\n.bk-root .bk-tabs-header .bk-btn-group {\\n height: auto;\\n margin-right: 5px;\\n}\\n.bk-root .bk-tabs-header .bk-btn-group > .bk-btn {\\n flex-grow: 0;\\n -webkit-flex-grow: 0;\\n height: auto;\\n padding: 4px 4px;\\n}\\n.bk-root .bk-tabs-header .bk-headers-wrapper {\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n overflow: hidden;\\n color: #666666;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-headers-wrapper {\\n border-bottom: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-right .bk-headers-wrapper {\\n border-left: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-below .bk-headers-wrapper {\\n border-top: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-headers-wrapper {\\n border-right: 1px solid #e6e6e6;\\n}\\n.bk-root .bk-tabs-header.bk-above,\\n.bk-root .bk-tabs-header.bk-below {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-headers,\\n.bk-root .bk-tabs-header.bk-below .bk-headers {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-tabs-header.bk-left,\\n.bk-root .bk-tabs-header.bk-right {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-headers,\\n.bk-root .bk-tabs-header.bk-right .bk-headers {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-tabs-header .bk-headers {\\n position: relative;\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n}\\n.bk-root .bk-tabs-header .bk-tab {\\n padding: 4px 8px;\\n border: solid transparent;\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.bk-root .bk-tabs-header .bk-tab:hover {\\n background-color: #f2f2f2;\\n}\\n.bk-root .bk-tabs-header .bk-tab.bk-active {\\n color: #4d4d4d;\\n background-color: white;\\n border-color: #e6e6e6;\\n}\\n.bk-root .bk-tabs-header .bk-tab .bk-close {\\n margin-left: 10px;\\n}\\n.bk-root .bk-tabs-header.bk-above .bk-tab {\\n border-width: 3px 1px 0px 1px;\\n border-radius: 4px 4px 0 0;\\n}\\n.bk-root .bk-tabs-header.bk-right .bk-tab {\\n border-width: 1px 3px 1px 0px;\\n border-radius: 0 4px 4px 0;\\n}\\n.bk-root .bk-tabs-header.bk-below .bk-tab {\\n border-width: 0px 1px 3px 1px;\\n border-radius: 0 0 4px 4px;\\n}\\n.bk-root .bk-tabs-header.bk-left .bk-tab {\\n border-width: 1px 0px 1px 3px;\\n border-radius: 4px 0 0 4px;\\n}\\n.bk-root .bk-close {\\n display: inline-block;\\n width: 10px;\\n height: 10px;\\n vertical-align: middle;\\n background-image: url(\\'data:image/svg+xml;utf8, \\');\\n}\\n.bk-root .bk-close:hover {\\n background-image: url(\\'data:image/svg+xml;utf8, \\');\\n}\\n'},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const o=e(274);class _ extends o.ColumnView{}i.WidgetBoxView=_,_.__name__=\"WidgetBoxView\";class n extends o.Column{constructor(e){super(e)}static init_WidgetBox(){this.prototype.default_view=_}}i.WidgetBox=n,n.__name__=\"WidgetBox\",n.init_WidgetBox()},\n", - " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});e(1).__exportStar(e(288),t);var a=e(289);t.Marker=a.Marker;var _=e(290);t.Scatter=_.Scatter},\n", - " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const i=e(1),r=e(289),n=i.__importStar(e(238)),s=Math.sqrt(3);function c(e,t){e.rotate(Math.PI/4),a(e,t),e.rotate(-Math.PI/4)}function l(e,t){const o=t*s,i=o/3;e.moveTo(-o/2,-i),e.lineTo(0,0),e.lineTo(o/2,-i),e.lineTo(0,0),e.lineTo(0,t)}function a(e,t){e.moveTo(0,t),e.lineTo(0,-t),e.moveTo(-t,0),e.lineTo(t,0)}function u(e,t){e.moveTo(0,t),e.lineTo(t/1.5,0),e.lineTo(0,-t),e.lineTo(-t/1.5,0),e.closePath()}function d(e,t){const o=t*s,i=o/3;e.moveTo(-t,i),e.lineTo(t,i),e.lineTo(0,i-o),e.closePath()}function v(e,t,o,i,r){a(e,o),c(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function _(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function f(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),a(e,o),e.stroke())}function T(e,t,o,i,r){_(e,t,o,i,r),P(e,t,o,i,r)}function z(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),l(e,o),e.stroke())}function C(e,t,o,i,r){e.arc(0,0,o,0,2*Math.PI,!1),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),c(e,o),e.stroke())}function k(e,t,o,i,r){a(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function m(e,t,o,i,r){u(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function h(e,t,o,i,r){u(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.moveTo(0,o),e.lineTo(0,-o),e.moveTo(-o/1.5,0),e.lineTo(o/1.5,0),e.stroke())}function q(e,t,o,i,r){m(e,t,o,i,r),P(e,t,o,i,r)}function P(e,t,o,i,r){!function(e,t){e.beginPath(),e.arc(0,0,t/4,0,2*Math.PI,!1),e.closePath()}(e,o),i.set_vectorize(e,t),e.fillStyle=e.strokeStyle,e.fill()}function D(e,t,o,i,r){!function(e,t){const o=t/2,i=s*o;e.moveTo(t,0),e.lineTo(o,-i),e.lineTo(-o,-i),e.lineTo(-t,0),e.lineTo(-o,i),e.lineTo(o,i),e.closePath()}(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function g(e,t,o,i,r){D(e,t,o,i,r),P(e,t,o,i)}function S(e,t,o,i,r){e.rotate(Math.PI),d(e,o),e.rotate(-Math.PI),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function G(e,t,o,i,r){const n=3*o/8,s=[n,n,o,o,n,n,-n,-n,-o,-o,-n,-n],c=[o,n,n,-n,-n,-o,-o,-n,-n,n,n,o];for(e.moveTo(s[0],c[0]),t=1;t<12;t++)e.lineTo(s[t],c[t]);e.closePath(),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function L(e,t,o,i,r){const n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function M(e,t,o,i,r){const n=3*o/8;e.moveTo(-o,-o),e.quadraticCurveTo(0,-n,o,-o),e.quadraticCurveTo(n,0,o,o),e.quadraticCurveTo(0,n,-o,o),e.quadraticCurveTo(-n,0,-o,-o),e.closePath(),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function p(e,t,o,i,r){const n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),a(e,o),e.stroke())}function x(e,t,o,i,r){L(e,t,o,i,r),P(e,t,o,i)}function I(e,t,o,i,r){const n=2*o;e.rect(-o,-o,n,n),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.moveTo(-o,o),e.lineTo(o,-o),e.moveTo(-o,-o),e.lineTo(o,o),e.stroke())}function y(e,t,o,i,r){d(e,o),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function X(e,t,o,i,r){y(e,t,o,i,r),P(e,t,o,i)}function H(e,t,o,i,r){const n=o*s,c=n/3,l=3*c/8;e.moveTo(-o,c),e.quadraticCurveTo(0,l,o,c),e.quadraticCurveTo(s*l/2,l/2,0,c-n),e.quadraticCurveTo(-s*l/2,l/2,-o,c),e.closePath(),r.doit&&(r.set_vectorize(e,t),e.fill()),i.doit&&(i.set_vectorize(e,t),e.stroke())}function Y(e,t,o,i,r){!function(e,t){e.moveTo(-t,0),e.lineTo(t,0)}(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function A(e,t,o,i,r){c(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function b(e,t,o,i,r){l(e,o),i.doit&&(i.set_vectorize(e,t),e.stroke())}function w(e,t,o){var i;const n=class extends r.MarkerView{static initClass(){this.prototype._render_one=t,this.prototype.glglyph_cls=o}};n.initClass();const s=((i=class extends r.Marker{static initClass(){this.prototype.default_view=n}}).__name__=e,i);return s.initClass(),s}o.Asterisk=w(\"Asterisk\",v,n.AsteriskGL),o.CircleCross=w(\"CircleCross\",f,n.CircleCrossGL),o.CircleDot=w(\"CircleDot\",T),o.CircleY=w(\"CircleY\",z),o.CircleX=w(\"CircleX\",C,n.CircleXGL),o.Cross=w(\"Cross\",k,n.CrossGL),o.Dash=w(\"Dash\",Y),o.Diamond=w(\"Diamond\",m,n.DiamondGL),o.DiamondCross=w(\"DiamondCross\",h,n.DiamondCrossGL),o.DiamondDot=w(\"DiamondDot\",q),o.Dot=w(\"Dot\",P),o.Hex=w(\"Hex\",D,n.HexGL),o.HexDot=w(\"HexDot\",g),o.InvertedTriangle=w(\"InvertedTriangle\",S,n.InvertedTriangleGL),o.Plus=w(\"Plus\",G),o.Square=w(\"Square\",L,n.SquareGL),o.SquareCross=w(\"SquareCross\",p,n.SquareCrossGL),o.SquareDot=w(\"SquareDot\",x),o.SquarePin=w(\"SquarePin\",M),o.SquareX=w(\"SquareX\",I,n.SquareXGL),o.Triangle=w(\"Triangle\",y,n.TriangleGL),o.TriangleDot=w(\"TriangleDot\",X),o.TrianglePin=w(\"TrianglePin\",H),o.X=w(\"X\",A,n.XGL),o.Y=w(\"Y\",b),o.marker_funcs={asterisk:v,circle:_,circle_cross:f,circle_dot:T,circle_y:z,circle_x:C,cross:k,diamond:m,diamond_dot:q,diamond_cross:h,dot:P,hex:D,hex_dot:g,inverted_triangle:S,plus:G,square:L,square_cross:p,square_dot:x,square_pin:M,square_x:I,triangle:y,triangle_dot:X,triangle_pin:H,dash:Y,x:A,y:b}},\n", - " function _(e,s,i){Object.defineProperty(i,\"__esModule\",{value:!0});const t=e(1),n=e(93),r=e(28),a=t.__importStar(e(101)),_=t.__importStar(e(18)),h=e(9),l=e(88);class c extends n.XYGlyphView{initialize(){super.initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;null!=e&&null!=this.glglyph_cls&&(this.glglyph=new this.glglyph_cls(e.gl,this))}_render(e,s,{sx:i,sy:t,_size:n,_angle:r}){for(const a of s){if(isNaN(i[a]+t[a]+n[a]+r[a]))continue;const s=n[a]/2;e.beginPath(),e.translate(i[a],t[a]),r[a]&&e.rotate(r[a]),this._render_one(e,a,s,this.visuals.line,this.visuals.fill),r[a]&&e.rotate(-r[a]),e.translate(-i[a],-t[a])}}_mask_data(){const e=this.renderer.plot_view.frame.bbox.h_range,s=e.start-this.max_size,i=e.end+this.max_size,[t,n]=this.renderer.xscale.r_invert(s,i),r=this.renderer.plot_view.frame.bbox.v_range,a=r.start-this.max_size,_=r.end+this.max_size,[h,l]=this.renderer.yscale.r_invert(a,_);return this.index.indices({x0:t,x1:n,y0:h,y1:l})}_hit_point(e){const{sx:s,sy:i}=e,t=s-this.max_size,n=s+this.max_size,[r,a]=this.renderer.xscale.r_invert(t,n),_=i-this.max_size,h=i+this.max_size,[c,o]=this.renderer.yscale.r_invert(_,h),x=this.index.indices({x0:r,x1:a,y0:c,y1:o}),d=[];for(const e of x){const t=this._size[e]/2;Math.abs(this.sx[e]-s)<=t&&Math.abs(this.sy[e]-i)<=t&&d.push(e)}return new l.Selection({indices:d})}_hit_span(e){const{sx:s,sy:i}=e,t=this.bounds(),n=this.max_size/2;let r,a,_,h;if(\"h\"==e.direction){_=t.y0,h=t.y1;const e=s-n,i=s+n;[r,a]=this.renderer.xscale.r_invert(e,i)}else{r=t.x0,a=t.x1;const e=i-n,s=i+n;[_,h]=this.renderer.yscale.r_invert(e,s)}const c=[...this.index.indices({x0:r,x1:a,y0:_,y1:h})];return new l.Selection({indices:c})}_hit_rect(e){const{sx0:s,sx1:i,sy0:t,sy1:n}=e,[r,a]=this.renderer.xscale.r_invert(s,i),[_,h]=this.renderer.yscale.r_invert(t,n),c=[...this.index.indices({x0:r,x1:a,y0:_,y1:h})];return new l.Selection({indices:c})}_hit_poly(e){const{sx:s,sy:i}=e,t=h.range(0,this.sx.length),n=[];for(let e=0,r=t.length;enew r.Range1d,y_range:()=>new r.Range1d})}initialize(){super.initialize(),this.use_map=!0,this.api_key||n.logger.error(\"api_key is required. See https://developers.google.com/maps/documentation/javascript/get-api-key for more information on how to obtain your own.\")}}i.GMapPlot=u,u.__name__=\"GMapPlot\",u.init_GMapPlot()},\n", - " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1),o=i.__importStar(e(28)),n=i.__importStar(e(18)),s=e(15),a=e(9),l=e(13),_=e(8),h=e(272),c=e(169),u=e(145),d=e(294),b=e(85),g=e(90),p=e(210),m=e(312);r.PlotView=m.PlotView;class f extends h.LayoutDOM{constructor(e){super(e)}static init_Plot(){this.prototype.default_view=m.PlotView,this.mixins([[\"outline_\",o.Line],[\"background_\",o.Fill],[\"border_\",o.Fill]]),this.define({toolbar:[n.Instance,()=>new d.Toolbar],toolbar_location:[n.Location,\"right\"],toolbar_sticky:[n.Boolean,!0],plot_width:[n.Number,600],plot_height:[n.Number,600],frame_width:[n.Number,null],frame_height:[n.Number,null],title:[n.Any,()=>new c.Title({text:\"\"})],title_location:[n.Location,\"above\"],above:[n.Array,[]],below:[n.Array,[]],left:[n.Array,[]],right:[n.Array,[]],center:[n.Array,[]],renderers:[n.Array,[]],x_range:[n.Instance,()=>new p.DataRange1d],extra_x_ranges:[n.Any,{}],y_range:[n.Instance,()=>new p.DataRange1d],extra_y_ranges:[n.Any,{}],x_scale:[n.Instance,()=>new u.LinearScale],y_scale:[n.Instance,()=>new u.LinearScale],lod_factor:[n.Number,10],lod_interval:[n.Number,300],lod_threshold:[n.Number,2e3],lod_timeout:[n.Number,500],hidpi:[n.Boolean,!0],output_backend:[n.OutputBackend,\"canvas\"],min_border:[n.Number,5],min_border_top:[n.Number,null],min_border_left:[n.Number,null],min_border_bottom:[n.Number,null],min_border_right:[n.Number,null],inner_width:[n.Number],inner_height:[n.Number],outer_width:[n.Number],outer_height:[n.Number],match_aspect:[n.Boolean,!1],aspect_scale:[n.Number,1],reset_policy:[n.ResetPolicy,\"standard\"]}),this.override({outline_line_color:\"#e5e5e5\",border_fill_color:\"#ffffff\",background_fill_color:\"#ffffff\"})}get width(){const e=this.properties.width.get_value();return null!=e?e:this.plot_width}set width(e){this.setv({width:e,plot_width:e})}get height(){const e=this.properties.height.get_value();return null!=e?e:this.plot_height}set height(e){this.setv({height:e,plot_height:e})}_doc_attached(){super._doc_attached(),this._push_changes([[this.properties.inner_height,null,this.inner_height],[this.properties.inner_width,null,this.inner_width]])}initialize(){super.initialize(),this.reset=new s.Signal0(this,\"reset\");for(const e of l.values(this.extra_x_ranges).concat(this.x_range)){let t=e.plots;_.isArray(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}for(const e of l.values(this.extra_y_ranges).concat(this.y_range)){let t=e.plots;_.isArray(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}}add_layout(e,t=\"center\"){const r=this.properties[t].get_value();this.setv({[t]:[...r,e]})}remove_layout(e){const t=t=>{a.remove_by(t,t=>t==e)};t(this.left),t(this.right),t(this.above),t(this.below),t(this.center)}add_renderers(...e){this.renderers=this.renderers.concat(e)}add_glyph(e,t=new b.ColumnDataSource,r={}){const i=Object.assign(Object.assign({},r),{data_source:t,glyph:e}),o=new g.GlyphRenderer(i);return this.add_renderers(o),o}add_tools(...e){this.toolbar.tools=this.toolbar.tools.concat(e)}get panels(){return[...this.side_panels,...this.center]}get side_panels(){const{above:e,below:t,left:r,right:i}=this;return a.concat([e,t,r,i])}}r.Plot=f,f.__name__=\"Plot\",f.init_Plot()},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1).__importStar(t(18)),c=t(8),o=t(9),n=t(13),a=t(295),l=t(305),r=t=>{switch(t){case\"tap\":return\"active_tap\";case\"pan\":return\"active_drag\";case\"pinch\":case\"scroll\":return\"active_scroll\";case\"multi\":return\"active_multi\"}return null},_=t=>\"tap\"==t||\"pan\"==t;class h extends l.ToolbarBase{constructor(t){super(t)}static init_Toolbar(){this.prototype.default_view=l.ToolbarBaseView,this.define({active_drag:[s.Any,\"auto\"],active_inspect:[s.Any,\"auto\"],active_scroll:[s.Any,\"auto\"],active_tap:[s.Any,\"auto\"],active_multi:[s.Any,null]})}connect_signals(){super.connect_signals();const{tools:t,active_drag:e,active_inspect:i,active_scroll:s,active_tap:c,active_multi:o}=this.properties;this.on_change([t,e,i,s,c,o],()=>this._init_tools())}_init_tools(){if(super._init_tools(),\"auto\"==this.active_inspect);else if(this.active_inspect instanceof a.InspectTool){let t=!1;for(const e of this.inspectors)e!=this.active_inspect?e.active=!1:t=!0;t||(this.active_inspect=null)}else if(c.isArray(this.active_inspect)){const t=o.intersection(this.active_inspect,this.inspectors);t.length!=this.active_inspect.length&&(this.active_inspect=t);for(const t of this.inspectors)o.includes(this.active_inspect,t)||(t.active=!1)}else if(null==this.active_inspect)for(const t of this.inspectors)t.active=!1;const t=t=>{t.active?this._active_change(t):t.active=!0};for(const t of n.values(this.gestures)){t.tools=o.sort_by(t.tools,t=>t.default_order);for(const e of t.tools)this.connect(e.properties.active.change,()=>this._active_change(e))}for(const[e,i]of n.entries(this.gestures)){const s=r(e);if(s){const c=this[s];\"auto\"==c?0!=i.tools.length&&_(e)&&t(i.tools[0]):null!=c&&(o.includes(this.tools,c)?t(c):this[s]=null)}}}}i.Toolbar=h,h.__name__=\"Toolbar\",h.init_Toolbar()},\n", - " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const n=e(1),s=e(296),i=e(304),_=n.__importStar(e(18));class c extends s.ButtonToolView{}o.InspectToolView=c,c.__name__=\"InspectToolView\";class l extends s.ButtonTool{constructor(e){super(e),this.event_type=\"move\"}static init_InspectTool(){this.prototype.button_view=i.OnOffButtonView,this.define({toggleable:[_.Boolean,!0]}),this.override({active:!0})}}o.InspectTool=l,l.__name__=\"InspectTool\",l.init_InspectTool()},\n", - " function _(t,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const i=t(1),s=i.__importDefault(t(297)),n=t(78),l=t(298),r=t(72),a=i.__importStar(t(18)),u=t(29),_=t(8),h=t(9),c=t(299),m=i.__importDefault(t(300)),d=i.__importDefault(t(301)),p=i.__importDefault(t(284)),f=t(302);class g extends n.DOMView{initialize(){super.initialize();const t=this.model.menu;if(null!=t){const e=this.parent.model.toolbar_location,o=\"left\"==e||\"above\"==e,i=this.parent.model.horizontal?\"vertical\":\"horizontal\";this._menu=new f.ContextMenu(o?h.reversed(t):t,{orientation:i,prevent_hide:t=>t.target==this.el})}this._hammer=new s.default(this.el,{touchAction:\"auto\",inputClass:s.default.TouchMouseInput}),this.connect(this.model.change,()=>this.render()),this._hammer.on(\"tap\",t=>{var e;(null===(e=this._menu)||void 0===e?void 0:e.is_open)?this._menu.hide():t.target==this.el&&this._clicked()}),this._hammer.on(\"press\",()=>this._pressed())}remove(){var t;this._hammer.destroy(),null===(t=this._menu)||void 0===t||t.remove(),super.remove()}styles(){return[...super.styles(),m.default,d.default,p.default]}css_classes(){return super.css_classes().concat(c.bk_toolbar_button)}render(){r.empty(this.el);const t=this.model.computed_icon;_.isString(t)&&(u.startsWith(t,\"data:image\")?this.el.style.backgroundImage=\"url('\"+t+\"')\":this.el.classList.add(t)),this.el.title=this.model.tooltip,null!=this._menu&&this.root.el.appendChild(this._menu.el)}_pressed(){var t;const{left:e,top:o,right:i,bottom:s}=this.el.getBoundingClientRect(),n=(()=>{switch(this.parent.model.toolbar_location){case\"right\":return{right:e,top:o};case\"left\":return{left:i,top:o};case\"above\":return{left:e,top:s};case\"below\":return{left:e,bottom:o}}})();null===(t=this._menu)||void 0===t||t.toggle(n)}}o.ButtonToolButtonView=g,g.__name__=\"ButtonToolButtonView\";class v extends l.ToolView{}o.ButtonToolView=v,v.__name__=\"ButtonToolView\";class b extends l.Tool{constructor(t){super(t)}static init_ButtonTool(){this.internal({disabled:[a.Boolean,!1]})}get tooltip(){return this.tool_name}get computed_icon(){return this.icon}get menu(){return null}}o.ButtonTool=b,b.__name__=\"ButtonTool\",b.init_ButtonTool()},\n", - " function _(t,e,n){\n", - " /*! Hammer.JS - v2.0.7 - 2016-04-22\n", - " * http://hammerjs.github.io/\n", - " *\n", - " * Copyright (c) 2016 Jorik Tangelder;\n", - " * Licensed under the MIT license */\n", - " !function(t,n,i,r){\"use strict\";var s,o=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],a=n.createElement(\"div\"),h=Math.round,u=Math.abs,c=Date.now;function l(t,e,n){return setTimeout(y(t,n),e)}function p(t,e,n){return!!Array.isArray(t)&&(f(t,n[e],n),!0)}function f(t,e,n){var i;if(t)if(t.forEach)t.forEach(e,n);else if(void 0!==t.length)for(i=0;i\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",s=t.console&&(t.console.warn||t.console.log);return s&&s.call(t.console,r,i),e.apply(this,arguments)}}s=\"function\"!=typeof Object.assign?function(t){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),n=1;n-1}function S(t){return t.trim().split(/\\s+/g)}function b(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;in[e]})):i.sort()),i}function D(t,e){for(var n,i,r=e[0].toUpperCase()+e.slice(1),s=0;s1&&!n.firstMultiple?n.firstMultiple=W(e):1===r&&(n.firstMultiple=!1);var s=n.firstInput,o=n.firstMultiple,a=o?o.center:s.center,h=e.center=q(i);e.timeStamp=c(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=U(a,h),e.distance=L(a,h),function(t,e){var n=e.center,i=t.offsetDelta||{},r=t.prevDelta||{},s=t.prevInput||{};1!==e.eventType&&4!==s.eventType||(r=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},i=t.offsetDelta={x:n.x,y:n.y});e.deltaX=r.x+(n.x-i.x),e.deltaY=r.y+(n.y-i.y)}(n,e),e.offsetDirection=H(e.deltaX,e.deltaY);var l=k(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=l.x,e.overallVelocityY=l.y,e.overallVelocity=u(l.x)>u(l.y)?l.x:l.y,e.scale=o?(p=o.pointers,f=i,L(f[0],f[1],X)/L(p[0],p[1],X)):1,e.rotation=o?function(t,e){return U(e[1],e[0],X)+U(t[1],t[0],X)}(o.pointers,i):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,function(t,e){var n,i,r,s,o=t.lastInterval||e,a=e.timeStamp-o.timeStamp;if(8!=e.eventType&&(a>25||void 0===o.velocity)){var h=e.deltaX-o.deltaX,c=e.deltaY-o.deltaY,l=k(a,h,c);i=l.x,r=l.y,n=u(l.x)>u(l.y)?l.x:l.y,s=H(h,c),t.lastInterval=e}else n=o.velocity,i=o.velocityX,r=o.velocityY,s=o.direction;e.velocity=n,e.velocityX=i,e.velocityY=r,e.direction=s}(n,e);var p,f;var v=t.element;_(e.srcEvent.target,v)&&(v=e.srcEvent.target);e.target=v}(t,n),t.emit(\"hammer.input\",n),t.recognize(n),t.session.prevInput=n}function W(t){for(var e=[],n=0;n=u(e)?t<0?2:4:e<0?8:16}function L(t,e,n){n||(n=N);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return Math.sqrt(i*i+r*r)}function U(t,e,n){n||(n=N);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return 180*Math.atan2(r,i)/Math.PI}Y.prototype={handler:function(){},init:function(){this.evEl&&I(this.element,this.evEl,this.domHandler),this.evTarget&&I(this.target,this.evTarget,this.domHandler),this.evWin&&I(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&A(this.element,this.evEl,this.domHandler),this.evTarget&&A(this.target,this.evTarget,this.domHandler),this.evWin&&A(O(this.element),this.evWin,this.domHandler)}};var V={mousedown:1,mousemove:2,mouseup:4};function j(){this.evEl=\"mousedown\",this.evWin=\"mousemove mouseup\",this.pressed=!1,Y.apply(this,arguments)}g(j,Y,{handler:function(t){var e=V[t.type];1&e&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=4),this.pressed&&(4&e&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\"mouse\",srcEvent:t}))}});var G={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},Z={2:\"touch\",3:\"pen\",4:\"mouse\",5:\"kinect\"},B=\"pointerdown\",$=\"pointermove pointerup pointercancel\";function J(){this.evEl=B,this.evWin=$,Y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}t.MSPointerEvent&&!t.PointerEvent&&(B=\"MSPointerDown\",$=\"MSPointerMove MSPointerUp MSPointerCancel\"),g(J,Y,{handler:function(t){var e=this.store,n=!1,i=t.type.toLowerCase().replace(\"ms\",\"\"),r=G[i],s=Z[t.pointerType]||t.pointerType,o=\"touch\"==s,a=b(e,t.pointerId,\"pointerId\");1&r&&(0===t.button||o)?a<0&&(e.push(t),a=e.length-1):12&r&&(n=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),n&&e.splice(a,1))}});var K={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function Q(){this.evTarget=\"touchstart\",this.evWin=\"touchstart touchmove touchend touchcancel\",this.started=!1,Y.apply(this,arguments)}function tt(t,e){var n=x(t.touches),i=x(t.changedTouches);return 12&e&&(n=P(n.concat(i),\"identifier\",!0)),[n,i]}g(Q,Y,{handler:function(t){var e=K[t.type];if(1===e&&(this.started=!0),this.started){var n=tt.call(this,t,e);12&e&&n[0].length-n[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:\"touch\",srcEvent:t})}}});var et={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function nt(){this.evTarget=\"touchstart touchmove touchend touchcancel\",this.targetIds={},Y.apply(this,arguments)}function it(t,e){var n=x(t.touches),i=this.targetIds;if(3&e&&1===n.length)return i[n[0].identifier]=!0,[n,n];var r,s,o=x(t.changedTouches),a=[],h=this.target;if(s=n.filter((function(t){return _(t.target,h)})),1===e)for(r=0;r-1&&i.splice(t,1)}),2500)}}function at(t){for(var e=t.srcEvent.clientX,n=t.srcEvent.clientY,i=0;i-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,n=this.state;function i(n){e.manager.emit(n,t)}n<8&&i(e.options.event+ft(n)),i(e.options.event),t.additionalEvent&&i(t.additionalEvent),n>=8&&i(e.options.event+ft(n))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;te.threshold&&r&e.direction},attrTest:function(t){return mt.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=vt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),g(yt,mt,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[\"none\"]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),g(Tt,pt,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[\"auto\"]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distancee.time;if(this._input=t,!i||!n||12&t.eventType&&!r)this.reset();else if(1&t.eventType)this.reset(),this._timer=l((function(){this.state=8,this.tryEmit()}),e.time,this);else if(4&t.eventType)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&4&t.eventType?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=c(),this.manager.emit(this.options.event,this._input)))}}),g(Et,mt,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[\"none\"]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),g(It,mt,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:30,pointers:1},getTouchAction:function(){return gt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,n=this.options.direction;return 30&n?e=t.overallVelocity:6&n?e=t.overallVelocityX:24&n&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&u(e)>this.options.velocity&&4&t.eventType},emit:function(t){var e=vt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),g(At,pt,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[\"manipulation\"]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance{this.model.active?this.activate():this.deactivate()})}activate(){}deactivate(){}}i.ToolView=r,r.__name__=\"ToolView\";class _ extends a.Model{constructor(t){super(t)}static init_Tool(){this.prototype._known_aliases=new Map,this.internal({active:[n.Boolean,!1]})}get synthetic_renderers(){return[]}_get_dim_tooltip(t,e){switch(e){case\"width\":return t+\" (x-axis)\";case\"height\":return t+\" (y-axis)\";case\"both\":return t}}_get_dim_limits([t,e],[i,n],o,a){const r=o.bbox.h_range;let _;\"width\"==a||\"both\"==a?(_=[s.min([t,i]),s.max([t,i])],_=[s.max([_[0],r.start]),s.min([_[1],r.end])]):_=[r.start,r.end];const l=o.bbox.v_range;let c;return\"height\"==a||\"both\"==a?(c=[s.min([e,n]),s.max([e,n])],c=[s.max([c[0],l.start]),s.min([c[1],l.end])]):c=[l.start,l.end],[_,c]}static register_alias(t,e){this.prototype._known_aliases.set(t,e)}static from_string(t){const e=this.prototype._known_aliases.get(t);if(null!=e)return e();{const e=[...this.prototype._known_aliases.keys()];throw new Error(`unexpected tool name '${t}', possible tools are ${e.join(\", \")}`)}}}i.Tool=_,_.__name__=\"Tool\",_.init_Tool()},\n", - " function _(o,b,t){Object.defineProperty(t,\"__esModule\",{value:!0}),t.bk_toolbar=\"bk-toolbar\",t.bk_toolbar_hidden=\"bk-toolbar-hidden\",t.bk_toolbar_button=\"bk-toolbar-button\",t.bk_button_bar=\"bk-button-bar\",t.bk_toolbar_button_custom_action=\"bk-toolbar-button-custom-action\"},\n", - " function _(o,b,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root .bk-toolbar-hidden {\\n visibility: hidden;\\n opacity: 0;\\n transition: visibility 0.3s linear, opacity 0.3s linear;\\n}\\n.bk-root .bk-toolbar,\\n.bk-root .bk-button-bar {\\n display: flex;\\n display: -webkit-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: center;\\n -webkit-align-items: center;\\n user-select: none;\\n -ms-user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n}\\n.bk-root .bk-toolbar .bk-logo {\\n flex-shrink: 0;\\n -webkit-flex-shrink: 0;\\n}\\n.bk-root .bk-toolbar.bk-above,\\n.bk-root .bk-toolbar.bk-below {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n justify-content: flex-end;\\n -webkit-justify-content: flex-end;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-button-bar,\\n.bk-root .bk-toolbar.bk-below .bk-button-bar {\\n display: flex;\\n display: -webkit-flex;\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-logo,\\n.bk-root .bk-toolbar.bk-below .bk-logo {\\n order: 1;\\n -webkit-order: 1;\\n margin-left: 5px;\\n margin-right: 0px;\\n}\\n.bk-root .bk-toolbar.bk-left,\\n.bk-root .bk-toolbar.bk-right {\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n justify-content: flex-start;\\n -webkit-justify-content: flex-start;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-button-bar,\\n.bk-root .bk-toolbar.bk-right .bk-button-bar {\\n display: flex;\\n display: -webkit-flex;\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-logo,\\n.bk-root .bk-toolbar.bk-right .bk-logo {\\n order: 0;\\n -webkit-order: 0;\\n margin-bottom: 5px;\\n margin-top: 0px;\\n}\\n.bk-root .bk-toolbar-button {\\n width: 30px;\\n height: 30px;\\n cursor: pointer;\\n background-size: 60% 60%;\\n background-origin: border-box;\\n background-color: transparent;\\n background-repeat: no-repeat;\\n background-position: center center;\\n}\\n.bk-root .bk-toolbar-button:hover {\\n background-color: rgba(192, 192, 192, 0.15);\\n}\\n.bk-root .bk-toolbar-button:focus {\\n outline: none;\\n}\\n.bk-root .bk-toolbar-button::-moz-focus-inner {\\n border: 0;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-toolbar-button {\\n border-bottom: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-toolbar-button.bk-active {\\n border-bottom-color: #26aae1;\\n}\\n.bk-root .bk-toolbar.bk-below .bk-toolbar-button {\\n border-top: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-below .bk-toolbar-button.bk-active {\\n border-top-color: #26aae1;\\n}\\n.bk-root .bk-toolbar.bk-right .bk-toolbar-button {\\n border-left: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-right .bk-toolbar-button.bk-active {\\n border-left-color: #26aae1;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-toolbar-button {\\n border-right: 2px solid transparent;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-toolbar-button.bk-active {\\n border-right-color: #26aae1;\\n}\\n.bk-root .bk-button-bar + .bk-button-bar:before {\\n content: \" \";\\n display: inline-block;\\n background-color: lightgray;\\n}\\n.bk-root .bk-toolbar.bk-above .bk-button-bar + .bk-button-bar:before,\\n.bk-root .bk-toolbar.bk-below .bk-button-bar + .bk-button-bar:before {\\n height: 10px;\\n width: 1px;\\n}\\n.bk-root .bk-toolbar.bk-left .bk-button-bar + .bk-button-bar:before,\\n.bk-root .bk-toolbar.bk-right .bk-button-bar + .bk-button-bar:before {\\n height: 1px;\\n width: 10px;\\n}\\n'},\n", - " function _(A,g,C){Object.defineProperty(C,\"__esModule\",{value:!0});C.default='\\n.bk-root .bk-tool-icon-copy-to-clipboard {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUSDBoBvcHQeQAAAG9JREFUWMNjXLhsJcNAAiaGAQYwB/xHwh/Q+ITEkfHQCwEWND4jmeb8H/JpgBwfI6cNBhLSEkqaGXRpgFRAcZoZsmlg1AGjDhh1wKgDRh0w6gCaVcf/R2wIkNqw+D9s0wADvUNiyIYA47BJAwPuAAAj/Cjd0TCN6wAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-replace-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxokK3gniQAAAHpJREFUWMNjXLhsJcNAAiaGAQajDhhwB7DgEP+PxmeksvjgDwFcLmYkUh2hkBj8IcBIZXsYh1w2/I8v3sgAOM0bLYhGc8GgrwuICgldfQO88pcvXvg/aOuCUQeM5oLRuoCFCJcTbOMh5XOiW0JDNhdQS3y0IBp1ABwAAF8KGrhC1Eg6AAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-append-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxkZWD04WwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAoUlEQVRYw+1WQQ6AIAwrhO8Y/bIXEz9jIMSDr8ETCUEPQzA4pMeFLKNbu4l5WR0CDOMEALBGIzMuQIBEZQjPgP9JLjwTfBjY9sO9lZsFA9IafZng3BlIyVefgd8XQFZBAWe8jfNxwsDhir6rzoCiPiy1K+J8/FRQemv2XfAdFcQ9znU4Viqg9ta1qYJ+D1BnAIBrkgGVOrXNqUA9rbyZm/AEzFh4jEeY/soAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-intersect-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxkrkOpp2wAAAPhJREFUWMPtV1EKwjAMTUavI3oawR/vtn5srJdREfzwMvHHQlcT2mpdMzFfWxiP5r2+JMN+mAiCOB72CABgR1cln4oOGocJnuMTSxWk8jMm7OggYkYXA9gPE3uyd8NXHONJ+eYMdE/NqCJmEZ5ZqlJJ4sUksKN7cYSaPoCZFWR1QI+Xm1fBACU63Cw22x0AAJxudwrffVwvZ+JmQdAHZkw0d4EpAMCw8k87pMdbnwtizQumJYv3nwV6XOA1qbUT/oQLUJgFRbsiNwFVucBIlyR3p0tdMp+XmFjfLKi1LatyAXtCRjPWBdL3Ke3VuACJKFfDr/xFN2fgAR/Go0qaLlmEAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-subtract-mode {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUFFxgsF5XNOQAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABFUlEQVRYw9VWUQqDMAxNpWfxQxD1MoP97G7zQ5mH2RTZYLtM9lWoMbXtxLXNX4OG9r28l4hrd0PQoqxqAACYpxH25C/nkwCHyCBwSPoS09k1T5Fo+4EiExcC4v584xGFmyIXHBLRISAVZyZufUPVa4rcrwmPDgr93ylo+2GliLRUYHK6th/o/6r7nfLpqaCsagEA8Hh9FmcNKeRmgeYDC+SCq0B6FFi8/BcV6BdR9cL3gCv3ijPKOacsn3rBEcjmaVxpfGcg4wHxzgJJnc6241Hn23DERFRAu1bNcWa3Q0uXi62XR6sCaWoSejbtdLYmU3kTEunNgj0bUbQqYG/IcMaqwPS9jftoVCAQ0ZVDJwf0zQdH4AsyW6fpQu4YegAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-clear-selection {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AUGEhcuan3d3wAAAoRJREFUWMPtlzFP3EAQhd+b3TNSzg0N5TWXLkJQUUaKhIQ4fgP/g5ArrriE/I3opEgRrZtIVJR0FJQ010SioUmEZHtnUpwN9gWHGA5BJCy58MraffvmfZ41v3z9hqe8BE98vQh4cgG+Ydzmnrng8efvQJNi/uN7dznx/B3ggtfhf4ehNdUttRzBDIm/2VTiiWCG1HK0nc+3UWtq8BQIiEEakEQOADBIA4QCQmBqoHBhFNR27ikQSmGdYCdTqCpEHMDZmEKRWUBEv1gBDg5SzRJnpopILWICgWuRYflLamuzxB2BmtYqSRIka5VWU8QduXO+1hRc5YZu5GAwmP2ZJzND0IBu5HCV2+NQcAhAVRsnC2IbPzPdSjzd6to6VtfWkXi6YLaVWr7xoAwkfpb8MnC3SH7rKSMBe4M0jA/OTicFIbtCGRIyNbURhcf3ErCd6YwA1m0HgAxhw1NGQnlXBHG4kylVlSJuH0RfIP2CkL2I/qS1gIAAQiBl1QwFggIHtyxgrxK5PgyfC0JWKoT0HLh8LwoietB4TYKaIl7yeNURxB05UtMxDOcVQlZIrlRKdK6m47gjR/fuBRQihyLArtNeJD50Izcx2Eczu7iFkIug4VM3cpOr3MKDekFED0fWUHv9Zq0kpLnridjhY3XDg7NTN0jDrhO3X7O9Wg7wwyANu4mnayNg3gmbu0tCNoUyBNGv2l4rB9EXynA7082FOxAQLhU6rQVO9T2AvWowFToNCJcPORGxIRcnpjZSKATSU9NxvOQnAPArDSaQoUKnNI4iufkGtD4P3EHIcWZhz4HLceSOyrR3Izf5memPAL2cX3yhAkonysZVaWLBkd9dw1Ivv2a/AYPkK+ty1U1DAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-box-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg0kduFrowAAAIdJREFUWMPtVtEKwCAI9KL//4e9DPZ3+wP3KgOjNZouFYI4C8q7s7DtB1lGIeMoRMRinCLXg/ML3EcFqpjjloOyZxRntxpwQ8HsgHYARKFAtSFrCg3TCdMFCE1BuuALEXJLjC4qENsFVXCESZw38/kWLOkC/K4PcOc/Hj03WkoDT3EaWW9egQul6CUbq90JTwAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-box-zoom {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg82t254aQAAAkBJREFUWMPN11+E1FEUB/DPTFn2qaeIpcSwr5NlUyJiKWVXWUqvlUh/iE3RY9mUekkPPURtLKNRrFJEeuphGfUUaVliiX1aVjGs6aG7+XX9ZnZ+d2fTl2vmnHvPPfeee/79Sk+may2/UQq/q7Qu+bAJoxjHIKqB/wlfUMcMVqI9bLZ+DGIKwzlzQ2GcxCx2xwvKOUKlaHTiX8bHNspjDONHkOmJBW5jIof/FvPh/06MZOb6cRc7cGn1AKUE5cdzlM/gAr5F/O24H3xkFRfxAbVygvK+cIsspjGWo1zgjeFpxL+BvnLw7laBA4xjIFJwrgu52DoVjKdY4HBEX8dSF3JLYe1fe6UcYCii3xWQjdfuSTnAtoheKCC7GNED5Zx4L4qt61jbTLHA94geKSC7P7ZeShQ0Inoi1IJuEOeORooFXkV0FZNdZs5qvFfKAeqYy7nZ6yg//HG0MBfffh71lFrQDCW2EvEP4mt4okZUDftz9rmGZkotmMxJRtlisy+MTniAWrty3AlXw0hFM2TD89l+oNsoOJXjbIs4EpqNtTCLXbiZ0g+M4mFObj8U3vsNjoZCVcmk60ZwthpepLZkB/AsivWfOJZxtpUQHfWib7KWDwzjeegBZJSdKFiE2qJTFFTwElsi/unQ/awXrU4WGMD7nOJxBY/1EO2iYConq93CHT1GOwucjdqnRyFz+VcHmMNefMY9nNkA3SWUOoXhQviSWQ4huLIRFlirFixnQq/XaKXUgg2xQNGv4V7x/RcW+AXPB3h7H1PaiQAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-zoom-in {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsUBmL8iQAAA2JJREFUWMO9l12IlFUYx3//MzPrLpSjkm5oN4FFIWVEl66IQlFYwtLOzozsjHdGRSCRF0sfBEXRVV0FQuQiLm5CZNBFgRRaRLVFhbJ2EdiN5gbK7toObTPn6eYdPTvNzPvOBz5Xh/ec5/n/n89zXtEHmZqeSXSuXBz/3zfdKvBWJHQrwZuRcP0El+QkbQXeBX6WZEgm6TtJk5lM5o4Lc+cV6qpf4Ga20Tm338zeATItVK9Ker6yvPzp4NDQ3+XieGsCU9MzTYumGbhz7m4ze9/MHgvBgItACrgfGAj2jgAvAYs3wlEujjc13kii8YyZrXXOfWhmo9GnFUlvOOemarVapVqtkslksmb2KjARqL62ecuWN9NxbRInzrldAXhV0uFSIfdew7G/gNLU9MwS8CwSmE3Oz88fcXG5blfpqVRq0Ix8VIAAX0XgrVL7HDCHGcCaWrV60LUBN8Dae58aQIxEqcA592I9M610JL0cpG/U9TIHJNKY3RV5z0R+7Nd4HZ0P1g/2RMBuegLAsRMnb4vT8d5vqKfMzOgtAlADrkmqGywmiMBTwfr3dC9j1Xv/r6Tvg/5/5ejxE6cO7M9faVbQZrYNOFSPmqQvVo9FKexvi5uWX58943aM7DwAfBDY+FbSCxP5sdkGx55GeguzrUEXPaSo2pFkAbiSZQCAzZJOmdkjwd6SpB/M7KykQTPbA2wDhoIzRzcNDx9MJwGNIXdJ0mEzmwbujL7dbma7gd03A7lKfnTOvf74nl0r6bonTUbujRSUCrm2d4L3/kvn3JPe+8+BDW2i9o+kT7z3kxP5sYsA6W47oE64TsR7P9tQL4vA2mh9WdIscKxUyJ0M7aR7acOGzikD65EQLEjaa2ZXzMwDFeB6qZBbbLTRE4EGeSaozNOZgYFf8qP7lmIvs354n0qlHpB0T7B9Ogl4IgJJrmjv/SiQjbrkD+BMUkfSbYATPdckrTOzkciWAXOlQu5cYgLdPEIapud9wMOR9zVJH3ViKx333mtHMJvNuoWFhZ3A+ojMcja77njXBEKwJJfTcqUyCIQ34Mf7nnh0paMnXacFuGoC1mr3AtuDfLzd8Zuyl+rfuGn4HLAD+Az4qZQf+61TAj0Noj8vX6oC35SL43u7teG6rf5+iXppwW7/JUL5D03qaFRvvUe+AAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-zoom-out {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgsHgty9VwAAA0FJREFUWMO9l09oXFUUxn/fmXlpItppi22k7UJBRSlVkCytSAuKUloIdjKT0El3FXVXdVFKRVAQV7qQohsNwdA0UFvBhYtqUVyIVlRaogtFQVq7qSTVjA3z3nHzBq/jvPmTN/Ss7rv3nvN99/y794kByMzcfE/7picn/jenmwWeRUI3E7wdCRskuCSTdDfwBvCtJEdySV9KOhpF0e0/LF5SqKtBgbv7ZjObcvfXgShD9Zqk5+orKx8Oj4z8NT05kU1gZm6+bdK0Azezu9z9hLs/HoIBvwAF4H5gKFh7B3gBWFY3460kWve4+3oze9fdx9OpVUmvmNlMHMf1RqNBFEUldz8OHAxUX9q6bduryut+Sfvc/Wz62ZD0fK1afjND9y3gGSRwv1GMojstTxUUCoVhdyopEYDzKXjWwZ4FFnEHWBc3Goet00m7lZlZYQixKw0FZnakGZksHUnHgvCN5/KARBH37enpOVg58H13HV0Kxg/kIuD/ngSA2ZMLt3bTSZJkUzNk7k4+D0AM/CGpaXCyBw/sC8Y/qZd2GpZiuL9YLN4Sx/HpoP5/c/exQ1OVq+1yyt13SLoArEsJnMjlgfOffvK3u58Kprab2QezJxfG2iTzUzI70wRPG9jbmpmb95SNB9mpzp7/j2yVdNbdx4K565K+cvfPJQ27+x5gBzAS7Hlvy+jo4WIvoC3kWpcvS3rR3eeAO9K529x9N7C7zX6AC2b28hN7Hl1Vt44niVq13LUjmtlYkiQfA5s6eO+GpDNJkhw9NFX5ueNt2ARodyF1IHIN2JiOl4H16fiKpK+B2Vq1vBAqFAf4IJkGNiIhWJK0192vunsC1IE/a9XycquNXARa5OnApeeioaHvKuP7r3dTGsiLqFAo7JR0T7B8rhfwXARa2us4UEqr5Ffgs151i/08oTNKdIO770ptObBYq5Yv5ibQq/sl3Qc8lJ4+lnSqH1vFfp9koZRKJVtaWnqkWXqSVkqlDe+vmUDWpZMlK/X6MBDegKf3P/nYaj8ErN9fqZBYEsf3Ag8G8Xit33BaniTcvGX0IvAw8BHwTa1y4Md+CeRqRL9fudwAvpienNi7Vhu21uwflOT+L+i1X2TJP57iUvUFtHWsAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-help {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABltpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MzI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMzIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDNDIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDpBODVDNDBDMTIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpBODVDNDBDMjIwQjMxMUU0ODREQUYzNzM5QTM2MjBCRTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6U2VxLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNjoxMToyOCAxMToxMTo4MjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjY8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cphjt2AAAAT7SURBVFgJxRdbaFxFdGb2bhui227BWrsVKYgf2kJUbP9EUPuzEB803WTXJjH61Q/7Ya1+CMYKEVTsh4J/EpvY7BoabUiNiA8s1p+4KIhpoUUEselHqyS76TbZ3HuP58ydc3d2u4+IkQxczpz3mZkzZ86VYpXjvenpjZsLhUcliE4AuUuASAgptmt1EFdwPiclzIIUUwubNn17OJlcXo1p2UpodHRiux9xB1Eug1+slbzhFxGOKc851tu7/0oznYYBDA8Pt0U2tL8KQryIq2tvZqQhD0QJHRz3yqWhgYGBpXpydQMwqz6NCnurleCSADkJEfgKfOePqL80R/wV1ZaQyr1LenKfkPCkEPKeaj0xg7vxVL3duCmA0Vyuw/fl52hgBxsBED+h4Cv9z3R/zbRm8MTJTx7HQN7GQB6w5C4L4SX7M5lfLBpurjXMyvNIShiyi0l1pL8n9b7EDGPR8fHxzSsQ6XDB3618/xqo6Pk25V5MpVJllgHM1BO58RdQ612kOYZ+GXdij70TYQB05mpj+1kU5G2fB+l3PZtOf8NGx6ambnMXb3yAxg8wjSEG6OKKR9oicBQD+ZvpH2Wzj0lQpxCPG9qMv1x6hHNCsSAlHM7ZOa682vlI9tRDbvHGbD3nZAPpDoD/3JIrLpAs26UFkC3EMUA99hpfGtEBfJjNJnS2Gwnadnvl+Xw+iuc3DAJuNyIaSCHpilVldyDjjUxj3WDZIAhxhHHyRcdNuA7AAfUaXzVKODpzFiZ4/uLvh5G+m2no+C/pyIf7MqlEJB7bpqR6nXkEUfbeawuLaZsW2ISfNQ2vtaktQlGFQyIVGT0o2+2EC4iQNGwjBIN9qdQ5Qg4mk4X4rW3vCClLtowE2FOFUxKDfNmiZci3ovKKRFPh4FK9q4Zbdr+lKKJiA13TcHR2dmLBgdmQ0GAS2MZaEowY+XbAk09IvgtYZGp16SyvFhaHcIUh645t8T9DBCcnz5zZ4hZLu3DzK2QlL1QQa0Y+pHiJKPSuOGj3PmZTheM5w2TwqBxnvBZOTk7G5gvXJ5Aelms8wnJURL+olSWcfEhf6gDoUXPMq6ZlqbzWU2pE+3hi4s6F68tfIj9cBMlikr7Z0/P0b/X0yIcUXsDCF1WhtL4OROHaXk+xlkbV0Cu732Nmhc4peaWSg73pA8dq5RkvO37ldUTfXCKZv2q45MkhvG87WQEzpCCUSvV1d9GONBy3lMvgKSwrZig8gjAietWY0QriylO2jIo4yVbOSb7KB/qmI9BPKjHpSSXYauRyn92Nq9/Kcrj13x3s3v8D481glQ/0raiNYgX9njPSBOImbrHZePl+tfFmc9sH+Xaoh8NjOKSVdDMhjjYzQLy+dFceH5+IJQf9VYXX4tROg4ZFU8m31M3mfPEqUoJqCGJfvWpo2xnNfdrhC28n06SCeSzNZxlvBINGRXCtKS7EY1uV6V7HWAm38y1cXaXsMcOCvr9ySPj+af7A1U2HJXHzVNvUXVLIGyPf+jV0pf8GHoN+TLAyPkidTCi2RpPApmnR0Bd1zGRaB/B8Oj2HSw7LLbVR1MmskW8RdEWVXSJf3JbpAMgRtc4IZoxTh9qotQjCasm46M0YX9pV1VmbpvRH5OwwgdRtSg2vKaAz/1dNKVtb17Y8DCL4HVufHxMOYl1/zTgIgiYvBnFKfaNp3YjTdPz3n9Na8//X7/k/O1tdwopcZlcAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-hover {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4oVHp0SwAAAQJJREFUWMPtlsENgzAMRb8RQ5VJItFDOgaZAMaAA0iZpN3KPZSoEEHSQBCViI/G8pfNt/KAFFcPshPdoAGgZkYVVYjQAFCyFLN8tlAbXRwAxp61nc9XCkGERpZCxRDvBl0zoxp7K98GAACxxH29srNNmPsK2l7zHoHHXZDr+/9vwDfB3kgeSB5IHkgeOH0DmesJjSXi6pUvkYt5u9teVy6aWREDM0D0BRvmGRV5N6DsQkMzI64FidtI5t3AOKWaFhuioY8dlYf9TO1PREUh/9HVeAqzIThHgWZ6MuNmC1jiL1mK4pAzlKUojEmNsxcmL0J60tazWjLZFpClPbd9BMJfL95145YajN5RHQAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-crosshair {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADEUlEQVRYR81XXVIaQRCeHqug8CXmBNETaE4gniDwIgpVspxAbxC9ATkBkCpQ8gKeQDiB5AQxNyAvUlrldr7eHxyGXZi1rMJ5opbp7m++7un+htSGF204vsoMoNXrlzSpfWa1oxQfhAegCZGaEtPorHo8znIoJwCt6+td8uk7ApUQCIHTF4BNAWzImq8ap6cP68CsBdDp9i9ZqXM7ML79g/EnCWD+jgMKENKqWT+tXK0CkQqgNRjs0OxpQIqKhoMxaG6/6JeRnK7T6yO2UvVqhYSlLX+ryORfgKn9ORDFIy7ky41yGcwsr0QAQfDH5zucOswx819fs4egI9OFCcD8DjBF7VNbEX0JzdWEt3NHSSASAcCxBDqMgt/623kvyTgNgNjJIfTjk4D4FqaJR1715MjmYAmA5Bx3AwUXQL+t105KaTlcBSC26XRvhjEIoLiq1yqXpr8FAGG16/ug4IT27fxBWu7EiQuAiImJpEMKE6nYM30uAIDDttSUOPfJP7JzbjPhAiBIh9QE67vIvoOi9WJfCwDavf40ulpjbCqmUf+W753ezURuh7Dg1SqflwAEHU6pgfyBq9Y4qx0LG++2fnZ/eUzcstmdM2AWH+jfc+liWdBJfSENf8Lifi3GVwC9mybOfi5dzatWVrbbLIHNva8p5h/16gkaFiLGGxbufkoE6XguwePiXLF3XmMfCUCUAqtKXU7sumd1CowOuJEi3Pg1FBpjitIGhyvVSfvmjci6ZR+rFQfDiPVE2jFYeICQ+PoewwjC5h7CZld6DBdyu6nDSKgzOyIMhmhK5TTqXYbRorZYM46TmpKAAOrGWwSJJekSB1yqJNOzp1Gs7YJ0EDeySDIMtJbQHh6Kf/uFfNFZkolJICRmz0P8DKWZuIG2g1hpok+Mk0Qphs0h9lzMtWRoNvYLuVImUWrmPJDlBKeRBDfATGOpHkhw670QSHWGLLckmF1PTsMlYqMJpyUbiO0weiMMceqLVTcotnMCYAYJJbcuQrVgZFP0NOOJYpr62pf3AmrHfWUG4O7abefGAfwH7EXSMJafOlYAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-lasso-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgwlGP1qdAAABMBJREFUWMO9V1uIVVUY/r61z57ZMx4DnbzgkbQXL5iCJphlWdpIGY4jpFBkEiU9ZNaDRRcITcIwMwgxoQtU2IMXdAZfMjFvpERXYiSbysyBEXFmyuHMnLP32uvrwT2xnY5nxvHQ93Jg7fWv71/r//7L4a59TRgqJk+Z6v3a+sv0OI5nk5wu6VaSVZImAThHsgjgrKTvM5nMUWvtmf5n8HodCIKgOgzDhc65pSTrJQWDsSNpJX1ljHnDOfdT37oZLLHv+8OMMasKhcIJ59xHAJYMlhwAJGUAzJfUTHLFuFzOG5QDU6dNMyQfs9Yedc5tBpAD4IYYNQGoBrDtQnt7/b0LFrJsCHzfn2itfQfAnZLiazytA3AaQAuAiwDaEgeNpGkkswAWSBqRONB38b88z5uTKePt6iiKXkk8jq+iJC5LOmiMaTLGHLPWhmWeHr7vV0dRtATAapAzIVmSo51zyzIlbm2stesFPA6pKk0r6Ryg93y/ek8YFvPOOTg3cDSiKCoC2OP7/rEoirYm4rUkF12lAWNM1lr7lqQn0+QA8gI2jBg5cj6Aj8OwmB+KAKIoukhyp6SRJAUgl0ndPLDWPi9pJQCbuviXvu+/GIZhW1dnJ24UJFuTjCCA2ADA8sYGWmsXS3qmL94kDYAtkh4Nw7ANlQJ5U6INT1KrAYC9zQdykl7nFSj5fXp5Y8NWVBhy7mUAjqShMYdMXV2dJ2klyRwAJ8lIeuGWCRMP7N7frEqSG2OmAFhKshNAp5wrmO7u7jEAngPQm1S2z2pqapr+OPt7XEly0oxwzq2RdFmSD2AMgKKJouhhAL4kA+Cs53l7e3t7uytJHgRBreTWkXwkKVJnJD0B4GAGwIJE9R6AFufc6UqSZ7PZbD6ff5dkA4CQZEHSqwAOISmXtwGIE+F1SeqqIP8d+Xz+C0mLJYWSAODteXffczjdDQNJ0BWMCoLg5gqIbRTJNwHsljQhUb0luWPM2LE7Thw/9m/5NCT/TByxAOYWi8X6/gdWV1dnfN8fNRBxJpMZTXKdc+6IpFVJWAEgkvSJpA0X2tvtVTaSjgOYBCAEEADYSHK87/sfhmEYA9gShuEDkgzJHyWtB/B1irQ2juP7ADxkrX0wOUOpzmdpzEY590HJ7Ni1r2kSyZOSiv2+hSRjSTXp/QAukzySNJOJkmalyNIl10hqMcasdc61XDNcQRD8BnITgNp+36r6kfcNFMMlLQGwTNLMEuQGQBfJl2bdPru+HDkAZAqFQux53jZHEsC6aw0eg2gylNRBcqcx5v04ji999+03AwsWAOI4Lsy9a94WkisAnE5a5WCJYwCfA1g7LJudI2lTHMeXBm1faiQzxkyRtF3S5CTupeAB+KG2tnZFT0/P30NO2VKLzrmfAbwGMipjG5Oc0dPTc0Md05SZ5U4Q2FxChErtEYD7jTGNQ3UgM8Asv90Yc9I5LSKRlXSI5CxJa0jWSALJjKRnAewfkniT+vwf7N7fXHK9rq7O7+jo+BTA/NRrdBpjnnLOnUrvXd7YMPQXSBunneno6IhIHgYwW1JtkgmBpBkATlVMAwOk3nFJ+VSoqgCMr6gIy2FcLtdKspAedyQN/98caDt/3kpyabUmf8WvG/8A1vODTBVE/0MAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-pan {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4lKssI9gAAAOtJREFUWMPVll0KwyAMgNPgoc0JzDX2Mtgp3csKErSamGabIEUo/T6bHz0ezxdsjPJ5kvUDaROem7VJAp3gufkbtwtI+JYEOsHNEugIN0mgM1wtsVoF1MnyKtZHZBW4DVxoMh6jaAW0MTfnBAbALyUwCD6UwEB4VyJN4FXx4aqUAACgFLjzrsRP9AECAP4Cm88QtJeJrGivdeNdPpko+j1H7XzUB+6WYHmo4eDk4wj41XFMEfBZGXpK0F/eB+QhVcXslVo7i6eANjF5NYSojCN7wi05MJNgbfKiMaPZA75TBVKCrWWbnGrb3DPePZ9Bcbe/QecAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-xpan {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4X4hxZdgAAAMpJREFUWMPtlsEKwjAMhr/pwOOedINJe/PobWXCfAIvgo/nA4heOiilZQqN2yE5lpD/I38SWt3uD9aMHSuHAiiAAmwaYCqoM/0KMABtQYDW11wEaHyiEei28bWb8LGOkk5C4iEEgE11YBQWDyHGuAMD0CeS30IQPfACbC3o+Vd2bOIOWMCtoO1mC+ap3CfmoCokFs/SZd6E0ILjnzrhvFbyEJ2FIZzXyB6iZ3AkjITn8WOdSbbAoaD4NSW+tIZdQYBOPyQKoAAKkIsPv0se4A/1UC0AAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-ypan {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4anK0lywAAAMVJREFUWMPtlzEKwzAMRX/S7rlpIMXeOnaLaME36FLo8XqCdNFghGljyc4kgQi2Q/SUj0F/eL7eMMTKz6j9wNlYPGRrFcSoLH4XxQPvdQeYuPOlcLbw2dRTgqvoXEaolWM0aP4LYm0NkHYWzyFSSwlmzjw2sR6OvAXNwgEcwAEcwAEcwAEcoGYk20SiMCHlmVoCzACoojEqjHBmCeJOCOo1lgPA7Q8E8TvdjMmHuzsV3NFD4w+1t+Ai/gTx3qHuOFqdMQB8ASMwJX0IEHOeAAAAAElFTkSuQmCC\");\\n}\\n.bk-root .bk-tool-icon-range {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABCJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4zMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxkYzpzdWJqZWN0PgogICAgICAgICAgICA8cmRmOkJhZy8+CiAgICAgICAgIDwvZGM6c3ViamVjdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTgtMDQtMjhUMTQ6MDQ6NDk8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPlBpeGVsbWF0b3IgMy43PC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrsrWBhAAAD60lEQVRYCcVWv2scRxSemZ097SHbSeWkcYwwclDhzr1Q5T6QE1LghP6BGNIYJGRWNlaZItiFK1mr+JAu4HQu0kjpU8sgF3ITAsaFg0hOvt2Zyfvmdsa7a610Unx44Zgf773vvfneezPHNzrbhn3CT3xC3wPXYOC8LDzqdi8YY/gwh4BeknS/2th6dr2kf94AOp3OFyWgMyziOPbMDxV9FTtJnl1ut795Xd0/YQ0/vtYQwMT1KXWCfr2IjOWwtNehwN4xL9ykTrm6Pzl58yLn3J+mKh9mXbT3uRjGEDph+O8/TjfP5dBp7Ha7AX7O3o5nZeD/0E/OGyXntDgzA0X6qmCnrVutVlrUWV9f/3xo+pwhGDhvEPHOjoxnZjJggXmMHzBQ7NGNp9vxk61fr0HR7e/u7pZzCGHlc7qwBYYTT7tJYSx1AQzppyFPft5apta9w7SKcn0b7P7+/jCsDQ5mbc0dCmIJGDN0ehdcjsmkm6A6KUeKFOTE11PLxrC7Ukqh3ylL2fT0NAP9q6ur6rRCJJYsbKB0JsbCKMuy+xREePDyxQPCz+Crlw062QcA5wBOOt1l6vIl2WiI9F1fN6Q+BBqit6hEC4Hk08GQJMn4myjSP7RavVxgdaVUh/3U6HCMsPr9pYnJKRziHtWQ+un58+hGs6nsjQSjpuTyKGN3CX+FBwHXSiEVgjP+O8X6N12kIePES+GzTKAkGbNp8yJsGUMVzz8jPKReiyAQRimy5/cjye5RpF8utFp/+nwmT7d/NMzcFkS7yjJNGDaPURQxIQThEQy0SyF4l5WJYYhBa816vZ6dU7A6CAhbZVow/pDe0O9hVOoCi13r4BgBAvJHqMSQL2vE/iH6IAXEwgrRVUmBoRRwnwJQT98xEeVeSUyB4dJ5nwJBKdCFFGRmUCcu7rwIYypCTblaChuNBhWODrman5ub+4v0rMNBt8z6Ezh7GksJQpCbm79cMQE7QBFm/X6f0rjWnv8WRYg/QdbUpwDAEBy8vPyA8rNGzg3a8MiElwiM7dAtRqNoNptjGPM1laVxP9umWEMGLOKhKUOJDtBwDmzsw9fC/CzHr9SGuCTi2LbbKvVtmqXpCjMihBFa79Wrt5fGx9PDzc3fmu32Lf8qFliwU9emKhBSp+kRKn/hu9k1COEDbFdt/BoKWOAkuEbdVYyoIXv8+I/QK9dMHEb1Knb7MHOv8LFFOsjzCVHWOD7Ltn+MXCRF4729vWMDK+p8rLkvwjLg4N4v741m5YuwCI9CvHp1Ha8gFdBoPnQAkGsYYGxxcfEI7QQlFCTGUXwjAz4tWF+EpymOWu7fglE7qsOvrYE6g4+9/x/vhRbMdLOCFgAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-polygon-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjc1OfiVKAAAAe1JREFUWMPt1r9rU1EUB/DPK0XbqphFHETo4OCiFhwF0V1KHbRSROLqon+AUMVRRFBwEbRFMBiV+mMW/wIxi5OD1kERRVKRJHUwLvfBTZrU5OWBGXLgQu7Jfe98z/ec7z0vKa88b2q1BDtRHdAPBaylm1NzsxsOjPnPNt6WSWprbft+/c3I3zOAjhT1Y4+fvcjEQJIXnVECSa+AhqIHqlHH5lWCZoe+Gk4GRgDG86j9SAUdlDBSQaZhlOkuHyoVdJmsw98D1S5fM4NYM1LCpqM+Lwa240oLgmZzpVZvzKT75VLZcqksSZKWlQeAy/iORVwIvh31xvotvK7VG3Px4aWHj3Jl4C2uYSvq+Bn8v6LLbaVWb9zsBiKLCvbiNG7gLm7jAYqbPHMJMziZ9lsKoh8GtqCEVVzHftwJn+TFHp4/hg8BSCYVfMOZoPEv2NZGdy9WCGUr9toDR3E2/H4V6nwRe/BmgN65H1ZhvMuB3XiKIyFoGefwO6ysVkUlrNUNsyAK/jli533Q+Y8cJFvAeXyMS1CI/jiMr/gUtD2LQwMGr4R3p7bY3oQHQ5b38CT4D2AXXg6YcQXHpyYnlqKsi5iOAVSwL9zd7zJ09r+Cpwq72omFMazjT9Dnibym0dTkRDUKrrgwH7MwXVyYB38BstaGDfLUTsgAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-redo {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4itK+dVQAAAaFJREFUWMPt1L1rFFEUBfDfJDaBBSslIFjbaSFp1FJQFMVCHkzhKIqdUYOCoBgErVz8rCwiTDMwBCIKipDWyip/gxAIWAmBgBC0eYFh2Gx2l9lFcA5M8e59782Zc84dWrT435Hs1siLchqn43MS0zgW22vYxjesYjVLw3YjBPKinMUTBOwf8J5fKLGYpWFjJAJ5Uc7gIW6jM6Kim3iNZ1katgYmEL/6I+YasvY7Lg6iRpIX5VF8wuEe/XV8wGf8jN6LWTiAc7iEQ7ucPZ+lYW0vAtfwvlbfwCKW9gpXDOv1mJvZHiSO91MiyYsyiQSuxtpXXM7SsDmM5nlRdrCMMz3sOJWl4Xevc/vwBzdwAl+yNNwZxfRI+GxelK9ikHcwh8d4NNR/YFRES1ZwoTYdR7I0rNf3TzVNIGbmSvR/Bx08mIgCFSVu4l2ltIWD9WxNGR+W8KOynqnZ0rwCeVG+wa0hjrxtWoF5dAfc28V8Mib/n+Nev5dnabg/zgw87aNEN/bHOwVRiRe4Wym9zNKwMKkpgIWKEt24njxiJlq0aPFv4i9ZWXMSPPhE/QAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-reset {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4gWqH8eQAABLdJREFUWMPtlktsVGUUx3/nfvfOlLQaY2IiRRMQIRpI0PjamJhoVASDvNpCpYw1vJQYSVwZwIVQF6wwRHmkAUof9ElrI6VqDAXcID4TF0IiYQMkSlTokNCZ+b7jove2t+NMH7rQBWd3v+989/zP+Z8X3Jb/WGQySvUNTQBJESkNguAVYIWqzhaRhwBU9WcR+QXoymazn6jqzUQiMQSQzWZRVdal1vwzAI2tHQBPOuc2AbWTdOyQ53n7nHNfRwee51GzqoIQMCLDpr3x/tLQ0oZzrk5Vj0/BOEBt+KYuOlBVGlrahr0Wob27t3gEjnZ2AyQzmUwHsDgP6J/AYRE553neDwDOuUdU9QngNeCumK4TkRMhZUORcYC1qysLA6iuSQHIwkWLD6lqapQsuSmwTVV3h99I7EcAR462A2xR2Ilq6ehTaejvO1774kuLNALR33eclsaGsQDe3fYegHl43vyNwEeqGl1963mm2jl7YZRTQ82qlWP4HM6ZToC5ztkW4LHQoALru7s6Di5dvlIj/e6ujrEAWoZDn8hmMjXATMACGaAVuBjXTVVXFc/AxhaA+4zvn1DV+eHxVWPMAmvtb5GeMWZyZVhI2rt7qVy2pOh9U1snwIPW2vMi4oWJuBPYHkVAVScPoKmtkzVVK6cEMsyJraHhiCqJqJUwj/JRz7TW1iSSyR2rVyylqa0Ta+24Ic8vXaAEmDFc/l5Z2A/80OibuVyuz/f9ElUdHCmvw82t5HK5h6y1PYhsz2YyGw43t2KtBZHIGwB6+j4rCkBVUdV7gXrggnPuu8h4eP+xMeZS2D0rJYZ6AdAMzAt1b4nI26p6IFZOY8pugijcKSIHVLUK0LyST4vnrVfnWr3mjmP4QTATaERkXkypRFX3isjmuHdRJEK6Ckqquopp06bdKCkp2Sgi7XnGLcg7gzeutwNIiPYc8HixqIrIOlU9ONVIhHPEd851icgSVXUiskVV94gIqoonIt0i8gfQCfwae38e6BWRXuBZz5jZ8VbaOE4EIqlZVUEQBLlkMplS1QER2RwkEnsSyaREDUzyeNsvIhvCMqkH1kdIJ2o+k8iJB1LVVRfjZ6nqqlEAIbdVQGto8Lrv+/dbawcjAL7vc+6bs+zetetfLSHxniIFGofGGsU2oC7eOCbDfZ7nQawBOSAX74SF9oEPImOq+r7nmVmxb5raukZa8UReGmNmhbMkAwwBH467EYVZe49z7kdgenj8k7V2oTHm8kgdWcvrNdVFjR8cHkYzjDH9wLjDaEwEzpwa4MypgWvAjtjxfGNMj4jMiT+M+kFsZI/Q6Pv+HGNMT8w4wI7TAyevxXVPD5z8+zD64tRXAMHVK1eaVLUyVvuDqroV2BOnJF4ZIedviUidqt4Re9s+vbx8zZXLl7PR2+nl5Tz/zNOFp2FzxzGAklw22wUsLLaSKXwf8vhosZUM6PeDYEUum70VHfpBwKsVyyfeikOP6oBNwN1TrLbfgX3A1kKLzKeff8nLLzw38T5wZDgxn1LnNk5lLRfP26/OnR2hwfNYW2Atn9RCsrf+EECyrKysDFimqhXhyjY3VLkAXBKRDqA7nU6nS0tLhyIj6XSaN9bVclv+l/IXAmkwvZc+jNUAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-save {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4UexUIzAAAAIRJREFUWMNjXLhs5X+GAQRMDAMMWJDYjGhyf7CoIQf8x2H+f0KGM9M7BBio5FNcITo408CoA0YdQM1cwEhtB/ylgqMkCJmFLwrOQguj/xTg50hmkeyARAYGhlNUCIXjDAwM0eREwTUGBgbz0Ww46oBRB4w6YNQBow4YdcCIahP+H5EhAAAH2R8hH3Rg0QAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-tap-select {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3NzIwRUFGMDYyMjE2ODExOTdBNUNBNjVEQTY5OTRDRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCOTJBQzE0RDQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCOTJBQzE0QzQ0RDUxMUU0QTE0ODk2NTE1M0M0MkZENCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTQ0QzIwMUM1RjIxNjgxMUE3QkFFMzhGRjc2NTI3MjgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzcyMEVBRjA2MjIxNjgxMTk3QTVDQTY1REE2OTk0Q0UiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6eYZ88AAADLklEQVR42rSXf2TUYRzHv7tuGcfE6Vwb5zLSSjEj7Y9KWqfEmFZJP+yPMdKKmUrrn0iUfjhWlLFi6YfNrF+StBoTo39iYkTGco4xxxG59P7k/T2PT8/37nu3bx9ezvPj+zyf5/PreS78bGLS8SmrwE6yje3NHJsDBTALpknBz6JhH3NiYAB0gHqPOVv52wJ6QQ48BzdAttTioRJjdeA8mAHHS2xuk3p+M8M16ipVQE49Ds6CiFO9RLjGONf05QLx6wPQaBlbBlPgJVgkP0ETiIJ2sB/E1XfimjfgBOOlKDUqCGOcqBcQnw6BYW5YTo4wbvQhMmCfGRemC2rBiGXzWUb+kM/NRZ6CHWBM9ce5R61NgX6ayhSJ5EPlItlDRNkz4JbFHf06BkSzHjXxM+gDv1S/mPUo2AXWgt9UUHL/IVhS8yUV1/EbV3o4N+NaoE9Fu/i827K5pNYHnqAVJECShWmAaddpscYFFXwR7vnXBRGlnUN/L6kqKJlxnRUuDbaDBiL+vst5d4gpcpBrqk/2jIgCKVUolhntplzivHmwh4stGOPfwBWwl/2dpp8p7xjQZqFLiQJtauKkivYm+kzccpK57yXfOUe+P23JqAnVbhMFmlXntCWnxbT31am9ZJ4BJifsUmNTqt0cYhA5ypympPg7VkEKunPbVb8cIG+0kyHLJZNR7fUMooUKFHAPkfQo58VLK+RzwRDd4FdWG9mjpaAXzqkJa1R7kQttqEABWXMjOOxxVRfnhRm5URX1prk/0pQHwNcKlchZ+jdpC+hFdVqO0my9Hj5dkYgCn1Rfh/KdlNDHrJhPqlDih+IfBd6qwpOgEqYMsorJ2HtWxtagLJDn/W3KRfPOZhoeBJfZPgVeGKeKrkQBh5dLXl25Ny3pc4/1fkTdbvFqFQgbxWeYD0hXulhQ0pYiM1jG547fcbMQpVnHTZEn9W3ljsCzwHxCdVteNHIZvQa7/7cC7nV6zHIfyFP9EXjFa7YxKAVqPP4bxhhoLWW+z9JyCb6M/MREg59/RlmmXbmneIybB+YC/ay+yrffqEddDzwGvKxxDmzhc0tc80XVgblqFfgjwAAPubcGjAOl1wAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-undo {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4em8Dh0gAAAatJREFUWMPt1rFrFFEQBvDfGhACASshkL/ALpWVrSAKEQV5sIULWlgZNSgIFkGIVQ412gkBt1lYLERREFJqJRaW1oHAoZUQsDqwecWy7N3tbe6C4H2wxc682Zn3zTfvLXPM8b8j6RqYF+UCzsfnHBawGt3fMcAX7GEvS8NgKgXkRbmMxwg41TLsN0psZmnodyogL8pFPMIdLHUk7hA7eJKl4U/rAuKu3+HslFr/FZezNPSTFslX8QErDe4DvMVH/Iq9F7VwGpdwZUjsPtaSFjv/1vCBPjaxO0xcNbHejLpZrrlvJCMCT+JzA+2fcC1Lw+GE4l3CG1yIptfjCtiKoqtiJ0vD3aM0Py/K57iIMxgkQxat4EdN7e9xdRzlk+LEEPvDWvIDXJ928sYxjL36icWK+VaWhlezOIqbGFirJd/H7szugrwoX+D2BDEvszSsT5OBdfRaru/F9dPXQF6U27g/KnmWhgctxqyzBrZGMNGL/rHI0nDkKXiKexXTsywNGx0OnFbFNk3BRoWJXnw//j+ivCi32/S8CxPVNiWOAdUiJtXITIqYY45/Cn8B2D97FYW2H+IAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-wheel-pan {\\n background-image: url(\"data:image/png;base64,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\");\\n}\\n.bk-root .bk-tool-icon-wheel-zoom {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEgskILvMJQAABTtJREFUWMPdl1+MXVUVxn/fPvf2zrSFmUKnoBCUdjRoVaIxEpO2JhilMYBCtBQS2hejpg1Uo2NUrIFAoyGmtiE+GHwQGtvQJhqDmKYRBv+URFsFDNCSptH60DJTO3dKnX/33rM/H7rvsDu9M20fDMaVnGTvtb69z7fWXmvtc/TEzqd4OyXwNsv/FwFJQVI/sA14SZKRLOlPkr5TrVYXHz70quYkEEK4TtI2YAgYkrQthHDdhV5uuw+43/ZrwCbgRttgY/tjtrc0m83X3/f+D6ydnJhYcB4BSZcBA7aP2d4ELAGW2N5k+xgwkDB0IH19CGGH7R8B1aQeAf4KvAw0ku4K2zu7uru3ApdPEyiKohd4TNKjtjt5h6RHgccSNrddbvuHtm9Jqoak7xVF8WFgdavV+pSk5cCObNmXgK++85prCj3z28HKqZMnH7D9YAY4BvwujT8BvCuL1INX9vVt+dfwcCvNb7f9q2RuSfrGvWu/sL2Nf3LX7pzvj4ENSGBPVarVd4fRkZFltjdmoMGiKO4IIWwIIWwoiuIOYDDzeOPoyMiyFLkum7WJCMDztrcrTTrIRuAQZ6NcK1utL4dWq/VZoC8BhqvV6l1lWb4YYxyLMY6VZflitVq9CxhOmL60hhCKeYiV7WMKIXw9jT1HpXw3c+bOAKzOjJubzebJrKQCQLPZPClpc7bP6rMYKtjXth2OMf7tIkr11Wz8oQDc1Fb09vY+kQw1YAuwJY2nbUluAnCWpKkaFl6IQIzxivaR2SYA89sJVK/Xp2x32R6w/a30DNjuqtfrU0ArYecDCEqgLqm94T0dEm9mBG7PxkdDlkBnkhebgIezNQ8nHcCZPL9ijE1Jf/bZZoPtzbavmqNZLbf9tSxq+yoduuJ+SZ+zXSZyBXCqU+d8fvC5yRUrV+0G2j3g2hDCLyXd/+Su3QdnvP/zCuH72LWsgf2k0oHlH2c2odlkxcpVEdgr6aDtjyb8x20/J+mA7T9I6rL9SWA5dne2/GdXLl58qNJh398An85yTMA+4DOz8Dgu6Zu2dwJXJ91ltm8Gbp7Fgb+EEB4aHhpq5CEtACqVyr3AC0AlPS8k3TSmQ2YPhhBuS/1/LpmS9JTtNTHGfwBU2uUALARotVqniqJYH2Pck85pfavVaufAwnQvnHc0McaDKVptebN94QAnJB0EdtjekydyZXqjs/0ZgLIs/w6sy8bnYGYJ63pgERKC05JutT1kOwITwL9tvzlzUQUYB+Zjs2DBgu6xsbGJZHstByZbezregcBXeCsEz1bnzXt5anLyzLq71zDLxTRdVgemdx0fv2e2w5thO5DbiqL4oKT3ZKpnpyYnz+SY2ZpTAPZmJfdIrVZbNBNUq9UW2X4kU+2dcf53Aj1pj2PA7y/6m1DS00A9za9uNBq7iqJYBuoGdRdFsazRaOzKSqye1rTbaa/tlbYrqXQP2X4FIA9/J1l39xrC0v7+w5IeB8XkwS1lWe6TGJAYKMty31tfO4qSHl/a3384I3CDpI+kzC4lnRfrue6GytEjR8oQwlY73gC0L4qlth/q0M1/LYWtR48cKQF6enrC6dOnVwGLEpnxnp7en4+O1i/tszzGOCTpPmB7ahb57QUwBWyXdF+McWg6MScmuoA8OX8xOlpvXGz422XYTsB/SnpA0h7bX5R0WzI9HUL4qe2XbI+dk3xl+V7gxoztD5jRI+YK/zkEEokx2/uB/RdzIfUtueqVN04cXwF8G3iHY3z9Urw/j8ClyhsnjrcS2Vv/J/8NLxT+/zqBTkcxU/cfEkyEAu3kmjAAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-box-edit {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEg4QfHjM1QAAAGRJREFUWMNjXLhsJcNAAiaGAQYsDAwM/+lsJ+OgCwGsLqMB+D8o08CoA0YdMOqAUQewDFQdMBoFIyoN/B/U7YFRB7DQIc7xyo9GwbBMA4xDqhxgISH1klXbDYk0QOseEeOgDgEAIS0JQleje6IAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-freehand-draw {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADTElEQVRYCeWWTWwMYRjH/88721X1lZJIGxJxcEE4OOiBgzjXWh8TJKR76kWacOBGxdEJIdk4VChZI/phidRBHMRRIr7DSUiaSCRFRM3u88gz+o7Z6bBTdjmYZPf9eJ55fv/5zzvvDPC/H9QsA66Olo9Ga+/MdR+Ljm2/KQIULsz9FqItGdOfJKLhApLgVkiSCGODjWit7QpKWy+TNrFeXvzKVUT8NiTVaIgDcbiCFJ7GiT8WkARXAdYBK0Lbhi/CenArRNskuM7/tgNp4ArQ42dwjf3WY5gWTqC7O/NbNn2Xkfw/YwdSw/We14HP2IEZwX+y9cZ9SH0LmgFP7UCz4KkENBNeV0Cz4b8U8DfgKiDxMWwUXETqLvJpCQpXZfawbzS7t9v5pL19cHBwfja7YA0y/lyCM0+E5hv5+piZXwKYcF23as+37bTXsQVqgkL0p/34fHR7DcBtbetFsBmGDwMOJCggYG55yw7dMlk6DuC1Bdu2RsCU9TYWQq2IoGbsreZ5NzvEqfSBsIsIy8OTbcdgiRHeh4o8AFAEwDakbY2AaCCpH7V9aGhoUUUy3UyVbkPYFuYLDlUZH8XBpwxkK0Dbgxg5HcVi0ent7a0RULMIozaHBSMfF9b2SzdutFcFB2FkwMIJOG6qfteXOa1nHZ48tyefuwyfT9s6wtzZ3t7eZse2DR2I228TtHXzuWCx9g8MtK5cuHCZTH4tiHEOa4xFngvTyS8f35d6enomiCi4/foEXBkZaQuukChL4FYA2Whd7YcC4gEdW3CpdL3LtGAVCVYJywEyTpAuJKeMOKXZs/Bw947C50KhUFOG4cwz35cjWNBlHGeD53n3xsfHP/T19U1qciggar8Fa4I3PHobIotBWBtc2hSiChyZxVzM53Pv7FVH6Tp3uVy+g0r1ImD2GjIrQGYIxjnfuXTZGICS5k/bBwJoubwEFX4TLah9EXomJGMA3za+f9913Yl4TnzsDQ+vE6YTZOjHh4ngibstt1pzQwd04F0bPStEBpXqRoBeQ/AKghfBnOEKgS+Q7z91Xfdz/HGKg8Ox7z8iYD9z6wqTkZFgnvhMGP9VZ2or1XVkPM9z0mytSfVsHa1RLBZbLoyNzUnK+ydz3wC6I9x+lwbngwAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-poly-draw {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEjglo9eZgwAAAc5JREFUWMPt1zFrU1EUB/DfS4OmVTGDIChCP4BgnQXRxVHqIJUupp9AB8VBQcRBQUXIB9DWQoMRiXZzcnQSA34A7aAuHSJKkgo2LvfBrU3aJnlYkBy4vHcP557zP/9z3r33JdXa647N0kHSZd5Nn0rSxc8G3cXp85sMcnZZ8vge3osZ+l3vB8CWFA0iL14t79h210swAjACMAIwAjACkB90D/8/GchI9ve4nPwTBh5E9ws7OepzGWb9EddSn51Op9ZstadSg4VK1UKlKkmSDSMLALewiuNh/hVJq71Wxttmqz0dG88vPc+MgWP4grvYG3SLOBrZFFFrttqPe4HIDxh4GSei+98iSlusuYopXEAjBtEPA3tQwUpwluAbDm4TPJUz+BTW9l2Ce6G7L0X/Bw8D3T/7SKKIDzHg7QCcxjvcQAEtXAnrrg/RP0/DKPbqgcN4iVOR7gcO4dcQgRuoh7HSqwlP4n20m63jJu5n8MkWMYfP3UowhzdR8FU8w9iQwevBdyq3/27CMRzAE5yLuvsRLg+ZcR1nJ8YL81HWJUzGAPaFZwe/Q5MdyYDyNHgjzO90YyGHtVDncuiJchaHw8R4oREFV5qdiVmYLM3OgD9k5209/atmIAAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-point-draw {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEMEiERGWPELgAAA4RJREFUWMO1lr1uG1cQhb9ztdRSP7AF1QxgwKlcuZSqRC9gWUUUINWqTh5AnaFOnVPEteQmRuhCURqWsSqqc9IolREXdEvQBElxtdw7KURSFEVKu4w8wAKLxdw9Z+bMnRmZGXfZ29//II8th4WwGVNyIoQLYB5vxA9Caq04iUd9A+7ZlsNC2I7TdSd2hZXMJKlnTqp9jtl/GBaqoyQ0noFKpUIzBicYYc+DEFpxkglc4oVJa5gvDn8v1xV2irG3FM4NSVwjUKlUaMcpJhCGmSEJQ6QGD8M5WnHCd8+f3QCXpPLx8WNwv0j6Bm9FMK7FJ3WBE+R/2t7c/GBmFvSBrzRTCsyTDjXrxUgEMtpxynJYmJoBJ4VAybwVARgvL7Oik0okCodnKpVKX7P0leiVMb0VvbJT+upznK4vh0GIeQwwQStJkHQD3MwsCALTJRG7Qrdrj5m/djgYaIa0hlkRdJk26XEgC9txurccBtVW3IudBImmZuACUP+ZlIDBt9FKcubYNTcAH/X0RYM1E7utJPlqe+uZzPxUcEkiSS4sTT95n15Mud0xWC0o2PAWOCdK3KYZlFxfM+tHOcnMzNr1es18ug+cgsVjP4yBU/Ppfrter1m/+l0+zYygML1xRVHU7TSb1cSzBzoBzszsH+AMdJJ49jrNZjWKou6wBnwOzcyndBpNbuueURR1Dw8Pq35p9cc5p/Dy9Dypt7jXrtdGwQECS9NPhr6Gq6txUzNigE6zydLK6lTw12/KT4FGFEUfJX2YJNONq5tVs4ODA7sD/DnwJ/BoADZuE3tHFs12dna6d4C/BI6AlbyzI8ii2TTw12/KK33gb2cdXsNZoAntbZC2SeO4c9592k/5eNQbiwvFd1kJuFGwLJr1wSPg/SwpvyFBHufOeXcFeAlE97U/uCxOY+P3b+Bn4B3Q+L8EdJfD4a+/AbC4UBzPxiPg3wlHZquB28Cn2IuR9x3gr3uV4DbwfvSDOvi4uFA8BDZmIRHkjHpS9Ht9iRqd8+5G3g05mAGcQbsdiX5QJ428G7Kygo8XYdb1/K4NWVmjzkNge2sz84bs+ELmpDDLtqWsNZBXgvmw8CTtpWVMT7x5YWBjLARnwZfKQNYN2U2LPvrh+5nBt7c2M2/It9bArCTKR8eZN+SJ13AScPnoODeRdqNenH+wul5w2gUr2WUjMFAt8bZ/0axX/wNnv4H8vTFb1QAAAABJRU5ErkJggg==\");\\n}\\n.bk-root .bk-tool-icon-poly-edit {\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gELFi46qJmxxAAABV9JREFUWMOdl19vFFUYxn9n9u9sCyylUIzWUoMQBAWCMdEEIt6xIRQSLIEKtvHe6AcA4yeQb7CAUNJy0daLeomJN8SEULAC2kBBapBKoLvbmdl/c14vdmY7u91tF95kknPOnHmf95znPc97Ro2OTeBbdjFDT3c32ZxVHUOE9kSMB0/m6ExuoJn1H+ur6Y+OTfD50SMN5168OgrAlyf7CfuD+z7+iDs3p8hkLUQ0iFQ/yFl5Nm/qonfHVva+s32Zw9GxCYILsZ08tpNfBhbs+1YN4OH9+7huGdECSBVfqUosbsllfmauBqiR+cCNwOr7AEo8pPHJnymXykhg5fUWjoQpl0vVvhZhbSzGoUOHqgBlt6B6uruj2Zy1E9jo0fhfeyL2x4Mnc8VErK0KUEOB64JSyptfG4RSytsJjUJVxw2lsFy3urL9nx1Qd25ObctkrVMi+jQivd7U2ZyV/3Hzpq7h3h1b/7p9Y0o8v8rwAbTWrGpSocN/FGDlbAI0Rl23PCBan0Ok158H9Ipwzi25A/Mzc9Gl/BYx/E4kYqC1NKRARNAaDCNUM27Z+Zr+ouXs0q4+LSLBHPYCFkTkC6uU39kwCdsS7WRKmaYUiAhdnZ3MPX2K4+QjQI+C94A93rMzm8ltMwyDeDzWjMZeEb2pYQDdW3vITU2jtUZ5QThOPgm8C7wP7J15OPsBsB3oWpGnVWisCeDS1VHj4vBI92+/3tgB7Ab2AruAXiDBK5oIOkhtkEYRNRuJhObrd8Dl9ewf4D5wG7hVLpen29vb5wzD+BrkbBMaL3d1dk5nsrnlFDTTFWAWmAZueWD3gCemGde2k2fw1Al1YXhEvjozoO49eczdqekrWmsc2zlrmvEKOGoW1GUjFLqSk2KpJrCLwyMCPAP+BO54QL8DM6YZX/ClsP9YnwKkXnIBP4jdIpJRpdJTCYdMwwi98KU0Hjc/dDILNyUcwTCWdOSMJ0TRmBktGRhLugu0xyLk7CIqVNm+0bGJptl1YXikD0grpY4Rjc4a8Fbgdab/6OGbAJeCUuyJnnHmZH9pbSyGuBXV8NUwlUpR1EWyixmSyTWEwqGlJ2Swbo2JXbAAfgDGgGQA9I1A9t1tlq0AxrXxn0ilUpw4fhQqYkH/sT41OTnJJwf2s6FjI5mshdYa7bqVR2uezr9MJmJt14FvGrh/O9D+e6UkM/xyCuCqEKCYnJyUTKFQrZDHjxzGshwWLQcRsOz8Hi85P23id0ug/XilAMLBmm4tPGdoaKjSH5+oAGrhwvBI9SjZTn4QSK9yenoD7dlrExPoJlXW8G8ytpNHxRKk02lGxsdRKFwXLNvx5yY94HQLGhGk4LFCYQSqaE0AwWM1eOoEbR0dKBSW7bC4mKuffxs4D/wCLKwQQPAUzIkslfp6cVomROWSolh0GjldAM4nzDi2k9/i5UAzC9aKfwNJ3zgJg9YEvN6+C7SHgKm69+sD7RfNnKTTaZRPQfAut4oFV//IS7gkcB34VlVo8kGzphlfB+DU+TfNGBpZtRastvrvARJmfMF28ge9sc2B9/PNnCilMIDwK6y8/ow/Ai4kvILTljAXvDvEvrqKSUs60KolzPjBxspavQD2tKqCAGF/Ba+xE/Wbilu54wZV8NEKF5fXzQHl/bh4hUsE0WAXSlDMYcQSrQXgCmsTseXHsJkNnjqBFGwKJaHsKlxtUHYVhbLCzr1kaOA4bcn1y1Swmb+iLpJKpVrfgdpfsiVVCYcgluwgnU7jEgJ4s5UkLFtWYyHyEg0/N1q1tmQH+YXnAMFr97Nmv3p+0QsHQRsF8qpBOE5+rb9Nkaj50tVQKjqh4OU3GNL/1/So3vuUgbAAAAAASUVORK5CYII=\");\\n}\\n.bk-root .bk-tool-icon-line-edit {\\n background-image: url(\"data:image/png;base64,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\");\\n}\\n'},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),s=t(72),o=t(303),l=n.__importStar(t(282));class h{constructor(t,e={}){this.items=t,this.options=e,this.el=s.div(),this._open=!1,this._item_click=t=>{var e;null===(e=this.items[t])||void 0===e||e.handler(),this.hide()},this._on_mousedown=t=>{var e,i;const{target:n}=t;n instanceof Node&&this.el.contains(n)||(null===(i=(e=this.options).prevent_hide)||void 0===i?void 0:i.call(e,t))||this.hide()},this._on_keydown=t=>{t.keyCode==s.Keys.Esc&&this.hide()},this._on_blur=()=>{this.hide()},s.undisplay(this.el)}get is_open(){return this._open}get can_open(){return 0!=this.items.length}remove(){s.remove(this.el),this._unlisten()}_listen(){document.addEventListener(\"mousedown\",this._on_mousedown),document.addEventListener(\"keydown\",this._on_keydown),window.addEventListener(\"blur\",this._on_blur)}_unlisten(){document.removeEventListener(\"mousedown\",this._on_mousedown),document.removeEventListener(\"keydown\",this._on_keydown),window.removeEventListener(\"blur\",this._on_blur)}_position(t){const e=this.el.parentElement;if(null!=e){const i=e.getBoundingClientRect();this.el.style.left=null!=t.left?t.left-i.left+\"px\":\"\",this.el.style.top=null!=t.top?t.top-i.top+\"px\":\"\",this.el.style.right=null!=t.right?i.right-t.right+\"px\":\"\",this.el.style.bottom=null!=t.bottom?i.bottom-t.bottom+\"px\":\"\"}}render(){var t,e;s.empty(this.el,!0);const i=null!==(t=this.options.orientation)&&void 0!==t?t:\"vertical\";s.classes(this.el).add(\"bk-context-menu\",\"bk-\"+i);for(const[t,i]of o.enumerate(this.items)){let n;if(null==t)n=s.div({class:l.bk_divider});else{if(null!=t.if&&!t.if())continue;{const i=null!=t.icon?s.div({class:[\"bk-menu-icon\",t.icon]}):null;n=s.div({class:(null===(e=t.active)||void 0===e?void 0:e.call(t))?\"bk-active\":null,title:t.tooltip},i,t.label)}}n.addEventListener(\"click\",()=>this._item_click(i)),this.el.appendChild(n)}}show(t){if(0!=this.items.length&&!this._open){if(this.render(),0==this.el.children.length)return;this._position(null!=t?t:{left:0,top:0}),s.display(this.el),this._listen(),this._open=!0}}hide(){this._open&&(this._open=!1,this._unlisten(),s.undisplay(this.el))}toggle(t){this._open?this.hide():this.show(t)}}i.ContextMenu=h,h.__name__=\"ContextMenu\"},\n", - " function _(e,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});const t=e(9);function*r(e,n){const o=e.length;if(n>o)return;const r=t.range(n);for(yield r.map(n=>e[n]);;){let f;for(const e of t.reversed(t.range(n)))if(r[e]!=e+o-n){f=e;break}if(null==f)return;r[f]+=1;for(const e of t.range(f+1,n))r[e]=r[e-1]+1;yield r.map(n=>e[n])}}o.enumerate=function*(e){let n=0;for(const o of e)yield[o,n++]},o.combinations=r,o.subsets=function*(e){for(const n of t.range(e.length+1))yield*r(e,n)}},\n", - " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(296),i=e(173),s=e(72);class c extends o.ButtonToolButtonView{render(){super.render(),s.classes(this.el).toggle(i.bk_active,this.model.active)}_clicked(){const{active:e}=this.model;this.model.active=!e}}n.OnOffButtonView=c,c.__name__=\"OnOffButtonView\"},\n", - " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(1),s=t(19),l=t(72),n=t(115),a=i.__importStar(t(18)),r=t(78),_=t(9),c=t(13),h=t(8),u=t(81),v=t(306),d=t(307),b=t(308),p=t(295),g=t(299),f=t(310),m=t(173),w=i.__importDefault(t(300)),y=i.__importDefault(t(311));class T extends u.Model{constructor(t){super(t)}static init_ToolbarViewModel(){this.define({_visible:[a.Any,null],autohide:[a.Boolean,!1]})}get visible(){return!this.autohide||null!=this._visible&&this._visible}}e.ToolbarViewModel=T,T.__name__=\"ToolbarViewModel\",T.init_ToolbarViewModel();class k extends r.DOMView{initialize(){super.initialize(),this._tool_button_views=new Map,this._toolbar_view_model=new T({autohide:this.model.autohide})}async lazy_initialize(){await this._build_tool_button_views()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tools.change,async()=>{await this._build_tool_button_views(),this.render()}),this.connect(this.model.properties.autohide.change,()=>{this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change()}),this.connect(this._toolbar_view_model.properties._visible.change,()=>this._on_visible_change())}styles(){return[...super.styles(),w.default,y.default]}remove(){n.remove_views(this._tool_button_views),super.remove()}async _build_tool_button_views(){const t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;await n.build_views(this._tool_button_views,t,{parent:this},t=>t.button_view)}set_visibility(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)}_on_visible_change(){const t=this._toolbar_view_model.visible,o=g.bk_toolbar_hidden;this.el.classList.contains(o)&&t?this.el.classList.remove(o):t||this.el.classList.add(o)}render(){if(l.empty(this.el),this.el.classList.add(g.bk_toolbar),this.el.classList.add(m.bk_side(this.model.toolbar_location)),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change(),null!=this.model.logo){const t=\"grey\"===this.model.logo?f.bk_grey:null,o=l.a({href:\"https://bokeh.org/\",target:\"_blank\",class:[f.bk_logo,f.bk_logo_small,t]});this.el.appendChild(o)}for(const[,t]of this._tool_button_views)t.render();const t=[],o=t=>this._tool_button_views.get(t).el,{gestures:e}=this.model;for(const i of c.values(e))t.push(i.tools.map(o));t.push(this.model.actions.map(o)),t.push(this.model.inspectors.filter(t=>t.toggleable).map(o));for(const o of t)if(0!==o.length){const t=l.div({class:g.bk_button_bar},o);this.el.appendChild(t)}}update_layout(){}update_position(){}after_layout(){this._has_finished=!0}}function M(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}e.ToolbarBaseView=k,k.__name__=\"ToolbarBaseView\";class B extends u.Model{constructor(t){super(t)}static init_ToolbarBase(){this.prototype.default_view=k,this.define({tools:[a.Array,[]],logo:[a.Logo,\"normal\"],autohide:[a.Boolean,!1]}),this.internal({gestures:[a.Any,M],actions:[a.Array,[]],inspectors:[a.Array,[]],help:[a.Array,[]],toolbar_location:[a.Location,\"right\"]})}initialize(){super.initialize(),this._init_tools()}_init_tools(){const t=function(t,o){if(t.length!=o.length)return!0;const e=new Set(o.map(t=>t.id));return _.some(t,t=>!e.has(t.id))},o=this.tools.filter(t=>t instanceof p.InspectTool);t(this.inspectors,o)&&(this.inspectors=o);const e=this.tools.filter(t=>t instanceof b.HelpTool);t(this.help,e)&&(this.help=e);const i=this.tools.filter(t=>t instanceof d.ActionTool);t(this.actions,i)&&(this.actions=i);const l=(t,o)=>{t in this.gestures||s.logger.warn(`Toolbar: unknown event type '${t}' for tool: ${o}`)},n={pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}};for(const t of this.tools)if(t instanceof v.GestureTool&&t.event_type)if(h.isString(t.event_type))n[t.event_type].tools.push(t),l(t.event_type,t);else{n.multi.tools.push(t);for(const o of t.event_type)l(o,t)}for(const o of Object.keys(n)){const e=this.gestures[o];t(e.tools,n[o].tools)&&(e.tools=n[o].tools),e.active&&_.every(e.tools,t=>t.id!=e.active.id)&&(e.active=null)}}get horizontal(){return\"above\"===this.toolbar_location||\"below\"===this.toolbar_location}get vertical(){return\"left\"===this.toolbar_location||\"right\"===this.toolbar_location}_active_change(t){const{event_type:o}=t;if(null==o)return;const e=h.isString(o)?[o]:o;for(const o of e)if(t.active){const e=this.gestures[o].active;null!=e&&t!=e&&(s.logger.debug(`Toolbar: deactivating tool: ${e} for event type '${o}'`),e.active=!1),this.gestures[o].active=t,s.logger.debug(`Toolbar: activating tool: ${t} for event type '${o}'`)}else this.gestures[o].active=null}}e.ToolbarBase=B,B.__name__=\"ToolbarBase\",B.init_ToolbarBase()},\n", - " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(296),n=e(304);class u extends s.ButtonToolView{}t.GestureToolView=u,u.__name__=\"GestureToolView\";class _ extends s.ButtonTool{constructor(e){super(e),this.button_view=n.OnOffButtonView}}t.GestureTool=_,_.__name__=\"GestureTool\"},\n", - " function _(o,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const e=o(296),i=o(15);class s extends e.ButtonToolButtonView{_clicked(){this.model.do.emit(void 0)}}n.ActionToolButtonView=s,s.__name__=\"ActionToolButtonView\";class c extends e.ButtonToolView{connect_signals(){super.connect_signals(),this.connect(this.model.do,o=>this.doit(o))}}n.ActionToolView=c,c.__name__=\"ActionToolView\";class l extends e.ButtonTool{constructor(o){super(o),this.button_view=s,this.do=new i.Signal(this,\"do\")}}n.ActionTool=l,l.__name__=\"ActionTool\"},\n", - " function _(o,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=o(1),l=o(307),s=i.__importStar(o(18)),n=o(309);class _ extends l.ActionToolView{doit(){window.open(this.model.redirect)}}t.HelpToolView=_,_.__name__=\"HelpToolView\";class r extends l.ActionTool{constructor(o){super(o),this.tool_name=\"Help\",this.icon=n.bk_tool_icon_help}static init_HelpTool(){this.prototype.default_view=_,this.define({help_tooltip:[s.String,\"Click the question mark to learn more about Bokeh plot tools.\"],redirect:[s.String,\"https://docs.bokeh.org/en/latest/docs/user_guide/tools.html\"]}),this.register_alias(\"help\",()=>new r)}get tooltip(){return this.help_tooltip}}t.HelpTool=r,r.__name__=\"HelpTool\",r.init_HelpTool()},\n", - " function _(o,_,l){Object.defineProperty(l,\"__esModule\",{value:!0}),l.bk_tool_icon_box_select=\"bk-tool-icon-box-select\",l.bk_tool_icon_box_zoom=\"bk-tool-icon-box-zoom\",l.bk_tool_icon_zoom_in=\"bk-tool-icon-zoom-in\",l.bk_tool_icon_zoom_out=\"bk-tool-icon-zoom-out\",l.bk_tool_icon_help=\"bk-tool-icon-help\",l.bk_tool_icon_hover=\"bk-tool-icon-hover\",l.bk_tool_icon_crosshair=\"bk-tool-icon-crosshair\",l.bk_tool_icon_lasso_select=\"bk-tool-icon-lasso-select\",l.bk_tool_icon_pan=\"bk-tool-icon-pan\",l.bk_tool_icon_xpan=\"bk-tool-icon-xpan\",l.bk_tool_icon_ypan=\"bk-tool-icon-ypan\",l.bk_tool_icon_range=\"bk-tool-icon-range\",l.bk_tool_icon_polygon_select=\"bk-tool-icon-polygon-select\",l.bk_tool_icon_redo=\"bk-tool-icon-redo\",l.bk_tool_icon_reset=\"bk-tool-icon-reset\",l.bk_tool_icon_save=\"bk-tool-icon-save\",l.bk_tool_icon_tap_select=\"bk-tool-icon-tap-select\",l.bk_tool_icon_undo=\"bk-tool-icon-undo\",l.bk_tool_icon_wheel_pan=\"bk-tool-icon-wheel-pan\",l.bk_tool_icon_wheel_zoom=\"bk-tool-icon-wheel-zoom\",l.bk_tool_icon_box_edit=\"bk-tool-icon-box-edit\",l.bk_tool_icon_freehand_draw=\"bk-tool-icon-freehand-draw\",l.bk_tool_icon_poly_draw=\"bk-tool-icon-poly-draw\",l.bk_tool_icon_point_draw=\"bk-tool-icon-point-draw\",l.bk_tool_icon_poly_edit=\"bk-tool-icon-poly-edit\",l.bk_tool_icon_line_edit=\"bk-tool-icon-line-edit\"},\n", - " function _(o,l,b){Object.defineProperty(b,\"__esModule\",{value:!0}),b.bk_logo=\"bk-logo\",b.bk_logo_notebook=\"bk-logo-notebook\",b.bk_logo_small=\"bk-logo-small\",b.bk_grey=\"bk-grey\"},\n", - " function _(l,n,o){Object.defineProperty(o,\"__esModule\",{value:!0});o.default=\"\\n.bk-root .bk-logo {\\n margin: 5px;\\n position: relative;\\n display: block;\\n background-repeat: no-repeat;\\n}\\n.bk-root .bk-logo.bk-grey {\\n filter: url(\\\"data:image/svg+xml;utf8,#grayscale\\\");\\n /* Firefox 10+, Firefox on Android */\\n filter: gray;\\n /* IE6-9 */\\n -webkit-filter: grayscale(100%);\\n /* Chrome 19+, Safari 6+, Safari 6+ iOS */\\n}\\n.bk-root .bk-logo-small {\\n width: 20px;\\n height: 20px;\\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==);\\n}\\n.bk-root .bk-logo-notebook {\\n display: inline-block;\\n vertical-align: middle;\\n margin-right: 5px;\\n}\\n\"},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});var s=this&&this.__rest||function(t,e){var i={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(i[s]=t[s]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var n=0;for(s=Object.getOwnPropertySymbols(t);nt)}}request_layout(){this._needs_layout=!0,this.request_paint()}reset(){\"standard\"==this.model.reset_policy&&(this.clear_state(),this.reset_range(),this.reset_selection()),this.model.trigger_event(new c.Reset)}remove(){this.ui_event_bus.destroy(),p.remove_views(this.renderer_views),p.remove_views(this.tool_views),this.canvas_view.remove(),super.remove()}render(){super.render(),this.el.appendChild(this.canvas_view.el),this.canvas_view.render()}initialize(){this.pause(),super.initialize(),this.state_changed=new u.Signal0(this,\"state_changed\"),this.lod_started=!1,this.visuals=new b.Visuals(this.model),this._initial_state_info={selection:new Map,dimensions:{width:0,height:0}},this.visibility_callbacks=[],this.state={history:[],index:-1};const{hidpi:t,output_backend:e}=this.model;this.canvas=new a.Canvas({hidpi:t,output_backend:e}),this.frame=new n.CartesianFrame(this.model.x_scale,this.model.y_scale,this.model.x_range,this.model.y_range,this.model.extra_x_ranges,this.model.extra_y_ranges),this.throttled_paint=m.throttle(()=>this.repaint(),1e3/60);const{title_location:i,title:s}=this.model;null!=i&&null!=s&&(this._title=s instanceof h.Title?s:new h.Title({text:s}));const{toolbar_location:o,toolbar:l}=this.model;null!=o&&null!=l&&(this._toolbar=new d.ToolbarPanel({toolbar:l}),l.toolbar_location=o),this.renderer_views=new Map,this.tool_views=new Map}async lazy_initialize(){this.canvas_view=await p.build_view(this.canvas,{parent:this}),this.ui_event_bus=new f.UIEvents(this,this.model.toolbar,this.canvas_view.events_el),await this.build_renderer_views(),await this.build_tool_views(),this.update_dataranges(),this.unpause(!0),g.logger.debug(\"PlotView initialized\")}_width_policy(){return null==this.model.frame_width?super._width_policy():\"min\"}_height_policy(){return null==this.model.frame_height?super._height_policy():\"min\"}_update_layout(){this.layout=new x.BorderLayout,this.layout.set_sizing(this.box_sizing());const{frame_width:t,frame_height:e}=this.model;this.layout.center_panel=this.frame,this.layout.center_panel.set_sizing(Object.assign(Object.assign({},null!=t?{width_policy:\"fixed\",width:t}:{width_policy:\"fit\"}),null!=e?{height_policy:\"fixed\",height:e}:{height_policy:\"fit\"}));const i=w.copy(this.model.above),s=w.copy(this.model.below),n=w.copy(this.model.left),a=w.copy(this.model.right),o=t=>{switch(t){case\"above\":return i;case\"below\":return s;case\"left\":return n;case\"right\":return a}},{title_location:l,title:r}=this.model;null!=l&&null!=r&&o(l).push(this._title);const{toolbar_location:_,toolbar:c}=this.model;if(null!=_&&null!=c){const t=o(_);let e=!0;if(this.model.toolbar_sticky)for(let i=0;i{const i=this.renderer_views.get(e);return i.layout=new z.SidePanel(t,i)},p=(t,e)=>{const i=\"above\"==t||\"below\"==t,s=[];for(const n of e)if(v.isArray(n)){const e=n.map(e=>{const s=u(t,e);if(e instanceof d.ToolbarPanel){const t=i?\"width_policy\":\"height_policy\";s.set_sizing(Object.assign(Object.assign({},s.sizing),{[t]:\"min\"}))}return s});let a;i?(a=new M.Row(e),a.set_sizing({width_policy:\"max\",height_policy:\"min\"})):(a=new M.Column(e),a.set_sizing({width_policy:\"min\",height_policy:\"max\"})),a.absolute=!0,s.push(a)}else s.push(u(t,n));return s},f=null!=this.model.min_border?this.model.min_border:0;this.layout.min_border={left:null!=this.model.min_border_left?this.model.min_border_left:f,top:null!=this.model.min_border_top?this.model.min_border_top:f,right:null!=this.model.min_border_right?this.model.min_border_right:f,bottom:null!=this.model.min_border_bottom?this.model.min_border_bottom:f};const b=new y.VStack,g=new y.VStack,m=new y.HStack,O=new y.HStack;b.children=w.reversed(p(\"above\",i)),g.children=p(\"below\",s),m.children=w.reversed(p(\"left\",n)),O.children=p(\"right\",a),b.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),g.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),m.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),O.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),this.layout.top_panel=b,this.layout.bottom_panel=g,this.layout.left_panel=m,this.layout.right_panel=O}get axis_views(){const t=[];for(const[,e]of this.renderer_views)e instanceof _.AxisView&&t.push(e);return t}set_cursor(t=\"default\"){this.canvas_view.el.style.cursor=t}set_toolbar_visibility(t){for(const e of this.visibility_callbacks)e(t)}update_dataranges(){const t=new Map,e=new Map;let i=!1;for(const[,t]of this.frame.x_ranges)t instanceof o.DataRange1d&&\"log\"==t.scale_hint&&(i=!0);for(const[,t]of this.frame.y_ranges)t instanceof o.DataRange1d&&\"log\"==t.scale_hint&&(i=!0);for(const[s,n]of this.renderer_views)if(n instanceof l.GlyphRendererView){const a=n.glyph.bounds();if(null!=a&&t.set(s,a),i){const t=n.glyph.log_bounds();null!=t&&e.set(s,t)}}let s=!1,n=!1;const{width:a,height:r}=this.frame.bbox;let h;!1!==this.model.match_aspect&&0!=a&&0!=r&&(h=1/this.model.aspect_scale*(a/r));for(const[,i]of this.frame.x_ranges){if(i instanceof o.DataRange1d){const n=\"log\"==i.scale_hint?e:t;i.update(n,0,this.model,h),i.follow&&(s=!0)}null!=i.bounds&&(n=!0)}for(const[,i]of this.frame.y_ranges){if(i instanceof o.DataRange1d){const n=\"log\"==i.scale_hint?e:t;i.update(n,1,this.model,h),i.follow&&(s=!0)}null!=i.bounds&&(n=!0)}if(s&&n){g.logger.warn(\"Follow enabled so bounds are unset.\");for(const[,t]of this.frame.x_ranges)t.bounds=null;for(const[,t]of this.frame.y_ranges)t.bounds=null}this.range_update_timestamp=Date.now()}push_state(t,e){const{history:i,index:s}=this.state,n=null!=i[s]?i[s].info:{},a=Object.assign(Object.assign(Object.assign({},this._initial_state_info),n),e);this.state.history=this.state.history.slice(0,this.state.index+1),this.state.history.push({type:t,info:a}),this.state.index=this.state.history.length-1,this.state_changed.emit()}clear_state(){this.state={history:[],index:-1},this.state_changed.emit()}can_undo(){return this.state.index>=0}can_redo(){return this.state.index=a.end&&(n=!0,a.end=t,(e||i)&&(a.start=t+l)),null!=o&&o<=a.start&&(n=!0,a.start=o,(e||i)&&(a.end=o-l))):(null!=t&&t>=a.start&&(n=!0,a.start=t,(e||i)&&(a.end=t+l)),null!=o&&o<=a.end&&(n=!0,a.end=o,(e||i)&&(a.start=o-l)))}}if(!(i&&n&&s))for(const[e,i]of t)e.have_updated_interactively=!0,e.start==i.start&&e.end==i.end||e.setv(i)}_get_weight_to_constrain_interval(t,e){const{min_interval:i}=t;let{max_interval:s}=t;if(null!=t.bounds&&\"auto\"!=t.bounds){const[e,i]=t.bounds;if(null!=e&&null!=i){const t=Math.abs(i-e);s=null!=s?Math.min(s,t):t}}let n=1;if(null!=i||null!=s){const a=Math.abs(t.end-t.start),o=Math.abs(e.end-e.start);i>0&&o0&&o>s&&(n=(s-a)/(o-a)),n=Math.max(0,Math.min(1,n))}return n}update_range(t,e=!1,i=!1,s=!0){this.pause();const{x_ranges:n,y_ranges:a}=this.frame;if(null==t){for(const[,t]of n)t.reset();for(const[,t]of a)t.reset();this.update_dataranges()}else{const o=[];for(const[e,i]of n)o.push([i,t.xrs.get(e)]);for(const[e,i]of a)o.push([i,t.yrs.get(e)]);i&&this._update_ranges_together(o),this._update_ranges_individually(o,e,i,s)}this.unpause()}reset_range(){this.update_range(null)}_invalidate_layout(){(()=>{for(const t of this.model.side_panels){if(this.renderer_views.get(t).layout.has_size_changed())return!0}return!1})()&&this.root.compute_layout()}get_renderer_views(){return this.computed_renderers.map(t=>this.renderer_views.get(t))}async build_renderer_views(){this.computed_renderers=[];const{above:t,below:e,left:i,right:s,center:n,renderers:a}=this.model;this.computed_renderers.push(...t,...e,...i,...s,...n,...a),null!=this._title&&this.computed_renderers.push(this._title),null!=this._toolbar&&this.computed_renderers.push(this._toolbar);for(const t of this.model.toolbar.tools)null!=t.overlay&&this.computed_renderers.push(t.overlay),this.computed_renderers.push(...t.synthetic_renderers);await p.build_views(this.renderer_views,this.computed_renderers,{parent:this})}async build_tool_views(){const t=this.model.toolbar.tools;(await p.build_views(this.tool_views,t,{parent:this})).map(t=>this.ui_event_bus.register_tool(t))}connect_signals(){super.connect_signals();const{x_ranges:t,y_ranges:e}=this.frame;for(const[,e]of t)this.connect(e.change,()=>{this._needs_layout=!0,this.request_paint()});for(const[,t]of e)this.connect(t.change,()=>{this._needs_layout=!0,this.request_paint()});const{plot_width:i,plot_height:s}=this.model.properties;this.on_change([i,s],()=>this.invalidate_layout());const{above:n,below:a,left:o,right:l,center:r,renderers:h}=this.model.properties;this.on_change([n,a,o,l,r,h],async()=>await this.build_renderer_views()),this.connect(this.model.toolbar.properties.tools.change,async()=>{await this.build_renderer_views(),await this.build_tool_views()}),this.connect(this.model.change,()=>this.request_paint()),this.connect(this.model.reset,()=>this.reset())}set_initial_range(){let t=!0;const{x_ranges:e,y_ranges:i}=this.frame,s=new Map,n=new Map;for(const[i,n]of e){const{start:e,end:a}=n;if(null==e||null==a||isNaN(e+a)){t=!1;break}s.set(i,{start:e,end:a})}if(t)for(const[e,s]of i){const{start:i,end:a}=s;if(null==i||null==a||isNaN(i+a)){t=!1;break}n.set(e,{start:i,end:a})}t?(this._initial_state_info.range={xrs:s,yrs:n},g.logger.debug(\"initial ranges set\")):g.logger.warn(\"could not set initial ranges\")}has_finished(){if(!super.has_finished())return!1;if(this.model.visible)for(const[,t]of this.renderer_views)if(!t.has_finished())return!1;return!0}after_layout(){if(super.after_layout(),this._needs_layout=!1,this.model.setv({inner_width:Math.round(this.frame.bbox.width),inner_height:Math.round(this.frame.bbox.height),outer_width:Math.round(this.layout.bbox.width),outer_height:Math.round(this.layout.bbox.height)},{no_change:!0}),!1!==this.model.match_aspect&&(this.pause(),this.update_dataranges(),this.unpause(!0)),!this._outer_bbox.equals(this.layout.bbox)){const{width:t,height:e}=this.layout.bbox;this.canvas_view.resize(t,e),this._outer_bbox=this.layout.bbox,this._invalidate_all=!0,this._needs_paint=!0}this._inner_bbox.equals(this.frame.inner_bbox)||(this._inner_bbox=this.layout.inner_bbox,this._needs_paint=!0),this._needs_paint&&this.paint()}repaint(){this._needs_layout&&this._invalidate_layout(),this.paint()}paint(){if(this.is_paused||!this.model.visible)return;g.logger.trace(\"PlotView.paint() for \"+this.model.id);const{document:t}=this.model;if(null!=t){const e=t.interactive_duration();e>=0&&e{t.interactive_duration()>this.model.lod_timeout&&t.interactive_stop(),this.request_paint()},this.model.lod_timeout):t.interactive_stop()}for(const[,t]of this.renderer_views)if(null==this.range_update_timestamp||t instanceof l.GlyphRendererView&&t.set_data_timestamp>this.range_update_timestamp){this.update_dataranges();break}let e=!1,i=!1;if(this._invalidate_all)e=!0,i=!0;else for(const t of this._invalidated_painters){const{level:s}=t.model;if(\"overlay\"!=s?e=!0:i=!0,e&&i)break}this._invalidated_painters.clear(),this._invalidate_all=!1;const s=[this.frame.bbox.left,this.frame.bbox.top,this.frame.bbox.width,this.frame.bbox.height],{primary:n,overlays:a}=this.canvas_view;e&&(n.prepare(),this.canvas_view.prepare_webgl(s),this.canvas_view.clear_webgl(),this._map_hook(n.ctx,s),this._paint_empty(n.ctx,s),this._paint_outline(n.ctx,s),this._paint_levels(n.ctx,\"image\",s,!0),this._paint_levels(n.ctx,\"underlay\",s,!0),this._paint_levels(n.ctx,\"glyph\",s,!0),this._paint_levels(n.ctx,\"guide\",s,!1),this._paint_levels(n.ctx,\"annotation\",s,!1),n.finish()),i&&(a.prepare(),this._paint_levels(a.ctx,\"overlay\",s,!1),a.finish()),null==this._initial_state_info.range&&this.set_initial_range(),this._needs_paint=!1}_paint_levels(t,e,i,s){for(const n of this.computed_renderers){if(n.level!=e)continue;const a=this.renderer_views.get(n);t.save(),(s||a.needs_clip)&&(t.beginPath(),t.rect(...i),t.clip()),a.render(),t.restore(),a.has_webgl&&a.needs_webgl_blit&&(this.canvas_view.blit_webgl(t),this.canvas_view.clear_webgl())}}_map_hook(t,e){}_paint_empty(t,e){const[i,s,n,a]=[0,0,this.layout.bbox.width,this.layout.bbox.height],[o,l,r,h]=e;this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(t),t.fillRect(i,s,n,a),t.clearRect(o,l,r,h)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(o,l,r,h))}_paint_outline(t,e){if(this.visuals.outline_line.doit){t.save(),this.visuals.outline_line.set_value(t);let[i,s,n,a]=e;i+n==this.layout.bbox.width&&(n-=1),s+a==this.layout.bbox.height&&(a-=1),t.strokeRect(i,s,n,a),t.restore()}}to_blob(){return this.canvas_view.to_blob()}export(t,e=!0){const i=\"png\"==t?\"canvas\":\"svg\",s=new a.CanvasLayer(i,e),{width:n,height:o}=this.layout.bbox;s.resize(n,o);const{canvas:l}=this.canvas_view.compose();return s.ctx.drawImage(l,0,0),s}serializable_state(){const t=super.serializable_state(),{children:e}=t,i=s(t,[\"children\"]),n=this.get_renderer_views().map(t=>t.serializable_state()).filter(t=>\"bbox\"in t);return Object.assign(Object.assign({},i),{children:[...e,...n]})}}i.PlotView=k,k.__name__=\"PlotView\"},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});var n=this&&this.__decorate||function(e,t,s,n){var _,a=arguments.length,o=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,s):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)o=Reflect.decorate(e,t,s,n);else for(var r=e.length-1;r>=0;r--)(_=e[r])&&(o=(a<3?_(o):a>3?_(t,s,o):_(t,s))||o);return a>3&&o&&Object.defineProperty(t,s,o),o};function _(e){return function(t){t.prototype.event_name=e}}class a{to_json(){const{event_name:e}=this;return{event_name:e,event_values:this._to_json()}}}s.BokehEvent=a,a.__name__=\"BokehEvent\";class o extends a{constructor(){super(...arguments),this.origin=null}_to_json(){return{model:this.origin}}}s.ModelEvent=o,o.__name__=\"ModelEvent\";let r=class extends a{_to_json(){return{}}};s.DocumentReady=r,r.__name__=\"DocumentReady\",s.DocumentReady=r=n([_(\"document_ready\")],r);let c=class extends o{};s.ButtonClick=c,c.__name__=\"ButtonClick\",s.ButtonClick=c=n([_(\"button_click\")],c);let l=class extends o{constructor(e){super(),this.item=e}_to_json(){const{item:e}=this;return Object.assign(Object.assign({},super._to_json()),{item:e})}};s.MenuItemClick=l,l.__name__=\"MenuItemClick\",s.MenuItemClick=l=n([_(\"menu_item_click\")],l);class i extends o{}s.UIEvent=i,i.__name__=\"UIEvent\";let u=class extends i{};s.LODStart=u,u.__name__=\"LODStart\",s.LODStart=u=n([_(\"lodstart\")],u);let d=class extends i{};s.LODEnd=d,d.__name__=\"LODEnd\",s.LODEnd=d=n([_(\"lodend\")],d);let h=class extends i{constructor(e,t){super(),this.geometry=e,this.final=t}_to_json(){const{geometry:e,final:t}=this;return Object.assign(Object.assign({},super._to_json()),{geometry:e,final:t})}};s.SelectionGeometry=h,h.__name__=\"SelectionGeometry\",s.SelectionGeometry=h=n([_(\"selectiongeometry\")],h);let m=class extends i{};s.Reset=m,m.__name__=\"Reset\",s.Reset=m=n([_(\"reset\")],m);class x extends i{constructor(e,t,s,n){super(),this.sx=e,this.sy=t,this.x=s,this.y=n}_to_json(){const{sx:e,sy:t,x:s,y:n}=this;return Object.assign(Object.assign({},super._to_json()),{sx:e,sy:t,x:s,y:n})}}s.PointEvent=x,x.__name__=\"PointEvent\";let p=class extends x{constructor(e,t,s,n,_,a){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.delta_x=_,this.delta_y=a}_to_json(){const{delta_x:e,delta_y:t}=this;return Object.assign(Object.assign({},super._to_json()),{delta_x:e,delta_y:t})}};s.Pan=p,p.__name__=\"Pan\",s.Pan=p=n([_(\"pan\")],p);let j=class extends x{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.scale=_}_to_json(){const{scale:e}=this;return Object.assign(Object.assign({},super._to_json()),{scale:e})}};s.Pinch=j,j.__name__=\"Pinch\",s.Pinch=j=n([_(\"pinch\")],j);let y=class extends x{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.rotation=_}_to_json(){const{rotation:e}=this;return Object.assign(Object.assign({},super._to_json()),{rotation:e})}};s.Rotate=y,y.__name__=\"Rotate\",s.Rotate=y=n([_(\"rotate\")],y);let P=class extends x{constructor(e,t,s,n,_){super(e,t,s,n),this.sx=e,this.sy=t,this.x=s,this.y=n,this.delta=_}_to_json(){const{delta:e}=this;return Object.assign(Object.assign({},super._to_json()),{delta:e})}};s.MouseWheel=P,P.__name__=\"MouseWheel\",s.MouseWheel=P=n([_(\"wheel\")],P);let v=class extends x{};s.MouseMove=v,v.__name__=\"MouseMove\",s.MouseMove=v=n([_(\"mousemove\")],v);let O=class extends x{};s.MouseEnter=O,O.__name__=\"MouseEnter\",s.MouseEnter=O=n([_(\"mouseenter\")],O);let b=class extends x{};s.MouseLeave=b,b.__name__=\"MouseLeave\",s.MouseLeave=b=n([_(\"mouseleave\")],b);let g=class extends x{};s.Tap=g,g.__name__=\"Tap\",s.Tap=g=n([_(\"tap\")],g);let E=class extends x{};s.DoubleTap=E,E.__name__=\"DoubleTap\",s.DoubleTap=E=n([_(\"doubletap\")],E);let M=class extends x{};s.Press=M,M.__name__=\"Press\",s.Press=M=n([_(\"press\")],M);let R=class extends x{};s.PressUp=R,R.__name__=\"PressUp\",s.PressUp=R=n([_(\"pressup\")],R);let f=class extends x{};s.PanStart=f,f.__name__=\"PanStart\",s.PanStart=f=n([_(\"panstart\")],f);let S=class extends x{};s.PanEnd=S,S.__name__=\"PanEnd\",s.PanEnd=S=n([_(\"panend\")],S);let D=class extends x{};s.PinchStart=D,D.__name__=\"PinchStart\",s.PinchStart=D=n([_(\"pinchstart\")],D);let k=class extends x{};s.PinchEnd=k,k.__name__=\"PinchEnd\",s.PinchEnd=k=n([_(\"pinchend\")],k);let L=class extends x{};s.RotateStart=L,L.__name__=\"RotateStart\",s.RotateStart=L=n([_(\"rotatestart\")],L);let C=class extends x{};s.RotateEnd=C,C.__name__=\"RotateEnd\",s.RotateEnd=C=n([_(\"rotateend\")],C)},\n", - " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=t(1),i=n.__importDefault(t(297)),r=t(15),a=t(19),h=t(72),_=n.__importStar(t(313)),o=t(315),c=t(9),l=t(8),p=t(32),u=t(302);class d{constructor(t,e,s){this.plot_view=t,this.toolbar=e,this.hit_area=s,this.pan_start=new r.Signal(this,\"pan:start\"),this.pan=new r.Signal(this,\"pan\"),this.pan_end=new r.Signal(this,\"pan:end\"),this.pinch_start=new r.Signal(this,\"pinch:start\"),this.pinch=new r.Signal(this,\"pinch\"),this.pinch_end=new r.Signal(this,\"pinch:end\"),this.rotate_start=new r.Signal(this,\"rotate:start\"),this.rotate=new r.Signal(this,\"rotate\"),this.rotate_end=new r.Signal(this,\"rotate:end\"),this.tap=new r.Signal(this,\"tap\"),this.doubletap=new r.Signal(this,\"doubletap\"),this.press=new r.Signal(this,\"press\"),this.pressup=new r.Signal(this,\"pressup\"),this.move_enter=new r.Signal(this,\"move:enter\"),this.move=new r.Signal(this,\"move\"),this.move_exit=new r.Signal(this,\"move:exit\"),this.scroll=new r.Signal(this,\"scroll\"),this.keydown=new r.Signal(this,\"keydown\"),this.keyup=new r.Signal(this,\"keyup\"),this.hammer=new i.default(this.hit_area,{touchAction:\"auto\",inputClass:i.default.TouchMouseInput}),this._configure_hammerjs(),this.hit_area.addEventListener(\"mousemove\",t=>this._mouse_move(t)),this.hit_area.addEventListener(\"mouseenter\",t=>this._mouse_enter(t)),this.hit_area.addEventListener(\"mouseleave\",t=>this._mouse_exit(t)),this.hit_area.addEventListener(\"contextmenu\",t=>this._context_menu(t)),this.hit_area.addEventListener(\"wheel\",t=>this._mouse_wheel(t)),document.addEventListener(\"keydown\",this),document.addEventListener(\"keyup\",this),this.menu=new u.ContextMenu([],{prevent_hide:t=>2==t.button&&t.target==this.hit_area}),this.hit_area.appendChild(this.menu.el)}destroy(){this.menu.remove(),this.hammer.destroy(),document.removeEventListener(\"keydown\",this),document.removeEventListener(\"keyup\",this)}handleEvent(t){\"keydown\"==t.type?this._key_down(t):\"keyup\"==t.type&&this._key_up(t)}_configure_hammerjs(){this.hammer.get(\"doubletap\").recognizeWith(\"tap\"),this.hammer.get(\"tap\").requireFailure(\"doubletap\"),this.hammer.get(\"doubletap\").dropRequireFailure(\"tap\"),this.hammer.on(\"doubletap\",t=>this._doubletap(t)),this.hammer.on(\"tap\",t=>this._tap(t)),this.hammer.on(\"press\",t=>this._press(t)),this.hammer.on(\"pressup\",t=>this._pressup(t)),this.hammer.get(\"pan\").set({direction:i.default.DIRECTION_ALL}),this.hammer.on(\"panstart\",t=>this._pan_start(t)),this.hammer.on(\"pan\",t=>this._pan(t)),this.hammer.on(\"panend\",t=>this._pan_end(t)),this.hammer.get(\"pinch\").set({enable:!0}),this.hammer.on(\"pinchstart\",t=>this._pinch_start(t)),this.hammer.on(\"pinch\",t=>this._pinch(t)),this.hammer.on(\"pinchend\",t=>this._pinch_end(t)),this.hammer.get(\"rotate\").set({enable:!0}),this.hammer.on(\"rotatestart\",t=>this._rotate_start(t)),this.hammer.on(\"rotate\",t=>this._rotate(t)),this.hammer.on(\"rotateend\",t=>this._rotate_end(t))}register_tool(t){const e=t.model.event_type;null!=e&&(l.isString(e)?this._register_tool(t,e):e.forEach((e,s)=>this._register_tool(t,e,s<1)))}_register_tool(t,e,s=!0){const n=t,{id:i}=n.model,r=t=>e=>{e.id==i&&t(e.e)},h=t=>e=>{t(e.e)};switch(e){case\"pan\":null!=n._pan_start&&n.connect(this.pan_start,r(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,r(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,r(n._pan_end.bind(n)));break;case\"pinch\":null!=n._pinch_start&&n.connect(this.pinch_start,r(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,r(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,r(n._pinch_end.bind(n)));break;case\"rotate\":null!=n._rotate_start&&n.connect(this.rotate_start,r(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,r(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,r(n._rotate_end.bind(n)));break;case\"move\":null!=n._move_enter&&n.connect(this.move_enter,r(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,r(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,r(n._move_exit.bind(n)));break;case\"tap\":null!=n._tap&&n.connect(this.tap,r(n._tap.bind(n)));break;case\"press\":null!=n._press&&n.connect(this.press,r(n._press.bind(n))),null!=n._pressup&&n.connect(this.pressup,r(n._pressup.bind(n)));break;case\"scroll\":null!=n._scroll&&n.connect(this.scroll,r(n._scroll.bind(n)));break;default:throw new Error(\"unsupported event_type: \"+e)}s&&(null!=n._doubletap&&n.connect(this.doubletap,h(n._doubletap.bind(n))),null!=n._keydown&&n.connect(this.keydown,h(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,h(n._keyup.bind(n))),p.is_mobile&&null!=n._scroll&&\"pinch\"==e&&(a.logger.debug(\"Registering scroll on touch screen\"),n.connect(this.scroll,r(n._scroll.bind(n)))))}_hit_test_renderers(t,e){const s=this.plot_view.get_renderer_views();for(const n of c.reversed(s)){const{level:s}=n.model;if((\"annotation\"==s||\"overlay\"==s)&&null!=n.interactive_hit&&n.interactive_hit(t,e))return n}return null}_hit_test_frame(t,e){return this.plot_view.frame.bbox.contains(t,e)}_hit_test_canvas(t,e){return this.plot_view.layout.bbox.contains(t,e)}_trigger(t,e,s){const n=this.toolbar.gestures,i=t.name.split(\":\")[0],r=this._hit_test_renderers(e.sx,e.sy),a=this._hit_test_canvas(e.sx,e.sy);switch(i){case\"move\":{const s=n[i].active;null!=s&&this.trigger(t,e,s.id);const h=this.toolbar.inspectors.filter(t=>t.active);let _=\"default\";null!=r?(_=r.cursor(e.sx,e.sy)||_,c.is_empty(h)||(t=this.move_exit)):this._hit_test_frame(e.sx,e.sy)&&(c.is_empty(h)||(_=\"crosshair\")),this.plot_view.set_cursor(_),this.plot_view.set_toolbar_visibility(a),h.map(s=>this.trigger(t,e,s.id));break}case\"tap\":{const{target:a}=s;if(null!=a&&a!=this.hit_area)return;null!=r&&null!=r.on_hit&&r.on_hit(e.sx,e.sy);const h=n[i].active;null!=h&&this.trigger(t,e,h.id);break}case\"scroll\":{const i=n[p.is_mobile?\"pinch\":\"scroll\"].active;null!=i&&(s.preventDefault(),s.stopPropagation(),this.trigger(t,e,i.id));break}case\"pan\":{const r=n[i].active;null!=r&&(s.preventDefault(),this.trigger(t,e,r.id));break}default:{const s=n[i].active;null!=s&&this.trigger(t,e,s.id)}}this._trigger_bokeh_event(e)}trigger(t,e,s=null){t.emit({id:s,e})}_trigger_bokeh_event(t){const e=(()=>{const{sx:e,sy:s}=t,n=this.plot_view.frame.x_scale.invert(e),i=this.plot_view.frame.y_scale.invert(s);switch(t.type){case\"wheel\":return new _.MouseWheel(e,s,n,i,t.delta);case\"mousemove\":return new _.MouseMove(e,s,n,i);case\"mouseenter\":return new _.MouseEnter(e,s,n,i);case\"mouseleave\":return new _.MouseLeave(e,s,n,i);case\"tap\":return new _.Tap(e,s,n,i);case\"doubletap\":return new _.DoubleTap(e,s,n,i);case\"press\":return new _.Press(e,s,n,i);case\"pressup\":return new _.PressUp(e,s,n,i);case\"pan\":return new _.Pan(e,s,n,i,t.deltaX,t.deltaY);case\"panstart\":return new _.PanStart(e,s,n,i);case\"panend\":return new _.PanEnd(e,s,n,i);case\"pinch\":return new _.Pinch(e,s,n,i,t.scale);case\"pinchstart\":return new _.PinchStart(e,s,n,i);case\"pinchend\":return new _.PinchEnd(e,s,n,i);case\"rotate\":return new _.Rotate(e,s,n,i,t.rotation);case\"rotatestart\":return new _.RotateStart(e,s,n,i);case\"rotateend\":return new _.RotateEnd(e,s,n,i);default:return}})();null!=e&&this.plot_view.model.trigger_event(e)}_get_sxy(t){const{pageX:e,pageY:s}=function(t){return\"undefined\"!=typeof TouchEvent&&t instanceof TouchEvent}(t)?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t,{left:n,top:i}=h.offset(this.hit_area);return{sx:e-n,sy:s-i}}_pan_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{deltaX:t.deltaX,deltaY:t.deltaY,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_pinch_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{scale:t.scale,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_rotate_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{rotation:t.rotation,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_tap_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_move_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_scroll_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{delta:o.getDeltaY(t),shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_key_event(t){return{type:t.type,keyCode:t.keyCode}}_pan_start(t){const e=this._pan_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)}_pan(t){this._trigger(this.pan,this._pan_event(t),t.srcEvent)}_pan_end(t){this._trigger(this.pan_end,this._pan_event(t),t.srcEvent)}_pinch_start(t){this._trigger(this.pinch_start,this._pinch_event(t),t.srcEvent)}_pinch(t){this._trigger(this.pinch,this._pinch_event(t),t.srcEvent)}_pinch_end(t){this._trigger(this.pinch_end,this._pinch_event(t),t.srcEvent)}_rotate_start(t){this._trigger(this.rotate_start,this._rotate_event(t),t.srcEvent)}_rotate(t){this._trigger(this.rotate,this._rotate_event(t),t.srcEvent)}_rotate_end(t){this._trigger(this.rotate_end,this._rotate_event(t),t.srcEvent)}_tap(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)}_doubletap(t){const e=this._tap_event(t);this._trigger_bokeh_event(e),this.trigger(this.doubletap,e)}_press(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)}_pressup(t){this._trigger(this.pressup,this._tap_event(t),t.srcEvent)}_mouse_enter(t){this._trigger(this.move_enter,this._move_event(t),t)}_mouse_move(t){this._trigger(this.move,this._move_event(t),t)}_mouse_exit(t){this._trigger(this.move_exit,this._move_event(t),t)}_mouse_wheel(t){this._trigger(this.scroll,this._scroll_event(t),t)}_context_menu(t){!this.menu.is_open&&this.menu.can_open&&t.preventDefault();const{sx:e,sy:s}=this._get_sxy(t);this.menu.toggle({left:e,top:s})}_key_down(t){this.trigger(this.keydown,this._key_event(t))}_key_up(t){this.trigger(this.keyup,this._key_event(t))}}s.UIEvents=d,d.__name__=\"UIEvents\"},\n", - " function _(e,t,n){\n", - " /*!\n", - " * jQuery Mousewheel 3.1.13\n", - " *\n", - " * Copyright jQuery Foundation and other contributors\n", - " * Released under the MIT license\n", - " * http://jquery.org/license\n", - " */\n", - " function r(e){const t=getComputedStyle(e).fontSize;return null!=t?parseInt(t,10):null}Object.defineProperty(n,\"__esModule\",{value:!0}),n.getDeltaY=function(e){let t=-e.deltaY;if(e.target instanceof HTMLElement)switch(e.deltaMode){case e.DOM_DELTA_LINE:t*=r((n=e.target).offsetParent||document.body)||r(n)||16;break;case e.DOM_DELTA_PAGE:t*=function(e){return e.clientHeight}(e.target)}var n;return t}},\n", - " function _(n,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const t=(\"undefined\"!=typeof window?window.requestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.webkitRequestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.mozRequestAnimationFrame:void 0)||(\"undefined\"!=typeof window?window.msRequestAnimationFrame:void 0)||function(n){return n(Date.now()),-1};o.throttle=function(n,e){let o=null,i=0,u=!1;return function(){return new Promise((d,w)=>{const r=function(){i=Date.now(),o=null,u=!1;try{n(),d()}catch(n){w(n)}},a=Date.now(),f=e-(a-i);f<=0&&!u?(null!=o&&clearTimeout(o),u=!0,t(r)):o||u?d():o=setTimeout(()=>t(r),f)})}}},\n", - " function _(t,e,h){Object.defineProperty(h,\"__esModule\",{value:!0});const i=t(213),o=t(214),r=t(79);class s extends o.Layoutable{constructor(){super(...arguments),this.min_border={left:0,top:0,right:0,bottom:0}}_measure(t){t=new i.Sizeable(t).bounded_to(this.sizing.size);const e=this.left_panel.measure({width:0,height:t.height}),h=Math.max(e.width,this.min_border.left),o=this.right_panel.measure({width:0,height:t.height}),r=Math.max(o.width,this.min_border.right),s=this.top_panel.measure({width:t.width,height:0}),n=Math.max(s.height,this.min_border.top),a=this.bottom_panel.measure({width:t.width,height:0}),g=Math.max(a.height,this.min_border.bottom),_=new i.Sizeable(t).shrink_by({left:h,right:r,top:n,bottom:g}),m=this.center_panel.measure(_);return{width:h+m.width+r,height:n+m.height+g,inner:{left:h,right:r,top:n,bottom:g},align:(()=>{const{width_policy:t,height_policy:e}=this.center_panel.sizing;return\"fixed\"!=t&&\"fixed\"!=e})()}}_set_geometry(t,e){super._set_geometry(t,e),this.center_panel.set_geometry(e);const h=this.left_panel.measure({width:0,height:t.height}),i=this.right_panel.measure({width:0,height:t.height}),o=this.top_panel.measure({width:t.width,height:0}),s=this.bottom_panel.measure({width:t.width,height:0}),{left:n,top:a,right:g,bottom:_}=e;this.top_panel.set_geometry(new r.BBox({left:n,right:g,bottom:a,height:o.height})),this.bottom_panel.set_geometry(new r.BBox({left:n,right:g,top:_,height:s.height})),this.left_panel.set_geometry(new r.BBox({top:a,bottom:_,right:n,width:h.width})),this.right_panel.set_geometry(new r.BBox({top:a,bottom:_,left:g,width:i.width}))}}h.BorderLayout=s,s.__name__=\"BorderLayout\"},\n", - " function _(i,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const l=i(213),a=i(214),r=i(8),o=Math.PI/2,h=\"left\",s=\"center\",n={above:{parallel:0,normal:-o,horizontal:0,vertical:-o},below:{parallel:0,normal:o,horizontal:0,vertical:o},left:{parallel:-o,normal:0,horizontal:0,vertical:-o},right:{parallel:o,normal:0,horizontal:0,vertical:o}},d={above:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"alphabetic\",vertical:\"middle\"},below:{justified:\"bottom\",parallel:\"hanging\",normal:\"middle\",horizontal:\"hanging\",vertical:\"middle\"},left:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"middle\",vertical:\"alphabetic\"},right:{justified:\"top\",parallel:\"alphabetic\",normal:\"middle\",horizontal:\"middle\",vertical:\"alphabetic\"}},_={above:{justified:s,parallel:s,normal:h,horizontal:s,vertical:h},below:{justified:s,parallel:s,normal:h,horizontal:s,vertical:h},left:{justified:s,parallel:s,normal:\"right\",horizontal:\"right\",vertical:s},right:{justified:s,parallel:s,normal:h,horizontal:h,vertical:s}},c={above:\"right\",below:h,left:\"right\",right:h},m={above:h,below:\"right\",left:\"right\",right:h};class g extends a.ContentLayoutable{constructor(i,t){switch(super(),this.side=i,this.obj=t,this.side){case\"above\":this._dim=0,this._normals=[0,-1];break;case\"below\":this._dim=0,this._normals=[0,1];break;case\"left\":this._dim=1,this._normals=[-1,0];break;case\"right\":this._dim=1,this._normals=[1,0]}this.is_horizontal?this.set_sizing({width_policy:\"max\",height_policy:\"fixed\"}):this.set_sizing({width_policy:\"fixed\",height_policy:\"max\"})}_content_size(){return new l.Sizeable(this.get_oriented_size())}get_oriented_size(){const{width:i,height:t}=this.obj.get_size();return!this.obj.rotate||this.is_horizontal?{width:i,height:t}:{width:t,height:i}}has_size_changed(){const{width:i,height:t}=this.get_oriented_size();return this.is_horizontal?this.bbox.height!=t:this.bbox.width!=i}get dimension(){return this._dim}get normals(){return this._normals}get is_horizontal(){return 0==this._dim}get is_vertical(){return 1==this._dim}apply_label_text_heuristics(i,t){const e=this.side;let l,a;r.isString(t)?(l=d[e][t],a=_[e][t]):t<0?(l=\"middle\",a=c[e]):(l=\"middle\",a=m[e]),i.textBaseline=l,i.textAlign=a}get_label_angle_heuristic(i){return n[this.side][i]}}e.SidePanel=g,g.__name__=\"SidePanel\"},\n", - " function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=t(15),o=t(72),a=t(37),n=t(312),p=new i.Signal0({},\"gmaps_ready\");class l extends n.PlotView{initialize(){this.pause(),super.initialize(),this._tiles_loaded=!1,this.zoom_count=0;const{zoom:t,lat:e,lng:s}=this.model.map_options;if(this.initial_zoom=t,this.initial_lat=e,this.initial_lng=s,\"undefined\"==typeof google||null==google.maps){if(void 0===window._bokeh_gmaps_callback){!function(t){window._bokeh_gmaps_callback=()=>p.emit();const e=document.createElement(\"script\");e.type=\"text/javascript\",e.src=`https://maps.googleapis.com/maps/api/js?v=3.36&key=${t}&callback=_bokeh_gmaps_callback`,document.body.appendChild(e)}(atob(this.model.api_key))}p.connect(()=>this.request_render())}this.unpause()}remove(){o.remove(this.map_el),super.remove()}update_range(t){if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),super.update_range(null);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(t.sdx||0,t.sdy||0),super.update_range(t);else if(null!=t.factor){if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),super.update_range(t);const e=t.factor<0?-1:1,s=this.map.getZoom(),i=s+e;if(i>=2){this.map.setZoom(i);const[t,e,,]=this._get_projected_bounds();e-t<0&&this.map.setZoom(s)}this.unpause()}this._set_bokeh_ranges()}_build_map(){const{maps:t}=google;this.map_types={satellite:t.MapTypeId.SATELLITE,terrain:t.MapTypeId.TERRAIN,roadmap:t.MapTypeId.ROADMAP,hybrid:t.MapTypeId.HYBRID};const e=this.model.map_options,s={center:new t.LatLng(e.lat,e.lng),zoom:e.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[e.map_type],scaleControl:e.scale_control,tilt:e.tilt};null!=e.styles&&(s.styles=JSON.parse(e.styles)),this.map_el=o.div({style:{position:\"absolute\"}}),this.canvas_view.add_underlay(this.map_el),this.map=new t.Map(this.map_el,s),t.event.addListener(this.map,\"idle\",()=>this._set_bokeh_ranges()),t.event.addListener(this.map,\"bounds_changed\",()=>this._set_bokeh_ranges()),t.event.addListenerOnce(this.map,\"tilesloaded\",()=>this._render_finished()),this.connect(this.model.properties.map_options.change,()=>this._update_options()),this.connect(this.model.map_options.properties.styles.change,()=>this._update_styles()),this.connect(this.model.map_options.properties.lat.change,()=>this._update_center(\"lat\")),this.connect(this.model.map_options.properties.lng.change,()=>this._update_center(\"lng\")),this.connect(this.model.map_options.properties.zoom.change,()=>this._update_zoom()),this.connect(this.model.map_options.properties.map_type.change,()=>this._update_map_type()),this.connect(this.model.map_options.properties.scale_control.change,()=>this._update_scale_control()),this.connect(this.model.map_options.properties.tilt.change,()=>this._update_tilt())}_render_finished(){this._tiles_loaded=!0,this.notify_finished()}has_finished(){return super.has_finished()&&!0===this._tiles_loaded}_get_latlon_bounds(){const t=this.map.getBounds(),e=t.getNorthEast(),s=t.getSouthWest();return[s.lng(),e.lng(),s.lat(),e.lat()]}_get_projected_bounds(){const[t,e,s,i]=this._get_latlon_bounds(),[o,n]=a.wgs84_mercator.compute(t,s),[p,l]=a.wgs84_mercator.compute(e,i);return[o,p,n,l]}_set_bokeh_ranges(){const[t,e,s,i]=this._get_projected_bounds();this.frame.x_range.setv({start:t,end:e}),this.frame.y_range.setv({start:s,end:i})}_update_center(t){const e=this.map.getCenter().toJSON();e[t]=this.model.map_options[t],this.map.setCenter(e),this._set_bokeh_ranges()}_update_map_type(){this.map.setOptions({mapTypeId:this.map_types[this.model.map_options.map_type]})}_update_scale_control(){this.map.setOptions({scaleControl:this.model.map_options.scale_control})}_update_tilt(){this.map.setOptions({tilt:this.model.map_options.tilt})}_update_options(){this._update_styles(),this._update_center(\"lat\"),this._update_center(\"lng\"),this._update_zoom(),this._update_map_type()}_update_styles(){this.map.setOptions({styles:JSON.parse(this.model.map_options.styles)})}_update_zoom(){this.map.setOptions({zoom:this.model.map_options.zoom}),this._set_bokeh_ranges()}_map_hook(t,e){if(null==this.map&&\"undefined\"!=typeof google&&null!=google.maps&&this._build_map(),null!=this.map_el){const[t,s,i,o]=e;this.map_el.style.top=s+\"px\",this.map_el.style.left=t+\"px\",this.map_el.style.width=i+\"px\",this.map_el.style.height=o+\"px\"}}_paint_empty(t,e){const s=this.layout.bbox.width,i=this.layout.bbox.height,[o,a,n,p]=e;t.clearRect(0,0,s,i),t.beginPath(),t.moveTo(0,0),t.lineTo(0,i),t.lineTo(s,i),t.lineTo(s,0),t.lineTo(0,0),t.moveTo(o,a),t.lineTo(o+n,a),t.lineTo(o+n,a+p),t.lineTo(o,a+p),t.lineTo(o,a),t.closePath(),null!=this.model.border_fill_color&&(t.fillStyle=this.model.border_fill_color,t.fill())}}s.GMapPlotView=l,l.__name__=\"GMapPlotView\"},\n", - " function _(a,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});var g=a(211);n.DataRange=g.DataRange;var R=a(210);n.DataRange1d=R.DataRange1d;var r=a(98);n.FactorRange=r.FactorRange;var t=a(99);n.Range=t.Range;var d=a(158);n.Range1d=d.Range1d},\n", - " function _(e,r,d){Object.defineProperty(d,\"__esModule\",{value:!0});var n=e(90);d.GlyphRenderer=n.GlyphRenderer;var R=e(116);d.GraphRenderer=R.GraphRenderer;var a=e(178);d.GuideRenderer=a.GuideRenderer;var G=e(70);d.Renderer=G.Renderer},\n", - " function _(a,e,l){Object.defineProperty(l,\"__esModule\",{value:!0});var c=a(209);l.CategoricalScale=c.CategoricalScale;var r=a(146);l.ContinuousScale=r.ContinuousScale;var n=a(145);l.LinearScale=n.LinearScale;var o=a(156);l.LinearInterpolationScale=o.LinearInterpolationScale;var i=a(157);l.LogScale=i.LogScale;var S=a(147);l.Scale=S.Scale},\n", - " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});e(1).__exportStar(e(118),o);var n=e(88);o.Selection=n.Selection},\n", - " function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});var o=a(325);r.ServerSentDataSource=o.ServerSentDataSource;var S=a(327);r.AjaxDataSource=S.AjaxDataSource;var u=a(85);r.ColumnDataSource=u.ColumnDataSource;var t=a(86);r.ColumnarDataSource=t.ColumnarDataSource;var c=a(114);r.CDSView=c.CDSView;var D=a(87);r.DataSource=D.DataSource;var v=a(328);r.GeoJSONDataSource=v.GeoJSONDataSource;var n=a(326);r.WebDataSource=n.WebDataSource},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const a=e(326);class s extends a.WebDataSource{constructor(e){super(e),this.initialized=!1}destroy(){super.destroy()}setup(){if(!this.initialized){this.initialized=!0;new EventSource(this.data_url).onmessage=e=>{this.load_data(JSON.parse(e.data),this.mode,this.max_size)}}}}i.ServerSentDataSource=s,s.__name__=\"ServerSentDataSource\"},\n", - " function _(e,t,a){Object.defineProperty(a,\"__esModule\",{value:!0});const r=e(1),s=e(85),i=r.__importStar(e(18));class n extends s.ColumnDataSource{constructor(e){super(e)}get_column(e){const t=this.data[e];return null!=t?t:[]}initialize(){super.initialize(),this.setup()}load_data(e,t,a){const{adapter:r}=this;let s;switch(s=null!=r?r.execute(this,{response:e}):e,t){case\"replace\":this.data=s;break;case\"append\":{const e=this.data;for(const t of this.columns()){const r=Array.from(e[t]),i=Array.from(s[t]);s[t]=r.concat(i).slice(-a)}this.data=s;break}}}static init_WebDataSource(){this.define({mode:[i.UpdateMode,\"replace\"],max_size:[i.Number],adapter:[i.Any,null],data_url:[i.String]})}}a.WebDataSource=n,n.__name__=\"WebDataSource\",n.init_WebDataSource()},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),a=t(326),r=t(19),o=s.__importStar(t(18)),n=t(13);class d extends a.WebDataSource{constructor(t){super(t),this.initialized=!1}static init_AjaxDataSource(){this.define({polling_interval:[o.Number],content_type:[o.String,\"application/json\"],http_headers:[o.Any,{}],method:[o.HTTPMethod,\"POST\"],if_modified:[o.Boolean,!1]})}destroy(){null!=this.interval&&clearInterval(this.interval),super.destroy()}setup(){if(!this.initialized&&(this.initialized=!0,this.get_data(this.mode),this.polling_interval)){const t=()=>this.get_data(this.mode,this.max_size,this.if_modified);this.interval=setInterval(t,this.polling_interval)}}get_data(t,e=0,i=!1){const s=this.prepare_request();s.addEventListener(\"load\",()=>this.do_load(s,t,e)),s.addEventListener(\"error\",()=>this.do_error(s)),s.send()}prepare_request(){const t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\"Content-Type\",this.content_type);const e=this.http_headers;for(const[i,s]of n.entries(e))t.setRequestHeader(i,s);return t}do_load(t,e,i){if(200===t.status){const s=JSON.parse(t.responseText);this.load_data(s,e,i)}}do_error(t){r.logger.error(`Failed to fetch JSON from ${this.data_url} with code ${t.status}`)}}i.AjaxDataSource=d,d.__name__=\"AjaxDataSource\",d.init_AjaxDataSource()},\n", - " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(1),n=e(86),s=e(19),a=r.__importStar(e(18)),i=e(9),l=e(13);function c(e){return null!=e?e:NaN}class _ extends n.ColumnarDataSource{constructor(e){super(e)}static init_GeoJSONDataSource(){this.define({geojson:[a.Any]}),this.internal({data:[a.Any,{}]})}initialize(){super.initialize(),this._update_data()}connect_signals(){super.connect_signals(),this.connect(this.properties.geojson.change,()=>this._update_data())}_update_data(){this.data=this.geojson_to_column_data()}_get_new_list_array(e){return i.range(0,e).map(e=>[])}_get_new_nan_array(e){return i.range(0,e).map(e=>NaN)}_add_properties(e,t,o,r){var n;const s=null!==(n=e.properties)&&void 0!==n?n:{};for(const[e,n]of l.entries(s))t.hasOwnProperty(e)||(t[e]=this._get_new_nan_array(r)),t[e][o]=c(n)}_add_geometry(e,t,o){function r(e,t){return e.concat([[NaN,NaN,NaN]]).concat(t)}switch(e.type){case\"Point\":{const[r,n,s]=e.coordinates;t.x[o]=r,t.y[o]=n,t.z[o]=c(s);break}case\"LineString\":{const{coordinates:r}=e;for(let e=0;e1&&s.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\");const r=e.coordinates[0];for(let e=0;e1&&s.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\"),n.push(t[0]);const a=n.reduce(r);for(let e=0;ethis.get_resolution(t))}_computed_initial_resolution(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size}is_valid_tile(t,e,i){return!(!this.wrap_around&&(t<0||t>=2**i))&&!(e<0||e>=2**i)}parent_by_tile_xyz(t,e,i){const _=this.tile_xyz_to_quadkey(t,e,i),s=_.substring(0,_.length-1);return this.quadkey_to_tile_xyz(s)}get_resolution(t){return this._computed_initial_resolution()/2**t}get_resolution_by_extent(t,e,i){return[(t[2]-t[0])/i,(t[3]-t[1])/e]}get_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s);let o=0;for(const t of this._resolutions){if(r>t){if(0==o)return 0;if(o>0)return o-1}o+=1}return o-1}get_closest_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s),o=this._resolutions.reduce((function(t,e){return Math.abs(e-r)e?(u=o-s,a*=t):(u*=e,a=n-r)}const h=(u-(o-s))/2,c=(a-(n-r))/2;return[s-h,r-c,o+h,n+c]}tms_to_wmts(t,e,i){return[t,2**i-1-e,i]}wmts_to_tms(t,e,i){return[t,2**i-1-e,i]}pixels_to_meters(t,e,i){const _=this.get_resolution(i);return[t*_-this.x_origin_offset,e*_-this.y_origin_offset]}meters_to_pixels(t,e,i){const _=this.get_resolution(i);return[(t+this.x_origin_offset)/_,(e+this.y_origin_offset)/_]}pixels_to_tile(t,e){let i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;return[i,Math.max(Math.ceil(e/this.tile_size)-1,0)]}pixels_to_raster(t,e,i){return[t,(this.tile_size<=l;t--)for(let i=n;i<=u;i++)this.is_valid_tile(i,t,e)&&h.push([i,t,e,this.get_tile_meter_bounds(i,t,e)]);return this.sort_tiles_from_center(h,[n,l,u,a]),h}quadkey_to_tile_xyz(t){let e=0,i=0;const _=t.length;for(let s=_;s>0;s--){const r=1<0;s--){const i=1<0;)if(s=s.substring(0,s.length-1),[t,e,i]=this.quadkey_to_tile_xyz(s),[t,e,i]=this.denormalize_xyz(t,e,i,_),this.tiles.has(this.tile_xyz_to_key(t,e,i)))return[t,e,i];return[0,0,0]}normalize_xyz(t,e,i){if(this.wrap_around){const _=2**i;return[(t%_+_)%_,e,i]}return[t,e,i]}denormalize_xyz(t,e,i,_){return[t+_*2**i,e,i]}denormalize_meters(t,e,i,_){return[t+2*_*Math.PI*6378137,e]}calculate_world_x_by_tile_xyz(t,e,i){return Math.floor(t/2**i)}}i.MercatorTileSource=l,l.__name__=\"MercatorTileSource\",l.init_MercatorTileSource()},\n", - " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1),n=e(81),s=e(13),l=i.__importStar(e(18));class a extends n.Model{constructor(e){super(e)}static init_TileSource(){this.define({url:[l.String,\"\"],tile_size:[l.Number,256],max_zoom:[l.Number,30],min_zoom:[l.Number,0],extra_url_vars:[l.Any,{}],attribution:[l.String,\"\"],x_origin_offset:[l.Number],y_origin_offset:[l.Number],initial_resolution:[l.Number]})}initialize(){super.initialize(),this.tiles=new Map,this._normalize_case()}connect_signals(){super.connect_signals(),this.connect(this.change,()=>this._clear_cache())}string_lookup_replace(e,t){let r=e;for(const[e,i]of s.entries(t))r=r.replace(`{${e}}`,i);return r}_normalize_case(){const e=this.url.replace(\"{x}\",\"{X}\").replace(\"{y}\",\"{Y}\").replace(\"{z}\",\"{Z}\").replace(\"{q}\",\"{Q}\").replace(\"{xmin}\",\"{XMIN}\").replace(\"{ymin}\",\"{YMIN}\").replace(\"{xmax}\",\"{XMAX}\").replace(\"{ymax}\",\"{YMAX}\");this.url=e}_clear_cache(){this.tiles=new Map}tile_xyz_to_key(e,t,r){return`${e}:${t}:${r}`}key_to_tile_xyz(e){const[t,r,i]=e.split(\":\").map(e=>parseInt(e));return[t,r,i]}sort_tiles_from_center(e,t){const[r,i,n,s]=t,l=(n-r)/2+r,a=(s-i)/2+i;e.sort((function(e,t){return Math.sqrt((l-e[0])**2+(a-e[1])**2)-Math.sqrt((l-t[0])**2+(a-t[1])**2)}))}get_image_url(e,t,r){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",t.toString()).replace(\"{Z}\",r.toString())}}r.TileSource=a,a.__name__=\"TileSource\",a.init_TileSource()},\n", - " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const n=e(37);function o(e,t){return n.wgs84_mercator.compute(e,t)}function c(e,t){return n.wgs84_mercator.invert(e,t)}r.geographic_to_meters=o,r.meters_to_geographic=c,r.geographic_extent_to_meters=function(e){const[t,r,n,c]=e,[_,u]=o(t,r),[i,g]=o(n,c);return[_,u,i,g]},r.meters_extent_to_geographic=function(e){const[t,r,n,o]=e,[_,u]=c(t,r),[i,g]=c(n,o);return[_,u,i,g]}},\n", - " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const _=e(333);class s extends _.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const _=this.string_lookup_replace(this.url,this.extra_url_vars),[s,o,u]=this.tms_to_wmts(e,t,r),c=this.tile_xyz_to_quadkey(s,o,u);return _.replace(\"{Q}\",c)}}r.QUADKEYTileSource=s,s.__name__=\"QUADKEYTileSource\"},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=t(1),_=t(338),n=t(91),a=t(158),r=t(72),o=s.__importStar(t(18)),h=t(251),l=t(9),d=t(8),m=t(89),c=t(85),g=t(339),p=s.__importDefault(t(340));class u extends n.DataRendererView{initialize(){this._tiles=[],super.initialize()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.request_render()),this.connect(this.model.tile_source.change,()=>this.request_render())}styles(){return[...super.styles(),p.default]}get_extent(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]}get map_plot(){return this.plot_model}get map_canvas(){return this.layer.ctx}get map_frame(){return this.plot_view.frame}get x_range(){return this.map_plot.x_range}get y_range(){return this.map_plot.y_range}_set_data(){this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0}_update_attribution(){null!=this.attribution_el&&r.removeElement(this.attribution_el);const{attribution:t}=this.model.tile_source;if(d.isString(t)&&t.length>0){const{layout:e,frame:i}=this.plot_view,s=e.bbox.width-i.bbox.right,_=e.bbox.height-i.bbox.bottom,n=i.bbox.width;this.attribution_el=r.div({class:g.bk_tile_attribution,style:{position:\"absolute\",right:s+\"px\",bottom:_+\"px\",\"max-width\":n-4+\"px\",padding:\"2px\",\"background-color\":\"rgba(255,255,255,0.5)\",\"font-size\":\"9px\",\"line-height\":\"1.05\",\"white-space\":\"nowrap\",overflow:\"hidden\",\"text-overflow\":\"ellipsis\"}}),this.plot_view.canvas_view.add_event(this.attribution_el),this.attribution_el.innerHTML=t,this.attribution_el.title=this.attribution_el.textContent.replace(/\\s*\\n\\s*/g,\" \")}}_map_data(){this.initial_extent=this.get_extent();const t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof a.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof a.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._update_attribution()}_create_tile(t,e,i,s,_=!1){const[n,a,r]=this.model.tile_source.normalize_xyz(t,e,i),o={img:void 0,tile_coords:[t,e,i],normalized_coords:[n,a,r],quadkey:this.model.tile_source.tile_xyz_to_quadkey(t,e,i),cache_key:this.model.tile_source.tile_xyz_to_key(t,e,i),bounds:s,loaded:!1,finished:!1,x_coord:s[0],y_coord:s[3]},l=this.model.tile_source.get_image_url(n,a,r);new h.ImageLoader(l,{loaded:t=>{Object.assign(o,{img:t,loaded:!0}),_?(o.finished=!0,this.notify_finished()):this.request_render()},failed(){o.finished=!0}}),this.model.tile_source.tiles.set(o.cache_key,o),this._tiles.push(o)}_enforce_aspect_ratio(){if(this._last_height!==this.map_frame.bbox.height||this._last_width!==this.map_frame.bbox.width){const t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame.bbox.height,this.map_frame.bbox.width),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame.bbox.height,this.map_frame.bbox.width,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame.bbox.height,this._last_width=this.map_frame.bbox.width}}has_finished(){if(!super.has_finished())return!1;if(0===this._tiles.length)return!1;for(const t of this._tiles)if(!t.finished)return!1;return!0}_render(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()}_draw_tile(t){const e=this.model.tile_source.tiles.get(t);if(null!=e&&e.loaded){const[[t],[i]]=this.coordinates.map_to_screen([e.bounds[0]],[e.bounds[3]]),[[s],[_]]=this.coordinates.map_to_screen([e.bounds[2]],[e.bounds[1]]),n=s-t,a=_-i,r=t,o=i,h=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,r,o,n,a),this.map_canvas.setImageSmoothingEnabled(h),e.finished=!0}}_set_rect(){const t=this.plot_model.properties.outline_line_width.value(),e=this.map_frame.bbox.left+t/2,i=this.map_frame.bbox.top+t/2,s=this.map_frame.bbox.width-t,_=this.map_frame.bbox.height-t;this.map_canvas.rect(e,i,s,_),this.map_canvas.clip()}_render_tiles(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(const e of t)this._draw_tile(e);this.map_canvas.restore()}_prefetch_tiles(){const{tile_source:t}=this.model,e=this.get_extent(),i=this.map_frame.bbox.height,s=this.map_frame.bbox.width,_=this.model.tile_source.get_level_by_extent(e,i,s),n=this.model.tile_source.get_tiles_by_extent(e,_);for(let e=0,i=Math.min(10,n.length);ei&&(s=this.extent,r=i,o=!0),o&&(this.x_range.setv({x_range:{start:s[0],end:s[2]}}),this.y_range.setv({start:s[1],end:s[3]})),this.extent=s;const h=t.get_tiles_by_extent(s,r),d=[],m=[],c=[],g=[];for(const e of h){const[i,s,n]=e,a=t.tile_xyz_to_key(i,s,n),r=t.tiles.get(a);if(null!=r&&r.loaded)m.push(a);else if(this.model.render_parents){const[e,a,r]=t.get_closest_parent_by_tile_xyz(i,s,n),o=t.tile_xyz_to_key(e,a,r),h=t.tiles.get(o);if(null!=h&&h.loaded&&!l.includes(c,o)&&c.push(o),_){const e=t.children_by_tile_xyz(i,s,n);for(const[i,s,_]of e){const e=t.tile_xyz_to_key(i,s,_);t.tiles.has(e)&&g.push(e)}}}null==r&&d.push(e)}this._render_tiles(c),this._render_tiles(g),this._render_tiles(m),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout(()=>this._fetch_tiles(d),65)}}i.TileRendererView=u,u.__name__=\"TileRendererView\";class b extends n.DataRenderer{constructor(t){super(t),this._selection_manager=new m.SelectionManager({source:new c.ColumnDataSource})}static init_TileRenderer(){this.prototype.default_view=u,this.define({alpha:[o.Number,1],smoothing:[o.Boolean,!0],tile_source:[o.Instance,()=>new _.WMTSTileSource],render_parents:[o.Boolean,!0]})}get_selection_manager(){return this._selection_manager}}i.TileRenderer=b,b.__name__=\"TileRenderer\",b.init_TileRenderer()},\n", - " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const o=e(333);class s extends o.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const o=this.string_lookup_replace(this.url,this.extra_url_vars),[s,c,_]=this.tms_to_wmts(e,t,r);return o.replace(\"{X}\",s.toString()).replace(\"{Y}\",c.toString()).replace(\"{Z}\",_.toString())}}r.WMTSTileSource=s,s.__name__=\"WMTSTileSource\"},\n", - " function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0}),i.bk_tile_attribution=\"bk-tile-attribution\"},\n", - " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});n.default=\"\\n.bk-root .bk-tile-attribution a {\\n color: black;\\n}\\n\"},\n", - " function _(e,r,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(333);class c extends o.MercatorTileSource{constructor(e){super(e)}get_image_url(e,r,t){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",r.toString()).replace(\"{Z}\",t.toString())}}t.TMSTileSource=c,c.__name__=\"TMSTileSource\"},\n", - " function _(e,r,a){Object.defineProperty(a,\"__esModule\",{value:!0});var t=e(343);a.CanvasTexture=t.CanvasTexture;var u=e(345);a.ImageURLTexture=u.ImageURLTexture;var v=e(344);a.Texture=v.Texture},\n", - " function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const r=t(1),c=t(344),s=r.__importStar(t(18)),i=t(29);class a extends c.Texture{constructor(t){super(t)}static init_CanvasTexture(){this.define({code:[s.String]})}get func(){const t=i.use_strict(this.code);return new Function(\"ctx\",\"color\",\"scale\",\"weight\",t)}get_pattern(t,e,n){return r=>{const c=document.createElement(\"canvas\");c.width=e,c.height=e;const s=c.getContext(\"2d\");return this.func.call(this,s,t,e,n),r.createPattern(c,this.repetition)}}}n.CanvasTexture=a,a.__name__=\"CanvasTexture\",a.init_CanvasTexture()},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1),n=e(81),o=r.__importStar(e(18));class _ extends n.Model{constructor(e){super(e)}static init_Texture(){this.define({repetition:[o.TextureRepetition,\"repeat\"]})}onload(e){e()}}i.Texture=_,_.__name__=\"Texture\",_.init_Texture()},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1),a=e(344),n=r.__importStar(e(18)),s=e(251);class o extends a.Texture{constructor(e){super(e)}static init_ImageURLTexture(){this.define({url:[n.String]})}initialize(){super.initialize(),this._loader=new s.ImageLoader(this.url)}get_pattern(e,t,i){return e=>this._loader.finished?e.createPattern(this._loader.image,this.repetition):null}onload(e){this._loader.promise.then(()=>e())}}i.ImageURLTexture=o,o.__name__=\"ImageURLTexture\",o.init_ImageURLTexture()},\n", - " function _(o,l,T){Object.defineProperty(T,\"__esModule\",{value:!0});var a=o(307);T.ActionTool=a.ActionTool;var r=o(347);T.CustomAction=r.CustomAction;var e=o(308);T.HelpTool=e.HelpTool;var v=o(348);T.RedoTool=v.RedoTool;var t=o(349);T.ResetTool=t.ResetTool;var n=o(350);T.SaveTool=n.SaveTool;var s=o(351);T.UndoTool=s.UndoTool;var i=o(352);T.ZoomInTool=i.ZoomInTool;var P=o(355);T.ZoomOutTool=P.ZoomOutTool;var c=o(296);T.ButtonTool=c.ButtonTool;var d=o(356);T.EditTool=d.EditTool;var u=o(357);T.BoxEditTool=u.BoxEditTool;var y=o(358);T.FreehandDrawTool=y.FreehandDrawTool;var m=o(359);T.PointDrawTool=m.PointDrawTool;var x=o(360);T.PolyDrawTool=x.PolyDrawTool;var B=o(361);T.PolyTool=B.PolyTool;var S=o(362);T.PolyEditTool=S.PolyEditTool;var b=o(363);T.BoxSelectTool=b.BoxSelectTool;var h=o(366);T.BoxZoomTool=h.BoxZoomTool;var E=o(306);T.GestureTool=E.GestureTool;var Z=o(367);T.LassoSelectTool=Z.LassoSelectTool;var p=o(369);T.LineEditTool=p.LineEditTool;var w=o(371);T.PanTool=w.PanTool;var C=o(368);T.PolySelectTool=C.PolySelectTool;var D=o(372);T.RangeTool=D.RangeTool;var H=o(364);T.SelectTool=H.SelectTool;var R=o(373);T.TapTool=R.TapTool;var A=o(374);T.WheelPanTool=A.WheelPanTool;var I=o(375);T.WheelZoomTool=I.WheelZoomTool;var L=o(376);T.CrosshairTool=L.CrosshairTool;var W=o(377);T.CustomJSHover=W.CustomJSHover;var O=o(378);T.HoverTool=O.HoverTool;var _=o(295);T.InspectTool=_.InspectTool;var f=o(298);T.Tool=f.Tool;var g=o(379);T.ToolProxy=g.ToolProxy;var F=o(294);T.Toolbar=F.Toolbar;var G=o(305);T.ToolbarBase=G.ToolbarBase;var J=o(380);T.ProxyToolbar=J.ProxyToolbar;var U=o(380);T.ToolbarBox=U.ToolbarBox},\n", - " function _(t,o,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),s=t(307),e=n.__importStar(t(18)),c=t(299);class _ extends s.ActionToolButtonView{css_classes(){return super.css_classes().concat(c.bk_toolbar_button_custom_action)}}i.CustomActionButtonView=_,_.__name__=\"CustomActionButtonView\";class l extends s.ActionToolView{doit(){null!=this.model.callback&&this.model.callback.execute(this.model)}}i.CustomActionView=l,l.__name__=\"CustomActionView\";class u extends s.ActionTool{constructor(t){super(t),this.tool_name=\"Custom Action\",this.button_view=_}static init_CustomAction(){this.prototype.default_view=l,this.define({action_tooltip:[e.String,\"Perform a Custom Action\"],callback:[e.Any],icon:[e.String]})}get tooltip(){return this.action_tooltip}}i.CustomAction=u,u.__name__=\"CustomAction\",u.init_CustomAction()},\n", - " function _(o,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const i=o(307),s=o(309);class n extends i.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state_changed,()=>this.model.disabled=!this.plot_view.can_redo())}doit(){this.plot_view.redo()}}t.RedoToolView=n,n.__name__=\"RedoToolView\";class _ extends i.ActionTool{constructor(o){super(o),this.tool_name=\"Redo\",this.icon=s.bk_tool_icon_redo}static init_RedoTool(){this.prototype.default_view=n,this.override({disabled:!0}),this.register_alias(\"redo\",()=>new _)}}t.RedoTool=_,_.__name__=\"RedoTool\",_.init_RedoTool()},\n", - " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(307),i=e(309);class _ extends s.ActionToolView{doit(){this.plot_view.reset()}}o.ResetToolView=_,_.__name__=\"ResetToolView\";class l extends s.ActionTool{constructor(e){super(e),this.tool_name=\"Reset\",this.icon=i.bk_tool_icon_reset}static init_ResetTool(){this.prototype.default_view=_,this.register_alias(\"reset\",()=>new l)}}o.ResetTool=l,l.__name__=\"ResetTool\",l.init_ResetTool()},\n", - " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const a=e(307),i=e(309);class n extends a.ActionToolView{async copy(){const e=await this.plot_view.to_blob(),o=new ClipboardItem({[e.type]:e});await navigator.clipboard.write([o])}async save(e){const o=await this.plot_view.to_blob(),t=document.createElement(\"a\");t.href=URL.createObjectURL(o),t.download=e,t.target=\"_blank\",t.dispatchEvent(new MouseEvent(\"click\"))}doit(e=\"save\"){switch(e){case\"save\":this.save(\"bokeh_plot\");break;case\"copy\":this.copy()}}}t.SaveToolView=n,n.__name__=\"SaveToolView\";class s extends a.ActionTool{constructor(e){super(e),this.tool_name=\"Save\",this.icon=i.bk_tool_icon_save}static init_SaveTool(){this.prototype.default_view=n,this.register_alias(\"save\",()=>new s)}get menu(){return[{icon:\"bk-tool-icon-copy-to-clipboard\",tooltip:\"Copy image to clipboard\",if:()=>\"undefined\"!=typeof ClipboardItem,handler:()=>{this.do.emit(\"copy\")}}]}}t.SaveTool=s,s.__name__=\"SaveTool\",s.init_SaveTool()},\n", - " function _(o,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=o(307),i=o(309);class s extends n.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state_changed,()=>this.model.disabled=!this.plot_view.can_undo())}doit(){this.plot_view.undo()}}e.UndoToolView=s,s.__name__=\"UndoToolView\";class _ extends n.ActionTool{constructor(o){super(o),this.tool_name=\"Undo\",this.icon=i.bk_tool_icon_undo}static init_UndoTool(){this.prototype.default_view=s,this.override({disabled:!0}),this.register_alias(\"undo\",()=>new _)}}e.UndoTool=_,_.__name__=\"UndoTool\",_.init_UndoTool()},\n", - " function _(o,i,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=o(353),s=o(309);class t extends n.ZoomBaseTool{constructor(o){super(o),this.sign=1,this.tool_name=\"Zoom In\",this.icon=s.bk_tool_icon_zoom_in}static init_ZoomInTool(){this.prototype.default_view=n.ZoomBaseToolView,this.register_alias(\"zoom_in\",()=>new t({dimensions:\"both\"})),this.register_alias(\"xzoom_in\",()=>new t({dimensions:\"width\"})),this.register_alias(\"yzoom_in\",()=>new t({dimensions:\"height\"}))}}e.ZoomInTool=t,t.__name__=\"ZoomInTool\",t.init_ZoomInTool()},\n", - " function _(o,t,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=o(1),s=o(307),n=o(354),_=i.__importStar(o(18));class l extends s.ActionToolView{doit(){const o=this.plot_view.frame,t=this.model.dimensions,e=\"width\"==t||\"both\"==t,i=\"height\"==t||\"both\"==t,s=n.scale_range(o,this.model.sign*this.model.factor,e,i);this.plot_view.push_state(\"zoom_out\",{range:s}),this.plot_view.update_range(s,!1,!0),this.model.document&&this.model.document.interactive_start(this.plot_model)}}e.ZoomBaseToolView=l,l.__name__=\"ZoomBaseToolView\";class a extends s.ActionTool{constructor(o){super(o)}static init_ZoomBaseTool(){this.prototype.default_view=l,this.define({factor:[_.Percent,.1],dimensions:[_.Dimensions,\"both\"]})}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}e.ZoomBaseTool=a,a.__name__=\"ZoomBaseTool\",a.init_ZoomBaseTool()},\n", - " function _(n,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=n(10);function r(n,e,t){const[o,r]=[n.start,n.end],s=null!=t?t:(r+o)/2;return[o-(o-s)*e,r-(r-s)*e]}function s(n,[e,t]){const o=new Map;for(const[r,s]of n){const[n,c]=s.r_invert(e,t);o.set(r,{start:n,end:c})}return o}t.scale_highlow=r,t.get_info=s,t.scale_range=function(n,e,t=!0,c=!0,l){e=o.clamp(e,-.9,.9);const a=t?e:0,[u,_]=r(n.bbox.h_range,a,null!=l?l.x:void 0),i=s(n.x_scales,[u,_]),f=c?e:0,[d,b]=r(n.bbox.v_range,f,null!=l?l.y:void 0);return{xrs:i,yrs:s(n.y_scales,[d,b]),factor:e}}},\n", - " function _(o,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const e=o(353),s=o(309);class n extends e.ZoomBaseTool{constructor(o){super(o),this.sign=-1,this.tool_name=\"Zoom Out\",this.icon=s.bk_tool_icon_zoom_out}static init_ZoomOutTool(){this.prototype.default_view=e.ZoomBaseToolView,this.register_alias(\"zoom_out\",()=>new n({dimensions:\"both\"})),this.register_alias(\"xzoom_out\",()=>new n({dimensions:\"width\"})),this.register_alias(\"yzoom_out\",()=>new n({dimensions:\"height\"}))}}i.ZoomOutTool=n,n.__name__=\"ZoomOutTool\",n.init_ZoomOutTool()},\n", - " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(1).__importStar(e(18)),i=e(9),n=e(8),r=e(11),_=e(306);class c extends _.GestureToolView{constructor(){super(...arguments),this._mouse_in_frame=!0}_select_mode(e){const{shiftKey:t,ctrlKey:o}=e;return t||o?t&&!o?\"append\":!t&&o?\"intersect\":t&&o?\"subtract\":void r.unreachable():\"replace\"}_move_enter(e){this._mouse_in_frame=!0}_move_exit(e){this._mouse_in_frame=!1}_map_drag(e,t,o){if(!this.plot_view.frame.bbox.contains(e,t))return null;const s=this.plot_view.renderer_views.get(o);return[s.coordinates.x_scale.invert(e),s.coordinates.y_scale.invert(t)]}_delete_selected(e){const t=e.data_source,o=t.selected.indices;o.sort();for(const e of t.columns()){const s=t.get_array(e);for(let e=0;ethis._show_vertices())}this._initialized=!0}}deactivate(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()}}s.PolyDrawToolView=d,d.__name__=\"PolyDrawToolView\";class l extends n.PolyTool{constructor(e){super(e),this.tool_name=\"Polygon Draw Tool\",this.icon=_.bk_tool_icon_poly_draw,this.event_type=[\"pan\",\"tap\",\"move\"],this.default_order=3}static init_PolyDrawTool(){this.prototype.default_view=d,this.define({drag:[a.Boolean,!0],num_objects:[a.Int,0]})}}s.PolyDrawTool=l,l.__name__=\"PolyDrawTool\",l.init_PolyDrawTool()},\n", - " function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const o=e(1).__importStar(e(18)),i=e(8),s=e(356);class _ extends s.EditToolView{_set_vertices(e,t){const r=this.model.vertex_renderer.glyph,o=this.model.vertex_renderer.data_source,[s,_]=[r.x.field,r.y.field];s&&(i.isArray(e)?o.data[s]=e:r.x={value:e}),_&&(i.isArray(t)?o.data[_]=t:r.y={value:t}),this._emit_cds_changes(o,!0,!0,!1)}_hide_vertices(){this._set_vertices([],[])}_snap_to_vertex(e,t,r){if(this.model.vertex_renderer){const o=this._select_event(e,\"replace\",[this.model.vertex_renderer]),i=this.model.vertex_renderer.data_source,s=this.model.vertex_renderer.glyph,[_,l]=[s.x.field,s.y.field];if(o.length){const e=i.selected.indices[0];_&&(t=i.data[_][e]),l&&(r=i.data[l][e]),i.selection_manager.clear()}}return[t,r]}}r.PolyToolView=_,_.__name__=\"PolyToolView\";class l extends s.EditTool{constructor(e){super(e)}static init_PolyTool(){this.prototype.default_view=_,this.define({vertex_renderer:[o.Instance]})}}r.PolyTool=l,l.__name__=\"PolyTool\",l.init_PolyTool()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const r=e(72),i=e(8),_=e(361),d=e(309);class n extends _.PolyToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(e){if(!this.model.active)return;const t=this._map_drag(e.sx,e.sy,this.model.vertex_renderer);if(null==t)return;const[s,r]=t,i=this._select_event(e,\"replace\",[this.model.vertex_renderer]),_=this.model.vertex_renderer.data_source,d=this.model.vertex_renderer.glyph,[n,l]=[d.x.field,d.y.field];if(i.length&&null!=this._selected_renderer){const e=_.selected.indices[0];this._drawing?(this._drawing=!1,_.selection_manager.clear()):(_.selected.indices=[e+1],n&&_.get_array(n).splice(e+1,0,s),l&&_.get_array(l).splice(e+1,0,r),this._drawing=!0),_.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(e)}_show_vertices(e){if(!this.model.active)return;const t=this._select_event(e,\"replace\",this.model.renderers);if(!t.length)return this._set_vertices([],[]),this._selected_renderer=null,void(this._drawing=!1);const s=t[0],r=s.glyph,_=s.data_source,d=_.selected.indices[0],[n,l]=[r.xs.field,r.ys.field];let a,c;n?(a=_.data[n][d],i.isArray(a)||(_.data[n][d]=a=Array.from(a))):a=r.xs.value,l?(c=_.data[l][d],i.isArray(c)||(_.data[l][d]=c=Array.from(c))):c=r.ys.value,this._selected_renderer=s,this._set_vertices(a,c)}_move(e){if(this._drawing&&null!=this._selected_renderer){const t=this.model.vertex_renderer,s=t.data_source,r=t.glyph,i=this._map_drag(e.sx,e.sy,t);if(null==i)return;let[_,d]=i;const n=s.selected.indices;[_,d]=this._snap_to_vertex(e,_,d),s.selected.indices=n;const[l,a]=[r.x.field,r.y.field],c=n[0];l&&(s.data[l][c]=_),a&&(s.data[a][c]=d),s.change.emit(),this._selected_renderer.data_source.change.emit()}}_tap(e){const t=this.model.vertex_renderer,s=this._map_drag(e.sx,e.sy,t);if(null==s)return;if(this._drawing&&this._selected_renderer){let[r,i]=s;const _=t.data_source,d=t.glyph,[n,l]=[d.x.field,d.y.field],a=_.selected.indices;[r,i]=this._snap_to_vertex(e,r,i);const c=a[0];if(_.selected.indices=[c+1],n){const e=_.get_array(n),t=e[c];e[c]=r,e.splice(c+1,0,t)}if(l){const e=_.get_array(l),t=e[c];e[c]=i,e.splice(c+1,0,t)}return _.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}const r=this._select_mode(e);this._select_event(e,r,[t]),this._select_event(e,r,this.model.renderers)}_remove_vertex(){if(!this._drawing||!this._selected_renderer)return;const e=this.model.vertex_renderer,t=e.data_source,s=e.glyph,r=t.selected.indices[0],[i,_]=[s.x.field,s.y.field];i&&t.get_array(i).splice(r,1),_&&t.get_array(_).splice(r,1),t.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}_pan_start(e){this._select_event(e,\"append\",[this.model.vertex_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}_keyup(e){if(!this.model.active||!this._mouse_in_frame)return;let t;t=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(const s of t)e.keyCode===r.Keys.Backspace?(this._delete_selected(s),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):e.keyCode==r.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),s.data_source.selection_manager.clear())}deactivate(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())}}s.PolyEditToolView=n,n.__name__=\"PolyEditToolView\";class l extends _.PolyTool{constructor(e){super(e),this.tool_name=\"Poly Edit Tool\",this.icon=d.bk_tool_icon_poly_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}static init_PolyEditTool(){this.prototype.default_view=n}}s.PolyEditTool=l,l.__name__=\"PolyEditTool\",l.init_PolyEditTool()},\n", - " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(1),i=e(364),l=e(124),_=s.__importStar(e(18)),n=e(309);class c extends i.SelectToolView{_compute_limits(e){const t=this.plot_view.frame,o=this.model.dimensions;let s=this._base_point;if(\"center\"==this.model.origin){const[t,o]=s,[i,l]=e;s=[t-(i-t),o-(l-o)]}return this.model._get_dim_limits(s,e,t,o)}_pan_start(e){const{sx:t,sy:o}=e;this._base_point=[t,o]}_pan(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this.model.overlay.update({left:i[0],right:i[1],top:l[0],bottom:l[1]}),this.model.select_every_mousemove&&this._do_select(i,l,!1,this._select_mode(e))}_pan_end(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this._do_select(i,l,!0,this._select_mode(e)),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.push_state(\"box_select\",{selection:this.plot_view.get_selection()})}_do_select([e,t],[o,s],i,l=\"replace\"){const _={type:\"rect\",sx0:e,sx1:t,sy0:o,sy1:s};this._select(_,i,l)}}o.BoxSelectToolView=c,c.__name__=\"BoxSelectToolView\";const r=()=>new l.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class h extends i.SelectTool{constructor(e){super(e),this.tool_name=\"Box Select\",this.icon=n.bk_tool_icon_box_select,this.event_type=\"pan\",this.default_order=30}static init_BoxSelectTool(){this.prototype.default_view=c,this.define({dimensions:[_.Dimensions,\"both\"],select_every_mousemove:[_.Boolean,!1],overlay:[_.Instance,r],origin:[_.BoxOrigin,\"corner\"]}),this.register_alias(\"box_select\",()=>new h),this.register_alias(\"xbox_select\",()=>new h({dimensions:\"width\"})),this.register_alias(\"ybox_select\",()=>new h({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}o.BoxSelectTool=h,h.__name__=\"BoxSelectTool\",h.init_BoxSelectTool()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(1),o=e(306),r=e(90),c=e(116),i=e(365),l=n.__importStar(e(18)),a=e(72),_=e(313),d=e(15),h=e(11);class p extends o.GestureToolView{connect_signals(){super.connect_signals(),this.model.clear.connect(()=>this._clear())}get computed_renderers(){const e=this.model.renderers,t=this.plot_model.renderers,s=this.model.names;return i.compute_renderers(e,t,s)}_computed_renderers_by_data_source(){var e;const t=new Map;for(const s of this.computed_renderers){let n;if(s instanceof r.GlyphRenderer)n=s.data_source;else{if(!(s instanceof c.GraphRenderer))continue;n=s.node_renderer.data_source}const o=null!==(e=t.get(n))&&void 0!==e?e:[];t.set(n,[...o,s])}return t}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void h.unreachable():this.model.mode}_keyup(e){e.keyCode==a.Keys.Esc&&this._clear()}_clear(){for(const e of this.computed_renderers)e.get_selection_manager().clear();this.plot_view.request_render()}_select(e,t,s){const n=this._computed_renderers_by_data_source();for(const[,o]of n){const n=o[0].get_selection_manager(),r=[];for(const e of o){const t=this.plot_view.renderer_views.get(e);null!=t&&r.push(t)}n.select(r,e,t,s)}null!=this.model.callback&&this._emit_callback(e),this._emit_selection_event(e,t)}_emit_selection_event(e,t=!0){const{x_scale:s,y_scale:n}=this.plot_view.frame;let o;switch(e.type){case\"point\":{const{sx:t,sy:r}=e,c=s.invert(t),i=n.invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"span\":{const{sx:t,sy:r}=e,c=s.invert(t),i=n.invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"rect\":{const{sx0:t,sx1:r,sy0:c,sy1:i}=e,[l,a]=s.r_invert(t,r),[_,d]=n.r_invert(c,i);o=Object.assign(Object.assign({},e),{x0:l,y0:_,x1:a,y1:d});break}case\"poly\":{const{sx:t,sy:r}=e,c=s.v_invert(t),i=n.v_invert(r);o=Object.assign(Object.assign({},e),{x:c,y:i});break}}this.plot_model.trigger_event(new _.SelectionGeometry(o,t))}}s.SelectToolView=p,p.__name__=\"SelectToolView\";class u extends o.GestureTool{constructor(e){super(e)}initialize(){super.initialize(),this.clear=new d.Signal0(this,\"clear\")}static init_SelectTool(){this.define({renderers:[l.Any,\"auto\"],names:[l.Array,[]],mode:[l.Any,\"replace\"]})}get menu(){return[{icon:\"bk-tool-icon-replace-mode\",tooltip:\"Replace the current selection\",active:()=>\"replace\"==this.mode,handler:()=>{this.mode=\"replace\",this.active=!0}},{icon:\"bk-tool-icon-append-mode\",tooltip:\"Append to the current selection (Shift)\",active:()=>\"append\"==this.mode,handler:()=>{this.mode=\"append\",this.active=!0}},{icon:\"bk-tool-icon-intersect-mode\",tooltip:\"Intersect with the current selection (Ctrl)\",active:()=>\"intersect\"==this.mode,handler:()=>{this.mode=\"intersect\",this.active=!0}},{icon:\"bk-tool-icon-subtract-mode\",tooltip:\"Subtract from the current selection (Shift+Ctrl)\",active:()=>\"subtract\"==this.mode,handler:()=>{this.mode=\"subtract\",this.active=!0}},null,{icon:\"bk-tool-icon-clear-selection\",tooltip:\"Clear the current selection (Esc)\",handler:()=>{this.clear.emit()}}]}}s.SelectTool=u,u.__name__=\"SelectTool\",u.init_SelectTool()},\n", - " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const r=e(9);t.compute_renderers=function(e,n,t){if(null==e)return[];let u=\"auto\"==e?n:e;return t.length>0&&(u=u.filter(e=>r.includes(t,e.name))),u}},\n", - " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const s=t(1),i=t(306),n=t(124),_=s.__importStar(t(18)),a=t(309);class l extends i.GestureToolView{_match_aspect(t,o,e){const s=e.bbox.aspect,i=e.bbox.h_range.end,n=e.bbox.h_range.start,_=e.bbox.v_range.end,a=e.bbox.v_range.start;let l=Math.abs(t[0]-o[0]),r=Math.abs(t[1]-o[1]);const h=0==r?0:l/r,[c]=h>=s?[1,h/s]:[s/h,1];let m,p,d,b;return t[0]<=o[0]?(m=t[0],p=t[0]+l*c,p>i&&(p=i)):(p=t[0],m=t[0]-l*c,m_&&(d=_)):(d=t[1],b=t[1]-l/s,bnew n.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class h extends i.GestureTool{constructor(t){super(t),this.tool_name=\"Box Zoom\",this.icon=a.bk_tool_icon_box_zoom,this.event_type=\"pan\",this.default_order=20}static init_BoxZoomTool(){this.prototype.default_view=l,this.define({dimensions:[_.Dimensions,\"both\"],overlay:[_.Instance,r],match_aspect:[_.Boolean,!1],origin:[_.BoxOrigin,\"corner\"]}),this.register_alias(\"box_zoom\",()=>new h({dimensions:\"both\"})),this.register_alias(\"xbox_zoom\",()=>new h({dimensions:\"width\"})),this.register_alias(\"ybox_zoom\",()=>new h({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}e.BoxZoomTool=h,h.__name__=\"BoxZoomTool\",h.init_BoxZoomTool()},\n", - " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(1),a=e(364),i=e(368),l=e(72),_=o.__importStar(e(18)),c=e(309);class n extends a.SelectToolView{initialize(){super.initialize(),this.data=null}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._active_change())}_active_change(){this.model.active||this._clear_overlay()}_keyup(e){e.keyCode==l.Keys.Enter&&this._clear_overlay()}_pan_start(e){const{sx:s,sy:t}=e;this.data={sx:[s],sy:[t]}}_pan(e){const{sx:s,sy:t}=e,[o,a]=this.plot_view.frame.bbox.clip(s,t);this.data.sx.push(o),this.data.sy.push(a);this.model.overlay.update({xs:this.data.sx,ys:this.data.sy}),this.model.select_every_mousemove&&this._do_select(this.data.sx,this.data.sy,!1,this._select_mode(e))}_pan_end(e){this._clear_overlay(),this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(e)),this.plot_view.push_state(\"lasso_select\",{selection:this.plot_view.get_selection()})}_clear_overlay(){this.model.overlay.update({xs:[],ys:[]})}_do_select(e,s,t,o){const a={type:\"poly\",sx:e,sy:s};this._select(a,t,o)}}t.LassoSelectToolView=n,n.__name__=\"LassoSelectToolView\";class h extends a.SelectTool{constructor(e){super(e),this.tool_name=\"Lasso Select\",this.icon=c.bk_tool_icon_lasso_select,this.event_type=\"pan\",this.default_order=12}static init_LassoSelectTool(){this.prototype.default_view=n,this.define({select_every_mousemove:[_.Boolean,!0],overlay:[_.Instance,i.DEFAULT_POLY_OVERLAY]}),this.register_alias(\"lasso_select\",()=>new h)}}t.LassoSelectTool=h,h.__name__=\"LassoSelectTool\",h.init_LassoSelectTool()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const l=e(1),i=e(364),o=e(166),a=e(72),_=l.__importStar(e(18)),c=e(9),n=e(309);class h extends i.SelectToolView{initialize(){super.initialize(),this.data={sx:[],sy:[]}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._active_change())}_active_change(){this.model.active||this._clear_data()}_keyup(e){e.keyCode==a.Keys.Enter&&this._clear_data()}_doubletap(e){this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(e)),this.plot_view.push_state(\"poly_select\",{selection:this.plot_view.get_selection()}),this._clear_data()}_clear_data(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})}_tap(e){const{sx:t,sy:s}=e;this.plot_view.frame.bbox.contains(t,s)&&(this.data.sx.push(t),this.data.sy.push(s),this.model.overlay.update({xs:c.copy(this.data.sx),ys:c.copy(this.data.sy)}))}_do_select(e,t,s,l){const i={type:\"poly\",sx:e,sy:t};this._select(i,s,l)}}s.PolySelectToolView=h,h.__name__=\"PolySelectToolView\",s.DEFAULT_POLY_OVERLAY=()=>new o.PolyAnnotation({level:\"overlay\",xs_units:\"screen\",ys_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class y extends i.SelectTool{constructor(e){super(e),this.tool_name=\"Poly Select\",this.icon=n.bk_tool_icon_polygon_select,this.event_type=\"tap\",this.default_order=11}static init_PolySelectTool(){this.prototype.default_view=h,this.define({overlay:[_.Instance,s.DEFAULT_POLY_OVERLAY]}),this.register_alias(\"poly_select\",()=>new y)}}s.PolySelectTool=y,y.__name__=\"PolySelectTool\",y.init_PolySelectTool()},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(370),r=s.__importStar(e(18)),_=e(309);class d extends n.LineToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(e){if(!this.model.active)return;const t=this.model.renderers;for(const i of t){1==this._select_event(e,\"replace\",[i]).length&&(this._selected_renderer=i)}this._show_intersections(),this._update_line_cds()}_show_intersections(){if(!this.model.active)return;if(null==this._selected_renderer)return;if(!this.model.renderers.length)return this._set_intersection([],[]),this._selected_renderer=null,void(this._drawing=!1);const e=this._selected_renderer.data_source,t=this._selected_renderer.glyph,[i,s]=[t.x.field,t.y.field],n=e.get_array(i),r=e.get_array(s);this._set_intersection(n,r)}_tap(e){const t=this.model.intersection_renderer;if(null==this._map_drag(e.sx,e.sy,t))return;if(this._drawing&&this._selected_renderer){const i=this._select_mode(e);if(0==this._select_event(e,i,[t]).length)return}const i=this._select_mode(e);this._select_event(e,i,[t]),this._select_event(e,i,this.model.renderers)}_update_line_cds(){if(null==this._selected_renderer)return;const e=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[i,s]=[e.x.field,e.y.field];if(i&&s){const e=t.data[i],n=t.data[s];this._selected_renderer.data_source.data[i]=e,this._selected_renderer.data_source.data[s]=n}this._emit_cds_changes(this._selected_renderer.data_source,!0,!0,!1)}_pan_start(e){this._select_event(e,\"append\",[this.model.intersection_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer],this.model.dimensions),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer]),this._emit_cds_changes(this.model.intersection_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}activate(){this._drawing=!0}deactivate(){this._selected_renderer&&(this._drawing&&(this._drawing=!1),this._hide_intersections())}}i.LineEditToolView=d,d.__name__=\"LineEditToolView\";class o extends n.LineTool{constructor(e){super(e),this.tool_name=\"Line Edit Tool\",this.icon=_.bk_tool_icon_line_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}static init_LineEditTool(){this.prototype.default_view=d,this.define({dimensions:[r.Dimensions,\"both\"]})}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}i.LineEditTool=o,o.__name__=\"LineEditTool\",o.init_LineEditTool()},\n", - " function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1).__importStar(e(18)),o=e(8),s=e(356);class _ extends s.EditToolView{_set_intersection(e,i){const t=this.model.intersection_renderer.glyph,n=this.model.intersection_renderer.data_source,[s,_]=[t.x.field,t.y.field];s&&(o.isArray(e)?n.data[s]=e:t.x={value:e}),_&&(o.isArray(i)?n.data[_]=i:t.y={value:i}),this._emit_cds_changes(n,!0,!0,!1)}_hide_intersections(){this._set_intersection([],[])}}t.LineToolView=_,_.__name__=\"LineToolView\";class r extends s.EditTool{constructor(e){super(e)}static init_LineTool(){this.prototype.default_view=_,this.define({intersection_renderer:[n.Instance]})}}t.LineTool=r,r.__name__=\"LineTool\",r.init_LineTool()},\n", - " function _(t,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const n=t(1),i=t(306),o=n.__importStar(t(18)),a=t(309);function _(t,s,e){const n=new Map;for(const[i,o]of t){const[t,a]=o.r_invert(s,e);n.set(i,{start:t,end:a})}return n}e.update_ranges=_;class h extends i.GestureToolView{_pan_start(t){this.last_dx=0,this.last_dy=0;const{sx:s,sy:e}=t,n=this.plot_view.frame.bbox;if(!n.contains(s,e)){const t=n.h_range,i=n.v_range;(st.end)&&(this.v_axis_only=!0),(ei.end)&&(this.h_axis_only=!0)}null!=this.model.document&&this.model.document.interactive_start(this.plot_model)}_pan(t){this._update(t.deltaX,t.deltaY),null!=this.model.document&&this.model.document.interactive_start(this.plot_model)}_pan_end(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.push_state(\"pan\",{range:this.pan_info})}_update(t,s){const e=this.plot_view.frame,n=t-this.last_dx,i=s-this.last_dy,o=e.bbox.h_range,a=o.start-n,h=o.end-n,l=e.bbox.v_range,r=l.start-i,d=l.end-i,p=this.model.dimensions;let c,u,m,x,y,g;\"width\"!=p&&\"both\"!=p||this.v_axis_only?(c=o.start,u=o.end,m=0):(c=a,u=h,m=-n),\"height\"!=p&&\"both\"!=p||this.h_axis_only?(x=l.start,y=l.end,g=0):(x=r,y=d,g=-i),this.last_dx=t,this.last_dy=s;const{x_scales:w,y_scales:b}=e,f=_(w,c,u),v=_(b,x,y);this.pan_info={xrs:f,yrs:v,sdx:m,sdy:g},this.plot_view.update_range(this.pan_info,!0)}}e.PanToolView=h,h.__name__=\"PanToolView\";class l extends i.GestureTool{constructor(t){super(t),this.tool_name=\"Pan\",this.event_type=\"pan\",this.default_order=10}static init_PanTool(){this.prototype.default_view=h,this.define({dimensions:[o.Dimensions,\"both\"]}),this.register_alias(\"pan\",()=>new l({dimensions:\"both\"})),this.register_alias(\"xpan\",()=>new l({dimensions:\"width\"})),this.register_alias(\"ypan\",()=>new l({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(\"Pan\",this.dimensions)}get icon(){switch(this.dimensions){case\"both\":return a.bk_tool_icon_pan;case\"width\":return a.bk_tool_icon_xpan;case\"height\":return a.bk_tool_icon_ypan}}}e.PanTool=l,l.__name__=\"PanTool\",l.init_PanTool()},\n", - " function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(124),l=e(19),a=s.__importStar(e(18)),r=e(306),o=e(309);function _(e){switch(e){case 1:return 2;case 2:return 1;case 4:return 5;case 5:return 4;default:return e}}function h(e,t,i,s){if(null==t)return!1;const n=i.compute(t);return Math.abs(e-n)n.right)&&(l=!1)}if(null!=n.bottom&&null!=n.top){const e=s.invert(t);(en.top)&&(l=!1)}return l}function u(e,t,i){let s=0;return e>=i.start&&e<=i.end&&(s+=1),t>=i.start&&t<=i.end&&(s+=1),s}function c(e,t,i,s){const n=t.compute(e),l=t.invert(n+i);return l>=s.start&&l<=s.end?l:e}function g(e,t,i){return e>t.start?(t.end=e,i):(t.end=t.start,t.start=e,_(i))}function y(e,t,i){return e=o&&(e.start=a,e.end=r)}i.flip_side=_,i.is_near=h,i.is_inside=d,i.sides_inside=u,i.compute_value=c,i.update_range_end_side=g,i.update_range_start_side=y,i.update_range=f;class p extends r.GestureToolView{initialize(){super.initialize(),this.side=0,this.model.update_overlay_from_ranges()}connect_signals(){super.connect_signals(),null!=this.model.x_range&&this.connect(this.model.x_range.change,()=>this.model.update_overlay_from_ranges()),null!=this.model.y_range&&this.connect(this.model.y_range.change,()=>this.model.update_overlay_from_ranges())}_pan_start(e){this.last_dx=0,this.last_dy=0;const t=this.model.x_range,i=this.model.y_range,{frame:s}=this.plot_view,l=s.x_scale,a=s.y_scale,r=this.model.overlay,{left:o,right:_,top:u,bottom:c}=r,g=this.model.overlay.properties.line_width.value()+n.EDGE_TOLERANCE;null!=t&&this.model.x_interaction&&(h(e.sx,o,l,g)?this.side=1:h(e.sx,_,l,g)?this.side=2:d(e.sx,e.sy,l,a,r)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&h(e.sy,c,a,g)&&(this.side=4),0==this.side&&h(e.sy,u,a,g)?this.side=5:d(e.sx,e.sy,l,a,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))}_pan(e){const t=this.plot_view.frame,i=e.deltaX-this.last_dx,s=e.deltaY-this.last_dy,n=this.model.x_range,l=this.model.y_range,a=t.x_scale,r=t.y_scale;if(null!=n)if(3==this.side||7==this.side)f(n,a,i,t.x_range);else if(1==this.side){const e=c(n.start,a,i,t.x_range);this.side=y(e,n,this.side)}else if(2==this.side){const e=c(n.end,a,i,t.x_range);this.side=g(e,n,this.side)}if(null!=l)if(6==this.side||7==this.side)f(l,r,s,t.y_range);else if(4==this.side){const e=c(l.start,r,s,t.y_range);this.side=y(e,l,this.side)}else if(5==this.side){const e=c(l.end,r,s,t.y_range);this.side=g(e,l,this.side)}this.last_dx=e.deltaX,this.last_dy=e.deltaY}_pan_end(e){this.side=0}}i.RangeToolView=p,p.__name__=\"RangeToolView\";const m=()=>new n.BoxAnnotation({level:\"overlay\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:.5,line_dash:[2,2]});class v extends r.GestureTool{constructor(e){super(e),this.tool_name=\"Range Tool\",this.icon=o.bk_tool_icon_range,this.event_type=\"pan\",this.default_order=1}static init_RangeTool(){this.prototype.default_view=p,this.define({x_range:[a.Instance,null],x_interaction:[a.Boolean,!0],y_range:[a.Instance,null],y_interaction:[a.Boolean,!0],overlay:[a.Instance,m]})}initialize(){super.initialize(),this.overlay.in_cursor=\"grab\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\"ew-resize\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\"ns-resize\":null}update_overlay_from_ranges(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,l.logger.warn(\"RangeTool not configured with any Ranges.\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)}}i.RangeTool=v,v.__name__=\"RangeTool\",v.init_RangeTool()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),i=e(364),c=o.__importStar(e(18)),n=e(309);class a extends i.SelectToolView{_tap(e){const{sx:t,sy:s}=e,o={type:\"point\",sx:t,sy:s};this._select(o,!0,this._select_mode(e))}_select(e,t,s){const o=this.model.callback;if(\"select\"==this.model.behavior){const i=this._computed_renderers_by_data_source();for(const[,c]of i){const i=c[0].get_selection_manager(),n=c.map(e=>this.plot_view.renderer_views.get(e));if(i.select(n,e,t,s)&&null!=o){const t=n[0].coordinates.x_scale.invert(e.sx),s=n[0].coordinates.y_scale.invert(e.sy),c={geometries:Object.assign(Object.assign({},e),{x:t,y:s}),source:i.source};o.execute(this.model,c)}}this._emit_selection_event(e),this.plot_view.push_state(\"tap\",{selection:this.plot_view.get_selection()})}else for(const t of this.computed_renderers){const s=this.plot_view.renderer_views.get(t),i=t.get_selection_manager();if(i.inspect(s,e)&&null!=o){const t=s.coordinates.x_scale.invert(e.sx),c=s.coordinates.y_scale.invert(e.sy),n={geometries:Object.assign(Object.assign({},e),{x:t,y:c}),source:i.source};o.execute(this.model,n)}}}}s.TapToolView=a,a.__name__=\"TapToolView\";class _ extends i.SelectTool{constructor(e){super(e),this.tool_name=\"Tap\",this.icon=n.bk_tool_icon_tap_select,this.event_type=\"tap\",this.default_order=10}static init_TapTool(){this.prototype.default_view=a,this.define({behavior:[c.TapBehavior,\"select\"],callback:[c.Any]}),this.register_alias(\"click\",()=>new _({behavior:\"inspect\"})),this.register_alias(\"tap\",()=>new _)}}s.TapTool=_,_.__name__=\"TapTool\",_.init_TapTool()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),o=e(306),n=i.__importStar(e(18)),a=e(309),l=e(371);class _ extends o.GestureToolView{_scroll(e){let t=this.model.speed*e.delta;t>.9?t=.9:t<-.9&&(t=-.9),this._update_ranges(t)}_update_ranges(e){const{frame:t}=this.plot_view,s=t.bbox.h_range,i=t.bbox.v_range,[o,n]=[s.start,s.end],[a,_]=[i.start,i.end];let h,r,d,p;switch(this.model.dimension){case\"height\":{const t=Math.abs(_-a);h=o,r=n,d=a-t*e,p=_-t*e;break}case\"width\":{const t=Math.abs(n-o);h=o-t*e,r=n-t*e,d=a,p=_;break}default:throw new Error(\"this shouldn't have happened\")}const{x_scales:c,y_scales:u}=t,m={xrs:l.update_ranges(c,h,r),yrs:l.update_ranges(u,d,p),factor:e};this.plot_view.push_state(\"wheel_pan\",{range:m}),this.plot_view.update_range(m,!1,!0),null!=this.model.document&&this.model.document.interactive_start(this.plot_model)}}s.WheelPanToolView=_,_.__name__=\"WheelPanToolView\";class h extends o.GestureTool{constructor(e){super(e),this.tool_name=\"Wheel Pan\",this.icon=a.bk_tool_icon_wheel_pan,this.event_type=\"scroll\",this.default_order=12}static init_WheelPanTool(){this.prototype.default_view=_,this.define({dimension:[n.Dimension,\"width\"]}),this.internal({speed:[n.Number,.001]}),this.register_alias(\"xwheel_pan\",()=>new h({dimension:\"width\"})),this.register_alias(\"ywheel_pan\",()=>new h({dimension:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimension)}}s.WheelPanTool=h,h.__name__=\"WheelPanTool\",h.init_WheelPanTool()},\n", - " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const s=e(1),i=e(306),l=e(354),n=s.__importStar(e(18)),_=e(32),h=e(309);class a extends i.GestureToolView{_pinch(e){const{sx:o,sy:t,scale:s,ctrlKey:i,shiftKey:l}=e;let n;n=s>=1?20*(s-1):-20/s,this._scroll({type:\"wheel\",sx:o,sy:t,delta:n,ctrlKey:i,shiftKey:l})}_scroll(e){const{frame:o}=this.plot_view,t=o.bbox.h_range,s=o.bbox.v_range,{sx:i,sy:n}=e,_=this.model.dimensions,h=(\"width\"==_||\"both\"==_)&&t.startnew m({dimensions:\"both\"})),this.register_alias(\"xwheel_zoom\",()=>new m({dimensions:\"width\"})),this.register_alias(\"ywheel_zoom\",()=>new m({dimensions:\"height\"}))}get tooltip(){return this._get_dim_tooltip(this.tool_name,this.dimensions)}}t.WheelZoomTool=m,m.__name__=\"WheelZoomTool\",m.init_WheelZoomTool()},\n", - " function _(i,s,e){Object.defineProperty(e,\"__esModule\",{value:!0});const t=i(1),o=i(295),n=i(168),l=t.__importStar(i(18)),h=i(13),a=i(309);class r extends o.InspectToolView{_move(i){if(!this.model.active)return;const{sx:s,sy:e}=i;this.plot_view.frame.bbox.contains(s,e)?this._update_spans(s,e):this._update_spans(null,null)}_move_exit(i){this._update_spans(null,null)}_update_spans(i,s){const e=this.model.dimensions;\"width\"!=e&&\"both\"!=e||(this.model.spans.width.location=s),\"height\"!=e&&\"both\"!=e||(this.model.spans.height.location=i)}}e.CrosshairToolView=r,r.__name__=\"CrosshairToolView\";class _ extends o.InspectTool{constructor(i){super(i),this.tool_name=\"Crosshair\",this.icon=a.bk_tool_icon_crosshair}static init_CrosshairTool(){this.prototype.default_view=r,this.define({dimensions:[l.Dimensions,\"both\"],line_color:[l.Color,\"black\"],line_width:[l.Number,1],line_alpha:[l.Number,1]}),this.internal({spans:[l.Any]}),this.register_alias(\"crosshair\",()=>new _)}get tooltip(){return this._get_dim_tooltip(\"Crosshair\",this.dimensions)}get synthetic_renderers(){return h.values(this.spans)}initialize(){super.initialize(),this.spans={width:new n.Span({for_hover:!0,dimension:\"width\",location_units:\"screen\",level:\"overlay\",line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha}),height:new n.Span({for_hover:!0,dimension:\"height\",location_units:\"screen\",level:\"overlay\",line_color:this.line_color,line_width:this.line_width,line_alpha:this.line_alpha})}}}e.CrosshairTool=_,_.__name__=\"CrosshairTool\",_.init_CrosshairTool()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const r=e(1),o=e(81),i=r.__importStar(e(18)),a=e(13),n=e(29);class u extends o.Model{constructor(e){super(e)}static init_CustomJSHover(){this.define({args:[i.Any,{}],code:[i.String,\"\"]})}get values(){return a.values(this.args)}_make_code(e,t,s,r){return new Function(...a.keys(this.args),e,t,s,n.use_strict(r))}format(e,t,s){return this._make_code(\"value\",\"format\",\"special_vars\",this.code)(...this.values,e,t,s)}}s.CustomJSHover=u,u.__name__=\"CustomJSHover\",u.init_CustomJSHover()},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const o=e(1),n=e(295),i=e(171),r=e(90),l=e(116),c=e(365),a=o.__importStar(e(101)),_=e(187),d=e(72),p=o.__importStar(e(18)),h=e(22),m=e(13),u=e(303),y=e(8),f=e(115),x=e(309),v=e(172);function w(e,t,s,o,n,i){const r={x:n[e],y:i[e]},l={x:n[e+1],y:i[e+1]};let c,_;if(\"span\"==t.type)\"h\"==t.direction?(c=Math.abs(r.x-s),_=Math.abs(l.x-s)):(c=Math.abs(r.y-o),_=Math.abs(l.y-o));else{const e={x:s,y:o};c=a.dist_2_pts(r,e),_=a.dist_2_pts(l,e)}return c<_?[[r.x,r.y],e]:[[l.x,l.y],e+1]}function g(e,t,s){return[[e[s],t[s]],s]}s._nearest_line_hit=w,s._line_hit=g;class b extends n.InspectToolView{initialize(){super.initialize(),this._ttmodels=null,this._ttviews=new Map;const{tooltips:e}=this.model;y.isArray(e)&&(this._template_el=this._create_template(e))}remove(){f.remove_views(this._ttviews),super.remove()}connect_signals(){super.connect_signals();for(const e of this.computed_renderers)e instanceof r.GlyphRenderer?this.connect(e.data_source.inspect,this._update):e instanceof l.GraphRenderer&&(this.connect(e.node_renderer.data_source.inspect,this._update),this.connect(e.edge_renderer.data_source.inspect,this._update));this.connect(this.model.properties.renderers.change,()=>this._computed_renderers=this._ttmodels=null),this.connect(this.model.properties.names.change,()=>this._computed_renderers=this._ttmodels=null),this.connect(this.model.properties.tooltips.change,()=>this._ttmodels=null)}_compute_ttmodels(){const e=new Map,t=this.model.tooltips;if(null!=t)for(const s of this.computed_renderers){const o=new i.Tooltip({custom:y.isString(t)||y.isFunction(t),attachment:this.model.attachment,show_arrow:this.model.show_arrow});s instanceof r.GlyphRenderer?e.set(s,o):s instanceof l.GraphRenderer&&(e.set(s.node_renderer,o),e.set(s.edge_renderer,o))}return(async()=>{const t=await f.build_views(this._ttviews,[...e.values()],{parent:this.plot_view});for(const e of t)e.render()})(),e}get computed_renderers(){if(null==this._computed_renderers){const e=this.model.renderers,t=this.plot_model.renderers,s=this.model.names;this._computed_renderers=c.compute_renderers(e,t,s)}return this._computed_renderers}get ttmodels(){return null==this._ttmodels&&(this._ttmodels=this._compute_ttmodels()),this._ttmodels}_clear(){this._inspect(1/0,1/0);for(const[,e]of this.ttmodels)e.clear()}_move(e){if(!this.model.active)return;const{sx:t,sy:s}=e;this.plot_view.frame.bbox.contains(t,s)?this._inspect(t,s):this._clear()}_move_exit(){this._clear()}_inspect(e,t){let s;if(\"mouse\"==this.model.mode)s={type:\"point\",sx:e,sy:t};else{s={type:\"span\",direction:\"vline\"==this.model.mode?\"h\":\"v\",sx:e,sy:t}}for(const e of this.computed_renderers){e.get_selection_manager().inspect(this.plot_view.renderer_views.get(e),s)}null!=this.model.callback&&this._emit_callback(s)}_update([e,{geometry:t}]){if(!this.model.active)return;if(!(e instanceof r.GlyphRendererView))return;const{model:s}=e;if(\"ignore\"==this.model.muted_policy&&s instanceof r.GlyphRenderer&&s.muted)return;const o=this.ttmodels.get(s);if(null==o)return;const n=s.get_selection_manager();let i=n.inspectors.get(s);if(s instanceof r.GlyphRenderer&&(i=s.view.convert_selection_to_subset(i)),i.is_empty())return void o.clear();const l=n.source,{sx:c,sy:a}=t,_=e.coordinates.x_scale,p=e.coordinates.y_scale,h=_.invert(c),u=p.invert(a),y=e.glyph,f=[];for(const s of i.line_indices){let o,n,r=y._x[s+1],d=y._y[s+1],m=s;switch(this.model.line_policy){case\"interp\":[r,d]=y.get_interpolation_hit(s,t),o=_.compute(r),n=p.compute(d);break;case\"prev\":[[o,n],m]=g(y.sx,y.sy,s);break;case\"next\":[[o,n],m]=g(y.sx,y.sy,s+1);break;case\"nearest\":[[o,n],m]=w(s,t,c,a,y.sx,y.sy),r=y._x[m],d=y._y[m];break;default:[o,n]=[c,a]}const x={index:m,x:h,y:u,sx:c,sy:a,data_x:r,data_y:d,rx:o,ry:n,indices:i.line_indices,name:e.model.name};f.push([o,n,this._render_tooltips(l,m,x)])}for(const t of i.image_indices){const s={index:t.index,x:h,y:u,sx:c,sy:a,name:e.model.name},o=this._render_tooltips(l,t,s);f.push([c,a,o])}for(const o of i.indices)if(m.isEmpty(i.multiline_indices)){const t=null!=y._x?y._x[o]:void 0,n=null!=y._y?y._y[o]:void 0;let _,d,p;if(\"snap_to_data\"==this.model.point_policy){let e=y.get_anchor_point(this.model.anchor,o,[c,a]);null==e&&(e=y.get_anchor_point(\"center\",o,[c,a])),_=e.x,d=e.y}else[_,d]=[c,a];p=s instanceof r.GlyphRenderer?s.view.convert_indices_from_subset([o])[0]:o;const m={index:p,x:h,y:u,sx:c,sy:a,data_x:t,data_y:n,indices:i.indices,name:e.model.name};f.push([_,d,this._render_tooltips(l,p,m)])}else for(const n of i.multiline_indices[o.toString()]){let d,m,x,v=y._xs[o][n],b=y._ys[o][n],k=n;switch(this.model.line_policy){case\"interp\":[v,b]=y.get_interpolation_hit(o,n,t),d=_.compute(v),m=p.compute(b);break;case\"prev\":[[d,m],k]=g(y.sxs[o],y.sys[o],n);break;case\"next\":[[d,m],k]=g(y.sxs[o],y.sys[o],n+1);break;case\"nearest\":[[d,m],k]=w(n,t,c,a,y.sxs[o],y.sys[o]),v=y._xs[o][k],b=y._ys[o][k];break;default:throw new Error(\"should't have happened\")}x=s instanceof r.GlyphRenderer?s.view.convert_indices_from_subset([o])[0]:o;const A={index:x,x:h,y:u,sx:c,sy:a,data_x:v,data_y:b,segment_index:k,indices:i.multiline_indices,name:e.model.name};f.push([d,m,this._render_tooltips(l,x,A)])}if(0==f.length)o.clear();else{const{content:e}=o;d.empty(o.content);for(const[,,t]of f)e.appendChild(t);const[t,s]=f[f.length-1];o.setv({position:[t,s]},{check_eq:!1})}}_emit_callback(e){for(const t of this.computed_renderers){const s=this.plot_view.renderer_views.get(t),o=s.coordinates.x_scale.invert(e.sx),n=s.coordinates.y_scale.invert(e.sy),i=t.data_source.inspected,r=Object.assign({x:o,y:n},e);this.model.callback.execute(this.model,{index:i,geometry:r,renderer:t})}}_create_template(e){const t=d.div({style:{display:\"table\",borderSpacing:\"2px\"}});for(const[s]of e){const e=d.div({style:{display:\"table-row\"}});t.appendChild(e);const o=d.div({style:{display:\"table-cell\"},class:v.bk_tooltip_row_label},0!=s.length?s+\": \":\"\");e.appendChild(o);const n=d.span();n.dataset.value=\"\";const i=d.span({class:v.bk_tooltip_color_block},\" \");i.dataset.swatch=\"\",d.undisplay(i);const r=d.div({style:{display:\"table-cell\"},class:v.bk_tooltip_row_value},n,i);e.appendChild(r)}return t}_render_template(e,t,s,o,n){const i=e.cloneNode(!0),r=i.querySelectorAll(\"[data-value]\"),l=i.querySelectorAll(\"[data-swatch]\"),c=/\\$color(\\[.*\\])?:(\\w*)/;for(const[[,e],i]of u.enumerate(t)){const t=e.match(c);if(null!=t){const[,e=\"\",n]=t,c=s.get_column(n);if(null==c){r[i].textContent=n+\" unknown\";continue}const a=e.indexOf(\"hex\")>=0,_=e.indexOf(\"swatch\")>=0;let p=y.isNumber(o)?c[o]:null;if(null==p){r[i].textContent=\"(null)\";continue}a&&(p=h.color2hex(p)),r[i].textContent=p,_&&(l[i].style.backgroundColor=p,d.display(l[i]))}else{const t=_.replace_placeholders(e.replace(\"$~\",\"$data_\"),s,o,this.model.formatters,n);if(y.isString(t))r[i].textContent=t;else for(const e of t)r[i].appendChild(e)}}return i}_render_tooltips(e,t,s){const o=this.model.tooltips;if(y.isString(o)){const n=_.replace_placeholders({html:o},e,t,this.model.formatters,s);return d.div({},n)}return y.isFunction(o)?o(e,s):this._render_template(this._template_el,o,e,t,s)}}s.HoverToolView=b,b.__name__=\"HoverToolView\";class k extends n.InspectTool{constructor(e){super(e),this.tool_name=\"Hover\",this.icon=x.bk_tool_icon_hover}static init_HoverTool(){this.prototype.default_view=b,this.define({tooltips:[p.Any,[[\"index\",\"$index\"],[\"data (x, y)\",\"($x, $y)\"],[\"screen (x, y)\",\"($sx, $sy)\"]]],formatters:[p.Any,{}],renderers:[p.Any,\"auto\"],names:[p.Array,[]],mode:[p.HoverMode,\"mouse\"],muted_policy:[p.MutedPolicy,\"show\"],point_policy:[p.PointPolicy,\"snap_to_data\"],line_policy:[p.LinePolicy,\"nearest\"],show_arrow:[p.Boolean,!0],anchor:[p.Anchor,\"center\"],attachment:[p.TooltipAttachment,\"horizontal\"],callback:[p.Any]}),this.register_alias(\"hover\",()=>new k)}}s.HoverTool=k,k.__name__=\"HoverTool\",k.init_HoverTool()},\n", - " function _(t,o,e){Object.defineProperty(e,\"__esModule\",{value:!0});const i=t(1).__importStar(t(18)),n=t(15),s=t(81),l=t(295),c=t(303);class r extends s.Model{constructor(t){super(t)}static init_ToolProxy(){this.define({tools:[i.Array,[]],active:[i.Boolean,!1],disabled:[i.Boolean,!1]})}get button_view(){return this.tools[0].button_view}get event_type(){return this.tools[0].event_type}get tooltip(){return this.tools[0].tooltip}get tool_name(){return this.tools[0].tool_name}get icon(){return this.tools[0].computed_icon}get computed_icon(){return this.icon}get toggleable(){const t=this.tools[0];return t instanceof l.InspectTool&&t.toggleable}initialize(){super.initialize(),this.do=new n.Signal0(this,\"do\")}connect_signals(){super.connect_signals(),this.connect(this.do,()=>this.doit()),this.connect(this.properties.active.change,()=>this.set_active());for(const t of this.tools)this.connect(t.properties.active.change,()=>{this.active=t.active})}doit(){for(const t of this.tools)t.do.emit()}set_active(){for(const t of this.tools)t.active=this.active}get menu(){const{menu:t}=this.tools[0];if(null==t)return null;const o=[];for(const[e,i]of c.enumerate(t))if(null==e)o.push(null);else{const t=()=>{var t,o;for(const e of this.tools)null===(o=null===(t=e.menu)||void 0===t?void 0:t[i])||void 0===o||o.handler()};o.push(Object.assign(Object.assign({},e),{handler:t}))}return o}}e.ToolProxy=r,r.__name__=\"ToolProxy\",r.init_ToolProxy()},\n", - " function _(o,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=o(1).__importStar(o(18)),e=o(9),n=o(13),r=o(305),l=o(379),c=o(272),h=o(212);class a extends r.ToolbarBase{constructor(o){super(o)}static init_ProxyToolbar(){this.define({toolbars:[i.Array,[]]})}initialize(){super.initialize(),this._merge_tools()}_merge_tools(){this._proxied_tools=[];const o={},t={},s={},i=[],r=[];for(const o of this.help)e.includes(r,o.redirect)||(i.push(o),r.push(o.redirect));this._proxied_tools.push(...i),this.help=i;for(const[o,t]of n.entries(this.gestures)){o in s||(s[o]={});for(const i of t.tools)i.type in s[o]||(s[o][i.type]=[]),s[o][i.type].push(i)}for(const t of this.inspectors)t.type in o||(o[t.type]=[]),o[t.type].push(t);for(const o of this.actions)o.type in t||(t[o.type]=[]),t[o.type].push(o);const c=(o,t=!1)=>{const s=new l.ToolProxy({tools:o,active:t});return this._proxied_tools.push(s),s};for(const o of n.keys(s)){const t=this.gestures[o];t.tools=[];for(const i of n.keys(s[o])){const e=s[o][i];if(e.length>0)if(\"multi\"==o)for(const o of e){const s=c([o]);t.tools.push(s),this.connect(s.properties.active.change,()=>this._active_change(s))}else{const o=c(e);t.tools.push(o),this.connect(o.properties.active.change,()=>this._active_change(o))}}}this.actions=[];for(const[o,s]of n.entries(t))if(\"CustomAction\"==o)for(const o of s)this.actions.push(c([o]));else s.length>0&&this.actions.push(c(s));this.inspectors=[];for(const t of n.values(o))t.length>0&&this.inspectors.push(c(t,!0));for(const[o,t]of n.entries(this.gestures))0!=t.tools.length&&(t.tools=e.sort_by(t.tools,o=>o.default_order),\"pinch\"!=o&&\"scroll\"!=o&&\"multi\"!=o&&(t.tools[0].active=!0))}}s.ProxyToolbar=a,a.__name__=\"ProxyToolbar\",a.init_ProxyToolbar();class _ extends c.LayoutDOMView{initialize(){this.model.toolbar.toolbar_location=this.model.toolbar_location,super.initialize()}get child_models(){return[this.model.toolbar]}_update_layout(){this.layout=new h.ContentBox(this.child_views[0].el);const{toolbar:o}=this.model;o.horizontal?this.layout.set_sizing({width_policy:\"fit\",min_width:100,height_policy:\"fixed\"}):this.layout.set_sizing({width_policy:\"fixed\",height_policy:\"fit\",min_height:100})}}s.ToolbarBoxView=_,_.__name__=\"ToolbarBoxView\";class p extends c.LayoutDOM{constructor(o){super(o)}static init_ToolbarBox(){this.prototype.default_view=_,this.define({toolbar:[i.Instance],toolbar_location:[i.Location,\"right\"]})}}s.ToolbarBox=p,p.__name__=\"ToolbarBox\",p.init_ToolbarBox()},\n", - " function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=e(5),i=e(78),d=e(115),c=e(72),l=e(382);t.index={},t.add_document_standalone=async function(e,n,s=[],a=!1){const u=new Map;async function r(o){let a;const r=e.roots().indexOf(o),f=s[r];null!=f?a=f:n.classList.contains(l.BOKEH_ROOT)?a=n:(a=c.div({class:l.BOKEH_ROOT}),n.appendChild(a));const v=await d.build_view(o,{parent:null});return v instanceof i.DOMView&&v.renderTo(a),u.set(o,v),t.index[o.id]=v,v}for(const n of e.roots())await r(n);return a&&(window.document.title=e.title()),e.on_change(e=>{e instanceof o.RootAddedEvent?r(e.model):e instanceof o.RootRemovedEvent?function(e){const n=u.get(e);null!=n&&(n.remove(),u.delete(e),delete t.index[e.id])}(e.model):a&&e instanceof o.TitleChangedEvent&&(window.document.title=e.title)}),[...u.values()]}},\n", - " function _(e,o,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(72),r=e(273);function l(e){let o=document.getElementById(e);if(null==o)throw new Error(`Error rendering Bokeh model: could not find #${e} HTML tag`);if(!document.body.contains(o))throw new Error(`Error rendering Bokeh model: element #${e} must be under `);if(\"SCRIPT\"==o.tagName){const e=t.div({class:n.BOKEH_ROOT});t.replaceWith(o,e),o=e}return o}n.BOKEH_ROOT=r.bk_root,n._resolve_element=function(e){const{elementid:o}=e;return null!=o?l(o):document.body},n._resolve_root_elements=function(e){const o=[];if(null!=e.root_ids&&null!=e.roots)for(const n of e.root_ids)o.push(l(e.roots[n]));return o}},\n", - " function _(n,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const e=n(384),s=n(19),c=n(381);t._get_ws_url=function(n,o){let t,e=\"ws:\";return\"https:\"==window.location.protocol&&(e=\"wss:\"),null!=o?(t=document.createElement(\"a\"),t.href=o):t=window.location,null!=n?\"/\"==n&&(n=\"\"):n=t.pathname.replace(/\\/+$/,\"\"),e+\"//\"+t.host+n+\"/ws\"};const r={};t.add_document_from_session=async function(n,o,t,a=[],i=!1){const l=window.location.search.substr(1);let d;try{d=await function(n,o,t){const s=e.parse_token(o).session_id;n in r||(r[n]={});const c=r[n];return s in c||(c[s]=e.pull_session(n,o,t)),c[s]}(n,o,l)}catch(n){const t=e.parse_token(o).session_id;throw s.logger.error(`Failed to load Bokeh session ${t}: ${n}`),n}return c.add_document_standalone(d.document,t,a,i)}},\n", - " function _(e,s,n){Object.defineProperty(n,\"__esModule\",{value:!0});const t=e(19),o=e(5),r=e(385),i=e(386),c=e(387);n.DEFAULT_SERVER_WEBSOCKET_URL=\"ws://localhost:5006/ws\",n.DEFAULT_TOKEN=\"eyJzZXNzaW9uX2lkIjogImRlZmF1bHQifQ\";let l=0;function _(e){let s=e.split(\".\")[0];const n=s.length%4;return 0!=n&&(s+=\"=\".repeat(4-n)),JSON.parse(atob(s.replace(/_/g,\"/\").replace(/-/g,\"+\")))}n.parse_token=_;class h{constructor(e=n.DEFAULT_SERVER_WEBSOCKET_URL,s=n.DEFAULT_TOKEN,o=null){this.url=e,this.token=s,this.args_string=o,this._number=l++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_replies=new Map,this._pending_messages=[],this._receiver=new i.Receiver,this.id=_(s).session_id.split(\".\")[0],t.logger.debug(`Creating websocket ${this._number} to '${this.url}' session '${this.id}'`)}async connect(){if(this.closed_permanently)throw new Error(\"Cannot connect() a closed ClientConnection\");if(null!=this.socket)throw new Error(\"Already connected\");this._current_handler=null,this._pending_replies.clear(),this._pending_messages=[];try{let e=\"\"+this.url;return null!=this.args_string&&this.args_string.length>0&&(e+=\"?\"+this.args_string),this.socket=new WebSocket(e,[\"bokeh\",this.token]),new Promise((e,s)=>{this.socket.binaryType=\"arraybuffer\",this.socket.onopen=()=>this._on_open(e,s),this.socket.onmessage=e=>this._on_message(e),this.socket.onclose=e=>this._on_close(e,s),this.socket.onerror=()=>this._on_error(s)})}catch(e){throw t.logger.error(\"websocket creation failed to url: \"+this.url),t.logger.error(\" - \"+e),e}}close(){this.closed_permanently||(t.logger.debug(\"Permanently closing websocket connection \"+this._number),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,\"close method called on ClientConnection \"+this._number),this.session._connection_closed())}_schedule_reconnect(e){setTimeout(()=>{this.closed_permanently||t.logger.info(`Websocket connection ${this._number} disconnected, will not attempt to reconnect`)},e)}send(e){if(null==this.socket)throw new Error(\"not connected so cannot send \"+e);e.send(this.socket)}async send_with_reply(e){const s=await new Promise((s,n)=>{this._pending_replies.set(e.msgid(),{resolve:s,reject:n}),this.send(e)});if(\"ERROR\"===s.msgtype())throw new Error(\"Error reply \"+s.content.text);return s}async _pull_doc_json(){const e=r.Message.create(\"PULL-DOC-REQ\",{}),s=await this.send_with_reply(e);if(!(\"doc\"in s.content))throw new Error(\"No 'doc' field in PULL-DOC-REPLY\");return s.content.doc}async _repull_session_doc(e,s){var n;t.logger.debug(this.session?\"Repulling session\":\"Pulling session for first time\");try{const n=await this._pull_doc_json();if(null==this.session)if(this.closed_permanently)t.logger.debug(\"Got new document after connection was already closed\"),s(new Error(\"The connection has been closed\"));else{const s=o.Document.from_json(n),i=o.Document._compute_patch_since_json(n,s);if(i.events.length>0){t.logger.debug(`Sending ${i.events.length} changes from model construction back to server`);const e=r.Message.create(\"PATCH-DOC\",{},i);this.send(e)}this.session=new c.ClientSession(this,s,this.id);for(const e of this._pending_messages)this.session.handle(e);this._pending_messages=[],t.logger.debug(\"Created a new session from new pulled doc\"),e(this.session)}else this.session.document.replace_with_json(n),t.logger.debug(\"Updated existing session with new pulled doc\")}catch(e){null===(n=console.trace)||void 0===n||n.call(console,e),t.logger.error(\"Failed to repull session \"+e),s(e)}}_on_open(e,s){t.logger.info(`Websocket connection ${this._number} is now open`),this._current_handler=n=>{this._awaiting_ack_handler(n,e,s)}}_on_message(e){null==this._current_handler&&t.logger.error(\"Got a message with no current handler set\");try{this._receiver.consume(e.data)}catch(e){this._close_bad_protocol(e.toString())}const s=this._receiver.message;if(null!=s){const e=s.problem();null!=e&&this._close_bad_protocol(e),this._current_handler(s)}}_on_close(e,s){t.logger.info(`Lost websocket ${this._number} connection, ${e.code} (${e.reason})`),this.socket=null,this._pending_replies.forEach(e=>e.reject(\"Disconnected\")),this._pending_replies.clear(),this.closed_permanently||this._schedule_reconnect(2e3),s(new Error(`Lost websocket connection, ${e.code} (${e.reason})`))}_on_error(e){t.logger.debug(\"Websocket error on socket \"+this._number);const s=\"Could not open websocket\";t.logger.error(\"Failed to connect to Bokeh server: \"+s),e(new Error(s))}_close_bad_protocol(e){t.logger.error(\"Closing connection: \"+e),null!=this.socket&&this.socket.close(1002,e)}_awaiting_ack_handler(e,s,n){\"ACK\"===e.msgtype()?(this._current_handler=e=>this._steady_state_handler(e),this._repull_session_doc(s,n)):this._close_bad_protocol(\"First message was not an ACK\")}_steady_state_handler(e){const s=e.reqid(),n=this._pending_replies.get(s);n?(this._pending_replies.delete(s),n.resolve(e)):this.session?this.session.handle(e):\"PATCH-DOC\"!=e.msgtype()&&this._pending_messages.push(e)}}n.ClientConnection=h,h.__name__=\"ClientConnection\",n.pull_session=function(e,s,n){return new h(e,s,n).connect()}},\n", - " function _(e,s,t){Object.defineProperty(t,\"__esModule\",{value:!0});const r=e(29);class n{constructor(e,s,t){this.header=e,this.metadata=s,this.content=t,this.buffers=new Map}static assemble(e,s,t){const r=JSON.parse(e),i=JSON.parse(s),a=JSON.parse(t);return new n(r,i,a)}assemble_buffer(e,s){const t=null!=this.header.num_buffers?this.header.num_buffers:0;if(t<=this.buffers.size)throw new Error(\"too many buffers received, expecting \"+t);const{id:r}=JSON.parse(e);this.buffers.set(r,s)}static create(e,s,t={}){const r=n.create_header(e);return new n(r,s,t)}static create_header(e){return{msgid:r.uniqueId(),msgtype:e}}complete(){return null!=this.header&&null!=this.metadata&&null!=this.content&&(null==this.header.num_buffers||this.buffers.size==this.header.num_buffers)}send(e){if((null!=this.header.num_buffers?this.header.num_buffers:0)>0)throw new Error(\"BokehJS only supports receiving buffers, not sending\");const s=JSON.stringify(this.header),t=JSON.stringify(this.metadata),r=JSON.stringify(this.content);e.send(s),e.send(t),e.send(r)}msgid(){return this.header.msgid}msgtype(){return this.header.msgtype}reqid(){return this.header.reqid}problem(){return\"msgid\"in this.header?\"msgtype\"in this.header?null:\"No msgtype in header\":\"No msgid in header\"}}t.Message=n,n.__name__=\"Message\"},\n", - " function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const _=e(385),r=e(8);class i{constructor(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}consume(e){this._current_consumer(e)}_HEADER(e){this._assume_text(e),this.message=null,this._partial=null,this._fragments=[e],this._buf_header=null,this._current_consumer=this._METADATA}_METADATA(e){this._assume_text(e),this._fragments.push(e),this._current_consumer=this._CONTENT}_CONTENT(e){this._assume_text(e),this._fragments.push(e);const[t,s,r]=this._fragments.slice(0,3);this._partial=_.Message.assemble(t,s,r),this._check_complete()}_BUFFER_HEADER(e){this._assume_text(e),this._buf_header=e,this._current_consumer=this._BUFFER_PAYLOAD}_BUFFER_PAYLOAD(e){this._assume_binary(e),this._partial.assemble_buffer(this._buf_header,e),this._check_complete()}_assume_text(e){if(!r.isString(e))throw new Error(\"Expected text fragment but received binary fragment\")}_assume_binary(e){if(!(e instanceof ArrayBuffer))throw new Error(\"Expected binary fragment but received text fragment\")}_check_complete(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER}}s.Receiver=i,i.__name__=\"Receiver\"},\n", - " function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=e(5),s=e(385),c=e(19);class i{constructor(e,t,n){this._connection=e,this.document=t,this.id=n,this._document_listener=e=>{this._document_changed(e)},this.document.on_change(this._document_listener,!0)}handle(e){const t=e.msgtype();\"PATCH-DOC\"===t?this._handle_patch(e):\"OK\"===t?this._handle_ok(e):\"ERROR\"===t?this._handle_error(e):c.logger.debug(\"Doing nothing with message \"+e.msgtype())}close(){this._connection.close()}_connection_closed(){this.document.remove_on_change(this._document_listener)}async request_server_info(){const e=s.Message.create(\"SERVER-INFO-REQ\",{});return(await this._connection.send_with_reply(e)).content}async force_roundtrip(){await this.request_server_info()}_document_changed(e){if(e.setter_id===this.id)return;const t=e instanceof o.DocumentEventBatch?e.events:[e],n=this.document.create_json_patch(t),c=s.Message.create(\"PATCH-DOC\",{},n);this._connection.send(c)}_handle_patch(e){this.document.apply_json_patch(e.content,e.buffers,this.id)}_handle_ok(e){c.logger.trace(\"Unhandled OK reply to \"+e.reqid())}_handle_error(e){c.logger.error(`Unhandled ERROR reply to ${e.reqid()}: ${e.content.text}`)}}n.ClientSession=i,i.__name__=\"ClientSession\"},\n", - " function _(e,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1);var r=this&&this.__asyncValues||function(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var o,t=e[Symbol.asyncIterator];return t?t.call(e):(e=\"function\"==typeof __values?__values(e):e[Symbol.iterator](),o={},n(\"next\"),n(\"throw\"),n(\"return\"),o[Symbol.asyncIterator]=function(){return this},o);function n(t){o[t]=e[t]&&function(o){return new Promise((function(n,r){(function(e,o,t,n){Promise.resolve(n).then((function(o){e({value:o,done:t})}),o)})(n,r,(o=e[t](o)).done,o.value)}))}}};const s=e(5),i=e(386),l=e(19),a=e(72),c=e(13),u=e(381),f=e(382),g=n.__importDefault(e(73)),m=n.__importDefault(e(311)),d=n.__importDefault(e(389));function p(e,o){o.buffers.length>0?e.consume(o.buffers[0].buffer):e.consume(o.content.data);const t=e.message;null!=t&&this.apply_json_patch(t.content,t.buffers)}function _(e,o){if(\"undefined\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){l.logger.info(\"Registering Jupyter comms for target \"+e);const t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(e,t=>{l.logger.info(\"Registering Jupyter comms for target \"+e);const n=new i.Receiver;t.on_msg(p.bind(o,n))})}catch(e){l.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(o.roots()[0].id in t.kernels){l.logger.info(\"Registering JupyterLab comms for target \"+e);const n=t.kernels[o.roots()[0].id];try{n.registerCommTarget(e,t=>{l.logger.info(\"Registering JupyterLab comms for target \"+e);const n=new i.Receiver;t.onMsg=p.bind(o,n)})}catch(e){l.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(\"undefined\"!=typeof google&&null!=google.colab.kernel){l.logger.info(\"Registering Google Colab comms for target \"+e);const t=google.colab.kernel.comms;try{t.registerTarget(e,async t=>{var n,s,a;l.logger.info(\"Registering Google Colab comms for target \"+e);const c=new i.Receiver;try{for(var u,f=r(t.messages);!(u=await f.next()).done;){const e=u.value,t={data:e.data},n=[];for(const o of null!==(a=e.buffers)&&void 0!==a?a:[])n.push(new DataView(o));const r={content:t,buffers:n};p.bind(o)(c,r)}}catch(e){n={error:e}}finally{try{u&&!u.done&&(s=f.return)&&await s.call(f)}finally{if(n)throw n.error}}})}catch(e){l.logger.warn(`Google Colab comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else console.warn(\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest @bokeh/jupyter_bokeh extension is installed. In an exported notebook this warning is expected.\")}a.stylesheet.append(g.default),a.stylesheet.append(m.default),a.stylesheet.append(d.default),t.kernels={},t.embed_items_notebook=function(e,o){if(1!=c.size(e))throw new Error(\"embed_items_notebook expects exactly one document in docs_json\");const t=s.Document.from_json(c.values(e)[0]);for(const e of o){null!=e.notebook_comms_target&&_(e.notebook_comms_target,t);const o=f._resolve_element(e),n=f._resolve_root_elements(e);u.add_document_standalone(t,o,n)}}},\n", - " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});o.default=\"\\n/* notebook specific tweaks so no black outline and matching padding\\n/* can't be wrapped inside bk-root. here are the offending jupyter lines:\\n/* https://github.com/jupyter/notebook/blob/master/notebook/static/notebook/less/renderedhtml.less#L59-L76 */\\n.rendered_html .bk-root .bk-tooltip table,\\n.rendered_html .bk-root .bk-tooltip tr,\\n.rendered_html .bk-root .bk-tooltip th,\\n.rendered_html .bk-root .bk-tooltip td {\\n border: none;\\n padding: 1px;\\n}\\n\"},\n", - " function _(e,t,_){Object.defineProperty(_,\"__esModule\",{value:!0});const o=e(1);o.__exportStar(e(385),_),o.__exportStar(e(386),_)},\n", - " function _(e,t,n){function s(){const e=document.getElementsByTagName(\"body\")[0],t=document.getElementsByClassName(\"bokeh-test-div\");1==t.length&&(e.removeChild(t[0]),delete t[0]);const n=document.createElement(\"div\");n.classList.add(\"bokeh-test-div\"),n.style.display=\"none\",e.insertBefore(n,e.firstChild)}Object.defineProperty(n,\"__esModule\",{value:!0}),n.results={},n.init=function(){s()},n.record0=function(e,t){n.results[e]=t},n.record=function(e,t){n.results[e]=t,s()},n.count=function(e){null==n.results[e]&&(n.results[e]=0),n.results[e]+=1,s()}},\n", - " function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0}),o.safely=function(e,t=!1){try{return e()}catch(e){if(function(e){const t=document.createElement(\"div\");t.style.backgroundColor=\"#f2dede\",t.style.border=\"1px solid #a94442\",t.style.borderRadius=\"4px\",t.style.display=\"inline-block\",t.style.fontFamily=\"sans-serif\",t.style.marginTop=\"5px\",t.style.minWidth=\"200px\",t.style.padding=\"5px 5px 5px 10px\",t.classList.add(\"bokeh-error-box-into-flames\");const o=document.createElement(\"span\");o.style.backgroundColor=\"#a94442\",o.style.borderRadius=\"0px 4px 0px 0px\",o.style.color=\"white\",o.style.cursor=\"pointer\",o.style.cssFloat=\"right\",o.style.fontSize=\"0.8em\",o.style.margin=\"-6px -6px 0px 0px\",o.style.padding=\"2px 5px 4px 5px\",o.title=\"close\",o.setAttribute(\"aria-label\",\"close\"),o.appendChild(document.createTextNode(\"x\")),o.addEventListener(\"click\",()=>r.removeChild(t));const n=document.createElement(\"h3\");n.style.color=\"#a94442\",n.style.margin=\"8px 0px 0px 0px\",n.style.padding=\"0px\",n.appendChild(document.createTextNode(\"Bokeh Error\"));const l=document.createElement(\"pre\");l.style.whiteSpace=\"unset\",l.style.overflowX=\"auto\";const s=e instanceof Error?e.message:e;l.appendChild(document.createTextNode(s)),t.appendChild(o),t.appendChild(n),t.appendChild(l);const r=document.getElementsByTagName(\"body\")[0];r.insertBefore(t,r.firstChild)}(e),t)return;throw e}}},\n", - " ], 0, {\"main\":0,\"tslib\":1,\"index\":2,\"version\":3,\"embed/index\":4,\"document/index\":5,\"document/document\":6,\"base\":7,\"core/util/types\":8,\"core/util/array\":9,\"core/util/math\":10,\"core/util/assert\":11,\"core/util/arrayable\":12,\"core/util/object\":13,\"core/has_props\":14,\"core/signaling\":15,\"core/util/callback\":16,\"core/util/refs\":17,\"core/properties\":18,\"core/logging\":19,\"core/enums\":20,\"core/kinds\":21,\"core/util/color\":22,\"core/util/svg_colors\":23,\"core/types\":24,\"core/util/eq\":25,\"core/util/data_structures\":26,\"core/settings\":27,\"core/property_mixins\":28,\"core/util/string\":29,\"core/util/ndarray\":30,\"core/util/serialization\":31,\"core/util/compat\":32,\"core/util/pretty\":33,\"models/index\":34,\"models/annotations/index\":35,\"models/annotations/annotation\":36,\"core/util/projections\":37,\"models/renderers/renderer\":70,\"core/view\":71,\"core/dom\":72,\"styles/root.css\":73,\"core/visuals\":74,\"core/util/svg\":75,\"core/util/affine\":76,\"models/canvas/canvas\":77,\"core/dom_view\":78,\"core/util/bbox\":79,\"core/util/canvas\":80,\"model\":81,\"models/canvas/coordinates\":82,\"models/annotations/arrow\":83,\"models/annotations/arrow_head\":84,\"models/sources/column_data_source\":85,\"models/sources/columnar_data_source\":86,\"models/sources/data_source\":87,\"models/selections/selection\":88,\"core/selection_manager\":89,\"models/renderers/glyph_renderer\":90,\"models/renderers/data_renderer\":91,\"models/glyphs/line\":92,\"models/glyphs/xy_glyph\":93,\"models/glyphs/glyph\":94,\"core/util/spatial\":95,\"models/ranges/factor_range\":98,\"models/ranges/range\":99,\"models/glyphs/utils\":100,\"core/hittest\":101,\"models/glyphs/webgl/line\":102,\"models/glyphs/webgl/utils/index\":103,\"models/glyphs/webgl/utils/program\":104,\"models/glyphs/webgl/utils/buffer\":105,\"models/glyphs/webgl/utils/texture\":106,\"models/glyphs/webgl/base\":107,\"models/glyphs/webgl/line.vert\":108,\"models/glyphs/webgl/line.frag\":109,\"models/glyphs/patch\":110,\"models/glyphs/harea\":111,\"models/glyphs/area\":112,\"models/glyphs/varea\":113,\"models/sources/cds_view\":114,\"core/build_views\":115,\"models/renderers/graph_renderer\":116,\"models/graphs/graph_hit_test_policy\":117,\"models/selections/interaction_policy\":118,\"core/util/typed_array\":119,\"core/util/set\":120,\"document/events\":121,\"models/annotations/band\":122,\"models/annotations/upper_lower\":123,\"models/annotations/box_annotation\":124,\"models/annotations/color_bar\":125,\"models/tickers/basic_ticker\":126,\"models/tickers/adaptive_ticker\":127,\"models/tickers/continuous_ticker\":128,\"models/tickers/ticker\":129,\"models/formatters/basic_tick_formatter\":130,\"models/formatters/tick_formatter\":131,\"models/mappers/index\":132,\"models/mappers/categorical_color_mapper\":133,\"models/mappers/categorical_mapper\":134,\"models/mappers/color_mapper\":135,\"models/mappers/mapper\":136,\"models/transforms/transform\":137,\"models/mappers/categorical_marker_mapper\":138,\"models/mappers/categorical_pattern_mapper\":139,\"models/mappers/continuous_color_mapper\":140,\"models/mappers/linear_color_mapper\":141,\"models/mappers/log_color_mapper\":142,\"models/mappers/scanning_color_mapper\":143,\"models/mappers/eqhist_color_mapper\":144,\"models/scales/linear_scale\":145,\"models/scales/continuous_scale\":146,\"models/scales/scale\":147,\"models/transforms/index\":148,\"models/transforms/customjs_transform\":149,\"models/transforms/dodge\":150,\"models/transforms/range_transform\":151,\"models/transforms/interpolator\":152,\"models/transforms/jitter\":153,\"models/transforms/linear_interpolator\":154,\"models/transforms/step_interpolator\":155,\"models/scales/linear_interpolation_scale\":156,\"models/scales/log_scale\":157,\"models/ranges/range1d\":158,\"core/util/text\":159,\"models/annotations/label\":160,\"models/annotations/text_annotation\":161,\"models/annotations/label_set\":162,\"models/annotations/legend\":163,\"models/annotations/legend_item\":164,\"core/vectorization\":165,\"models/annotations/poly_annotation\":166,\"models/annotations/slope\":167,\"models/annotations/span\":168,\"models/annotations/title\":169,\"models/annotations/toolbar_panel\":170,\"models/annotations/tooltip\":171,\"styles/tooltips\":172,\"styles/mixins\":173,\"styles/tooltips.css\":174,\"models/annotations/whisker\":175,\"models/axes/index\":176,\"models/axes/axis\":177,\"models/renderers/guide_renderer\":178,\"models/axes/categorical_axis\":179,\"models/tickers/categorical_ticker\":180,\"models/formatters/categorical_tick_formatter\":181,\"models/axes/continuous_axis\":182,\"models/axes/datetime_axis\":183,\"models/axes/linear_axis\":184,\"models/formatters/datetime_tick_formatter\":185,\"core/util/templating\":187,\"models/tickers/datetime_ticker\":190,\"models/tickers/composite_ticker\":191,\"models/tickers/days_ticker\":192,\"models/tickers/single_interval_ticker\":193,\"models/tickers/util\":194,\"models/tickers/months_ticker\":195,\"models/tickers/years_ticker\":196,\"models/axes/log_axis\":197,\"models/formatters/log_tick_formatter\":198,\"models/tickers/log_ticker\":199,\"models/axes/mercator_axis\":200,\"models/formatters/mercator_tick_formatter\":201,\"models/tickers/mercator_ticker\":202,\"models/callbacks/index\":203,\"models/callbacks/customjs\":204,\"models/callbacks/callback\":205,\"models/callbacks/open_url\":206,\"models/canvas/index\":207,\"models/canvas/cartesian_frame\":208,\"models/scales/categorical_scale\":209,\"models/ranges/data_range1d\":210,\"models/ranges/data_range\":211,\"core/layout/index\":212,\"core/layout/types\":213,\"core/layout/layoutable\":214,\"core/layout/alignments\":215,\"core/layout/grid\":216,\"core/layout/html\":217,\"models/expressions/index\":218,\"models/expressions/expression\":219,\"models/expressions/stack\":220,\"models/expressions/cumsum\":221,\"models/filters/index\":222,\"models/filters/boolean_filter\":223,\"models/filters/filter\":224,\"models/filters/customjs_filter\":225,\"models/filters/group_filter\":226,\"models/filters/index_filter\":227,\"models/formatters/index\":228,\"models/formatters/func_tick_formatter\":229,\"models/formatters/numeral_tick_formatter\":230,\"models/formatters/printf_tick_formatter\":231,\"models/glyphs/index\":232,\"models/glyphs/annular_wedge\":233,\"models/glyphs/annulus\":234,\"models/glyphs/arc\":235,\"models/glyphs/bezier\":236,\"models/glyphs/circle\":237,\"models/glyphs/webgl/markers\":238,\"models/glyphs/webgl/markers.vert\":239,\"models/glyphs/webgl/markers.frag\":240,\"models/glyphs/center_rotatable\":241,\"models/glyphs/ellipse\":242,\"models/glyphs/ellipse_oval\":243,\"models/glyphs/hbar\":244,\"models/glyphs/box\":245,\"models/glyphs/hex_tile\":246,\"models/glyphs/image\":247,\"models/glyphs/image_base\":248,\"models/glyphs/image_rgba\":249,\"models/glyphs/image_url\":250,\"core/util/image\":251,\"models/glyphs/multi_line\":252,\"models/glyphs/multi_polygons\":253,\"models/glyphs/oval\":254,\"models/glyphs/patches\":255,\"models/glyphs/quad\":256,\"models/glyphs/quadratic\":257,\"models/glyphs/ray\":258,\"models/glyphs/rect\":259,\"models/glyphs/segment\":260,\"models/glyphs/step\":261,\"models/glyphs/text\":262,\"models/glyphs/vbar\":263,\"models/glyphs/wedge\":264,\"models/graphs/index\":265,\"models/graphs/layout_provider\":266,\"models/graphs/static_layout_provider\":267,\"models/grids/index\":268,\"models/grids/grid\":269,\"models/layouts/index\":270,\"models/layouts/box\":271,\"models/layouts/layout_dom\":272,\"styles/root\":273,\"models/layouts/column\":274,\"models/layouts/grid_box\":275,\"models/layouts/html_box\":276,\"models/layouts/row\":277,\"models/layouts/spacer\":278,\"models/layouts/tabs\":279,\"styles/tabs\":280,\"styles/buttons\":281,\"styles/menus\":282,\"styles/buttons.css\":283,\"styles/menus.css\":284,\"styles/tabs.css\":285,\"models/layouts/widget_box\":286,\"models/markers/index\":287,\"models/markers/defs\":288,\"models/markers/marker\":289,\"models/markers/scatter\":290,\"models/plots/index\":291,\"models/plots/gmap_plot\":292,\"models/plots/plot\":293,\"models/tools/toolbar\":294,\"models/tools/inspectors/inspect_tool\":295,\"models/tools/button_tool\":296,\"models/tools/tool\":298,\"styles/toolbar\":299,\"styles/toolbar.css\":300,\"styles/icons.css\":301,\"core/util/menus\":302,\"core/util/iterator\":303,\"models/tools/on_off_button\":304,\"models/tools/toolbar_base\":305,\"models/tools/gestures/gesture_tool\":306,\"models/tools/actions/action_tool\":307,\"models/tools/actions/help_tool\":308,\"styles/icons\":309,\"styles/logo\":310,\"styles/logo.css\":311,\"models/plots/plot_canvas\":312,\"core/bokeh_events\":313,\"core/ui_events\":314,\"core/util/wheel\":315,\"core/util/throttle\":316,\"core/layout/border\":317,\"core/layout/side_panel\":318,\"models/plots/gmap_plot_canvas\":319,\"models/ranges/index\":320,\"models/renderers/index\":321,\"models/scales/index\":322,\"models/selections/index\":323,\"models/sources/index\":324,\"models/sources/server_sent_data_source\":325,\"models/sources/web_data_source\":326,\"models/sources/ajax_data_source\":327,\"models/sources/geojson_data_source\":328,\"models/tickers/index\":329,\"models/tickers/fixed_ticker\":330,\"models/tiles/index\":331,\"models/tiles/bbox_tile_source\":332,\"models/tiles/mercator_tile_source\":333,\"models/tiles/tile_source\":334,\"models/tiles/tile_utils\":335,\"models/tiles/quadkey_tile_source\":336,\"models/tiles/tile_renderer\":337,\"models/tiles/wmts_tile_source\":338,\"styles/tiles\":339,\"styles/tiles.css\":340,\"models/tiles/tms_tile_source\":341,\"models/textures/index\":342,\"models/textures/canvas_texture\":343,\"models/textures/texture\":344,\"models/textures/image_url_texture\":345,\"models/tools/index\":346,\"models/tools/actions/custom_action\":347,\"models/tools/actions/redo_tool\":348,\"models/tools/actions/reset_tool\":349,\"models/tools/actions/save_tool\":350,\"models/tools/actions/undo_tool\":351,\"models/tools/actions/zoom_in_tool\":352,\"models/tools/actions/zoom_base_tool\":353,\"core/util/zoom\":354,\"models/tools/actions/zoom_out_tool\":355,\"models/tools/edit/edit_tool\":356,\"models/tools/edit/box_edit_tool\":357,\"models/tools/edit/freehand_draw_tool\":358,\"models/tools/edit/point_draw_tool\":359,\"models/tools/edit/poly_draw_tool\":360,\"models/tools/edit/poly_tool\":361,\"models/tools/edit/poly_edit_tool\":362,\"models/tools/gestures/box_select_tool\":363,\"models/tools/gestures/select_tool\":364,\"models/tools/util\":365,\"models/tools/gestures/box_zoom_tool\":366,\"models/tools/gestures/lasso_select_tool\":367,\"models/tools/gestures/poly_select_tool\":368,\"models/tools/edit/line_edit_tool\":369,\"models/tools/edit/line_tool\":370,\"models/tools/gestures/pan_tool\":371,\"models/tools/gestures/range_tool\":372,\"models/tools/gestures/tap_tool\":373,\"models/tools/gestures/wheel_pan_tool\":374,\"models/tools/gestures/wheel_zoom_tool\":375,\"models/tools/inspectors/crosshair_tool\":376,\"models/tools/inspectors/customjs_hover\":377,\"models/tools/inspectors/hover_tool\":378,\"models/tools/tool_proxy\":379,\"models/tools/toolbar_box\":380,\"embed/standalone\":381,\"embed/dom\":382,\"embed/server\":383,\"client/connection\":384,\"protocol/message\":385,\"protocol/receiver\":386,\"client/session\":387,\"embed/notebook\":388,\"styles/notebook.css\":389,\"protocol/index\":390,\"testing\":391,\"safely\":392}, {});\n", - " })\n", - "\n", - "\n", - " /* END bokeh.min.js */\n", - " },\n", - " \n", - " function(Bokeh) {\n", - " /* BEGIN bokeh-widgets.min.js */\n", - " /*!\n", - " * Copyright (c) 2012 - 2020, Anaconda, Inc., and Bokeh Contributors\n", - " * All rights reserved.\n", - " * \n", - " * Redistribution and use in source and binary forms, with or without modification,\n", - " * are permitted provided that the following conditions are met:\n", - " * \n", - " * Redistributions of source code must retain the above copyright notice,\n", - " * this list of conditions and the following disclaimer.\n", - " * \n", - " * Redistributions in binary form must reproduce the above copyright notice,\n", - " * this list of conditions and the following disclaimer in the documentation\n", - " * and/or other materials provided with the distribution.\n", - " * \n", - " * Neither the name of Anaconda nor the names of any contributors\n", - " * may be used to endorse or promote products derived from this software\n", - " * without specific prior written permission.\n", - " * \n", - " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", - " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", - " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", - " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", - " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", - " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", - " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", - " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", - " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", - " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", - " * THE POSSIBILITY OF SUCH DAMAGE.\n", - " */\n", - " (function(root, factory) {\n", - " factory(root[\"Bokeh\"], \"2.2.3\");\n", - " })(this, function(Bokeh, version) {\n", - " var define;\n", - " return (function(modules, entry, aliases, externals) {\n", - " const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n", - " if (bokeh != null) {\n", - " return bokeh.register_plugin(modules, entry, aliases);\n", - " } else {\n", - " throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n", - " }\n", - " })\n", - " ({\n", - " 402: function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(1).__importStar(e(403));o.Widgets=r;e(7).register_models(r)},\n", - " 403: function _(r,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});var a=r(404);t.AbstractButton=a.AbstractButton;var o=r(407);t.AbstractIcon=o.AbstractIcon;var u=r(408);t.AutocompleteInput=u.AutocompleteInput;var n=r(413);t.Button=n.Button;var i=r(414);t.CheckboxButtonGroup=i.CheckboxButtonGroup;var v=r(416);t.CheckboxGroup=v.CheckboxGroup;var p=r(418);t.ColorPicker=p.ColorPicker;var c=r(419);t.DatePicker=c.DatePicker;var l=r(422);t.DateRangeSlider=l.DateRangeSlider;var d=r(428);t.DateSlider=d.DateSlider;var I=r(429);t.Div=I.Div;var g=r(433);t.Dropdown=g.Dropdown;var S=r(434);t.FileInput=S.FileInput;var P=r(410);t.InputWidget=P.InputWidget;var k=r(430);t.Markup=k.Markup;var x=r(435);t.MultiSelect=x.MultiSelect;var D=r(436);t.Paragraph=D.Paragraph;var b=r(437);t.PasswordInput=b.PasswordInput;var s=r(438);t.MultiChoice=s.MultiChoice;var h=r(441);t.NumericInput=h.NumericInput;var A=r(444);t.PreText=A.PreText;var B=r(445);t.RadioButtonGroup=B.RadioButtonGroup;var C=r(446);t.RadioGroup=C.RadioGroup;var G=r(447);t.RangeSlider=G.RangeSlider;var R=r(448);t.Select=R.Select;var T=r(449);t.Slider=T.Slider;var M=r(450);t.Spinner=M.Spinner;var m=r(409);t.TextInput=m.TextInput;var w=r(451);t.TextAreaInput=w.TextAreaInput;var W=r(452);t.Toggle=W.Toggle;var _=r(472);t.Widget=_.Widget},\n", - " 404: function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=t(1),s=i.__importStar(t(18)),o=t(72),l=t(115),r=t(405),_=t(281),c=i.__importDefault(t(283));class u extends r.ControlView{*controls(){yield this.button_el}async lazy_initialize(){await super.lazy_initialize();const{icon:t}=this.model;null!=t&&(this.icon_view=await l.build_view(t,{parent:this}))}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render())}remove(){null!=this.icon_view&&this.icon_view.remove(),super.remove()}styles(){return[...super.styles(),c.default]}_render_button(...t){return o.button({type:\"button\",disabled:this.model.disabled,class:[_.bk_btn,_.bk_btn_type(this.model.button_type)]},...t)}render(){super.render(),this.button_el=this._render_button(this.model.label),this.button_el.addEventListener(\"click\",()=>this.click()),null!=this.icon_view&&(o.prepend(this.button_el,this.icon_view.el,o.nbsp()),this.icon_view.render()),this.group_el=o.div({class:_.bk_btn_group},this.button_el),this.el.appendChild(this.group_el)}click(){}}n.AbstractButtonView=u,u.__name__=\"AbstractButtonView\";class a extends r.Control{constructor(t){super(t)}static init_AbstractButton(){this.define({label:[s.String,\"Button\"],icon:[s.Instance],button_type:[s.ButtonType,\"default\"]})}}n.AbstractButton=a,a.__name__=\"AbstractButton\",a.init_AbstractButton()},\n", - " 405: function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const s=e(472),n=e(72);class i extends s.WidgetView{connect_signals(){super.connect_signals();const e=this.model.properties;this.on_change(e.disabled,()=>{for(const e of this.controls())n.toggle_attribute(e,\"disabled\",this.model.disabled)})}}o.ControlView=i,i.__name__=\"ControlView\";class l extends s.Widget{constructor(e){super(e)}}o.Control=l,l.__name__=\"Control\"},\n", - " 472: function _(i,e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const o=i(1),n=i(276),r=o.__importStar(i(18));class _ extends n.HTMLBoxView{_width_policy(){return\"horizontal\"==this.model.orientation?super._width_policy():\"fixed\"}_height_policy(){return\"horizontal\"==this.model.orientation?\"fixed\":super._height_policy()}box_sizing(){const i=super.box_sizing();return\"horizontal\"==this.model.orientation?null==i.width&&(i.width=this.model.default_size):null==i.height&&(i.height=this.model.default_size),i}}t.WidgetView=_,_.__name__=\"WidgetView\";class s extends n.HTMLBox{constructor(i){super(i)}static init_Widget(){this.define({orientation:[r.Orientation,\"horizontal\"],default_size:[r.Number,300]}),this.override({margin:[5,5,5,5]})}}t.Widget=s,s.__name__=\"Widget\",s.init_Widget()},\n", - " 407: function _(e,t,c){Object.defineProperty(c,\"__esModule\",{value:!0});const s=e(81),n=e(78);class o extends n.DOMView{}c.AbstractIconView=o,o.__name__=\"AbstractIconView\";class _ extends s.Model{constructor(e){super(e)}}c.AbstractIcon=_,_.__name__=\"AbstractIcon\"},\n", - " 408: function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const i=e(1),s=e(409),h=e(72),_=i.__importStar(e(18)),o=e(10),u=e(173),r=e(282),c=i.__importDefault(e(284));class l extends s.TextInputView{constructor(){super(...arguments),this._open=!1,this._last_value=\"\",this._hover_index=0}styles(){return[...super.styles(),c.default]}render(){super.render(),this.input_el.addEventListener(\"keydown\",e=>this._keydown(e)),this.input_el.addEventListener(\"keyup\",e=>this._keyup(e)),this.menu=h.div({class:[r.bk_menu,u.bk_below]}),this.menu.addEventListener(\"click\",e=>this._menu_click(e)),this.menu.addEventListener(\"mouseover\",e=>this._menu_hover(e)),this.el.appendChild(this.menu),h.undisplay(this.menu)}change_input(){this._open&&this.menu.children.length>0&&(this.model.value=this.menu.children[this._hover_index].textContent,this.input_el.focus(),this._hide_menu())}_update_completions(e){h.empty(this.menu);for(const t of e){const e=h.div({},t);this.menu.appendChild(e)}e.length>0&&this.menu.children[0].classList.add(u.bk_active)}_show_menu(){if(!this._open){this._open=!0,this._hover_index=0,this._last_value=this.model.value,h.display(this.menu);const e=t=>{const{target:n}=t;n instanceof HTMLElement&&!this.el.contains(n)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,h.undisplay(this.menu))}_menu_click(e){e.target!=e.currentTarget&&e.target instanceof Element&&(this.model.value=e.target.textContent,this.input_el.focus(),this._hide_menu())}_menu_hover(e){if(e.target!=e.currentTarget&&e.target instanceof Element){let t=0;for(t=0;t0&&(this.menu.children[this._hover_index].classList.remove(u.bk_active),this._hover_index=o.clamp(e,0,t-1),this.menu.children[this._hover_index].classList.add(u.bk_active))}_keydown(e){}_keyup(e){switch(e.keyCode){case h.Keys.Enter:this.change_input();break;case h.Keys.Esc:this._hide_menu();break;case h.Keys.Up:this._bump_hover(this._hover_index-1);break;case h.Keys.Down:this._bump_hover(this._hover_index+1);break;default:{const e=this.input_el.value;if(e.lengthe:e=>e.toLowerCase();for(const n of this.model.completions)i(n).startsWith(i(e))&&t.push(n);this._update_completions(t),0==t.length?this._hide_menu():this._show_menu()}}}}n.AutocompleteInputView=l,l.__name__=\"AutocompleteInputView\";class a extends s.TextInput{constructor(e){super(e)}static init_AutocompleteInput(){this.prototype.default_view=l,this.define({completions:[_.Array,[]],min_characters:[_.Int,2],case_sensitive:[_.Boolean,!0]})}}n.AutocompleteInput=a,a.__name__=\"AutocompleteInput\",a.init_AutocompleteInput()},\n", - " 409: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(410),l=e(72),p=n.__importStar(e(18)),u=e(412);class a extends s.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,()=>this.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.value.change,()=>this.input_el.value=this.model.value),this.connect(this.model.properties.value_input.change,()=>this.input_el.value=this.model.value_input),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled),this.connect(this.model.properties.placeholder.change,()=>this.input_el.placeholder=this.model.placeholder)}render(){super.render(),this.input_el=l.input({type:\"text\",class:u.bk_input,name:this.model.name,value:this.model.value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.input_el.addEventListener(\"input\",()=>this.change_input_oninput()),this.group_el.appendChild(this.input_el)}change_input(){this.model.value=this.input_el.value,super.change_input()}change_input_oninput(){this.model.value_input=this.input_el.value,super.change_input()}}i.TextInputView=a,a.__name__=\"TextInputView\";class h extends s.InputWidget{constructor(e){super(e)}static init_TextInput(){this.prototype.default_view=a,this.define({value:[p.String,\"\"],value_input:[p.String,\"\"],placeholder:[p.String,\"\"]})}}i.TextInput=h,h.__name__=\"TextInput\",h.init_TextInput()},\n", - " 410: function _(t,e,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=t(1),l=t(405),s=t(72),_=n.__importStar(t(18)),o=n.__importDefault(t(411)),r=t(412);class p extends l.ControlView{*controls(){yield this.input_el}connect_signals(){super.connect_signals(),this.connect(this.model.properties.title.change,()=>{this.label_el.textContent=this.model.title})}styles(){return[...super.styles(),o.default]}render(){super.render();const{title:t}=this.model;this.label_el=s.label({style:{display:0==t.length?\"none\":\"\"}},t),this.group_el=s.div({class:r.bk_input_group},this.label_el),this.el.appendChild(this.group_el)}change_input(){}}i.InputWidgetView=p,p.__name__=\"InputWidgetView\";class u extends l.Control{constructor(t){super(t)}static init_InputWidget(){this.define({title:[_.String,\"\"]})}}i.InputWidget=u,u.__name__=\"InputWidget\",u.init_InputWidget()},\n", - " 411: function _(n,o,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root .bk-input {\\n display: inline-block;\\n width: 100%;\\n flex-grow: 1;\\n -webkit-flex-grow: 1;\\n min-height: 31px;\\n padding: 0 12px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n}\\n.bk-root .bk-input:focus {\\n border-color: #66afe9;\\n outline: 0;\\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\\n}\\n.bk-root .bk-input::placeholder,\\n.bk-root .bk-input:-ms-input-placeholder,\\n.bk-root .bk-input::-moz-placeholder,\\n.bk-root .bk-input::-webkit-input-placeholder {\\n color: #999;\\n opacity: 1;\\n}\\n.bk-root .bk-input[disabled] {\\n cursor: not-allowed;\\n background-color: #eee;\\n opacity: 1;\\n}\\n.bk-root select:not([multiple]).bk-input,\\n.bk-root select:not([size]).bk-input {\\n height: auto;\\n appearance: none;\\n -webkit-appearance: none;\\n background-image: url(\\'data:image/svg+xml;utf8,\\');\\n background-position: right 0.5em center;\\n background-size: 8px 6px;\\n background-repeat: no-repeat;\\n}\\n.bk-root select[multiple].bk-input,\\n.bk-root select[size].bk-input,\\n.bk-root textarea.bk-input {\\n height: auto;\\n}\\n.bk-root .bk-input-group {\\n width: 100%;\\n height: 100%;\\n display: inline-flex;\\n display: -webkit-inline-flex;\\n flex-wrap: nowrap;\\n -webkit-flex-wrap: nowrap;\\n align-items: start;\\n -webkit-align-items: start;\\n flex-direction: column;\\n -webkit-flex-direction: column;\\n white-space: nowrap;\\n}\\n.bk-root .bk-input-group.bk-inline {\\n flex-direction: row;\\n -webkit-flex-direction: row;\\n}\\n.bk-root .bk-input-group.bk-inline > *:not(:first-child) {\\n margin-left: 5px;\\n}\\n.bk-root .bk-input-group input[type=\"checkbox\"] + span,\\n.bk-root .bk-input-group input[type=\"radio\"] + span {\\n position: relative;\\n top: -2px;\\n margin-left: 3px;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper {\\n display: inherit;\\n width: inherit;\\n height: inherit;\\n position: relative;\\n overflow: hidden;\\n padding: 0;\\n vertical-align: middle;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper input {\\n padding-right: 20px;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn {\\n position: absolute;\\n display: block;\\n height: 50%;\\n min-height: 0;\\n min-width: 0;\\n width: 30px;\\n padding: 0;\\n margin: 0;\\n right: 0;\\n border: none;\\n background: none;\\n cursor: pointer;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn:before {\\n content: \"\";\\n display: inline-block;\\n transform: translateY(-50%);\\n border-left: 5px solid transparent;\\n border-right: 5px solid transparent;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up {\\n top: 0;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:before {\\n border-bottom: 5px solid black;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:disabled:before {\\n border-bottom-color: grey;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down {\\n bottom: 0;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:before {\\n border-top: 5px solid black;\\n}\\n.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:disabled:before {\\n border-top-color: grey;\\n}\\n'},\n", - " 412: function _(u,e,n){Object.defineProperty(n,\"__esModule\",{value:!0}),n.bk_input=\"bk-input\",n.bk_input_group=\"bk-input-group\"},\n", - " 413: function _(t,e,n){Object.defineProperty(n,\"__esModule\",{value:!0});const o=t(404),i=t(313);class s extends o.AbstractButtonView{click(){this.model.trigger_event(new i.ButtonClick),super.click()}}n.ButtonView=s,s.__name__=\"ButtonView\";class u extends o.AbstractButton{constructor(t){super(t)}static init_Button(){this.prototype.default_view=s,this.override({label:\"Button\"})}}n.Button=u,u.__name__=\"Button\",u.init_Button()},\n", - " 414: function _(t,e,o){Object.defineProperty(o,\"__esModule\",{value:!0});const i=t(1),c=t(415),s=t(72),n=i.__importStar(t(18)),a=t(173);class u extends c.ButtonGroupView{get active(){return new Set(this.model.active)}change_active(t){const{active:e}=this;e.has(t)?e.delete(t):e.add(t),this.model.active=[...e].sort()}_update_active(){const{active:t}=this;this._buttons.forEach((e,o)=>{s.classes(e).toggle(a.bk_active,t.has(o))})}}o.CheckboxButtonGroupView=u,u.__name__=\"CheckboxButtonGroupView\";class r extends c.ButtonGroup{constructor(t){super(t)}static init_CheckboxButtonGroup(){this.prototype.default_view=u,this.define({active:[n.Array,[]]})}}o.CheckboxButtonGroup=r,r.__name__=\"CheckboxButtonGroup\",r.init_CheckboxButtonGroup()},\n", - " 415: function _(t,e,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=t(1),o=t(405),i=t(72),r=n.__importStar(t(18)),_=t(281),u=n.__importDefault(t(283));class a extends o.ControlView{*controls(){yield*this._buttons}connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.button_type,()=>this.render()),this.on_change(t.labels,()=>this.render()),this.on_change(t.active,()=>this._update_active())}styles(){return[...super.styles(),u.default]}render(){super.render(),this._buttons=this.model.labels.map((t,e)=>{const s=i.div({class:[_.bk_btn,_.bk_btn_type(this.model.button_type)],disabled:this.model.disabled},t);return s.addEventListener(\"click\",()=>this.change_active(e)),s}),this._update_active();const t=i.div({class:_.bk_btn_group},this._buttons);this.el.appendChild(t)}}s.ButtonGroupView=a,a.__name__=\"ButtonGroupView\";class l extends o.Control{constructor(t){super(t)}static init_ButtonGroup(){this.define({labels:[r.Array,[]],button_type:[r.ButtonType,\"default\"]})}}s.ButtonGroup=l,l.__name__=\"ButtonGroup\",l.init_ButtonGroup()},\n", - " 416: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(417),o=e(72),c=e(9),a=n.__importStar(e(18)),l=e(173),d=e(412);class r extends s.InputGroupView{render(){super.render();const e=o.div({class:[d.bk_input_group,this.model.inline?l.bk_inline:null]});this.el.appendChild(e);const{active:t,labels:i}=this.model;this._inputs=[];for(let n=0;nthis.change_active(n)),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),c.includes(t,n)&&(s.checked=!0);const a=o.label({},s,o.span({},i[n]));e.appendChild(a)}}change_active(e){const t=new Set(this.model.active);t.has(e)?t.delete(e):t.add(e),this.model.active=[...t].sort()}}i.CheckboxGroupView=r,r.__name__=\"CheckboxGroupView\";class p extends s.InputGroup{constructor(e){super(e)}static init_CheckboxGroup(){this.prototype.default_view=r,this.define({active:[a.Array,[]],labels:[a.Array,[]],inline:[a.Boolean,!1]})}}i.CheckboxGroup=p,p.__name__=\"CheckboxGroup\",p.init_CheckboxGroup()},\n", - " 417: function _(e,t,n){Object.defineProperty(n,\"__esModule\",{value:!0});const s=e(1),o=e(405),r=s.__importDefault(e(411));class u extends o.ControlView{*controls(){yield*this._inputs}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render())}styles(){return[...super.styles(),r.default]}}n.InputGroupView=u,u.__name__=\"InputGroupView\";class _ extends o.Control{constructor(e){super(e)}}n.InputGroup=_,_.__name__=\"InputGroup\"},\n", - " 418: function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),o=e(410),s=e(72),l=n.__importStar(e(18)),r=e(412);class c extends o.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,()=>this.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.color.change,()=>this.input_el.value=this.model.color),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled)}render(){super.render(),this.input_el=s.input({type:\"color\",class:r.bk_input,name:this.model.name,value:this.model.color,disabled:this.model.disabled}),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.input_el)}change_input(){this.model.color=this.input_el.value,super.change_input()}}t.ColorPickerView=c,c.__name__=\"ColorPickerView\";class d extends o.InputWidget{constructor(e){super(e)}static init_ColorPicker(){this.prototype.default_view=c,this.define({color:[l.Color,\"#000000\"]})}}t.ColorPicker=d,d.__name__=\"ColorPicker\",d.init_ColorPicker()},\n", - " 419: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=n.__importDefault(e(420)),a=e(410),l=e(72),o=n.__importStar(e(18)),r=e(8),d=e(412),c=n.__importDefault(e(421));function u(e){const t=[];for(const i of e)if(r.isString(i))t.push(i);else{const[e,n]=i;t.push({from:e,to:n})}return t}class _ extends a.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,min_date:t,max_date:i,disabled_dates:n,enabled_dates:s,position:a,inline:l}=this.model.properties;this.connect(e.change,()=>{var t;return null===(t=this._picker)||void 0===t?void 0:t.setDate(e.value())}),this.connect(t.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"minDate\",t.value())}),this.connect(i.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"maxDate\",i.value())}),this.connect(n.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"disable\",n.value())}),this.connect(s.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"enable\",s.value())}),this.connect(a.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"position\",a.value())}),this.connect(l.change,()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"inline\",l.value())})}remove(){var e;null===(e=this._picker)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),c.default]}render(){null==this._picker&&(super.render(),this.input_el=l.input({type:\"text\",class:d.bk_input,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el),this._picker=s.default(this.input_el,{defaultDate:this.model.value,minDate:this.model.min_date,maxDate:this.model.max_date,inline:this.model.inline,position:this.model.position,disable:u(this.model.disabled_dates),enable:u(this.model.enabled_dates),onChange:(e,t,i)=>this._on_change(e,t,i)}))}_on_change(e,t,i){this.model.value=t,this.change_input()}}i.DatePickerView=_,_.__name__=\"DatePickerView\";class h extends a.InputWidget{constructor(e){super(e)}static init_DatePicker(){this.prototype.default_view=_,this.define({value:[o.Any],min_date:[o.Any],max_date:[o.Any],disabled_dates:[o.Any,[]],enabled_dates:[o.Any,[]],position:[o.CalendarPosition,\"auto\"],inline:[o.Boolean,!1]})}}i.DatePicker=h,h.__name__=\"DatePicker\",h.init_DatePicker()},\n", - " 420: function _(e,t,n){\n", - " /* flatpickr v4.6.3, @license MIT */var a,i;a=this,i=function(){\"use strict\";\n", - " /*! *****************************************************************************\n", - " Copyright (c) Microsoft Corporation. All rights reserved.\n", - " Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\n", - " this file except in compliance with the License. You may obtain a copy of the\n", - " License at http://www.apache.org/licenses/LICENSE-2.0\n", - " \n", - " THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n", - " KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\n", - " WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\n", - " MERCHANTABLITY OR NON-INFRINGEMENT.\n", - " \n", - " See the Apache Version 2.0 License for specific language governing permissions\n", - " and limitations under the License.\n", - " ***************************************************************************** */var e=function(){return(e=Object.assign||function(e){for(var t,n=1,a=arguments.length;n\",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:\"auto\",positionElement:void 0,prevArrow:\"\",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},a={weekdays:{shorthand:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],longhand:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]},months:{shorthand:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],longhand:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return\"th\";switch(t%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\"}},rangeSeparator:\" to \",weekAbbreviation:\"Wk\",scrollTitle:\"Scroll to increment\",toggleTitle:\"Click to toggle\",amPM:[\"AM\",\"PM\"],yearAriaLabel:\"Year\",hourAriaLabel:\"Hour\",minuteAriaLabel:\"Minute\",time_24hr:!1},i=function(e){return(\"0\"+e).slice(-2)},o=function(e){return!0===e?1:0};function r(e,t,n){var a;return void 0===n&&(n=!1),function(){var i=this,o=arguments;null!==a&&clearTimeout(a),a=window.setTimeout((function(){a=null,n||e.apply(i,o)}),t),n&&!a&&e.apply(i,o)}}var l=function(e){return e instanceof Array?e:[e]};function c(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function d(e,t,n){var a=window.document.createElement(e);return t=t||\"\",n=n||\"\",a.className=t,void 0!==n&&(a.textContent=n),a}function s(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function u(e,t){var n=d(\"div\",\"numInputWrapper\"),a=d(\"input\",\"numInput \"+e),i=d(\"span\",\"arrowUp\"),o=d(\"span\",\"arrowDown\");if(-1===navigator.userAgent.indexOf(\"MSIE 9.0\")?a.type=\"number\":(a.type=\"text\",a.pattern=\"\\\\d*\"),void 0!==t)for(var r in t)a.setAttribute(r,t[r]);return n.appendChild(a),n.appendChild(i),n.appendChild(o),n}var f=function(){},m=function(e,t,n){return n.months[t?\"shorthand\":\"longhand\"][e]},g={D:f,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours(parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*o(new RegExp(n.amPM[1],\"i\").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var a=parseInt(t),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+n.firstDayOfWeek),i},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours(parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:f,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:f,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},p={D:\"(\\\\w+)\",F:\"(\\\\w+)\",G:\"(\\\\d\\\\d|\\\\d)\",H:\"(\\\\d\\\\d|\\\\d)\",J:\"(\\\\d\\\\d|\\\\d)\\\\w+\",K:\"\",M:\"(\\\\w+)\",S:\"(\\\\d\\\\d|\\\\d)\",U:\"(.+)\",W:\"(\\\\d\\\\d|\\\\d)\",Y:\"(\\\\d{4})\",Z:\"(.+)\",d:\"(\\\\d\\\\d|\\\\d)\",h:\"(\\\\d\\\\d|\\\\d)\",i:\"(\\\\d\\\\d|\\\\d)\",j:\"(\\\\d\\\\d|\\\\d)\",l:\"(\\\\w+)\",m:\"(\\\\d\\\\d|\\\\d)\",n:\"(\\\\d\\\\d|\\\\d)\",s:\"(\\\\d\\\\d|\\\\d)\",u:\"(.+)\",w:\"(\\\\d\\\\d|\\\\d)\",y:\"(\\\\d{2})\"},h={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[h.w(e,t,n)]},F:function(e,t,n){return m(h.n(e,t,n)-1,!1,t)},G:function(e,t,n){return i(h.h(e,t,n))},H:function(e){return i(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[o(e.getHours()>11)]},M:function(e,t){return m(e.getMonth(),!0,t)},S:function(e){return i(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return e.getFullYear()},d:function(e){return i(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return i(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return i(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},v=function(e){var t=e.config,i=void 0===t?n:t,o=e.l10n,r=void 0===o?a:o;return function(e,t,n){var a=n||r;return void 0!==i.formatDate?i.formatDate(e,t,a):t.split(\"\").map((function(t,n,o){return h[t]&&\"\\\\\"!==o[n-1]?h[t](e,a,i):\"\\\\\"!==t?t:\"\"})).join(\"\")}},D=function(e){var t=e.config,i=void 0===t?n:t,o=e.l10n,r=void 0===o?a:o;return function(e,t,a,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if(\"string\"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if(\"string\"==typeof e){var s=t||(i||n).dateFormat,u=String(e).trim();if(\"today\"===u)l=new Date,a=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(i&&i.parseDate)l=i.parseDate(e,s);else{l=i&&i.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],h=0,v=0,D=\"\";hr&&(s=n===h.hourElement?s-r-o(!h.amPM):a,f&&Y(void 0,1,h.hourElement)),h.amPM&&u&&(1===l?s+c===23:Math.abs(s-c)>l)&&(h.amPM.textContent=h.l10n.amPM[o(h.amPM.textContent===h.l10n.amPM[0])]),n.value=i(s)}}(e);var t=h._input.value;E(),ve(),h._input.value!==t&&h._debouncedChange()}function E(){if(void 0!==h.hourElement&&void 0!==h.minuteElement){var e,t,n=(parseInt(h.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(h.minuteElement.value,10)||0)%60,i=void 0!==h.secondElement?(parseInt(h.secondElement.value,10)||0)%60:0;void 0!==h.amPM&&(e=n,t=h.amPM.textContent,n=e%12+12*o(t===h.l10n.amPM[1]));var r=void 0!==h.config.minTime||h.config.minDate&&h.minDateHasTime&&h.latestSelectedDateObj&&0===w(h.latestSelectedDateObj,h.config.minDate,!0);if(void 0!==h.config.maxTime||h.config.maxDate&&h.maxDateHasTime&&h.latestSelectedDateObj&&0===w(h.latestSelectedDateObj,h.config.maxDate,!0)){var l=void 0!==h.config.maxTime?h.config.maxTime:h.config.maxDate;(n=Math.min(n,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(r){var c=void 0!==h.config.minTime?h.config.minTime:h.config.minDate;(n=Math.max(n,c.getHours()))===c.getHours()&&(a=Math.max(a,c.getMinutes())),a===c.getMinutes()&&(i=Math.max(i,c.getSeconds()))}I(n,a,i)}}function T(e){var t=e||h.latestSelectedDateObj;t&&I(t.getHours(),t.getMinutes(),t.getSeconds())}function k(){var e=h.config.defaultHour,t=h.config.defaultMinute,n=h.config.defaultSeconds;if(void 0!==h.config.minDate){var a=h.config.minDate.getHours(),i=h.config.minDate.getMinutes();(e=Math.max(e,a))===a&&(t=Math.max(i,t)),e===a&&t===i&&(n=h.config.minDate.getSeconds())}if(void 0!==h.config.maxDate){var o=h.config.maxDate.getHours(),r=h.config.maxDate.getMinutes();(e=Math.min(e,o))===o&&(t=Math.min(r,t)),e===o&&t===r&&(n=h.config.maxDate.getSeconds())}I(e,t,n)}function I(e,t,n){void 0!==h.latestSelectedDateObj&&h.latestSelectedDateObj.setHours(e%24,t,n||0,0),h.hourElement&&h.minuteElement&&!h.isMobile&&(h.hourElement.value=i(h.config.time_24hr?e:(12+e)%12+12*o(e%12==0)),h.minuteElement.value=i(t),void 0!==h.amPM&&(h.amPM.textContent=h.l10n.amPM[o(e>=12)]),void 0!==h.secondElement&&(h.secondElement.value=i(n)))}function S(e){var t=parseInt(e.target.value)+(e.delta||0);(t/1e3>1||\"Enter\"===e.key&&!/[^\\d]/.test(t.toString()))&&V(t)}function O(e,t,n,a){return t instanceof Array?t.forEach((function(t){return O(e,t,n,a)})):e instanceof Array?e.forEach((function(e){return O(e,t,n,a)})):(e.addEventListener(t,n,a),void h._handlers.push({element:e,event:t,handler:n,options:a}))}function _(e){return function(t){1===t.which&&e(t)}}function F(){fe(\"onChange\")}function N(e,t){var n=void 0!==e?h.parseDate(e):h.latestSelectedDateObj||(h.config.minDate&&h.config.minDate>h.now?h.config.minDate:h.config.maxDate&&h.config.maxDate=0&&w(e,h.selectedDates[1])<=0}(t)&&!ge(t)&&o.classList.add(\"inRange\"),h.weekNumbers&&1===h.config.showMonths&&\"prevMonthDay\"!==e&&n%7==1&&h.weekNumbers.insertAdjacentHTML(\"beforeend\",\"\"+h.config.getWeek(t)+\"\"),fe(\"onDayCreate\",o),o}function j(e){e.focus(),\"range\"===h.config.mode&&ee(e)}function H(e){for(var t=e>0?0:h.config.showMonths-1,n=e>0?h.config.showMonths:-1,a=t;a!=n;a+=e)for(var i=h.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf(\"hidden\")&&Z(c.dateObj))return c}}function L(e,t){var n=Q(document.activeElement||document.body),a=void 0!==e?e:n?document.activeElement:void 0!==h.selectedDateElem&&Q(h.selectedDateElem)?h.selectedDateElem:void 0!==h.todayDateElem&&Q(h.todayDateElem)?h.todayDateElem:H(t>0?1:-1);return void 0===a?h._input.focus():n?void function(e,t){for(var n=-1===e.className.indexOf(\"Month\")?e.dateObj.getMonth():h.currentMonth,a=t>0?h.config.showMonths:-1,i=t>0?1:-1,o=n-h.currentMonth;o!=a;o+=i)for(var r=h.daysContainer.children[o],l=n-h.currentMonth===o?e.$i+t:t<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf(\"hidden\")&&Z(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(t))return j(s)}h.changeMonth(i),L(H(i),0)}(a,t):j(a)}function W(e,t){for(var n=(new Date(e,t,1).getDay()-h.l10n.firstDayOfWeek+7)%7,a=h.utils.getDaysInMonth((t-1+12)%12),i=h.utils.getDaysInMonth(t),o=window.document.createDocumentFragment(),r=h.config.showMonths>1,l=r?\"prevMonthDay hidden\":\"prevMonthDay\",c=r?\"nextMonthDay hidden\":\"nextMonthDay\",s=a+1-n,u=0;s<=a;s++,u++)o.appendChild(A(l,new Date(e,t-1,s),s,u));for(s=1;s<=i;s++,u++)o.appendChild(A(\"\",new Date(e,t,s),s,u));for(var f=i+1;f<=42-n&&(1===h.config.showMonths||u%7!=0);f++,u++)o.appendChild(A(c,new Date(e,t+1,f%i),f,u));var m=d(\"div\",\"dayContainer\");return m.appendChild(o),m}function R(){if(void 0!==h.daysContainer){s(h.daysContainer),h.weekNumbers&&s(h.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t1||\"dropdown\"!==h.config.monthSelectorType)){var e=function(e){return!(void 0!==h.config.minDate&&h.currentYear===h.config.minDate.getFullYear()&&eh.config.maxDate.getMonth())};h.monthsDropdownContainer.tabIndex=-1,h.monthsDropdownContainer.innerHTML=\"\";for(var t=0;t<12;t++)if(e(t)){var n=d(\"option\",\"flatpickr-monthDropdown-month\");n.value=new Date(h.currentYear,t).getMonth().toString(),n.textContent=m(t,h.config.shorthandCurrentMonth,h.l10n),n.tabIndex=-1,h.currentMonth===t&&(n.selected=!0),h.monthsDropdownContainer.appendChild(n)}}}function J(){var e,t=d(\"div\",\"flatpickr-month\"),n=window.document.createDocumentFragment();h.config.showMonths>1||\"static\"===h.config.monthSelectorType?e=d(\"span\",\"cur-month\"):(h.monthsDropdownContainer=d(\"select\",\"flatpickr-monthDropdown-months\"),O(h.monthsDropdownContainer,\"change\",(function(e){var t=e.target,n=parseInt(t.value,10);h.changeMonth(n-h.currentMonth),fe(\"onMonthChange\")})),B(),e=h.monthsDropdownContainer);var a=u(\"cur-year\",{tabindex:\"-1\"}),i=a.getElementsByTagName(\"input\")[0];i.setAttribute(\"aria-label\",h.l10n.yearAriaLabel),h.config.minDate&&i.setAttribute(\"min\",h.config.minDate.getFullYear().toString()),h.config.maxDate&&(i.setAttribute(\"max\",h.config.maxDate.getFullYear().toString()),i.disabled=!!h.config.minDate&&h.config.minDate.getFullYear()===h.config.maxDate.getFullYear());var o=d(\"div\",\"flatpickr-current-month\");return o.appendChild(e),o.appendChild(a),n.appendChild(o),t.appendChild(n),{container:t,yearElement:i,monthElement:e}}function K(){s(h.monthNav),h.monthNav.appendChild(h.prevMonthNav),h.config.showMonths&&(h.yearElements=[],h.monthElements=[]);for(var e=h.config.showMonths;e--;){var t=J();h.yearElements.push(t.yearElement),h.monthElements.push(t.monthElement),h.monthNav.appendChild(t.container)}h.monthNav.appendChild(h.nextMonthNav)}function U(){h.weekdayContainer?s(h.weekdayContainer):h.weekdayContainer=d(\"div\",\"flatpickr-weekdays\");for(var e=h.config.showMonths;e--;){var t=d(\"div\",\"flatpickr-weekdaycontainer\");h.weekdayContainer.appendChild(t)}return q(),h.weekdayContainer}function q(){if(h.weekdayContainer){var e=h.l10n.firstDayOfWeek,t=h.l10n.weekdays.shorthand.slice();e>0&&e\\n \"+t.join(\"
\")+\"\\n \\n \"}}function $(e,t){void 0===t&&(t=!0);var n=t?e:e-h.currentMonth;n<0&&!0===h._hidePrevMonthArrow||n>0&&!0===h._hideNextMonthArrow||(h.currentMonth+=n,(h.currentMonth<0||h.currentMonth>11)&&(h.currentYear+=h.currentMonth>11?1:-1,h.currentMonth=(h.currentMonth+12)%12,fe(\"onYearChange\"),B()),R(),fe(\"onMonthChange\"),pe())}function z(e){return!(!h.config.appendTo||!h.config.appendTo.contains(e))||h.calendarContainer.contains(e)}function G(e){if(h.isOpen&&!h.config.inline){var t=\"function\"==typeof(r=e).composedPath?r.composedPath()[0]:r.target,n=z(t),a=t===h.input||t===h.altInput||h.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(h.input)||~e.path.indexOf(h.altInput)),i=\"blur\"===e.type?a&&e.relatedTarget&&!z(e.relatedTarget):!a&&!n&&!z(e.relatedTarget),o=!h.config.ignoredFocusElements.some((function(e){return e.contains(t)}));i&&o&&(void 0!==h.timeContainer&&void 0!==h.minuteElement&&void 0!==h.hourElement&&x(),h.close(),\"range\"===h.config.mode&&1===h.selectedDates.length&&(h.clear(!1),h.redraw()))}var r}function V(e){if(!(!e||h.config.minDate&&eh.config.maxDate.getFullYear())){var t=e,n=h.currentYear!==t;h.currentYear=t||h.currentYear,h.config.maxDate&&h.currentYear===h.config.maxDate.getFullYear()?h.currentMonth=Math.min(h.config.maxDate.getMonth(),h.currentMonth):h.config.minDate&&h.currentYear===h.config.minDate.getFullYear()&&(h.currentMonth=Math.max(h.config.minDate.getMonth(),h.currentMonth)),n&&(h.redraw(),fe(\"onYearChange\"),B())}}function Z(e,t){void 0===t&&(t=!0);var n=h.parseDate(e,void 0,t);if(h.config.minDate&&n&&w(n,h.config.minDate,void 0!==t?t:!h.minDateHasTime)<0||h.config.maxDate&&n&&w(n,h.config.maxDate,void 0!==t?t:!h.maxDateHasTime)>0)return!1;if(0===h.config.enable.length&&0===h.config.disable.length)return!0;if(void 0===n)return!1;for(var a=h.config.enable.length>0,i=a?h.config.enable:h.config.disable,o=0,r=void 0;o=r.from.getTime()&&n.getTime()<=r.to.getTime())return a}return!a}function Q(e){return void 0!==h.daysContainer&&-1===e.className.indexOf(\"hidden\")&&h.daysContainer.contains(e)}function X(e){var t=e.target===h._input,n=h.config.allowInput,a=h.isOpen&&(!n||!t),i=h.config.inline&&t&&!n;if(13===e.keyCode&&t){if(n)return h.setDate(h._input.value,!0,e.target===h.altInput?h.config.altFormat:h.config.dateFormat),e.target.blur();h.open()}else if(z(e.target)||a||i){var o=!!h.timeContainer&&h.timeContainer.contains(e.target);switch(e.keyCode){case 13:o?(e.preventDefault(),x(),le()):ce(e);break;case 27:e.preventDefault(),le();break;case 8:case 46:t&&!h.config.allowInput&&(e.preventDefault(),h.clear());break;case 37:case 39:if(o||t)h.hourElement&&h.hourElement.focus();else if(e.preventDefault(),void 0!==h.daysContainer&&(!1===n||document.activeElement&&Q(document.activeElement))){var r=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),$(r),L(H(1),0)):L(void 0,r)}break;case 38:case 40:e.preventDefault();var l=40===e.keyCode?1:-1;h.daysContainer&&void 0!==e.target.$i||e.target===h.input||e.target===h.altInput?e.ctrlKey?(e.stopPropagation(),V(h.currentYear-l),L(H(1),0)):o||L(void 0,7*l):e.target===h.currentYearElement?V(h.currentYear-l):h.config.enableTime&&(!o&&h.hourElement&&h.hourElement.focus(),x(e),h._debouncedChange());break;case 9:if(o){var c=[h.hourElement,h.minuteElement,h.secondElement,h.amPM].concat(h.pluginElements).filter((function(e){return e})),d=c.indexOf(e.target);if(-1!==d){var s=c[d+(e.shiftKey?-1:1)];e.preventDefault(),(s||h._input).focus()}}else!h.config.noCalendar&&h.daysContainer&&h.daysContainer.contains(e.target)&&e.shiftKey&&(e.preventDefault(),h._input.focus())}}if(void 0!==h.amPM&&e.target===h.amPM)switch(e.key){case h.l10n.amPM[0].charAt(0):case h.l10n.amPM[0].charAt(0).toLowerCase():h.amPM.textContent=h.l10n.amPM[0],E(),ve();break;case h.l10n.amPM[1].charAt(0):case h.l10n.amPM[1].charAt(0).toLowerCase():h.amPM.textContent=h.l10n.amPM[1],E(),ve()}(t||z(e.target))&&fe(\"onKeyDown\",e)}function ee(e){if(1===h.selectedDates.length&&(!e||e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\"))){for(var t=e?e.dateObj.getTime():h.days.firstElementChild.dateObj.getTime(),n=h.parseDate(h.selectedDates[0],void 0,!0).getTime(),a=Math.min(t,h.selectedDates[0].getTime()),i=Math.max(t,h.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;ca&&cr)?r=c:c>n&&(!l||c0&&m0&&m>l;return g?(f.classList.add(\"notAllowed\"),[\"inRange\",\"startRange\",\"endRange\"].forEach((function(e){f.classList.remove(e)})),\"continue\"):o&&!g?\"continue\":([\"startRange\",\"inRange\",\"endRange\",\"notAllowed\"].forEach((function(e){f.classList.remove(e)})),void(void 0!==e&&(e.classList.add(t<=h.selectedDates[0].getTime()?\"startRange\":\"endRange\"),nt&&m===n&&f.classList.add(\"endRange\"),m>=r&&(0===l||m<=l)&&(d=n,u=t,(c=m)>Math.min(d,u)&&c0||n.getMinutes()>0||n.getSeconds()>0),h.selectedDates&&(h.selectedDates=h.selectedDates.filter((function(e){return Z(e)})),h.selectedDates.length||\"min\"!==e||T(n),ve()),h.daysContainer&&(re(),void 0!==n?h.currentYearElement[e]=n.getFullYear().toString():h.currentYearElement.removeAttribute(e),h.currentYearElement.disabled=!!a&&void 0!==n&&a.getFullYear()===n.getFullYear())}}function ie(){\"object\"!=typeof h.config.locale&&void 0===y.l10ns[h.config.locale]&&h.config.errorHandler(new Error(\"flatpickr: invalid locale \"+h.config.locale)),h.l10n=e({},y.l10ns.default,\"object\"==typeof h.config.locale?h.config.locale:\"default\"!==h.config.locale?y.l10ns[h.config.locale]:void 0),p.K=\"(\"+h.l10n.amPM[0]+\"|\"+h.l10n.amPM[1]+\"|\"+h.l10n.amPM[0].toLowerCase()+\"|\"+h.l10n.amPM[1].toLowerCase()+\")\",void 0===e({},g,JSON.parse(JSON.stringify(f.dataset||{}))).time_24hr&&void 0===y.defaultConfig.time_24hr&&(h.config.time_24hr=h.l10n.time_24hr),h.formatDate=v(h),h.parseDate=D({config:h.config,l10n:h.l10n})}function oe(e){if(void 0!==h.calendarContainer){fe(\"onPreCalendarPosition\");var t=e||h._positionElement,n=Array.prototype.reduce.call(h.calendarContainer.children,(function(e,t){return e+t.offsetHeight}),0),a=h.calendarContainer.offsetWidth,i=h.config.position.split(\" \"),o=i[0],r=i.length>1?i[1]:null,l=t.getBoundingClientRect(),d=window.innerHeight-l.bottom,s=\"above\"===o||\"below\"!==o&&dn,u=window.pageYOffset+l.top+(s?-n-2:t.offsetHeight+2);if(c(h.calendarContainer,\"arrowTop\",!s),c(h.calendarContainer,\"arrowBottom\",s),!h.config.inline){var f=window.pageXOffset+l.left-(null!=r&&\"center\"===r?(a-l.width)/2:0),m=window.document.body.offsetWidth-(window.pageXOffset+l.right),g=f+a>window.document.body.offsetWidth,p=m+a>window.document.body.offsetWidth;if(c(h.calendarContainer,\"rightMost\",g),!h.config.static)if(h.calendarContainer.style.top=u+\"px\",g)if(p){var v=document.styleSheets[0];if(void 0===v)return;var D=window.document.body.offsetWidth,w=Math.max(0,D/2-a/2),b=v.cssRules.length,C=\"{left:\"+l.left+\"px;right:auto;}\";c(h.calendarContainer,\"rightMost\",!1),c(h.calendarContainer,\"centerMost\",!0),v.insertRule(\".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after\"+C,b),h.calendarContainer.style.left=w+\"px\",h.calendarContainer.style.right=\"auto\"}else h.calendarContainer.style.left=\"auto\",h.calendarContainer.style.right=m+\"px\";else h.calendarContainer.style.left=f+\"px\",h.calendarContainer.style.right=\"auto\"}}}function re(){h.config.noCalendar||h.isMobile||(pe(),R())}function le(){h._input.focus(),-1!==window.navigator.userAgent.indexOf(\"MSIE\")||void 0!==navigator.msMaxTouchPoints?setTimeout(h.close,0):h.close()}function ce(e){e.preventDefault(),e.stopPropagation();var t=function e(t,n){return n(t)?t:t.parentNode?e(t.parentNode,n):void 0}(e.target,(function(e){return e.classList&&e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\")&&!e.classList.contains(\"notAllowed\")}));if(void 0!==t){var n=t,a=h.latestSelectedDateObj=new Date(n.dateObj.getTime()),i=(a.getMonth()h.currentMonth+h.config.showMonths-1)&&\"range\"!==h.config.mode;if(h.selectedDateElem=n,\"single\"===h.config.mode)h.selectedDates=[a];else if(\"multiple\"===h.config.mode){var o=ge(a);o?h.selectedDates.splice(parseInt(o),1):h.selectedDates.push(a)}else\"range\"===h.config.mode&&(2===h.selectedDates.length&&h.clear(!1,!1),h.latestSelectedDateObj=a,h.selectedDates.push(a),0!==w(a,h.selectedDates[0],!0)&&h.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()})));if(E(),i){var r=h.currentYear!==a.getFullYear();h.currentYear=a.getFullYear(),h.currentMonth=a.getMonth(),r&&(fe(\"onYearChange\"),B()),fe(\"onMonthChange\")}if(pe(),R(),ve(),h.config.enableTime&&setTimeout((function(){return h.showTimeInput=!0}),50),i||\"range\"===h.config.mode||1!==h.config.showMonths?void 0!==h.selectedDateElem&&void 0===h.hourElement&&h.selectedDateElem&&h.selectedDateElem.focus():j(n),void 0!==h.hourElement&&void 0!==h.hourElement&&h.hourElement.focus(),h.config.closeOnSelect){var l=\"single\"===h.config.mode&&!h.config.enableTime,c=\"range\"===h.config.mode&&2===h.selectedDates.length&&!h.config.enableTime;(l||c)&&le()}F()}}h.parseDate=D({config:h.config,l10n:h.l10n}),h._handlers=[],h.pluginElements=[],h.loadedPlugins=[],h._bind=O,h._setHoursFromDate=T,h._positionCalendar=oe,h.changeMonth=$,h.changeYear=V,h.clear=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0),h.input.value=\"\",void 0!==h.altInput&&(h.altInput.value=\"\"),void 0!==h.mobileInput&&(h.mobileInput.value=\"\"),h.selectedDates=[],h.latestSelectedDateObj=void 0,!0===t&&(h.currentYear=h._initialDate.getFullYear(),h.currentMonth=h._initialDate.getMonth()),h.showTimeInput=!1,!0===h.config.enableTime&&k(),h.redraw(),e&&fe(\"onChange\")},h.close=function(){h.isOpen=!1,h.isMobile||(void 0!==h.calendarContainer&&h.calendarContainer.classList.remove(\"open\"),void 0!==h._input&&h._input.classList.remove(\"active\")),fe(\"onClose\")},h._createElement=d,h.destroy=function(){void 0!==h.config&&fe(\"onDestroy\");for(var e=h._handlers.length;e--;){var t=h._handlers[e];t.element.removeEventListener(t.event,t.handler,t.options)}if(h._handlers=[],h.mobileInput)h.mobileInput.parentNode&&h.mobileInput.parentNode.removeChild(h.mobileInput),h.mobileInput=void 0;else if(h.calendarContainer&&h.calendarContainer.parentNode)if(h.config.static&&h.calendarContainer.parentNode){var n=h.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else h.calendarContainer.parentNode.removeChild(h.calendarContainer);h.altInput&&(h.input.type=\"text\",h.altInput.parentNode&&h.altInput.parentNode.removeChild(h.altInput),delete h.altInput),h.input&&(h.input.type=h.input._type,h.input.classList.remove(\"flatpickr-input\"),h.input.removeAttribute(\"readonly\"),h.input.value=\"\"),[\"_showTimeInput\",\"latestSelectedDateObj\",\"_hideNextMonthArrow\",\"_hidePrevMonthArrow\",\"__hideNextMonthArrow\",\"__hidePrevMonthArrow\",\"isMobile\",\"isOpen\",\"selectedDateElem\",\"minDateHasTime\",\"maxDateHasTime\",\"days\",\"daysContainer\",\"_input\",\"_positionElement\",\"innerContainer\",\"rContainer\",\"monthNav\",\"todayDateElem\",\"calendarContainer\",\"weekdayContainer\",\"prevMonthNav\",\"nextMonthNav\",\"monthsDropdownContainer\",\"currentMonthElement\",\"currentYearElement\",\"navigationCurrentMonth\",\"selectedDateElem\",\"config\"].forEach((function(e){try{delete h[e]}catch(e){}}))},h.isEnabled=Z,h.jumpToDate=N,h.open=function(e,t){if(void 0===t&&(t=h._positionElement),!0===h.isMobile)return e&&(e.preventDefault(),e.target&&e.target.blur()),void 0!==h.mobileInput&&(h.mobileInput.focus(),h.mobileInput.click()),void fe(\"onOpen\");if(!h._input.disabled&&!h.config.inline){var n=h.isOpen;h.isOpen=!0,n||(h.calendarContainer.classList.add(\"open\"),h._input.classList.add(\"active\"),fe(\"onOpen\"),oe(t)),!0===h.config.enableTime&&!0===h.config.noCalendar&&(0===h.selectedDates.length&&ne(),!1!==h.config.allowInput||void 0!==e&&h.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return h.hourElement.select()}),50))}},h.redraw=re,h.set=function(e,n){if(null!==e&&\"object\"==typeof e)for(var a in Object.assign(h.config,e),e)void 0!==de[a]&&de[a].forEach((function(e){return e()}));else h.config[e]=n,void 0!==de[e]?de[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(h.config[e]=l(n));h.redraw(),ve(!1)},h.setDate=function(e,t,n){if(void 0===t&&(t=!1),void 0===n&&(n=h.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return h.clear(t);se(e,n),h.showTimeInput=h.selectedDates.length>0,h.latestSelectedDateObj=h.selectedDates[h.selectedDates.length-1],h.redraw(),N(),T(),0===h.selectedDates.length&&h.clear(!1),ve(t),t&&fe(\"onChange\")},h.toggle=function(e){if(!0===h.isOpen)return h.close();h.open(e)};var de={locale:[ie,q],showMonths:[K,M,U],minDate:[N],maxDate:[N]};function se(e,t){var n=[];if(e instanceof Array)n=e.map((function(e){return h.parseDate(e,t)}));else if(e instanceof Date||\"number\"==typeof e)n=[h.parseDate(e,t)];else if(\"string\"==typeof e)switch(h.config.mode){case\"single\":case\"time\":n=[h.parseDate(e,t)];break;case\"multiple\":n=e.split(h.config.conjunction).map((function(e){return h.parseDate(e,t)}));break;case\"range\":n=e.split(h.l10n.rangeSeparator).map((function(e){return h.parseDate(e,t)}))}else h.config.errorHandler(new Error(\"Invalid date supplied: \"+JSON.stringify(e)));h.selectedDates=n.filter((function(e){return e instanceof Date&&Z(e,!1)})),\"range\"===h.config.mode&&h.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()}))}function ue(e){return e.slice().map((function(e){return\"string\"==typeof e||\"number\"==typeof e||e instanceof Date?h.parseDate(e,void 0,!0):e&&\"object\"==typeof e&&e.from&&e.to?{from:h.parseDate(e.from,void 0),to:h.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function fe(e,t){if(void 0!==h.config){var n=h.config[e];if(void 0!==n&&n.length>0)for(var a=0;n[a]&&a1||\"static\"===h.config.monthSelectorType?h.monthElements[t].textContent=m(n.getMonth(),h.config.shorthandCurrentMonth,h.l10n)+\" \":h.monthsDropdownContainer.value=n.getMonth().toString(),e.value=n.getFullYear().toString()})),h._hidePrevMonthArrow=void 0!==h.config.minDate&&(h.currentYear===h.config.minDate.getFullYear()?h.currentMonth<=h.config.minDate.getMonth():h.currentYearh.config.maxDate.getMonth():h.currentYear>h.config.maxDate.getFullYear()))}function he(e){return h.selectedDates.map((function(t){return h.formatDate(t,e)})).filter((function(e,t,n){return\"range\"!==h.config.mode||h.config.enableTime||n.indexOf(e)===t})).join(\"range\"!==h.config.mode?h.config.conjunction:h.l10n.rangeSeparator)}function ve(e){void 0===e&&(e=!0),void 0!==h.mobileInput&&h.mobileFormatStr&&(h.mobileInput.value=void 0!==h.latestSelectedDateObj?h.formatDate(h.latestSelectedDateObj,h.mobileFormatStr):\"\"),h.input.value=he(h.config.dateFormat),void 0!==h.altInput&&(h.altInput.value=he(h.config.altFormat)),!1!==e&&fe(\"onValueUpdate\")}function De(e){var t=h.prevMonthNav.contains(e.target),n=h.nextMonthNav.contains(e.target);t||n?$(t?-1:1):h.yearElements.indexOf(e.target)>=0?e.target.select():e.target.classList.contains(\"arrowUp\")?h.changeYear(h.currentYear+1):e.target.classList.contains(\"arrowDown\")&&h.changeYear(h.currentYear-1)}return function(){h.element=h.input=f,h.isOpen=!1,function(){var a=[\"wrap\",\"weekNumbers\",\"allowInput\",\"clickOpens\",\"time_24hr\",\"enableTime\",\"noCalendar\",\"altInput\",\"shorthandCurrentMonth\",\"inline\",\"static\",\"enableSeconds\",\"disableMobile\"],i=e({},g,JSON.parse(JSON.stringify(f.dataset||{}))),o={};h.config.parseDate=i.parseDate,h.config.formatDate=i.formatDate,Object.defineProperty(h.config,\"enable\",{get:function(){return h.config._enable},set:function(e){h.config._enable=ue(e)}}),Object.defineProperty(h.config,\"disable\",{get:function(){return h.config._disable},set:function(e){h.config._disable=ue(e)}});var r=\"time\"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var c=y.defaultConfig.dateFormat||n.dateFormat;o.dateFormat=i.noCalendar||r?\"H:i\"+(i.enableSeconds?\":S\":\"\"):c+\" H:i\"+(i.enableSeconds?\":S\":\"\")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=y.defaultConfig.altFormat||n.altFormat;o.altFormat=i.noCalendar||r?\"h:i\"+(i.enableSeconds?\":S K\":\" K\"):d+\" h:i\"+(i.enableSeconds?\":S\":\"\")+\" K\"}i.altInputClass||(h.config.altInputClass=h.input.className+\" \"+h.config.altInputClass),Object.defineProperty(h.config,\"minDate\",{get:function(){return h.config._minDate},set:ae(\"min\")}),Object.defineProperty(h.config,\"maxDate\",{get:function(){return h.config._maxDate},set:ae(\"max\")});var s=function(e){return function(t){h.config[\"min\"===e?\"_minTime\":\"_maxTime\"]=h.parseDate(t,\"H:i:S\")}};Object.defineProperty(h.config,\"minTime\",{get:function(){return h.config._minTime},set:s(\"min\")}),Object.defineProperty(h.config,\"maxTime\",{get:function(){return h.config._maxTime},set:s(\"max\")}),\"time\"===i.mode&&(h.config.noCalendar=!0,h.config.enableTime=!0),Object.assign(h.config,o,i);for(var u=0;u-1?h.config[p]=l(m[p]).map(C).concat(h.config[p]):void 0===i[p]&&(h.config[p]=m[p])}fe(\"onParseConfig\")}(),ie(),h.input=h.config.wrap?f.querySelector(\"[data-input]\"):f,h.input?(h.input._type=h.input.type,h.input.type=\"text\",h.input.classList.add(\"flatpickr-input\"),h._input=h.input,h.config.altInput&&(h.altInput=d(h.input.nodeName,h.config.altInputClass),h._input=h.altInput,h.altInput.placeholder=h.input.placeholder,h.altInput.disabled=h.input.disabled,h.altInput.required=h.input.required,h.altInput.tabIndex=h.input.tabIndex,h.altInput.type=\"text\",h.input.setAttribute(\"type\",\"hidden\"),!h.config.static&&h.input.parentNode&&h.input.parentNode.insertBefore(h.altInput,h.input.nextSibling)),h.config.allowInput||h._input.setAttribute(\"readonly\",\"readonly\"),h._positionElement=h.config.positionElement||h._input):h.config.errorHandler(new Error(\"Invalid input element specified\")),function(){h.selectedDates=[],h.now=h.parseDate(h.config.now)||new Date;var e=h.config.defaultDate||(\"INPUT\"!==h.input.nodeName&&\"TEXTAREA\"!==h.input.nodeName||!h.input.placeholder||h.input.value!==h.input.placeholder?h.input.value:null);e&&se(e,h.config.dateFormat),h._initialDate=h.selectedDates.length>0?h.selectedDates[0]:h.config.minDate&&h.config.minDate.getTime()>h.now.getTime()?h.config.minDate:h.config.maxDate&&h.config.maxDate.getTime()0&&(h.latestSelectedDateObj=h.selectedDates[0]),void 0!==h.config.minTime&&(h.config.minTime=h.parseDate(h.config.minTime,\"H:i\")),void 0!==h.config.maxTime&&(h.config.maxTime=h.parseDate(h.config.maxTime,\"H:i\")),h.minDateHasTime=!!h.config.minDate&&(h.config.minDate.getHours()>0||h.config.minDate.getMinutes()>0||h.config.minDate.getSeconds()>0),h.maxDateHasTime=!!h.config.maxDate&&(h.config.maxDate.getHours()>0||h.config.maxDate.getMinutes()>0||h.config.maxDate.getSeconds()>0),Object.defineProperty(h,\"showTimeInput\",{get:function(){return h._showTimeInput},set:function(e){h._showTimeInput=e,h.calendarContainer&&c(h.calendarContainer,\"showTimeInput\",e),h.isOpen&&oe()}})}(),h.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=h.currentMonth),void 0===t&&(t=h.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:h.l10n.daysInMonth[e]}},h.isMobile||function(){var e=window.document.createDocumentFragment();if(h.calendarContainer=d(\"div\",\"flatpickr-calendar\"),h.calendarContainer.tabIndex=-1,!h.config.noCalendar){if(e.appendChild((h.monthNav=d(\"div\",\"flatpickr-months\"),h.yearElements=[],h.monthElements=[],h.prevMonthNav=d(\"span\",\"flatpickr-prev-month\"),h.prevMonthNav.innerHTML=h.config.prevArrow,h.nextMonthNav=d(\"span\",\"flatpickr-next-month\"),h.nextMonthNav.innerHTML=h.config.nextArrow,K(),Object.defineProperty(h,\"_hidePrevMonthArrow\",{get:function(){return h.__hidePrevMonthArrow},set:function(e){h.__hidePrevMonthArrow!==e&&(c(h.prevMonthNav,\"flatpickr-disabled\",e),h.__hidePrevMonthArrow=e)}}),Object.defineProperty(h,\"_hideNextMonthArrow\",{get:function(){return h.__hideNextMonthArrow},set:function(e){h.__hideNextMonthArrow!==e&&(c(h.nextMonthNav,\"flatpickr-disabled\",e),h.__hideNextMonthArrow=e)}}),h.currentYearElement=h.yearElements[0],pe(),h.monthNav)),h.innerContainer=d(\"div\",\"flatpickr-innerContainer\"),h.config.weekNumbers){var t=function(){h.calendarContainer.classList.add(\"hasWeeks\");var e=d(\"div\",\"flatpickr-weekwrapper\");e.appendChild(d(\"span\",\"flatpickr-weekday\",h.l10n.weekAbbreviation));var t=d(\"div\",\"flatpickr-weeks\");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),n=t.weekWrapper,a=t.weekNumbers;h.innerContainer.appendChild(n),h.weekNumbers=a,h.weekWrapper=n}h.rContainer=d(\"div\",\"flatpickr-rContainer\"),h.rContainer.appendChild(U()),h.daysContainer||(h.daysContainer=d(\"div\",\"flatpickr-days\"),h.daysContainer.tabIndex=-1),R(),h.rContainer.appendChild(h.daysContainer),h.innerContainer.appendChild(h.rContainer),e.appendChild(h.innerContainer)}h.config.enableTime&&e.appendChild(function(){h.calendarContainer.classList.add(\"hasTime\"),h.config.noCalendar&&h.calendarContainer.classList.add(\"noCalendar\"),h.timeContainer=d(\"div\",\"flatpickr-time\"),h.timeContainer.tabIndex=-1;var e=d(\"span\",\"flatpickr-time-separator\",\":\"),t=u(\"flatpickr-hour\",{\"aria-label\":h.l10n.hourAriaLabel});h.hourElement=t.getElementsByTagName(\"input\")[0];var n=u(\"flatpickr-minute\",{\"aria-label\":h.l10n.minuteAriaLabel});if(h.minuteElement=n.getElementsByTagName(\"input\")[0],h.hourElement.tabIndex=h.minuteElement.tabIndex=-1,h.hourElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getHours():h.config.time_24hr?h.config.defaultHour:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(h.config.defaultHour)),h.minuteElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getMinutes():h.config.defaultMinute),h.hourElement.setAttribute(\"step\",h.config.hourIncrement.toString()),h.minuteElement.setAttribute(\"step\",h.config.minuteIncrement.toString()),h.hourElement.setAttribute(\"min\",h.config.time_24hr?\"0\":\"1\"),h.hourElement.setAttribute(\"max\",h.config.time_24hr?\"23\":\"12\"),h.minuteElement.setAttribute(\"min\",\"0\"),h.minuteElement.setAttribute(\"max\",\"59\"),h.timeContainer.appendChild(t),h.timeContainer.appendChild(e),h.timeContainer.appendChild(n),h.config.time_24hr&&h.timeContainer.classList.add(\"time24hr\"),h.config.enableSeconds){h.timeContainer.classList.add(\"hasSeconds\");var a=u(\"flatpickr-second\");h.secondElement=a.getElementsByTagName(\"input\")[0],h.secondElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getSeconds():h.config.defaultSeconds),h.secondElement.setAttribute(\"step\",h.minuteElement.getAttribute(\"step\")),h.secondElement.setAttribute(\"min\",\"0\"),h.secondElement.setAttribute(\"max\",\"59\"),h.timeContainer.appendChild(d(\"span\",\"flatpickr-time-separator\",\":\")),h.timeContainer.appendChild(a)}return h.config.time_24hr||(h.amPM=d(\"span\",\"flatpickr-am-pm\",h.l10n.amPM[o((h.latestSelectedDateObj?h.hourElement.value:h.config.defaultHour)>11)]),h.amPM.title=h.l10n.toggleTitle,h.amPM.tabIndex=-1,h.timeContainer.appendChild(h.amPM)),h.timeContainer}()),c(h.calendarContainer,\"rangeMode\",\"range\"===h.config.mode),c(h.calendarContainer,\"animate\",!0===h.config.animate),c(h.calendarContainer,\"multiMonth\",h.config.showMonths>1),h.calendarContainer.appendChild(e);var r=void 0!==h.config.appendTo&&void 0!==h.config.appendTo.nodeType;if((h.config.inline||h.config.static)&&(h.calendarContainer.classList.add(h.config.inline?\"inline\":\"static\"),h.config.inline&&(!r&&h.element.parentNode?h.element.parentNode.insertBefore(h.calendarContainer,h._input.nextSibling):void 0!==h.config.appendTo&&h.config.appendTo.appendChild(h.calendarContainer)),h.config.static)){var l=d(\"div\",\"flatpickr-wrapper\");h.element.parentNode&&h.element.parentNode.insertBefore(l,h.element),l.appendChild(h.element),h.altInput&&l.appendChild(h.altInput),l.appendChild(h.calendarContainer)}h.config.static||h.config.inline||(void 0!==h.config.appendTo?h.config.appendTo:window.document.body).appendChild(h.calendarContainer)}(),function(){if(h.config.wrap&&[\"open\",\"close\",\"toggle\",\"clear\"].forEach((function(e){Array.prototype.forEach.call(h.element.querySelectorAll(\"[data-\"+e+\"]\"),(function(t){return O(t,\"click\",h[e])}))})),h.isMobile)!function(){var e=h.config.enableTime?h.config.noCalendar?\"time\":\"datetime-local\":\"date\";h.mobileInput=d(\"input\",h.input.className+\" flatpickr-mobile\"),h.mobileInput.step=h.input.getAttribute(\"step\")||\"any\",h.mobileInput.tabIndex=1,h.mobileInput.type=e,h.mobileInput.disabled=h.input.disabled,h.mobileInput.required=h.input.required,h.mobileInput.placeholder=h.input.placeholder,h.mobileFormatStr=\"datetime-local\"===e?\"Y-m-d\\\\TH:i:S\":\"date\"===e?\"Y-m-d\":\"H:i:S\",h.selectedDates.length>0&&(h.mobileInput.defaultValue=h.mobileInput.value=h.formatDate(h.selectedDates[0],h.mobileFormatStr)),h.config.minDate&&(h.mobileInput.min=h.formatDate(h.config.minDate,\"Y-m-d\")),h.config.maxDate&&(h.mobileInput.max=h.formatDate(h.config.maxDate,\"Y-m-d\")),h.input.type=\"hidden\",void 0!==h.altInput&&(h.altInput.type=\"hidden\");try{h.input.parentNode&&h.input.parentNode.insertBefore(h.mobileInput,h.input.nextSibling)}catch(e){}O(h.mobileInput,\"change\",(function(e){h.setDate(e.target.value,!1,h.mobileFormatStr),fe(\"onChange\"),fe(\"onClose\")}))}();else{var e=r(te,50);h._debouncedChange=r(F,300),h.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&O(h.daysContainer,\"mouseover\",(function(e){\"range\"===h.config.mode&&ee(e.target)})),O(window.document.body,\"keydown\",X),h.config.inline||h.config.static||O(window,\"resize\",e),void 0!==window.ontouchstart?O(window.document,\"touchstart\",G):O(window.document,\"mousedown\",_(G)),O(window.document,\"focus\",G,{capture:!0}),!0===h.config.clickOpens&&(O(h._input,\"focus\",h.open),O(h._input,\"mousedown\",_(h.open))),void 0!==h.daysContainer&&(O(h.monthNav,\"mousedown\",_(De)),O(h.monthNav,[\"keyup\",\"increment\"],S),O(h.daysContainer,\"mousedown\",_(ce))),void 0!==h.timeContainer&&void 0!==h.minuteElement&&void 0!==h.hourElement&&(O(h.timeContainer,[\"increment\"],x),O(h.timeContainer,\"blur\",x,{capture:!0}),O(h.timeContainer,\"mousedown\",_(P)),O([h.hourElement,h.minuteElement],[\"focus\",\"click\"],(function(e){return e.target.select()})),void 0!==h.secondElement&&O(h.secondElement,\"focus\",(function(){return h.secondElement&&h.secondElement.select()})),void 0!==h.amPM&&O(h.amPM,\"mousedown\",_((function(e){x(e),F()}))))}}(),(h.selectedDates.length||h.config.noCalendar)&&(h.config.enableTime&&T(h.config.noCalendar?h.latestSelectedDateObj||h.config.minDate:void 0),ve(!1)),M(),h.showTimeInput=h.selectedDates.length>0||h.config.noCalendar;var a=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!h.isMobile&&a&&oe(),fe(\"onReady\")}(),h}function M(e,t){for(var n=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;ithis.render());const{start:s,end:l,value:r,step:o,title:n}=this.model.properties;this.on_change([s,l,r,o],()=>{const{start:t,end:e,value:i,step:s}=this._calc_to();this.noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s})});const{bar_color:a}=this.model.properties;this.on_change(a,()=>{this._set_bar_color()});const{show_value:d}=this.model.properties;this.on_change([r,n,d],()=>this._update_title())}styles(){return[...super.styles(),h.default,c.default]}_update_title(){r.empty(this.title_el);const t=null==this.model.title||0==this.model.title.length&&!this.model.show_value;if(this.title_el.style.display=t?\"none\":\"\",!t&&(0!=this.model.title.length&&(this.title_el.textContent=this.model.title+\": \"),this.model.show_value)){const{value:t}=this._calc_to(),e=t.map(t=>this.model.pretty(t)).join(\" .. \");this.title_el.appendChild(r.span({class:d.bk_slider_value},e))}}_set_bar_color(){if(!this.model.disabled){this.slider_el.querySelector(\".noUi-connect\").style.backgroundColor=this.model.bar_color}}render(){super.render();const{start:t,end:e,value:i,step:s}=this._calc_to();let n;if(this.model.tooltips){const t={to:t=>this.model.pretty(t)};n=o.repeat(t,i.length)}else n=!1;if(null==this.slider_el){this.slider_el=r.div(),l.create(this.slider_el,{range:{min:t,max:e},start:i,step:s,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:n,orientation:this.model.orientation,direction:this.model.direction}),this.noUiSlider.on(\"slide\",(t,e,i)=>this._slide(i)),this.noUiSlider.on(\"change\",(t,e,i)=>this._change(i));const o=(t,e)=>{if(!n)return;this.slider_el.querySelectorAll(\".noUi-handle\")[t].querySelector(\".noUi-tooltip\").style.display=e?\"block\":\"\"};this.noUiSlider.on(\"start\",(t,e)=>o(e,!0)),this.noUiSlider.on(\"end\",(t,e)=>o(e,!1))}else this.noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s});this._set_bar_color(),this.model.disabled?this.slider_el.setAttribute(\"disabled\",\"true\"):this.slider_el.removeAttribute(\"disabled\"),this.title_el=r.div({class:d.bk_slider_title}),this._update_title(),this.group_el=r.div({class:_.bk_input_group},this.title_el,this.slider_el),this.el.appendChild(this.group_el)}_slide(t){this.model.value=this._calc_from(t)}_change(t){this.model.value=this._calc_from(t),this.model.value_throttled=this.model.value}}u.__name__=\"AbstractBaseSliderView\";class m extends u{_calc_to(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}}_calc_from([t]){return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(t):t}}i.AbstractSliderView=m,m.__name__=\"AbstractSliderView\";class p extends u{_calc_to(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}}_calc_from(t){return t}}i.AbstractRangeSliderView=p,p.__name__=\"AbstractRangeSliderView\";class b extends n.Control{constructor(t){super(t),this.connected=!1}static init_AbstractSlider(){this.define(({Any:t,Boolean:e,Number:i,String:s,Color:l,Or:r,Enum:o,Ref:n})=>({title:[s,\"\"],show_value:[e,!0],start:[t],end:[t],value:[t],value_throttled:[t],step:[i,1],format:[r(s,n(a.TickFormatter))],direction:[o(\"ltr\",\"rtl\"),\"ltr\"],tooltips:[e,!0],bar_color:[l,\"#e6e6e6\"]}))}_formatter(t,e){return\"\"+t}pretty(t){return this._formatter(t,this.format)}}i.AbstractSlider=b,b.__name__=\"AbstractSlider\",b.init_AbstractSlider()},\n", - " 424: function _(t,e,r){\n", - " /*! nouislider - 14.6.0 - 6/27/2020 */\n", - " var n;n=function(){\"use strict\";var t=\"14.6.0\";function e(t){t.parentElement.removeChild(t)}function r(t){return null!=t}function n(t){t.preventDefault()}function i(t){return\"number\"==typeof t&&!isNaN(t)&&isFinite(t)}function o(t,e,r){r>0&&(u(t,e),setTimeout((function(){c(t,e)}),r))}function s(t){return Math.max(Math.min(t,100),0)}function a(t){return Array.isArray(t)?t:[t]}function l(t){var e=(t=String(t)).split(\".\");return e.length>1?e[1].length:0}function u(t,e){t.classList&&!/\\s/.test(e)?t.classList.add(e):t.className+=\" \"+e}function c(t,e){t.classList&&!/\\s/.test(e)?t.classList.remove(e):t.className=t.className.replace(new RegExp(\"(^|\\\\b)\"+e.split(\" \").join(\"|\")+\"(\\\\b|$)\",\"gi\"),\" \")}function p(t){var e=void 0!==window.pageXOffset,r=\"CSS1Compat\"===(t.compatMode||\"\");return{x:e?window.pageXOffset:r?t.documentElement.scrollLeft:t.body.scrollLeft,y:e?window.pageYOffset:r?t.documentElement.scrollTop:t.body.scrollTop}}function f(t,e){return 100/(e-t)}function d(t,e,r){return 100*e/(t[r+1]-t[r])}function h(t,e){for(var r=1;t>=e[r];)r+=1;return r}function m(t,e,r){if(r>=t.slice(-1)[0])return 100;var n=h(r,t),i=t[n-1],o=t[n],s=e[n-1],a=e[n];return s+function(t,e){return d(t,t[0]<0?e+Math.abs(t[0]):e-t[0],0)}([i,o],r)/f(s,a)}function g(t,e,r,n){if(100===n)return n;var i=h(n,t),o=t[i-1],s=t[i];return r?n-o>(s-o)/2?s:o:e[i-1]?t[i-1]+function(t,e){return Math.round(t/e)*e}(n-t[i-1],e[i-1]):n}function v(t,e,r){var n;if(\"number\"==typeof e&&(e=[e]),!Array.isArray(e))throw new Error(\"noUiSlider (14.6.0): 'range' contains invalid value.\");if(!i(n=\"min\"===t?0:\"max\"===t?100:parseFloat(t))||!i(e[0]))throw new Error(\"noUiSlider (14.6.0): 'range' value isn't numeric.\");r.xPct.push(n),r.xVal.push(e[0]),n?r.xSteps.push(!isNaN(e[1])&&e[1]):isNaN(e[1])||(r.xSteps[0]=e[1]),r.xHighestCompleteStep.push(0)}function b(t,e,r){if(e)if(r.xVal[t]!==r.xVal[t+1]){r.xSteps[t]=d([r.xVal[t],r.xVal[t+1]],e,0)/f(r.xPct[t],r.xPct[t+1]);var n=(r.xVal[t+1]-r.xVal[t])/r.xNumSteps[t],i=Math.ceil(Number(n.toFixed(3))-1),o=r.xVal[t]+r.xNumSteps[t]*i;r.xHighestCompleteStep[t]=o}else r.xSteps[t]=r.xHighestCompleteStep[t]=r.xVal[t]}function x(t,e,r){var n;this.xPct=[],this.xVal=[],this.xSteps=[r||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=e;var i=[];for(n in t)t.hasOwnProperty(n)&&i.push([t[n],n]);for(i.length&&\"object\"==typeof i[0][0]?i.sort((function(t,e){return t[0][0]-e[0][0]})):i.sort((function(t,e){return t[0]-e[0]})),n=0;nthis.xPct[i+1];)i++;else t===this.xPct[this.xPct.length-1]&&(i=this.xPct.length-2);r||t!==this.xPct[i+1]||i++;var o=1,s=e[i],a=0,l=0,u=0,c=0;for(n=r?(t-this.xPct[i])/(this.xPct[i+1]-this.xPct[i]):(this.xPct[i+1]-t)/(this.xPct[i+1]-this.xPct[i]);s>0;)a=this.xPct[i+1+c]-this.xPct[i+c],e[i+c]*o+100-100*n>100?(l=a*n,o=(s-100*n)/e[i+c],n=1):(l=e[i+c]*a/100*o,o=0),r?(u-=l,this.xPct.length+c>=1&&c--):(u+=l,this.xPct.length-c>=1&&c++),s=e[i+c]*o;return t+u},x.prototype.toStepping=function(t){return t=m(this.xVal,this.xPct,t)},x.prototype.fromStepping=function(t){return function(t,e,r){if(r>=100)return t.slice(-1)[0];var n=h(r,e),i=t[n-1],o=t[n],s=e[n-1];return function(t,e){return e*(t[1]-t[0])/100+t[0]}([i,o],(r-s)*f(s,e[n]))}(this.xVal,this.xPct,t)},x.prototype.getStep=function(t){return t=g(this.xPct,this.xSteps,this.snap,t)},x.prototype.getDefaultStep=function(t,e,r){var n=h(t,this.xPct);return(100===t||e&&t===this.xPct[n-1])&&(n=Math.max(n-1,1)),(this.xVal[n]-this.xVal[n-1])/r},x.prototype.getNearbySteps=function(t){var e=h(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e],step:this.xNumSteps[e],highestStep:this.xHighestCompleteStep[e]}}},x.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(l);return Math.max.apply(null,t)},x.prototype.convert=function(t){return this.getStep(this.toStepping(t))};var S={to:function(t){return void 0!==t&&t.toFixed(2)},from:Number},w={target:\"target\",base:\"base\",origin:\"origin\",handle:\"handle\",handleLower:\"handle-lower\",handleUpper:\"handle-upper\",touchArea:\"touch-area\",horizontal:\"horizontal\",vertical:\"vertical\",background:\"background\",connect:\"connect\",connects:\"connects\",ltr:\"ltr\",rtl:\"rtl\",textDirectionLtr:\"txt-dir-ltr\",textDirectionRtl:\"txt-dir-rtl\",draggable:\"draggable\",drag:\"state-drag\",tap:\"state-tap\",active:\"active\",tooltip:\"tooltip\",pips:\"pips\",pipsHorizontal:\"pips-horizontal\",pipsVertical:\"pips-vertical\",marker:\"marker\",markerHorizontal:\"marker-horizontal\",markerVertical:\"marker-vertical\",markerNormal:\"marker-normal\",markerLarge:\"marker-large\",markerSub:\"marker-sub\",value:\"value\",valueHorizontal:\"value-horizontal\",valueVertical:\"value-vertical\",valueNormal:\"value-normal\",valueLarge:\"value-large\",valueSub:\"value-sub\"};function y(t){if(function(t){return\"object\"==typeof t&&\"function\"==typeof t.to&&\"function\"==typeof t.from}(t))return!0;throw new Error(\"noUiSlider (14.6.0): 'format' requires 'to' and 'from' methods.\")}function E(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.0): 'step' is not numeric.\");t.singleStep=e}function C(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.0): 'keyboardPageMultiplier' is not numeric.\");t.keyboardPageMultiplier=e}function P(t,e){if(!i(e))throw new Error(\"noUiSlider (14.6.0): 'keyboardDefaultStep' is not numeric.\");t.keyboardDefaultStep=e}function N(t,e){if(\"object\"!=typeof e||Array.isArray(e))throw new Error(\"noUiSlider (14.6.0): 'range' is not an object.\");if(void 0===e.min||void 0===e.max)throw new Error(\"noUiSlider (14.6.0): Missing 'min' or 'max' in 'range'.\");if(e.min===e.max)throw new Error(\"noUiSlider (14.6.0): 'range' 'min' and 'max' cannot be equal.\");t.spectrum=new x(e,t.snap,t.singleStep)}function k(t,e){if(e=a(e),!Array.isArray(e)||!e.length)throw new Error(\"noUiSlider (14.6.0): 'start' option is incorrect.\");t.handles=e.length,t.start=e}function U(t,e){if(t.snap=e,\"boolean\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'snap' option must be a boolean.\")}function A(t,e){if(t.animate=e,\"boolean\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'animate' option must be a boolean.\")}function V(t,e){if(t.animationDuration=e,\"number\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'animationDuration' option must be a number.\")}function D(t,e){var r,n=[!1];if(\"lower\"===e?e=[!0,!1]:\"upper\"===e&&(e=[!1,!0]),!0===e||!1===e){for(r=1;r1)throw new Error(\"noUiSlider (14.6.0): 'padding' option must not exceed 100% of the range.\")}}function H(t,e){switch(e){case\"ltr\":t.dir=0;break;case\"rtl\":t.dir=1;break;default:throw new Error(\"noUiSlider (14.6.0): 'direction' option was not recognized.\")}}function j(t,e){if(\"string\"!=typeof e)throw new Error(\"noUiSlider (14.6.0): 'behaviour' must be a string containing options.\");var r=e.indexOf(\"tap\")>=0,n=e.indexOf(\"drag\")>=0,i=e.indexOf(\"fixed\")>=0,o=e.indexOf(\"snap\")>=0,s=e.indexOf(\"hover\")>=0,a=e.indexOf(\"unconstrained\")>=0;if(i){if(2!==t.handles)throw new Error(\"noUiSlider (14.6.0): 'fixed' behaviour must be used with 2 handles\");O(t,t.start[1]-t.start[0])}if(a&&(t.margin||t.limit))throw new Error(\"noUiSlider (14.6.0): 'unconstrained' behaviour cannot be used with margin or limit\");t.events={tap:r||o,drag:n,fixed:i,snap:o,hover:s,unconstrained:a}}function F(t,e){if(!1!==e)if(!0===e){t.tooltips=[];for(var r=0;r0&&((a=M(i,!1)).className=c(s,r.cssClasses.value),a.setAttribute(\"data-value\",o),a.style[r.style]=t+\"%\",a.innerHTML=n.to(o))}}(o,t[o][0],t[o][1])})),i}function B(){h&&(e(h),h=null)}function q(t){B();var e=t.mode,r=t.density||1,n=t.filter||!1,i=function(t,e,r){if(\"range\"===t||\"steps\"===t)return y.xVal;if(\"count\"===t){if(e<2)throw new Error(\"noUiSlider (14.6.0): 'values' (>= 2) required for mode 'count'.\");var n=e-1,i=100/n;for(e=[];n--;)e[n]=n*i;e.push(100),t=\"positions\"}return\"positions\"===t?e.map((function(t){return y.fromStepping(r?y.getStep(t):t)})):\"values\"===t?r?e.map((function(t){return y.fromStepping(y.getStep(y.toStepping(t)))})):e:void 0}(e,t.values||!1,t.stepped||!1),o=function(t,e,r){var n,i={},o=y.xVal[0],s=y.xVal[y.xVal.length-1],a=!1,l=!1,u=0;return n=r.slice().sort((function(t,e){return t-e})),(r=n.filter((function(t){return!this[t]&&(this[t]=!0)}),{}))[0]!==o&&(r.unshift(o),a=!0),r[r.length-1]!==s&&(r.push(s),l=!0),r.forEach((function(n,o){var s,c,p,f,d,h,m,g,v,b,x=n,S=r[o+1],w=\"steps\"===e;if(w&&(s=y.xNumSteps[o]),s||(s=S-x),!1!==x&&void 0!==S)for(s=Math.max(s,1e-7),c=x;c<=S;c=(c+s).toFixed(7)/1){for(g=(d=(f=y.toStepping(c))-u)/t,b=d/(v=Math.round(g)),p=1;p<=v;p+=1)i[(h=u+p*b).toFixed(5)]=[y.fromStepping(h),0];m=r.indexOf(c)>-1?1:w?2:0,!o&&a&&c!==S&&(m=0),c===S&&l||(i[f.toFixed(5)]=[c,m]),u=f}})),i}(r,e,i),s=t.format||{to:Math.round};return h=w.appendChild(T(o,n,s))}function X(){var t=l.getBoundingClientRect(),e=\"offset\"+[\"Width\",\"Height\"][r.ort];return 0===r.ort?t.width||l[e]:t.height||l[e]}function _(t,e,n,i){var o=function(o){return!!(o=function(t,e,r){var n,i,o=0===t.type.indexOf(\"touch\"),s=0===t.type.indexOf(\"mouse\"),a=0===t.type.indexOf(\"pointer\");if(0===t.type.indexOf(\"MSPointer\")&&(a=!0),o){var l=function(t){return t.target===r||r.contains(t.target)||t.target.shadowRoot&&t.target.shadowRoot.contains(r)};if(\"touchstart\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(u.length>1)return!1;n=u[0].pageX,i=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;n=c.pageX,i=c.pageY}}return e=e||p(U),(s||a)&&(n=t.clientX+e.x,i=t.clientY+e.y),t.pageOffset=e,t.points=[n,i],t.cursor=s||a,t}(o,i.pageOffset,i.target||e))&&!(H()&&!i.doNotReject)&&(s=w,a=r.cssClasses.tap,!((s.classList?s.classList.contains(a):new RegExp(\"\\\\b\"+a+\"\\\\b\").test(s.className))&&!i.doNotReject)&&!(t===x.start&&void 0!==o.buttons&&o.buttons>1)&&(!i.hover||!o.buttons)&&(S||o.preventDefault(),o.calcPoint=o.points[r.ort],void n(o,i)));var s,a},s=[];return t.split(\" \").forEach((function(t){e.addEventListener(t,o,!!S&&{passive:!0}),s.push([t,o])})),s}function I(t){var e,n,i,o,a,u,c=100*(t-(e=l,n=r.ort,i=e.getBoundingClientRect(),o=e.ownerDocument,a=o.documentElement,u=p(o),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(u.x=0),n?i.top+u.y-a.clientTop:i.left+u.x-a.clientLeft))/X();return c=s(c),r.dir?100-c:c}function W(t,e){\"mouseout\"===t.type&&\"HTML\"===t.target.nodeName&&null===t.relatedTarget&&G(t,e)}function $(t,e){if(-1===navigator.appVersion.indexOf(\"MSIE 9\")&&0===t.buttons&&0!==e.buttonsProperty)return G(t,e);var n=(r.dir?-1:1)*(t.calcPoint-e.startCalcPoint);it(n>0,100*n/e.baseSize,e.locations,e.handleNumbers)}function G(t,e){e.handle&&(c(e.handle,r.cssClasses.active),N-=1),e.listeners.forEach((function(t){A.removeEventListener(t[0],t[1])})),0===N&&(c(w,r.cssClasses.drag),st(),t.cursor&&(V.style.cursor=\"\",V.removeEventListener(\"selectstart\",n))),e.handleNumbers.forEach((function(t){et(\"change\",t),et(\"set\",t),et(\"end\",t)}))}function J(t,e){if(e.handleNumbers.some(j))return!1;var i;1===e.handleNumbers.length&&(i=f[e.handleNumbers[0]].children[0],N+=1,u(i,r.cssClasses.active)),t.stopPropagation();var o=[],s=_(x.move,A,$,{target:t.target,handle:i,listeners:o,startCalcPoint:t.calcPoint,baseSize:X(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:C.slice()}),a=_(x.end,A,G,{target:t.target,handle:i,listeners:o,doNotReject:!0,handleNumbers:e.handleNumbers}),l=_(\"mouseout\",A,W,{target:t.target,handle:i,listeners:o,doNotReject:!0,handleNumbers:e.handleNumbers});o.push.apply(o,s.concat(a,l)),t.cursor&&(V.style.cursor=getComputedStyle(t.target).cursor,f.length>1&&u(w,r.cssClasses.drag),V.addEventListener(\"selectstart\",n,!1)),e.handleNumbers.forEach((function(t){et(\"start\",t)}))}function K(t){if(!t.buttons&&!t.touches)return!1;t.stopPropagation();var e=I(t.calcPoint),n=function(t){var e=100,r=!1;return f.forEach((function(n,i){if(!j(i)){var o=C[i],s=Math.abs(o-t);(so||100===s&&100===e)&&(r=i,e=s)}})),r}(e);if(!1===n)return!1;r.events.snap||o(w,r.cssClasses.tap,r.animationDuration),at(n,e,!0,!0),st(),et(\"slide\",n,!0),et(\"update\",n,!0),et(\"change\",n,!0),et(\"set\",n,!0),r.events.snap&&J(t,{handleNumbers:[n]})}function Q(t){var e=I(t.calcPoint),r=y.getStep(e),n=y.fromStepping(r);Object.keys(k).forEach((function(t){\"hover\"===t.split(\".\")[0]&&k[t].forEach((function(t){t.call(g,n)}))}))}function Z(t,e){k[t]=k[t]||[],k[t].push(e),\"update\"===t.split(\".\")[0]&&f.forEach((function(t,e){et(\"update\",e)}))}function tt(t){var e=t&&t.split(\".\")[0],r=e&&t.substring(e.length);Object.keys(k).forEach((function(t){var n=t.split(\".\")[0],i=t.substring(n.length);e&&e!==n||r&&r!==i||delete k[t]}))}function et(t,e,n){Object.keys(k).forEach((function(i){var o=i.split(\".\")[0];t===o&&k[i].forEach((function(t){t.call(g,E.map(r.format.to),e,E.slice(),n||!1,C.slice(),g)}))}))}function rt(t,e,n,i,o,a){var l;return f.length>1&&!r.events.unconstrained&&(i&&e>0&&(l=y.getAbsoluteDistance(t[e-1],r.margin,0),n=Math.max(n,l)),o&&e1&&r.limit&&(i&&e>0&&(l=y.getAbsoluteDistance(t[e-1],r.limit,0),n=Math.min(n,l)),o&&e1?n.forEach((function(t,r){var n=rt(i,t,i[t]+e,o[r],s[r],!1);!1===n?e=0:(e=n-i[t],i[t]=n)})):o=s=[!0];var a=!1;n.forEach((function(t,n){a=at(t,r[t]+e,o[n],s[n])||a})),a&&n.forEach((function(t){et(\"update\",t),et(\"slide\",t)}))}function ot(t,e){return r.dir?100-t-e:t}function st(){P.forEach((function(t){var e=C[t]>50?-1:1,r=3+(f.length+e*t);f[t].style.zIndex=r}))}function at(t,e,n,i){return!1!==(e=rt(C,t,e,n,i,!1))&&(function(t,e){C[t]=e,E[t]=y.fromStepping(e);var n=\"translate(\"+nt(10*(ot(e,0)-D)+\"%\",\"0\")+\")\";f[t].style[r.transformRule]=n,lt(t),lt(t+1)}(t,e),!0)}function lt(t){if(d[t]){var e=0,n=100;0!==t&&(e=C[t-1]),t!==d.length-1&&(n=C[t]);var i=n-e,o=\"translate(\"+nt(ot(e,i)+\"%\",\"0\")+\")\",s=\"scale(\"+nt(i/100,\"1\")+\")\";d[t].style[r.transformRule]=o+\" \"+s}}function ut(t,e){return null===t||!1===t||void 0===t?C[e]:(\"number\"==typeof t&&(t=String(t)),t=r.format.from(t),!1===(t=y.toStepping(t))||isNaN(t)?C[e]:t)}function ct(t,e){var n=a(t),i=void 0===C[0];e=void 0===e||!!e,r.animate&&!i&&o(w,r.cssClasses.tap,r.animationDuration),P.forEach((function(t){at(t,ut(n[t],t),!0,!1)}));for(var s=1===P.length?0:1;sn.stepAfter.startValue&&(o=n.stepAfter.startValue-i),s=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===e?o=null:0===e&&(s=null);var a=y.countStepDecimals();return null!==o&&!1!==o&&(o=Number(o.toFixed(a))),null!==s&&!1!==s&&(s=Number(s.toFixed(a))),[s,o]}return u(v=w,r.cssClasses.target),0===r.dir?u(v,r.cssClasses.ltr):u(v,r.cssClasses.rtl),0===r.ort?u(v,r.cssClasses.horizontal):u(v,r.cssClasses.vertical),u(v,\"rtl\"===getComputedStyle(v).direction?r.cssClasses.textDirectionRtl:r.cssClasses.textDirectionLtr),l=M(v,r.cssClasses.base),function(t,e){var n=M(e,r.cssClasses.connects);f=[],(d=[]).push(L(n,t[0]));for(var i=0;i=0&&t .noUi-tooltip {\\n -webkit-transform: translate(50%, 0);\\n transform: translate(50%, 0);\\n left: auto;\\n bottom: 10px;\\n}\\n.bk-root .noUi-vertical .noUi-origin > .noUi-tooltip {\\n -webkit-transform: translate(0, -18px);\\n transform: translate(0, -18px);\\n top: auto;\\n right: 28px;\\n}\\n.bk-root .noUi-handle {\\n cursor: grab;\\n cursor: -webkit-grab;\\n}\\n.bk-root .noUi-handle.noUi-active {\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n}\\n.bk-root .noUi-handle:after,\\n.bk-root .noUi-handle:before {\\n display: none;\\n}\\n.bk-root .noUi-tooltip {\\n display: none;\\n white-space: nowrap;\\n}\\n.bk-root .noUi-handle:hover .noUi-tooltip {\\n display: block;\\n}\\n.bk-root .noUi-horizontal {\\n width: 100%;\\n height: 10px;\\n}\\n.bk-root .noUi-vertical {\\n width: 10px;\\n height: 100%;\\n}\\n.bk-root .noUi-horizontal .noUi-handle {\\n width: 14px;\\n height: 18px;\\n right: -7px;\\n top: -5px;\\n}\\n.bk-root .noUi-vertical .noUi-handle {\\n width: 18px;\\n height: 14px;\\n right: -5px;\\n top: -7px;\\n}\\n.bk-root .noUi-target.noUi-horizontal {\\n margin: 5px 0px;\\n}\\n.bk-root .noUi-target.noUi-vertical {\\n margin: 0px 5px;\\n}\\n\"},\n", - " 427: function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default=\"\\n.bk-root .bk-slider-title {\\n white-space: nowrap;\\n}\\n.bk-root .bk-slider-value {\\n font-weight: 600;\\n}\\n\"},\n", - " 428: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1).__importDefault(e(186)),a=e(423);class d extends a.AbstractSliderView{}i.DateSliderView=d,d.__name__=\"DateSliderView\";class s extends a.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}static init_DateSlider(){this.prototype.default_view=d,this.override({format:\"%d %b %Y\"})}_formatter(e,t){return r.default(e,t)}}i.DateSlider=s,s.__name__=\"DateSlider\",s.init_DateSlider()},\n", - " 429: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const r=e(1),_=e(430),n=r.__importStar(e(18));class s extends _.MarkupView{render(){super.render(),this.model.render_as_text?this.markup_el.textContent=this.model.text:this.markup_el.innerHTML=this.model.text}}i.DivView=s,s.__name__=\"DivView\";class a extends _.Markup{constructor(e){super(e)}static init_Div(){this.prototype.default_view=s,this.define({render_as_text:[n.Boolean,!1]})}}i.Div=a,a.__name__=\"Div\",a.init_Div()},\n", - " 430: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),a=e(217),n=e(72),l=i.__importStar(e(18)),r=e(472),_=e(431),c=i.__importDefault(e(432));class u extends r.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>{this.layout.invalidate_cache(),this.render(),this.root.compute_layout()})}styles(){return[...super.styles(),c.default]}_update_layout(){this.layout=new a.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render();const e=Object.assign(Object.assign({},this.model.style),{display:\"inline-block\"});this.markup_el=n.div({class:_.bk_clearfix,style:e}),this.el.appendChild(this.markup_el)}}s.MarkupView=u,u.__name__=\"MarkupView\";class o extends r.Widget{constructor(e){super(e)}static init_Markup(){this.define({text:[l.String,\"\"],style:[l.Any,{}]})}}s.Markup=o,o.__name__=\"Markup\",o.init_Markup()},\n", - " 431: function _(e,c,f){Object.defineProperty(f,\"__esModule\",{value:!0}),f.bk_clearfix=\"bk-clearfix\"},\n", - " 432: function _(e,n,t){Object.defineProperty(t,\"__esModule\",{value:!0});t.default='\\n.bk-root .bk-clearfix:before,\\n.bk-root .bk-clearfix:after {\\n content: \"\";\\n display: table;\\n}\\n.bk-root .bk-clearfix:after {\\n clear: both;\\n}\\n'},\n", - " 433: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(404),o=e(313),_=e(72),d=n.__importStar(e(18)),l=e(8),r=e(173),u=e(281),c=e(282),h=n.__importDefault(e(284));class p extends s.AbstractButtonView{constructor(){super(...arguments),this._open=!1}styles(){return[...super.styles(),h.default]}render(){super.render();const e=_.div({class:[c.bk_caret,r.bk_down]});if(this.model.is_split){const t=this._render_button(e);t.classList.add(u.bk_dropdown_toggle),t.addEventListener(\"click\",()=>this._toggle_menu()),this.group_el.appendChild(t)}else this.button_el.appendChild(e);const t=this.model.menu.map((e,t)=>{if(null==e)return _.div({class:c.bk_divider});{const i=l.isString(e)?e:e[0],n=_.div({},i);return n.addEventListener(\"click\",()=>this._item_click(t)),n}});this.menu=_.div({class:[c.bk_menu,r.bk_below]},t),this.el.appendChild(this.menu),_.undisplay(this.menu)}_show_menu(){if(!this._open){this._open=!0,_.display(this.menu);const e=t=>{const{target:i}=t;i instanceof HTMLElement&&!this.el.contains(i)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,_.undisplay(this.menu))}_toggle_menu(){this._open?this._hide_menu():this._show_menu()}click(){this.model.is_split?(this._hide_menu(),this.model.trigger_event(new o.ButtonClick),super.click()):this._toggle_menu()}_item_click(e){this._hide_menu();const t=this.model.menu[e];if(null!=t){const i=l.isString(t)?t:t[1];l.isString(i)?this.model.trigger_event(new o.MenuItemClick(i)):i.execute(this.model,{index:e})}}}i.DropdownView=p,p.__name__=\"DropdownView\";class m extends s.AbstractButton{constructor(e){super(e)}static init_Dropdown(){this.prototype.default_view=p,this.define({split:[d.Boolean,!1],menu:[d.Array,[]]}),this.override({label:\"Dropdown\"})}get is_split(){return this.split}}i.Dropdown=m,m.__name__=\"Dropdown\",m.init_Dropdown()},\n", - " 434: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const l=e(1).__importStar(e(18)),s=e(472);class n extends s.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render()),this.connect(this.model.properties.width.change,()=>this.render())}render(){null==this.dialogEl&&(this.dialogEl=document.createElement(\"input\"),this.dialogEl.type=\"file\",this.dialogEl.multiple=this.model.multiple,this.dialogEl.onchange=()=>{const{files:e}=this.dialogEl;null!=e&&this.load_files(e)},this.el.appendChild(this.dialogEl)),null!=this.model.accept&&\"\"!=this.model.accept&&(this.dialogEl.accept=this.model.accept),this.dialogEl.style.width=\"{this.model.width}px\",this.dialogEl.disabled=this.model.disabled}async load_files(e){const t=[],i=[],l=[];let s;for(s=0;s{const l=new FileReader;l.onload=()=>{var s;const{result:n}=l;null!=n?t(n):i(null!==(s=l.error)&&void 0!==s?s:new Error(`unable to read '${e.name}'`))},l.readAsDataURL(e)})}}i.FileInputView=n,n.__name__=\"FileInputView\";class o extends s.Widget{constructor(e){super(e)}static init_FileInput(){this.prototype.default_view=n,this.define({value:[l.Any,\"\"],mime_type:[l.Any,\"\"],filename:[l.Any,\"\"],accept:[l.String,\"\"],multiple:[l.Boolean,!1]})}}i.FileInput=o,o.__name__=\"FileInput\",o.init_FileInput()},\n", - " 435: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const i=e(1),n=e(72),l=e(8),o=i.__importStar(e(18)),c=e(410),r=e(412);class h extends c.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.value.change,()=>this.render_selection()),this.connect(this.model.properties.options.change,()=>this.render()),this.connect(this.model.properties.name.change,()=>this.render()),this.connect(this.model.properties.title.change,()=>this.render()),this.connect(this.model.properties.size.change,()=>this.render()),this.connect(this.model.properties.disabled.change,()=>this.render())}render(){super.render();const e=this.model.options.map(e=>{let t,s;return l.isString(e)?t=s=e:[t,s]=e,n.option({value:t},s)});this.select_el=n.select({multiple:!0,class:r.bk_input,name:this.model.name,disabled:this.model.disabled},e),this.select_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.select_el),this.render_selection()}render_selection(){const e=new Set(this.model.value);for(const t of this.el.querySelectorAll(\"option\"))t.selected=e.has(t.value);this.select_el.size=this.model.size}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.select_el.focus()}}s.MultiSelectView=h,h.__name__=\"MultiSelectView\";class d extends c.InputWidget{constructor(e){super(e)}static init_MultiSelect(){this.prototype.default_view=h,this.define({value:[o.Array,[]],options:[o.Array,[]],size:[o.Number,4]})}}s.MultiSelect=d,d.__name__=\"MultiSelect\",d.init_MultiSelect()},\n", - " 436: function _(a,e,r){Object.defineProperty(r,\"__esModule\",{value:!0});const t=a(430),p=a(72);class s extends t.MarkupView{render(){super.render();const a=p.p({style:{margin:0}},this.model.text);this.markup_el.appendChild(a)}}r.ParagraphView=s,s.__name__=\"ParagraphView\";class i extends t.Markup{constructor(a){super(a)}static init_Paragraph(){this.prototype.default_view=s}}r.Paragraph=i,i.__name__=\"Paragraph\",i.init_Paragraph()},\n", - " 437: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});const n=e(409);class r extends n.TextInputView{render(){super.render(),this.input_el.type=\"password\"}}s.PasswordInputView=r,r.__name__=\"PasswordInputView\";class p extends n.TextInput{constructor(e){super(e)}static init_PasswordInput(){this.prototype.default_view=r}}s.PasswordInput=p,p.__name__=\"PasswordInput\",p.init_PasswordInput()},\n", - " 438: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const l=e(1),s=l.__importDefault(e(439)),o=e(72),n=e(8),h=e(217),a=l.__importStar(e(18)),c=e(412),u=l.__importDefault(e(440)),d=e(410);class _ extends d.InputWidgetView{constructor(){super(...arguments),this._last_height=null}connect_signals(){super.connect_signals(),this.connect(this.model.properties.disabled.change,()=>this.set_disabled());const{value:e,max_items:t,option_limit:i,delete_button:l,placeholder:s,options:o,name:n,title:h}=this.model.properties;this.on_change([e,t,i,l,s,o,n,h],()=>this.render())}styles(){return[...super.styles(),u.default]}_update_layout(){this.layout=new h.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render(),this.select_el=o.select({multiple:!0,class:c.bk_input,name:this.model.name,disabled:this.model.disabled}),this.group_el.appendChild(this.select_el);const e=new Set(this.model.value),t=this.model.options.map(t=>{let i,l;return n.isString(t)?i=l=t:[i,l]=t,{value:i,label:l,selected:e.has(i)}}),i=this.model.solid?\"solid\":\"light\",l=\"choices__item \"+i,h=\"choices__button \"+i,a={choices:t,duplicateItemsAllowed:!1,removeItemButton:this.model.delete_button,classNames:{item:l,button:h}};null!=this.model.placeholder&&(a.placeholderValue=this.model.placeholder),null!=this.model.max_items&&(a.maxItemCount=this.model.max_items),null!=this.model.option_limit&&(a.renderChoiceLimit=this.model.option_limit),this.choice_el=new s.default(this.select_el,a);const u=()=>this.choice_el.containerOuter.element.getBoundingClientRect().height;null!=this._last_height&&this._last_height!=u()&&this.root.invalidate_layout(),this._last_height=u(),this.select_el.addEventListener(\"change\",()=>this.change_input())}set_disabled(){this.model.disabled?this.choice_el.disable():this.choice_el.enable()}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.select_el.focus()}}i.MultiChoiceView=_,_.__name__=\"MultiChoiceView\";class r extends d.InputWidget{constructor(e){super(e)}static init_MultiChoice(){this.prototype.default_view=_,this.define({value:[a.Array,[]],options:[a.Array,[]],max_items:[a.Number,null],delete_button:[a.Boolean,!0],placeholder:[a.String,null],option_limit:[a.Number,null],solid:[a.Boolean,!0]})}}i.MultiChoice=r,r.__name__=\"MultiChoice\",r.init_MultiChoice()},\n", - " 439: function _(e,t,i){\n", - " /*! choices.js v9.0.1 | © 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n", - " var n,s;n=window,s=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"/public/assets/scripts/\",i(i.s=4)}([function(e,t,i){\"use strict\";var n=function(e){return function(e){return!!e&&\"object\"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return\"[object RegExp]\"===t||\"[object Date]\"===t||function(e){return e.$$typeof===s}(e)}(e)},s=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?l((i=e,Array.isArray(i)?[]:{}),e,t):e;var i}function o(e,t,i){return e.concat(t).map((function(e){return r(e,i)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function c(e,t,i){var n={};return i.isMergeableObject(e)&&a(e).forEach((function(t){n[t]=r(e[t],i)})),a(t).forEach((function(s){(function(e,t){try{return t in e&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}catch(e){return!1}})(e,s)||(i.isMergeableObject(t[s])&&e[s]?n[s]=function(e,t){if(!t.customMerge)return l;var i=t.customMerge(e);return\"function\"==typeof i?i:l}(s,i)(e[s],t[s],i):n[s]=r(t[s],i))})),n}function l(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||o,i.isMergeableObject=i.isMergeableObject||n,i.cloneUnlessOtherwiseSpecified=r;var s=Array.isArray(t);return s===Array.isArray(e)?s?i.arrayMerge(e,t,i):c(e,t,i):r(t,i)}l.all=function(e,t){if(!Array.isArray(e))throw new Error(\"first argument should be an array\");return e.reduce((function(e,i){return l(e,i,t)}),{})};var h=l;e.exports=h},function(e,t,i){\"use strict\";(function(e,n){var s,r=i(3);s=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==e?e:n;var o=Object(r.a)(s);t.a=o}).call(this,i(5),i(6)(e))},function(e,t,i){\n", - " /*!\n", - " * Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io)\n", - " *\n", - " * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)\n", - " * All Rights Reserved. Apache Software License 2.0\n", - " *\n", - " * http://www.apache.org/licenses/LICENSE-2.0\n", - " */\n", - " e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=1)}([function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===Object.prototype.toString.call(e)}},function(e,t,i){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function s(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\\nSearch pattern: \"'.concat(e,'\"'));var i=this._prepareSearchers(e),n=i.tokenSearchers,s=i.fullSearcher,r=this._search(n,s),o=r.weights,a=r.results;return this._computeScore(o,a),this.options.shouldSort&&this._sort(a),t.limit&&\"number\"==typeof t.limit&&(a=a.slice(0,t.limit)),this._format(a)}},{key:\"_prepareSearchers\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",t=[];if(this.options.tokenize)for(var i=e.split(this.options.tokenSeparator),n=0,s=i.length;n0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,i=this.list,n={},s=[];if(\"string\"==typeof i[0]){for(var r=0,o=i.length;r1)throw new Error(\"Key weight has to be > 0 and <= 1\");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(h,p),record:h,index:c},{resultMap:n,results:s,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:s}}},{key:\"_analyze\",value:function(e,t){var i=e.key,n=e.arrayIndex,s=void 0===n?-1:n,r=e.value,o=e.record,c=e.index,l=t.tokenSearchers,h=void 0===l?[]:l,u=t.fullSearcher,d=void 0===u?[]:u,p=t.resultMap,m=void 0===p?{}:p,f=t.results,v=void 0===f?[]:f;if(null!=r){var g=!1,_=-1,b=0;if(\"string\"==typeof r){this._log(\"\\nKey: \".concat(\"\"===i?\"-\":i));var y=d.search(r);if(this._log('Full text: \"'.concat(r,'\", score: ').concat(y.score)),this.options.tokenize){for(var E=r.split(this.options.tokenSeparator),I=[],S=0;S-1&&(P=(P+_)/2),this._log(\"Score average:\",P);var D=!this.options.tokenize||!this.options.matchAllTokens||b>=h.length;if(this._log(\"\\nCheck Matches: \".concat(D)),(g||y.isMatch)&&D){var M=m[c];M?M.output.push({key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}):(m[c]={item:o,output:[{key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}]},v.push(m[c]))}}else if(a(r))for(var N=0,F=r.length;N-1&&(o.arrayIndex=r.arrayIndex),t.matches.push(o)}}})),this.options.includeScore&&s.push((function(e,t){t.score=e.score}));for(var r=0,o=e.length;ri)return s(e,this.pattern,n);var o=this.options,a=o.location,c=o.distance,l=o.threshold,h=o.findAllMatches,u=o.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:a,distance:c,threshold:l,findAllMatches:h,minMatchCharLength:u})}}])&&n(t.prototype,i),e}();e.exports=a},function(e,t){var i=/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,s=new RegExp(t.replace(i,\"\\\\$&\").replace(n,\"|\")),r=e.match(s),o=!!r,a=[];if(o)for(var c=0,l=r.length;c=P;N-=1){var F=N-1,j=i[e.charAt(F)];if(j&&(E[F]=1),M[N]=(M[N+1]<<1|1)&j,0!==T&&(M[N]|=(O[N+1]|O[N])<<1|1|O[N+1]),M[N]&L&&(C=n(t,{errors:T,currentLocation:F,expectedLocation:v,distance:l}))<=_){if(_=C,(b=F)<=v)break;P=Math.max(1,2*v-b)}}if(n(t,{errors:T+1,currentLocation:v,expectedLocation:v,distance:l})>_)break;O=M}return{isMatch:b>=0,score:0===C?.001:C,matchedIndices:s(E,f)}}},function(e,t){e.exports=function(e,t){var i=t.errors,n=void 0===i?0:i,s=t.currentLocation,r=void 0===s?0:s,o=t.expectedLocation,a=void 0===o?0:o,c=t.distance,l=void 0===c?100:c,h=n/e.length,u=Math.abs(a-r);return l?h+u/l:u?1:h}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=[],n=-1,s=-1,r=0,o=e.length;r=t&&i.push([n,s]),n=-1)}return e[r-1]&&r-n>=t&&i.push([n,r-1]),i}},function(e,t){e.exports=function(e){for(var t={},i=e.length,n=0;n/g,\"&rt;\").replace(/-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!0),i})):e;case\"REMOVE_ITEM\":return t.choiceId>-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!1),i})):e;case\"FILTER_CHOICES\":return e.map((function(e){var i=e;return i.active=t.results.some((function(e){var t=e.item,n=e.score;return t.id===i.id&&(i.score=n,!0)})),i}));case\"ACTIVATE_CHOICES\":return e.map((function(e){var i=e;return i.active=t.active,i}));case\"CLEAR_CHOICES\":return v;default:return e}},general:_}),A=function(e,t){var i=e;if(\"CLEAR_ALL\"===t.type)i=void 0;else if(\"RESET_TO\"===t.type)return O(t.state);return C(i,t)};function L(e,t){for(var i=0;i\"'+I(e)+'\"'},maxItemText:function(e){return\"Only \"+e+\" values can be added\"},valueComparer:function(e,t){return e===t},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:{containerOuter:\"choices\",containerInner:\"choices__inner\",input:\"choices__input\",inputCloned:\"choices__input--cloned\",list:\"choices__list\",listItems:\"choices__list--multiple\",listSingle:\"choices__list--single\",listDropdown:\"choices__list--dropdown\",item:\"choices__item\",itemSelectable:\"choices__item--selectable\",itemDisabled:\"choices__item--disabled\",itemChoice:\"choices__item--choice\",placeholder:\"choices__placeholder\",group:\"choices__group\",groupHeading:\"choices__heading\",button:\"choices__button\",activeState:\"is-active\",focusState:\"is-focused\",openState:\"is-open\",disabledState:\"is-disabled\",highlightedState:\"is-highlighted\",selectedState:\"is-selected\",flippedState:\"is-flipped\",loadingState:\"is-loading\",noResults:\"has-no-results\",noChoices:\"has-no-choices\"}},D=\"showDropdown\",M=\"hideDropdown\",N=\"change\",F=\"choice\",j=\"search\",K=\"addItem\",R=\"removeItem\",H=\"highlightItem\",B=\"highlightChoice\",V=\"ADD_CHOICE\",G=\"FILTER_CHOICES\",q=\"ACTIVATE_CHOICES\",U=\"CLEAR_CHOICES\",z=\"ADD_GROUP\",W=\"ADD_ITEM\",X=\"REMOVE_ITEM\",$=\"HIGHLIGHT_ITEM\",J=46,Y=8,Z=13,Q=65,ee=27,te=38,ie=40,ne=33,se=34,re=function(){function e(e){var t=e.element,i=e.type,n=e.classNames,s=e.position;this.element=t,this.classNames=n,this.type=i,this.position=s,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t=e.prototype;return t.addEventListeners=function(){this.element.addEventListener(\"focus\",this._onFocus),this.element.addEventListener(\"blur\",this._onBlur)},t.removeEventListeners=function(){this.element.removeEventListener(\"focus\",this._onFocus),this.element.removeEventListener(\"blur\",this._onBlur)},t.shouldFlip=function(e){if(\"number\"!=typeof e)return!1;var t=!1;return\"auto\"===this.position?t=!window.matchMedia(\"(min-height: \"+(e+1)+\"px)\").matches:\"top\"===this.position&&(t=!0),t},t.setActiveDescendant=function(e){this.element.setAttribute(\"aria-activedescendant\",e)},t.removeActiveDescendant=function(){this.element.removeAttribute(\"aria-activedescendant\")},t.open=function(e){this.element.classList.add(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"true\"),this.isOpen=!0,this.shouldFlip(e)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},t.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"false\"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},t.focus=function(){this.isFocussed||this.element.focus()},t.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},t.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},t.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute(\"aria-disabled\"),\"select-one\"===this.type&&this.element.setAttribute(\"tabindex\",\"0\"),this.isDisabled=!1},t.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute(\"aria-disabled\",\"true\"),\"select-one\"===this.type&&this.element.setAttribute(\"tabindex\",\"-1\"),this.isDisabled=!0},t.wrap=function(e){!function(e,t){void 0===t&&(t=document.createElement(\"div\")),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)}(e,this.element)},t.unwrap=function(e){this.element.parentNode.insertBefore(e,this.element),this.element.parentNode.removeChild(this.element)},t.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute(\"aria-busy\",\"true\"),this.isLoading=!0},t.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute(\"aria-busy\"),this.isLoading=!1},t._onFocus=function(){this.isFocussed=!0},t._onBlur=function(){this.isFocussed=!1},e}();function oe(e,t){for(var i=0;i0?this.element.scrollTop+o-s:e.offsetTop;requestAnimationFrame((function(){i._animateScroll(a,t)}))}},t._scrollDown=function(e,t,i){var n=(i-e)/t,s=n>1?n:1;this.element.scrollTop=e+s},t._scrollUp=function(e,t,i){var n=(e-i)/t,s=n>1?n:1;this.element.scrollTop=e-s},t._animateScroll=function(e,t){var i=this,n=this.element.scrollTop,s=!1;t>0?(this._scrollDown(n,4,e),ne&&(s=!0)),s&&requestAnimationFrame((function(){i._animateScroll(e,t)}))},e}();function le(e,t){for(var i=0;i0?\"treeitem\":\"option\"),Object.assign(g.dataset,{choice:\"\",id:l,value:h,selectText:i}),m?(g.classList.add(a),g.dataset.choiceDisabled=\"\",g.setAttribute(\"aria-disabled\",\"true\")):(g.classList.add(r),g.dataset.choiceSelectable=\"\"),g},input:function(e,t){var i=e.input,n=e.inputCloned,s=Object.assign(document.createElement(\"input\"),{type:\"text\",className:i+\" \"+n,autocomplete:\"off\",autocapitalize:\"off\",spellcheck:!1});return s.setAttribute(\"role\",\"textbox\"),s.setAttribute(\"aria-autocomplete\",\"list\"),s.setAttribute(\"aria-label\",t),s},dropdown:function(e){var t=e.list,i=e.listDropdown,n=document.createElement(\"div\");return n.classList.add(t,i),n.setAttribute(\"aria-expanded\",\"false\"),n},notice:function(e,t,i){var n=e.item,s=e.itemChoice,r=e.noResults,o=e.noChoices;void 0===i&&(i=\"\");var a=[n,s];return\"no-choices\"===i?a.push(o):\"no-results\"===i&&a.push(r),Object.assign(document.createElement(\"div\"),{innerHTML:t,className:a.join(\" \")})},option:function(e){var t=e.label,i=e.value,n=e.customProperties,s=e.active,r=e.disabled,o=new Option(t,i,!1,s);return n&&(o.dataset.customProperties=n),o.disabled=r,o}},ve=function(e){return void 0===e&&(e=!0),{type:q,active:e}},ge=function(e,t){return{type:$,id:e,highlighted:t}},_e=function(e){var t=e.value,i=e.id,n=e.active,s=e.disabled;return{type:z,value:t,id:i,active:n,disabled:s}},be=function(e){return{type:\"SET_IS_LOADING\",isLoading:e}};function ye(e,t){for(var i=0;i=0?this._store.getGroupById(s):null;return this._store.dispatch(ge(i,!0)),t&&this.passedElement.triggerEvent(H,{id:i,value:o,label:c,groupValue:l&&l.value?l.value:null}),this},r.unhighlightItem=function(e){if(!e)return this;var t=e.id,i=e.groupId,n=void 0===i?-1:i,s=e.value,r=void 0===s?\"\":s,o=e.label,a=void 0===o?\"\":o,c=n>=0?this._store.getGroupById(n):null;return this._store.dispatch(ge(t,!1)),this.passedElement.triggerEvent(H,{id:t,value:r,label:a,groupValue:c&&c.value?c.value:null}),this},r.highlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.highlightItem(t)})),this},r.unhighlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.unhighlightItem(t)})),this},r.removeActiveItemsByValue=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.value===e})).forEach((function(e){return t._removeItem(e)})),this},r.removeActiveItems=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.id!==e})).forEach((function(e){return t._removeItem(e)})),this},r.removeHighlightedItems=function(e){var t=this;return void 0===e&&(e=!1),this._store.highlightedActiveItems.forEach((function(i){t._removeItem(i),e&&t._triggerChange(i.value)})),this},r.showDropdown=function(e){var t=this;return this.dropdown.isActive||requestAnimationFrame((function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(D,{})})),this},r.hideDropdown=function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame((function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(M,{})})),this):this},r.getValue=function(e){void 0===e&&(e=!1);var t=this._store.activeItems.reduce((function(t,i){var n=e?i.value:i;return t.push(n),t}),[]);return this._isSelectOneElement?t[0]:t},r.setValue=function(e){var t=this;return this.initialised?(e.forEach((function(e){return t._setChoiceOrItem(e)})),this):this},r.setChoiceByValue=function(e){var t=this;return!this.initialised||this._isTextElement||(Array.isArray(e)?e:[e]).forEach((function(e){return t._findAndSelectChoiceByValue(e)})),this},r.setChoices=function(e,t,i,n){var s=this;if(void 0===e&&(e=[]),void 0===t&&(t=\"value\"),void 0===i&&(i=\"label\"),void 0===n&&(n=!1),!this.initialised)throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");if(!this._isSelectElement)throw new TypeError(\"setChoices can't be used with INPUT based Choices\");if(\"string\"!=typeof t||!t)throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");if(n&&this.clearChoices(),\"function\"==typeof e){var r=e(this);if(\"function\"==typeof Promise&&r instanceof Promise)return new Promise((function(e){return requestAnimationFrame(e)})).then((function(){return s._handleLoadingState(!0)})).then((function(){return r})).then((function(e){return s.setChoices(e,t,i,n)})).catch((function(e){s.config.silent||console.error(e)})).then((function(){return s._handleLoadingState(!1)})).then((function(){return s}));if(!Array.isArray(r))throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \"+typeof r);return this.setChoices(r,t,i,!1)}if(!Array.isArray(e))throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");return this.containerOuter.removeLoadingState(),this._startLoading(),e.forEach((function(e){e.choices?s._addGroup({id:parseInt(e.id,10)||null,group:e,valueKey:t,labelKey:i}):s._addChoice({value:e[t],label:e[i],isSelected:e.selected,isDisabled:e.disabled,customProperties:e.customProperties,placeholder:e.placeholder})})),this._stopLoading(),this},r.clearChoices=function(){return this._store.dispatch({type:U}),this},r.clearStore=function(){return this._store.dispatch({type:\"CLEAR_ALL\"}),this},r.clearInput=function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(ve(!0))),this},r._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,i=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),i&&this._renderItems(),this._prevState=this._currentState)}},r._renderChoices=function(){var e=this,t=this._store,i=t.activeGroups,n=t.activeChoices,s=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame((function(){return e.choiceList.scrollToTop()})),i.length>=1&&!this._isSearching){var r=n.filter((function(e){return!0===e.placeholder&&-1===e.groupId}));r.length>=1&&(s=this._createChoicesFragment(r,s)),s=this._createGroupsFragment(i,n,s)}else n.length>=1&&(s=this._createChoicesFragment(n,s));if(s.childNodes&&s.childNodes.length>0){var o=this._store.activeItems,a=this._canAddItem(o,this.input.value);a.response?(this.choiceList.append(s),this._highlightChoice()):this.choiceList.append(this._getTemplate(\"notice\",a.notice))}else{var c,l;this._isSearching?(l=\"function\"==typeof this.config.noResultsText?this.config.noResultsText():this.config.noResultsText,c=this._getTemplate(\"notice\",l,\"no-results\")):(l=\"function\"==typeof this.config.noChoicesText?this.config.noChoicesText():this.config.noChoicesText,c=this._getTemplate(\"notice\",l,\"no-choices\")),this.choiceList.append(c)}},r._renderItems=function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)},r._createGroupsFragment=function(e,t,i){var n=this;return void 0===i&&(i=document.createDocumentFragment()),this.config.shouldSort&&e.sort(this.config.sorter),e.forEach((function(e){var s=function(e){return t.filter((function(t){return n._isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&(\"always\"===n.config.renderSelectedChoices||!t.selected)}))}(e);if(s.length>=1){var r=n._getTemplate(\"choiceGroup\",e);i.appendChild(r),n._createChoicesFragment(s,i,!0)}})),i},r._createChoicesFragment=function(e,t,i){var n=this;void 0===t&&(t=document.createDocumentFragment()),void 0===i&&(i=!1);var s=this.config,r=s.renderSelectedChoices,o=s.searchResultLimit,a=s.renderChoiceLimit,c=this._isSearching?w:this.config.sorter,l=function(e){if(\"auto\"!==r||n._isSelectOneElement||!e.selected){var i=n._getTemplate(\"choice\",e,n.config.itemSelectText);t.appendChild(i)}},h=e;\"auto\"!==r||this._isSelectOneElement||(h=e.filter((function(e){return!e.selected})));var u=h.reduce((function(e,t){return t.placeholder?e.placeholderChoices.push(t):e.normalChoices.push(t),e}),{placeholderChoices:[],normalChoices:[]}),d=u.placeholderChoices,p=u.normalChoices;(this.config.shouldSort||this._isSearching)&&p.sort(c);var m=h.length,f=this._isSelectOneElement?[].concat(d,p):p;this._isSearching?m=o:a&&a>0&&!i&&(m=a);for(var v=0;v=n){var o=s?this._searchChoices(e):0;this.passedElement.triggerEvent(j,{value:e,resultCount:o})}else r&&(this._isSearching=!1,this._store.dispatch(ve(!0)))}},r._canAddItem=function(e,t){var i=!0,n=\"function\"==typeof this.config.addItemText?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var s=function(e,t,i){return void 0===i&&(i=\"value\"),e.some((function(e){return\"string\"==typeof t?e[i]===t.trim():e[i]===t}))}(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=\"function\"==typeof this.config.maxItemText?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&s&&i&&(i=!1,n=\"function\"==typeof this.config.uniqueItemText?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&i&&\"function\"==typeof this.config.addItemFilter&&!this.config.addItemFilter(t)&&(i=!1,n=\"function\"==typeof this.config.customAddItemText?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:i,notice:n}},r._searchChoices=function(e){var t=\"string\"==typeof e?e.trim():e,i=\"string\"==typeof this._currentValue?this._currentValue.trim():this._currentValue;if(t.length<1&&t===i+\" \")return 0;var n=this._store.searchableChoices,r=t,o=[].concat(this.config.searchFields),a=Object.assign(this.config.fuseOptions,{keys:o}),c=new s.a(n,a).search(r);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(function(e){return{type:G,results:e}}(c)),c.length},r._addEventListeners=function(){var e=document.documentElement;e.addEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.addEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.addEventListener(\"mousedown\",this._onMouseDown,!0),e.addEventListener(\"click\",this._onClick,{passive:!0}),e.addEventListener(\"touchmove\",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener(\"mouseover\",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener(\"blur\",this._onBlur,{passive:!0})),this.input.element.addEventListener(\"keyup\",this._onKeyUp,{passive:!0}),this.input.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.input.element.addEventListener(\"blur\",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener(\"reset\",this._onFormReset,{passive:!0}),this.input.addEventListeners()},r._removeEventListeners=function(){var e=document.documentElement;e.removeEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.removeEventListener(\"mousedown\",this._onMouseDown,!0),e.removeEventListener(\"click\",this._onClick),e.removeEventListener(\"touchmove\",this._onTouchMove),this.dropdown.element.removeEventListener(\"mouseover\",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener(\"focus\",this._onFocus),this.containerOuter.element.removeEventListener(\"blur\",this._onBlur)),this.input.element.removeEventListener(\"keyup\",this._onKeyUp),this.input.element.removeEventListener(\"focus\",this._onFocus),this.input.element.removeEventListener(\"blur\",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener(\"reset\",this._onFormReset),this.input.removeEventListeners()},r._onKeyDown=function(e){var t,i=e.target,n=e.keyCode,s=e.ctrlKey,r=e.metaKey,o=this._store.activeItems,a=this.input.isFocussed,c=this.dropdown.isActive,l=this.itemList.hasChildren(),h=String.fromCharCode(n),u=J,d=Y,p=Z,m=Q,f=ee,v=te,g=ie,_=ne,b=se,y=s||r;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(h)&&this.showDropdown();var E=((t={})[m]=this._onAKey,t[p]=this._onEnterKey,t[f]=this._onEscapeKey,t[v]=this._onDirectionKey,t[_]=this._onDirectionKey,t[g]=this._onDirectionKey,t[b]=this._onDirectionKey,t[d]=this._onDeleteKey,t[u]=this._onDeleteKey,t);E[n]&&E[n]({event:e,target:i,keyCode:n,metaKey:r,activeItems:o,hasFocusedInput:a,hasActiveDropdown:c,hasItems:l,hasCtrlDownKeyPressed:y})},r._onKeyUp=function(e){var t=e.target,i=e.keyCode,n=this.input.value,s=this._store.activeItems,r=this._canAddItem(s,n),o=J,a=Y;if(this._isTextElement)if(r.notice&&n){var c=this._getTemplate(\"notice\",r.notice);this.dropdown.element.innerHTML=c.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0);else{var l=(i===o||i===a)&&!t.value,h=!this._isTextElement&&this._isSearching,u=this._canSearch&&r.response;l&&h?(this._isSearching=!1,this._store.dispatch(ve(!0))):u&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},r._onAKey=function(e){var t=e.hasItems;e.hasCtrlDownKeyPressed&&t&&(this._canSearch=!1,this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement&&this.highlightAll())},r._onEnterKey=function(e){var t=e.event,i=e.target,n=e.activeItems,s=e.hasActiveDropdown,r=Z,o=i.hasAttribute(\"data-button\");if(this._isTextElement&&i.value){var a=this.input.value;this._canAddItem(n,a).response&&(this.hideDropdown(!0),this._addItem({value:a}),this._triggerChange(a),this.clearInput())}if(o&&(this._handleButtonAction(n,i),t.preventDefault()),s){var c=this.dropdown.getChild(\".\"+this.config.classNames.highlightedState);c&&(n[0]&&(n[0].keyCode=r),this._handleChoiceAction(n,c)),t.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),t.preventDefault())},r._onEscapeKey=function(e){e.hasActiveDropdown&&(this.hideDropdown(!0),this.containerOuter.focus())},r._onDirectionKey=function(e){var t,i,n,s=e.event,r=e.hasActiveDropdown,o=e.keyCode,a=e.metaKey,c=ie,l=ne,h=se;if(r||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var u,d=o===c||o===h?1:-1;if(a||o===h||o===l)u=d>0?this.dropdown.element.querySelector(\"[data-choice-selectable]:last-of-type\"):this.dropdown.element.querySelector(\"[data-choice-selectable]\");else{var p=this.dropdown.element.querySelector(\".\"+this.config.classNames.highlightedState);u=p?function(e,t,i){if(void 0===i&&(i=1),e instanceof Element&&\"string\"==typeof t){for(var n=(i>0?\"next\":\"previous\")+\"ElementSibling\",s=e[n];s;){if(s.matches(t))return s;s=s[n]}return s}}(p,\"[data-choice-selectable]\",d):this.dropdown.element.querySelector(\"[data-choice-selectable]\")}u&&(t=u,i=this.choiceList.element,void 0===(n=d)&&(n=1),t&&(n>0?i.scrollTop+i.offsetHeight>=t.offsetTop+t.offsetHeight:t.offsetTop>=i.scrollTop)||this.choiceList.scrollToChildElement(u,d),this._highlightChoice(u)),s.preventDefault()}},r._onDeleteKey=function(e){var t=e.event,i=e.target,n=e.hasFocusedInput,s=e.activeItems;!n||i.value||this._isSelectOneElement||(this._handleBackspace(s),t.preventDefault())},r._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},r._onTouchEnd=function(e){var t=(e||e.touches[0]).target;this._wasTap&&this.containerOuter.element.contains(t)&&((t===this.containerOuter.element||t===this.containerInner.element)&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation()),this._wasTap=!0},r._onMouseDown=function(e){var t=e.target;if(t instanceof HTMLElement){if(Ee&&this.choiceList.element.contains(t)){var i=this.choiceList.element.firstElementChild,n=\"ltr\"===this._direction?e.offsetX>=i.offsetWidth:e.offsetX0&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0))},r._onFocus=function(e){var t,i=this,n=e.target;this.containerOuter.element.contains(n)&&((t={}).text=function(){n===i.input.element&&i.containerOuter.addFocusState()},t[\"select-one\"]=function(){i.containerOuter.addFocusState(),n===i.input.element&&i.showDropdown(!0)},t[\"select-multiple\"]=function(){n===i.input.element&&(i.showDropdown(!0),i.containerOuter.addFocusState())},t)[this.passedElement.element.type]()},r._onBlur=function(e){var t=this,i=e.target;if(this.containerOuter.element.contains(i)&&!this._isScrollingOnIe){var n,s=this._store.activeItems.some((function(e){return e.highlighted}));((n={}).text=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),s&&t.unhighlightAll(),t.hideDropdown(!0))},n[\"select-one\"]=function(){t.containerOuter.removeFocusState(),(i===t.input.element||i===t.containerOuter.element&&!t._canSearch)&&t.hideDropdown(!0)},n[\"select-multiple\"]=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),t.hideDropdown(!0),s&&t.unhighlightAll())},n)[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},r._onFormReset=function(){this._store.dispatch({type:\"RESET_TO\",state:this._initialState})},r._highlightChoice=function(e){var t=this;void 0===e&&(e=null);var i=Array.from(this.dropdown.element.querySelectorAll(\"[data-choice-selectable]\"));if(i.length){var n=e;Array.from(this.dropdown.element.querySelectorAll(\".\"+this.config.classNames.highlightedState)).forEach((function(e){e.classList.remove(t.config.classNames.highlightedState),e.setAttribute(\"aria-selected\",\"false\")})),n?this._highlightPosition=i.indexOf(n):(n=i.length>this._highlightPosition?i[this._highlightPosition]:i[i.length-1])||(n=i[0]),n.classList.add(this.config.classNames.highlightedState),n.setAttribute(\"aria-selected\",\"true\"),this.passedElement.triggerEvent(B,{el:n}),this.dropdown.isActive&&(this.input.setActiveDescendant(n.id),this.containerOuter.setActiveDescendant(n.id))}},r._addItem=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.choiceId,r=void 0===s?-1:s,o=e.groupId,a=void 0===o?-1:o,c=e.customProperties,l=void 0===c?null:c,h=e.placeholder,u=void 0!==h&&h,d=e.keyCode,p=void 0===d?null:d,m=\"string\"==typeof t?t.trim():t,f=p,v=l,g=this._store.items,_=n||m,b=r||-1,y=a>=0?this._store.getGroupById(a):null,E=g?g.length+1:1;return this.config.prependValue&&(m=this.config.prependValue+m.toString()),this.config.appendValue&&(m+=this.config.appendValue.toString()),this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.choiceId,r=e.groupId,o=e.customProperties,a=e.placeholder,c=e.keyCode;return{type:W,value:t,label:i,id:n,choiceId:s,groupId:r,customProperties:o,placeholder:a,keyCode:c}}({value:m,label:_,id:E,choiceId:b,groupId:a,customProperties:l,placeholder:u,keyCode:f})),this._isSelectOneElement&&this.removeActiveItems(E),this.passedElement.triggerEvent(K,{id:E,value:m,label:_,customProperties:v,groupValue:y&&y.value?y.value:void 0,keyCode:f}),this},r._removeItem=function(e){if(!e||!E(\"Object\",e))return this;var t=e.id,i=e.value,n=e.label,s=e.choiceId,r=e.groupId,o=r>=0?this._store.getGroupById(r):null;return this._store.dispatch(function(e,t){return{type:X,id:e,choiceId:t}}(t,s)),o&&o.value?this.passedElement.triggerEvent(R,{id:t,value:i,label:n,groupValue:o.value}):this.passedElement.triggerEvent(R,{id:t,value:i,label:n}),this},r._addChoice=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.isSelected,r=void 0!==s&&s,o=e.isDisabled,a=void 0!==o&&o,c=e.groupId,l=void 0===c?-1:c,h=e.customProperties,u=void 0===h?null:h,d=e.placeholder,p=void 0!==d&&d,m=e.keyCode,f=void 0===m?null:m;if(null!=t){var v=this._store.choices,g=n||t,_=v?v.length+1:1,b=this._baseId+\"-\"+this._idNames.itemChoice+\"-\"+_;this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.groupId,r=e.disabled,o=e.elementId,a=e.customProperties,c=e.placeholder,l=e.keyCode;return{type:V,value:t,label:i,id:n,groupId:s,disabled:r,elementId:o,customProperties:a,placeholder:c,keyCode:l}}({id:_,groupId:l,elementId:b,value:t,label:g,disabled:a,customProperties:u,placeholder:p,keyCode:f})),r&&this._addItem({value:t,label:g,choiceId:_,customProperties:u,placeholder:p,keyCode:f})}},r._addGroup=function(e){var t=this,i=e.group,n=e.id,s=e.valueKey,r=void 0===s?\"value\":s,o=e.labelKey,a=void 0===o?\"label\":o,c=E(\"Object\",i)?i.choices:Array.from(i.getElementsByTagName(\"OPTION\")),l=n||Math.floor((new Date).valueOf()*Math.random()),h=!!i.disabled&&i.disabled;c?(this._store.dispatch(_e({value:i.label,id:l,active:!0,disabled:h})),c.forEach((function(e){var i=e.disabled||e.parentNode&&e.parentNode.disabled;t._addChoice({value:e[r],label:E(\"Object\",e)?e[a]:e.innerHTML,isSelected:e.selected,isDisabled:i,groupId:l,customProperties:e.customProperties,placeholder:e.placeholder})}))):this._store.dispatch(_e({value:i.label,id:i.id,active:!1,disabled:i.disabled}))},r._getTemplate=function(e){var t;if(!e)return null;for(var i=this.config.classNames,n=arguments.length,s=new Array(n>1?n-1:0),r=1;rthis.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.value.change,()=>{this.input_el.value=this.format_value,this.old_value=this.input_el.value}),this.connect(this.model.properties.low.change,()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&h.assert(t<=l,\"Invalid bounds, low must be inferior to high\"),null!=e&&null!=t&&(this.model.value=Math.max(e,t))}),this.connect(this.model.properties.high.change,()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&h.assert(l>=t,\"Invalid bounds, high must be superior to low\"),null!=e&&null!=l&&(this.model.value=Math.min(e,l))}),this.connect(this.model.properties.high.change,()=>this.input_el.placeholder=this.model.placeholder),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled),this.connect(this.model.properties.placeholder.change,()=>this.input_el.placeholder=this.model.placeholder)}get format_value(){return null!=this.model.value?this.model.pretty(this.model.value):\"\"}_set_input_filter(e){this.input_el.addEventListener(\"input\",()=>{const{selectionStart:t,selectionEnd:l}=this.input_el;if(e(this.input_el.value))this.old_value=this.input_el.value;else{const e=this.old_value.length-this.input_el.value.length;this.input_el.value=this.old_value,t&&l&&this.input_el.setSelectionRange(t-1,l+e)}})}render(){super.render(),this.input_el=u.input({type:\"text\",class:r.bk_input,name:this.model.name,value:this.format_value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.old_value=this.format_value,this.set_input_filter(),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.input_el.addEventListener(\"focusout\",()=>this.input_el.value=this.format_value),this.group_el.appendChild(this.input_el)}set_input_filter(){\"int\"==this.model.mode?this._set_input_filter(e=>d.test(e)):\"float\"==this.model.mode&&this._set_input_filter(e=>p.test(e))}bound_value(e){let t=e;const{low:l,high:i}=this.model;return t=null!=l?Math.max(l,t):t,t=null!=i?Math.min(i,t):t,t}get value(){let e=\"\"!==this.input_el.value?Number(this.input_el.value):null;return null!=e&&(e=this.bound_value(e)),e}change_input(){null==this.value?this.model.value=null:Number.isNaN(this.value)||(this.model.value=this.value)}}l.NumericInputView=_,_.__name__=\"NumericInputView\";class m extends s.InputWidget{constructor(e){super(e)}static init_NumericInput(){this.prototype.default_view=_,this.define({value:[o.Number,null],placeholder:[o.String,\"\"],mode:[o.Any,\"int\"],format:[o.Any],low:[o.Number,null],high:[o.Number,null]})}_formatter(e,t){return a.isString(t)?n.format(e,t):t.doFormat([e],{loc:0})[0]}pretty(e){return null!=this.format?this._formatter(e,this.format):\"\"+e}}l.NumericInput=m,m.__name__=\"NumericInput\",m.init_NumericInput()},\n", - " 442: function _(t,_,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=t(1);e.__exportStar(t(13),r),e.__exportStar(t(9),r),e.__exportStar(t(29),r),e.__exportStar(t(443),r),e.__exportStar(t(8),r),e.__exportStar(t(25),r)},\n", - " 443: function _(e,t,s){Object.defineProperty(s,\"__esModule\",{value:!0});class n{constructor(e){this.seed=e%2147483647,this.seed<=0&&(this.seed+=2147483646)}integer(){return this.seed=48271*this.seed%2147483647,this.seed}float(){return(this.integer()-1)/2147483646}floats(e){const t=new Array(e);for(let s=0;s{n.classes(o).toggle(s.bk_active,t===e)})}}e.RadioButtonGroupView=_,_.__name__=\"RadioButtonGroupView\";class c extends a.ButtonGroup{constructor(t){super(t)}static init_RadioButtonGroup(){this.prototype.default_view=_,this.define({active:[u.Any,null]})}}e.RadioButtonGroup=c,c.__name__=\"RadioButtonGroup\",c.init_RadioButtonGroup()},\n", - " 446: function _(e,i,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=e(1),a=e(72),s=e(29),o=n.__importStar(e(18)),d=e(417),l=e(173),p=e(412);class r extends d.InputGroupView{render(){super.render();const e=a.div({class:[p.bk_input_group,this.model.inline?l.bk_inline:null]});this.el.appendChild(e);const i=s.uniqueId(),{active:t,labels:n}=this.model;this._inputs=[];for(let s=0;sthis.change_active(s)),this._inputs.push(o),this.model.disabled&&(o.disabled=!0),s==t&&(o.checked=!0);const d=a.label({},o,a.span({},n[s]));e.appendChild(d)}}change_active(e){this.model.active=e}}t.RadioGroupView=r,r.__name__=\"RadioGroupView\";class u extends d.InputGroup{constructor(e){super(e)}static init_RadioGroup(){this.prototype.default_view=r,this.define({active:[o.Number],labels:[o.Array,[]],inline:[o.Boolean,!1]})}}t.RadioGroup=u,u.__name__=\"RadioGroup\",u.init_RadioGroup()},\n", - " 447: function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1).__importStar(e(188)),a=e(423),n=e(8);class o extends a.AbstractRangeSliderView{}r.RangeSliderView=o,o.__name__=\"RangeSliderView\";class s extends a.AbstractSlider{constructor(e){super(e),this.behaviour=\"drag\",this.connected=[!1,!0,!1]}static init_RangeSlider(){this.prototype.default_view=o,this.override({format:\"0[.]00\"})}_formatter(e,t){return n.isString(t)?i.format(e,t):t.doFormat([e],{loc:0})[0]}}r.RangeSlider=s,s.__name__=\"RangeSlider\",s.init_RangeSlider()},\n", - " 448: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(72),l=e(8),o=e(13),p=n.__importStar(e(18)),u=e(410),a=e(412);class _ extends u.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,options:t}=this.model.properties;this.on_change(e,()=>{this._update_value()}),this.on_change(t,()=>{s.empty(this.input_el),s.append(this.input_el,...this.options_el())})}options_el(){function e(e){return e.map(e=>{let t,i;return l.isString(e)?t=i=e:[t,i]=e,s.option({value:t},i)})}const{options:t}=this.model;return l.isArray(t)?e(t):o.entries(t).map(([t,i])=>s.optgroup({label:t},e(i)))}render(){super.render(),this.input_el=s.select({class:a.bk_input,name:this.model.name,disabled:this.model.disabled},this.options_el()),this._update_value(),this.input_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.input_el)}change_input(){const e=this.input_el.value;this.model.value=e,super.change_input()}_update_value(){const{value:e}=this.model;null!=e&&0!=e.length&&(this.input_el.value=this.model.value)}}i.SelectView=_,_.__name__=\"SelectView\";class h extends u.InputWidget{constructor(e){super(e)}static init_Select(){this.prototype.default_view=_,this.define({value:[p.String,\"\"],options:[p.Any,[]]})}}i.Select=h,h.__name__=\"Select\",h.init_Select()},\n", - " 449: function _(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});const i=e(1).__importStar(e(188)),o=e(423),s=e(8);class _ extends o.AbstractSliderView{}r.SliderView=_,_.__name__=\"SliderView\";class a extends o.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}static init_Slider(){this.prototype.default_view=_,this.override({format:\"0[.]00\"})}_formatter(e,t){return s.isString(t)?i.format(e,t):t.doFormat([e],{loc:0})[0]}}r.Slider=a,a.__name__=\"Slider\",a.init_Slider()},\n", - " 450: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const n=e(1),s=e(441),l=n.__importStar(e(18)),r=e(72),{min:o,max:_,floor:a,abs:h}=Math;function u(e){return a(e)!==e?e.toFixed(16).replace(/0+$/,\"\").split(\".\")[1].length:0}class p extends s.NumericInputView{*buttons(){yield this.btn_up_el,yield this.btn_down_el}initialize(){super.initialize(),this._interval=200}connect_signals(){super.connect_signals();const e=this.model.properties;this.on_change(e.disabled,()=>{for(const e of this.buttons())r.toggle_attribute(e,\"disabled\",this.model.disabled)})}render(){super.render(),this.wrapper_el=r.div({class:\"bk-spin-wrapper\"}),this.group_el.replaceChild(this.wrapper_el,this.input_el),this.btn_up_el=r.button({class:\"bk-spin-btn bk-spin-btn-up\"}),this.btn_down_el=r.button({class:\"bk-spin-btn bk-spin-btn-down\"}),this.wrapper_el.appendChild(this.input_el),this.wrapper_el.appendChild(this.btn_up_el),this.wrapper_el.appendChild(this.btn_down_el);for(const e of this.buttons())r.toggle_attribute(e,\"disabled\",this.model.disabled),e.addEventListener(\"mousedown\",e=>this._btn_mouse_down(e)),e.addEventListener(\"mouseup\",()=>this._btn_mouse_up()),e.addEventListener(\"mouseleave\",()=>this._btn_mouse_leave());this.input_el.addEventListener(\"keydown\",e=>this._input_key_down(e)),this.input_el.addEventListener(\"keyup\",()=>this.model.value_throttled=this.model.value),this.input_el.addEventListener(\"wheel\",e=>this._input_mouse_wheel(e)),this.input_el.addEventListener(\"wheel\",function(e,t,i=!1){let n;return function(...s){const l=this,r=i&&void 0===n;void 0!==n&&clearTimeout(n),n=setTimeout((function(){n=void 0,i||e.apply(l,s)}),t),r&&e.apply(l,s)}}(()=>{this.model.value_throttled=this.model.value},this.model.wheel_wait,!1))}get precision(){const{low:e,high:t,step:i}=this.model;return _(...[e,t,i].map(h).reduce((e,t)=>(null!=t&&e.push(t),e),[]).map(u))}_start_incrementation(e){clearInterval(this._interval_handle),this._counter=0;const{step:t}=this.model,i=e=>{if(this._counter+=1,this._counter%5==0){const t=Math.floor(this._counter/5);t<10?(clearInterval(this._interval_handle),this._interval_handle=setInterval(()=>i(e),this._interval/(t+1))):t>=10&&t<=13&&(clearInterval(this._interval_handle),this._interval_handle=setInterval(()=>i(2*e),this._interval/10))}this.increment(e)};this._interval_handle=setInterval(()=>i(e*t),this._interval)}_stop_incrementation(){clearInterval(this._interval_handle),this.model.value_throttled=this.model.value}_btn_mouse_down(e){e.preventDefault();const t=e.currentTarget===this.btn_up_el?1:-1;this.increment(t*this.model.step),this.input_el.focus(),this._start_incrementation(t)}_btn_mouse_up(){this._stop_incrementation()}_btn_mouse_leave(){this._stop_incrementation()}_input_mouse_wheel(e){if(document.activeElement===this.input_el){e.preventDefault();const t=e.deltaY>0?-1:1;this.increment(t*this.model.step)}}_input_key_down(e){switch(e.keyCode){case r.Keys.Up:return e.preventDefault(),this.increment(this.model.step);case r.Keys.Down:return e.preventDefault(),this.increment(-this.model.step);case r.Keys.PageUp:return e.preventDefault(),this.increment(this.model.page_step_multiplier*this.model.step);case r.Keys.PageDown:return e.preventDefault(),this.increment(-this.model.page_step_multiplier*this.model.step)}}adjust_to_precision(e){return this.bound_value(Number(e.toFixed(this.precision)))}increment(e){const{low:t,high:i}=this.model;null==this.model.value?e>0?this.model.value=null!=t?t:null!=i?o(0,i):0:e<0&&(this.model.value=null!=i?i:null!=t?_(t,0):0):this.model.value=this.adjust_to_precision(this.model.value+e)}change_input(){super.change_input(),this.model.value_throttled=this.model.value}}i.SpinnerView=p,p.__name__=\"SpinnerView\";class d extends s.NumericInput{constructor(e){super(e)}static init_Spinner(){this.prototype.default_view=p,this.define({value_throttled:[l.Number,null],step:[l.Number,1],page_step_multiplier:[l.Number,10],wheel_wait:[l.Number,100]}),this.override({mode:\"float\"})}}i.Spinner=d,d.__name__=\"Spinner\",d.init_Spinner()},\n", - " 451: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),n=e(410),l=e(72),h=s.__importStar(e(18)),o=e(412);class a extends n.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,()=>this.input_el.name=this.model.name||\"\"),this.connect(this.model.properties.value.change,()=>this.input_el.value=this.model.value),this.connect(this.model.properties.disabled.change,()=>this.input_el.disabled=this.model.disabled),this.connect(this.model.properties.placeholder.change,()=>this.input_el.placeholder=this.model.placeholder),this.connect(this.model.properties.rows.change,()=>this.input_el.rows=this.model.rows),this.connect(this.model.properties.cols.change,()=>this.input_el.cols=this.model.cols),this.connect(this.model.properties.max_length.change,()=>this.input_el.maxLength=this.model.max_length)}render(){super.render(),this.input_el=l.textarea({class:o.bk_input,name:this.model.name,disabled:this.model.disabled,placeholder:this.model.placeholder,cols:this.model.cols,rows:this.model.rows,maxLength:this.model.max_length}),this.input_el.textContent=this.model.value,this.input_el.addEventListener(\"change\",()=>this.change_input()),this.group_el.appendChild(this.input_el)}change_input(){this.model.value=this.input_el.value,super.change_input()}}i.TextAreaInputView=a,a.__name__=\"TextAreaInputView\";class p extends n.InputWidget{constructor(e){super(e)}static init_TextAreaInput(){this.prototype.default_view=a,this.define({value:[h.String,\"\"],value_input:[h.String,\"\"],placeholder:[h.String,\"\"],cols:[h.Number,20],rows:[h.Number,2],max_length:[h.Number,500]})}}i.TextAreaInput=p,p.__name__=\"TextAreaInput\",p.init_TextAreaInput()},\n", - " 452: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),c=e(404),o=e(72),a=s.__importStar(e(18)),n=e(173);class l extends c.AbstractButtonView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._update_active())}render(){super.render(),this._update_active()}click(){this.model.active=!this.model.active,super.click()}_update_active(){o.classes(this.button_el).toggle(n.bk_active,this.model.active)}}i.ToggleView=l,l.__name__=\"ToggleView\";class _ extends c.AbstractButton{constructor(e){super(e)}static init_Toggle(){this.prototype.default_view=l,this.define({active:[a.Boolean,!1]}),this.override({label:\"Toggle\"})}}i.Toggle=_,_.__name__=\"Toggle\",_.init_Toggle()},\n", - " }, 402, {\"models/widgets/main\":402,\"models/widgets/index\":403,\"models/widgets/abstract_button\":404,\"models/widgets/control\":405,\"models/widgets/widget\":472,\"models/widgets/abstract_icon\":407,\"models/widgets/autocomplete_input\":408,\"models/widgets/text_input\":409,\"models/widgets/input_widget\":410,\"styles/widgets/inputs.css\":411,\"styles/widgets/inputs\":412,\"models/widgets/button\":413,\"models/widgets/checkbox_button_group\":414,\"models/widgets/button_group\":415,\"models/widgets/checkbox_group\":416,\"models/widgets/input_group\":417,\"models/widgets/color_picker\":418,\"models/widgets/date_picker\":419,\"styles/widgets/flatpickr.css\":421,\"models/widgets/date_range_slider\":422,\"models/widgets/abstract_slider\":423,\"styles/widgets/sliders\":425,\"styles/widgets/nouislider.css\":426,\"styles/widgets/sliders.css\":427,\"models/widgets/date_slider\":428,\"models/widgets/div\":429,\"models/widgets/markup\":430,\"styles/clearfix\":431,\"styles/clearfix.css\":432,\"models/widgets/dropdown\":433,\"models/widgets/file_input\":434,\"models/widgets/multiselect\":435,\"models/widgets/paragraph\":436,\"models/widgets/password_input\":437,\"models/widgets/multichoice\":438,\"styles/widgets/choices.css\":440,\"models/widgets/numeric_input\":441,\"api/linalg\":442,\"core/util/random\":443,\"models/widgets/pretext\":444,\"models/widgets/radio_button_group\":445,\"models/widgets/radio_group\":446,\"models/widgets/range_slider\":447,\"models/widgets/selectbox\":448,\"models/widgets/slider\":449,\"models/widgets/spinner\":450,\"models/widgets/textarea_input\":451,\"models/widgets/toggle\":452}, {});\n", - " })\n", - "\n", - "\n", - " /* END bokeh-widgets.min.js */\n", - " },\n", - " \n", - " function(Bokeh) {\n", - " /* BEGIN bokeh-tables.min.js */\n", - " /*!\n", - " * Copyright (c) 2012 - 2020, Anaconda, Inc., and Bokeh Contributors\n", - " * All rights reserved.\n", - " * \n", - " * Redistribution and use in source and binary forms, with or without modification,\n", - " * are permitted provided that the following conditions are met:\n", - " * \n", - " * Redistributions of source code must retain the above copyright notice,\n", - " * this list of conditions and the following disclaimer.\n", - " * \n", - " * Redistributions in binary form must reproduce the above copyright notice,\n", - " * this list of conditions and the following disclaimer in the documentation\n", - " * and/or other materials provided with the distribution.\n", - " * \n", - " * Neither the name of Anaconda nor the names of any contributors\n", - " * may be used to endorse or promote products derived from this software\n", - " * without specific prior written permission.\n", - " * \n", - " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", - " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", - " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", - " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", - " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", - " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", - " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", - " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", - " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", - " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", - " * THE POSSIBILITY OF SUCH DAMAGE.\n", - " */\n", - " (function(root, factory) {\n", - " factory(root[\"Bokeh\"], \"2.2.3\");\n", - " })(this, function(Bokeh, version) {\n", - " var define;\n", - " return (function(modules, entry, aliases, externals) {\n", - " const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n", - " if (bokeh != null) {\n", - " return bokeh.register_plugin(modules, entry, aliases);\n", - " } else {\n", - " throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n", - " }\n", - " })\n", - " ({\n", - " 453: function _(e,t,o){Object.defineProperty(o,\"__esModule\",{value:!0});const r=e(1).__importStar(e(454));o.Tables=r;e(7).register_models(r)},\n", - " 454: function _(a,g,r){Object.defineProperty(r,\"__esModule\",{value:!0});const e=a(1);e.__exportStar(a(455),r),e.__exportStar(a(475),r);var t=a(456);r.DataTable=t.DataTable;var o=a(474);r.TableColumn=o.TableColumn;var n=a(473);r.TableWidget=n.TableWidget;var u=a(481);r.AvgAggregator=u.AvgAggregator,r.MinAggregator=u.MinAggregator,r.MaxAggregator=u.MaxAggregator,r.SumAggregator=u.SumAggregator;var l=a(482);r.GroupingInfo=l.GroupingInfo,r.DataCube=l.DataCube},\n", - " 455: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1).__importStar(e(18)),r=e(72),a=e(78),n=e(81),l=e(456),u=e(478);class d extends a.DOMView{constructor(e){const{model:t,parent:i}=e.column;super(Object.assign({model:t,parent:i},e)),this.args=e,this.initialize(),this.render()}get emptyValue(){return null}initialize(){super.initialize(),this.inputEl=this._createInput(),this.defaultValue=null}async lazy_initialize(){throw new Error(\"unsupported\")}css_classes(){return super.css_classes().concat(u.bk_cell_editor)}render(){super.render(),this.args.container.append(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()}renderEditor(){}disableNavigation(){this.inputEl.addEventListener(\"keydown\",e=>{switch(e.keyCode){case r.Keys.Left:case r.Keys.Right:case r.Keys.Up:case r.Keys.Down:case r.Keys.PageUp:case r.Keys.PageDown:e.stopImmediatePropagation()}})}destroy(){this.remove()}focus(){this.inputEl.focus()}show(){}hide(){}position(){}getValue(){return this.inputEl.value}setValue(e){this.inputEl.value=e}serializeValue(){return this.getValue()}isValueChanged(){return!(\"\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue}applyValue(e,t){const i=this.args.grid.getData(),s=i.index.indexOf(e[l.DTINDEX_NAME]);i.setField(s,this.args.column.field,t)}loadValue(e){const t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)}validateValue(e){if(this.args.column.validator){const t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}}validate(){return this.validateValue(this.getValue())}}i.CellEditorView=d,d.__name__=\"CellEditorView\";class o extends n.Model{}i.CellEditor=o,o.__name__=\"CellEditor\";class _ extends d{get emptyValue(){return\"\"}_createInput(){return r.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}}i.StringEditorView=_,_.__name__=\"StringEditorView\";class c extends o{static init_StringEditor(){this.prototype.default_view=_,this.define({completions:[s.Array,[]]})}}i.StringEditor=c,c.__name__=\"StringEditor\",c.init_StringEditor();class p extends d{_createInput(){return r.textarea()}renderEditor(){this.inputEl.focus(),this.inputEl.select()}}i.TextEditorView=p,p.__name__=\"TextEditorView\";class h extends o{static init_TextEditor(){this.prototype.default_view=p}}i.TextEditor=h,h.__name__=\"TextEditor\",h.init_TextEditor();class E extends d{_createInput(){return r.select()}renderEditor(){for(const e of this.model.options)this.inputEl.appendChild(r.option({value:e},e));this.focus()}}i.SelectEditorView=E,E.__name__=\"SelectEditorView\";class V extends o{static init_SelectEditor(){this.prototype.default_view=E,this.define({options:[s.Array,[]]})}}i.SelectEditor=V,V.__name__=\"SelectEditor\",V.init_SelectEditor();class m extends d{_createInput(){return r.input({type:\"text\"})}}i.PercentEditorView=m,m.__name__=\"PercentEditorView\";class f extends o{static init_PercentEditor(){this.prototype.default_view=m}}i.PercentEditor=f,f.__name__=\"PercentEditor\",f.init_PercentEditor();class x extends d{_createInput(){return r.input({type:\"checkbox\"})}renderEditor(){this.focus()}loadValue(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue}serializeValue(){return this.inputEl.checked}}i.CheckboxEditorView=x,x.__name__=\"CheckboxEditorView\";class w extends o{static init_CheckboxEditor(){this.prototype.default_view=x}}i.CheckboxEditor=w,w.__name__=\"CheckboxEditor\",w.init_CheckboxEditor();class g extends d{_createInput(){return r.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){return parseInt(this.getValue(),10)||0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid integer\"}:super.validateValue(e)}}i.IntEditorView=g,g.__name__=\"IntEditorView\";class y extends o{static init_IntEditor(){this.prototype.default_view=g,this.define({step:[s.Number,1]})}}i.IntEditor=y,y.__name__=\"IntEditor\",y.init_IntEditor();class v extends d{_createInput(){return r.input({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){return parseFloat(this.getValue())||0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid number\"}:super.validateValue(e)}}i.NumberEditorView=v,v.__name__=\"NumberEditorView\";class b extends o{static init_NumberEditor(){this.prototype.default_view=v,this.define({step:[s.Number,.01]})}}i.NumberEditor=b,b.__name__=\"NumberEditor\",b.init_NumberEditor();class I extends d{_createInput(){return r.input({type:\"text\"})}}i.TimeEditorView=I,I.__name__=\"TimeEditorView\";class N extends o{static init_TimeEditor(){this.prototype.default_view=I}}i.TimeEditor=N,N.__name__=\"TimeEditor\",N.init_TimeEditor();class C extends d{_createInput(){return r.input({type:\"text\"})}get emptyValue(){return new Date}renderEditor(){this.inputEl.focus(),this.inputEl.select()}destroy(){super.destroy()}show(){super.show()}hide(){super.hide()}position(){return super.position()}getValue(){}setValue(e){}}i.DateEditorView=C,C.__name__=\"DateEditorView\";class D extends o{static init_DateEditor(){this.prototype.default_view=C}}i.DateEditor=D,D.__name__=\"DateEditor\",D.init_DateEditor()},\n", - " 456: function _(e,t,i){Object.defineProperty(i,\"__esModule\",{value:!0});const s=e(1),o=e(457),n=e(461),l=e(462),r=e(463),d=e(29),a=e(8),h=e(9),u=e(13),c=e(19),_=e(472),m=e(473),g=e(474),p=e(478),f=s.__importDefault(e(479)),b=s.__importDefault(e(480));i.DTINDEX_NAME=\"__bkdt_internal_index__\",i.AutosizeModes={fit_columns:\"FCV\",fit_viewport:\"FVC\",force_fit:\"LFF\",none:\"NOA\"};class w{constructor(e,t){this.init(e,t)}init(e,t){if(i.DTINDEX_NAME in e.data)throw new Error(`special name ${i.DTINDEX_NAME} cannot be used as a data table column`);this.source=e,this.view=t,this.index=[...this.view.indices]}getLength(){return this.index.length}getItem(e){const t={};for(const i of u.keys(this.source.data))t[i]=this.source.data[i][this.index[e]];return t[i.DTINDEX_NAME]=this.index[e],t}getField(e,t){return t==i.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]}setField(e,t,i){const s=this.index[e];this.source.patch({[t]:[[s,i]]})}getRecords(){return h.range(0,this.getLength()).map(e=>this.getItem(e))}getItems(){return this.getRecords()}slice(e,t,i){return e=null!=e?e:0,t=null!=t?t:this.getLength(),i=null!=i?i:1,h.range(e,t,i).map(e=>this.getItem(e))}sort(e){let t=e.map(e=>[e.sortCol.field,e.sortAsc?1:-1]);0==t.length&&(t=[[i.DTINDEX_NAME,1]]);const s=this.getRecords(),o=this.index.slice();this.index.sort((e,i)=>{for(const[n,l]of t){const t=s[o.indexOf(e)][n],r=s[o.indexOf(i)][n];if(t!==r)return a.isNumber(t)&&a.isNumber(r)?l*(t-r||+isNaN(t)-+isNaN(r)):\"\"+t>\"\"+r?l:-l}return 0})}}i.TableDataProvider=w,w.__name__=\"TableDataProvider\";class x extends _.WidgetView{constructor(){super(...arguments),this._in_selection_update=!1,this._warned_not_reorderable=!1,this._width=null}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.render()),this.connect(this.model.source.streaming,()=>this.updateGrid()),this.connect(this.model.source.patching,()=>this.updateGrid()),this.connect(this.model.source.change,()=>this.updateGrid()),this.connect(this.model.source.properties.data.change,()=>this.updateGrid()),this.connect(this.model.source.selected.change,()=>this.updateSelection()),this.connect(this.model.source.selected.properties.indices.change,()=>this.updateSelection())}remove(){var e;null===(e=this.grid)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),f.default,b.default]}update_position(){super.update_position(),this.grid.resizeCanvas()}after_layout(){super.after_layout(),this.updateLayout(!0,!1)}box_sizing(){const e=super.box_sizing();return\"fit_viewport\"===this.model.autosize_mode&&null!=this._width&&(e.width=this._width),e}updateLayout(e,t){const s=this.autosize;s===i.AutosizeModes.fit_columns||s===i.AutosizeModes.force_fit?(e||this.grid.resizeCanvas(),this.grid.autosizeColumns()):e&&t&&s===i.AutosizeModes.fit_viewport&&this.invalidate_layout()}updateGrid(){if(this.model.view.compute_indices(),this.data.init(this.model.source,this.model.view),this.model.sortable){const e=this.grid.getColumns(),t=this.grid.getSortColumns().map(t=>({sortCol:{field:e[this.grid.getColumnIndex(t.columnId)].field},sortAsc:t.sortAsc}));this.data.sort(t)}this.grid.invalidate(),this.updateLayout(!0,!0)}updateSelection(){if(this._in_selection_update)return;const{selected:e}=this.model.source,t=e.indices.map(e=>this.data.index.indexOf(e)).sort();this._in_selection_update=!0,this.grid.setSelectedRows(t),this._in_selection_update=!1;const i=this.grid.getViewport(),s=this.model.get_scroll_index(i,t);null!=s&&this.grid.scrollRowToTop(s)}newIndexColumn(){return{id:d.uniqueId(),name:this.model.index_header,field:i.DTINDEX_NAME,width:this.model.index_width,behavior:\"select\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:p.bk_cell_index,headerCssClass:p.bk_header_index}}css_classes(){return super.css_classes().concat(p.bk_data_table)}get autosize(){let e;return e=!0===this.model.fit_columns?i.AutosizeModes.force_fit:!1===this.model.fit_columns?i.AutosizeModes.none:i.AutosizeModes[this.model.autosize_mode],e}render(){var e;const t=this.model.columns.map(e=>Object.assign(Object.assign({},e.toColumn()),{parent:this}));let s=null;if(\"checkbox\"==this.model.selectable&&(s=new n.CheckboxSelectColumn({cssClass:p.bk_cell_select}),t.unshift(s.getColumnDefinition())),null!=this.model.index_position){const e=this.model.index_position,i=this.newIndexColumn();-1==e?t.push(i):e<-1?t.splice(e+1,0,i):t.splice(e,0,i)}let{reorderable:d}=this.model;!d||\"undefined\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(this._warned_not_reorderable||(c.logger.warn(\"jquery-ui is required to enable DataTable.reorderable\"),this._warned_not_reorderable=!0),d=!1);let h=-1,u=!1;const{frozen_rows:_,frozen_columns:m}=this.model,g=null==m?-1:m-1;null!=_&&(u=_<0,h=Math.abs(_));const f={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:d,autosizeColsMode:this.autosize,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:this.model.auto_edit,autoHeight:!1,rowHeight:this.model.row_height,frozenColumn:g,frozenRow:h,frozenBottom:u},b=null!=this.grid;if(this.data=new w(this.model.source,this.model.view),this.grid=new r.Grid(this.el,this.data,t,f),this.autosize==i.AutosizeModes.fit_viewport){this.grid.autosizeColumns();let i=0;for(const s of t)i+=null!==(e=s.width)&&void 0!==e?e:0;this._width=Math.ceil(i)}if(this.grid.onSort.subscribe((e,t)=>{if(!this.model.sortable)return;const i=t.sortCols;null!=i&&(this.data.sort(i),this.grid.invalidate(),this.updateSelection(),this.grid.render(),this.model.header_row||this._hide_header(),this.model.update_sort_columns(i))}),!1!==this.model.selectable){this.grid.setSelectionModel(new o.RowSelectionModel({selectActiveRow:null==s})),null!=s&&this.grid.registerPlugin(s);const e={dataItemColumnValueExtractor(e,t){let i=e[t.field];return a.isString(i)&&(i=i.replace(/\\n/g,\"\\\\n\")),i},includeHeaderWhenCopying:!1};this.grid.registerPlugin(new l.CellExternalCopyManager(e)),this.grid.onSelectedRowsChanged.subscribe((e,t)=>{this._in_selection_update||(this.model.source.selected.indices=t.rows.map(e=>this.data.index[e]))}),this.updateSelection(),this.model.header_row||this._hide_header()}b&&this.updateLayout(b,!1)}_hide_header(){for(const e of this.el.querySelectorAll(\".slick-header-columns\"))e.style.height=\"0px\";this.grid.resizeCanvas()}}i.DataTableView=x,x.__name__=\"DataTableView\";class C extends m.TableWidget{constructor(e){super(e),this._sort_columns=[]}get sort_columns(){return this._sort_columns}static init_DataTable(){this.prototype.default_view=x,this.define(({Array:e,Boolean:t,Int:i,Ref:s,String:o,Enum:n,Or:l,Null:r})=>({autosize_mode:[n(\"fit_columns\",\"fit_viewport\",\"none\",\"force_fit\"),\"force_fit\"],auto_edit:[t,!1],columns:[e(s(g.TableColumn)),[]],fit_columns:[l(t,r),null],frozen_columns:[l(i,r),null],frozen_rows:[l(i,r),null],sortable:[t,!0],reorderable:[t,!0],editable:[t,!1],selectable:[l(t,n(\"checkbox\")),!0],index_position:[l(i,r),0],index_header:[o,\"#\"],index_width:[i,40],scroll_to_selection:[t,!0],header_row:[t,!0],row_height:[i,25]})),this.override({width:600,height:400})}update_sort_columns(e){this._sort_columns=e.map(({sortCol:e,sortAsc:t})=>({field:e.field,sortAsc:t}))}get_scroll_index(e,t){return this.scroll_to_selection&&0!=t.length?h.some(t,t=>e.top<=t&&t<=e.bottom)?null:Math.max(0,Math.min(...t)-1):null}}i.DataTable=C,C.__name__=\"DataTable\",C.init_DataTable()},\n", - " 457: function _(e,t,n){var o=e(458),r=e(460);t.exports={RowSelectionModel:function(e){var t,n,l,i=[],c=this,u=new r.EventHandler,s={selectActiveRow:!0};function a(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function f(e){for(var t=[],n=0;n=0&&l0&&t-1 in e)}b.fn=b.prototype={jquery:\"3.5.1\",constructor:b,length:0,toArray:function(){return i.call(this)},get:function(e){return null==e?i.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return b.each(this,e)},map:function(e){return this.pushStack(b.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(i.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(b.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(b.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"�\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){p()},ae=be((function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()}),{dir:\"parentNode\",next:\"legend\"});try{H.apply(j=O.call(w.childNodes),w.childNodes),j[w.childNodes.length].nodeType}catch(e){H={apply:j.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(t),t=t||d,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return H.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return H.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+\" \"]&&(!v||!v.test(e))&&(1!==w||\"object\"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===w&&(U.test(e)||z.test(e))){for((m=ee.test(e)&&ye(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute(\"id\"))?c=c.replace(re,ie):t.setAttribute(\"id\",c=b)),s=(h=a(e)).length;s--;)h[s]=(c?\"#\"+c:\":scope\")+\" \"+xe(h[s]);y=h.join(\",\")}try{return H.apply(r,m.querySelectorAll(y)),r}catch(t){A(e,!0)}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace($,\"$1\"),t,r,i)}function ue(){var e=[];return function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}}function le(e){return e[b]=!0,e}function ce(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split(\"|\"),i=n.length;i--;)r.attrHandle[n[i]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function ge(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function ve(e){return le((function(t){return t=+t,le((function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},p=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!=d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,g=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",oe,!1):i.attachEvent&&i.attachEvent(\"onunload\",oe)),n.scope=ce((function(e){return h.appendChild(e).appendChild(d.createElement(\"div\")),void 0!==e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length})),n.attributes=ce((function(e){return e.className=\"i\",!e.getAttribute(\"className\")})),n.getElementsByTagName=ce((function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length})),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ce((function(e){var t;h.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||v.push(\"~=\"),(t=d.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[\"+M+\"*name\"+M+\"*=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")})),ce((function(e){e.innerHTML=\"\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")}))),(n.matchesSelector=K.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),y.push(\"!=\",F)})),v=v.length&&new RegExp(v.join(\"|\")),y=y.length&&new RegExp(y.join(\"|\")),t=K.test(h.compareDocumentPosition),x=t||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},N=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==d||e.ownerDocument==w&&x(w,e)?-1:t==d||t.ownerDocument==w&&x(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==d?-1:t==d?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]==w?-1:s[r]==w?1:0},d):d},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(p(e),n.matchesSelector&&g&&!A[t+\" \"]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return se(t,d,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!=d&&p(e),x(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&D.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(N),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&E(e,(function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")}))},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace(B,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=P(e,o[a])]=!(n[r]=o[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:le((function(e){var t=[],n=[],r=s(e.replace($,\"$1\"));return r[b]?le((function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return se(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:le((function(e){return V.test(e||\"\")||se.error(\"unsupported lang: \"+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve((function(){return[0]})),last:ve((function(e,t){return[t-1]})),eq:ve((function(e,t,n){return[n<0?n+t:n]})),even:ve((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ve((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1&&(o[l]=!(a[l]=f))}}else y=Te(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)}))}function Ee(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=be((function(e){return e===t}),s,!0),f=be((function(e){return P(t,e)>-1}),s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&we(p),u>1&&xe(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace($,\"$1\"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,v,y=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,S=C.length;for(c&&(l=a==d||a||c);m!==S&&null!=(f=C[m]);m++){if(i&&f){for(h=0,a||f.ownerDocument==d||(p(f),s=!g);v=e[h++];)if(v(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!v&&f)&&y--,o&&x.push(f))}if(y+=m,n&&m!==y){for(h=0;v=t[h++];)v(x,b,a,s);if(o){if(y>0)for(;m--;)x[m]||b[m]||(b[m]=q.call(u));b=Te(b)}H.apply(u,b),c&&!o&&b.length>0&&y+t.length>1&&se.uniqueSort(u)}return c&&(T=E,l=w),x};return n?le(o):o}(o,i))).selector=e}return s},u=se.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=G.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((f=r.find[c])&&(i=f(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ye(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&xe(u)))return H.apply(n,i),n;break}}return(p||s(e,d))(i,t,!g,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(N).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))})),ce((function(e){return e.innerHTML=\"\",\"#\"===e.firstChild.getAttribute(\"href\")}))||fe(\"type|href|height|width\",(function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")}))||fe(\"value\",(function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute(\"disabled\")}))||fe(R,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(e);b.find=T,b.expr=T.selectors,b.expr[\":\"]=b.expr.pseudos,b.uniqueSort=b.unique=T.uniqueSort,b.text=T.getText,b.isXMLDoc=T.isXML,b.contains=T.contains,b.escapeSelector=T.escape;var C=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&b(e).is(n))break;r.push(e)}return r},E=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},S=b.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function N(e,t,n){return h(t)?b.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?b.grep(e,(function(e){return e===t!==n})):\"string\"!=typeof t?b.grep(e,(function(e){return s.call(t,e)>-1!==n})):b.filter(t,e,n)}b.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?b.find.matchesSelector(r,e)?[r]:[]:b.find.matches(e,b.grep(t,(function(e){return 1===e.nodeType})))},b.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(b(e).filter((function(){for(t=0;t1?b.uniqueSort(n):n},filter:function(e){return this.pushStack(N(this,e||[],!1))},not:function(e){return this.pushStack(N(this,e||[],!0))},is:function(e){return!!N(this,\"string\"==typeof e&&S.test(e)?b(e):e||[],!1).length}});var D,j=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(b.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof b?t[0]:t,b.merge(this,b.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),A.test(r[1])&&b.isPlainObject(t))for(r in t)h(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):h(e)?void 0!==n.ready?n.ready(e):e(b):b.makeArray(e,this)}).prototype=b.fn,D=b(v);var q=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}b.fn.extend({has:function(e){var t=b(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&b.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?b.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?s.call(b(e),this[0]):s.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(b.uniqueSort(b.merge(this.get(),b(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return C(e,\"parentNode\")},parentsUntil:function(e,t,n){return C(e,\"parentNode\",n)},next:function(e){return H(e,\"nextSibling\")},prev:function(e){return H(e,\"previousSibling\")},nextAll:function(e){return C(e,\"nextSibling\")},prevAll:function(e){return C(e,\"previousSibling\")},nextUntil:function(e,t,n){return C(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return C(e,\"previousSibling\",n)},siblings:function(e){return E((e.parentNode||{}).firstChild,e)},children:function(e){return E(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(k(e,\"template\")&&(e=e.content||e),b.merge([],e.childNodes))}},(function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=b.filter(r,i)),this.length>1&&(L[e]||b.uniqueSort(i),q.test(e)&&i.reverse()),this.pushStack(i)}}));var O=/[^\\x20\\t\\r\\n\\f]+/g;function P(e){return e}function R(e){throw e}function M(e,t,n,r){var i;try{e&&h(i=e.promise)?i.call(e).done(t).fail(n):e&&h(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}b.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return b.each(e.match(O)||[],(function(e,n){t[n]=!0})),t}(e):b.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?b.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},b.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",b.Callbacks(\"memory\"),b.Callbacks(\"memory\"),2],[\"resolve\",\"done\",b.Callbacks(\"once memory\"),b.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",b.Callbacks(\"once memory\"),b.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return b.Deferred((function(t){b.each(n,(function(n,r){var i=h(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&h(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==R&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(b.Deferred.getStackHook&&(c.stackTrace=b.Deferred.getStackHook()),e.setTimeout(c))}}return b.Deferred((function(e){n[0][3].add(a(0,e,h(i)?i:P,e.notifyWith)),n[1][3].add(a(0,e,h(t)?t:P)),n[2][3].add(a(0,e,h(r)?r:R))})).promise()},promise:function(e){return null!=e?b.extend(e,i):i}},o={};return b.each(n,(function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add((function(){r=s}),n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith})),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),o=i.call(arguments),a=b.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?i.call(arguments):n,--t||a.resolveWith(r,o)}};if(t<=1&&(M(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||h(o[n]&&o[n].then)))return a.then();for(;n--;)M(o[n],s(n),a.reject);return a.promise()}});var I=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;b.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&I.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},b.readyException=function(t){e.setTimeout((function(){throw t}))};var W=b.Deferred();function F(){v.removeEventListener(\"DOMContentLoaded\",F),e.removeEventListener(\"load\",F),b.ready()}b.fn.ready=function(e){return W.then(e).catch((function(e){b.readyException(e)})),this},b.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--b.readyWait:b.isReady)||(b.isReady=!0,!0!==e&&--b.readyWait>0||W.resolveWith(v,[b]))}}),b.ready.then=W.then,\"complete\"===v.readyState||\"loading\"!==v.readyState&&!v.documentElement.doScroll?e.setTimeout(b.ready):(v.addEventListener(\"DOMContentLoaded\",F),e.addEventListener(\"load\",F));var B=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n))for(s in i=!0,n)B(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,h(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(b(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each((function(){Y.remove(this,e)}))}}),b.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=G.get(e,t),n&&(!r||Array.isArray(n)?r=G.access(e,t,b.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,(function(){b.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return G.get(e,n)||G.access(e,n,{empty:b.Callbacks(\"once memory\").add((function(){G.remove(e,[t+\"queue\",n])}))})}}),b.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i;ce=v.createDocumentFragment().appendChild(v.createElement(\"div\")),(fe=v.createElement(\"input\")).setAttribute(\"type\",\"radio\"),fe.setAttribute(\"checked\",\"checked\"),fe.setAttribute(\"name\",\"t\"),ce.appendChild(fe),d.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML=\"\",d.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=\"\",d.option=!!ce.lastChild;var ge={thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&k(e,t)?b.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n\",\"\"]);var me=/<|&#?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d-1)i&&i.push(o);else if(l=re(o),a=ve(f.appendChild(o),\"script\"),l&&ye(a),n)for(c=0;o=a[c++];)he.test(o.type||\"\")&&n.push(o);return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==(\"focus\"===t)}function ke(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return b().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=b.guid++)),e.each((function(){b.event.add(this,t,i,r,n)}))}function Ae(e,t,n){n?(G.set(e,t,!1),b.event.add(e,t,{namespace:!1,handler:function(e){var r,o,a=G.get(this,t);if(1&e.isTrigger&&this[t]){if(a.length)(b.event.special[t]||{}).delegateType&&e.stopPropagation();else if(a=i.call(arguments),G.set(this,t,a),r=n(this,t),this[t](),a!==(o=G.get(this,t))||r?G.set(this,t,!1):o={},a!==o)return e.stopImmediatePropagation(),e.preventDefault(),o.value}else a.length&&(G.set(this,t,{value:b.event.trigger(b.extend(a[0],b.Event.prototype),a.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===G.get(e,t)&&b.event.add(e,t,Ce)}b.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=G.get(e);if(X(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&b.find.matchesSelector(ne,i),n.guid||(n.guid=b.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(t){return void 0!==b&&b.event.triggered!==t.type?b.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(O)||[\"\"]).length;l--;)d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=b.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=b.event.special[d]||{},c=b.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&b.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),b.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=G.hasData(e)&&G.get(e);if(v&&(u=v.events)){for(l=(t=(t||\"\").match(O)||[\"\"]).length;l--;)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){for(f=b.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||b.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(u)&&G.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=b.event.fix(e),l=(G.get(this,\"events\")||Object.create(null))[u.type]||[],c=b.event.special[u.type]||{};for(s[0]=u,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:b.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\\s*$/g;function qe(e,t){return k(e,\"table\")&&k(11!==t.nodeType?t:t.firstChild,\"tr\")&&b(e).children(\"tbody\")[0]||e}function Le(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function He(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(G.hasData(e)&&(s=G.get(e).events))for(i in G.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n1&&\"string\"==typeof v&&!d.checkClone&&De.test(v))return e.each((function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Re(o,t,n,r)}));if(p&&(a=(i=xe(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(u=(s=b.map(ve(i,\"script\"),Le)).length;f0&&ye(a,!u&&ve(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=b.event.special,o=0;void 0!==(n=e[o]);o++)if(X(n)){if(t=n[G.expando]){if(t.events)for(r in t.events)i[r]?b.event.remove(n,r):b.removeEvent(n,r,t.handle);n[G.expando]=void 0}n[Y.expando]&&(n[Y.expando]=void 0)}}}),b.fn.extend({detach:function(e){return Me(this,e,!0)},remove:function(e){return Me(this,e)},text:function(e){return B(this,(function(e){return void 0===e?b.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Re(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)}))},prepend:function(){return Re(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(b.cleanData(ve(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return b.clone(this,e,t)}))},html:function(e){return B(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=b.htmlPrefilter(e);try{for(;n3,ne.removeChild(t)),s}}))}();var ze=[\"Webkit\",\"Moz\",\"ms\"],Ue=v.createElement(\"div\").style,Xe={};function Ve(e){var t=b.cssProps[e]||Xe[e];return t||(e in Ue?e:Xe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=ze.length;n--;)if((e=ze[n]+t)in Ue)return e}(e)||e)}var Ge=/^(none|table(?!-c[ea]).+)/,Ye=/^--/,Qe={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Je={letterSpacing:\"0\",fontWeight:\"400\"};function Ke(e,t,n){var r=ee.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Ze(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=b.css(e,n+te[a],!0,i)),r?(\"content\"===n&&(u-=b.css(e,\"padding\"+te[a],!0,i)),\"margin\"!==n&&(u-=b.css(e,\"border\"+te[a]+\"Width\",!0,i))):(u+=b.css(e,\"padding\"+te[a],!0,i),\"padding\"!==n?u+=b.css(e,\"border\"+te[a]+\"Width\",!0,i):s+=b.css(e,\"border\"+te[a]+\"Width\",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function et(e,t,n){var r=We(e),i=(!d.boxSizingReliable()||n)&&\"border-box\"===b.css(e,\"boxSizing\",!1,r),o=i,a=$e(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Ie.test(a)){if(!n)return a;a=\"auto\"}return(!d.boxSizingReliable()&&i||!d.reliableTrDimensions()&&k(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===b.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===b.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ze(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=$e(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=U(t),u=Ye.test(t),l=e.style;if(u||(t=Ve(s)),a=b.cssHooks[t]||b.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=ee.exec(n))&&i[1]&&(n=ae(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(b.cssNumber[s]?\"\":\"px\")),d.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=U(t);return Ye.test(t)||(t=Ve(s)),(a=b.cssHooks[t]||b.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=$e(e,t,r)),\"normal\"===i&&t in Je&&(i=Je[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),b.each([\"height\",\"width\"],(function(e,t){b.cssHooks[t]={get:function(e,n,r){if(n)return!Ge.test(b.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):Fe(e,Qe,(function(){return et(e,t,r)}))},set:function(e,n,r){var i,o=We(e),a=!d.scrollboxSize()&&\"absolute\"===o.position,s=(a||r)&&\"border-box\"===b.css(e,\"boxSizing\",!1,o),u=r?Ze(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,\"border\",!1,o)-.5)),u&&(i=ee.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=b.css(e,t)),Ke(0,n,u)}}})),b.cssHooks.marginLeft=_e(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat($e(e,\"marginLeft\"))||e.getBoundingClientRect().left-Fe(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+\"px\"})),b.each({margin:\"\",padding:\"\",border:\"Width\"},(function(e,t){b.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+te[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(b.cssHooks[e+t].set=Ke)})),b.fn.extend({css:function(e,t){return B(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=We(e),i=t.length;a1)}}),b.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||b.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?\"\":\"px\")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=b.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):1!==e.elem.nodeType||!b.cssHooks[e.prop]&&null==e.elem.style[Ve(e.prop)]?e.elem[e.prop]=e.now:b.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},b.fx=tt.prototype.init,b.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===v.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,b.fx.interval),b.fx.tick())}function st(){return e.setTimeout((function(){nt=void 0})),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=te[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(ct.tweeners[t]||[]).concat(ct.tweeners[\"*\"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){b.removeAttr(this,e)}))}}),b.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?b.prop(e,t,n):(1===o&&b.isXMLDoc(e)||(i=b.attrHooks[t.toLowerCase()]||(b.expr.match.bool.test(t)?ft:void 0)),void 0!==n?null===n?void b.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=b.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&\"radio\"===t&&k(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(O);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ft={set:function(e,t,n){return!1===t?b.removeAttr(e,n):e.setAttribute(n,n),n}},b.each(b.expr.match.bool.source.match(/\\w+/g),(function(e,t){var n=pt[t]||b.find.attr;pt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=pt[a],pt[a]=i,i=null!=n(e,t,r)?a:null,pt[a]=o),i}}));var dt=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function gt(e){return(e.match(O)||[]).join(\" \")}function vt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function yt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(O)||[]}b.fn.extend({prop:function(e,t){return B(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[b.propFix[e]||e]}))}}),b.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&b.isXMLDoc(e)||(t=b.propFix[t]||t,i=b.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=b.find.attr(e,\"tabindex\");return t?parseInt(t,10):dt.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),d.optSelected||(b.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),b.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],(function(){b.propFix[this.toLowerCase()]=this})),b.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){b(this).addClass(e.call(this,t,vt(this)))}));if((t=yt(e)).length)for(;n=this[u++];)if(i=vt(n),r=1===n.nodeType&&\" \"+gt(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=gt(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){b(this).removeClass(e.call(this,t,vt(this)))}));if(!arguments.length)return this.attr(\"class\",\"\");if((t=yt(e)).length)for(;n=this[u++];)if(i=vt(n),r=1===n.nodeType&&\" \"+gt(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=gt(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):h(e)?this.each((function(n){b(this).toggleClass(e.call(this,n,vt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=b(this),a=yt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=vt(this))&&G.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":G.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+gt(vt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var mt=/\\r/g;b.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=h(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,b(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=b.map(i,(function(e){return null==e?\"\":e+\"\"}))),(t=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))}))):i?(t=b.valHooks[i.type]||b.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(mt,\"\"):null==n?\"\":n:void 0}}),b.extend({valHooks:{option:{get:function(e){var t=b.find.attr(e,\"value\");return null!=t?t:gt(b.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),b.each([\"radio\",\"checkbox\"],(function(){b.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=b.inArray(b(e).val(),t)>-1}},d.checkOn||(b.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})})),d.focusin=\"onfocusin\"in e;var xt=/^(?:focusinfocus|focusoutblur)$/,bt=function(e){e.stopPropagation()};b.extend(b.event,{trigger:function(t,n,r,i){var o,a,s,u,l,f,p,d,y=[r||v],m=c.call(t,\"type\")?t.type:t,x=c.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(a=d=s=r=r||v,3!==r.nodeType&&8!==r.nodeType&&!xt.test(m+b.event.triggered)&&(m.indexOf(\".\")>-1&&(x=m.split(\".\"),m=x.shift(),x.sort()),l=m.indexOf(\":\")<0&&\"on\"+m,(t=t[b.expando]?t:new b.Event(m,\"object\"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:b.makeArray(n,[t]),p=b.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,xt.test(u+m)||(a=a.parentNode);a;a=a.parentNode)y.push(a),s=a;s===(r.ownerDocument||v)&&y.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=y[o++])&&!t.isPropagationStopped();)d=a,t.type=o>1?u:p.bindType||m,(f=(G.get(a,\"events\")||Object.create(null))[t.type]&&G.get(a,\"handle\"))&&f.apply(a,n),(f=l&&a[l])&&f.apply&&X(a)&&(t.result=f.apply(a,n),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(y.pop(),n)||!X(r)||l&&h(r[m])&&!g(r)&&((s=r[l])&&(r[l]=null),b.event.triggered=m,t.isPropagationStopped()&&d.addEventListener(m,bt),r[m](),t.isPropagationStopped()&&d.removeEventListener(m,bt),b.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=b.extend(new b.Event,n,{type:e,isSimulated:!0});b.event.trigger(r,null,t)}}),b.fn.extend({trigger:function(e,t){return this.each((function(){b.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return b.event.trigger(e,t,n,!0)}}),d.focusin||b.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){var n=function(e){b.event.simulate(t,e.target,b.event.fix(e))};b.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=G.access(r,t);i||r.addEventListener(e,n,!0),G.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=G.access(r,t)-1;i?G.access(r,t,i):(r.removeEventListener(e,n,!0),G.remove(r,t))}}}));var wt=e.location,Tt={guid:Date.now()},Ct=/\\?/;b.parseXML=function(t){var n;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){n=void 0}return n&&!n.getElementsByTagName(\"parsererror\").length||b.error(\"Invalid XML: \"+t),n};var Et=/\\[\\]$/,St=/\\r?\\n/g,kt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function Nt(e,t,n,r){var i;if(Array.isArray(t))b.each(t,(function(t,i){n||Et.test(e)?r(e,i):Nt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)}));else if(n||\"object\"!==x(t))r(e,t);else for(i in t)Nt(e+\"[\"+i+\"]\",t[i],n,r)}b.param=function(e,t){var n,r=[],i=function(e,t){var n=h(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,(function(){i(this.name,this.value)}));else for(n in e)Nt(n,e[n],t,i);return r.join(\"&\")},b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=b.prop(this,\"elements\");return e?b.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!b(this).is(\":disabled\")&&At.test(this.nodeName)&&!kt.test(e)&&(this.checked||!pe.test(e))})).map((function(e,t){var n=b(this).val();return null==n?null:Array.isArray(n)?b.map(n,(function(e){return{name:t.name,value:e.replace(St,\"\\r\\n\")}})):{name:t.name,value:n.replace(St,\"\\r\\n\")}})).get()}});var Dt=/%20/g,jt=/#.*$/,qt=/([?&])_=[^&]*/,Lt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Ht=/^(?:GET|HEAD)$/,Ot=/^\\/\\//,Pt={},Rt={},Mt=\"*/\".concat(\"*\"),It=v.createElement(\"a\");function Wt(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(O)||[];if(h(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ft(e,t,n,r){var i={},o=e===Rt;function a(s){var u;return i[s]=!0,b.each(e[s]||[],(function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function Bt(e,t){var n,r,i=b.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&b.extend(!0,e,r),e}It.href=wt.href,b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:wt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(wt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Mt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Bt(Bt(e,b.ajaxSettings),t):Bt(b.ajaxSettings,e)},ajaxPrefilter:Wt(Pt),ajaxTransport:Wt(Rt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,o,a,s,u,l,c,f,p,d=b.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?b(h):b.event,y=b.Deferred(),m=b.Callbacks(\"once memory\"),x=d.statusCode||{},w={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Lt.exec(o);)a[t[1].toLowerCase()+\" \"]=(a[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=a[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return r&&r.abort(t),S(0,t),this}};if(y.promise(E),d.url=((t||d.url||wt.href)+\"\").replace(Ot,wt.protocol+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||\"*\").toLowerCase().match(O)||[\"\"],null==d.crossDomain){u=v.createElement(\"a\");try{u.href=d.url,u.href=u.href,d.crossDomain=It.protocol+\"//\"+It.host!=u.protocol+\"//\"+u.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=b.param(d.data,d.traditional)),Ft(Pt,d,n,E),l)return E;for(f in(c=b.event&&d.global)&&0==b.active++&&b.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Ht.test(d.type),i=d.url.replace(jt,\"\"),d.hasContent?d.data&&d.processData&&0===(d.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(d.data=d.data.replace(Dt,\"+\")):(p=d.url.slice(i.length),d.data&&(d.processData||\"string\"==typeof d.data)&&(i+=(Ct.test(i)?\"&\":\"?\")+d.data,delete d.data),!1===d.cache&&(i=i.replace(qt,\"$1\"),p=(Ct.test(i)?\"&\":\"?\")+\"_=\"+Tt.guid+++p),d.url=i+p),d.ifModified&&(b.lastModified[i]&&E.setRequestHeader(\"If-Modified-Since\",b.lastModified[i]),b.etag[i]&&E.setRequestHeader(\"If-None-Match\",b.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",d.contentType),E.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+Mt+\"; q=0.01\":\"\"):d.accepts[\"*\"]),d.headers)E.setRequestHeader(f,d.headers[f]);if(d.beforeSend&&(!1===d.beforeSend.call(h,E,d)||l))return E.abort();if(C=\"abort\",m.add(d.complete),E.done(d.success),E.fail(d.error),r=Ft(Rt,d,n,E)){if(E.readyState=1,c&&g.trigger(\"ajaxSend\",[E,d]),l)return E;d.async&&d.timeout>0&&(s=e.setTimeout((function(){E.abort(\"timeout\")}),d.timeout));try{l=!1,r.send(w,S)}catch(e){if(l)throw e;S(-1,e)}}else S(-1,\"No Transport\");function S(t,n,a,u){var f,p,v,w,T,C=n;l||(l=!0,s&&e.clearTimeout(s),r=void 0,o=u||\"\",E.readyState=t>0?4:0,f=t>=200&&t<300||304===t,a&&(w=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(d,E,a)),!f&&b.inArray(\"script\",d.dataTypes)>-1&&(d.converters[\"text script\"]=function(){}),w=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(d,w,E,f),f?(d.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(b.lastModified[i]=T),(T=E.getResponseHeader(\"etag\"))&&(b.etag[i]=T)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=w.state,p=w.data,f=!(v=w.error))):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",f?y.resolveWith(h,[p,C,E]):y.rejectWith(h,[E,C,v]),E.statusCode(x),x=void 0,c&&g.trigger(f?\"ajaxSuccess\":\"ajaxError\",[E,d,f?p:v]),m.fireWith(h,[E,C]),c&&(g.trigger(\"ajaxComplete\",[E,d]),--b.active||b.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return b.get(e,t,n,\"json\")},getScript:function(e,t){return b.get(e,void 0,t,\"script\")}}),b.each([\"get\",\"post\"],(function(e,t){b[t]=function(e,n,r,i){return h(n)&&(i=i||r,r=n,n=void 0),b.ajax(b.extend({url:e,type:t,dataType:i,data:n,success:r},b.isPlainObject(e)&&e))}})),b.ajaxPrefilter((function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")})),b._evalUrl=function(e,t,n){return b.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){b.globalEval(e,t,n)}})},b.fn.extend({wrapAll:function(e){var t;return this[0]&&(h(e)&&(e=e.call(this[0])),t=b(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return h(e)?this.each((function(t){b(this).wrapInner(e.call(this,t))})):this.each((function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=h(e);return this.each((function(n){b(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not(\"body\").each((function(){b(this).replaceWith(this.childNodes)})),this}}),b.expr.pseudos.hidden=function(e){return!b.expr.pseudos.visible(e)},b.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},b.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var $t={0:200,1223:204},_t=b.ajaxSettings.xhr();d.cors=!!_t&&\"withCredentials\"in _t,d.ajax=_t=!!_t,b.ajaxTransport((function(t){var n,r;if(d.cors||_t&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o($t[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout((function(){n&&r()}))},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}})),b.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),b.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter(\"script\",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")})),b.ajaxTransport(\"script\",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=b(\"" ], @@ -1964,10 +562,10 @@ " :Curve [tth] (value)" ] }, - "execution_count": 5, + "execution_count": 58, "metadata": { "application/vnd.holoviews_exec.v0+json": { - "id": "1001" + "id": "5847" } }, "output_type": "execute_result" @@ -1981,12 +579,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We do not have the correct experimental parameters.." + "We do not have the correct experimental parameters, let's approximate some" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "S.parameters.wavelength = 1.54\n", + "S.parameters.u_resolution = 0.031\n", + "S.parameters.v_resolution = -0.052\n", + "S.parameters.w_resolution = 0.032\n", + "S.parameters.x_resolution = 0.015\n", + "S.parameters.y_resolution = 0.0" + ] + }, + { + "cell_type": "code", + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -1998,18 +610,18 @@ "data": { "application/vnd.holoviews_exec.v0+json": "", "text/html": [ - "
\n", + "
\n", "\n", "\n", "\n", "\n", "\n", - "
\n", + "
\n", "
\n", "" ], @@ -2036,23 +648,16 @@ " :Curve [tth] (value)" ] }, - "execution_count": 6, + "execution_count": 60, "metadata": { "application/vnd.holoviews_exec.v0+json": { - "id": "1220" + "id": "6102" } }, "output_type": "execute_result" } ], "source": [ - "S.parameters.wavelength = 1.54\n", - "S.parameters.u_resolution = 0.031\n", - "S.parameters.v_resolution = -0.052\n", - "S.parameters.w_resolution = 0.032\n", - "S.parameters.x_resolution = 0.015\n", - "S.parameters.y_resolution = 0.0\n", - "\n", "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(data_set['tth']))\n", "data_set.hvplot(y=['I', 'simulated'])" ] @@ -2066,7 +671,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 61, "metadata": {}, "outputs": [ { @@ -2082,11 +687,11 @@ "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", "\n", "bg = PointBackground(linked_experiment='PbSO4')\n", - "bg.append(BackgroundPoint.from_pars(data_x[0], 166))\n", - "bg.append(BackgroundPoint.from_pars(16, 36))\n", - "bg.append(BackgroundPoint.from_pars(50, 120))\n", - "bg.append(BackgroundPoint.from_pars(100, 100))\n", - "bg.append(BackgroundPoint.from_pars(data_x[-1], 164))\n", + "bg.append(BackgroundPoint.from_pars(data_x[0], 1.66))\n", + "bg.append(BackgroundPoint.from_pars(16, 0.36))\n", + "bg.append(BackgroundPoint.from_pars(50, 1.20))\n", + "bg.append(BackgroundPoint.from_pars(100, 1.00))\n", + "bg.append(BackgroundPoint.from_pars(data_x[-1], 1.64))\n", "print(bg)\n", "\n", "S.set_background(bg)\n", @@ -2095,7 +700,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 62, "metadata": {}, "outputs": [ { @@ -2107,18 +712,18 @@ "data": { "application/vnd.holoviews_exec.v0+json": "", "text/html": [ - "
\n", + "
\n", "\n", "\n", "\n", "\n", "\n", - "
\n", + "
\n", "
\n", "" ], @@ -2145,10 +750,10 @@ " :Curve [tth] (value)" ] }, - "execution_count": 8, + "execution_count": 62, "metadata": { "application/vnd.holoviews_exec.v0+json": { - "id": "1439" + "id": "6357" } }, "output_type": "execute_result" @@ -2168,88 +773,52 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['CrysPy', 'CrysFML', 'GSAS-II']\n", - "CrysPy\n", - "CrysFML\n" - ] - } - ], + "outputs": [], "source": [ "print(interface.available_interfaces)\n", "print(interface.current_interface_name)\n", "interface.switch('CrysFML')\n", - "S._updateInterface()\n", "print(interface.current_interface_name)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Reload the sample" + ] + }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": {}, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.holoviews_exec.v0+json": "", - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "
\n", - "" - ], - "text/plain": [ - ":NdOverlay [Variable]\n", - " :Curve [tth] (value)" - ] - }, - "execution_count": 10, - "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "1658" - } - }, - "output_type": "execute_result" - } - ], + "outputs": [], + "source": [ + "S = Sample(phases=c, parameters=Instrument1DCWParameters.default(), interface=interface)\n", + "#S.parameters.wavelength = 1.54\n", + "#S.parameters.u_resolution = 0.031\n", + "#S.parameters.v_resolution = -0.052\n", + "#S.parameters.w_resolution = 0.032\n", + "#S.parameters.x_resolution = 0.015\n", + "#S.parameters.y_resolution = 0.0\n", + "bg = PointBackground(linked_experiment='PbSO4')\n", + "bg.append(BackgroundPoint.from_pars(data_x[0], 1.66))\n", + "bg.append(BackgroundPoint.from_pars(16, 0.36))\n", + "bg.append(BackgroundPoint.from_pars(50, 1.20))\n", + "bg.append(BackgroundPoint.from_pars(100, 1.00))\n", + "bg.append(BackgroundPoint.from_pars(data_x[-1], 1.64))\n", + "print(bg)\n", + "\n", + "S.set_background(bg)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(np.array(data_set['tth'])))\n", "data_set.hvplot(y=['I', 'simulated'])" @@ -2264,67 +833,11 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": {}, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.holoviews_exec.v0+json": "", - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "
\n", - "" - ], - "text/plain": [ - ":NdOverlay [Variable]\n", - " :Curve [tth] (value)" - ] - }, - "execution_count": 11, - "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "1877" - } - }, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "S.pattern.scale = 0.1\n", + "S.pattern.scale = 2\n", "\n", "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(np.array(data_set['tth'])))\n", "data_set.hvplot(y=['I', 'simulated'])" @@ -2346,7 +859,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2375,24 +888,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "available minimizers: ['lmfit', 'bumps', 'DFO_LS']\n", - "\n", - "current minimizer: lmfit\n", - "available methods of current minimizer: ['leastsq', 'least_squares', 'differential_evolution', 'basinhopping', 'ampgo', 'nelder', 'lbfgsb', 'powell', 'cg', 'newton', 'cobyla', 'bfgs']\n", - "\n", - "switch minimizer\n", - "current minimizer: bumps\n", - "available methods of current minimizer: ['amoeba', 'de', 'dream', 'newton', 'lm', 'mp', 'pt']\n" - ] - } - ], + "outputs": [], "source": [ "print(\"available minimizers:\", f.available_engines)\n", "print()\n", @@ -2415,7 +913,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2424,18 +922,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The fit has been successful: True\n", - "The gooodness of fit is: 1507315286220.7224\n" - ] - } - ], + "outputs": [], "source": [ "if result.success:\n", " print(\"The fit has been successful: {}\".format(result.success))\n", @@ -2446,83 +935,18 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": {}, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.holoviews_exec.v0+json": "", - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "
\n", - "" - ], - "text/plain": [ - ":NdOverlay [Variable]\n", - " :Curve [tth] (value)" - ] - }, - "execution_count": 16, - "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "2096" - } - }, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data_set.hvplot(y =['I', 'best_fit'])" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scale: \n", - "Scale: \n" - ] - } - ], + "outputs": [], "source": [ "print(f'Scale: {S.pattern.scale}')\n", "print(f'Scale: {S.pattern.zero_shift}')" @@ -2538,7 +962,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -2552,7 +976,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/tests/FittingData_CFML.ipynb b/tests/FittingData_CFML.ipynb index 9b890011..9435a430 100644 --- a/tests/FittingData_CFML.ipynb +++ b/tests/FittingData_CFML.ipynb @@ -14,40 +14,6 @@ "There are two built in fitting engines, `lmfit` and `bumps`." ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Set the current directory." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test path: D:\\projects\\easyScience\\easyDiffractionLib\\tests\n", - "easyDiffractionLib path: D:\\projects\\easyScience\\easyDiffractionLib\n" - ] - } - ], - "source": [ - "import os\n", - "tests_path = os.getcwd()\n", - "os.chdir(os.path.join(os.getcwd(), '..'))\n", - "eDL_path = os.getcwd()\n", - "print(\"Test path:\", tests_path)\n", - "print(\"easyDiffractionLib path:\", eDL_path)" - ] - }, { "cell_type": "markdown", "metadata": { @@ -61,33 +27,25 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 36, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warning: GSAS-2 is not installed\n" - ] - } - ], + "outputs": [], "source": [ "# Import all the packages\n", "from easyCore import np\n", "from easyDiffractionLib.sample import Sample\n", "from easyDiffractionLib import Phases\n", - "from easyDiffractionLib.interface import InterfaceFactory\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", "\n", "from easyCore.Fitting.Fitting import Fitter\n", "\n", - "import matplotlib.pyplot as plt" + "import matplotlib.pyplot as plt\n" ] }, { @@ -114,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 39, "metadata": { "pycharm": { "name": "#%%\n" @@ -122,20 +80,25 @@ }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "cif_path: D:\\projects\\easyScience\\easyDiffractionLib\\tests\\PbSO4.cif\n", - "Temp CIF: C:\\Users\\PIOTRR~1\\AppData\\Local\\Temp\\easydiffraction_temp.cif\n" + "ename": "AttributeError", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_7764/985772624.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mcalculator\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mCalculator\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mPhases\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfrom_cif_file\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'PbSO4.cif'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mS\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSample\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mphases\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mInstrument1DCWParameters\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdefault\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcalculator\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcalculator\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\projects\\easyscience\\easyCore\\easyCore\\Elements\\HigherLevel\\Phase.py\u001b[0m in \u001b[0;36mfrom_cif_file\u001b[1;34m(cls, file_path)\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mclassmethod\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 361\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mfrom_cif_file\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcls\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfile_path\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mPath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 362\u001b[1;33m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcrystals\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_from_external\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mCifIO\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfrom_file\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfile_path\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 363\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Phases\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0mcrystals\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 364\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\projects\\easyscience\\easyCore\\easyCore\\Elements\\HigherLevel\\Phase.py\u001b[0m in \u001b[0;36m_from_external\u001b[1;34m(constructor, *args)\u001b[0m\n\u001b[0;32m 369\u001b[0m \u001b[0mcrystals\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 370\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mcif_index\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcif\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parser\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnumber_of_cifs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 371\u001b[1;33m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcif\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_crystal_form\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 372\u001b[0m \u001b[0mcrystals\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mPhase\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 373\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcrystals\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\projects\\easyscience\\easyCore\\easyCore\\Utils\\io\\cif.py\u001b[0m in \u001b[0;36mto_crystal_form\u001b[1;34m(self, cif_index)\u001b[0m\n\u001b[0;32m 89\u001b[0m \u001b[1;34m'cell'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parser\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_lattice\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 90\u001b[0m \u001b[1;34m'spacegroup'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parser\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_symmetry\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 91\u001b[1;33m \u001b[1;34m'atoms'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parser\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_atoms\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 92\u001b[0m }\n\u001b[0;32m 93\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\projects\\easyscience\\easyCore\\easyCore\\Utils\\io\\cif.py\u001b[0m in \u001b[0;36mget_atoms\u001b[1;34m(self, cif_index)\u001b[0m\n\u001b[0;32m 448\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 449\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mfound\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 450\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 451\u001b[0m \u001b[1;31m# Now look for atomic displacement\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 452\u001b[0m fields = ['atom_site_U_iso_or_equiv', 'atom_site_aniso_U_11',\n", + "\u001b[1;31mAttributeError\u001b[0m: " ] } ], "source": [ - "interface = InterfaceFactory()\n", - "cif_path = os.path.join(tests_path, 'PbSO4.cif')\n", - "print('cif_path:', cif_path)\n", - "c = Phases.from_cif_file(cif_path)\n", - "S = Sample(phases=c, parameters=Instrument1DCWParameters.default(), pattern=Pattern1D.default(), interface=interface)" + "calculator = Calculator()\n", + "c = Phases.from_cif_file('PbSO4.cif')\n", + "S = Sample(phases=c, parameters=Instrument1DCWParameters.default(), calculator=calculator)" ] }, { @@ -146,49 +109,12 @@ } }, "source": [ - "We can load up some experimental data" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "xye_path: D:\\projects\\easyScience\\easyDiffractionLib\\tests\\PbSO4_xrays_short.xye\n", - "data_x: [ 10. 10.025 10.05 ... 119.95 119.975 120. ]\n", - "data_y: [1.79 1.47 1.65 ... 1.63 1.64 1.66]\n", - "data_e: [13.3791 12.1244 12.8452 ... 12.7671 12.8062 12.8841]\n" - ] - } - ], - "source": [ - "xye_path = os.path.join(tests_path, 'PbSO4_xrays_short.xye')\n", - "print('xye_path:', xye_path)\n", - "data_x, data_y, data_e = np.loadtxt(xye_path, unpack=True)\n", - "data_y = data_y/100.0\n", - "print('data_x:', data_x)\n", - "print('data_y:', data_y)\n", - "print('data_e:', data_e)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Generate the simulation y-data" + "Load up experimental data" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 38, "metadata": { "pycharm": { "name": "#%%\n" @@ -196,51 +122,23 @@ }, "outputs": [ { - "ename": "AttributeError", - "evalue": "'NoneType' object has no attribute 'backgrounds'", + "ename": "OSError", + "evalue": "PbSO4_xrays_short.xye not found.", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32mC:\\Users\\PIOTRR~1\\AppData\\Local\\Temp/ipykernel_11604/3886639634.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msim_y_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0minterface\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata_x\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mD:\\projects\\easyScience\\easyDiffractionLib\\easyDiffractionLib\\Interfaces\\cryspy.py\u001b[0m in \u001b[0;36mfit_func\u001b[1;34m(self, x_array)\u001b[0m\n\u001b[0;32m 195\u001b[0m \u001b[1;33m:\u001b[0m\u001b[0mrtype\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 196\u001b[0m \"\"\"\n\u001b[1;32m--> 197\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcalculator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcalculate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 198\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 199\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mget_hkl\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx_array\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndarray\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0midx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mdict\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mD:\\projects\\easyScience\\easyDiffractionLib\\easyDiffractionLib\\Calculators\\cryspy.py\u001b[0m in \u001b[0;36mcalculate\u001b[1;34m(self, x_array)\u001b[0m\n\u001b[0;32m 352\u001b[0m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mzeros_like\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 353\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtype\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'powder1DCW'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 354\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpowder_1d_calculate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 355\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtype\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'powder1DTOF'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 356\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpowder_1d_tof_calculate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mD:\\projects\\easyScience\\easyDiffractionLib\\easyDiffractionLib\\Calculators\\cryspy.py\u001b[0m in \u001b[0;36mpowder_1d_calculate\u001b[1;34m(self, x_array)\u001b[0m\n\u001b[0;32m 263\u001b[0m \u001b[0mcrystal\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstorage\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcurrent_crystal\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 264\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 265\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpattern\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbackgrounds\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 266\u001b[0m \u001b[0mbg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mzeros_like\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mthis_x_array\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 267\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'backgrounds'" + "\u001b[1;31mOSError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_7764/2085124697.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdata_x\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata_y\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata_e\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloadtxt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'PbSO4_xrays_short.xye'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0munpack\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mdata_y\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdata_y\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m100.0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\anaconda3\\envs\\easy\\lib\\site-packages\\numpy\\lib\\npyio.py\u001b[0m in \u001b[0;36mloadtxt\u001b[1;34m(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin, encoding, max_rows, like)\u001b[0m\n\u001b[0;32m 1065\u001b[0m \u001b[0mfname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mos_fspath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1066\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0m_is_string_like\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1067\u001b[1;33m \u001b[0mfh\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_datasource\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'rt'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencoding\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1068\u001b[0m \u001b[0mfencoding\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfh\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'encoding'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'latin1'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1069\u001b[0m \u001b[0mfh\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0miter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfh\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\anaconda3\\envs\\easy\\lib\\site-packages\\numpy\\lib\\_datasource.py\u001b[0m in \u001b[0;36mopen\u001b[1;34m(path, mode, destpath, encoding, newline)\u001b[0m\n\u001b[0;32m 191\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 192\u001b[0m \u001b[0mds\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mDataSource\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdestpath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 193\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mds\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencoding\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnewline\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mnewline\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 194\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 195\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\anaconda3\\envs\\easy\\lib\\site-packages\\numpy\\lib\\_datasource.py\u001b[0m in \u001b[0;36mopen\u001b[1;34m(self, path, mode, encoding, newline)\u001b[0m\n\u001b[0;32m 531\u001b[0m encoding=encoding, newline=newline)\n\u001b[0;32m 532\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 533\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mIOError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"%s not found.\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mpath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 534\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 535\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mOSError\u001b[0m: PbSO4_xrays_short.xye not found." ] } ], "source": [ - "sim_y_data = interface.fit_func(data_x)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "%matplotlib notebook\n", - "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", - "plt.plot(data_x, sim_y_data, label=f'Calculations ({interface.current_interface_name})')\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "We can load up some experimental data" + "data_x, data_y, data_e = np.loadtxt('PbSO4_xrays_short.xye', unpack=True)\n", + "data_y = data_y/100.0" ] }, { @@ -252,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" @@ -265,3059 +163,13 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "/* global mpl */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function () {\n", - " if (typeof WebSocket !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof MozWebSocket !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert(\n", - " 'Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.'\n", - " );\n", - " }\n", - "};\n", - "\n", - "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = this.ws.binaryType !== undefined;\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById('mpl-warnings');\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent =\n", - " 'This browser does not support binary websocket messages. ' +\n", - " 'Performance may be slow.';\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = document.createElement('div');\n", - " this.root.setAttribute('style', 'display: inline-block');\n", - " this._root_extra_style(this.root);\n", - "\n", - " parent_element.appendChild(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message('supports_binary', { value: fig.supports_binary });\n", - " fig.send_message('send_image_mode', {});\n", - " if (fig.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", - " }\n", - " fig.send_message('refresh', {});\n", - " };\n", - "\n", - " this.imageObj.onload = function () {\n", - " if (fig.image_mode === 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function () {\n", - " fig.ws.close();\n", - " };\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "};\n", - "\n", - "mpl.figure.prototype._init_header = function () {\n", - " var titlebar = document.createElement('div');\n", - " titlebar.classList =\n", - " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", - " var titletext = document.createElement('div');\n", - " titletext.classList = 'ui-dialog-title';\n", - " titletext.setAttribute(\n", - " 'style',\n", - " 'width: 100%; text-align: center; padding: 3px;'\n", - " );\n", - " titlebar.appendChild(titletext);\n", - " this.root.appendChild(titlebar);\n", - " this.header = titletext;\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._init_canvas = function () {\n", - " var fig = this;\n", - "\n", - " var canvas_div = (this.canvas_div = document.createElement('div'));\n", - " canvas_div.setAttribute(\n", - " 'style',\n", - " 'border: 1px solid #ddd;' +\n", - " 'box-sizing: content-box;' +\n", - " 'clear: both;' +\n", - " 'min-height: 1px;' +\n", - " 'min-width: 1px;' +\n", - " 'outline: 0;' +\n", - " 'overflow: hidden;' +\n", - " 'position: relative;' +\n", - " 'resize: both;'\n", - " );\n", - "\n", - " function on_keyboard_event_closure(name) {\n", - " return function (event) {\n", - " return fig.key_event(event, name);\n", - " };\n", - " }\n", - "\n", - " canvas_div.addEventListener(\n", - " 'keydown',\n", - " on_keyboard_event_closure('key_press')\n", - " );\n", - " canvas_div.addEventListener(\n", - " 'keyup',\n", - " on_keyboard_event_closure('key_release')\n", - " );\n", - "\n", - " this._canvas_extra_style(canvas_div);\n", - " this.root.appendChild(canvas_div);\n", - "\n", - " var canvas = (this.canvas = document.createElement('canvas'));\n", - " canvas.classList.add('mpl-canvas');\n", - " canvas.setAttribute('style', 'box-sizing: content-box;');\n", - "\n", - " this.context = canvas.getContext('2d');\n", - "\n", - " var backingStore =\n", - " this.context.backingStorePixelRatio ||\n", - " this.context.webkitBackingStorePixelRatio ||\n", - " this.context.mozBackingStorePixelRatio ||\n", - " this.context.msBackingStorePixelRatio ||\n", - " this.context.oBackingStorePixelRatio ||\n", - " this.context.backingStorePixelRatio ||\n", - " 1;\n", - "\n", - " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", - " 'canvas'\n", - " ));\n", - " rubberband_canvas.setAttribute(\n", - " 'style',\n", - " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", - " );\n", - "\n", - " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", - " if (this.ResizeObserver === undefined) {\n", - " if (window.ResizeObserver !== undefined) {\n", - " this.ResizeObserver = window.ResizeObserver;\n", - " } else {\n", - " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", - " this.ResizeObserver = obs.ResizeObserver;\n", - " }\n", - " }\n", - "\n", - " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", - " var nentries = entries.length;\n", - " for (var i = 0; i < nentries; i++) {\n", - " var entry = entries[i];\n", - " var width, height;\n", - " if (entry.contentBoxSize) {\n", - " if (entry.contentBoxSize instanceof Array) {\n", - " // Chrome 84 implements new version of spec.\n", - " width = entry.contentBoxSize[0].inlineSize;\n", - " height = entry.contentBoxSize[0].blockSize;\n", - " } else {\n", - " // Firefox implements old version of spec.\n", - " width = entry.contentBoxSize.inlineSize;\n", - " height = entry.contentBoxSize.blockSize;\n", - " }\n", - " } else {\n", - " // Chrome <84 implements even older version of spec.\n", - " width = entry.contentRect.width;\n", - " height = entry.contentRect.height;\n", - " }\n", - "\n", - " // Keep the size of the canvas and rubber band canvas in sync with\n", - " // the canvas container.\n", - " if (entry.devicePixelContentBoxSize) {\n", - " // Chrome 84 implements new version of spec.\n", - " canvas.setAttribute(\n", - " 'width',\n", - " entry.devicePixelContentBoxSize[0].inlineSize\n", - " );\n", - " canvas.setAttribute(\n", - " 'height',\n", - " entry.devicePixelContentBoxSize[0].blockSize\n", - " );\n", - " } else {\n", - " canvas.setAttribute('width', width * fig.ratio);\n", - " canvas.setAttribute('height', height * fig.ratio);\n", - " }\n", - " canvas.setAttribute(\n", - " 'style',\n", - " 'width: ' + width + 'px; height: ' + height + 'px;'\n", - " );\n", - "\n", - " rubberband_canvas.setAttribute('width', width);\n", - " rubberband_canvas.setAttribute('height', height);\n", - "\n", - " // And update the size in Python. We ignore the initial 0/0 size\n", - " // that occurs as the element is placed into the DOM, which should\n", - " // otherwise not happen due to the minimum size styling.\n", - " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", - " fig.request_resize(width, height);\n", - " }\n", - " }\n", - " });\n", - " this.resizeObserverInstance.observe(canvas_div);\n", - "\n", - " function on_mouse_event_closure(name) {\n", - " return function (event) {\n", - " return fig.mouse_event(event, name);\n", - " };\n", - " }\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mousedown',\n", - " on_mouse_event_closure('button_press')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseup',\n", - " on_mouse_event_closure('button_release')\n", - " );\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband_canvas.addEventListener(\n", - " 'mousemove',\n", - " on_mouse_event_closure('motion_notify')\n", - " );\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseenter',\n", - " on_mouse_event_closure('figure_enter')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseleave',\n", - " on_mouse_event_closure('figure_leave')\n", - " );\n", - "\n", - " canvas_div.addEventListener('wheel', function (event) {\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " on_mouse_event_closure('scroll')(event);\n", - " });\n", - "\n", - " canvas_div.appendChild(canvas);\n", - " canvas_div.appendChild(rubberband_canvas);\n", - "\n", - " this.rubberband_context = rubberband_canvas.getContext('2d');\n", - " this.rubberband_context.strokeStyle = '#000000';\n", - "\n", - " this._resize_canvas = function (width, height, forward) {\n", - " if (forward) {\n", - " canvas_div.style.width = width + 'px';\n", - " canvas_div.style.height = height + 'px';\n", - " }\n", - " };\n", - "\n", - " // Disable right mouse context menu.\n", - " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", - " event.preventDefault();\n", - " return false;\n", - " });\n", - "\n", - " function set_focus() {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'mpl-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " continue;\n", - " }\n", - "\n", - " var button = (fig.buttons[name] = document.createElement('button'));\n", - " button.classList = 'mpl-widget';\n", - " button.setAttribute('role', 'button');\n", - " button.setAttribute('aria-disabled', 'false');\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - "\n", - " var icon_img = document.createElement('img');\n", - " icon_img.src = '_images/' + image + '.png';\n", - " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", - " icon_img.alt = tooltip;\n", - " button.appendChild(icon_img);\n", - "\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " var fmt_picker = document.createElement('select');\n", - " fmt_picker.classList = 'mpl-widget';\n", - " toolbar.appendChild(fmt_picker);\n", - " this.format_dropdown = fmt_picker;\n", - "\n", - " for (var ind in mpl.extensions) {\n", - " var fmt = mpl.extensions[ind];\n", - " var option = document.createElement('option');\n", - " option.selected = fmt === mpl.default_extension;\n", - " option.innerHTML = fmt;\n", - " fmt_picker.appendChild(option);\n", - " }\n", - "\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "};\n", - "\n", - "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", - " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", - " // which will in turn request a refresh of the image.\n", - " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", - "};\n", - "\n", - "mpl.figure.prototype.send_message = function (type, properties) {\n", - " properties['type'] = type;\n", - " properties['figure_id'] = this.id;\n", - " this.ws.send(JSON.stringify(properties));\n", - "};\n", - "\n", - "mpl.figure.prototype.send_draw_message = function () {\n", - " if (!this.waiting) {\n", - " this.waiting = true;\n", - " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " var format_dropdown = fig.format_dropdown;\n", - " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", - " fig.ondownload(fig, format);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", - " var size = msg['size'];\n", - " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", - " fig._resize_canvas(size[0], size[1], msg['forward']);\n", - " fig.send_message('refresh', {});\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", - " var x0 = msg['x0'] / fig.ratio;\n", - " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", - " var x1 = msg['x1'] / fig.ratio;\n", - " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", - " x0 = Math.floor(x0) + 0.5;\n", - " y0 = Math.floor(y0) + 0.5;\n", - " x1 = Math.floor(x1) + 0.5;\n", - " y1 = Math.floor(y1) + 0.5;\n", - " var min_x = Math.min(x0, x1);\n", - " var min_y = Math.min(y0, y1);\n", - " var width = Math.abs(x1 - x0);\n", - " var height = Math.abs(y1 - y0);\n", - "\n", - " fig.rubberband_context.clearRect(\n", - " 0,\n", - " 0,\n", - " fig.canvas.width / fig.ratio,\n", - " fig.canvas.height / fig.ratio\n", - " );\n", - "\n", - " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", - " // Updates the figure title.\n", - " fig.header.textContent = msg['label'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", - " var cursor = msg['cursor'];\n", - " switch (cursor) {\n", - " case 0:\n", - " cursor = 'pointer';\n", - " break;\n", - " case 1:\n", - " cursor = 'default';\n", - " break;\n", - " case 2:\n", - " cursor = 'crosshair';\n", - " break;\n", - " case 3:\n", - " cursor = 'move';\n", - " break;\n", - " }\n", - " fig.rubberband_canvas.style.cursor = cursor;\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_message = function (fig, msg) {\n", - " fig.message.textContent = msg['message'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", - " // Request the server to send over a new figure.\n", - " fig.send_draw_message();\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", - " fig.image_mode = msg['mode'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", - " for (var key in msg) {\n", - " if (!(key in fig.buttons)) {\n", - " continue;\n", - " }\n", - " fig.buttons[key].disabled = !msg[key];\n", - " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", - " if (msg['mode'] === 'PAN') {\n", - " fig.buttons['Pan'].classList.add('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " } else if (msg['mode'] === 'ZOOM') {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.add('active');\n", - " } else {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Called whenever the canvas gets updated.\n", - " this.send_message('ack', {});\n", - "};\n", - "\n", - "// A function to construct a web socket function for onmessage handling.\n", - "// Called in the figure constructor.\n", - "mpl.figure.prototype._make_on_message_function = function (fig) {\n", - " return function socket_on_message(evt) {\n", - " if (evt.data instanceof Blob) {\n", - " /* FIXME: We get \"Resource interpreted as Image but\n", - " * transferred with MIME type text/plain:\" errors on\n", - " * Chrome. But how to set the MIME type? It doesn't seem\n", - " * to be part of the websocket stream */\n", - " evt.data.type = 'image/png';\n", - "\n", - " /* Free the memory for the previous frames */\n", - " if (fig.imageObj.src) {\n", - " (window.URL || window.webkitURL).revokeObjectURL(\n", - " fig.imageObj.src\n", - " );\n", - " }\n", - "\n", - " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", - " evt.data\n", - " );\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " } else if (\n", - " typeof evt.data === 'string' &&\n", - " evt.data.slice(0, 21) === 'data:image/png;base64'\n", - " ) {\n", - " fig.imageObj.src = evt.data;\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - "\n", - " var msg = JSON.parse(evt.data);\n", - " var msg_type = msg['type'];\n", - "\n", - " // Call the \"handle_{type}\" callback, which takes\n", - " // the figure and JSON message as its only arguments.\n", - " try {\n", - " var callback = fig['handle_' + msg_type];\n", - " } catch (e) {\n", - " console.log(\n", - " \"No handler for the '\" + msg_type + \"' message type: \",\n", - " msg\n", - " );\n", - " return;\n", - " }\n", - "\n", - " if (callback) {\n", - " try {\n", - " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", - " callback(fig, msg);\n", - " } catch (e) {\n", - " console.log(\n", - " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", - " e,\n", - " e.stack,\n", - " msg\n", - " );\n", - " }\n", - " }\n", - " };\n", - "};\n", - "\n", - "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", - "mpl.findpos = function (e) {\n", - " //this section is from http://www.quirksmode.org/js/events_properties.html\n", - " var targ;\n", - " if (!e) {\n", - " e = window.event;\n", - " }\n", - " if (e.target) {\n", - " targ = e.target;\n", - " } else if (e.srcElement) {\n", - " targ = e.srcElement;\n", - " }\n", - " if (targ.nodeType === 3) {\n", - " // defeat Safari bug\n", - " targ = targ.parentNode;\n", - " }\n", - "\n", - " // pageX,Y are the mouse positions relative to the document\n", - " var boundingRect = targ.getBoundingClientRect();\n", - " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", - " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", - "\n", - " return { x: x, y: y };\n", - "};\n", - "\n", - "/*\n", - " * return a copy of an object with only non-object keys\n", - " * we need this to avoid circular references\n", - " * http://stackoverflow.com/a/24161582/3208463\n", - " */\n", - "function simpleKeys(original) {\n", - " return Object.keys(original).reduce(function (obj, key) {\n", - " if (typeof original[key] !== 'object') {\n", - " obj[key] = original[key];\n", - " }\n", - " return obj;\n", - " }, {});\n", - "}\n", - "\n", - "mpl.figure.prototype.mouse_event = function (event, name) {\n", - " var canvas_pos = mpl.findpos(event);\n", - "\n", - " if (name === 'button_press') {\n", - " this.canvas.focus();\n", - " this.canvas_div.focus();\n", - " }\n", - "\n", - " var x = canvas_pos.x * this.ratio;\n", - " var y = canvas_pos.y * this.ratio;\n", - "\n", - " this.send_message(name, {\n", - " x: x,\n", - " y: y,\n", - " button: event.button,\n", - " step: event.step,\n", - " guiEvent: simpleKeys(event),\n", - " });\n", - "\n", - " /* This prevents the web browser from automatically changing to\n", - " * the text insertion cursor when the button is pressed. We want\n", - " * to control all of the cursor setting manually through the\n", - " * 'cursor' event from matplotlib */\n", - " event.preventDefault();\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", - " // Handle any extra behaviour associated with a key event\n", - "};\n", - "\n", - "mpl.figure.prototype.key_event = function (event, name) {\n", - " // Prevent repeat events\n", - " if (name === 'key_press') {\n", - " if (event.which === this._key) {\n", - " return;\n", - " } else {\n", - " this._key = event.which;\n", - " }\n", - " }\n", - " if (name === 'key_release') {\n", - " this._key = null;\n", - " }\n", - "\n", - " var value = '';\n", - " if (event.ctrlKey && event.which !== 17) {\n", - " value += 'ctrl+';\n", - " }\n", - " if (event.altKey && event.which !== 18) {\n", - " value += 'alt+';\n", - " }\n", - " if (event.shiftKey && event.which !== 16) {\n", - " value += 'shift+';\n", - " }\n", - "\n", - " value += 'k';\n", - " value += event.which.toString();\n", - "\n", - " this._key_event_extra(event, name);\n", - "\n", - " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", - " if (name === 'download') {\n", - " this.handle_save(this, null);\n", - " } else {\n", - " this.send_message('toolbar_button', { name: name });\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", - " this.message.textContent = tooltip;\n", - "};\n", - "\n", - "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", - "// prettier-ignore\n", - "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", - "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", - "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", - "\n", - "mpl.default_extension = \"png\";/* global mpl */\n", - "\n", - "var comm_websocket_adapter = function (comm) {\n", - " // Create a \"websocket\"-like object which calls the given IPython comm\n", - " // object with the appropriate methods. Currently this is a non binary\n", - " // socket, so there is still some room for performance tuning.\n", - " var ws = {};\n", - "\n", - " ws.close = function () {\n", - " comm.close();\n", - " };\n", - " ws.send = function (m) {\n", - " //console.log('sending', m);\n", - " comm.send(m);\n", - " };\n", - " // Register the callback with on_msg.\n", - " comm.on_msg(function (msg) {\n", - " //console.log('receiving', msg['content']['data'], msg);\n", - " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", - " ws.onmessage(msg['content']['data']);\n", - " });\n", - " return ws;\n", - "};\n", - "\n", - "mpl.mpl_figure_comm = function (comm, msg) {\n", - " // This is the function which gets called when the mpl process\n", - " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", - "\n", - " var id = msg.content.data.id;\n", - " // Get hold of the div created by the display call when the Comm\n", - " // socket was opened in Python.\n", - " var element = document.getElementById(id);\n", - " var ws_proxy = comm_websocket_adapter(comm);\n", - "\n", - " function ondownload(figure, _format) {\n", - " window.open(figure.canvas.toDataURL());\n", - " }\n", - "\n", - " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", - "\n", - " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", - " // web socket which is closed, not our websocket->open comm proxy.\n", - " ws_proxy.onopen();\n", - "\n", - " fig.parent_element = element;\n", - " fig.cell_info = mpl.find_output_cell(\"
\");\n", - " if (!fig.cell_info) {\n", - " console.error('Failed to find cell for figure', id, fig);\n", - " return;\n", - " }\n", - " fig.cell_info[0].output_area.element.on(\n", - " 'cleared',\n", - " { fig: fig },\n", - " fig._remove_fig_handler\n", - " );\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_close = function (fig, msg) {\n", - " var width = fig.canvas.width / fig.ratio;\n", - " fig.cell_info[0].output_area.element.off(\n", - " 'cleared',\n", - " fig._remove_fig_handler\n", - " );\n", - " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", - "\n", - " // Update the output cell to use the data from the current canvas.\n", - " fig.push_to_output();\n", - " var dataURL = fig.canvas.toDataURL();\n", - " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", - " // the notebook keyboard shortcuts fail.\n", - " IPython.keyboard_manager.enable();\n", - " fig.parent_element.innerHTML =\n", - " '';\n", - " fig.close_ws(fig, msg);\n", - "};\n", - "\n", - "mpl.figure.prototype.close_ws = function (fig, msg) {\n", - " fig.send_message('closing', msg);\n", - " // fig.ws.close()\n", - "};\n", - "\n", - "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", - " // Turn the data on the canvas into data in the output cell.\n", - " var width = this.canvas.width / this.ratio;\n", - " var dataURL = this.canvas.toDataURL();\n", - " this.cell_info[1]['text/html'] =\n", - " '';\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Tell IPython that the notebook contents must change.\n", - " IPython.notebook.set_dirty(true);\n", - " this.send_message('ack', {});\n", - " var fig = this;\n", - " // Wait a second, then push the new image to the DOM so\n", - " // that it is saved nicely (might be nice to debounce this).\n", - " setTimeout(function () {\n", - " fig.push_to_output();\n", - " }, 1000);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'btn-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " var button;\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " continue;\n", - " }\n", - "\n", - " button = fig.buttons[name] = document.createElement('button');\n", - " button.classList = 'btn btn-default';\n", - " button.href = '#';\n", - " button.title = name;\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message pull-right';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = document.createElement('div');\n", - " buttongrp.classList = 'btn-group inline pull-right';\n", - " button = document.createElement('button');\n", - " button.classList = 'btn btn-mini btn-primary';\n", - " button.href = '#';\n", - " button.title = 'Stop Interaction';\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', function (_evt) {\n", - " fig.handle_close(fig, {});\n", - " });\n", - " button.addEventListener(\n", - " 'mouseover',\n", - " on_mouseover_closure('Stop Interaction')\n", - " );\n", - " buttongrp.appendChild(button);\n", - " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", - " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", - "};\n", - "\n", - "mpl.figure.prototype._remove_fig_handler = function (event) {\n", - " var fig = event.data.fig;\n", - " if (event.target !== this) {\n", - " // Ignore bubbled events from children.\n", - " return;\n", - " }\n", - " fig.close_ws(fig, {});\n", - "};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (el) {\n", - " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (el) {\n", - " // this is important to make the div 'focusable\n", - " el.setAttribute('tabindex', 0);\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " } else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager) {\n", - " manager = IPython.keyboard_manager;\n", - " }\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which === 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " fig.ondownload(fig, null);\n", - "};\n", - "\n", - "mpl.find_output_cell = function (html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i = 0; i < ncells; i++) {\n", - " var cell = cells[i];\n", - " if (cell.cell_type === 'code') {\n", - " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", - " var data = cell.output_area.outputs[j];\n", - " if (data.data) {\n", - " // IPython >= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] === html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "};\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel !== null) {\n", - " IPython.notebook.kernel.comm_manager.register_target(\n", - " 'matplotlib',\n", - " mpl.mpl_figure_comm\n", - " );\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%matplotlib notebook\n", - "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", - "plt.plot(data_x, sim_y_data, label=f'Calculations ({interface.current_interface_name})')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "source": [ - "We can load up some experimental data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Generate the simulation y-data" - ] - }, - { - "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [], - "source": [ - "sim_y_data = interface.fit_func(data_x)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "/* global mpl */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function () {\n", - " if (typeof WebSocket !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof MozWebSocket !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert(\n", - " 'Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.'\n", - " );\n", - " }\n", - "};\n", - "\n", - "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = this.ws.binaryType !== undefined;\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById('mpl-warnings');\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent =\n", - " 'This browser does not support binary websocket messages. ' +\n", - " 'Performance may be slow.';\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = document.createElement('div');\n", - " this.root.setAttribute('style', 'display: inline-block');\n", - " this._root_extra_style(this.root);\n", - "\n", - " parent_element.appendChild(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message('supports_binary', { value: fig.supports_binary });\n", - " fig.send_message('send_image_mode', {});\n", - " if (fig.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", - " }\n", - " fig.send_message('refresh', {});\n", - " };\n", - "\n", - " this.imageObj.onload = function () {\n", - " if (fig.image_mode === 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function () {\n", - " fig.ws.close();\n", - " };\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "};\n", - "\n", - "mpl.figure.prototype._init_header = function () {\n", - " var titlebar = document.createElement('div');\n", - " titlebar.classList =\n", - " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", - " var titletext = document.createElement('div');\n", - " titletext.classList = 'ui-dialog-title';\n", - " titletext.setAttribute(\n", - " 'style',\n", - " 'width: 100%; text-align: center; padding: 3px;'\n", - " );\n", - " titlebar.appendChild(titletext);\n", - " this.root.appendChild(titlebar);\n", - " this.header = titletext;\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._init_canvas = function () {\n", - " var fig = this;\n", - "\n", - " var canvas_div = (this.canvas_div = document.createElement('div'));\n", - " canvas_div.setAttribute(\n", - " 'style',\n", - " 'border: 1px solid #ddd;' +\n", - " 'box-sizing: content-box;' +\n", - " 'clear: both;' +\n", - " 'min-height: 1px;' +\n", - " 'min-width: 1px;' +\n", - " 'outline: 0;' +\n", - " 'overflow: hidden;' +\n", - " 'position: relative;' +\n", - " 'resize: both;'\n", - " );\n", - "\n", - " function on_keyboard_event_closure(name) {\n", - " return function (event) {\n", - " return fig.key_event(event, name);\n", - " };\n", - " }\n", - "\n", - " canvas_div.addEventListener(\n", - " 'keydown',\n", - " on_keyboard_event_closure('key_press')\n", - " );\n", - " canvas_div.addEventListener(\n", - " 'keyup',\n", - " on_keyboard_event_closure('key_release')\n", - " );\n", - "\n", - " this._canvas_extra_style(canvas_div);\n", - " this.root.appendChild(canvas_div);\n", - "\n", - " var canvas = (this.canvas = document.createElement('canvas'));\n", - " canvas.classList.add('mpl-canvas');\n", - " canvas.setAttribute('style', 'box-sizing: content-box;');\n", - "\n", - " this.context = canvas.getContext('2d');\n", - "\n", - " var backingStore =\n", - " this.context.backingStorePixelRatio ||\n", - " this.context.webkitBackingStorePixelRatio ||\n", - " this.context.mozBackingStorePixelRatio ||\n", - " this.context.msBackingStorePixelRatio ||\n", - " this.context.oBackingStorePixelRatio ||\n", - " this.context.backingStorePixelRatio ||\n", - " 1;\n", - "\n", - " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", - " 'canvas'\n", - " ));\n", - " rubberband_canvas.setAttribute(\n", - " 'style',\n", - " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", - " );\n", - "\n", - " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", - " if (this.ResizeObserver === undefined) {\n", - " if (window.ResizeObserver !== undefined) {\n", - " this.ResizeObserver = window.ResizeObserver;\n", - " } else {\n", - " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", - " this.ResizeObserver = obs.ResizeObserver;\n", - " }\n", - " }\n", - "\n", - " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", - " var nentries = entries.length;\n", - " for (var i = 0; i < nentries; i++) {\n", - " var entry = entries[i];\n", - " var width, height;\n", - " if (entry.contentBoxSize) {\n", - " if (entry.contentBoxSize instanceof Array) {\n", - " // Chrome 84 implements new version of spec.\n", - " width = entry.contentBoxSize[0].inlineSize;\n", - " height = entry.contentBoxSize[0].blockSize;\n", - " } else {\n", - " // Firefox implements old version of spec.\n", - " width = entry.contentBoxSize.inlineSize;\n", - " height = entry.contentBoxSize.blockSize;\n", - " }\n", - " } else {\n", - " // Chrome <84 implements even older version of spec.\n", - " width = entry.contentRect.width;\n", - " height = entry.contentRect.height;\n", - " }\n", - "\n", - " // Keep the size of the canvas and rubber band canvas in sync with\n", - " // the canvas container.\n", - " if (entry.devicePixelContentBoxSize) {\n", - " // Chrome 84 implements new version of spec.\n", - " canvas.setAttribute(\n", - " 'width',\n", - " entry.devicePixelContentBoxSize[0].inlineSize\n", - " );\n", - " canvas.setAttribute(\n", - " 'height',\n", - " entry.devicePixelContentBoxSize[0].blockSize\n", - " );\n", - " } else {\n", - " canvas.setAttribute('width', width * fig.ratio);\n", - " canvas.setAttribute('height', height * fig.ratio);\n", - " }\n", - " canvas.setAttribute(\n", - " 'style',\n", - " 'width: ' + width + 'px; height: ' + height + 'px;'\n", - " );\n", - "\n", - " rubberband_canvas.setAttribute('width', width);\n", - " rubberband_canvas.setAttribute('height', height);\n", - "\n", - " // And update the size in Python. We ignore the initial 0/0 size\n", - " // that occurs as the element is placed into the DOM, which should\n", - " // otherwise not happen due to the minimum size styling.\n", - " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", - " fig.request_resize(width, height);\n", - " }\n", - " }\n", - " });\n", - " this.resizeObserverInstance.observe(canvas_div);\n", - "\n", - " function on_mouse_event_closure(name) {\n", - " return function (event) {\n", - " return fig.mouse_event(event, name);\n", - " };\n", - " }\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mousedown',\n", - " on_mouse_event_closure('button_press')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseup',\n", - " on_mouse_event_closure('button_release')\n", - " );\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband_canvas.addEventListener(\n", - " 'mousemove',\n", - " on_mouse_event_closure('motion_notify')\n", - " );\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseenter',\n", - " on_mouse_event_closure('figure_enter')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseleave',\n", - " on_mouse_event_closure('figure_leave')\n", - " );\n", - "\n", - " canvas_div.addEventListener('wheel', function (event) {\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " on_mouse_event_closure('scroll')(event);\n", - " });\n", - "\n", - " canvas_div.appendChild(canvas);\n", - " canvas_div.appendChild(rubberband_canvas);\n", - "\n", - " this.rubberband_context = rubberband_canvas.getContext('2d');\n", - " this.rubberband_context.strokeStyle = '#000000';\n", - "\n", - " this._resize_canvas = function (width, height, forward) {\n", - " if (forward) {\n", - " canvas_div.style.width = width + 'px';\n", - " canvas_div.style.height = height + 'px';\n", - " }\n", - " };\n", - "\n", - " // Disable right mouse context menu.\n", - " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", - " event.preventDefault();\n", - " return false;\n", - " });\n", - "\n", - " function set_focus() {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'mpl-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " continue;\n", - " }\n", - "\n", - " var button = (fig.buttons[name] = document.createElement('button'));\n", - " button.classList = 'mpl-widget';\n", - " button.setAttribute('role', 'button');\n", - " button.setAttribute('aria-disabled', 'false');\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - "\n", - " var icon_img = document.createElement('img');\n", - " icon_img.src = '_images/' + image + '.png';\n", - " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", - " icon_img.alt = tooltip;\n", - " button.appendChild(icon_img);\n", - "\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " var fmt_picker = document.createElement('select');\n", - " fmt_picker.classList = 'mpl-widget';\n", - " toolbar.appendChild(fmt_picker);\n", - " this.format_dropdown = fmt_picker;\n", - "\n", - " for (var ind in mpl.extensions) {\n", - " var fmt = mpl.extensions[ind];\n", - " var option = document.createElement('option');\n", - " option.selected = fmt === mpl.default_extension;\n", - " option.innerHTML = fmt;\n", - " fmt_picker.appendChild(option);\n", - " }\n", - "\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "};\n", - "\n", - "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", - " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", - " // which will in turn request a refresh of the image.\n", - " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", - "};\n", - "\n", - "mpl.figure.prototype.send_message = function (type, properties) {\n", - " properties['type'] = type;\n", - " properties['figure_id'] = this.id;\n", - " this.ws.send(JSON.stringify(properties));\n", - "};\n", - "\n", - "mpl.figure.prototype.send_draw_message = function () {\n", - " if (!this.waiting) {\n", - " this.waiting = true;\n", - " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " var format_dropdown = fig.format_dropdown;\n", - " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", - " fig.ondownload(fig, format);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", - " var size = msg['size'];\n", - " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", - " fig._resize_canvas(size[0], size[1], msg['forward']);\n", - " fig.send_message('refresh', {});\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", - " var x0 = msg['x0'] / fig.ratio;\n", - " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", - " var x1 = msg['x1'] / fig.ratio;\n", - " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", - " x0 = Math.floor(x0) + 0.5;\n", - " y0 = Math.floor(y0) + 0.5;\n", - " x1 = Math.floor(x1) + 0.5;\n", - " y1 = Math.floor(y1) + 0.5;\n", - " var min_x = Math.min(x0, x1);\n", - " var min_y = Math.min(y0, y1);\n", - " var width = Math.abs(x1 - x0);\n", - " var height = Math.abs(y1 - y0);\n", - "\n", - " fig.rubberband_context.clearRect(\n", - " 0,\n", - " 0,\n", - " fig.canvas.width / fig.ratio,\n", - " fig.canvas.height / fig.ratio\n", - " );\n", - "\n", - " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", - " // Updates the figure title.\n", - " fig.header.textContent = msg['label'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", - " var cursor = msg['cursor'];\n", - " switch (cursor) {\n", - " case 0:\n", - " cursor = 'pointer';\n", - " break;\n", - " case 1:\n", - " cursor = 'default';\n", - " break;\n", - " case 2:\n", - " cursor = 'crosshair';\n", - " break;\n", - " case 3:\n", - " cursor = 'move';\n", - " break;\n", - " }\n", - " fig.rubberband_canvas.style.cursor = cursor;\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_message = function (fig, msg) {\n", - " fig.message.textContent = msg['message'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", - " // Request the server to send over a new figure.\n", - " fig.send_draw_message();\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", - " fig.image_mode = msg['mode'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", - " for (var key in msg) {\n", - " if (!(key in fig.buttons)) {\n", - " continue;\n", - " }\n", - " fig.buttons[key].disabled = !msg[key];\n", - " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", - " if (msg['mode'] === 'PAN') {\n", - " fig.buttons['Pan'].classList.add('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " } else if (msg['mode'] === 'ZOOM') {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.add('active');\n", - " } else {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Called whenever the canvas gets updated.\n", - " this.send_message('ack', {});\n", - "};\n", - "\n", - "// A function to construct a web socket function for onmessage handling.\n", - "// Called in the figure constructor.\n", - "mpl.figure.prototype._make_on_message_function = function (fig) {\n", - " return function socket_on_message(evt) {\n", - " if (evt.data instanceof Blob) {\n", - " /* FIXME: We get \"Resource interpreted as Image but\n", - " * transferred with MIME type text/plain:\" errors on\n", - " * Chrome. But how to set the MIME type? It doesn't seem\n", - " * to be part of the websocket stream */\n", - " evt.data.type = 'image/png';\n", - "\n", - " /* Free the memory for the previous frames */\n", - " if (fig.imageObj.src) {\n", - " (window.URL || window.webkitURL).revokeObjectURL(\n", - " fig.imageObj.src\n", - " );\n", - " }\n", - "\n", - " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", - " evt.data\n", - " );\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " } else if (\n", - " typeof evt.data === 'string' &&\n", - " evt.data.slice(0, 21) === 'data:image/png;base64'\n", - " ) {\n", - " fig.imageObj.src = evt.data;\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - "\n", - " var msg = JSON.parse(evt.data);\n", - " var msg_type = msg['type'];\n", - "\n", - " // Call the \"handle_{type}\" callback, which takes\n", - " // the figure and JSON message as its only arguments.\n", - " try {\n", - " var callback = fig['handle_' + msg_type];\n", - " } catch (e) {\n", - " console.log(\n", - " \"No handler for the '\" + msg_type + \"' message type: \",\n", - " msg\n", - " );\n", - " return;\n", - " }\n", - "\n", - " if (callback) {\n", - " try {\n", - " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", - " callback(fig, msg);\n", - " } catch (e) {\n", - " console.log(\n", - " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", - " e,\n", - " e.stack,\n", - " msg\n", - " );\n", - " }\n", - " }\n", - " };\n", - "};\n", - "\n", - "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", - "mpl.findpos = function (e) {\n", - " //this section is from http://www.quirksmode.org/js/events_properties.html\n", - " var targ;\n", - " if (!e) {\n", - " e = window.event;\n", - " }\n", - " if (e.target) {\n", - " targ = e.target;\n", - " } else if (e.srcElement) {\n", - " targ = e.srcElement;\n", - " }\n", - " if (targ.nodeType === 3) {\n", - " // defeat Safari bug\n", - " targ = targ.parentNode;\n", - " }\n", - "\n", - " // pageX,Y are the mouse positions relative to the document\n", - " var boundingRect = targ.getBoundingClientRect();\n", - " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", - " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", - "\n", - " return { x: x, y: y };\n", - "};\n", - "\n", - "/*\n", - " * return a copy of an object with only non-object keys\n", - " * we need this to avoid circular references\n", - " * http://stackoverflow.com/a/24161582/3208463\n", - " */\n", - "function simpleKeys(original) {\n", - " return Object.keys(original).reduce(function (obj, key) {\n", - " if (typeof original[key] !== 'object') {\n", - " obj[key] = original[key];\n", - " }\n", - " return obj;\n", - " }, {});\n", - "}\n", - "\n", - "mpl.figure.prototype.mouse_event = function (event, name) {\n", - " var canvas_pos = mpl.findpos(event);\n", - "\n", - " if (name === 'button_press') {\n", - " this.canvas.focus();\n", - " this.canvas_div.focus();\n", - " }\n", - "\n", - " var x = canvas_pos.x * this.ratio;\n", - " var y = canvas_pos.y * this.ratio;\n", - "\n", - " this.send_message(name, {\n", - " x: x,\n", - " y: y,\n", - " button: event.button,\n", - " step: event.step,\n", - " guiEvent: simpleKeys(event),\n", - " });\n", - "\n", - " /* This prevents the web browser from automatically changing to\n", - " * the text insertion cursor when the button is pressed. We want\n", - " * to control all of the cursor setting manually through the\n", - " * 'cursor' event from matplotlib */\n", - " event.preventDefault();\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", - " // Handle any extra behaviour associated with a key event\n", - "};\n", - "\n", - "mpl.figure.prototype.key_event = function (event, name) {\n", - " // Prevent repeat events\n", - " if (name === 'key_press') {\n", - " if (event.which === this._key) {\n", - " return;\n", - " } else {\n", - " this._key = event.which;\n", - " }\n", - " }\n", - " if (name === 'key_release') {\n", - " this._key = null;\n", - " }\n", - "\n", - " var value = '';\n", - " if (event.ctrlKey && event.which !== 17) {\n", - " value += 'ctrl+';\n", - " }\n", - " if (event.altKey && event.which !== 18) {\n", - " value += 'alt+';\n", - " }\n", - " if (event.shiftKey && event.which !== 16) {\n", - " value += 'shift+';\n", - " }\n", - "\n", - " value += 'k';\n", - " value += event.which.toString();\n", - "\n", - " this._key_event_extra(event, name);\n", - "\n", - " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", - " if (name === 'download') {\n", - " this.handle_save(this, null);\n", - " } else {\n", - " this.send_message('toolbar_button', { name: name });\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", - " this.message.textContent = tooltip;\n", - "};\n", - "\n", - "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", - "// prettier-ignore\n", - "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", - "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", - "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", - "\n", - "mpl.default_extension = \"png\";/* global mpl */\n", - "\n", - "var comm_websocket_adapter = function (comm) {\n", - " // Create a \"websocket\"-like object which calls the given IPython comm\n", - " // object with the appropriate methods. Currently this is a non binary\n", - " // socket, so there is still some room for performance tuning.\n", - " var ws = {};\n", - "\n", - " ws.close = function () {\n", - " comm.close();\n", - " };\n", - " ws.send = function (m) {\n", - " //console.log('sending', m);\n", - " comm.send(m);\n", - " };\n", - " // Register the callback with on_msg.\n", - " comm.on_msg(function (msg) {\n", - " //console.log('receiving', msg['content']['data'], msg);\n", - " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", - " ws.onmessage(msg['content']['data']);\n", - " });\n", - " return ws;\n", - "};\n", - "\n", - "mpl.mpl_figure_comm = function (comm, msg) {\n", - " // This is the function which gets called when the mpl process\n", - " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", - "\n", - " var id = msg.content.data.id;\n", - " // Get hold of the div created by the display call when the Comm\n", - " // socket was opened in Python.\n", - " var element = document.getElementById(id);\n", - " var ws_proxy = comm_websocket_adapter(comm);\n", - "\n", - " function ondownload(figure, _format) {\n", - " window.open(figure.canvas.toDataURL());\n", - " }\n", - "\n", - " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", - "\n", - " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", - " // web socket which is closed, not our websocket->open comm proxy.\n", - " ws_proxy.onopen();\n", - "\n", - " fig.parent_element = element;\n", - " fig.cell_info = mpl.find_output_cell(\"
\");\n", - " if (!fig.cell_info) {\n", - " console.error('Failed to find cell for figure', id, fig);\n", - " return;\n", - " }\n", - " fig.cell_info[0].output_area.element.on(\n", - " 'cleared',\n", - " { fig: fig },\n", - " fig._remove_fig_handler\n", - " );\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_close = function (fig, msg) {\n", - " var width = fig.canvas.width / fig.ratio;\n", - " fig.cell_info[0].output_area.element.off(\n", - " 'cleared',\n", - " fig._remove_fig_handler\n", - " );\n", - " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", - "\n", - " // Update the output cell to use the data from the current canvas.\n", - " fig.push_to_output();\n", - " var dataURL = fig.canvas.toDataURL();\n", - " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", - " // the notebook keyboard shortcuts fail.\n", - " IPython.keyboard_manager.enable();\n", - " fig.parent_element.innerHTML =\n", - " '';\n", - " fig.close_ws(fig, msg);\n", - "};\n", - "\n", - "mpl.figure.prototype.close_ws = function (fig, msg) {\n", - " fig.send_message('closing', msg);\n", - " // fig.ws.close()\n", - "};\n", - "\n", - "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", - " // Turn the data on the canvas into data in the output cell.\n", - " var width = this.canvas.width / this.ratio;\n", - " var dataURL = this.canvas.toDataURL();\n", - " this.cell_info[1]['text/html'] =\n", - " '';\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Tell IPython that the notebook contents must change.\n", - " IPython.notebook.set_dirty(true);\n", - " this.send_message('ack', {});\n", - " var fig = this;\n", - " // Wait a second, then push the new image to the DOM so\n", - " // that it is saved nicely (might be nice to debounce this).\n", - " setTimeout(function () {\n", - " fig.push_to_output();\n", - " }, 1000);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'btn-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " var button;\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " continue;\n", - " }\n", - "\n", - " button = fig.buttons[name] = document.createElement('button');\n", - " button.classList = 'btn btn-default';\n", - " button.href = '#';\n", - " button.title = name;\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message pull-right';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = document.createElement('div');\n", - " buttongrp.classList = 'btn-group inline pull-right';\n", - " button = document.createElement('button');\n", - " button.classList = 'btn btn-mini btn-primary';\n", - " button.href = '#';\n", - " button.title = 'Stop Interaction';\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', function (_evt) {\n", - " fig.handle_close(fig, {});\n", - " });\n", - " button.addEventListener(\n", - " 'mouseover',\n", - " on_mouseover_closure('Stop Interaction')\n", - " );\n", - " buttongrp.appendChild(button);\n", - " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", - " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", - "};\n", - "\n", - "mpl.figure.prototype._remove_fig_handler = function (event) {\n", - " var fig = event.data.fig;\n", - " if (event.target !== this) {\n", - " // Ignore bubbled events from children.\n", - " return;\n", - " }\n", - " fig.close_ws(fig, {});\n", - "};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (el) {\n", - " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (el) {\n", - " // this is important to make the div 'focusable\n", - " el.setAttribute('tabindex', 0);\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " } else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager) {\n", - " manager = IPython.keyboard_manager;\n", - " }\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which === 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " fig.ondownload(fig, null);\n", - "};\n", - "\n", - "mpl.find_output_cell = function (html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i = 0; i < ncells; i++) {\n", - " var cell = cells[i];\n", - " if (cell.cell_type === 'code') {\n", - " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", - " var data = cell.output_area.outputs[j];\n", - " if (data.data) {\n", - " // IPython >= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] === html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "};\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel !== null) {\n", - " IPython.notebook.kernel.comm_manager.register_target(\n", - " 'matplotlib',\n", - " mpl.mpl_figure_comm\n", - " );\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%matplotlib notebook\n", - "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", - "plt.plot(data_x, sim_y_data, label=f'Calculations ({interface.current_interface_name})')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can load up some experimental data" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "xye_path: /home/simonward/PycharmProjects/easyScience/easyDiffractionLib/tests/PbSO4_xrays_short.xye\n", - "data_x: [ 10. 10.025 10.05 ... 119.95 119.975 120. ]\n", - "data_y: [179. 147. 165. ... 163. 164. 166.]\n", - "data_e: [13.379 12.124 12.845 ... 12.767 12.806 12.884]\n" - ] - } - ], - "source": [ - "xye_path = os.path.join(tests_path, 'PbSO4_xrays_short.xye')\n", - "print('xye_path:', xye_path)\n", - "data_x, data_y, data_e = np.loadtxt(xye_path, unpack=True)\n", - "print('data_x:', data_x)\n", - "print('data_y:', data_y)\n", - "print('data_e:', data_e)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Generate the simulation y-data" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "sim_y_data = interface.fit_func(data_x)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "/* global mpl */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function () {\n", - " if (typeof WebSocket !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof MozWebSocket !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert(\n", - " 'Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.'\n", - " );\n", - " }\n", - "};\n", - "\n", - "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = this.ws.binaryType !== undefined;\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById('mpl-warnings');\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent =\n", - " 'This browser does not support binary websocket messages. ' +\n", - " 'Performance may be slow.';\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = document.createElement('div');\n", - " this.root.setAttribute('style', 'display: inline-block');\n", - " this._root_extra_style(this.root);\n", - "\n", - " parent_element.appendChild(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message('supports_binary', { value: fig.supports_binary });\n", - " fig.send_message('send_image_mode', {});\n", - " if (fig.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", - " }\n", - " fig.send_message('refresh', {});\n", - " };\n", - "\n", - " this.imageObj.onload = function () {\n", - " if (fig.image_mode === 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function () {\n", - " fig.ws.close();\n", - " };\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "};\n", - "\n", - "mpl.figure.prototype._init_header = function () {\n", - " var titlebar = document.createElement('div');\n", - " titlebar.classList =\n", - " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", - " var titletext = document.createElement('div');\n", - " titletext.classList = 'ui-dialog-title';\n", - " titletext.setAttribute(\n", - " 'style',\n", - " 'width: 100%; text-align: center; padding: 3px;'\n", - " );\n", - " titlebar.appendChild(titletext);\n", - " this.root.appendChild(titlebar);\n", - " this.header = titletext;\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._init_canvas = function () {\n", - " var fig = this;\n", - "\n", - " var canvas_div = (this.canvas_div = document.createElement('div'));\n", - " canvas_div.setAttribute(\n", - " 'style',\n", - " 'border: 1px solid #ddd;' +\n", - " 'box-sizing: content-box;' +\n", - " 'clear: both;' +\n", - " 'min-height: 1px;' +\n", - " 'min-width: 1px;' +\n", - " 'outline: 0;' +\n", - " 'overflow: hidden;' +\n", - " 'position: relative;' +\n", - " 'resize: both;'\n", - " );\n", - "\n", - " function on_keyboard_event_closure(name) {\n", - " return function (event) {\n", - " return fig.key_event(event, name);\n", - " };\n", - " }\n", - "\n", - " canvas_div.addEventListener(\n", - " 'keydown',\n", - " on_keyboard_event_closure('key_press')\n", - " );\n", - " canvas_div.addEventListener(\n", - " 'keyup',\n", - " on_keyboard_event_closure('key_release')\n", - " );\n", - "\n", - " this._canvas_extra_style(canvas_div);\n", - " this.root.appendChild(canvas_div);\n", - "\n", - " var canvas = (this.canvas = document.createElement('canvas'));\n", - " canvas.classList.add('mpl-canvas');\n", - " canvas.setAttribute('style', 'box-sizing: content-box;');\n", - "\n", - " this.context = canvas.getContext('2d');\n", - "\n", - " var backingStore =\n", - " this.context.backingStorePixelRatio ||\n", - " this.context.webkitBackingStorePixelRatio ||\n", - " this.context.mozBackingStorePixelRatio ||\n", - " this.context.msBackingStorePixelRatio ||\n", - " this.context.oBackingStorePixelRatio ||\n", - " this.context.backingStorePixelRatio ||\n", - " 1;\n", - "\n", - " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", - " 'canvas'\n", - " ));\n", - " rubberband_canvas.setAttribute(\n", - " 'style',\n", - " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", - " );\n", - "\n", - " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", - " if (this.ResizeObserver === undefined) {\n", - " if (window.ResizeObserver !== undefined) {\n", - " this.ResizeObserver = window.ResizeObserver;\n", - " } else {\n", - " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", - " this.ResizeObserver = obs.ResizeObserver;\n", - " }\n", - " }\n", - "\n", - " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", - " var nentries = entries.length;\n", - " for (var i = 0; i < nentries; i++) {\n", - " var entry = entries[i];\n", - " var width, height;\n", - " if (entry.contentBoxSize) {\n", - " if (entry.contentBoxSize instanceof Array) {\n", - " // Chrome 84 implements new version of spec.\n", - " width = entry.contentBoxSize[0].inlineSize;\n", - " height = entry.contentBoxSize[0].blockSize;\n", - " } else {\n", - " // Firefox implements old version of spec.\n", - " width = entry.contentBoxSize.inlineSize;\n", - " height = entry.contentBoxSize.blockSize;\n", - " }\n", - " } else {\n", - " // Chrome <84 implements even older version of spec.\n", - " width = entry.contentRect.width;\n", - " height = entry.contentRect.height;\n", - " }\n", - "\n", - " // Keep the size of the canvas and rubber band canvas in sync with\n", - " // the canvas container.\n", - " if (entry.devicePixelContentBoxSize) {\n", - " // Chrome 84 implements new version of spec.\n", - " canvas.setAttribute(\n", - " 'width',\n", - " entry.devicePixelContentBoxSize[0].inlineSize\n", - " );\n", - " canvas.setAttribute(\n", - " 'height',\n", - " entry.devicePixelContentBoxSize[0].blockSize\n", - " );\n", - " } else {\n", - " canvas.setAttribute('width', width * fig.ratio);\n", - " canvas.setAttribute('height', height * fig.ratio);\n", - " }\n", - " canvas.setAttribute(\n", - " 'style',\n", - " 'width: ' + width + 'px; height: ' + height + 'px;'\n", - " );\n", - "\n", - " rubberband_canvas.setAttribute('width', width);\n", - " rubberband_canvas.setAttribute('height', height);\n", - "\n", - " // And update the size in Python. We ignore the initial 0/0 size\n", - " // that occurs as the element is placed into the DOM, which should\n", - " // otherwise not happen due to the minimum size styling.\n", - " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", - " fig.request_resize(width, height);\n", - " }\n", - " }\n", - " });\n", - " this.resizeObserverInstance.observe(canvas_div);\n", - "\n", - " function on_mouse_event_closure(name) {\n", - " return function (event) {\n", - " return fig.mouse_event(event, name);\n", - " };\n", - " }\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mousedown',\n", - " on_mouse_event_closure('button_press')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseup',\n", - " on_mouse_event_closure('button_release')\n", - " );\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband_canvas.addEventListener(\n", - " 'mousemove',\n", - " on_mouse_event_closure('motion_notify')\n", - " );\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseenter',\n", - " on_mouse_event_closure('figure_enter')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseleave',\n", - " on_mouse_event_closure('figure_leave')\n", - " );\n", - "\n", - " canvas_div.addEventListener('wheel', function (event) {\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " on_mouse_event_closure('scroll')(event);\n", - " });\n", - "\n", - " canvas_div.appendChild(canvas);\n", - " canvas_div.appendChild(rubberband_canvas);\n", - "\n", - " this.rubberband_context = rubberband_canvas.getContext('2d');\n", - " this.rubberband_context.strokeStyle = '#000000';\n", - "\n", - " this._resize_canvas = function (width, height, forward) {\n", - " if (forward) {\n", - " canvas_div.style.width = width + 'px';\n", - " canvas_div.style.height = height + 'px';\n", - " }\n", - " };\n", - "\n", - " // Disable right mouse context menu.\n", - " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", - " event.preventDefault();\n", - " return false;\n", - " });\n", - "\n", - " function set_focus() {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'mpl-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " continue;\n", - " }\n", - "\n", - " var button = (fig.buttons[name] = document.createElement('button'));\n", - " button.classList = 'mpl-widget';\n", - " button.setAttribute('role', 'button');\n", - " button.setAttribute('aria-disabled', 'false');\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - "\n", - " var icon_img = document.createElement('img');\n", - " icon_img.src = '_images/' + image + '.png';\n", - " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", - " icon_img.alt = tooltip;\n", - " button.appendChild(icon_img);\n", - "\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " var fmt_picker = document.createElement('select');\n", - " fmt_picker.classList = 'mpl-widget';\n", - " toolbar.appendChild(fmt_picker);\n", - " this.format_dropdown = fmt_picker;\n", - "\n", - " for (var ind in mpl.extensions) {\n", - " var fmt = mpl.extensions[ind];\n", - " var option = document.createElement('option');\n", - " option.selected = fmt === mpl.default_extension;\n", - " option.innerHTML = fmt;\n", - " fmt_picker.appendChild(option);\n", - " }\n", - "\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "};\n", - "\n", - "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", - " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", - " // which will in turn request a refresh of the image.\n", - " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", - "};\n", - "\n", - "mpl.figure.prototype.send_message = function (type, properties) {\n", - " properties['type'] = type;\n", - " properties['figure_id'] = this.id;\n", - " this.ws.send(JSON.stringify(properties));\n", - "};\n", - "\n", - "mpl.figure.prototype.send_draw_message = function () {\n", - " if (!this.waiting) {\n", - " this.waiting = true;\n", - " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " var format_dropdown = fig.format_dropdown;\n", - " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", - " fig.ondownload(fig, format);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", - " var size = msg['size'];\n", - " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", - " fig._resize_canvas(size[0], size[1], msg['forward']);\n", - " fig.send_message('refresh', {});\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", - " var x0 = msg['x0'] / fig.ratio;\n", - " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", - " var x1 = msg['x1'] / fig.ratio;\n", - " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", - " x0 = Math.floor(x0) + 0.5;\n", - " y0 = Math.floor(y0) + 0.5;\n", - " x1 = Math.floor(x1) + 0.5;\n", - " y1 = Math.floor(y1) + 0.5;\n", - " var min_x = Math.min(x0, x1);\n", - " var min_y = Math.min(y0, y1);\n", - " var width = Math.abs(x1 - x0);\n", - " var height = Math.abs(y1 - y0);\n", - "\n", - " fig.rubberband_context.clearRect(\n", - " 0,\n", - " 0,\n", - " fig.canvas.width / fig.ratio,\n", - " fig.canvas.height / fig.ratio\n", - " );\n", - "\n", - " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", - " // Updates the figure title.\n", - " fig.header.textContent = msg['label'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", - " var cursor = msg['cursor'];\n", - " switch (cursor) {\n", - " case 0:\n", - " cursor = 'pointer';\n", - " break;\n", - " case 1:\n", - " cursor = 'default';\n", - " break;\n", - " case 2:\n", - " cursor = 'crosshair';\n", - " break;\n", - " case 3:\n", - " cursor = 'move';\n", - " break;\n", - " }\n", - " fig.rubberband_canvas.style.cursor = cursor;\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_message = function (fig, msg) {\n", - " fig.message.textContent = msg['message'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", - " // Request the server to send over a new figure.\n", - " fig.send_draw_message();\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", - " fig.image_mode = msg['mode'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", - " for (var key in msg) {\n", - " if (!(key in fig.buttons)) {\n", - " continue;\n", - " }\n", - " fig.buttons[key].disabled = !msg[key];\n", - " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", - " if (msg['mode'] === 'PAN') {\n", - " fig.buttons['Pan'].classList.add('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " } else if (msg['mode'] === 'ZOOM') {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.add('active');\n", - " } else {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Called whenever the canvas gets updated.\n", - " this.send_message('ack', {});\n", - "};\n", - "\n", - "// A function to construct a web socket function for onmessage handling.\n", - "// Called in the figure constructor.\n", - "mpl.figure.prototype._make_on_message_function = function (fig) {\n", - " return function socket_on_message(evt) {\n", - " if (evt.data instanceof Blob) {\n", - " /* FIXME: We get \"Resource interpreted as Image but\n", - " * transferred with MIME type text/plain:\" errors on\n", - " * Chrome. But how to set the MIME type? It doesn't seem\n", - " * to be part of the websocket stream */\n", - " evt.data.type = 'image/png';\n", - "\n", - " /* Free the memory for the previous frames */\n", - " if (fig.imageObj.src) {\n", - " (window.URL || window.webkitURL).revokeObjectURL(\n", - " fig.imageObj.src\n", - " );\n", - " }\n", - "\n", - " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", - " evt.data\n", - " );\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " } else if (\n", - " typeof evt.data === 'string' &&\n", - " evt.data.slice(0, 21) === 'data:image/png;base64'\n", - " ) {\n", - " fig.imageObj.src = evt.data;\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - "\n", - " var msg = JSON.parse(evt.data);\n", - " var msg_type = msg['type'];\n", - "\n", - " // Call the \"handle_{type}\" callback, which takes\n", - " // the figure and JSON message as its only arguments.\n", - " try {\n", - " var callback = fig['handle_' + msg_type];\n", - " } catch (e) {\n", - " console.log(\n", - " \"No handler for the '\" + msg_type + \"' message type: \",\n", - " msg\n", - " );\n", - " return;\n", - " }\n", - "\n", - " if (callback) {\n", - " try {\n", - " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", - " callback(fig, msg);\n", - " } catch (e) {\n", - " console.log(\n", - " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", - " e,\n", - " e.stack,\n", - " msg\n", - " );\n", - " }\n", - " }\n", - " };\n", - "};\n", - "\n", - "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", - "mpl.findpos = function (e) {\n", - " //this section is from http://www.quirksmode.org/js/events_properties.html\n", - " var targ;\n", - " if (!e) {\n", - " e = window.event;\n", - " }\n", - " if (e.target) {\n", - " targ = e.target;\n", - " } else if (e.srcElement) {\n", - " targ = e.srcElement;\n", - " }\n", - " if (targ.nodeType === 3) {\n", - " // defeat Safari bug\n", - " targ = targ.parentNode;\n", - " }\n", - "\n", - " // pageX,Y are the mouse positions relative to the document\n", - " var boundingRect = targ.getBoundingClientRect();\n", - " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", - " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", - "\n", - " return { x: x, y: y };\n", - "};\n", - "\n", - "/*\n", - " * return a copy of an object with only non-object keys\n", - " * we need this to avoid circular references\n", - " * http://stackoverflow.com/a/24161582/3208463\n", - " */\n", - "function simpleKeys(original) {\n", - " return Object.keys(original).reduce(function (obj, key) {\n", - " if (typeof original[key] !== 'object') {\n", - " obj[key] = original[key];\n", - " }\n", - " return obj;\n", - " }, {});\n", - "}\n", - "\n", - "mpl.figure.prototype.mouse_event = function (event, name) {\n", - " var canvas_pos = mpl.findpos(event);\n", - "\n", - " if (name === 'button_press') {\n", - " this.canvas.focus();\n", - " this.canvas_div.focus();\n", - " }\n", - "\n", - " var x = canvas_pos.x * this.ratio;\n", - " var y = canvas_pos.y * this.ratio;\n", - "\n", - " this.send_message(name, {\n", - " x: x,\n", - " y: y,\n", - " button: event.button,\n", - " step: event.step,\n", - " guiEvent: simpleKeys(event),\n", - " });\n", - "\n", - " /* This prevents the web browser from automatically changing to\n", - " * the text insertion cursor when the button is pressed. We want\n", - " * to control all of the cursor setting manually through the\n", - " * 'cursor' event from matplotlib */\n", - " event.preventDefault();\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", - " // Handle any extra behaviour associated with a key event\n", - "};\n", - "\n", - "mpl.figure.prototype.key_event = function (event, name) {\n", - " // Prevent repeat events\n", - " if (name === 'key_press') {\n", - " if (event.which === this._key) {\n", - " return;\n", - " } else {\n", - " this._key = event.which;\n", - " }\n", - " }\n", - " if (name === 'key_release') {\n", - " this._key = null;\n", - " }\n", - "\n", - " var value = '';\n", - " if (event.ctrlKey && event.which !== 17) {\n", - " value += 'ctrl+';\n", - " }\n", - " if (event.altKey && event.which !== 18) {\n", - " value += 'alt+';\n", - " }\n", - " if (event.shiftKey && event.which !== 16) {\n", - " value += 'shift+';\n", - " }\n", - "\n", - " value += 'k';\n", - " value += event.which.toString();\n", - "\n", - " this._key_event_extra(event, name);\n", - "\n", - " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", - " if (name === 'download') {\n", - " this.handle_save(this, null);\n", - " } else {\n", - " this.send_message('toolbar_button', { name: name });\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", - " this.message.textContent = tooltip;\n", - "};\n", - "\n", - "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", - "// prettier-ignore\n", - "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", - "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", - "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", - "\n", - "mpl.default_extension = \"png\";/* global mpl */\n", - "\n", - "var comm_websocket_adapter = function (comm) {\n", - " // Create a \"websocket\"-like object which calls the given IPython comm\n", - " // object with the appropriate methods. Currently this is a non binary\n", - " // socket, so there is still some room for performance tuning.\n", - " var ws = {};\n", - "\n", - " ws.close = function () {\n", - " comm.close();\n", - " };\n", - " ws.send = function (m) {\n", - " //console.log('sending', m);\n", - " comm.send(m);\n", - " };\n", - " // Register the callback with on_msg.\n", - " comm.on_msg(function (msg) {\n", - " //console.log('receiving', msg['content']['data'], msg);\n", - " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", - " ws.onmessage(msg['content']['data']);\n", - " });\n", - " return ws;\n", - "};\n", - "\n", - "mpl.mpl_figure_comm = function (comm, msg) {\n", - " // This is the function which gets called when the mpl process\n", - " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", - "\n", - " var id = msg.content.data.id;\n", - " // Get hold of the div created by the display call when the Comm\n", - " // socket was opened in Python.\n", - " var element = document.getElementById(id);\n", - " var ws_proxy = comm_websocket_adapter(comm);\n", - "\n", - " function ondownload(figure, _format) {\n", - " window.open(figure.canvas.toDataURL());\n", - " }\n", - "\n", - " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", - "\n", - " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", - " // web socket which is closed, not our websocket->open comm proxy.\n", - " ws_proxy.onopen();\n", - "\n", - " fig.parent_element = element;\n", - " fig.cell_info = mpl.find_output_cell(\"
\");\n", - " if (!fig.cell_info) {\n", - " console.error('Failed to find cell for figure', id, fig);\n", - " return;\n", - " }\n", - " fig.cell_info[0].output_area.element.on(\n", - " 'cleared',\n", - " { fig: fig },\n", - " fig._remove_fig_handler\n", - " );\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_close = function (fig, msg) {\n", - " var width = fig.canvas.width / fig.ratio;\n", - " fig.cell_info[0].output_area.element.off(\n", - " 'cleared',\n", - " fig._remove_fig_handler\n", - " );\n", - " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", - "\n", - " // Update the output cell to use the data from the current canvas.\n", - " fig.push_to_output();\n", - " var dataURL = fig.canvas.toDataURL();\n", - " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", - " // the notebook keyboard shortcuts fail.\n", - " IPython.keyboard_manager.enable();\n", - " fig.parent_element.innerHTML =\n", - " '';\n", - " fig.close_ws(fig, msg);\n", - "};\n", - "\n", - "mpl.figure.prototype.close_ws = function (fig, msg) {\n", - " fig.send_message('closing', msg);\n", - " // fig.ws.close()\n", - "};\n", - "\n", - "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", - " // Turn the data on the canvas into data in the output cell.\n", - " var width = this.canvas.width / this.ratio;\n", - " var dataURL = this.canvas.toDataURL();\n", - " this.cell_info[1]['text/html'] =\n", - " '';\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Tell IPython that the notebook contents must change.\n", - " IPython.notebook.set_dirty(true);\n", - " this.send_message('ack', {});\n", - " var fig = this;\n", - " // Wait a second, then push the new image to the DOM so\n", - " // that it is saved nicely (might be nice to debounce this).\n", - " setTimeout(function () {\n", - " fig.push_to_output();\n", - " }, 1000);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'btn-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " var button;\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " continue;\n", - " }\n", - "\n", - " button = fig.buttons[name] = document.createElement('button');\n", - " button.classList = 'btn btn-default';\n", - " button.href = '#';\n", - " button.title = name;\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message pull-right';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = document.createElement('div');\n", - " buttongrp.classList = 'btn-group inline pull-right';\n", - " button = document.createElement('button');\n", - " button.classList = 'btn btn-mini btn-primary';\n", - " button.href = '#';\n", - " button.title = 'Stop Interaction';\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', function (_evt) {\n", - " fig.handle_close(fig, {});\n", - " });\n", - " button.addEventListener(\n", - " 'mouseover',\n", - " on_mouseover_closure('Stop Interaction')\n", - " );\n", - " buttongrp.appendChild(button);\n", - " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", - " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", - "};\n", - "\n", - "mpl.figure.prototype._remove_fig_handler = function (event) {\n", - " var fig = event.data.fig;\n", - " if (event.target !== this) {\n", - " // Ignore bubbled events from children.\n", - " return;\n", - " }\n", - " fig.close_ws(fig, {});\n", - "};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (el) {\n", - " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (el) {\n", - " // this is important to make the div 'focusable\n", - " el.setAttribute('tabindex', 0);\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " } else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager) {\n", - " manager = IPython.keyboard_manager;\n", - " }\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which === 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " fig.ondownload(fig, null);\n", - "};\n", - "\n", - "mpl.find_output_cell = function (html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i = 0; i < ncells; i++) {\n", - " var cell = cells[i];\n", - " if (cell.cell_type === 'code') {\n", - " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", - " var data = cell.output_area.outputs[j];\n", - " if (data.data) {\n", - " // IPython >= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] === html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "};\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel !== null) {\n", - " IPython.notebook.kernel.comm_manager.register_target(\n", - " 'matplotlib',\n", - " mpl.mpl_figure_comm\n", - " );\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ "%matplotlib notebook\n", "plt.plot(data_x, data_y, label='Experiment (X-rays)')\n", @@ -3334,990 +186,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "/* global mpl */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function () {\n", - " if (typeof WebSocket !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof MozWebSocket !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert(\n", - " 'Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.'\n", - " );\n", - " }\n", - "};\n", - "\n", - "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = this.ws.binaryType !== undefined;\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById('mpl-warnings');\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent =\n", - " 'This browser does not support binary websocket messages. ' +\n", - " 'Performance may be slow.';\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = document.createElement('div');\n", - " this.root.setAttribute('style', 'display: inline-block');\n", - " this._root_extra_style(this.root);\n", - "\n", - " parent_element.appendChild(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message('supports_binary', { value: fig.supports_binary });\n", - " fig.send_message('send_image_mode', {});\n", - " if (fig.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", - " }\n", - " fig.send_message('refresh', {});\n", - " };\n", - "\n", - " this.imageObj.onload = function () {\n", - " if (fig.image_mode === 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function () {\n", - " fig.ws.close();\n", - " };\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "};\n", - "\n", - "mpl.figure.prototype._init_header = function () {\n", - " var titlebar = document.createElement('div');\n", - " titlebar.classList =\n", - " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", - " var titletext = document.createElement('div');\n", - " titletext.classList = 'ui-dialog-title';\n", - " titletext.setAttribute(\n", - " 'style',\n", - " 'width: 100%; text-align: center; padding: 3px;'\n", - " );\n", - " titlebar.appendChild(titletext);\n", - " this.root.appendChild(titlebar);\n", - " this.header = titletext;\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._init_canvas = function () {\n", - " var fig = this;\n", - "\n", - " var canvas_div = (this.canvas_div = document.createElement('div'));\n", - " canvas_div.setAttribute(\n", - " 'style',\n", - " 'border: 1px solid #ddd;' +\n", - " 'box-sizing: content-box;' +\n", - " 'clear: both;' +\n", - " 'min-height: 1px;' +\n", - " 'min-width: 1px;' +\n", - " 'outline: 0;' +\n", - " 'overflow: hidden;' +\n", - " 'position: relative;' +\n", - " 'resize: both;'\n", - " );\n", - "\n", - " function on_keyboard_event_closure(name) {\n", - " return function (event) {\n", - " return fig.key_event(event, name);\n", - " };\n", - " }\n", - "\n", - " canvas_div.addEventListener(\n", - " 'keydown',\n", - " on_keyboard_event_closure('key_press')\n", - " );\n", - " canvas_div.addEventListener(\n", - " 'keyup',\n", - " on_keyboard_event_closure('key_release')\n", - " );\n", - "\n", - " this._canvas_extra_style(canvas_div);\n", - " this.root.appendChild(canvas_div);\n", - "\n", - " var canvas = (this.canvas = document.createElement('canvas'));\n", - " canvas.classList.add('mpl-canvas');\n", - " canvas.setAttribute('style', 'box-sizing: content-box;');\n", - "\n", - " this.context = canvas.getContext('2d');\n", - "\n", - " var backingStore =\n", - " this.context.backingStorePixelRatio ||\n", - " this.context.webkitBackingStorePixelRatio ||\n", - " this.context.mozBackingStorePixelRatio ||\n", - " this.context.msBackingStorePixelRatio ||\n", - " this.context.oBackingStorePixelRatio ||\n", - " this.context.backingStorePixelRatio ||\n", - " 1;\n", - "\n", - " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", - " 'canvas'\n", - " ));\n", - " rubberband_canvas.setAttribute(\n", - " 'style',\n", - " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", - " );\n", - "\n", - " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", - " if (this.ResizeObserver === undefined) {\n", - " if (window.ResizeObserver !== undefined) {\n", - " this.ResizeObserver = window.ResizeObserver;\n", - " } else {\n", - " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", - " this.ResizeObserver = obs.ResizeObserver;\n", - " }\n", - " }\n", - "\n", - " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", - " var nentries = entries.length;\n", - " for (var i = 0; i < nentries; i++) {\n", - " var entry = entries[i];\n", - " var width, height;\n", - " if (entry.contentBoxSize) {\n", - " if (entry.contentBoxSize instanceof Array) {\n", - " // Chrome 84 implements new version of spec.\n", - " width = entry.contentBoxSize[0].inlineSize;\n", - " height = entry.contentBoxSize[0].blockSize;\n", - " } else {\n", - " // Firefox implements old version of spec.\n", - " width = entry.contentBoxSize.inlineSize;\n", - " height = entry.contentBoxSize.blockSize;\n", - " }\n", - " } else {\n", - " // Chrome <84 implements even older version of spec.\n", - " width = entry.contentRect.width;\n", - " height = entry.contentRect.height;\n", - " }\n", - "\n", - " // Keep the size of the canvas and rubber band canvas in sync with\n", - " // the canvas container.\n", - " if (entry.devicePixelContentBoxSize) {\n", - " // Chrome 84 implements new version of spec.\n", - " canvas.setAttribute(\n", - " 'width',\n", - " entry.devicePixelContentBoxSize[0].inlineSize\n", - " );\n", - " canvas.setAttribute(\n", - " 'height',\n", - " entry.devicePixelContentBoxSize[0].blockSize\n", - " );\n", - " } else {\n", - " canvas.setAttribute('width', width * fig.ratio);\n", - " canvas.setAttribute('height', height * fig.ratio);\n", - " }\n", - " canvas.setAttribute(\n", - " 'style',\n", - " 'width: ' + width + 'px; height: ' + height + 'px;'\n", - " );\n", - "\n", - " rubberband_canvas.setAttribute('width', width);\n", - " rubberband_canvas.setAttribute('height', height);\n", - "\n", - " // And update the size in Python. We ignore the initial 0/0 size\n", - " // that occurs as the element is placed into the DOM, which should\n", - " // otherwise not happen due to the minimum size styling.\n", - " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", - " fig.request_resize(width, height);\n", - " }\n", - " }\n", - " });\n", - " this.resizeObserverInstance.observe(canvas_div);\n", - "\n", - " function on_mouse_event_closure(name) {\n", - " return function (event) {\n", - " return fig.mouse_event(event, name);\n", - " };\n", - " }\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mousedown',\n", - " on_mouse_event_closure('button_press')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseup',\n", - " on_mouse_event_closure('button_release')\n", - " );\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband_canvas.addEventListener(\n", - " 'mousemove',\n", - " on_mouse_event_closure('motion_notify')\n", - " );\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseenter',\n", - " on_mouse_event_closure('figure_enter')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseleave',\n", - " on_mouse_event_closure('figure_leave')\n", - " );\n", - "\n", - " canvas_div.addEventListener('wheel', function (event) {\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " on_mouse_event_closure('scroll')(event);\n", - " });\n", - "\n", - " canvas_div.appendChild(canvas);\n", - " canvas_div.appendChild(rubberband_canvas);\n", - "\n", - " this.rubberband_context = rubberband_canvas.getContext('2d');\n", - " this.rubberband_context.strokeStyle = '#000000';\n", - "\n", - " this._resize_canvas = function (width, height, forward) {\n", - " if (forward) {\n", - " canvas_div.style.width = width + 'px';\n", - " canvas_div.style.height = height + 'px';\n", - " }\n", - " };\n", - "\n", - " // Disable right mouse context menu.\n", - " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", - " event.preventDefault();\n", - " return false;\n", - " });\n", - "\n", - " function set_focus() {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'mpl-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " continue;\n", - " }\n", - "\n", - " var button = (fig.buttons[name] = document.createElement('button'));\n", - " button.classList = 'mpl-widget';\n", - " button.setAttribute('role', 'button');\n", - " button.setAttribute('aria-disabled', 'false');\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - "\n", - " var icon_img = document.createElement('img');\n", - " icon_img.src = '_images/' + image + '.png';\n", - " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", - " icon_img.alt = tooltip;\n", - " button.appendChild(icon_img);\n", - "\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " var fmt_picker = document.createElement('select');\n", - " fmt_picker.classList = 'mpl-widget';\n", - " toolbar.appendChild(fmt_picker);\n", - " this.format_dropdown = fmt_picker;\n", - "\n", - " for (var ind in mpl.extensions) {\n", - " var fmt = mpl.extensions[ind];\n", - " var option = document.createElement('option');\n", - " option.selected = fmt === mpl.default_extension;\n", - " option.innerHTML = fmt;\n", - " fmt_picker.appendChild(option);\n", - " }\n", - "\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "};\n", - "\n", - "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", - " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", - " // which will in turn request a refresh of the image.\n", - " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", - "};\n", - "\n", - "mpl.figure.prototype.send_message = function (type, properties) {\n", - " properties['type'] = type;\n", - " properties['figure_id'] = this.id;\n", - " this.ws.send(JSON.stringify(properties));\n", - "};\n", - "\n", - "mpl.figure.prototype.send_draw_message = function () {\n", - " if (!this.waiting) {\n", - " this.waiting = true;\n", - " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " var format_dropdown = fig.format_dropdown;\n", - " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", - " fig.ondownload(fig, format);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", - " var size = msg['size'];\n", - " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", - " fig._resize_canvas(size[0], size[1], msg['forward']);\n", - " fig.send_message('refresh', {});\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", - " var x0 = msg['x0'] / fig.ratio;\n", - " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", - " var x1 = msg['x1'] / fig.ratio;\n", - " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", - " x0 = Math.floor(x0) + 0.5;\n", - " y0 = Math.floor(y0) + 0.5;\n", - " x1 = Math.floor(x1) + 0.5;\n", - " y1 = Math.floor(y1) + 0.5;\n", - " var min_x = Math.min(x0, x1);\n", - " var min_y = Math.min(y0, y1);\n", - " var width = Math.abs(x1 - x0);\n", - " var height = Math.abs(y1 - y0);\n", - "\n", - " fig.rubberband_context.clearRect(\n", - " 0,\n", - " 0,\n", - " fig.canvas.width / fig.ratio,\n", - " fig.canvas.height / fig.ratio\n", - " );\n", - "\n", - " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", - " // Updates the figure title.\n", - " fig.header.textContent = msg['label'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", - " var cursor = msg['cursor'];\n", - " switch (cursor) {\n", - " case 0:\n", - " cursor = 'pointer';\n", - " break;\n", - " case 1:\n", - " cursor = 'default';\n", - " break;\n", - " case 2:\n", - " cursor = 'crosshair';\n", - " break;\n", - " case 3:\n", - " cursor = 'move';\n", - " break;\n", - " }\n", - " fig.rubberband_canvas.style.cursor = cursor;\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_message = function (fig, msg) {\n", - " fig.message.textContent = msg['message'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", - " // Request the server to send over a new figure.\n", - " fig.send_draw_message();\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", - " fig.image_mode = msg['mode'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", - " for (var key in msg) {\n", - " if (!(key in fig.buttons)) {\n", - " continue;\n", - " }\n", - " fig.buttons[key].disabled = !msg[key];\n", - " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", - " if (msg['mode'] === 'PAN') {\n", - " fig.buttons['Pan'].classList.add('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " } else if (msg['mode'] === 'ZOOM') {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.add('active');\n", - " } else {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Called whenever the canvas gets updated.\n", - " this.send_message('ack', {});\n", - "};\n", - "\n", - "// A function to construct a web socket function for onmessage handling.\n", - "// Called in the figure constructor.\n", - "mpl.figure.prototype._make_on_message_function = function (fig) {\n", - " return function socket_on_message(evt) {\n", - " if (evt.data instanceof Blob) {\n", - " /* FIXME: We get \"Resource interpreted as Image but\n", - " * transferred with MIME type text/plain:\" errors on\n", - " * Chrome. But how to set the MIME type? It doesn't seem\n", - " * to be part of the websocket stream */\n", - " evt.data.type = 'image/png';\n", - "\n", - " /* Free the memory for the previous frames */\n", - " if (fig.imageObj.src) {\n", - " (window.URL || window.webkitURL).revokeObjectURL(\n", - " fig.imageObj.src\n", - " );\n", - " }\n", - "\n", - " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", - " evt.data\n", - " );\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " } else if (\n", - " typeof evt.data === 'string' &&\n", - " evt.data.slice(0, 21) === 'data:image/png;base64'\n", - " ) {\n", - " fig.imageObj.src = evt.data;\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - "\n", - " var msg = JSON.parse(evt.data);\n", - " var msg_type = msg['type'];\n", - "\n", - " // Call the \"handle_{type}\" callback, which takes\n", - " // the figure and JSON message as its only arguments.\n", - " try {\n", - " var callback = fig['handle_' + msg_type];\n", - " } catch (e) {\n", - " console.log(\n", - " \"No handler for the '\" + msg_type + \"' message type: \",\n", - " msg\n", - " );\n", - " return;\n", - " }\n", - "\n", - " if (callback) {\n", - " try {\n", - " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", - " callback(fig, msg);\n", - " } catch (e) {\n", - " console.log(\n", - " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", - " e,\n", - " e.stack,\n", - " msg\n", - " );\n", - " }\n", - " }\n", - " };\n", - "};\n", - "\n", - "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", - "mpl.findpos = function (e) {\n", - " //this section is from http://www.quirksmode.org/js/events_properties.html\n", - " var targ;\n", - " if (!e) {\n", - " e = window.event;\n", - " }\n", - " if (e.target) {\n", - " targ = e.target;\n", - " } else if (e.srcElement) {\n", - " targ = e.srcElement;\n", - " }\n", - " if (targ.nodeType === 3) {\n", - " // defeat Safari bug\n", - " targ = targ.parentNode;\n", - " }\n", - "\n", - " // pageX,Y are the mouse positions relative to the document\n", - " var boundingRect = targ.getBoundingClientRect();\n", - " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", - " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", - "\n", - " return { x: x, y: y };\n", - "};\n", - "\n", - "/*\n", - " * return a copy of an object with only non-object keys\n", - " * we need this to avoid circular references\n", - " * http://stackoverflow.com/a/24161582/3208463\n", - " */\n", - "function simpleKeys(original) {\n", - " return Object.keys(original).reduce(function (obj, key) {\n", - " if (typeof original[key] !== 'object') {\n", - " obj[key] = original[key];\n", - " }\n", - " return obj;\n", - " }, {});\n", - "}\n", - "\n", - "mpl.figure.prototype.mouse_event = function (event, name) {\n", - " var canvas_pos = mpl.findpos(event);\n", - "\n", - " if (name === 'button_press') {\n", - " this.canvas.focus();\n", - " this.canvas_div.focus();\n", - " }\n", - "\n", - " var x = canvas_pos.x * this.ratio;\n", - " var y = canvas_pos.y * this.ratio;\n", - "\n", - " this.send_message(name, {\n", - " x: x,\n", - " y: y,\n", - " button: event.button,\n", - " step: event.step,\n", - " guiEvent: simpleKeys(event),\n", - " });\n", - "\n", - " /* This prevents the web browser from automatically changing to\n", - " * the text insertion cursor when the button is pressed. We want\n", - " * to control all of the cursor setting manually through the\n", - " * 'cursor' event from matplotlib */\n", - " event.preventDefault();\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", - " // Handle any extra behaviour associated with a key event\n", - "};\n", - "\n", - "mpl.figure.prototype.key_event = function (event, name) {\n", - " // Prevent repeat events\n", - " if (name === 'key_press') {\n", - " if (event.which === this._key) {\n", - " return;\n", - " } else {\n", - " this._key = event.which;\n", - " }\n", - " }\n", - " if (name === 'key_release') {\n", - " this._key = null;\n", - " }\n", - "\n", - " var value = '';\n", - " if (event.ctrlKey && event.which !== 17) {\n", - " value += 'ctrl+';\n", - " }\n", - " if (event.altKey && event.which !== 18) {\n", - " value += 'alt+';\n", - " }\n", - " if (event.shiftKey && event.which !== 16) {\n", - " value += 'shift+';\n", - " }\n", - "\n", - " value += 'k';\n", - " value += event.which.toString();\n", - "\n", - " this._key_event_extra(event, name);\n", - "\n", - " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", - " if (name === 'download') {\n", - " this.handle_save(this, null);\n", - " } else {\n", - " this.send_message('toolbar_button', { name: name });\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", - " this.message.textContent = tooltip;\n", - "};\n", - "\n", - "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", - "// prettier-ignore\n", - "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", - "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", - "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", - "\n", - "mpl.default_extension = \"png\";/* global mpl */\n", - "\n", - "var comm_websocket_adapter = function (comm) {\n", - " // Create a \"websocket\"-like object which calls the given IPython comm\n", - " // object with the appropriate methods. Currently this is a non binary\n", - " // socket, so there is still some room for performance tuning.\n", - " var ws = {};\n", - "\n", - " ws.close = function () {\n", - " comm.close();\n", - " };\n", - " ws.send = function (m) {\n", - " //console.log('sending', m);\n", - " comm.send(m);\n", - " };\n", - " // Register the callback with on_msg.\n", - " comm.on_msg(function (msg) {\n", - " //console.log('receiving', msg['content']['data'], msg);\n", - " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", - " ws.onmessage(msg['content']['data']);\n", - " });\n", - " return ws;\n", - "};\n", - "\n", - "mpl.mpl_figure_comm = function (comm, msg) {\n", - " // This is the function which gets called when the mpl process\n", - " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", - "\n", - " var id = msg.content.data.id;\n", - " // Get hold of the div created by the display call when the Comm\n", - " // socket was opened in Python.\n", - " var element = document.getElementById(id);\n", - " var ws_proxy = comm_websocket_adapter(comm);\n", - "\n", - " function ondownload(figure, _format) {\n", - " window.open(figure.canvas.toDataURL());\n", - " }\n", - "\n", - " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", - "\n", - " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", - " // web socket which is closed, not our websocket->open comm proxy.\n", - " ws_proxy.onopen();\n", - "\n", - " fig.parent_element = element;\n", - " fig.cell_info = mpl.find_output_cell(\"
\");\n", - " if (!fig.cell_info) {\n", - " console.error('Failed to find cell for figure', id, fig);\n", - " return;\n", - " }\n", - " fig.cell_info[0].output_area.element.on(\n", - " 'cleared',\n", - " { fig: fig },\n", - " fig._remove_fig_handler\n", - " );\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_close = function (fig, msg) {\n", - " var width = fig.canvas.width / fig.ratio;\n", - " fig.cell_info[0].output_area.element.off(\n", - " 'cleared',\n", - " fig._remove_fig_handler\n", - " );\n", - " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", - "\n", - " // Update the output cell to use the data from the current canvas.\n", - " fig.push_to_output();\n", - " var dataURL = fig.canvas.toDataURL();\n", - " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", - " // the notebook keyboard shortcuts fail.\n", - " IPython.keyboard_manager.enable();\n", - " fig.parent_element.innerHTML =\n", - " '';\n", - " fig.close_ws(fig, msg);\n", - "};\n", - "\n", - "mpl.figure.prototype.close_ws = function (fig, msg) {\n", - " fig.send_message('closing', msg);\n", - " // fig.ws.close()\n", - "};\n", - "\n", - "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", - " // Turn the data on the canvas into data in the output cell.\n", - " var width = this.canvas.width / this.ratio;\n", - " var dataURL = this.canvas.toDataURL();\n", - " this.cell_info[1]['text/html'] =\n", - " '';\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Tell IPython that the notebook contents must change.\n", - " IPython.notebook.set_dirty(true);\n", - " this.send_message('ack', {});\n", - " var fig = this;\n", - " // Wait a second, then push the new image to the DOM so\n", - " // that it is saved nicely (might be nice to debounce this).\n", - " setTimeout(function () {\n", - " fig.push_to_output();\n", - " }, 1000);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'btn-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " var button;\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " continue;\n", - " }\n", - "\n", - " button = fig.buttons[name] = document.createElement('button');\n", - " button.classList = 'btn btn-default';\n", - " button.href = '#';\n", - " button.title = name;\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message pull-right';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = document.createElement('div');\n", - " buttongrp.classList = 'btn-group inline pull-right';\n", - " button = document.createElement('button');\n", - " button.classList = 'btn btn-mini btn-primary';\n", - " button.href = '#';\n", - " button.title = 'Stop Interaction';\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', function (_evt) {\n", - " fig.handle_close(fig, {});\n", - " });\n", - " button.addEventListener(\n", - " 'mouseover',\n", - " on_mouseover_closure('Stop Interaction')\n", - " );\n", - " buttongrp.appendChild(button);\n", - " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", - " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", - "};\n", - "\n", - "mpl.figure.prototype._remove_fig_handler = function (event) {\n", - " var fig = event.data.fig;\n", - " if (event.target !== this) {\n", - " // Ignore bubbled events from children.\n", - " return;\n", - " }\n", - " fig.close_ws(fig, {});\n", - "};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (el) {\n", - " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (el) {\n", - " // this is important to make the div 'focusable\n", - " el.setAttribute('tabindex', 0);\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " } else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager) {\n", - " manager = IPython.keyboard_manager;\n", - " }\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which === 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " fig.ondownload(fig, null);\n", - "};\n", - "\n", - "mpl.find_output_cell = function (html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i = 0; i < ncells; i++) {\n", - " var cell = cells[i];\n", - " if (cell.cell_type === 'code') {\n", - " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", - " var data = cell.output_area.outputs[j];\n", - " if (data.data) {\n", - " // IPython >= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] === html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "};\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel !== null) {\n", - " IPython.notebook.kernel.comm_manager.register_target(\n", - " 'matplotlib',\n", - " mpl.mpl_figure_comm\n", - " );\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "S.parameters.wavelength = 1.54\n", "S.parameters.u_resolution = 0.031\n", @@ -4343,1019 +214,34 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Background of 5 points.\n", - "Collection of 1 backgrounds.\n" - ] - } - ], + "outputs": [], "source": [ "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", "\n", "bg = PointBackground(linked_experiment='PbSO4')\n", - "bg.append(BackgroundPoint.from_pars(data_x[0], 166))\n", - "bg.append(BackgroundPoint.from_pars(16, 36))\n", - "bg.append(BackgroundPoint.from_pars(50, 120))\n", - "bg.append(BackgroundPoint.from_pars(100, 100))\n", - "bg.append(BackgroundPoint.from_pars(data_x[-1], 164))\n", - "print(bg)\n", "\n", - "S.set_background(bg)\n", - "print(S.backgrounds)" + "#bg.append(BackgroundPoint.from_pars(data_x[0], 166))\n", + "#bg.append(BackgroundPoint.from_pars(16, 36))\n", + "#bg.append(BackgroundPoint.from_pars(50, 120))\n", + "#bg.append(BackgroundPoint.from_pars(100, 100))\n", + "#bg.append(BackgroundPoint.from_pars(data_x[-1], 164))\n", + "\n", + "bg.append(BackgroundPoint.from_pars(data_x[0], 1.66))\n", + "bg.append(BackgroundPoint.from_pars(16, 0.36))\n", + "bg.append(BackgroundPoint.from_pars(50, 1.20))\n", + "bg.append(BackgroundPoint.from_pars(100, 1.00))\n", + "bg.append(BackgroundPoint.from_pars(data_x[-1], 1.64))\n", + "\n", + "S.set_background(bg)\n" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "/* global mpl */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function () {\n", - " if (typeof WebSocket !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof MozWebSocket !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert(\n", - " 'Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.'\n", - " );\n", - " }\n", - "};\n", - "\n", - "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = this.ws.binaryType !== undefined;\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById('mpl-warnings');\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent =\n", - " 'This browser does not support binary websocket messages. ' +\n", - " 'Performance may be slow.';\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = document.createElement('div');\n", - " this.root.setAttribute('style', 'display: inline-block');\n", - " this._root_extra_style(this.root);\n", - "\n", - " parent_element.appendChild(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message('supports_binary', { value: fig.supports_binary });\n", - " fig.send_message('send_image_mode', {});\n", - " if (fig.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", - " }\n", - " fig.send_message('refresh', {});\n", - " };\n", - "\n", - " this.imageObj.onload = function () {\n", - " if (fig.image_mode === 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function () {\n", - " fig.ws.close();\n", - " };\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "};\n", - "\n", - "mpl.figure.prototype._init_header = function () {\n", - " var titlebar = document.createElement('div');\n", - " titlebar.classList =\n", - " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", - " var titletext = document.createElement('div');\n", - " titletext.classList = 'ui-dialog-title';\n", - " titletext.setAttribute(\n", - " 'style',\n", - " 'width: 100%; text-align: center; padding: 3px;'\n", - " );\n", - " titlebar.appendChild(titletext);\n", - " this.root.appendChild(titlebar);\n", - " this.header = titletext;\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._init_canvas = function () {\n", - " var fig = this;\n", - "\n", - " var canvas_div = (this.canvas_div = document.createElement('div'));\n", - " canvas_div.setAttribute(\n", - " 'style',\n", - " 'border: 1px solid #ddd;' +\n", - " 'box-sizing: content-box;' +\n", - " 'clear: both;' +\n", - " 'min-height: 1px;' +\n", - " 'min-width: 1px;' +\n", - " 'outline: 0;' +\n", - " 'overflow: hidden;' +\n", - " 'position: relative;' +\n", - " 'resize: both;'\n", - " );\n", - "\n", - " function on_keyboard_event_closure(name) {\n", - " return function (event) {\n", - " return fig.key_event(event, name);\n", - " };\n", - " }\n", - "\n", - " canvas_div.addEventListener(\n", - " 'keydown',\n", - " on_keyboard_event_closure('key_press')\n", - " );\n", - " canvas_div.addEventListener(\n", - " 'keyup',\n", - " on_keyboard_event_closure('key_release')\n", - " );\n", - "\n", - " this._canvas_extra_style(canvas_div);\n", - " this.root.appendChild(canvas_div);\n", - "\n", - " var canvas = (this.canvas = document.createElement('canvas'));\n", - " canvas.classList.add('mpl-canvas');\n", - " canvas.setAttribute('style', 'box-sizing: content-box;');\n", - "\n", - " this.context = canvas.getContext('2d');\n", - "\n", - " var backingStore =\n", - " this.context.backingStorePixelRatio ||\n", - " this.context.webkitBackingStorePixelRatio ||\n", - " this.context.mozBackingStorePixelRatio ||\n", - " this.context.msBackingStorePixelRatio ||\n", - " this.context.oBackingStorePixelRatio ||\n", - " this.context.backingStorePixelRatio ||\n", - " 1;\n", - "\n", - " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", - " 'canvas'\n", - " ));\n", - " rubberband_canvas.setAttribute(\n", - " 'style',\n", - " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", - " );\n", - "\n", - " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", - " if (this.ResizeObserver === undefined) {\n", - " if (window.ResizeObserver !== undefined) {\n", - " this.ResizeObserver = window.ResizeObserver;\n", - " } else {\n", - " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", - " this.ResizeObserver = obs.ResizeObserver;\n", - " }\n", - " }\n", - "\n", - " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", - " var nentries = entries.length;\n", - " for (var i = 0; i < nentries; i++) {\n", - " var entry = entries[i];\n", - " var width, height;\n", - " if (entry.contentBoxSize) {\n", - " if (entry.contentBoxSize instanceof Array) {\n", - " // Chrome 84 implements new version of spec.\n", - " width = entry.contentBoxSize[0].inlineSize;\n", - " height = entry.contentBoxSize[0].blockSize;\n", - " } else {\n", - " // Firefox implements old version of spec.\n", - " width = entry.contentBoxSize.inlineSize;\n", - " height = entry.contentBoxSize.blockSize;\n", - " }\n", - " } else {\n", - " // Chrome <84 implements even older version of spec.\n", - " width = entry.contentRect.width;\n", - " height = entry.contentRect.height;\n", - " }\n", - "\n", - " // Keep the size of the canvas and rubber band canvas in sync with\n", - " // the canvas container.\n", - " if (entry.devicePixelContentBoxSize) {\n", - " // Chrome 84 implements new version of spec.\n", - " canvas.setAttribute(\n", - " 'width',\n", - " entry.devicePixelContentBoxSize[0].inlineSize\n", - " );\n", - " canvas.setAttribute(\n", - " 'height',\n", - " entry.devicePixelContentBoxSize[0].blockSize\n", - " );\n", - " } else {\n", - " canvas.setAttribute('width', width * fig.ratio);\n", - " canvas.setAttribute('height', height * fig.ratio);\n", - " }\n", - " canvas.setAttribute(\n", - " 'style',\n", - " 'width: ' + width + 'px; height: ' + height + 'px;'\n", - " );\n", - "\n", - " rubberband_canvas.setAttribute('width', width);\n", - " rubberband_canvas.setAttribute('height', height);\n", - "\n", - " // And update the size in Python. We ignore the initial 0/0 size\n", - " // that occurs as the element is placed into the DOM, which should\n", - " // otherwise not happen due to the minimum size styling.\n", - " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", - " fig.request_resize(width, height);\n", - " }\n", - " }\n", - " });\n", - " this.resizeObserverInstance.observe(canvas_div);\n", - "\n", - " function on_mouse_event_closure(name) {\n", - " return function (event) {\n", - " return fig.mouse_event(event, name);\n", - " };\n", - " }\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mousedown',\n", - " on_mouse_event_closure('button_press')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseup',\n", - " on_mouse_event_closure('button_release')\n", - " );\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband_canvas.addEventListener(\n", - " 'mousemove',\n", - " on_mouse_event_closure('motion_notify')\n", - " );\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseenter',\n", - " on_mouse_event_closure('figure_enter')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseleave',\n", - " on_mouse_event_closure('figure_leave')\n", - " );\n", - "\n", - " canvas_div.addEventListener('wheel', function (event) {\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " on_mouse_event_closure('scroll')(event);\n", - " });\n", - "\n", - " canvas_div.appendChild(canvas);\n", - " canvas_div.appendChild(rubberband_canvas);\n", - "\n", - " this.rubberband_context = rubberband_canvas.getContext('2d');\n", - " this.rubberband_context.strokeStyle = '#000000';\n", - "\n", - " this._resize_canvas = function (width, height, forward) {\n", - " if (forward) {\n", - " canvas_div.style.width = width + 'px';\n", - " canvas_div.style.height = height + 'px';\n", - " }\n", - " };\n", - "\n", - " // Disable right mouse context menu.\n", - " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", - " event.preventDefault();\n", - " return false;\n", - " });\n", - "\n", - " function set_focus() {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'mpl-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " continue;\n", - " }\n", - "\n", - " var button = (fig.buttons[name] = document.createElement('button'));\n", - " button.classList = 'mpl-widget';\n", - " button.setAttribute('role', 'button');\n", - " button.setAttribute('aria-disabled', 'false');\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - "\n", - " var icon_img = document.createElement('img');\n", - " icon_img.src = '_images/' + image + '.png';\n", - " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", - " icon_img.alt = tooltip;\n", - " button.appendChild(icon_img);\n", - "\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " var fmt_picker = document.createElement('select');\n", - " fmt_picker.classList = 'mpl-widget';\n", - " toolbar.appendChild(fmt_picker);\n", - " this.format_dropdown = fmt_picker;\n", - "\n", - " for (var ind in mpl.extensions) {\n", - " var fmt = mpl.extensions[ind];\n", - " var option = document.createElement('option');\n", - " option.selected = fmt === mpl.default_extension;\n", - " option.innerHTML = fmt;\n", - " fmt_picker.appendChild(option);\n", - " }\n", - "\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "};\n", - "\n", - "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", - " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", - " // which will in turn request a refresh of the image.\n", - " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", - "};\n", - "\n", - "mpl.figure.prototype.send_message = function (type, properties) {\n", - " properties['type'] = type;\n", - " properties['figure_id'] = this.id;\n", - " this.ws.send(JSON.stringify(properties));\n", - "};\n", - "\n", - "mpl.figure.prototype.send_draw_message = function () {\n", - " if (!this.waiting) {\n", - " this.waiting = true;\n", - " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " var format_dropdown = fig.format_dropdown;\n", - " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", - " fig.ondownload(fig, format);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", - " var size = msg['size'];\n", - " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", - " fig._resize_canvas(size[0], size[1], msg['forward']);\n", - " fig.send_message('refresh', {});\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", - " var x0 = msg['x0'] / fig.ratio;\n", - " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", - " var x1 = msg['x1'] / fig.ratio;\n", - " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", - " x0 = Math.floor(x0) + 0.5;\n", - " y0 = Math.floor(y0) + 0.5;\n", - " x1 = Math.floor(x1) + 0.5;\n", - " y1 = Math.floor(y1) + 0.5;\n", - " var min_x = Math.min(x0, x1);\n", - " var min_y = Math.min(y0, y1);\n", - " var width = Math.abs(x1 - x0);\n", - " var height = Math.abs(y1 - y0);\n", - "\n", - " fig.rubberband_context.clearRect(\n", - " 0,\n", - " 0,\n", - " fig.canvas.width / fig.ratio,\n", - " fig.canvas.height / fig.ratio\n", - " );\n", - "\n", - " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", - " // Updates the figure title.\n", - " fig.header.textContent = msg['label'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", - " var cursor = msg['cursor'];\n", - " switch (cursor) {\n", - " case 0:\n", - " cursor = 'pointer';\n", - " break;\n", - " case 1:\n", - " cursor = 'default';\n", - " break;\n", - " case 2:\n", - " cursor = 'crosshair';\n", - " break;\n", - " case 3:\n", - " cursor = 'move';\n", - " break;\n", - " }\n", - " fig.rubberband_canvas.style.cursor = cursor;\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_message = function (fig, msg) {\n", - " fig.message.textContent = msg['message'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", - " // Request the server to send over a new figure.\n", - " fig.send_draw_message();\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", - " fig.image_mode = msg['mode'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", - " for (var key in msg) {\n", - " if (!(key in fig.buttons)) {\n", - " continue;\n", - " }\n", - " fig.buttons[key].disabled = !msg[key];\n", - " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", - " if (msg['mode'] === 'PAN') {\n", - " fig.buttons['Pan'].classList.add('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " } else if (msg['mode'] === 'ZOOM') {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.add('active');\n", - " } else {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Called whenever the canvas gets updated.\n", - " this.send_message('ack', {});\n", - "};\n", - "\n", - "// A function to construct a web socket function for onmessage handling.\n", - "// Called in the figure constructor.\n", - "mpl.figure.prototype._make_on_message_function = function (fig) {\n", - " return function socket_on_message(evt) {\n", - " if (evt.data instanceof Blob) {\n", - " /* FIXME: We get \"Resource interpreted as Image but\n", - " * transferred with MIME type text/plain:\" errors on\n", - " * Chrome. But how to set the MIME type? It doesn't seem\n", - " * to be part of the websocket stream */\n", - " evt.data.type = 'image/png';\n", - "\n", - " /* Free the memory for the previous frames */\n", - " if (fig.imageObj.src) {\n", - " (window.URL || window.webkitURL).revokeObjectURL(\n", - " fig.imageObj.src\n", - " );\n", - " }\n", - "\n", - " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", - " evt.data\n", - " );\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " } else if (\n", - " typeof evt.data === 'string' &&\n", - " evt.data.slice(0, 21) === 'data:image/png;base64'\n", - " ) {\n", - " fig.imageObj.src = evt.data;\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - "\n", - " var msg = JSON.parse(evt.data);\n", - " var msg_type = msg['type'];\n", - "\n", - " // Call the \"handle_{type}\" callback, which takes\n", - " // the figure and JSON message as its only arguments.\n", - " try {\n", - " var callback = fig['handle_' + msg_type];\n", - " } catch (e) {\n", - " console.log(\n", - " \"No handler for the '\" + msg_type + \"' message type: \",\n", - " msg\n", - " );\n", - " return;\n", - " }\n", - "\n", - " if (callback) {\n", - " try {\n", - " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", - " callback(fig, msg);\n", - " } catch (e) {\n", - " console.log(\n", - " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", - " e,\n", - " e.stack,\n", - " msg\n", - " );\n", - " }\n", - " }\n", - " };\n", - "};\n", - "\n", - "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", - "mpl.findpos = function (e) {\n", - " //this section is from http://www.quirksmode.org/js/events_properties.html\n", - " var targ;\n", - " if (!e) {\n", - " e = window.event;\n", - " }\n", - " if (e.target) {\n", - " targ = e.target;\n", - " } else if (e.srcElement) {\n", - " targ = e.srcElement;\n", - " }\n", - " if (targ.nodeType === 3) {\n", - " // defeat Safari bug\n", - " targ = targ.parentNode;\n", - " }\n", - "\n", - " // pageX,Y are the mouse positions relative to the document\n", - " var boundingRect = targ.getBoundingClientRect();\n", - " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", - " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", - "\n", - " return { x: x, y: y };\n", - "};\n", - "\n", - "/*\n", - " * return a copy of an object with only non-object keys\n", - " * we need this to avoid circular references\n", - " * http://stackoverflow.com/a/24161582/3208463\n", - " */\n", - "function simpleKeys(original) {\n", - " return Object.keys(original).reduce(function (obj, key) {\n", - " if (typeof original[key] !== 'object') {\n", - " obj[key] = original[key];\n", - " }\n", - " return obj;\n", - " }, {});\n", - "}\n", - "\n", - "mpl.figure.prototype.mouse_event = function (event, name) {\n", - " var canvas_pos = mpl.findpos(event);\n", - "\n", - " if (name === 'button_press') {\n", - " this.canvas.focus();\n", - " this.canvas_div.focus();\n", - " }\n", - "\n", - " var x = canvas_pos.x * this.ratio;\n", - " var y = canvas_pos.y * this.ratio;\n", - "\n", - " this.send_message(name, {\n", - " x: x,\n", - " y: y,\n", - " button: event.button,\n", - " step: event.step,\n", - " guiEvent: simpleKeys(event),\n", - " });\n", - "\n", - " /* This prevents the web browser from automatically changing to\n", - " * the text insertion cursor when the button is pressed. We want\n", - " * to control all of the cursor setting manually through the\n", - " * 'cursor' event from matplotlib */\n", - " event.preventDefault();\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", - " // Handle any extra behaviour associated with a key event\n", - "};\n", - "\n", - "mpl.figure.prototype.key_event = function (event, name) {\n", - " // Prevent repeat events\n", - " if (name === 'key_press') {\n", - " if (event.which === this._key) {\n", - " return;\n", - " } else {\n", - " this._key = event.which;\n", - " }\n", - " }\n", - " if (name === 'key_release') {\n", - " this._key = null;\n", - " }\n", - "\n", - " var value = '';\n", - " if (event.ctrlKey && event.which !== 17) {\n", - " value += 'ctrl+';\n", - " }\n", - " if (event.altKey && event.which !== 18) {\n", - " value += 'alt+';\n", - " }\n", - " if (event.shiftKey && event.which !== 16) {\n", - " value += 'shift+';\n", - " }\n", - "\n", - " value += 'k';\n", - " value += event.which.toString();\n", - "\n", - " this._key_event_extra(event, name);\n", - "\n", - " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", - " if (name === 'download') {\n", - " this.handle_save(this, null);\n", - " } else {\n", - " this.send_message('toolbar_button', { name: name });\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", - " this.message.textContent = tooltip;\n", - "};\n", - "\n", - "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", - "// prettier-ignore\n", - "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", - "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", - "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", - "\n", - "mpl.default_extension = \"png\";/* global mpl */\n", - "\n", - "var comm_websocket_adapter = function (comm) {\n", - " // Create a \"websocket\"-like object which calls the given IPython comm\n", - " // object with the appropriate methods. Currently this is a non binary\n", - " // socket, so there is still some room for performance tuning.\n", - " var ws = {};\n", - "\n", - " ws.close = function () {\n", - " comm.close();\n", - " };\n", - " ws.send = function (m) {\n", - " //console.log('sending', m);\n", - " comm.send(m);\n", - " };\n", - " // Register the callback with on_msg.\n", - " comm.on_msg(function (msg) {\n", - " //console.log('receiving', msg['content']['data'], msg);\n", - " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", - " ws.onmessage(msg['content']['data']);\n", - " });\n", - " return ws;\n", - "};\n", - "\n", - "mpl.mpl_figure_comm = function (comm, msg) {\n", - " // This is the function which gets called when the mpl process\n", - " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", - "\n", - " var id = msg.content.data.id;\n", - " // Get hold of the div created by the display call when the Comm\n", - " // socket was opened in Python.\n", - " var element = document.getElementById(id);\n", - " var ws_proxy = comm_websocket_adapter(comm);\n", - "\n", - " function ondownload(figure, _format) {\n", - " window.open(figure.canvas.toDataURL());\n", - " }\n", - "\n", - " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", - "\n", - " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", - " // web socket which is closed, not our websocket->open comm proxy.\n", - " ws_proxy.onopen();\n", - "\n", - " fig.parent_element = element;\n", - " fig.cell_info = mpl.find_output_cell(\"
\");\n", - " if (!fig.cell_info) {\n", - " console.error('Failed to find cell for figure', id, fig);\n", - " return;\n", - " }\n", - " fig.cell_info[0].output_area.element.on(\n", - " 'cleared',\n", - " { fig: fig },\n", - " fig._remove_fig_handler\n", - " );\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_close = function (fig, msg) {\n", - " var width = fig.canvas.width / fig.ratio;\n", - " fig.cell_info[0].output_area.element.off(\n", - " 'cleared',\n", - " fig._remove_fig_handler\n", - " );\n", - " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", - "\n", - " // Update the output cell to use the data from the current canvas.\n", - " fig.push_to_output();\n", - " var dataURL = fig.canvas.toDataURL();\n", - " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", - " // the notebook keyboard shortcuts fail.\n", - " IPython.keyboard_manager.enable();\n", - " fig.parent_element.innerHTML =\n", - " '';\n", - " fig.close_ws(fig, msg);\n", - "};\n", - "\n", - "mpl.figure.prototype.close_ws = function (fig, msg) {\n", - " fig.send_message('closing', msg);\n", - " // fig.ws.close()\n", - "};\n", - "\n", - "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", - " // Turn the data on the canvas into data in the output cell.\n", - " var width = this.canvas.width / this.ratio;\n", - " var dataURL = this.canvas.toDataURL();\n", - " this.cell_info[1]['text/html'] =\n", - " '';\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Tell IPython that the notebook contents must change.\n", - " IPython.notebook.set_dirty(true);\n", - " this.send_message('ack', {});\n", - " var fig = this;\n", - " // Wait a second, then push the new image to the DOM so\n", - " // that it is saved nicely (might be nice to debounce this).\n", - " setTimeout(function () {\n", - " fig.push_to_output();\n", - " }, 1000);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'btn-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " var button;\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " continue;\n", - " }\n", - "\n", - " button = fig.buttons[name] = document.createElement('button');\n", - " button.classList = 'btn btn-default';\n", - " button.href = '#';\n", - " button.title = name;\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message pull-right';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = document.createElement('div');\n", - " buttongrp.classList = 'btn-group inline pull-right';\n", - " button = document.createElement('button');\n", - " button.classList = 'btn btn-mini btn-primary';\n", - " button.href = '#';\n", - " button.title = 'Stop Interaction';\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', function (_evt) {\n", - " fig.handle_close(fig, {});\n", - " });\n", - " button.addEventListener(\n", - " 'mouseover',\n", - " on_mouseover_closure('Stop Interaction')\n", - " );\n", - " buttongrp.appendChild(button);\n", - " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", - " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", - "};\n", - "\n", - "mpl.figure.prototype._remove_fig_handler = function (event) {\n", - " var fig = event.data.fig;\n", - " if (event.target !== this) {\n", - " // Ignore bubbled events from children.\n", - " return;\n", - " }\n", - " fig.close_ws(fig, {});\n", - "};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (el) {\n", - " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (el) {\n", - " // this is important to make the div 'focusable\n", - " el.setAttribute('tabindex', 0);\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " } else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager) {\n", - " manager = IPython.keyboard_manager;\n", - " }\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which === 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " fig.ondownload(fig, null);\n", - "};\n", - "\n", - "mpl.find_output_cell = function (html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i = 0; i < ncells; i++) {\n", - " var cell = cells[i];\n", - " if (cell.cell_type === 'code') {\n", - " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", - " var data = cell.output_area.outputs[j];\n", - " if (data.data) {\n", - " // IPython >= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] === html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "};\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel !== null) {\n", - " IPython.notebook.kernel.comm_manager.register_target(\n", - " 'matplotlib',\n", - " mpl.mpl_figure_comm\n", - " );\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "sim_y_data = interface.fit_func(data_x)\n", "\n", @@ -5374,1013 +260,21 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['CrysPy', 'CrysFML', 'GSAS-II']\n", - "CrysPy\n", - "CrysFML\n" - ] - } - ], + "outputs": [], "source": [ "print(interface.available_interfaces)\n", "print(interface.current_interface_name)\n", "interface.switch('CrysFML')\n", - "S._updateInterface()\n", "print(interface.current_interface_name)" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "/* global mpl */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function () {\n", - " if (typeof WebSocket !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof MozWebSocket !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert(\n", - " 'Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.'\n", - " );\n", - " }\n", - "};\n", - "\n", - "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = this.ws.binaryType !== undefined;\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById('mpl-warnings');\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent =\n", - " 'This browser does not support binary websocket messages. ' +\n", - " 'Performance may be slow.';\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = document.createElement('div');\n", - " this.root.setAttribute('style', 'display: inline-block');\n", - " this._root_extra_style(this.root);\n", - "\n", - " parent_element.appendChild(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message('supports_binary', { value: fig.supports_binary });\n", - " fig.send_message('send_image_mode', {});\n", - " if (fig.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", - " }\n", - " fig.send_message('refresh', {});\n", - " };\n", - "\n", - " this.imageObj.onload = function () {\n", - " if (fig.image_mode === 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function () {\n", - " fig.ws.close();\n", - " };\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "};\n", - "\n", - "mpl.figure.prototype._init_header = function () {\n", - " var titlebar = document.createElement('div');\n", - " titlebar.classList =\n", - " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", - " var titletext = document.createElement('div');\n", - " titletext.classList = 'ui-dialog-title';\n", - " titletext.setAttribute(\n", - " 'style',\n", - " 'width: 100%; text-align: center; padding: 3px;'\n", - " );\n", - " titlebar.appendChild(titletext);\n", - " this.root.appendChild(titlebar);\n", - " this.header = titletext;\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._init_canvas = function () {\n", - " var fig = this;\n", - "\n", - " var canvas_div = (this.canvas_div = document.createElement('div'));\n", - " canvas_div.setAttribute(\n", - " 'style',\n", - " 'border: 1px solid #ddd;' +\n", - " 'box-sizing: content-box;' +\n", - " 'clear: both;' +\n", - " 'min-height: 1px;' +\n", - " 'min-width: 1px;' +\n", - " 'outline: 0;' +\n", - " 'overflow: hidden;' +\n", - " 'position: relative;' +\n", - " 'resize: both;'\n", - " );\n", - "\n", - " function on_keyboard_event_closure(name) {\n", - " return function (event) {\n", - " return fig.key_event(event, name);\n", - " };\n", - " }\n", - "\n", - " canvas_div.addEventListener(\n", - " 'keydown',\n", - " on_keyboard_event_closure('key_press')\n", - " );\n", - " canvas_div.addEventListener(\n", - " 'keyup',\n", - " on_keyboard_event_closure('key_release')\n", - " );\n", - "\n", - " this._canvas_extra_style(canvas_div);\n", - " this.root.appendChild(canvas_div);\n", - "\n", - " var canvas = (this.canvas = document.createElement('canvas'));\n", - " canvas.classList.add('mpl-canvas');\n", - " canvas.setAttribute('style', 'box-sizing: content-box;');\n", - "\n", - " this.context = canvas.getContext('2d');\n", - "\n", - " var backingStore =\n", - " this.context.backingStorePixelRatio ||\n", - " this.context.webkitBackingStorePixelRatio ||\n", - " this.context.mozBackingStorePixelRatio ||\n", - " this.context.msBackingStorePixelRatio ||\n", - " this.context.oBackingStorePixelRatio ||\n", - " this.context.backingStorePixelRatio ||\n", - " 1;\n", - "\n", - " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", - " 'canvas'\n", - " ));\n", - " rubberband_canvas.setAttribute(\n", - " 'style',\n", - " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", - " );\n", - "\n", - " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", - " if (this.ResizeObserver === undefined) {\n", - " if (window.ResizeObserver !== undefined) {\n", - " this.ResizeObserver = window.ResizeObserver;\n", - " } else {\n", - " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", - " this.ResizeObserver = obs.ResizeObserver;\n", - " }\n", - " }\n", - "\n", - " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", - " var nentries = entries.length;\n", - " for (var i = 0; i < nentries; i++) {\n", - " var entry = entries[i];\n", - " var width, height;\n", - " if (entry.contentBoxSize) {\n", - " if (entry.contentBoxSize instanceof Array) {\n", - " // Chrome 84 implements new version of spec.\n", - " width = entry.contentBoxSize[0].inlineSize;\n", - " height = entry.contentBoxSize[0].blockSize;\n", - " } else {\n", - " // Firefox implements old version of spec.\n", - " width = entry.contentBoxSize.inlineSize;\n", - " height = entry.contentBoxSize.blockSize;\n", - " }\n", - " } else {\n", - " // Chrome <84 implements even older version of spec.\n", - " width = entry.contentRect.width;\n", - " height = entry.contentRect.height;\n", - " }\n", - "\n", - " // Keep the size of the canvas and rubber band canvas in sync with\n", - " // the canvas container.\n", - " if (entry.devicePixelContentBoxSize) {\n", - " // Chrome 84 implements new version of spec.\n", - " canvas.setAttribute(\n", - " 'width',\n", - " entry.devicePixelContentBoxSize[0].inlineSize\n", - " );\n", - " canvas.setAttribute(\n", - " 'height',\n", - " entry.devicePixelContentBoxSize[0].blockSize\n", - " );\n", - " } else {\n", - " canvas.setAttribute('width', width * fig.ratio);\n", - " canvas.setAttribute('height', height * fig.ratio);\n", - " }\n", - " canvas.setAttribute(\n", - " 'style',\n", - " 'width: ' + width + 'px; height: ' + height + 'px;'\n", - " );\n", - "\n", - " rubberband_canvas.setAttribute('width', width);\n", - " rubberband_canvas.setAttribute('height', height);\n", - "\n", - " // And update the size in Python. We ignore the initial 0/0 size\n", - " // that occurs as the element is placed into the DOM, which should\n", - " // otherwise not happen due to the minimum size styling.\n", - " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", - " fig.request_resize(width, height);\n", - " }\n", - " }\n", - " });\n", - " this.resizeObserverInstance.observe(canvas_div);\n", - "\n", - " function on_mouse_event_closure(name) {\n", - " return function (event) {\n", - " return fig.mouse_event(event, name);\n", - " };\n", - " }\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mousedown',\n", - " on_mouse_event_closure('button_press')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseup',\n", - " on_mouse_event_closure('button_release')\n", - " );\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband_canvas.addEventListener(\n", - " 'mousemove',\n", - " on_mouse_event_closure('motion_notify')\n", - " );\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseenter',\n", - " on_mouse_event_closure('figure_enter')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseleave',\n", - " on_mouse_event_closure('figure_leave')\n", - " );\n", - "\n", - " canvas_div.addEventListener('wheel', function (event) {\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " on_mouse_event_closure('scroll')(event);\n", - " });\n", - "\n", - " canvas_div.appendChild(canvas);\n", - " canvas_div.appendChild(rubberband_canvas);\n", - "\n", - " this.rubberband_context = rubberband_canvas.getContext('2d');\n", - " this.rubberband_context.strokeStyle = '#000000';\n", - "\n", - " this._resize_canvas = function (width, height, forward) {\n", - " if (forward) {\n", - " canvas_div.style.width = width + 'px';\n", - " canvas_div.style.height = height + 'px';\n", - " }\n", - " };\n", - "\n", - " // Disable right mouse context menu.\n", - " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", - " event.preventDefault();\n", - " return false;\n", - " });\n", - "\n", - " function set_focus() {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'mpl-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " continue;\n", - " }\n", - "\n", - " var button = (fig.buttons[name] = document.createElement('button'));\n", - " button.classList = 'mpl-widget';\n", - " button.setAttribute('role', 'button');\n", - " button.setAttribute('aria-disabled', 'false');\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - "\n", - " var icon_img = document.createElement('img');\n", - " icon_img.src = '_images/' + image + '.png';\n", - " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", - " icon_img.alt = tooltip;\n", - " button.appendChild(icon_img);\n", - "\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " var fmt_picker = document.createElement('select');\n", - " fmt_picker.classList = 'mpl-widget';\n", - " toolbar.appendChild(fmt_picker);\n", - " this.format_dropdown = fmt_picker;\n", - "\n", - " for (var ind in mpl.extensions) {\n", - " var fmt = mpl.extensions[ind];\n", - " var option = document.createElement('option');\n", - " option.selected = fmt === mpl.default_extension;\n", - " option.innerHTML = fmt;\n", - " fmt_picker.appendChild(option);\n", - " }\n", - "\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "};\n", - "\n", - "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", - " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", - " // which will in turn request a refresh of the image.\n", - " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", - "};\n", - "\n", - "mpl.figure.prototype.send_message = function (type, properties) {\n", - " properties['type'] = type;\n", - " properties['figure_id'] = this.id;\n", - " this.ws.send(JSON.stringify(properties));\n", - "};\n", - "\n", - "mpl.figure.prototype.send_draw_message = function () {\n", - " if (!this.waiting) {\n", - " this.waiting = true;\n", - " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " var format_dropdown = fig.format_dropdown;\n", - " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", - " fig.ondownload(fig, format);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", - " var size = msg['size'];\n", - " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", - " fig._resize_canvas(size[0], size[1], msg['forward']);\n", - " fig.send_message('refresh', {});\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", - " var x0 = msg['x0'] / fig.ratio;\n", - " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", - " var x1 = msg['x1'] / fig.ratio;\n", - " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", - " x0 = Math.floor(x0) + 0.5;\n", - " y0 = Math.floor(y0) + 0.5;\n", - " x1 = Math.floor(x1) + 0.5;\n", - " y1 = Math.floor(y1) + 0.5;\n", - " var min_x = Math.min(x0, x1);\n", - " var min_y = Math.min(y0, y1);\n", - " var width = Math.abs(x1 - x0);\n", - " var height = Math.abs(y1 - y0);\n", - "\n", - " fig.rubberband_context.clearRect(\n", - " 0,\n", - " 0,\n", - " fig.canvas.width / fig.ratio,\n", - " fig.canvas.height / fig.ratio\n", - " );\n", - "\n", - " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", - " // Updates the figure title.\n", - " fig.header.textContent = msg['label'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", - " var cursor = msg['cursor'];\n", - " switch (cursor) {\n", - " case 0:\n", - " cursor = 'pointer';\n", - " break;\n", - " case 1:\n", - " cursor = 'default';\n", - " break;\n", - " case 2:\n", - " cursor = 'crosshair';\n", - " break;\n", - " case 3:\n", - " cursor = 'move';\n", - " break;\n", - " }\n", - " fig.rubberband_canvas.style.cursor = cursor;\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_message = function (fig, msg) {\n", - " fig.message.textContent = msg['message'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", - " // Request the server to send over a new figure.\n", - " fig.send_draw_message();\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", - " fig.image_mode = msg['mode'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", - " for (var key in msg) {\n", - " if (!(key in fig.buttons)) {\n", - " continue;\n", - " }\n", - " fig.buttons[key].disabled = !msg[key];\n", - " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", - " if (msg['mode'] === 'PAN') {\n", - " fig.buttons['Pan'].classList.add('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " } else if (msg['mode'] === 'ZOOM') {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.add('active');\n", - " } else {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Called whenever the canvas gets updated.\n", - " this.send_message('ack', {});\n", - "};\n", - "\n", - "// A function to construct a web socket function for onmessage handling.\n", - "// Called in the figure constructor.\n", - "mpl.figure.prototype._make_on_message_function = function (fig) {\n", - " return function socket_on_message(evt) {\n", - " if (evt.data instanceof Blob) {\n", - " /* FIXME: We get \"Resource interpreted as Image but\n", - " * transferred with MIME type text/plain:\" errors on\n", - " * Chrome. But how to set the MIME type? It doesn't seem\n", - " * to be part of the websocket stream */\n", - " evt.data.type = 'image/png';\n", - "\n", - " /* Free the memory for the previous frames */\n", - " if (fig.imageObj.src) {\n", - " (window.URL || window.webkitURL).revokeObjectURL(\n", - " fig.imageObj.src\n", - " );\n", - " }\n", - "\n", - " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", - " evt.data\n", - " );\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " } else if (\n", - " typeof evt.data === 'string' &&\n", - " evt.data.slice(0, 21) === 'data:image/png;base64'\n", - " ) {\n", - " fig.imageObj.src = evt.data;\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - "\n", - " var msg = JSON.parse(evt.data);\n", - " var msg_type = msg['type'];\n", - "\n", - " // Call the \"handle_{type}\" callback, which takes\n", - " // the figure and JSON message as its only arguments.\n", - " try {\n", - " var callback = fig['handle_' + msg_type];\n", - " } catch (e) {\n", - " console.log(\n", - " \"No handler for the '\" + msg_type + \"' message type: \",\n", - " msg\n", - " );\n", - " return;\n", - " }\n", - "\n", - " if (callback) {\n", - " try {\n", - " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", - " callback(fig, msg);\n", - " } catch (e) {\n", - " console.log(\n", - " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", - " e,\n", - " e.stack,\n", - " msg\n", - " );\n", - " }\n", - " }\n", - " };\n", - "};\n", - "\n", - "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", - "mpl.findpos = function (e) {\n", - " //this section is from http://www.quirksmode.org/js/events_properties.html\n", - " var targ;\n", - " if (!e) {\n", - " e = window.event;\n", - " }\n", - " if (e.target) {\n", - " targ = e.target;\n", - " } else if (e.srcElement) {\n", - " targ = e.srcElement;\n", - " }\n", - " if (targ.nodeType === 3) {\n", - " // defeat Safari bug\n", - " targ = targ.parentNode;\n", - " }\n", - "\n", - " // pageX,Y are the mouse positions relative to the document\n", - " var boundingRect = targ.getBoundingClientRect();\n", - " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", - " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", - "\n", - " return { x: x, y: y };\n", - "};\n", - "\n", - "/*\n", - " * return a copy of an object with only non-object keys\n", - " * we need this to avoid circular references\n", - " * http://stackoverflow.com/a/24161582/3208463\n", - " */\n", - "function simpleKeys(original) {\n", - " return Object.keys(original).reduce(function (obj, key) {\n", - " if (typeof original[key] !== 'object') {\n", - " obj[key] = original[key];\n", - " }\n", - " return obj;\n", - " }, {});\n", - "}\n", - "\n", - "mpl.figure.prototype.mouse_event = function (event, name) {\n", - " var canvas_pos = mpl.findpos(event);\n", - "\n", - " if (name === 'button_press') {\n", - " this.canvas.focus();\n", - " this.canvas_div.focus();\n", - " }\n", - "\n", - " var x = canvas_pos.x * this.ratio;\n", - " var y = canvas_pos.y * this.ratio;\n", - "\n", - " this.send_message(name, {\n", - " x: x,\n", - " y: y,\n", - " button: event.button,\n", - " step: event.step,\n", - " guiEvent: simpleKeys(event),\n", - " });\n", - "\n", - " /* This prevents the web browser from automatically changing to\n", - " * the text insertion cursor when the button is pressed. We want\n", - " * to control all of the cursor setting manually through the\n", - " * 'cursor' event from matplotlib */\n", - " event.preventDefault();\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", - " // Handle any extra behaviour associated with a key event\n", - "};\n", - "\n", - "mpl.figure.prototype.key_event = function (event, name) {\n", - " // Prevent repeat events\n", - " if (name === 'key_press') {\n", - " if (event.which === this._key) {\n", - " return;\n", - " } else {\n", - " this._key = event.which;\n", - " }\n", - " }\n", - " if (name === 'key_release') {\n", - " this._key = null;\n", - " }\n", - "\n", - " var value = '';\n", - " if (event.ctrlKey && event.which !== 17) {\n", - " value += 'ctrl+';\n", - " }\n", - " if (event.altKey && event.which !== 18) {\n", - " value += 'alt+';\n", - " }\n", - " if (event.shiftKey && event.which !== 16) {\n", - " value += 'shift+';\n", - " }\n", - "\n", - " value += 'k';\n", - " value += event.which.toString();\n", - "\n", - " this._key_event_extra(event, name);\n", - "\n", - " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", - " if (name === 'download') {\n", - " this.handle_save(this, null);\n", - " } else {\n", - " this.send_message('toolbar_button', { name: name });\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", - " this.message.textContent = tooltip;\n", - "};\n", - "\n", - "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", - "// prettier-ignore\n", - "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", - "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", - "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", - "\n", - "mpl.default_extension = \"png\";/* global mpl */\n", - "\n", - "var comm_websocket_adapter = function (comm) {\n", - " // Create a \"websocket\"-like object which calls the given IPython comm\n", - " // object with the appropriate methods. Currently this is a non binary\n", - " // socket, so there is still some room for performance tuning.\n", - " var ws = {};\n", - "\n", - " ws.close = function () {\n", - " comm.close();\n", - " };\n", - " ws.send = function (m) {\n", - " //console.log('sending', m);\n", - " comm.send(m);\n", - " };\n", - " // Register the callback with on_msg.\n", - " comm.on_msg(function (msg) {\n", - " //console.log('receiving', msg['content']['data'], msg);\n", - " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", - " ws.onmessage(msg['content']['data']);\n", - " });\n", - " return ws;\n", - "};\n", - "\n", - "mpl.mpl_figure_comm = function (comm, msg) {\n", - " // This is the function which gets called when the mpl process\n", - " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", - "\n", - " var id = msg.content.data.id;\n", - " // Get hold of the div created by the display call when the Comm\n", - " // socket was opened in Python.\n", - " var element = document.getElementById(id);\n", - " var ws_proxy = comm_websocket_adapter(comm);\n", - "\n", - " function ondownload(figure, _format) {\n", - " window.open(figure.canvas.toDataURL());\n", - " }\n", - "\n", - " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", - "\n", - " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", - " // web socket which is closed, not our websocket->open comm proxy.\n", - " ws_proxy.onopen();\n", - "\n", - " fig.parent_element = element;\n", - " fig.cell_info = mpl.find_output_cell(\"
\");\n", - " if (!fig.cell_info) {\n", - " console.error('Failed to find cell for figure', id, fig);\n", - " return;\n", - " }\n", - " fig.cell_info[0].output_area.element.on(\n", - " 'cleared',\n", - " { fig: fig },\n", - " fig._remove_fig_handler\n", - " );\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_close = function (fig, msg) {\n", - " var width = fig.canvas.width / fig.ratio;\n", - " fig.cell_info[0].output_area.element.off(\n", - " 'cleared',\n", - " fig._remove_fig_handler\n", - " );\n", - " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", - "\n", - " // Update the output cell to use the data from the current canvas.\n", - " fig.push_to_output();\n", - " var dataURL = fig.canvas.toDataURL();\n", - " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", - " // the notebook keyboard shortcuts fail.\n", - " IPython.keyboard_manager.enable();\n", - " fig.parent_element.innerHTML =\n", - " '';\n", - " fig.close_ws(fig, msg);\n", - "};\n", - "\n", - "mpl.figure.prototype.close_ws = function (fig, msg) {\n", - " fig.send_message('closing', msg);\n", - " // fig.ws.close()\n", - "};\n", - "\n", - "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", - " // Turn the data on the canvas into data in the output cell.\n", - " var width = this.canvas.width / this.ratio;\n", - " var dataURL = this.canvas.toDataURL();\n", - " this.cell_info[1]['text/html'] =\n", - " '';\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Tell IPython that the notebook contents must change.\n", - " IPython.notebook.set_dirty(true);\n", - " this.send_message('ack', {});\n", - " var fig = this;\n", - " // Wait a second, then push the new image to the DOM so\n", - " // that it is saved nicely (might be nice to debounce this).\n", - " setTimeout(function () {\n", - " fig.push_to_output();\n", - " }, 1000);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'btn-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " var button;\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " continue;\n", - " }\n", - "\n", - " button = fig.buttons[name] = document.createElement('button');\n", - " button.classList = 'btn btn-default';\n", - " button.href = '#';\n", - " button.title = name;\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message pull-right';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = document.createElement('div');\n", - " buttongrp.classList = 'btn-group inline pull-right';\n", - " button = document.createElement('button');\n", - " button.classList = 'btn btn-mini btn-primary';\n", - " button.href = '#';\n", - " button.title = 'Stop Interaction';\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', function (_evt) {\n", - " fig.handle_close(fig, {});\n", - " });\n", - " button.addEventListener(\n", - " 'mouseover',\n", - " on_mouseover_closure('Stop Interaction')\n", - " );\n", - " buttongrp.appendChild(button);\n", - " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", - " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", - "};\n", - "\n", - "mpl.figure.prototype._remove_fig_handler = function (event) {\n", - " var fig = event.data.fig;\n", - " if (event.target !== this) {\n", - " // Ignore bubbled events from children.\n", - " return;\n", - " }\n", - " fig.close_ws(fig, {});\n", - "};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (el) {\n", - " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (el) {\n", - " // this is important to make the div 'focusable\n", - " el.setAttribute('tabindex', 0);\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " } else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager) {\n", - " manager = IPython.keyboard_manager;\n", - " }\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which === 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " fig.ondownload(fig, null);\n", - "};\n", - "\n", - "mpl.find_output_cell = function (html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i = 0; i < ncells; i++) {\n", - " var cell = cells[i];\n", - " if (cell.cell_type === 'code') {\n", - " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", - " var data = cell.output_area.outputs[j];\n", - " if (data.data) {\n", - " // IPython >= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] === html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "};\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel !== null) {\n", - " IPython.notebook.kernel.comm_manager.register_target(\n", - " 'matplotlib',\n", - " mpl.mpl_figure_comm\n", - " );\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "sim_y_data = interface.fit_func(data_x)\n", "\n", @@ -6548,7 +442,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.9" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/tests/test1.py b/tests/test1.py index ea0c5c6f..724a8995 100644 --- a/tests/test1.py +++ b/tests/test1.py @@ -19,8 +19,8 @@ sample = Sample(phases=phase, parameters=Instrument1DCWParameters.default(), calculator=calculator) -# S.phase.cell.length_a = 5 -# S.parameters.wavelength = 1.25 +# sample.phase.cell.length_a = 5 +sample.parameters.wavelength = 1.25 # print(S) x_data = np.linspace(5, 150, 100) y_data = calculator.fit_func(x_data) @@ -39,13 +39,15 @@ # plt.show() calculator.switch('CrysFML') +calculator.filename = 'tests/SrTiO3.cif' sample = Sample(phases=phase, parameters=Instrument1DCWParameters.default(), calculator=calculator) + # ._updateInterface() -# S.phase.cell.length_a = 5 -# S.parameters.wavelength = 1.25 +# sample.phase.cell.length_a = 5 +sample.parameters.wavelength = 1.25 # print(S) x_data = np.linspace(5, 150, 100) y_data = calculator.fit_func(x_data) diff --git a/tests/test4.py b/tests/test4.py new file mode 100644 index 00000000..9b043af6 --- /dev/null +++ b/tests/test4.py @@ -0,0 +1,32 @@ +from easyCore import np + +from easyDiffractionLib.sample import Sample +from easyDiffractionLib import Site, Phases, Phase +from easyDiffractionLib.interface import InterfaceFactory +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters + +import matplotlib.pyplot as plt + + +i = InterfaceFactory() + +atom = Site.from_pars(label="my_little_pony", + specie='O', + fract_x=0.05, + fract_y=0.05, + fract_z=0.05) +atom.add_adp('Uiso', Uiso=0.0) +phase = Phase(name="p1") +phase.add_atom(atom) + +phases = Phases() +phases.append(phase) + + +S = Sample(phases=phases, parameters=Instrument1DCWParameters.default(), interface=i) + +x_data = np.linspace(5, 150, 100) +y_data = i.fit_func(x_data) + +plt.plot(x_data, y_data, label="CFL") +plt.show() \ No newline at end of file From 2723296d9ddb884760ac1e47894794e06c05aa50 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 14 Sep 2021 10:22:45 +0200 Subject: [PATCH 171/312] Disable Lorentzian coefficients --- easyDiffractionLib/Profiles/P1D.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index 7c00b5f7..29a72254 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -292,8 +292,8 @@ class Instrument1DTOFParameters(BaseObj): '@version': '0.0.1', 'name': 'sigma2', 'value': 0.0, - 'fixed': True - + 'fixed': True, + 'enabled': False }, 'gamma0': { '@module': 'easyCore.Objects.Base', @@ -301,15 +301,17 @@ class Instrument1DTOFParameters(BaseObj): '@version': '0.0.1', 'name': 'gamma0', 'value': 0.0, - 'fixed': True + 'fixed': True, + 'enabled': False }, 'gamma1': { '@module': 'easyCore.Objects.Base', '@class': 'Parameter', '@version': '0.0.1', 'name': 'gamma1', - 'value': 0.60400, - 'fixed': True + 'value': 0.0, + 'fixed': True, + 'enabled': False }, 'gamma2': { '@module': 'easyCore.Objects.Base', @@ -317,7 +319,8 @@ class Instrument1DTOFParameters(BaseObj): '@version': '0.0.1', 'name': 'gamma2', 'value': 0.0, - 'fixed': True + 'fixed': True, + 'enabled': False }, 'alpha0': { '@module': 'easyCore.Objects.Base', From b57469902f7dbb5ef964068a344c38bb2782c4c2 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Tue, 14 Sep 2021 13:29:26 +0200 Subject: [PATCH 172/312] Added CreateSample notebook, added structure show to existing notebooks. --- tests/CreateSample.ipynb | 1340 ++++++++++++++++++++++++++++++++++++++ tests/FittingData.ipynb | 56 +- tests/test4.py | 65 +- 3 files changed, 1424 insertions(+), 37 deletions(-) create mode 100644 tests/CreateSample.ipynb diff --git a/tests/CreateSample.ipynb b/tests/CreateSample.ipynb new file mode 100644 index 00000000..01010074 --- /dev/null +++ b/tests/CreateSample.ipynb @@ -0,0 +1,1340 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8a365a14", + "metadata": {}, + "source": [ + "# Creating sample" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "9ecc4733", + "metadata": {}, + "outputs": [], + "source": [ + "# Import all the packages\n", + "from easyCore import np\n", + "from easyDiffractionLib.sample import Sample\n", + "from easyDiffractionLib import Site, Phase, Phases\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", + "\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as Params\n", + "\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "283767f9", + "metadata": {}, + "source": [ + "**Preparing the sample and data**" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "1ed88f8e", + "metadata": {}, + "outputs": [], + "source": [ + "calculator = Calculator()\n", + "calculator.switch('CrysPy')" + ] + }, + { + "cell_type": "markdown", + "id": "19a39b25", + "metadata": {}, + "source": [ + "Create an atom" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "41020330", + "metadata": {}, + "outputs": [], + "source": [ + "atom = Site.from_pars(label=\"Cl1\",\n", + " specie='Cl',\n", + " fract_x=0.1250,\n", + " fract_y=0.1670,\n", + " fract_z=0.1070)\n", + "# atom.add_adp('Uiso', Uiso=0.0)" + ] + }, + { + "cell_type": "markdown", + "id": "910aed87", + "metadata": {}, + "source": [ + "Create a phase" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "1e2f3193", + "metadata": {}, + "outputs": [], + "source": [ + "phase = Phase(name=\"p1\")\n", + "\n", + "# set the space group\n", + "phase.spacegroup.space_group_HM_name = \"P 42/n c m\"\n", + "\n", + "# add the atom\n", + "phase.add_atom(atom)" + ] + }, + { + "cell_type": "markdown", + "id": "c1c4d23f", + "metadata": {}, + "source": [ + "Add another atom" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "d172cd6f", + "metadata": {}, + "outputs": [], + "source": [ + "phase.add_atom('Na1', 'Na', 0.5, 0.5, 0.5)" + ] + }, + { + "cell_type": "markdown", + "id": "e1cd20d9", + "metadata": {}, + "source": [ + "Visualise the structure" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "f4664de0", + "metadata": {}, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "text/html": [ + "
\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import py3Dmol\n", + "viewer2 = py3Dmol.view()\n", + "viewer2.addModel(phase.to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", + "viewer2.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", + "viewer2.addUnitCell()\n", + "viewer2.replicateUnitCell(2,1,2)\n", + "#viewer2.setStyle({'sym':2},{'sphere':{'scale':.5,'color':'blue'},'stick':{'color':'cyan'}})\n", + "viewer2.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "id": "ebe0e0ee", + "metadata": {}, + "source": [ + "Create Phases object" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "29071aa2", + "metadata": {}, + "outputs": [], + "source": [ + "phases = Phases()\n", + "phases.append(phase)" + ] + }, + { + "cell_type": "markdown", + "id": "e93c42b9", + "metadata": {}, + "source": [ + "Create and modify a Parameters object" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "83e3845f", + "metadata": {}, + "outputs": [], + "source": [ + "parameters = Params.default()\n", + "parameters.length_a = 8.56\n", + "parameters.length_c = 6.12\n", + "parameters.length_b = 8.56" + ] + }, + { + "cell_type": "markdown", + "id": "42da041a", + "metadata": {}, + "source": [ + "Finally, create a Sample" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "c90662f7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: C:\\Users\\PIOTRR~1\\AppData\\Local\\Temp\\easydiffraction_temp.cif\n", + "Several values of it_coordinate_system_code have been defined:\n", + "2, 1\n", + "The default value has been choosen:'2'.\n", + "Several values of it_coordinate_system_code have been defined:\n", + "2, 1\n", + "The default value has been choosen:'2'.\n" + ] + } + ], + "source": [ + "S = Sample(phases=phases, parameters=parameters, calculator=calculator)" + ] + }, + { + "cell_type": "markdown", + "id": "00e24eab", + "metadata": {}, + "source": [ + "Calculate the profile" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "398bbb91", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", + " if (this.ResizeObserver === undefined) {\n", + " if (window.ResizeObserver !== undefined) {\n", + " this.ResizeObserver = window.ResizeObserver;\n", + " } else {\n", + " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", + " this.ResizeObserver = obs.ResizeObserver;\n", + " }\n", + " }\n", + "\n", + " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " this.resizeObserverInstance.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'dblclick',\n", + " on_mouse_event_closure('dblclick')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " var img = evt.data;\n", + " if (img.type !== 'image/png') {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " img.type = 'image/png';\n", + " }\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " img\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.key === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.key;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.key !== 'Control') {\n", + " value += 'ctrl+';\n", + " }\n", + " else if (event.altKey && event.key !== 'Alt') {\n", + " value += 'alt+';\n", + " }\n", + " else if (event.shiftKey && event.key !== 'Shift') {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k' + event.key;\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "\n", + "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", + "// prettier-ignore\n", + "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.binaryType = comm.kernel.ws.binaryType;\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " function updateReadyState(_event) {\n", + " if (comm.kernel.ws) {\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " } else {\n", + " ws.readyState = 3; // Closed state.\n", + " }\n", + " }\n", + " comm.kernel.ws.addEventListener('open', updateReadyState);\n", + " comm.kernel.ws.addEventListener('close', updateReadyState);\n", + " comm.kernel.ws.addEventListener('error', updateReadyState);\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " var data = msg['content']['data'];\n", + " if (data['blob'] !== undefined) {\n", + " data = {\n", + " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", + " };\n", + " }\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(data);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.on(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " if (event.target !== this) {\n", + " // Ignore bubbled events from children.\n", + " return;\n", + " }\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_data = np.linspace(1, 120, 500)\n", + "y_data = calculator.fit_func(x_data)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(x_data, y_data, label='Simulation')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "cee54608", + "metadata": {}, + "source": [ + "## Switch to TOF" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "59381e83", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tests/FittingData.ipynb b/tests/FittingData.ipynb index d83de8bf..91163470 100644 --- a/tests/FittingData.ipynb +++ b/tests/FittingData.ipynb @@ -16,18 +16,9 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GSAS-II binary directory: c:\\anaconda3\\envs\\easy\\lib\\site-packages\\GSASII\\bindist\n", - "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Import all the packages\n", "from easyCore import np\n", @@ -59,23 +50,40 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Temp CIF: C:\\Users\\piotr\\AppData\\Local\\Temp\\easydiffraction_temp.cif\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "calculator = Calculator()\n", "phase = Phases.from_cif_file('PbSO4.cif')\n", "sample = Sample(phases=phase, parameters=Instrument1DCWParameters.default(), calculator=calculator)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Visualise the structure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import py3Dmol\n", + "viewer = py3Dmol.view()\n", + "#viewer.setBackgroundColor(0x11200f)\n", + "# viewer.addModel(phase[0].to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", + "viewer.addModel(phase[0].to_cif_str(),'cif')\n", + "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", + "# viewer.addPropertyLabels(\"index\")\n", + "viewer.addUnitCell()\n", + "viewer.replicateUnitCell(2,2,1)\n", + "viewer.zoomTo()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -393,7 +401,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.10" + "version": "3.7.9" } }, "nbformat": 4, diff --git a/tests/test4.py b/tests/test4.py index 9b043af6..d3142e60 100644 --- a/tests/test4.py +++ b/tests/test4.py @@ -2,31 +2,70 @@ from easyDiffractionLib.sample import Sample from easyDiffractionLib import Site, Phases, Phase -from easyDiffractionLib.interface import InterfaceFactory -from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters +from easyDiffractionLib.interface import InterfaceFactory as Calculator +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams +from easyDiffractionLib.Profiles.P1D import Instrument1DTOFParameters as TOFParams +from easyDiffractionLib.Profiles.P1D import Powder1DParameters import matplotlib.pyplot as plt -i = InterfaceFactory() +calculator = Calculator() +calculator.switch('CrysPy') -atom = Site.from_pars(label="my_little_pony", - specie='O', - fract_x=0.05, - fract_y=0.05, - fract_z=0.05) +atom = Site.from_pars(label="Cl1", + specie='Cl', + fract_x=0.1250, + fract_y=0.1670, + fract_z=0.1070) atom.add_adp('Uiso', Uiso=0.0) + phase = Phase(name="p1") +phase.spacegroup.space_group_HM_name = "P 42/n c m" phase.add_atom(atom) phases = Phases() phases.append(phase) +parameters = CWParams.default() +parameters.length_a = 8.56 +parameters.length_c = 6.12 +parameters.length_b = 8.56 + +parameters.resolution_u = 0.1447 +parameters.resolution_v = -0.4252 +parameters.resolution_w = 0.3864 +parameters.resolution_x = 0.0 +parameters.resolution_y = 0.0 + +pattern = Powder1DParameters.default() +pattern.zero_shift = 0.0 +pattern.scale = 100.0 + +S = Sample(phases=phases, parameters=parameters, pattern=pattern, calculator=calculator) + +x_data = np.linspace(1, 120, 500) +y_data = calculator.fit_func(x_data) + +plt.plot(x_data, y_data, label="CW") +plt.show() + +parameters = TOFParams.default() +parameters.length_a = 8.56 +parameters.length_c = 6.12 +parameters.length_b = 8.56 +parameters.dtt1 = 6167.24700 +parameters.dtt2 = -2.28000 +parameters.ttheta_bank = 145.00 + +tof_str = 'Npowder1DTOF' +interfaces = calculator.interface_compatability(tof_str) +calculator.switch(interfaces[0]) -S = Sample(phases=phases, parameters=Instrument1DCWParameters.default(), interface=i) +S = Sample(phases=phases, parameters=parameters, pattern=pattern, calculator=calculator) -x_data = np.linspace(5, 150, 100) -y_data = i.fit_func(x_data) +x_data = np.linspace(20, 120, 50) +y_data = calculator.fit_func(x_data) -plt.plot(x_data, y_data, label="CFL") -plt.show() \ No newline at end of file +plt.plot(x_data, y_data, label="TOF") +plt.show() From daf59252ffbd067441e76b3ab6d303ecd1f7aaee Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 15 Sep 2021 10:03:16 +0200 Subject: [PATCH 173/312] Cleaned up outputs --- tests/CreateSample.ipynb | 1114 +------------------------------------- 1 file changed, 17 insertions(+), 1097 deletions(-) diff --git a/tests/CreateSample.ipynb b/tests/CreateSample.ipynb index 01010074..d6d6158f 100644 --- a/tests/CreateSample.ipynb +++ b/tests/CreateSample.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "id": "9ecc4733", "metadata": {}, "outputs": [], @@ -39,7 +39,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "id": "1ed88f8e", "metadata": {}, "outputs": [], @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "id": "41020330", "metadata": {}, "outputs": [], @@ -81,7 +81,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "id": "1e2f3193", "metadata": {}, "outputs": [], @@ -97,7 +97,7 @@ }, { "cell_type": "markdown", - "id": "c1c4d23f", + "id": "d4532d8b", "metadata": {}, "source": [ "Add another atom" @@ -105,8 +105,8 @@ }, { "cell_type": "code", - "execution_count": 40, - "id": "d172cd6f", + "execution_count": null, + "id": "4231d16a", "metadata": {}, "outputs": [], "source": [ @@ -115,7 +115,7 @@ }, { "cell_type": "markdown", - "id": "e1cd20d9", + "id": "81ace320", "metadata": {}, "source": [ "Visualise the structure" @@ -123,70 +123,10 @@ }, { "cell_type": "code", - "execution_count": 44, - "id": "f4664de0", + "execution_count": null, + "id": "e68ddbea", "metadata": {}, - "outputs": [ - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "import py3Dmol\n", "viewer2 = py3Dmol.view()\n", @@ -208,7 +148,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": null, "id": "29071aa2", "metadata": {}, "outputs": [], @@ -227,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "id": "83e3845f", "metadata": {}, "outputs": [], @@ -248,24 +188,10 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "id": "c90662f7", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Temp CIF: C:\\Users\\PIOTRR~1\\AppData\\Local\\Temp\\easydiffraction_temp.cif\n", - "Several values of it_coordinate_system_code have been defined:\n", - "2, 1\n", - "The default value has been choosen:'2'.\n", - "Several values of it_coordinate_system_code have been defined:\n", - "2, 1\n", - "The default value has been choosen:'2'.\n" - ] - } - ], + "outputs": [], "source": [ "S = Sample(phases=phases, parameters=parameters, calculator=calculator)" ] @@ -280,1016 +206,10 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "id": "398bbb91", "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "/* global mpl */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function () {\n", - " if (typeof WebSocket !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof MozWebSocket !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert(\n", - " 'Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.'\n", - " );\n", - " }\n", - "};\n", - "\n", - "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = this.ws.binaryType !== undefined;\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById('mpl-warnings');\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent =\n", - " 'This browser does not support binary websocket messages. ' +\n", - " 'Performance may be slow.';\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = document.createElement('div');\n", - " this.root.setAttribute('style', 'display: inline-block');\n", - " this._root_extra_style(this.root);\n", - "\n", - " parent_element.appendChild(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message('supports_binary', { value: fig.supports_binary });\n", - " fig.send_message('send_image_mode', {});\n", - " if (fig.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", - " }\n", - " fig.send_message('refresh', {});\n", - " };\n", - "\n", - " this.imageObj.onload = function () {\n", - " if (fig.image_mode === 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function () {\n", - " fig.ws.close();\n", - " };\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "};\n", - "\n", - "mpl.figure.prototype._init_header = function () {\n", - " var titlebar = document.createElement('div');\n", - " titlebar.classList =\n", - " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", - " var titletext = document.createElement('div');\n", - " titletext.classList = 'ui-dialog-title';\n", - " titletext.setAttribute(\n", - " 'style',\n", - " 'width: 100%; text-align: center; padding: 3px;'\n", - " );\n", - " titlebar.appendChild(titletext);\n", - " this.root.appendChild(titlebar);\n", - " this.header = titletext;\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._init_canvas = function () {\n", - " var fig = this;\n", - "\n", - " var canvas_div = (this.canvas_div = document.createElement('div'));\n", - " canvas_div.setAttribute(\n", - " 'style',\n", - " 'border: 1px solid #ddd;' +\n", - " 'box-sizing: content-box;' +\n", - " 'clear: both;' +\n", - " 'min-height: 1px;' +\n", - " 'min-width: 1px;' +\n", - " 'outline: 0;' +\n", - " 'overflow: hidden;' +\n", - " 'position: relative;' +\n", - " 'resize: both;'\n", - " );\n", - "\n", - " function on_keyboard_event_closure(name) {\n", - " return function (event) {\n", - " return fig.key_event(event, name);\n", - " };\n", - " }\n", - "\n", - " canvas_div.addEventListener(\n", - " 'keydown',\n", - " on_keyboard_event_closure('key_press')\n", - " );\n", - " canvas_div.addEventListener(\n", - " 'keyup',\n", - " on_keyboard_event_closure('key_release')\n", - " );\n", - "\n", - " this._canvas_extra_style(canvas_div);\n", - " this.root.appendChild(canvas_div);\n", - "\n", - " var canvas = (this.canvas = document.createElement('canvas'));\n", - " canvas.classList.add('mpl-canvas');\n", - " canvas.setAttribute('style', 'box-sizing: content-box;');\n", - "\n", - " this.context = canvas.getContext('2d');\n", - "\n", - " var backingStore =\n", - " this.context.backingStorePixelRatio ||\n", - " this.context.webkitBackingStorePixelRatio ||\n", - " this.context.mozBackingStorePixelRatio ||\n", - " this.context.msBackingStorePixelRatio ||\n", - " this.context.oBackingStorePixelRatio ||\n", - " this.context.backingStorePixelRatio ||\n", - " 1;\n", - "\n", - " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", - " 'canvas'\n", - " ));\n", - " rubberband_canvas.setAttribute(\n", - " 'style',\n", - " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", - " );\n", - "\n", - " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", - " if (this.ResizeObserver === undefined) {\n", - " if (window.ResizeObserver !== undefined) {\n", - " this.ResizeObserver = window.ResizeObserver;\n", - " } else {\n", - " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", - " this.ResizeObserver = obs.ResizeObserver;\n", - " }\n", - " }\n", - "\n", - " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", - " var nentries = entries.length;\n", - " for (var i = 0; i < nentries; i++) {\n", - " var entry = entries[i];\n", - " var width, height;\n", - " if (entry.contentBoxSize) {\n", - " if (entry.contentBoxSize instanceof Array) {\n", - " // Chrome 84 implements new version of spec.\n", - " width = entry.contentBoxSize[0].inlineSize;\n", - " height = entry.contentBoxSize[0].blockSize;\n", - " } else {\n", - " // Firefox implements old version of spec.\n", - " width = entry.contentBoxSize.inlineSize;\n", - " height = entry.contentBoxSize.blockSize;\n", - " }\n", - " } else {\n", - " // Chrome <84 implements even older version of spec.\n", - " width = entry.contentRect.width;\n", - " height = entry.contentRect.height;\n", - " }\n", - "\n", - " // Keep the size of the canvas and rubber band canvas in sync with\n", - " // the canvas container.\n", - " if (entry.devicePixelContentBoxSize) {\n", - " // Chrome 84 implements new version of spec.\n", - " canvas.setAttribute(\n", - " 'width',\n", - " entry.devicePixelContentBoxSize[0].inlineSize\n", - " );\n", - " canvas.setAttribute(\n", - " 'height',\n", - " entry.devicePixelContentBoxSize[0].blockSize\n", - " );\n", - " } else {\n", - " canvas.setAttribute('width', width * fig.ratio);\n", - " canvas.setAttribute('height', height * fig.ratio);\n", - " }\n", - " canvas.setAttribute(\n", - " 'style',\n", - " 'width: ' + width + 'px; height: ' + height + 'px;'\n", - " );\n", - "\n", - " rubberband_canvas.setAttribute('width', width);\n", - " rubberband_canvas.setAttribute('height', height);\n", - "\n", - " // And update the size in Python. We ignore the initial 0/0 size\n", - " // that occurs as the element is placed into the DOM, which should\n", - " // otherwise not happen due to the minimum size styling.\n", - " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", - " fig.request_resize(width, height);\n", - " }\n", - " }\n", - " });\n", - " this.resizeObserverInstance.observe(canvas_div);\n", - "\n", - " function on_mouse_event_closure(name) {\n", - " return function (event) {\n", - " return fig.mouse_event(event, name);\n", - " };\n", - " }\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mousedown',\n", - " on_mouse_event_closure('button_press')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseup',\n", - " on_mouse_event_closure('button_release')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'dblclick',\n", - " on_mouse_event_closure('dblclick')\n", - " );\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband_canvas.addEventListener(\n", - " 'mousemove',\n", - " on_mouse_event_closure('motion_notify')\n", - " );\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseenter',\n", - " on_mouse_event_closure('figure_enter')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseleave',\n", - " on_mouse_event_closure('figure_leave')\n", - " );\n", - "\n", - " canvas_div.addEventListener('wheel', function (event) {\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " on_mouse_event_closure('scroll')(event);\n", - " });\n", - "\n", - " canvas_div.appendChild(canvas);\n", - " canvas_div.appendChild(rubberband_canvas);\n", - "\n", - " this.rubberband_context = rubberband_canvas.getContext('2d');\n", - " this.rubberband_context.strokeStyle = '#000000';\n", - "\n", - " this._resize_canvas = function (width, height, forward) {\n", - " if (forward) {\n", - " canvas_div.style.width = width + 'px';\n", - " canvas_div.style.height = height + 'px';\n", - " }\n", - " };\n", - "\n", - " // Disable right mouse context menu.\n", - " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", - " event.preventDefault();\n", - " return false;\n", - " });\n", - "\n", - " function set_focus() {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'mpl-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " continue;\n", - " }\n", - "\n", - " var button = (fig.buttons[name] = document.createElement('button'));\n", - " button.classList = 'mpl-widget';\n", - " button.setAttribute('role', 'button');\n", - " button.setAttribute('aria-disabled', 'false');\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - "\n", - " var icon_img = document.createElement('img');\n", - " icon_img.src = '_images/' + image + '.png';\n", - " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", - " icon_img.alt = tooltip;\n", - " button.appendChild(icon_img);\n", - "\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " var fmt_picker = document.createElement('select');\n", - " fmt_picker.classList = 'mpl-widget';\n", - " toolbar.appendChild(fmt_picker);\n", - " this.format_dropdown = fmt_picker;\n", - "\n", - " for (var ind in mpl.extensions) {\n", - " var fmt = mpl.extensions[ind];\n", - " var option = document.createElement('option');\n", - " option.selected = fmt === mpl.default_extension;\n", - " option.innerHTML = fmt;\n", - " fmt_picker.appendChild(option);\n", - " }\n", - "\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "};\n", - "\n", - "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", - " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", - " // which will in turn request a refresh of the image.\n", - " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", - "};\n", - "\n", - "mpl.figure.prototype.send_message = function (type, properties) {\n", - " properties['type'] = type;\n", - " properties['figure_id'] = this.id;\n", - " this.ws.send(JSON.stringify(properties));\n", - "};\n", - "\n", - "mpl.figure.prototype.send_draw_message = function () {\n", - " if (!this.waiting) {\n", - " this.waiting = true;\n", - " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " var format_dropdown = fig.format_dropdown;\n", - " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", - " fig.ondownload(fig, format);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", - " var size = msg['size'];\n", - " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", - " fig._resize_canvas(size[0], size[1], msg['forward']);\n", - " fig.send_message('refresh', {});\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", - " var x0 = msg['x0'] / fig.ratio;\n", - " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", - " var x1 = msg['x1'] / fig.ratio;\n", - " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", - " x0 = Math.floor(x0) + 0.5;\n", - " y0 = Math.floor(y0) + 0.5;\n", - " x1 = Math.floor(x1) + 0.5;\n", - " y1 = Math.floor(y1) + 0.5;\n", - " var min_x = Math.min(x0, x1);\n", - " var min_y = Math.min(y0, y1);\n", - " var width = Math.abs(x1 - x0);\n", - " var height = Math.abs(y1 - y0);\n", - "\n", - " fig.rubberband_context.clearRect(\n", - " 0,\n", - " 0,\n", - " fig.canvas.width / fig.ratio,\n", - " fig.canvas.height / fig.ratio\n", - " );\n", - "\n", - " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", - " // Updates the figure title.\n", - " fig.header.textContent = msg['label'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", - " var cursor = msg['cursor'];\n", - " switch (cursor) {\n", - " case 0:\n", - " cursor = 'pointer';\n", - " break;\n", - " case 1:\n", - " cursor = 'default';\n", - " break;\n", - " case 2:\n", - " cursor = 'crosshair';\n", - " break;\n", - " case 3:\n", - " cursor = 'move';\n", - " break;\n", - " }\n", - " fig.rubberband_canvas.style.cursor = cursor;\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_message = function (fig, msg) {\n", - " fig.message.textContent = msg['message'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", - " // Request the server to send over a new figure.\n", - " fig.send_draw_message();\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", - " fig.image_mode = msg['mode'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", - " for (var key in msg) {\n", - " if (!(key in fig.buttons)) {\n", - " continue;\n", - " }\n", - " fig.buttons[key].disabled = !msg[key];\n", - " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", - " if (msg['mode'] === 'PAN') {\n", - " fig.buttons['Pan'].classList.add('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " } else if (msg['mode'] === 'ZOOM') {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.add('active');\n", - " } else {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Called whenever the canvas gets updated.\n", - " this.send_message('ack', {});\n", - "};\n", - "\n", - "// A function to construct a web socket function for onmessage handling.\n", - "// Called in the figure constructor.\n", - "mpl.figure.prototype._make_on_message_function = function (fig) {\n", - " return function socket_on_message(evt) {\n", - " if (evt.data instanceof Blob) {\n", - " var img = evt.data;\n", - " if (img.type !== 'image/png') {\n", - " /* FIXME: We get \"Resource interpreted as Image but\n", - " * transferred with MIME type text/plain:\" errors on\n", - " * Chrome. But how to set the MIME type? It doesn't seem\n", - " * to be part of the websocket stream */\n", - " img.type = 'image/png';\n", - " }\n", - "\n", - " /* Free the memory for the previous frames */\n", - " if (fig.imageObj.src) {\n", - " (window.URL || window.webkitURL).revokeObjectURL(\n", - " fig.imageObj.src\n", - " );\n", - " }\n", - "\n", - " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", - " img\n", - " );\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " } else if (\n", - " typeof evt.data === 'string' &&\n", - " evt.data.slice(0, 21) === 'data:image/png;base64'\n", - " ) {\n", - " fig.imageObj.src = evt.data;\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - "\n", - " var msg = JSON.parse(evt.data);\n", - " var msg_type = msg['type'];\n", - "\n", - " // Call the \"handle_{type}\" callback, which takes\n", - " // the figure and JSON message as its only arguments.\n", - " try {\n", - " var callback = fig['handle_' + msg_type];\n", - " } catch (e) {\n", - " console.log(\n", - " \"No handler for the '\" + msg_type + \"' message type: \",\n", - " msg\n", - " );\n", - " return;\n", - " }\n", - "\n", - " if (callback) {\n", - " try {\n", - " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", - " callback(fig, msg);\n", - " } catch (e) {\n", - " console.log(\n", - " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", - " e,\n", - " e.stack,\n", - " msg\n", - " );\n", - " }\n", - " }\n", - " };\n", - "};\n", - "\n", - "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", - "mpl.findpos = function (e) {\n", - " //this section is from http://www.quirksmode.org/js/events_properties.html\n", - " var targ;\n", - " if (!e) {\n", - " e = window.event;\n", - " }\n", - " if (e.target) {\n", - " targ = e.target;\n", - " } else if (e.srcElement) {\n", - " targ = e.srcElement;\n", - " }\n", - " if (targ.nodeType === 3) {\n", - " // defeat Safari bug\n", - " targ = targ.parentNode;\n", - " }\n", - "\n", - " // pageX,Y are the mouse positions relative to the document\n", - " var boundingRect = targ.getBoundingClientRect();\n", - " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", - " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", - "\n", - " return { x: x, y: y };\n", - "};\n", - "\n", - "/*\n", - " * return a copy of an object with only non-object keys\n", - " * we need this to avoid circular references\n", - " * http://stackoverflow.com/a/24161582/3208463\n", - " */\n", - "function simpleKeys(original) {\n", - " return Object.keys(original).reduce(function (obj, key) {\n", - " if (typeof original[key] !== 'object') {\n", - " obj[key] = original[key];\n", - " }\n", - " return obj;\n", - " }, {});\n", - "}\n", - "\n", - "mpl.figure.prototype.mouse_event = function (event, name) {\n", - " var canvas_pos = mpl.findpos(event);\n", - "\n", - " if (name === 'button_press') {\n", - " this.canvas.focus();\n", - " this.canvas_div.focus();\n", - " }\n", - "\n", - " var x = canvas_pos.x * this.ratio;\n", - " var y = canvas_pos.y * this.ratio;\n", - "\n", - " this.send_message(name, {\n", - " x: x,\n", - " y: y,\n", - " button: event.button,\n", - " step: event.step,\n", - " guiEvent: simpleKeys(event),\n", - " });\n", - "\n", - " /* This prevents the web browser from automatically changing to\n", - " * the text insertion cursor when the button is pressed. We want\n", - " * to control all of the cursor setting manually through the\n", - " * 'cursor' event from matplotlib */\n", - " event.preventDefault();\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", - " // Handle any extra behaviour associated with a key event\n", - "};\n", - "\n", - "mpl.figure.prototype.key_event = function (event, name) {\n", - " // Prevent repeat events\n", - " if (name === 'key_press') {\n", - " if (event.key === this._key) {\n", - " return;\n", - " } else {\n", - " this._key = event.key;\n", - " }\n", - " }\n", - " if (name === 'key_release') {\n", - " this._key = null;\n", - " }\n", - "\n", - " var value = '';\n", - " if (event.ctrlKey && event.key !== 'Control') {\n", - " value += 'ctrl+';\n", - " }\n", - " else if (event.altKey && event.key !== 'Alt') {\n", - " value += 'alt+';\n", - " }\n", - " else if (event.shiftKey && event.key !== 'Shift') {\n", - " value += 'shift+';\n", - " }\n", - "\n", - " value += 'k' + event.key;\n", - "\n", - " this._key_event_extra(event, name);\n", - "\n", - " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", - " if (name === 'download') {\n", - " this.handle_save(this, null);\n", - " } else {\n", - " this.send_message('toolbar_button', { name: name });\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", - " this.message.textContent = tooltip;\n", - "};\n", - "\n", - "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", - "// prettier-ignore\n", - "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", - "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", - "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", - "\n", - "mpl.default_extension = \"png\";/* global mpl */\n", - "\n", - "var comm_websocket_adapter = function (comm) {\n", - " // Create a \"websocket\"-like object which calls the given IPython comm\n", - " // object with the appropriate methods. Currently this is a non binary\n", - " // socket, so there is still some room for performance tuning.\n", - " var ws = {};\n", - "\n", - " ws.binaryType = comm.kernel.ws.binaryType;\n", - " ws.readyState = comm.kernel.ws.readyState;\n", - " function updateReadyState(_event) {\n", - " if (comm.kernel.ws) {\n", - " ws.readyState = comm.kernel.ws.readyState;\n", - " } else {\n", - " ws.readyState = 3; // Closed state.\n", - " }\n", - " }\n", - " comm.kernel.ws.addEventListener('open', updateReadyState);\n", - " comm.kernel.ws.addEventListener('close', updateReadyState);\n", - " comm.kernel.ws.addEventListener('error', updateReadyState);\n", - "\n", - " ws.close = function () {\n", - " comm.close();\n", - " };\n", - " ws.send = function (m) {\n", - " //console.log('sending', m);\n", - " comm.send(m);\n", - " };\n", - " // Register the callback with on_msg.\n", - " comm.on_msg(function (msg) {\n", - " //console.log('receiving', msg['content']['data'], msg);\n", - " var data = msg['content']['data'];\n", - " if (data['blob'] !== undefined) {\n", - " data = {\n", - " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", - " };\n", - " }\n", - " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", - " ws.onmessage(data);\n", - " });\n", - " return ws;\n", - "};\n", - "\n", - "mpl.mpl_figure_comm = function (comm, msg) {\n", - " // This is the function which gets called when the mpl process\n", - " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", - "\n", - " var id = msg.content.data.id;\n", - " // Get hold of the div created by the display call when the Comm\n", - " // socket was opened in Python.\n", - " var element = document.getElementById(id);\n", - " var ws_proxy = comm_websocket_adapter(comm);\n", - "\n", - " function ondownload(figure, _format) {\n", - " window.open(figure.canvas.toDataURL());\n", - " }\n", - "\n", - " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", - "\n", - " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", - " // web socket which is closed, not our websocket->open comm proxy.\n", - " ws_proxy.onopen();\n", - "\n", - " fig.parent_element = element;\n", - " fig.cell_info = mpl.find_output_cell(\"
\");\n", - " if (!fig.cell_info) {\n", - " console.error('Failed to find cell for figure', id, fig);\n", - " return;\n", - " }\n", - " fig.cell_info[0].output_area.element.on(\n", - " 'cleared',\n", - " { fig: fig },\n", - " fig._remove_fig_handler\n", - " );\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_close = function (fig, msg) {\n", - " var width = fig.canvas.width / fig.ratio;\n", - " fig.cell_info[0].output_area.element.off(\n", - " 'cleared',\n", - " fig._remove_fig_handler\n", - " );\n", - " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", - "\n", - " // Update the output cell to use the data from the current canvas.\n", - " fig.push_to_output();\n", - " var dataURL = fig.canvas.toDataURL();\n", - " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", - " // the notebook keyboard shortcuts fail.\n", - " IPython.keyboard_manager.enable();\n", - " fig.parent_element.innerHTML =\n", - " '';\n", - " fig.close_ws(fig, msg);\n", - "};\n", - "\n", - "mpl.figure.prototype.close_ws = function (fig, msg) {\n", - " fig.send_message('closing', msg);\n", - " // fig.ws.close()\n", - "};\n", - "\n", - "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", - " // Turn the data on the canvas into data in the output cell.\n", - " var width = this.canvas.width / this.ratio;\n", - " var dataURL = this.canvas.toDataURL();\n", - " this.cell_info[1]['text/html'] =\n", - " '';\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Tell IPython that the notebook contents must change.\n", - " IPython.notebook.set_dirty(true);\n", - " this.send_message('ack', {});\n", - " var fig = this;\n", - " // Wait a second, then push the new image to the DOM so\n", - " // that it is saved nicely (might be nice to debounce this).\n", - " setTimeout(function () {\n", - " fig.push_to_output();\n", - " }, 1000);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'btn-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " var button;\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " continue;\n", - " }\n", - "\n", - " button = fig.buttons[name] = document.createElement('button');\n", - " button.classList = 'btn btn-default';\n", - " button.href = '#';\n", - " button.title = name;\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message pull-right';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = document.createElement('div');\n", - " buttongrp.classList = 'btn-group inline pull-right';\n", - " button = document.createElement('button');\n", - " button.classList = 'btn btn-mini btn-primary';\n", - " button.href = '#';\n", - " button.title = 'Stop Interaction';\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', function (_evt) {\n", - " fig.handle_close(fig, {});\n", - " });\n", - " button.addEventListener(\n", - " 'mouseover',\n", - " on_mouseover_closure('Stop Interaction')\n", - " );\n", - " buttongrp.appendChild(button);\n", - " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", - " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", - "};\n", - "\n", - "mpl.figure.prototype._remove_fig_handler = function (event) {\n", - " var fig = event.data.fig;\n", - " if (event.target !== this) {\n", - " // Ignore bubbled events from children.\n", - " return;\n", - " }\n", - " fig.close_ws(fig, {});\n", - "};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (el) {\n", - " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (el) {\n", - " // this is important to make the div 'focusable\n", - " el.setAttribute('tabindex', 0);\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " } else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager) {\n", - " manager = IPython.keyboard_manager;\n", - " }\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which === 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " fig.ondownload(fig, null);\n", - "};\n", - "\n", - "mpl.find_output_cell = function (html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i = 0; i < ncells; i++) {\n", - " var cell = cells[i];\n", - " if (cell.cell_type === 'code') {\n", - " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", - " var data = cell.output_area.outputs[j];\n", - " if (data.data) {\n", - " // IPython >= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] === html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "};\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel !== null) {\n", - " IPython.notebook.kernel.comm_manager.register_target(\n", - " 'matplotlib',\n", - " mpl.mpl_figure_comm\n", - " );\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "x_data = np.linspace(1, 120, 500)\n", "y_data = calculator.fit_func(x_data)\n", From 19b97b866781e3564c87ff4b9e03150b99804a35 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 16 Sep 2021 10:03:17 +0200 Subject: [PATCH 174/312] Temporary workaround to get ADP value --- easyDiffractionLib/Interfaces/CFML.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 6c47a403..17827689 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -155,6 +155,8 @@ def __createModel(self, model): def get_value(self, key, item_key): item = borg.map.get_item_by_key(key) + if item_key in ['Uiso', 'Uani', 'Biso', 'Bani']: + return getattr(getattr(item, 'adp'), item_key).raw_value return getattr(item, item_key).raw_value @staticmethod From 084ceca5dd02547d9bea9c9f0cc5ba56fa3e620c Mon Sep 17 00:00:00 2001 From: Piotr R Date: Thu, 16 Sep 2021 14:27:15 +0200 Subject: [PATCH 175/312] easyCore dependence temporarily changed --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2d5645d5..5e06837f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ matplotlib = "^3.4" # easyScience CFML = '^0.0.1' GSASII = '^0.0.1' -easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } +easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'param_value_workaround' } [tool.poetry.dev-dependencies] pytest = "^5.2" From 8838fb5f4d17ce2915e48905cba6f83846ce1a59 Mon Sep 17 00:00:00 2001 From: Piotr R Date: Sun, 19 Sep 2021 23:23:19 +0200 Subject: [PATCH 176/312] Minor changes to the notebooks. Updated toml and fixed CFML interface --- easyDiffractionLib/Interfaces/CFML.py | 2 + pyproject.toml | 2 +- tests/CreateSample.ipynb | 70 ++- tests/FittingData.ipynb | 11 +- tests/FittingData_CFML-xarrays.ipynb | 621 +------------------------- tests/test1.py | 32 +- tests/test4.py | 17 +- 7 files changed, 111 insertions(+), 644 deletions(-) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index f0baf709..a138e4e2 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -155,6 +155,8 @@ def __createModel(self, model): def get_value(self, key, item_key): item = borg.map.get_item_by_key(key) + if item_key in ['Uiso', 'Uani', 'Biso', 'Bani']: + return getattr(getattr(item, 'adp'), item_key).raw_value return getattr(item, item_key).raw_value @staticmethod diff --git a/pyproject.toml b/pyproject.toml index 2d5645d5..5e06837f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ matplotlib = "^3.4" # easyScience CFML = '^0.0.1' GSASII = '^0.0.1' -easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } +easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'param_value_workaround' } [tool.poetry.dev-dependencies] pytest = "^5.2" diff --git a/tests/CreateSample.ipynb b/tests/CreateSample.ipynb index d6d6158f..66f1b8e3 100644 --- a/tests/CreateSample.ipynb +++ b/tests/CreateSample.ipynb @@ -15,14 +15,14 @@ "metadata": {}, "outputs": [], "source": [ - "# Import all the packages\n", "from easyCore import np\n", "from easyDiffractionLib.sample import Sample\n", "from easyDiffractionLib import Site, Phase, Phases\n", "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", "\n", "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", - "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as Params\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DTOFParameters as TOFParams\n", "\n", "from easyCore.Fitting.Fitting import Fitter\n", "\n", @@ -45,7 +45,7 @@ "outputs": [], "source": [ "calculator = Calculator()\n", - "calculator.switch('CrysPy')" + "calculator.switch('CrysPy') # this is the default" ] }, { @@ -65,10 +65,9 @@ "source": [ "atom = Site.from_pars(label=\"Cl1\",\n", " specie='Cl',\n", - " fract_x=0.1250,\n", - " fract_y=0.1670,\n", - " fract_z=0.1070)\n", - "# atom.add_adp('Uiso', Uiso=0.0)" + " fract_x=0.0,\n", + " fract_y=0.0,\n", + " fract_z=0.0)" ] }, { @@ -86,10 +85,10 @@ "metadata": {}, "outputs": [], "source": [ - "phase = Phase(name=\"p1\")\n", + "phase = Phase(name=\"salt\")\n", "\n", "# set the space group\n", - "phase.spacegroup.space_group_HM_name = \"P 42/n c m\"\n", + "phase.spacegroup.space_group_HM_name = \"F m -3 m\"\n", "\n", "# add the atom\n", "phase.add_atom(atom)" @@ -133,7 +132,7 @@ "viewer2.addModel(phase.to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", "viewer2.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", "viewer2.addUnitCell()\n", - "viewer2.replicateUnitCell(2,1,2)\n", + "viewer2.replicateUnitCell(2,2,2)\n", "#viewer2.setStyle({'sym':2},{'sphere':{'scale':.5,'color':'blue'},'stick':{'color':'cyan'}})\n", "viewer2.zoomTo()" ] @@ -172,10 +171,11 @@ "metadata": {}, "outputs": [], "source": [ - "parameters = Params.default()\n", - "parameters.length_a = 8.56\n", - "parameters.length_c = 6.12\n", - "parameters.length_b = 8.56" + "parameters = CWParams.default()\n", + "#parameters.length_a = 8.56\n", + "#parameters.length_c = 6.12\n", + "#parameters.length_b = 8.56\n", + "parameters.length_a = 5.6402" ] }, { @@ -215,7 +215,8 @@ "y_data = calculator.fit_func(x_data)\n", "\n", "%matplotlib notebook\n", - "plt.plot(x_data, y_data, label='Simulation')\n", + "\n", + "plt.plot(x_data, y_data, label='CW Simulation')\n", "plt.legend()" ] }, @@ -233,6 +234,43 @@ "id": "59381e83", "metadata": {}, "outputs": [], + "source": [ + "parameters = TOFParams.default()\n", + "parameters.length_a = 5.6402\n", + "parameters.dtt1 = 6167.24700\n", + "parameters.dtt2 = -2.28000\n", + "parameters.ttheta_bank = 145.00\n", + "\n", + "tof_str = 'Npowder1DTOF'\n", + "interfaces = calculator.interface_compatability(tof_str)\n", + "print(interfaces[0])\n", + "calculator.switch(interfaces[0])\n", + "\n", + "S = Sample(phases=phases, parameters=parameters, calculator=calculator)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eac224b9", + "metadata": {}, + "outputs": [], + "source": [ + "x_data = np.linspace(1, 120, 5)\n", + "y_data = calculator.fit_func(x_data)\n", + "\n", + "%matplotlib notebook\n", + "\n", + "plt.plot(x_data, y_data, label='TOF Simulation')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3647d5ab", + "metadata": {}, + "outputs": [], "source": [] } ], @@ -252,7 +290,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.9" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/tests/FittingData.ipynb b/tests/FittingData.ipynb index 91163470..203a022a 100644 --- a/tests/FittingData.ipynb +++ b/tests/FittingData.ipynb @@ -74,11 +74,8 @@ "source": [ "import py3Dmol\n", "viewer = py3Dmol.view()\n", - "#viewer.setBackgroundColor(0x11200f)\n", - "# viewer.addModel(phase[0].to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", "viewer.addModel(phase[0].to_cif_str(),'cif')\n", "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", - "# viewer.addPropertyLabels(\"index\")\n", "viewer.addUnitCell()\n", "viewer.replicateUnitCell(2,2,1)\n", "viewer.zoomTo()" @@ -333,7 +330,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Rerun fitting** (takes a while!)" + "**Rerun fitting** (takes a while!)\n", + "\n", + "This seems completely broken and needs fixing. The fitting just hangs." ] }, { @@ -342,7 +341,7 @@ "metadata": {}, "outputs": [], "source": [ - "result = f.fit(data_x, data_y, weights=1/data_e)\n", + "result = f.fit(data_x, data_y, weights=1/data_e, method=f_method)\n", "\n", "if result.success:\n", " print(\"The fit has been successful: {}\".format(result.success))\n", @@ -401,7 +400,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.9" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/tests/FittingData_CFML-xarrays.ipynb b/tests/FittingData_CFML-xarrays.ipynb index 0d7aafc6..ccd30121 100644 --- a/tests/FittingData_CFML-xarrays.ipynb +++ b/tests/FittingData_CFML-xarrays.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -70,17 +70,9 @@ }, { "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Temp CIF: C:\\Users\\piotr\\AppData\\Local\\Temp\\easydiffraction_temp.cif\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "interface = InterfaceFactory()\n", "c = Phases.from_cif_file('PbSO4.cif')\n", @@ -96,11 +88,11 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "file_path = 'PbSO4_neutrons_short.xye'\n", + "file_path = 'PbSO4_neutrons.xye'\n", "data_x, data_y, data_e = np.loadtxt(file_path, unpack=True)\n", "data_y = data_y/100.0\n", "data_set = xr.Dataset()\n", @@ -111,399 +103,9 @@ }, { "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    (tth: 2201)\n",
-       "Coordinates:\n",
-       "  * tth        (tth) float64 10.0 10.05 10.1 10.15 ... 119.8 119.9 120.0 120.0\n",
-       "Data variables:\n",
-       "    I          (tth) float64 2.2 2.14 2.19 2.24 1.98 ... 2.81 2.79 2.98 3.12\n",
-       "    s_I        (tth) float64 14.83 14.63 14.8 14.97 ... 6.336 6.313 6.525 7.211\n",
-       "    simulated  (tth) float64 0.0 0.0 0.0 0.0 ... 3.612e-30 1.019e-29 9.272e-30\n",
-       "Attributes:\n",
-       "    name:         \n",
-       "    description:  \n",
-       "    url:          \n",
-       "    units:        {'tth': <Unit('dimensionless')>, 'I': <Unit('dimensionless'...
" - ], - "text/plain": [ - "\n", - "Dimensions: (tth: 2201)\n", - "Coordinates:\n", - " * tth (tth) float64 10.0 10.05 10.1 10.15 ... 119.8 119.9 120.0 120.0\n", - "Data variables:\n", - " I (tth) float64 2.2 2.14 2.19 2.24 1.98 ... 2.81 2.79 2.98 3.12\n", - " s_I (tth) float64 14.83 14.63 14.8 14.97 ... 6.336 6.313 6.525 7.211\n", - " simulated (tth) float64 0.0 0.0 0.0 0.0 ... 3.612e-30 1.019e-29 9.272e-30\n", - "Attributes:\n", - " name: \n", - " description: \n", - " url: \n", - " units: {'tth': , 'I': \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "
\n", - "" - ], - "text/plain": [ - ":NdOverlay [Variable]\n", - " :Curve [tth] (value)" - ] - }, - "execution_count": 58, - "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "5847" - } - }, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "data_set.hvplot(y=['I', 'simulated'])" ] @@ -584,7 +130,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -598,65 +144,9 @@ }, { "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [ - { - "data": {}, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.holoviews_exec.v0+json": "", - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "
\n", - "" - ], - "text/plain": [ - ":NdOverlay [Variable]\n", - " :Curve [tth] (value)" - ] - }, - "execution_count": 60, - "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "6102" - } - }, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(data_set['tth']))\n", "data_set.hvplot(y=['I', 'simulated'])" @@ -671,18 +161,9 @@ }, { "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Background of 5 points.\n", - "Collection of 1 backgrounds.\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", "\n", @@ -700,65 +181,9 @@ }, { "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "data": {}, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.holoviews_exec.v0+json": "", - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "
\n", - "" - ], - "text/plain": [ - ":NdOverlay [Variable]\n", - " :Curve [tth] (value)" - ] - }, - "execution_count": 62, - "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "6357" - } - }, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "data_set.easyCore.add_variable('simulated', ['tth'], interface.fit_func(np.array(data_set['tth'])))\n", "data_set.hvplot(y=['I', 'simulated'])" diff --git a/tests/test1.py b/tests/test1.py index 724a8995..5677d42d 100644 --- a/tests/test1.py +++ b/tests/test1.py @@ -6,7 +6,6 @@ from easyDiffractionLib.sample import Sample from easyDiffractionLib import Phase from easyDiffractionLib.interface import InterfaceFactory as Calculator -# from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters import matplotlib.pyplot as plt @@ -19,34 +18,33 @@ sample = Sample(phases=phase, parameters=Instrument1DCWParameters.default(), calculator=calculator) + # sample.phase.cell.length_a = 5 sample.parameters.wavelength = 1.25 # print(S) x_data = np.linspace(5, 150, 100) y_data = calculator.fit_func(x_data) -# plt.plot(x_data, y_data, label="CFL") -# plt.show() +plt.plot(x_data, y_data, label="CrysPy") +plt.show() sample.parameters.wavelength = 2.5 y_data = calculator.fit_func(x_data) -# plt.plot(x_data, y_data, label="CFL") -# plt.show() +plt.plot(x_data, y_data, label="CrysPy") +plt.show() sample.phases[0].cell.length_a = 10 y_data = calculator.fit_func(x_data) -# plt.plot(x_data, y_data, label="CFL") -# plt.show() +plt.plot(x_data, y_data, label="CrysPY") +plt.show() calculator.switch('CrysFML') -calculator.filename = 'tests/SrTiO3.cif' +params = sample.parameters sample = Sample(phases=phase, - parameters=Instrument1DCWParameters.default(), - calculator=calculator) + parameters=params, + interface=calculator) -# ._updateInterface() - -# sample.phase.cell.length_a = 5 +sample.phases[0].cell.length_a = 9.0 sample.parameters.wavelength = 1.25 # print(S) x_data = np.linspace(5, 150, 100) @@ -55,10 +53,10 @@ plt.plot(x_data, y_data, label="CFL") plt.show() -# sample.parameters.wavelength = 2.5 -#y_data = calculator.fit_func(x_data) -#plt.plot(x_data, y_data, label="CFL") -#plt.show() +sample.parameters.wavelength = 2.5 +y_data = calculator.fit_func(x_data) +plt.plot(x_data, y_data, label="CFL") +plt.show() sample.phases[0].cell.length_a = 10 y_data = calculator.fit_func(x_data) diff --git a/tests/test4.py b/tests/test4.py index d3142e60..da67571d 100644 --- a/tests/test4.py +++ b/tests/test4.py @@ -47,8 +47,11 @@ x_data = np.linspace(1, 120, 500) y_data = calculator.fit_func(x_data) -plt.plot(x_data, y_data, label="CW") -plt.show() +# plt.plot(x_data, y_data, label="CW") +# plt.show() + +phases = S.phases[0] +pattern = S.pattern parameters = TOFParams.default() parameters.length_a = 8.56 @@ -57,14 +60,16 @@ parameters.dtt1 = 6167.24700 parameters.dtt2 = -2.28000 parameters.ttheta_bank = 145.00 +pattern.zero_shift = 0.0 +pattern.scale = 100.0 -tof_str = 'Npowder1DTOF' -interfaces = calculator.interface_compatability(tof_str) -calculator.switch(interfaces[0]) +# tof_str = 'Npowder1DTOF' +# interfaces = calculator.interface_compatability(tof_str) +# calculator.switch(interfaces[0]) S = Sample(phases=phases, parameters=parameters, pattern=pattern, calculator=calculator) -x_data = np.linspace(20, 120, 50) +x_data = np.linspace(5000, 60000, 50) y_data = calculator.fit_func(x_data) plt.plot(x_data, y_data, label="TOF") From a0893d432608e0bf8cb01087639cd1c676ceda03 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Mon, 20 Sep 2021 15:14:07 +0200 Subject: [PATCH 177/312] Separated working notebooks to a different directory. --- Notebooks/CreateSample.ipynb | 370 +++++ Notebooks/FittingData.ipynb | 414 ++++++ Notebooks/PbSO4.cif | 24 + Notebooks/PbSO4_neutrons_short.xye | 2202 ++++++++++++++++++++++++++++ tests/CreateSample.ipynb | 112 +- tests/test4.py | 12 +- 6 files changed, 3108 insertions(+), 26 deletions(-) create mode 100644 Notebooks/CreateSample.ipynb create mode 100644 Notebooks/FittingData.ipynb create mode 100644 Notebooks/PbSO4.cif create mode 100644 Notebooks/PbSO4_neutrons_short.xye diff --git a/Notebooks/CreateSample.ipynb b/Notebooks/CreateSample.ipynb new file mode 100644 index 00000000..3d1fa32f --- /dev/null +++ b/Notebooks/CreateSample.ipynb @@ -0,0 +1,370 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8a365a14", + "metadata": {}, + "source": [ + "# Creating sample\n", + "\n", + "This notebook shows how we can create a sample from atoms and calculate diffraction profiles using both constant wavelength and time-of-flight experiment types." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ecc4733", + "metadata": {}, + "outputs": [], + "source": [ + "from easyCore import np\n", + "from easyDiffractionLib.sample import Sample\n", + "from easyDiffractionLib import Site, Phase, Phases\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", + "\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DTOFParameters as TOFParams\n", + "from easyDiffractionLib.Profiles.P1D import Powder1DParameters\n", + "\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "283767f9", + "metadata": {}, + "source": [ + "**Preparing the sample and data**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1ed88f8e", + "metadata": {}, + "outputs": [], + "source": [ + "calculator = Calculator()\n", + "calculator.switch('CrysPy') # this is the default" + ] + }, + { + "cell_type": "markdown", + "id": "19a39b25", + "metadata": {}, + "source": [ + "Create an atom using `Site` interface" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41020330", + "metadata": {}, + "outputs": [], + "source": [ + "atom = Site.from_pars(label=\"Cl1\",\n", + " specie='Cl',\n", + " fract_x=0.0,\n", + " fract_y=0.0,\n", + " fract_z=0.0)" + ] + }, + { + "cell_type": "markdown", + "id": "910aed87", + "metadata": {}, + "source": [ + "Create a phase" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e2f3193", + "metadata": {}, + "outputs": [], + "source": [ + "phase = Phase(name=\"salt\")\n", + "\n", + "# set the space group\n", + "phase.spacegroup.space_group_HM_name = \"F m -3 m\"\n", + "\n", + "# add the atom\n", + "phase.add_atom(atom)" + ] + }, + { + "cell_type": "markdown", + "id": "d4532d8b", + "metadata": {}, + "source": [ + "Add another atom (using `Phase` interface)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4231d16a", + "metadata": {}, + "outputs": [], + "source": [ + "phase.add_atom('Na1', 'Na', 0.5, 0.5, 0.5)" + ] + }, + { + "cell_type": "markdown", + "id": "81ace320", + "metadata": {}, + "source": [ + "Visualise the structure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e68ddbea", + "metadata": {}, + "outputs": [], + "source": [ + "import py3Dmol\n", + "viewer = py3Dmol.view()\n", + "viewer.addModel(phase.to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", + "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", + "viewer.addUnitCell()\n", + "viewer.replicateUnitCell(2,2,2)\n", + "#viewer.setStyle({'sym':2},{'sphere':{'scale':.5,'color':'blue'},'stick':{'color':'cyan'}})\n", + "viewer.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "id": "ebe0e0ee", + "metadata": {}, + "source": [ + "Create Phases object" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29071aa2", + "metadata": {}, + "outputs": [], + "source": [ + "phases = Phases()\n", + "phases.append(phase)" + ] + }, + { + "cell_type": "markdown", + "id": "e93c42b9", + "metadata": {}, + "source": [ + "Create and modify a Parameters object" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "83e3845f", + "metadata": {}, + "outputs": [], + "source": [ + "parameters = CWParams.default()\n", + "\n", + "parameters.length_a = 5.6402\n", + "parameters.resolution_u = 0.1447\n", + "parameters.resolution_v = -0.4252\n", + "parameters.resolution_w = 0.3864\n", + "parameters.resolution_x = 0.0\n", + "parameters.resolution_y = 0.0" + ] + }, + { + "cell_type": "markdown", + "id": "370f0baa", + "metadata": {}, + "source": [ + "Create and modify a Pattern object" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70fa1571", + "metadata": {}, + "outputs": [], + "source": [ + "pattern = Powder1DParameters.default()\n", + "pattern.zero_shift = 0.0\n", + "pattern.scale = 100.0" + ] + }, + { + "cell_type": "markdown", + "id": "42da041a", + "metadata": {}, + "source": [ + "Finally, create the Sample" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c90662f7", + "metadata": {}, + "outputs": [], + "source": [ + "S = Sample(phases=phases, parameters=parameters, calculator=calculator)" + ] + }, + { + "cell_type": "markdown", + "id": "00e24eab", + "metadata": {}, + "source": [ + "Calculate the profile - using the calculator we defined previously.\n", + "Note that we don't run anything on the `Sample` object but on a separate `Calculator` instance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "398bbb91", + "metadata": {}, + "outputs": [], + "source": [ + "x_data = np.linspace(1, 120, 500)\n", + "y_data = calculator.fit_func(x_data)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(x_data, y_data, label='CW Simulation')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "cee54608", + "metadata": {}, + "source": [ + "## Switch to TOF" + ] + }, + { + "cell_type": "markdown", + "id": "ea998649", + "metadata": {}, + "source": [ + "Retrieve the phases and pattern" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eedade0f", + "metadata": {}, + "outputs": [], + "source": [ + "phases = S.phases[0]\n", + "pattern = S.pattern" + ] + }, + { + "cell_type": "markdown", + "id": "161efebd", + "metadata": {}, + "source": [ + "Modify the parameters to correspond to a TOF experiment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "59381e83", + "metadata": {}, + "outputs": [], + "source": [ + "parameters = TOFParams.default()\n", + "parameters.length_a = 5.6402\n", + "parameters.dtt1 = 6167.24700\n", + "parameters.dtt2 = -2.28000\n", + "parameters.ttheta_bank = 145.00" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2aa1648d", + "metadata": {}, + "outputs": [], + "source": [ + "pattern.zero_shift = 0.0\n", + "pattern.scale = 100.0\n", + "\n", + "tof_str = 'Npowder1DTOF'\n", + "interfaces = calculator.interface_compatability(tof_str)\n", + "print(interfaces[0])\n", + "calculator.switch(interfaces[0])\n", + "\n", + "S = Sample(phases=phases, parameters=parameters, calculator=calculator)\n" + ] + }, + { + "cell_type": "markdown", + "id": "f6676f54", + "metadata": {}, + "source": [ + "Calculate the profile again, this time based on the TOF parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eac224b9", + "metadata": {}, + "outputs": [], + "source": [ + "x_data = np.linspace(5000, 60000, 500)\n", + "y_data = calculator.fit_func(x_data)\n", + "\n", + "%matplotlib notebook\n", + "\n", + "plt.plot(x_data, y_data, label='TOF Simulation')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3647d5ab", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Notebooks/FittingData.ipynb b/Notebooks/FittingData.ipynb new file mode 100644 index 00000000..51932b20 --- /dev/null +++ b/Notebooks/FittingData.ipynb @@ -0,0 +1,414 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fitting to the experimental data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook we will show how to load a CIF file, an experimental profile and how to perform a parameter fit.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Import all the packages\n", + "from easyCore import np\n", + "from easyDiffractionLib.sample import Sample\n", + "from easyDiffractionLib import Phases\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", + "\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", + "\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparing the sample and data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load structure from a CIF file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calculator = Calculator()\n", + "phase = Phases.from_cif_file('PbSO4.cif')\n", + "sample = Sample(phases=phase, parameters=Instrument1DCWParameters.default(), calculator=calculator)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Visualise the structure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import py3Dmol\n", + "viewer = py3Dmol.view()\n", + "viewer.addModel(phase[0].to_cif_str(),'cif')\n", + "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", + "viewer.addUnitCell()\n", + "viewer.replicateUnitCell(2,2,1)\n", + "viewer.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load experimental data from a file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "file_path = 'PbSO4_neutrons_short.xye'\n", + "data_x, data_y, data_e = np.loadtxt(file_path, unpack=True)\n", + "\n", + "data_y = data_y/100.0\n", + "\n", + "# Generate the simulation y-data\n", + "sim_y_data = calculator.fit_func(data_x)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experimental')\n", + "plt.plot(data_x, sim_y_data, label='Starting point')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The charts do not match very well, because our simulation did not include any parameters related to the experiment.\n", + "Let's assign some decent values then." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sample.parameters.wavelength = 1.912\n", + "sample.parameters.u_resolution = 1.4\n", + "sample.parameters.v_resolution = -0.42\n", + "sample.parameters.w_resolution = 0.38\n", + "sample.parameters.x_resolution = 0.0\n", + "sample.parameters.y_resolution = 0.0\n", + "\n", + "sim_y_data = calculator.fit_func(data_x)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experimental')\n", + "plt.plot(data_x, sim_y_data, label='Starting point')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This looks much better now - experimental and theoretical peaks seem to be very close but there is no background included in our simulation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "\n", + "bg = PointBackground(linked_experiment='PbSO4')\n", + "bg.append(BackgroundPoint.from_pars(data_x[0], 2))\n", + "bg.append(BackgroundPoint.from_pars(data_x[-1], 2))\n", + "\n", + "sample.set_background(bg)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sim_y_data = calculator.fit_func(data_x)\n", + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experimental')\n", + "plt.plot(data_x, sim_y_data, label='Starting point')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These two charts look close enough to attempt fitting." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fitting to the data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initalize the fitting engine and define parameters to optimize" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "f = Fitter(sample, calculator.fit_func)\n", + "\n", + "# Vary the scale and the BG points\n", + "sample.pattern.scale.fixed = False\n", + "sample.parameters.resolution_u.fixed = False\n", + "sample.parameters.resolution_v.fixed = False\n", + "sample.parameters.resolution_w.fixed = False\n", + "sample.backgrounds[0][0].y.fixed = False\n", + "sample.backgrounds[0][1].y.fixed = False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perform the fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = f.fit(data_x, data_y, weights=1/data_e)\n", + "\n", + "if result.success:\n", + " print(\"The fit has been successful: {}\".format(result.success))\n", + " print(\"The gooodness of fit is: {}\".format(result.goodness_of_fit))\n", + " \n", + "sim_y_data = calculator.fit_func(data_x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that the fit was very good." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experimental')\n", + "plt.plot(data_x, sim_y_data, label='Best Fit')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fitted parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f'Scale: {sample.pattern.scale}')\n", + "print(f'BG 0: {sample.backgrounds[0][0]}')\n", + "print(f'BG 1: {sample.backgrounds[0][1]}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Parameter object with varying accessors**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f'Scale: {sample.pattern.scale}')\n", + "print(f'Scale: {sample.pattern.scale.value}')\n", + "print(f'Scale: {sample.pattern.scale.raw_value}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fit is quite good, but let's see if we can do better with a different optimizer." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Change the optimizer to `bumps`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"available minimizers:\", f.available_engines)\n", + "print()\n", + "print(\"current minimizer:\", f.current_engine.name)\n", + "print(\"available methods of current minimizer:\", f.available_methods())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "f.switch_engine('bumps')\n", + "f_method = 'lm'\n", + "print(\"current minimizer:\", f.current_engine.name)\n", + "print(\"available methods of current minimizer:\", f.available_methods())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Rerun fitting** (takes a while!)\n", + "\n", + "!!!!This seems completely broken and needs fixing. The fitting just hangs.!!!!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = f.fit(data_x, data_y, weights=1/data_e, method=f_method)\n", + "\n", + "if result.success:\n", + " print(\"The fit has been successful: {}\".format(result.success))\n", + " print(\"The gooodness of fit is: {}\".format(result.goodness_of_fit))\n", + " \n", + "sim_y_data = calculator.fit_func(data_x)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib notebook\n", + "plt.plot(data_x, data_y, label='Experimental')\n", + "plt.plot(data_x, sim_y_data, label='Best Fit')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f'Scale: {sample.pattern.scale}')\n", + "print(f'BG 0: {sample.backgrounds[0][0]}')\n", + "print(f'BG 1: {sample.backgrounds[0][1]}')\n", + "#print(f'Res U: {sample.parameters.resolution_u}')\n", + "#print(f'Res V: {sample.parameters.resolution_v}')\n", + "#print(f'Res W: {sample.parameters.resolution_w}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Notebooks/PbSO4.cif b/Notebooks/PbSO4.cif new file mode 100644 index 00000000..4e7ad534 --- /dev/null +++ b/Notebooks/PbSO4.cif @@ -0,0 +1,24 @@ +data_PbSO4 + +_cell_length_a 8.48 +_cell_length_b 5.398 +_cell_length_c 6.958 +_cell_angle_alpha 90.0 +_cell_angle_beta 90.0 +_cell_angle_gamma 90.0 +_space_group_name_H-M_alt 'P n m a' + +loop_ + _atom_site_label + _atom_site_type_symbol + _atom_site_occupancy + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_adp_type + _atom_site_U_iso_or_equiv + Pb Pb 1.0 0.1882 0.25 0.167 Uiso 0.01 + S S 1.0 0.063 0.25 0.686 Uiso 0.01 + O1 O 1.0 -0.095 0.25 0.6 Uiso 0.01 + O2 O 1.0 0.181 0.25 0.543 Uiso 0.01 + O3 O 1.0 0.085 0.026 0.806 Uiso 0.01 diff --git a/Notebooks/PbSO4_neutrons_short.xye b/Notebooks/PbSO4_neutrons_short.xye new file mode 100644 index 00000000..6ff09d36 --- /dev/null +++ b/Notebooks/PbSO4_neutrons_short.xye @@ -0,0 +1,2202 @@ +# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992) + 10.0000 220.0000 14.8324 + 10.0500 214.0000 14.6287 + 10.1000 219.0000 14.7986 + 10.1500 224.0000 14.9666 + 10.2000 198.0000 14.0712 + 10.2500 229.0000 15.1327 + 10.3000 224.0000 14.9666 + 10.3500 216.0000 14.6969 + 10.4000 202.0000 14.2127 + 10.4500 229.0000 15.1327 + 10.5000 202.0000 14.2127 + 10.5500 215.0000 14.6629 + 10.6000 215.0000 14.6629 + 10.6500 196.0000 14.0000 + 10.7000 235.0000 15.3297 + 10.7500 207.0000 14.3875 + 10.8000 205.0000 14.3178 + 10.8500 238.0000 15.4272 + 10.9000 202.0000 14.2127 + 10.9500 213.0000 14.5945 + 11.0000 226.0000 15.0333 + 11.0500 198.0000 14.0712 + 11.1000 222.0000 14.8997 + 11.1500 186.0000 13.6382 + 11.2000 216.0000 14.6969 + 11.2500 218.0000 14.7648 + 11.3000 225.0000 15.0000 + 11.3500 200.0000 14.1421 + 11.4000 196.0000 14.0000 + 11.4500 224.0000 14.9666 + 11.5000 199.0000 14.1067 + 11.5500 204.0000 14.2829 + 11.6000 189.0000 13.7477 + 11.6500 211.0000 14.5258 + 11.7000 190.0000 13.7840 + 11.7500 184.0000 13.5647 + 11.8000 204.0000 14.2829 + 11.8500 204.0000 14.2829 + 11.9000 219.0000 14.7986 + 11.9500 207.0000 14.3875 + 12.0000 227.0000 15.0665 + 12.0500 211.0000 10.2713 + 12.1000 193.0000 9.8234 + 12.1500 206.0000 10.1489 + 12.2000 208.0000 10.1980 + 12.2500 191.0000 9.7724 + 12.3000 194.0000 9.8489 + 12.3500 185.0000 9.6177 + 12.4000 200.0000 10.0000 + 12.4500 203.0000 10.0747 + 12.5000 197.0000 9.9247 + 12.5500 203.0000 10.0747 + 12.6000 200.0000 10.0000 + 12.6500 200.0000 10.0000 + 12.7000 205.0000 10.1242 + 12.7500 208.0000 10.1980 + 12.8000 205.0000 10.1242 + 12.8500 201.0000 10.0250 + 12.9000 221.0000 10.5119 + 12.9500 218.0000 10.4403 + 13.0000 218.0000 10.4403 + 13.0500 216.0000 10.3923 + 13.1000 202.0000 10.0499 + 13.1500 206.0000 10.1489 + 13.2000 197.0000 9.9247 + 13.2500 210.0000 10.2470 + 13.3000 199.0000 9.9750 + 13.3500 219.0000 10.4642 + 13.4000 192.0000 9.7980 + 13.4500 211.0000 10.2713 + 13.5000 199.0000 9.9750 + 13.5500 196.0000 9.8995 + 13.6000 195.0000 9.8742 + 13.6500 203.0000 10.0747 + 13.7000 202.0000 10.0499 + 13.7500 200.0000 10.0000 + 13.8000 199.0000 9.9750 + 13.8500 191.0000 9.7724 + 13.9000 204.0000 10.0995 + 13.9500 191.0000 9.7724 + 14.0000 200.0000 10.0000 + 14.0500 199.0000 9.9750 + 14.1000 197.0000 9.9247 + 14.1500 202.0000 10.0499 + 14.2000 210.0000 10.2470 + 14.2500 202.0000 10.0499 + 14.3000 198.0000 9.9499 + 14.3500 191.0000 9.7724 + 14.4000 194.0000 9.8489 + 14.4500 198.0000 9.9499 + 14.5000 194.0000 9.8489 + 14.5500 193.0000 9.8234 + 14.6000 212.0000 10.2956 + 14.6500 214.0000 10.3441 + 14.7000 197.0000 9.9247 + 14.7500 195.0000 9.8742 + 14.8000 205.0000 10.1242 + 14.8500 209.0000 10.2225 + 14.9000 203.0000 10.0747 + 14.9500 197.0000 9.9247 + 15.0000 191.0000 9.7724 + 15.0500 192.0000 9.7980 + 15.1000 215.0000 10.3682 + 15.1500 194.0000 9.8489 + 15.2000 189.0000 9.7211 + 15.2500 188.0000 9.6954 + 15.3000 202.0000 10.0499 + 15.3500 201.0000 10.0250 + 15.4000 198.0000 9.9499 + 15.4500 208.0000 10.1980 + 15.5000 197.0000 9.9247 + 15.5500 187.0000 9.6695 + 15.6000 187.0000 9.6695 + 15.6500 190.0000 9.7468 + 15.7000 197.0000 9.9247 + 15.7500 200.0000 10.0000 + 15.8000 193.0000 9.8234 + 15.8500 180.0000 9.4868 + 15.9000 194.0000 9.8489 + 15.9500 206.0000 10.1489 + 16.0000 195.0000 9.8742 + 16.0500 193.0000 9.8234 + 16.1000 205.0000 10.1242 + 16.1500 194.0000 9.8489 + 16.2000 196.0000 9.8995 + 16.2500 194.0000 9.8489 + 16.3000 199.0000 9.9750 + 16.3500 207.0000 10.1735 + 16.4000 188.0000 9.6954 + 16.4500 203.0000 10.0747 + 16.5000 188.0000 9.6954 + 16.5500 180.0000 9.4868 + 16.6000 198.0000 9.9499 + 16.6500 200.0000 10.0000 + 16.7000 201.0000 10.0250 + 16.7500 210.0000 10.2470 + 16.8000 206.0000 10.1489 + 16.8500 189.0000 9.7211 + 16.9000 194.0000 9.8489 + 16.9500 187.0000 9.6695 + 17.0000 195.0000 9.8742 + 17.0500 201.0000 10.0250 + 17.1000 197.0000 9.9247 + 17.1500 206.0000 10.1489 + 17.2000 208.0000 10.1980 + 17.2500 199.0000 9.9750 + 17.3000 192.0000 9.7980 + 17.3500 193.0000 9.8234 + 17.4000 204.0000 10.0995 + 17.4500 201.0000 10.0250 + 17.5000 200.0000 10.0000 + 17.5500 177.0000 9.4074 + 17.6000 193.0000 9.8234 + 17.6500 199.0000 9.9750 + 17.7000 201.0000 10.0250 + 17.7500 194.0000 9.8489 + 17.8000 184.0000 9.5917 + 17.8500 192.0000 9.7980 + 17.9000 199.0000 9.9750 + 17.9500 190.0000 9.7468 + 18.0000 183.0000 9.5656 + 18.0500 189.0000 7.9373 + 18.1000 196.0000 8.0829 + 18.1500 196.0000 8.0829 + 18.2000 198.0000 8.1240 + 18.2500 210.0000 8.3666 + 18.3000 212.0000 8.4063 + 18.3500 219.0000 8.5440 + 18.4000 198.0000 8.1240 + 18.4500 195.0000 8.0623 + 18.5000 198.0000 8.1240 + 18.5500 191.0000 7.9791 + 18.6000 193.0000 8.0208 + 18.6500 197.0000 8.1035 + 18.7000 194.0000 8.0416 + 18.7500 187.0000 7.8951 + 18.8000 209.0000 8.3467 + 18.8500 187.0000 7.8951 + 18.9000 198.0000 8.1240 + 18.9500 206.0000 8.2865 + 19.0000 197.0000 8.1035 + 19.0500 191.0000 7.9791 + 19.1000 200.0000 8.1650 + 19.1500 207.0000 8.3066 + 19.2000 205.0000 8.2664 + 19.2500 198.0000 8.1240 + 19.3000 196.0000 8.0829 + 19.3500 209.0000 8.3467 + 19.4000 211.0000 8.3865 + 19.4500 203.0000 8.2260 + 19.5000 200.0000 8.1650 + 19.5500 192.0000 8.0000 + 19.6000 208.0000 8.3267 + 19.6500 213.0000 8.4261 + 19.7000 221.0000 8.5829 + 19.7500 216.0000 8.4853 + 19.8000 226.0000 8.6795 + 19.8500 228.0000 8.7178 + 19.9000 228.0000 8.7178 + 19.9500 215.0000 8.4656 + 20.0000 224.0000 8.6410 + 20.0500 226.0000 8.6795 + 20.1000 213.0000 8.4261 + 20.1500 239.0000 8.9256 + 20.2000 250.0000 9.1287 + 20.2500 247.0000 9.0738 + 20.3000 240.0000 8.9443 + 20.3500 231.0000 8.7750 + 20.4000 236.0000 8.8694 + 20.4500 223.0000 8.6217 + 20.5000 231.0000 8.7750 + 20.5500 226.0000 8.6795 + 20.6000 214.0000 8.4459 + 20.6500 208.0000 8.3267 + 20.7000 214.0000 8.4459 + 20.7500 196.0000 8.0829 + 20.8000 204.0000 8.2462 + 20.8500 199.0000 8.1445 + 20.9000 186.0000 7.8740 + 20.9500 192.0000 8.0000 + 21.0000 199.0000 8.1445 + 21.0500 200.0000 8.1650 + 21.1000 184.0000 7.8316 + 21.1500 184.0000 7.8316 + 21.2000 189.0000 7.9373 + 21.2500 182.0000 7.7889 + 21.3000 184.0000 7.8316 + 21.3500 185.0000 7.8528 + 21.4000 195.0000 8.0623 + 21.4500 190.0000 7.9582 + 21.5000 194.0000 8.0416 + 21.5500 185.0000 7.8528 + 21.6000 183.0000 7.8102 + 21.6500 193.0000 8.0208 + 21.7000 194.0000 8.0416 + 21.7500 193.0000 8.0208 + 21.8000 188.0000 7.9162 + 21.8500 191.0000 7.9791 + 21.9000 189.0000 7.9373 + 21.9500 188.0000 7.9162 + 22.0000 201.0000 8.1854 + 22.0500 195.0000 8.0623 + 22.1000 205.0000 8.2664 + 22.1500 200.0000 8.1650 + 22.2000 200.0000 8.1650 + 22.2500 192.0000 8.0000 + 22.3000 197.0000 8.1035 + 22.3500 204.0000 8.2462 + 22.4000 207.0000 8.3066 + 22.4500 192.0000 8.0000 + 22.5000 201.0000 8.1854 + 22.5500 190.0000 7.9582 + 22.6000 195.0000 8.0623 + 22.6500 194.0000 8.0416 + 22.7000 182.0000 7.7889 + 22.7500 189.0000 7.9373 + 22.8000 196.0000 8.0829 + 22.8500 196.0000 8.0829 + 22.9000 200.0000 8.1650 + 22.9500 190.0000 7.9582 + 23.0000 183.0000 7.8102 + 23.0500 199.0000 8.1445 + 23.1000 187.0000 7.8951 + 23.1500 196.0000 8.0829 + 23.2000 191.0000 7.9791 + 23.2500 191.0000 7.9791 + 23.3000 195.0000 8.0623 + 23.3500 194.0000 8.0416 + 23.4000 192.0000 8.0000 + 23.4500 182.0000 7.7889 + 23.5000 188.0000 7.9162 + 23.5500 203.0000 8.2260 + 23.6000 187.0000 7.8951 + 23.6500 192.0000 8.0000 + 23.7000 206.0000 8.2865 + 23.7500 201.0000 8.1854 + 23.8000 184.0000 7.8316 + 23.8500 192.0000 8.0000 + 23.9000 205.0000 8.2664 + 23.9500 196.0000 8.0829 + 24.0000 193.0000 8.0208 + 24.0500 194.0000 6.9642 + 24.1000 195.0000 6.9821 + 24.1500 194.0000 6.9642 + 24.2000 201.0000 7.0887 + 24.2500 193.0000 6.9462 + 24.3000 176.0000 6.6332 + 24.3500 187.0000 6.8374 + 24.4000 188.0000 6.8557 + 24.4500 196.0000 7.0000 + 24.5000 192.0000 6.9282 + 24.5500 185.0000 6.8007 + 24.6000 195.0000 6.9821 + 24.6500 198.0000 7.0356 + 24.7000 205.0000 7.1589 + 24.7500 200.0000 7.0711 + 24.8000 208.0000 7.2111 + 24.8500 195.0000 6.9821 + 24.9000 187.0000 6.8374 + 24.9500 193.0000 6.9462 + 25.0000 197.0000 7.0178 + 25.0500 202.0000 7.1063 + 25.1000 193.0000 6.9462 + 25.1500 196.0000 7.0000 + 25.2000 202.0000 7.1063 + 25.2500 201.0000 7.0887 + 25.3000 197.0000 7.0178 + 25.3500 204.0000 7.1414 + 25.4000 208.0000 7.2111 + 25.4500 206.0000 7.1764 + 25.5000 212.0000 7.2801 + 25.5500 207.0000 7.1937 + 25.6000 207.0000 7.1937 + 25.6500 212.0000 7.2801 + 25.7000 216.0000 7.3485 + 25.7500 218.0000 7.3824 + 25.8000 221.0000 7.4330 + 25.8500 218.0000 7.3824 + 25.9000 207.0000 7.1937 + 25.9500 203.0000 7.1239 + 26.0000 204.0000 7.1414 + 26.0500 202.0000 7.1063 + 26.1000 206.0000 7.1764 + 26.1500 202.0000 7.1063 + 26.2000 202.0000 7.1063 + 26.2500 181.0000 6.7268 + 26.3000 193.0000 6.9462 + 26.3500 205.0000 7.1589 + 26.4000 198.0000 7.0356 + 26.4500 196.0000 7.0000 + 26.5000 197.0000 7.0178 + 26.5500 195.0000 6.9821 + 26.6000 201.0000 7.0887 + 26.6500 205.0000 7.1589 + 26.7000 195.0000 6.9821 + 26.7500 196.0000 7.0000 + 26.8000 196.0000 7.0000 + 26.8500 205.0000 7.1589 + 26.9000 198.0000 7.0356 + 26.9500 200.0000 7.0711 + 27.0000 199.0000 7.0534 + 27.0500 180.0000 6.7082 + 27.1000 187.0000 6.8374 + 27.1500 193.0000 6.9462 + 27.2000 197.0000 7.0178 + 27.2500 197.0000 7.0178 + 27.3000 196.0000 7.0000 + 27.3500 194.0000 6.9642 + 27.4000 197.0000 7.0178 + 27.4500 204.0000 7.1414 + 27.5000 201.0000 7.0887 + 27.5500 187.0000 6.8374 + 27.6000 191.0000 6.9101 + 27.6500 205.0000 7.1589 + 27.7000 200.0000 7.0711 + 27.7500 198.0000 7.0356 + 27.8000 200.0000 7.0711 + 27.8500 204.0000 7.1414 + 27.9000 196.0000 7.0000 + 27.9500 195.0000 6.9821 + 28.0000 194.0000 6.9642 + 28.0500 200.0000 7.0711 + 28.1000 198.0000 7.0356 + 28.1500 201.0000 7.0887 + 28.2000 208.0000 7.2111 + 28.2500 205.0000 7.1589 + 28.3000 211.0000 7.2629 + 28.3500 211.0000 7.2629 + 28.4000 220.0000 7.4162 + 28.4500 220.0000 7.4162 + 28.5000 212.0000 7.2801 + 28.5500 208.0000 7.2111 + 28.6000 214.0000 7.3144 + 28.6500 226.0000 7.5166 + 28.7000 235.0000 7.6649 + 28.7500 233.0000 7.6322 + 28.8000 237.0000 7.6974 + 28.8500 242.0000 7.7782 + 28.9000 242.0000 7.7782 + 28.9500 245.0000 7.8262 + 29.0000 239.0000 7.7298 + 29.0500 226.0000 7.5166 + 29.1000 232.0000 7.6158 + 29.1500 238.0000 7.7136 + 29.2000 226.0000 7.5166 + 29.2500 218.0000 7.3824 + 29.3000 218.0000 7.3824 + 29.3500 214.0000 7.3144 + 29.4000 205.0000 7.1589 + 29.4500 200.0000 7.0711 + 29.5000 193.0000 6.9462 + 29.5500 195.0000 6.9821 + 29.6000 196.0000 7.0000 + 29.6500 195.0000 6.9821 + 29.7000 207.0000 7.1937 + 29.7500 215.0000 7.3314 + 29.8000 207.0000 7.1937 + 29.8500 218.0000 7.3824 + 29.9000 218.0000 7.3824 + 29.9500 220.0000 7.4162 + 30.0000 220.0000 7.4162 + 30.0500 229.0000 6.7676 + 30.1000 236.0000 6.8702 + 30.1500 254.0000 7.1274 + 30.2000 264.0000 7.2664 + 30.2500 280.0000 7.4833 + 30.3000 289.0000 7.6026 + 30.3500 289.0000 7.6026 + 30.4000 303.0000 7.7846 + 30.4500 302.0000 7.7717 + 30.5000 297.0000 7.7071 + 30.5500 281.0000 7.4967 + 30.6000 278.0000 7.4565 + 30.6500 280.0000 7.4833 + 30.7000 265.0000 7.2801 + 30.7500 258.0000 7.1833 + 30.8000 243.0000 6.9714 + 30.8500 240.0000 6.9282 + 30.9000 232.0000 6.8118 + 30.9500 231.0000 6.7971 + 31.0000 233.0000 6.8264 + 31.0500 246.0000 7.0143 + 31.1000 248.0000 7.0427 + 31.1500 249.0000 7.0569 + 31.2000 256.0000 7.1554 + 31.2500 272.0000 7.3756 + 31.3000 289.0000 7.6026 + 31.3500 311.0000 7.8867 + 31.4000 340.0000 8.2462 + 31.4500 363.0000 8.5206 + 31.5000 393.0000 8.8657 + 31.5500 440.0000 9.3808 + 31.6000 474.0000 9.7365 + 31.6500 482.0000 9.8183 + 31.7000 492.0000 9.9197 + 31.7500 508.0000 10.0797 + 31.8000 494.0000 9.9398 + 31.8500 475.0000 9.7468 + 31.9000 439.0000 9.3702 + 31.9500 413.0000 9.0885 + 32.0000 368.0000 8.5790 + 32.0500 331.0000 8.1363 + 32.1000 299.0000 7.7330 + 32.1500 286.0000 7.5631 + 32.2000 262.0000 7.2388 + 32.2500 241.0000 6.9426 + 32.3000 238.0000 6.8993 + 32.3500 252.0000 7.0993 + 32.4000 267.0000 7.3075 + 32.4500 276.0000 7.4297 + 32.5000 278.0000 7.4565 + 32.5500 300.0000 7.7460 + 32.6000 325.0000 8.0623 + 32.6500 336.0000 8.1976 + 32.7000 359.0000 8.4735 + 32.7500 405.0000 9.0000 + 32.8000 458.0000 9.5708 + 32.8500 501.0000 10.0100 + 32.9000 564.0000 10.6207 + 32.9500 640.0000 11.3137 + 33.0000 719.0000 11.9917 + 33.0500 783.0000 12.5140 + 33.1000 837.0000 12.9383 + 33.1500 851.0000 13.0461 + 33.2000 866.0000 13.1605 + 33.2500 828.0000 12.8686 + 33.3000 763.0000 12.3531 + 33.3500 697.0000 11.8068 + 33.4000 634.0000 11.2606 + 33.4500 541.0000 10.4019 + 33.5000 465.0000 9.6437 + 33.5500 391.0000 8.8431 + 33.6000 351.0000 8.3785 + 33.6500 301.0000 7.7589 + 33.7000 284.0000 7.5366 + 33.7500 260.0000 7.2111 + 33.8000 248.0000 7.0427 + 33.8500 257.0000 7.1694 + 33.9000 242.0000 6.9570 + 33.9500 246.0000 7.0143 + 34.0000 263.0000 7.2526 + 34.0500 271.0000 7.3621 + 34.1000 281.0000 7.4967 + 34.1500 302.0000 7.7717 + 34.2000 309.0000 7.8613 + 34.2500 335.0000 8.1854 + 34.3000 342.0000 8.2704 + 34.3500 345.0000 8.3066 + 34.4000 356.0000 8.4380 + 34.4500 351.0000 8.3785 + 34.5000 341.0000 8.2583 + 34.5500 334.0000 8.1731 + 34.6000 321.0000 8.0125 + 34.6500 286.0000 7.5631 + 34.7000 268.0000 7.3212 + 34.7500 256.0000 7.1554 + 34.8000 238.0000 6.8993 + 34.8500 229.0000 6.7676 + 34.9000 218.0000 6.6030 + 34.9500 223.0000 6.6783 + 35.0000 216.0000 6.5727 + 35.0500 203.0000 6.3718 + 35.1000 203.0000 6.3718 + 35.1500 194.0000 6.2290 + 35.2000 205.0000 6.4031 + 35.2500 196.0000 6.2610 + 35.3000 193.0000 6.2129 + 35.3500 206.0000 6.4187 + 35.4000 201.0000 6.3403 + 35.4500 201.0000 6.3403 + 35.5000 201.0000 6.3403 + 35.5500 200.0000 6.3246 + 35.6000 194.0000 6.2290 + 35.6500 196.0000 6.2610 + 35.7000 203.0000 6.3718 + 35.7500 195.0000 6.2450 + 35.8000 196.0000 6.2610 + 35.8500 211.0000 6.4962 + 35.9000 216.0000 6.5727 + 35.9500 207.0000 6.4343 + 36.0000 215.0000 6.5574 + 36.0500 221.0000 6.6483 + 36.1000 237.0000 6.2849 + 36.1500 248.0000 6.4291 + 36.2000 261.0000 6.5955 + 36.2500 279.0000 6.8191 + 36.3000 319.0000 7.2915 + 36.3500 337.0000 7.4944 + 36.4000 364.0000 7.7889 + 36.4500 423.0000 8.3964 + 36.5000 489.0000 9.0277 + 36.5500 557.0000 9.6350 + 36.6000 630.0000 10.2470 + 36.6500 729.0000 11.0227 + 36.7000 822.0000 11.7047 + 36.7500 943.0000 12.5366 + 36.8000 1059.0000 13.2853 + 36.8500 1196.0000 14.1185 + 36.9000 1235.0000 14.3469 + 36.9500 1220.0000 14.2595 + 37.0000 1209.0000 14.1951 + 37.0500 1128.0000 13.7113 + 37.1000 1001.0000 12.9164 + 37.1500 864.0000 12.0000 + 37.2000 729.0000 11.0227 + 37.2500 601.0000 10.0083 + 37.3000 496.0000 9.0921 + 37.3500 418.0000 8.3467 + 37.4000 355.0000 7.6920 + 37.4500 313.0000 7.2226 + 37.5000 263.0000 6.6207 + 37.5500 246.0000 6.4031 + 37.6000 226.0000 6.1373 + 37.6500 214.0000 5.9722 + 37.7000 222.0000 6.0828 + 37.7500 222.0000 6.0828 + 37.8000 211.0000 5.9301 + 37.8500 211.0000 5.9301 + 37.9000 202.0000 5.8023 + 37.9500 198.0000 5.7446 + 38.0000 192.0000 5.6569 + 38.0500 193.0000 5.6716 + 38.1000 196.0000 5.7155 + 38.1500 201.0000 5.7879 + 38.2000 203.0000 5.8166 + 38.2500 203.0000 5.8166 + 38.3000 201.0000 5.7879 + 38.3500 198.0000 5.7446 + 38.4000 196.0000 5.7155 + 38.4500 206.0000 5.8595 + 38.5000 210.0000 5.9161 + 38.5500 197.0000 5.7300 + 38.6000 204.0000 5.8310 + 38.6500 200.0000 5.7735 + 38.7000 205.0000 5.8452 + 38.7500 196.0000 5.7155 + 38.8000 195.0000 5.7009 + 38.8500 205.0000 5.8452 + 38.9000 204.0000 5.8310 + 38.9500 200.0000 5.7735 + 39.0000 203.0000 5.8166 + 39.0500 208.0000 5.8878 + 39.1000 207.0000 5.8737 + 39.1500 202.0000 5.8023 + 39.2000 203.0000 5.8166 + 39.2500 198.0000 5.7446 + 39.3000 204.0000 5.8310 + 39.3500 210.0000 5.9161 + 39.4000 216.0000 6.0000 + 39.4500 210.0000 5.9161 + 39.5000 229.0000 6.1779 + 39.5500 239.0000 6.3114 + 39.6000 247.0000 6.4161 + 39.6500 278.0000 6.8069 + 39.7000 302.0000 7.0946 + 39.7500 324.0000 7.3485 + 39.8000 371.0000 7.8634 + 39.8500 420.0000 8.3666 + 39.9000 465.0000 8.8034 + 39.9500 538.0000 9.4692 + 40.0000 630.0000 10.2470 + 40.0500 739.0000 11.0980 + 40.1000 851.0000 11.9094 + 40.1500 976.0000 12.7541 + 40.2000 1076.0000 13.3915 + 40.2500 1161.0000 13.9104 + 40.3000 1222.0000 14.2712 + 40.3500 1227.0000 14.3003 + 40.4000 1187.0000 14.0653 + 40.4500 1096.0000 13.5154 + 40.5000 964.0000 12.6754 + 40.5500 833.0000 11.7828 + 40.6000 708.0000 10.8628 + 40.6500 587.0000 9.8911 + 40.7000 512.0000 9.2376 + 40.7500 436.0000 8.5245 + 40.8000 391.0000 8.0726 + 40.8500 384.0000 8.0000 + 40.9000 370.0000 7.8528 + 40.9500 391.0000 8.0726 + 41.0000 419.0000 8.3566 + 41.0500 448.0000 8.6410 + 41.1000 490.0000 9.0370 + 41.1500 567.0000 9.7211 + 41.2000 626.0000 10.2144 + 41.2500 687.0000 10.7005 + 41.3000 735.0000 11.0680 + 41.3500 780.0000 11.4018 + 41.4000 782.0000 11.4164 + 41.4500 745.0000 11.1430 + 41.5000 721.0000 10.9621 + 41.5500 662.0000 10.5040 + 41.6000 595.0000 9.9582 + 41.6500 527.0000 9.3719 + 41.7000 446.0000 8.6217 + 41.7500 393.0000 8.0932 + 41.8000 335.0000 7.4722 + 41.8500 301.0000 7.0828 + 41.9000 276.0000 6.7823 + 41.9500 251.0000 5.9881 + 42.0000 242.0000 5.8797 + 42.0500 229.0000 5.7196 + 42.1000 209.0000 5.4642 + 42.1500 215.0000 5.5420 + 42.2000 218.0000 5.5806 + 42.2500 214.0000 5.5291 + 42.3000 209.0000 5.4642 + 42.3500 208.0000 5.4511 + 42.4000 212.0000 5.5032 + 42.4500 210.0000 5.4772 + 42.5000 209.0000 5.4642 + 42.5500 210.0000 5.4772 + 42.6000 205.0000 5.4116 + 42.6500 209.0000 5.4642 + 42.7000 211.0000 5.4903 + 42.7500 211.0000 5.4903 + 42.8000 216.0000 5.5549 + 42.8500 205.0000 5.4116 + 42.9000 204.0000 5.3984 + 42.9500 202.0000 5.3719 + 43.0000 201.0000 5.3586 + 43.0500 200.0000 5.3452 + 43.1000 207.0000 5.4380 + 43.1500 205.0000 5.4116 + 43.2000 202.0000 5.3719 + 43.2500 209.0000 5.4642 + 43.3000 202.0000 5.3719 + 43.3500 203.0000 5.3852 + 43.4000 206.0000 5.4248 + 43.4500 206.0000 5.4248 + 43.5000 200.0000 5.3452 + 43.5500 194.0000 5.2644 + 43.6000 199.0000 5.3318 + 43.6500 204.0000 5.3984 + 43.7000 205.0000 5.4116 + 43.7500 210.0000 5.4772 + 43.8000 207.0000 5.4380 + 43.8500 205.0000 5.4116 + 43.9000 210.0000 5.4772 + 43.9500 204.0000 5.3984 + 44.0000 203.0000 5.3852 + 44.0500 202.0000 5.3719 + 44.1000 205.0000 5.4116 + 44.1500 201.0000 5.3586 + 44.2000 201.0000 5.3586 + 44.2500 207.0000 5.4380 + 44.3000 197.0000 5.3050 + 44.3500 198.0000 5.3184 + 44.4000 203.0000 5.3852 + 44.4500 209.0000 5.4642 + 44.5000 209.0000 5.4642 + 44.5500 208.0000 5.4511 + 44.6000 204.0000 5.3984 + 44.6500 209.0000 5.4642 + 44.7000 199.0000 5.3318 + 44.7500 204.0000 5.3984 + 44.8000 206.0000 5.4248 + 44.8500 201.0000 5.3586 + 44.9000 205.0000 5.4116 + 44.9500 202.0000 5.3719 + 45.0000 204.0000 5.3984 + 45.0500 198.0000 5.3184 + 45.1000 198.0000 5.3184 + 45.1500 213.0000 5.5162 + 45.2000 210.0000 5.4772 + 45.2500 212.0000 5.5032 + 45.3000 214.0000 5.5291 + 45.3500 215.0000 5.5420 + 45.4000 217.0000 5.5678 + 45.4500 210.0000 5.4772 + 45.5000 214.0000 5.5291 + 45.5500 215.0000 5.5420 + 45.6000 215.0000 5.5420 + 45.6500 215.0000 5.5420 + 45.7000 217.0000 5.5678 + 45.7500 222.0000 5.6315 + 45.8000 231.0000 5.7446 + 45.8500 247.0000 5.9402 + 45.9000 252.0000 6.0000 + 45.9500 273.0000 6.2450 + 46.0000 304.0000 6.5900 + 46.0500 332.0000 6.8868 + 46.1000 366.0000 7.2309 + 46.1500 408.0000 7.6345 + 46.2000 463.0000 8.1328 + 46.2500 532.0000 8.7178 + 46.3000 619.0000 9.4036 + 46.3500 734.0000 10.2400 + 46.4000 828.0000 10.8759 + 46.4500 944.0000 11.6128 + 46.5000 1003.0000 11.9702 + 46.5500 1055.0000 12.2766 + 46.6000 1070.0000 12.3635 + 46.6500 1018.0000 12.0594 + 46.7000 944.0000 11.6128 + 46.7500 833.0000 10.9087 + 46.8000 725.0000 10.1770 + 46.8500 633.0000 9.5094 + 46.9000 507.0000 8.5105 + 46.9500 445.0000 7.9732 + 47.0000 379.0000 7.3582 + 47.0500 347.0000 7.0407 + 47.1000 316.0000 6.7188 + 47.1500 282.0000 6.3471 + 47.2000 267.0000 6.1760 + 47.2500 269.0000 6.1991 + 47.3000 281.0000 6.3358 + 47.3500 288.0000 6.4143 + 47.4000 300.0000 6.5465 + 47.4500 327.0000 6.8348 + 47.5000 346.0000 7.0305 + 47.5500 380.0000 7.3679 + 47.6000 400.0000 7.5593 + 47.6500 430.0000 7.8376 + 47.7000 453.0000 8.0445 + 47.7500 459.0000 8.0976 + 47.8000 451.0000 8.0267 + 47.8500 427.0000 7.8102 + 47.9000 402.0000 7.5782 + 47.9500 375.0000 7.3193 + 48.0000 344.0000 7.0102 + 48.0500 309.0000 6.6440 + 48.1000 277.0000 6.2906 + 48.1500 265.0000 5.7554 + 48.2000 246.0000 5.5453 + 48.2500 246.0000 5.5453 + 48.3000 230.0000 5.3619 + 48.3500 223.0000 5.2797 + 48.4000 227.0000 5.3268 + 48.4500 225.0000 5.3033 + 48.5000 217.0000 5.2082 + 48.5500 217.0000 5.2082 + 48.6000 223.0000 5.2797 + 48.6500 223.0000 5.2797 + 48.7000 220.0000 5.2440 + 48.7500 223.0000 5.2797 + 48.8000 226.0000 5.3151 + 48.8500 248.0000 5.5678 + 48.9000 258.0000 5.6789 + 48.9500 274.0000 5.8523 + 49.0000 297.0000 6.0930 + 49.0500 324.0000 6.3640 + 49.1000 355.0000 6.6615 + 49.1500 393.0000 7.0089 + 49.2000 458.0000 7.5664 + 49.2500 528.0000 8.1240 + 49.3000 589.0000 8.5805 + 49.3500 688.0000 9.2736 + 49.4000 781.0000 9.8805 + 49.4500 840.0000 10.2470 + 49.5000 876.0000 10.4642 + 49.5500 874.0000 10.4523 + 49.6000 832.0000 10.1980 + 49.6500 765.0000 9.7788 + 49.7000 682.0000 9.2331 + 49.7500 613.0000 8.7536 + 49.8000 524.0000 8.0932 + 49.8500 455.0000 7.5416 + 49.9000 408.0000 7.1414 + 49.9500 384.0000 6.9282 + 50.0000 366.0000 6.7639 + 50.0500 375.0000 6.8465 + 50.1000 392.0000 7.0000 + 50.1500 426.0000 7.2973 + 50.2000 470.0000 7.6649 + 50.2500 519.0000 8.0545 + 50.3000 588.0000 8.5732 + 50.3500 639.0000 8.9373 + 50.4000 681.0000 9.2263 + 50.4500 704.0000 9.3808 + 50.5000 693.0000 9.3073 + 50.5500 650.0000 9.0139 + 50.6000 600.0000 8.6603 + 50.6500 540.0000 8.2158 + 50.7000 478.0000 7.7298 + 50.7500 412.0000 7.1764 + 50.8000 376.0000 6.8557 + 50.8500 345.0000 6.5670 + 50.9000 330.0000 6.4226 + 50.9500 337.0000 6.4904 + 51.0000 350.0000 6.6144 + 51.0500 383.0000 6.9192 + 51.1000 426.0000 7.2973 + 51.1500 493.0000 7.8502 + 51.2000 571.0000 8.4484 + 51.2500 676.0000 9.1924 + 51.3000 803.0000 10.0187 + 51.3500 920.0000 10.7238 + 51.4000 1071.0000 11.5704 + 51.4500 1183.0000 12.1604 + 51.5000 1247.0000 12.4850 + 51.5500 1255.0000 12.5250 + 51.6000 1251.0000 12.5050 + 51.6500 1183.0000 12.1604 + 51.7000 1068.0000 11.5542 + 51.7500 945.0000 10.8685 + 51.8000 861.0000 10.3742 + 51.8500 811.0000 10.0685 + 51.9000 813.0000 10.0809 + 51.9500 872.0000 10.4403 + 52.0000 969.0000 11.0057 + 52.0500 1120.0000 11.8322 + 52.1000 1309.0000 12.7916 + 52.1500 1527.0000 13.8158 + 52.2000 1706.0000 14.6031 + 52.2500 1856.0000 15.2315 + 52.3000 1888.0000 15.3623 + 52.3500 1837.0000 15.1534 + 52.4000 1713.0000 14.6330 + 52.4500 1500.0000 13.6931 + 52.5000 1289.0000 12.6935 + 52.5500 1103.0000 11.7420 + 52.6000 904.0000 10.6301 + 52.6500 749.0000 9.6760 + 52.7000 627.0000 8.8530 + 52.7500 568.0000 8.4261 + 52.8000 551.0000 8.2991 + 52.8500 560.0000 8.3666 + 52.9000 586.0000 8.5586 + 52.9500 634.0000 8.9022 + 53.0000 691.0000 9.2938 + 53.0500 751.0000 9.6889 + 53.1000 799.0000 9.9937 + 53.1500 792.0000 9.9499 + 53.2000 820.0000 10.1242 + 53.2500 774.0000 9.8362 + 53.3000 736.0000 9.5917 + 53.3500 680.0000 9.2195 + 53.4000 627.0000 8.8530 + 53.4500 562.0000 8.3815 + 53.5000 514.0000 8.0156 + 53.5500 459.0000 7.5746 + 53.6000 424.0000 7.2801 + 53.6500 362.0000 6.7268 + 53.7000 333.0000 6.4517 + 53.7500 318.0000 6.3048 + 53.8000 300.0000 6.1237 + 53.8500 287.0000 5.9896 + 53.9000 265.0000 5.7554 + 53.9500 266.0000 5.7663 + 54.0000 262.0000 5.7228 + 54.0500 263.0000 5.4058 + 54.1000 255.0000 5.3229 + 54.1500 270.0000 5.4772 + 54.2000 278.0000 5.5578 + 54.2500 289.0000 5.6667 + 54.3000 317.0000 5.9348 + 54.3500 343.0000 6.1734 + 54.4000 400.0000 6.6667 + 54.4500 468.0000 7.2111 + 54.5000 561.0000 7.8951 + 54.5500 695.0000 8.7876 + 54.6000 873.0000 9.8489 + 54.6500 1100.0000 11.0554 + 54.7000 1372.0000 12.3468 + 54.7500 1660.0000 13.5810 + 54.8000 1954.0000 14.7347 + 54.8500 2224.0000 15.7198 + 54.9000 2400.0000 16.3299 + 54.9500 2459.0000 16.5294 + 55.0000 2435.0000 16.4486 + 55.0500 2245.0000 15.7938 + 55.1000 1986.0000 14.8549 + 55.1500 1671.0000 13.6260 + 55.2000 1358.0000 12.2837 + 55.2500 1086.0000 10.9848 + 55.3000 868.0000 9.8206 + 55.3500 682.0000 8.7050 + 55.4000 578.0000 8.0139 + 55.4500 521.0000 7.6085 + 55.5000 512.0000 7.5425 + 55.5500 537.0000 7.7244 + 55.6000 600.0000 8.1650 + 55.6500 704.0000 8.8443 + 55.7000 855.0000 9.7468 + 55.7500 1032.0000 10.7083 + 55.8000 1232.0000 11.7000 + 55.8500 1466.0000 12.7628 + 55.9000 1693.0000 13.7154 + 55.9500 1866.0000 14.3991 + 56.0000 1966.0000 14.7799 + 56.0500 2024.0000 14.9963 + 56.1000 2016.0000 14.9666 + 56.1500 1846.0000 14.3217 + 56.2000 1667.0000 13.6096 + 56.2500 1429.0000 12.6007 + 56.3000 1179.0000 11.4455 + 56.3500 950.0000 10.2740 + 56.4000 763.0000 9.2075 + 56.4500 599.0000 8.1582 + 56.5000 484.0000 7.3333 + 56.5500 404.0000 6.6999 + 56.6000 351.0000 6.2450 + 56.6500 304.0000 5.8119 + 56.7000 284.0000 5.6174 + 56.7500 273.0000 5.5076 + 56.8000 259.0000 5.3645 + 56.8500 251.0000 5.2810 + 56.9000 251.0000 5.2810 + 56.9500 252.0000 5.2915 + 57.0000 245.0000 5.2175 + 57.0500 259.0000 5.3645 + 57.1000 250.0000 5.2705 + 57.1500 253.0000 5.3020 + 57.2000 256.0000 5.3333 + 57.2500 264.0000 5.4160 + 57.3000 285.0000 5.6273 + 57.3500 301.0000 5.7831 + 57.4000 346.0000 6.2004 + 57.4500 390.0000 6.5828 + 57.5000 458.0000 7.1336 + 57.5500 528.0000 7.6594 + 57.6000 624.0000 8.3267 + 57.6500 733.0000 9.0247 + 57.7000 829.0000 9.5975 + 57.7500 916.0000 10.0885 + 57.8000 988.0000 10.4775 + 57.8500 994.0000 10.5093 + 57.9000 929.0000 10.1598 + 57.9500 843.0000 9.6782 + 58.0000 742.0000 9.0799 + 58.0500 638.0000 8.4196 + 58.1000 527.0000 7.6522 + 58.1500 434.0000 6.9442 + 58.2000 377.0000 6.4722 + 58.2500 320.0000 5.9628 + 58.3000 282.0000 5.5976 + 58.3500 273.0000 5.5076 + 58.4000 256.0000 5.3333 + 58.4500 243.0000 5.1962 + 58.5000 240.0000 5.1640 + 58.5500 240.0000 5.1640 + 58.6000 230.0000 5.0553 + 58.6500 220.0000 4.9441 + 58.7000 230.0000 5.0553 + 58.7500 227.0000 5.0222 + 58.8000 224.0000 4.9889 + 58.8500 219.0000 4.9329 + 58.9000 227.0000 5.0222 + 58.9500 227.0000 5.0222 + 59.0000 224.0000 4.9889 + 59.0500 222.0000 4.9666 + 59.1000 223.0000 4.9777 + 59.1500 217.0000 4.9103 + 59.2000 213.0000 4.8648 + 59.2500 216.0000 4.8990 + 59.3000 219.0000 4.9329 + 59.3500 219.0000 4.9329 + 59.4000 218.0000 4.9216 + 59.4500 220.0000 4.9441 + 59.5000 220.0000 4.9441 + 59.5500 220.0000 4.9441 + 59.6000 223.0000 4.9777 + 59.6500 233.0000 5.0881 + 59.7000 237.0000 5.1316 + 59.7500 249.0000 5.2599 + 59.8000 258.0000 5.3541 + 59.8500 261.0000 5.3852 + 59.9000 283.0000 5.6075 + 59.9500 304.0000 5.8119 + 60.0000 324.0000 5.6921 + 60.0500 347.0000 5.8907 + 60.1000 353.0000 5.9414 + 60.1500 359.0000 5.9917 + 60.2000 363.0000 6.0249 + 60.2500 352.0000 5.9330 + 60.3000 341.0000 5.8395 + 60.3500 330.0000 5.7446 + 60.4000 308.0000 5.5498 + 60.4500 291.0000 5.3944 + 60.5000 271.0000 5.2058 + 60.5500 254.0000 5.0398 + 60.6000 245.0000 4.9497 + 60.6500 245.0000 4.9497 + 60.7000 239.0000 4.8888 + 60.7500 228.0000 4.7749 + 60.8000 217.0000 4.6583 + 60.8500 217.0000 4.6583 + 60.9000 218.0000 4.6690 + 60.9500 223.0000 4.7223 + 61.0000 207.0000 4.5497 + 61.0500 218.0000 4.6690 + 61.1000 222.0000 4.7117 + 61.1500 215.0000 4.6368 + 61.2000 210.0000 4.5826 + 61.2500 216.0000 4.6476 + 61.3000 213.0000 4.6152 + 61.3500 212.0000 4.6043 + 61.4000 215.0000 4.6368 + 61.4500 212.0000 4.6043 + 61.5000 214.0000 4.6260 + 61.5500 211.0000 4.5935 + 61.6000 214.0000 4.6260 + 61.6500 217.0000 4.6583 + 61.7000 205.0000 4.5277 + 61.7500 207.0000 4.5497 + 61.8000 213.0000 4.6152 + 61.8500 208.0000 4.5607 + 61.9000 211.0000 4.5935 + 61.9500 205.0000 4.5277 + 62.0000 214.0000 4.6260 + 62.0500 213.0000 4.6152 + 62.1000 212.0000 4.6043 + 62.1500 212.0000 4.6043 + 62.2000 213.0000 4.6152 + 62.2500 207.0000 4.5497 + 62.3000 203.0000 4.5056 + 62.3500 211.0000 4.5935 + 62.4000 211.0000 4.5935 + 62.4500 214.0000 4.6260 + 62.5000 214.0000 4.6260 + 62.5500 207.0000 4.5497 + 62.6000 203.0000 4.5056 + 62.6500 212.0000 4.6043 + 62.7000 212.0000 4.6043 + 62.7500 214.0000 4.6260 + 62.8000 213.0000 4.6152 + 62.8500 202.0000 4.4944 + 62.9000 210.0000 4.5826 + 62.9500 211.0000 4.5935 + 63.0000 211.0000 4.5935 + 63.0500 214.0000 4.6260 + 63.1000 221.0000 4.7011 + 63.1500 217.0000 4.6583 + 63.2000 212.0000 4.6043 + 63.2500 214.0000 4.6260 + 63.3000 219.0000 4.6797 + 63.3500 223.0000 4.7223 + 63.4000 225.0000 4.7434 + 63.4500 227.0000 4.7645 + 63.5000 235.0000 4.8477 + 63.5500 240.0000 4.8990 + 63.6000 243.0000 4.9295 + 63.6500 252.0000 5.0200 + 63.7000 249.0000 4.9900 + 63.7500 249.0000 4.9900 + 63.8000 255.0000 5.0498 + 63.8500 262.0000 5.1186 + 63.9000 282.0000 5.3104 + 63.9500 308.0000 5.5498 + 64.0000 351.0000 5.9245 + 64.0500 398.0000 6.3087 + 64.1000 470.0000 6.8557 + 64.1500 525.0000 7.2457 + 64.2000 596.0000 7.7201 + 64.2500 646.0000 8.0374 + 64.3000 681.0000 8.2523 + 64.3500 665.0000 8.1548 + 64.4000 615.0000 7.8422 + 64.4500 563.0000 7.5033 + 64.5000 484.0000 6.9570 + 64.5500 421.0000 6.4885 + 64.6000 364.0000 6.0332 + 64.6500 317.0000 5.6303 + 64.7000 289.0000 5.3759 + 64.7500 261.0000 5.1088 + 64.8000 245.0000 4.9497 + 64.8500 233.0000 4.8270 + 64.9000 228.0000 4.7749 + 64.9500 219.0000 4.6797 + 65.0000 219.0000 4.6797 + 65.0500 217.0000 4.6583 + 65.1000 216.0000 4.6476 + 65.1500 221.0000 4.7011 + 65.2000 215.0000 4.6368 + 65.2500 215.0000 4.6368 + 65.3000 210.0000 4.5826 + 65.3500 212.0000 4.6043 + 65.4000 212.0000 4.6043 + 65.4500 204.0000 4.5166 + 65.5000 209.0000 4.5717 + 65.5500 206.0000 4.5387 + 65.6000 216.0000 4.6476 + 65.6500 207.0000 4.5497 + 65.7000 214.0000 4.6260 + 65.7500 207.0000 4.5497 + 65.8000 209.0000 4.5717 + 65.8500 218.0000 4.6690 + 65.9000 215.0000 4.6368 + 65.9500 222.0000 4.7117 + 66.0000 226.0000 4.7539 + 66.0500 230.0000 4.7958 + 66.1000 239.0000 4.8888 + 66.1500 249.0000 4.9900 + 66.2000 263.0000 5.1284 + 66.2500 275.0000 5.2440 + 66.3000 292.0000 5.4037 + 66.3500 317.0000 5.6303 + 66.4000 323.0000 5.6833 + 66.4500 341.0000 5.8395 + 66.5000 350.0000 5.9161 + 66.5500 330.0000 5.7446 + 66.6000 320.0000 5.6569 + 66.6500 307.0000 5.5408 + 66.7000 284.0000 5.3292 + 66.7500 275.0000 5.2440 + 66.8000 265.0000 5.1478 + 66.8500 269.0000 5.1865 + 66.9000 275.0000 5.2440 + 66.9500 292.0000 5.4037 + 67.0000 311.0000 5.5767 + 67.0500 338.0000 5.8138 + 67.1000 387.0000 6.2209 + 67.1500 413.0000 6.4265 + 67.2000 463.0000 6.8044 + 67.2500 510.0000 7.1414 + 67.3000 534.0000 7.3075 + 67.3500 559.0000 7.4766 + 67.4000 539.0000 7.3417 + 67.4500 533.0000 7.3007 + 67.5000 500.0000 7.0711 + 67.5500 471.0000 6.8629 + 67.6000 455.0000 6.7454 + 67.6500 410.0000 6.4031 + 67.7000 373.0000 6.1074 + 67.7500 342.0000 5.8481 + 67.8000 307.0000 5.5408 + 67.8500 288.0000 5.3666 + 67.9000 286.0000 5.3479 + 67.9500 281.0000 5.3009 + 68.0000 292.0000 5.4037 + 68.0500 291.0000 5.3944 + 68.1000 312.0000 5.5857 + 68.1500 326.0000 5.7096 + 68.2000 336.0000 5.7966 + 68.2500 346.0000 5.8822 + 68.3000 341.0000 5.8395 + 68.3500 327.0000 5.7184 + 68.4000 305.0000 5.5227 + 68.4500 277.0000 5.2631 + 68.5000 267.0000 5.1672 + 68.5500 249.0000 4.9900 + 68.6000 229.0000 4.7854 + 68.6500 221.0000 4.7011 + 68.7000 220.0000 4.6904 + 68.7500 217.0000 4.6583 + 68.8000 211.0000 4.5935 + 68.8500 204.0000 4.5166 + 68.9000 203.0000 4.5056 + 68.9500 220.0000 4.6904 + 69.0000 217.0000 4.6583 + 69.0500 217.0000 4.6583 + 69.1000 214.0000 4.6260 + 69.1500 205.0000 4.5277 + 69.2000 205.0000 4.5277 + 69.2500 211.0000 4.5935 + 69.3000 206.0000 4.5387 + 69.3500 208.0000 4.5607 + 69.4000 201.0000 4.4833 + 69.4500 208.0000 4.5607 + 69.5000 214.0000 4.6260 + 69.5500 212.0000 4.6043 + 69.6000 206.0000 4.5387 + 69.6500 216.0000 4.6476 + 69.7000 219.0000 4.6797 + 69.7500 215.0000 4.6368 + 69.8000 217.0000 4.6583 + 69.8500 211.0000 4.5935 + 69.9000 214.0000 4.6260 + 69.9500 215.0000 4.6368 + 70.0000 224.0000 4.7329 + 70.0500 217.0000 4.6583 + 70.1000 215.0000 4.6368 + 70.1500 218.0000 4.6690 + 70.2000 218.0000 4.6690 + 70.2500 228.0000 4.7749 + 70.3000 227.0000 4.7645 + 70.3500 228.0000 4.7749 + 70.4000 225.0000 4.7434 + 70.4500 219.0000 4.6797 + 70.5000 216.0000 4.6476 + 70.5500 219.0000 4.6797 + 70.6000 218.0000 4.6690 + 70.6500 214.0000 4.6260 + 70.7000 212.0000 4.6043 + 70.7500 221.0000 4.7011 + 70.8000 214.0000 4.6260 + 70.8500 208.0000 4.5607 + 70.9000 204.0000 4.5166 + 70.9500 209.0000 4.5717 + 71.0000 209.0000 4.5717 + 71.0500 208.0000 4.5607 + 71.1000 212.0000 4.6043 + 71.1500 213.0000 4.6152 + 71.2000 218.0000 4.6690 + 71.2500 212.0000 4.6043 + 71.3000 205.0000 4.5277 + 71.3500 207.0000 4.5497 + 71.4000 204.0000 4.5166 + 71.4500 206.0000 4.5387 + 71.5000 211.0000 4.5935 + 71.5500 216.0000 4.6476 + 71.6000 214.0000 4.6260 + 71.6500 210.0000 4.5826 + 71.7000 219.0000 4.6797 + 71.7500 222.0000 4.7117 + 71.8000 224.0000 4.7329 + 71.8500 231.0000 4.8062 + 71.9000 227.0000 4.7645 + 71.9500 237.0000 4.8683 + 72.0000 235.0000 4.8477 + 72.0500 238.0000 4.8785 + 72.1000 245.0000 4.9497 + 72.1500 242.0000 4.9193 + 72.2000 248.0000 4.9800 + 72.2500 246.0000 4.9598 + 72.3000 243.0000 4.9295 + 72.3500 253.0000 5.0299 + 72.4000 259.0000 5.0892 + 72.4500 278.0000 5.2726 + 72.5000 281.0000 5.3009 + 72.5500 297.0000 5.4498 + 72.6000 310.0000 5.5678 + 72.6500 324.0000 5.6921 + 72.7000 322.0000 5.6745 + 72.7500 311.0000 5.5767 + 72.8000 295.0000 5.4314 + 72.8500 281.0000 5.3009 + 72.9000 259.0000 5.0892 + 72.9500 250.0000 5.0000 + 73.0000 239.0000 4.8888 + 73.0500 233.0000 4.8270 + 73.1000 227.0000 4.7645 + 73.1500 226.0000 4.7539 + 73.2000 223.0000 4.7223 + 73.2500 211.0000 4.5935 + 73.3000 209.0000 4.5717 + 73.3500 217.0000 4.6583 + 73.4000 214.0000 4.6260 + 73.4500 213.0000 4.6152 + 73.5000 217.0000 4.6583 + 73.5500 220.0000 4.6904 + 73.6000 210.0000 4.5826 + 73.6500 209.0000 4.5717 + 73.7000 215.0000 4.6368 + 73.7500 218.0000 4.6690 + 73.8000 215.0000 4.6368 + 73.8500 217.0000 4.6583 + 73.9000 221.0000 4.7011 + 73.9500 217.0000 4.6583 + 74.0000 219.0000 4.6797 + 74.0500 220.0000 4.6904 + 74.1000 228.0000 4.7749 + 74.1500 229.0000 4.7854 + 74.2000 230.0000 4.7958 + 74.2500 234.0000 4.8374 + 74.3000 251.0000 5.0100 + 74.3500 261.0000 5.1088 + 74.4000 288.0000 5.3666 + 74.4500 313.0000 5.5946 + 74.5000 362.0000 6.0166 + 74.5500 424.0000 6.5115 + 74.6000 524.0000 7.2388 + 74.6500 646.0000 8.0374 + 74.7000 781.0000 8.8374 + 74.7500 920.0000 9.5917 + 74.8000 1024.0000 10.1193 + 74.8500 1120.0000 10.5830 + 74.9000 1187.0000 10.8950 + 74.9500 1187.0000 10.8950 + 75.0000 1166.0000 10.7981 + 75.0500 1114.0000 10.5546 + 75.1000 1044.0000 10.2176 + 75.1500 991.0000 9.9549 + 75.2000 927.0000 9.6281 + 75.2500 823.0000 9.0719 + 75.3000 717.0000 8.4676 + 75.3500 619.0000 7.8677 + 75.4000 520.0000 7.2111 + 75.4500 421.0000 6.4885 + 75.5000 353.0000 5.9414 + 75.5500 308.0000 5.5498 + 75.6000 273.0000 5.2249 + 75.6500 256.0000 5.0596 + 75.7000 245.0000 4.9497 + 75.7500 234.0000 4.8374 + 75.8000 230.0000 4.7958 + 75.8500 224.0000 4.7329 + 75.9000 232.0000 4.8166 + 75.9500 226.0000 4.7539 + 76.0000 222.0000 4.7117 + 76.0500 222.0000 4.7117 + 76.1000 227.0000 4.7645 + 76.1500 225.0000 4.7434 + 76.2000 226.0000 4.7539 + 76.2500 227.0000 4.7645 + 76.3000 229.0000 4.7854 + 76.3500 235.0000 4.8477 + 76.4000 233.0000 4.8270 + 76.4500 243.0000 4.9295 + 76.5000 238.0000 4.8785 + 76.5500 237.0000 4.8683 + 76.6000 236.0000 4.8580 + 76.6500 232.0000 4.8166 + 76.7000 231.0000 4.8062 + 76.7500 227.0000 4.7645 + 76.8000 225.0000 4.7434 + 76.8500 220.0000 4.6904 + 76.9000 218.0000 4.6690 + 76.9500 215.0000 4.6368 + 77.0000 219.0000 4.6797 + 77.0500 224.0000 4.7329 + 77.1000 225.0000 4.7434 + 77.1500 222.0000 4.7117 + 77.2000 231.0000 4.8062 + 77.2500 243.0000 4.9295 + 77.3000 250.0000 5.0000 + 77.3500 269.0000 5.1865 + 77.4000 286.0000 5.3479 + 77.4500 310.0000 5.5678 + 77.5000 325.0000 5.7009 + 77.5500 332.0000 5.7619 + 77.6000 337.0000 5.8052 + 77.6500 329.0000 5.7359 + 77.7000 303.0000 5.5045 + 77.7500 278.0000 5.2726 + 77.8000 268.0000 5.1769 + 77.8500 252.0000 5.0200 + 77.9000 236.0000 4.8580 + 77.9500 228.0000 4.7749 + 78.0000 219.0000 4.6797 + 78.0500 225.0000 4.7434 + 78.1000 222.0000 4.7117 + 78.1500 214.0000 4.6260 + 78.2000 228.0000 4.7749 + 78.2500 221.0000 4.7011 + 78.3000 217.0000 4.6583 + 78.3500 221.0000 4.7011 + 78.4000 222.0000 4.7117 + 78.4500 226.0000 4.7539 + 78.5000 237.0000 4.8683 + 78.5500 246.0000 4.9598 + 78.6000 255.0000 5.0498 + 78.6500 269.0000 5.1865 + 78.7000 284.0000 5.3292 + 78.7500 302.0000 5.4955 + 78.8000 313.0000 5.5946 + 78.8500 327.0000 5.7184 + 78.9000 321.0000 5.6657 + 78.9500 333.0000 5.7706 + 79.0000 331.0000 5.7533 + 79.0500 332.0000 5.7619 + 79.1000 358.0000 5.9833 + 79.1500 402.0000 6.3403 + 79.2000 460.0000 6.7823 + 79.2500 557.0000 7.4632 + 79.3000 660.0000 8.1240 + 79.3500 769.0000 8.7693 + 79.4000 859.0000 9.2682 + 79.4500 934.0000 9.6644 + 79.5000 955.0000 9.7724 + 79.5500 921.0000 9.5969 + 79.6000 824.0000 9.0774 + 79.6500 694.0000 8.3307 + 79.7000 578.0000 7.6026 + 79.7500 474.0000 6.8848 + 79.8000 402.0000 6.3403 + 79.8500 344.0000 5.8652 + 79.9000 306.0000 5.5317 + 79.9500 300.0000 5.4772 + 80.0000 292.0000 5.4037 + 80.0500 292.0000 5.4037 + 80.1000 302.0000 5.4955 + 80.1500 304.0000 5.5136 + 80.2000 306.0000 5.5317 + 80.2500 305.0000 5.5227 + 80.3000 303.0000 5.5045 + 80.3500 299.0000 5.4681 + 80.4000 278.0000 5.2726 + 80.4500 259.0000 5.0892 + 80.5000 257.0000 5.0695 + 80.5500 245.0000 4.9497 + 80.6000 237.0000 4.8683 + 80.6500 240.0000 4.8990 + 80.7000 233.0000 4.8270 + 80.7500 232.0000 4.8166 + 80.8000 235.0000 4.8477 + 80.8500 241.0000 4.9092 + 80.9000 257.0000 5.0695 + 80.9500 274.0000 5.2345 + 81.0000 292.0000 5.4037 + 81.0500 309.0000 5.5588 + 81.1000 333.0000 5.7706 + 81.1500 360.0000 6.0000 + 81.2000 381.0000 6.1725 + 81.2500 387.0000 6.2209 + 81.3000 387.0000 6.2209 + 81.3500 386.0000 6.2129 + 81.4000 382.0000 6.1806 + 81.4500 368.0000 6.0663 + 81.5000 363.0000 6.0249 + 81.5500 352.0000 5.9330 + 81.6000 337.0000 5.8052 + 81.6500 321.0000 5.6657 + 81.7000 297.0000 5.4498 + 81.7500 281.0000 5.3009 + 81.8000 265.0000 5.1478 + 81.8500 255.0000 5.0498 + 81.9000 251.0000 5.0100 + 81.9500 237.0000 4.8683 + 82.0000 238.0000 4.8785 + 82.0500 237.0000 4.8683 + 82.1000 228.0000 4.7749 + 82.1500 240.0000 4.8990 + 82.2000 234.0000 4.8374 + 82.2500 226.0000 4.7539 + 82.3000 229.0000 4.7854 + 82.3500 228.0000 4.7749 + 82.4000 233.0000 4.8270 + 82.4500 243.0000 4.9295 + 82.5000 241.0000 4.9092 + 82.5500 257.0000 5.0695 + 82.6000 279.0000 5.2820 + 82.6500 305.0000 5.5227 + 82.7000 345.0000 5.8737 + 82.7500 410.0000 6.4031 + 82.8000 455.0000 6.7454 + 82.8500 545.0000 7.3824 + 82.9000 622.0000 7.8867 + 82.9500 673.0000 8.2037 + 83.0000 725.0000 8.5147 + 83.0500 717.0000 8.4676 + 83.1000 661.0000 8.1302 + 83.1500 592.0000 7.6942 + 83.2000 518.0000 7.1972 + 83.2500 443.0000 6.6558 + 83.3000 371.0000 6.0910 + 83.3500 336.0000 5.7966 + 83.4000 290.0000 5.3852 + 83.4500 265.0000 5.1478 + 83.5000 252.0000 5.0200 + 83.5500 250.0000 5.0000 + 83.6000 244.0000 4.9396 + 83.6500 242.0000 4.9193 + 83.7000 241.0000 4.9092 + 83.7500 243.0000 4.9295 + 83.8000 248.0000 4.9800 + 83.8500 253.0000 5.0299 + 83.9000 252.0000 5.0200 + 83.9500 264.0000 5.1381 + 84.0000 266.0000 5.1575 + 84.0500 282.0000 5.3104 + 84.1000 291.0000 5.3944 + 84.1500 313.0000 5.5946 + 84.2000 346.0000 5.8822 + 84.2500 374.0000 6.1156 + 84.3000 415.0000 6.4420 + 84.3500 430.0000 6.5574 + 84.4000 433.0000 6.5803 + 84.4500 430.0000 6.5574 + 84.5000 406.0000 6.3718 + 84.5500 384.0000 6.1968 + 84.6000 349.0000 5.9076 + 84.6500 318.0000 5.6391 + 84.7000 307.0000 5.5408 + 84.7500 298.0000 5.4589 + 84.8000 296.0000 5.4406 + 84.8500 304.0000 5.5136 + 84.9000 313.0000 5.5946 + 84.9500 328.0000 5.7271 + 85.0000 346.0000 5.8822 + 85.0500 341.0000 5.8395 + 85.1000 335.0000 5.7879 + 85.1500 324.0000 5.6921 + 85.2000 336.0000 5.7966 + 85.2500 341.0000 5.8395 + 85.3000 341.0000 5.8395 + 85.3500 370.0000 6.0828 + 85.4000 414.0000 6.4343 + 85.4500 442.0000 6.6483 + 85.5000 490.0000 7.0000 + 85.5500 520.0000 7.2111 + 85.6000 532.0000 7.2938 + 85.6500 548.0000 7.4027 + 85.7000 561.0000 7.4900 + 85.7500 567.0000 7.5299 + 85.8000 585.0000 7.6485 + 85.8500 584.0000 7.6420 + 85.9000 558.0000 7.4699 + 85.9500 527.0000 7.2595 + 86.0000 481.0000 6.9354 + 86.0500 424.0000 6.5115 + 86.1000 370.0000 6.0828 + 86.1500 333.0000 5.7706 + 86.2000 312.0000 5.5857 + 86.2500 301.0000 5.4863 + 86.3000 307.0000 5.5408 + 86.3500 314.0000 5.6036 + 86.4000 340.0000 5.8310 + 86.4500 379.0000 6.1563 + 86.5000 427.0000 6.5345 + 86.5500 467.0000 6.8337 + 86.6000 535.0000 7.3144 + 86.6500 584.0000 7.6420 + 86.7000 602.0000 7.7589 + 86.7500 580.0000 7.6158 + 86.8000 532.0000 7.2938 + 86.8500 481.0000 6.9354 + 86.9000 426.0000 6.5269 + 86.9500 379.0000 6.1563 + 87.0000 329.0000 5.7359 + 87.0500 303.0000 5.5045 + 87.1000 288.0000 5.3666 + 87.1500 271.0000 5.2058 + 87.2000 269.0000 5.1865 + 87.2500 267.0000 5.1672 + 87.3000 263.0000 5.1284 + 87.3500 267.0000 5.1672 + 87.4000 260.0000 5.0990 + 87.4500 260.0000 5.0990 + 87.5000 263.0000 5.1284 + 87.5500 263.0000 5.1284 + 87.6000 270.0000 5.1962 + 87.6500 278.0000 5.2726 + 87.7000 293.0000 5.4129 + 87.7500 318.0000 5.6391 + 87.8000 364.0000 6.0332 + 87.8500 424.0000 6.5115 + 87.9000 512.0000 7.1554 + 87.9500 643.0000 8.0187 + 88.0000 817.0000 9.0388 + 88.0500 982.0000 9.9096 + 88.1000 1163.0000 10.7842 + 88.1500 1289.0000 11.3534 + 88.2000 1373.0000 11.7175 + 88.2500 1393.0000 11.8025 + 88.3000 1348.0000 11.6103 + 88.3500 1244.0000 11.1535 + 88.4000 1157.0000 10.7564 + 88.4500 1077.0000 10.3779 + 88.5000 1020.0000 10.0995 + 88.5500 965.0000 9.8234 + 88.6000 907.0000 9.5237 + 88.6500 858.0000 9.2628 + 88.7000 771.0000 8.7807 + 88.7500 647.0000 8.0436 + 88.8000 555.0000 7.4498 + 88.8500 468.0000 6.8411 + 88.9000 405.0000 6.3640 + 88.9500 348.0000 5.8992 + 89.0000 316.0000 5.6214 + 89.0500 291.0000 5.3944 + 89.1000 277.0000 5.2631 + 89.1500 278.0000 5.2726 + 89.2000 270.0000 5.1962 + 89.2500 262.0000 5.1186 + 89.3000 268.0000 5.1769 + 89.3500 270.0000 5.1962 + 89.4000 279.0000 5.2820 + 89.4500 287.0000 5.3572 + 89.5000 300.0000 5.4772 + 89.5500 319.0000 5.6480 + 89.6000 347.0000 5.8907 + 89.6500 378.0000 6.1482 + 89.7000 420.0000 6.4807 + 89.7500 469.0000 6.8484 + 89.8000 536.0000 7.3212 + 89.8500 645.0000 8.0312 + 89.9000 773.0000 8.7920 + 89.9500 925.0000 9.6177 + 90.0000 1115.0000 10.5594 + 90.0500 1254.0000 11.1982 + 90.1000 1367.0000 11.6919 + 90.1500 1400.0000 11.8322 + 90.2000 1327.0000 11.5195 + 90.2500 1188.0000 10.8995 + 90.3000 1038.0000 10.1882 + 90.3500 879.0000 9.3755 + 90.4000 738.0000 8.5907 + 90.4500 644.0000 8.0250 + 90.5000 594.0000 7.7071 + 90.5500 601.0000 7.7524 + 90.6000 643.0000 8.0187 + 90.6500 697.0000 8.3487 + 90.7000 786.0000 8.8657 + 90.7500 842.0000 9.1761 + 90.8000 847.0000 9.2033 + 90.8500 791.0000 8.8938 + 90.9000 702.0000 8.3785 + 90.9500 592.0000 7.6942 + 91.0000 508.0000 7.1274 + 91.0500 418.0000 6.4653 + 91.1000 362.0000 6.0166 + 91.1500 328.0000 5.7271 + 91.2000 299.0000 5.4681 + 91.2500 279.0000 5.2820 + 91.3000 270.0000 5.1962 + 91.3500 257.0000 5.0695 + 91.4000 253.0000 5.0299 + 91.4500 258.0000 5.0794 + 91.5000 257.0000 5.0695 + 91.5500 249.0000 4.9900 + 91.6000 245.0000 4.9497 + 91.6500 257.0000 5.0695 + 91.7000 260.0000 5.0990 + 91.7500 284.0000 5.3292 + 91.8000 296.0000 5.4406 + 91.8500 322.0000 5.6745 + 91.9000 343.0000 5.8566 + 91.9500 382.0000 6.1806 + 92.0000 405.0000 6.3640 + 92.0500 411.0000 6.4109 + 92.1000 416.0000 6.4498 + 92.1500 406.0000 6.3718 + 92.2000 372.0000 6.0992 + 92.2500 353.0000 5.9414 + 92.3000 330.0000 5.7446 + 92.3500 317.0000 5.6303 + 92.4000 313.0000 5.5946 + 92.4500 312.0000 5.5857 + 92.5000 309.0000 5.5588 + 92.5500 303.0000 5.5045 + 92.6000 288.0000 5.3666 + 92.6500 276.0000 5.2536 + 92.7000 264.0000 5.1381 + 92.7500 246.0000 4.9598 + 92.8000 249.0000 4.9900 + 92.8500 241.0000 4.9092 + 92.9000 251.0000 5.0100 + 92.9500 243.0000 4.9295 + 93.0000 246.0000 4.9598 + 93.0500 246.0000 4.9598 + 93.1000 249.0000 4.9900 + 93.1500 244.0000 4.9396 + 93.2000 252.0000 5.0200 + 93.2500 252.0000 5.0200 + 93.3000 258.0000 5.0794 + 93.3500 265.0000 5.1478 + 93.4000 263.0000 5.1284 + 93.4500 284.0000 5.3292 + 93.5000 299.0000 5.4681 + 93.5500 320.0000 5.6569 + 93.6000 344.0000 5.8652 + 93.6500 363.0000 6.0249 + 93.7000 372.0000 6.0992 + 93.7500 358.0000 5.9833 + 93.8000 351.0000 5.9245 + 93.8500 354.0000 5.9498 + 93.9000 330.0000 5.7446 + 93.9500 322.0000 5.6745 + 94.0000 334.0000 5.7793 + 94.0500 339.0000 5.8224 + 94.1000 345.0000 5.8737 + 94.1500 357.0000 5.9749 + 94.2000 360.0000 6.0000 + 94.2500 358.0000 5.9833 + 94.3000 372.0000 6.0992 + 94.3500 425.0000 6.5192 + 94.4000 511.0000 7.1484 + 94.4500 626.0000 7.9120 + 94.5000 770.0000 8.7750 + 94.5500 946.0000 9.7263 + 94.6000 1118.0000 10.5736 + 94.6500 1205.0000 10.9772 + 94.7000 1227.0000 11.0770 + 94.7500 1157.0000 10.7564 + 94.8000 1041.0000 10.2029 + 94.8500 873.0000 9.3434 + 94.9000 715.0000 8.4558 + 94.9500 562.0000 7.4967 + 95.0000 446.0000 6.6783 + 95.0500 377.0000 6.1400 + 95.1000 332.0000 5.7619 + 95.1500 297.0000 5.4498 + 95.2000 282.0000 5.3104 + 95.2500 276.0000 5.2536 + 95.3000 264.0000 5.1381 + 95.3500 261.0000 5.1088 + 95.4000 266.0000 5.1575 + 95.4500 261.0000 5.1088 + 95.5000 253.0000 5.0299 + 95.5500 258.0000 5.0794 + 95.6000 262.0000 5.1186 + 95.6500 260.0000 5.0990 + 95.7000 283.0000 5.3198 + 95.7500 307.0000 5.5408 + 95.8000 344.0000 5.8652 + 95.8500 402.0000 6.3403 + 95.9000 453.0000 6.7305 + 95.9500 529.0000 7.2732 + 96.0000 604.0000 7.7717 + 96.0500 661.0000 8.1302 + 96.1000 672.0000 8.1976 + 96.1500 629.0000 7.9310 + 96.2000 588.0000 7.6681 + 96.2500 510.0000 7.1414 + 96.3000 440.0000 6.6332 + 96.3500 377.0000 6.1400 + 96.4000 330.0000 5.7446 + 96.4500 301.0000 5.4863 + 96.5000 280.0000 5.2915 + 96.5500 269.0000 5.1865 + 96.6000 258.0000 5.0794 + 96.6500 252.0000 5.0200 + 96.7000 251.0000 5.0100 + 96.7500 252.0000 5.0200 + 96.8000 256.0000 5.0596 + 96.8500 253.0000 5.0299 + 96.9000 253.0000 5.0299 + 96.9500 253.0000 5.0299 + 97.0000 262.0000 5.1186 + 97.0500 265.0000 5.1478 + 97.1000 284.0000 5.3292 + 97.1500 291.0000 5.3944 + 97.2000 323.0000 5.6833 + 97.2500 374.0000 6.1156 + 97.3000 431.0000 6.5651 + 97.3500 511.0000 7.1484 + 97.4000 602.0000 7.7589 + 97.4500 678.0000 8.2341 + 97.5000 743.0000 8.6197 + 97.5500 756.0000 8.6948 + 97.6000 717.0000 8.4676 + 97.6500 657.0000 8.1056 + 97.7000 581.0000 7.6223 + 97.7500 490.0000 7.0000 + 97.8000 418.0000 6.4653 + 97.8500 364.0000 6.0332 + 97.9000 335.0000 5.7879 + 97.9500 306.0000 5.5317 + 98.0000 290.0000 5.3852 + 98.0500 286.0000 5.3479 + 98.1000 283.0000 5.3198 + 98.1500 283.0000 5.3198 + 98.2000 274.0000 5.2345 + 98.2500 262.0000 5.1186 + 98.3000 266.0000 5.1575 + 98.3500 261.0000 5.1088 + 98.4000 261.0000 5.1088 + 98.4500 264.0000 5.1381 + 98.5000 269.0000 5.1865 + 98.5500 278.0000 5.2726 + 98.6000 288.0000 5.3666 + 98.6500 306.0000 5.5317 + 98.7000 319.0000 5.6480 + 98.7500 330.0000 5.7446 + 98.8000 343.0000 5.8566 + 98.8500 341.0000 5.8395 + 98.9000 325.0000 5.7009 + 98.9500 318.0000 5.6391 + 99.0000 298.0000 5.4589 + 99.0500 299.0000 5.4681 + 99.1000 288.0000 5.3666 + 99.1500 309.0000 5.5588 + 99.2000 344.0000 5.8652 + 99.2500 382.0000 6.1806 + 99.3000 422.0000 6.4962 + 99.3500 470.0000 6.8557 + 99.4000 512.0000 7.1554 + 99.4500 514.0000 7.1694 + 99.5000 515.0000 7.1764 + 99.5500 488.0000 6.9857 + 99.6000 440.0000 6.6332 + 99.6500 396.0000 6.2929 + 99.7000 366.0000 6.0498 + 99.7500 332.0000 5.7619 + 99.8000 311.0000 5.5767 + 99.8500 305.0000 5.5227 + 99.9000 300.0000 5.4772 + 99.9500 293.0000 5.4129 + 100.0000 286.0000 5.3479 + 100.0500 306.0000 5.5317 + 100.1000 313.0000 5.5946 + 100.1500 317.0000 5.6303 + 100.2000 327.0000 5.7184 + 100.2500 343.0000 5.8566 + 100.3000 330.0000 5.7446 + 100.3500 320.0000 5.6569 + 100.4000 307.0000 5.5408 + 100.4500 298.0000 5.4589 + 100.5000 282.0000 5.3104 + 100.5500 274.0000 5.2345 + 100.6000 266.0000 5.1575 + 100.6500 274.0000 5.2345 + 100.7000 271.0000 5.2058 + 100.7500 274.0000 5.2345 + 100.8000 290.0000 5.3852 + 100.8500 302.0000 5.4955 + 100.9000 321.0000 5.6657 + 100.9500 350.0000 5.9161 + 101.0000 367.0000 6.0581 + 101.0500 386.0000 6.2129 + 101.1000 394.0000 6.2769 + 101.1500 370.0000 6.0828 + 101.2000 356.0000 5.9666 + 101.2500 332.0000 5.7619 + 101.3000 310.0000 5.5678 + 101.3500 288.0000 5.3666 + 101.4000 279.0000 5.2820 + 101.4500 281.0000 5.3009 + 101.5000 274.0000 5.2345 + 101.5500 284.0000 5.3292 + 101.6000 280.0000 5.2915 + 101.6500 270.0000 5.1962 + 101.7000 278.0000 5.2726 + 101.7500 269.0000 5.1865 + 101.8000 273.0000 5.2249 + 101.8500 268.0000 5.1769 + 101.9000 267.0000 5.1672 + 101.9500 265.0000 5.1478 + 102.0000 257.0000 5.3437 + 102.0500 258.0000 5.3541 + 102.1000 267.0000 5.4467 + 102.1500 267.0000 5.4467 + 102.2000 277.0000 5.5478 + 102.2500 287.0000 5.6470 + 102.3000 302.0000 5.7927 + 102.3500 332.0000 6.0736 + 102.4000 360.0000 6.3246 + 102.4500 411.0000 6.7577 + 102.5000 457.0000 7.1259 + 102.5500 524.0000 7.6303 + 102.6000 608.0000 8.2192 + 102.6500 699.0000 8.8129 + 102.7000 861.0000 9.7809 + 102.7500 1096.0000 11.0353 + 102.8000 1377.0000 12.3693 + 102.8500 1685.0000 13.6829 + 102.9000 1901.0000 14.5335 + 102.9500 2069.0000 15.1621 + 103.0000 2016.0000 14.9666 + 103.0500 1800.0000 14.1421 + 103.1000 1500.0000 12.9099 + 103.1500 1181.0000 11.4552 + 103.2000 937.0000 10.2035 + 103.2500 728.0000 8.9938 + 103.3000 629.0000 8.3600 + 103.3500 576.0000 8.0000 + 103.4000 556.0000 7.8599 + 103.4500 535.0000 7.7100 + 103.5000 519.0000 7.5939 + 103.5500 486.0000 7.3485 + 103.6000 465.0000 7.1880 + 103.6500 429.0000 6.9041 + 103.7000 385.0000 6.5405 + 103.7500 361.0000 6.3333 + 103.8000 342.0000 6.1644 + 103.8500 312.0000 5.8878 + 103.9000 293.0000 5.7057 + 103.9500 279.0000 5.5678 + 104.0000 277.0000 5.5478 + 104.0500 265.0000 5.4263 + 104.1000 257.0000 5.3437 + 104.1500 256.0000 5.3333 + 104.2000 250.0000 5.2705 + 104.2500 260.0000 5.3748 + 104.3000 261.0000 5.3852 + 104.3500 258.0000 5.3541 + 104.4000 263.0000 5.4058 + 104.4500 268.0000 5.4569 + 104.5000 284.0000 5.6174 + 104.5500 306.0000 5.8310 + 104.6000 325.0000 6.0093 + 104.6500 337.0000 6.1192 + 104.7000 337.0000 6.1192 + 104.7500 344.0000 6.1824 + 104.8000 340.0000 6.1464 + 104.8500 337.0000 6.1192 + 104.9000 328.0000 6.0369 + 104.9500 321.0000 5.9722 + 105.0000 306.0000 5.8310 + 105.0500 295.0000 5.7252 + 105.1000 289.0000 5.6667 + 105.1500 281.0000 5.5877 + 105.2000 267.0000 5.4467 + 105.2500 266.0000 5.4365 + 105.3000 270.0000 5.4772 + 105.3500 263.0000 5.4058 + 105.4000 256.0000 5.3333 + 105.4500 266.0000 5.4365 + 105.5000 264.0000 5.4160 + 105.5500 259.0000 5.3645 + 105.6000 261.0000 5.3852 + 105.6500 261.0000 5.3852 + 105.7000 258.0000 5.3541 + 105.7500 253.0000 5.3020 + 105.8000 248.0000 5.2493 + 105.8500 244.0000 5.2068 + 105.9000 249.0000 5.2599 + 105.9500 251.0000 5.2810 + 106.0000 245.0000 5.2175 + 106.0500 245.0000 5.2175 + 106.1000 247.0000 5.2387 + 106.1500 247.0000 5.2387 + 106.2000 254.0000 5.3125 + 106.2500 259.0000 5.3645 + 106.3000 250.0000 5.2705 + 106.3500 251.0000 5.2810 + 106.4000 258.0000 5.3541 + 106.4500 252.0000 5.2915 + 106.5000 255.0000 5.3229 + 106.5500 259.0000 5.3645 + 106.6000 256.0000 5.3333 + 106.6500 264.0000 5.4160 + 106.7000 268.0000 5.4569 + 106.7500 281.0000 5.5877 + 106.8000 303.0000 5.8023 + 106.8500 331.0000 6.0645 + 106.9000 371.0000 6.4205 + 106.9500 420.0000 6.8313 + 107.0000 484.0000 7.3333 + 107.0500 532.0000 7.6884 + 107.1000 576.0000 8.0000 + 107.1500 582.0000 8.0416 + 107.2000 563.0000 7.9092 + 107.2500 527.0000 7.6522 + 107.3000 490.0000 7.3786 + 107.3500 465.0000 7.1880 + 107.4000 467.0000 7.2034 + 107.4500 449.0000 7.0632 + 107.5000 416.0000 6.7987 + 107.5500 393.0000 6.6081 + 107.6000 366.0000 6.3770 + 107.6500 331.0000 6.0645 + 107.7000 316.0000 5.9255 + 107.7500 297.0000 5.7446 + 107.8000 294.0000 5.7155 + 107.8500 292.0000 5.6960 + 107.9000 286.0000 5.6372 + 107.9500 295.0000 5.7252 + 108.0000 306.0000 6.1847 + 108.0500 315.0000 6.2750 + 108.1000 334.0000 6.4614 + 108.1500 373.0000 6.8282 + 108.2000 406.0000 7.1239 + 108.2500 447.0000 7.4750 + 108.3000 499.0000 7.8978 + 108.3500 507.0000 7.9608 + 108.4000 506.0000 7.9530 + 108.4500 488.0000 7.8102 + 108.5000 432.0000 7.3485 + 108.5500 391.0000 6.9911 + 108.6000 342.0000 6.5383 + 108.6500 315.0000 6.2750 + 108.7000 292.0000 6.0415 + 108.7500 275.0000 5.8630 + 108.8000 274.0000 5.8523 + 108.8500 259.0000 5.6899 + 108.9000 250.0000 5.5902 + 108.9500 258.0000 5.6789 + 109.0000 252.0000 5.6125 + 109.0500 255.0000 5.6458 + 109.1000 254.0000 5.6347 + 109.1500 253.0000 5.6236 + 109.2000 254.0000 5.6347 + 109.2500 252.0000 5.6125 + 109.3000 257.0000 5.6679 + 109.3500 250.0000 5.5902 + 109.4000 255.0000 5.6458 + 109.4500 251.0000 5.6013 + 109.5000 254.0000 5.6347 + 109.5500 260.0000 5.7009 + 109.6000 249.0000 5.5790 + 109.6500 253.0000 5.6236 + 109.7000 254.0000 5.6347 + 109.7500 259.0000 5.6899 + 109.8000 268.0000 5.7879 + 109.8500 270.0000 5.8095 + 109.9000 284.0000 5.9582 + 109.9500 305.0000 6.1745 + 110.0000 322.0000 6.3443 + 110.0500 364.0000 6.7454 + 110.1000 417.0000 7.2198 + 110.1500 470.0000 7.6649 + 110.2000 573.0000 8.4632 + 110.2500 678.0000 9.2060 + 110.3000 771.0000 9.8171 + 110.3500 847.0000 10.2896 + 110.4000 854.0000 10.3320 + 110.4500 794.0000 9.9624 + 110.5000 720.0000 9.4868 + 110.5500 611.0000 8.7393 + 110.6000 520.0000 8.0623 + 110.6500 463.0000 7.6076 + 110.7000 412.0000 7.1764 + 110.7500 399.0000 7.0622 + 110.8000 416.0000 7.2111 + 110.8500 428.0000 7.3144 + 110.9000 432.0000 7.3485 + 110.9500 420.0000 7.2457 + 111.0000 402.0000 7.0887 + 111.0500 364.0000 6.7454 + 111.1000 348.0000 6.5955 + 111.1500 334.0000 6.4614 + 111.2000 321.0000 6.3344 + 111.2500 330.0000 6.4226 + 111.3000 342.0000 6.5383 + 111.3500 380.0000 6.8920 + 111.4000 385.0000 6.9372 + 111.4500 420.0000 7.2457 + 111.5000 441.0000 7.4246 + 111.5500 465.0000 7.6240 + 111.6000 444.0000 7.4498 + 111.6500 406.0000 7.1239 + 111.7000 383.0000 6.9192 + 111.7500 345.0000 6.5670 + 111.8000 332.0000 6.4420 + 111.8500 321.0000 6.3344 + 111.9000 308.0000 6.2048 + 111.9500 292.0000 6.0415 + 112.0000 303.0000 6.1543 + 112.0500 314.0000 6.2650 + 112.1000 333.0000 6.4517 + 112.1500 379.0000 6.8829 + 112.2000 438.0000 7.3993 + 112.2500 505.0000 7.9451 + 112.3000 594.0000 8.6168 + 112.3500 659.0000 9.0761 + 112.4000 717.0000 9.4670 + 112.4500 738.0000 9.6047 + 112.5000 710.0000 9.4207 + 112.5500 642.0000 8.9582 + 112.6000 547.0000 8.2689 + 112.6500 492.0000 7.8422 + 112.7000 421.0000 7.2543 + 112.7500 386.0000 6.9462 + 112.8000 344.0000 6.5574 + 112.8500 337.0000 6.4904 + 112.9000 350.0000 6.6144 + 112.9500 364.0000 6.7454 + 113.0000 415.0000 7.2024 + 113.0500 506.0000 7.9530 + 113.1000 586.0000 8.5586 + 113.1500 674.0000 9.1788 + 113.2000 750.0000 9.6825 + 113.2500 787.0000 9.9184 + 113.3000 753.0000 9.7018 + 113.3500 682.0000 9.2331 + 113.4000 597.0000 8.6386 + 113.4500 499.0000 7.8978 + 113.5000 417.0000 7.2198 + 113.5500 362.0000 6.7268 + 113.6000 340.0000 6.5192 + 113.6500 302.0000 6.1441 + 113.7000 286.0000 5.9791 + 113.7500 280.0000 5.9161 + 113.8000 283.0000 5.9477 + 113.8500 276.0000 5.8737 + 113.9000 282.0000 5.9372 + 113.9500 284.0000 5.9582 + 114.0000 295.0000 6.4918 + 114.0500 310.0000 6.6548 + 114.1000 319.0000 6.7507 + 114.1500 321.0000 6.7718 + 114.2000 304.0000 6.5900 + 114.2500 298.0000 6.5247 + 114.3000 293.0000 6.4697 + 114.3500 283.0000 6.3583 + 114.4000 277.0000 6.2906 + 114.4500 269.0000 6.1991 + 114.5000 265.0000 6.1528 + 114.5500 277.0000 6.2906 + 114.6000 283.0000 6.3583 + 114.6500 283.0000 6.3583 + 114.7000 293.0000 6.4697 + 114.7500 303.0000 6.5792 + 114.8000 320.0000 6.7612 + 114.8500 316.0000 6.7188 + 114.9000 331.0000 6.8765 + 114.9500 346.0000 7.0305 + 115.0000 327.0000 6.8348 + 115.0500 328.0000 6.8452 + 115.1000 306.0000 6.6117 + 115.1500 291.0000 6.4476 + 115.2000 286.0000 6.3920 + 115.2500 278.0000 6.3019 + 115.3000 273.0000 6.2450 + 115.3500 267.0000 6.1760 + 115.4000 272.0000 6.2335 + 115.4500 257.0000 6.0592 + 115.5000 260.0000 6.0945 + 115.5500 265.0000 6.1528 + 115.6000 264.0000 6.1412 + 115.6500 272.0000 6.2335 + 115.7000 270.0000 6.2106 + 115.7500 268.0000 6.1875 + 115.8000 269.0000 6.1991 + 115.8500 287.0000 6.4031 + 115.9000 292.0000 6.4587 + 115.9500 295.0000 6.4918 + 116.0000 317.0000 6.7295 + 116.0500 335.0000 6.9179 + 116.1000 364.0000 7.2111 + 116.1500 410.0000 7.6532 + 116.2000 477.0000 8.2549 + 116.2500 556.0000 8.9123 + 116.3000 642.0000 9.5768 + 116.3500 755.0000 10.3854 + 116.4000 864.0000 11.1098 + 116.4500 946.0000 11.6251 + 116.5000 970.0000 11.7716 + 116.5500 941.0000 11.5943 + 116.6000 870.0000 11.1484 + 116.6500 759.0000 10.4129 + 116.7000 647.0000 9.6140 + 116.7500 540.0000 8.7831 + 116.8000 468.0000 8.1766 + 116.8500 418.0000 7.7275 + 116.9000 379.0000 7.3582 + 116.9500 381.0000 7.3776 + 117.0000 405.0000 7.6064 + 117.0500 446.0000 7.9821 + 117.1000 476.0000 8.2462 + 117.1500 523.0000 8.6437 + 117.2000 561.0000 8.9523 + 117.2500 555.0000 8.9043 + 117.3000 529.0000 8.6932 + 117.3500 485.0000 8.3238 + 117.4000 436.0000 7.8921 + 117.4500 398.0000 7.5404 + 117.5000 355.0000 7.1214 + 117.5500 322.0000 6.7823 + 117.6000 304.0000 6.5900 + 117.6500 285.0000 6.3808 + 117.7000 270.0000 6.2106 + 117.7500 278.0000 6.3019 + 117.8000 260.0000 6.0945 + 117.8500 268.0000 6.1875 + 117.9000 264.0000 6.1412 + 117.9500 265.0000 6.1528 + 118.0000 263.0000 6.1296 + 118.0500 267.0000 6.1760 + 118.1000 286.0000 6.3920 + 118.1500 293.0000 6.4697 + 118.2000 291.0000 6.4476 + 118.2500 319.0000 6.7507 + 118.3000 366.0000 7.2309 + 118.3500 411.0000 7.6625 + 118.4000 461.0000 8.1152 + 118.4500 489.0000 8.3581 + 118.5000 521.0000 8.6272 + 118.5500 555.0000 8.9043 + 118.6000 550.0000 8.8641 + 118.6500 511.0000 8.5440 + 118.7000 486.0000 8.3324 + 118.7500 436.0000 7.8921 + 118.8000 392.0000 7.4833 + 118.8500 368.0000 7.2506 + 118.9000 330.0000 6.8661 + 118.9500 328.0000 6.8452 + 119.0000 343.0000 7.0000 + 119.0500 371.0000 7.2801 + 119.1000 394.0000 7.5024 + 119.1500 441.0000 7.9373 + 119.2000 468.0000 8.1766 + 119.2500 469.0000 8.1854 + 119.3000 456.0000 8.0711 + 119.3500 416.0000 7.7090 + 119.4000 394.0000 7.5024 + 119.4500 361.0000 7.1813 + 119.5000 330.0000 6.8661 + 119.5500 312.0000 6.6762 + 119.6000 293.0000 6.4697 + 119.6500 285.0000 6.3808 + 119.7000 286.0000 6.3920 + 119.7500 275.0000 6.2678 + 119.8000 274.0000 6.2564 + 119.8500 281.0000 6.3358 + 119.9000 279.0000 6.3133 + 119.9500 298.0000 6.5247 + 120.0000 312.0000 7.2111 diff --git a/tests/CreateSample.ipynb b/tests/CreateSample.ipynb index 66f1b8e3..3d1fa32f 100644 --- a/tests/CreateSample.ipynb +++ b/tests/CreateSample.ipynb @@ -5,7 +5,9 @@ "id": "8a365a14", "metadata": {}, "source": [ - "# Creating sample" + "# Creating sample\n", + "\n", + "This notebook shows how we can create a sample from atoms and calculate diffraction profiles using both constant wavelength and time-of-flight experiment types." ] }, { @@ -23,6 +25,7 @@ "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", "from easyDiffractionLib.Profiles.P1D import Instrument1DTOFParameters as TOFParams\n", + "from easyDiffractionLib.Profiles.P1D import Powder1DParameters\n", "\n", "from easyCore.Fitting.Fitting import Fitter\n", "\n", @@ -53,7 +56,7 @@ "id": "19a39b25", "metadata": {}, "source": [ - "Create an atom" + "Create an atom using `Site` interface" ] }, { @@ -99,7 +102,7 @@ "id": "d4532d8b", "metadata": {}, "source": [ - "Add another atom" + "Add another atom (using `Phase` interface)" ] }, { @@ -128,13 +131,13 @@ "outputs": [], "source": [ "import py3Dmol\n", - "viewer2 = py3Dmol.view()\n", - "viewer2.addModel(phase.to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", - "viewer2.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", - "viewer2.addUnitCell()\n", - "viewer2.replicateUnitCell(2,2,2)\n", - "#viewer2.setStyle({'sym':2},{'sphere':{'scale':.5,'color':'blue'},'stick':{'color':'cyan'}})\n", - "viewer2.zoomTo()" + "viewer = py3Dmol.view()\n", + "viewer.addModel(phase.to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", + "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", + "viewer.addUnitCell()\n", + "viewer.replicateUnitCell(2,2,2)\n", + "#viewer.setStyle({'sym':2},{'sphere':{'scale':.5,'color':'blue'},'stick':{'color':'cyan'}})\n", + "viewer.zoomTo()" ] }, { @@ -172,10 +175,33 @@ "outputs": [], "source": [ "parameters = CWParams.default()\n", - "#parameters.length_a = 8.56\n", - "#parameters.length_c = 6.12\n", - "#parameters.length_b = 8.56\n", - "parameters.length_a = 5.6402" + "\n", + "parameters.length_a = 5.6402\n", + "parameters.resolution_u = 0.1447\n", + "parameters.resolution_v = -0.4252\n", + "parameters.resolution_w = 0.3864\n", + "parameters.resolution_x = 0.0\n", + "parameters.resolution_y = 0.0" + ] + }, + { + "cell_type": "markdown", + "id": "370f0baa", + "metadata": {}, + "source": [ + "Create and modify a Pattern object" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70fa1571", + "metadata": {}, + "outputs": [], + "source": [ + "pattern = Powder1DParameters.default()\n", + "pattern.zero_shift = 0.0\n", + "pattern.scale = 100.0" ] }, { @@ -183,7 +209,7 @@ "id": "42da041a", "metadata": {}, "source": [ - "Finally, create a Sample" + "Finally, create the Sample" ] }, { @@ -201,7 +227,8 @@ "id": "00e24eab", "metadata": {}, "source": [ - "Calculate the profile" + "Calculate the profile - using the calculator we defined previously.\n", + "Note that we don't run anything on the `Sample` object but on a separate `Calculator` instance" ] }, { @@ -215,7 +242,6 @@ "y_data = calculator.fit_func(x_data)\n", "\n", "%matplotlib notebook\n", - "\n", "plt.plot(x_data, y_data, label='CW Simulation')\n", "plt.legend()" ] @@ -228,6 +254,33 @@ "## Switch to TOF" ] }, + { + "cell_type": "markdown", + "id": "ea998649", + "metadata": {}, + "source": [ + "Retrieve the phases and pattern" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eedade0f", + "metadata": {}, + "outputs": [], + "source": [ + "phases = S.phases[0]\n", + "pattern = S.pattern" + ] + }, + { + "cell_type": "markdown", + "id": "161efebd", + "metadata": {}, + "source": [ + "Modify the parameters to correspond to a TOF experiment" + ] + }, { "cell_type": "code", "execution_count": null, @@ -239,7 +292,18 @@ "parameters.length_a = 5.6402\n", "parameters.dtt1 = 6167.24700\n", "parameters.dtt2 = -2.28000\n", - "parameters.ttheta_bank = 145.00\n", + "parameters.ttheta_bank = 145.00" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2aa1648d", + "metadata": {}, + "outputs": [], + "source": [ + "pattern.zero_shift = 0.0\n", + "pattern.scale = 100.0\n", "\n", "tof_str = 'Npowder1DTOF'\n", "interfaces = calculator.interface_compatability(tof_str)\n", @@ -249,6 +313,14 @@ "S = Sample(phases=phases, parameters=parameters, calculator=calculator)\n" ] }, + { + "cell_type": "markdown", + "id": "f6676f54", + "metadata": {}, + "source": [ + "Calculate the profile again, this time based on the TOF parameters" + ] + }, { "cell_type": "code", "execution_count": null, @@ -256,7 +328,7 @@ "metadata": {}, "outputs": [], "source": [ - "x_data = np.linspace(1, 120, 5)\n", + "x_data = np.linspace(5000, 60000, 500)\n", "y_data = calculator.fit_func(x_data)\n", "\n", "%matplotlib notebook\n", @@ -290,7 +362,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.10" + "version": "3.7.9" } }, "nbformat": 4, diff --git a/tests/test4.py b/tests/test4.py index da67571d..070a7c87 100644 --- a/tests/test4.py +++ b/tests/test4.py @@ -47,8 +47,8 @@ x_data = np.linspace(1, 120, 500) y_data = calculator.fit_func(x_data) -# plt.plot(x_data, y_data, label="CW") -# plt.show() +plt.plot(x_data, y_data, label="CW") +plt.show() phases = S.phases[0] pattern = S.pattern @@ -63,13 +63,13 @@ pattern.zero_shift = 0.0 pattern.scale = 100.0 -# tof_str = 'Npowder1DTOF' -# interfaces = calculator.interface_compatability(tof_str) -# calculator.switch(interfaces[0]) +tof_str = 'Npowder1DTOF' +interfaces = calculator.interface_compatability(tof_str) +calculator.switch(interfaces[0]) S = Sample(phases=phases, parameters=parameters, pattern=pattern, calculator=calculator) -x_data = np.linspace(5000, 60000, 50) +x_data = np.linspace(5000, 60000, 500) y_data = calculator.fit_func(x_data) plt.plot(x_data, y_data, label="TOF") From 1fd635a9f7bbf2b35dc4b60a36c1f3f6135fd43a Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 21 Sep 2021 13:54:25 +0200 Subject: [PATCH 178/312] Temporary workaround to get ADP value (GSASII) --- easyDiffractionLib/Interfaces/GSASII.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index f4fadd79..d25f4dc1 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -151,6 +151,8 @@ def dump_cif(self, *args, **kwargs): def get_value(self, key, item_key): item = borg.map.get_item_by_key(key) + if item_key in ['Uiso', 'Uani', 'Biso', 'Bani']: + return getattr(getattr(item, 'adp'), item_key).raw_value return getattr(item, item_key).raw_value def __createModel(self, model): From 4c89ad205bfd4638315296b95877f7ba6ea96bfb Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 21 Sep 2021 13:54:54 +0200 Subject: [PATCH 179/312] Fix return value; back to develop branch --- easyDiffractionLib/Calculators/CFML.py | 2 +- easyDiffractionLib/Calculators/GSASII.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 194e2cfb..e81bb809 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -38,7 +38,7 @@ def conditionsUpdate(self, _, **kwargs): self.conditions[key]= value def conditionsReturn(self, _, name): - self.conditions.get(name) + return self.conditions.get(name) def calculate(self, x_array: np.ndarray) -> np.ndarray: """ diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 578ead58..11d99f68 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -41,7 +41,7 @@ def conditionsUpdate(self, _, **kwargs): self.conditions[key]= value def conditionsReturn(self, _, name): - self.conditions.get(name) + return self.conditions.get(name) def create_temp_prm(self): if self.filename is None: diff --git a/pyproject.toml b/pyproject.toml index 5e06837f..2d5645d5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ matplotlib = "^3.4" # easyScience CFML = '^0.0.1' GSASII = '^0.0.1' -easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'param_value_workaround' } +easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] pytest = "^5.2" From 207bdd25aa6b8ce016c01dfa49c84b394c755fcd Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 27 Sep 2021 11:03:06 +0200 Subject: [PATCH 180/312] Add PbSO4 fitting notebook --- Notebooks/PbSO4/D1A@ILL.xye | 2202 +++++++++++++++++ Notebooks/PbSO4/FittingPowder1D.ipynb | 3192 +++++++++++++++++++++++++ Notebooks/PbSO4/PbSO4.cif | 25 + 3 files changed, 5419 insertions(+) create mode 100644 Notebooks/PbSO4/D1A@ILL.xye create mode 100644 Notebooks/PbSO4/FittingPowder1D.ipynb create mode 100644 Notebooks/PbSO4/PbSO4.cif diff --git a/Notebooks/PbSO4/D1A@ILL.xye b/Notebooks/PbSO4/D1A@ILL.xye new file mode 100644 index 00000000..6ff09d36 --- /dev/null +++ b/Notebooks/PbSO4/D1A@ILL.xye @@ -0,0 +1,2202 @@ +# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992) + 10.0000 220.0000 14.8324 + 10.0500 214.0000 14.6287 + 10.1000 219.0000 14.7986 + 10.1500 224.0000 14.9666 + 10.2000 198.0000 14.0712 + 10.2500 229.0000 15.1327 + 10.3000 224.0000 14.9666 + 10.3500 216.0000 14.6969 + 10.4000 202.0000 14.2127 + 10.4500 229.0000 15.1327 + 10.5000 202.0000 14.2127 + 10.5500 215.0000 14.6629 + 10.6000 215.0000 14.6629 + 10.6500 196.0000 14.0000 + 10.7000 235.0000 15.3297 + 10.7500 207.0000 14.3875 + 10.8000 205.0000 14.3178 + 10.8500 238.0000 15.4272 + 10.9000 202.0000 14.2127 + 10.9500 213.0000 14.5945 + 11.0000 226.0000 15.0333 + 11.0500 198.0000 14.0712 + 11.1000 222.0000 14.8997 + 11.1500 186.0000 13.6382 + 11.2000 216.0000 14.6969 + 11.2500 218.0000 14.7648 + 11.3000 225.0000 15.0000 + 11.3500 200.0000 14.1421 + 11.4000 196.0000 14.0000 + 11.4500 224.0000 14.9666 + 11.5000 199.0000 14.1067 + 11.5500 204.0000 14.2829 + 11.6000 189.0000 13.7477 + 11.6500 211.0000 14.5258 + 11.7000 190.0000 13.7840 + 11.7500 184.0000 13.5647 + 11.8000 204.0000 14.2829 + 11.8500 204.0000 14.2829 + 11.9000 219.0000 14.7986 + 11.9500 207.0000 14.3875 + 12.0000 227.0000 15.0665 + 12.0500 211.0000 10.2713 + 12.1000 193.0000 9.8234 + 12.1500 206.0000 10.1489 + 12.2000 208.0000 10.1980 + 12.2500 191.0000 9.7724 + 12.3000 194.0000 9.8489 + 12.3500 185.0000 9.6177 + 12.4000 200.0000 10.0000 + 12.4500 203.0000 10.0747 + 12.5000 197.0000 9.9247 + 12.5500 203.0000 10.0747 + 12.6000 200.0000 10.0000 + 12.6500 200.0000 10.0000 + 12.7000 205.0000 10.1242 + 12.7500 208.0000 10.1980 + 12.8000 205.0000 10.1242 + 12.8500 201.0000 10.0250 + 12.9000 221.0000 10.5119 + 12.9500 218.0000 10.4403 + 13.0000 218.0000 10.4403 + 13.0500 216.0000 10.3923 + 13.1000 202.0000 10.0499 + 13.1500 206.0000 10.1489 + 13.2000 197.0000 9.9247 + 13.2500 210.0000 10.2470 + 13.3000 199.0000 9.9750 + 13.3500 219.0000 10.4642 + 13.4000 192.0000 9.7980 + 13.4500 211.0000 10.2713 + 13.5000 199.0000 9.9750 + 13.5500 196.0000 9.8995 + 13.6000 195.0000 9.8742 + 13.6500 203.0000 10.0747 + 13.7000 202.0000 10.0499 + 13.7500 200.0000 10.0000 + 13.8000 199.0000 9.9750 + 13.8500 191.0000 9.7724 + 13.9000 204.0000 10.0995 + 13.9500 191.0000 9.7724 + 14.0000 200.0000 10.0000 + 14.0500 199.0000 9.9750 + 14.1000 197.0000 9.9247 + 14.1500 202.0000 10.0499 + 14.2000 210.0000 10.2470 + 14.2500 202.0000 10.0499 + 14.3000 198.0000 9.9499 + 14.3500 191.0000 9.7724 + 14.4000 194.0000 9.8489 + 14.4500 198.0000 9.9499 + 14.5000 194.0000 9.8489 + 14.5500 193.0000 9.8234 + 14.6000 212.0000 10.2956 + 14.6500 214.0000 10.3441 + 14.7000 197.0000 9.9247 + 14.7500 195.0000 9.8742 + 14.8000 205.0000 10.1242 + 14.8500 209.0000 10.2225 + 14.9000 203.0000 10.0747 + 14.9500 197.0000 9.9247 + 15.0000 191.0000 9.7724 + 15.0500 192.0000 9.7980 + 15.1000 215.0000 10.3682 + 15.1500 194.0000 9.8489 + 15.2000 189.0000 9.7211 + 15.2500 188.0000 9.6954 + 15.3000 202.0000 10.0499 + 15.3500 201.0000 10.0250 + 15.4000 198.0000 9.9499 + 15.4500 208.0000 10.1980 + 15.5000 197.0000 9.9247 + 15.5500 187.0000 9.6695 + 15.6000 187.0000 9.6695 + 15.6500 190.0000 9.7468 + 15.7000 197.0000 9.9247 + 15.7500 200.0000 10.0000 + 15.8000 193.0000 9.8234 + 15.8500 180.0000 9.4868 + 15.9000 194.0000 9.8489 + 15.9500 206.0000 10.1489 + 16.0000 195.0000 9.8742 + 16.0500 193.0000 9.8234 + 16.1000 205.0000 10.1242 + 16.1500 194.0000 9.8489 + 16.2000 196.0000 9.8995 + 16.2500 194.0000 9.8489 + 16.3000 199.0000 9.9750 + 16.3500 207.0000 10.1735 + 16.4000 188.0000 9.6954 + 16.4500 203.0000 10.0747 + 16.5000 188.0000 9.6954 + 16.5500 180.0000 9.4868 + 16.6000 198.0000 9.9499 + 16.6500 200.0000 10.0000 + 16.7000 201.0000 10.0250 + 16.7500 210.0000 10.2470 + 16.8000 206.0000 10.1489 + 16.8500 189.0000 9.7211 + 16.9000 194.0000 9.8489 + 16.9500 187.0000 9.6695 + 17.0000 195.0000 9.8742 + 17.0500 201.0000 10.0250 + 17.1000 197.0000 9.9247 + 17.1500 206.0000 10.1489 + 17.2000 208.0000 10.1980 + 17.2500 199.0000 9.9750 + 17.3000 192.0000 9.7980 + 17.3500 193.0000 9.8234 + 17.4000 204.0000 10.0995 + 17.4500 201.0000 10.0250 + 17.5000 200.0000 10.0000 + 17.5500 177.0000 9.4074 + 17.6000 193.0000 9.8234 + 17.6500 199.0000 9.9750 + 17.7000 201.0000 10.0250 + 17.7500 194.0000 9.8489 + 17.8000 184.0000 9.5917 + 17.8500 192.0000 9.7980 + 17.9000 199.0000 9.9750 + 17.9500 190.0000 9.7468 + 18.0000 183.0000 9.5656 + 18.0500 189.0000 7.9373 + 18.1000 196.0000 8.0829 + 18.1500 196.0000 8.0829 + 18.2000 198.0000 8.1240 + 18.2500 210.0000 8.3666 + 18.3000 212.0000 8.4063 + 18.3500 219.0000 8.5440 + 18.4000 198.0000 8.1240 + 18.4500 195.0000 8.0623 + 18.5000 198.0000 8.1240 + 18.5500 191.0000 7.9791 + 18.6000 193.0000 8.0208 + 18.6500 197.0000 8.1035 + 18.7000 194.0000 8.0416 + 18.7500 187.0000 7.8951 + 18.8000 209.0000 8.3467 + 18.8500 187.0000 7.8951 + 18.9000 198.0000 8.1240 + 18.9500 206.0000 8.2865 + 19.0000 197.0000 8.1035 + 19.0500 191.0000 7.9791 + 19.1000 200.0000 8.1650 + 19.1500 207.0000 8.3066 + 19.2000 205.0000 8.2664 + 19.2500 198.0000 8.1240 + 19.3000 196.0000 8.0829 + 19.3500 209.0000 8.3467 + 19.4000 211.0000 8.3865 + 19.4500 203.0000 8.2260 + 19.5000 200.0000 8.1650 + 19.5500 192.0000 8.0000 + 19.6000 208.0000 8.3267 + 19.6500 213.0000 8.4261 + 19.7000 221.0000 8.5829 + 19.7500 216.0000 8.4853 + 19.8000 226.0000 8.6795 + 19.8500 228.0000 8.7178 + 19.9000 228.0000 8.7178 + 19.9500 215.0000 8.4656 + 20.0000 224.0000 8.6410 + 20.0500 226.0000 8.6795 + 20.1000 213.0000 8.4261 + 20.1500 239.0000 8.9256 + 20.2000 250.0000 9.1287 + 20.2500 247.0000 9.0738 + 20.3000 240.0000 8.9443 + 20.3500 231.0000 8.7750 + 20.4000 236.0000 8.8694 + 20.4500 223.0000 8.6217 + 20.5000 231.0000 8.7750 + 20.5500 226.0000 8.6795 + 20.6000 214.0000 8.4459 + 20.6500 208.0000 8.3267 + 20.7000 214.0000 8.4459 + 20.7500 196.0000 8.0829 + 20.8000 204.0000 8.2462 + 20.8500 199.0000 8.1445 + 20.9000 186.0000 7.8740 + 20.9500 192.0000 8.0000 + 21.0000 199.0000 8.1445 + 21.0500 200.0000 8.1650 + 21.1000 184.0000 7.8316 + 21.1500 184.0000 7.8316 + 21.2000 189.0000 7.9373 + 21.2500 182.0000 7.7889 + 21.3000 184.0000 7.8316 + 21.3500 185.0000 7.8528 + 21.4000 195.0000 8.0623 + 21.4500 190.0000 7.9582 + 21.5000 194.0000 8.0416 + 21.5500 185.0000 7.8528 + 21.6000 183.0000 7.8102 + 21.6500 193.0000 8.0208 + 21.7000 194.0000 8.0416 + 21.7500 193.0000 8.0208 + 21.8000 188.0000 7.9162 + 21.8500 191.0000 7.9791 + 21.9000 189.0000 7.9373 + 21.9500 188.0000 7.9162 + 22.0000 201.0000 8.1854 + 22.0500 195.0000 8.0623 + 22.1000 205.0000 8.2664 + 22.1500 200.0000 8.1650 + 22.2000 200.0000 8.1650 + 22.2500 192.0000 8.0000 + 22.3000 197.0000 8.1035 + 22.3500 204.0000 8.2462 + 22.4000 207.0000 8.3066 + 22.4500 192.0000 8.0000 + 22.5000 201.0000 8.1854 + 22.5500 190.0000 7.9582 + 22.6000 195.0000 8.0623 + 22.6500 194.0000 8.0416 + 22.7000 182.0000 7.7889 + 22.7500 189.0000 7.9373 + 22.8000 196.0000 8.0829 + 22.8500 196.0000 8.0829 + 22.9000 200.0000 8.1650 + 22.9500 190.0000 7.9582 + 23.0000 183.0000 7.8102 + 23.0500 199.0000 8.1445 + 23.1000 187.0000 7.8951 + 23.1500 196.0000 8.0829 + 23.2000 191.0000 7.9791 + 23.2500 191.0000 7.9791 + 23.3000 195.0000 8.0623 + 23.3500 194.0000 8.0416 + 23.4000 192.0000 8.0000 + 23.4500 182.0000 7.7889 + 23.5000 188.0000 7.9162 + 23.5500 203.0000 8.2260 + 23.6000 187.0000 7.8951 + 23.6500 192.0000 8.0000 + 23.7000 206.0000 8.2865 + 23.7500 201.0000 8.1854 + 23.8000 184.0000 7.8316 + 23.8500 192.0000 8.0000 + 23.9000 205.0000 8.2664 + 23.9500 196.0000 8.0829 + 24.0000 193.0000 8.0208 + 24.0500 194.0000 6.9642 + 24.1000 195.0000 6.9821 + 24.1500 194.0000 6.9642 + 24.2000 201.0000 7.0887 + 24.2500 193.0000 6.9462 + 24.3000 176.0000 6.6332 + 24.3500 187.0000 6.8374 + 24.4000 188.0000 6.8557 + 24.4500 196.0000 7.0000 + 24.5000 192.0000 6.9282 + 24.5500 185.0000 6.8007 + 24.6000 195.0000 6.9821 + 24.6500 198.0000 7.0356 + 24.7000 205.0000 7.1589 + 24.7500 200.0000 7.0711 + 24.8000 208.0000 7.2111 + 24.8500 195.0000 6.9821 + 24.9000 187.0000 6.8374 + 24.9500 193.0000 6.9462 + 25.0000 197.0000 7.0178 + 25.0500 202.0000 7.1063 + 25.1000 193.0000 6.9462 + 25.1500 196.0000 7.0000 + 25.2000 202.0000 7.1063 + 25.2500 201.0000 7.0887 + 25.3000 197.0000 7.0178 + 25.3500 204.0000 7.1414 + 25.4000 208.0000 7.2111 + 25.4500 206.0000 7.1764 + 25.5000 212.0000 7.2801 + 25.5500 207.0000 7.1937 + 25.6000 207.0000 7.1937 + 25.6500 212.0000 7.2801 + 25.7000 216.0000 7.3485 + 25.7500 218.0000 7.3824 + 25.8000 221.0000 7.4330 + 25.8500 218.0000 7.3824 + 25.9000 207.0000 7.1937 + 25.9500 203.0000 7.1239 + 26.0000 204.0000 7.1414 + 26.0500 202.0000 7.1063 + 26.1000 206.0000 7.1764 + 26.1500 202.0000 7.1063 + 26.2000 202.0000 7.1063 + 26.2500 181.0000 6.7268 + 26.3000 193.0000 6.9462 + 26.3500 205.0000 7.1589 + 26.4000 198.0000 7.0356 + 26.4500 196.0000 7.0000 + 26.5000 197.0000 7.0178 + 26.5500 195.0000 6.9821 + 26.6000 201.0000 7.0887 + 26.6500 205.0000 7.1589 + 26.7000 195.0000 6.9821 + 26.7500 196.0000 7.0000 + 26.8000 196.0000 7.0000 + 26.8500 205.0000 7.1589 + 26.9000 198.0000 7.0356 + 26.9500 200.0000 7.0711 + 27.0000 199.0000 7.0534 + 27.0500 180.0000 6.7082 + 27.1000 187.0000 6.8374 + 27.1500 193.0000 6.9462 + 27.2000 197.0000 7.0178 + 27.2500 197.0000 7.0178 + 27.3000 196.0000 7.0000 + 27.3500 194.0000 6.9642 + 27.4000 197.0000 7.0178 + 27.4500 204.0000 7.1414 + 27.5000 201.0000 7.0887 + 27.5500 187.0000 6.8374 + 27.6000 191.0000 6.9101 + 27.6500 205.0000 7.1589 + 27.7000 200.0000 7.0711 + 27.7500 198.0000 7.0356 + 27.8000 200.0000 7.0711 + 27.8500 204.0000 7.1414 + 27.9000 196.0000 7.0000 + 27.9500 195.0000 6.9821 + 28.0000 194.0000 6.9642 + 28.0500 200.0000 7.0711 + 28.1000 198.0000 7.0356 + 28.1500 201.0000 7.0887 + 28.2000 208.0000 7.2111 + 28.2500 205.0000 7.1589 + 28.3000 211.0000 7.2629 + 28.3500 211.0000 7.2629 + 28.4000 220.0000 7.4162 + 28.4500 220.0000 7.4162 + 28.5000 212.0000 7.2801 + 28.5500 208.0000 7.2111 + 28.6000 214.0000 7.3144 + 28.6500 226.0000 7.5166 + 28.7000 235.0000 7.6649 + 28.7500 233.0000 7.6322 + 28.8000 237.0000 7.6974 + 28.8500 242.0000 7.7782 + 28.9000 242.0000 7.7782 + 28.9500 245.0000 7.8262 + 29.0000 239.0000 7.7298 + 29.0500 226.0000 7.5166 + 29.1000 232.0000 7.6158 + 29.1500 238.0000 7.7136 + 29.2000 226.0000 7.5166 + 29.2500 218.0000 7.3824 + 29.3000 218.0000 7.3824 + 29.3500 214.0000 7.3144 + 29.4000 205.0000 7.1589 + 29.4500 200.0000 7.0711 + 29.5000 193.0000 6.9462 + 29.5500 195.0000 6.9821 + 29.6000 196.0000 7.0000 + 29.6500 195.0000 6.9821 + 29.7000 207.0000 7.1937 + 29.7500 215.0000 7.3314 + 29.8000 207.0000 7.1937 + 29.8500 218.0000 7.3824 + 29.9000 218.0000 7.3824 + 29.9500 220.0000 7.4162 + 30.0000 220.0000 7.4162 + 30.0500 229.0000 6.7676 + 30.1000 236.0000 6.8702 + 30.1500 254.0000 7.1274 + 30.2000 264.0000 7.2664 + 30.2500 280.0000 7.4833 + 30.3000 289.0000 7.6026 + 30.3500 289.0000 7.6026 + 30.4000 303.0000 7.7846 + 30.4500 302.0000 7.7717 + 30.5000 297.0000 7.7071 + 30.5500 281.0000 7.4967 + 30.6000 278.0000 7.4565 + 30.6500 280.0000 7.4833 + 30.7000 265.0000 7.2801 + 30.7500 258.0000 7.1833 + 30.8000 243.0000 6.9714 + 30.8500 240.0000 6.9282 + 30.9000 232.0000 6.8118 + 30.9500 231.0000 6.7971 + 31.0000 233.0000 6.8264 + 31.0500 246.0000 7.0143 + 31.1000 248.0000 7.0427 + 31.1500 249.0000 7.0569 + 31.2000 256.0000 7.1554 + 31.2500 272.0000 7.3756 + 31.3000 289.0000 7.6026 + 31.3500 311.0000 7.8867 + 31.4000 340.0000 8.2462 + 31.4500 363.0000 8.5206 + 31.5000 393.0000 8.8657 + 31.5500 440.0000 9.3808 + 31.6000 474.0000 9.7365 + 31.6500 482.0000 9.8183 + 31.7000 492.0000 9.9197 + 31.7500 508.0000 10.0797 + 31.8000 494.0000 9.9398 + 31.8500 475.0000 9.7468 + 31.9000 439.0000 9.3702 + 31.9500 413.0000 9.0885 + 32.0000 368.0000 8.5790 + 32.0500 331.0000 8.1363 + 32.1000 299.0000 7.7330 + 32.1500 286.0000 7.5631 + 32.2000 262.0000 7.2388 + 32.2500 241.0000 6.9426 + 32.3000 238.0000 6.8993 + 32.3500 252.0000 7.0993 + 32.4000 267.0000 7.3075 + 32.4500 276.0000 7.4297 + 32.5000 278.0000 7.4565 + 32.5500 300.0000 7.7460 + 32.6000 325.0000 8.0623 + 32.6500 336.0000 8.1976 + 32.7000 359.0000 8.4735 + 32.7500 405.0000 9.0000 + 32.8000 458.0000 9.5708 + 32.8500 501.0000 10.0100 + 32.9000 564.0000 10.6207 + 32.9500 640.0000 11.3137 + 33.0000 719.0000 11.9917 + 33.0500 783.0000 12.5140 + 33.1000 837.0000 12.9383 + 33.1500 851.0000 13.0461 + 33.2000 866.0000 13.1605 + 33.2500 828.0000 12.8686 + 33.3000 763.0000 12.3531 + 33.3500 697.0000 11.8068 + 33.4000 634.0000 11.2606 + 33.4500 541.0000 10.4019 + 33.5000 465.0000 9.6437 + 33.5500 391.0000 8.8431 + 33.6000 351.0000 8.3785 + 33.6500 301.0000 7.7589 + 33.7000 284.0000 7.5366 + 33.7500 260.0000 7.2111 + 33.8000 248.0000 7.0427 + 33.8500 257.0000 7.1694 + 33.9000 242.0000 6.9570 + 33.9500 246.0000 7.0143 + 34.0000 263.0000 7.2526 + 34.0500 271.0000 7.3621 + 34.1000 281.0000 7.4967 + 34.1500 302.0000 7.7717 + 34.2000 309.0000 7.8613 + 34.2500 335.0000 8.1854 + 34.3000 342.0000 8.2704 + 34.3500 345.0000 8.3066 + 34.4000 356.0000 8.4380 + 34.4500 351.0000 8.3785 + 34.5000 341.0000 8.2583 + 34.5500 334.0000 8.1731 + 34.6000 321.0000 8.0125 + 34.6500 286.0000 7.5631 + 34.7000 268.0000 7.3212 + 34.7500 256.0000 7.1554 + 34.8000 238.0000 6.8993 + 34.8500 229.0000 6.7676 + 34.9000 218.0000 6.6030 + 34.9500 223.0000 6.6783 + 35.0000 216.0000 6.5727 + 35.0500 203.0000 6.3718 + 35.1000 203.0000 6.3718 + 35.1500 194.0000 6.2290 + 35.2000 205.0000 6.4031 + 35.2500 196.0000 6.2610 + 35.3000 193.0000 6.2129 + 35.3500 206.0000 6.4187 + 35.4000 201.0000 6.3403 + 35.4500 201.0000 6.3403 + 35.5000 201.0000 6.3403 + 35.5500 200.0000 6.3246 + 35.6000 194.0000 6.2290 + 35.6500 196.0000 6.2610 + 35.7000 203.0000 6.3718 + 35.7500 195.0000 6.2450 + 35.8000 196.0000 6.2610 + 35.8500 211.0000 6.4962 + 35.9000 216.0000 6.5727 + 35.9500 207.0000 6.4343 + 36.0000 215.0000 6.5574 + 36.0500 221.0000 6.6483 + 36.1000 237.0000 6.2849 + 36.1500 248.0000 6.4291 + 36.2000 261.0000 6.5955 + 36.2500 279.0000 6.8191 + 36.3000 319.0000 7.2915 + 36.3500 337.0000 7.4944 + 36.4000 364.0000 7.7889 + 36.4500 423.0000 8.3964 + 36.5000 489.0000 9.0277 + 36.5500 557.0000 9.6350 + 36.6000 630.0000 10.2470 + 36.6500 729.0000 11.0227 + 36.7000 822.0000 11.7047 + 36.7500 943.0000 12.5366 + 36.8000 1059.0000 13.2853 + 36.8500 1196.0000 14.1185 + 36.9000 1235.0000 14.3469 + 36.9500 1220.0000 14.2595 + 37.0000 1209.0000 14.1951 + 37.0500 1128.0000 13.7113 + 37.1000 1001.0000 12.9164 + 37.1500 864.0000 12.0000 + 37.2000 729.0000 11.0227 + 37.2500 601.0000 10.0083 + 37.3000 496.0000 9.0921 + 37.3500 418.0000 8.3467 + 37.4000 355.0000 7.6920 + 37.4500 313.0000 7.2226 + 37.5000 263.0000 6.6207 + 37.5500 246.0000 6.4031 + 37.6000 226.0000 6.1373 + 37.6500 214.0000 5.9722 + 37.7000 222.0000 6.0828 + 37.7500 222.0000 6.0828 + 37.8000 211.0000 5.9301 + 37.8500 211.0000 5.9301 + 37.9000 202.0000 5.8023 + 37.9500 198.0000 5.7446 + 38.0000 192.0000 5.6569 + 38.0500 193.0000 5.6716 + 38.1000 196.0000 5.7155 + 38.1500 201.0000 5.7879 + 38.2000 203.0000 5.8166 + 38.2500 203.0000 5.8166 + 38.3000 201.0000 5.7879 + 38.3500 198.0000 5.7446 + 38.4000 196.0000 5.7155 + 38.4500 206.0000 5.8595 + 38.5000 210.0000 5.9161 + 38.5500 197.0000 5.7300 + 38.6000 204.0000 5.8310 + 38.6500 200.0000 5.7735 + 38.7000 205.0000 5.8452 + 38.7500 196.0000 5.7155 + 38.8000 195.0000 5.7009 + 38.8500 205.0000 5.8452 + 38.9000 204.0000 5.8310 + 38.9500 200.0000 5.7735 + 39.0000 203.0000 5.8166 + 39.0500 208.0000 5.8878 + 39.1000 207.0000 5.8737 + 39.1500 202.0000 5.8023 + 39.2000 203.0000 5.8166 + 39.2500 198.0000 5.7446 + 39.3000 204.0000 5.8310 + 39.3500 210.0000 5.9161 + 39.4000 216.0000 6.0000 + 39.4500 210.0000 5.9161 + 39.5000 229.0000 6.1779 + 39.5500 239.0000 6.3114 + 39.6000 247.0000 6.4161 + 39.6500 278.0000 6.8069 + 39.7000 302.0000 7.0946 + 39.7500 324.0000 7.3485 + 39.8000 371.0000 7.8634 + 39.8500 420.0000 8.3666 + 39.9000 465.0000 8.8034 + 39.9500 538.0000 9.4692 + 40.0000 630.0000 10.2470 + 40.0500 739.0000 11.0980 + 40.1000 851.0000 11.9094 + 40.1500 976.0000 12.7541 + 40.2000 1076.0000 13.3915 + 40.2500 1161.0000 13.9104 + 40.3000 1222.0000 14.2712 + 40.3500 1227.0000 14.3003 + 40.4000 1187.0000 14.0653 + 40.4500 1096.0000 13.5154 + 40.5000 964.0000 12.6754 + 40.5500 833.0000 11.7828 + 40.6000 708.0000 10.8628 + 40.6500 587.0000 9.8911 + 40.7000 512.0000 9.2376 + 40.7500 436.0000 8.5245 + 40.8000 391.0000 8.0726 + 40.8500 384.0000 8.0000 + 40.9000 370.0000 7.8528 + 40.9500 391.0000 8.0726 + 41.0000 419.0000 8.3566 + 41.0500 448.0000 8.6410 + 41.1000 490.0000 9.0370 + 41.1500 567.0000 9.7211 + 41.2000 626.0000 10.2144 + 41.2500 687.0000 10.7005 + 41.3000 735.0000 11.0680 + 41.3500 780.0000 11.4018 + 41.4000 782.0000 11.4164 + 41.4500 745.0000 11.1430 + 41.5000 721.0000 10.9621 + 41.5500 662.0000 10.5040 + 41.6000 595.0000 9.9582 + 41.6500 527.0000 9.3719 + 41.7000 446.0000 8.6217 + 41.7500 393.0000 8.0932 + 41.8000 335.0000 7.4722 + 41.8500 301.0000 7.0828 + 41.9000 276.0000 6.7823 + 41.9500 251.0000 5.9881 + 42.0000 242.0000 5.8797 + 42.0500 229.0000 5.7196 + 42.1000 209.0000 5.4642 + 42.1500 215.0000 5.5420 + 42.2000 218.0000 5.5806 + 42.2500 214.0000 5.5291 + 42.3000 209.0000 5.4642 + 42.3500 208.0000 5.4511 + 42.4000 212.0000 5.5032 + 42.4500 210.0000 5.4772 + 42.5000 209.0000 5.4642 + 42.5500 210.0000 5.4772 + 42.6000 205.0000 5.4116 + 42.6500 209.0000 5.4642 + 42.7000 211.0000 5.4903 + 42.7500 211.0000 5.4903 + 42.8000 216.0000 5.5549 + 42.8500 205.0000 5.4116 + 42.9000 204.0000 5.3984 + 42.9500 202.0000 5.3719 + 43.0000 201.0000 5.3586 + 43.0500 200.0000 5.3452 + 43.1000 207.0000 5.4380 + 43.1500 205.0000 5.4116 + 43.2000 202.0000 5.3719 + 43.2500 209.0000 5.4642 + 43.3000 202.0000 5.3719 + 43.3500 203.0000 5.3852 + 43.4000 206.0000 5.4248 + 43.4500 206.0000 5.4248 + 43.5000 200.0000 5.3452 + 43.5500 194.0000 5.2644 + 43.6000 199.0000 5.3318 + 43.6500 204.0000 5.3984 + 43.7000 205.0000 5.4116 + 43.7500 210.0000 5.4772 + 43.8000 207.0000 5.4380 + 43.8500 205.0000 5.4116 + 43.9000 210.0000 5.4772 + 43.9500 204.0000 5.3984 + 44.0000 203.0000 5.3852 + 44.0500 202.0000 5.3719 + 44.1000 205.0000 5.4116 + 44.1500 201.0000 5.3586 + 44.2000 201.0000 5.3586 + 44.2500 207.0000 5.4380 + 44.3000 197.0000 5.3050 + 44.3500 198.0000 5.3184 + 44.4000 203.0000 5.3852 + 44.4500 209.0000 5.4642 + 44.5000 209.0000 5.4642 + 44.5500 208.0000 5.4511 + 44.6000 204.0000 5.3984 + 44.6500 209.0000 5.4642 + 44.7000 199.0000 5.3318 + 44.7500 204.0000 5.3984 + 44.8000 206.0000 5.4248 + 44.8500 201.0000 5.3586 + 44.9000 205.0000 5.4116 + 44.9500 202.0000 5.3719 + 45.0000 204.0000 5.3984 + 45.0500 198.0000 5.3184 + 45.1000 198.0000 5.3184 + 45.1500 213.0000 5.5162 + 45.2000 210.0000 5.4772 + 45.2500 212.0000 5.5032 + 45.3000 214.0000 5.5291 + 45.3500 215.0000 5.5420 + 45.4000 217.0000 5.5678 + 45.4500 210.0000 5.4772 + 45.5000 214.0000 5.5291 + 45.5500 215.0000 5.5420 + 45.6000 215.0000 5.5420 + 45.6500 215.0000 5.5420 + 45.7000 217.0000 5.5678 + 45.7500 222.0000 5.6315 + 45.8000 231.0000 5.7446 + 45.8500 247.0000 5.9402 + 45.9000 252.0000 6.0000 + 45.9500 273.0000 6.2450 + 46.0000 304.0000 6.5900 + 46.0500 332.0000 6.8868 + 46.1000 366.0000 7.2309 + 46.1500 408.0000 7.6345 + 46.2000 463.0000 8.1328 + 46.2500 532.0000 8.7178 + 46.3000 619.0000 9.4036 + 46.3500 734.0000 10.2400 + 46.4000 828.0000 10.8759 + 46.4500 944.0000 11.6128 + 46.5000 1003.0000 11.9702 + 46.5500 1055.0000 12.2766 + 46.6000 1070.0000 12.3635 + 46.6500 1018.0000 12.0594 + 46.7000 944.0000 11.6128 + 46.7500 833.0000 10.9087 + 46.8000 725.0000 10.1770 + 46.8500 633.0000 9.5094 + 46.9000 507.0000 8.5105 + 46.9500 445.0000 7.9732 + 47.0000 379.0000 7.3582 + 47.0500 347.0000 7.0407 + 47.1000 316.0000 6.7188 + 47.1500 282.0000 6.3471 + 47.2000 267.0000 6.1760 + 47.2500 269.0000 6.1991 + 47.3000 281.0000 6.3358 + 47.3500 288.0000 6.4143 + 47.4000 300.0000 6.5465 + 47.4500 327.0000 6.8348 + 47.5000 346.0000 7.0305 + 47.5500 380.0000 7.3679 + 47.6000 400.0000 7.5593 + 47.6500 430.0000 7.8376 + 47.7000 453.0000 8.0445 + 47.7500 459.0000 8.0976 + 47.8000 451.0000 8.0267 + 47.8500 427.0000 7.8102 + 47.9000 402.0000 7.5782 + 47.9500 375.0000 7.3193 + 48.0000 344.0000 7.0102 + 48.0500 309.0000 6.6440 + 48.1000 277.0000 6.2906 + 48.1500 265.0000 5.7554 + 48.2000 246.0000 5.5453 + 48.2500 246.0000 5.5453 + 48.3000 230.0000 5.3619 + 48.3500 223.0000 5.2797 + 48.4000 227.0000 5.3268 + 48.4500 225.0000 5.3033 + 48.5000 217.0000 5.2082 + 48.5500 217.0000 5.2082 + 48.6000 223.0000 5.2797 + 48.6500 223.0000 5.2797 + 48.7000 220.0000 5.2440 + 48.7500 223.0000 5.2797 + 48.8000 226.0000 5.3151 + 48.8500 248.0000 5.5678 + 48.9000 258.0000 5.6789 + 48.9500 274.0000 5.8523 + 49.0000 297.0000 6.0930 + 49.0500 324.0000 6.3640 + 49.1000 355.0000 6.6615 + 49.1500 393.0000 7.0089 + 49.2000 458.0000 7.5664 + 49.2500 528.0000 8.1240 + 49.3000 589.0000 8.5805 + 49.3500 688.0000 9.2736 + 49.4000 781.0000 9.8805 + 49.4500 840.0000 10.2470 + 49.5000 876.0000 10.4642 + 49.5500 874.0000 10.4523 + 49.6000 832.0000 10.1980 + 49.6500 765.0000 9.7788 + 49.7000 682.0000 9.2331 + 49.7500 613.0000 8.7536 + 49.8000 524.0000 8.0932 + 49.8500 455.0000 7.5416 + 49.9000 408.0000 7.1414 + 49.9500 384.0000 6.9282 + 50.0000 366.0000 6.7639 + 50.0500 375.0000 6.8465 + 50.1000 392.0000 7.0000 + 50.1500 426.0000 7.2973 + 50.2000 470.0000 7.6649 + 50.2500 519.0000 8.0545 + 50.3000 588.0000 8.5732 + 50.3500 639.0000 8.9373 + 50.4000 681.0000 9.2263 + 50.4500 704.0000 9.3808 + 50.5000 693.0000 9.3073 + 50.5500 650.0000 9.0139 + 50.6000 600.0000 8.6603 + 50.6500 540.0000 8.2158 + 50.7000 478.0000 7.7298 + 50.7500 412.0000 7.1764 + 50.8000 376.0000 6.8557 + 50.8500 345.0000 6.5670 + 50.9000 330.0000 6.4226 + 50.9500 337.0000 6.4904 + 51.0000 350.0000 6.6144 + 51.0500 383.0000 6.9192 + 51.1000 426.0000 7.2973 + 51.1500 493.0000 7.8502 + 51.2000 571.0000 8.4484 + 51.2500 676.0000 9.1924 + 51.3000 803.0000 10.0187 + 51.3500 920.0000 10.7238 + 51.4000 1071.0000 11.5704 + 51.4500 1183.0000 12.1604 + 51.5000 1247.0000 12.4850 + 51.5500 1255.0000 12.5250 + 51.6000 1251.0000 12.5050 + 51.6500 1183.0000 12.1604 + 51.7000 1068.0000 11.5542 + 51.7500 945.0000 10.8685 + 51.8000 861.0000 10.3742 + 51.8500 811.0000 10.0685 + 51.9000 813.0000 10.0809 + 51.9500 872.0000 10.4403 + 52.0000 969.0000 11.0057 + 52.0500 1120.0000 11.8322 + 52.1000 1309.0000 12.7916 + 52.1500 1527.0000 13.8158 + 52.2000 1706.0000 14.6031 + 52.2500 1856.0000 15.2315 + 52.3000 1888.0000 15.3623 + 52.3500 1837.0000 15.1534 + 52.4000 1713.0000 14.6330 + 52.4500 1500.0000 13.6931 + 52.5000 1289.0000 12.6935 + 52.5500 1103.0000 11.7420 + 52.6000 904.0000 10.6301 + 52.6500 749.0000 9.6760 + 52.7000 627.0000 8.8530 + 52.7500 568.0000 8.4261 + 52.8000 551.0000 8.2991 + 52.8500 560.0000 8.3666 + 52.9000 586.0000 8.5586 + 52.9500 634.0000 8.9022 + 53.0000 691.0000 9.2938 + 53.0500 751.0000 9.6889 + 53.1000 799.0000 9.9937 + 53.1500 792.0000 9.9499 + 53.2000 820.0000 10.1242 + 53.2500 774.0000 9.8362 + 53.3000 736.0000 9.5917 + 53.3500 680.0000 9.2195 + 53.4000 627.0000 8.8530 + 53.4500 562.0000 8.3815 + 53.5000 514.0000 8.0156 + 53.5500 459.0000 7.5746 + 53.6000 424.0000 7.2801 + 53.6500 362.0000 6.7268 + 53.7000 333.0000 6.4517 + 53.7500 318.0000 6.3048 + 53.8000 300.0000 6.1237 + 53.8500 287.0000 5.9896 + 53.9000 265.0000 5.7554 + 53.9500 266.0000 5.7663 + 54.0000 262.0000 5.7228 + 54.0500 263.0000 5.4058 + 54.1000 255.0000 5.3229 + 54.1500 270.0000 5.4772 + 54.2000 278.0000 5.5578 + 54.2500 289.0000 5.6667 + 54.3000 317.0000 5.9348 + 54.3500 343.0000 6.1734 + 54.4000 400.0000 6.6667 + 54.4500 468.0000 7.2111 + 54.5000 561.0000 7.8951 + 54.5500 695.0000 8.7876 + 54.6000 873.0000 9.8489 + 54.6500 1100.0000 11.0554 + 54.7000 1372.0000 12.3468 + 54.7500 1660.0000 13.5810 + 54.8000 1954.0000 14.7347 + 54.8500 2224.0000 15.7198 + 54.9000 2400.0000 16.3299 + 54.9500 2459.0000 16.5294 + 55.0000 2435.0000 16.4486 + 55.0500 2245.0000 15.7938 + 55.1000 1986.0000 14.8549 + 55.1500 1671.0000 13.6260 + 55.2000 1358.0000 12.2837 + 55.2500 1086.0000 10.9848 + 55.3000 868.0000 9.8206 + 55.3500 682.0000 8.7050 + 55.4000 578.0000 8.0139 + 55.4500 521.0000 7.6085 + 55.5000 512.0000 7.5425 + 55.5500 537.0000 7.7244 + 55.6000 600.0000 8.1650 + 55.6500 704.0000 8.8443 + 55.7000 855.0000 9.7468 + 55.7500 1032.0000 10.7083 + 55.8000 1232.0000 11.7000 + 55.8500 1466.0000 12.7628 + 55.9000 1693.0000 13.7154 + 55.9500 1866.0000 14.3991 + 56.0000 1966.0000 14.7799 + 56.0500 2024.0000 14.9963 + 56.1000 2016.0000 14.9666 + 56.1500 1846.0000 14.3217 + 56.2000 1667.0000 13.6096 + 56.2500 1429.0000 12.6007 + 56.3000 1179.0000 11.4455 + 56.3500 950.0000 10.2740 + 56.4000 763.0000 9.2075 + 56.4500 599.0000 8.1582 + 56.5000 484.0000 7.3333 + 56.5500 404.0000 6.6999 + 56.6000 351.0000 6.2450 + 56.6500 304.0000 5.8119 + 56.7000 284.0000 5.6174 + 56.7500 273.0000 5.5076 + 56.8000 259.0000 5.3645 + 56.8500 251.0000 5.2810 + 56.9000 251.0000 5.2810 + 56.9500 252.0000 5.2915 + 57.0000 245.0000 5.2175 + 57.0500 259.0000 5.3645 + 57.1000 250.0000 5.2705 + 57.1500 253.0000 5.3020 + 57.2000 256.0000 5.3333 + 57.2500 264.0000 5.4160 + 57.3000 285.0000 5.6273 + 57.3500 301.0000 5.7831 + 57.4000 346.0000 6.2004 + 57.4500 390.0000 6.5828 + 57.5000 458.0000 7.1336 + 57.5500 528.0000 7.6594 + 57.6000 624.0000 8.3267 + 57.6500 733.0000 9.0247 + 57.7000 829.0000 9.5975 + 57.7500 916.0000 10.0885 + 57.8000 988.0000 10.4775 + 57.8500 994.0000 10.5093 + 57.9000 929.0000 10.1598 + 57.9500 843.0000 9.6782 + 58.0000 742.0000 9.0799 + 58.0500 638.0000 8.4196 + 58.1000 527.0000 7.6522 + 58.1500 434.0000 6.9442 + 58.2000 377.0000 6.4722 + 58.2500 320.0000 5.9628 + 58.3000 282.0000 5.5976 + 58.3500 273.0000 5.5076 + 58.4000 256.0000 5.3333 + 58.4500 243.0000 5.1962 + 58.5000 240.0000 5.1640 + 58.5500 240.0000 5.1640 + 58.6000 230.0000 5.0553 + 58.6500 220.0000 4.9441 + 58.7000 230.0000 5.0553 + 58.7500 227.0000 5.0222 + 58.8000 224.0000 4.9889 + 58.8500 219.0000 4.9329 + 58.9000 227.0000 5.0222 + 58.9500 227.0000 5.0222 + 59.0000 224.0000 4.9889 + 59.0500 222.0000 4.9666 + 59.1000 223.0000 4.9777 + 59.1500 217.0000 4.9103 + 59.2000 213.0000 4.8648 + 59.2500 216.0000 4.8990 + 59.3000 219.0000 4.9329 + 59.3500 219.0000 4.9329 + 59.4000 218.0000 4.9216 + 59.4500 220.0000 4.9441 + 59.5000 220.0000 4.9441 + 59.5500 220.0000 4.9441 + 59.6000 223.0000 4.9777 + 59.6500 233.0000 5.0881 + 59.7000 237.0000 5.1316 + 59.7500 249.0000 5.2599 + 59.8000 258.0000 5.3541 + 59.8500 261.0000 5.3852 + 59.9000 283.0000 5.6075 + 59.9500 304.0000 5.8119 + 60.0000 324.0000 5.6921 + 60.0500 347.0000 5.8907 + 60.1000 353.0000 5.9414 + 60.1500 359.0000 5.9917 + 60.2000 363.0000 6.0249 + 60.2500 352.0000 5.9330 + 60.3000 341.0000 5.8395 + 60.3500 330.0000 5.7446 + 60.4000 308.0000 5.5498 + 60.4500 291.0000 5.3944 + 60.5000 271.0000 5.2058 + 60.5500 254.0000 5.0398 + 60.6000 245.0000 4.9497 + 60.6500 245.0000 4.9497 + 60.7000 239.0000 4.8888 + 60.7500 228.0000 4.7749 + 60.8000 217.0000 4.6583 + 60.8500 217.0000 4.6583 + 60.9000 218.0000 4.6690 + 60.9500 223.0000 4.7223 + 61.0000 207.0000 4.5497 + 61.0500 218.0000 4.6690 + 61.1000 222.0000 4.7117 + 61.1500 215.0000 4.6368 + 61.2000 210.0000 4.5826 + 61.2500 216.0000 4.6476 + 61.3000 213.0000 4.6152 + 61.3500 212.0000 4.6043 + 61.4000 215.0000 4.6368 + 61.4500 212.0000 4.6043 + 61.5000 214.0000 4.6260 + 61.5500 211.0000 4.5935 + 61.6000 214.0000 4.6260 + 61.6500 217.0000 4.6583 + 61.7000 205.0000 4.5277 + 61.7500 207.0000 4.5497 + 61.8000 213.0000 4.6152 + 61.8500 208.0000 4.5607 + 61.9000 211.0000 4.5935 + 61.9500 205.0000 4.5277 + 62.0000 214.0000 4.6260 + 62.0500 213.0000 4.6152 + 62.1000 212.0000 4.6043 + 62.1500 212.0000 4.6043 + 62.2000 213.0000 4.6152 + 62.2500 207.0000 4.5497 + 62.3000 203.0000 4.5056 + 62.3500 211.0000 4.5935 + 62.4000 211.0000 4.5935 + 62.4500 214.0000 4.6260 + 62.5000 214.0000 4.6260 + 62.5500 207.0000 4.5497 + 62.6000 203.0000 4.5056 + 62.6500 212.0000 4.6043 + 62.7000 212.0000 4.6043 + 62.7500 214.0000 4.6260 + 62.8000 213.0000 4.6152 + 62.8500 202.0000 4.4944 + 62.9000 210.0000 4.5826 + 62.9500 211.0000 4.5935 + 63.0000 211.0000 4.5935 + 63.0500 214.0000 4.6260 + 63.1000 221.0000 4.7011 + 63.1500 217.0000 4.6583 + 63.2000 212.0000 4.6043 + 63.2500 214.0000 4.6260 + 63.3000 219.0000 4.6797 + 63.3500 223.0000 4.7223 + 63.4000 225.0000 4.7434 + 63.4500 227.0000 4.7645 + 63.5000 235.0000 4.8477 + 63.5500 240.0000 4.8990 + 63.6000 243.0000 4.9295 + 63.6500 252.0000 5.0200 + 63.7000 249.0000 4.9900 + 63.7500 249.0000 4.9900 + 63.8000 255.0000 5.0498 + 63.8500 262.0000 5.1186 + 63.9000 282.0000 5.3104 + 63.9500 308.0000 5.5498 + 64.0000 351.0000 5.9245 + 64.0500 398.0000 6.3087 + 64.1000 470.0000 6.8557 + 64.1500 525.0000 7.2457 + 64.2000 596.0000 7.7201 + 64.2500 646.0000 8.0374 + 64.3000 681.0000 8.2523 + 64.3500 665.0000 8.1548 + 64.4000 615.0000 7.8422 + 64.4500 563.0000 7.5033 + 64.5000 484.0000 6.9570 + 64.5500 421.0000 6.4885 + 64.6000 364.0000 6.0332 + 64.6500 317.0000 5.6303 + 64.7000 289.0000 5.3759 + 64.7500 261.0000 5.1088 + 64.8000 245.0000 4.9497 + 64.8500 233.0000 4.8270 + 64.9000 228.0000 4.7749 + 64.9500 219.0000 4.6797 + 65.0000 219.0000 4.6797 + 65.0500 217.0000 4.6583 + 65.1000 216.0000 4.6476 + 65.1500 221.0000 4.7011 + 65.2000 215.0000 4.6368 + 65.2500 215.0000 4.6368 + 65.3000 210.0000 4.5826 + 65.3500 212.0000 4.6043 + 65.4000 212.0000 4.6043 + 65.4500 204.0000 4.5166 + 65.5000 209.0000 4.5717 + 65.5500 206.0000 4.5387 + 65.6000 216.0000 4.6476 + 65.6500 207.0000 4.5497 + 65.7000 214.0000 4.6260 + 65.7500 207.0000 4.5497 + 65.8000 209.0000 4.5717 + 65.8500 218.0000 4.6690 + 65.9000 215.0000 4.6368 + 65.9500 222.0000 4.7117 + 66.0000 226.0000 4.7539 + 66.0500 230.0000 4.7958 + 66.1000 239.0000 4.8888 + 66.1500 249.0000 4.9900 + 66.2000 263.0000 5.1284 + 66.2500 275.0000 5.2440 + 66.3000 292.0000 5.4037 + 66.3500 317.0000 5.6303 + 66.4000 323.0000 5.6833 + 66.4500 341.0000 5.8395 + 66.5000 350.0000 5.9161 + 66.5500 330.0000 5.7446 + 66.6000 320.0000 5.6569 + 66.6500 307.0000 5.5408 + 66.7000 284.0000 5.3292 + 66.7500 275.0000 5.2440 + 66.8000 265.0000 5.1478 + 66.8500 269.0000 5.1865 + 66.9000 275.0000 5.2440 + 66.9500 292.0000 5.4037 + 67.0000 311.0000 5.5767 + 67.0500 338.0000 5.8138 + 67.1000 387.0000 6.2209 + 67.1500 413.0000 6.4265 + 67.2000 463.0000 6.8044 + 67.2500 510.0000 7.1414 + 67.3000 534.0000 7.3075 + 67.3500 559.0000 7.4766 + 67.4000 539.0000 7.3417 + 67.4500 533.0000 7.3007 + 67.5000 500.0000 7.0711 + 67.5500 471.0000 6.8629 + 67.6000 455.0000 6.7454 + 67.6500 410.0000 6.4031 + 67.7000 373.0000 6.1074 + 67.7500 342.0000 5.8481 + 67.8000 307.0000 5.5408 + 67.8500 288.0000 5.3666 + 67.9000 286.0000 5.3479 + 67.9500 281.0000 5.3009 + 68.0000 292.0000 5.4037 + 68.0500 291.0000 5.3944 + 68.1000 312.0000 5.5857 + 68.1500 326.0000 5.7096 + 68.2000 336.0000 5.7966 + 68.2500 346.0000 5.8822 + 68.3000 341.0000 5.8395 + 68.3500 327.0000 5.7184 + 68.4000 305.0000 5.5227 + 68.4500 277.0000 5.2631 + 68.5000 267.0000 5.1672 + 68.5500 249.0000 4.9900 + 68.6000 229.0000 4.7854 + 68.6500 221.0000 4.7011 + 68.7000 220.0000 4.6904 + 68.7500 217.0000 4.6583 + 68.8000 211.0000 4.5935 + 68.8500 204.0000 4.5166 + 68.9000 203.0000 4.5056 + 68.9500 220.0000 4.6904 + 69.0000 217.0000 4.6583 + 69.0500 217.0000 4.6583 + 69.1000 214.0000 4.6260 + 69.1500 205.0000 4.5277 + 69.2000 205.0000 4.5277 + 69.2500 211.0000 4.5935 + 69.3000 206.0000 4.5387 + 69.3500 208.0000 4.5607 + 69.4000 201.0000 4.4833 + 69.4500 208.0000 4.5607 + 69.5000 214.0000 4.6260 + 69.5500 212.0000 4.6043 + 69.6000 206.0000 4.5387 + 69.6500 216.0000 4.6476 + 69.7000 219.0000 4.6797 + 69.7500 215.0000 4.6368 + 69.8000 217.0000 4.6583 + 69.8500 211.0000 4.5935 + 69.9000 214.0000 4.6260 + 69.9500 215.0000 4.6368 + 70.0000 224.0000 4.7329 + 70.0500 217.0000 4.6583 + 70.1000 215.0000 4.6368 + 70.1500 218.0000 4.6690 + 70.2000 218.0000 4.6690 + 70.2500 228.0000 4.7749 + 70.3000 227.0000 4.7645 + 70.3500 228.0000 4.7749 + 70.4000 225.0000 4.7434 + 70.4500 219.0000 4.6797 + 70.5000 216.0000 4.6476 + 70.5500 219.0000 4.6797 + 70.6000 218.0000 4.6690 + 70.6500 214.0000 4.6260 + 70.7000 212.0000 4.6043 + 70.7500 221.0000 4.7011 + 70.8000 214.0000 4.6260 + 70.8500 208.0000 4.5607 + 70.9000 204.0000 4.5166 + 70.9500 209.0000 4.5717 + 71.0000 209.0000 4.5717 + 71.0500 208.0000 4.5607 + 71.1000 212.0000 4.6043 + 71.1500 213.0000 4.6152 + 71.2000 218.0000 4.6690 + 71.2500 212.0000 4.6043 + 71.3000 205.0000 4.5277 + 71.3500 207.0000 4.5497 + 71.4000 204.0000 4.5166 + 71.4500 206.0000 4.5387 + 71.5000 211.0000 4.5935 + 71.5500 216.0000 4.6476 + 71.6000 214.0000 4.6260 + 71.6500 210.0000 4.5826 + 71.7000 219.0000 4.6797 + 71.7500 222.0000 4.7117 + 71.8000 224.0000 4.7329 + 71.8500 231.0000 4.8062 + 71.9000 227.0000 4.7645 + 71.9500 237.0000 4.8683 + 72.0000 235.0000 4.8477 + 72.0500 238.0000 4.8785 + 72.1000 245.0000 4.9497 + 72.1500 242.0000 4.9193 + 72.2000 248.0000 4.9800 + 72.2500 246.0000 4.9598 + 72.3000 243.0000 4.9295 + 72.3500 253.0000 5.0299 + 72.4000 259.0000 5.0892 + 72.4500 278.0000 5.2726 + 72.5000 281.0000 5.3009 + 72.5500 297.0000 5.4498 + 72.6000 310.0000 5.5678 + 72.6500 324.0000 5.6921 + 72.7000 322.0000 5.6745 + 72.7500 311.0000 5.5767 + 72.8000 295.0000 5.4314 + 72.8500 281.0000 5.3009 + 72.9000 259.0000 5.0892 + 72.9500 250.0000 5.0000 + 73.0000 239.0000 4.8888 + 73.0500 233.0000 4.8270 + 73.1000 227.0000 4.7645 + 73.1500 226.0000 4.7539 + 73.2000 223.0000 4.7223 + 73.2500 211.0000 4.5935 + 73.3000 209.0000 4.5717 + 73.3500 217.0000 4.6583 + 73.4000 214.0000 4.6260 + 73.4500 213.0000 4.6152 + 73.5000 217.0000 4.6583 + 73.5500 220.0000 4.6904 + 73.6000 210.0000 4.5826 + 73.6500 209.0000 4.5717 + 73.7000 215.0000 4.6368 + 73.7500 218.0000 4.6690 + 73.8000 215.0000 4.6368 + 73.8500 217.0000 4.6583 + 73.9000 221.0000 4.7011 + 73.9500 217.0000 4.6583 + 74.0000 219.0000 4.6797 + 74.0500 220.0000 4.6904 + 74.1000 228.0000 4.7749 + 74.1500 229.0000 4.7854 + 74.2000 230.0000 4.7958 + 74.2500 234.0000 4.8374 + 74.3000 251.0000 5.0100 + 74.3500 261.0000 5.1088 + 74.4000 288.0000 5.3666 + 74.4500 313.0000 5.5946 + 74.5000 362.0000 6.0166 + 74.5500 424.0000 6.5115 + 74.6000 524.0000 7.2388 + 74.6500 646.0000 8.0374 + 74.7000 781.0000 8.8374 + 74.7500 920.0000 9.5917 + 74.8000 1024.0000 10.1193 + 74.8500 1120.0000 10.5830 + 74.9000 1187.0000 10.8950 + 74.9500 1187.0000 10.8950 + 75.0000 1166.0000 10.7981 + 75.0500 1114.0000 10.5546 + 75.1000 1044.0000 10.2176 + 75.1500 991.0000 9.9549 + 75.2000 927.0000 9.6281 + 75.2500 823.0000 9.0719 + 75.3000 717.0000 8.4676 + 75.3500 619.0000 7.8677 + 75.4000 520.0000 7.2111 + 75.4500 421.0000 6.4885 + 75.5000 353.0000 5.9414 + 75.5500 308.0000 5.5498 + 75.6000 273.0000 5.2249 + 75.6500 256.0000 5.0596 + 75.7000 245.0000 4.9497 + 75.7500 234.0000 4.8374 + 75.8000 230.0000 4.7958 + 75.8500 224.0000 4.7329 + 75.9000 232.0000 4.8166 + 75.9500 226.0000 4.7539 + 76.0000 222.0000 4.7117 + 76.0500 222.0000 4.7117 + 76.1000 227.0000 4.7645 + 76.1500 225.0000 4.7434 + 76.2000 226.0000 4.7539 + 76.2500 227.0000 4.7645 + 76.3000 229.0000 4.7854 + 76.3500 235.0000 4.8477 + 76.4000 233.0000 4.8270 + 76.4500 243.0000 4.9295 + 76.5000 238.0000 4.8785 + 76.5500 237.0000 4.8683 + 76.6000 236.0000 4.8580 + 76.6500 232.0000 4.8166 + 76.7000 231.0000 4.8062 + 76.7500 227.0000 4.7645 + 76.8000 225.0000 4.7434 + 76.8500 220.0000 4.6904 + 76.9000 218.0000 4.6690 + 76.9500 215.0000 4.6368 + 77.0000 219.0000 4.6797 + 77.0500 224.0000 4.7329 + 77.1000 225.0000 4.7434 + 77.1500 222.0000 4.7117 + 77.2000 231.0000 4.8062 + 77.2500 243.0000 4.9295 + 77.3000 250.0000 5.0000 + 77.3500 269.0000 5.1865 + 77.4000 286.0000 5.3479 + 77.4500 310.0000 5.5678 + 77.5000 325.0000 5.7009 + 77.5500 332.0000 5.7619 + 77.6000 337.0000 5.8052 + 77.6500 329.0000 5.7359 + 77.7000 303.0000 5.5045 + 77.7500 278.0000 5.2726 + 77.8000 268.0000 5.1769 + 77.8500 252.0000 5.0200 + 77.9000 236.0000 4.8580 + 77.9500 228.0000 4.7749 + 78.0000 219.0000 4.6797 + 78.0500 225.0000 4.7434 + 78.1000 222.0000 4.7117 + 78.1500 214.0000 4.6260 + 78.2000 228.0000 4.7749 + 78.2500 221.0000 4.7011 + 78.3000 217.0000 4.6583 + 78.3500 221.0000 4.7011 + 78.4000 222.0000 4.7117 + 78.4500 226.0000 4.7539 + 78.5000 237.0000 4.8683 + 78.5500 246.0000 4.9598 + 78.6000 255.0000 5.0498 + 78.6500 269.0000 5.1865 + 78.7000 284.0000 5.3292 + 78.7500 302.0000 5.4955 + 78.8000 313.0000 5.5946 + 78.8500 327.0000 5.7184 + 78.9000 321.0000 5.6657 + 78.9500 333.0000 5.7706 + 79.0000 331.0000 5.7533 + 79.0500 332.0000 5.7619 + 79.1000 358.0000 5.9833 + 79.1500 402.0000 6.3403 + 79.2000 460.0000 6.7823 + 79.2500 557.0000 7.4632 + 79.3000 660.0000 8.1240 + 79.3500 769.0000 8.7693 + 79.4000 859.0000 9.2682 + 79.4500 934.0000 9.6644 + 79.5000 955.0000 9.7724 + 79.5500 921.0000 9.5969 + 79.6000 824.0000 9.0774 + 79.6500 694.0000 8.3307 + 79.7000 578.0000 7.6026 + 79.7500 474.0000 6.8848 + 79.8000 402.0000 6.3403 + 79.8500 344.0000 5.8652 + 79.9000 306.0000 5.5317 + 79.9500 300.0000 5.4772 + 80.0000 292.0000 5.4037 + 80.0500 292.0000 5.4037 + 80.1000 302.0000 5.4955 + 80.1500 304.0000 5.5136 + 80.2000 306.0000 5.5317 + 80.2500 305.0000 5.5227 + 80.3000 303.0000 5.5045 + 80.3500 299.0000 5.4681 + 80.4000 278.0000 5.2726 + 80.4500 259.0000 5.0892 + 80.5000 257.0000 5.0695 + 80.5500 245.0000 4.9497 + 80.6000 237.0000 4.8683 + 80.6500 240.0000 4.8990 + 80.7000 233.0000 4.8270 + 80.7500 232.0000 4.8166 + 80.8000 235.0000 4.8477 + 80.8500 241.0000 4.9092 + 80.9000 257.0000 5.0695 + 80.9500 274.0000 5.2345 + 81.0000 292.0000 5.4037 + 81.0500 309.0000 5.5588 + 81.1000 333.0000 5.7706 + 81.1500 360.0000 6.0000 + 81.2000 381.0000 6.1725 + 81.2500 387.0000 6.2209 + 81.3000 387.0000 6.2209 + 81.3500 386.0000 6.2129 + 81.4000 382.0000 6.1806 + 81.4500 368.0000 6.0663 + 81.5000 363.0000 6.0249 + 81.5500 352.0000 5.9330 + 81.6000 337.0000 5.8052 + 81.6500 321.0000 5.6657 + 81.7000 297.0000 5.4498 + 81.7500 281.0000 5.3009 + 81.8000 265.0000 5.1478 + 81.8500 255.0000 5.0498 + 81.9000 251.0000 5.0100 + 81.9500 237.0000 4.8683 + 82.0000 238.0000 4.8785 + 82.0500 237.0000 4.8683 + 82.1000 228.0000 4.7749 + 82.1500 240.0000 4.8990 + 82.2000 234.0000 4.8374 + 82.2500 226.0000 4.7539 + 82.3000 229.0000 4.7854 + 82.3500 228.0000 4.7749 + 82.4000 233.0000 4.8270 + 82.4500 243.0000 4.9295 + 82.5000 241.0000 4.9092 + 82.5500 257.0000 5.0695 + 82.6000 279.0000 5.2820 + 82.6500 305.0000 5.5227 + 82.7000 345.0000 5.8737 + 82.7500 410.0000 6.4031 + 82.8000 455.0000 6.7454 + 82.8500 545.0000 7.3824 + 82.9000 622.0000 7.8867 + 82.9500 673.0000 8.2037 + 83.0000 725.0000 8.5147 + 83.0500 717.0000 8.4676 + 83.1000 661.0000 8.1302 + 83.1500 592.0000 7.6942 + 83.2000 518.0000 7.1972 + 83.2500 443.0000 6.6558 + 83.3000 371.0000 6.0910 + 83.3500 336.0000 5.7966 + 83.4000 290.0000 5.3852 + 83.4500 265.0000 5.1478 + 83.5000 252.0000 5.0200 + 83.5500 250.0000 5.0000 + 83.6000 244.0000 4.9396 + 83.6500 242.0000 4.9193 + 83.7000 241.0000 4.9092 + 83.7500 243.0000 4.9295 + 83.8000 248.0000 4.9800 + 83.8500 253.0000 5.0299 + 83.9000 252.0000 5.0200 + 83.9500 264.0000 5.1381 + 84.0000 266.0000 5.1575 + 84.0500 282.0000 5.3104 + 84.1000 291.0000 5.3944 + 84.1500 313.0000 5.5946 + 84.2000 346.0000 5.8822 + 84.2500 374.0000 6.1156 + 84.3000 415.0000 6.4420 + 84.3500 430.0000 6.5574 + 84.4000 433.0000 6.5803 + 84.4500 430.0000 6.5574 + 84.5000 406.0000 6.3718 + 84.5500 384.0000 6.1968 + 84.6000 349.0000 5.9076 + 84.6500 318.0000 5.6391 + 84.7000 307.0000 5.5408 + 84.7500 298.0000 5.4589 + 84.8000 296.0000 5.4406 + 84.8500 304.0000 5.5136 + 84.9000 313.0000 5.5946 + 84.9500 328.0000 5.7271 + 85.0000 346.0000 5.8822 + 85.0500 341.0000 5.8395 + 85.1000 335.0000 5.7879 + 85.1500 324.0000 5.6921 + 85.2000 336.0000 5.7966 + 85.2500 341.0000 5.8395 + 85.3000 341.0000 5.8395 + 85.3500 370.0000 6.0828 + 85.4000 414.0000 6.4343 + 85.4500 442.0000 6.6483 + 85.5000 490.0000 7.0000 + 85.5500 520.0000 7.2111 + 85.6000 532.0000 7.2938 + 85.6500 548.0000 7.4027 + 85.7000 561.0000 7.4900 + 85.7500 567.0000 7.5299 + 85.8000 585.0000 7.6485 + 85.8500 584.0000 7.6420 + 85.9000 558.0000 7.4699 + 85.9500 527.0000 7.2595 + 86.0000 481.0000 6.9354 + 86.0500 424.0000 6.5115 + 86.1000 370.0000 6.0828 + 86.1500 333.0000 5.7706 + 86.2000 312.0000 5.5857 + 86.2500 301.0000 5.4863 + 86.3000 307.0000 5.5408 + 86.3500 314.0000 5.6036 + 86.4000 340.0000 5.8310 + 86.4500 379.0000 6.1563 + 86.5000 427.0000 6.5345 + 86.5500 467.0000 6.8337 + 86.6000 535.0000 7.3144 + 86.6500 584.0000 7.6420 + 86.7000 602.0000 7.7589 + 86.7500 580.0000 7.6158 + 86.8000 532.0000 7.2938 + 86.8500 481.0000 6.9354 + 86.9000 426.0000 6.5269 + 86.9500 379.0000 6.1563 + 87.0000 329.0000 5.7359 + 87.0500 303.0000 5.5045 + 87.1000 288.0000 5.3666 + 87.1500 271.0000 5.2058 + 87.2000 269.0000 5.1865 + 87.2500 267.0000 5.1672 + 87.3000 263.0000 5.1284 + 87.3500 267.0000 5.1672 + 87.4000 260.0000 5.0990 + 87.4500 260.0000 5.0990 + 87.5000 263.0000 5.1284 + 87.5500 263.0000 5.1284 + 87.6000 270.0000 5.1962 + 87.6500 278.0000 5.2726 + 87.7000 293.0000 5.4129 + 87.7500 318.0000 5.6391 + 87.8000 364.0000 6.0332 + 87.8500 424.0000 6.5115 + 87.9000 512.0000 7.1554 + 87.9500 643.0000 8.0187 + 88.0000 817.0000 9.0388 + 88.0500 982.0000 9.9096 + 88.1000 1163.0000 10.7842 + 88.1500 1289.0000 11.3534 + 88.2000 1373.0000 11.7175 + 88.2500 1393.0000 11.8025 + 88.3000 1348.0000 11.6103 + 88.3500 1244.0000 11.1535 + 88.4000 1157.0000 10.7564 + 88.4500 1077.0000 10.3779 + 88.5000 1020.0000 10.0995 + 88.5500 965.0000 9.8234 + 88.6000 907.0000 9.5237 + 88.6500 858.0000 9.2628 + 88.7000 771.0000 8.7807 + 88.7500 647.0000 8.0436 + 88.8000 555.0000 7.4498 + 88.8500 468.0000 6.8411 + 88.9000 405.0000 6.3640 + 88.9500 348.0000 5.8992 + 89.0000 316.0000 5.6214 + 89.0500 291.0000 5.3944 + 89.1000 277.0000 5.2631 + 89.1500 278.0000 5.2726 + 89.2000 270.0000 5.1962 + 89.2500 262.0000 5.1186 + 89.3000 268.0000 5.1769 + 89.3500 270.0000 5.1962 + 89.4000 279.0000 5.2820 + 89.4500 287.0000 5.3572 + 89.5000 300.0000 5.4772 + 89.5500 319.0000 5.6480 + 89.6000 347.0000 5.8907 + 89.6500 378.0000 6.1482 + 89.7000 420.0000 6.4807 + 89.7500 469.0000 6.8484 + 89.8000 536.0000 7.3212 + 89.8500 645.0000 8.0312 + 89.9000 773.0000 8.7920 + 89.9500 925.0000 9.6177 + 90.0000 1115.0000 10.5594 + 90.0500 1254.0000 11.1982 + 90.1000 1367.0000 11.6919 + 90.1500 1400.0000 11.8322 + 90.2000 1327.0000 11.5195 + 90.2500 1188.0000 10.8995 + 90.3000 1038.0000 10.1882 + 90.3500 879.0000 9.3755 + 90.4000 738.0000 8.5907 + 90.4500 644.0000 8.0250 + 90.5000 594.0000 7.7071 + 90.5500 601.0000 7.7524 + 90.6000 643.0000 8.0187 + 90.6500 697.0000 8.3487 + 90.7000 786.0000 8.8657 + 90.7500 842.0000 9.1761 + 90.8000 847.0000 9.2033 + 90.8500 791.0000 8.8938 + 90.9000 702.0000 8.3785 + 90.9500 592.0000 7.6942 + 91.0000 508.0000 7.1274 + 91.0500 418.0000 6.4653 + 91.1000 362.0000 6.0166 + 91.1500 328.0000 5.7271 + 91.2000 299.0000 5.4681 + 91.2500 279.0000 5.2820 + 91.3000 270.0000 5.1962 + 91.3500 257.0000 5.0695 + 91.4000 253.0000 5.0299 + 91.4500 258.0000 5.0794 + 91.5000 257.0000 5.0695 + 91.5500 249.0000 4.9900 + 91.6000 245.0000 4.9497 + 91.6500 257.0000 5.0695 + 91.7000 260.0000 5.0990 + 91.7500 284.0000 5.3292 + 91.8000 296.0000 5.4406 + 91.8500 322.0000 5.6745 + 91.9000 343.0000 5.8566 + 91.9500 382.0000 6.1806 + 92.0000 405.0000 6.3640 + 92.0500 411.0000 6.4109 + 92.1000 416.0000 6.4498 + 92.1500 406.0000 6.3718 + 92.2000 372.0000 6.0992 + 92.2500 353.0000 5.9414 + 92.3000 330.0000 5.7446 + 92.3500 317.0000 5.6303 + 92.4000 313.0000 5.5946 + 92.4500 312.0000 5.5857 + 92.5000 309.0000 5.5588 + 92.5500 303.0000 5.5045 + 92.6000 288.0000 5.3666 + 92.6500 276.0000 5.2536 + 92.7000 264.0000 5.1381 + 92.7500 246.0000 4.9598 + 92.8000 249.0000 4.9900 + 92.8500 241.0000 4.9092 + 92.9000 251.0000 5.0100 + 92.9500 243.0000 4.9295 + 93.0000 246.0000 4.9598 + 93.0500 246.0000 4.9598 + 93.1000 249.0000 4.9900 + 93.1500 244.0000 4.9396 + 93.2000 252.0000 5.0200 + 93.2500 252.0000 5.0200 + 93.3000 258.0000 5.0794 + 93.3500 265.0000 5.1478 + 93.4000 263.0000 5.1284 + 93.4500 284.0000 5.3292 + 93.5000 299.0000 5.4681 + 93.5500 320.0000 5.6569 + 93.6000 344.0000 5.8652 + 93.6500 363.0000 6.0249 + 93.7000 372.0000 6.0992 + 93.7500 358.0000 5.9833 + 93.8000 351.0000 5.9245 + 93.8500 354.0000 5.9498 + 93.9000 330.0000 5.7446 + 93.9500 322.0000 5.6745 + 94.0000 334.0000 5.7793 + 94.0500 339.0000 5.8224 + 94.1000 345.0000 5.8737 + 94.1500 357.0000 5.9749 + 94.2000 360.0000 6.0000 + 94.2500 358.0000 5.9833 + 94.3000 372.0000 6.0992 + 94.3500 425.0000 6.5192 + 94.4000 511.0000 7.1484 + 94.4500 626.0000 7.9120 + 94.5000 770.0000 8.7750 + 94.5500 946.0000 9.7263 + 94.6000 1118.0000 10.5736 + 94.6500 1205.0000 10.9772 + 94.7000 1227.0000 11.0770 + 94.7500 1157.0000 10.7564 + 94.8000 1041.0000 10.2029 + 94.8500 873.0000 9.3434 + 94.9000 715.0000 8.4558 + 94.9500 562.0000 7.4967 + 95.0000 446.0000 6.6783 + 95.0500 377.0000 6.1400 + 95.1000 332.0000 5.7619 + 95.1500 297.0000 5.4498 + 95.2000 282.0000 5.3104 + 95.2500 276.0000 5.2536 + 95.3000 264.0000 5.1381 + 95.3500 261.0000 5.1088 + 95.4000 266.0000 5.1575 + 95.4500 261.0000 5.1088 + 95.5000 253.0000 5.0299 + 95.5500 258.0000 5.0794 + 95.6000 262.0000 5.1186 + 95.6500 260.0000 5.0990 + 95.7000 283.0000 5.3198 + 95.7500 307.0000 5.5408 + 95.8000 344.0000 5.8652 + 95.8500 402.0000 6.3403 + 95.9000 453.0000 6.7305 + 95.9500 529.0000 7.2732 + 96.0000 604.0000 7.7717 + 96.0500 661.0000 8.1302 + 96.1000 672.0000 8.1976 + 96.1500 629.0000 7.9310 + 96.2000 588.0000 7.6681 + 96.2500 510.0000 7.1414 + 96.3000 440.0000 6.6332 + 96.3500 377.0000 6.1400 + 96.4000 330.0000 5.7446 + 96.4500 301.0000 5.4863 + 96.5000 280.0000 5.2915 + 96.5500 269.0000 5.1865 + 96.6000 258.0000 5.0794 + 96.6500 252.0000 5.0200 + 96.7000 251.0000 5.0100 + 96.7500 252.0000 5.0200 + 96.8000 256.0000 5.0596 + 96.8500 253.0000 5.0299 + 96.9000 253.0000 5.0299 + 96.9500 253.0000 5.0299 + 97.0000 262.0000 5.1186 + 97.0500 265.0000 5.1478 + 97.1000 284.0000 5.3292 + 97.1500 291.0000 5.3944 + 97.2000 323.0000 5.6833 + 97.2500 374.0000 6.1156 + 97.3000 431.0000 6.5651 + 97.3500 511.0000 7.1484 + 97.4000 602.0000 7.7589 + 97.4500 678.0000 8.2341 + 97.5000 743.0000 8.6197 + 97.5500 756.0000 8.6948 + 97.6000 717.0000 8.4676 + 97.6500 657.0000 8.1056 + 97.7000 581.0000 7.6223 + 97.7500 490.0000 7.0000 + 97.8000 418.0000 6.4653 + 97.8500 364.0000 6.0332 + 97.9000 335.0000 5.7879 + 97.9500 306.0000 5.5317 + 98.0000 290.0000 5.3852 + 98.0500 286.0000 5.3479 + 98.1000 283.0000 5.3198 + 98.1500 283.0000 5.3198 + 98.2000 274.0000 5.2345 + 98.2500 262.0000 5.1186 + 98.3000 266.0000 5.1575 + 98.3500 261.0000 5.1088 + 98.4000 261.0000 5.1088 + 98.4500 264.0000 5.1381 + 98.5000 269.0000 5.1865 + 98.5500 278.0000 5.2726 + 98.6000 288.0000 5.3666 + 98.6500 306.0000 5.5317 + 98.7000 319.0000 5.6480 + 98.7500 330.0000 5.7446 + 98.8000 343.0000 5.8566 + 98.8500 341.0000 5.8395 + 98.9000 325.0000 5.7009 + 98.9500 318.0000 5.6391 + 99.0000 298.0000 5.4589 + 99.0500 299.0000 5.4681 + 99.1000 288.0000 5.3666 + 99.1500 309.0000 5.5588 + 99.2000 344.0000 5.8652 + 99.2500 382.0000 6.1806 + 99.3000 422.0000 6.4962 + 99.3500 470.0000 6.8557 + 99.4000 512.0000 7.1554 + 99.4500 514.0000 7.1694 + 99.5000 515.0000 7.1764 + 99.5500 488.0000 6.9857 + 99.6000 440.0000 6.6332 + 99.6500 396.0000 6.2929 + 99.7000 366.0000 6.0498 + 99.7500 332.0000 5.7619 + 99.8000 311.0000 5.5767 + 99.8500 305.0000 5.5227 + 99.9000 300.0000 5.4772 + 99.9500 293.0000 5.4129 + 100.0000 286.0000 5.3479 + 100.0500 306.0000 5.5317 + 100.1000 313.0000 5.5946 + 100.1500 317.0000 5.6303 + 100.2000 327.0000 5.7184 + 100.2500 343.0000 5.8566 + 100.3000 330.0000 5.7446 + 100.3500 320.0000 5.6569 + 100.4000 307.0000 5.5408 + 100.4500 298.0000 5.4589 + 100.5000 282.0000 5.3104 + 100.5500 274.0000 5.2345 + 100.6000 266.0000 5.1575 + 100.6500 274.0000 5.2345 + 100.7000 271.0000 5.2058 + 100.7500 274.0000 5.2345 + 100.8000 290.0000 5.3852 + 100.8500 302.0000 5.4955 + 100.9000 321.0000 5.6657 + 100.9500 350.0000 5.9161 + 101.0000 367.0000 6.0581 + 101.0500 386.0000 6.2129 + 101.1000 394.0000 6.2769 + 101.1500 370.0000 6.0828 + 101.2000 356.0000 5.9666 + 101.2500 332.0000 5.7619 + 101.3000 310.0000 5.5678 + 101.3500 288.0000 5.3666 + 101.4000 279.0000 5.2820 + 101.4500 281.0000 5.3009 + 101.5000 274.0000 5.2345 + 101.5500 284.0000 5.3292 + 101.6000 280.0000 5.2915 + 101.6500 270.0000 5.1962 + 101.7000 278.0000 5.2726 + 101.7500 269.0000 5.1865 + 101.8000 273.0000 5.2249 + 101.8500 268.0000 5.1769 + 101.9000 267.0000 5.1672 + 101.9500 265.0000 5.1478 + 102.0000 257.0000 5.3437 + 102.0500 258.0000 5.3541 + 102.1000 267.0000 5.4467 + 102.1500 267.0000 5.4467 + 102.2000 277.0000 5.5478 + 102.2500 287.0000 5.6470 + 102.3000 302.0000 5.7927 + 102.3500 332.0000 6.0736 + 102.4000 360.0000 6.3246 + 102.4500 411.0000 6.7577 + 102.5000 457.0000 7.1259 + 102.5500 524.0000 7.6303 + 102.6000 608.0000 8.2192 + 102.6500 699.0000 8.8129 + 102.7000 861.0000 9.7809 + 102.7500 1096.0000 11.0353 + 102.8000 1377.0000 12.3693 + 102.8500 1685.0000 13.6829 + 102.9000 1901.0000 14.5335 + 102.9500 2069.0000 15.1621 + 103.0000 2016.0000 14.9666 + 103.0500 1800.0000 14.1421 + 103.1000 1500.0000 12.9099 + 103.1500 1181.0000 11.4552 + 103.2000 937.0000 10.2035 + 103.2500 728.0000 8.9938 + 103.3000 629.0000 8.3600 + 103.3500 576.0000 8.0000 + 103.4000 556.0000 7.8599 + 103.4500 535.0000 7.7100 + 103.5000 519.0000 7.5939 + 103.5500 486.0000 7.3485 + 103.6000 465.0000 7.1880 + 103.6500 429.0000 6.9041 + 103.7000 385.0000 6.5405 + 103.7500 361.0000 6.3333 + 103.8000 342.0000 6.1644 + 103.8500 312.0000 5.8878 + 103.9000 293.0000 5.7057 + 103.9500 279.0000 5.5678 + 104.0000 277.0000 5.5478 + 104.0500 265.0000 5.4263 + 104.1000 257.0000 5.3437 + 104.1500 256.0000 5.3333 + 104.2000 250.0000 5.2705 + 104.2500 260.0000 5.3748 + 104.3000 261.0000 5.3852 + 104.3500 258.0000 5.3541 + 104.4000 263.0000 5.4058 + 104.4500 268.0000 5.4569 + 104.5000 284.0000 5.6174 + 104.5500 306.0000 5.8310 + 104.6000 325.0000 6.0093 + 104.6500 337.0000 6.1192 + 104.7000 337.0000 6.1192 + 104.7500 344.0000 6.1824 + 104.8000 340.0000 6.1464 + 104.8500 337.0000 6.1192 + 104.9000 328.0000 6.0369 + 104.9500 321.0000 5.9722 + 105.0000 306.0000 5.8310 + 105.0500 295.0000 5.7252 + 105.1000 289.0000 5.6667 + 105.1500 281.0000 5.5877 + 105.2000 267.0000 5.4467 + 105.2500 266.0000 5.4365 + 105.3000 270.0000 5.4772 + 105.3500 263.0000 5.4058 + 105.4000 256.0000 5.3333 + 105.4500 266.0000 5.4365 + 105.5000 264.0000 5.4160 + 105.5500 259.0000 5.3645 + 105.6000 261.0000 5.3852 + 105.6500 261.0000 5.3852 + 105.7000 258.0000 5.3541 + 105.7500 253.0000 5.3020 + 105.8000 248.0000 5.2493 + 105.8500 244.0000 5.2068 + 105.9000 249.0000 5.2599 + 105.9500 251.0000 5.2810 + 106.0000 245.0000 5.2175 + 106.0500 245.0000 5.2175 + 106.1000 247.0000 5.2387 + 106.1500 247.0000 5.2387 + 106.2000 254.0000 5.3125 + 106.2500 259.0000 5.3645 + 106.3000 250.0000 5.2705 + 106.3500 251.0000 5.2810 + 106.4000 258.0000 5.3541 + 106.4500 252.0000 5.2915 + 106.5000 255.0000 5.3229 + 106.5500 259.0000 5.3645 + 106.6000 256.0000 5.3333 + 106.6500 264.0000 5.4160 + 106.7000 268.0000 5.4569 + 106.7500 281.0000 5.5877 + 106.8000 303.0000 5.8023 + 106.8500 331.0000 6.0645 + 106.9000 371.0000 6.4205 + 106.9500 420.0000 6.8313 + 107.0000 484.0000 7.3333 + 107.0500 532.0000 7.6884 + 107.1000 576.0000 8.0000 + 107.1500 582.0000 8.0416 + 107.2000 563.0000 7.9092 + 107.2500 527.0000 7.6522 + 107.3000 490.0000 7.3786 + 107.3500 465.0000 7.1880 + 107.4000 467.0000 7.2034 + 107.4500 449.0000 7.0632 + 107.5000 416.0000 6.7987 + 107.5500 393.0000 6.6081 + 107.6000 366.0000 6.3770 + 107.6500 331.0000 6.0645 + 107.7000 316.0000 5.9255 + 107.7500 297.0000 5.7446 + 107.8000 294.0000 5.7155 + 107.8500 292.0000 5.6960 + 107.9000 286.0000 5.6372 + 107.9500 295.0000 5.7252 + 108.0000 306.0000 6.1847 + 108.0500 315.0000 6.2750 + 108.1000 334.0000 6.4614 + 108.1500 373.0000 6.8282 + 108.2000 406.0000 7.1239 + 108.2500 447.0000 7.4750 + 108.3000 499.0000 7.8978 + 108.3500 507.0000 7.9608 + 108.4000 506.0000 7.9530 + 108.4500 488.0000 7.8102 + 108.5000 432.0000 7.3485 + 108.5500 391.0000 6.9911 + 108.6000 342.0000 6.5383 + 108.6500 315.0000 6.2750 + 108.7000 292.0000 6.0415 + 108.7500 275.0000 5.8630 + 108.8000 274.0000 5.8523 + 108.8500 259.0000 5.6899 + 108.9000 250.0000 5.5902 + 108.9500 258.0000 5.6789 + 109.0000 252.0000 5.6125 + 109.0500 255.0000 5.6458 + 109.1000 254.0000 5.6347 + 109.1500 253.0000 5.6236 + 109.2000 254.0000 5.6347 + 109.2500 252.0000 5.6125 + 109.3000 257.0000 5.6679 + 109.3500 250.0000 5.5902 + 109.4000 255.0000 5.6458 + 109.4500 251.0000 5.6013 + 109.5000 254.0000 5.6347 + 109.5500 260.0000 5.7009 + 109.6000 249.0000 5.5790 + 109.6500 253.0000 5.6236 + 109.7000 254.0000 5.6347 + 109.7500 259.0000 5.6899 + 109.8000 268.0000 5.7879 + 109.8500 270.0000 5.8095 + 109.9000 284.0000 5.9582 + 109.9500 305.0000 6.1745 + 110.0000 322.0000 6.3443 + 110.0500 364.0000 6.7454 + 110.1000 417.0000 7.2198 + 110.1500 470.0000 7.6649 + 110.2000 573.0000 8.4632 + 110.2500 678.0000 9.2060 + 110.3000 771.0000 9.8171 + 110.3500 847.0000 10.2896 + 110.4000 854.0000 10.3320 + 110.4500 794.0000 9.9624 + 110.5000 720.0000 9.4868 + 110.5500 611.0000 8.7393 + 110.6000 520.0000 8.0623 + 110.6500 463.0000 7.6076 + 110.7000 412.0000 7.1764 + 110.7500 399.0000 7.0622 + 110.8000 416.0000 7.2111 + 110.8500 428.0000 7.3144 + 110.9000 432.0000 7.3485 + 110.9500 420.0000 7.2457 + 111.0000 402.0000 7.0887 + 111.0500 364.0000 6.7454 + 111.1000 348.0000 6.5955 + 111.1500 334.0000 6.4614 + 111.2000 321.0000 6.3344 + 111.2500 330.0000 6.4226 + 111.3000 342.0000 6.5383 + 111.3500 380.0000 6.8920 + 111.4000 385.0000 6.9372 + 111.4500 420.0000 7.2457 + 111.5000 441.0000 7.4246 + 111.5500 465.0000 7.6240 + 111.6000 444.0000 7.4498 + 111.6500 406.0000 7.1239 + 111.7000 383.0000 6.9192 + 111.7500 345.0000 6.5670 + 111.8000 332.0000 6.4420 + 111.8500 321.0000 6.3344 + 111.9000 308.0000 6.2048 + 111.9500 292.0000 6.0415 + 112.0000 303.0000 6.1543 + 112.0500 314.0000 6.2650 + 112.1000 333.0000 6.4517 + 112.1500 379.0000 6.8829 + 112.2000 438.0000 7.3993 + 112.2500 505.0000 7.9451 + 112.3000 594.0000 8.6168 + 112.3500 659.0000 9.0761 + 112.4000 717.0000 9.4670 + 112.4500 738.0000 9.6047 + 112.5000 710.0000 9.4207 + 112.5500 642.0000 8.9582 + 112.6000 547.0000 8.2689 + 112.6500 492.0000 7.8422 + 112.7000 421.0000 7.2543 + 112.7500 386.0000 6.9462 + 112.8000 344.0000 6.5574 + 112.8500 337.0000 6.4904 + 112.9000 350.0000 6.6144 + 112.9500 364.0000 6.7454 + 113.0000 415.0000 7.2024 + 113.0500 506.0000 7.9530 + 113.1000 586.0000 8.5586 + 113.1500 674.0000 9.1788 + 113.2000 750.0000 9.6825 + 113.2500 787.0000 9.9184 + 113.3000 753.0000 9.7018 + 113.3500 682.0000 9.2331 + 113.4000 597.0000 8.6386 + 113.4500 499.0000 7.8978 + 113.5000 417.0000 7.2198 + 113.5500 362.0000 6.7268 + 113.6000 340.0000 6.5192 + 113.6500 302.0000 6.1441 + 113.7000 286.0000 5.9791 + 113.7500 280.0000 5.9161 + 113.8000 283.0000 5.9477 + 113.8500 276.0000 5.8737 + 113.9000 282.0000 5.9372 + 113.9500 284.0000 5.9582 + 114.0000 295.0000 6.4918 + 114.0500 310.0000 6.6548 + 114.1000 319.0000 6.7507 + 114.1500 321.0000 6.7718 + 114.2000 304.0000 6.5900 + 114.2500 298.0000 6.5247 + 114.3000 293.0000 6.4697 + 114.3500 283.0000 6.3583 + 114.4000 277.0000 6.2906 + 114.4500 269.0000 6.1991 + 114.5000 265.0000 6.1528 + 114.5500 277.0000 6.2906 + 114.6000 283.0000 6.3583 + 114.6500 283.0000 6.3583 + 114.7000 293.0000 6.4697 + 114.7500 303.0000 6.5792 + 114.8000 320.0000 6.7612 + 114.8500 316.0000 6.7188 + 114.9000 331.0000 6.8765 + 114.9500 346.0000 7.0305 + 115.0000 327.0000 6.8348 + 115.0500 328.0000 6.8452 + 115.1000 306.0000 6.6117 + 115.1500 291.0000 6.4476 + 115.2000 286.0000 6.3920 + 115.2500 278.0000 6.3019 + 115.3000 273.0000 6.2450 + 115.3500 267.0000 6.1760 + 115.4000 272.0000 6.2335 + 115.4500 257.0000 6.0592 + 115.5000 260.0000 6.0945 + 115.5500 265.0000 6.1528 + 115.6000 264.0000 6.1412 + 115.6500 272.0000 6.2335 + 115.7000 270.0000 6.2106 + 115.7500 268.0000 6.1875 + 115.8000 269.0000 6.1991 + 115.8500 287.0000 6.4031 + 115.9000 292.0000 6.4587 + 115.9500 295.0000 6.4918 + 116.0000 317.0000 6.7295 + 116.0500 335.0000 6.9179 + 116.1000 364.0000 7.2111 + 116.1500 410.0000 7.6532 + 116.2000 477.0000 8.2549 + 116.2500 556.0000 8.9123 + 116.3000 642.0000 9.5768 + 116.3500 755.0000 10.3854 + 116.4000 864.0000 11.1098 + 116.4500 946.0000 11.6251 + 116.5000 970.0000 11.7716 + 116.5500 941.0000 11.5943 + 116.6000 870.0000 11.1484 + 116.6500 759.0000 10.4129 + 116.7000 647.0000 9.6140 + 116.7500 540.0000 8.7831 + 116.8000 468.0000 8.1766 + 116.8500 418.0000 7.7275 + 116.9000 379.0000 7.3582 + 116.9500 381.0000 7.3776 + 117.0000 405.0000 7.6064 + 117.0500 446.0000 7.9821 + 117.1000 476.0000 8.2462 + 117.1500 523.0000 8.6437 + 117.2000 561.0000 8.9523 + 117.2500 555.0000 8.9043 + 117.3000 529.0000 8.6932 + 117.3500 485.0000 8.3238 + 117.4000 436.0000 7.8921 + 117.4500 398.0000 7.5404 + 117.5000 355.0000 7.1214 + 117.5500 322.0000 6.7823 + 117.6000 304.0000 6.5900 + 117.6500 285.0000 6.3808 + 117.7000 270.0000 6.2106 + 117.7500 278.0000 6.3019 + 117.8000 260.0000 6.0945 + 117.8500 268.0000 6.1875 + 117.9000 264.0000 6.1412 + 117.9500 265.0000 6.1528 + 118.0000 263.0000 6.1296 + 118.0500 267.0000 6.1760 + 118.1000 286.0000 6.3920 + 118.1500 293.0000 6.4697 + 118.2000 291.0000 6.4476 + 118.2500 319.0000 6.7507 + 118.3000 366.0000 7.2309 + 118.3500 411.0000 7.6625 + 118.4000 461.0000 8.1152 + 118.4500 489.0000 8.3581 + 118.5000 521.0000 8.6272 + 118.5500 555.0000 8.9043 + 118.6000 550.0000 8.8641 + 118.6500 511.0000 8.5440 + 118.7000 486.0000 8.3324 + 118.7500 436.0000 7.8921 + 118.8000 392.0000 7.4833 + 118.8500 368.0000 7.2506 + 118.9000 330.0000 6.8661 + 118.9500 328.0000 6.8452 + 119.0000 343.0000 7.0000 + 119.0500 371.0000 7.2801 + 119.1000 394.0000 7.5024 + 119.1500 441.0000 7.9373 + 119.2000 468.0000 8.1766 + 119.2500 469.0000 8.1854 + 119.3000 456.0000 8.0711 + 119.3500 416.0000 7.7090 + 119.4000 394.0000 7.5024 + 119.4500 361.0000 7.1813 + 119.5000 330.0000 6.8661 + 119.5500 312.0000 6.6762 + 119.6000 293.0000 6.4697 + 119.6500 285.0000 6.3808 + 119.7000 286.0000 6.3920 + 119.7500 275.0000 6.2678 + 119.8000 274.0000 6.2564 + 119.8500 281.0000 6.3358 + 119.9000 279.0000 6.3133 + 119.9500 298.0000 6.5247 + 120.0000 312.0000 7.2111 diff --git a/Notebooks/PbSO4/FittingPowder1D.ipynb b/Notebooks/PbSO4/FittingPowder1D.ipynb new file mode 100644 index 00000000..0a4f8f30 --- /dev/null +++ b/Notebooks/PbSO4/FittingPowder1D.ipynb @@ -0,0 +1,3192 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fitting to the experimental data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook we will show how to load a CIF file, an experimental profile and how to perform a parameter fit.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Import Python packages" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GSAS-II binary directory: /Users/asazonov/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/GSASII/bindist\n", + "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" + ] + } + ], + "source": [ + "# esyScience, technique-independent\n", + "from easyCore import np\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "# esyScience, diffraction\n", + "from easyDiffractionLib import Phases\n", + "from easyDiffractionLib.sample import Sample as Job\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", + "\n", + "# Vizualization\n", + "import py3Dmol\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Sample ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show a CIF file content" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "data_PbSO4\n", + "\n", + "_space_group_name_H-M_alt 'P n m a'\n", + "\n", + "_cell_length_a 8.480\n", + "_cell_length_b 5.398\n", + "_cell_length_c 6.958\n", + "_cell_angle_alpha 90.0\n", + "_cell_angle_beta 90.0\n", + "_cell_angle_gamma 90.0\n", + "\n", + "loop_\n", + " _atom_site_label\n", + " _atom_site_type_symbol\n", + " _atom_site_fract_x\n", + " _atom_site_fract_y\n", + " _atom_site_fract_z\n", + " _atom_site_occupancy\n", + " _atom_site_adp_type\n", + " _atom_site_U_iso_or_equiv\n", + " Pb Pb 0.188 0.25 0.167 1.0 Uiso 0.01\n", + " S S 0.063 0.25 0.686 1.0 Uiso 0.01\n", + " O1 O -0.095 0.25 0.600 1.0 Uiso 0.01\n", + " O2 O 0.181 0.25 0.543 1.0 Uiso 0.01\n", + " O3 O 0.085 0.026 0.806 1.0 Uiso 0.01\n", + "\n" + ] + } + ], + "source": [ + "cif_fname = 'PbSO4.cif'\n", + "\n", + "with open(cif_fname, 'r') as f:\n", + " content = f.read()\n", + " \n", + "print(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load structure from a CIF file" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collection of 1 phases.\n", + "Phase `PbSO4`\n" + ] + } + ], + "source": [ + "phases = Phases.from_cif_file(cif_fname)\n", + "phase = phases[0]\n", + "\n", + "print(phases)\n", + "print(phase)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualise the structure" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "text/html": [ + "
\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "structure = py3Dmol.view()\n", + "structure.addModel(phase.to_cif_str(), 'cif')\n", + "structure.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol','radius': 0.1}})\n", + "structure.addUnitCell()\n", + "structure.replicateUnitCell(2,2,1)\n", + "structure.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Experiment ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show measured data as text" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992)\n", + " 10.0000 220.0000 14.8324\n", + " 10.0500 214.0000 14.6287\n", + " 10.1000 219.0000 14.7986\n", + " 10.1500 224.0000 14.9666\n", + " 10.2000 198.0000 14.0712\n", + " 10.2500 229.0000 15.1327\n", + " 10.3000 224.0000 14.9666\n", + " 10.3500 216.0000 14.6969\n", + " 10.4000 202.0000 14.2127\n", + " 10.4500 229.0000 15.1327\n", + " 10.5000 202.0000 14.2127\n", + " 10.5500 215.0000 14.6629\n", + " 10.6000 215.0000 14.6629\n", + " 10.6500 196.0000 14.0000\n", + " 10.7000 235.0000 15.3297\n", + " 10.7500 207.0000 14.3875\n", + " 10.8000 205.0000 14.3178\n", + " 10.8500 238.0000 15.4272\n", + " 10.9000 202.0000 14.2127\n", + " 10.9500 213.0000 14.5945\n", + " 11.0000 226.0000 15.0333\n", + " 11.0500 198.0000 14.0712\n", + " 11.1000 222.0000 14.8997\n", + " 11.1500 186.0000 13.6382\n", + " 11.2000 216.0000 14.6969\n", + " 11.2500 218.0000 14.7648\n", + " 11.3000 225.0000 15.0000\n", + " 11.3500 200.0000 14.1421\n", + " 11.4000 196.0000 14.0000\n", + " 11.4500 224.0000 14.9666\n", + " 11.5000 199.0000 14.1067\n", + " 11.5500 204.0000 14.2829\n", + " 11.6000 189.0000 13.7477\n", + " 11.6500 211.0000 14.5258\n", + " 11.7000 190.0000 13.7840\n", + " 11.7500 184.0000 13.5647\n", + " 11.8000 204.0000 14.2829\n", + " 11.8500 204.0000 14.2829\n", + " 11.9000 219.0000 14.7986\n", + " 11.9500 207.0000 14.3875\n", + " 12.0000 227.0000 15.0665\n", + " 12.0500 211.0000 10.2713\n", + " 12.1000 193.0000 9.8234\n", + " 12.1500 206.0000 10.1489\n", + " 12.2000 208.0000 10.1980\n", + " 12.2500 191.0000 9.7724\n", + " 12.3000 194.0000 9.8489\n", + " 12.3500 185.0000 9.6177\n", + " 12.4000 200.0000 10.0000\n", + " 12.4500 203.0000 10.0747\n", + " 12.5000 197.0000 9.9247\n", + " 12.5500 203.0000 10.0747\n", + " 12.6000 200.0000 10.0000\n", + " 12.6500 200.0000 10.0000\n", + " 12.7000 205.0000 10.1242\n", + " 12.7500 208.0000 10.1980\n", + " 12.8000 205.0000 10.1242\n", + " 12.8500 201.0000 10.0250\n", + " 12.9000 221.0000 10.5119\n", + " 12.9500 218.0000 10.4403\n", + " 13.0000 218.0000 10.4403\n", + " 13.0500 216.0000 10.3923\n", + " 13.1000 202.0000 10.0499\n", + " 13.1500 206.0000 10.1489\n", + " 13.2000 197.0000 9.9247\n", + " 13.2500 210.0000 10.2470\n", + " 13.3000 199.0000 9.9750\n", + " 13.3500 219.0000 10.4642\n", + " 13.4000 192.0000 9.7980\n", + " 13.4500 211.0000 10.2713\n", + " 13.5000 199.0000 9.9750\n", + " 13.5500 196.0000 9.8995\n", + " 13.6000 195.0000 9.8742\n", + " 13.6500 203.0000 10.0747\n", + " 13.7000 202.0000 10.0499\n", + " 13.7500 200.0000 10.0000\n", + " 13.8000 199.0000 9.9750\n", + " 13.8500 191.0000 9.7724\n", + " 13.9000 204.0000 10.0995\n", + " 13.9500 191.0000 9.7724\n", + " 14.0000 200.0000 10.0000\n", + " 14.0500 199.0000 9.9750\n", + " 14.1000 197.0000 9.9247\n", + " 14.1500 202.0000 10.0499\n", + " 14.2000 210.0000 10.2470\n", + " 14.2500 202.0000 10.0499\n", + " 14.3000 198.0000 9.9499\n", + " 14.3500 191.0000 9.7724\n", + " 14.4000 194.0000 9.8489\n", + " 14.4500 198.0000 9.9499\n", + " 14.5000 194.0000 9.8489\n", + " 14.5500 193.0000 9.8234\n", + " 14.6000 212.0000 10.2956\n", + " 14.6500 214.0000 10.3441\n", + " 14.7000 197.0000 9.9247\n", + " 14.7500 195.0000 9.8742\n", + " 14.8000 205.0000 10.1242\n", + " 14.8500 209.0000 10.2225\n", + " 14.9000 203.0000 10.0747\n", + " 14.9500 197.0000 9.9247\n", + " 15.0000 191.0000 9.7724\n", + " 15.0500 192.0000 9.7980\n", + " 15.1000 215.0000 10.3682\n", + " 15.1500 194.0000 9.8489\n", + " 15.2000 189.0000 9.7211\n", + " 15.2500 188.0000 9.6954\n", + " 15.3000 202.0000 10.0499\n", + " 15.3500 201.0000 10.0250\n", + " 15.4000 198.0000 9.9499\n", + " 15.4500 208.0000 10.1980\n", + " 15.5000 197.0000 9.9247\n", + " 15.5500 187.0000 9.6695\n", + " 15.6000 187.0000 9.6695\n", + " 15.6500 190.0000 9.7468\n", + " 15.7000 197.0000 9.9247\n", + " 15.7500 200.0000 10.0000\n", + " 15.8000 193.0000 9.8234\n", + " 15.8500 180.0000 9.4868\n", + " 15.9000 194.0000 9.8489\n", + " 15.9500 206.0000 10.1489\n", + " 16.0000 195.0000 9.8742\n", + " 16.0500 193.0000 9.8234\n", + " 16.1000 205.0000 10.1242\n", + " 16.1500 194.0000 9.8489\n", + " 16.2000 196.0000 9.8995\n", + " 16.2500 194.0000 9.8489\n", + " 16.3000 199.0000 9.9750\n", + " 16.3500 207.0000 10.1735\n", + " 16.4000 188.0000 9.6954\n", + " 16.4500 203.0000 10.0747\n", + " 16.5000 188.0000 9.6954\n", + " 16.5500 180.0000 9.4868\n", + " 16.6000 198.0000 9.9499\n", + " 16.6500 200.0000 10.0000\n", + " 16.7000 201.0000 10.0250\n", + " 16.7500 210.0000 10.2470\n", + " 16.8000 206.0000 10.1489\n", + " 16.8500 189.0000 9.7211\n", + " 16.9000 194.0000 9.8489\n", + " 16.9500 187.0000 9.6695\n", + " 17.0000 195.0000 9.8742\n", + " 17.0500 201.0000 10.0250\n", + " 17.1000 197.0000 9.9247\n", + " 17.1500 206.0000 10.1489\n", + " 17.2000 208.0000 10.1980\n", + " 17.2500 199.0000 9.9750\n", + " 17.3000 192.0000 9.7980\n", + " 17.3500 193.0000 9.8234\n", + " 17.4000 204.0000 10.0995\n", + " 17.4500 201.0000 10.0250\n", + " 17.5000 200.0000 10.0000\n", + " 17.5500 177.0000 9.4074\n", + " 17.6000 193.0000 9.8234\n", + " 17.6500 199.0000 9.9750\n", + " 17.7000 201.0000 10.0250\n", + " 17.7500 194.0000 9.8489\n", + " 17.8000 184.0000 9.5917\n", + " 17.8500 192.0000 9.7980\n", + " 17.9000 199.0000 9.9750\n", + " 17.9500 190.0000 9.7468\n", + " 18.0000 183.0000 9.5656\n", + " 18.0500 189.0000 7.9373\n", + " 18.1000 196.0000 8.0829\n", + " 18.1500 196.0000 8.0829\n", + " 18.2000 198.0000 8.1240\n", + " 18.2500 210.0000 8.3666\n", + " 18.3000 212.0000 8.4063\n", + " 18.3500 219.0000 8.5440\n", + " 18.4000 198.0000 8.1240\n", + " 18.4500 195.0000 8.0623\n", + " 18.5000 198.0000 8.1240\n", + " 18.5500 191.0000 7.9791\n", + " 18.6000 193.0000 8.0208\n", + " 18.6500 197.0000 8.1035\n", + " 18.7000 194.0000 8.0416\n", + " 18.7500 187.0000 7.8951\n", + " 18.8000 209.0000 8.3467\n", + " 18.8500 187.0000 7.8951\n", + " 18.9000 198.0000 8.1240\n", + " 18.9500 206.0000 8.2865\n", + " 19.0000 197.0000 8.1035\n", + " 19.0500 191.0000 7.9791\n", + " 19.1000 200.0000 8.1650\n", + " 19.1500 207.0000 8.3066\n", + " 19.2000 205.0000 8.2664\n", + " 19.2500 198.0000 8.1240\n", + " 19.3000 196.0000 8.0829\n", + " 19.3500 209.0000 8.3467\n", + " 19.4000 211.0000 8.3865\n", + " 19.4500 203.0000 8.2260\n", + " 19.5000 200.0000 8.1650\n", + " 19.5500 192.0000 8.0000\n", + " 19.6000 208.0000 8.3267\n", + " 19.6500 213.0000 8.4261\n", + " 19.7000 221.0000 8.5829\n", + " 19.7500 216.0000 8.4853\n", + " 19.8000 226.0000 8.6795\n", + " 19.8500 228.0000 8.7178\n", + " 19.9000 228.0000 8.7178\n", + " 19.9500 215.0000 8.4656\n", + " 20.0000 224.0000 8.6410\n", + " 20.0500 226.0000 8.6795\n", + " 20.1000 213.0000 8.4261\n", + " 20.1500 239.0000 8.9256\n", + " 20.2000 250.0000 9.1287\n", + " 20.2500 247.0000 9.0738\n", + " 20.3000 240.0000 8.9443\n", + " 20.3500 231.0000 8.7750\n", + " 20.4000 236.0000 8.8694\n", + " 20.4500 223.0000 8.6217\n", + " 20.5000 231.0000 8.7750\n", + " 20.5500 226.0000 8.6795\n", + " 20.6000 214.0000 8.4459\n", + " 20.6500 208.0000 8.3267\n", + " 20.7000 214.0000 8.4459\n", + " 20.7500 196.0000 8.0829\n", + " 20.8000 204.0000 8.2462\n", + " 20.8500 199.0000 8.1445\n", + " 20.9000 186.0000 7.8740\n", + " 20.9500 192.0000 8.0000\n", + " 21.0000 199.0000 8.1445\n", + " 21.0500 200.0000 8.1650\n", + " 21.1000 184.0000 7.8316\n", + " 21.1500 184.0000 7.8316\n", + " 21.2000 189.0000 7.9373\n", + " 21.2500 182.0000 7.7889\n", + " 21.3000 184.0000 7.8316\n", + " 21.3500 185.0000 7.8528\n", + " 21.4000 195.0000 8.0623\n", + " 21.4500 190.0000 7.9582\n", + " 21.5000 194.0000 8.0416\n", + " 21.5500 185.0000 7.8528\n", + " 21.6000 183.0000 7.8102\n", + " 21.6500 193.0000 8.0208\n", + " 21.7000 194.0000 8.0416\n", + " 21.7500 193.0000 8.0208\n", + " 21.8000 188.0000 7.9162\n", + " 21.8500 191.0000 7.9791\n", + " 21.9000 189.0000 7.9373\n", + " 21.9500 188.0000 7.9162\n", + " 22.0000 201.0000 8.1854\n", + " 22.0500 195.0000 8.0623\n", + " 22.1000 205.0000 8.2664\n", + " 22.1500 200.0000 8.1650\n", + " 22.2000 200.0000 8.1650\n", + " 22.2500 192.0000 8.0000\n", + " 22.3000 197.0000 8.1035\n", + " 22.3500 204.0000 8.2462\n", + " 22.4000 207.0000 8.3066\n", + " 22.4500 192.0000 8.0000\n", + " 22.5000 201.0000 8.1854\n", + " 22.5500 190.0000 7.9582\n", + " 22.6000 195.0000 8.0623\n", + " 22.6500 194.0000 8.0416\n", + " 22.7000 182.0000 7.7889\n", + " 22.7500 189.0000 7.9373\n", + " 22.8000 196.0000 8.0829\n", + " 22.8500 196.0000 8.0829\n", + " 22.9000 200.0000 8.1650\n", + " 22.9500 190.0000 7.9582\n", + " 23.0000 183.0000 7.8102\n", + " 23.0500 199.0000 8.1445\n", + " 23.1000 187.0000 7.8951\n", + " 23.1500 196.0000 8.0829\n", + " 23.2000 191.0000 7.9791\n", + " 23.2500 191.0000 7.9791\n", + " 23.3000 195.0000 8.0623\n", + " 23.3500 194.0000 8.0416\n", + " 23.4000 192.0000 8.0000\n", + " 23.4500 182.0000 7.7889\n", + " 23.5000 188.0000 7.9162\n", + " 23.5500 203.0000 8.2260\n", + " 23.6000 187.0000 7.8951\n", + " 23.6500 192.0000 8.0000\n", + " 23.7000 206.0000 8.2865\n", + " 23.7500 201.0000 8.1854\n", + " 23.8000 184.0000 7.8316\n", + " 23.8500 192.0000 8.0000\n", + " 23.9000 205.0000 8.2664\n", + " 23.9500 196.0000 8.0829\n", + " 24.0000 193.0000 8.0208\n", + " 24.0500 194.0000 6.9642\n", + " 24.1000 195.0000 6.9821\n", + " 24.1500 194.0000 6.9642\n", + " 24.2000 201.0000 7.0887\n", + " 24.2500 193.0000 6.9462\n", + " 24.3000 176.0000 6.6332\n", + " 24.3500 187.0000 6.8374\n", + " 24.4000 188.0000 6.8557\n", + " 24.4500 196.0000 7.0000\n", + " 24.5000 192.0000 6.9282\n", + " 24.5500 185.0000 6.8007\n", + " 24.6000 195.0000 6.9821\n", + " 24.6500 198.0000 7.0356\n", + " 24.7000 205.0000 7.1589\n", + " 24.7500 200.0000 7.0711\n", + " 24.8000 208.0000 7.2111\n", + " 24.8500 195.0000 6.9821\n", + " 24.9000 187.0000 6.8374\n", + " 24.9500 193.0000 6.9462\n", + " 25.0000 197.0000 7.0178\n", + " 25.0500 202.0000 7.1063\n", + " 25.1000 193.0000 6.9462\n", + " 25.1500 196.0000 7.0000\n", + " 25.2000 202.0000 7.1063\n", + " 25.2500 201.0000 7.0887\n", + " 25.3000 197.0000 7.0178\n", + " 25.3500 204.0000 7.1414\n", + " 25.4000 208.0000 7.2111\n", + " 25.4500 206.0000 7.1764\n", + " 25.5000 212.0000 7.2801\n", + " 25.5500 207.0000 7.1937\n", + " 25.6000 207.0000 7.1937\n", + " 25.6500 212.0000 7.2801\n", + " 25.7000 216.0000 7.3485\n", + " 25.7500 218.0000 7.3824\n", + " 25.8000 221.0000 7.4330\n", + " 25.8500 218.0000 7.3824\n", + " 25.9000 207.0000 7.1937\n", + " 25.9500 203.0000 7.1239\n", + " 26.0000 204.0000 7.1414\n", + " 26.0500 202.0000 7.1063\n", + " 26.1000 206.0000 7.1764\n", + " 26.1500 202.0000 7.1063\n", + " 26.2000 202.0000 7.1063\n", + " 26.2500 181.0000 6.7268\n", + " 26.3000 193.0000 6.9462\n", + " 26.3500 205.0000 7.1589\n", + " 26.4000 198.0000 7.0356\n", + " 26.4500 196.0000 7.0000\n", + " 26.5000 197.0000 7.0178\n", + " 26.5500 195.0000 6.9821\n", + " 26.6000 201.0000 7.0887\n", + " 26.6500 205.0000 7.1589\n", + " 26.7000 195.0000 6.9821\n", + " 26.7500 196.0000 7.0000\n", + " 26.8000 196.0000 7.0000\n", + " 26.8500 205.0000 7.1589\n", + " 26.9000 198.0000 7.0356\n", + " 26.9500 200.0000 7.0711\n", + " 27.0000 199.0000 7.0534\n", + " 27.0500 180.0000 6.7082\n", + " 27.1000 187.0000 6.8374\n", + " 27.1500 193.0000 6.9462\n", + " 27.2000 197.0000 7.0178\n", + " 27.2500 197.0000 7.0178\n", + " 27.3000 196.0000 7.0000\n", + " 27.3500 194.0000 6.9642\n", + " 27.4000 197.0000 7.0178\n", + " 27.4500 204.0000 7.1414\n", + " 27.5000 201.0000 7.0887\n", + " 27.5500 187.0000 6.8374\n", + " 27.6000 191.0000 6.9101\n", + " 27.6500 205.0000 7.1589\n", + " 27.7000 200.0000 7.0711\n", + " 27.7500 198.0000 7.0356\n", + " 27.8000 200.0000 7.0711\n", + " 27.8500 204.0000 7.1414\n", + " 27.9000 196.0000 7.0000\n", + " 27.9500 195.0000 6.9821\n", + " 28.0000 194.0000 6.9642\n", + " 28.0500 200.0000 7.0711\n", + " 28.1000 198.0000 7.0356\n", + " 28.1500 201.0000 7.0887\n", + " 28.2000 208.0000 7.2111\n", + " 28.2500 205.0000 7.1589\n", + " 28.3000 211.0000 7.2629\n", + " 28.3500 211.0000 7.2629\n", + " 28.4000 220.0000 7.4162\n", + " 28.4500 220.0000 7.4162\n", + " 28.5000 212.0000 7.2801\n", + " 28.5500 208.0000 7.2111\n", + " 28.6000 214.0000 7.3144\n", + " 28.6500 226.0000 7.5166\n", + " 28.7000 235.0000 7.6649\n", + " 28.7500 233.0000 7.6322\n", + " 28.8000 237.0000 7.6974\n", + " 28.8500 242.0000 7.7782\n", + " 28.9000 242.0000 7.7782\n", + " 28.9500 245.0000 7.8262\n", + " 29.0000 239.0000 7.7298\n", + " 29.0500 226.0000 7.5166\n", + " 29.1000 232.0000 7.6158\n", + " 29.1500 238.0000 7.7136\n", + " 29.2000 226.0000 7.5166\n", + " 29.2500 218.0000 7.3824\n", + " 29.3000 218.0000 7.3824\n", + " 29.3500 214.0000 7.3144\n", + " 29.4000 205.0000 7.1589\n", + " 29.4500 200.0000 7.0711\n", + " 29.5000 193.0000 6.9462\n", + " 29.5500 195.0000 6.9821\n", + " 29.6000 196.0000 7.0000\n", + " 29.6500 195.0000 6.9821\n", + " 29.7000 207.0000 7.1937\n", + " 29.7500 215.0000 7.3314\n", + " 29.8000 207.0000 7.1937\n", + " 29.8500 218.0000 7.3824\n", + " 29.9000 218.0000 7.3824\n", + " 29.9500 220.0000 7.4162\n", + " 30.0000 220.0000 7.4162\n", + " 30.0500 229.0000 6.7676\n", + " 30.1000 236.0000 6.8702\n", + " 30.1500 254.0000 7.1274\n", + " 30.2000 264.0000 7.2664\n", + " 30.2500 280.0000 7.4833\n", + " 30.3000 289.0000 7.6026\n", + " 30.3500 289.0000 7.6026\n", + " 30.4000 303.0000 7.7846\n", + " 30.4500 302.0000 7.7717\n", + " 30.5000 297.0000 7.7071\n", + " 30.5500 281.0000 7.4967\n", + " 30.6000 278.0000 7.4565\n", + " 30.6500 280.0000 7.4833\n", + " 30.7000 265.0000 7.2801\n", + " 30.7500 258.0000 7.1833\n", + " 30.8000 243.0000 6.9714\n", + " 30.8500 240.0000 6.9282\n", + " 30.9000 232.0000 6.8118\n", + " 30.9500 231.0000 6.7971\n", + " 31.0000 233.0000 6.8264\n", + " 31.0500 246.0000 7.0143\n", + " 31.1000 248.0000 7.0427\n", + " 31.1500 249.0000 7.0569\n", + " 31.2000 256.0000 7.1554\n", + " 31.2500 272.0000 7.3756\n", + " 31.3000 289.0000 7.6026\n", + " 31.3500 311.0000 7.8867\n", + " 31.4000 340.0000 8.2462\n", + " 31.4500 363.0000 8.5206\n", + " 31.5000 393.0000 8.8657\n", + " 31.5500 440.0000 9.3808\n", + " 31.6000 474.0000 9.7365\n", + " 31.6500 482.0000 9.8183\n", + " 31.7000 492.0000 9.9197\n", + " 31.7500 508.0000 10.0797\n", + " 31.8000 494.0000 9.9398\n", + " 31.8500 475.0000 9.7468\n", + " 31.9000 439.0000 9.3702\n", + " 31.9500 413.0000 9.0885\n", + " 32.0000 368.0000 8.5790\n", + " 32.0500 331.0000 8.1363\n", + " 32.1000 299.0000 7.7330\n", + " 32.1500 286.0000 7.5631\n", + " 32.2000 262.0000 7.2388\n", + " 32.2500 241.0000 6.9426\n", + " 32.3000 238.0000 6.8993\n", + " 32.3500 252.0000 7.0993\n", + " 32.4000 267.0000 7.3075\n", + " 32.4500 276.0000 7.4297\n", + " 32.5000 278.0000 7.4565\n", + " 32.5500 300.0000 7.7460\n", + " 32.6000 325.0000 8.0623\n", + " 32.6500 336.0000 8.1976\n", + " 32.7000 359.0000 8.4735\n", + " 32.7500 405.0000 9.0000\n", + " 32.8000 458.0000 9.5708\n", + " 32.8500 501.0000 10.0100\n", + " 32.9000 564.0000 10.6207\n", + " 32.9500 640.0000 11.3137\n", + " 33.0000 719.0000 11.9917\n", + " 33.0500 783.0000 12.5140\n", + " 33.1000 837.0000 12.9383\n", + " 33.1500 851.0000 13.0461\n", + " 33.2000 866.0000 13.1605\n", + " 33.2500 828.0000 12.8686\n", + " 33.3000 763.0000 12.3531\n", + " 33.3500 697.0000 11.8068\n", + " 33.4000 634.0000 11.2606\n", + " 33.4500 541.0000 10.4019\n", + " 33.5000 465.0000 9.6437\n", + " 33.5500 391.0000 8.8431\n", + " 33.6000 351.0000 8.3785\n", + " 33.6500 301.0000 7.7589\n", + " 33.7000 284.0000 7.5366\n", + " 33.7500 260.0000 7.2111\n", + " 33.8000 248.0000 7.0427\n", + " 33.8500 257.0000 7.1694\n", + " 33.9000 242.0000 6.9570\n", + " 33.9500 246.0000 7.0143\n", + " 34.0000 263.0000 7.2526\n", + " 34.0500 271.0000 7.3621\n", + " 34.1000 281.0000 7.4967\n", + " 34.1500 302.0000 7.7717\n", + " 34.2000 309.0000 7.8613\n", + " 34.2500 335.0000 8.1854\n", + " 34.3000 342.0000 8.2704\n", + " 34.3500 345.0000 8.3066\n", + " 34.4000 356.0000 8.4380\n", + " 34.4500 351.0000 8.3785\n", + " 34.5000 341.0000 8.2583\n", + " 34.5500 334.0000 8.1731\n", + " 34.6000 321.0000 8.0125\n", + " 34.6500 286.0000 7.5631\n", + " 34.7000 268.0000 7.3212\n", + " 34.7500 256.0000 7.1554\n", + " 34.8000 238.0000 6.8993\n", + " 34.8500 229.0000 6.7676\n", + " 34.9000 218.0000 6.6030\n", + " 34.9500 223.0000 6.6783\n", + " 35.0000 216.0000 6.5727\n", + " 35.0500 203.0000 6.3718\n", + " 35.1000 203.0000 6.3718\n", + " 35.1500 194.0000 6.2290\n", + " 35.2000 205.0000 6.4031\n", + " 35.2500 196.0000 6.2610\n", + " 35.3000 193.0000 6.2129\n", + " 35.3500 206.0000 6.4187\n", + " 35.4000 201.0000 6.3403\n", + " 35.4500 201.0000 6.3403\n", + " 35.5000 201.0000 6.3403\n", + " 35.5500 200.0000 6.3246\n", + " 35.6000 194.0000 6.2290\n", + " 35.6500 196.0000 6.2610\n", + " 35.7000 203.0000 6.3718\n", + " 35.7500 195.0000 6.2450\n", + " 35.8000 196.0000 6.2610\n", + " 35.8500 211.0000 6.4962\n", + " 35.9000 216.0000 6.5727\n", + " 35.9500 207.0000 6.4343\n", + " 36.0000 215.0000 6.5574\n", + " 36.0500 221.0000 6.6483\n", + " 36.1000 237.0000 6.2849\n", + " 36.1500 248.0000 6.4291\n", + " 36.2000 261.0000 6.5955\n", + " 36.2500 279.0000 6.8191\n", + " 36.3000 319.0000 7.2915\n", + " 36.3500 337.0000 7.4944\n", + " 36.4000 364.0000 7.7889\n", + " 36.4500 423.0000 8.3964\n", + " 36.5000 489.0000 9.0277\n", + " 36.5500 557.0000 9.6350\n", + " 36.6000 630.0000 10.2470\n", + " 36.6500 729.0000 11.0227\n", + " 36.7000 822.0000 11.7047\n", + " 36.7500 943.0000 12.5366\n", + " 36.8000 1059.0000 13.2853\n", + " 36.8500 1196.0000 14.1185\n", + " 36.9000 1235.0000 14.3469\n", + " 36.9500 1220.0000 14.2595\n", + " 37.0000 1209.0000 14.1951\n", + " 37.0500 1128.0000 13.7113\n", + " 37.1000 1001.0000 12.9164\n", + " 37.1500 864.0000 12.0000\n", + " 37.2000 729.0000 11.0227\n", + " 37.2500 601.0000 10.0083\n", + " 37.3000 496.0000 9.0921\n", + " 37.3500 418.0000 8.3467\n", + " 37.4000 355.0000 7.6920\n", + " 37.4500 313.0000 7.2226\n", + " 37.5000 263.0000 6.6207\n", + " 37.5500 246.0000 6.4031\n", + " 37.6000 226.0000 6.1373\n", + " 37.6500 214.0000 5.9722\n", + " 37.7000 222.0000 6.0828\n", + " 37.7500 222.0000 6.0828\n", + " 37.8000 211.0000 5.9301\n", + " 37.8500 211.0000 5.9301\n", + " 37.9000 202.0000 5.8023\n", + " 37.9500 198.0000 5.7446\n", + " 38.0000 192.0000 5.6569\n", + " 38.0500 193.0000 5.6716\n", + " 38.1000 196.0000 5.7155\n", + " 38.1500 201.0000 5.7879\n", + " 38.2000 203.0000 5.8166\n", + " 38.2500 203.0000 5.8166\n", + " 38.3000 201.0000 5.7879\n", + " 38.3500 198.0000 5.7446\n", + " 38.4000 196.0000 5.7155\n", + " 38.4500 206.0000 5.8595\n", + " 38.5000 210.0000 5.9161\n", + " 38.5500 197.0000 5.7300\n", + " 38.6000 204.0000 5.8310\n", + " 38.6500 200.0000 5.7735\n", + " 38.7000 205.0000 5.8452\n", + " 38.7500 196.0000 5.7155\n", + " 38.8000 195.0000 5.7009\n", + " 38.8500 205.0000 5.8452\n", + " 38.9000 204.0000 5.8310\n", + " 38.9500 200.0000 5.7735\n", + " 39.0000 203.0000 5.8166\n", + " 39.0500 208.0000 5.8878\n", + " 39.1000 207.0000 5.8737\n", + " 39.1500 202.0000 5.8023\n", + " 39.2000 203.0000 5.8166\n", + " 39.2500 198.0000 5.7446\n", + " 39.3000 204.0000 5.8310\n", + " 39.3500 210.0000 5.9161\n", + " 39.4000 216.0000 6.0000\n", + " 39.4500 210.0000 5.9161\n", + " 39.5000 229.0000 6.1779\n", + " 39.5500 239.0000 6.3114\n", + " 39.6000 247.0000 6.4161\n", + " 39.6500 278.0000 6.8069\n", + " 39.7000 302.0000 7.0946\n", + " 39.7500 324.0000 7.3485\n", + " 39.8000 371.0000 7.8634\n", + " 39.8500 420.0000 8.3666\n", + " 39.9000 465.0000 8.8034\n", + " 39.9500 538.0000 9.4692\n", + " 40.0000 630.0000 10.2470\n", + " 40.0500 739.0000 11.0980\n", + " 40.1000 851.0000 11.9094\n", + " 40.1500 976.0000 12.7541\n", + " 40.2000 1076.0000 13.3915\n", + " 40.2500 1161.0000 13.9104\n", + " 40.3000 1222.0000 14.2712\n", + " 40.3500 1227.0000 14.3003\n", + " 40.4000 1187.0000 14.0653\n", + " 40.4500 1096.0000 13.5154\n", + " 40.5000 964.0000 12.6754\n", + " 40.5500 833.0000 11.7828\n", + " 40.6000 708.0000 10.8628\n", + " 40.6500 587.0000 9.8911\n", + " 40.7000 512.0000 9.2376\n", + " 40.7500 436.0000 8.5245\n", + " 40.8000 391.0000 8.0726\n", + " 40.8500 384.0000 8.0000\n", + " 40.9000 370.0000 7.8528\n", + " 40.9500 391.0000 8.0726\n", + " 41.0000 419.0000 8.3566\n", + " 41.0500 448.0000 8.6410\n", + " 41.1000 490.0000 9.0370\n", + " 41.1500 567.0000 9.7211\n", + " 41.2000 626.0000 10.2144\n", + " 41.2500 687.0000 10.7005\n", + " 41.3000 735.0000 11.0680\n", + " 41.3500 780.0000 11.4018\n", + " 41.4000 782.0000 11.4164\n", + " 41.4500 745.0000 11.1430\n", + " 41.5000 721.0000 10.9621\n", + " 41.5500 662.0000 10.5040\n", + " 41.6000 595.0000 9.9582\n", + " 41.6500 527.0000 9.3719\n", + " 41.7000 446.0000 8.6217\n", + " 41.7500 393.0000 8.0932\n", + " 41.8000 335.0000 7.4722\n", + " 41.8500 301.0000 7.0828\n", + " 41.9000 276.0000 6.7823\n", + " 41.9500 251.0000 5.9881\n", + " 42.0000 242.0000 5.8797\n", + " 42.0500 229.0000 5.7196\n", + " 42.1000 209.0000 5.4642\n", + " 42.1500 215.0000 5.5420\n", + " 42.2000 218.0000 5.5806\n", + " 42.2500 214.0000 5.5291\n", + " 42.3000 209.0000 5.4642\n", + " 42.3500 208.0000 5.4511\n", + " 42.4000 212.0000 5.5032\n", + " 42.4500 210.0000 5.4772\n", + " 42.5000 209.0000 5.4642\n", + " 42.5500 210.0000 5.4772\n", + " 42.6000 205.0000 5.4116\n", + " 42.6500 209.0000 5.4642\n", + " 42.7000 211.0000 5.4903\n", + " 42.7500 211.0000 5.4903\n", + " 42.8000 216.0000 5.5549\n", + " 42.8500 205.0000 5.4116\n", + " 42.9000 204.0000 5.3984\n", + " 42.9500 202.0000 5.3719\n", + " 43.0000 201.0000 5.3586\n", + " 43.0500 200.0000 5.3452\n", + " 43.1000 207.0000 5.4380\n", + " 43.1500 205.0000 5.4116\n", + " 43.2000 202.0000 5.3719\n", + " 43.2500 209.0000 5.4642\n", + " 43.3000 202.0000 5.3719\n", + " 43.3500 203.0000 5.3852\n", + " 43.4000 206.0000 5.4248\n", + " 43.4500 206.0000 5.4248\n", + " 43.5000 200.0000 5.3452\n", + " 43.5500 194.0000 5.2644\n", + " 43.6000 199.0000 5.3318\n", + " 43.6500 204.0000 5.3984\n", + " 43.7000 205.0000 5.4116\n", + " 43.7500 210.0000 5.4772\n", + " 43.8000 207.0000 5.4380\n", + " 43.8500 205.0000 5.4116\n", + " 43.9000 210.0000 5.4772\n", + " 43.9500 204.0000 5.3984\n", + " 44.0000 203.0000 5.3852\n", + " 44.0500 202.0000 5.3719\n", + " 44.1000 205.0000 5.4116\n", + " 44.1500 201.0000 5.3586\n", + " 44.2000 201.0000 5.3586\n", + " 44.2500 207.0000 5.4380\n", + " 44.3000 197.0000 5.3050\n", + " 44.3500 198.0000 5.3184\n", + " 44.4000 203.0000 5.3852\n", + " 44.4500 209.0000 5.4642\n", + " 44.5000 209.0000 5.4642\n", + " 44.5500 208.0000 5.4511\n", + " 44.6000 204.0000 5.3984\n", + " 44.6500 209.0000 5.4642\n", + " 44.7000 199.0000 5.3318\n", + " 44.7500 204.0000 5.3984\n", + " 44.8000 206.0000 5.4248\n", + " 44.8500 201.0000 5.3586\n", + " 44.9000 205.0000 5.4116\n", + " 44.9500 202.0000 5.3719\n", + " 45.0000 204.0000 5.3984\n", + " 45.0500 198.0000 5.3184\n", + " 45.1000 198.0000 5.3184\n", + " 45.1500 213.0000 5.5162\n", + " 45.2000 210.0000 5.4772\n", + " 45.2500 212.0000 5.5032\n", + " 45.3000 214.0000 5.5291\n", + " 45.3500 215.0000 5.5420\n", + " 45.4000 217.0000 5.5678\n", + " 45.4500 210.0000 5.4772\n", + " 45.5000 214.0000 5.5291\n", + " 45.5500 215.0000 5.5420\n", + " 45.6000 215.0000 5.5420\n", + " 45.6500 215.0000 5.5420\n", + " 45.7000 217.0000 5.5678\n", + " 45.7500 222.0000 5.6315\n", + " 45.8000 231.0000 5.7446\n", + " 45.8500 247.0000 5.9402\n", + " 45.9000 252.0000 6.0000\n", + " 45.9500 273.0000 6.2450\n", + " 46.0000 304.0000 6.5900\n", + " 46.0500 332.0000 6.8868\n", + " 46.1000 366.0000 7.2309\n", + " 46.1500 408.0000 7.6345\n", + " 46.2000 463.0000 8.1328\n", + " 46.2500 532.0000 8.7178\n", + " 46.3000 619.0000 9.4036\n", + " 46.3500 734.0000 10.2400\n", + " 46.4000 828.0000 10.8759\n", + " 46.4500 944.0000 11.6128\n", + " 46.5000 1003.0000 11.9702\n", + " 46.5500 1055.0000 12.2766\n", + " 46.6000 1070.0000 12.3635\n", + " 46.6500 1018.0000 12.0594\n", + " 46.7000 944.0000 11.6128\n", + " 46.7500 833.0000 10.9087\n", + " 46.8000 725.0000 10.1770\n", + " 46.8500 633.0000 9.5094\n", + " 46.9000 507.0000 8.5105\n", + " 46.9500 445.0000 7.9732\n", + " 47.0000 379.0000 7.3582\n", + " 47.0500 347.0000 7.0407\n", + " 47.1000 316.0000 6.7188\n", + " 47.1500 282.0000 6.3471\n", + " 47.2000 267.0000 6.1760\n", + " 47.2500 269.0000 6.1991\n", + " 47.3000 281.0000 6.3358\n", + " 47.3500 288.0000 6.4143\n", + " 47.4000 300.0000 6.5465\n", + " 47.4500 327.0000 6.8348\n", + " 47.5000 346.0000 7.0305\n", + " 47.5500 380.0000 7.3679\n", + " 47.6000 400.0000 7.5593\n", + " 47.6500 430.0000 7.8376\n", + " 47.7000 453.0000 8.0445\n", + " 47.7500 459.0000 8.0976\n", + " 47.8000 451.0000 8.0267\n", + " 47.8500 427.0000 7.8102\n", + " 47.9000 402.0000 7.5782\n", + " 47.9500 375.0000 7.3193\n", + " 48.0000 344.0000 7.0102\n", + " 48.0500 309.0000 6.6440\n", + " 48.1000 277.0000 6.2906\n", + " 48.1500 265.0000 5.7554\n", + " 48.2000 246.0000 5.5453\n", + " 48.2500 246.0000 5.5453\n", + " 48.3000 230.0000 5.3619\n", + " 48.3500 223.0000 5.2797\n", + " 48.4000 227.0000 5.3268\n", + " 48.4500 225.0000 5.3033\n", + " 48.5000 217.0000 5.2082\n", + " 48.5500 217.0000 5.2082\n", + " 48.6000 223.0000 5.2797\n", + " 48.6500 223.0000 5.2797\n", + " 48.7000 220.0000 5.2440\n", + " 48.7500 223.0000 5.2797\n", + " 48.8000 226.0000 5.3151\n", + " 48.8500 248.0000 5.5678\n", + " 48.9000 258.0000 5.6789\n", + " 48.9500 274.0000 5.8523\n", + " 49.0000 297.0000 6.0930\n", + " 49.0500 324.0000 6.3640\n", + " 49.1000 355.0000 6.6615\n", + " 49.1500 393.0000 7.0089\n", + " 49.2000 458.0000 7.5664\n", + " 49.2500 528.0000 8.1240\n", + " 49.3000 589.0000 8.5805\n", + " 49.3500 688.0000 9.2736\n", + " 49.4000 781.0000 9.8805\n", + " 49.4500 840.0000 10.2470\n", + " 49.5000 876.0000 10.4642\n", + " 49.5500 874.0000 10.4523\n", + " 49.6000 832.0000 10.1980\n", + " 49.6500 765.0000 9.7788\n", + " 49.7000 682.0000 9.2331\n", + " 49.7500 613.0000 8.7536\n", + " 49.8000 524.0000 8.0932\n", + " 49.8500 455.0000 7.5416\n", + " 49.9000 408.0000 7.1414\n", + " 49.9500 384.0000 6.9282\n", + " 50.0000 366.0000 6.7639\n", + " 50.0500 375.0000 6.8465\n", + " 50.1000 392.0000 7.0000\n", + " 50.1500 426.0000 7.2973\n", + " 50.2000 470.0000 7.6649\n", + " 50.2500 519.0000 8.0545\n", + " 50.3000 588.0000 8.5732\n", + " 50.3500 639.0000 8.9373\n", + " 50.4000 681.0000 9.2263\n", + " 50.4500 704.0000 9.3808\n", + " 50.5000 693.0000 9.3073\n", + " 50.5500 650.0000 9.0139\n", + " 50.6000 600.0000 8.6603\n", + " 50.6500 540.0000 8.2158\n", + " 50.7000 478.0000 7.7298\n", + " 50.7500 412.0000 7.1764\n", + " 50.8000 376.0000 6.8557\n", + " 50.8500 345.0000 6.5670\n", + " 50.9000 330.0000 6.4226\n", + " 50.9500 337.0000 6.4904\n", + " 51.0000 350.0000 6.6144\n", + " 51.0500 383.0000 6.9192\n", + " 51.1000 426.0000 7.2973\n", + " 51.1500 493.0000 7.8502\n", + " 51.2000 571.0000 8.4484\n", + " 51.2500 676.0000 9.1924\n", + " 51.3000 803.0000 10.0187\n", + " 51.3500 920.0000 10.7238\n", + " 51.4000 1071.0000 11.5704\n", + " 51.4500 1183.0000 12.1604\n", + " 51.5000 1247.0000 12.4850\n", + " 51.5500 1255.0000 12.5250\n", + " 51.6000 1251.0000 12.5050\n", + " 51.6500 1183.0000 12.1604\n", + " 51.7000 1068.0000 11.5542\n", + " 51.7500 945.0000 10.8685\n", + " 51.8000 861.0000 10.3742\n", + " 51.8500 811.0000 10.0685\n", + " 51.9000 813.0000 10.0809\n", + " 51.9500 872.0000 10.4403\n", + " 52.0000 969.0000 11.0057\n", + " 52.0500 1120.0000 11.8322\n", + " 52.1000 1309.0000 12.7916\n", + " 52.1500 1527.0000 13.8158\n", + " 52.2000 1706.0000 14.6031\n", + " 52.2500 1856.0000 15.2315\n", + " 52.3000 1888.0000 15.3623\n", + " 52.3500 1837.0000 15.1534\n", + " 52.4000 1713.0000 14.6330\n", + " 52.4500 1500.0000 13.6931\n", + " 52.5000 1289.0000 12.6935\n", + " 52.5500 1103.0000 11.7420\n", + " 52.6000 904.0000 10.6301\n", + " 52.6500 749.0000 9.6760\n", + " 52.7000 627.0000 8.8530\n", + " 52.7500 568.0000 8.4261\n", + " 52.8000 551.0000 8.2991\n", + " 52.8500 560.0000 8.3666\n", + " 52.9000 586.0000 8.5586\n", + " 52.9500 634.0000 8.9022\n", + " 53.0000 691.0000 9.2938\n", + " 53.0500 751.0000 9.6889\n", + " 53.1000 799.0000 9.9937\n", + " 53.1500 792.0000 9.9499\n", + " 53.2000 820.0000 10.1242\n", + " 53.2500 774.0000 9.8362\n", + " 53.3000 736.0000 9.5917\n", + " 53.3500 680.0000 9.2195\n", + " 53.4000 627.0000 8.8530\n", + " 53.4500 562.0000 8.3815\n", + " 53.5000 514.0000 8.0156\n", + " 53.5500 459.0000 7.5746\n", + " 53.6000 424.0000 7.2801\n", + " 53.6500 362.0000 6.7268\n", + " 53.7000 333.0000 6.4517\n", + " 53.7500 318.0000 6.3048\n", + " 53.8000 300.0000 6.1237\n", + " 53.8500 287.0000 5.9896\n", + " 53.9000 265.0000 5.7554\n", + " 53.9500 266.0000 5.7663\n", + " 54.0000 262.0000 5.7228\n", + " 54.0500 263.0000 5.4058\n", + " 54.1000 255.0000 5.3229\n", + " 54.1500 270.0000 5.4772\n", + " 54.2000 278.0000 5.5578\n", + " 54.2500 289.0000 5.6667\n", + " 54.3000 317.0000 5.9348\n", + " 54.3500 343.0000 6.1734\n", + " 54.4000 400.0000 6.6667\n", + " 54.4500 468.0000 7.2111\n", + " 54.5000 561.0000 7.8951\n", + " 54.5500 695.0000 8.7876\n", + " 54.6000 873.0000 9.8489\n", + " 54.6500 1100.0000 11.0554\n", + " 54.7000 1372.0000 12.3468\n", + " 54.7500 1660.0000 13.5810\n", + " 54.8000 1954.0000 14.7347\n", + " 54.8500 2224.0000 15.7198\n", + " 54.9000 2400.0000 16.3299\n", + " 54.9500 2459.0000 16.5294\n", + " 55.0000 2435.0000 16.4486\n", + " 55.0500 2245.0000 15.7938\n", + " 55.1000 1986.0000 14.8549\n", + " 55.1500 1671.0000 13.6260\n", + " 55.2000 1358.0000 12.2837\n", + " 55.2500 1086.0000 10.9848\n", + " 55.3000 868.0000 9.8206\n", + " 55.3500 682.0000 8.7050\n", + " 55.4000 578.0000 8.0139\n", + " 55.4500 521.0000 7.6085\n", + " 55.5000 512.0000 7.5425\n", + " 55.5500 537.0000 7.7244\n", + " 55.6000 600.0000 8.1650\n", + " 55.6500 704.0000 8.8443\n", + " 55.7000 855.0000 9.7468\n", + " 55.7500 1032.0000 10.7083\n", + " 55.8000 1232.0000 11.7000\n", + " 55.8500 1466.0000 12.7628\n", + " 55.9000 1693.0000 13.7154\n", + " 55.9500 1866.0000 14.3991\n", + " 56.0000 1966.0000 14.7799\n", + " 56.0500 2024.0000 14.9963\n", + " 56.1000 2016.0000 14.9666\n", + " 56.1500 1846.0000 14.3217\n", + " 56.2000 1667.0000 13.6096\n", + " 56.2500 1429.0000 12.6007\n", + " 56.3000 1179.0000 11.4455\n", + " 56.3500 950.0000 10.2740\n", + " 56.4000 763.0000 9.2075\n", + " 56.4500 599.0000 8.1582\n", + " 56.5000 484.0000 7.3333\n", + " 56.5500 404.0000 6.6999\n", + " 56.6000 351.0000 6.2450\n", + " 56.6500 304.0000 5.8119\n", + " 56.7000 284.0000 5.6174\n", + " 56.7500 273.0000 5.5076\n", + " 56.8000 259.0000 5.3645\n", + " 56.8500 251.0000 5.2810\n", + " 56.9000 251.0000 5.2810\n", + " 56.9500 252.0000 5.2915\n", + " 57.0000 245.0000 5.2175\n", + " 57.0500 259.0000 5.3645\n", + " 57.1000 250.0000 5.2705\n", + " 57.1500 253.0000 5.3020\n", + " 57.2000 256.0000 5.3333\n", + " 57.2500 264.0000 5.4160\n", + " 57.3000 285.0000 5.6273\n", + " 57.3500 301.0000 5.7831\n", + " 57.4000 346.0000 6.2004\n", + " 57.4500 390.0000 6.5828\n", + " 57.5000 458.0000 7.1336\n", + " 57.5500 528.0000 7.6594\n", + " 57.6000 624.0000 8.3267\n", + " 57.6500 733.0000 9.0247\n", + " 57.7000 829.0000 9.5975\n", + " 57.7500 916.0000 10.0885\n", + " 57.8000 988.0000 10.4775\n", + " 57.8500 994.0000 10.5093\n", + " 57.9000 929.0000 10.1598\n", + " 57.9500 843.0000 9.6782\n", + " 58.0000 742.0000 9.0799\n", + " 58.0500 638.0000 8.4196\n", + " 58.1000 527.0000 7.6522\n", + " 58.1500 434.0000 6.9442\n", + " 58.2000 377.0000 6.4722\n", + " 58.2500 320.0000 5.9628\n", + " 58.3000 282.0000 5.5976\n", + " 58.3500 273.0000 5.5076\n", + " 58.4000 256.0000 5.3333\n", + " 58.4500 243.0000 5.1962\n", + " 58.5000 240.0000 5.1640\n", + " 58.5500 240.0000 5.1640\n", + " 58.6000 230.0000 5.0553\n", + " 58.6500 220.0000 4.9441\n", + " 58.7000 230.0000 5.0553\n", + " 58.7500 227.0000 5.0222\n", + " 58.8000 224.0000 4.9889\n", + " 58.8500 219.0000 4.9329\n", + " 58.9000 227.0000 5.0222\n", + " 58.9500 227.0000 5.0222\n", + " 59.0000 224.0000 4.9889\n", + " 59.0500 222.0000 4.9666\n", + " 59.1000 223.0000 4.9777\n", + " 59.1500 217.0000 4.9103\n", + " 59.2000 213.0000 4.8648\n", + " 59.2500 216.0000 4.8990\n", + " 59.3000 219.0000 4.9329\n", + " 59.3500 219.0000 4.9329\n", + " 59.4000 218.0000 4.9216\n", + " 59.4500 220.0000 4.9441\n", + " 59.5000 220.0000 4.9441\n", + " 59.5500 220.0000 4.9441\n", + " 59.6000 223.0000 4.9777\n", + " 59.6500 233.0000 5.0881\n", + " 59.7000 237.0000 5.1316\n", + " 59.7500 249.0000 5.2599\n", + " 59.8000 258.0000 5.3541\n", + " 59.8500 261.0000 5.3852\n", + " 59.9000 283.0000 5.6075\n", + " 59.9500 304.0000 5.8119\n", + " 60.0000 324.0000 5.6921\n", + " 60.0500 347.0000 5.8907\n", + " 60.1000 353.0000 5.9414\n", + " 60.1500 359.0000 5.9917\n", + " 60.2000 363.0000 6.0249\n", + " 60.2500 352.0000 5.9330\n", + " 60.3000 341.0000 5.8395\n", + " 60.3500 330.0000 5.7446\n", + " 60.4000 308.0000 5.5498\n", + " 60.4500 291.0000 5.3944\n", + " 60.5000 271.0000 5.2058\n", + " 60.5500 254.0000 5.0398\n", + " 60.6000 245.0000 4.9497\n", + " 60.6500 245.0000 4.9497\n", + " 60.7000 239.0000 4.8888\n", + " 60.7500 228.0000 4.7749\n", + " 60.8000 217.0000 4.6583\n", + " 60.8500 217.0000 4.6583\n", + " 60.9000 218.0000 4.6690\n", + " 60.9500 223.0000 4.7223\n", + " 61.0000 207.0000 4.5497\n", + " 61.0500 218.0000 4.6690\n", + " 61.1000 222.0000 4.7117\n", + " 61.1500 215.0000 4.6368\n", + " 61.2000 210.0000 4.5826\n", + " 61.2500 216.0000 4.6476\n", + " 61.3000 213.0000 4.6152\n", + " 61.3500 212.0000 4.6043\n", + " 61.4000 215.0000 4.6368\n", + " 61.4500 212.0000 4.6043\n", + " 61.5000 214.0000 4.6260\n", + " 61.5500 211.0000 4.5935\n", + " 61.6000 214.0000 4.6260\n", + " 61.6500 217.0000 4.6583\n", + " 61.7000 205.0000 4.5277\n", + " 61.7500 207.0000 4.5497\n", + " 61.8000 213.0000 4.6152\n", + " 61.8500 208.0000 4.5607\n", + " 61.9000 211.0000 4.5935\n", + " 61.9500 205.0000 4.5277\n", + " 62.0000 214.0000 4.6260\n", + " 62.0500 213.0000 4.6152\n", + " 62.1000 212.0000 4.6043\n", + " 62.1500 212.0000 4.6043\n", + " 62.2000 213.0000 4.6152\n", + " 62.2500 207.0000 4.5497\n", + " 62.3000 203.0000 4.5056\n", + " 62.3500 211.0000 4.5935\n", + " 62.4000 211.0000 4.5935\n", + " 62.4500 214.0000 4.6260\n", + " 62.5000 214.0000 4.6260\n", + " 62.5500 207.0000 4.5497\n", + " 62.6000 203.0000 4.5056\n", + " 62.6500 212.0000 4.6043\n", + " 62.7000 212.0000 4.6043\n", + " 62.7500 214.0000 4.6260\n", + " 62.8000 213.0000 4.6152\n", + " 62.8500 202.0000 4.4944\n", + " 62.9000 210.0000 4.5826\n", + " 62.9500 211.0000 4.5935\n", + " 63.0000 211.0000 4.5935\n", + " 63.0500 214.0000 4.6260\n", + " 63.1000 221.0000 4.7011\n", + " 63.1500 217.0000 4.6583\n", + " 63.2000 212.0000 4.6043\n", + " 63.2500 214.0000 4.6260\n", + " 63.3000 219.0000 4.6797\n", + " 63.3500 223.0000 4.7223\n", + " 63.4000 225.0000 4.7434\n", + " 63.4500 227.0000 4.7645\n", + " 63.5000 235.0000 4.8477\n", + " 63.5500 240.0000 4.8990\n", + " 63.6000 243.0000 4.9295\n", + " 63.6500 252.0000 5.0200\n", + " 63.7000 249.0000 4.9900\n", + " 63.7500 249.0000 4.9900\n", + " 63.8000 255.0000 5.0498\n", + " 63.8500 262.0000 5.1186\n", + " 63.9000 282.0000 5.3104\n", + " 63.9500 308.0000 5.5498\n", + " 64.0000 351.0000 5.9245\n", + " 64.0500 398.0000 6.3087\n", + " 64.1000 470.0000 6.8557\n", + " 64.1500 525.0000 7.2457\n", + " 64.2000 596.0000 7.7201\n", + " 64.2500 646.0000 8.0374\n", + " 64.3000 681.0000 8.2523\n", + " 64.3500 665.0000 8.1548\n", + " 64.4000 615.0000 7.8422\n", + " 64.4500 563.0000 7.5033\n", + " 64.5000 484.0000 6.9570\n", + " 64.5500 421.0000 6.4885\n", + " 64.6000 364.0000 6.0332\n", + " 64.6500 317.0000 5.6303\n", + " 64.7000 289.0000 5.3759\n", + " 64.7500 261.0000 5.1088\n", + " 64.8000 245.0000 4.9497\n", + " 64.8500 233.0000 4.8270\n", + " 64.9000 228.0000 4.7749\n", + " 64.9500 219.0000 4.6797\n", + " 65.0000 219.0000 4.6797\n", + " 65.0500 217.0000 4.6583\n", + " 65.1000 216.0000 4.6476\n", + " 65.1500 221.0000 4.7011\n", + " 65.2000 215.0000 4.6368\n", + " 65.2500 215.0000 4.6368\n", + " 65.3000 210.0000 4.5826\n", + " 65.3500 212.0000 4.6043\n", + " 65.4000 212.0000 4.6043\n", + " 65.4500 204.0000 4.5166\n", + " 65.5000 209.0000 4.5717\n", + " 65.5500 206.0000 4.5387\n", + " 65.6000 216.0000 4.6476\n", + " 65.6500 207.0000 4.5497\n", + " 65.7000 214.0000 4.6260\n", + " 65.7500 207.0000 4.5497\n", + " 65.8000 209.0000 4.5717\n", + " 65.8500 218.0000 4.6690\n", + " 65.9000 215.0000 4.6368\n", + " 65.9500 222.0000 4.7117\n", + " 66.0000 226.0000 4.7539\n", + " 66.0500 230.0000 4.7958\n", + " 66.1000 239.0000 4.8888\n", + " 66.1500 249.0000 4.9900\n", + " 66.2000 263.0000 5.1284\n", + " 66.2500 275.0000 5.2440\n", + " 66.3000 292.0000 5.4037\n", + " 66.3500 317.0000 5.6303\n", + " 66.4000 323.0000 5.6833\n", + " 66.4500 341.0000 5.8395\n", + " 66.5000 350.0000 5.9161\n", + " 66.5500 330.0000 5.7446\n", + " 66.6000 320.0000 5.6569\n", + " 66.6500 307.0000 5.5408\n", + " 66.7000 284.0000 5.3292\n", + " 66.7500 275.0000 5.2440\n", + " 66.8000 265.0000 5.1478\n", + " 66.8500 269.0000 5.1865\n", + " 66.9000 275.0000 5.2440\n", + " 66.9500 292.0000 5.4037\n", + " 67.0000 311.0000 5.5767\n", + " 67.0500 338.0000 5.8138\n", + " 67.1000 387.0000 6.2209\n", + " 67.1500 413.0000 6.4265\n", + " 67.2000 463.0000 6.8044\n", + " 67.2500 510.0000 7.1414\n", + " 67.3000 534.0000 7.3075\n", + " 67.3500 559.0000 7.4766\n", + " 67.4000 539.0000 7.3417\n", + " 67.4500 533.0000 7.3007\n", + " 67.5000 500.0000 7.0711\n", + " 67.5500 471.0000 6.8629\n", + " 67.6000 455.0000 6.7454\n", + " 67.6500 410.0000 6.4031\n", + " 67.7000 373.0000 6.1074\n", + " 67.7500 342.0000 5.8481\n", + " 67.8000 307.0000 5.5408\n", + " 67.8500 288.0000 5.3666\n", + " 67.9000 286.0000 5.3479\n", + " 67.9500 281.0000 5.3009\n", + " 68.0000 292.0000 5.4037\n", + " 68.0500 291.0000 5.3944\n", + " 68.1000 312.0000 5.5857\n", + " 68.1500 326.0000 5.7096\n", + " 68.2000 336.0000 5.7966\n", + " 68.2500 346.0000 5.8822\n", + " 68.3000 341.0000 5.8395\n", + " 68.3500 327.0000 5.7184\n", + " 68.4000 305.0000 5.5227\n", + " 68.4500 277.0000 5.2631\n", + " 68.5000 267.0000 5.1672\n", + " 68.5500 249.0000 4.9900\n", + " 68.6000 229.0000 4.7854\n", + " 68.6500 221.0000 4.7011\n", + " 68.7000 220.0000 4.6904\n", + " 68.7500 217.0000 4.6583\n", + " 68.8000 211.0000 4.5935\n", + " 68.8500 204.0000 4.5166\n", + " 68.9000 203.0000 4.5056\n", + " 68.9500 220.0000 4.6904\n", + " 69.0000 217.0000 4.6583\n", + " 69.0500 217.0000 4.6583\n", + " 69.1000 214.0000 4.6260\n", + " 69.1500 205.0000 4.5277\n", + " 69.2000 205.0000 4.5277\n", + " 69.2500 211.0000 4.5935\n", + " 69.3000 206.0000 4.5387\n", + " 69.3500 208.0000 4.5607\n", + " 69.4000 201.0000 4.4833\n", + " 69.4500 208.0000 4.5607\n", + " 69.5000 214.0000 4.6260\n", + " 69.5500 212.0000 4.6043\n", + " 69.6000 206.0000 4.5387\n", + " 69.6500 216.0000 4.6476\n", + " 69.7000 219.0000 4.6797\n", + " 69.7500 215.0000 4.6368\n", + " 69.8000 217.0000 4.6583\n", + " 69.8500 211.0000 4.5935\n", + " 69.9000 214.0000 4.6260\n", + " 69.9500 215.0000 4.6368\n", + " 70.0000 224.0000 4.7329\n", + " 70.0500 217.0000 4.6583\n", + " 70.1000 215.0000 4.6368\n", + " 70.1500 218.0000 4.6690\n", + " 70.2000 218.0000 4.6690\n", + " 70.2500 228.0000 4.7749\n", + " 70.3000 227.0000 4.7645\n", + " 70.3500 228.0000 4.7749\n", + " 70.4000 225.0000 4.7434\n", + " 70.4500 219.0000 4.6797\n", + " 70.5000 216.0000 4.6476\n", + " 70.5500 219.0000 4.6797\n", + " 70.6000 218.0000 4.6690\n", + " 70.6500 214.0000 4.6260\n", + " 70.7000 212.0000 4.6043\n", + " 70.7500 221.0000 4.7011\n", + " 70.8000 214.0000 4.6260\n", + " 70.8500 208.0000 4.5607\n", + " 70.9000 204.0000 4.5166\n", + " 70.9500 209.0000 4.5717\n", + " 71.0000 209.0000 4.5717\n", + " 71.0500 208.0000 4.5607\n", + " 71.1000 212.0000 4.6043\n", + " 71.1500 213.0000 4.6152\n", + " 71.2000 218.0000 4.6690\n", + " 71.2500 212.0000 4.6043\n", + " 71.3000 205.0000 4.5277\n", + " 71.3500 207.0000 4.5497\n", + " 71.4000 204.0000 4.5166\n", + " 71.4500 206.0000 4.5387\n", + " 71.5000 211.0000 4.5935\n", + " 71.5500 216.0000 4.6476\n", + " 71.6000 214.0000 4.6260\n", + " 71.6500 210.0000 4.5826\n", + " 71.7000 219.0000 4.6797\n", + " 71.7500 222.0000 4.7117\n", + " 71.8000 224.0000 4.7329\n", + " 71.8500 231.0000 4.8062\n", + " 71.9000 227.0000 4.7645\n", + " 71.9500 237.0000 4.8683\n", + " 72.0000 235.0000 4.8477\n", + " 72.0500 238.0000 4.8785\n", + " 72.1000 245.0000 4.9497\n", + " 72.1500 242.0000 4.9193\n", + " 72.2000 248.0000 4.9800\n", + " 72.2500 246.0000 4.9598\n", + " 72.3000 243.0000 4.9295\n", + " 72.3500 253.0000 5.0299\n", + " 72.4000 259.0000 5.0892\n", + " 72.4500 278.0000 5.2726\n", + " 72.5000 281.0000 5.3009\n", + " 72.5500 297.0000 5.4498\n", + " 72.6000 310.0000 5.5678\n", + " 72.6500 324.0000 5.6921\n", + " 72.7000 322.0000 5.6745\n", + " 72.7500 311.0000 5.5767\n", + " 72.8000 295.0000 5.4314\n", + " 72.8500 281.0000 5.3009\n", + " 72.9000 259.0000 5.0892\n", + " 72.9500 250.0000 5.0000\n", + " 73.0000 239.0000 4.8888\n", + " 73.0500 233.0000 4.8270\n", + " 73.1000 227.0000 4.7645\n", + " 73.1500 226.0000 4.7539\n", + " 73.2000 223.0000 4.7223\n", + " 73.2500 211.0000 4.5935\n", + " 73.3000 209.0000 4.5717\n", + " 73.3500 217.0000 4.6583\n", + " 73.4000 214.0000 4.6260\n", + " 73.4500 213.0000 4.6152\n", + " 73.5000 217.0000 4.6583\n", + " 73.5500 220.0000 4.6904\n", + " 73.6000 210.0000 4.5826\n", + " 73.6500 209.0000 4.5717\n", + " 73.7000 215.0000 4.6368\n", + " 73.7500 218.0000 4.6690\n", + " 73.8000 215.0000 4.6368\n", + " 73.8500 217.0000 4.6583\n", + " 73.9000 221.0000 4.7011\n", + " 73.9500 217.0000 4.6583\n", + " 74.0000 219.0000 4.6797\n", + " 74.0500 220.0000 4.6904\n", + " 74.1000 228.0000 4.7749\n", + " 74.1500 229.0000 4.7854\n", + " 74.2000 230.0000 4.7958\n", + " 74.2500 234.0000 4.8374\n", + " 74.3000 251.0000 5.0100\n", + " 74.3500 261.0000 5.1088\n", + " 74.4000 288.0000 5.3666\n", + " 74.4500 313.0000 5.5946\n", + " 74.5000 362.0000 6.0166\n", + " 74.5500 424.0000 6.5115\n", + " 74.6000 524.0000 7.2388\n", + " 74.6500 646.0000 8.0374\n", + " 74.7000 781.0000 8.8374\n", + " 74.7500 920.0000 9.5917\n", + " 74.8000 1024.0000 10.1193\n", + " 74.8500 1120.0000 10.5830\n", + " 74.9000 1187.0000 10.8950\n", + " 74.9500 1187.0000 10.8950\n", + " 75.0000 1166.0000 10.7981\n", + " 75.0500 1114.0000 10.5546\n", + " 75.1000 1044.0000 10.2176\n", + " 75.1500 991.0000 9.9549\n", + " 75.2000 927.0000 9.6281\n", + " 75.2500 823.0000 9.0719\n", + " 75.3000 717.0000 8.4676\n", + " 75.3500 619.0000 7.8677\n", + " 75.4000 520.0000 7.2111\n", + " 75.4500 421.0000 6.4885\n", + " 75.5000 353.0000 5.9414\n", + " 75.5500 308.0000 5.5498\n", + " 75.6000 273.0000 5.2249\n", + " 75.6500 256.0000 5.0596\n", + " 75.7000 245.0000 4.9497\n", + " 75.7500 234.0000 4.8374\n", + " 75.8000 230.0000 4.7958\n", + " 75.8500 224.0000 4.7329\n", + " 75.9000 232.0000 4.8166\n", + " 75.9500 226.0000 4.7539\n", + " 76.0000 222.0000 4.7117\n", + " 76.0500 222.0000 4.7117\n", + " 76.1000 227.0000 4.7645\n", + " 76.1500 225.0000 4.7434\n", + " 76.2000 226.0000 4.7539\n", + " 76.2500 227.0000 4.7645\n", + " 76.3000 229.0000 4.7854\n", + " 76.3500 235.0000 4.8477\n", + " 76.4000 233.0000 4.8270\n", + " 76.4500 243.0000 4.9295\n", + " 76.5000 238.0000 4.8785\n", + " 76.5500 237.0000 4.8683\n", + " 76.6000 236.0000 4.8580\n", + " 76.6500 232.0000 4.8166\n", + " 76.7000 231.0000 4.8062\n", + " 76.7500 227.0000 4.7645\n", + " 76.8000 225.0000 4.7434\n", + " 76.8500 220.0000 4.6904\n", + " 76.9000 218.0000 4.6690\n", + " 76.9500 215.0000 4.6368\n", + " 77.0000 219.0000 4.6797\n", + " 77.0500 224.0000 4.7329\n", + " 77.1000 225.0000 4.7434\n", + " 77.1500 222.0000 4.7117\n", + " 77.2000 231.0000 4.8062\n", + " 77.2500 243.0000 4.9295\n", + " 77.3000 250.0000 5.0000\n", + " 77.3500 269.0000 5.1865\n", + " 77.4000 286.0000 5.3479\n", + " 77.4500 310.0000 5.5678\n", + " 77.5000 325.0000 5.7009\n", + " 77.5500 332.0000 5.7619\n", + " 77.6000 337.0000 5.8052\n", + " 77.6500 329.0000 5.7359\n", + " 77.7000 303.0000 5.5045\n", + " 77.7500 278.0000 5.2726\n", + " 77.8000 268.0000 5.1769\n", + " 77.8500 252.0000 5.0200\n", + " 77.9000 236.0000 4.8580\n", + " 77.9500 228.0000 4.7749\n", + " 78.0000 219.0000 4.6797\n", + " 78.0500 225.0000 4.7434\n", + " 78.1000 222.0000 4.7117\n", + " 78.1500 214.0000 4.6260\n", + " 78.2000 228.0000 4.7749\n", + " 78.2500 221.0000 4.7011\n", + " 78.3000 217.0000 4.6583\n", + " 78.3500 221.0000 4.7011\n", + " 78.4000 222.0000 4.7117\n", + " 78.4500 226.0000 4.7539\n", + " 78.5000 237.0000 4.8683\n", + " 78.5500 246.0000 4.9598\n", + " 78.6000 255.0000 5.0498\n", + " 78.6500 269.0000 5.1865\n", + " 78.7000 284.0000 5.3292\n", + " 78.7500 302.0000 5.4955\n", + " 78.8000 313.0000 5.5946\n", + " 78.8500 327.0000 5.7184\n", + " 78.9000 321.0000 5.6657\n", + " 78.9500 333.0000 5.7706\n", + " 79.0000 331.0000 5.7533\n", + " 79.0500 332.0000 5.7619\n", + " 79.1000 358.0000 5.9833\n", + " 79.1500 402.0000 6.3403\n", + " 79.2000 460.0000 6.7823\n", + " 79.2500 557.0000 7.4632\n", + " 79.3000 660.0000 8.1240\n", + " 79.3500 769.0000 8.7693\n", + " 79.4000 859.0000 9.2682\n", + " 79.4500 934.0000 9.6644\n", + " 79.5000 955.0000 9.7724\n", + " 79.5500 921.0000 9.5969\n", + " 79.6000 824.0000 9.0774\n", + " 79.6500 694.0000 8.3307\n", + " 79.7000 578.0000 7.6026\n", + " 79.7500 474.0000 6.8848\n", + " 79.8000 402.0000 6.3403\n", + " 79.8500 344.0000 5.8652\n", + " 79.9000 306.0000 5.5317\n", + " 79.9500 300.0000 5.4772\n", + " 80.0000 292.0000 5.4037\n", + " 80.0500 292.0000 5.4037\n", + " 80.1000 302.0000 5.4955\n", + " 80.1500 304.0000 5.5136\n", + " 80.2000 306.0000 5.5317\n", + " 80.2500 305.0000 5.5227\n", + " 80.3000 303.0000 5.5045\n", + " 80.3500 299.0000 5.4681\n", + " 80.4000 278.0000 5.2726\n", + " 80.4500 259.0000 5.0892\n", + " 80.5000 257.0000 5.0695\n", + " 80.5500 245.0000 4.9497\n", + " 80.6000 237.0000 4.8683\n", + " 80.6500 240.0000 4.8990\n", + " 80.7000 233.0000 4.8270\n", + " 80.7500 232.0000 4.8166\n", + " 80.8000 235.0000 4.8477\n", + " 80.8500 241.0000 4.9092\n", + " 80.9000 257.0000 5.0695\n", + " 80.9500 274.0000 5.2345\n", + " 81.0000 292.0000 5.4037\n", + " 81.0500 309.0000 5.5588\n", + " 81.1000 333.0000 5.7706\n", + " 81.1500 360.0000 6.0000\n", + " 81.2000 381.0000 6.1725\n", + " 81.2500 387.0000 6.2209\n", + " 81.3000 387.0000 6.2209\n", + " 81.3500 386.0000 6.2129\n", + " 81.4000 382.0000 6.1806\n", + " 81.4500 368.0000 6.0663\n", + " 81.5000 363.0000 6.0249\n", + " 81.5500 352.0000 5.9330\n", + " 81.6000 337.0000 5.8052\n", + " 81.6500 321.0000 5.6657\n", + " 81.7000 297.0000 5.4498\n", + " 81.7500 281.0000 5.3009\n", + " 81.8000 265.0000 5.1478\n", + " 81.8500 255.0000 5.0498\n", + " 81.9000 251.0000 5.0100\n", + " 81.9500 237.0000 4.8683\n", + " 82.0000 238.0000 4.8785\n", + " 82.0500 237.0000 4.8683\n", + " 82.1000 228.0000 4.7749\n", + " 82.1500 240.0000 4.8990\n", + " 82.2000 234.0000 4.8374\n", + " 82.2500 226.0000 4.7539\n", + " 82.3000 229.0000 4.7854\n", + " 82.3500 228.0000 4.7749\n", + " 82.4000 233.0000 4.8270\n", + " 82.4500 243.0000 4.9295\n", + " 82.5000 241.0000 4.9092\n", + " 82.5500 257.0000 5.0695\n", + " 82.6000 279.0000 5.2820\n", + " 82.6500 305.0000 5.5227\n", + " 82.7000 345.0000 5.8737\n", + " 82.7500 410.0000 6.4031\n", + " 82.8000 455.0000 6.7454\n", + " 82.8500 545.0000 7.3824\n", + " 82.9000 622.0000 7.8867\n", + " 82.9500 673.0000 8.2037\n", + " 83.0000 725.0000 8.5147\n", + " 83.0500 717.0000 8.4676\n", + " 83.1000 661.0000 8.1302\n", + " 83.1500 592.0000 7.6942\n", + " 83.2000 518.0000 7.1972\n", + " 83.2500 443.0000 6.6558\n", + " 83.3000 371.0000 6.0910\n", + " 83.3500 336.0000 5.7966\n", + " 83.4000 290.0000 5.3852\n", + " 83.4500 265.0000 5.1478\n", + " 83.5000 252.0000 5.0200\n", + " 83.5500 250.0000 5.0000\n", + " 83.6000 244.0000 4.9396\n", + " 83.6500 242.0000 4.9193\n", + " 83.7000 241.0000 4.9092\n", + " 83.7500 243.0000 4.9295\n", + " 83.8000 248.0000 4.9800\n", + " 83.8500 253.0000 5.0299\n", + " 83.9000 252.0000 5.0200\n", + " 83.9500 264.0000 5.1381\n", + " 84.0000 266.0000 5.1575\n", + " 84.0500 282.0000 5.3104\n", + " 84.1000 291.0000 5.3944\n", + " 84.1500 313.0000 5.5946\n", + " 84.2000 346.0000 5.8822\n", + " 84.2500 374.0000 6.1156\n", + " 84.3000 415.0000 6.4420\n", + " 84.3500 430.0000 6.5574\n", + " 84.4000 433.0000 6.5803\n", + " 84.4500 430.0000 6.5574\n", + " 84.5000 406.0000 6.3718\n", + " 84.5500 384.0000 6.1968\n", + " 84.6000 349.0000 5.9076\n", + " 84.6500 318.0000 5.6391\n", + " 84.7000 307.0000 5.5408\n", + " 84.7500 298.0000 5.4589\n", + " 84.8000 296.0000 5.4406\n", + " 84.8500 304.0000 5.5136\n", + " 84.9000 313.0000 5.5946\n", + " 84.9500 328.0000 5.7271\n", + " 85.0000 346.0000 5.8822\n", + " 85.0500 341.0000 5.8395\n", + " 85.1000 335.0000 5.7879\n", + " 85.1500 324.0000 5.6921\n", + " 85.2000 336.0000 5.7966\n", + " 85.2500 341.0000 5.8395\n", + " 85.3000 341.0000 5.8395\n", + " 85.3500 370.0000 6.0828\n", + " 85.4000 414.0000 6.4343\n", + " 85.4500 442.0000 6.6483\n", + " 85.5000 490.0000 7.0000\n", + " 85.5500 520.0000 7.2111\n", + " 85.6000 532.0000 7.2938\n", + " 85.6500 548.0000 7.4027\n", + " 85.7000 561.0000 7.4900\n", + " 85.7500 567.0000 7.5299\n", + " 85.8000 585.0000 7.6485\n", + " 85.8500 584.0000 7.6420\n", + " 85.9000 558.0000 7.4699\n", + " 85.9500 527.0000 7.2595\n", + " 86.0000 481.0000 6.9354\n", + " 86.0500 424.0000 6.5115\n", + " 86.1000 370.0000 6.0828\n", + " 86.1500 333.0000 5.7706\n", + " 86.2000 312.0000 5.5857\n", + " 86.2500 301.0000 5.4863\n", + " 86.3000 307.0000 5.5408\n", + " 86.3500 314.0000 5.6036\n", + " 86.4000 340.0000 5.8310\n", + " 86.4500 379.0000 6.1563\n", + " 86.5000 427.0000 6.5345\n", + " 86.5500 467.0000 6.8337\n", + " 86.6000 535.0000 7.3144\n", + " 86.6500 584.0000 7.6420\n", + " 86.7000 602.0000 7.7589\n", + " 86.7500 580.0000 7.6158\n", + " 86.8000 532.0000 7.2938\n", + " 86.8500 481.0000 6.9354\n", + " 86.9000 426.0000 6.5269\n", + " 86.9500 379.0000 6.1563\n", + " 87.0000 329.0000 5.7359\n", + " 87.0500 303.0000 5.5045\n", + " 87.1000 288.0000 5.3666\n", + " 87.1500 271.0000 5.2058\n", + " 87.2000 269.0000 5.1865\n", + " 87.2500 267.0000 5.1672\n", + " 87.3000 263.0000 5.1284\n", + " 87.3500 267.0000 5.1672\n", + " 87.4000 260.0000 5.0990\n", + " 87.4500 260.0000 5.0990\n", + " 87.5000 263.0000 5.1284\n", + " 87.5500 263.0000 5.1284\n", + " 87.6000 270.0000 5.1962\n", + " 87.6500 278.0000 5.2726\n", + " 87.7000 293.0000 5.4129\n", + " 87.7500 318.0000 5.6391\n", + " 87.8000 364.0000 6.0332\n", + " 87.8500 424.0000 6.5115\n", + " 87.9000 512.0000 7.1554\n", + " 87.9500 643.0000 8.0187\n", + " 88.0000 817.0000 9.0388\n", + " 88.0500 982.0000 9.9096\n", + " 88.1000 1163.0000 10.7842\n", + " 88.1500 1289.0000 11.3534\n", + " 88.2000 1373.0000 11.7175\n", + " 88.2500 1393.0000 11.8025\n", + " 88.3000 1348.0000 11.6103\n", + " 88.3500 1244.0000 11.1535\n", + " 88.4000 1157.0000 10.7564\n", + " 88.4500 1077.0000 10.3779\n", + " 88.5000 1020.0000 10.0995\n", + " 88.5500 965.0000 9.8234\n", + " 88.6000 907.0000 9.5237\n", + " 88.6500 858.0000 9.2628\n", + " 88.7000 771.0000 8.7807\n", + " 88.7500 647.0000 8.0436\n", + " 88.8000 555.0000 7.4498\n", + " 88.8500 468.0000 6.8411\n", + " 88.9000 405.0000 6.3640\n", + " 88.9500 348.0000 5.8992\n", + " 89.0000 316.0000 5.6214\n", + " 89.0500 291.0000 5.3944\n", + " 89.1000 277.0000 5.2631\n", + " 89.1500 278.0000 5.2726\n", + " 89.2000 270.0000 5.1962\n", + " 89.2500 262.0000 5.1186\n", + " 89.3000 268.0000 5.1769\n", + " 89.3500 270.0000 5.1962\n", + " 89.4000 279.0000 5.2820\n", + " 89.4500 287.0000 5.3572\n", + " 89.5000 300.0000 5.4772\n", + " 89.5500 319.0000 5.6480\n", + " 89.6000 347.0000 5.8907\n", + " 89.6500 378.0000 6.1482\n", + " 89.7000 420.0000 6.4807\n", + " 89.7500 469.0000 6.8484\n", + " 89.8000 536.0000 7.3212\n", + " 89.8500 645.0000 8.0312\n", + " 89.9000 773.0000 8.7920\n", + " 89.9500 925.0000 9.6177\n", + " 90.0000 1115.0000 10.5594\n", + " 90.0500 1254.0000 11.1982\n", + " 90.1000 1367.0000 11.6919\n", + " 90.1500 1400.0000 11.8322\n", + " 90.2000 1327.0000 11.5195\n", + " 90.2500 1188.0000 10.8995\n", + " 90.3000 1038.0000 10.1882\n", + " 90.3500 879.0000 9.3755\n", + " 90.4000 738.0000 8.5907\n", + " 90.4500 644.0000 8.0250\n", + " 90.5000 594.0000 7.7071\n", + " 90.5500 601.0000 7.7524\n", + " 90.6000 643.0000 8.0187\n", + " 90.6500 697.0000 8.3487\n", + " 90.7000 786.0000 8.8657\n", + " 90.7500 842.0000 9.1761\n", + " 90.8000 847.0000 9.2033\n", + " 90.8500 791.0000 8.8938\n", + " 90.9000 702.0000 8.3785\n", + " 90.9500 592.0000 7.6942\n", + " 91.0000 508.0000 7.1274\n", + " 91.0500 418.0000 6.4653\n", + " 91.1000 362.0000 6.0166\n", + " 91.1500 328.0000 5.7271\n", + " 91.2000 299.0000 5.4681\n", + " 91.2500 279.0000 5.2820\n", + " 91.3000 270.0000 5.1962\n", + " 91.3500 257.0000 5.0695\n", + " 91.4000 253.0000 5.0299\n", + " 91.4500 258.0000 5.0794\n", + " 91.5000 257.0000 5.0695\n", + " 91.5500 249.0000 4.9900\n", + " 91.6000 245.0000 4.9497\n", + " 91.6500 257.0000 5.0695\n", + " 91.7000 260.0000 5.0990\n", + " 91.7500 284.0000 5.3292\n", + " 91.8000 296.0000 5.4406\n", + " 91.8500 322.0000 5.6745\n", + " 91.9000 343.0000 5.8566\n", + " 91.9500 382.0000 6.1806\n", + " 92.0000 405.0000 6.3640\n", + " 92.0500 411.0000 6.4109\n", + " 92.1000 416.0000 6.4498\n", + " 92.1500 406.0000 6.3718\n", + " 92.2000 372.0000 6.0992\n", + " 92.2500 353.0000 5.9414\n", + " 92.3000 330.0000 5.7446\n", + " 92.3500 317.0000 5.6303\n", + " 92.4000 313.0000 5.5946\n", + " 92.4500 312.0000 5.5857\n", + " 92.5000 309.0000 5.5588\n", + " 92.5500 303.0000 5.5045\n", + " 92.6000 288.0000 5.3666\n", + " 92.6500 276.0000 5.2536\n", + " 92.7000 264.0000 5.1381\n", + " 92.7500 246.0000 4.9598\n", + " 92.8000 249.0000 4.9900\n", + " 92.8500 241.0000 4.9092\n", + " 92.9000 251.0000 5.0100\n", + " 92.9500 243.0000 4.9295\n", + " 93.0000 246.0000 4.9598\n", + " 93.0500 246.0000 4.9598\n", + " 93.1000 249.0000 4.9900\n", + " 93.1500 244.0000 4.9396\n", + " 93.2000 252.0000 5.0200\n", + " 93.2500 252.0000 5.0200\n", + " 93.3000 258.0000 5.0794\n", + " 93.3500 265.0000 5.1478\n", + " 93.4000 263.0000 5.1284\n", + " 93.4500 284.0000 5.3292\n", + " 93.5000 299.0000 5.4681\n", + " 93.5500 320.0000 5.6569\n", + " 93.6000 344.0000 5.8652\n", + " 93.6500 363.0000 6.0249\n", + " 93.7000 372.0000 6.0992\n", + " 93.7500 358.0000 5.9833\n", + " 93.8000 351.0000 5.9245\n", + " 93.8500 354.0000 5.9498\n", + " 93.9000 330.0000 5.7446\n", + " 93.9500 322.0000 5.6745\n", + " 94.0000 334.0000 5.7793\n", + " 94.0500 339.0000 5.8224\n", + " 94.1000 345.0000 5.8737\n", + " 94.1500 357.0000 5.9749\n", + " 94.2000 360.0000 6.0000\n", + " 94.2500 358.0000 5.9833\n", + " 94.3000 372.0000 6.0992\n", + " 94.3500 425.0000 6.5192\n", + " 94.4000 511.0000 7.1484\n", + " 94.4500 626.0000 7.9120\n", + " 94.5000 770.0000 8.7750\n", + " 94.5500 946.0000 9.7263\n", + " 94.6000 1118.0000 10.5736\n", + " 94.6500 1205.0000 10.9772\n", + " 94.7000 1227.0000 11.0770\n", + " 94.7500 1157.0000 10.7564\n", + " 94.8000 1041.0000 10.2029\n", + " 94.8500 873.0000 9.3434\n", + " 94.9000 715.0000 8.4558\n", + " 94.9500 562.0000 7.4967\n", + " 95.0000 446.0000 6.6783\n", + " 95.0500 377.0000 6.1400\n", + " 95.1000 332.0000 5.7619\n", + " 95.1500 297.0000 5.4498\n", + " 95.2000 282.0000 5.3104\n", + " 95.2500 276.0000 5.2536\n", + " 95.3000 264.0000 5.1381\n", + " 95.3500 261.0000 5.1088\n", + " 95.4000 266.0000 5.1575\n", + " 95.4500 261.0000 5.1088\n", + " 95.5000 253.0000 5.0299\n", + " 95.5500 258.0000 5.0794\n", + " 95.6000 262.0000 5.1186\n", + " 95.6500 260.0000 5.0990\n", + " 95.7000 283.0000 5.3198\n", + " 95.7500 307.0000 5.5408\n", + " 95.8000 344.0000 5.8652\n", + " 95.8500 402.0000 6.3403\n", + " 95.9000 453.0000 6.7305\n", + " 95.9500 529.0000 7.2732\n", + " 96.0000 604.0000 7.7717\n", + " 96.0500 661.0000 8.1302\n", + " 96.1000 672.0000 8.1976\n", + " 96.1500 629.0000 7.9310\n", + " 96.2000 588.0000 7.6681\n", + " 96.2500 510.0000 7.1414\n", + " 96.3000 440.0000 6.6332\n", + " 96.3500 377.0000 6.1400\n", + " 96.4000 330.0000 5.7446\n", + " 96.4500 301.0000 5.4863\n", + " 96.5000 280.0000 5.2915\n", + " 96.5500 269.0000 5.1865\n", + " 96.6000 258.0000 5.0794\n", + " 96.6500 252.0000 5.0200\n", + " 96.7000 251.0000 5.0100\n", + " 96.7500 252.0000 5.0200\n", + " 96.8000 256.0000 5.0596\n", + " 96.8500 253.0000 5.0299\n", + " 96.9000 253.0000 5.0299\n", + " 96.9500 253.0000 5.0299\n", + " 97.0000 262.0000 5.1186\n", + " 97.0500 265.0000 5.1478\n", + " 97.1000 284.0000 5.3292\n", + " 97.1500 291.0000 5.3944\n", + " 97.2000 323.0000 5.6833\n", + " 97.2500 374.0000 6.1156\n", + " 97.3000 431.0000 6.5651\n", + " 97.3500 511.0000 7.1484\n", + " 97.4000 602.0000 7.7589\n", + " 97.4500 678.0000 8.2341\n", + " 97.5000 743.0000 8.6197\n", + " 97.5500 756.0000 8.6948\n", + " 97.6000 717.0000 8.4676\n", + " 97.6500 657.0000 8.1056\n", + " 97.7000 581.0000 7.6223\n", + " 97.7500 490.0000 7.0000\n", + " 97.8000 418.0000 6.4653\n", + " 97.8500 364.0000 6.0332\n", + " 97.9000 335.0000 5.7879\n", + " 97.9500 306.0000 5.5317\n", + " 98.0000 290.0000 5.3852\n", + " 98.0500 286.0000 5.3479\n", + " 98.1000 283.0000 5.3198\n", + " 98.1500 283.0000 5.3198\n", + " 98.2000 274.0000 5.2345\n", + " 98.2500 262.0000 5.1186\n", + " 98.3000 266.0000 5.1575\n", + " 98.3500 261.0000 5.1088\n", + " 98.4000 261.0000 5.1088\n", + " 98.4500 264.0000 5.1381\n", + " 98.5000 269.0000 5.1865\n", + " 98.5500 278.0000 5.2726\n", + " 98.6000 288.0000 5.3666\n", + " 98.6500 306.0000 5.5317\n", + " 98.7000 319.0000 5.6480\n", + " 98.7500 330.0000 5.7446\n", + " 98.8000 343.0000 5.8566\n", + " 98.8500 341.0000 5.8395\n", + " 98.9000 325.0000 5.7009\n", + " 98.9500 318.0000 5.6391\n", + " 99.0000 298.0000 5.4589\n", + " 99.0500 299.0000 5.4681\n", + " 99.1000 288.0000 5.3666\n", + " 99.1500 309.0000 5.5588\n", + " 99.2000 344.0000 5.8652\n", + " 99.2500 382.0000 6.1806\n", + " 99.3000 422.0000 6.4962\n", + " 99.3500 470.0000 6.8557\n", + " 99.4000 512.0000 7.1554\n", + " 99.4500 514.0000 7.1694\n", + " 99.5000 515.0000 7.1764\n", + " 99.5500 488.0000 6.9857\n", + " 99.6000 440.0000 6.6332\n", + " 99.6500 396.0000 6.2929\n", + " 99.7000 366.0000 6.0498\n", + " 99.7500 332.0000 5.7619\n", + " 99.8000 311.0000 5.5767\n", + " 99.8500 305.0000 5.5227\n", + " 99.9000 300.0000 5.4772\n", + " 99.9500 293.0000 5.4129\n", + " 100.0000 286.0000 5.3479\n", + " 100.0500 306.0000 5.5317\n", + " 100.1000 313.0000 5.5946\n", + " 100.1500 317.0000 5.6303\n", + " 100.2000 327.0000 5.7184\n", + " 100.2500 343.0000 5.8566\n", + " 100.3000 330.0000 5.7446\n", + " 100.3500 320.0000 5.6569\n", + " 100.4000 307.0000 5.5408\n", + " 100.4500 298.0000 5.4589\n", + " 100.5000 282.0000 5.3104\n", + " 100.5500 274.0000 5.2345\n", + " 100.6000 266.0000 5.1575\n", + " 100.6500 274.0000 5.2345\n", + " 100.7000 271.0000 5.2058\n", + " 100.7500 274.0000 5.2345\n", + " 100.8000 290.0000 5.3852\n", + " 100.8500 302.0000 5.4955\n", + " 100.9000 321.0000 5.6657\n", + " 100.9500 350.0000 5.9161\n", + " 101.0000 367.0000 6.0581\n", + " 101.0500 386.0000 6.2129\n", + " 101.1000 394.0000 6.2769\n", + " 101.1500 370.0000 6.0828\n", + " 101.2000 356.0000 5.9666\n", + " 101.2500 332.0000 5.7619\n", + " 101.3000 310.0000 5.5678\n", + " 101.3500 288.0000 5.3666\n", + " 101.4000 279.0000 5.2820\n", + " 101.4500 281.0000 5.3009\n", + " 101.5000 274.0000 5.2345\n", + " 101.5500 284.0000 5.3292\n", + " 101.6000 280.0000 5.2915\n", + " 101.6500 270.0000 5.1962\n", + " 101.7000 278.0000 5.2726\n", + " 101.7500 269.0000 5.1865\n", + " 101.8000 273.0000 5.2249\n", + " 101.8500 268.0000 5.1769\n", + " 101.9000 267.0000 5.1672\n", + " 101.9500 265.0000 5.1478\n", + " 102.0000 257.0000 5.3437\n", + " 102.0500 258.0000 5.3541\n", + " 102.1000 267.0000 5.4467\n", + " 102.1500 267.0000 5.4467\n", + " 102.2000 277.0000 5.5478\n", + " 102.2500 287.0000 5.6470\n", + " 102.3000 302.0000 5.7927\n", + " 102.3500 332.0000 6.0736\n", + " 102.4000 360.0000 6.3246\n", + " 102.4500 411.0000 6.7577\n", + " 102.5000 457.0000 7.1259\n", + " 102.5500 524.0000 7.6303\n", + " 102.6000 608.0000 8.2192\n", + " 102.6500 699.0000 8.8129\n", + " 102.7000 861.0000 9.7809\n", + " 102.7500 1096.0000 11.0353\n", + " 102.8000 1377.0000 12.3693\n", + " 102.8500 1685.0000 13.6829\n", + " 102.9000 1901.0000 14.5335\n", + " 102.9500 2069.0000 15.1621\n", + " 103.0000 2016.0000 14.9666\n", + " 103.0500 1800.0000 14.1421\n", + " 103.1000 1500.0000 12.9099\n", + " 103.1500 1181.0000 11.4552\n", + " 103.2000 937.0000 10.2035\n", + " 103.2500 728.0000 8.9938\n", + " 103.3000 629.0000 8.3600\n", + " 103.3500 576.0000 8.0000\n", + " 103.4000 556.0000 7.8599\n", + " 103.4500 535.0000 7.7100\n", + " 103.5000 519.0000 7.5939\n", + " 103.5500 486.0000 7.3485\n", + " 103.6000 465.0000 7.1880\n", + " 103.6500 429.0000 6.9041\n", + " 103.7000 385.0000 6.5405\n", + " 103.7500 361.0000 6.3333\n", + " 103.8000 342.0000 6.1644\n", + " 103.8500 312.0000 5.8878\n", + " 103.9000 293.0000 5.7057\n", + " 103.9500 279.0000 5.5678\n", + " 104.0000 277.0000 5.5478\n", + " 104.0500 265.0000 5.4263\n", + " 104.1000 257.0000 5.3437\n", + " 104.1500 256.0000 5.3333\n", + " 104.2000 250.0000 5.2705\n", + " 104.2500 260.0000 5.3748\n", + " 104.3000 261.0000 5.3852\n", + " 104.3500 258.0000 5.3541\n", + " 104.4000 263.0000 5.4058\n", + " 104.4500 268.0000 5.4569\n", + " 104.5000 284.0000 5.6174\n", + " 104.5500 306.0000 5.8310\n", + " 104.6000 325.0000 6.0093\n", + " 104.6500 337.0000 6.1192\n", + " 104.7000 337.0000 6.1192\n", + " 104.7500 344.0000 6.1824\n", + " 104.8000 340.0000 6.1464\n", + " 104.8500 337.0000 6.1192\n", + " 104.9000 328.0000 6.0369\n", + " 104.9500 321.0000 5.9722\n", + " 105.0000 306.0000 5.8310\n", + " 105.0500 295.0000 5.7252\n", + " 105.1000 289.0000 5.6667\n", + " 105.1500 281.0000 5.5877\n", + " 105.2000 267.0000 5.4467\n", + " 105.2500 266.0000 5.4365\n", + " 105.3000 270.0000 5.4772\n", + " 105.3500 263.0000 5.4058\n", + " 105.4000 256.0000 5.3333\n", + " 105.4500 266.0000 5.4365\n", + " 105.5000 264.0000 5.4160\n", + " 105.5500 259.0000 5.3645\n", + " 105.6000 261.0000 5.3852\n", + " 105.6500 261.0000 5.3852\n", + " 105.7000 258.0000 5.3541\n", + " 105.7500 253.0000 5.3020\n", + " 105.8000 248.0000 5.2493\n", + " 105.8500 244.0000 5.2068\n", + " 105.9000 249.0000 5.2599\n", + " 105.9500 251.0000 5.2810\n", + " 106.0000 245.0000 5.2175\n", + " 106.0500 245.0000 5.2175\n", + " 106.1000 247.0000 5.2387\n", + " 106.1500 247.0000 5.2387\n", + " 106.2000 254.0000 5.3125\n", + " 106.2500 259.0000 5.3645\n", + " 106.3000 250.0000 5.2705\n", + " 106.3500 251.0000 5.2810\n", + " 106.4000 258.0000 5.3541\n", + " 106.4500 252.0000 5.2915\n", + " 106.5000 255.0000 5.3229\n", + " 106.5500 259.0000 5.3645\n", + " 106.6000 256.0000 5.3333\n", + " 106.6500 264.0000 5.4160\n", + " 106.7000 268.0000 5.4569\n", + " 106.7500 281.0000 5.5877\n", + " 106.8000 303.0000 5.8023\n", + " 106.8500 331.0000 6.0645\n", + " 106.9000 371.0000 6.4205\n", + " 106.9500 420.0000 6.8313\n", + " 107.0000 484.0000 7.3333\n", + " 107.0500 532.0000 7.6884\n", + " 107.1000 576.0000 8.0000\n", + " 107.1500 582.0000 8.0416\n", + " 107.2000 563.0000 7.9092\n", + " 107.2500 527.0000 7.6522\n", + " 107.3000 490.0000 7.3786\n", + " 107.3500 465.0000 7.1880\n", + " 107.4000 467.0000 7.2034\n", + " 107.4500 449.0000 7.0632\n", + " 107.5000 416.0000 6.7987\n", + " 107.5500 393.0000 6.6081\n", + " 107.6000 366.0000 6.3770\n", + " 107.6500 331.0000 6.0645\n", + " 107.7000 316.0000 5.9255\n", + " 107.7500 297.0000 5.7446\n", + " 107.8000 294.0000 5.7155\n", + " 107.8500 292.0000 5.6960\n", + " 107.9000 286.0000 5.6372\n", + " 107.9500 295.0000 5.7252\n", + " 108.0000 306.0000 6.1847\n", + " 108.0500 315.0000 6.2750\n", + " 108.1000 334.0000 6.4614\n", + " 108.1500 373.0000 6.8282\n", + " 108.2000 406.0000 7.1239\n", + " 108.2500 447.0000 7.4750\n", + " 108.3000 499.0000 7.8978\n", + " 108.3500 507.0000 7.9608\n", + " 108.4000 506.0000 7.9530\n", + " 108.4500 488.0000 7.8102\n", + " 108.5000 432.0000 7.3485\n", + " 108.5500 391.0000 6.9911\n", + " 108.6000 342.0000 6.5383\n", + " 108.6500 315.0000 6.2750\n", + " 108.7000 292.0000 6.0415\n", + " 108.7500 275.0000 5.8630\n", + " 108.8000 274.0000 5.8523\n", + " 108.8500 259.0000 5.6899\n", + " 108.9000 250.0000 5.5902\n", + " 108.9500 258.0000 5.6789\n", + " 109.0000 252.0000 5.6125\n", + " 109.0500 255.0000 5.6458\n", + " 109.1000 254.0000 5.6347\n", + " 109.1500 253.0000 5.6236\n", + " 109.2000 254.0000 5.6347\n", + " 109.2500 252.0000 5.6125\n", + " 109.3000 257.0000 5.6679\n", + " 109.3500 250.0000 5.5902\n", + " 109.4000 255.0000 5.6458\n", + " 109.4500 251.0000 5.6013\n", + " 109.5000 254.0000 5.6347\n", + " 109.5500 260.0000 5.7009\n", + " 109.6000 249.0000 5.5790\n", + " 109.6500 253.0000 5.6236\n", + " 109.7000 254.0000 5.6347\n", + " 109.7500 259.0000 5.6899\n", + " 109.8000 268.0000 5.7879\n", + " 109.8500 270.0000 5.8095\n", + " 109.9000 284.0000 5.9582\n", + " 109.9500 305.0000 6.1745\n", + " 110.0000 322.0000 6.3443\n", + " 110.0500 364.0000 6.7454\n", + " 110.1000 417.0000 7.2198\n", + " 110.1500 470.0000 7.6649\n", + " 110.2000 573.0000 8.4632\n", + " 110.2500 678.0000 9.2060\n", + " 110.3000 771.0000 9.8171\n", + " 110.3500 847.0000 10.2896\n", + " 110.4000 854.0000 10.3320\n", + " 110.4500 794.0000 9.9624\n", + " 110.5000 720.0000 9.4868\n", + " 110.5500 611.0000 8.7393\n", + " 110.6000 520.0000 8.0623\n", + " 110.6500 463.0000 7.6076\n", + " 110.7000 412.0000 7.1764\n", + " 110.7500 399.0000 7.0622\n", + " 110.8000 416.0000 7.2111\n", + " 110.8500 428.0000 7.3144\n", + " 110.9000 432.0000 7.3485\n", + " 110.9500 420.0000 7.2457\n", + " 111.0000 402.0000 7.0887\n", + " 111.0500 364.0000 6.7454\n", + " 111.1000 348.0000 6.5955\n", + " 111.1500 334.0000 6.4614\n", + " 111.2000 321.0000 6.3344\n", + " 111.2500 330.0000 6.4226\n", + " 111.3000 342.0000 6.5383\n", + " 111.3500 380.0000 6.8920\n", + " 111.4000 385.0000 6.9372\n", + " 111.4500 420.0000 7.2457\n", + " 111.5000 441.0000 7.4246\n", + " 111.5500 465.0000 7.6240\n", + " 111.6000 444.0000 7.4498\n", + " 111.6500 406.0000 7.1239\n", + " 111.7000 383.0000 6.9192\n", + " 111.7500 345.0000 6.5670\n", + " 111.8000 332.0000 6.4420\n", + " 111.8500 321.0000 6.3344\n", + " 111.9000 308.0000 6.2048\n", + " 111.9500 292.0000 6.0415\n", + " 112.0000 303.0000 6.1543\n", + " 112.0500 314.0000 6.2650\n", + " 112.1000 333.0000 6.4517\n", + " 112.1500 379.0000 6.8829\n", + " 112.2000 438.0000 7.3993\n", + " 112.2500 505.0000 7.9451\n", + " 112.3000 594.0000 8.6168\n", + " 112.3500 659.0000 9.0761\n", + " 112.4000 717.0000 9.4670\n", + " 112.4500 738.0000 9.6047\n", + " 112.5000 710.0000 9.4207\n", + " 112.5500 642.0000 8.9582\n", + " 112.6000 547.0000 8.2689\n", + " 112.6500 492.0000 7.8422\n", + " 112.7000 421.0000 7.2543\n", + " 112.7500 386.0000 6.9462\n", + " 112.8000 344.0000 6.5574\n", + " 112.8500 337.0000 6.4904\n", + " 112.9000 350.0000 6.6144\n", + " 112.9500 364.0000 6.7454\n", + " 113.0000 415.0000 7.2024\n", + " 113.0500 506.0000 7.9530\n", + " 113.1000 586.0000 8.5586\n", + " 113.1500 674.0000 9.1788\n", + " 113.2000 750.0000 9.6825\n", + " 113.2500 787.0000 9.9184\n", + " 113.3000 753.0000 9.7018\n", + " 113.3500 682.0000 9.2331\n", + " 113.4000 597.0000 8.6386\n", + " 113.4500 499.0000 7.8978\n", + " 113.5000 417.0000 7.2198\n", + " 113.5500 362.0000 6.7268\n", + " 113.6000 340.0000 6.5192\n", + " 113.6500 302.0000 6.1441\n", + " 113.7000 286.0000 5.9791\n", + " 113.7500 280.0000 5.9161\n", + " 113.8000 283.0000 5.9477\n", + " 113.8500 276.0000 5.8737\n", + " 113.9000 282.0000 5.9372\n", + " 113.9500 284.0000 5.9582\n", + " 114.0000 295.0000 6.4918\n", + " 114.0500 310.0000 6.6548\n", + " 114.1000 319.0000 6.7507\n", + " 114.1500 321.0000 6.7718\n", + " 114.2000 304.0000 6.5900\n", + " 114.2500 298.0000 6.5247\n", + " 114.3000 293.0000 6.4697\n", + " 114.3500 283.0000 6.3583\n", + " 114.4000 277.0000 6.2906\n", + " 114.4500 269.0000 6.1991\n", + " 114.5000 265.0000 6.1528\n", + " 114.5500 277.0000 6.2906\n", + " 114.6000 283.0000 6.3583\n", + " 114.6500 283.0000 6.3583\n", + " 114.7000 293.0000 6.4697\n", + " 114.7500 303.0000 6.5792\n", + " 114.8000 320.0000 6.7612\n", + " 114.8500 316.0000 6.7188\n", + " 114.9000 331.0000 6.8765\n", + " 114.9500 346.0000 7.0305\n", + " 115.0000 327.0000 6.8348\n", + " 115.0500 328.0000 6.8452\n", + " 115.1000 306.0000 6.6117\n", + " 115.1500 291.0000 6.4476\n", + " 115.2000 286.0000 6.3920\n", + " 115.2500 278.0000 6.3019\n", + " 115.3000 273.0000 6.2450\n", + " 115.3500 267.0000 6.1760\n", + " 115.4000 272.0000 6.2335\n", + " 115.4500 257.0000 6.0592\n", + " 115.5000 260.0000 6.0945\n", + " 115.5500 265.0000 6.1528\n", + " 115.6000 264.0000 6.1412\n", + " 115.6500 272.0000 6.2335\n", + " 115.7000 270.0000 6.2106\n", + " 115.7500 268.0000 6.1875\n", + " 115.8000 269.0000 6.1991\n", + " 115.8500 287.0000 6.4031\n", + " 115.9000 292.0000 6.4587\n", + " 115.9500 295.0000 6.4918\n", + " 116.0000 317.0000 6.7295\n", + " 116.0500 335.0000 6.9179\n", + " 116.1000 364.0000 7.2111\n", + " 116.1500 410.0000 7.6532\n", + " 116.2000 477.0000 8.2549\n", + " 116.2500 556.0000 8.9123\n", + " 116.3000 642.0000 9.5768\n", + " 116.3500 755.0000 10.3854\n", + " 116.4000 864.0000 11.1098\n", + " 116.4500 946.0000 11.6251\n", + " 116.5000 970.0000 11.7716\n", + " 116.5500 941.0000 11.5943\n", + " 116.6000 870.0000 11.1484\n", + " 116.6500 759.0000 10.4129\n", + " 116.7000 647.0000 9.6140\n", + " 116.7500 540.0000 8.7831\n", + " 116.8000 468.0000 8.1766\n", + " 116.8500 418.0000 7.7275\n", + " 116.9000 379.0000 7.3582\n", + " 116.9500 381.0000 7.3776\n", + " 117.0000 405.0000 7.6064\n", + " 117.0500 446.0000 7.9821\n", + " 117.1000 476.0000 8.2462\n", + " 117.1500 523.0000 8.6437\n", + " 117.2000 561.0000 8.9523\n", + " 117.2500 555.0000 8.9043\n", + " 117.3000 529.0000 8.6932\n", + " 117.3500 485.0000 8.3238\n", + " 117.4000 436.0000 7.8921\n", + " 117.4500 398.0000 7.5404\n", + " 117.5000 355.0000 7.1214\n", + " 117.5500 322.0000 6.7823\n", + " 117.6000 304.0000 6.5900\n", + " 117.6500 285.0000 6.3808\n", + " 117.7000 270.0000 6.2106\n", + " 117.7500 278.0000 6.3019\n", + " 117.8000 260.0000 6.0945\n", + " 117.8500 268.0000 6.1875\n", + " 117.9000 264.0000 6.1412\n", + " 117.9500 265.0000 6.1528\n", + " 118.0000 263.0000 6.1296\n", + " 118.0500 267.0000 6.1760\n", + " 118.1000 286.0000 6.3920\n", + " 118.1500 293.0000 6.4697\n", + " 118.2000 291.0000 6.4476\n", + " 118.2500 319.0000 6.7507\n", + " 118.3000 366.0000 7.2309\n", + " 118.3500 411.0000 7.6625\n", + " 118.4000 461.0000 8.1152\n", + " 118.4500 489.0000 8.3581\n", + " 118.5000 521.0000 8.6272\n", + " 118.5500 555.0000 8.9043\n", + " 118.6000 550.0000 8.8641\n", + " 118.6500 511.0000 8.5440\n", + " 118.7000 486.0000 8.3324\n", + " 118.7500 436.0000 7.8921\n", + " 118.8000 392.0000 7.4833\n", + " 118.8500 368.0000 7.2506\n", + " 118.9000 330.0000 6.8661\n", + " 118.9500 328.0000 6.8452\n", + " 119.0000 343.0000 7.0000\n", + " 119.0500 371.0000 7.2801\n", + " 119.1000 394.0000 7.5024\n", + " 119.1500 441.0000 7.9373\n", + " 119.2000 468.0000 8.1766\n", + " 119.2500 469.0000 8.1854\n", + " 119.3000 456.0000 8.0711\n", + " 119.3500 416.0000 7.7090\n", + " 119.4000 394.0000 7.5024\n", + " 119.4500 361.0000 7.1813\n", + " 119.5000 330.0000 6.8661\n", + " 119.5500 312.0000 6.6762\n", + " 119.6000 293.0000 6.4697\n", + " 119.6500 285.0000 6.3808\n", + " 119.7000 286.0000 6.3920\n", + " 119.7500 275.0000 6.2678\n", + " 119.8000 274.0000 6.2564\n", + " 119.8500 281.0000 6.3358\n", + " 119.9000 279.0000 6.3133\n", + " 119.9500 298.0000 6.5247\n", + " 120.0000 312.0000 7.2111\n", + "\n" + ] + } + ], + "source": [ + "meas_fname = 'D1A@ILL.xye'\n", + "\n", + "with open(meas_fname, 'r') as f:\n", + " content = f.read()\n", + " \n", + "print(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load the measured data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "meas_x, meas_y, meas_e = np.loadtxt(meas_fname, unpack=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualize the measured data" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "119e7f68cc384e87bcc1dacf2105b5cf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Analysis ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Create job with default parameters for the 1D powder neutron diffraction experiment with constant wavelength " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current calculator engine: CrysPy\n" + ] + } + ], + "source": [ + "calculator = Calculator()\n", + "\n", + "print(f\"Current calculator engine: {calculator.current_interface_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" + ] + } + ], + "source": [ + "job = Job(phases=phases, parameters=Instrument1DCWParameters.default(), calculator=calculator)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Generate the calculated data" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualize both the measured and calculated data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "439598d69b864c4c97f7b13db2f72200", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set scale manually" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "job.pattern.scale = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "4abb4fc822f44f22bcd40ce92cd1216e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set wavelength manually" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "job.parameters.wavelength = 1.912" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "96973a9784d34943b2de8c351e436e55", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set background points manually" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "bkg = PointBackground(linked_experiment='PbSO4')\n", + "\n", + "bkg.append(BackgroundPoint.from_pars(meas_x[0], 200))\n", + "bkg.append(BackgroundPoint.from_pars(meas_x[-1], 250))\n", + "\n", + "job.set_background(bkg)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a1eebfb15acd4446a5247ae8bbeb914d", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Define parameters to optimize" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "job.pattern.scale.fixed = False\n", + "job.pattern.zero_shift.fixed = False\n", + "job.parameters.resolution_u.fixed = False\n", + "job.parameters.resolution_v.fixed = False\n", + "job.parameters.resolution_w.fixed = False\n", + "job.backgrounds[0][0].y.fixed = False\n", + "job.backgrounds[0][1].y.fixed = False" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "print(job.pattern.scale)\n", + "print(job.pattern.zero_shift)\n", + "print(job.parameters.resolution_u)\n", + "print(job.parameters.resolution_v)\n", + "print(job.parameters.resolution_w)\n", + "print(job.backgrounds[0][0])\n", + "print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Initalize the fitting engine and perform the fit" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available minimizers: ['lmfit', 'bumps']\n", + "Current minimizer: lmfit\n", + "Available methods of current minimizers: ['leastsq', 'least_squares', 'differential_evolution', 'basinhopping', 'ampgo', 'nelder', 'lbfgsb', 'powell', 'cg', 'newton', 'cobyla', 'bfgs']\n" + ] + } + ], + "source": [ + "fitter = Fitter(job, calculator.fit_func)\n", + "\n", + "print(f\"Available minimizers: {fitter.available_engines}\")\n", + "print(f\"Current minimizer: {fitter.current_engine.name}\")\n", + "print(f\"Available methods of current minimizers: {fitter.available_methods()}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The fit has been successful: True\n", + "The gooodness of fit (chi2) is: 31.615632345412287\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares')\n", + "\n", + "print(\"The fit has been successful: {}\".format(result.success))\n", + "if result.success: \n", + " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", + " print(job.pattern.scale)\n", + " print(job.pattern.zero_shift)\n", + " print(job.parameters.resolution_u)\n", + " print(job.parameters.resolution_v)\n", + " print(job.parameters.resolution_w)\n", + " print(job.backgrounds[0][0])\n", + " print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7d291f16d089472db54e6fd443a0d524", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, meas_y-calc_y_cryspy, label='Imeas-Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Change calculator engine to CrysFML" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current calculator engine: CrysFML\n", + "Current minimizer: lmfit\n" + ] + } + ], + "source": [ + "job.interface.switch('CrysFML')\n", + "job.update_bindings()\n", + "\n", + "print(f\"Current calculator engine: {job.interface.current_interface_name}\")\n", + "print(f\"Current minimizer: {fitter.current_engine.name}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show results of both CrysPy and CrysFML calculations (before fitting)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0011 s\n", + "+ calculate B: 0.0013 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0003 s\n", + "+ set reflection_list: 0.0064 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0025 s\n", + "+ calculate D: 0.0019 s\n", + "+ calculate E: 0.0039 s\n", + "+ calculate F: 0.0000 s\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "11277fd2b95543f790f8bc4c2126343c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calc_y_crysfml = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Perform the fit with CrysFML" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "ename": "FitError", + "evalue": "Unable to return value:\n'NoneType' object has no attribute 'strip'\nSomething has gone wrong with the fit", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/uncertainties/core.py\u001b[0m in \u001b[0;36mufloat\u001b[0;34m(nominal_value, std_dev, tag)\u001b[0m\n\u001b[1;32m 3294\u001b[0m \u001b[0;31m# Standard case:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3295\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mVariable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnominal_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstd_dev\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtag\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3296\u001b[0m \u001b[0;31m# Exception types raised by, respectively: tuple or string that\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/uncertainties/core.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, value, std_dev, tag)\u001b[0m\n\u001b[1;32m 2763\u001b[0m \u001b[0;31m# of 3.1/2 = 1.55.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2764\u001b[0;31m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2765\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: float() argument must be a string or a number, not 'NoneType'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Objects/Base.py\u001b[0m in \u001b[0;36mvalue\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 201\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_value\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 202\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__deepValueSetter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 203\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Objects/Base.py\u001b[0m in \u001b[0;36m__deepValueSetter\u001b[0;34m(self, value)\u001b[0m\n\u001b[1;32m 219\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_args\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'value'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 220\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_value\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__class__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_constructor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_args\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 221\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/pint/measurement.py\u001b[0m in \u001b[0;36m__new__\u001b[0;34m(cls, value, error, units)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mmag\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mufloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 55\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/uncertainties/core.py\u001b[0m in \u001b[0;36mufloat\u001b[0;34m(nominal_value, std_dev, tag)\u001b[0m\n\u001b[1;32m 3307\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3308\u001b[0;31m \u001b[0mfinal_ufloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mufloat_obsolete\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnominal_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtag_arg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3309\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# The input is incorrect, not obsolete\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/uncertainties/core.py\u001b[0m in \u001b[0;36mufloat_obsolete\u001b[0;34m(representation, tag)\u001b[0m\n\u001b[1;32m 3250\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3251\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mufloat_fromstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrepresentation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3252\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/uncertainties/core.py\u001b[0m in \u001b[0;36mufloat_fromstr\u001b[0;34m(representation, tag)\u001b[0m\n\u001b[1;32m 3234\u001b[0m (nominal_value, std_dev) = str_to_number_with_uncert(\n\u001b[0;32m-> 3235\u001b[0;31m representation.strip())\n\u001b[0m\u001b[1;32m 3236\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'strip'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Fitting/lmfit.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, weights, model, parameters, method, minimizer_kwargs, **kwargs)\u001b[0m\n\u001b[1;32m 196\u001b[0m model_results = model.fit(\n\u001b[0;32m--> 197\u001b[0;31m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mweights\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mdefault_method\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mminimizer_kwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 198\u001b[0m )\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/lmfit/model.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, data, params, weights, method, iter_cb, scale_covar, verbose, fit_kws, nan_policy, calc_covar, max_nfev, **kwargs)\u001b[0m\n\u001b[1;32m 1022\u001b[0m max_nfev=max_nfev, **fit_kws)\n\u001b[0;32m-> 1023\u001b[0;31m \u001b[0moutput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mweights\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1024\u001b[0m \u001b[0moutput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomponents\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomponents\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/lmfit/model.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, data, params, weights, method, nan_policy, **kwargs)\u001b[0m\n\u001b[1;32m 1379\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muserkws\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1380\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minit_fit\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meval\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muserkws\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1381\u001b[0m \u001b[0m_ret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mminimize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/lmfit/model.py\u001b[0m in \u001b[0;36meval\u001b[0;34m(self, params, **kwargs)\u001b[0m\n\u001b[1;32m 845\u001b[0m \"\"\"\n\u001b[0;32m--> 846\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmake_funcargs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 847\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Fitting/lmfit.py\u001b[0m in \u001b[0;36mfit_function\u001b[0;34m(x, **kwargs)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0;31m# This will take in to account constraints\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 112\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_cached_pars\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpar_name\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 113\u001b[0m \u001b[0;31m# Since we are calling the parameter fset will be called.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Utils/UndoRedo.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(obj, *args)\u001b[0m\n\u001b[1;32m 456\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mNoReturn\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 457\u001b[0;31m \u001b[0mold_value\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 458\u001b[0m \u001b[0mnew_value\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Objects/Base.py\u001b[0m in \u001b[0;36m_property_value\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 449\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_property_value\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mUnion\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnumbers\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mNumber\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 450\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 451\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Objects/Base.py\u001b[0m in \u001b[0;36mvalue\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 204\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Unable to return value:\\n{e}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 205\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Unable to return value:\n'NoneType' object has no attribute 'strip'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mFitError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/ipykernel_1610/2379171151.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfitter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmeas_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeas_y\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mmeas_e\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'least_squares'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"The fit has been successful: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuccess\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuccess\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"The gooodness of fit (chi2) is: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreduced_chi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Fitting/Fitting.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 146\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 147\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 148\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 149\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 150\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0minner\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Fitting/lmfit.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, weights, model, parameters, method, minimizer_kwargs, **kwargs)\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_gen_fit_results\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel_results\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 201\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 202\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mFitError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 203\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[0mborg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstack\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendMacro\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mFitError\u001b[0m: Unable to return value:\n'NoneType' object has no attribute 'strip'\nSomething has gone wrong with the fit" + ] + } + ], + "source": [ + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares')\n", + "\n", + "print(\"The fit has been successful: {}\".format(result.success))\n", + "if result.success: \n", + " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", + " print(job.pattern.scale)\n", + " print(job.pattern.zero_shift)\n", + " print(job.parameters.resolution_u)\n", + " print(job.parameters.resolution_v)\n", + " print(job.parameters.resolution_w)\n", + " print(job.backgrounds[0][0])\n", + " print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show results of both CrysPy and CrysFML calculations (after fitting)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_crysfml = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Notebooks/PbSO4/PbSO4.cif b/Notebooks/PbSO4/PbSO4.cif new file mode 100644 index 00000000..fe04369d --- /dev/null +++ b/Notebooks/PbSO4/PbSO4.cif @@ -0,0 +1,25 @@ +data_PbSO4 + +_space_group_name_H-M_alt 'P n m a' + +_cell_length_a 8.480 +_cell_length_b 5.398 +_cell_length_c 6.958 +_cell_angle_alpha 90.0 +_cell_angle_beta 90.0 +_cell_angle_gamma 90.0 + +loop_ + _atom_site_label + _atom_site_type_symbol + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + _atom_site_adp_type + _atom_site_U_iso_or_equiv + Pb Pb 0.188 0.25 0.167 1.0 Uiso 0.01 + S S 0.063 0.25 0.686 1.0 Uiso 0.01 + O1 O -0.095 0.25 0.600 1.0 Uiso 0.01 + O2 O 0.181 0.25 0.543 1.0 Uiso 0.01 + O3 O 0.085 0.026 0.806 1.0 Uiso 0.01 From 5353dfaa42357a5b876660b661958fb21f1a2fe9 Mon Sep 17 00:00:00 2001 From: Piotr R Date: Mon, 27 Sep 2021 14:55:10 +0200 Subject: [PATCH 181/312] Updated notebooks, corrected dependency for easyCore --- Notebooks/{PbSO4 => }/D1A@ILL.xye | 0 Notebooks/FittingData.ipynb | 414 ---- Notebooks/FittingPowder1D.ipynb | 572 +++++ Notebooks/PbSO4.cif | 23 +- Notebooks/PbSO4/FittingPowder1D.ipynb | 3192 ------------------------- Notebooks/PbSO4/PbSO4.cif | 25 - pyproject.toml | 2 +- 7 files changed, 585 insertions(+), 3643 deletions(-) rename Notebooks/{PbSO4 => }/D1A@ILL.xye (100%) delete mode 100644 Notebooks/FittingData.ipynb create mode 100644 Notebooks/FittingPowder1D.ipynb delete mode 100644 Notebooks/PbSO4/FittingPowder1D.ipynb delete mode 100644 Notebooks/PbSO4/PbSO4.cif diff --git a/Notebooks/PbSO4/D1A@ILL.xye b/Notebooks/D1A@ILL.xye similarity index 100% rename from Notebooks/PbSO4/D1A@ILL.xye rename to Notebooks/D1A@ILL.xye diff --git a/Notebooks/FittingData.ipynb b/Notebooks/FittingData.ipynb deleted file mode 100644 index 51932b20..00000000 --- a/Notebooks/FittingData.ipynb +++ /dev/null @@ -1,414 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fitting to the experimental data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this notebook we will show how to load a CIF file, an experimental profile and how to perform a parameter fit.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Import all the packages\n", - "from easyCore import np\n", - "from easyDiffractionLib.sample import Sample\n", - "from easyDiffractionLib import Phases\n", - "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", - "\n", - "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", - "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", - "\n", - "from easyCore.Fitting.Fitting import Fitter\n", - "\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preparing the sample and data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Load structure from a CIF file" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calculator = Calculator()\n", - "phase = Phases.from_cif_file('PbSO4.cif')\n", - "sample = Sample(phases=phase, parameters=Instrument1DCWParameters.default(), calculator=calculator)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Visualise the structure" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import py3Dmol\n", - "viewer = py3Dmol.view()\n", - "viewer.addModel(phase[0].to_cif_str(),'cif')\n", - "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", - "viewer.addUnitCell()\n", - "viewer.replicateUnitCell(2,2,1)\n", - "viewer.zoomTo()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Load experimental data from a file" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "file_path = 'PbSO4_neutrons_short.xye'\n", - "data_x, data_y, data_e = np.loadtxt(file_path, unpack=True)\n", - "\n", - "data_y = data_y/100.0\n", - "\n", - "# Generate the simulation y-data\n", - "sim_y_data = calculator.fit_func(data_x)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib notebook\n", - "plt.plot(data_x, data_y, label='Experimental')\n", - "plt.plot(data_x, sim_y_data, label='Starting point')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The charts do not match very well, because our simulation did not include any parameters related to the experiment.\n", - "Let's assign some decent values then." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sample.parameters.wavelength = 1.912\n", - "sample.parameters.u_resolution = 1.4\n", - "sample.parameters.v_resolution = -0.42\n", - "sample.parameters.w_resolution = 0.38\n", - "sample.parameters.x_resolution = 0.0\n", - "sample.parameters.y_resolution = 0.0\n", - "\n", - "sim_y_data = calculator.fit_func(data_x)\n", - "\n", - "%matplotlib notebook\n", - "plt.plot(data_x, data_y, label='Experimental')\n", - "plt.plot(data_x, sim_y_data, label='Starting point')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This looks much better now - experimental and theoretical peaks seem to be very close but there is no background included in our simulation." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", - "\n", - "bg = PointBackground(linked_experiment='PbSO4')\n", - "bg.append(BackgroundPoint.from_pars(data_x[0], 2))\n", - "bg.append(BackgroundPoint.from_pars(data_x[-1], 2))\n", - "\n", - "sample.set_background(bg)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sim_y_data = calculator.fit_func(data_x)\n", - "%matplotlib notebook\n", - "plt.plot(data_x, data_y, label='Experimental')\n", - "plt.plot(data_x, sim_y_data, label='Starting point')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "These two charts look close enough to attempt fitting." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fitting to the data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initalize the fitting engine and define parameters to optimize" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "f = Fitter(sample, calculator.fit_func)\n", - "\n", - "# Vary the scale and the BG points\n", - "sample.pattern.scale.fixed = False\n", - "sample.parameters.resolution_u.fixed = False\n", - "sample.parameters.resolution_v.fixed = False\n", - "sample.parameters.resolution_w.fixed = False\n", - "sample.backgrounds[0][0].y.fixed = False\n", - "sample.backgrounds[0][1].y.fixed = False" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Perform the fit" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "result = f.fit(data_x, data_y, weights=1/data_e)\n", - "\n", - "if result.success:\n", - " print(\"The fit has been successful: {}\".format(result.success))\n", - " print(\"The gooodness of fit is: {}\".format(result.goodness_of_fit))\n", - " \n", - "sim_y_data = calculator.fit_func(data_x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can see that the fit was very good." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib notebook\n", - "plt.plot(data_x, data_y, label='Experimental')\n", - "plt.plot(data_x, sim_y_data, label='Best Fit')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fitted parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(f'Scale: {sample.pattern.scale}')\n", - "print(f'BG 0: {sample.backgrounds[0][0]}')\n", - "print(f'BG 1: {sample.backgrounds[0][1]}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Parameter object with varying accessors**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(f'Scale: {sample.pattern.scale}')\n", - "print(f'Scale: {sample.pattern.scale.value}')\n", - "print(f'Scale: {sample.pattern.scale.raw_value}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The fit is quite good, but let's see if we can do better with a different optimizer." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Change the optimizer to `bumps`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(\"available minimizers:\", f.available_engines)\n", - "print()\n", - "print(\"current minimizer:\", f.current_engine.name)\n", - "print(\"available methods of current minimizer:\", f.available_methods())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "f.switch_engine('bumps')\n", - "f_method = 'lm'\n", - "print(\"current minimizer:\", f.current_engine.name)\n", - "print(\"available methods of current minimizer:\", f.available_methods())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Rerun fitting** (takes a while!)\n", - "\n", - "!!!!This seems completely broken and needs fixing. The fitting just hangs.!!!!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "result = f.fit(data_x, data_y, weights=1/data_e, method=f_method)\n", - "\n", - "if result.success:\n", - " print(\"The fit has been successful: {}\".format(result.success))\n", - " print(\"The gooodness of fit is: {}\".format(result.goodness_of_fit))\n", - " \n", - "sim_y_data = calculator.fit_func(data_x)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib notebook\n", - "plt.plot(data_x, data_y, label='Experimental')\n", - "plt.plot(data_x, sim_y_data, label='Best Fit')\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(f'Scale: {sample.pattern.scale}')\n", - "print(f'BG 0: {sample.backgrounds[0][0]}')\n", - "print(f'BG 1: {sample.backgrounds[0][1]}')\n", - "#print(f'Res U: {sample.parameters.resolution_u}')\n", - "#print(f'Res V: {sample.parameters.resolution_v}')\n", - "#print(f'Res W: {sample.parameters.resolution_w}')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/Notebooks/FittingPowder1D.ipynb b/Notebooks/FittingPowder1D.ipynb new file mode 100644 index 00000000..ff44cee5 --- /dev/null +++ b/Notebooks/FittingPowder1D.ipynb @@ -0,0 +1,572 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fitting to the experimental data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook we will show how to load a CIF file, an experimental profile and how to perform a parameter fit.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Import Python packages" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esyScience, technique-independent\n", + "from easyCore import np\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "# esyScience, diffraction\n", + "from easyDiffractionLib import Phases\n", + "from easyDiffractionLib.sample import Sample as Job\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", + "\n", + "# Vizualization\n", + "import py3Dmol\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Sample ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show a CIF file content" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cif_fname = 'PbSO4.cif'\n", + "\n", + "with open(cif_fname, 'r') as f:\n", + " content = f.read()\n", + " \n", + "print(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load structure from a CIF file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "phases = Phases.from_cif_file(cif_fname)\n", + "phase = phases[0]\n", + "\n", + "print(phases)\n", + "print(phase)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualise the structure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "structure = py3Dmol.view()\n", + "structure.addModel(phase.to_cif_str(), 'cif')\n", + "structure.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol','radius': 0.1}})\n", + "structure.addUnitCell()\n", + "structure.replicateUnitCell(2,2,1)\n", + "structure.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Experiment ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show measured data as text" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "meas_fname = 'D1A@ILL.xye'\n", + "\n", + "with open(meas_fname, 'r') as f:\n", + " content = f.read()\n", + " \n", + "# print(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load the measured data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "meas_x, meas_y, meas_e = np.loadtxt(meas_fname, unpack=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualize the measured data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Analysis ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Create job with default parameters for the 1D powder neutron diffraction experiment with constant wavelength " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calculator = Calculator()\n", + "\n", + "print(f\"Current calculator engine: {calculator.current_interface_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job = Job(phases=phases, parameters=Instrument1DCWParameters.default(), calculator=calculator)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Generate the calculated data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualize both the measured and calculated data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set scale manually" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job.pattern.scale = 100" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set wavelength manually" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job.parameters.wavelength = 1.912" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set background points manually" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bkg = PointBackground(linked_experiment='PbSO4')\n", + "\n", + "bkg.append(BackgroundPoint.from_pars(meas_x[0], 200))\n", + "bkg.append(BackgroundPoint.from_pars(meas_x[-1], 250))\n", + "\n", + "job.set_background(bkg)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Define parameters to optimize" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job.pattern.scale.fixed = False\n", + "job.pattern.zero_shift.fixed = False\n", + "job.parameters.resolution_u.fixed = False\n", + "job.parameters.resolution_v.fixed = False\n", + "job.parameters.resolution_w.fixed = False\n", + "job.backgrounds[0][0].y.fixed = False\n", + "job.backgrounds[0][1].y.fixed = False" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(job.pattern.scale)\n", + "print(job.pattern.zero_shift)\n", + "print(job.parameters.resolution_u)\n", + "print(job.parameters.resolution_v)\n", + "print(job.parameters.resolution_w)\n", + "print(job.backgrounds[0][0])\n", + "print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Initalize the fitting engine and perform the fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fitter = Fitter(job, calculator.fit_func)\n", + "\n", + "print(f\"Available minimizers: {fitter.available_engines}\")\n", + "print(f\"Current minimizer: {fitter.current_engine.name}\")\n", + "print(f\"Available methods of current minimizers: {fitter.available_methods()}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares')\n", + "\n", + "print(\"The fit has been successful: {}\".format(result.success))\n", + "if result.success: \n", + " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", + " print(job.pattern.scale)\n", + " print(job.pattern.zero_shift)\n", + " print(job.parameters.resolution_u)\n", + " print(job.parameters.resolution_v)\n", + " print(job.parameters.resolution_w)\n", + " print(job.backgrounds[0][0])\n", + " print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, meas_y-calc_y_cryspy, label='Imeas-Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Change calculator engine to CrysFML" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job.interface.switch('CrysFML')\n", + "job.update_bindings()\n", + "\n", + "print(f\"Current calculator engine: {job.interface.current_interface_name}\")\n", + "print(f\"Current minimizer: {fitter.current_engine.name}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show results of both CrysPy and CrysFML calculations (before fitting)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_crysfml = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Perform the fit with CrysFML" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares')\n", + "\n", + "print(\"The fit has been successful: {}\".format(result.success))\n", + "if result.success: \n", + " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", + " print(job.pattern.scale)\n", + " print(job.pattern.zero_shift)\n", + " print(job.parameters.resolution_u)\n", + " print(job.parameters.resolution_v)\n", + " print(job.parameters.resolution_w)\n", + " print(job.backgrounds[0][0])\n", + " print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show results of both CrysPy and CrysFML calculations (after fitting)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_crysfml = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Notebooks/PbSO4.cif b/Notebooks/PbSO4.cif index 4e7ad534..fe04369d 100644 --- a/Notebooks/PbSO4.cif +++ b/Notebooks/PbSO4.cif @@ -1,24 +1,25 @@ data_PbSO4 -_cell_length_a 8.48 -_cell_length_b 5.398 -_cell_length_c 6.958 +_space_group_name_H-M_alt 'P n m a' + +_cell_length_a 8.480 +_cell_length_b 5.398 +_cell_length_c 6.958 _cell_angle_alpha 90.0 -_cell_angle_beta 90.0 +_cell_angle_beta 90.0 _cell_angle_gamma 90.0 -_space_group_name_H-M_alt 'P n m a' loop_ _atom_site_label _atom_site_type_symbol - _atom_site_occupancy _atom_site_fract_x _atom_site_fract_y _atom_site_fract_z + _atom_site_occupancy _atom_site_adp_type _atom_site_U_iso_or_equiv - Pb Pb 1.0 0.1882 0.25 0.167 Uiso 0.01 - S S 1.0 0.063 0.25 0.686 Uiso 0.01 - O1 O 1.0 -0.095 0.25 0.6 Uiso 0.01 - O2 O 1.0 0.181 0.25 0.543 Uiso 0.01 - O3 O 1.0 0.085 0.026 0.806 Uiso 0.01 + Pb Pb 0.188 0.25 0.167 1.0 Uiso 0.01 + S S 0.063 0.25 0.686 1.0 Uiso 0.01 + O1 O -0.095 0.25 0.600 1.0 Uiso 0.01 + O2 O 0.181 0.25 0.543 1.0 Uiso 0.01 + O3 O 0.085 0.026 0.806 1.0 Uiso 0.01 diff --git a/Notebooks/PbSO4/FittingPowder1D.ipynb b/Notebooks/PbSO4/FittingPowder1D.ipynb deleted file mode 100644 index 0a4f8f30..00000000 --- a/Notebooks/PbSO4/FittingPowder1D.ipynb +++ /dev/null @@ -1,3192 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fitting to the experimental data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this notebook we will show how to load a CIF file, an experimental profile and how to perform a parameter fit.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Import Python packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GSAS-II binary directory: /Users/asazonov/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/GSASII/bindist\n", - "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" - ] - } - ], - "source": [ - "# esyScience, technique-independent\n", - "from easyCore import np\n", - "from easyCore.Fitting.Fitting import Fitter\n", - "\n", - "# esyScience, diffraction\n", - "from easyDiffractionLib import Phases\n", - "from easyDiffractionLib.sample import Sample as Job\n", - "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", - "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", - "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", - "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", - "\n", - "# Vizualization\n", - "import py3Dmol\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## --- Sample ---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Show a CIF file content" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "data_PbSO4\n", - "\n", - "_space_group_name_H-M_alt 'P n m a'\n", - "\n", - "_cell_length_a 8.480\n", - "_cell_length_b 5.398\n", - "_cell_length_c 6.958\n", - "_cell_angle_alpha 90.0\n", - "_cell_angle_beta 90.0\n", - "_cell_angle_gamma 90.0\n", - "\n", - "loop_\n", - " _atom_site_label\n", - " _atom_site_type_symbol\n", - " _atom_site_fract_x\n", - " _atom_site_fract_y\n", - " _atom_site_fract_z\n", - " _atom_site_occupancy\n", - " _atom_site_adp_type\n", - " _atom_site_U_iso_or_equiv\n", - " Pb Pb 0.188 0.25 0.167 1.0 Uiso 0.01\n", - " S S 0.063 0.25 0.686 1.0 Uiso 0.01\n", - " O1 O -0.095 0.25 0.600 1.0 Uiso 0.01\n", - " O2 O 0.181 0.25 0.543 1.0 Uiso 0.01\n", - " O3 O 0.085 0.026 0.806 1.0 Uiso 0.01\n", - "\n" - ] - } - ], - "source": [ - "cif_fname = 'PbSO4.cif'\n", - "\n", - "with open(cif_fname, 'r') as f:\n", - " content = f.read()\n", - " \n", - "print(content)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Load structure from a CIF file" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collection of 1 phases.\n", - "Phase `PbSO4`\n" - ] - } - ], - "source": [ - "phases = Phases.from_cif_file(cif_fname)\n", - "phase = phases[0]\n", - "\n", - "print(phases)\n", - "print(phase)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Visualise the structure" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "structure = py3Dmol.view()\n", - "structure.addModel(phase.to_cif_str(), 'cif')\n", - "structure.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol','radius': 0.1}})\n", - "structure.addUnitCell()\n", - "structure.replicateUnitCell(2,2,1)\n", - "structure.zoomTo()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## --- Experiment ---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Show measured data as text" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992)\n", - " 10.0000 220.0000 14.8324\n", - " 10.0500 214.0000 14.6287\n", - " 10.1000 219.0000 14.7986\n", - " 10.1500 224.0000 14.9666\n", - " 10.2000 198.0000 14.0712\n", - " 10.2500 229.0000 15.1327\n", - " 10.3000 224.0000 14.9666\n", - " 10.3500 216.0000 14.6969\n", - " 10.4000 202.0000 14.2127\n", - " 10.4500 229.0000 15.1327\n", - " 10.5000 202.0000 14.2127\n", - " 10.5500 215.0000 14.6629\n", - " 10.6000 215.0000 14.6629\n", - " 10.6500 196.0000 14.0000\n", - " 10.7000 235.0000 15.3297\n", - " 10.7500 207.0000 14.3875\n", - " 10.8000 205.0000 14.3178\n", - " 10.8500 238.0000 15.4272\n", - " 10.9000 202.0000 14.2127\n", - " 10.9500 213.0000 14.5945\n", - " 11.0000 226.0000 15.0333\n", - " 11.0500 198.0000 14.0712\n", - " 11.1000 222.0000 14.8997\n", - " 11.1500 186.0000 13.6382\n", - " 11.2000 216.0000 14.6969\n", - " 11.2500 218.0000 14.7648\n", - " 11.3000 225.0000 15.0000\n", - " 11.3500 200.0000 14.1421\n", - " 11.4000 196.0000 14.0000\n", - " 11.4500 224.0000 14.9666\n", - " 11.5000 199.0000 14.1067\n", - " 11.5500 204.0000 14.2829\n", - " 11.6000 189.0000 13.7477\n", - " 11.6500 211.0000 14.5258\n", - " 11.7000 190.0000 13.7840\n", - " 11.7500 184.0000 13.5647\n", - " 11.8000 204.0000 14.2829\n", - " 11.8500 204.0000 14.2829\n", - " 11.9000 219.0000 14.7986\n", - " 11.9500 207.0000 14.3875\n", - " 12.0000 227.0000 15.0665\n", - " 12.0500 211.0000 10.2713\n", - " 12.1000 193.0000 9.8234\n", - " 12.1500 206.0000 10.1489\n", - " 12.2000 208.0000 10.1980\n", - " 12.2500 191.0000 9.7724\n", - " 12.3000 194.0000 9.8489\n", - " 12.3500 185.0000 9.6177\n", - " 12.4000 200.0000 10.0000\n", - " 12.4500 203.0000 10.0747\n", - " 12.5000 197.0000 9.9247\n", - " 12.5500 203.0000 10.0747\n", - " 12.6000 200.0000 10.0000\n", - " 12.6500 200.0000 10.0000\n", - " 12.7000 205.0000 10.1242\n", - " 12.7500 208.0000 10.1980\n", - " 12.8000 205.0000 10.1242\n", - " 12.8500 201.0000 10.0250\n", - " 12.9000 221.0000 10.5119\n", - " 12.9500 218.0000 10.4403\n", - " 13.0000 218.0000 10.4403\n", - " 13.0500 216.0000 10.3923\n", - " 13.1000 202.0000 10.0499\n", - " 13.1500 206.0000 10.1489\n", - " 13.2000 197.0000 9.9247\n", - " 13.2500 210.0000 10.2470\n", - " 13.3000 199.0000 9.9750\n", - " 13.3500 219.0000 10.4642\n", - " 13.4000 192.0000 9.7980\n", - " 13.4500 211.0000 10.2713\n", - " 13.5000 199.0000 9.9750\n", - " 13.5500 196.0000 9.8995\n", - " 13.6000 195.0000 9.8742\n", - " 13.6500 203.0000 10.0747\n", - " 13.7000 202.0000 10.0499\n", - " 13.7500 200.0000 10.0000\n", - " 13.8000 199.0000 9.9750\n", - " 13.8500 191.0000 9.7724\n", - " 13.9000 204.0000 10.0995\n", - " 13.9500 191.0000 9.7724\n", - " 14.0000 200.0000 10.0000\n", - " 14.0500 199.0000 9.9750\n", - " 14.1000 197.0000 9.9247\n", - " 14.1500 202.0000 10.0499\n", - " 14.2000 210.0000 10.2470\n", - " 14.2500 202.0000 10.0499\n", - " 14.3000 198.0000 9.9499\n", - " 14.3500 191.0000 9.7724\n", - " 14.4000 194.0000 9.8489\n", - " 14.4500 198.0000 9.9499\n", - " 14.5000 194.0000 9.8489\n", - " 14.5500 193.0000 9.8234\n", - " 14.6000 212.0000 10.2956\n", - " 14.6500 214.0000 10.3441\n", - " 14.7000 197.0000 9.9247\n", - " 14.7500 195.0000 9.8742\n", - " 14.8000 205.0000 10.1242\n", - " 14.8500 209.0000 10.2225\n", - " 14.9000 203.0000 10.0747\n", - " 14.9500 197.0000 9.9247\n", - " 15.0000 191.0000 9.7724\n", - " 15.0500 192.0000 9.7980\n", - " 15.1000 215.0000 10.3682\n", - " 15.1500 194.0000 9.8489\n", - " 15.2000 189.0000 9.7211\n", - " 15.2500 188.0000 9.6954\n", - " 15.3000 202.0000 10.0499\n", - " 15.3500 201.0000 10.0250\n", - " 15.4000 198.0000 9.9499\n", - " 15.4500 208.0000 10.1980\n", - " 15.5000 197.0000 9.9247\n", - " 15.5500 187.0000 9.6695\n", - " 15.6000 187.0000 9.6695\n", - " 15.6500 190.0000 9.7468\n", - " 15.7000 197.0000 9.9247\n", - " 15.7500 200.0000 10.0000\n", - " 15.8000 193.0000 9.8234\n", - " 15.8500 180.0000 9.4868\n", - " 15.9000 194.0000 9.8489\n", - " 15.9500 206.0000 10.1489\n", - " 16.0000 195.0000 9.8742\n", - " 16.0500 193.0000 9.8234\n", - " 16.1000 205.0000 10.1242\n", - " 16.1500 194.0000 9.8489\n", - " 16.2000 196.0000 9.8995\n", - " 16.2500 194.0000 9.8489\n", - " 16.3000 199.0000 9.9750\n", - " 16.3500 207.0000 10.1735\n", - " 16.4000 188.0000 9.6954\n", - " 16.4500 203.0000 10.0747\n", - " 16.5000 188.0000 9.6954\n", - " 16.5500 180.0000 9.4868\n", - " 16.6000 198.0000 9.9499\n", - " 16.6500 200.0000 10.0000\n", - " 16.7000 201.0000 10.0250\n", - " 16.7500 210.0000 10.2470\n", - " 16.8000 206.0000 10.1489\n", - " 16.8500 189.0000 9.7211\n", - " 16.9000 194.0000 9.8489\n", - " 16.9500 187.0000 9.6695\n", - " 17.0000 195.0000 9.8742\n", - " 17.0500 201.0000 10.0250\n", - " 17.1000 197.0000 9.9247\n", - " 17.1500 206.0000 10.1489\n", - " 17.2000 208.0000 10.1980\n", - " 17.2500 199.0000 9.9750\n", - " 17.3000 192.0000 9.7980\n", - " 17.3500 193.0000 9.8234\n", - " 17.4000 204.0000 10.0995\n", - " 17.4500 201.0000 10.0250\n", - " 17.5000 200.0000 10.0000\n", - " 17.5500 177.0000 9.4074\n", - " 17.6000 193.0000 9.8234\n", - " 17.6500 199.0000 9.9750\n", - " 17.7000 201.0000 10.0250\n", - " 17.7500 194.0000 9.8489\n", - " 17.8000 184.0000 9.5917\n", - " 17.8500 192.0000 9.7980\n", - " 17.9000 199.0000 9.9750\n", - " 17.9500 190.0000 9.7468\n", - " 18.0000 183.0000 9.5656\n", - " 18.0500 189.0000 7.9373\n", - " 18.1000 196.0000 8.0829\n", - " 18.1500 196.0000 8.0829\n", - " 18.2000 198.0000 8.1240\n", - " 18.2500 210.0000 8.3666\n", - " 18.3000 212.0000 8.4063\n", - " 18.3500 219.0000 8.5440\n", - " 18.4000 198.0000 8.1240\n", - " 18.4500 195.0000 8.0623\n", - " 18.5000 198.0000 8.1240\n", - " 18.5500 191.0000 7.9791\n", - " 18.6000 193.0000 8.0208\n", - " 18.6500 197.0000 8.1035\n", - " 18.7000 194.0000 8.0416\n", - " 18.7500 187.0000 7.8951\n", - " 18.8000 209.0000 8.3467\n", - " 18.8500 187.0000 7.8951\n", - " 18.9000 198.0000 8.1240\n", - " 18.9500 206.0000 8.2865\n", - " 19.0000 197.0000 8.1035\n", - " 19.0500 191.0000 7.9791\n", - " 19.1000 200.0000 8.1650\n", - " 19.1500 207.0000 8.3066\n", - " 19.2000 205.0000 8.2664\n", - " 19.2500 198.0000 8.1240\n", - " 19.3000 196.0000 8.0829\n", - " 19.3500 209.0000 8.3467\n", - " 19.4000 211.0000 8.3865\n", - " 19.4500 203.0000 8.2260\n", - " 19.5000 200.0000 8.1650\n", - " 19.5500 192.0000 8.0000\n", - " 19.6000 208.0000 8.3267\n", - " 19.6500 213.0000 8.4261\n", - " 19.7000 221.0000 8.5829\n", - " 19.7500 216.0000 8.4853\n", - " 19.8000 226.0000 8.6795\n", - " 19.8500 228.0000 8.7178\n", - " 19.9000 228.0000 8.7178\n", - " 19.9500 215.0000 8.4656\n", - " 20.0000 224.0000 8.6410\n", - " 20.0500 226.0000 8.6795\n", - " 20.1000 213.0000 8.4261\n", - " 20.1500 239.0000 8.9256\n", - " 20.2000 250.0000 9.1287\n", - " 20.2500 247.0000 9.0738\n", - " 20.3000 240.0000 8.9443\n", - " 20.3500 231.0000 8.7750\n", - " 20.4000 236.0000 8.8694\n", - " 20.4500 223.0000 8.6217\n", - " 20.5000 231.0000 8.7750\n", - " 20.5500 226.0000 8.6795\n", - " 20.6000 214.0000 8.4459\n", - " 20.6500 208.0000 8.3267\n", - " 20.7000 214.0000 8.4459\n", - " 20.7500 196.0000 8.0829\n", - " 20.8000 204.0000 8.2462\n", - " 20.8500 199.0000 8.1445\n", - " 20.9000 186.0000 7.8740\n", - " 20.9500 192.0000 8.0000\n", - " 21.0000 199.0000 8.1445\n", - " 21.0500 200.0000 8.1650\n", - " 21.1000 184.0000 7.8316\n", - " 21.1500 184.0000 7.8316\n", - " 21.2000 189.0000 7.9373\n", - " 21.2500 182.0000 7.7889\n", - " 21.3000 184.0000 7.8316\n", - " 21.3500 185.0000 7.8528\n", - " 21.4000 195.0000 8.0623\n", - " 21.4500 190.0000 7.9582\n", - " 21.5000 194.0000 8.0416\n", - " 21.5500 185.0000 7.8528\n", - " 21.6000 183.0000 7.8102\n", - " 21.6500 193.0000 8.0208\n", - " 21.7000 194.0000 8.0416\n", - " 21.7500 193.0000 8.0208\n", - " 21.8000 188.0000 7.9162\n", - " 21.8500 191.0000 7.9791\n", - " 21.9000 189.0000 7.9373\n", - " 21.9500 188.0000 7.9162\n", - " 22.0000 201.0000 8.1854\n", - " 22.0500 195.0000 8.0623\n", - " 22.1000 205.0000 8.2664\n", - " 22.1500 200.0000 8.1650\n", - " 22.2000 200.0000 8.1650\n", - " 22.2500 192.0000 8.0000\n", - " 22.3000 197.0000 8.1035\n", - " 22.3500 204.0000 8.2462\n", - " 22.4000 207.0000 8.3066\n", - " 22.4500 192.0000 8.0000\n", - " 22.5000 201.0000 8.1854\n", - " 22.5500 190.0000 7.9582\n", - " 22.6000 195.0000 8.0623\n", - " 22.6500 194.0000 8.0416\n", - " 22.7000 182.0000 7.7889\n", - " 22.7500 189.0000 7.9373\n", - " 22.8000 196.0000 8.0829\n", - " 22.8500 196.0000 8.0829\n", - " 22.9000 200.0000 8.1650\n", - " 22.9500 190.0000 7.9582\n", - " 23.0000 183.0000 7.8102\n", - " 23.0500 199.0000 8.1445\n", - " 23.1000 187.0000 7.8951\n", - " 23.1500 196.0000 8.0829\n", - " 23.2000 191.0000 7.9791\n", - " 23.2500 191.0000 7.9791\n", - " 23.3000 195.0000 8.0623\n", - " 23.3500 194.0000 8.0416\n", - " 23.4000 192.0000 8.0000\n", - " 23.4500 182.0000 7.7889\n", - " 23.5000 188.0000 7.9162\n", - " 23.5500 203.0000 8.2260\n", - " 23.6000 187.0000 7.8951\n", - " 23.6500 192.0000 8.0000\n", - " 23.7000 206.0000 8.2865\n", - " 23.7500 201.0000 8.1854\n", - " 23.8000 184.0000 7.8316\n", - " 23.8500 192.0000 8.0000\n", - " 23.9000 205.0000 8.2664\n", - " 23.9500 196.0000 8.0829\n", - " 24.0000 193.0000 8.0208\n", - " 24.0500 194.0000 6.9642\n", - " 24.1000 195.0000 6.9821\n", - " 24.1500 194.0000 6.9642\n", - " 24.2000 201.0000 7.0887\n", - " 24.2500 193.0000 6.9462\n", - " 24.3000 176.0000 6.6332\n", - " 24.3500 187.0000 6.8374\n", - " 24.4000 188.0000 6.8557\n", - " 24.4500 196.0000 7.0000\n", - " 24.5000 192.0000 6.9282\n", - " 24.5500 185.0000 6.8007\n", - " 24.6000 195.0000 6.9821\n", - " 24.6500 198.0000 7.0356\n", - " 24.7000 205.0000 7.1589\n", - " 24.7500 200.0000 7.0711\n", - " 24.8000 208.0000 7.2111\n", - " 24.8500 195.0000 6.9821\n", - " 24.9000 187.0000 6.8374\n", - " 24.9500 193.0000 6.9462\n", - " 25.0000 197.0000 7.0178\n", - " 25.0500 202.0000 7.1063\n", - " 25.1000 193.0000 6.9462\n", - " 25.1500 196.0000 7.0000\n", - " 25.2000 202.0000 7.1063\n", - " 25.2500 201.0000 7.0887\n", - " 25.3000 197.0000 7.0178\n", - " 25.3500 204.0000 7.1414\n", - " 25.4000 208.0000 7.2111\n", - " 25.4500 206.0000 7.1764\n", - " 25.5000 212.0000 7.2801\n", - " 25.5500 207.0000 7.1937\n", - " 25.6000 207.0000 7.1937\n", - " 25.6500 212.0000 7.2801\n", - " 25.7000 216.0000 7.3485\n", - " 25.7500 218.0000 7.3824\n", - " 25.8000 221.0000 7.4330\n", - " 25.8500 218.0000 7.3824\n", - " 25.9000 207.0000 7.1937\n", - " 25.9500 203.0000 7.1239\n", - " 26.0000 204.0000 7.1414\n", - " 26.0500 202.0000 7.1063\n", - " 26.1000 206.0000 7.1764\n", - " 26.1500 202.0000 7.1063\n", - " 26.2000 202.0000 7.1063\n", - " 26.2500 181.0000 6.7268\n", - " 26.3000 193.0000 6.9462\n", - " 26.3500 205.0000 7.1589\n", - " 26.4000 198.0000 7.0356\n", - " 26.4500 196.0000 7.0000\n", - " 26.5000 197.0000 7.0178\n", - " 26.5500 195.0000 6.9821\n", - " 26.6000 201.0000 7.0887\n", - " 26.6500 205.0000 7.1589\n", - " 26.7000 195.0000 6.9821\n", - " 26.7500 196.0000 7.0000\n", - " 26.8000 196.0000 7.0000\n", - " 26.8500 205.0000 7.1589\n", - " 26.9000 198.0000 7.0356\n", - " 26.9500 200.0000 7.0711\n", - " 27.0000 199.0000 7.0534\n", - " 27.0500 180.0000 6.7082\n", - " 27.1000 187.0000 6.8374\n", - " 27.1500 193.0000 6.9462\n", - " 27.2000 197.0000 7.0178\n", - " 27.2500 197.0000 7.0178\n", - " 27.3000 196.0000 7.0000\n", - " 27.3500 194.0000 6.9642\n", - " 27.4000 197.0000 7.0178\n", - " 27.4500 204.0000 7.1414\n", - " 27.5000 201.0000 7.0887\n", - " 27.5500 187.0000 6.8374\n", - " 27.6000 191.0000 6.9101\n", - " 27.6500 205.0000 7.1589\n", - " 27.7000 200.0000 7.0711\n", - " 27.7500 198.0000 7.0356\n", - " 27.8000 200.0000 7.0711\n", - " 27.8500 204.0000 7.1414\n", - " 27.9000 196.0000 7.0000\n", - " 27.9500 195.0000 6.9821\n", - " 28.0000 194.0000 6.9642\n", - " 28.0500 200.0000 7.0711\n", - " 28.1000 198.0000 7.0356\n", - " 28.1500 201.0000 7.0887\n", - " 28.2000 208.0000 7.2111\n", - " 28.2500 205.0000 7.1589\n", - " 28.3000 211.0000 7.2629\n", - " 28.3500 211.0000 7.2629\n", - " 28.4000 220.0000 7.4162\n", - " 28.4500 220.0000 7.4162\n", - " 28.5000 212.0000 7.2801\n", - " 28.5500 208.0000 7.2111\n", - " 28.6000 214.0000 7.3144\n", - " 28.6500 226.0000 7.5166\n", - " 28.7000 235.0000 7.6649\n", - " 28.7500 233.0000 7.6322\n", - " 28.8000 237.0000 7.6974\n", - " 28.8500 242.0000 7.7782\n", - " 28.9000 242.0000 7.7782\n", - " 28.9500 245.0000 7.8262\n", - " 29.0000 239.0000 7.7298\n", - " 29.0500 226.0000 7.5166\n", - " 29.1000 232.0000 7.6158\n", - " 29.1500 238.0000 7.7136\n", - " 29.2000 226.0000 7.5166\n", - " 29.2500 218.0000 7.3824\n", - " 29.3000 218.0000 7.3824\n", - " 29.3500 214.0000 7.3144\n", - " 29.4000 205.0000 7.1589\n", - " 29.4500 200.0000 7.0711\n", - " 29.5000 193.0000 6.9462\n", - " 29.5500 195.0000 6.9821\n", - " 29.6000 196.0000 7.0000\n", - " 29.6500 195.0000 6.9821\n", - " 29.7000 207.0000 7.1937\n", - " 29.7500 215.0000 7.3314\n", - " 29.8000 207.0000 7.1937\n", - " 29.8500 218.0000 7.3824\n", - " 29.9000 218.0000 7.3824\n", - " 29.9500 220.0000 7.4162\n", - " 30.0000 220.0000 7.4162\n", - " 30.0500 229.0000 6.7676\n", - " 30.1000 236.0000 6.8702\n", - " 30.1500 254.0000 7.1274\n", - " 30.2000 264.0000 7.2664\n", - " 30.2500 280.0000 7.4833\n", - " 30.3000 289.0000 7.6026\n", - " 30.3500 289.0000 7.6026\n", - " 30.4000 303.0000 7.7846\n", - " 30.4500 302.0000 7.7717\n", - " 30.5000 297.0000 7.7071\n", - " 30.5500 281.0000 7.4967\n", - " 30.6000 278.0000 7.4565\n", - " 30.6500 280.0000 7.4833\n", - " 30.7000 265.0000 7.2801\n", - " 30.7500 258.0000 7.1833\n", - " 30.8000 243.0000 6.9714\n", - " 30.8500 240.0000 6.9282\n", - " 30.9000 232.0000 6.8118\n", - " 30.9500 231.0000 6.7971\n", - " 31.0000 233.0000 6.8264\n", - " 31.0500 246.0000 7.0143\n", - " 31.1000 248.0000 7.0427\n", - " 31.1500 249.0000 7.0569\n", - " 31.2000 256.0000 7.1554\n", - " 31.2500 272.0000 7.3756\n", - " 31.3000 289.0000 7.6026\n", - " 31.3500 311.0000 7.8867\n", - " 31.4000 340.0000 8.2462\n", - " 31.4500 363.0000 8.5206\n", - " 31.5000 393.0000 8.8657\n", - " 31.5500 440.0000 9.3808\n", - " 31.6000 474.0000 9.7365\n", - " 31.6500 482.0000 9.8183\n", - " 31.7000 492.0000 9.9197\n", - " 31.7500 508.0000 10.0797\n", - " 31.8000 494.0000 9.9398\n", - " 31.8500 475.0000 9.7468\n", - " 31.9000 439.0000 9.3702\n", - " 31.9500 413.0000 9.0885\n", - " 32.0000 368.0000 8.5790\n", - " 32.0500 331.0000 8.1363\n", - " 32.1000 299.0000 7.7330\n", - " 32.1500 286.0000 7.5631\n", - " 32.2000 262.0000 7.2388\n", - " 32.2500 241.0000 6.9426\n", - " 32.3000 238.0000 6.8993\n", - " 32.3500 252.0000 7.0993\n", - " 32.4000 267.0000 7.3075\n", - " 32.4500 276.0000 7.4297\n", - " 32.5000 278.0000 7.4565\n", - " 32.5500 300.0000 7.7460\n", - " 32.6000 325.0000 8.0623\n", - " 32.6500 336.0000 8.1976\n", - " 32.7000 359.0000 8.4735\n", - " 32.7500 405.0000 9.0000\n", - " 32.8000 458.0000 9.5708\n", - " 32.8500 501.0000 10.0100\n", - " 32.9000 564.0000 10.6207\n", - " 32.9500 640.0000 11.3137\n", - " 33.0000 719.0000 11.9917\n", - " 33.0500 783.0000 12.5140\n", - " 33.1000 837.0000 12.9383\n", - " 33.1500 851.0000 13.0461\n", - " 33.2000 866.0000 13.1605\n", - " 33.2500 828.0000 12.8686\n", - " 33.3000 763.0000 12.3531\n", - " 33.3500 697.0000 11.8068\n", - " 33.4000 634.0000 11.2606\n", - " 33.4500 541.0000 10.4019\n", - " 33.5000 465.0000 9.6437\n", - " 33.5500 391.0000 8.8431\n", - " 33.6000 351.0000 8.3785\n", - " 33.6500 301.0000 7.7589\n", - " 33.7000 284.0000 7.5366\n", - " 33.7500 260.0000 7.2111\n", - " 33.8000 248.0000 7.0427\n", - " 33.8500 257.0000 7.1694\n", - " 33.9000 242.0000 6.9570\n", - " 33.9500 246.0000 7.0143\n", - " 34.0000 263.0000 7.2526\n", - " 34.0500 271.0000 7.3621\n", - " 34.1000 281.0000 7.4967\n", - " 34.1500 302.0000 7.7717\n", - " 34.2000 309.0000 7.8613\n", - " 34.2500 335.0000 8.1854\n", - " 34.3000 342.0000 8.2704\n", - " 34.3500 345.0000 8.3066\n", - " 34.4000 356.0000 8.4380\n", - " 34.4500 351.0000 8.3785\n", - " 34.5000 341.0000 8.2583\n", - " 34.5500 334.0000 8.1731\n", - " 34.6000 321.0000 8.0125\n", - " 34.6500 286.0000 7.5631\n", - " 34.7000 268.0000 7.3212\n", - " 34.7500 256.0000 7.1554\n", - " 34.8000 238.0000 6.8993\n", - " 34.8500 229.0000 6.7676\n", - " 34.9000 218.0000 6.6030\n", - " 34.9500 223.0000 6.6783\n", - " 35.0000 216.0000 6.5727\n", - " 35.0500 203.0000 6.3718\n", - " 35.1000 203.0000 6.3718\n", - " 35.1500 194.0000 6.2290\n", - " 35.2000 205.0000 6.4031\n", - " 35.2500 196.0000 6.2610\n", - " 35.3000 193.0000 6.2129\n", - " 35.3500 206.0000 6.4187\n", - " 35.4000 201.0000 6.3403\n", - " 35.4500 201.0000 6.3403\n", - " 35.5000 201.0000 6.3403\n", - " 35.5500 200.0000 6.3246\n", - " 35.6000 194.0000 6.2290\n", - " 35.6500 196.0000 6.2610\n", - " 35.7000 203.0000 6.3718\n", - " 35.7500 195.0000 6.2450\n", - " 35.8000 196.0000 6.2610\n", - " 35.8500 211.0000 6.4962\n", - " 35.9000 216.0000 6.5727\n", - " 35.9500 207.0000 6.4343\n", - " 36.0000 215.0000 6.5574\n", - " 36.0500 221.0000 6.6483\n", - " 36.1000 237.0000 6.2849\n", - " 36.1500 248.0000 6.4291\n", - " 36.2000 261.0000 6.5955\n", - " 36.2500 279.0000 6.8191\n", - " 36.3000 319.0000 7.2915\n", - " 36.3500 337.0000 7.4944\n", - " 36.4000 364.0000 7.7889\n", - " 36.4500 423.0000 8.3964\n", - " 36.5000 489.0000 9.0277\n", - " 36.5500 557.0000 9.6350\n", - " 36.6000 630.0000 10.2470\n", - " 36.6500 729.0000 11.0227\n", - " 36.7000 822.0000 11.7047\n", - " 36.7500 943.0000 12.5366\n", - " 36.8000 1059.0000 13.2853\n", - " 36.8500 1196.0000 14.1185\n", - " 36.9000 1235.0000 14.3469\n", - " 36.9500 1220.0000 14.2595\n", - " 37.0000 1209.0000 14.1951\n", - " 37.0500 1128.0000 13.7113\n", - " 37.1000 1001.0000 12.9164\n", - " 37.1500 864.0000 12.0000\n", - " 37.2000 729.0000 11.0227\n", - " 37.2500 601.0000 10.0083\n", - " 37.3000 496.0000 9.0921\n", - " 37.3500 418.0000 8.3467\n", - " 37.4000 355.0000 7.6920\n", - " 37.4500 313.0000 7.2226\n", - " 37.5000 263.0000 6.6207\n", - " 37.5500 246.0000 6.4031\n", - " 37.6000 226.0000 6.1373\n", - " 37.6500 214.0000 5.9722\n", - " 37.7000 222.0000 6.0828\n", - " 37.7500 222.0000 6.0828\n", - " 37.8000 211.0000 5.9301\n", - " 37.8500 211.0000 5.9301\n", - " 37.9000 202.0000 5.8023\n", - " 37.9500 198.0000 5.7446\n", - " 38.0000 192.0000 5.6569\n", - " 38.0500 193.0000 5.6716\n", - " 38.1000 196.0000 5.7155\n", - " 38.1500 201.0000 5.7879\n", - " 38.2000 203.0000 5.8166\n", - " 38.2500 203.0000 5.8166\n", - " 38.3000 201.0000 5.7879\n", - " 38.3500 198.0000 5.7446\n", - " 38.4000 196.0000 5.7155\n", - " 38.4500 206.0000 5.8595\n", - " 38.5000 210.0000 5.9161\n", - " 38.5500 197.0000 5.7300\n", - " 38.6000 204.0000 5.8310\n", - " 38.6500 200.0000 5.7735\n", - " 38.7000 205.0000 5.8452\n", - " 38.7500 196.0000 5.7155\n", - " 38.8000 195.0000 5.7009\n", - " 38.8500 205.0000 5.8452\n", - " 38.9000 204.0000 5.8310\n", - " 38.9500 200.0000 5.7735\n", - " 39.0000 203.0000 5.8166\n", - " 39.0500 208.0000 5.8878\n", - " 39.1000 207.0000 5.8737\n", - " 39.1500 202.0000 5.8023\n", - " 39.2000 203.0000 5.8166\n", - " 39.2500 198.0000 5.7446\n", - " 39.3000 204.0000 5.8310\n", - " 39.3500 210.0000 5.9161\n", - " 39.4000 216.0000 6.0000\n", - " 39.4500 210.0000 5.9161\n", - " 39.5000 229.0000 6.1779\n", - " 39.5500 239.0000 6.3114\n", - " 39.6000 247.0000 6.4161\n", - " 39.6500 278.0000 6.8069\n", - " 39.7000 302.0000 7.0946\n", - " 39.7500 324.0000 7.3485\n", - " 39.8000 371.0000 7.8634\n", - " 39.8500 420.0000 8.3666\n", - " 39.9000 465.0000 8.8034\n", - " 39.9500 538.0000 9.4692\n", - " 40.0000 630.0000 10.2470\n", - " 40.0500 739.0000 11.0980\n", - " 40.1000 851.0000 11.9094\n", - " 40.1500 976.0000 12.7541\n", - " 40.2000 1076.0000 13.3915\n", - " 40.2500 1161.0000 13.9104\n", - " 40.3000 1222.0000 14.2712\n", - " 40.3500 1227.0000 14.3003\n", - " 40.4000 1187.0000 14.0653\n", - " 40.4500 1096.0000 13.5154\n", - " 40.5000 964.0000 12.6754\n", - " 40.5500 833.0000 11.7828\n", - " 40.6000 708.0000 10.8628\n", - " 40.6500 587.0000 9.8911\n", - " 40.7000 512.0000 9.2376\n", - " 40.7500 436.0000 8.5245\n", - " 40.8000 391.0000 8.0726\n", - " 40.8500 384.0000 8.0000\n", - " 40.9000 370.0000 7.8528\n", - " 40.9500 391.0000 8.0726\n", - " 41.0000 419.0000 8.3566\n", - " 41.0500 448.0000 8.6410\n", - " 41.1000 490.0000 9.0370\n", - " 41.1500 567.0000 9.7211\n", - " 41.2000 626.0000 10.2144\n", - " 41.2500 687.0000 10.7005\n", - " 41.3000 735.0000 11.0680\n", - " 41.3500 780.0000 11.4018\n", - " 41.4000 782.0000 11.4164\n", - " 41.4500 745.0000 11.1430\n", - " 41.5000 721.0000 10.9621\n", - " 41.5500 662.0000 10.5040\n", - " 41.6000 595.0000 9.9582\n", - " 41.6500 527.0000 9.3719\n", - " 41.7000 446.0000 8.6217\n", - " 41.7500 393.0000 8.0932\n", - " 41.8000 335.0000 7.4722\n", - " 41.8500 301.0000 7.0828\n", - " 41.9000 276.0000 6.7823\n", - " 41.9500 251.0000 5.9881\n", - " 42.0000 242.0000 5.8797\n", - " 42.0500 229.0000 5.7196\n", - " 42.1000 209.0000 5.4642\n", - " 42.1500 215.0000 5.5420\n", - " 42.2000 218.0000 5.5806\n", - " 42.2500 214.0000 5.5291\n", - " 42.3000 209.0000 5.4642\n", - " 42.3500 208.0000 5.4511\n", - " 42.4000 212.0000 5.5032\n", - " 42.4500 210.0000 5.4772\n", - " 42.5000 209.0000 5.4642\n", - " 42.5500 210.0000 5.4772\n", - " 42.6000 205.0000 5.4116\n", - " 42.6500 209.0000 5.4642\n", - " 42.7000 211.0000 5.4903\n", - " 42.7500 211.0000 5.4903\n", - " 42.8000 216.0000 5.5549\n", - " 42.8500 205.0000 5.4116\n", - " 42.9000 204.0000 5.3984\n", - " 42.9500 202.0000 5.3719\n", - " 43.0000 201.0000 5.3586\n", - " 43.0500 200.0000 5.3452\n", - " 43.1000 207.0000 5.4380\n", - " 43.1500 205.0000 5.4116\n", - " 43.2000 202.0000 5.3719\n", - " 43.2500 209.0000 5.4642\n", - " 43.3000 202.0000 5.3719\n", - " 43.3500 203.0000 5.3852\n", - " 43.4000 206.0000 5.4248\n", - " 43.4500 206.0000 5.4248\n", - " 43.5000 200.0000 5.3452\n", - " 43.5500 194.0000 5.2644\n", - " 43.6000 199.0000 5.3318\n", - " 43.6500 204.0000 5.3984\n", - " 43.7000 205.0000 5.4116\n", - " 43.7500 210.0000 5.4772\n", - " 43.8000 207.0000 5.4380\n", - " 43.8500 205.0000 5.4116\n", - " 43.9000 210.0000 5.4772\n", - " 43.9500 204.0000 5.3984\n", - " 44.0000 203.0000 5.3852\n", - " 44.0500 202.0000 5.3719\n", - " 44.1000 205.0000 5.4116\n", - " 44.1500 201.0000 5.3586\n", - " 44.2000 201.0000 5.3586\n", - " 44.2500 207.0000 5.4380\n", - " 44.3000 197.0000 5.3050\n", - " 44.3500 198.0000 5.3184\n", - " 44.4000 203.0000 5.3852\n", - " 44.4500 209.0000 5.4642\n", - " 44.5000 209.0000 5.4642\n", - " 44.5500 208.0000 5.4511\n", - " 44.6000 204.0000 5.3984\n", - " 44.6500 209.0000 5.4642\n", - " 44.7000 199.0000 5.3318\n", - " 44.7500 204.0000 5.3984\n", - " 44.8000 206.0000 5.4248\n", - " 44.8500 201.0000 5.3586\n", - " 44.9000 205.0000 5.4116\n", - " 44.9500 202.0000 5.3719\n", - " 45.0000 204.0000 5.3984\n", - " 45.0500 198.0000 5.3184\n", - " 45.1000 198.0000 5.3184\n", - " 45.1500 213.0000 5.5162\n", - " 45.2000 210.0000 5.4772\n", - " 45.2500 212.0000 5.5032\n", - " 45.3000 214.0000 5.5291\n", - " 45.3500 215.0000 5.5420\n", - " 45.4000 217.0000 5.5678\n", - " 45.4500 210.0000 5.4772\n", - " 45.5000 214.0000 5.5291\n", - " 45.5500 215.0000 5.5420\n", - " 45.6000 215.0000 5.5420\n", - " 45.6500 215.0000 5.5420\n", - " 45.7000 217.0000 5.5678\n", - " 45.7500 222.0000 5.6315\n", - " 45.8000 231.0000 5.7446\n", - " 45.8500 247.0000 5.9402\n", - " 45.9000 252.0000 6.0000\n", - " 45.9500 273.0000 6.2450\n", - " 46.0000 304.0000 6.5900\n", - " 46.0500 332.0000 6.8868\n", - " 46.1000 366.0000 7.2309\n", - " 46.1500 408.0000 7.6345\n", - " 46.2000 463.0000 8.1328\n", - " 46.2500 532.0000 8.7178\n", - " 46.3000 619.0000 9.4036\n", - " 46.3500 734.0000 10.2400\n", - " 46.4000 828.0000 10.8759\n", - " 46.4500 944.0000 11.6128\n", - " 46.5000 1003.0000 11.9702\n", - " 46.5500 1055.0000 12.2766\n", - " 46.6000 1070.0000 12.3635\n", - " 46.6500 1018.0000 12.0594\n", - " 46.7000 944.0000 11.6128\n", - " 46.7500 833.0000 10.9087\n", - " 46.8000 725.0000 10.1770\n", - " 46.8500 633.0000 9.5094\n", - " 46.9000 507.0000 8.5105\n", - " 46.9500 445.0000 7.9732\n", - " 47.0000 379.0000 7.3582\n", - " 47.0500 347.0000 7.0407\n", - " 47.1000 316.0000 6.7188\n", - " 47.1500 282.0000 6.3471\n", - " 47.2000 267.0000 6.1760\n", - " 47.2500 269.0000 6.1991\n", - " 47.3000 281.0000 6.3358\n", - " 47.3500 288.0000 6.4143\n", - " 47.4000 300.0000 6.5465\n", - " 47.4500 327.0000 6.8348\n", - " 47.5000 346.0000 7.0305\n", - " 47.5500 380.0000 7.3679\n", - " 47.6000 400.0000 7.5593\n", - " 47.6500 430.0000 7.8376\n", - " 47.7000 453.0000 8.0445\n", - " 47.7500 459.0000 8.0976\n", - " 47.8000 451.0000 8.0267\n", - " 47.8500 427.0000 7.8102\n", - " 47.9000 402.0000 7.5782\n", - " 47.9500 375.0000 7.3193\n", - " 48.0000 344.0000 7.0102\n", - " 48.0500 309.0000 6.6440\n", - " 48.1000 277.0000 6.2906\n", - " 48.1500 265.0000 5.7554\n", - " 48.2000 246.0000 5.5453\n", - " 48.2500 246.0000 5.5453\n", - " 48.3000 230.0000 5.3619\n", - " 48.3500 223.0000 5.2797\n", - " 48.4000 227.0000 5.3268\n", - " 48.4500 225.0000 5.3033\n", - " 48.5000 217.0000 5.2082\n", - " 48.5500 217.0000 5.2082\n", - " 48.6000 223.0000 5.2797\n", - " 48.6500 223.0000 5.2797\n", - " 48.7000 220.0000 5.2440\n", - " 48.7500 223.0000 5.2797\n", - " 48.8000 226.0000 5.3151\n", - " 48.8500 248.0000 5.5678\n", - " 48.9000 258.0000 5.6789\n", - " 48.9500 274.0000 5.8523\n", - " 49.0000 297.0000 6.0930\n", - " 49.0500 324.0000 6.3640\n", - " 49.1000 355.0000 6.6615\n", - " 49.1500 393.0000 7.0089\n", - " 49.2000 458.0000 7.5664\n", - " 49.2500 528.0000 8.1240\n", - " 49.3000 589.0000 8.5805\n", - " 49.3500 688.0000 9.2736\n", - " 49.4000 781.0000 9.8805\n", - " 49.4500 840.0000 10.2470\n", - " 49.5000 876.0000 10.4642\n", - " 49.5500 874.0000 10.4523\n", - " 49.6000 832.0000 10.1980\n", - " 49.6500 765.0000 9.7788\n", - " 49.7000 682.0000 9.2331\n", - " 49.7500 613.0000 8.7536\n", - " 49.8000 524.0000 8.0932\n", - " 49.8500 455.0000 7.5416\n", - " 49.9000 408.0000 7.1414\n", - " 49.9500 384.0000 6.9282\n", - " 50.0000 366.0000 6.7639\n", - " 50.0500 375.0000 6.8465\n", - " 50.1000 392.0000 7.0000\n", - " 50.1500 426.0000 7.2973\n", - " 50.2000 470.0000 7.6649\n", - " 50.2500 519.0000 8.0545\n", - " 50.3000 588.0000 8.5732\n", - " 50.3500 639.0000 8.9373\n", - " 50.4000 681.0000 9.2263\n", - " 50.4500 704.0000 9.3808\n", - " 50.5000 693.0000 9.3073\n", - " 50.5500 650.0000 9.0139\n", - " 50.6000 600.0000 8.6603\n", - " 50.6500 540.0000 8.2158\n", - " 50.7000 478.0000 7.7298\n", - " 50.7500 412.0000 7.1764\n", - " 50.8000 376.0000 6.8557\n", - " 50.8500 345.0000 6.5670\n", - " 50.9000 330.0000 6.4226\n", - " 50.9500 337.0000 6.4904\n", - " 51.0000 350.0000 6.6144\n", - " 51.0500 383.0000 6.9192\n", - " 51.1000 426.0000 7.2973\n", - " 51.1500 493.0000 7.8502\n", - " 51.2000 571.0000 8.4484\n", - " 51.2500 676.0000 9.1924\n", - " 51.3000 803.0000 10.0187\n", - " 51.3500 920.0000 10.7238\n", - " 51.4000 1071.0000 11.5704\n", - " 51.4500 1183.0000 12.1604\n", - " 51.5000 1247.0000 12.4850\n", - " 51.5500 1255.0000 12.5250\n", - " 51.6000 1251.0000 12.5050\n", - " 51.6500 1183.0000 12.1604\n", - " 51.7000 1068.0000 11.5542\n", - " 51.7500 945.0000 10.8685\n", - " 51.8000 861.0000 10.3742\n", - " 51.8500 811.0000 10.0685\n", - " 51.9000 813.0000 10.0809\n", - " 51.9500 872.0000 10.4403\n", - " 52.0000 969.0000 11.0057\n", - " 52.0500 1120.0000 11.8322\n", - " 52.1000 1309.0000 12.7916\n", - " 52.1500 1527.0000 13.8158\n", - " 52.2000 1706.0000 14.6031\n", - " 52.2500 1856.0000 15.2315\n", - " 52.3000 1888.0000 15.3623\n", - " 52.3500 1837.0000 15.1534\n", - " 52.4000 1713.0000 14.6330\n", - " 52.4500 1500.0000 13.6931\n", - " 52.5000 1289.0000 12.6935\n", - " 52.5500 1103.0000 11.7420\n", - " 52.6000 904.0000 10.6301\n", - " 52.6500 749.0000 9.6760\n", - " 52.7000 627.0000 8.8530\n", - " 52.7500 568.0000 8.4261\n", - " 52.8000 551.0000 8.2991\n", - " 52.8500 560.0000 8.3666\n", - " 52.9000 586.0000 8.5586\n", - " 52.9500 634.0000 8.9022\n", - " 53.0000 691.0000 9.2938\n", - " 53.0500 751.0000 9.6889\n", - " 53.1000 799.0000 9.9937\n", - " 53.1500 792.0000 9.9499\n", - " 53.2000 820.0000 10.1242\n", - " 53.2500 774.0000 9.8362\n", - " 53.3000 736.0000 9.5917\n", - " 53.3500 680.0000 9.2195\n", - " 53.4000 627.0000 8.8530\n", - " 53.4500 562.0000 8.3815\n", - " 53.5000 514.0000 8.0156\n", - " 53.5500 459.0000 7.5746\n", - " 53.6000 424.0000 7.2801\n", - " 53.6500 362.0000 6.7268\n", - " 53.7000 333.0000 6.4517\n", - " 53.7500 318.0000 6.3048\n", - " 53.8000 300.0000 6.1237\n", - " 53.8500 287.0000 5.9896\n", - " 53.9000 265.0000 5.7554\n", - " 53.9500 266.0000 5.7663\n", - " 54.0000 262.0000 5.7228\n", - " 54.0500 263.0000 5.4058\n", - " 54.1000 255.0000 5.3229\n", - " 54.1500 270.0000 5.4772\n", - " 54.2000 278.0000 5.5578\n", - " 54.2500 289.0000 5.6667\n", - " 54.3000 317.0000 5.9348\n", - " 54.3500 343.0000 6.1734\n", - " 54.4000 400.0000 6.6667\n", - " 54.4500 468.0000 7.2111\n", - " 54.5000 561.0000 7.8951\n", - " 54.5500 695.0000 8.7876\n", - " 54.6000 873.0000 9.8489\n", - " 54.6500 1100.0000 11.0554\n", - " 54.7000 1372.0000 12.3468\n", - " 54.7500 1660.0000 13.5810\n", - " 54.8000 1954.0000 14.7347\n", - " 54.8500 2224.0000 15.7198\n", - " 54.9000 2400.0000 16.3299\n", - " 54.9500 2459.0000 16.5294\n", - " 55.0000 2435.0000 16.4486\n", - " 55.0500 2245.0000 15.7938\n", - " 55.1000 1986.0000 14.8549\n", - " 55.1500 1671.0000 13.6260\n", - " 55.2000 1358.0000 12.2837\n", - " 55.2500 1086.0000 10.9848\n", - " 55.3000 868.0000 9.8206\n", - " 55.3500 682.0000 8.7050\n", - " 55.4000 578.0000 8.0139\n", - " 55.4500 521.0000 7.6085\n", - " 55.5000 512.0000 7.5425\n", - " 55.5500 537.0000 7.7244\n", - " 55.6000 600.0000 8.1650\n", - " 55.6500 704.0000 8.8443\n", - " 55.7000 855.0000 9.7468\n", - " 55.7500 1032.0000 10.7083\n", - " 55.8000 1232.0000 11.7000\n", - " 55.8500 1466.0000 12.7628\n", - " 55.9000 1693.0000 13.7154\n", - " 55.9500 1866.0000 14.3991\n", - " 56.0000 1966.0000 14.7799\n", - " 56.0500 2024.0000 14.9963\n", - " 56.1000 2016.0000 14.9666\n", - " 56.1500 1846.0000 14.3217\n", - " 56.2000 1667.0000 13.6096\n", - " 56.2500 1429.0000 12.6007\n", - " 56.3000 1179.0000 11.4455\n", - " 56.3500 950.0000 10.2740\n", - " 56.4000 763.0000 9.2075\n", - " 56.4500 599.0000 8.1582\n", - " 56.5000 484.0000 7.3333\n", - " 56.5500 404.0000 6.6999\n", - " 56.6000 351.0000 6.2450\n", - " 56.6500 304.0000 5.8119\n", - " 56.7000 284.0000 5.6174\n", - " 56.7500 273.0000 5.5076\n", - " 56.8000 259.0000 5.3645\n", - " 56.8500 251.0000 5.2810\n", - " 56.9000 251.0000 5.2810\n", - " 56.9500 252.0000 5.2915\n", - " 57.0000 245.0000 5.2175\n", - " 57.0500 259.0000 5.3645\n", - " 57.1000 250.0000 5.2705\n", - " 57.1500 253.0000 5.3020\n", - " 57.2000 256.0000 5.3333\n", - " 57.2500 264.0000 5.4160\n", - " 57.3000 285.0000 5.6273\n", - " 57.3500 301.0000 5.7831\n", - " 57.4000 346.0000 6.2004\n", - " 57.4500 390.0000 6.5828\n", - " 57.5000 458.0000 7.1336\n", - " 57.5500 528.0000 7.6594\n", - " 57.6000 624.0000 8.3267\n", - " 57.6500 733.0000 9.0247\n", - " 57.7000 829.0000 9.5975\n", - " 57.7500 916.0000 10.0885\n", - " 57.8000 988.0000 10.4775\n", - " 57.8500 994.0000 10.5093\n", - " 57.9000 929.0000 10.1598\n", - " 57.9500 843.0000 9.6782\n", - " 58.0000 742.0000 9.0799\n", - " 58.0500 638.0000 8.4196\n", - " 58.1000 527.0000 7.6522\n", - " 58.1500 434.0000 6.9442\n", - " 58.2000 377.0000 6.4722\n", - " 58.2500 320.0000 5.9628\n", - " 58.3000 282.0000 5.5976\n", - " 58.3500 273.0000 5.5076\n", - " 58.4000 256.0000 5.3333\n", - " 58.4500 243.0000 5.1962\n", - " 58.5000 240.0000 5.1640\n", - " 58.5500 240.0000 5.1640\n", - " 58.6000 230.0000 5.0553\n", - " 58.6500 220.0000 4.9441\n", - " 58.7000 230.0000 5.0553\n", - " 58.7500 227.0000 5.0222\n", - " 58.8000 224.0000 4.9889\n", - " 58.8500 219.0000 4.9329\n", - " 58.9000 227.0000 5.0222\n", - " 58.9500 227.0000 5.0222\n", - " 59.0000 224.0000 4.9889\n", - " 59.0500 222.0000 4.9666\n", - " 59.1000 223.0000 4.9777\n", - " 59.1500 217.0000 4.9103\n", - " 59.2000 213.0000 4.8648\n", - " 59.2500 216.0000 4.8990\n", - " 59.3000 219.0000 4.9329\n", - " 59.3500 219.0000 4.9329\n", - " 59.4000 218.0000 4.9216\n", - " 59.4500 220.0000 4.9441\n", - " 59.5000 220.0000 4.9441\n", - " 59.5500 220.0000 4.9441\n", - " 59.6000 223.0000 4.9777\n", - " 59.6500 233.0000 5.0881\n", - " 59.7000 237.0000 5.1316\n", - " 59.7500 249.0000 5.2599\n", - " 59.8000 258.0000 5.3541\n", - " 59.8500 261.0000 5.3852\n", - " 59.9000 283.0000 5.6075\n", - " 59.9500 304.0000 5.8119\n", - " 60.0000 324.0000 5.6921\n", - " 60.0500 347.0000 5.8907\n", - " 60.1000 353.0000 5.9414\n", - " 60.1500 359.0000 5.9917\n", - " 60.2000 363.0000 6.0249\n", - " 60.2500 352.0000 5.9330\n", - " 60.3000 341.0000 5.8395\n", - " 60.3500 330.0000 5.7446\n", - " 60.4000 308.0000 5.5498\n", - " 60.4500 291.0000 5.3944\n", - " 60.5000 271.0000 5.2058\n", - " 60.5500 254.0000 5.0398\n", - " 60.6000 245.0000 4.9497\n", - " 60.6500 245.0000 4.9497\n", - " 60.7000 239.0000 4.8888\n", - " 60.7500 228.0000 4.7749\n", - " 60.8000 217.0000 4.6583\n", - " 60.8500 217.0000 4.6583\n", - " 60.9000 218.0000 4.6690\n", - " 60.9500 223.0000 4.7223\n", - " 61.0000 207.0000 4.5497\n", - " 61.0500 218.0000 4.6690\n", - " 61.1000 222.0000 4.7117\n", - " 61.1500 215.0000 4.6368\n", - " 61.2000 210.0000 4.5826\n", - " 61.2500 216.0000 4.6476\n", - " 61.3000 213.0000 4.6152\n", - " 61.3500 212.0000 4.6043\n", - " 61.4000 215.0000 4.6368\n", - " 61.4500 212.0000 4.6043\n", - " 61.5000 214.0000 4.6260\n", - " 61.5500 211.0000 4.5935\n", - " 61.6000 214.0000 4.6260\n", - " 61.6500 217.0000 4.6583\n", - " 61.7000 205.0000 4.5277\n", - " 61.7500 207.0000 4.5497\n", - " 61.8000 213.0000 4.6152\n", - " 61.8500 208.0000 4.5607\n", - " 61.9000 211.0000 4.5935\n", - " 61.9500 205.0000 4.5277\n", - " 62.0000 214.0000 4.6260\n", - " 62.0500 213.0000 4.6152\n", - " 62.1000 212.0000 4.6043\n", - " 62.1500 212.0000 4.6043\n", - " 62.2000 213.0000 4.6152\n", - " 62.2500 207.0000 4.5497\n", - " 62.3000 203.0000 4.5056\n", - " 62.3500 211.0000 4.5935\n", - " 62.4000 211.0000 4.5935\n", - " 62.4500 214.0000 4.6260\n", - " 62.5000 214.0000 4.6260\n", - " 62.5500 207.0000 4.5497\n", - " 62.6000 203.0000 4.5056\n", - " 62.6500 212.0000 4.6043\n", - " 62.7000 212.0000 4.6043\n", - " 62.7500 214.0000 4.6260\n", - " 62.8000 213.0000 4.6152\n", - " 62.8500 202.0000 4.4944\n", - " 62.9000 210.0000 4.5826\n", - " 62.9500 211.0000 4.5935\n", - " 63.0000 211.0000 4.5935\n", - " 63.0500 214.0000 4.6260\n", - " 63.1000 221.0000 4.7011\n", - " 63.1500 217.0000 4.6583\n", - " 63.2000 212.0000 4.6043\n", - " 63.2500 214.0000 4.6260\n", - " 63.3000 219.0000 4.6797\n", - " 63.3500 223.0000 4.7223\n", - " 63.4000 225.0000 4.7434\n", - " 63.4500 227.0000 4.7645\n", - " 63.5000 235.0000 4.8477\n", - " 63.5500 240.0000 4.8990\n", - " 63.6000 243.0000 4.9295\n", - " 63.6500 252.0000 5.0200\n", - " 63.7000 249.0000 4.9900\n", - " 63.7500 249.0000 4.9900\n", - " 63.8000 255.0000 5.0498\n", - " 63.8500 262.0000 5.1186\n", - " 63.9000 282.0000 5.3104\n", - " 63.9500 308.0000 5.5498\n", - " 64.0000 351.0000 5.9245\n", - " 64.0500 398.0000 6.3087\n", - " 64.1000 470.0000 6.8557\n", - " 64.1500 525.0000 7.2457\n", - " 64.2000 596.0000 7.7201\n", - " 64.2500 646.0000 8.0374\n", - " 64.3000 681.0000 8.2523\n", - " 64.3500 665.0000 8.1548\n", - " 64.4000 615.0000 7.8422\n", - " 64.4500 563.0000 7.5033\n", - " 64.5000 484.0000 6.9570\n", - " 64.5500 421.0000 6.4885\n", - " 64.6000 364.0000 6.0332\n", - " 64.6500 317.0000 5.6303\n", - " 64.7000 289.0000 5.3759\n", - " 64.7500 261.0000 5.1088\n", - " 64.8000 245.0000 4.9497\n", - " 64.8500 233.0000 4.8270\n", - " 64.9000 228.0000 4.7749\n", - " 64.9500 219.0000 4.6797\n", - " 65.0000 219.0000 4.6797\n", - " 65.0500 217.0000 4.6583\n", - " 65.1000 216.0000 4.6476\n", - " 65.1500 221.0000 4.7011\n", - " 65.2000 215.0000 4.6368\n", - " 65.2500 215.0000 4.6368\n", - " 65.3000 210.0000 4.5826\n", - " 65.3500 212.0000 4.6043\n", - " 65.4000 212.0000 4.6043\n", - " 65.4500 204.0000 4.5166\n", - " 65.5000 209.0000 4.5717\n", - " 65.5500 206.0000 4.5387\n", - " 65.6000 216.0000 4.6476\n", - " 65.6500 207.0000 4.5497\n", - " 65.7000 214.0000 4.6260\n", - " 65.7500 207.0000 4.5497\n", - " 65.8000 209.0000 4.5717\n", - " 65.8500 218.0000 4.6690\n", - " 65.9000 215.0000 4.6368\n", - " 65.9500 222.0000 4.7117\n", - " 66.0000 226.0000 4.7539\n", - " 66.0500 230.0000 4.7958\n", - " 66.1000 239.0000 4.8888\n", - " 66.1500 249.0000 4.9900\n", - " 66.2000 263.0000 5.1284\n", - " 66.2500 275.0000 5.2440\n", - " 66.3000 292.0000 5.4037\n", - " 66.3500 317.0000 5.6303\n", - " 66.4000 323.0000 5.6833\n", - " 66.4500 341.0000 5.8395\n", - " 66.5000 350.0000 5.9161\n", - " 66.5500 330.0000 5.7446\n", - " 66.6000 320.0000 5.6569\n", - " 66.6500 307.0000 5.5408\n", - " 66.7000 284.0000 5.3292\n", - " 66.7500 275.0000 5.2440\n", - " 66.8000 265.0000 5.1478\n", - " 66.8500 269.0000 5.1865\n", - " 66.9000 275.0000 5.2440\n", - " 66.9500 292.0000 5.4037\n", - " 67.0000 311.0000 5.5767\n", - " 67.0500 338.0000 5.8138\n", - " 67.1000 387.0000 6.2209\n", - " 67.1500 413.0000 6.4265\n", - " 67.2000 463.0000 6.8044\n", - " 67.2500 510.0000 7.1414\n", - " 67.3000 534.0000 7.3075\n", - " 67.3500 559.0000 7.4766\n", - " 67.4000 539.0000 7.3417\n", - " 67.4500 533.0000 7.3007\n", - " 67.5000 500.0000 7.0711\n", - " 67.5500 471.0000 6.8629\n", - " 67.6000 455.0000 6.7454\n", - " 67.6500 410.0000 6.4031\n", - " 67.7000 373.0000 6.1074\n", - " 67.7500 342.0000 5.8481\n", - " 67.8000 307.0000 5.5408\n", - " 67.8500 288.0000 5.3666\n", - " 67.9000 286.0000 5.3479\n", - " 67.9500 281.0000 5.3009\n", - " 68.0000 292.0000 5.4037\n", - " 68.0500 291.0000 5.3944\n", - " 68.1000 312.0000 5.5857\n", - " 68.1500 326.0000 5.7096\n", - " 68.2000 336.0000 5.7966\n", - " 68.2500 346.0000 5.8822\n", - " 68.3000 341.0000 5.8395\n", - " 68.3500 327.0000 5.7184\n", - " 68.4000 305.0000 5.5227\n", - " 68.4500 277.0000 5.2631\n", - " 68.5000 267.0000 5.1672\n", - " 68.5500 249.0000 4.9900\n", - " 68.6000 229.0000 4.7854\n", - " 68.6500 221.0000 4.7011\n", - " 68.7000 220.0000 4.6904\n", - " 68.7500 217.0000 4.6583\n", - " 68.8000 211.0000 4.5935\n", - " 68.8500 204.0000 4.5166\n", - " 68.9000 203.0000 4.5056\n", - " 68.9500 220.0000 4.6904\n", - " 69.0000 217.0000 4.6583\n", - " 69.0500 217.0000 4.6583\n", - " 69.1000 214.0000 4.6260\n", - " 69.1500 205.0000 4.5277\n", - " 69.2000 205.0000 4.5277\n", - " 69.2500 211.0000 4.5935\n", - " 69.3000 206.0000 4.5387\n", - " 69.3500 208.0000 4.5607\n", - " 69.4000 201.0000 4.4833\n", - " 69.4500 208.0000 4.5607\n", - " 69.5000 214.0000 4.6260\n", - " 69.5500 212.0000 4.6043\n", - " 69.6000 206.0000 4.5387\n", - " 69.6500 216.0000 4.6476\n", - " 69.7000 219.0000 4.6797\n", - " 69.7500 215.0000 4.6368\n", - " 69.8000 217.0000 4.6583\n", - " 69.8500 211.0000 4.5935\n", - " 69.9000 214.0000 4.6260\n", - " 69.9500 215.0000 4.6368\n", - " 70.0000 224.0000 4.7329\n", - " 70.0500 217.0000 4.6583\n", - " 70.1000 215.0000 4.6368\n", - " 70.1500 218.0000 4.6690\n", - " 70.2000 218.0000 4.6690\n", - " 70.2500 228.0000 4.7749\n", - " 70.3000 227.0000 4.7645\n", - " 70.3500 228.0000 4.7749\n", - " 70.4000 225.0000 4.7434\n", - " 70.4500 219.0000 4.6797\n", - " 70.5000 216.0000 4.6476\n", - " 70.5500 219.0000 4.6797\n", - " 70.6000 218.0000 4.6690\n", - " 70.6500 214.0000 4.6260\n", - " 70.7000 212.0000 4.6043\n", - " 70.7500 221.0000 4.7011\n", - " 70.8000 214.0000 4.6260\n", - " 70.8500 208.0000 4.5607\n", - " 70.9000 204.0000 4.5166\n", - " 70.9500 209.0000 4.5717\n", - " 71.0000 209.0000 4.5717\n", - " 71.0500 208.0000 4.5607\n", - " 71.1000 212.0000 4.6043\n", - " 71.1500 213.0000 4.6152\n", - " 71.2000 218.0000 4.6690\n", - " 71.2500 212.0000 4.6043\n", - " 71.3000 205.0000 4.5277\n", - " 71.3500 207.0000 4.5497\n", - " 71.4000 204.0000 4.5166\n", - " 71.4500 206.0000 4.5387\n", - " 71.5000 211.0000 4.5935\n", - " 71.5500 216.0000 4.6476\n", - " 71.6000 214.0000 4.6260\n", - " 71.6500 210.0000 4.5826\n", - " 71.7000 219.0000 4.6797\n", - " 71.7500 222.0000 4.7117\n", - " 71.8000 224.0000 4.7329\n", - " 71.8500 231.0000 4.8062\n", - " 71.9000 227.0000 4.7645\n", - " 71.9500 237.0000 4.8683\n", - " 72.0000 235.0000 4.8477\n", - " 72.0500 238.0000 4.8785\n", - " 72.1000 245.0000 4.9497\n", - " 72.1500 242.0000 4.9193\n", - " 72.2000 248.0000 4.9800\n", - " 72.2500 246.0000 4.9598\n", - " 72.3000 243.0000 4.9295\n", - " 72.3500 253.0000 5.0299\n", - " 72.4000 259.0000 5.0892\n", - " 72.4500 278.0000 5.2726\n", - " 72.5000 281.0000 5.3009\n", - " 72.5500 297.0000 5.4498\n", - " 72.6000 310.0000 5.5678\n", - " 72.6500 324.0000 5.6921\n", - " 72.7000 322.0000 5.6745\n", - " 72.7500 311.0000 5.5767\n", - " 72.8000 295.0000 5.4314\n", - " 72.8500 281.0000 5.3009\n", - " 72.9000 259.0000 5.0892\n", - " 72.9500 250.0000 5.0000\n", - " 73.0000 239.0000 4.8888\n", - " 73.0500 233.0000 4.8270\n", - " 73.1000 227.0000 4.7645\n", - " 73.1500 226.0000 4.7539\n", - " 73.2000 223.0000 4.7223\n", - " 73.2500 211.0000 4.5935\n", - " 73.3000 209.0000 4.5717\n", - " 73.3500 217.0000 4.6583\n", - " 73.4000 214.0000 4.6260\n", - " 73.4500 213.0000 4.6152\n", - " 73.5000 217.0000 4.6583\n", - " 73.5500 220.0000 4.6904\n", - " 73.6000 210.0000 4.5826\n", - " 73.6500 209.0000 4.5717\n", - " 73.7000 215.0000 4.6368\n", - " 73.7500 218.0000 4.6690\n", - " 73.8000 215.0000 4.6368\n", - " 73.8500 217.0000 4.6583\n", - " 73.9000 221.0000 4.7011\n", - " 73.9500 217.0000 4.6583\n", - " 74.0000 219.0000 4.6797\n", - " 74.0500 220.0000 4.6904\n", - " 74.1000 228.0000 4.7749\n", - " 74.1500 229.0000 4.7854\n", - " 74.2000 230.0000 4.7958\n", - " 74.2500 234.0000 4.8374\n", - " 74.3000 251.0000 5.0100\n", - " 74.3500 261.0000 5.1088\n", - " 74.4000 288.0000 5.3666\n", - " 74.4500 313.0000 5.5946\n", - " 74.5000 362.0000 6.0166\n", - " 74.5500 424.0000 6.5115\n", - " 74.6000 524.0000 7.2388\n", - " 74.6500 646.0000 8.0374\n", - " 74.7000 781.0000 8.8374\n", - " 74.7500 920.0000 9.5917\n", - " 74.8000 1024.0000 10.1193\n", - " 74.8500 1120.0000 10.5830\n", - " 74.9000 1187.0000 10.8950\n", - " 74.9500 1187.0000 10.8950\n", - " 75.0000 1166.0000 10.7981\n", - " 75.0500 1114.0000 10.5546\n", - " 75.1000 1044.0000 10.2176\n", - " 75.1500 991.0000 9.9549\n", - " 75.2000 927.0000 9.6281\n", - " 75.2500 823.0000 9.0719\n", - " 75.3000 717.0000 8.4676\n", - " 75.3500 619.0000 7.8677\n", - " 75.4000 520.0000 7.2111\n", - " 75.4500 421.0000 6.4885\n", - " 75.5000 353.0000 5.9414\n", - " 75.5500 308.0000 5.5498\n", - " 75.6000 273.0000 5.2249\n", - " 75.6500 256.0000 5.0596\n", - " 75.7000 245.0000 4.9497\n", - " 75.7500 234.0000 4.8374\n", - " 75.8000 230.0000 4.7958\n", - " 75.8500 224.0000 4.7329\n", - " 75.9000 232.0000 4.8166\n", - " 75.9500 226.0000 4.7539\n", - " 76.0000 222.0000 4.7117\n", - " 76.0500 222.0000 4.7117\n", - " 76.1000 227.0000 4.7645\n", - " 76.1500 225.0000 4.7434\n", - " 76.2000 226.0000 4.7539\n", - " 76.2500 227.0000 4.7645\n", - " 76.3000 229.0000 4.7854\n", - " 76.3500 235.0000 4.8477\n", - " 76.4000 233.0000 4.8270\n", - " 76.4500 243.0000 4.9295\n", - " 76.5000 238.0000 4.8785\n", - " 76.5500 237.0000 4.8683\n", - " 76.6000 236.0000 4.8580\n", - " 76.6500 232.0000 4.8166\n", - " 76.7000 231.0000 4.8062\n", - " 76.7500 227.0000 4.7645\n", - " 76.8000 225.0000 4.7434\n", - " 76.8500 220.0000 4.6904\n", - " 76.9000 218.0000 4.6690\n", - " 76.9500 215.0000 4.6368\n", - " 77.0000 219.0000 4.6797\n", - " 77.0500 224.0000 4.7329\n", - " 77.1000 225.0000 4.7434\n", - " 77.1500 222.0000 4.7117\n", - " 77.2000 231.0000 4.8062\n", - " 77.2500 243.0000 4.9295\n", - " 77.3000 250.0000 5.0000\n", - " 77.3500 269.0000 5.1865\n", - " 77.4000 286.0000 5.3479\n", - " 77.4500 310.0000 5.5678\n", - " 77.5000 325.0000 5.7009\n", - " 77.5500 332.0000 5.7619\n", - " 77.6000 337.0000 5.8052\n", - " 77.6500 329.0000 5.7359\n", - " 77.7000 303.0000 5.5045\n", - " 77.7500 278.0000 5.2726\n", - " 77.8000 268.0000 5.1769\n", - " 77.8500 252.0000 5.0200\n", - " 77.9000 236.0000 4.8580\n", - " 77.9500 228.0000 4.7749\n", - " 78.0000 219.0000 4.6797\n", - " 78.0500 225.0000 4.7434\n", - " 78.1000 222.0000 4.7117\n", - " 78.1500 214.0000 4.6260\n", - " 78.2000 228.0000 4.7749\n", - " 78.2500 221.0000 4.7011\n", - " 78.3000 217.0000 4.6583\n", - " 78.3500 221.0000 4.7011\n", - " 78.4000 222.0000 4.7117\n", - " 78.4500 226.0000 4.7539\n", - " 78.5000 237.0000 4.8683\n", - " 78.5500 246.0000 4.9598\n", - " 78.6000 255.0000 5.0498\n", - " 78.6500 269.0000 5.1865\n", - " 78.7000 284.0000 5.3292\n", - " 78.7500 302.0000 5.4955\n", - " 78.8000 313.0000 5.5946\n", - " 78.8500 327.0000 5.7184\n", - " 78.9000 321.0000 5.6657\n", - " 78.9500 333.0000 5.7706\n", - " 79.0000 331.0000 5.7533\n", - " 79.0500 332.0000 5.7619\n", - " 79.1000 358.0000 5.9833\n", - " 79.1500 402.0000 6.3403\n", - " 79.2000 460.0000 6.7823\n", - " 79.2500 557.0000 7.4632\n", - " 79.3000 660.0000 8.1240\n", - " 79.3500 769.0000 8.7693\n", - " 79.4000 859.0000 9.2682\n", - " 79.4500 934.0000 9.6644\n", - " 79.5000 955.0000 9.7724\n", - " 79.5500 921.0000 9.5969\n", - " 79.6000 824.0000 9.0774\n", - " 79.6500 694.0000 8.3307\n", - " 79.7000 578.0000 7.6026\n", - " 79.7500 474.0000 6.8848\n", - " 79.8000 402.0000 6.3403\n", - " 79.8500 344.0000 5.8652\n", - " 79.9000 306.0000 5.5317\n", - " 79.9500 300.0000 5.4772\n", - " 80.0000 292.0000 5.4037\n", - " 80.0500 292.0000 5.4037\n", - " 80.1000 302.0000 5.4955\n", - " 80.1500 304.0000 5.5136\n", - " 80.2000 306.0000 5.5317\n", - " 80.2500 305.0000 5.5227\n", - " 80.3000 303.0000 5.5045\n", - " 80.3500 299.0000 5.4681\n", - " 80.4000 278.0000 5.2726\n", - " 80.4500 259.0000 5.0892\n", - " 80.5000 257.0000 5.0695\n", - " 80.5500 245.0000 4.9497\n", - " 80.6000 237.0000 4.8683\n", - " 80.6500 240.0000 4.8990\n", - " 80.7000 233.0000 4.8270\n", - " 80.7500 232.0000 4.8166\n", - " 80.8000 235.0000 4.8477\n", - " 80.8500 241.0000 4.9092\n", - " 80.9000 257.0000 5.0695\n", - " 80.9500 274.0000 5.2345\n", - " 81.0000 292.0000 5.4037\n", - " 81.0500 309.0000 5.5588\n", - " 81.1000 333.0000 5.7706\n", - " 81.1500 360.0000 6.0000\n", - " 81.2000 381.0000 6.1725\n", - " 81.2500 387.0000 6.2209\n", - " 81.3000 387.0000 6.2209\n", - " 81.3500 386.0000 6.2129\n", - " 81.4000 382.0000 6.1806\n", - " 81.4500 368.0000 6.0663\n", - " 81.5000 363.0000 6.0249\n", - " 81.5500 352.0000 5.9330\n", - " 81.6000 337.0000 5.8052\n", - " 81.6500 321.0000 5.6657\n", - " 81.7000 297.0000 5.4498\n", - " 81.7500 281.0000 5.3009\n", - " 81.8000 265.0000 5.1478\n", - " 81.8500 255.0000 5.0498\n", - " 81.9000 251.0000 5.0100\n", - " 81.9500 237.0000 4.8683\n", - " 82.0000 238.0000 4.8785\n", - " 82.0500 237.0000 4.8683\n", - " 82.1000 228.0000 4.7749\n", - " 82.1500 240.0000 4.8990\n", - " 82.2000 234.0000 4.8374\n", - " 82.2500 226.0000 4.7539\n", - " 82.3000 229.0000 4.7854\n", - " 82.3500 228.0000 4.7749\n", - " 82.4000 233.0000 4.8270\n", - " 82.4500 243.0000 4.9295\n", - " 82.5000 241.0000 4.9092\n", - " 82.5500 257.0000 5.0695\n", - " 82.6000 279.0000 5.2820\n", - " 82.6500 305.0000 5.5227\n", - " 82.7000 345.0000 5.8737\n", - " 82.7500 410.0000 6.4031\n", - " 82.8000 455.0000 6.7454\n", - " 82.8500 545.0000 7.3824\n", - " 82.9000 622.0000 7.8867\n", - " 82.9500 673.0000 8.2037\n", - " 83.0000 725.0000 8.5147\n", - " 83.0500 717.0000 8.4676\n", - " 83.1000 661.0000 8.1302\n", - " 83.1500 592.0000 7.6942\n", - " 83.2000 518.0000 7.1972\n", - " 83.2500 443.0000 6.6558\n", - " 83.3000 371.0000 6.0910\n", - " 83.3500 336.0000 5.7966\n", - " 83.4000 290.0000 5.3852\n", - " 83.4500 265.0000 5.1478\n", - " 83.5000 252.0000 5.0200\n", - " 83.5500 250.0000 5.0000\n", - " 83.6000 244.0000 4.9396\n", - " 83.6500 242.0000 4.9193\n", - " 83.7000 241.0000 4.9092\n", - " 83.7500 243.0000 4.9295\n", - " 83.8000 248.0000 4.9800\n", - " 83.8500 253.0000 5.0299\n", - " 83.9000 252.0000 5.0200\n", - " 83.9500 264.0000 5.1381\n", - " 84.0000 266.0000 5.1575\n", - " 84.0500 282.0000 5.3104\n", - " 84.1000 291.0000 5.3944\n", - " 84.1500 313.0000 5.5946\n", - " 84.2000 346.0000 5.8822\n", - " 84.2500 374.0000 6.1156\n", - " 84.3000 415.0000 6.4420\n", - " 84.3500 430.0000 6.5574\n", - " 84.4000 433.0000 6.5803\n", - " 84.4500 430.0000 6.5574\n", - " 84.5000 406.0000 6.3718\n", - " 84.5500 384.0000 6.1968\n", - " 84.6000 349.0000 5.9076\n", - " 84.6500 318.0000 5.6391\n", - " 84.7000 307.0000 5.5408\n", - " 84.7500 298.0000 5.4589\n", - " 84.8000 296.0000 5.4406\n", - " 84.8500 304.0000 5.5136\n", - " 84.9000 313.0000 5.5946\n", - " 84.9500 328.0000 5.7271\n", - " 85.0000 346.0000 5.8822\n", - " 85.0500 341.0000 5.8395\n", - " 85.1000 335.0000 5.7879\n", - " 85.1500 324.0000 5.6921\n", - " 85.2000 336.0000 5.7966\n", - " 85.2500 341.0000 5.8395\n", - " 85.3000 341.0000 5.8395\n", - " 85.3500 370.0000 6.0828\n", - " 85.4000 414.0000 6.4343\n", - " 85.4500 442.0000 6.6483\n", - " 85.5000 490.0000 7.0000\n", - " 85.5500 520.0000 7.2111\n", - " 85.6000 532.0000 7.2938\n", - " 85.6500 548.0000 7.4027\n", - " 85.7000 561.0000 7.4900\n", - " 85.7500 567.0000 7.5299\n", - " 85.8000 585.0000 7.6485\n", - " 85.8500 584.0000 7.6420\n", - " 85.9000 558.0000 7.4699\n", - " 85.9500 527.0000 7.2595\n", - " 86.0000 481.0000 6.9354\n", - " 86.0500 424.0000 6.5115\n", - " 86.1000 370.0000 6.0828\n", - " 86.1500 333.0000 5.7706\n", - " 86.2000 312.0000 5.5857\n", - " 86.2500 301.0000 5.4863\n", - " 86.3000 307.0000 5.5408\n", - " 86.3500 314.0000 5.6036\n", - " 86.4000 340.0000 5.8310\n", - " 86.4500 379.0000 6.1563\n", - " 86.5000 427.0000 6.5345\n", - " 86.5500 467.0000 6.8337\n", - " 86.6000 535.0000 7.3144\n", - " 86.6500 584.0000 7.6420\n", - " 86.7000 602.0000 7.7589\n", - " 86.7500 580.0000 7.6158\n", - " 86.8000 532.0000 7.2938\n", - " 86.8500 481.0000 6.9354\n", - " 86.9000 426.0000 6.5269\n", - " 86.9500 379.0000 6.1563\n", - " 87.0000 329.0000 5.7359\n", - " 87.0500 303.0000 5.5045\n", - " 87.1000 288.0000 5.3666\n", - " 87.1500 271.0000 5.2058\n", - " 87.2000 269.0000 5.1865\n", - " 87.2500 267.0000 5.1672\n", - " 87.3000 263.0000 5.1284\n", - " 87.3500 267.0000 5.1672\n", - " 87.4000 260.0000 5.0990\n", - " 87.4500 260.0000 5.0990\n", - " 87.5000 263.0000 5.1284\n", - " 87.5500 263.0000 5.1284\n", - " 87.6000 270.0000 5.1962\n", - " 87.6500 278.0000 5.2726\n", - " 87.7000 293.0000 5.4129\n", - " 87.7500 318.0000 5.6391\n", - " 87.8000 364.0000 6.0332\n", - " 87.8500 424.0000 6.5115\n", - " 87.9000 512.0000 7.1554\n", - " 87.9500 643.0000 8.0187\n", - " 88.0000 817.0000 9.0388\n", - " 88.0500 982.0000 9.9096\n", - " 88.1000 1163.0000 10.7842\n", - " 88.1500 1289.0000 11.3534\n", - " 88.2000 1373.0000 11.7175\n", - " 88.2500 1393.0000 11.8025\n", - " 88.3000 1348.0000 11.6103\n", - " 88.3500 1244.0000 11.1535\n", - " 88.4000 1157.0000 10.7564\n", - " 88.4500 1077.0000 10.3779\n", - " 88.5000 1020.0000 10.0995\n", - " 88.5500 965.0000 9.8234\n", - " 88.6000 907.0000 9.5237\n", - " 88.6500 858.0000 9.2628\n", - " 88.7000 771.0000 8.7807\n", - " 88.7500 647.0000 8.0436\n", - " 88.8000 555.0000 7.4498\n", - " 88.8500 468.0000 6.8411\n", - " 88.9000 405.0000 6.3640\n", - " 88.9500 348.0000 5.8992\n", - " 89.0000 316.0000 5.6214\n", - " 89.0500 291.0000 5.3944\n", - " 89.1000 277.0000 5.2631\n", - " 89.1500 278.0000 5.2726\n", - " 89.2000 270.0000 5.1962\n", - " 89.2500 262.0000 5.1186\n", - " 89.3000 268.0000 5.1769\n", - " 89.3500 270.0000 5.1962\n", - " 89.4000 279.0000 5.2820\n", - " 89.4500 287.0000 5.3572\n", - " 89.5000 300.0000 5.4772\n", - " 89.5500 319.0000 5.6480\n", - " 89.6000 347.0000 5.8907\n", - " 89.6500 378.0000 6.1482\n", - " 89.7000 420.0000 6.4807\n", - " 89.7500 469.0000 6.8484\n", - " 89.8000 536.0000 7.3212\n", - " 89.8500 645.0000 8.0312\n", - " 89.9000 773.0000 8.7920\n", - " 89.9500 925.0000 9.6177\n", - " 90.0000 1115.0000 10.5594\n", - " 90.0500 1254.0000 11.1982\n", - " 90.1000 1367.0000 11.6919\n", - " 90.1500 1400.0000 11.8322\n", - " 90.2000 1327.0000 11.5195\n", - " 90.2500 1188.0000 10.8995\n", - " 90.3000 1038.0000 10.1882\n", - " 90.3500 879.0000 9.3755\n", - " 90.4000 738.0000 8.5907\n", - " 90.4500 644.0000 8.0250\n", - " 90.5000 594.0000 7.7071\n", - " 90.5500 601.0000 7.7524\n", - " 90.6000 643.0000 8.0187\n", - " 90.6500 697.0000 8.3487\n", - " 90.7000 786.0000 8.8657\n", - " 90.7500 842.0000 9.1761\n", - " 90.8000 847.0000 9.2033\n", - " 90.8500 791.0000 8.8938\n", - " 90.9000 702.0000 8.3785\n", - " 90.9500 592.0000 7.6942\n", - " 91.0000 508.0000 7.1274\n", - " 91.0500 418.0000 6.4653\n", - " 91.1000 362.0000 6.0166\n", - " 91.1500 328.0000 5.7271\n", - " 91.2000 299.0000 5.4681\n", - " 91.2500 279.0000 5.2820\n", - " 91.3000 270.0000 5.1962\n", - " 91.3500 257.0000 5.0695\n", - " 91.4000 253.0000 5.0299\n", - " 91.4500 258.0000 5.0794\n", - " 91.5000 257.0000 5.0695\n", - " 91.5500 249.0000 4.9900\n", - " 91.6000 245.0000 4.9497\n", - " 91.6500 257.0000 5.0695\n", - " 91.7000 260.0000 5.0990\n", - " 91.7500 284.0000 5.3292\n", - " 91.8000 296.0000 5.4406\n", - " 91.8500 322.0000 5.6745\n", - " 91.9000 343.0000 5.8566\n", - " 91.9500 382.0000 6.1806\n", - " 92.0000 405.0000 6.3640\n", - " 92.0500 411.0000 6.4109\n", - " 92.1000 416.0000 6.4498\n", - " 92.1500 406.0000 6.3718\n", - " 92.2000 372.0000 6.0992\n", - " 92.2500 353.0000 5.9414\n", - " 92.3000 330.0000 5.7446\n", - " 92.3500 317.0000 5.6303\n", - " 92.4000 313.0000 5.5946\n", - " 92.4500 312.0000 5.5857\n", - " 92.5000 309.0000 5.5588\n", - " 92.5500 303.0000 5.5045\n", - " 92.6000 288.0000 5.3666\n", - " 92.6500 276.0000 5.2536\n", - " 92.7000 264.0000 5.1381\n", - " 92.7500 246.0000 4.9598\n", - " 92.8000 249.0000 4.9900\n", - " 92.8500 241.0000 4.9092\n", - " 92.9000 251.0000 5.0100\n", - " 92.9500 243.0000 4.9295\n", - " 93.0000 246.0000 4.9598\n", - " 93.0500 246.0000 4.9598\n", - " 93.1000 249.0000 4.9900\n", - " 93.1500 244.0000 4.9396\n", - " 93.2000 252.0000 5.0200\n", - " 93.2500 252.0000 5.0200\n", - " 93.3000 258.0000 5.0794\n", - " 93.3500 265.0000 5.1478\n", - " 93.4000 263.0000 5.1284\n", - " 93.4500 284.0000 5.3292\n", - " 93.5000 299.0000 5.4681\n", - " 93.5500 320.0000 5.6569\n", - " 93.6000 344.0000 5.8652\n", - " 93.6500 363.0000 6.0249\n", - " 93.7000 372.0000 6.0992\n", - " 93.7500 358.0000 5.9833\n", - " 93.8000 351.0000 5.9245\n", - " 93.8500 354.0000 5.9498\n", - " 93.9000 330.0000 5.7446\n", - " 93.9500 322.0000 5.6745\n", - " 94.0000 334.0000 5.7793\n", - " 94.0500 339.0000 5.8224\n", - " 94.1000 345.0000 5.8737\n", - " 94.1500 357.0000 5.9749\n", - " 94.2000 360.0000 6.0000\n", - " 94.2500 358.0000 5.9833\n", - " 94.3000 372.0000 6.0992\n", - " 94.3500 425.0000 6.5192\n", - " 94.4000 511.0000 7.1484\n", - " 94.4500 626.0000 7.9120\n", - " 94.5000 770.0000 8.7750\n", - " 94.5500 946.0000 9.7263\n", - " 94.6000 1118.0000 10.5736\n", - " 94.6500 1205.0000 10.9772\n", - " 94.7000 1227.0000 11.0770\n", - " 94.7500 1157.0000 10.7564\n", - " 94.8000 1041.0000 10.2029\n", - " 94.8500 873.0000 9.3434\n", - " 94.9000 715.0000 8.4558\n", - " 94.9500 562.0000 7.4967\n", - " 95.0000 446.0000 6.6783\n", - " 95.0500 377.0000 6.1400\n", - " 95.1000 332.0000 5.7619\n", - " 95.1500 297.0000 5.4498\n", - " 95.2000 282.0000 5.3104\n", - " 95.2500 276.0000 5.2536\n", - " 95.3000 264.0000 5.1381\n", - " 95.3500 261.0000 5.1088\n", - " 95.4000 266.0000 5.1575\n", - " 95.4500 261.0000 5.1088\n", - " 95.5000 253.0000 5.0299\n", - " 95.5500 258.0000 5.0794\n", - " 95.6000 262.0000 5.1186\n", - " 95.6500 260.0000 5.0990\n", - " 95.7000 283.0000 5.3198\n", - " 95.7500 307.0000 5.5408\n", - " 95.8000 344.0000 5.8652\n", - " 95.8500 402.0000 6.3403\n", - " 95.9000 453.0000 6.7305\n", - " 95.9500 529.0000 7.2732\n", - " 96.0000 604.0000 7.7717\n", - " 96.0500 661.0000 8.1302\n", - " 96.1000 672.0000 8.1976\n", - " 96.1500 629.0000 7.9310\n", - " 96.2000 588.0000 7.6681\n", - " 96.2500 510.0000 7.1414\n", - " 96.3000 440.0000 6.6332\n", - " 96.3500 377.0000 6.1400\n", - " 96.4000 330.0000 5.7446\n", - " 96.4500 301.0000 5.4863\n", - " 96.5000 280.0000 5.2915\n", - " 96.5500 269.0000 5.1865\n", - " 96.6000 258.0000 5.0794\n", - " 96.6500 252.0000 5.0200\n", - " 96.7000 251.0000 5.0100\n", - " 96.7500 252.0000 5.0200\n", - " 96.8000 256.0000 5.0596\n", - " 96.8500 253.0000 5.0299\n", - " 96.9000 253.0000 5.0299\n", - " 96.9500 253.0000 5.0299\n", - " 97.0000 262.0000 5.1186\n", - " 97.0500 265.0000 5.1478\n", - " 97.1000 284.0000 5.3292\n", - " 97.1500 291.0000 5.3944\n", - " 97.2000 323.0000 5.6833\n", - " 97.2500 374.0000 6.1156\n", - " 97.3000 431.0000 6.5651\n", - " 97.3500 511.0000 7.1484\n", - " 97.4000 602.0000 7.7589\n", - " 97.4500 678.0000 8.2341\n", - " 97.5000 743.0000 8.6197\n", - " 97.5500 756.0000 8.6948\n", - " 97.6000 717.0000 8.4676\n", - " 97.6500 657.0000 8.1056\n", - " 97.7000 581.0000 7.6223\n", - " 97.7500 490.0000 7.0000\n", - " 97.8000 418.0000 6.4653\n", - " 97.8500 364.0000 6.0332\n", - " 97.9000 335.0000 5.7879\n", - " 97.9500 306.0000 5.5317\n", - " 98.0000 290.0000 5.3852\n", - " 98.0500 286.0000 5.3479\n", - " 98.1000 283.0000 5.3198\n", - " 98.1500 283.0000 5.3198\n", - " 98.2000 274.0000 5.2345\n", - " 98.2500 262.0000 5.1186\n", - " 98.3000 266.0000 5.1575\n", - " 98.3500 261.0000 5.1088\n", - " 98.4000 261.0000 5.1088\n", - " 98.4500 264.0000 5.1381\n", - " 98.5000 269.0000 5.1865\n", - " 98.5500 278.0000 5.2726\n", - " 98.6000 288.0000 5.3666\n", - " 98.6500 306.0000 5.5317\n", - " 98.7000 319.0000 5.6480\n", - " 98.7500 330.0000 5.7446\n", - " 98.8000 343.0000 5.8566\n", - " 98.8500 341.0000 5.8395\n", - " 98.9000 325.0000 5.7009\n", - " 98.9500 318.0000 5.6391\n", - " 99.0000 298.0000 5.4589\n", - " 99.0500 299.0000 5.4681\n", - " 99.1000 288.0000 5.3666\n", - " 99.1500 309.0000 5.5588\n", - " 99.2000 344.0000 5.8652\n", - " 99.2500 382.0000 6.1806\n", - " 99.3000 422.0000 6.4962\n", - " 99.3500 470.0000 6.8557\n", - " 99.4000 512.0000 7.1554\n", - " 99.4500 514.0000 7.1694\n", - " 99.5000 515.0000 7.1764\n", - " 99.5500 488.0000 6.9857\n", - " 99.6000 440.0000 6.6332\n", - " 99.6500 396.0000 6.2929\n", - " 99.7000 366.0000 6.0498\n", - " 99.7500 332.0000 5.7619\n", - " 99.8000 311.0000 5.5767\n", - " 99.8500 305.0000 5.5227\n", - " 99.9000 300.0000 5.4772\n", - " 99.9500 293.0000 5.4129\n", - " 100.0000 286.0000 5.3479\n", - " 100.0500 306.0000 5.5317\n", - " 100.1000 313.0000 5.5946\n", - " 100.1500 317.0000 5.6303\n", - " 100.2000 327.0000 5.7184\n", - " 100.2500 343.0000 5.8566\n", - " 100.3000 330.0000 5.7446\n", - " 100.3500 320.0000 5.6569\n", - " 100.4000 307.0000 5.5408\n", - " 100.4500 298.0000 5.4589\n", - " 100.5000 282.0000 5.3104\n", - " 100.5500 274.0000 5.2345\n", - " 100.6000 266.0000 5.1575\n", - " 100.6500 274.0000 5.2345\n", - " 100.7000 271.0000 5.2058\n", - " 100.7500 274.0000 5.2345\n", - " 100.8000 290.0000 5.3852\n", - " 100.8500 302.0000 5.4955\n", - " 100.9000 321.0000 5.6657\n", - " 100.9500 350.0000 5.9161\n", - " 101.0000 367.0000 6.0581\n", - " 101.0500 386.0000 6.2129\n", - " 101.1000 394.0000 6.2769\n", - " 101.1500 370.0000 6.0828\n", - " 101.2000 356.0000 5.9666\n", - " 101.2500 332.0000 5.7619\n", - " 101.3000 310.0000 5.5678\n", - " 101.3500 288.0000 5.3666\n", - " 101.4000 279.0000 5.2820\n", - " 101.4500 281.0000 5.3009\n", - " 101.5000 274.0000 5.2345\n", - " 101.5500 284.0000 5.3292\n", - " 101.6000 280.0000 5.2915\n", - " 101.6500 270.0000 5.1962\n", - " 101.7000 278.0000 5.2726\n", - " 101.7500 269.0000 5.1865\n", - " 101.8000 273.0000 5.2249\n", - " 101.8500 268.0000 5.1769\n", - " 101.9000 267.0000 5.1672\n", - " 101.9500 265.0000 5.1478\n", - " 102.0000 257.0000 5.3437\n", - " 102.0500 258.0000 5.3541\n", - " 102.1000 267.0000 5.4467\n", - " 102.1500 267.0000 5.4467\n", - " 102.2000 277.0000 5.5478\n", - " 102.2500 287.0000 5.6470\n", - " 102.3000 302.0000 5.7927\n", - " 102.3500 332.0000 6.0736\n", - " 102.4000 360.0000 6.3246\n", - " 102.4500 411.0000 6.7577\n", - " 102.5000 457.0000 7.1259\n", - " 102.5500 524.0000 7.6303\n", - " 102.6000 608.0000 8.2192\n", - " 102.6500 699.0000 8.8129\n", - " 102.7000 861.0000 9.7809\n", - " 102.7500 1096.0000 11.0353\n", - " 102.8000 1377.0000 12.3693\n", - " 102.8500 1685.0000 13.6829\n", - " 102.9000 1901.0000 14.5335\n", - " 102.9500 2069.0000 15.1621\n", - " 103.0000 2016.0000 14.9666\n", - " 103.0500 1800.0000 14.1421\n", - " 103.1000 1500.0000 12.9099\n", - " 103.1500 1181.0000 11.4552\n", - " 103.2000 937.0000 10.2035\n", - " 103.2500 728.0000 8.9938\n", - " 103.3000 629.0000 8.3600\n", - " 103.3500 576.0000 8.0000\n", - " 103.4000 556.0000 7.8599\n", - " 103.4500 535.0000 7.7100\n", - " 103.5000 519.0000 7.5939\n", - " 103.5500 486.0000 7.3485\n", - " 103.6000 465.0000 7.1880\n", - " 103.6500 429.0000 6.9041\n", - " 103.7000 385.0000 6.5405\n", - " 103.7500 361.0000 6.3333\n", - " 103.8000 342.0000 6.1644\n", - " 103.8500 312.0000 5.8878\n", - " 103.9000 293.0000 5.7057\n", - " 103.9500 279.0000 5.5678\n", - " 104.0000 277.0000 5.5478\n", - " 104.0500 265.0000 5.4263\n", - " 104.1000 257.0000 5.3437\n", - " 104.1500 256.0000 5.3333\n", - " 104.2000 250.0000 5.2705\n", - " 104.2500 260.0000 5.3748\n", - " 104.3000 261.0000 5.3852\n", - " 104.3500 258.0000 5.3541\n", - " 104.4000 263.0000 5.4058\n", - " 104.4500 268.0000 5.4569\n", - " 104.5000 284.0000 5.6174\n", - " 104.5500 306.0000 5.8310\n", - " 104.6000 325.0000 6.0093\n", - " 104.6500 337.0000 6.1192\n", - " 104.7000 337.0000 6.1192\n", - " 104.7500 344.0000 6.1824\n", - " 104.8000 340.0000 6.1464\n", - " 104.8500 337.0000 6.1192\n", - " 104.9000 328.0000 6.0369\n", - " 104.9500 321.0000 5.9722\n", - " 105.0000 306.0000 5.8310\n", - " 105.0500 295.0000 5.7252\n", - " 105.1000 289.0000 5.6667\n", - " 105.1500 281.0000 5.5877\n", - " 105.2000 267.0000 5.4467\n", - " 105.2500 266.0000 5.4365\n", - " 105.3000 270.0000 5.4772\n", - " 105.3500 263.0000 5.4058\n", - " 105.4000 256.0000 5.3333\n", - " 105.4500 266.0000 5.4365\n", - " 105.5000 264.0000 5.4160\n", - " 105.5500 259.0000 5.3645\n", - " 105.6000 261.0000 5.3852\n", - " 105.6500 261.0000 5.3852\n", - " 105.7000 258.0000 5.3541\n", - " 105.7500 253.0000 5.3020\n", - " 105.8000 248.0000 5.2493\n", - " 105.8500 244.0000 5.2068\n", - " 105.9000 249.0000 5.2599\n", - " 105.9500 251.0000 5.2810\n", - " 106.0000 245.0000 5.2175\n", - " 106.0500 245.0000 5.2175\n", - " 106.1000 247.0000 5.2387\n", - " 106.1500 247.0000 5.2387\n", - " 106.2000 254.0000 5.3125\n", - " 106.2500 259.0000 5.3645\n", - " 106.3000 250.0000 5.2705\n", - " 106.3500 251.0000 5.2810\n", - " 106.4000 258.0000 5.3541\n", - " 106.4500 252.0000 5.2915\n", - " 106.5000 255.0000 5.3229\n", - " 106.5500 259.0000 5.3645\n", - " 106.6000 256.0000 5.3333\n", - " 106.6500 264.0000 5.4160\n", - " 106.7000 268.0000 5.4569\n", - " 106.7500 281.0000 5.5877\n", - " 106.8000 303.0000 5.8023\n", - " 106.8500 331.0000 6.0645\n", - " 106.9000 371.0000 6.4205\n", - " 106.9500 420.0000 6.8313\n", - " 107.0000 484.0000 7.3333\n", - " 107.0500 532.0000 7.6884\n", - " 107.1000 576.0000 8.0000\n", - " 107.1500 582.0000 8.0416\n", - " 107.2000 563.0000 7.9092\n", - " 107.2500 527.0000 7.6522\n", - " 107.3000 490.0000 7.3786\n", - " 107.3500 465.0000 7.1880\n", - " 107.4000 467.0000 7.2034\n", - " 107.4500 449.0000 7.0632\n", - " 107.5000 416.0000 6.7987\n", - " 107.5500 393.0000 6.6081\n", - " 107.6000 366.0000 6.3770\n", - " 107.6500 331.0000 6.0645\n", - " 107.7000 316.0000 5.9255\n", - " 107.7500 297.0000 5.7446\n", - " 107.8000 294.0000 5.7155\n", - " 107.8500 292.0000 5.6960\n", - " 107.9000 286.0000 5.6372\n", - " 107.9500 295.0000 5.7252\n", - " 108.0000 306.0000 6.1847\n", - " 108.0500 315.0000 6.2750\n", - " 108.1000 334.0000 6.4614\n", - " 108.1500 373.0000 6.8282\n", - " 108.2000 406.0000 7.1239\n", - " 108.2500 447.0000 7.4750\n", - " 108.3000 499.0000 7.8978\n", - " 108.3500 507.0000 7.9608\n", - " 108.4000 506.0000 7.9530\n", - " 108.4500 488.0000 7.8102\n", - " 108.5000 432.0000 7.3485\n", - " 108.5500 391.0000 6.9911\n", - " 108.6000 342.0000 6.5383\n", - " 108.6500 315.0000 6.2750\n", - " 108.7000 292.0000 6.0415\n", - " 108.7500 275.0000 5.8630\n", - " 108.8000 274.0000 5.8523\n", - " 108.8500 259.0000 5.6899\n", - " 108.9000 250.0000 5.5902\n", - " 108.9500 258.0000 5.6789\n", - " 109.0000 252.0000 5.6125\n", - " 109.0500 255.0000 5.6458\n", - " 109.1000 254.0000 5.6347\n", - " 109.1500 253.0000 5.6236\n", - " 109.2000 254.0000 5.6347\n", - " 109.2500 252.0000 5.6125\n", - " 109.3000 257.0000 5.6679\n", - " 109.3500 250.0000 5.5902\n", - " 109.4000 255.0000 5.6458\n", - " 109.4500 251.0000 5.6013\n", - " 109.5000 254.0000 5.6347\n", - " 109.5500 260.0000 5.7009\n", - " 109.6000 249.0000 5.5790\n", - " 109.6500 253.0000 5.6236\n", - " 109.7000 254.0000 5.6347\n", - " 109.7500 259.0000 5.6899\n", - " 109.8000 268.0000 5.7879\n", - " 109.8500 270.0000 5.8095\n", - " 109.9000 284.0000 5.9582\n", - " 109.9500 305.0000 6.1745\n", - " 110.0000 322.0000 6.3443\n", - " 110.0500 364.0000 6.7454\n", - " 110.1000 417.0000 7.2198\n", - " 110.1500 470.0000 7.6649\n", - " 110.2000 573.0000 8.4632\n", - " 110.2500 678.0000 9.2060\n", - " 110.3000 771.0000 9.8171\n", - " 110.3500 847.0000 10.2896\n", - " 110.4000 854.0000 10.3320\n", - " 110.4500 794.0000 9.9624\n", - " 110.5000 720.0000 9.4868\n", - " 110.5500 611.0000 8.7393\n", - " 110.6000 520.0000 8.0623\n", - " 110.6500 463.0000 7.6076\n", - " 110.7000 412.0000 7.1764\n", - " 110.7500 399.0000 7.0622\n", - " 110.8000 416.0000 7.2111\n", - " 110.8500 428.0000 7.3144\n", - " 110.9000 432.0000 7.3485\n", - " 110.9500 420.0000 7.2457\n", - " 111.0000 402.0000 7.0887\n", - " 111.0500 364.0000 6.7454\n", - " 111.1000 348.0000 6.5955\n", - " 111.1500 334.0000 6.4614\n", - " 111.2000 321.0000 6.3344\n", - " 111.2500 330.0000 6.4226\n", - " 111.3000 342.0000 6.5383\n", - " 111.3500 380.0000 6.8920\n", - " 111.4000 385.0000 6.9372\n", - " 111.4500 420.0000 7.2457\n", - " 111.5000 441.0000 7.4246\n", - " 111.5500 465.0000 7.6240\n", - " 111.6000 444.0000 7.4498\n", - " 111.6500 406.0000 7.1239\n", - " 111.7000 383.0000 6.9192\n", - " 111.7500 345.0000 6.5670\n", - " 111.8000 332.0000 6.4420\n", - " 111.8500 321.0000 6.3344\n", - " 111.9000 308.0000 6.2048\n", - " 111.9500 292.0000 6.0415\n", - " 112.0000 303.0000 6.1543\n", - " 112.0500 314.0000 6.2650\n", - " 112.1000 333.0000 6.4517\n", - " 112.1500 379.0000 6.8829\n", - " 112.2000 438.0000 7.3993\n", - " 112.2500 505.0000 7.9451\n", - " 112.3000 594.0000 8.6168\n", - " 112.3500 659.0000 9.0761\n", - " 112.4000 717.0000 9.4670\n", - " 112.4500 738.0000 9.6047\n", - " 112.5000 710.0000 9.4207\n", - " 112.5500 642.0000 8.9582\n", - " 112.6000 547.0000 8.2689\n", - " 112.6500 492.0000 7.8422\n", - " 112.7000 421.0000 7.2543\n", - " 112.7500 386.0000 6.9462\n", - " 112.8000 344.0000 6.5574\n", - " 112.8500 337.0000 6.4904\n", - " 112.9000 350.0000 6.6144\n", - " 112.9500 364.0000 6.7454\n", - " 113.0000 415.0000 7.2024\n", - " 113.0500 506.0000 7.9530\n", - " 113.1000 586.0000 8.5586\n", - " 113.1500 674.0000 9.1788\n", - " 113.2000 750.0000 9.6825\n", - " 113.2500 787.0000 9.9184\n", - " 113.3000 753.0000 9.7018\n", - " 113.3500 682.0000 9.2331\n", - " 113.4000 597.0000 8.6386\n", - " 113.4500 499.0000 7.8978\n", - " 113.5000 417.0000 7.2198\n", - " 113.5500 362.0000 6.7268\n", - " 113.6000 340.0000 6.5192\n", - " 113.6500 302.0000 6.1441\n", - " 113.7000 286.0000 5.9791\n", - " 113.7500 280.0000 5.9161\n", - " 113.8000 283.0000 5.9477\n", - " 113.8500 276.0000 5.8737\n", - " 113.9000 282.0000 5.9372\n", - " 113.9500 284.0000 5.9582\n", - " 114.0000 295.0000 6.4918\n", - " 114.0500 310.0000 6.6548\n", - " 114.1000 319.0000 6.7507\n", - " 114.1500 321.0000 6.7718\n", - " 114.2000 304.0000 6.5900\n", - " 114.2500 298.0000 6.5247\n", - " 114.3000 293.0000 6.4697\n", - " 114.3500 283.0000 6.3583\n", - " 114.4000 277.0000 6.2906\n", - " 114.4500 269.0000 6.1991\n", - " 114.5000 265.0000 6.1528\n", - " 114.5500 277.0000 6.2906\n", - " 114.6000 283.0000 6.3583\n", - " 114.6500 283.0000 6.3583\n", - " 114.7000 293.0000 6.4697\n", - " 114.7500 303.0000 6.5792\n", - " 114.8000 320.0000 6.7612\n", - " 114.8500 316.0000 6.7188\n", - " 114.9000 331.0000 6.8765\n", - " 114.9500 346.0000 7.0305\n", - " 115.0000 327.0000 6.8348\n", - " 115.0500 328.0000 6.8452\n", - " 115.1000 306.0000 6.6117\n", - " 115.1500 291.0000 6.4476\n", - " 115.2000 286.0000 6.3920\n", - " 115.2500 278.0000 6.3019\n", - " 115.3000 273.0000 6.2450\n", - " 115.3500 267.0000 6.1760\n", - " 115.4000 272.0000 6.2335\n", - " 115.4500 257.0000 6.0592\n", - " 115.5000 260.0000 6.0945\n", - " 115.5500 265.0000 6.1528\n", - " 115.6000 264.0000 6.1412\n", - " 115.6500 272.0000 6.2335\n", - " 115.7000 270.0000 6.2106\n", - " 115.7500 268.0000 6.1875\n", - " 115.8000 269.0000 6.1991\n", - " 115.8500 287.0000 6.4031\n", - " 115.9000 292.0000 6.4587\n", - " 115.9500 295.0000 6.4918\n", - " 116.0000 317.0000 6.7295\n", - " 116.0500 335.0000 6.9179\n", - " 116.1000 364.0000 7.2111\n", - " 116.1500 410.0000 7.6532\n", - " 116.2000 477.0000 8.2549\n", - " 116.2500 556.0000 8.9123\n", - " 116.3000 642.0000 9.5768\n", - " 116.3500 755.0000 10.3854\n", - " 116.4000 864.0000 11.1098\n", - " 116.4500 946.0000 11.6251\n", - " 116.5000 970.0000 11.7716\n", - " 116.5500 941.0000 11.5943\n", - " 116.6000 870.0000 11.1484\n", - " 116.6500 759.0000 10.4129\n", - " 116.7000 647.0000 9.6140\n", - " 116.7500 540.0000 8.7831\n", - " 116.8000 468.0000 8.1766\n", - " 116.8500 418.0000 7.7275\n", - " 116.9000 379.0000 7.3582\n", - " 116.9500 381.0000 7.3776\n", - " 117.0000 405.0000 7.6064\n", - " 117.0500 446.0000 7.9821\n", - " 117.1000 476.0000 8.2462\n", - " 117.1500 523.0000 8.6437\n", - " 117.2000 561.0000 8.9523\n", - " 117.2500 555.0000 8.9043\n", - " 117.3000 529.0000 8.6932\n", - " 117.3500 485.0000 8.3238\n", - " 117.4000 436.0000 7.8921\n", - " 117.4500 398.0000 7.5404\n", - " 117.5000 355.0000 7.1214\n", - " 117.5500 322.0000 6.7823\n", - " 117.6000 304.0000 6.5900\n", - " 117.6500 285.0000 6.3808\n", - " 117.7000 270.0000 6.2106\n", - " 117.7500 278.0000 6.3019\n", - " 117.8000 260.0000 6.0945\n", - " 117.8500 268.0000 6.1875\n", - " 117.9000 264.0000 6.1412\n", - " 117.9500 265.0000 6.1528\n", - " 118.0000 263.0000 6.1296\n", - " 118.0500 267.0000 6.1760\n", - " 118.1000 286.0000 6.3920\n", - " 118.1500 293.0000 6.4697\n", - " 118.2000 291.0000 6.4476\n", - " 118.2500 319.0000 6.7507\n", - " 118.3000 366.0000 7.2309\n", - " 118.3500 411.0000 7.6625\n", - " 118.4000 461.0000 8.1152\n", - " 118.4500 489.0000 8.3581\n", - " 118.5000 521.0000 8.6272\n", - " 118.5500 555.0000 8.9043\n", - " 118.6000 550.0000 8.8641\n", - " 118.6500 511.0000 8.5440\n", - " 118.7000 486.0000 8.3324\n", - " 118.7500 436.0000 7.8921\n", - " 118.8000 392.0000 7.4833\n", - " 118.8500 368.0000 7.2506\n", - " 118.9000 330.0000 6.8661\n", - " 118.9500 328.0000 6.8452\n", - " 119.0000 343.0000 7.0000\n", - " 119.0500 371.0000 7.2801\n", - " 119.1000 394.0000 7.5024\n", - " 119.1500 441.0000 7.9373\n", - " 119.2000 468.0000 8.1766\n", - " 119.2500 469.0000 8.1854\n", - " 119.3000 456.0000 8.0711\n", - " 119.3500 416.0000 7.7090\n", - " 119.4000 394.0000 7.5024\n", - " 119.4500 361.0000 7.1813\n", - " 119.5000 330.0000 6.8661\n", - " 119.5500 312.0000 6.6762\n", - " 119.6000 293.0000 6.4697\n", - " 119.6500 285.0000 6.3808\n", - " 119.7000 286.0000 6.3920\n", - " 119.7500 275.0000 6.2678\n", - " 119.8000 274.0000 6.2564\n", - " 119.8500 281.0000 6.3358\n", - " 119.9000 279.0000 6.3133\n", - " 119.9500 298.0000 6.5247\n", - " 120.0000 312.0000 7.2111\n", - "\n" - ] - } - ], - "source": [ - "meas_fname = 'D1A@ILL.xye'\n", - "\n", - "with open(meas_fname, 'r') as f:\n", - " content = f.read()\n", - " \n", - "print(content)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Load the measured data" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "meas_x, meas_y, meas_e = np.loadtxt(meas_fname, unpack=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Visualize the measured data" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "119e7f68cc384e87bcc1dacf2105b5cf", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## --- Analysis ---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Create job with default parameters for the 1D powder neutron diffraction experiment with constant wavelength " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Current calculator engine: CrysPy\n" - ] - } - ], - "source": [ - "calculator = Calculator()\n", - "\n", - "print(f\"Current calculator engine: {calculator.current_interface_name}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" - ] - } - ], - "source": [ - "job = Job(phases=phases, parameters=Instrument1DCWParameters.default(), calculator=calculator)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Generate the calculated data" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "calc_y_cryspy = calculator.fit_func(meas_x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Visualize both the measured and calculated data" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "439598d69b864c4c97f7b13db2f72200", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Set scale manually" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "job.pattern.scale = 100" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4abb4fc822f44f22bcd40ce92cd1216e", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "calc_y_cryspy = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Set wavelength manually" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "job.parameters.wavelength = 1.912" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "96973a9784d34943b2de8c351e436e55", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "calc_y_cryspy = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Set background points manually" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "bkg = PointBackground(linked_experiment='PbSO4')\n", - "\n", - "bkg.append(BackgroundPoint.from_pars(meas_x[0], 200))\n", - "bkg.append(BackgroundPoint.from_pars(meas_x[-1], 250))\n", - "\n", - "job.set_background(bkg)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a1eebfb15acd4446a5247ae8bbeb914d", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "calc_y_cryspy = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Define parameters to optimize" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "job.pattern.scale.fixed = False\n", - "job.pattern.zero_shift.fixed = False\n", - "job.parameters.resolution_u.fixed = False\n", - "job.parameters.resolution_v.fixed = False\n", - "job.parameters.resolution_w.fixed = False\n", - "job.backgrounds[0][0].y.fixed = False\n", - "job.backgrounds[0][1].y.fixed = False" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "print(job.pattern.scale)\n", - "print(job.pattern.zero_shift)\n", - "print(job.parameters.resolution_u)\n", - "print(job.parameters.resolution_v)\n", - "print(job.parameters.resolution_w)\n", - "print(job.backgrounds[0][0])\n", - "print(job.backgrounds[0][1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Initalize the fitting engine and perform the fit" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Available minimizers: ['lmfit', 'bumps']\n", - "Current minimizer: lmfit\n", - "Available methods of current minimizers: ['leastsq', 'least_squares', 'differential_evolution', 'basinhopping', 'ampgo', 'nelder', 'lbfgsb', 'powell', 'cg', 'newton', 'cobyla', 'bfgs']\n" - ] - } - ], - "source": [ - "fitter = Fitter(job, calculator.fit_func)\n", - "\n", - "print(f\"Available minimizers: {fitter.available_engines}\")\n", - "print(f\"Current minimizer: {fitter.current_engine.name}\")\n", - "print(f\"Available methods of current minimizers: {fitter.available_methods()}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The fit has been successful: True\n", - "The gooodness of fit (chi2) is: 31.615632345412287\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares')\n", - "\n", - "print(\"The fit has been successful: {}\".format(result.success))\n", - "if result.success: \n", - " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", - " print(job.pattern.scale)\n", - " print(job.pattern.zero_shift)\n", - " print(job.parameters.resolution_u)\n", - " print(job.parameters.resolution_v)\n", - " print(job.parameters.resolution_w)\n", - " print(job.backgrounds[0][0])\n", - " print(job.backgrounds[0][1])" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "7d291f16d089472db54e6fd443a0d524", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "calc_y_cryspy = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, meas_y-calc_y_cryspy, label='Imeas-Icalc (CrysPy)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Change calculator engine to CrysFML" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Current calculator engine: CrysFML\n", - "Current minimizer: lmfit\n" - ] - } - ], - "source": [ - "job.interface.switch('CrysFML')\n", - "job.update_bindings()\n", - "\n", - "print(f\"Current calculator engine: {job.interface.current_interface_name}\")\n", - "print(f\"Current minimizer: {fitter.current_engine.name}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Show results of both CrysPy and CrysFML calculations (before fitting)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0011 s\n", - "+ calculate B: 0.0013 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0003 s\n", - "+ set reflection_list: 0.0064 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0025 s\n", - "+ calculate D: 0.0019 s\n", - "+ calculate E: 0.0039 s\n", - "+ calculate F: 0.0000 s\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "11277fd2b95543f790f8bc4c2126343c", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "calc_y_crysfml = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Perform the fit with CrysFML" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "ename": "FitError", - "evalue": "Unable to return value:\n'NoneType' object has no attribute 'strip'\nSomething has gone wrong with the fit", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/uncertainties/core.py\u001b[0m in \u001b[0;36mufloat\u001b[0;34m(nominal_value, std_dev, tag)\u001b[0m\n\u001b[1;32m 3294\u001b[0m \u001b[0;31m# Standard case:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3295\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mVariable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnominal_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstd_dev\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtag\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3296\u001b[0m \u001b[0;31m# Exception types raised by, respectively: tuple or string that\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/uncertainties/core.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, value, std_dev, tag)\u001b[0m\n\u001b[1;32m 2763\u001b[0m \u001b[0;31m# of 3.1/2 = 1.55.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2764\u001b[0;31m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2765\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mTypeError\u001b[0m: float() argument must be a string or a number, not 'NoneType'", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Objects/Base.py\u001b[0m in \u001b[0;36mvalue\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 201\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_value\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 202\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__deepValueSetter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 203\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Objects/Base.py\u001b[0m in \u001b[0;36m__deepValueSetter\u001b[0;34m(self, value)\u001b[0m\n\u001b[1;32m 219\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_args\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'value'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 220\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_value\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__class__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_constructor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_args\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 221\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/pint/measurement.py\u001b[0m in \u001b[0;36m__new__\u001b[0;34m(cls, value, error, units)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mmag\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mufloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 55\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/uncertainties/core.py\u001b[0m in \u001b[0;36mufloat\u001b[0;34m(nominal_value, std_dev, tag)\u001b[0m\n\u001b[1;32m 3307\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3308\u001b[0;31m \u001b[0mfinal_ufloat\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mufloat_obsolete\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnominal_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtag_arg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3309\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# The input is incorrect, not obsolete\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/uncertainties/core.py\u001b[0m in \u001b[0;36mufloat_obsolete\u001b[0;34m(representation, tag)\u001b[0m\n\u001b[1;32m 3250\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3251\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mufloat_fromstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrepresentation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3252\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/uncertainties/core.py\u001b[0m in \u001b[0;36mufloat_fromstr\u001b[0;34m(representation, tag)\u001b[0m\n\u001b[1;32m 3234\u001b[0m (nominal_value, std_dev) = str_to_number_with_uncert(\n\u001b[0;32m-> 3235\u001b[0;31m representation.strip())\n\u001b[0m\u001b[1;32m 3236\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'strip'", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Fitting/lmfit.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, weights, model, parameters, method, minimizer_kwargs, **kwargs)\u001b[0m\n\u001b[1;32m 196\u001b[0m model_results = model.fit(\n\u001b[0;32m--> 197\u001b[0;31m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mweights\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mdefault_method\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mminimizer_kwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 198\u001b[0m )\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/lmfit/model.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, data, params, weights, method, iter_cb, scale_covar, verbose, fit_kws, nan_policy, calc_covar, max_nfev, **kwargs)\u001b[0m\n\u001b[1;32m 1022\u001b[0m max_nfev=max_nfev, **fit_kws)\n\u001b[0;32m-> 1023\u001b[0;31m \u001b[0moutput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mweights\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1024\u001b[0m \u001b[0moutput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomponents\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomponents\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/lmfit/model.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, data, params, weights, method, nan_policy, **kwargs)\u001b[0m\n\u001b[1;32m 1379\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muserkws\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1380\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minit_fit\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meval\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muserkws\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1381\u001b[0m \u001b[0m_ret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mminimize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/lmfit/model.py\u001b[0m in \u001b[0;36meval\u001b[0;34m(self, params, **kwargs)\u001b[0m\n\u001b[1;32m 845\u001b[0m \"\"\"\n\u001b[0;32m--> 846\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmake_funcargs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 847\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Fitting/lmfit.py\u001b[0m in \u001b[0;36mfit_function\u001b[0;34m(x, **kwargs)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0;31m# This will take in to account constraints\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 112\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_cached_pars\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpar_name\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 113\u001b[0m \u001b[0;31m# Since we are calling the parameter fset will be called.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Utils/UndoRedo.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(obj, *args)\u001b[0m\n\u001b[1;32m 456\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mNoReturn\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 457\u001b[0;31m \u001b[0mold_value\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 458\u001b[0m \u001b[0mnew_value\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Objects/Base.py\u001b[0m in \u001b[0;36m_property_value\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 449\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_property_value\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mUnion\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnumbers\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mNumber\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 450\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 451\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Objects/Base.py\u001b[0m in \u001b[0;36mvalue\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 204\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Unable to return value:\\n{e}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 205\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: Unable to return value:\n'NoneType' object has no attribute 'strip'", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mFitError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/ipykernel_1610/2379171151.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfitter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmeas_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeas_y\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mmeas_e\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'least_squares'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"The fit has been successful: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuccess\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuccess\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"The gooodness of fit (chi2) is: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreduced_chi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Fitting/Fitting.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 146\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 147\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 148\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 149\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 150\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0minner\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/easyCore/Fitting/lmfit.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, weights, model, parameters, method, minimizer_kwargs, **kwargs)\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_gen_fit_results\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel_results\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 201\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 202\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mFitError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 203\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[0mborg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstack\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendMacro\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mFitError\u001b[0m: Unable to return value:\n'NoneType' object has no attribute 'strip'\nSomething has gone wrong with the fit" - ] - } - ], - "source": [ - "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares')\n", - "\n", - "print(\"The fit has been successful: {}\".format(result.success))\n", - "if result.success: \n", - " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", - " print(job.pattern.scale)\n", - " print(job.pattern.zero_shift)\n", - " print(job.parameters.resolution_u)\n", - " print(job.parameters.resolution_v)\n", - " print(job.parameters.resolution_w)\n", - " print(job.backgrounds[0][0])\n", - " print(job.backgrounds[0][1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Show results of both CrysPy and CrysFML calculations (after fitting)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calc_y_crysfml = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/Notebooks/PbSO4/PbSO4.cif b/Notebooks/PbSO4/PbSO4.cif deleted file mode 100644 index fe04369d..00000000 --- a/Notebooks/PbSO4/PbSO4.cif +++ /dev/null @@ -1,25 +0,0 @@ -data_PbSO4 - -_space_group_name_H-M_alt 'P n m a' - -_cell_length_a 8.480 -_cell_length_b 5.398 -_cell_length_c 6.958 -_cell_angle_alpha 90.0 -_cell_angle_beta 90.0 -_cell_angle_gamma 90.0 - -loop_ - _atom_site_label - _atom_site_type_symbol - _atom_site_fract_x - _atom_site_fract_y - _atom_site_fract_z - _atom_site_occupancy - _atom_site_adp_type - _atom_site_U_iso_or_equiv - Pb Pb 0.188 0.25 0.167 1.0 Uiso 0.01 - S S 0.063 0.25 0.686 1.0 Uiso 0.01 - O1 O -0.095 0.25 0.600 1.0 Uiso 0.01 - O2 O 0.181 0.25 0.543 1.0 Uiso 0.01 - O3 O 0.085 0.026 0.806 1.0 Uiso 0.01 diff --git a/pyproject.toml b/pyproject.toml index 5e06837f..2d5645d5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ matplotlib = "^3.4" # easyScience CFML = '^0.0.1' GSASII = '^0.0.1' -easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'param_value_workaround' } +easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } [tool.poetry.dev-dependencies] pytest = "^5.2" From 4c04e6549840677b9650346d3f7407988bd5f6d3 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 27 Sep 2021 16:32:28 +0200 Subject: [PATCH 182/312] Auto stash before merge of "more_notebooks" and "origin/more_notebooks" --- Notebooks/PbSO4/D1A@ILL.xye | 2202 +++++++++++++++ Notebooks/PbSO4/FittingPowder1D.ipynb | 3221 ++++++++++++++++++++++ Notebooks/PbSO4/PbSO4.cif | 25 + Notebooks/PbSO4/PbSO4_neutrons_short.xye | 2202 +++++++++++++++ easyDiffractionLib/interface.py | 4 +- 5 files changed, 7652 insertions(+), 2 deletions(-) create mode 100644 Notebooks/PbSO4/D1A@ILL.xye create mode 100644 Notebooks/PbSO4/FittingPowder1D.ipynb create mode 100644 Notebooks/PbSO4/PbSO4.cif create mode 100644 Notebooks/PbSO4/PbSO4_neutrons_short.xye diff --git a/Notebooks/PbSO4/D1A@ILL.xye b/Notebooks/PbSO4/D1A@ILL.xye new file mode 100644 index 00000000..6ff09d36 --- /dev/null +++ b/Notebooks/PbSO4/D1A@ILL.xye @@ -0,0 +1,2202 @@ +# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992) + 10.0000 220.0000 14.8324 + 10.0500 214.0000 14.6287 + 10.1000 219.0000 14.7986 + 10.1500 224.0000 14.9666 + 10.2000 198.0000 14.0712 + 10.2500 229.0000 15.1327 + 10.3000 224.0000 14.9666 + 10.3500 216.0000 14.6969 + 10.4000 202.0000 14.2127 + 10.4500 229.0000 15.1327 + 10.5000 202.0000 14.2127 + 10.5500 215.0000 14.6629 + 10.6000 215.0000 14.6629 + 10.6500 196.0000 14.0000 + 10.7000 235.0000 15.3297 + 10.7500 207.0000 14.3875 + 10.8000 205.0000 14.3178 + 10.8500 238.0000 15.4272 + 10.9000 202.0000 14.2127 + 10.9500 213.0000 14.5945 + 11.0000 226.0000 15.0333 + 11.0500 198.0000 14.0712 + 11.1000 222.0000 14.8997 + 11.1500 186.0000 13.6382 + 11.2000 216.0000 14.6969 + 11.2500 218.0000 14.7648 + 11.3000 225.0000 15.0000 + 11.3500 200.0000 14.1421 + 11.4000 196.0000 14.0000 + 11.4500 224.0000 14.9666 + 11.5000 199.0000 14.1067 + 11.5500 204.0000 14.2829 + 11.6000 189.0000 13.7477 + 11.6500 211.0000 14.5258 + 11.7000 190.0000 13.7840 + 11.7500 184.0000 13.5647 + 11.8000 204.0000 14.2829 + 11.8500 204.0000 14.2829 + 11.9000 219.0000 14.7986 + 11.9500 207.0000 14.3875 + 12.0000 227.0000 15.0665 + 12.0500 211.0000 10.2713 + 12.1000 193.0000 9.8234 + 12.1500 206.0000 10.1489 + 12.2000 208.0000 10.1980 + 12.2500 191.0000 9.7724 + 12.3000 194.0000 9.8489 + 12.3500 185.0000 9.6177 + 12.4000 200.0000 10.0000 + 12.4500 203.0000 10.0747 + 12.5000 197.0000 9.9247 + 12.5500 203.0000 10.0747 + 12.6000 200.0000 10.0000 + 12.6500 200.0000 10.0000 + 12.7000 205.0000 10.1242 + 12.7500 208.0000 10.1980 + 12.8000 205.0000 10.1242 + 12.8500 201.0000 10.0250 + 12.9000 221.0000 10.5119 + 12.9500 218.0000 10.4403 + 13.0000 218.0000 10.4403 + 13.0500 216.0000 10.3923 + 13.1000 202.0000 10.0499 + 13.1500 206.0000 10.1489 + 13.2000 197.0000 9.9247 + 13.2500 210.0000 10.2470 + 13.3000 199.0000 9.9750 + 13.3500 219.0000 10.4642 + 13.4000 192.0000 9.7980 + 13.4500 211.0000 10.2713 + 13.5000 199.0000 9.9750 + 13.5500 196.0000 9.8995 + 13.6000 195.0000 9.8742 + 13.6500 203.0000 10.0747 + 13.7000 202.0000 10.0499 + 13.7500 200.0000 10.0000 + 13.8000 199.0000 9.9750 + 13.8500 191.0000 9.7724 + 13.9000 204.0000 10.0995 + 13.9500 191.0000 9.7724 + 14.0000 200.0000 10.0000 + 14.0500 199.0000 9.9750 + 14.1000 197.0000 9.9247 + 14.1500 202.0000 10.0499 + 14.2000 210.0000 10.2470 + 14.2500 202.0000 10.0499 + 14.3000 198.0000 9.9499 + 14.3500 191.0000 9.7724 + 14.4000 194.0000 9.8489 + 14.4500 198.0000 9.9499 + 14.5000 194.0000 9.8489 + 14.5500 193.0000 9.8234 + 14.6000 212.0000 10.2956 + 14.6500 214.0000 10.3441 + 14.7000 197.0000 9.9247 + 14.7500 195.0000 9.8742 + 14.8000 205.0000 10.1242 + 14.8500 209.0000 10.2225 + 14.9000 203.0000 10.0747 + 14.9500 197.0000 9.9247 + 15.0000 191.0000 9.7724 + 15.0500 192.0000 9.7980 + 15.1000 215.0000 10.3682 + 15.1500 194.0000 9.8489 + 15.2000 189.0000 9.7211 + 15.2500 188.0000 9.6954 + 15.3000 202.0000 10.0499 + 15.3500 201.0000 10.0250 + 15.4000 198.0000 9.9499 + 15.4500 208.0000 10.1980 + 15.5000 197.0000 9.9247 + 15.5500 187.0000 9.6695 + 15.6000 187.0000 9.6695 + 15.6500 190.0000 9.7468 + 15.7000 197.0000 9.9247 + 15.7500 200.0000 10.0000 + 15.8000 193.0000 9.8234 + 15.8500 180.0000 9.4868 + 15.9000 194.0000 9.8489 + 15.9500 206.0000 10.1489 + 16.0000 195.0000 9.8742 + 16.0500 193.0000 9.8234 + 16.1000 205.0000 10.1242 + 16.1500 194.0000 9.8489 + 16.2000 196.0000 9.8995 + 16.2500 194.0000 9.8489 + 16.3000 199.0000 9.9750 + 16.3500 207.0000 10.1735 + 16.4000 188.0000 9.6954 + 16.4500 203.0000 10.0747 + 16.5000 188.0000 9.6954 + 16.5500 180.0000 9.4868 + 16.6000 198.0000 9.9499 + 16.6500 200.0000 10.0000 + 16.7000 201.0000 10.0250 + 16.7500 210.0000 10.2470 + 16.8000 206.0000 10.1489 + 16.8500 189.0000 9.7211 + 16.9000 194.0000 9.8489 + 16.9500 187.0000 9.6695 + 17.0000 195.0000 9.8742 + 17.0500 201.0000 10.0250 + 17.1000 197.0000 9.9247 + 17.1500 206.0000 10.1489 + 17.2000 208.0000 10.1980 + 17.2500 199.0000 9.9750 + 17.3000 192.0000 9.7980 + 17.3500 193.0000 9.8234 + 17.4000 204.0000 10.0995 + 17.4500 201.0000 10.0250 + 17.5000 200.0000 10.0000 + 17.5500 177.0000 9.4074 + 17.6000 193.0000 9.8234 + 17.6500 199.0000 9.9750 + 17.7000 201.0000 10.0250 + 17.7500 194.0000 9.8489 + 17.8000 184.0000 9.5917 + 17.8500 192.0000 9.7980 + 17.9000 199.0000 9.9750 + 17.9500 190.0000 9.7468 + 18.0000 183.0000 9.5656 + 18.0500 189.0000 7.9373 + 18.1000 196.0000 8.0829 + 18.1500 196.0000 8.0829 + 18.2000 198.0000 8.1240 + 18.2500 210.0000 8.3666 + 18.3000 212.0000 8.4063 + 18.3500 219.0000 8.5440 + 18.4000 198.0000 8.1240 + 18.4500 195.0000 8.0623 + 18.5000 198.0000 8.1240 + 18.5500 191.0000 7.9791 + 18.6000 193.0000 8.0208 + 18.6500 197.0000 8.1035 + 18.7000 194.0000 8.0416 + 18.7500 187.0000 7.8951 + 18.8000 209.0000 8.3467 + 18.8500 187.0000 7.8951 + 18.9000 198.0000 8.1240 + 18.9500 206.0000 8.2865 + 19.0000 197.0000 8.1035 + 19.0500 191.0000 7.9791 + 19.1000 200.0000 8.1650 + 19.1500 207.0000 8.3066 + 19.2000 205.0000 8.2664 + 19.2500 198.0000 8.1240 + 19.3000 196.0000 8.0829 + 19.3500 209.0000 8.3467 + 19.4000 211.0000 8.3865 + 19.4500 203.0000 8.2260 + 19.5000 200.0000 8.1650 + 19.5500 192.0000 8.0000 + 19.6000 208.0000 8.3267 + 19.6500 213.0000 8.4261 + 19.7000 221.0000 8.5829 + 19.7500 216.0000 8.4853 + 19.8000 226.0000 8.6795 + 19.8500 228.0000 8.7178 + 19.9000 228.0000 8.7178 + 19.9500 215.0000 8.4656 + 20.0000 224.0000 8.6410 + 20.0500 226.0000 8.6795 + 20.1000 213.0000 8.4261 + 20.1500 239.0000 8.9256 + 20.2000 250.0000 9.1287 + 20.2500 247.0000 9.0738 + 20.3000 240.0000 8.9443 + 20.3500 231.0000 8.7750 + 20.4000 236.0000 8.8694 + 20.4500 223.0000 8.6217 + 20.5000 231.0000 8.7750 + 20.5500 226.0000 8.6795 + 20.6000 214.0000 8.4459 + 20.6500 208.0000 8.3267 + 20.7000 214.0000 8.4459 + 20.7500 196.0000 8.0829 + 20.8000 204.0000 8.2462 + 20.8500 199.0000 8.1445 + 20.9000 186.0000 7.8740 + 20.9500 192.0000 8.0000 + 21.0000 199.0000 8.1445 + 21.0500 200.0000 8.1650 + 21.1000 184.0000 7.8316 + 21.1500 184.0000 7.8316 + 21.2000 189.0000 7.9373 + 21.2500 182.0000 7.7889 + 21.3000 184.0000 7.8316 + 21.3500 185.0000 7.8528 + 21.4000 195.0000 8.0623 + 21.4500 190.0000 7.9582 + 21.5000 194.0000 8.0416 + 21.5500 185.0000 7.8528 + 21.6000 183.0000 7.8102 + 21.6500 193.0000 8.0208 + 21.7000 194.0000 8.0416 + 21.7500 193.0000 8.0208 + 21.8000 188.0000 7.9162 + 21.8500 191.0000 7.9791 + 21.9000 189.0000 7.9373 + 21.9500 188.0000 7.9162 + 22.0000 201.0000 8.1854 + 22.0500 195.0000 8.0623 + 22.1000 205.0000 8.2664 + 22.1500 200.0000 8.1650 + 22.2000 200.0000 8.1650 + 22.2500 192.0000 8.0000 + 22.3000 197.0000 8.1035 + 22.3500 204.0000 8.2462 + 22.4000 207.0000 8.3066 + 22.4500 192.0000 8.0000 + 22.5000 201.0000 8.1854 + 22.5500 190.0000 7.9582 + 22.6000 195.0000 8.0623 + 22.6500 194.0000 8.0416 + 22.7000 182.0000 7.7889 + 22.7500 189.0000 7.9373 + 22.8000 196.0000 8.0829 + 22.8500 196.0000 8.0829 + 22.9000 200.0000 8.1650 + 22.9500 190.0000 7.9582 + 23.0000 183.0000 7.8102 + 23.0500 199.0000 8.1445 + 23.1000 187.0000 7.8951 + 23.1500 196.0000 8.0829 + 23.2000 191.0000 7.9791 + 23.2500 191.0000 7.9791 + 23.3000 195.0000 8.0623 + 23.3500 194.0000 8.0416 + 23.4000 192.0000 8.0000 + 23.4500 182.0000 7.7889 + 23.5000 188.0000 7.9162 + 23.5500 203.0000 8.2260 + 23.6000 187.0000 7.8951 + 23.6500 192.0000 8.0000 + 23.7000 206.0000 8.2865 + 23.7500 201.0000 8.1854 + 23.8000 184.0000 7.8316 + 23.8500 192.0000 8.0000 + 23.9000 205.0000 8.2664 + 23.9500 196.0000 8.0829 + 24.0000 193.0000 8.0208 + 24.0500 194.0000 6.9642 + 24.1000 195.0000 6.9821 + 24.1500 194.0000 6.9642 + 24.2000 201.0000 7.0887 + 24.2500 193.0000 6.9462 + 24.3000 176.0000 6.6332 + 24.3500 187.0000 6.8374 + 24.4000 188.0000 6.8557 + 24.4500 196.0000 7.0000 + 24.5000 192.0000 6.9282 + 24.5500 185.0000 6.8007 + 24.6000 195.0000 6.9821 + 24.6500 198.0000 7.0356 + 24.7000 205.0000 7.1589 + 24.7500 200.0000 7.0711 + 24.8000 208.0000 7.2111 + 24.8500 195.0000 6.9821 + 24.9000 187.0000 6.8374 + 24.9500 193.0000 6.9462 + 25.0000 197.0000 7.0178 + 25.0500 202.0000 7.1063 + 25.1000 193.0000 6.9462 + 25.1500 196.0000 7.0000 + 25.2000 202.0000 7.1063 + 25.2500 201.0000 7.0887 + 25.3000 197.0000 7.0178 + 25.3500 204.0000 7.1414 + 25.4000 208.0000 7.2111 + 25.4500 206.0000 7.1764 + 25.5000 212.0000 7.2801 + 25.5500 207.0000 7.1937 + 25.6000 207.0000 7.1937 + 25.6500 212.0000 7.2801 + 25.7000 216.0000 7.3485 + 25.7500 218.0000 7.3824 + 25.8000 221.0000 7.4330 + 25.8500 218.0000 7.3824 + 25.9000 207.0000 7.1937 + 25.9500 203.0000 7.1239 + 26.0000 204.0000 7.1414 + 26.0500 202.0000 7.1063 + 26.1000 206.0000 7.1764 + 26.1500 202.0000 7.1063 + 26.2000 202.0000 7.1063 + 26.2500 181.0000 6.7268 + 26.3000 193.0000 6.9462 + 26.3500 205.0000 7.1589 + 26.4000 198.0000 7.0356 + 26.4500 196.0000 7.0000 + 26.5000 197.0000 7.0178 + 26.5500 195.0000 6.9821 + 26.6000 201.0000 7.0887 + 26.6500 205.0000 7.1589 + 26.7000 195.0000 6.9821 + 26.7500 196.0000 7.0000 + 26.8000 196.0000 7.0000 + 26.8500 205.0000 7.1589 + 26.9000 198.0000 7.0356 + 26.9500 200.0000 7.0711 + 27.0000 199.0000 7.0534 + 27.0500 180.0000 6.7082 + 27.1000 187.0000 6.8374 + 27.1500 193.0000 6.9462 + 27.2000 197.0000 7.0178 + 27.2500 197.0000 7.0178 + 27.3000 196.0000 7.0000 + 27.3500 194.0000 6.9642 + 27.4000 197.0000 7.0178 + 27.4500 204.0000 7.1414 + 27.5000 201.0000 7.0887 + 27.5500 187.0000 6.8374 + 27.6000 191.0000 6.9101 + 27.6500 205.0000 7.1589 + 27.7000 200.0000 7.0711 + 27.7500 198.0000 7.0356 + 27.8000 200.0000 7.0711 + 27.8500 204.0000 7.1414 + 27.9000 196.0000 7.0000 + 27.9500 195.0000 6.9821 + 28.0000 194.0000 6.9642 + 28.0500 200.0000 7.0711 + 28.1000 198.0000 7.0356 + 28.1500 201.0000 7.0887 + 28.2000 208.0000 7.2111 + 28.2500 205.0000 7.1589 + 28.3000 211.0000 7.2629 + 28.3500 211.0000 7.2629 + 28.4000 220.0000 7.4162 + 28.4500 220.0000 7.4162 + 28.5000 212.0000 7.2801 + 28.5500 208.0000 7.2111 + 28.6000 214.0000 7.3144 + 28.6500 226.0000 7.5166 + 28.7000 235.0000 7.6649 + 28.7500 233.0000 7.6322 + 28.8000 237.0000 7.6974 + 28.8500 242.0000 7.7782 + 28.9000 242.0000 7.7782 + 28.9500 245.0000 7.8262 + 29.0000 239.0000 7.7298 + 29.0500 226.0000 7.5166 + 29.1000 232.0000 7.6158 + 29.1500 238.0000 7.7136 + 29.2000 226.0000 7.5166 + 29.2500 218.0000 7.3824 + 29.3000 218.0000 7.3824 + 29.3500 214.0000 7.3144 + 29.4000 205.0000 7.1589 + 29.4500 200.0000 7.0711 + 29.5000 193.0000 6.9462 + 29.5500 195.0000 6.9821 + 29.6000 196.0000 7.0000 + 29.6500 195.0000 6.9821 + 29.7000 207.0000 7.1937 + 29.7500 215.0000 7.3314 + 29.8000 207.0000 7.1937 + 29.8500 218.0000 7.3824 + 29.9000 218.0000 7.3824 + 29.9500 220.0000 7.4162 + 30.0000 220.0000 7.4162 + 30.0500 229.0000 6.7676 + 30.1000 236.0000 6.8702 + 30.1500 254.0000 7.1274 + 30.2000 264.0000 7.2664 + 30.2500 280.0000 7.4833 + 30.3000 289.0000 7.6026 + 30.3500 289.0000 7.6026 + 30.4000 303.0000 7.7846 + 30.4500 302.0000 7.7717 + 30.5000 297.0000 7.7071 + 30.5500 281.0000 7.4967 + 30.6000 278.0000 7.4565 + 30.6500 280.0000 7.4833 + 30.7000 265.0000 7.2801 + 30.7500 258.0000 7.1833 + 30.8000 243.0000 6.9714 + 30.8500 240.0000 6.9282 + 30.9000 232.0000 6.8118 + 30.9500 231.0000 6.7971 + 31.0000 233.0000 6.8264 + 31.0500 246.0000 7.0143 + 31.1000 248.0000 7.0427 + 31.1500 249.0000 7.0569 + 31.2000 256.0000 7.1554 + 31.2500 272.0000 7.3756 + 31.3000 289.0000 7.6026 + 31.3500 311.0000 7.8867 + 31.4000 340.0000 8.2462 + 31.4500 363.0000 8.5206 + 31.5000 393.0000 8.8657 + 31.5500 440.0000 9.3808 + 31.6000 474.0000 9.7365 + 31.6500 482.0000 9.8183 + 31.7000 492.0000 9.9197 + 31.7500 508.0000 10.0797 + 31.8000 494.0000 9.9398 + 31.8500 475.0000 9.7468 + 31.9000 439.0000 9.3702 + 31.9500 413.0000 9.0885 + 32.0000 368.0000 8.5790 + 32.0500 331.0000 8.1363 + 32.1000 299.0000 7.7330 + 32.1500 286.0000 7.5631 + 32.2000 262.0000 7.2388 + 32.2500 241.0000 6.9426 + 32.3000 238.0000 6.8993 + 32.3500 252.0000 7.0993 + 32.4000 267.0000 7.3075 + 32.4500 276.0000 7.4297 + 32.5000 278.0000 7.4565 + 32.5500 300.0000 7.7460 + 32.6000 325.0000 8.0623 + 32.6500 336.0000 8.1976 + 32.7000 359.0000 8.4735 + 32.7500 405.0000 9.0000 + 32.8000 458.0000 9.5708 + 32.8500 501.0000 10.0100 + 32.9000 564.0000 10.6207 + 32.9500 640.0000 11.3137 + 33.0000 719.0000 11.9917 + 33.0500 783.0000 12.5140 + 33.1000 837.0000 12.9383 + 33.1500 851.0000 13.0461 + 33.2000 866.0000 13.1605 + 33.2500 828.0000 12.8686 + 33.3000 763.0000 12.3531 + 33.3500 697.0000 11.8068 + 33.4000 634.0000 11.2606 + 33.4500 541.0000 10.4019 + 33.5000 465.0000 9.6437 + 33.5500 391.0000 8.8431 + 33.6000 351.0000 8.3785 + 33.6500 301.0000 7.7589 + 33.7000 284.0000 7.5366 + 33.7500 260.0000 7.2111 + 33.8000 248.0000 7.0427 + 33.8500 257.0000 7.1694 + 33.9000 242.0000 6.9570 + 33.9500 246.0000 7.0143 + 34.0000 263.0000 7.2526 + 34.0500 271.0000 7.3621 + 34.1000 281.0000 7.4967 + 34.1500 302.0000 7.7717 + 34.2000 309.0000 7.8613 + 34.2500 335.0000 8.1854 + 34.3000 342.0000 8.2704 + 34.3500 345.0000 8.3066 + 34.4000 356.0000 8.4380 + 34.4500 351.0000 8.3785 + 34.5000 341.0000 8.2583 + 34.5500 334.0000 8.1731 + 34.6000 321.0000 8.0125 + 34.6500 286.0000 7.5631 + 34.7000 268.0000 7.3212 + 34.7500 256.0000 7.1554 + 34.8000 238.0000 6.8993 + 34.8500 229.0000 6.7676 + 34.9000 218.0000 6.6030 + 34.9500 223.0000 6.6783 + 35.0000 216.0000 6.5727 + 35.0500 203.0000 6.3718 + 35.1000 203.0000 6.3718 + 35.1500 194.0000 6.2290 + 35.2000 205.0000 6.4031 + 35.2500 196.0000 6.2610 + 35.3000 193.0000 6.2129 + 35.3500 206.0000 6.4187 + 35.4000 201.0000 6.3403 + 35.4500 201.0000 6.3403 + 35.5000 201.0000 6.3403 + 35.5500 200.0000 6.3246 + 35.6000 194.0000 6.2290 + 35.6500 196.0000 6.2610 + 35.7000 203.0000 6.3718 + 35.7500 195.0000 6.2450 + 35.8000 196.0000 6.2610 + 35.8500 211.0000 6.4962 + 35.9000 216.0000 6.5727 + 35.9500 207.0000 6.4343 + 36.0000 215.0000 6.5574 + 36.0500 221.0000 6.6483 + 36.1000 237.0000 6.2849 + 36.1500 248.0000 6.4291 + 36.2000 261.0000 6.5955 + 36.2500 279.0000 6.8191 + 36.3000 319.0000 7.2915 + 36.3500 337.0000 7.4944 + 36.4000 364.0000 7.7889 + 36.4500 423.0000 8.3964 + 36.5000 489.0000 9.0277 + 36.5500 557.0000 9.6350 + 36.6000 630.0000 10.2470 + 36.6500 729.0000 11.0227 + 36.7000 822.0000 11.7047 + 36.7500 943.0000 12.5366 + 36.8000 1059.0000 13.2853 + 36.8500 1196.0000 14.1185 + 36.9000 1235.0000 14.3469 + 36.9500 1220.0000 14.2595 + 37.0000 1209.0000 14.1951 + 37.0500 1128.0000 13.7113 + 37.1000 1001.0000 12.9164 + 37.1500 864.0000 12.0000 + 37.2000 729.0000 11.0227 + 37.2500 601.0000 10.0083 + 37.3000 496.0000 9.0921 + 37.3500 418.0000 8.3467 + 37.4000 355.0000 7.6920 + 37.4500 313.0000 7.2226 + 37.5000 263.0000 6.6207 + 37.5500 246.0000 6.4031 + 37.6000 226.0000 6.1373 + 37.6500 214.0000 5.9722 + 37.7000 222.0000 6.0828 + 37.7500 222.0000 6.0828 + 37.8000 211.0000 5.9301 + 37.8500 211.0000 5.9301 + 37.9000 202.0000 5.8023 + 37.9500 198.0000 5.7446 + 38.0000 192.0000 5.6569 + 38.0500 193.0000 5.6716 + 38.1000 196.0000 5.7155 + 38.1500 201.0000 5.7879 + 38.2000 203.0000 5.8166 + 38.2500 203.0000 5.8166 + 38.3000 201.0000 5.7879 + 38.3500 198.0000 5.7446 + 38.4000 196.0000 5.7155 + 38.4500 206.0000 5.8595 + 38.5000 210.0000 5.9161 + 38.5500 197.0000 5.7300 + 38.6000 204.0000 5.8310 + 38.6500 200.0000 5.7735 + 38.7000 205.0000 5.8452 + 38.7500 196.0000 5.7155 + 38.8000 195.0000 5.7009 + 38.8500 205.0000 5.8452 + 38.9000 204.0000 5.8310 + 38.9500 200.0000 5.7735 + 39.0000 203.0000 5.8166 + 39.0500 208.0000 5.8878 + 39.1000 207.0000 5.8737 + 39.1500 202.0000 5.8023 + 39.2000 203.0000 5.8166 + 39.2500 198.0000 5.7446 + 39.3000 204.0000 5.8310 + 39.3500 210.0000 5.9161 + 39.4000 216.0000 6.0000 + 39.4500 210.0000 5.9161 + 39.5000 229.0000 6.1779 + 39.5500 239.0000 6.3114 + 39.6000 247.0000 6.4161 + 39.6500 278.0000 6.8069 + 39.7000 302.0000 7.0946 + 39.7500 324.0000 7.3485 + 39.8000 371.0000 7.8634 + 39.8500 420.0000 8.3666 + 39.9000 465.0000 8.8034 + 39.9500 538.0000 9.4692 + 40.0000 630.0000 10.2470 + 40.0500 739.0000 11.0980 + 40.1000 851.0000 11.9094 + 40.1500 976.0000 12.7541 + 40.2000 1076.0000 13.3915 + 40.2500 1161.0000 13.9104 + 40.3000 1222.0000 14.2712 + 40.3500 1227.0000 14.3003 + 40.4000 1187.0000 14.0653 + 40.4500 1096.0000 13.5154 + 40.5000 964.0000 12.6754 + 40.5500 833.0000 11.7828 + 40.6000 708.0000 10.8628 + 40.6500 587.0000 9.8911 + 40.7000 512.0000 9.2376 + 40.7500 436.0000 8.5245 + 40.8000 391.0000 8.0726 + 40.8500 384.0000 8.0000 + 40.9000 370.0000 7.8528 + 40.9500 391.0000 8.0726 + 41.0000 419.0000 8.3566 + 41.0500 448.0000 8.6410 + 41.1000 490.0000 9.0370 + 41.1500 567.0000 9.7211 + 41.2000 626.0000 10.2144 + 41.2500 687.0000 10.7005 + 41.3000 735.0000 11.0680 + 41.3500 780.0000 11.4018 + 41.4000 782.0000 11.4164 + 41.4500 745.0000 11.1430 + 41.5000 721.0000 10.9621 + 41.5500 662.0000 10.5040 + 41.6000 595.0000 9.9582 + 41.6500 527.0000 9.3719 + 41.7000 446.0000 8.6217 + 41.7500 393.0000 8.0932 + 41.8000 335.0000 7.4722 + 41.8500 301.0000 7.0828 + 41.9000 276.0000 6.7823 + 41.9500 251.0000 5.9881 + 42.0000 242.0000 5.8797 + 42.0500 229.0000 5.7196 + 42.1000 209.0000 5.4642 + 42.1500 215.0000 5.5420 + 42.2000 218.0000 5.5806 + 42.2500 214.0000 5.5291 + 42.3000 209.0000 5.4642 + 42.3500 208.0000 5.4511 + 42.4000 212.0000 5.5032 + 42.4500 210.0000 5.4772 + 42.5000 209.0000 5.4642 + 42.5500 210.0000 5.4772 + 42.6000 205.0000 5.4116 + 42.6500 209.0000 5.4642 + 42.7000 211.0000 5.4903 + 42.7500 211.0000 5.4903 + 42.8000 216.0000 5.5549 + 42.8500 205.0000 5.4116 + 42.9000 204.0000 5.3984 + 42.9500 202.0000 5.3719 + 43.0000 201.0000 5.3586 + 43.0500 200.0000 5.3452 + 43.1000 207.0000 5.4380 + 43.1500 205.0000 5.4116 + 43.2000 202.0000 5.3719 + 43.2500 209.0000 5.4642 + 43.3000 202.0000 5.3719 + 43.3500 203.0000 5.3852 + 43.4000 206.0000 5.4248 + 43.4500 206.0000 5.4248 + 43.5000 200.0000 5.3452 + 43.5500 194.0000 5.2644 + 43.6000 199.0000 5.3318 + 43.6500 204.0000 5.3984 + 43.7000 205.0000 5.4116 + 43.7500 210.0000 5.4772 + 43.8000 207.0000 5.4380 + 43.8500 205.0000 5.4116 + 43.9000 210.0000 5.4772 + 43.9500 204.0000 5.3984 + 44.0000 203.0000 5.3852 + 44.0500 202.0000 5.3719 + 44.1000 205.0000 5.4116 + 44.1500 201.0000 5.3586 + 44.2000 201.0000 5.3586 + 44.2500 207.0000 5.4380 + 44.3000 197.0000 5.3050 + 44.3500 198.0000 5.3184 + 44.4000 203.0000 5.3852 + 44.4500 209.0000 5.4642 + 44.5000 209.0000 5.4642 + 44.5500 208.0000 5.4511 + 44.6000 204.0000 5.3984 + 44.6500 209.0000 5.4642 + 44.7000 199.0000 5.3318 + 44.7500 204.0000 5.3984 + 44.8000 206.0000 5.4248 + 44.8500 201.0000 5.3586 + 44.9000 205.0000 5.4116 + 44.9500 202.0000 5.3719 + 45.0000 204.0000 5.3984 + 45.0500 198.0000 5.3184 + 45.1000 198.0000 5.3184 + 45.1500 213.0000 5.5162 + 45.2000 210.0000 5.4772 + 45.2500 212.0000 5.5032 + 45.3000 214.0000 5.5291 + 45.3500 215.0000 5.5420 + 45.4000 217.0000 5.5678 + 45.4500 210.0000 5.4772 + 45.5000 214.0000 5.5291 + 45.5500 215.0000 5.5420 + 45.6000 215.0000 5.5420 + 45.6500 215.0000 5.5420 + 45.7000 217.0000 5.5678 + 45.7500 222.0000 5.6315 + 45.8000 231.0000 5.7446 + 45.8500 247.0000 5.9402 + 45.9000 252.0000 6.0000 + 45.9500 273.0000 6.2450 + 46.0000 304.0000 6.5900 + 46.0500 332.0000 6.8868 + 46.1000 366.0000 7.2309 + 46.1500 408.0000 7.6345 + 46.2000 463.0000 8.1328 + 46.2500 532.0000 8.7178 + 46.3000 619.0000 9.4036 + 46.3500 734.0000 10.2400 + 46.4000 828.0000 10.8759 + 46.4500 944.0000 11.6128 + 46.5000 1003.0000 11.9702 + 46.5500 1055.0000 12.2766 + 46.6000 1070.0000 12.3635 + 46.6500 1018.0000 12.0594 + 46.7000 944.0000 11.6128 + 46.7500 833.0000 10.9087 + 46.8000 725.0000 10.1770 + 46.8500 633.0000 9.5094 + 46.9000 507.0000 8.5105 + 46.9500 445.0000 7.9732 + 47.0000 379.0000 7.3582 + 47.0500 347.0000 7.0407 + 47.1000 316.0000 6.7188 + 47.1500 282.0000 6.3471 + 47.2000 267.0000 6.1760 + 47.2500 269.0000 6.1991 + 47.3000 281.0000 6.3358 + 47.3500 288.0000 6.4143 + 47.4000 300.0000 6.5465 + 47.4500 327.0000 6.8348 + 47.5000 346.0000 7.0305 + 47.5500 380.0000 7.3679 + 47.6000 400.0000 7.5593 + 47.6500 430.0000 7.8376 + 47.7000 453.0000 8.0445 + 47.7500 459.0000 8.0976 + 47.8000 451.0000 8.0267 + 47.8500 427.0000 7.8102 + 47.9000 402.0000 7.5782 + 47.9500 375.0000 7.3193 + 48.0000 344.0000 7.0102 + 48.0500 309.0000 6.6440 + 48.1000 277.0000 6.2906 + 48.1500 265.0000 5.7554 + 48.2000 246.0000 5.5453 + 48.2500 246.0000 5.5453 + 48.3000 230.0000 5.3619 + 48.3500 223.0000 5.2797 + 48.4000 227.0000 5.3268 + 48.4500 225.0000 5.3033 + 48.5000 217.0000 5.2082 + 48.5500 217.0000 5.2082 + 48.6000 223.0000 5.2797 + 48.6500 223.0000 5.2797 + 48.7000 220.0000 5.2440 + 48.7500 223.0000 5.2797 + 48.8000 226.0000 5.3151 + 48.8500 248.0000 5.5678 + 48.9000 258.0000 5.6789 + 48.9500 274.0000 5.8523 + 49.0000 297.0000 6.0930 + 49.0500 324.0000 6.3640 + 49.1000 355.0000 6.6615 + 49.1500 393.0000 7.0089 + 49.2000 458.0000 7.5664 + 49.2500 528.0000 8.1240 + 49.3000 589.0000 8.5805 + 49.3500 688.0000 9.2736 + 49.4000 781.0000 9.8805 + 49.4500 840.0000 10.2470 + 49.5000 876.0000 10.4642 + 49.5500 874.0000 10.4523 + 49.6000 832.0000 10.1980 + 49.6500 765.0000 9.7788 + 49.7000 682.0000 9.2331 + 49.7500 613.0000 8.7536 + 49.8000 524.0000 8.0932 + 49.8500 455.0000 7.5416 + 49.9000 408.0000 7.1414 + 49.9500 384.0000 6.9282 + 50.0000 366.0000 6.7639 + 50.0500 375.0000 6.8465 + 50.1000 392.0000 7.0000 + 50.1500 426.0000 7.2973 + 50.2000 470.0000 7.6649 + 50.2500 519.0000 8.0545 + 50.3000 588.0000 8.5732 + 50.3500 639.0000 8.9373 + 50.4000 681.0000 9.2263 + 50.4500 704.0000 9.3808 + 50.5000 693.0000 9.3073 + 50.5500 650.0000 9.0139 + 50.6000 600.0000 8.6603 + 50.6500 540.0000 8.2158 + 50.7000 478.0000 7.7298 + 50.7500 412.0000 7.1764 + 50.8000 376.0000 6.8557 + 50.8500 345.0000 6.5670 + 50.9000 330.0000 6.4226 + 50.9500 337.0000 6.4904 + 51.0000 350.0000 6.6144 + 51.0500 383.0000 6.9192 + 51.1000 426.0000 7.2973 + 51.1500 493.0000 7.8502 + 51.2000 571.0000 8.4484 + 51.2500 676.0000 9.1924 + 51.3000 803.0000 10.0187 + 51.3500 920.0000 10.7238 + 51.4000 1071.0000 11.5704 + 51.4500 1183.0000 12.1604 + 51.5000 1247.0000 12.4850 + 51.5500 1255.0000 12.5250 + 51.6000 1251.0000 12.5050 + 51.6500 1183.0000 12.1604 + 51.7000 1068.0000 11.5542 + 51.7500 945.0000 10.8685 + 51.8000 861.0000 10.3742 + 51.8500 811.0000 10.0685 + 51.9000 813.0000 10.0809 + 51.9500 872.0000 10.4403 + 52.0000 969.0000 11.0057 + 52.0500 1120.0000 11.8322 + 52.1000 1309.0000 12.7916 + 52.1500 1527.0000 13.8158 + 52.2000 1706.0000 14.6031 + 52.2500 1856.0000 15.2315 + 52.3000 1888.0000 15.3623 + 52.3500 1837.0000 15.1534 + 52.4000 1713.0000 14.6330 + 52.4500 1500.0000 13.6931 + 52.5000 1289.0000 12.6935 + 52.5500 1103.0000 11.7420 + 52.6000 904.0000 10.6301 + 52.6500 749.0000 9.6760 + 52.7000 627.0000 8.8530 + 52.7500 568.0000 8.4261 + 52.8000 551.0000 8.2991 + 52.8500 560.0000 8.3666 + 52.9000 586.0000 8.5586 + 52.9500 634.0000 8.9022 + 53.0000 691.0000 9.2938 + 53.0500 751.0000 9.6889 + 53.1000 799.0000 9.9937 + 53.1500 792.0000 9.9499 + 53.2000 820.0000 10.1242 + 53.2500 774.0000 9.8362 + 53.3000 736.0000 9.5917 + 53.3500 680.0000 9.2195 + 53.4000 627.0000 8.8530 + 53.4500 562.0000 8.3815 + 53.5000 514.0000 8.0156 + 53.5500 459.0000 7.5746 + 53.6000 424.0000 7.2801 + 53.6500 362.0000 6.7268 + 53.7000 333.0000 6.4517 + 53.7500 318.0000 6.3048 + 53.8000 300.0000 6.1237 + 53.8500 287.0000 5.9896 + 53.9000 265.0000 5.7554 + 53.9500 266.0000 5.7663 + 54.0000 262.0000 5.7228 + 54.0500 263.0000 5.4058 + 54.1000 255.0000 5.3229 + 54.1500 270.0000 5.4772 + 54.2000 278.0000 5.5578 + 54.2500 289.0000 5.6667 + 54.3000 317.0000 5.9348 + 54.3500 343.0000 6.1734 + 54.4000 400.0000 6.6667 + 54.4500 468.0000 7.2111 + 54.5000 561.0000 7.8951 + 54.5500 695.0000 8.7876 + 54.6000 873.0000 9.8489 + 54.6500 1100.0000 11.0554 + 54.7000 1372.0000 12.3468 + 54.7500 1660.0000 13.5810 + 54.8000 1954.0000 14.7347 + 54.8500 2224.0000 15.7198 + 54.9000 2400.0000 16.3299 + 54.9500 2459.0000 16.5294 + 55.0000 2435.0000 16.4486 + 55.0500 2245.0000 15.7938 + 55.1000 1986.0000 14.8549 + 55.1500 1671.0000 13.6260 + 55.2000 1358.0000 12.2837 + 55.2500 1086.0000 10.9848 + 55.3000 868.0000 9.8206 + 55.3500 682.0000 8.7050 + 55.4000 578.0000 8.0139 + 55.4500 521.0000 7.6085 + 55.5000 512.0000 7.5425 + 55.5500 537.0000 7.7244 + 55.6000 600.0000 8.1650 + 55.6500 704.0000 8.8443 + 55.7000 855.0000 9.7468 + 55.7500 1032.0000 10.7083 + 55.8000 1232.0000 11.7000 + 55.8500 1466.0000 12.7628 + 55.9000 1693.0000 13.7154 + 55.9500 1866.0000 14.3991 + 56.0000 1966.0000 14.7799 + 56.0500 2024.0000 14.9963 + 56.1000 2016.0000 14.9666 + 56.1500 1846.0000 14.3217 + 56.2000 1667.0000 13.6096 + 56.2500 1429.0000 12.6007 + 56.3000 1179.0000 11.4455 + 56.3500 950.0000 10.2740 + 56.4000 763.0000 9.2075 + 56.4500 599.0000 8.1582 + 56.5000 484.0000 7.3333 + 56.5500 404.0000 6.6999 + 56.6000 351.0000 6.2450 + 56.6500 304.0000 5.8119 + 56.7000 284.0000 5.6174 + 56.7500 273.0000 5.5076 + 56.8000 259.0000 5.3645 + 56.8500 251.0000 5.2810 + 56.9000 251.0000 5.2810 + 56.9500 252.0000 5.2915 + 57.0000 245.0000 5.2175 + 57.0500 259.0000 5.3645 + 57.1000 250.0000 5.2705 + 57.1500 253.0000 5.3020 + 57.2000 256.0000 5.3333 + 57.2500 264.0000 5.4160 + 57.3000 285.0000 5.6273 + 57.3500 301.0000 5.7831 + 57.4000 346.0000 6.2004 + 57.4500 390.0000 6.5828 + 57.5000 458.0000 7.1336 + 57.5500 528.0000 7.6594 + 57.6000 624.0000 8.3267 + 57.6500 733.0000 9.0247 + 57.7000 829.0000 9.5975 + 57.7500 916.0000 10.0885 + 57.8000 988.0000 10.4775 + 57.8500 994.0000 10.5093 + 57.9000 929.0000 10.1598 + 57.9500 843.0000 9.6782 + 58.0000 742.0000 9.0799 + 58.0500 638.0000 8.4196 + 58.1000 527.0000 7.6522 + 58.1500 434.0000 6.9442 + 58.2000 377.0000 6.4722 + 58.2500 320.0000 5.9628 + 58.3000 282.0000 5.5976 + 58.3500 273.0000 5.5076 + 58.4000 256.0000 5.3333 + 58.4500 243.0000 5.1962 + 58.5000 240.0000 5.1640 + 58.5500 240.0000 5.1640 + 58.6000 230.0000 5.0553 + 58.6500 220.0000 4.9441 + 58.7000 230.0000 5.0553 + 58.7500 227.0000 5.0222 + 58.8000 224.0000 4.9889 + 58.8500 219.0000 4.9329 + 58.9000 227.0000 5.0222 + 58.9500 227.0000 5.0222 + 59.0000 224.0000 4.9889 + 59.0500 222.0000 4.9666 + 59.1000 223.0000 4.9777 + 59.1500 217.0000 4.9103 + 59.2000 213.0000 4.8648 + 59.2500 216.0000 4.8990 + 59.3000 219.0000 4.9329 + 59.3500 219.0000 4.9329 + 59.4000 218.0000 4.9216 + 59.4500 220.0000 4.9441 + 59.5000 220.0000 4.9441 + 59.5500 220.0000 4.9441 + 59.6000 223.0000 4.9777 + 59.6500 233.0000 5.0881 + 59.7000 237.0000 5.1316 + 59.7500 249.0000 5.2599 + 59.8000 258.0000 5.3541 + 59.8500 261.0000 5.3852 + 59.9000 283.0000 5.6075 + 59.9500 304.0000 5.8119 + 60.0000 324.0000 5.6921 + 60.0500 347.0000 5.8907 + 60.1000 353.0000 5.9414 + 60.1500 359.0000 5.9917 + 60.2000 363.0000 6.0249 + 60.2500 352.0000 5.9330 + 60.3000 341.0000 5.8395 + 60.3500 330.0000 5.7446 + 60.4000 308.0000 5.5498 + 60.4500 291.0000 5.3944 + 60.5000 271.0000 5.2058 + 60.5500 254.0000 5.0398 + 60.6000 245.0000 4.9497 + 60.6500 245.0000 4.9497 + 60.7000 239.0000 4.8888 + 60.7500 228.0000 4.7749 + 60.8000 217.0000 4.6583 + 60.8500 217.0000 4.6583 + 60.9000 218.0000 4.6690 + 60.9500 223.0000 4.7223 + 61.0000 207.0000 4.5497 + 61.0500 218.0000 4.6690 + 61.1000 222.0000 4.7117 + 61.1500 215.0000 4.6368 + 61.2000 210.0000 4.5826 + 61.2500 216.0000 4.6476 + 61.3000 213.0000 4.6152 + 61.3500 212.0000 4.6043 + 61.4000 215.0000 4.6368 + 61.4500 212.0000 4.6043 + 61.5000 214.0000 4.6260 + 61.5500 211.0000 4.5935 + 61.6000 214.0000 4.6260 + 61.6500 217.0000 4.6583 + 61.7000 205.0000 4.5277 + 61.7500 207.0000 4.5497 + 61.8000 213.0000 4.6152 + 61.8500 208.0000 4.5607 + 61.9000 211.0000 4.5935 + 61.9500 205.0000 4.5277 + 62.0000 214.0000 4.6260 + 62.0500 213.0000 4.6152 + 62.1000 212.0000 4.6043 + 62.1500 212.0000 4.6043 + 62.2000 213.0000 4.6152 + 62.2500 207.0000 4.5497 + 62.3000 203.0000 4.5056 + 62.3500 211.0000 4.5935 + 62.4000 211.0000 4.5935 + 62.4500 214.0000 4.6260 + 62.5000 214.0000 4.6260 + 62.5500 207.0000 4.5497 + 62.6000 203.0000 4.5056 + 62.6500 212.0000 4.6043 + 62.7000 212.0000 4.6043 + 62.7500 214.0000 4.6260 + 62.8000 213.0000 4.6152 + 62.8500 202.0000 4.4944 + 62.9000 210.0000 4.5826 + 62.9500 211.0000 4.5935 + 63.0000 211.0000 4.5935 + 63.0500 214.0000 4.6260 + 63.1000 221.0000 4.7011 + 63.1500 217.0000 4.6583 + 63.2000 212.0000 4.6043 + 63.2500 214.0000 4.6260 + 63.3000 219.0000 4.6797 + 63.3500 223.0000 4.7223 + 63.4000 225.0000 4.7434 + 63.4500 227.0000 4.7645 + 63.5000 235.0000 4.8477 + 63.5500 240.0000 4.8990 + 63.6000 243.0000 4.9295 + 63.6500 252.0000 5.0200 + 63.7000 249.0000 4.9900 + 63.7500 249.0000 4.9900 + 63.8000 255.0000 5.0498 + 63.8500 262.0000 5.1186 + 63.9000 282.0000 5.3104 + 63.9500 308.0000 5.5498 + 64.0000 351.0000 5.9245 + 64.0500 398.0000 6.3087 + 64.1000 470.0000 6.8557 + 64.1500 525.0000 7.2457 + 64.2000 596.0000 7.7201 + 64.2500 646.0000 8.0374 + 64.3000 681.0000 8.2523 + 64.3500 665.0000 8.1548 + 64.4000 615.0000 7.8422 + 64.4500 563.0000 7.5033 + 64.5000 484.0000 6.9570 + 64.5500 421.0000 6.4885 + 64.6000 364.0000 6.0332 + 64.6500 317.0000 5.6303 + 64.7000 289.0000 5.3759 + 64.7500 261.0000 5.1088 + 64.8000 245.0000 4.9497 + 64.8500 233.0000 4.8270 + 64.9000 228.0000 4.7749 + 64.9500 219.0000 4.6797 + 65.0000 219.0000 4.6797 + 65.0500 217.0000 4.6583 + 65.1000 216.0000 4.6476 + 65.1500 221.0000 4.7011 + 65.2000 215.0000 4.6368 + 65.2500 215.0000 4.6368 + 65.3000 210.0000 4.5826 + 65.3500 212.0000 4.6043 + 65.4000 212.0000 4.6043 + 65.4500 204.0000 4.5166 + 65.5000 209.0000 4.5717 + 65.5500 206.0000 4.5387 + 65.6000 216.0000 4.6476 + 65.6500 207.0000 4.5497 + 65.7000 214.0000 4.6260 + 65.7500 207.0000 4.5497 + 65.8000 209.0000 4.5717 + 65.8500 218.0000 4.6690 + 65.9000 215.0000 4.6368 + 65.9500 222.0000 4.7117 + 66.0000 226.0000 4.7539 + 66.0500 230.0000 4.7958 + 66.1000 239.0000 4.8888 + 66.1500 249.0000 4.9900 + 66.2000 263.0000 5.1284 + 66.2500 275.0000 5.2440 + 66.3000 292.0000 5.4037 + 66.3500 317.0000 5.6303 + 66.4000 323.0000 5.6833 + 66.4500 341.0000 5.8395 + 66.5000 350.0000 5.9161 + 66.5500 330.0000 5.7446 + 66.6000 320.0000 5.6569 + 66.6500 307.0000 5.5408 + 66.7000 284.0000 5.3292 + 66.7500 275.0000 5.2440 + 66.8000 265.0000 5.1478 + 66.8500 269.0000 5.1865 + 66.9000 275.0000 5.2440 + 66.9500 292.0000 5.4037 + 67.0000 311.0000 5.5767 + 67.0500 338.0000 5.8138 + 67.1000 387.0000 6.2209 + 67.1500 413.0000 6.4265 + 67.2000 463.0000 6.8044 + 67.2500 510.0000 7.1414 + 67.3000 534.0000 7.3075 + 67.3500 559.0000 7.4766 + 67.4000 539.0000 7.3417 + 67.4500 533.0000 7.3007 + 67.5000 500.0000 7.0711 + 67.5500 471.0000 6.8629 + 67.6000 455.0000 6.7454 + 67.6500 410.0000 6.4031 + 67.7000 373.0000 6.1074 + 67.7500 342.0000 5.8481 + 67.8000 307.0000 5.5408 + 67.8500 288.0000 5.3666 + 67.9000 286.0000 5.3479 + 67.9500 281.0000 5.3009 + 68.0000 292.0000 5.4037 + 68.0500 291.0000 5.3944 + 68.1000 312.0000 5.5857 + 68.1500 326.0000 5.7096 + 68.2000 336.0000 5.7966 + 68.2500 346.0000 5.8822 + 68.3000 341.0000 5.8395 + 68.3500 327.0000 5.7184 + 68.4000 305.0000 5.5227 + 68.4500 277.0000 5.2631 + 68.5000 267.0000 5.1672 + 68.5500 249.0000 4.9900 + 68.6000 229.0000 4.7854 + 68.6500 221.0000 4.7011 + 68.7000 220.0000 4.6904 + 68.7500 217.0000 4.6583 + 68.8000 211.0000 4.5935 + 68.8500 204.0000 4.5166 + 68.9000 203.0000 4.5056 + 68.9500 220.0000 4.6904 + 69.0000 217.0000 4.6583 + 69.0500 217.0000 4.6583 + 69.1000 214.0000 4.6260 + 69.1500 205.0000 4.5277 + 69.2000 205.0000 4.5277 + 69.2500 211.0000 4.5935 + 69.3000 206.0000 4.5387 + 69.3500 208.0000 4.5607 + 69.4000 201.0000 4.4833 + 69.4500 208.0000 4.5607 + 69.5000 214.0000 4.6260 + 69.5500 212.0000 4.6043 + 69.6000 206.0000 4.5387 + 69.6500 216.0000 4.6476 + 69.7000 219.0000 4.6797 + 69.7500 215.0000 4.6368 + 69.8000 217.0000 4.6583 + 69.8500 211.0000 4.5935 + 69.9000 214.0000 4.6260 + 69.9500 215.0000 4.6368 + 70.0000 224.0000 4.7329 + 70.0500 217.0000 4.6583 + 70.1000 215.0000 4.6368 + 70.1500 218.0000 4.6690 + 70.2000 218.0000 4.6690 + 70.2500 228.0000 4.7749 + 70.3000 227.0000 4.7645 + 70.3500 228.0000 4.7749 + 70.4000 225.0000 4.7434 + 70.4500 219.0000 4.6797 + 70.5000 216.0000 4.6476 + 70.5500 219.0000 4.6797 + 70.6000 218.0000 4.6690 + 70.6500 214.0000 4.6260 + 70.7000 212.0000 4.6043 + 70.7500 221.0000 4.7011 + 70.8000 214.0000 4.6260 + 70.8500 208.0000 4.5607 + 70.9000 204.0000 4.5166 + 70.9500 209.0000 4.5717 + 71.0000 209.0000 4.5717 + 71.0500 208.0000 4.5607 + 71.1000 212.0000 4.6043 + 71.1500 213.0000 4.6152 + 71.2000 218.0000 4.6690 + 71.2500 212.0000 4.6043 + 71.3000 205.0000 4.5277 + 71.3500 207.0000 4.5497 + 71.4000 204.0000 4.5166 + 71.4500 206.0000 4.5387 + 71.5000 211.0000 4.5935 + 71.5500 216.0000 4.6476 + 71.6000 214.0000 4.6260 + 71.6500 210.0000 4.5826 + 71.7000 219.0000 4.6797 + 71.7500 222.0000 4.7117 + 71.8000 224.0000 4.7329 + 71.8500 231.0000 4.8062 + 71.9000 227.0000 4.7645 + 71.9500 237.0000 4.8683 + 72.0000 235.0000 4.8477 + 72.0500 238.0000 4.8785 + 72.1000 245.0000 4.9497 + 72.1500 242.0000 4.9193 + 72.2000 248.0000 4.9800 + 72.2500 246.0000 4.9598 + 72.3000 243.0000 4.9295 + 72.3500 253.0000 5.0299 + 72.4000 259.0000 5.0892 + 72.4500 278.0000 5.2726 + 72.5000 281.0000 5.3009 + 72.5500 297.0000 5.4498 + 72.6000 310.0000 5.5678 + 72.6500 324.0000 5.6921 + 72.7000 322.0000 5.6745 + 72.7500 311.0000 5.5767 + 72.8000 295.0000 5.4314 + 72.8500 281.0000 5.3009 + 72.9000 259.0000 5.0892 + 72.9500 250.0000 5.0000 + 73.0000 239.0000 4.8888 + 73.0500 233.0000 4.8270 + 73.1000 227.0000 4.7645 + 73.1500 226.0000 4.7539 + 73.2000 223.0000 4.7223 + 73.2500 211.0000 4.5935 + 73.3000 209.0000 4.5717 + 73.3500 217.0000 4.6583 + 73.4000 214.0000 4.6260 + 73.4500 213.0000 4.6152 + 73.5000 217.0000 4.6583 + 73.5500 220.0000 4.6904 + 73.6000 210.0000 4.5826 + 73.6500 209.0000 4.5717 + 73.7000 215.0000 4.6368 + 73.7500 218.0000 4.6690 + 73.8000 215.0000 4.6368 + 73.8500 217.0000 4.6583 + 73.9000 221.0000 4.7011 + 73.9500 217.0000 4.6583 + 74.0000 219.0000 4.6797 + 74.0500 220.0000 4.6904 + 74.1000 228.0000 4.7749 + 74.1500 229.0000 4.7854 + 74.2000 230.0000 4.7958 + 74.2500 234.0000 4.8374 + 74.3000 251.0000 5.0100 + 74.3500 261.0000 5.1088 + 74.4000 288.0000 5.3666 + 74.4500 313.0000 5.5946 + 74.5000 362.0000 6.0166 + 74.5500 424.0000 6.5115 + 74.6000 524.0000 7.2388 + 74.6500 646.0000 8.0374 + 74.7000 781.0000 8.8374 + 74.7500 920.0000 9.5917 + 74.8000 1024.0000 10.1193 + 74.8500 1120.0000 10.5830 + 74.9000 1187.0000 10.8950 + 74.9500 1187.0000 10.8950 + 75.0000 1166.0000 10.7981 + 75.0500 1114.0000 10.5546 + 75.1000 1044.0000 10.2176 + 75.1500 991.0000 9.9549 + 75.2000 927.0000 9.6281 + 75.2500 823.0000 9.0719 + 75.3000 717.0000 8.4676 + 75.3500 619.0000 7.8677 + 75.4000 520.0000 7.2111 + 75.4500 421.0000 6.4885 + 75.5000 353.0000 5.9414 + 75.5500 308.0000 5.5498 + 75.6000 273.0000 5.2249 + 75.6500 256.0000 5.0596 + 75.7000 245.0000 4.9497 + 75.7500 234.0000 4.8374 + 75.8000 230.0000 4.7958 + 75.8500 224.0000 4.7329 + 75.9000 232.0000 4.8166 + 75.9500 226.0000 4.7539 + 76.0000 222.0000 4.7117 + 76.0500 222.0000 4.7117 + 76.1000 227.0000 4.7645 + 76.1500 225.0000 4.7434 + 76.2000 226.0000 4.7539 + 76.2500 227.0000 4.7645 + 76.3000 229.0000 4.7854 + 76.3500 235.0000 4.8477 + 76.4000 233.0000 4.8270 + 76.4500 243.0000 4.9295 + 76.5000 238.0000 4.8785 + 76.5500 237.0000 4.8683 + 76.6000 236.0000 4.8580 + 76.6500 232.0000 4.8166 + 76.7000 231.0000 4.8062 + 76.7500 227.0000 4.7645 + 76.8000 225.0000 4.7434 + 76.8500 220.0000 4.6904 + 76.9000 218.0000 4.6690 + 76.9500 215.0000 4.6368 + 77.0000 219.0000 4.6797 + 77.0500 224.0000 4.7329 + 77.1000 225.0000 4.7434 + 77.1500 222.0000 4.7117 + 77.2000 231.0000 4.8062 + 77.2500 243.0000 4.9295 + 77.3000 250.0000 5.0000 + 77.3500 269.0000 5.1865 + 77.4000 286.0000 5.3479 + 77.4500 310.0000 5.5678 + 77.5000 325.0000 5.7009 + 77.5500 332.0000 5.7619 + 77.6000 337.0000 5.8052 + 77.6500 329.0000 5.7359 + 77.7000 303.0000 5.5045 + 77.7500 278.0000 5.2726 + 77.8000 268.0000 5.1769 + 77.8500 252.0000 5.0200 + 77.9000 236.0000 4.8580 + 77.9500 228.0000 4.7749 + 78.0000 219.0000 4.6797 + 78.0500 225.0000 4.7434 + 78.1000 222.0000 4.7117 + 78.1500 214.0000 4.6260 + 78.2000 228.0000 4.7749 + 78.2500 221.0000 4.7011 + 78.3000 217.0000 4.6583 + 78.3500 221.0000 4.7011 + 78.4000 222.0000 4.7117 + 78.4500 226.0000 4.7539 + 78.5000 237.0000 4.8683 + 78.5500 246.0000 4.9598 + 78.6000 255.0000 5.0498 + 78.6500 269.0000 5.1865 + 78.7000 284.0000 5.3292 + 78.7500 302.0000 5.4955 + 78.8000 313.0000 5.5946 + 78.8500 327.0000 5.7184 + 78.9000 321.0000 5.6657 + 78.9500 333.0000 5.7706 + 79.0000 331.0000 5.7533 + 79.0500 332.0000 5.7619 + 79.1000 358.0000 5.9833 + 79.1500 402.0000 6.3403 + 79.2000 460.0000 6.7823 + 79.2500 557.0000 7.4632 + 79.3000 660.0000 8.1240 + 79.3500 769.0000 8.7693 + 79.4000 859.0000 9.2682 + 79.4500 934.0000 9.6644 + 79.5000 955.0000 9.7724 + 79.5500 921.0000 9.5969 + 79.6000 824.0000 9.0774 + 79.6500 694.0000 8.3307 + 79.7000 578.0000 7.6026 + 79.7500 474.0000 6.8848 + 79.8000 402.0000 6.3403 + 79.8500 344.0000 5.8652 + 79.9000 306.0000 5.5317 + 79.9500 300.0000 5.4772 + 80.0000 292.0000 5.4037 + 80.0500 292.0000 5.4037 + 80.1000 302.0000 5.4955 + 80.1500 304.0000 5.5136 + 80.2000 306.0000 5.5317 + 80.2500 305.0000 5.5227 + 80.3000 303.0000 5.5045 + 80.3500 299.0000 5.4681 + 80.4000 278.0000 5.2726 + 80.4500 259.0000 5.0892 + 80.5000 257.0000 5.0695 + 80.5500 245.0000 4.9497 + 80.6000 237.0000 4.8683 + 80.6500 240.0000 4.8990 + 80.7000 233.0000 4.8270 + 80.7500 232.0000 4.8166 + 80.8000 235.0000 4.8477 + 80.8500 241.0000 4.9092 + 80.9000 257.0000 5.0695 + 80.9500 274.0000 5.2345 + 81.0000 292.0000 5.4037 + 81.0500 309.0000 5.5588 + 81.1000 333.0000 5.7706 + 81.1500 360.0000 6.0000 + 81.2000 381.0000 6.1725 + 81.2500 387.0000 6.2209 + 81.3000 387.0000 6.2209 + 81.3500 386.0000 6.2129 + 81.4000 382.0000 6.1806 + 81.4500 368.0000 6.0663 + 81.5000 363.0000 6.0249 + 81.5500 352.0000 5.9330 + 81.6000 337.0000 5.8052 + 81.6500 321.0000 5.6657 + 81.7000 297.0000 5.4498 + 81.7500 281.0000 5.3009 + 81.8000 265.0000 5.1478 + 81.8500 255.0000 5.0498 + 81.9000 251.0000 5.0100 + 81.9500 237.0000 4.8683 + 82.0000 238.0000 4.8785 + 82.0500 237.0000 4.8683 + 82.1000 228.0000 4.7749 + 82.1500 240.0000 4.8990 + 82.2000 234.0000 4.8374 + 82.2500 226.0000 4.7539 + 82.3000 229.0000 4.7854 + 82.3500 228.0000 4.7749 + 82.4000 233.0000 4.8270 + 82.4500 243.0000 4.9295 + 82.5000 241.0000 4.9092 + 82.5500 257.0000 5.0695 + 82.6000 279.0000 5.2820 + 82.6500 305.0000 5.5227 + 82.7000 345.0000 5.8737 + 82.7500 410.0000 6.4031 + 82.8000 455.0000 6.7454 + 82.8500 545.0000 7.3824 + 82.9000 622.0000 7.8867 + 82.9500 673.0000 8.2037 + 83.0000 725.0000 8.5147 + 83.0500 717.0000 8.4676 + 83.1000 661.0000 8.1302 + 83.1500 592.0000 7.6942 + 83.2000 518.0000 7.1972 + 83.2500 443.0000 6.6558 + 83.3000 371.0000 6.0910 + 83.3500 336.0000 5.7966 + 83.4000 290.0000 5.3852 + 83.4500 265.0000 5.1478 + 83.5000 252.0000 5.0200 + 83.5500 250.0000 5.0000 + 83.6000 244.0000 4.9396 + 83.6500 242.0000 4.9193 + 83.7000 241.0000 4.9092 + 83.7500 243.0000 4.9295 + 83.8000 248.0000 4.9800 + 83.8500 253.0000 5.0299 + 83.9000 252.0000 5.0200 + 83.9500 264.0000 5.1381 + 84.0000 266.0000 5.1575 + 84.0500 282.0000 5.3104 + 84.1000 291.0000 5.3944 + 84.1500 313.0000 5.5946 + 84.2000 346.0000 5.8822 + 84.2500 374.0000 6.1156 + 84.3000 415.0000 6.4420 + 84.3500 430.0000 6.5574 + 84.4000 433.0000 6.5803 + 84.4500 430.0000 6.5574 + 84.5000 406.0000 6.3718 + 84.5500 384.0000 6.1968 + 84.6000 349.0000 5.9076 + 84.6500 318.0000 5.6391 + 84.7000 307.0000 5.5408 + 84.7500 298.0000 5.4589 + 84.8000 296.0000 5.4406 + 84.8500 304.0000 5.5136 + 84.9000 313.0000 5.5946 + 84.9500 328.0000 5.7271 + 85.0000 346.0000 5.8822 + 85.0500 341.0000 5.8395 + 85.1000 335.0000 5.7879 + 85.1500 324.0000 5.6921 + 85.2000 336.0000 5.7966 + 85.2500 341.0000 5.8395 + 85.3000 341.0000 5.8395 + 85.3500 370.0000 6.0828 + 85.4000 414.0000 6.4343 + 85.4500 442.0000 6.6483 + 85.5000 490.0000 7.0000 + 85.5500 520.0000 7.2111 + 85.6000 532.0000 7.2938 + 85.6500 548.0000 7.4027 + 85.7000 561.0000 7.4900 + 85.7500 567.0000 7.5299 + 85.8000 585.0000 7.6485 + 85.8500 584.0000 7.6420 + 85.9000 558.0000 7.4699 + 85.9500 527.0000 7.2595 + 86.0000 481.0000 6.9354 + 86.0500 424.0000 6.5115 + 86.1000 370.0000 6.0828 + 86.1500 333.0000 5.7706 + 86.2000 312.0000 5.5857 + 86.2500 301.0000 5.4863 + 86.3000 307.0000 5.5408 + 86.3500 314.0000 5.6036 + 86.4000 340.0000 5.8310 + 86.4500 379.0000 6.1563 + 86.5000 427.0000 6.5345 + 86.5500 467.0000 6.8337 + 86.6000 535.0000 7.3144 + 86.6500 584.0000 7.6420 + 86.7000 602.0000 7.7589 + 86.7500 580.0000 7.6158 + 86.8000 532.0000 7.2938 + 86.8500 481.0000 6.9354 + 86.9000 426.0000 6.5269 + 86.9500 379.0000 6.1563 + 87.0000 329.0000 5.7359 + 87.0500 303.0000 5.5045 + 87.1000 288.0000 5.3666 + 87.1500 271.0000 5.2058 + 87.2000 269.0000 5.1865 + 87.2500 267.0000 5.1672 + 87.3000 263.0000 5.1284 + 87.3500 267.0000 5.1672 + 87.4000 260.0000 5.0990 + 87.4500 260.0000 5.0990 + 87.5000 263.0000 5.1284 + 87.5500 263.0000 5.1284 + 87.6000 270.0000 5.1962 + 87.6500 278.0000 5.2726 + 87.7000 293.0000 5.4129 + 87.7500 318.0000 5.6391 + 87.8000 364.0000 6.0332 + 87.8500 424.0000 6.5115 + 87.9000 512.0000 7.1554 + 87.9500 643.0000 8.0187 + 88.0000 817.0000 9.0388 + 88.0500 982.0000 9.9096 + 88.1000 1163.0000 10.7842 + 88.1500 1289.0000 11.3534 + 88.2000 1373.0000 11.7175 + 88.2500 1393.0000 11.8025 + 88.3000 1348.0000 11.6103 + 88.3500 1244.0000 11.1535 + 88.4000 1157.0000 10.7564 + 88.4500 1077.0000 10.3779 + 88.5000 1020.0000 10.0995 + 88.5500 965.0000 9.8234 + 88.6000 907.0000 9.5237 + 88.6500 858.0000 9.2628 + 88.7000 771.0000 8.7807 + 88.7500 647.0000 8.0436 + 88.8000 555.0000 7.4498 + 88.8500 468.0000 6.8411 + 88.9000 405.0000 6.3640 + 88.9500 348.0000 5.8992 + 89.0000 316.0000 5.6214 + 89.0500 291.0000 5.3944 + 89.1000 277.0000 5.2631 + 89.1500 278.0000 5.2726 + 89.2000 270.0000 5.1962 + 89.2500 262.0000 5.1186 + 89.3000 268.0000 5.1769 + 89.3500 270.0000 5.1962 + 89.4000 279.0000 5.2820 + 89.4500 287.0000 5.3572 + 89.5000 300.0000 5.4772 + 89.5500 319.0000 5.6480 + 89.6000 347.0000 5.8907 + 89.6500 378.0000 6.1482 + 89.7000 420.0000 6.4807 + 89.7500 469.0000 6.8484 + 89.8000 536.0000 7.3212 + 89.8500 645.0000 8.0312 + 89.9000 773.0000 8.7920 + 89.9500 925.0000 9.6177 + 90.0000 1115.0000 10.5594 + 90.0500 1254.0000 11.1982 + 90.1000 1367.0000 11.6919 + 90.1500 1400.0000 11.8322 + 90.2000 1327.0000 11.5195 + 90.2500 1188.0000 10.8995 + 90.3000 1038.0000 10.1882 + 90.3500 879.0000 9.3755 + 90.4000 738.0000 8.5907 + 90.4500 644.0000 8.0250 + 90.5000 594.0000 7.7071 + 90.5500 601.0000 7.7524 + 90.6000 643.0000 8.0187 + 90.6500 697.0000 8.3487 + 90.7000 786.0000 8.8657 + 90.7500 842.0000 9.1761 + 90.8000 847.0000 9.2033 + 90.8500 791.0000 8.8938 + 90.9000 702.0000 8.3785 + 90.9500 592.0000 7.6942 + 91.0000 508.0000 7.1274 + 91.0500 418.0000 6.4653 + 91.1000 362.0000 6.0166 + 91.1500 328.0000 5.7271 + 91.2000 299.0000 5.4681 + 91.2500 279.0000 5.2820 + 91.3000 270.0000 5.1962 + 91.3500 257.0000 5.0695 + 91.4000 253.0000 5.0299 + 91.4500 258.0000 5.0794 + 91.5000 257.0000 5.0695 + 91.5500 249.0000 4.9900 + 91.6000 245.0000 4.9497 + 91.6500 257.0000 5.0695 + 91.7000 260.0000 5.0990 + 91.7500 284.0000 5.3292 + 91.8000 296.0000 5.4406 + 91.8500 322.0000 5.6745 + 91.9000 343.0000 5.8566 + 91.9500 382.0000 6.1806 + 92.0000 405.0000 6.3640 + 92.0500 411.0000 6.4109 + 92.1000 416.0000 6.4498 + 92.1500 406.0000 6.3718 + 92.2000 372.0000 6.0992 + 92.2500 353.0000 5.9414 + 92.3000 330.0000 5.7446 + 92.3500 317.0000 5.6303 + 92.4000 313.0000 5.5946 + 92.4500 312.0000 5.5857 + 92.5000 309.0000 5.5588 + 92.5500 303.0000 5.5045 + 92.6000 288.0000 5.3666 + 92.6500 276.0000 5.2536 + 92.7000 264.0000 5.1381 + 92.7500 246.0000 4.9598 + 92.8000 249.0000 4.9900 + 92.8500 241.0000 4.9092 + 92.9000 251.0000 5.0100 + 92.9500 243.0000 4.9295 + 93.0000 246.0000 4.9598 + 93.0500 246.0000 4.9598 + 93.1000 249.0000 4.9900 + 93.1500 244.0000 4.9396 + 93.2000 252.0000 5.0200 + 93.2500 252.0000 5.0200 + 93.3000 258.0000 5.0794 + 93.3500 265.0000 5.1478 + 93.4000 263.0000 5.1284 + 93.4500 284.0000 5.3292 + 93.5000 299.0000 5.4681 + 93.5500 320.0000 5.6569 + 93.6000 344.0000 5.8652 + 93.6500 363.0000 6.0249 + 93.7000 372.0000 6.0992 + 93.7500 358.0000 5.9833 + 93.8000 351.0000 5.9245 + 93.8500 354.0000 5.9498 + 93.9000 330.0000 5.7446 + 93.9500 322.0000 5.6745 + 94.0000 334.0000 5.7793 + 94.0500 339.0000 5.8224 + 94.1000 345.0000 5.8737 + 94.1500 357.0000 5.9749 + 94.2000 360.0000 6.0000 + 94.2500 358.0000 5.9833 + 94.3000 372.0000 6.0992 + 94.3500 425.0000 6.5192 + 94.4000 511.0000 7.1484 + 94.4500 626.0000 7.9120 + 94.5000 770.0000 8.7750 + 94.5500 946.0000 9.7263 + 94.6000 1118.0000 10.5736 + 94.6500 1205.0000 10.9772 + 94.7000 1227.0000 11.0770 + 94.7500 1157.0000 10.7564 + 94.8000 1041.0000 10.2029 + 94.8500 873.0000 9.3434 + 94.9000 715.0000 8.4558 + 94.9500 562.0000 7.4967 + 95.0000 446.0000 6.6783 + 95.0500 377.0000 6.1400 + 95.1000 332.0000 5.7619 + 95.1500 297.0000 5.4498 + 95.2000 282.0000 5.3104 + 95.2500 276.0000 5.2536 + 95.3000 264.0000 5.1381 + 95.3500 261.0000 5.1088 + 95.4000 266.0000 5.1575 + 95.4500 261.0000 5.1088 + 95.5000 253.0000 5.0299 + 95.5500 258.0000 5.0794 + 95.6000 262.0000 5.1186 + 95.6500 260.0000 5.0990 + 95.7000 283.0000 5.3198 + 95.7500 307.0000 5.5408 + 95.8000 344.0000 5.8652 + 95.8500 402.0000 6.3403 + 95.9000 453.0000 6.7305 + 95.9500 529.0000 7.2732 + 96.0000 604.0000 7.7717 + 96.0500 661.0000 8.1302 + 96.1000 672.0000 8.1976 + 96.1500 629.0000 7.9310 + 96.2000 588.0000 7.6681 + 96.2500 510.0000 7.1414 + 96.3000 440.0000 6.6332 + 96.3500 377.0000 6.1400 + 96.4000 330.0000 5.7446 + 96.4500 301.0000 5.4863 + 96.5000 280.0000 5.2915 + 96.5500 269.0000 5.1865 + 96.6000 258.0000 5.0794 + 96.6500 252.0000 5.0200 + 96.7000 251.0000 5.0100 + 96.7500 252.0000 5.0200 + 96.8000 256.0000 5.0596 + 96.8500 253.0000 5.0299 + 96.9000 253.0000 5.0299 + 96.9500 253.0000 5.0299 + 97.0000 262.0000 5.1186 + 97.0500 265.0000 5.1478 + 97.1000 284.0000 5.3292 + 97.1500 291.0000 5.3944 + 97.2000 323.0000 5.6833 + 97.2500 374.0000 6.1156 + 97.3000 431.0000 6.5651 + 97.3500 511.0000 7.1484 + 97.4000 602.0000 7.7589 + 97.4500 678.0000 8.2341 + 97.5000 743.0000 8.6197 + 97.5500 756.0000 8.6948 + 97.6000 717.0000 8.4676 + 97.6500 657.0000 8.1056 + 97.7000 581.0000 7.6223 + 97.7500 490.0000 7.0000 + 97.8000 418.0000 6.4653 + 97.8500 364.0000 6.0332 + 97.9000 335.0000 5.7879 + 97.9500 306.0000 5.5317 + 98.0000 290.0000 5.3852 + 98.0500 286.0000 5.3479 + 98.1000 283.0000 5.3198 + 98.1500 283.0000 5.3198 + 98.2000 274.0000 5.2345 + 98.2500 262.0000 5.1186 + 98.3000 266.0000 5.1575 + 98.3500 261.0000 5.1088 + 98.4000 261.0000 5.1088 + 98.4500 264.0000 5.1381 + 98.5000 269.0000 5.1865 + 98.5500 278.0000 5.2726 + 98.6000 288.0000 5.3666 + 98.6500 306.0000 5.5317 + 98.7000 319.0000 5.6480 + 98.7500 330.0000 5.7446 + 98.8000 343.0000 5.8566 + 98.8500 341.0000 5.8395 + 98.9000 325.0000 5.7009 + 98.9500 318.0000 5.6391 + 99.0000 298.0000 5.4589 + 99.0500 299.0000 5.4681 + 99.1000 288.0000 5.3666 + 99.1500 309.0000 5.5588 + 99.2000 344.0000 5.8652 + 99.2500 382.0000 6.1806 + 99.3000 422.0000 6.4962 + 99.3500 470.0000 6.8557 + 99.4000 512.0000 7.1554 + 99.4500 514.0000 7.1694 + 99.5000 515.0000 7.1764 + 99.5500 488.0000 6.9857 + 99.6000 440.0000 6.6332 + 99.6500 396.0000 6.2929 + 99.7000 366.0000 6.0498 + 99.7500 332.0000 5.7619 + 99.8000 311.0000 5.5767 + 99.8500 305.0000 5.5227 + 99.9000 300.0000 5.4772 + 99.9500 293.0000 5.4129 + 100.0000 286.0000 5.3479 + 100.0500 306.0000 5.5317 + 100.1000 313.0000 5.5946 + 100.1500 317.0000 5.6303 + 100.2000 327.0000 5.7184 + 100.2500 343.0000 5.8566 + 100.3000 330.0000 5.7446 + 100.3500 320.0000 5.6569 + 100.4000 307.0000 5.5408 + 100.4500 298.0000 5.4589 + 100.5000 282.0000 5.3104 + 100.5500 274.0000 5.2345 + 100.6000 266.0000 5.1575 + 100.6500 274.0000 5.2345 + 100.7000 271.0000 5.2058 + 100.7500 274.0000 5.2345 + 100.8000 290.0000 5.3852 + 100.8500 302.0000 5.4955 + 100.9000 321.0000 5.6657 + 100.9500 350.0000 5.9161 + 101.0000 367.0000 6.0581 + 101.0500 386.0000 6.2129 + 101.1000 394.0000 6.2769 + 101.1500 370.0000 6.0828 + 101.2000 356.0000 5.9666 + 101.2500 332.0000 5.7619 + 101.3000 310.0000 5.5678 + 101.3500 288.0000 5.3666 + 101.4000 279.0000 5.2820 + 101.4500 281.0000 5.3009 + 101.5000 274.0000 5.2345 + 101.5500 284.0000 5.3292 + 101.6000 280.0000 5.2915 + 101.6500 270.0000 5.1962 + 101.7000 278.0000 5.2726 + 101.7500 269.0000 5.1865 + 101.8000 273.0000 5.2249 + 101.8500 268.0000 5.1769 + 101.9000 267.0000 5.1672 + 101.9500 265.0000 5.1478 + 102.0000 257.0000 5.3437 + 102.0500 258.0000 5.3541 + 102.1000 267.0000 5.4467 + 102.1500 267.0000 5.4467 + 102.2000 277.0000 5.5478 + 102.2500 287.0000 5.6470 + 102.3000 302.0000 5.7927 + 102.3500 332.0000 6.0736 + 102.4000 360.0000 6.3246 + 102.4500 411.0000 6.7577 + 102.5000 457.0000 7.1259 + 102.5500 524.0000 7.6303 + 102.6000 608.0000 8.2192 + 102.6500 699.0000 8.8129 + 102.7000 861.0000 9.7809 + 102.7500 1096.0000 11.0353 + 102.8000 1377.0000 12.3693 + 102.8500 1685.0000 13.6829 + 102.9000 1901.0000 14.5335 + 102.9500 2069.0000 15.1621 + 103.0000 2016.0000 14.9666 + 103.0500 1800.0000 14.1421 + 103.1000 1500.0000 12.9099 + 103.1500 1181.0000 11.4552 + 103.2000 937.0000 10.2035 + 103.2500 728.0000 8.9938 + 103.3000 629.0000 8.3600 + 103.3500 576.0000 8.0000 + 103.4000 556.0000 7.8599 + 103.4500 535.0000 7.7100 + 103.5000 519.0000 7.5939 + 103.5500 486.0000 7.3485 + 103.6000 465.0000 7.1880 + 103.6500 429.0000 6.9041 + 103.7000 385.0000 6.5405 + 103.7500 361.0000 6.3333 + 103.8000 342.0000 6.1644 + 103.8500 312.0000 5.8878 + 103.9000 293.0000 5.7057 + 103.9500 279.0000 5.5678 + 104.0000 277.0000 5.5478 + 104.0500 265.0000 5.4263 + 104.1000 257.0000 5.3437 + 104.1500 256.0000 5.3333 + 104.2000 250.0000 5.2705 + 104.2500 260.0000 5.3748 + 104.3000 261.0000 5.3852 + 104.3500 258.0000 5.3541 + 104.4000 263.0000 5.4058 + 104.4500 268.0000 5.4569 + 104.5000 284.0000 5.6174 + 104.5500 306.0000 5.8310 + 104.6000 325.0000 6.0093 + 104.6500 337.0000 6.1192 + 104.7000 337.0000 6.1192 + 104.7500 344.0000 6.1824 + 104.8000 340.0000 6.1464 + 104.8500 337.0000 6.1192 + 104.9000 328.0000 6.0369 + 104.9500 321.0000 5.9722 + 105.0000 306.0000 5.8310 + 105.0500 295.0000 5.7252 + 105.1000 289.0000 5.6667 + 105.1500 281.0000 5.5877 + 105.2000 267.0000 5.4467 + 105.2500 266.0000 5.4365 + 105.3000 270.0000 5.4772 + 105.3500 263.0000 5.4058 + 105.4000 256.0000 5.3333 + 105.4500 266.0000 5.4365 + 105.5000 264.0000 5.4160 + 105.5500 259.0000 5.3645 + 105.6000 261.0000 5.3852 + 105.6500 261.0000 5.3852 + 105.7000 258.0000 5.3541 + 105.7500 253.0000 5.3020 + 105.8000 248.0000 5.2493 + 105.8500 244.0000 5.2068 + 105.9000 249.0000 5.2599 + 105.9500 251.0000 5.2810 + 106.0000 245.0000 5.2175 + 106.0500 245.0000 5.2175 + 106.1000 247.0000 5.2387 + 106.1500 247.0000 5.2387 + 106.2000 254.0000 5.3125 + 106.2500 259.0000 5.3645 + 106.3000 250.0000 5.2705 + 106.3500 251.0000 5.2810 + 106.4000 258.0000 5.3541 + 106.4500 252.0000 5.2915 + 106.5000 255.0000 5.3229 + 106.5500 259.0000 5.3645 + 106.6000 256.0000 5.3333 + 106.6500 264.0000 5.4160 + 106.7000 268.0000 5.4569 + 106.7500 281.0000 5.5877 + 106.8000 303.0000 5.8023 + 106.8500 331.0000 6.0645 + 106.9000 371.0000 6.4205 + 106.9500 420.0000 6.8313 + 107.0000 484.0000 7.3333 + 107.0500 532.0000 7.6884 + 107.1000 576.0000 8.0000 + 107.1500 582.0000 8.0416 + 107.2000 563.0000 7.9092 + 107.2500 527.0000 7.6522 + 107.3000 490.0000 7.3786 + 107.3500 465.0000 7.1880 + 107.4000 467.0000 7.2034 + 107.4500 449.0000 7.0632 + 107.5000 416.0000 6.7987 + 107.5500 393.0000 6.6081 + 107.6000 366.0000 6.3770 + 107.6500 331.0000 6.0645 + 107.7000 316.0000 5.9255 + 107.7500 297.0000 5.7446 + 107.8000 294.0000 5.7155 + 107.8500 292.0000 5.6960 + 107.9000 286.0000 5.6372 + 107.9500 295.0000 5.7252 + 108.0000 306.0000 6.1847 + 108.0500 315.0000 6.2750 + 108.1000 334.0000 6.4614 + 108.1500 373.0000 6.8282 + 108.2000 406.0000 7.1239 + 108.2500 447.0000 7.4750 + 108.3000 499.0000 7.8978 + 108.3500 507.0000 7.9608 + 108.4000 506.0000 7.9530 + 108.4500 488.0000 7.8102 + 108.5000 432.0000 7.3485 + 108.5500 391.0000 6.9911 + 108.6000 342.0000 6.5383 + 108.6500 315.0000 6.2750 + 108.7000 292.0000 6.0415 + 108.7500 275.0000 5.8630 + 108.8000 274.0000 5.8523 + 108.8500 259.0000 5.6899 + 108.9000 250.0000 5.5902 + 108.9500 258.0000 5.6789 + 109.0000 252.0000 5.6125 + 109.0500 255.0000 5.6458 + 109.1000 254.0000 5.6347 + 109.1500 253.0000 5.6236 + 109.2000 254.0000 5.6347 + 109.2500 252.0000 5.6125 + 109.3000 257.0000 5.6679 + 109.3500 250.0000 5.5902 + 109.4000 255.0000 5.6458 + 109.4500 251.0000 5.6013 + 109.5000 254.0000 5.6347 + 109.5500 260.0000 5.7009 + 109.6000 249.0000 5.5790 + 109.6500 253.0000 5.6236 + 109.7000 254.0000 5.6347 + 109.7500 259.0000 5.6899 + 109.8000 268.0000 5.7879 + 109.8500 270.0000 5.8095 + 109.9000 284.0000 5.9582 + 109.9500 305.0000 6.1745 + 110.0000 322.0000 6.3443 + 110.0500 364.0000 6.7454 + 110.1000 417.0000 7.2198 + 110.1500 470.0000 7.6649 + 110.2000 573.0000 8.4632 + 110.2500 678.0000 9.2060 + 110.3000 771.0000 9.8171 + 110.3500 847.0000 10.2896 + 110.4000 854.0000 10.3320 + 110.4500 794.0000 9.9624 + 110.5000 720.0000 9.4868 + 110.5500 611.0000 8.7393 + 110.6000 520.0000 8.0623 + 110.6500 463.0000 7.6076 + 110.7000 412.0000 7.1764 + 110.7500 399.0000 7.0622 + 110.8000 416.0000 7.2111 + 110.8500 428.0000 7.3144 + 110.9000 432.0000 7.3485 + 110.9500 420.0000 7.2457 + 111.0000 402.0000 7.0887 + 111.0500 364.0000 6.7454 + 111.1000 348.0000 6.5955 + 111.1500 334.0000 6.4614 + 111.2000 321.0000 6.3344 + 111.2500 330.0000 6.4226 + 111.3000 342.0000 6.5383 + 111.3500 380.0000 6.8920 + 111.4000 385.0000 6.9372 + 111.4500 420.0000 7.2457 + 111.5000 441.0000 7.4246 + 111.5500 465.0000 7.6240 + 111.6000 444.0000 7.4498 + 111.6500 406.0000 7.1239 + 111.7000 383.0000 6.9192 + 111.7500 345.0000 6.5670 + 111.8000 332.0000 6.4420 + 111.8500 321.0000 6.3344 + 111.9000 308.0000 6.2048 + 111.9500 292.0000 6.0415 + 112.0000 303.0000 6.1543 + 112.0500 314.0000 6.2650 + 112.1000 333.0000 6.4517 + 112.1500 379.0000 6.8829 + 112.2000 438.0000 7.3993 + 112.2500 505.0000 7.9451 + 112.3000 594.0000 8.6168 + 112.3500 659.0000 9.0761 + 112.4000 717.0000 9.4670 + 112.4500 738.0000 9.6047 + 112.5000 710.0000 9.4207 + 112.5500 642.0000 8.9582 + 112.6000 547.0000 8.2689 + 112.6500 492.0000 7.8422 + 112.7000 421.0000 7.2543 + 112.7500 386.0000 6.9462 + 112.8000 344.0000 6.5574 + 112.8500 337.0000 6.4904 + 112.9000 350.0000 6.6144 + 112.9500 364.0000 6.7454 + 113.0000 415.0000 7.2024 + 113.0500 506.0000 7.9530 + 113.1000 586.0000 8.5586 + 113.1500 674.0000 9.1788 + 113.2000 750.0000 9.6825 + 113.2500 787.0000 9.9184 + 113.3000 753.0000 9.7018 + 113.3500 682.0000 9.2331 + 113.4000 597.0000 8.6386 + 113.4500 499.0000 7.8978 + 113.5000 417.0000 7.2198 + 113.5500 362.0000 6.7268 + 113.6000 340.0000 6.5192 + 113.6500 302.0000 6.1441 + 113.7000 286.0000 5.9791 + 113.7500 280.0000 5.9161 + 113.8000 283.0000 5.9477 + 113.8500 276.0000 5.8737 + 113.9000 282.0000 5.9372 + 113.9500 284.0000 5.9582 + 114.0000 295.0000 6.4918 + 114.0500 310.0000 6.6548 + 114.1000 319.0000 6.7507 + 114.1500 321.0000 6.7718 + 114.2000 304.0000 6.5900 + 114.2500 298.0000 6.5247 + 114.3000 293.0000 6.4697 + 114.3500 283.0000 6.3583 + 114.4000 277.0000 6.2906 + 114.4500 269.0000 6.1991 + 114.5000 265.0000 6.1528 + 114.5500 277.0000 6.2906 + 114.6000 283.0000 6.3583 + 114.6500 283.0000 6.3583 + 114.7000 293.0000 6.4697 + 114.7500 303.0000 6.5792 + 114.8000 320.0000 6.7612 + 114.8500 316.0000 6.7188 + 114.9000 331.0000 6.8765 + 114.9500 346.0000 7.0305 + 115.0000 327.0000 6.8348 + 115.0500 328.0000 6.8452 + 115.1000 306.0000 6.6117 + 115.1500 291.0000 6.4476 + 115.2000 286.0000 6.3920 + 115.2500 278.0000 6.3019 + 115.3000 273.0000 6.2450 + 115.3500 267.0000 6.1760 + 115.4000 272.0000 6.2335 + 115.4500 257.0000 6.0592 + 115.5000 260.0000 6.0945 + 115.5500 265.0000 6.1528 + 115.6000 264.0000 6.1412 + 115.6500 272.0000 6.2335 + 115.7000 270.0000 6.2106 + 115.7500 268.0000 6.1875 + 115.8000 269.0000 6.1991 + 115.8500 287.0000 6.4031 + 115.9000 292.0000 6.4587 + 115.9500 295.0000 6.4918 + 116.0000 317.0000 6.7295 + 116.0500 335.0000 6.9179 + 116.1000 364.0000 7.2111 + 116.1500 410.0000 7.6532 + 116.2000 477.0000 8.2549 + 116.2500 556.0000 8.9123 + 116.3000 642.0000 9.5768 + 116.3500 755.0000 10.3854 + 116.4000 864.0000 11.1098 + 116.4500 946.0000 11.6251 + 116.5000 970.0000 11.7716 + 116.5500 941.0000 11.5943 + 116.6000 870.0000 11.1484 + 116.6500 759.0000 10.4129 + 116.7000 647.0000 9.6140 + 116.7500 540.0000 8.7831 + 116.8000 468.0000 8.1766 + 116.8500 418.0000 7.7275 + 116.9000 379.0000 7.3582 + 116.9500 381.0000 7.3776 + 117.0000 405.0000 7.6064 + 117.0500 446.0000 7.9821 + 117.1000 476.0000 8.2462 + 117.1500 523.0000 8.6437 + 117.2000 561.0000 8.9523 + 117.2500 555.0000 8.9043 + 117.3000 529.0000 8.6932 + 117.3500 485.0000 8.3238 + 117.4000 436.0000 7.8921 + 117.4500 398.0000 7.5404 + 117.5000 355.0000 7.1214 + 117.5500 322.0000 6.7823 + 117.6000 304.0000 6.5900 + 117.6500 285.0000 6.3808 + 117.7000 270.0000 6.2106 + 117.7500 278.0000 6.3019 + 117.8000 260.0000 6.0945 + 117.8500 268.0000 6.1875 + 117.9000 264.0000 6.1412 + 117.9500 265.0000 6.1528 + 118.0000 263.0000 6.1296 + 118.0500 267.0000 6.1760 + 118.1000 286.0000 6.3920 + 118.1500 293.0000 6.4697 + 118.2000 291.0000 6.4476 + 118.2500 319.0000 6.7507 + 118.3000 366.0000 7.2309 + 118.3500 411.0000 7.6625 + 118.4000 461.0000 8.1152 + 118.4500 489.0000 8.3581 + 118.5000 521.0000 8.6272 + 118.5500 555.0000 8.9043 + 118.6000 550.0000 8.8641 + 118.6500 511.0000 8.5440 + 118.7000 486.0000 8.3324 + 118.7500 436.0000 7.8921 + 118.8000 392.0000 7.4833 + 118.8500 368.0000 7.2506 + 118.9000 330.0000 6.8661 + 118.9500 328.0000 6.8452 + 119.0000 343.0000 7.0000 + 119.0500 371.0000 7.2801 + 119.1000 394.0000 7.5024 + 119.1500 441.0000 7.9373 + 119.2000 468.0000 8.1766 + 119.2500 469.0000 8.1854 + 119.3000 456.0000 8.0711 + 119.3500 416.0000 7.7090 + 119.4000 394.0000 7.5024 + 119.4500 361.0000 7.1813 + 119.5000 330.0000 6.8661 + 119.5500 312.0000 6.6762 + 119.6000 293.0000 6.4697 + 119.6500 285.0000 6.3808 + 119.7000 286.0000 6.3920 + 119.7500 275.0000 6.2678 + 119.8000 274.0000 6.2564 + 119.8500 281.0000 6.3358 + 119.9000 279.0000 6.3133 + 119.9500 298.0000 6.5247 + 120.0000 312.0000 7.2111 diff --git a/Notebooks/PbSO4/FittingPowder1D.ipynb b/Notebooks/PbSO4/FittingPowder1D.ipynb new file mode 100644 index 00000000..c8e59cf6 --- /dev/null +++ b/Notebooks/PbSO4/FittingPowder1D.ipynb @@ -0,0 +1,3221 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fitting to the experimental data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook we will show how to load a CIF file, an experimental profile and how to perform a parameter fit.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Import Python packages" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GSAS-II binary directory: /home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/GSASII/bindist\n", + "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" + ] + } + ], + "source": [ + "# esyScience, technique-independent\n", + "from easyCore import np\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "# esyScience, diffraction\n", + "from easyDiffractionLib import Phases\n", + "from easyDiffractionLib.sample import Sample as Job\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", + "\n", + "# Vizualization\n", + "import py3Dmol\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Sample ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show a CIF file content" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "data_PbSO4\n", + "\n", + "_space_group_name_H-M_alt 'P n m a'\n", + "\n", + "_cell_length_a 8.480\n", + "_cell_length_b 5.398\n", + "_cell_length_c 6.958\n", + "_cell_angle_alpha 90.0\n", + "_cell_angle_beta 90.0\n", + "_cell_angle_gamma 90.0\n", + "\n", + "loop_\n", + " _atom_site_label\n", + " _atom_site_type_symbol\n", + " _atom_site_fract_x\n", + " _atom_site_fract_y\n", + " _atom_site_fract_z\n", + " _atom_site_occupancy\n", + " _atom_site_adp_type\n", + " _atom_site_U_iso_or_equiv\n", + " Pb Pb 0.188 0.25 0.167 1.0 Uiso 0.01\n", + " S S 0.063 0.25 0.686 1.0 Uiso 0.01\n", + " O1 O -0.095 0.25 0.600 1.0 Uiso 0.01\n", + " O2 O 0.181 0.25 0.543 1.0 Uiso 0.01\n", + " O3 O 0.085 0.026 0.806 1.0 Uiso 0.01\n", + "\n" + ] + } + ], + "source": [ + "cif_fname = 'PbSO4.cif'\n", + "\n", + "with open(cif_fname, 'r') as f:\n", + " content = f.read()\n", + " \n", + "print(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load structure from a CIF file" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collection of 1 phases.\n", + "Phase `PbSO4`\n" + ] + } + ], + "source": [ + "phases = Phases.from_cif_file(cif_fname)\n", + "phase = phases[0]\n", + "\n", + "print(phases)\n", + "print(phase)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualise the structure" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "text/html": [ + "
\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "structure = py3Dmol.view()\n", + "structure.addModel(phase.to_cif_str(), 'cif')\n", + "structure.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol','radius': 0.1}})\n", + "structure.addUnitCell()\n", + "structure.replicateUnitCell(2,2,1)\n", + "structure.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Experiment ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show measured data as text" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992)\n", + " 10.0000 220.0000 14.8324\n", + " 10.0500 214.0000 14.6287\n", + " 10.1000 219.0000 14.7986\n", + " 10.1500 224.0000 14.9666\n", + " 10.2000 198.0000 14.0712\n", + " 10.2500 229.0000 15.1327\n", + " 10.3000 224.0000 14.9666\n", + " 10.3500 216.0000 14.6969\n", + " 10.4000 202.0000 14.2127\n", + " 10.4500 229.0000 15.1327\n", + " 10.5000 202.0000 14.2127\n", + " 10.5500 215.0000 14.6629\n", + " 10.6000 215.0000 14.6629\n", + " 10.6500 196.0000 14.0000\n", + " 10.7000 235.0000 15.3297\n", + " 10.7500 207.0000 14.3875\n", + " 10.8000 205.0000 14.3178\n", + " 10.8500 238.0000 15.4272\n", + " 10.9000 202.0000 14.2127\n", + " 10.9500 213.0000 14.5945\n", + " 11.0000 226.0000 15.0333\n", + " 11.0500 198.0000 14.0712\n", + " 11.1000 222.0000 14.8997\n", + " 11.1500 186.0000 13.6382\n", + " 11.2000 216.0000 14.6969\n", + " 11.2500 218.0000 14.7648\n", + " 11.3000 225.0000 15.0000\n", + " 11.3500 200.0000 14.1421\n", + " 11.4000 196.0000 14.0000\n", + " 11.4500 224.0000 14.9666\n", + " 11.5000 199.0000 14.1067\n", + " 11.5500 204.0000 14.2829\n", + " 11.6000 189.0000 13.7477\n", + " 11.6500 211.0000 14.5258\n", + " 11.7000 190.0000 13.7840\n", + " 11.7500 184.0000 13.5647\n", + " 11.8000 204.0000 14.2829\n", + " 11.8500 204.0000 14.2829\n", + " 11.9000 219.0000 14.7986\n", + " 11.9500 207.0000 14.3875\n", + " 12.0000 227.0000 15.0665\n", + " 12.0500 211.0000 10.2713\n", + " 12.1000 193.0000 9.8234\n", + " 12.1500 206.0000 10.1489\n", + " 12.2000 208.0000 10.1980\n", + " 12.2500 191.0000 9.7724\n", + " 12.3000 194.0000 9.8489\n", + " 12.3500 185.0000 9.6177\n", + " 12.4000 200.0000 10.0000\n", + " 12.4500 203.0000 10.0747\n", + " 12.5000 197.0000 9.9247\n", + " 12.5500 203.0000 10.0747\n", + " 12.6000 200.0000 10.0000\n", + " 12.6500 200.0000 10.0000\n", + " 12.7000 205.0000 10.1242\n", + " 12.7500 208.0000 10.1980\n", + " 12.8000 205.0000 10.1242\n", + " 12.8500 201.0000 10.0250\n", + " 12.9000 221.0000 10.5119\n", + " 12.9500 218.0000 10.4403\n", + " 13.0000 218.0000 10.4403\n", + " 13.0500 216.0000 10.3923\n", + " 13.1000 202.0000 10.0499\n", + " 13.1500 206.0000 10.1489\n", + " 13.2000 197.0000 9.9247\n", + " 13.2500 210.0000 10.2470\n", + " 13.3000 199.0000 9.9750\n", + " 13.3500 219.0000 10.4642\n", + " 13.4000 192.0000 9.7980\n", + " 13.4500 211.0000 10.2713\n", + " 13.5000 199.0000 9.9750\n", + " 13.5500 196.0000 9.8995\n", + " 13.6000 195.0000 9.8742\n", + " 13.6500 203.0000 10.0747\n", + " 13.7000 202.0000 10.0499\n", + " 13.7500 200.0000 10.0000\n", + " 13.8000 199.0000 9.9750\n", + " 13.8500 191.0000 9.7724\n", + " 13.9000 204.0000 10.0995\n", + " 13.9500 191.0000 9.7724\n", + " 14.0000 200.0000 10.0000\n", + " 14.0500 199.0000 9.9750\n", + " 14.1000 197.0000 9.9247\n", + " 14.1500 202.0000 10.0499\n", + " 14.2000 210.0000 10.2470\n", + " 14.2500 202.0000 10.0499\n", + " 14.3000 198.0000 9.9499\n", + " 14.3500 191.0000 9.7724\n", + " 14.4000 194.0000 9.8489\n", + " 14.4500 198.0000 9.9499\n", + " 14.5000 194.0000 9.8489\n", + " 14.5500 193.0000 9.8234\n", + " 14.6000 212.0000 10.2956\n", + " 14.6500 214.0000 10.3441\n", + " 14.7000 197.0000 9.9247\n", + " 14.7500 195.0000 9.8742\n", + " 14.8000 205.0000 10.1242\n", + " 14.8500 209.0000 10.2225\n", + " 14.9000 203.0000 10.0747\n", + " 14.9500 197.0000 9.9247\n", + " 15.0000 191.0000 9.7724\n", + " 15.0500 192.0000 9.7980\n", + " 15.1000 215.0000 10.3682\n", + " 15.1500 194.0000 9.8489\n", + " 15.2000 189.0000 9.7211\n", + " 15.2500 188.0000 9.6954\n", + " 15.3000 202.0000 10.0499\n", + " 15.3500 201.0000 10.0250\n", + " 15.4000 198.0000 9.9499\n", + " 15.4500 208.0000 10.1980\n", + " 15.5000 197.0000 9.9247\n", + " 15.5500 187.0000 9.6695\n", + " 15.6000 187.0000 9.6695\n", + " 15.6500 190.0000 9.7468\n", + " 15.7000 197.0000 9.9247\n", + " 15.7500 200.0000 10.0000\n", + " 15.8000 193.0000 9.8234\n", + " 15.8500 180.0000 9.4868\n", + " 15.9000 194.0000 9.8489\n", + " 15.9500 206.0000 10.1489\n", + " 16.0000 195.0000 9.8742\n", + " 16.0500 193.0000 9.8234\n", + " 16.1000 205.0000 10.1242\n", + " 16.1500 194.0000 9.8489\n", + " 16.2000 196.0000 9.8995\n", + " 16.2500 194.0000 9.8489\n", + " 16.3000 199.0000 9.9750\n", + " 16.3500 207.0000 10.1735\n", + " 16.4000 188.0000 9.6954\n", + " 16.4500 203.0000 10.0747\n", + " 16.5000 188.0000 9.6954\n", + " 16.5500 180.0000 9.4868\n", + " 16.6000 198.0000 9.9499\n", + " 16.6500 200.0000 10.0000\n", + " 16.7000 201.0000 10.0250\n", + " 16.7500 210.0000 10.2470\n", + " 16.8000 206.0000 10.1489\n", + " 16.8500 189.0000 9.7211\n", + " 16.9000 194.0000 9.8489\n", + " 16.9500 187.0000 9.6695\n", + " 17.0000 195.0000 9.8742\n", + " 17.0500 201.0000 10.0250\n", + " 17.1000 197.0000 9.9247\n", + " 17.1500 206.0000 10.1489\n", + " 17.2000 208.0000 10.1980\n", + " 17.2500 199.0000 9.9750\n", + " 17.3000 192.0000 9.7980\n", + " 17.3500 193.0000 9.8234\n", + " 17.4000 204.0000 10.0995\n", + " 17.4500 201.0000 10.0250\n", + " 17.5000 200.0000 10.0000\n", + " 17.5500 177.0000 9.4074\n", + " 17.6000 193.0000 9.8234\n", + " 17.6500 199.0000 9.9750\n", + " 17.7000 201.0000 10.0250\n", + " 17.7500 194.0000 9.8489\n", + " 17.8000 184.0000 9.5917\n", + " 17.8500 192.0000 9.7980\n", + " 17.9000 199.0000 9.9750\n", + " 17.9500 190.0000 9.7468\n", + " 18.0000 183.0000 9.5656\n", + " 18.0500 189.0000 7.9373\n", + " 18.1000 196.0000 8.0829\n", + " 18.1500 196.0000 8.0829\n", + " 18.2000 198.0000 8.1240\n", + " 18.2500 210.0000 8.3666\n", + " 18.3000 212.0000 8.4063\n", + " 18.3500 219.0000 8.5440\n", + " 18.4000 198.0000 8.1240\n", + " 18.4500 195.0000 8.0623\n", + " 18.5000 198.0000 8.1240\n", + " 18.5500 191.0000 7.9791\n", + " 18.6000 193.0000 8.0208\n", + " 18.6500 197.0000 8.1035\n", + " 18.7000 194.0000 8.0416\n", + " 18.7500 187.0000 7.8951\n", + " 18.8000 209.0000 8.3467\n", + " 18.8500 187.0000 7.8951\n", + " 18.9000 198.0000 8.1240\n", + " 18.9500 206.0000 8.2865\n", + " 19.0000 197.0000 8.1035\n", + " 19.0500 191.0000 7.9791\n", + " 19.1000 200.0000 8.1650\n", + " 19.1500 207.0000 8.3066\n", + " 19.2000 205.0000 8.2664\n", + " 19.2500 198.0000 8.1240\n", + " 19.3000 196.0000 8.0829\n", + " 19.3500 209.0000 8.3467\n", + " 19.4000 211.0000 8.3865\n", + " 19.4500 203.0000 8.2260\n", + " 19.5000 200.0000 8.1650\n", + " 19.5500 192.0000 8.0000\n", + " 19.6000 208.0000 8.3267\n", + " 19.6500 213.0000 8.4261\n", + " 19.7000 221.0000 8.5829\n", + " 19.7500 216.0000 8.4853\n", + " 19.8000 226.0000 8.6795\n", + " 19.8500 228.0000 8.7178\n", + " 19.9000 228.0000 8.7178\n", + " 19.9500 215.0000 8.4656\n", + " 20.0000 224.0000 8.6410\n", + " 20.0500 226.0000 8.6795\n", + " 20.1000 213.0000 8.4261\n", + " 20.1500 239.0000 8.9256\n", + " 20.2000 250.0000 9.1287\n", + " 20.2500 247.0000 9.0738\n", + " 20.3000 240.0000 8.9443\n", + " 20.3500 231.0000 8.7750\n", + " 20.4000 236.0000 8.8694\n", + " 20.4500 223.0000 8.6217\n", + " 20.5000 231.0000 8.7750\n", + " 20.5500 226.0000 8.6795\n", + " 20.6000 214.0000 8.4459\n", + " 20.6500 208.0000 8.3267\n", + " 20.7000 214.0000 8.4459\n", + " 20.7500 196.0000 8.0829\n", + " 20.8000 204.0000 8.2462\n", + " 20.8500 199.0000 8.1445\n", + " 20.9000 186.0000 7.8740\n", + " 20.9500 192.0000 8.0000\n", + " 21.0000 199.0000 8.1445\n", + " 21.0500 200.0000 8.1650\n", + " 21.1000 184.0000 7.8316\n", + " 21.1500 184.0000 7.8316\n", + " 21.2000 189.0000 7.9373\n", + " 21.2500 182.0000 7.7889\n", + " 21.3000 184.0000 7.8316\n", + " 21.3500 185.0000 7.8528\n", + " 21.4000 195.0000 8.0623\n", + " 21.4500 190.0000 7.9582\n", + " 21.5000 194.0000 8.0416\n", + " 21.5500 185.0000 7.8528\n", + " 21.6000 183.0000 7.8102\n", + " 21.6500 193.0000 8.0208\n", + " 21.7000 194.0000 8.0416\n", + " 21.7500 193.0000 8.0208\n", + " 21.8000 188.0000 7.9162\n", + " 21.8500 191.0000 7.9791\n", + " 21.9000 189.0000 7.9373\n", + " 21.9500 188.0000 7.9162\n", + " 22.0000 201.0000 8.1854\n", + " 22.0500 195.0000 8.0623\n", + " 22.1000 205.0000 8.2664\n", + " 22.1500 200.0000 8.1650\n", + " 22.2000 200.0000 8.1650\n", + " 22.2500 192.0000 8.0000\n", + " 22.3000 197.0000 8.1035\n", + " 22.3500 204.0000 8.2462\n", + " 22.4000 207.0000 8.3066\n", + " 22.4500 192.0000 8.0000\n", + " 22.5000 201.0000 8.1854\n", + " 22.5500 190.0000 7.9582\n", + " 22.6000 195.0000 8.0623\n", + " 22.6500 194.0000 8.0416\n", + " 22.7000 182.0000 7.7889\n", + " 22.7500 189.0000 7.9373\n", + " 22.8000 196.0000 8.0829\n", + " 22.8500 196.0000 8.0829\n", + " 22.9000 200.0000 8.1650\n", + " 22.9500 190.0000 7.9582\n", + " 23.0000 183.0000 7.8102\n", + " 23.0500 199.0000 8.1445\n", + " 23.1000 187.0000 7.8951\n", + " 23.1500 196.0000 8.0829\n", + " 23.2000 191.0000 7.9791\n", + " 23.2500 191.0000 7.9791\n", + " 23.3000 195.0000 8.0623\n", + " 23.3500 194.0000 8.0416\n", + " 23.4000 192.0000 8.0000\n", + " 23.4500 182.0000 7.7889\n", + " 23.5000 188.0000 7.9162\n", + " 23.5500 203.0000 8.2260\n", + " 23.6000 187.0000 7.8951\n", + " 23.6500 192.0000 8.0000\n", + " 23.7000 206.0000 8.2865\n", + " 23.7500 201.0000 8.1854\n", + " 23.8000 184.0000 7.8316\n", + " 23.8500 192.0000 8.0000\n", + " 23.9000 205.0000 8.2664\n", + " 23.9500 196.0000 8.0829\n", + " 24.0000 193.0000 8.0208\n", + " 24.0500 194.0000 6.9642\n", + " 24.1000 195.0000 6.9821\n", + " 24.1500 194.0000 6.9642\n", + " 24.2000 201.0000 7.0887\n", + " 24.2500 193.0000 6.9462\n", + " 24.3000 176.0000 6.6332\n", + " 24.3500 187.0000 6.8374\n", + " 24.4000 188.0000 6.8557\n", + " 24.4500 196.0000 7.0000\n", + " 24.5000 192.0000 6.9282\n", + " 24.5500 185.0000 6.8007\n", + " 24.6000 195.0000 6.9821\n", + " 24.6500 198.0000 7.0356\n", + " 24.7000 205.0000 7.1589\n", + " 24.7500 200.0000 7.0711\n", + " 24.8000 208.0000 7.2111\n", + " 24.8500 195.0000 6.9821\n", + " 24.9000 187.0000 6.8374\n", + " 24.9500 193.0000 6.9462\n", + " 25.0000 197.0000 7.0178\n", + " 25.0500 202.0000 7.1063\n", + " 25.1000 193.0000 6.9462\n", + " 25.1500 196.0000 7.0000\n", + " 25.2000 202.0000 7.1063\n", + " 25.2500 201.0000 7.0887\n", + " 25.3000 197.0000 7.0178\n", + " 25.3500 204.0000 7.1414\n", + " 25.4000 208.0000 7.2111\n", + " 25.4500 206.0000 7.1764\n", + " 25.5000 212.0000 7.2801\n", + " 25.5500 207.0000 7.1937\n", + " 25.6000 207.0000 7.1937\n", + " 25.6500 212.0000 7.2801\n", + " 25.7000 216.0000 7.3485\n", + " 25.7500 218.0000 7.3824\n", + " 25.8000 221.0000 7.4330\n", + " 25.8500 218.0000 7.3824\n", + " 25.9000 207.0000 7.1937\n", + " 25.9500 203.0000 7.1239\n", + " 26.0000 204.0000 7.1414\n", + " 26.0500 202.0000 7.1063\n", + " 26.1000 206.0000 7.1764\n", + " 26.1500 202.0000 7.1063\n", + " 26.2000 202.0000 7.1063\n", + " 26.2500 181.0000 6.7268\n", + " 26.3000 193.0000 6.9462\n", + " 26.3500 205.0000 7.1589\n", + " 26.4000 198.0000 7.0356\n", + " 26.4500 196.0000 7.0000\n", + " 26.5000 197.0000 7.0178\n", + " 26.5500 195.0000 6.9821\n", + " 26.6000 201.0000 7.0887\n", + " 26.6500 205.0000 7.1589\n", + " 26.7000 195.0000 6.9821\n", + " 26.7500 196.0000 7.0000\n", + " 26.8000 196.0000 7.0000\n", + " 26.8500 205.0000 7.1589\n", + " 26.9000 198.0000 7.0356\n", + " 26.9500 200.0000 7.0711\n", + " 27.0000 199.0000 7.0534\n", + " 27.0500 180.0000 6.7082\n", + " 27.1000 187.0000 6.8374\n", + " 27.1500 193.0000 6.9462\n", + " 27.2000 197.0000 7.0178\n", + " 27.2500 197.0000 7.0178\n", + " 27.3000 196.0000 7.0000\n", + " 27.3500 194.0000 6.9642\n", + " 27.4000 197.0000 7.0178\n", + " 27.4500 204.0000 7.1414\n", + " 27.5000 201.0000 7.0887\n", + " 27.5500 187.0000 6.8374\n", + " 27.6000 191.0000 6.9101\n", + " 27.6500 205.0000 7.1589\n", + " 27.7000 200.0000 7.0711\n", + " 27.7500 198.0000 7.0356\n", + " 27.8000 200.0000 7.0711\n", + " 27.8500 204.0000 7.1414\n", + " 27.9000 196.0000 7.0000\n", + " 27.9500 195.0000 6.9821\n", + " 28.0000 194.0000 6.9642\n", + " 28.0500 200.0000 7.0711\n", + " 28.1000 198.0000 7.0356\n", + " 28.1500 201.0000 7.0887\n", + " 28.2000 208.0000 7.2111\n", + " 28.2500 205.0000 7.1589\n", + " 28.3000 211.0000 7.2629\n", + " 28.3500 211.0000 7.2629\n", + " 28.4000 220.0000 7.4162\n", + " 28.4500 220.0000 7.4162\n", + " 28.5000 212.0000 7.2801\n", + " 28.5500 208.0000 7.2111\n", + " 28.6000 214.0000 7.3144\n", + " 28.6500 226.0000 7.5166\n", + " 28.7000 235.0000 7.6649\n", + " 28.7500 233.0000 7.6322\n", + " 28.8000 237.0000 7.6974\n", + " 28.8500 242.0000 7.7782\n", + " 28.9000 242.0000 7.7782\n", + " 28.9500 245.0000 7.8262\n", + " 29.0000 239.0000 7.7298\n", + " 29.0500 226.0000 7.5166\n", + " 29.1000 232.0000 7.6158\n", + " 29.1500 238.0000 7.7136\n", + " 29.2000 226.0000 7.5166\n", + " 29.2500 218.0000 7.3824\n", + " 29.3000 218.0000 7.3824\n", + " 29.3500 214.0000 7.3144\n", + " 29.4000 205.0000 7.1589\n", + " 29.4500 200.0000 7.0711\n", + " 29.5000 193.0000 6.9462\n", + " 29.5500 195.0000 6.9821\n", + " 29.6000 196.0000 7.0000\n", + " 29.6500 195.0000 6.9821\n", + " 29.7000 207.0000 7.1937\n", + " 29.7500 215.0000 7.3314\n", + " 29.8000 207.0000 7.1937\n", + " 29.8500 218.0000 7.3824\n", + " 29.9000 218.0000 7.3824\n", + " 29.9500 220.0000 7.4162\n", + " 30.0000 220.0000 7.4162\n", + " 30.0500 229.0000 6.7676\n", + " 30.1000 236.0000 6.8702\n", + " 30.1500 254.0000 7.1274\n", + " 30.2000 264.0000 7.2664\n", + " 30.2500 280.0000 7.4833\n", + " 30.3000 289.0000 7.6026\n", + " 30.3500 289.0000 7.6026\n", + " 30.4000 303.0000 7.7846\n", + " 30.4500 302.0000 7.7717\n", + " 30.5000 297.0000 7.7071\n", + " 30.5500 281.0000 7.4967\n", + " 30.6000 278.0000 7.4565\n", + " 30.6500 280.0000 7.4833\n", + " 30.7000 265.0000 7.2801\n", + " 30.7500 258.0000 7.1833\n", + " 30.8000 243.0000 6.9714\n", + " 30.8500 240.0000 6.9282\n", + " 30.9000 232.0000 6.8118\n", + " 30.9500 231.0000 6.7971\n", + " 31.0000 233.0000 6.8264\n", + " 31.0500 246.0000 7.0143\n", + " 31.1000 248.0000 7.0427\n", + " 31.1500 249.0000 7.0569\n", + " 31.2000 256.0000 7.1554\n", + " 31.2500 272.0000 7.3756\n", + " 31.3000 289.0000 7.6026\n", + " 31.3500 311.0000 7.8867\n", + " 31.4000 340.0000 8.2462\n", + " 31.4500 363.0000 8.5206\n", + " 31.5000 393.0000 8.8657\n", + " 31.5500 440.0000 9.3808\n", + " 31.6000 474.0000 9.7365\n", + " 31.6500 482.0000 9.8183\n", + " 31.7000 492.0000 9.9197\n", + " 31.7500 508.0000 10.0797\n", + " 31.8000 494.0000 9.9398\n", + " 31.8500 475.0000 9.7468\n", + " 31.9000 439.0000 9.3702\n", + " 31.9500 413.0000 9.0885\n", + " 32.0000 368.0000 8.5790\n", + " 32.0500 331.0000 8.1363\n", + " 32.1000 299.0000 7.7330\n", + " 32.1500 286.0000 7.5631\n", + " 32.2000 262.0000 7.2388\n", + " 32.2500 241.0000 6.9426\n", + " 32.3000 238.0000 6.8993\n", + " 32.3500 252.0000 7.0993\n", + " 32.4000 267.0000 7.3075\n", + " 32.4500 276.0000 7.4297\n", + " 32.5000 278.0000 7.4565\n", + " 32.5500 300.0000 7.7460\n", + " 32.6000 325.0000 8.0623\n", + " 32.6500 336.0000 8.1976\n", + " 32.7000 359.0000 8.4735\n", + " 32.7500 405.0000 9.0000\n", + " 32.8000 458.0000 9.5708\n", + " 32.8500 501.0000 10.0100\n", + " 32.9000 564.0000 10.6207\n", + " 32.9500 640.0000 11.3137\n", + " 33.0000 719.0000 11.9917\n", + " 33.0500 783.0000 12.5140\n", + " 33.1000 837.0000 12.9383\n", + " 33.1500 851.0000 13.0461\n", + " 33.2000 866.0000 13.1605\n", + " 33.2500 828.0000 12.8686\n", + " 33.3000 763.0000 12.3531\n", + " 33.3500 697.0000 11.8068\n", + " 33.4000 634.0000 11.2606\n", + " 33.4500 541.0000 10.4019\n", + " 33.5000 465.0000 9.6437\n", + " 33.5500 391.0000 8.8431\n", + " 33.6000 351.0000 8.3785\n", + " 33.6500 301.0000 7.7589\n", + " 33.7000 284.0000 7.5366\n", + " 33.7500 260.0000 7.2111\n", + " 33.8000 248.0000 7.0427\n", + " 33.8500 257.0000 7.1694\n", + " 33.9000 242.0000 6.9570\n", + " 33.9500 246.0000 7.0143\n", + " 34.0000 263.0000 7.2526\n", + " 34.0500 271.0000 7.3621\n", + " 34.1000 281.0000 7.4967\n", + " 34.1500 302.0000 7.7717\n", + " 34.2000 309.0000 7.8613\n", + " 34.2500 335.0000 8.1854\n", + " 34.3000 342.0000 8.2704\n", + " 34.3500 345.0000 8.3066\n", + " 34.4000 356.0000 8.4380\n", + " 34.4500 351.0000 8.3785\n", + " 34.5000 341.0000 8.2583\n", + " 34.5500 334.0000 8.1731\n", + " 34.6000 321.0000 8.0125\n", + " 34.6500 286.0000 7.5631\n", + " 34.7000 268.0000 7.3212\n", + " 34.7500 256.0000 7.1554\n", + " 34.8000 238.0000 6.8993\n", + " 34.8500 229.0000 6.7676\n", + " 34.9000 218.0000 6.6030\n", + " 34.9500 223.0000 6.6783\n", + " 35.0000 216.0000 6.5727\n", + " 35.0500 203.0000 6.3718\n", + " 35.1000 203.0000 6.3718\n", + " 35.1500 194.0000 6.2290\n", + " 35.2000 205.0000 6.4031\n", + " 35.2500 196.0000 6.2610\n", + " 35.3000 193.0000 6.2129\n", + " 35.3500 206.0000 6.4187\n", + " 35.4000 201.0000 6.3403\n", + " 35.4500 201.0000 6.3403\n", + " 35.5000 201.0000 6.3403\n", + " 35.5500 200.0000 6.3246\n", + " 35.6000 194.0000 6.2290\n", + " 35.6500 196.0000 6.2610\n", + " 35.7000 203.0000 6.3718\n", + " 35.7500 195.0000 6.2450\n", + " 35.8000 196.0000 6.2610\n", + " 35.8500 211.0000 6.4962\n", + " 35.9000 216.0000 6.5727\n", + " 35.9500 207.0000 6.4343\n", + " 36.0000 215.0000 6.5574\n", + " 36.0500 221.0000 6.6483\n", + " 36.1000 237.0000 6.2849\n", + " 36.1500 248.0000 6.4291\n", + " 36.2000 261.0000 6.5955\n", + " 36.2500 279.0000 6.8191\n", + " 36.3000 319.0000 7.2915\n", + " 36.3500 337.0000 7.4944\n", + " 36.4000 364.0000 7.7889\n", + " 36.4500 423.0000 8.3964\n", + " 36.5000 489.0000 9.0277\n", + " 36.5500 557.0000 9.6350\n", + " 36.6000 630.0000 10.2470\n", + " 36.6500 729.0000 11.0227\n", + " 36.7000 822.0000 11.7047\n", + " 36.7500 943.0000 12.5366\n", + " 36.8000 1059.0000 13.2853\n", + " 36.8500 1196.0000 14.1185\n", + " 36.9000 1235.0000 14.3469\n", + " 36.9500 1220.0000 14.2595\n", + " 37.0000 1209.0000 14.1951\n", + " 37.0500 1128.0000 13.7113\n", + " 37.1000 1001.0000 12.9164\n", + " 37.1500 864.0000 12.0000\n", + " 37.2000 729.0000 11.0227\n", + " 37.2500 601.0000 10.0083\n", + " 37.3000 496.0000 9.0921\n", + " 37.3500 418.0000 8.3467\n", + " 37.4000 355.0000 7.6920\n", + " 37.4500 313.0000 7.2226\n", + " 37.5000 263.0000 6.6207\n", + " 37.5500 246.0000 6.4031\n", + " 37.6000 226.0000 6.1373\n", + " 37.6500 214.0000 5.9722\n", + " 37.7000 222.0000 6.0828\n", + " 37.7500 222.0000 6.0828\n", + " 37.8000 211.0000 5.9301\n", + " 37.8500 211.0000 5.9301\n", + " 37.9000 202.0000 5.8023\n", + " 37.9500 198.0000 5.7446\n", + " 38.0000 192.0000 5.6569\n", + " 38.0500 193.0000 5.6716\n", + " 38.1000 196.0000 5.7155\n", + " 38.1500 201.0000 5.7879\n", + " 38.2000 203.0000 5.8166\n", + " 38.2500 203.0000 5.8166\n", + " 38.3000 201.0000 5.7879\n", + " 38.3500 198.0000 5.7446\n", + " 38.4000 196.0000 5.7155\n", + " 38.4500 206.0000 5.8595\n", + " 38.5000 210.0000 5.9161\n", + " 38.5500 197.0000 5.7300\n", + " 38.6000 204.0000 5.8310\n", + " 38.6500 200.0000 5.7735\n", + " 38.7000 205.0000 5.8452\n", + " 38.7500 196.0000 5.7155\n", + " 38.8000 195.0000 5.7009\n", + " 38.8500 205.0000 5.8452\n", + " 38.9000 204.0000 5.8310\n", + " 38.9500 200.0000 5.7735\n", + " 39.0000 203.0000 5.8166\n", + " 39.0500 208.0000 5.8878\n", + " 39.1000 207.0000 5.8737\n", + " 39.1500 202.0000 5.8023\n", + " 39.2000 203.0000 5.8166\n", + " 39.2500 198.0000 5.7446\n", + " 39.3000 204.0000 5.8310\n", + " 39.3500 210.0000 5.9161\n", + " 39.4000 216.0000 6.0000\n", + " 39.4500 210.0000 5.9161\n", + " 39.5000 229.0000 6.1779\n", + " 39.5500 239.0000 6.3114\n", + " 39.6000 247.0000 6.4161\n", + " 39.6500 278.0000 6.8069\n", + " 39.7000 302.0000 7.0946\n", + " 39.7500 324.0000 7.3485\n", + " 39.8000 371.0000 7.8634\n", + " 39.8500 420.0000 8.3666\n", + " 39.9000 465.0000 8.8034\n", + " 39.9500 538.0000 9.4692\n", + " 40.0000 630.0000 10.2470\n", + " 40.0500 739.0000 11.0980\n", + " 40.1000 851.0000 11.9094\n", + " 40.1500 976.0000 12.7541\n", + " 40.2000 1076.0000 13.3915\n", + " 40.2500 1161.0000 13.9104\n", + " 40.3000 1222.0000 14.2712\n", + " 40.3500 1227.0000 14.3003\n", + " 40.4000 1187.0000 14.0653\n", + " 40.4500 1096.0000 13.5154\n", + " 40.5000 964.0000 12.6754\n", + " 40.5500 833.0000 11.7828\n", + " 40.6000 708.0000 10.8628\n", + " 40.6500 587.0000 9.8911\n", + " 40.7000 512.0000 9.2376\n", + " 40.7500 436.0000 8.5245\n", + " 40.8000 391.0000 8.0726\n", + " 40.8500 384.0000 8.0000\n", + " 40.9000 370.0000 7.8528\n", + " 40.9500 391.0000 8.0726\n", + " 41.0000 419.0000 8.3566\n", + " 41.0500 448.0000 8.6410\n", + " 41.1000 490.0000 9.0370\n", + " 41.1500 567.0000 9.7211\n", + " 41.2000 626.0000 10.2144\n", + " 41.2500 687.0000 10.7005\n", + " 41.3000 735.0000 11.0680\n", + " 41.3500 780.0000 11.4018\n", + " 41.4000 782.0000 11.4164\n", + " 41.4500 745.0000 11.1430\n", + " 41.5000 721.0000 10.9621\n", + " 41.5500 662.0000 10.5040\n", + " 41.6000 595.0000 9.9582\n", + " 41.6500 527.0000 9.3719\n", + " 41.7000 446.0000 8.6217\n", + " 41.7500 393.0000 8.0932\n", + " 41.8000 335.0000 7.4722\n", + " 41.8500 301.0000 7.0828\n", + " 41.9000 276.0000 6.7823\n", + " 41.9500 251.0000 5.9881\n", + " 42.0000 242.0000 5.8797\n", + " 42.0500 229.0000 5.7196\n", + " 42.1000 209.0000 5.4642\n", + " 42.1500 215.0000 5.5420\n", + " 42.2000 218.0000 5.5806\n", + " 42.2500 214.0000 5.5291\n", + " 42.3000 209.0000 5.4642\n", + " 42.3500 208.0000 5.4511\n", + " 42.4000 212.0000 5.5032\n", + " 42.4500 210.0000 5.4772\n", + " 42.5000 209.0000 5.4642\n", + " 42.5500 210.0000 5.4772\n", + " 42.6000 205.0000 5.4116\n", + " 42.6500 209.0000 5.4642\n", + " 42.7000 211.0000 5.4903\n", + " 42.7500 211.0000 5.4903\n", + " 42.8000 216.0000 5.5549\n", + " 42.8500 205.0000 5.4116\n", + " 42.9000 204.0000 5.3984\n", + " 42.9500 202.0000 5.3719\n", + " 43.0000 201.0000 5.3586\n", + " 43.0500 200.0000 5.3452\n", + " 43.1000 207.0000 5.4380\n", + " 43.1500 205.0000 5.4116\n", + " 43.2000 202.0000 5.3719\n", + " 43.2500 209.0000 5.4642\n", + " 43.3000 202.0000 5.3719\n", + " 43.3500 203.0000 5.3852\n", + " 43.4000 206.0000 5.4248\n", + " 43.4500 206.0000 5.4248\n", + " 43.5000 200.0000 5.3452\n", + " 43.5500 194.0000 5.2644\n", + " 43.6000 199.0000 5.3318\n", + " 43.6500 204.0000 5.3984\n", + " 43.7000 205.0000 5.4116\n", + " 43.7500 210.0000 5.4772\n", + " 43.8000 207.0000 5.4380\n", + " 43.8500 205.0000 5.4116\n", + " 43.9000 210.0000 5.4772\n", + " 43.9500 204.0000 5.3984\n", + " 44.0000 203.0000 5.3852\n", + " 44.0500 202.0000 5.3719\n", + " 44.1000 205.0000 5.4116\n", + " 44.1500 201.0000 5.3586\n", + " 44.2000 201.0000 5.3586\n", + " 44.2500 207.0000 5.4380\n", + " 44.3000 197.0000 5.3050\n", + " 44.3500 198.0000 5.3184\n", + " 44.4000 203.0000 5.3852\n", + " 44.4500 209.0000 5.4642\n", + " 44.5000 209.0000 5.4642\n", + " 44.5500 208.0000 5.4511\n", + " 44.6000 204.0000 5.3984\n", + " 44.6500 209.0000 5.4642\n", + " 44.7000 199.0000 5.3318\n", + " 44.7500 204.0000 5.3984\n", + " 44.8000 206.0000 5.4248\n", + " 44.8500 201.0000 5.3586\n", + " 44.9000 205.0000 5.4116\n", + " 44.9500 202.0000 5.3719\n", + " 45.0000 204.0000 5.3984\n", + " 45.0500 198.0000 5.3184\n", + " 45.1000 198.0000 5.3184\n", + " 45.1500 213.0000 5.5162\n", + " 45.2000 210.0000 5.4772\n", + " 45.2500 212.0000 5.5032\n", + " 45.3000 214.0000 5.5291\n", + " 45.3500 215.0000 5.5420\n", + " 45.4000 217.0000 5.5678\n", + " 45.4500 210.0000 5.4772\n", + " 45.5000 214.0000 5.5291\n", + " 45.5500 215.0000 5.5420\n", + " 45.6000 215.0000 5.5420\n", + " 45.6500 215.0000 5.5420\n", + " 45.7000 217.0000 5.5678\n", + " 45.7500 222.0000 5.6315\n", + " 45.8000 231.0000 5.7446\n", + " 45.8500 247.0000 5.9402\n", + " 45.9000 252.0000 6.0000\n", + " 45.9500 273.0000 6.2450\n", + " 46.0000 304.0000 6.5900\n", + " 46.0500 332.0000 6.8868\n", + " 46.1000 366.0000 7.2309\n", + " 46.1500 408.0000 7.6345\n", + " 46.2000 463.0000 8.1328\n", + " 46.2500 532.0000 8.7178\n", + " 46.3000 619.0000 9.4036\n", + " 46.3500 734.0000 10.2400\n", + " 46.4000 828.0000 10.8759\n", + " 46.4500 944.0000 11.6128\n", + " 46.5000 1003.0000 11.9702\n", + " 46.5500 1055.0000 12.2766\n", + " 46.6000 1070.0000 12.3635\n", + " 46.6500 1018.0000 12.0594\n", + " 46.7000 944.0000 11.6128\n", + " 46.7500 833.0000 10.9087\n", + " 46.8000 725.0000 10.1770\n", + " 46.8500 633.0000 9.5094\n", + " 46.9000 507.0000 8.5105\n", + " 46.9500 445.0000 7.9732\n", + " 47.0000 379.0000 7.3582\n", + " 47.0500 347.0000 7.0407\n", + " 47.1000 316.0000 6.7188\n", + " 47.1500 282.0000 6.3471\n", + " 47.2000 267.0000 6.1760\n", + " 47.2500 269.0000 6.1991\n", + " 47.3000 281.0000 6.3358\n", + " 47.3500 288.0000 6.4143\n", + " 47.4000 300.0000 6.5465\n", + " 47.4500 327.0000 6.8348\n", + " 47.5000 346.0000 7.0305\n", + " 47.5500 380.0000 7.3679\n", + " 47.6000 400.0000 7.5593\n", + " 47.6500 430.0000 7.8376\n", + " 47.7000 453.0000 8.0445\n", + " 47.7500 459.0000 8.0976\n", + " 47.8000 451.0000 8.0267\n", + " 47.8500 427.0000 7.8102\n", + " 47.9000 402.0000 7.5782\n", + " 47.9500 375.0000 7.3193\n", + " 48.0000 344.0000 7.0102\n", + " 48.0500 309.0000 6.6440\n", + " 48.1000 277.0000 6.2906\n", + " 48.1500 265.0000 5.7554\n", + " 48.2000 246.0000 5.5453\n", + " 48.2500 246.0000 5.5453\n", + " 48.3000 230.0000 5.3619\n", + " 48.3500 223.0000 5.2797\n", + " 48.4000 227.0000 5.3268\n", + " 48.4500 225.0000 5.3033\n", + " 48.5000 217.0000 5.2082\n", + " 48.5500 217.0000 5.2082\n", + " 48.6000 223.0000 5.2797\n", + " 48.6500 223.0000 5.2797\n", + " 48.7000 220.0000 5.2440\n", + " 48.7500 223.0000 5.2797\n", + " 48.8000 226.0000 5.3151\n", + " 48.8500 248.0000 5.5678\n", + " 48.9000 258.0000 5.6789\n", + " 48.9500 274.0000 5.8523\n", + " 49.0000 297.0000 6.0930\n", + " 49.0500 324.0000 6.3640\n", + " 49.1000 355.0000 6.6615\n", + " 49.1500 393.0000 7.0089\n", + " 49.2000 458.0000 7.5664\n", + " 49.2500 528.0000 8.1240\n", + " 49.3000 589.0000 8.5805\n", + " 49.3500 688.0000 9.2736\n", + " 49.4000 781.0000 9.8805\n", + " 49.4500 840.0000 10.2470\n", + " 49.5000 876.0000 10.4642\n", + " 49.5500 874.0000 10.4523\n", + " 49.6000 832.0000 10.1980\n", + " 49.6500 765.0000 9.7788\n", + " 49.7000 682.0000 9.2331\n", + " 49.7500 613.0000 8.7536\n", + " 49.8000 524.0000 8.0932\n", + " 49.8500 455.0000 7.5416\n", + " 49.9000 408.0000 7.1414\n", + " 49.9500 384.0000 6.9282\n", + " 50.0000 366.0000 6.7639\n", + " 50.0500 375.0000 6.8465\n", + " 50.1000 392.0000 7.0000\n", + " 50.1500 426.0000 7.2973\n", + " 50.2000 470.0000 7.6649\n", + " 50.2500 519.0000 8.0545\n", + " 50.3000 588.0000 8.5732\n", + " 50.3500 639.0000 8.9373\n", + " 50.4000 681.0000 9.2263\n", + " 50.4500 704.0000 9.3808\n", + " 50.5000 693.0000 9.3073\n", + " 50.5500 650.0000 9.0139\n", + " 50.6000 600.0000 8.6603\n", + " 50.6500 540.0000 8.2158\n", + " 50.7000 478.0000 7.7298\n", + " 50.7500 412.0000 7.1764\n", + " 50.8000 376.0000 6.8557\n", + " 50.8500 345.0000 6.5670\n", + " 50.9000 330.0000 6.4226\n", + " 50.9500 337.0000 6.4904\n", + " 51.0000 350.0000 6.6144\n", + " 51.0500 383.0000 6.9192\n", + " 51.1000 426.0000 7.2973\n", + " 51.1500 493.0000 7.8502\n", + " 51.2000 571.0000 8.4484\n", + " 51.2500 676.0000 9.1924\n", + " 51.3000 803.0000 10.0187\n", + " 51.3500 920.0000 10.7238\n", + " 51.4000 1071.0000 11.5704\n", + " 51.4500 1183.0000 12.1604\n", + " 51.5000 1247.0000 12.4850\n", + " 51.5500 1255.0000 12.5250\n", + " 51.6000 1251.0000 12.5050\n", + " 51.6500 1183.0000 12.1604\n", + " 51.7000 1068.0000 11.5542\n", + " 51.7500 945.0000 10.8685\n", + " 51.8000 861.0000 10.3742\n", + " 51.8500 811.0000 10.0685\n", + " 51.9000 813.0000 10.0809\n", + " 51.9500 872.0000 10.4403\n", + " 52.0000 969.0000 11.0057\n", + " 52.0500 1120.0000 11.8322\n", + " 52.1000 1309.0000 12.7916\n", + " 52.1500 1527.0000 13.8158\n", + " 52.2000 1706.0000 14.6031\n", + " 52.2500 1856.0000 15.2315\n", + " 52.3000 1888.0000 15.3623\n", + " 52.3500 1837.0000 15.1534\n", + " 52.4000 1713.0000 14.6330\n", + " 52.4500 1500.0000 13.6931\n", + " 52.5000 1289.0000 12.6935\n", + " 52.5500 1103.0000 11.7420\n", + " 52.6000 904.0000 10.6301\n", + " 52.6500 749.0000 9.6760\n", + " 52.7000 627.0000 8.8530\n", + " 52.7500 568.0000 8.4261\n", + " 52.8000 551.0000 8.2991\n", + " 52.8500 560.0000 8.3666\n", + " 52.9000 586.0000 8.5586\n", + " 52.9500 634.0000 8.9022\n", + " 53.0000 691.0000 9.2938\n", + " 53.0500 751.0000 9.6889\n", + " 53.1000 799.0000 9.9937\n", + " 53.1500 792.0000 9.9499\n", + " 53.2000 820.0000 10.1242\n", + " 53.2500 774.0000 9.8362\n", + " 53.3000 736.0000 9.5917\n", + " 53.3500 680.0000 9.2195\n", + " 53.4000 627.0000 8.8530\n", + " 53.4500 562.0000 8.3815\n", + " 53.5000 514.0000 8.0156\n", + " 53.5500 459.0000 7.5746\n", + " 53.6000 424.0000 7.2801\n", + " 53.6500 362.0000 6.7268\n", + " 53.7000 333.0000 6.4517\n", + " 53.7500 318.0000 6.3048\n", + " 53.8000 300.0000 6.1237\n", + " 53.8500 287.0000 5.9896\n", + " 53.9000 265.0000 5.7554\n", + " 53.9500 266.0000 5.7663\n", + " 54.0000 262.0000 5.7228\n", + " 54.0500 263.0000 5.4058\n", + " 54.1000 255.0000 5.3229\n", + " 54.1500 270.0000 5.4772\n", + " 54.2000 278.0000 5.5578\n", + " 54.2500 289.0000 5.6667\n", + " 54.3000 317.0000 5.9348\n", + " 54.3500 343.0000 6.1734\n", + " 54.4000 400.0000 6.6667\n", + " 54.4500 468.0000 7.2111\n", + " 54.5000 561.0000 7.8951\n", + " 54.5500 695.0000 8.7876\n", + " 54.6000 873.0000 9.8489\n", + " 54.6500 1100.0000 11.0554\n", + " 54.7000 1372.0000 12.3468\n", + " 54.7500 1660.0000 13.5810\n", + " 54.8000 1954.0000 14.7347\n", + " 54.8500 2224.0000 15.7198\n", + " 54.9000 2400.0000 16.3299\n", + " 54.9500 2459.0000 16.5294\n", + " 55.0000 2435.0000 16.4486\n", + " 55.0500 2245.0000 15.7938\n", + " 55.1000 1986.0000 14.8549\n", + " 55.1500 1671.0000 13.6260\n", + " 55.2000 1358.0000 12.2837\n", + " 55.2500 1086.0000 10.9848\n", + " 55.3000 868.0000 9.8206\n", + " 55.3500 682.0000 8.7050\n", + " 55.4000 578.0000 8.0139\n", + " 55.4500 521.0000 7.6085\n", + " 55.5000 512.0000 7.5425\n", + " 55.5500 537.0000 7.7244\n", + " 55.6000 600.0000 8.1650\n", + " 55.6500 704.0000 8.8443\n", + " 55.7000 855.0000 9.7468\n", + " 55.7500 1032.0000 10.7083\n", + " 55.8000 1232.0000 11.7000\n", + " 55.8500 1466.0000 12.7628\n", + " 55.9000 1693.0000 13.7154\n", + " 55.9500 1866.0000 14.3991\n", + " 56.0000 1966.0000 14.7799\n", + " 56.0500 2024.0000 14.9963\n", + " 56.1000 2016.0000 14.9666\n", + " 56.1500 1846.0000 14.3217\n", + " 56.2000 1667.0000 13.6096\n", + " 56.2500 1429.0000 12.6007\n", + " 56.3000 1179.0000 11.4455\n", + " 56.3500 950.0000 10.2740\n", + " 56.4000 763.0000 9.2075\n", + " 56.4500 599.0000 8.1582\n", + " 56.5000 484.0000 7.3333\n", + " 56.5500 404.0000 6.6999\n", + " 56.6000 351.0000 6.2450\n", + " 56.6500 304.0000 5.8119\n", + " 56.7000 284.0000 5.6174\n", + " 56.7500 273.0000 5.5076\n", + " 56.8000 259.0000 5.3645\n", + " 56.8500 251.0000 5.2810\n", + " 56.9000 251.0000 5.2810\n", + " 56.9500 252.0000 5.2915\n", + " 57.0000 245.0000 5.2175\n", + " 57.0500 259.0000 5.3645\n", + " 57.1000 250.0000 5.2705\n", + " 57.1500 253.0000 5.3020\n", + " 57.2000 256.0000 5.3333\n", + " 57.2500 264.0000 5.4160\n", + " 57.3000 285.0000 5.6273\n", + " 57.3500 301.0000 5.7831\n", + " 57.4000 346.0000 6.2004\n", + " 57.4500 390.0000 6.5828\n", + " 57.5000 458.0000 7.1336\n", + " 57.5500 528.0000 7.6594\n", + " 57.6000 624.0000 8.3267\n", + " 57.6500 733.0000 9.0247\n", + " 57.7000 829.0000 9.5975\n", + " 57.7500 916.0000 10.0885\n", + " 57.8000 988.0000 10.4775\n", + " 57.8500 994.0000 10.5093\n", + " 57.9000 929.0000 10.1598\n", + " 57.9500 843.0000 9.6782\n", + " 58.0000 742.0000 9.0799\n", + " 58.0500 638.0000 8.4196\n", + " 58.1000 527.0000 7.6522\n", + " 58.1500 434.0000 6.9442\n", + " 58.2000 377.0000 6.4722\n", + " 58.2500 320.0000 5.9628\n", + " 58.3000 282.0000 5.5976\n", + " 58.3500 273.0000 5.5076\n", + " 58.4000 256.0000 5.3333\n", + " 58.4500 243.0000 5.1962\n", + " 58.5000 240.0000 5.1640\n", + " 58.5500 240.0000 5.1640\n", + " 58.6000 230.0000 5.0553\n", + " 58.6500 220.0000 4.9441\n", + " 58.7000 230.0000 5.0553\n", + " 58.7500 227.0000 5.0222\n", + " 58.8000 224.0000 4.9889\n", + " 58.8500 219.0000 4.9329\n", + " 58.9000 227.0000 5.0222\n", + " 58.9500 227.0000 5.0222\n", + " 59.0000 224.0000 4.9889\n", + " 59.0500 222.0000 4.9666\n", + " 59.1000 223.0000 4.9777\n", + " 59.1500 217.0000 4.9103\n", + " 59.2000 213.0000 4.8648\n", + " 59.2500 216.0000 4.8990\n", + " 59.3000 219.0000 4.9329\n", + " 59.3500 219.0000 4.9329\n", + " 59.4000 218.0000 4.9216\n", + " 59.4500 220.0000 4.9441\n", + " 59.5000 220.0000 4.9441\n", + " 59.5500 220.0000 4.9441\n", + " 59.6000 223.0000 4.9777\n", + " 59.6500 233.0000 5.0881\n", + " 59.7000 237.0000 5.1316\n", + " 59.7500 249.0000 5.2599\n", + " 59.8000 258.0000 5.3541\n", + " 59.8500 261.0000 5.3852\n", + " 59.9000 283.0000 5.6075\n", + " 59.9500 304.0000 5.8119\n", + " 60.0000 324.0000 5.6921\n", + " 60.0500 347.0000 5.8907\n", + " 60.1000 353.0000 5.9414\n", + " 60.1500 359.0000 5.9917\n", + " 60.2000 363.0000 6.0249\n", + " 60.2500 352.0000 5.9330\n", + " 60.3000 341.0000 5.8395\n", + " 60.3500 330.0000 5.7446\n", + " 60.4000 308.0000 5.5498\n", + " 60.4500 291.0000 5.3944\n", + " 60.5000 271.0000 5.2058\n", + " 60.5500 254.0000 5.0398\n", + " 60.6000 245.0000 4.9497\n", + " 60.6500 245.0000 4.9497\n", + " 60.7000 239.0000 4.8888\n", + " 60.7500 228.0000 4.7749\n", + " 60.8000 217.0000 4.6583\n", + " 60.8500 217.0000 4.6583\n", + " 60.9000 218.0000 4.6690\n", + " 60.9500 223.0000 4.7223\n", + " 61.0000 207.0000 4.5497\n", + " 61.0500 218.0000 4.6690\n", + " 61.1000 222.0000 4.7117\n", + " 61.1500 215.0000 4.6368\n", + " 61.2000 210.0000 4.5826\n", + " 61.2500 216.0000 4.6476\n", + " 61.3000 213.0000 4.6152\n", + " 61.3500 212.0000 4.6043\n", + " 61.4000 215.0000 4.6368\n", + " 61.4500 212.0000 4.6043\n", + " 61.5000 214.0000 4.6260\n", + " 61.5500 211.0000 4.5935\n", + " 61.6000 214.0000 4.6260\n", + " 61.6500 217.0000 4.6583\n", + " 61.7000 205.0000 4.5277\n", + " 61.7500 207.0000 4.5497\n", + " 61.8000 213.0000 4.6152\n", + " 61.8500 208.0000 4.5607\n", + " 61.9000 211.0000 4.5935\n", + " 61.9500 205.0000 4.5277\n", + " 62.0000 214.0000 4.6260\n", + " 62.0500 213.0000 4.6152\n", + " 62.1000 212.0000 4.6043\n", + " 62.1500 212.0000 4.6043\n", + " 62.2000 213.0000 4.6152\n", + " 62.2500 207.0000 4.5497\n", + " 62.3000 203.0000 4.5056\n", + " 62.3500 211.0000 4.5935\n", + " 62.4000 211.0000 4.5935\n", + " 62.4500 214.0000 4.6260\n", + " 62.5000 214.0000 4.6260\n", + " 62.5500 207.0000 4.5497\n", + " 62.6000 203.0000 4.5056\n", + " 62.6500 212.0000 4.6043\n", + " 62.7000 212.0000 4.6043\n", + " 62.7500 214.0000 4.6260\n", + " 62.8000 213.0000 4.6152\n", + " 62.8500 202.0000 4.4944\n", + " 62.9000 210.0000 4.5826\n", + " 62.9500 211.0000 4.5935\n", + " 63.0000 211.0000 4.5935\n", + " 63.0500 214.0000 4.6260\n", + " 63.1000 221.0000 4.7011\n", + " 63.1500 217.0000 4.6583\n", + " 63.2000 212.0000 4.6043\n", + " 63.2500 214.0000 4.6260\n", + " 63.3000 219.0000 4.6797\n", + " 63.3500 223.0000 4.7223\n", + " 63.4000 225.0000 4.7434\n", + " 63.4500 227.0000 4.7645\n", + " 63.5000 235.0000 4.8477\n", + " 63.5500 240.0000 4.8990\n", + " 63.6000 243.0000 4.9295\n", + " 63.6500 252.0000 5.0200\n", + " 63.7000 249.0000 4.9900\n", + " 63.7500 249.0000 4.9900\n", + " 63.8000 255.0000 5.0498\n", + " 63.8500 262.0000 5.1186\n", + " 63.9000 282.0000 5.3104\n", + " 63.9500 308.0000 5.5498\n", + " 64.0000 351.0000 5.9245\n", + " 64.0500 398.0000 6.3087\n", + " 64.1000 470.0000 6.8557\n", + " 64.1500 525.0000 7.2457\n", + " 64.2000 596.0000 7.7201\n", + " 64.2500 646.0000 8.0374\n", + " 64.3000 681.0000 8.2523\n", + " 64.3500 665.0000 8.1548\n", + " 64.4000 615.0000 7.8422\n", + " 64.4500 563.0000 7.5033\n", + " 64.5000 484.0000 6.9570\n", + " 64.5500 421.0000 6.4885\n", + " 64.6000 364.0000 6.0332\n", + " 64.6500 317.0000 5.6303\n", + " 64.7000 289.0000 5.3759\n", + " 64.7500 261.0000 5.1088\n", + " 64.8000 245.0000 4.9497\n", + " 64.8500 233.0000 4.8270\n", + " 64.9000 228.0000 4.7749\n", + " 64.9500 219.0000 4.6797\n", + " 65.0000 219.0000 4.6797\n", + " 65.0500 217.0000 4.6583\n", + " 65.1000 216.0000 4.6476\n", + " 65.1500 221.0000 4.7011\n", + " 65.2000 215.0000 4.6368\n", + " 65.2500 215.0000 4.6368\n", + " 65.3000 210.0000 4.5826\n", + " 65.3500 212.0000 4.6043\n", + " 65.4000 212.0000 4.6043\n", + " 65.4500 204.0000 4.5166\n", + " 65.5000 209.0000 4.5717\n", + " 65.5500 206.0000 4.5387\n", + " 65.6000 216.0000 4.6476\n", + " 65.6500 207.0000 4.5497\n", + " 65.7000 214.0000 4.6260\n", + " 65.7500 207.0000 4.5497\n", + " 65.8000 209.0000 4.5717\n", + " 65.8500 218.0000 4.6690\n", + " 65.9000 215.0000 4.6368\n", + " 65.9500 222.0000 4.7117\n", + " 66.0000 226.0000 4.7539\n", + " 66.0500 230.0000 4.7958\n", + " 66.1000 239.0000 4.8888\n", + " 66.1500 249.0000 4.9900\n", + " 66.2000 263.0000 5.1284\n", + " 66.2500 275.0000 5.2440\n", + " 66.3000 292.0000 5.4037\n", + " 66.3500 317.0000 5.6303\n", + " 66.4000 323.0000 5.6833\n", + " 66.4500 341.0000 5.8395\n", + " 66.5000 350.0000 5.9161\n", + " 66.5500 330.0000 5.7446\n", + " 66.6000 320.0000 5.6569\n", + " 66.6500 307.0000 5.5408\n", + " 66.7000 284.0000 5.3292\n", + " 66.7500 275.0000 5.2440\n", + " 66.8000 265.0000 5.1478\n", + " 66.8500 269.0000 5.1865\n", + " 66.9000 275.0000 5.2440\n", + " 66.9500 292.0000 5.4037\n", + " 67.0000 311.0000 5.5767\n", + " 67.0500 338.0000 5.8138\n", + " 67.1000 387.0000 6.2209\n", + " 67.1500 413.0000 6.4265\n", + " 67.2000 463.0000 6.8044\n", + " 67.2500 510.0000 7.1414\n", + " 67.3000 534.0000 7.3075\n", + " 67.3500 559.0000 7.4766\n", + " 67.4000 539.0000 7.3417\n", + " 67.4500 533.0000 7.3007\n", + " 67.5000 500.0000 7.0711\n", + " 67.5500 471.0000 6.8629\n", + " 67.6000 455.0000 6.7454\n", + " 67.6500 410.0000 6.4031\n", + " 67.7000 373.0000 6.1074\n", + " 67.7500 342.0000 5.8481\n", + " 67.8000 307.0000 5.5408\n", + " 67.8500 288.0000 5.3666\n", + " 67.9000 286.0000 5.3479\n", + " 67.9500 281.0000 5.3009\n", + " 68.0000 292.0000 5.4037\n", + " 68.0500 291.0000 5.3944\n", + " 68.1000 312.0000 5.5857\n", + " 68.1500 326.0000 5.7096\n", + " 68.2000 336.0000 5.7966\n", + " 68.2500 346.0000 5.8822\n", + " 68.3000 341.0000 5.8395\n", + " 68.3500 327.0000 5.7184\n", + " 68.4000 305.0000 5.5227\n", + " 68.4500 277.0000 5.2631\n", + " 68.5000 267.0000 5.1672\n", + " 68.5500 249.0000 4.9900\n", + " 68.6000 229.0000 4.7854\n", + " 68.6500 221.0000 4.7011\n", + " 68.7000 220.0000 4.6904\n", + " 68.7500 217.0000 4.6583\n", + " 68.8000 211.0000 4.5935\n", + " 68.8500 204.0000 4.5166\n", + " 68.9000 203.0000 4.5056\n", + " 68.9500 220.0000 4.6904\n", + " 69.0000 217.0000 4.6583\n", + " 69.0500 217.0000 4.6583\n", + " 69.1000 214.0000 4.6260\n", + " 69.1500 205.0000 4.5277\n", + " 69.2000 205.0000 4.5277\n", + " 69.2500 211.0000 4.5935\n", + " 69.3000 206.0000 4.5387\n", + " 69.3500 208.0000 4.5607\n", + " 69.4000 201.0000 4.4833\n", + " 69.4500 208.0000 4.5607\n", + " 69.5000 214.0000 4.6260\n", + " 69.5500 212.0000 4.6043\n", + " 69.6000 206.0000 4.5387\n", + " 69.6500 216.0000 4.6476\n", + " 69.7000 219.0000 4.6797\n", + " 69.7500 215.0000 4.6368\n", + " 69.8000 217.0000 4.6583\n", + " 69.8500 211.0000 4.5935\n", + " 69.9000 214.0000 4.6260\n", + " 69.9500 215.0000 4.6368\n", + " 70.0000 224.0000 4.7329\n", + " 70.0500 217.0000 4.6583\n", + " 70.1000 215.0000 4.6368\n", + " 70.1500 218.0000 4.6690\n", + " 70.2000 218.0000 4.6690\n", + " 70.2500 228.0000 4.7749\n", + " 70.3000 227.0000 4.7645\n", + " 70.3500 228.0000 4.7749\n", + " 70.4000 225.0000 4.7434\n", + " 70.4500 219.0000 4.6797\n", + " 70.5000 216.0000 4.6476\n", + " 70.5500 219.0000 4.6797\n", + " 70.6000 218.0000 4.6690\n", + " 70.6500 214.0000 4.6260\n", + " 70.7000 212.0000 4.6043\n", + " 70.7500 221.0000 4.7011\n", + " 70.8000 214.0000 4.6260\n", + " 70.8500 208.0000 4.5607\n", + " 70.9000 204.0000 4.5166\n", + " 70.9500 209.0000 4.5717\n", + " 71.0000 209.0000 4.5717\n", + " 71.0500 208.0000 4.5607\n", + " 71.1000 212.0000 4.6043\n", + " 71.1500 213.0000 4.6152\n", + " 71.2000 218.0000 4.6690\n", + " 71.2500 212.0000 4.6043\n", + " 71.3000 205.0000 4.5277\n", + " 71.3500 207.0000 4.5497\n", + " 71.4000 204.0000 4.5166\n", + " 71.4500 206.0000 4.5387\n", + " 71.5000 211.0000 4.5935\n", + " 71.5500 216.0000 4.6476\n", + " 71.6000 214.0000 4.6260\n", + " 71.6500 210.0000 4.5826\n", + " 71.7000 219.0000 4.6797\n", + " 71.7500 222.0000 4.7117\n", + " 71.8000 224.0000 4.7329\n", + " 71.8500 231.0000 4.8062\n", + " 71.9000 227.0000 4.7645\n", + " 71.9500 237.0000 4.8683\n", + " 72.0000 235.0000 4.8477\n", + " 72.0500 238.0000 4.8785\n", + " 72.1000 245.0000 4.9497\n", + " 72.1500 242.0000 4.9193\n", + " 72.2000 248.0000 4.9800\n", + " 72.2500 246.0000 4.9598\n", + " 72.3000 243.0000 4.9295\n", + " 72.3500 253.0000 5.0299\n", + " 72.4000 259.0000 5.0892\n", + " 72.4500 278.0000 5.2726\n", + " 72.5000 281.0000 5.3009\n", + " 72.5500 297.0000 5.4498\n", + " 72.6000 310.0000 5.5678\n", + " 72.6500 324.0000 5.6921\n", + " 72.7000 322.0000 5.6745\n", + " 72.7500 311.0000 5.5767\n", + " 72.8000 295.0000 5.4314\n", + " 72.8500 281.0000 5.3009\n", + " 72.9000 259.0000 5.0892\n", + " 72.9500 250.0000 5.0000\n", + " 73.0000 239.0000 4.8888\n", + " 73.0500 233.0000 4.8270\n", + " 73.1000 227.0000 4.7645\n", + " 73.1500 226.0000 4.7539\n", + " 73.2000 223.0000 4.7223\n", + " 73.2500 211.0000 4.5935\n", + " 73.3000 209.0000 4.5717\n", + " 73.3500 217.0000 4.6583\n", + " 73.4000 214.0000 4.6260\n", + " 73.4500 213.0000 4.6152\n", + " 73.5000 217.0000 4.6583\n", + " 73.5500 220.0000 4.6904\n", + " 73.6000 210.0000 4.5826\n", + " 73.6500 209.0000 4.5717\n", + " 73.7000 215.0000 4.6368\n", + " 73.7500 218.0000 4.6690\n", + " 73.8000 215.0000 4.6368\n", + " 73.8500 217.0000 4.6583\n", + " 73.9000 221.0000 4.7011\n", + " 73.9500 217.0000 4.6583\n", + " 74.0000 219.0000 4.6797\n", + " 74.0500 220.0000 4.6904\n", + " 74.1000 228.0000 4.7749\n", + " 74.1500 229.0000 4.7854\n", + " 74.2000 230.0000 4.7958\n", + " 74.2500 234.0000 4.8374\n", + " 74.3000 251.0000 5.0100\n", + " 74.3500 261.0000 5.1088\n", + " 74.4000 288.0000 5.3666\n", + " 74.4500 313.0000 5.5946\n", + " 74.5000 362.0000 6.0166\n", + " 74.5500 424.0000 6.5115\n", + " 74.6000 524.0000 7.2388\n", + " 74.6500 646.0000 8.0374\n", + " 74.7000 781.0000 8.8374\n", + " 74.7500 920.0000 9.5917\n", + " 74.8000 1024.0000 10.1193\n", + " 74.8500 1120.0000 10.5830\n", + " 74.9000 1187.0000 10.8950\n", + " 74.9500 1187.0000 10.8950\n", + " 75.0000 1166.0000 10.7981\n", + " 75.0500 1114.0000 10.5546\n", + " 75.1000 1044.0000 10.2176\n", + " 75.1500 991.0000 9.9549\n", + " 75.2000 927.0000 9.6281\n", + " 75.2500 823.0000 9.0719\n", + " 75.3000 717.0000 8.4676\n", + " 75.3500 619.0000 7.8677\n", + " 75.4000 520.0000 7.2111\n", + " 75.4500 421.0000 6.4885\n", + " 75.5000 353.0000 5.9414\n", + " 75.5500 308.0000 5.5498\n", + " 75.6000 273.0000 5.2249\n", + " 75.6500 256.0000 5.0596\n", + " 75.7000 245.0000 4.9497\n", + " 75.7500 234.0000 4.8374\n", + " 75.8000 230.0000 4.7958\n", + " 75.8500 224.0000 4.7329\n", + " 75.9000 232.0000 4.8166\n", + " 75.9500 226.0000 4.7539\n", + " 76.0000 222.0000 4.7117\n", + " 76.0500 222.0000 4.7117\n", + " 76.1000 227.0000 4.7645\n", + " 76.1500 225.0000 4.7434\n", + " 76.2000 226.0000 4.7539\n", + " 76.2500 227.0000 4.7645\n", + " 76.3000 229.0000 4.7854\n", + " 76.3500 235.0000 4.8477\n", + " 76.4000 233.0000 4.8270\n", + " 76.4500 243.0000 4.9295\n", + " 76.5000 238.0000 4.8785\n", + " 76.5500 237.0000 4.8683\n", + " 76.6000 236.0000 4.8580\n", + " 76.6500 232.0000 4.8166\n", + " 76.7000 231.0000 4.8062\n", + " 76.7500 227.0000 4.7645\n", + " 76.8000 225.0000 4.7434\n", + " 76.8500 220.0000 4.6904\n", + " 76.9000 218.0000 4.6690\n", + " 76.9500 215.0000 4.6368\n", + " 77.0000 219.0000 4.6797\n", + " 77.0500 224.0000 4.7329\n", + " 77.1000 225.0000 4.7434\n", + " 77.1500 222.0000 4.7117\n", + " 77.2000 231.0000 4.8062\n", + " 77.2500 243.0000 4.9295\n", + " 77.3000 250.0000 5.0000\n", + " 77.3500 269.0000 5.1865\n", + " 77.4000 286.0000 5.3479\n", + " 77.4500 310.0000 5.5678\n", + " 77.5000 325.0000 5.7009\n", + " 77.5500 332.0000 5.7619\n", + " 77.6000 337.0000 5.8052\n", + " 77.6500 329.0000 5.7359\n", + " 77.7000 303.0000 5.5045\n", + " 77.7500 278.0000 5.2726\n", + " 77.8000 268.0000 5.1769\n", + " 77.8500 252.0000 5.0200\n", + " 77.9000 236.0000 4.8580\n", + " 77.9500 228.0000 4.7749\n", + " 78.0000 219.0000 4.6797\n", + " 78.0500 225.0000 4.7434\n", + " 78.1000 222.0000 4.7117\n", + " 78.1500 214.0000 4.6260\n", + " 78.2000 228.0000 4.7749\n", + " 78.2500 221.0000 4.7011\n", + " 78.3000 217.0000 4.6583\n", + " 78.3500 221.0000 4.7011\n", + " 78.4000 222.0000 4.7117\n", + " 78.4500 226.0000 4.7539\n", + " 78.5000 237.0000 4.8683\n", + " 78.5500 246.0000 4.9598\n", + " 78.6000 255.0000 5.0498\n", + " 78.6500 269.0000 5.1865\n", + " 78.7000 284.0000 5.3292\n", + " 78.7500 302.0000 5.4955\n", + " 78.8000 313.0000 5.5946\n", + " 78.8500 327.0000 5.7184\n", + " 78.9000 321.0000 5.6657\n", + " 78.9500 333.0000 5.7706\n", + " 79.0000 331.0000 5.7533\n", + " 79.0500 332.0000 5.7619\n", + " 79.1000 358.0000 5.9833\n", + " 79.1500 402.0000 6.3403\n", + " 79.2000 460.0000 6.7823\n", + " 79.2500 557.0000 7.4632\n", + " 79.3000 660.0000 8.1240\n", + " 79.3500 769.0000 8.7693\n", + " 79.4000 859.0000 9.2682\n", + " 79.4500 934.0000 9.6644\n", + " 79.5000 955.0000 9.7724\n", + " 79.5500 921.0000 9.5969\n", + " 79.6000 824.0000 9.0774\n", + " 79.6500 694.0000 8.3307\n", + " 79.7000 578.0000 7.6026\n", + " 79.7500 474.0000 6.8848\n", + " 79.8000 402.0000 6.3403\n", + " 79.8500 344.0000 5.8652\n", + " 79.9000 306.0000 5.5317\n", + " 79.9500 300.0000 5.4772\n", + " 80.0000 292.0000 5.4037\n", + " 80.0500 292.0000 5.4037\n", + " 80.1000 302.0000 5.4955\n", + " 80.1500 304.0000 5.5136\n", + " 80.2000 306.0000 5.5317\n", + " 80.2500 305.0000 5.5227\n", + " 80.3000 303.0000 5.5045\n", + " 80.3500 299.0000 5.4681\n", + " 80.4000 278.0000 5.2726\n", + " 80.4500 259.0000 5.0892\n", + " 80.5000 257.0000 5.0695\n", + " 80.5500 245.0000 4.9497\n", + " 80.6000 237.0000 4.8683\n", + " 80.6500 240.0000 4.8990\n", + " 80.7000 233.0000 4.8270\n", + " 80.7500 232.0000 4.8166\n", + " 80.8000 235.0000 4.8477\n", + " 80.8500 241.0000 4.9092\n", + " 80.9000 257.0000 5.0695\n", + " 80.9500 274.0000 5.2345\n", + " 81.0000 292.0000 5.4037\n", + " 81.0500 309.0000 5.5588\n", + " 81.1000 333.0000 5.7706\n", + " 81.1500 360.0000 6.0000\n", + " 81.2000 381.0000 6.1725\n", + " 81.2500 387.0000 6.2209\n", + " 81.3000 387.0000 6.2209\n", + " 81.3500 386.0000 6.2129\n", + " 81.4000 382.0000 6.1806\n", + " 81.4500 368.0000 6.0663\n", + " 81.5000 363.0000 6.0249\n", + " 81.5500 352.0000 5.9330\n", + " 81.6000 337.0000 5.8052\n", + " 81.6500 321.0000 5.6657\n", + " 81.7000 297.0000 5.4498\n", + " 81.7500 281.0000 5.3009\n", + " 81.8000 265.0000 5.1478\n", + " 81.8500 255.0000 5.0498\n", + " 81.9000 251.0000 5.0100\n", + " 81.9500 237.0000 4.8683\n", + " 82.0000 238.0000 4.8785\n", + " 82.0500 237.0000 4.8683\n", + " 82.1000 228.0000 4.7749\n", + " 82.1500 240.0000 4.8990\n", + " 82.2000 234.0000 4.8374\n", + " 82.2500 226.0000 4.7539\n", + " 82.3000 229.0000 4.7854\n", + " 82.3500 228.0000 4.7749\n", + " 82.4000 233.0000 4.8270\n", + " 82.4500 243.0000 4.9295\n", + " 82.5000 241.0000 4.9092\n", + " 82.5500 257.0000 5.0695\n", + " 82.6000 279.0000 5.2820\n", + " 82.6500 305.0000 5.5227\n", + " 82.7000 345.0000 5.8737\n", + " 82.7500 410.0000 6.4031\n", + " 82.8000 455.0000 6.7454\n", + " 82.8500 545.0000 7.3824\n", + " 82.9000 622.0000 7.8867\n", + " 82.9500 673.0000 8.2037\n", + " 83.0000 725.0000 8.5147\n", + " 83.0500 717.0000 8.4676\n", + " 83.1000 661.0000 8.1302\n", + " 83.1500 592.0000 7.6942\n", + " 83.2000 518.0000 7.1972\n", + " 83.2500 443.0000 6.6558\n", + " 83.3000 371.0000 6.0910\n", + " 83.3500 336.0000 5.7966\n", + " 83.4000 290.0000 5.3852\n", + " 83.4500 265.0000 5.1478\n", + " 83.5000 252.0000 5.0200\n", + " 83.5500 250.0000 5.0000\n", + " 83.6000 244.0000 4.9396\n", + " 83.6500 242.0000 4.9193\n", + " 83.7000 241.0000 4.9092\n", + " 83.7500 243.0000 4.9295\n", + " 83.8000 248.0000 4.9800\n", + " 83.8500 253.0000 5.0299\n", + " 83.9000 252.0000 5.0200\n", + " 83.9500 264.0000 5.1381\n", + " 84.0000 266.0000 5.1575\n", + " 84.0500 282.0000 5.3104\n", + " 84.1000 291.0000 5.3944\n", + " 84.1500 313.0000 5.5946\n", + " 84.2000 346.0000 5.8822\n", + " 84.2500 374.0000 6.1156\n", + " 84.3000 415.0000 6.4420\n", + " 84.3500 430.0000 6.5574\n", + " 84.4000 433.0000 6.5803\n", + " 84.4500 430.0000 6.5574\n", + " 84.5000 406.0000 6.3718\n", + " 84.5500 384.0000 6.1968\n", + " 84.6000 349.0000 5.9076\n", + " 84.6500 318.0000 5.6391\n", + " 84.7000 307.0000 5.5408\n", + " 84.7500 298.0000 5.4589\n", + " 84.8000 296.0000 5.4406\n", + " 84.8500 304.0000 5.5136\n", + " 84.9000 313.0000 5.5946\n", + " 84.9500 328.0000 5.7271\n", + " 85.0000 346.0000 5.8822\n", + " 85.0500 341.0000 5.8395\n", + " 85.1000 335.0000 5.7879\n", + " 85.1500 324.0000 5.6921\n", + " 85.2000 336.0000 5.7966\n", + " 85.2500 341.0000 5.8395\n", + " 85.3000 341.0000 5.8395\n", + " 85.3500 370.0000 6.0828\n", + " 85.4000 414.0000 6.4343\n", + " 85.4500 442.0000 6.6483\n", + " 85.5000 490.0000 7.0000\n", + " 85.5500 520.0000 7.2111\n", + " 85.6000 532.0000 7.2938\n", + " 85.6500 548.0000 7.4027\n", + " 85.7000 561.0000 7.4900\n", + " 85.7500 567.0000 7.5299\n", + " 85.8000 585.0000 7.6485\n", + " 85.8500 584.0000 7.6420\n", + " 85.9000 558.0000 7.4699\n", + " 85.9500 527.0000 7.2595\n", + " 86.0000 481.0000 6.9354\n", + " 86.0500 424.0000 6.5115\n", + " 86.1000 370.0000 6.0828\n", + " 86.1500 333.0000 5.7706\n", + " 86.2000 312.0000 5.5857\n", + " 86.2500 301.0000 5.4863\n", + " 86.3000 307.0000 5.5408\n", + " 86.3500 314.0000 5.6036\n", + " 86.4000 340.0000 5.8310\n", + " 86.4500 379.0000 6.1563\n", + " 86.5000 427.0000 6.5345\n", + " 86.5500 467.0000 6.8337\n", + " 86.6000 535.0000 7.3144\n", + " 86.6500 584.0000 7.6420\n", + " 86.7000 602.0000 7.7589\n", + " 86.7500 580.0000 7.6158\n", + " 86.8000 532.0000 7.2938\n", + " 86.8500 481.0000 6.9354\n", + " 86.9000 426.0000 6.5269\n", + " 86.9500 379.0000 6.1563\n", + " 87.0000 329.0000 5.7359\n", + " 87.0500 303.0000 5.5045\n", + " 87.1000 288.0000 5.3666\n", + " 87.1500 271.0000 5.2058\n", + " 87.2000 269.0000 5.1865\n", + " 87.2500 267.0000 5.1672\n", + " 87.3000 263.0000 5.1284\n", + " 87.3500 267.0000 5.1672\n", + " 87.4000 260.0000 5.0990\n", + " 87.4500 260.0000 5.0990\n", + " 87.5000 263.0000 5.1284\n", + " 87.5500 263.0000 5.1284\n", + " 87.6000 270.0000 5.1962\n", + " 87.6500 278.0000 5.2726\n", + " 87.7000 293.0000 5.4129\n", + " 87.7500 318.0000 5.6391\n", + " 87.8000 364.0000 6.0332\n", + " 87.8500 424.0000 6.5115\n", + " 87.9000 512.0000 7.1554\n", + " 87.9500 643.0000 8.0187\n", + " 88.0000 817.0000 9.0388\n", + " 88.0500 982.0000 9.9096\n", + " 88.1000 1163.0000 10.7842\n", + " 88.1500 1289.0000 11.3534\n", + " 88.2000 1373.0000 11.7175\n", + " 88.2500 1393.0000 11.8025\n", + " 88.3000 1348.0000 11.6103\n", + " 88.3500 1244.0000 11.1535\n", + " 88.4000 1157.0000 10.7564\n", + " 88.4500 1077.0000 10.3779\n", + " 88.5000 1020.0000 10.0995\n", + " 88.5500 965.0000 9.8234\n", + " 88.6000 907.0000 9.5237\n", + " 88.6500 858.0000 9.2628\n", + " 88.7000 771.0000 8.7807\n", + " 88.7500 647.0000 8.0436\n", + " 88.8000 555.0000 7.4498\n", + " 88.8500 468.0000 6.8411\n", + " 88.9000 405.0000 6.3640\n", + " 88.9500 348.0000 5.8992\n", + " 89.0000 316.0000 5.6214\n", + " 89.0500 291.0000 5.3944\n", + " 89.1000 277.0000 5.2631\n", + " 89.1500 278.0000 5.2726\n", + " 89.2000 270.0000 5.1962\n", + " 89.2500 262.0000 5.1186\n", + " 89.3000 268.0000 5.1769\n", + " 89.3500 270.0000 5.1962\n", + " 89.4000 279.0000 5.2820\n", + " 89.4500 287.0000 5.3572\n", + " 89.5000 300.0000 5.4772\n", + " 89.5500 319.0000 5.6480\n", + " 89.6000 347.0000 5.8907\n", + " 89.6500 378.0000 6.1482\n", + " 89.7000 420.0000 6.4807\n", + " 89.7500 469.0000 6.8484\n", + " 89.8000 536.0000 7.3212\n", + " 89.8500 645.0000 8.0312\n", + " 89.9000 773.0000 8.7920\n", + " 89.9500 925.0000 9.6177\n", + " 90.0000 1115.0000 10.5594\n", + " 90.0500 1254.0000 11.1982\n", + " 90.1000 1367.0000 11.6919\n", + " 90.1500 1400.0000 11.8322\n", + " 90.2000 1327.0000 11.5195\n", + " 90.2500 1188.0000 10.8995\n", + " 90.3000 1038.0000 10.1882\n", + " 90.3500 879.0000 9.3755\n", + " 90.4000 738.0000 8.5907\n", + " 90.4500 644.0000 8.0250\n", + " 90.5000 594.0000 7.7071\n", + " 90.5500 601.0000 7.7524\n", + " 90.6000 643.0000 8.0187\n", + " 90.6500 697.0000 8.3487\n", + " 90.7000 786.0000 8.8657\n", + " 90.7500 842.0000 9.1761\n", + " 90.8000 847.0000 9.2033\n", + " 90.8500 791.0000 8.8938\n", + " 90.9000 702.0000 8.3785\n", + " 90.9500 592.0000 7.6942\n", + " 91.0000 508.0000 7.1274\n", + " 91.0500 418.0000 6.4653\n", + " 91.1000 362.0000 6.0166\n", + " 91.1500 328.0000 5.7271\n", + " 91.2000 299.0000 5.4681\n", + " 91.2500 279.0000 5.2820\n", + " 91.3000 270.0000 5.1962\n", + " 91.3500 257.0000 5.0695\n", + " 91.4000 253.0000 5.0299\n", + " 91.4500 258.0000 5.0794\n", + " 91.5000 257.0000 5.0695\n", + " 91.5500 249.0000 4.9900\n", + " 91.6000 245.0000 4.9497\n", + " 91.6500 257.0000 5.0695\n", + " 91.7000 260.0000 5.0990\n", + " 91.7500 284.0000 5.3292\n", + " 91.8000 296.0000 5.4406\n", + " 91.8500 322.0000 5.6745\n", + " 91.9000 343.0000 5.8566\n", + " 91.9500 382.0000 6.1806\n", + " 92.0000 405.0000 6.3640\n", + " 92.0500 411.0000 6.4109\n", + " 92.1000 416.0000 6.4498\n", + " 92.1500 406.0000 6.3718\n", + " 92.2000 372.0000 6.0992\n", + " 92.2500 353.0000 5.9414\n", + " 92.3000 330.0000 5.7446\n", + " 92.3500 317.0000 5.6303\n", + " 92.4000 313.0000 5.5946\n", + " 92.4500 312.0000 5.5857\n", + " 92.5000 309.0000 5.5588\n", + " 92.5500 303.0000 5.5045\n", + " 92.6000 288.0000 5.3666\n", + " 92.6500 276.0000 5.2536\n", + " 92.7000 264.0000 5.1381\n", + " 92.7500 246.0000 4.9598\n", + " 92.8000 249.0000 4.9900\n", + " 92.8500 241.0000 4.9092\n", + " 92.9000 251.0000 5.0100\n", + " 92.9500 243.0000 4.9295\n", + " 93.0000 246.0000 4.9598\n", + " 93.0500 246.0000 4.9598\n", + " 93.1000 249.0000 4.9900\n", + " 93.1500 244.0000 4.9396\n", + " 93.2000 252.0000 5.0200\n", + " 93.2500 252.0000 5.0200\n", + " 93.3000 258.0000 5.0794\n", + " 93.3500 265.0000 5.1478\n", + " 93.4000 263.0000 5.1284\n", + " 93.4500 284.0000 5.3292\n", + " 93.5000 299.0000 5.4681\n", + " 93.5500 320.0000 5.6569\n", + " 93.6000 344.0000 5.8652\n", + " 93.6500 363.0000 6.0249\n", + " 93.7000 372.0000 6.0992\n", + " 93.7500 358.0000 5.9833\n", + " 93.8000 351.0000 5.9245\n", + " 93.8500 354.0000 5.9498\n", + " 93.9000 330.0000 5.7446\n", + " 93.9500 322.0000 5.6745\n", + " 94.0000 334.0000 5.7793\n", + " 94.0500 339.0000 5.8224\n", + " 94.1000 345.0000 5.8737\n", + " 94.1500 357.0000 5.9749\n", + " 94.2000 360.0000 6.0000\n", + " 94.2500 358.0000 5.9833\n", + " 94.3000 372.0000 6.0992\n", + " 94.3500 425.0000 6.5192\n", + " 94.4000 511.0000 7.1484\n", + " 94.4500 626.0000 7.9120\n", + " 94.5000 770.0000 8.7750\n", + " 94.5500 946.0000 9.7263\n", + " 94.6000 1118.0000 10.5736\n", + " 94.6500 1205.0000 10.9772\n", + " 94.7000 1227.0000 11.0770\n", + " 94.7500 1157.0000 10.7564\n", + " 94.8000 1041.0000 10.2029\n", + " 94.8500 873.0000 9.3434\n", + " 94.9000 715.0000 8.4558\n", + " 94.9500 562.0000 7.4967\n", + " 95.0000 446.0000 6.6783\n", + " 95.0500 377.0000 6.1400\n", + " 95.1000 332.0000 5.7619\n", + " 95.1500 297.0000 5.4498\n", + " 95.2000 282.0000 5.3104\n", + " 95.2500 276.0000 5.2536\n", + " 95.3000 264.0000 5.1381\n", + " 95.3500 261.0000 5.1088\n", + " 95.4000 266.0000 5.1575\n", + " 95.4500 261.0000 5.1088\n", + " 95.5000 253.0000 5.0299\n", + " 95.5500 258.0000 5.0794\n", + " 95.6000 262.0000 5.1186\n", + " 95.6500 260.0000 5.0990\n", + " 95.7000 283.0000 5.3198\n", + " 95.7500 307.0000 5.5408\n", + " 95.8000 344.0000 5.8652\n", + " 95.8500 402.0000 6.3403\n", + " 95.9000 453.0000 6.7305\n", + " 95.9500 529.0000 7.2732\n", + " 96.0000 604.0000 7.7717\n", + " 96.0500 661.0000 8.1302\n", + " 96.1000 672.0000 8.1976\n", + " 96.1500 629.0000 7.9310\n", + " 96.2000 588.0000 7.6681\n", + " 96.2500 510.0000 7.1414\n", + " 96.3000 440.0000 6.6332\n", + " 96.3500 377.0000 6.1400\n", + " 96.4000 330.0000 5.7446\n", + " 96.4500 301.0000 5.4863\n", + " 96.5000 280.0000 5.2915\n", + " 96.5500 269.0000 5.1865\n", + " 96.6000 258.0000 5.0794\n", + " 96.6500 252.0000 5.0200\n", + " 96.7000 251.0000 5.0100\n", + " 96.7500 252.0000 5.0200\n", + " 96.8000 256.0000 5.0596\n", + " 96.8500 253.0000 5.0299\n", + " 96.9000 253.0000 5.0299\n", + " 96.9500 253.0000 5.0299\n", + " 97.0000 262.0000 5.1186\n", + " 97.0500 265.0000 5.1478\n", + " 97.1000 284.0000 5.3292\n", + " 97.1500 291.0000 5.3944\n", + " 97.2000 323.0000 5.6833\n", + " 97.2500 374.0000 6.1156\n", + " 97.3000 431.0000 6.5651\n", + " 97.3500 511.0000 7.1484\n", + " 97.4000 602.0000 7.7589\n", + " 97.4500 678.0000 8.2341\n", + " 97.5000 743.0000 8.6197\n", + " 97.5500 756.0000 8.6948\n", + " 97.6000 717.0000 8.4676\n", + " 97.6500 657.0000 8.1056\n", + " 97.7000 581.0000 7.6223\n", + " 97.7500 490.0000 7.0000\n", + " 97.8000 418.0000 6.4653\n", + " 97.8500 364.0000 6.0332\n", + " 97.9000 335.0000 5.7879\n", + " 97.9500 306.0000 5.5317\n", + " 98.0000 290.0000 5.3852\n", + " 98.0500 286.0000 5.3479\n", + " 98.1000 283.0000 5.3198\n", + " 98.1500 283.0000 5.3198\n", + " 98.2000 274.0000 5.2345\n", + " 98.2500 262.0000 5.1186\n", + " 98.3000 266.0000 5.1575\n", + " 98.3500 261.0000 5.1088\n", + " 98.4000 261.0000 5.1088\n", + " 98.4500 264.0000 5.1381\n", + " 98.5000 269.0000 5.1865\n", + " 98.5500 278.0000 5.2726\n", + " 98.6000 288.0000 5.3666\n", + " 98.6500 306.0000 5.5317\n", + " 98.7000 319.0000 5.6480\n", + " 98.7500 330.0000 5.7446\n", + " 98.8000 343.0000 5.8566\n", + " 98.8500 341.0000 5.8395\n", + " 98.9000 325.0000 5.7009\n", + " 98.9500 318.0000 5.6391\n", + " 99.0000 298.0000 5.4589\n", + " 99.0500 299.0000 5.4681\n", + " 99.1000 288.0000 5.3666\n", + " 99.1500 309.0000 5.5588\n", + " 99.2000 344.0000 5.8652\n", + " 99.2500 382.0000 6.1806\n", + " 99.3000 422.0000 6.4962\n", + " 99.3500 470.0000 6.8557\n", + " 99.4000 512.0000 7.1554\n", + " 99.4500 514.0000 7.1694\n", + " 99.5000 515.0000 7.1764\n", + " 99.5500 488.0000 6.9857\n", + " 99.6000 440.0000 6.6332\n", + " 99.6500 396.0000 6.2929\n", + " 99.7000 366.0000 6.0498\n", + " 99.7500 332.0000 5.7619\n", + " 99.8000 311.0000 5.5767\n", + " 99.8500 305.0000 5.5227\n", + " 99.9000 300.0000 5.4772\n", + " 99.9500 293.0000 5.4129\n", + " 100.0000 286.0000 5.3479\n", + " 100.0500 306.0000 5.5317\n", + " 100.1000 313.0000 5.5946\n", + " 100.1500 317.0000 5.6303\n", + " 100.2000 327.0000 5.7184\n", + " 100.2500 343.0000 5.8566\n", + " 100.3000 330.0000 5.7446\n", + " 100.3500 320.0000 5.6569\n", + " 100.4000 307.0000 5.5408\n", + " 100.4500 298.0000 5.4589\n", + " 100.5000 282.0000 5.3104\n", + " 100.5500 274.0000 5.2345\n", + " 100.6000 266.0000 5.1575\n", + " 100.6500 274.0000 5.2345\n", + " 100.7000 271.0000 5.2058\n", + " 100.7500 274.0000 5.2345\n", + " 100.8000 290.0000 5.3852\n", + " 100.8500 302.0000 5.4955\n", + " 100.9000 321.0000 5.6657\n", + " 100.9500 350.0000 5.9161\n", + " 101.0000 367.0000 6.0581\n", + " 101.0500 386.0000 6.2129\n", + " 101.1000 394.0000 6.2769\n", + " 101.1500 370.0000 6.0828\n", + " 101.2000 356.0000 5.9666\n", + " 101.2500 332.0000 5.7619\n", + " 101.3000 310.0000 5.5678\n", + " 101.3500 288.0000 5.3666\n", + " 101.4000 279.0000 5.2820\n", + " 101.4500 281.0000 5.3009\n", + " 101.5000 274.0000 5.2345\n", + " 101.5500 284.0000 5.3292\n", + " 101.6000 280.0000 5.2915\n", + " 101.6500 270.0000 5.1962\n", + " 101.7000 278.0000 5.2726\n", + " 101.7500 269.0000 5.1865\n", + " 101.8000 273.0000 5.2249\n", + " 101.8500 268.0000 5.1769\n", + " 101.9000 267.0000 5.1672\n", + " 101.9500 265.0000 5.1478\n", + " 102.0000 257.0000 5.3437\n", + " 102.0500 258.0000 5.3541\n", + " 102.1000 267.0000 5.4467\n", + " 102.1500 267.0000 5.4467\n", + " 102.2000 277.0000 5.5478\n", + " 102.2500 287.0000 5.6470\n", + " 102.3000 302.0000 5.7927\n", + " 102.3500 332.0000 6.0736\n", + " 102.4000 360.0000 6.3246\n", + " 102.4500 411.0000 6.7577\n", + " 102.5000 457.0000 7.1259\n", + " 102.5500 524.0000 7.6303\n", + " 102.6000 608.0000 8.2192\n", + " 102.6500 699.0000 8.8129\n", + " 102.7000 861.0000 9.7809\n", + " 102.7500 1096.0000 11.0353\n", + " 102.8000 1377.0000 12.3693\n", + " 102.8500 1685.0000 13.6829\n", + " 102.9000 1901.0000 14.5335\n", + " 102.9500 2069.0000 15.1621\n", + " 103.0000 2016.0000 14.9666\n", + " 103.0500 1800.0000 14.1421\n", + " 103.1000 1500.0000 12.9099\n", + " 103.1500 1181.0000 11.4552\n", + " 103.2000 937.0000 10.2035\n", + " 103.2500 728.0000 8.9938\n", + " 103.3000 629.0000 8.3600\n", + " 103.3500 576.0000 8.0000\n", + " 103.4000 556.0000 7.8599\n", + " 103.4500 535.0000 7.7100\n", + " 103.5000 519.0000 7.5939\n", + " 103.5500 486.0000 7.3485\n", + " 103.6000 465.0000 7.1880\n", + " 103.6500 429.0000 6.9041\n", + " 103.7000 385.0000 6.5405\n", + " 103.7500 361.0000 6.3333\n", + " 103.8000 342.0000 6.1644\n", + " 103.8500 312.0000 5.8878\n", + " 103.9000 293.0000 5.7057\n", + " 103.9500 279.0000 5.5678\n", + " 104.0000 277.0000 5.5478\n", + " 104.0500 265.0000 5.4263\n", + " 104.1000 257.0000 5.3437\n", + " 104.1500 256.0000 5.3333\n", + " 104.2000 250.0000 5.2705\n", + " 104.2500 260.0000 5.3748\n", + " 104.3000 261.0000 5.3852\n", + " 104.3500 258.0000 5.3541\n", + " 104.4000 263.0000 5.4058\n", + " 104.4500 268.0000 5.4569\n", + " 104.5000 284.0000 5.6174\n", + " 104.5500 306.0000 5.8310\n", + " 104.6000 325.0000 6.0093\n", + " 104.6500 337.0000 6.1192\n", + " 104.7000 337.0000 6.1192\n", + " 104.7500 344.0000 6.1824\n", + " 104.8000 340.0000 6.1464\n", + " 104.8500 337.0000 6.1192\n", + " 104.9000 328.0000 6.0369\n", + " 104.9500 321.0000 5.9722\n", + " 105.0000 306.0000 5.8310\n", + " 105.0500 295.0000 5.7252\n", + " 105.1000 289.0000 5.6667\n", + " 105.1500 281.0000 5.5877\n", + " 105.2000 267.0000 5.4467\n", + " 105.2500 266.0000 5.4365\n", + " 105.3000 270.0000 5.4772\n", + " 105.3500 263.0000 5.4058\n", + " 105.4000 256.0000 5.3333\n", + " 105.4500 266.0000 5.4365\n", + " 105.5000 264.0000 5.4160\n", + " 105.5500 259.0000 5.3645\n", + " 105.6000 261.0000 5.3852\n", + " 105.6500 261.0000 5.3852\n", + " 105.7000 258.0000 5.3541\n", + " 105.7500 253.0000 5.3020\n", + " 105.8000 248.0000 5.2493\n", + " 105.8500 244.0000 5.2068\n", + " 105.9000 249.0000 5.2599\n", + " 105.9500 251.0000 5.2810\n", + " 106.0000 245.0000 5.2175\n", + " 106.0500 245.0000 5.2175\n", + " 106.1000 247.0000 5.2387\n", + " 106.1500 247.0000 5.2387\n", + " 106.2000 254.0000 5.3125\n", + " 106.2500 259.0000 5.3645\n", + " 106.3000 250.0000 5.2705\n", + " 106.3500 251.0000 5.2810\n", + " 106.4000 258.0000 5.3541\n", + " 106.4500 252.0000 5.2915\n", + " 106.5000 255.0000 5.3229\n", + " 106.5500 259.0000 5.3645\n", + " 106.6000 256.0000 5.3333\n", + " 106.6500 264.0000 5.4160\n", + " 106.7000 268.0000 5.4569\n", + " 106.7500 281.0000 5.5877\n", + " 106.8000 303.0000 5.8023\n", + " 106.8500 331.0000 6.0645\n", + " 106.9000 371.0000 6.4205\n", + " 106.9500 420.0000 6.8313\n", + " 107.0000 484.0000 7.3333\n", + " 107.0500 532.0000 7.6884\n", + " 107.1000 576.0000 8.0000\n", + " 107.1500 582.0000 8.0416\n", + " 107.2000 563.0000 7.9092\n", + " 107.2500 527.0000 7.6522\n", + " 107.3000 490.0000 7.3786\n", + " 107.3500 465.0000 7.1880\n", + " 107.4000 467.0000 7.2034\n", + " 107.4500 449.0000 7.0632\n", + " 107.5000 416.0000 6.7987\n", + " 107.5500 393.0000 6.6081\n", + " 107.6000 366.0000 6.3770\n", + " 107.6500 331.0000 6.0645\n", + " 107.7000 316.0000 5.9255\n", + " 107.7500 297.0000 5.7446\n", + " 107.8000 294.0000 5.7155\n", + " 107.8500 292.0000 5.6960\n", + " 107.9000 286.0000 5.6372\n", + " 107.9500 295.0000 5.7252\n", + " 108.0000 306.0000 6.1847\n", + " 108.0500 315.0000 6.2750\n", + " 108.1000 334.0000 6.4614\n", + " 108.1500 373.0000 6.8282\n", + " 108.2000 406.0000 7.1239\n", + " 108.2500 447.0000 7.4750\n", + " 108.3000 499.0000 7.8978\n", + " 108.3500 507.0000 7.9608\n", + " 108.4000 506.0000 7.9530\n", + " 108.4500 488.0000 7.8102\n", + " 108.5000 432.0000 7.3485\n", + " 108.5500 391.0000 6.9911\n", + " 108.6000 342.0000 6.5383\n", + " 108.6500 315.0000 6.2750\n", + " 108.7000 292.0000 6.0415\n", + " 108.7500 275.0000 5.8630\n", + " 108.8000 274.0000 5.8523\n", + " 108.8500 259.0000 5.6899\n", + " 108.9000 250.0000 5.5902\n", + " 108.9500 258.0000 5.6789\n", + " 109.0000 252.0000 5.6125\n", + " 109.0500 255.0000 5.6458\n", + " 109.1000 254.0000 5.6347\n", + " 109.1500 253.0000 5.6236\n", + " 109.2000 254.0000 5.6347\n", + " 109.2500 252.0000 5.6125\n", + " 109.3000 257.0000 5.6679\n", + " 109.3500 250.0000 5.5902\n", + " 109.4000 255.0000 5.6458\n", + " 109.4500 251.0000 5.6013\n", + " 109.5000 254.0000 5.6347\n", + " 109.5500 260.0000 5.7009\n", + " 109.6000 249.0000 5.5790\n", + " 109.6500 253.0000 5.6236\n", + " 109.7000 254.0000 5.6347\n", + " 109.7500 259.0000 5.6899\n", + " 109.8000 268.0000 5.7879\n", + " 109.8500 270.0000 5.8095\n", + " 109.9000 284.0000 5.9582\n", + " 109.9500 305.0000 6.1745\n", + " 110.0000 322.0000 6.3443\n", + " 110.0500 364.0000 6.7454\n", + " 110.1000 417.0000 7.2198\n", + " 110.1500 470.0000 7.6649\n", + " 110.2000 573.0000 8.4632\n", + " 110.2500 678.0000 9.2060\n", + " 110.3000 771.0000 9.8171\n", + " 110.3500 847.0000 10.2896\n", + " 110.4000 854.0000 10.3320\n", + " 110.4500 794.0000 9.9624\n", + " 110.5000 720.0000 9.4868\n", + " 110.5500 611.0000 8.7393\n", + " 110.6000 520.0000 8.0623\n", + " 110.6500 463.0000 7.6076\n", + " 110.7000 412.0000 7.1764\n", + " 110.7500 399.0000 7.0622\n", + " 110.8000 416.0000 7.2111\n", + " 110.8500 428.0000 7.3144\n", + " 110.9000 432.0000 7.3485\n", + " 110.9500 420.0000 7.2457\n", + " 111.0000 402.0000 7.0887\n", + " 111.0500 364.0000 6.7454\n", + " 111.1000 348.0000 6.5955\n", + " 111.1500 334.0000 6.4614\n", + " 111.2000 321.0000 6.3344\n", + " 111.2500 330.0000 6.4226\n", + " 111.3000 342.0000 6.5383\n", + " 111.3500 380.0000 6.8920\n", + " 111.4000 385.0000 6.9372\n", + " 111.4500 420.0000 7.2457\n", + " 111.5000 441.0000 7.4246\n", + " 111.5500 465.0000 7.6240\n", + " 111.6000 444.0000 7.4498\n", + " 111.6500 406.0000 7.1239\n", + " 111.7000 383.0000 6.9192\n", + " 111.7500 345.0000 6.5670\n", + " 111.8000 332.0000 6.4420\n", + " 111.8500 321.0000 6.3344\n", + " 111.9000 308.0000 6.2048\n", + " 111.9500 292.0000 6.0415\n", + " 112.0000 303.0000 6.1543\n", + " 112.0500 314.0000 6.2650\n", + " 112.1000 333.0000 6.4517\n", + " 112.1500 379.0000 6.8829\n", + " 112.2000 438.0000 7.3993\n", + " 112.2500 505.0000 7.9451\n", + " 112.3000 594.0000 8.6168\n", + " 112.3500 659.0000 9.0761\n", + " 112.4000 717.0000 9.4670\n", + " 112.4500 738.0000 9.6047\n", + " 112.5000 710.0000 9.4207\n", + " 112.5500 642.0000 8.9582\n", + " 112.6000 547.0000 8.2689\n", + " 112.6500 492.0000 7.8422\n", + " 112.7000 421.0000 7.2543\n", + " 112.7500 386.0000 6.9462\n", + " 112.8000 344.0000 6.5574\n", + " 112.8500 337.0000 6.4904\n", + " 112.9000 350.0000 6.6144\n", + " 112.9500 364.0000 6.7454\n", + " 113.0000 415.0000 7.2024\n", + " 113.0500 506.0000 7.9530\n", + " 113.1000 586.0000 8.5586\n", + " 113.1500 674.0000 9.1788\n", + " 113.2000 750.0000 9.6825\n", + " 113.2500 787.0000 9.9184\n", + " 113.3000 753.0000 9.7018\n", + " 113.3500 682.0000 9.2331\n", + " 113.4000 597.0000 8.6386\n", + " 113.4500 499.0000 7.8978\n", + " 113.5000 417.0000 7.2198\n", + " 113.5500 362.0000 6.7268\n", + " 113.6000 340.0000 6.5192\n", + " 113.6500 302.0000 6.1441\n", + " 113.7000 286.0000 5.9791\n", + " 113.7500 280.0000 5.9161\n", + " 113.8000 283.0000 5.9477\n", + " 113.8500 276.0000 5.8737\n", + " 113.9000 282.0000 5.9372\n", + " 113.9500 284.0000 5.9582\n", + " 114.0000 295.0000 6.4918\n", + " 114.0500 310.0000 6.6548\n", + " 114.1000 319.0000 6.7507\n", + " 114.1500 321.0000 6.7718\n", + " 114.2000 304.0000 6.5900\n", + " 114.2500 298.0000 6.5247\n", + " 114.3000 293.0000 6.4697\n", + " 114.3500 283.0000 6.3583\n", + " 114.4000 277.0000 6.2906\n", + " 114.4500 269.0000 6.1991\n", + " 114.5000 265.0000 6.1528\n", + " 114.5500 277.0000 6.2906\n", + " 114.6000 283.0000 6.3583\n", + " 114.6500 283.0000 6.3583\n", + " 114.7000 293.0000 6.4697\n", + " 114.7500 303.0000 6.5792\n", + " 114.8000 320.0000 6.7612\n", + " 114.8500 316.0000 6.7188\n", + " 114.9000 331.0000 6.8765\n", + " 114.9500 346.0000 7.0305\n", + " 115.0000 327.0000 6.8348\n", + " 115.0500 328.0000 6.8452\n", + " 115.1000 306.0000 6.6117\n", + " 115.1500 291.0000 6.4476\n", + " 115.2000 286.0000 6.3920\n", + " 115.2500 278.0000 6.3019\n", + " 115.3000 273.0000 6.2450\n", + " 115.3500 267.0000 6.1760\n", + " 115.4000 272.0000 6.2335\n", + " 115.4500 257.0000 6.0592\n", + " 115.5000 260.0000 6.0945\n", + " 115.5500 265.0000 6.1528\n", + " 115.6000 264.0000 6.1412\n", + " 115.6500 272.0000 6.2335\n", + " 115.7000 270.0000 6.2106\n", + " 115.7500 268.0000 6.1875\n", + " 115.8000 269.0000 6.1991\n", + " 115.8500 287.0000 6.4031\n", + " 115.9000 292.0000 6.4587\n", + " 115.9500 295.0000 6.4918\n", + " 116.0000 317.0000 6.7295\n", + " 116.0500 335.0000 6.9179\n", + " 116.1000 364.0000 7.2111\n", + " 116.1500 410.0000 7.6532\n", + " 116.2000 477.0000 8.2549\n", + " 116.2500 556.0000 8.9123\n", + " 116.3000 642.0000 9.5768\n", + " 116.3500 755.0000 10.3854\n", + " 116.4000 864.0000 11.1098\n", + " 116.4500 946.0000 11.6251\n", + " 116.5000 970.0000 11.7716\n", + " 116.5500 941.0000 11.5943\n", + " 116.6000 870.0000 11.1484\n", + " 116.6500 759.0000 10.4129\n", + " 116.7000 647.0000 9.6140\n", + " 116.7500 540.0000 8.7831\n", + " 116.8000 468.0000 8.1766\n", + " 116.8500 418.0000 7.7275\n", + " 116.9000 379.0000 7.3582\n", + " 116.9500 381.0000 7.3776\n", + " 117.0000 405.0000 7.6064\n", + " 117.0500 446.0000 7.9821\n", + " 117.1000 476.0000 8.2462\n", + " 117.1500 523.0000 8.6437\n", + " 117.2000 561.0000 8.9523\n", + " 117.2500 555.0000 8.9043\n", + " 117.3000 529.0000 8.6932\n", + " 117.3500 485.0000 8.3238\n", + " 117.4000 436.0000 7.8921\n", + " 117.4500 398.0000 7.5404\n", + " 117.5000 355.0000 7.1214\n", + " 117.5500 322.0000 6.7823\n", + " 117.6000 304.0000 6.5900\n", + " 117.6500 285.0000 6.3808\n", + " 117.7000 270.0000 6.2106\n", + " 117.7500 278.0000 6.3019\n", + " 117.8000 260.0000 6.0945\n", + " 117.8500 268.0000 6.1875\n", + " 117.9000 264.0000 6.1412\n", + " 117.9500 265.0000 6.1528\n", + " 118.0000 263.0000 6.1296\n", + " 118.0500 267.0000 6.1760\n", + " 118.1000 286.0000 6.3920\n", + " 118.1500 293.0000 6.4697\n", + " 118.2000 291.0000 6.4476\n", + " 118.2500 319.0000 6.7507\n", + " 118.3000 366.0000 7.2309\n", + " 118.3500 411.0000 7.6625\n", + " 118.4000 461.0000 8.1152\n", + " 118.4500 489.0000 8.3581\n", + " 118.5000 521.0000 8.6272\n", + " 118.5500 555.0000 8.9043\n", + " 118.6000 550.0000 8.8641\n", + " 118.6500 511.0000 8.5440\n", + " 118.7000 486.0000 8.3324\n", + " 118.7500 436.0000 7.8921\n", + " 118.8000 392.0000 7.4833\n", + " 118.8500 368.0000 7.2506\n", + " 118.9000 330.0000 6.8661\n", + " 118.9500 328.0000 6.8452\n", + " 119.0000 343.0000 7.0000\n", + " 119.0500 371.0000 7.2801\n", + " 119.1000 394.0000 7.5024\n", + " 119.1500 441.0000 7.9373\n", + " 119.2000 468.0000 8.1766\n", + " 119.2500 469.0000 8.1854\n", + " 119.3000 456.0000 8.0711\n", + " 119.3500 416.0000 7.7090\n", + " 119.4000 394.0000 7.5024\n", + " 119.4500 361.0000 7.1813\n", + " 119.5000 330.0000 6.8661\n", + " 119.5500 312.0000 6.6762\n", + " 119.6000 293.0000 6.4697\n", + " 119.6500 285.0000 6.3808\n", + " 119.7000 286.0000 6.3920\n", + " 119.7500 275.0000 6.2678\n", + " 119.8000 274.0000 6.2564\n", + " 119.8500 281.0000 6.3358\n", + " 119.9000 279.0000 6.3133\n", + " 119.9500 298.0000 6.5247\n", + " 120.0000 312.0000 7.2111\n", + "\n" + ] + } + ], + "source": [ + "meas_fname = 'D1A@ILL.xye'\n", + "\n", + "with open(meas_fname, 'r') as f:\n", + " content = f.read()\n", + " \n", + "print(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load the measured data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "meas_x, meas_y, meas_e = np.loadtxt(meas_fname, unpack=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualize the measured data" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "eb5d1e54530a401ebc223e8a9dad00eb", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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YP369bjllluwdOlSbNy4ES+++CLOP/98nHDCCRg9ejQAYMqUKRg5ciTOO+88fPrpp3j99ddx4403YubMmSgrKwMAXHbZZfjyyy9x7bXXYs2aNbjvvvvw9NNP46qrrirYsRNCCCGE5IOiE4D3338/GhsbMWnSJAwYMED/99RTTwEA/H4/3nzzTUyZMgXDhw/HL3/5S5x55pl46aWX9G14PB68/PLL8Hg8mDhxIs4991ycf/75prqBw4YNwyuvvIK5c+dizJgxuPPOO/GPf/yDNQAJyTGRiIa7536Od9btLPRQCCFpMGnSJPzsZz/DlVdeiV69eqGurg4PPvggWltbcdFFF6GqqgoHHXQQXnvtNdN6K1euxLRp09CzZ0/U1dXhvPPOw65du/TP58yZg+OOOw61tbXo06cPvvOd72D9+vX654FAAFdccQUGDBiA8vJyDB06FLNnz87bcXc3ii4JJFlZwsGDB2PhwoVJtzN06FC8+uqrCZeZNGkSPvnkk5TGRwjJjFdXbsOf560DAGy8dXqBR0NIYdE0De3BcEH2XeHzpF2H8F//+heuvfZaLFmyBE899RQuv/xyPPfcczj99NNxww034O6778Z5552HTZs2obKyEvv27cOJJ56In/zkJ7j77rvR3t6O6667DmeddRbmz58PAGhtbcXVV1+N0aNHo6WlBbNmzcLpp5+OZcuWwe1245577sGLL76Ip59+GkOGDMHmzZuxefPmbJ6SkqLoBCAhpHvT0NhR6CEQUjS0B8MYOev1gux79c1TUelPTwaMGTMGN954I4BohYxbb70Vffv2xSWXXAIAmDVrFu6//34sX74cRx99NP76179i7NixejcuAHjooYcwePBgfP755zjkkENw5plnmvbx0EMPoV+/fli9ejUOP/xwbNq0CQcffDCOO+44uFwuDB06NM0jJ0ARuoAJId2bMi9vO4R0dUTMPRANu+rTpw9GjRqlvyfq7IpkzE8//RQLFixAz5499X/Dhw8HAN3Nu27dOpxzzjk44IADUF1djf333x8AsGnTJgDRRJRly5bh0EMPxc9//nO88cYbOT/O7gwtgISQvFLm8+ivO0NhlHk9CZYmpHtT4fNg9c2FiT2v8KX/2/P5fKa/XS6X6T3hWo5EIgCAlpYWnHrqqbjtttss2xIVPE499VQMHToUDz74IAYOHIhIJILD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", + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Analysis ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Create job with default parameters for the 1D powder neutron diffraction experiment with constant wavelength " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current calculator engine: CrysPy\n" + ] + } + ], + "source": [ + "calculator = Calculator()\n", + "\n", + "print(f\"Current calculator engine: {calculator.current_interface_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: /tmp/easydiffraction_temp.cif\n" + ] + } + ], + "source": [ + "job = Job(phases=phases, parameters=Instrument1DCWParameters.default(), calculator=calculator)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Generate the calculated data" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualize both the measured and calculated data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6988f908ec014e18a3eb70e1e2fddbaf", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAACjLUlEQVR4nO2dd7gU1f3/31tv4xbqvaBUBQEFRFDEFqMERDTRmK/RGMUeDcQgRo3+lBg1sSRqYmKJGjVFI5rYO4KCBVBRpCki0uHSby/b5vfH7Jk9c2a2793de/f9ep773C1TzsyemfOeTzsOTdM0EEIIIYSQgsGZ6wYQQgghhJDsQgFICCGEEFJgUAASQgghhBQYFICEEEIIIQUGBSAhhBBCSIFBAUgIIYQQUmBQABJCCCGEFBgUgIQQQgghBQYFICGEEEJIgUEBSAghhBBSYFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQYFICEEEIIIQUGBSAhhBBCSIFBAUgIIYQQUmBQABJCCCGEFBgUgIQQQgghBQYFICGEEEJIgUEBSAghhBBSYFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQYFICEEEIIIQUGBSAhhBBCSIFBAUgIIYQQUmBQABJCCCGEFBgUgIQQQgghBQYFICGEEEJIgUEBSAghhBBSYFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQYFICEEEIIIQUGBSAhhBBCSIFBAUgIIYQQUmBQABJCCCGEFBgUgIQQQgghBQYFICGEEEJIgUEBSAghhBBSYFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQYFICEEEIIIQUGBSAhhBBCSIFBAUgIIYQQUmBQABJCCCGEFBgUgIQQQgghBYY71w3ozIRCIWzfvh3l5eVwOBy5bg4hhBBCEkDTNDQ2NqJfv35wOgvTFkYBmAbbt29H//79c90MQgghhKTAli1bcOCBB+a6GTmBAjANysvLAegdqKKiIsetIYQQQkgiNDQ0oH///sY4XohQAKaBcPtWVFRQABJCCCGdjEIO3ypMxzchhBBCSAFDAUgIIYQQUmBQABJCCCGEFBh5FwN4xx134Pnnn8dXX32FkpISHHPMMbjrrrtwyCGHGMuceOKJWLhwoWm9n/3sZ3j44YeN95s3b8aVV16Jd999F926dcP06dNxxx13wO2OHPJ7772H2bNnY/Xq1ejfvz9uuukmXHjhhR1+jIQQQhInGAzC7/fnuhmkE+FyueB2uws6xi8eeScAFy5ciBkzZuDII49EIBDAjTfeiMmTJ2PNmjUoKyszlrvssstw6623Gu9LS0uN18FgENOmTUNNTQ0++ugj7NixAxdccAE8Hg9+//vfAwA2bNiAadOm4YorrsBTTz2F+fPn49JLL0Xfvn0xZcqU7B0wIYSQqDQ1NWHr1q3QNC3XTSGdjNLSUvTt2xderzfXTclLHFqeX1W7d+9Gnz59sHDhQpxwwgkAdAvg4Ycfjj/96U+267zxxhs47bTTsH37dlRXVwMAHn74YVx//fXYvXs3vF4vrr/+erz22mtYtWqVsd4555yDuro6vPnmmwm1raGhAZWVlaivr2cWMCGEZJhgMIh169ahtLQUvXv3pjWHJISmafD5fNi9ezeCwSCGDh1qKfbM8TsPLYAq9fX1AIAePXqYPn/qqafw73//GzU1NTj99NNx8803G1bAxYsXY9SoUYb4A4ApU6bgyiuvxOrVqzF27FgsXrwYkyZNMm1zypQpmDVrVsceECGEkITw+/3QNA29e/dGSUlJrptDOhElJSXweDzYtGkTfD4fiouLc92kvCOvBWAoFMKsWbNw7LHH4rDDDjM+/8lPfoKBAweiX79+WLFiBa6//nqsXbsWzz//PACgtrbWJP4AGO9ra2tjLtPQ0IDW1lbbm017ezva29uN9w0NDZk5UEIIIVGh5Y+kQqFO8ZYoeS0AZ8yYgVWrVuGDDz4wfX755Zcbr0eNGoW+ffvi5JNPxvr163HQQQd1WHvuuOMO/Pa3v+2w7RNCCCGEZIO8lcczZ87Eq6++infffTfuPH0TJkwAAHzzzTcAgJqaGuzcudO0jHhfU1MTc5mKioqoroYbbrgB9fX1xt+WLVuSPzBCCCGEkByTdwJQ0zTMnDkTL7zwAhYsWIDBgwfHXWf58uUAgL59+wIAJk6ciJUrV2LXrl3GMvPmzUNFRQVGjhxpLDN//nzTdubNm4eJEydG3U9RUZEx7RunfyOEEGLHhRdeiDPOOCPXzSAkJnknAGfMmIF///vfePrpp1FeXo7a2lrU1taitbUVALB+/XrcdtttWLZsGTZu3IiXX34ZF1xwAU444QSMHj0aADB58mSMHDkS559/Pr744gu89dZbuOmmmzBjxgwUFRUBAK644gp8++23uO666/DVV1/hwQcfxLPPPourr746Z8dOCCGEEJIN8k4APvTQQ6ivr8eJJ56Ivn37Gn9z584FAHi9XrzzzjuYPHkyhg8fjmuuuQZnnXUWXnnlFWMbLpcLr776KlwuFyZOnIif/vSnuOCCC0x1AwcPHozXXnsN8+bNw5gxY3DPPffgscceYw1AQjqYUEjDffO+xvvrdue6KYR0OCeeeCJ+8YtfYNasWejevTuqq6vx6KOPorm5GRdddBHKy8tx8MEH44033jCtt2rVKkydOhXdunVDdXU1zj//fOzZs8f4/s0338Rxxx2Hqqoq9OzZE6eddhrWr19vfO/z+TBz5kz07dsXxcXFGDhwIO64446sHTfJf/IuCSReWcL+/ftbZgGxY+DAgXj99ddjLnPiiSfi888/T6p9hJD0eH3VDvx5/joAwMY7p+W4NaQzoWkaWv3BnOy7xONKORv5H//4B6677jp8/PHHmDt3Lq688kq88MILOPPMM3HjjTfivvvuw/nnn4/NmzejtLQUdXV1OOmkk3DppZfivvvuQ2trK66//nqcffbZWLBgAQCgubkZs2fPxujRo9HU1IQ5c+bgzDPPxPLly+F0OnH//ffj5ZdfxrPPPosBAwZgy5YtjFsnJvJOABJCuja19W25bgLppLT6gxg5562c7HvNrVNQ6k1tyBwzZgxuuukmAHoy4Z133olevXrhsssuAwDMmTMHDz30EFasWIGjjz4af/3rXzF27Fhj5ioAePzxx9G/f398/fXXGDZsGM466yzTPh5//HH07t0ba9aswWGHHYbNmzdj6NChOO644+BwODBw4MAUj5x0VfLOBUwI6dqUeF3G6zyfiIiQjCDi0wE9RKlnz54YNWqU8ZmoSSsSF7/44gtjHnvxN3z4cAAw3Lzr1q3DueeeiyFDhqCiogKDBg0CAGzevBmAnoiyfPlyHHLIIbjqqqvw9ttvd/hxks4FLYCEkKxS7I4IwDZ/yCQICYlFiceFNbfmJk67xJN6P/V4PKb3DofD9JlwLYdCIQD6/Menn3467rrrLsu2RLWL008/HQMHDsSjjz6Kfv36IRQK4bDDDoPP5wMAHHHEEdiwYQPeeOMNvPPOOzj77LMxadIk/Pe//035OEjXggKQEJJVZJtfIBQCQAFIEsPhcKTshu1MHHHEEfjf//6HQYMGwe22Hu/evXuxdu1aPProozj++OMBwDJhAgBUVFTgxz/+MX784x/jRz/6EU455RTs27fPMrUqKUzoAiaEZJVAMGS8DtEDTIiFGTNmYN++fTj33HPxySefYP369Xjrrbdw0UUXIRgMonv37ujZsyceeeQRfPPNN1iwYAFmz55t2sa9996L//znP/jqq6/w9ddf47nnnkNNTQ2qqqpyc1Ak76AAJIRkFb+k+hgDSIiVfv364cMPP0QwGMTkyZMxatQozJo1C1VVVXA6nXA6nXjmmWewbNkyHHbYYbj66qvxhz/8wbSN8vJy3H333Rg/fjyOPPJIbNy4Ea+//jrnxyUGDo134JRpaGhAZWUl6uvrOSsIIQnyxIcb8NtX1gAAPr/5e+he5s1xi0i+0tbWhg0bNmDw4MEoLi7OdXNIJyNW/+H4TQsgISTLBCULYIjPn4QQkhMoAAkhWUXWfIwBJISQ3EABSAjJKrLVTwMVICGE5AIKQEJIVpElHz3AhBCSGygACSFZRbYAMgaQEEJyAwUgISSrMAaQEEJyDwUgISSryJWnWIWKEEJyAwUgISSryJqP+o8QQnIDBSAhJKuETC5gKkBCCMkFFICEkKwil36h/iMkPrfccgsOP/zwtLbh8/lw8MEH46OPPspMo3LMr3/9a/ziF7/IdTM6NRSAhJCsQgsg6epceOGFOOOMM3LdDBMPP/wwBg8ejGOOOcb0+bvvvotTTz0VPXv2RGlpKUaOHIlrrrkG27Zt67C2bNy4EQ6Hw/jr2bMnJk+ejM8//zzhbfzqV7/CP/7xD3z77bcd1s6uDgUgISS7mMrA5LAdhBQImqbhr3/9Ky655BLT53/7298wadIk1NTU4H//+x/WrFmDhx9+GPX19bjnnntstxUMBhEKhTLSrnfeeQc7duzAW2+9haamJkydOhV1dXUJrdurVy9MmTIFDz30UEbaUohQABJCsopZ9FEBkq5PKBTC3XffjYMPPhhFRUUYMGAAfve73xnfX3/99Rg2bBhKS0sxZMgQ3HzzzfD7/TG3+fjjj+PQQw9FUVER+vbti5kzZ0ZddtmyZVi/fj2mTZtmfLZ161ZcddVVuOqqq/D444/jxBNPxKBBg3DCCSfgsccew5w5cwAATz75JKqqqvDyyy9j5MiRKCoqwgcffACPx4Pa2lrTfmbNmoXjjz8eALBp0yacfvrp6N69O8rKynDooYfi9ddfNy3fs2dP1NTUYPz48fjjH/+InTt3YunSpbj11ltx2GGHWY7j8MMPx80332y8P/300/HMM8/EPE8kOu5cN4AQUljIMYC0AJKk0DTA35KbfXtKAYcjpVVvuOEGPProo7jvvvtw3HHHYceOHfjqq6+M78vLy/Hkk0+iX79+WLlyJS677DKUl5fjuuuus93eQw89hNmzZ+POO+/E1KlTUV9fjw8//DDq/t9//30MGzYM5eXlxmfPPfccfD5f1H1UVVUZr1taWnDXXXfhscceQ8+ePdG/f38MGTIE//rXv3DttdcCAPx+P5566incfffdAIAZM2bA5/Nh0aJFKCsrw5o1a9CtW7eobSwpKQGgxypefPHF+O1vf4tPPvkERx55JADg888/x4oVK/D8888b6xx11FHYunUrNm7ciEGDBkXdNrGHApAQklUYA0hSxt8C/L5fbvZ943bAW5b0ao2Njfjzn/+Mv/71r5g+fToA4KCDDsJxxx1nLHPTTTcZrwcNGoRf/epXeOaZZ6KKs9tvvx3XXHMNfvnLXxqfCaFkx6ZNm9Cvn/m8rVu3DhUVFejbt2/cY/D7/XjwwQcxZswY47NLLrkETzzxhCEAX3nlFbS1teHss88GAGzevBlnnXUWRo0aBQAYMmRI1O3X1dXhtttuQ7du3XDUUUehuroaU6ZMwRNPPGEc1xNPPIHvfOc7pu2IY9q0aRMFYArQBUwIySqmmUAyE0pESN7y5Zdfor29HSeffHLUZebOnYtjjz0WNTU16NatG2666SZs3rzZdtldu3Zh+/btMben0traiuLiYtNnmqbBkaBF0+v1YvTo0abPLrzwQnzzzTdYsmQJAN1VfPbZZ6OsTBfJV111FW6//XYce+yx+M1vfoMVK1ZYtnvMMcegW7du6N69O7744gvMnTsX1dXVAIDLLrsM//nPf9DW1gafz4enn34aF198sWl9YTVsacmRVbiTQwsgISSrmGYCYQwgSQZPqW6Jy9W+U0CIlGgsXrwY5513Hn77299iypQpqKysxDPPPBM1CSPe9uzo1asXVq5cafps2LBhqK+vx44dO+JaAUtKSixisU+fPjj99NPxxBNPYPDgwXjjjTfw3nvvGd9feumlmDJlCl577TW8/fbbuOOOO3DPPfeYSrfMnTsXI0eORM+ePU0uZ0CP7ysqKsILL7wAr9cLv9+PH/3oR6Zl9u3bBwDo3bt3oqeCSNACSAjJKrLkoweYJIXDobthc/GXYvzf0KFDUVJSgvnz59t+/9FHH2HgwIH4f//v/2H8+PEYOnQoNm3aFHV75eXlGDRoUNTt2TF27Fh89dVXpoevH/3oR/B6vUbMnkoi2biXXnop5s6di0ceeQQHHXQQjj32WNP3/fv3xxVXXIHnn38e11xzDR599FHL9wcddJBF/AGA2+3G9OnT8cQTT+CJJ57AOeecYxG/q1atgsfjwaGHHhq3rcQKLYCEkKyimcrAUAGSrk1xcTGuv/56XHfddfB6vTj22GOxe/durF69GpdccgmGDh2KzZs345lnnsGRRx6J1157DS+88ELMbd5yyy244oor0KdPH0ydOhWNjY348MMPoxZG/u53v4umpiasXr3ayK7t378/7rvvPsycORMNDQ244IILMGjQIGzduhX//Oc/0a1bt6hWSMGUKVNQUVGB22+/Hbfeeqvpu1mzZmHq1KkYNmwY9u/fj3fffRcjRoxI4szpAlOsY5fk8v777+P4449PySpKaAEkhGSZEOcCJgXGzTffjGuuuQZz5szBiBEj8OMf/xi7du0CAHz/+9/H1VdfjZkzZ+Lwww/HRx99ZCp1Ysf06dPxpz/9CQ8++CAOPfRQnHbaaVi3bl3U5Xv27IkzzzwTTz31lOnzn//853j77bexbds2nHnmmRg+fDguvfRSVFRU4Fe/+lXc43I6nbjwwgsRDAZxwQUXmL4LBoOYMWMGRowYgVNOOQXDhg3Dgw8+GHebMkOHDsUxxxyD4cOHY8KECZbvn3nmGVx22WVJbZNEcGgab8Gp0tDQgMrKStTX16OioiLXzSGkU3DrK2vw+IcbAAAv/PwYjB3QPcctIvlKW1sbNmzYgMGDB1uSGEhyrFixAt/73vewfv36mOVYkuWSSy7B7t278fLLL2dsmwJN0zB06FD8/Oc/x+zZs03fvfHGG7jmmmuwYsUKuN32zsxY/YfjN13AhJAsE+JMIIRkndGjR+Ouu+7Chg0bjNIs6VBfX4+VK1fi6aef7hDxt3v3bjzzzDOora3FRRddZPm+ubkZTzzxRFTxR+LDM0cIyRl0QBCSPS688MKMbesHP/gBPv74Y1xxxRX43ve+l7HtCvr06YNevXrhkUceQffuVi+BmhFMkocCkBCSVUKmMjCEkM6IXPKlI+DDYcfDJBBCSFYxF4LmTZ4QQnIBBSAhJKswBpAQQnIPBSAhJKuYCkHTCUwSgO5AkgrsN7GhACSEZBXTVHC8P5MYuFwuAIDP58txS0hnRMwR7PF4ctyS/IRJIISQrGKKAaQCJDFwu90oLS3F7t274fF44HTSZkHio2kaWlpasGvXLlRVVRkPEsQMBSAhJKswBpAkisPhQN++fbFhw4aY8+MSYkdVVRVqampy3Yy8hQKQEJJVNNNUcFSAJDZerxdDhw6lG5gkhcfjoeUvDhSAhJCswrmASbI4nU5OBUdIhmFABSEkq8iZv4wBJISQ3EABSAjJKhotgIQQknMoAAkhWUXTaAEkhJBcQwFICMkqIc3+NSGEkOxBAUgIySqmmUBoASSEkJxAAUgIySqy25fyjxBCcgMFICEku3AmEEIIyTkUgISQrMKZQAghJPdQABJCsgpnAiGEkNxDAUgIySqmGEDqP0IIyQkUgISQrCJrPsYAEkJIbqAAJIRkFY0xgIQQknMoAAkhWYUxgISYCQRDWLx+L9r8wVw3hRQQFICEkKxiLgSds2YQkjfc987XOPfRJZj59Ge5bgopICgACSFZJcS5gAkx8c+PNgEA3vlyV45bQgoJCkBCSFYxuYBz1wxC8gaPm0MxyT7sdYSQrEILICFm3E5HrptAChAKQEJIzmAWMCGAx8WhmGQf9jpCSFYJmdOAAQDBkIadDW05ahEhucXjogWQZJ+8E4B33HEHjjzySJSXl6NPnz4444wzsHbtWtMybW1tmDFjBnr27Ilu3brhrLPOws6dO03LbN68GdOmTUNpaSn69OmDa6+9FoFAwLTMe++9hyOOOAJFRUU4+OCD8eSTT3b04RFS8Mj6T1gA57y0ChN+Px/vr9udm0YRkkNoASS5IO963cKFCzFjxgwsWbIE8+bNg9/vx+TJk9Hc3Gwsc/XVV+OVV17Bc889h4ULF2L79u344Q9/aHwfDAYxbdo0+Hw+fPTRR/jHP/6BJ598EnPmzDGW2bBhA6ZNm4bvfve7WL58OWbNmoVLL70Ub731VlaPl5BCwy4G8KmlmwEAv31lTU7aREguoQAkucCd6waovPnmm6b3Tz75JPr06YNly5bhhBNOQH19Pf7+97/j6aefxkknnQQAeOKJJzBixAgsWbIERx99NN5++22sWbMG77zzDqqrq3H44Yfjtttuw/XXX49bbrkFXq8XDz/8MAYPHox77rkHADBixAh88MEHuO+++zBlypSsHzchhYKdBVDQ3G620hNSCDip/0gOyPtuV19fDwDo0aMHAGDZsmXw+/2YNGmSsczw4cMxYMAALF68GACwePFijBo1CtXV1cYyU6ZMQUNDA1avXm0sI29DLCO2YUd7ezsaGhpMf4SQ5Ig1E4jTwVgoQgjJBnktAEOhEGbNmoVjjz0Whx12GACgtrYWXq8XVVVVpmWrq6tRW1trLCOLP/G9+C7WMg0NDWhtbbVtzx133IHKykrjr3///mkfIyGFhiZV/1OrwLhYDoMQQrJCXgvAGTNmYNWqVXjmmWdy3RQAwA033ID6+nrjb8uWLbluEiGdjpDJBWxWgBSAhBCSHfIuBlAwc+ZMvPrqq1i0aBEOPPBA4/Oamhr4fD7U1dWZrIA7d+5ETU2NsczHH39s2p7IEpaXUTOHd+7ciYqKCpSUlNi2qaioCEVFRWkfGyGFjGZKAjF/R/1HCCHZIe8sgJqmYebMmXjhhRewYMECDB482PT9uHHj4PF4MH/+fOOztWvXYvPmzZg4cSIAYOLEiVi5ciV27YrMqzhv3jxUVFRg5MiRxjLyNsQyYhuEkI4hZJoKjhZAQgjJBXlnAZwxYwaefvppvPTSSygvLzdi9iorK1FSUoLKykpccsklmD17Nnr06IGKigr84he/wMSJE3H00UcDACZPnoyRI0fi/PPPx913343a2lrcdNNNmDFjhmHBu+KKK/DXv/4V1113HS6++GIsWLAAzz77LF577bWcHTshhYAs+dQYQCaBEEJIdsg7C+BDDz2E+vp6nHjiiejbt6/xN3fuXGOZ++67D6eddhrOOussnHDCCaipqcHzzz9vfO9yufDqq6/C5XJh4sSJ+OlPf4oLLrgAt956q7HM4MGD8dprr2HevHkYM2YM7rnnHjz22GMsAUNIByO7gNUsYFoASSHCKbFJLsg7C6A6INhRXFyMBx54AA888EDUZQYOHIjXX3895nZOPPFEfP7550m3kRCSOjYzwRlQABJCSHbIOwsgIaRrI2f+qo97dAETQkh2oAAkhGQVjWVgCCEk51AAEkKyiskCqLqAaQEkhJCsQAFICMkZqguY+o8QQrIDBSAhJKuElCzgoFQYkC5gQgjJDhSAhJCsomYB+4Mh4z0FICGEZAcKQEJIVgmZpoLTEJAsgMwCJoSQ7EABSAjJCP9esgmvrdgRdzlNeR2gBZAQQrJO3hWCJoR0PjbtbcZNL64CAEwbPS32whYXsGwB7IjWEUIIUaEFkBCSNrsb243XskXPDjUJJBAKSe8z3zZCCCFWKAAJIWkjx/H54ghAqwvYHBNISKHBbk9yAQUgISRt5FIuvkCyFkBZAGa+bYQQQqxQABJC0qY9EJRex7EAmqaCs2YFE0II6XgoAAkhaSMncrT7ExeAmqZbAe2+I4QQ0nFQABJC0kYWcb5gMMaS5mVDmqZYBKkACSEkG1AAEkLSRo7di+cCVuP8QhSAhBCSdSgACSFpY4rji63/oMGcBGKOAcx40wghhNhAAUgISRs5CzgQRwGGYiSBaLQAEkJIVqAAJISkTTJxfKYkEKgxgBluGCGEEFsoAAkhaSOLvjh1oC1ZvywDQwgh2YcCkBCSNrLlLhjHjCd/q7uA7bdDCCGk46AAJISkTTJWPPP3GmMACSEkB1AAEkLSRjO5gBOPAQyFrHUBCSk02OtJLqAAJISkjckFnIQFUINmdgHHiR8khBCSGSgACSFpY64DGMeeoUwFJy9PCyApdBgGQbIFBSAhJG2SSQJRCz+HFEFISCHDa4BkCwpAQkjaJGPFM6eAaIwBJESC1wDJFhSAhJC0SaYOYMhcCVopC8PBjxQ2vAJItqAAJISkTTJJIOqsISGlMDQhhQwfgki2oAAkhKSNlkQSiGIAVApBc/AjhQ0vAZItKAAJIWkTSqYOINQkELksDCGFDQUgyRYUgISQtEmuDmDktaYxCYQQGY2PQSRLUAASQtImKQugYvGTiz+zEDQpdDgfNskWFICEkLQxxfUlXgcamiUJhKMfKWx4DZBsQQFICEmbpOoAqjOBmJJAMt0yQvIfcxhEDhtCCgoKQEJI2gQTtOKp32maOvhx9CMFDi8BkiUoAAkhaZOoFU/9Tq8DmNi6hBQCfAgi2YICkBCSNola8SwWQGV5xj+RQodXAMkWFICEkLQJJRjDpH6nJoHQ+kEKHV4DJFtQABJC0kat7RcNtcaZuihdwKQQSSaLnpBMQQFICEmbRK146leqC5jWD1KIyA9GDIMg2YICkBCSNlqCiRxWi59mKv7MsY8UIiYLeu6aQQoMCkBCSNokWgdQ/U7TaAEkhNcAyQUUgISQtDHXAYy+nPqVBtV6yMGPFCCMASQ5gAKQEJI2JhEXwwdstQCqWcAZbxoheQ8tgCQXUAASQtImURFnSQLREs8gJqSrYp4fO2fNIAUGBSAhJG0SzwI2fxeiBZAQpRh6DhtCCgoKQEJI2iRcB9DGAsi5gEmhY8qEZx4wyRIUgISQtNEStOJZYgChKeKRbmBS2LD7k2xBAUgISRvZghHTBayup9mXhiGkkGASCMkFFICEkLRJfC5g61Qg6vIcAEmhYZoKLnfNIAUGBSAhJG0SzuS16D/NJjEkgw0jpBNgTgLhBUCyAwUgISRtEnVhWa199tPDEVJIsAwMyQUUgISQtEm4DiDUeD+NMYCk4Ek0iYqQTEIBSAhJG3nQStYCyBhAUuiYQigYBUiyBAUgISRtEi1kq8Y3abAKPgpAUmiYLIChGAsSkkEoAAkhaZNoMWfLVxqTQAihBZDkgrwUgIsWLcLpp5+Ofv36weFw4MUXXzR9f+GFF8LhcJj+TjnlFNMy+/btw3nnnYeKigpUVVXhkksuQVNTk2mZFStW4Pjjj0dxcTH69++Pu+++u6MPjZAuScJ1ABNwATMLkhQaWoIWdEIySV4KwObmZowZMwYPPPBA1GVOOeUU7Nixw/j7z3/+Y/r+vPPOw+rVqzFv3jy8+uqrWLRoES6//HLj+4aGBkyePBkDBw7EsmXL8Ic//AG33HILHnnkkQ47LkK6KikngcCaBEILICk0THUA2f9JlnDnugF2TJ06FVOnTo25TFFREWpqamy/+/LLL/Hmm2/ik08+wfjx4wEAf/nLX3Dqqafij3/8I/r164ennnoKPp8Pjz/+OLxeLw499FAsX74c9957r0koEkLik2gdQKu1j0kghMg9nv2fZIu8tAAmwnvvvYc+ffrgkEMOwZVXXom9e/ca3y1evBhVVVWG+AOASZMmwel0YunSpcYyJ5xwArxer7HMlClTsHbtWuzfv992n+3t7WhoaDD9EUISD2K3i/ezfsYBkBQWpiSqHLaDFBadUgCecsop+Oc//4n58+fjrrvuwsKFCzF16lQEg0EAQG1tLfr06WNax+12o0ePHqitrTWWqa6uNi0j3otlVO644w5UVlYaf/3798/0oRHSKQmmWAiadQAJ4VzAJDfkpQs4Huecc47xetSoURg9ejQOOuggvPfeezj55JM7bL833HADZs+ebbxvaGigCCQEah3AWEtaxR5dwKTQYQwgyQWd0gKoMmTIEPTq1QvffPMNAKCmpga7du0yLRMIBLBv3z4jbrCmpgY7d+40LSPeR4stLCoqQkVFhemPEKJmMSZhAbRJAuEASAoNswDkBUCyQ5cQgFu3bsXevXvRt29fAMDEiRNRV1eHZcuWGcssWLAAoVAIEyZMMJZZtGgR/H6/scy8efNwyCGHoHv37tk9AEI6OYm6sNSvNM4FTIgpO569n2SLvBSATU1NWL58OZYvXw4A2LBhA5YvX47NmzejqakJ1157LZYsWYKNGzdi/vz5+MEPfoCDDz4YU6ZMAQCMGDECp5xyCi677DJ8/PHH+PDDDzFz5kycc8456NevHwDgJz/5CbxeLy655BKsXr0ac+fOxZ///GeTi5cQkhjmOoAxlrNJ+LDMDsIRkBQYIbqASQ7ISwH46aefYuzYsRg7diwAYPbs2Rg7dizmzJkDl8uFFStW4Pvf/z6GDRuGSy65BOPGjcP777+PoqIiYxtPPfUUhg8fjpNPPhmnnnoqjjvuOFONv8rKSrz99tvYsGEDxo0bh2uuuQZz5sxhCRhCUiBlCyAYA0gIk0BILsjLJJATTzwxZhzEW2+9FXcbPXr0wNNPPx1zmdGjR+P9999Pun2EEDOJBrFbBjfNziqYwYYR0glgEgjJBXlpASSEdC5StWDoLuDo2yKkq2MJgWAUIMkSFICEkLRJVABaMn7tPqMAJAWEXWIUIdmAApAQkjbBBOsA2ln76AImhQzLIJFcQQFICEmbxOsAxi8EHaQCJAWE2tsZAkGyBQUgISRtzC7g6MupX2k2cwFz/COFhF1YBCHZgAKQEJI25jqAscrAWOP95HXjrU9IV8MaA8j+T7IDBSAhJG0StgDa1AFk1iNJlptfXIVzH1nSJcIFmARCcgUFICEkbRKdy9QyF7BNDCAtgOTvH2zAcXctwJZ9Lbbf/2vJJiz+di8+3bgvyy3LPFYXMPs/yQ4UgISQtEl8JhDrVHDMAiYqt726Blv3t+K+eV9bvgsEIzEDTqcjm83qEOziYgnJBhSAhJC0MQnAUKzlzO812JeGIQSwT4ho8QeN1x5X5x/C+ABEckXnv3oIITlHHsNiWgCVIV2zsQBS/xFBscdl+aylPSIAO7/9j0kgJHdQABJC0iZoqgMYfTm7gHdrXCAHQKJj5+Ft8QWM14FY5uZOgnUqOEKyAwUgISRtEo8B1P+7wiO73VRwdIERgV2Wr/yZP9j5OwsfgEiuoAAkhKRNonUAxXcuh8N4b5cYQggABOwEoNQ/Al1AALIQOskVFICEkLTRTBbAGMuF/4f1X3gmEHVbmW0b6VzIFr6QTWeSHzb8wc7vAraWQcpNO0jhQQFICEkbedBKZC5gwwVsmwTCEbCQMcX12cQAyv2lKwhAS2IUowBJlqAAJISkTaIzgYixTbiA7QtBZ7hxpFMRz60rWwjtXMSdDVrASa6gACSEpI08DidSBsYpJYFYsyA5AhYy8USd3L+6ggC0JkF1/mMinQMKQEJI2iQaAyi8e8IFrM8EoizD8a+gkWf6cNj4gM1Fxzt/Z6HeI7mCApAQkjbmOoCxLIA6TikJhBYQImNKArHpC7LmsysT09lgIXSSKygACSFpE4ozaKvfOUUMIKwWQCaBFDZ+U50/a5KHLPqCXaCvcCpEkisoAAkhaWOeCi7+chEXMOugETNBKQnEzsIXStDa3FlgEgjJFRSAhJC0SXwmELMFEDZ1ALuAV4+kgVwGxi7JQ64S0wWqwNiUgSEkO1AAEkLSJuG5gMP/I1PBWesA0gVW2Mi/v+1UcFrXcgFbk6A6/zGRzgEFICEkbRItA6MWgg7ZJIF0BbceSR25L9nFAHa1LGDL9dL5D4l0Ety5bgAhpPMiSnZoCbuA9f+RLGC7JJCMNpF0MuJZAGXR1xWygJkEQnIFBSAhJCXqWnw4+Z6FGNmvQpm/Nfo6dhZA1eLXBcZ0kgbxZvpI1NrcWbAWQickO1AAEkJSYsm3e7G32Yf31+0xfZ6IC9dIAgFjoIgZ+ee3jQFMsORQZ0E9gi5wSKSTwBhAQjLI4vV7sa2uNdfNyAr7W/y2n8ecCUTNAoZ1kOf4V9iYLIBxYgC7QhYwk6BIrqAAJCRDrNhah3MfXYJj71yQ9Lqb97ZgR33nEo52AfpAYjGAwgUM2AhADoAFTby5fhMtOZQoX+5oQFN7IO3tpApzQEiuoAAkJEOs3FZvvE5GxOxubMcJf3gXp/75/U4lfnyBaAIw+jriO6dTdgHTAkIixJvqLZjBJJAPv9mDqX9+H2c+8GFa20kHaxYw+z/JDhSAhGSIqhKv8bouinvUjsXf7gWgu1T9wc5z84/W1phzAYskkIj+swzisZJISNdHFkR2VuZ4MYLJ8N9lWwEA63Y1pbWddGAhdJIrKAAJyRDywJVqHGCrP5ip5nQ4mXYBS5ODkAImXpkX+bN0LebNOXT9CqwGQF4BJDtQABKSIWTxtr/Fl/B68g2/rUsIwOjriGmvTEkghlVQlIbhAFjIyP0nXgxgujOB5MMDlzUEIkcNIQUHBSAhGUIWb4EkXLnysp1JAPpSsACGYlgAjenhKAALmriFoDOYBZwPXc1SBiYnrSCFCAUgIRlCToqIZh2zXU9aNh8sEoniD0SLAYy+TmQmEKsAdBsCMDPt6+p8u7sJ//fwR3h66eZcNyWjmGMA7VzA9sumgpyMlCs4FSLJFRSAhGSIeJaLaMhisd3feTIgUokBNOoAylnAIfNndIElxqPvb8AnG/fjxhdW5ropGcWc5RuvDmB6ncWVe/1nnQmE/Z9kCQpAQjKErIf8SQxMsuUw3ZimbGIXnwXESQIJ/5cH3oBiAWQMYGI0tCWead6ZkH/+uDGA6QrAPLAAWusAsv+T7EABSEiGMBWwTdEF3Jkmtw9FFYDR1zHKwDitU8G5nE7TMiQ2ZV6X8Trab9EZiRsDmMEsYDkUIVeoh8juT7IFBSAhGcI8hVUSLuBA5iwa2SSatTJ2HUD9v3kuYCEKw8tkpnldniJ3RAC2BTpP7Gg84l1H8kfpWszzwwLILGCSGygACckQ8aawioYc59SZBGAqFsCQjQVQWEvdYQtgV7JmdSSy8SrarCydEXMZGJsYQFOMYHr7yksLIB+BSJagACQkQ8gDk93AFY1AqGtZABMpBG22AOr/XUwCSQr5PEcrydMZkS1iIc36QGCaCziDnSVXoQeq4KMLmGQLCkBCMoQsiJKZ0i2Tc5tmk2ht1bTog6n4VM4CFmLZxSSQpJDdo13JAqg+WMR6n8mkqVxde5wJhOQKCkBCMoRshLErXxGNzmoBTMTSZ/087AKWPG/iVOVBOFanQn7I6ExzSMdDvQTUOEC5b2XyYSFXGfjWOoA5aQYpQCgACckQWiYsgJ3o7h9LrEYbmG0LQWuiDIwz5rrEjFyHsStZAFW3rhpOIfe7zLqAM7aptPbbiZ4BSSeHApCQDJHqwNR5XcDRv4t2GIa4c0SSGNSp4DrRKcgpsjDqUgJQdfmGor9P2/ApWZ1zde1ZLIBMAiFZggKQkAyRamxSZ3UBq7FKbqe1tItlnfB/p8MB1ePrdnEquGQwxQB2oSQQ9RJQremmJJEMXi+5sr6re2X/J9mCApCQDBFK0QIY6qQCUB0w3VJgX7RBTAhDB6wlOMR7uoATw5QF3JUsgDEsfoDyoJVJF3COTqF1Kjj2f5IdKAAJyRDm+mVd3wKotlXE8AHxYwAdDnMdO319YQHsPOcgl8jnP9q8zJ0Rte+oMYByt8toFnCukkCUn469n2QLCkBCMkSqLuBOWwhaOUZXIi5gqRC0Q1GAjAFMDtkz2pUsgJayL2odwAxOBad1kDUxqTao79n/SZagACQkQ6TqAjZZADvR3d9qAbQWd1YJGRZAxgCmi/zgUEgxgPHmCk5qX9Jpy5XlWX1YYggEyRYUgIRkCHM2b+LrpTqFXLJ8s6sRP/7bYny0fk9Gtqe6rswxgPbHIY7VaeMCZgxgcnRVF7Dad6xlYKTXaXaVjioqnQyWGMCctIIUIhSAhGQIc3B6EoWgg6lZDpPl0n98iqUb9uEnjy7NyPYsSSCmGED7dcTnTofDkgTiYgxgUshdrL0ruYCVzuMPRLeQpXu95EMClmUuYHZ/kiUoAAnJEPKNO7kYwOwMQhv3tmR0e2pbJf0XNwbQtgwMYwCTwjz1YNcRgOrvr7q3M+oCNonJtDaVkTYAfAAi2YMCkJAMEUjRBdxRZS06GksSiMNhuHWjCUD582hJICyEmxhyf+tKSSCqAFLFrangeppiSXYh5yr0wGIBzEkrSCFCAUhIhkg1CaSrTAXndEbcutHrAIaXlcSigFnAyRHqogLQ4gK2WADl1xl0AedJDGBHhoEQIkMBSEiGkIPVk6oDGOycFkCLAHQ44EzQAuh0wOICdnEu4KToqkkgFhewIm4zGbeXyXjCTLQBoAWQZI+8FICLFi3C6aefjn79+sHhcODFF180fa9pGubMmYO+ffuipKQEkyZNwrp160zL7Nu3D+eddx4qKipQVVWFSy65BE1NTaZlVqxYgeOPPx7FxcXo378/7r777o4+NNKFkcfgZERMV3EB65m9cax4wgLodMDpNEtAo4xM5zkFOaXLzgQSzwVsytxNb19md3J620oVSyFo9n+SJfJSADY3N2PMmDF44IEHbL+/++67cf/99+Phhx/G0qVLUVZWhilTpqCtrc1Y5rzzzsPq1asxb948vPrqq1i0aBEuv/xy4/uGhgZMnjwZAwcOxLJly/CHP/wBt9xyCx555JEOPz7SNUm1oLO8bEeWgck0MS2AUY7DmArOxgLIMjDJYYoBTFcJ5RFq31GPLaNZwHnw8MU6gCRXuHPdADumTp2KqVOn2n6naRr+9Kc/4aabbsIPfvADAMA///lPVFdX48UXX8Q555yDL7/8Em+++SY++eQTjB8/HgDwl7/8Baeeeir++Mc/ol+/fnjqqafg8/nw+OOPw+v14tBDD8Xy5ctx7733moQiIYmSakFneb3OFP+jHqJc2iWxGEB7C2AnOgU5pavGAGbXBSy/zlUMYE52S0h+WgBjsWHDBtTW1mLSpEnGZ5WVlZgwYQIWL14MAFi8eDGqqqoM8QcAkyZNgtPpxNKlS41lTjjhBHi9XmOZKVOmYO3atdi/f3+WjoZ0JUzWhCQsMsEUYwdzjSpync74Vjw5BtCpJoG4aAFMBvn8+4LBHLYks6j9qiOTQLJVgikWLANDckWnE4C1tbUAgOrqatPn1dXVxne1tbXo06eP6Xu3240ePXqYlrHbhrwPlfb2djQ0NJj+CBGYkjmSqgMYed2ZxI+dCzheGRhNsgCqTmBXFOthKKTh+c+2Yltda9pt7kqYkkACnaffxCNuGRjZBZxuFnAGt5Uq6l470TMg6eR0OgGYS+644w5UVlYaf/379891k0gekWpsUqqxg7lGPUaH5AKOPhNIOAYQ1qngos0E8tDC9Zj97Be45MlP0m90FyJoigHsSi5gJQYwW1nAeTIXMOtgkmzR6QRgTU0NAGDnzp2mz3fu3Gl8V1NTg127dpm+DwQC2Ldvn2kZu23I+1C54YYbUF9fb/xt2bIl/QMiXYZMxAB2JgGoHqNLcuvGmwvYISWMGOtHiQF8askmAMBXtY1ptrhr0VUFoHoosWYCSfdyMc0rnLOZQMzvO5ETgHRyOp0AHDx4MGpqajB//nzjs4aGBixduhQTJ04EAEycOBF1dXVYtmyZscyCBQsQCoUwYcIEY5lFixbB7/cby8ybNw+HHHIIunfvbrvvoqIiVFRUmP4IEaRqmciH+UhTQR0wnQlZACPLqpPBRZJAzCt3puLY2UQ+T/4ulARicQEr7m2zaEvTApjBWUVSxVIIugt29/ZAEPWt/vgLkqySlwKwqakJy5cvx/LlywHoiR/Lly/H5s2b4XA4MGvWLNx+++14+eWXsXLlSlxwwQXo168fzjjjDADAiBEjcMopp+Cyyy7Dxx9/jA8//BAzZ87EOeecg379+gEAfvKTn8Dr9eKSSy7B6tWrMXfuXPz5z3/G7Nmzc3TUpLOTqiVPXq8zJYFY6wA6pDqA0WIAYySBGFPBqeuk39auSFctBB1vJhCto2IAc5UEYtlv1+vwk+9bhDG/fRv1LRSB+UReloH59NNP8d3vftd4L0TZ9OnT8eSTT+K6665Dc3MzLr/8ctTV1eG4447Dm2++ieLiYmOdp556CjNnzsTJJ58Mp9OJs846C/fff7/xfWVlJd5++23MmDED48aNQ69evTBnzhyWgCEpk2pGoXm9jhnIO2JwU4/RIYm6uEkgTmsZmGgxgMQeswBM/5w1twdQVpT7IUHtqjGTQNLs1+ai0rmKAVTedx0tD0C/njftbQEALNu8DycNr46zBskWub/abTjxxBNjDgIOhwO33norbr311qjL9OjRA08//XTM/YwePRrvv/9+yu0kRCbVSerNlsOMNsmgI2LE1MHX43ImUAdQxABavzNiALvYANhRZNIC+Nj73+L2177E384fhymH2sdAZwv12mlXk0Ckr9MVbfLqOZsJpIsngbT6IyWKnHYXPskZeekCJqQzkuqMHtmIQ7IMohkY7SxJIM5E5gLW/zsdDjiVu4/bcAGrAyKxQz7/6QrA21/7EgBwzbNfpLWdTBBvKrhQBh+YTA9tOVKA6qXS1QzgDa0B43UXO7RODwUgIRkiVddUNrKA1UE0ExZBta1upyPuXMByIWg1CcQVVoSdKAwyp8iW0ky4gAHA6879kCD6SFG4LRYXcAYfmPKxEHRX6/8tvogAbG4PxFiSZJvcX+2EdBFSLwTd8XFI6uCWCUujug2XM2LVS6QQtOoNimY97GoWkUyRSQugwOPKvYtOdNWIAIzed9MVbXKoUb7EAHa1GFj5N2r3M74jn6AAJCRDBFN0TWXDDaUOlJnINrZYAF2JzAUc+UKOB9ITSGKvSyJommauA5ihMjD5YH0S10CRxwXAphB0BrOAZdGXK+FltQDmwY+QQcxVDigA8wkKQEIyhCmjMIkbXTbcUOp2k5mr2A5N0yxiweWUk0DixwDKtibZItjVLCAdgXruM1U+KB/KyQgBVOzRhydrIWjpdbpZwHlQCLqr1wE0FyzvYgfXyaEAJCRDpCrk5Kfijnr6twjAtOunWT/TYwCjf69/LsUASgrQKVkAu9oA2BFYfs8udNKEECt26xbAWDGA6WcB558LuKsVPjdZAPPgAYNEoAAkJEOYg9MTW0e1pHXUQK5aiNLdj936ehZwgoWglTqADocsHs3rsnKEFfUcZcq1lg+nWjMsgAm4gNPNAs5DF3BXs4DL3pAALYB5BQUgIRkiFQug1TKX0SYZWAVDuhZA6/ruRMrAhMcCh8UFLMUAKuuoM4aQzAv6fCJeFnAog1a7/MgC1v+Lft6VfkvALPq60pzVXQEKQEIyRCqDiTqQd1QSiPrknW4MYDwLYLRxWdT4kwWf/j4iHlULiCwVc1WrLd/oiKQeAJbZWXKB6JqGBVDtu5KGSDdkQl49Z8Ir3Ai3q2uWQTLVR6UFMK+gACQkQ2TEAthBd/9UXIZt/iA+3bjPVnTZCQ5zHcAEkkBMMYCRoEC1afJyfmYRArAK4XQFvSD38s+aBOJXXMCayW2bnss0kzUFU0U0wW3MhNO1RJJ8r8iHJCMSgQKQkAwhi6pEXVPqch0VAJ6Ky/DvH2zAjx5ejF8/v8Lynd0gpWcBh7+PZgGUkkBkYs0jLC9KC4KO2k8yZwHMyGbSQjNcwMICGD0JxO59MpiKt+eoa4n+bgjALhcDKAlAPsDlFRSAhEis29mI4+5agLmfbE5qPTWZI9GneNVyk606gIkIzSc+3AgAePbTrdbt2cUAuuIngYhmOOCwcQHbxwDKbkkKQJ2OsxznXgGKYynyxI8BBNJ7aDJlAec4BlC4gLtaFzdZAANd7OA6ORSAhEj86r8rsHV/K67/38qk1ks1JstimctSGZhEhFRdiy/h7QGA1+WMGscnEIO3wwHTXMCyBTCWS48WBB1rf+s650UcmogBVF3AatdL59DzwQWsKRbAbGcBb69rxdraxg7bfjALZa5IalAAEiJRW9+a0nqqcEvUkmeZBaDDysDEdqPZEetmbSsA3c5IDGCUQVmOAXQpFkCR7GGpi8YgcgvWqf0y03fywQVszATiFoWgY1s7P/hmD3Y1tiW9n1St9plGdQFn0xKpaRqOuXMBpvxpEfY2tXfIPjgTSP5CAUiIRH2rP6X1Ui20nC0LoHrfTcRCGWsJu0HK43LGLQMTqQNodu06Y9QBZBC5Fbvzm2rfkS1OeaD/pCQQUQcwaPu94LJ/forL/vFp0vtRT1euni1E93a5sh8DuKM+IpxrG5IX0YmQD6V2iD0UgIRItKU4WXmqddnUGMCO0jepWABjjUN2g5RLEnXxZwJxwCVlgric0ecCll1IFIA6or+5pXOY6uCab2OyaE+kDmB8K/kXW+uT3k+qVvtMI64JTzgmIptGshZfwHjt6CD5L1vtacHPLygACckAlrIcCccAKvFNeVQGxhWjArMQIB5XZBlNix/HJxeCll3ALofDiAmMZQFkDJGO6Cded+QWnmomsNwX8sIFrFgArUkgmdmP1Y2eqxhA/b8rB1nA2bCu0wKYv1AAEpIBUnXlZjKjMRbqk3ciVoZYWkAIkJLwIA3oA7OwAO5t9uHmF1dhxdY683rR5gJ2RmIArRZAOYaIAwgQ6SeyAEy1FmC+DcqGAAwfWyCkmR6MMnWNWF3AOY4BNLKAsygAgx0vAAO8fvMWCkBCMoBquUu0QG22ZgLJ9NyxEQESEYAaNMMCePNLq/CvJZvw/b9+aFpPtMLqAo7EAGpQ20oXkooQbV6XbAFMP3yho9yAyRApAxPpW3ItwExdI/nmAo7UAczevk01+jro2gqmUB+VZAcKQEIygN2TbSKWFcsUbXlUCDrm9sLt1uP+9M8G9CiNPxWcKAMDs4vZJdUBVHUMXUhWxHlwOyNCOtVzI1sO88MFrP8XM4EAZutUplykdpnUuSBSBzD7M4FkwwUs7yNTM9aQzODOdQMI6QrYDb6BkAbJQGaLxTLXYU/h0a1q0YglBkS7XQ4HHjl/PLbsa8Gph/XFMx9viblNoxC0w2HOAnbaF5HWNI0uYBvEOXGGBWAwpKURA5hfMZbqTCCA2TqVqYcA1UKfq4cLtQ5gNn+DYDYEYJDXb75CAUhIBhA3UjEYA4ndyC0u4CwVgk52sAuGNJPFThYg3xtZbXwez4IkxwBK+SNwSWVg5FNgLWDNLGBAEuBOB9xOB3xIwwJosrBmonXpIV9LbqcDgZAGn1QMOlOXSL4kgQiLtzucBZVNIRowZdgntt+6Fh/Kiz0xk8TM+5D7Vx50MGJAFzAhUUimIr9dVmwiN/JowmzDnmb8b9nWjM0KkOpMJQLVOiC7IGWccRSgqRC0U7UA6q/lGMBMu667CuLncEnnMRNZwPlgATTq4jkc8Lis08FFC5NI1nVqmYc71zGArtjhEx1BskkgG/Y04/Bb5+Gnjy1NeB+y6KMFML+gBZCQKARCmknQxULcxL0up1FLMJGH3WhWiO/+8T0AwAHdS3D0kJ4Jtjjx/ST7JO4PhoyyHPL2nBYBGHs70QpBR6shGKskTCEjRJuwkgGpW1fMddpyb6GR+4jX7USrP2hKAokm1AIhDd4ErVL6fszvcx0DaMRy5rEL+PnP9HnBF3+7N+F95FuIAYlACyAhYVRrWzIxMWIQlbNiE8nKNISUI/JeHoTX7czMHJ1Wa0f8deSM0GjJKi5HshbAcBKITR1Ah7IMQAtgNETXcjkdcDkj5VJSwTxAp920tAlKfcTOAhhNQySbBZ0vLmBh8c5FDGC26wAyiz+/oAAkJIw6ICRTFsGo5u+KxLIl8iQvbsCinlswpKE9kPkbcSoWQLn9fkvBav2/GgfkiCcAw+s5pcLPgJoEIrVB+Q1oAdQJGrGUEQtgqoOrOckm9xbAkOTeFhZ4f0CKI4tyXSXbNyw1OHOWBKL/FzGA2dShwSRjAFNJEjfHAPL6zScoAAkJo94Ak3GHBUKRAdkVpZyJHSJuSVg6QhpMArCjZj2IN1hasm8tQizigpSJ54GTk0CcigVQCEItpgUw9wIlHxD9xpWBMjCmGMA8OL3ydIGijwjRJ/dLte8lK4DVY03E8vbW6lqcdM97WJnC1HNR2yGs6a70fsdUSMcCmGh8MrP48xcKQELC+JQbYDIWQCFM3C6HEReXjAWwyGQBDEbalCFrYLJZwOqxW6fjsh+E47mAxSmxTwKxDoDpJq90VUyZsq70kkBM5zsPYrQMAeiMJEaI60s+RLkINpCCCziFQtA/+9cyfLu7Gdf9b0VS+4qF2K2nM5SBka7vRD0VgQ4o4UMyAwUgIWFUi18yT8RBySVqBOUnICDFwOaVpoESSSQA0OYP2q6XLKo4iGctUQdTVRAGJVeujF1pCNlSIOKdHLBaACNzoUZvB2OIdAIZtQCaB+hMZZ6niilT3HgoQPh/pG1qglbSFsA0pmHMpCU68jAV9gJk0wJoygK23299qx9zP9mM+ha/yT+d6AMHs4DzF2YBExImntUrFoZLVB60UogBDCkWwNYMCcB0LYCqEDMsns74AlDOppYLQZsEoBwDSAtgXORC3EYMYIqixG5GjAST3zsE8fvLVuKAYQGMtFWeBxlIXgCrQiuZ1eU5sNNFCG71GskGiVgAr33uC7y9ZideW1mLww+sND5PNETGlGTE6zevoAWQkDDqDTAZsSEnRTiTsMgEFQEY1DS0SxbADhOAccSpenO3ZAELC6Ai+Nw2ysFnimmMxAC6oiSBBBkDGJdIGZ6I5ShlC6Dlt018O75ACL95aRXeXl2b0r7tiFjEIg8UIVsLoHn4SjaGLZ25gDPpKlcTqrLphk8kBvDtNTsBAIu+3m2apTvREJl8SzIiESgACQmj3gBTsgA6ZVdm8gJQ08xuX9kdnA7JWgBV4aXGR0YrA6NaBAFzrJARA+hULIAOebCnBTAeRvFgp1OyAKYfA2j3PhZvra7FPxZvwuX/WpbSvu2QrcSqBTAQQwAmbwE0v09m/UxWTIlUEBD3gGzGACaXBRxIQcwxCzh/oQAkJIzVBZyEBVCaz9MYtJK4ocqDWYtJAHaMBTBe2yzWUGV5IdJUi5/Lab2lyC5tUxaw0+wCFqfAVAcwDetUV0acF6ccA5hifKTFvZ+EAJGtu/LvnA6R2pgOS228kEkAmvteMtervM3I+2TamMkYQP1/urGcqZBsFrDsGUg05pJZwPkLBSAhYayiJ/lC0E6nVAYmgYFUDGhyRmNLewcIQEvNs9jHZin7Egxh/pc78ZNHl2BbXaup7I2M3cwpsks7WiFop8Nh1BCU25qscC0UIhZY5NQC6JHi8DKVsa5J1mWn8jAl9410LYDpFILOpI4Rx+vOcQxgNBe4fG/yB5MTjOpyfIDLLygACQljdQEn4xKyWgATudmpSSAA0OILGK87KgYwnliwnIuQhkv+8Sk+Wr8X1z73hakOnYxdEoiprqFcCFpa1OW0r59oTT7hAAJkug5gZqysyVrgohGZCcQ6O4Z83OrDh1qsPB7pFILOZDKD7D3I9LbjEUjEOied5lSsebQA5i8UgISESScL2LDIOCMFjRNxpYmbY5EkAFuz4AJOug6gJOJWbas3Ha+MfQxg5BiEtcMBswvYGUXIMAbQHvn8R+oAZiYLOLlYuMg+M2UBlF2iQuSJ390of6PUkdTbkp4LOKkyMBmM0xOXWqQYfBYFYCLWOeljuY8lao1nFnD+QgFISBhL5msSA6qpMG8SWZliGVMMoE8uA5OrJJDo5yIY0kwDsYx9DKC0riRc1LmAnTauc2v9wo7NInxp+Tbc/eZXOa+FFw+5v6WdBZyGAJSnaMvUXLKaESfqkApBa6b/Tqd11plkwwPU5ibzm2fSEi36tFwJIFskZAGUlw/Kyyf2e9MCmL9QABISJr2ZQMSA7DQGplTKwABKFrAvVy5g1Roaea8BUV3A8WIAZeGiJoE4bZJAsm0B/OUzy/Hge+uxaN2eDt1PutglSqQeA5hGEoh0zajXT6pEjs1a4iZkEx8oSNYCGssFXN/qx/+WbUVjm9923UxqNCMMRJoOMlvEsrYLNNgLuETvj8wCzl8oAAkJo1oQkisDIwYm+3Im8daTLYCmmUAylFkZkAZVIAELYBxraMQSk0gMYOQY5FhJp5IEEpn1IfqAka0BZPPe5qzsJ1XMFsA0YwCjZHgngnyNZMoCKHavJ1Tpr0X/lY9b7WnJCmD1OOXmX/Wfz3HNc1/gemnKt1jlidJBtQDmXQxgtOUT/L3NM4GwDmA+QQFISJh4pU9iYbYAJl7QVQ4AF9pJtgC2ZsgCKAaVIrc+g0G8m736vezqc8As5GTi1QEMSMJRTuJ0OWFbQDubFkDZBdjUnpnz3lHIczFnOgs4me2YBGAgM79NSHIBq9OjyQIw3Qxx9fqUf/+FX+8GALy+MlLg2mTJymQMoMUCmD0BmEgWsIypDEyC/YRzAecvFICEhLG6gJOPAXQ7rXFLsRA3R9mSI1vMMuVWU7ON45WBsWYB27sJ1UxMt8suBlCqAyjFDqpTwQkLoDz+ZXMmkEyd62xglwwRTLH9acUASoN7ps5fZCq4yGwxhgVQEr7W+amTdQGb38edHUfafiatdJbpILXsFYNOJKZPbkoqZWAScTOT3EABSEgYqws4FQugvSsz+nqRGUSEIJKtfv4MZVaK/YhBJtkYwIASAxg5XvN6thZAOQZQzpZWXMB2llN1UO9IC6DsendYDyOvkGMwM20BTMYCJWf+ZtwF7IgkVIk2ybGP6ZRtAuxcwMldE5lCXFtyHHC2jIBBJbnLDvnTYApZwH7ZyqgxEzifoAAkJIx1LuDUsoCTmQs4IAtHwwKY3PRMCbUvvBnhZko2BlA9NxEBYr6FxKsDaDpPigXQKJ8TIy6pIy0I7X65XE2H7SYjyHMxZzoLOBlXqtwvMlUGxrAuO62FoMUl6bZxAadbCDreby5fE5nsHuI+IxdczlYmcCIxgLI1MpWp4NJJMiIdCwUgIWEyUQjaVNA4kTqA8hRy4fXkGEBfMJQRd5C4CRd5EhMLfuV7i0UwGQugTRKIS4kBdDrs51DOZgygbAHMlJjpKMTv6c6IBVAR90n0tw5JApHDKZQ+IUSHmnyUyv6TLQSd7LRpiWJXDD5bcYDJumcDJhdw8jGAie6HZAcKQELCpFMI2s6Sl8jqQSMG0AmXSwjAzLs9IwWnXab30VAtgGpBarkch4xdDKA4Hk3TzEV+1bmADeEst0O1TnWcMJMzrjM1r21HIcdgupKIObXDYgFMMQYwU6JInmZQLQQtJ7+orezoQtDy8WVySkI7F3C2RJI5qzf+Pn2mJJDkYwDVfZLcQgFISJh05gIW63pcTkMAJnKDlC1phgVQER+ZGGzUeoNxs4CVfTa3B0zvkykDI86NPBDYJYE4bGInrQWpO9ICKFle894CqP/PiAUwDQuNuQ5g+r+NHB8mH1ukELT+nfrgAVit1vFIthB0oAPErt4OfbtlXrfxWbb6n8kCGOX45U/lIvWJWgAtrnrO5503UAASEkYdQJMZ0IxaXi57V2Y0IhYNpyGmVAtgJrIrA4YFMFEXsHmfTZIA1LTkysCIwUweYFwu80wgsgsYiAiBbMYAyue9Pe8FYCR5KGJxTq3NqnBKygUsx6tm4JzJv7fTabVuyiEEKslmQSc7z7RpGrSQlrFM3YAUniEOK1sCMNkizfJDUipTwQGMAcwnKAAJCaPedJOxAAqx6HFJdQATWD0gCSkhiNoVd2smrA3iZl3sSawOoDqYywLQHwwlWQg6igXQ5AI2W3XEIGFxAdMCCECyhHVADGCqSSDJ9lNN03Dlv5fh/72w0vhMFp/yNWFXCFol2eO3WKbirB4tDjZdIvcAp2Ghz9YDSFARtXbIeq3FF7kPpO4Czu9rq5CgACQkjDULOPmB0O1yRgLXEykDY1sHMPV6hPHaV5RgHUD12GUXcCCkGVZJ1RUnz2gijsdn5wKWCl+L7cgJxZGg/+y5j2QBmPcxgCYLYPg3TfHcqOc4uSSQyLLJWqq/3dOMN1bV4qmlmw3BHVD6iDqrjhz7WNfiM20vWUGmLp+MC9jufaqI7bidDiMTOFs1KeXfz+6eoIq31hRcwOr9i0kg+QMFICFhLC7gJJ7C/ZIL2JmERcZUFy98NaoJF5mYYUG0RVgAk6151qzMjCEGAtXlK1tmuhXpMU3iPMrjizy4A3psohwTKJa1TknXcYNHR8xr21HI/SaXMYDyw0oi18uKrXV44N1v0OYPmqZyq2/1W/Yt9xEjCUSyAM6aNMy07WQThMS2Ei2NpIZFZK5Ie0TMF4Wvz1Qt0HUtvqR+P1O8rY2gU8Vbm2le7xQtgIwBzBsoAAkJY3EBJ+Gq8EsuYJdNQeNomGYQCSvAVkUAZiQGMLyN4gRjANXBtElJAhFtVF3AsiAsLzYLQPl8qkkgcvIMILmAFZdfR84EIg927f48F4DivDgyMBdwGnGWZhdw/PVueH4l/vDWWtw/f51peVsB6LCWgZFDD84/eiBev+p4nHNkf9vjiId1dpxkLYAZqnsYitw7hBhNxQX8za4mHPm7d3DVM58nvE68GEC1HeYs4BRjAGkBzBsoAAkJE8nkNRefTWpdt9PitoqFXPJC7LfFl/kYQH+yMYCqC9hnFoDCEhCrDEzPbkXhfZuTQBwOUcDYLABlQSgGCSN2McHs5XToiGnNOgpDALryaC7gBM7Z6u0NAIDPNu83Wbob28wCUPQRtRC0HDPrdDowsl9FpE8nOxewIgDjub47whqtaZrR73QLYFgA+pMPQfjLAl1Uv7ZiR8LrxJsJJNZvmmjIAcvA5C8UgISEEQNIiXDDpFkGJpmp4Nwuhyl+zm7b6SCsb8WJFoJWLYBtqgVQfy+yNAWyBbBXmReAlAUsWa0Ac7ygLJwBOQtYZEimNsgnQ6oWwGzN2ypjmgvYlZ51NHMWwNj7lwVfRbHHNulG7SOqBdCu/qTqJk6UgGF5s9afjLW8IBPXpbxJj8uB8nDYRKNyvSWCXWmceMjXk53HItYxJm4BNG9j875mbK9rTbCFpCOhACQkjLjZlYbrcaVkAXQl55KTsxo7VACqFsA4x2aUtQlbR1QLoIgJ9ChTwVUUe4zXPYQAVJJAhFVHLnzrdZmTQsRA71csgB3pPpIzn9sTPOerttVj3O3v4F+LN3ZQq+zJ7FzAqYc++JKwmtbWtxmvPS6nyb3YppQKEtdQpBC02oci23UbFvvkrhN1fuxoFnv1YUSQiWka5Wvb5XSgokS/foRLPBmKvS7jdaJJTPFiAGPFIqaaBXzxk5/imDsXmB4AGtr8eObjzSkdN0kdCkBCwogBqaxIuEmTGAgDkTgeZwoxgC6HwzQXqExGBhphSUu0DqBiDVVrE4qsYLdiAezRzWu8HtizFEDkvMrzuALmuU89LiccDgeEESNoxHwJy2Xyv0mymGa1SDAG66YXV2Ffsw83v7S6o5pli3nmmczOBZyUBdBUBzD2etvrI1afpvaAOes6/FrOigdgKQQdUgSivEzyZWD0/+LBS/Q51aIrrh1LGZgMPJjJ59rtdKIyDQEoW99bfYkJwHgxgJmxAJqTbQRraxuN1/fN+xq/fn4lLvvnpwltk2QGCkBCwgihEsleTXxAEcJEdwHrnyU0t6ZsyXHZu3A6pg5gvDIw+vdCAKqIOEXValldXoT+PUowsGcpDu5TDsCaBCJcVUVuswCUvxPNE4NuUYLZy+ngSzKeDchdvcCQXRZwig8K6jlN5oEjGRfw9rqIBbC5PWCyALZHsQCKmFLRpoAhEOVyQyI+NEULoMscA6haMtV9q5+ngyyi3C5HWgJQPv/NCQpA86w78ZNATOsmcPyhkGbUEZQt/gBQJx3ji59vAwB8vGFf3G2SzOGOvwghhYFwm3QLZ68mI7zMLuDYLiWZbLmAVSEVN94pvHyp114ACpewR40BdDkx7+rvwOEAFq/fC0AqAyNquDltYgDDr51OBxDSpCxgc+xixyaBJJ/hGE20dzQByVImBthUraNWC2Dy/V59bceOuhgWQCMGMFISBZATshSBKJ12T4pZ0GoWsDjsaAXhrdMSZi47H9AfftIRgLKVvqU9sRhCswXQejyxRG4i14hcOqfI7URTe+Q7kfgD2M8hTjoennVCwogbv5iTM6kyMJILWNzLErpBSskjqgA0isJmpA6g2QUc79jUrGGVlnZRB9B6Cyn2uFDkdhkDq88YQCMZnIDZIlASFprCi2UU/g3/T9R1nQ6yhSdRy151RbHxur4le/FLcjKE6iZNFtWSk1wWcOIxgBYXsBwDKFzASpiA+O9X+oPJAhhWg8la5IKKa1K8V397cVzq9jPxYGbENIaznoUAbEhBAMpxf4lbAGM/9MR2Acc/frlPFikWQDnRhbPD5YZOKQBvueWWcLxQ5G/48OHG921tbZgxYwZ69uyJbt264ayzzsLOnTtN29i8eTOmTZuG0tJS9OnTB9deey0CgeQzr0jXwXABCwtgEsLLJwk5w42ZwF1NDDZetxNet9maJERRR7iA47lvxD6F5U1FHG8sC5i44RtlYGIkgYiageq5S7Z8TTqkM60ZoAeyZwvZcpxqFqxAXS8ZV7LZbR4nBlB1AdtYAIWoEHG0wjIkLGXiejGFD6QYAxnJAo7tAjZK0ERxDaskkxXuNx6K9DakYwFsT9MCaOexiPUglEyICxDxPgiaTW2kAswFnVIAAsChhx6KHTt2GH8ffPCB8d3VV1+NV155Bc899xwWLlyI7du344c//KHxfTAYxLRp0+Dz+fDRRx/hH//4B5588knMmTMnF4dCcoR6w/OpMYApuoCdSVhkxD68bqsFsCyTAlC4UhOsp2fEAEZxAQuiJa7o35lnNVCTQIToA2CUv1DPnfhf7BbZyx0Xc5dKDKDsxlIzpTsSu9jRlC2AFtdmijGAcaymuxoj/r82f0iJAdTFoNpH1Jqcful6EQgBnOx1YhRgVuoAqqJHbFetjWknlB949xsc+bt3sGxTYrFs/oD5eNIRgHL/VWuJRkPuM3aCNtY9MJEHBflBU7UAyr8/LYC5odMKQLfbjZqaGuOvV69eAID6+nr8/e9/x7333ouTTjoJ48aNwxNPPIGPPvoIS5YsAQC8/fbbWLNmDf7973/j8MMPx9SpU3HbbbfhgQcegM/ni7Vb0kVYv7sJY259G/fN+9r4zIgBLEo+BlDcDL3SXMCJZAEbFg0bF3BpCu2I175kp4KLlgQiiBW7Y7iAo1h3BvQoNZbtHi4ZYxTR1swDfrZjABN1Jza0RkRfc4JWl0wgJ4EYSRBpzgVsZGAnFfqQuGiWY/7aAkHze7/SRwwXcNiKHG6jEA1y7KknRQGcqAvYH80CqJyn9kAQf3hrLfY0+fDOl7sSaoMvmEEBKLVbPIxsq2vFKX9ahIfeW2+7TkBx4avWy9hlYBK3ADoc1iQQ+fen/ssNnVYArlu3Dv369cOQIUNw3nnnYfPmzQCAZcuWwe/3Y9KkScayw4cPx4ABA7B48WIAwOLFizFq1ChUV1cby0yZMgUNDQ1YvTp6OYf29nY0NDSY/kjn5J6316KxLYA/z19nfCZuxmUpCC+/4RJ1RqxYCQzIsgs4mgXQl2a2oaZpxo24KFELYFBYAGPnicVyAasCUC3h4XE58b8rJ+KJi45Er/CsIU7DBSzakZxwTQfZ5Z/oby8PYup8yR2JnASSdgyg0jeSywJOPAZQLk2iaeYYMMMCqJnjREX/EkLTp1jMgEg8YKoxgEWGBVC0xd4CaMkCVpaTj0+dzzsaxvGEr31RB7AuQxbA/366FV/VNuKuN7+ydU3Hq22YbhkYeapLp1KoWj5fcrhMR1r5iZlOKQAnTJiAJ598Em+++SYeeughbNiwAccffzwaGxtRW1sLr9eLqqoq0zrV1dWora0FANTW1prEn/hefBeNO+64A5WVlcZf//79M3tgJGvYzfQgPis3soBTiQF0JDUXsM+waDgtGbWiIHWiNemiId+ohZCKl6Es1imJEgMoiOUCFscjiiqrAf4AMG5gD3z3kD7Ge6OGolF8Nznhmg6yRSc1AZh9C6DbFAOYXhZwsiJb07Sk3OZtSnFi2colrj0hsow4UREDaNTii1wvAneKM6FESjeZp26MFgOoWvzUvthuk9QSj/ZMuoBlC2C4L9Y2SHGXNm5h9be2lsCJFQMY/3wHpKxu+boHzP1BvlWqc6GTjqNTloGZOnWq8Xr06NGYMGECBg4ciGeffRYlJSUdtt8bbrgBs2fPNt43NDRQBHZSzDcfDQ6HI2IB9Io6gKnEACY3F3DMGMAUClLbIVsuEk2mEMce1wXsTMwCqFshze49O9QaipEyMFmwAErnKaTp+3LFaCsAUyZropmXmUCeQzqZmWfsUC1hiVpgrFOjxd6/Wpy4riUSbiMsgEGLBdBs3bOzAKZeCFozbSsYJQbQF80CqJwn88wWiT0MqMdTWeoxPm/zB6Nm4cfaFmAfA7ivyWeEtwjUc+YLhIAi+22qJBJyIJZxO52Wa0kuWyPfK1v9QZRLMwqRjqNTWgBVqqqqMGzYMHzzzTeoqamBz+dDXV2daZmdO3eipqYGAFBTU2PJChbvxTJ2FBUVoaKiwvRHOif7miNP2CKOS1ghRBZwMkkgRgygNKdtIhbA9hguYDGtWroFZ2XLRaJzARtWoThJILFiAItckXUDIc0S4G+7PSWjU5zXyFzAHeceUi2tiVgB5UG/JYtJIGLAdLsylwVc5E4u01o9P7HOVyikWVyrdhbAoCRsAWmat3DnEddkkckCmFoMpFjeEycG0KgDGMUyaByDbAFM8GHAeAAMt6G8yG38nslaAe1cwHKmtZ1lTQ1TUaeQixV+kkwMoF2h+9YobUt0FhOSPl1CADY1NWH9+vXo27cvxo0bB4/Hg/nz5xvfr127Fps3b8bEiRMBABMnTsTKlSuxa1ckUHfevHmoqKjAyJEjs95+kn227m8xXu9p1rMTxQ00lSQQuzIwiVhk/NIA4JVukC6nA6VF5izaVLG3AMbephEDGMcCETMLWLLS+AIhSxKIHeqAr9Yv7FgLoL3lJxqappkEYFMWXcCyBVAVzckSmW4vue2oZZJi9VPZ4i72I8e5RQpBR4QtECnxomYBm1zAKbrAjSzg8LbE81rUJBCLxTO6BVB1d0dDtQA6HA5Uhd3A+1uSS0iU2716ez0As7Cymx/Y1gII3TobCIYykAQihcYoNUOFOA0EQ6ZtfbR+L2Y/uxy7paxx0jF0Shfwr371K5x++ukYOHAgtm/fjt/85jdwuVw499xzUVlZiUsuuQSzZ89Gjx49UFFRgV/84heYOHEijj76aADA5MmTMXLkSJx//vm4++67UVtbi5tuugkzZsxAUVFRnL2Tzo6maabBuqU9iEAwZAwIhgBMwQXsdiZZBkaqayYPaqUel1FGJd0sYCHmnI7IYBnSdKtMQ5sf3+5pxhEDuivHY58FXOp1mdxLiSSBAPpx2s3jqiLOgSh+bZ3CruMEYLTYr2j4g5ppRpVsFoKOBNc707cACiurW/S3xLaTTLyYbNWpLPGgzd9uKnZsuICFxUixAIptqzFzQBouYM3s+g5GqQPoNx5GFAEYMwYwsWvWzqVdWerB3mYf9jcn15/k8//+uj3hdlhrLcqootkXCGFbXSuOvXMBjhzUHSePqLasI0gkBlBOcrHEAIbPUZvSrhueXwlA98w8Nn183H2Q1OmUAnDr1q0499xzsXfvXvTu3RvHHXcclixZgt69ewMA7rvvPjidTpx11llob2/HlClT8OCDDxrru1wuvPrqq7jyyisxceJElJWVYfr06bj11ltzdUgki7T5Q6ag4xZfwHTTj2QBJ58NaXIBx7k/BoIhQ0B43U6jHhmg19/zKINfqkSKNjtNM3cENQ0XP/kJPttch39efBROGNY70rYodQArSzwmAagmrsiIIsXBkJ4sIESdWg5CxqMG/WcxCSRejJeKauXZlUWLRaSoNtKuA6gm2iSaTGF1AUfff5v0oKMnN7WjThLMbYoL2DIVnOKetUsCSdoFrMYARisDEzAnoBjrx7AAJurG9AX15eQaeeIBNNmkIjuBJwtRNfEtGNJM9y1fQK/N+O7a7QCATzbuxwlDeyMaiZxv4/dyOy11AIV1MlrCzGeb98fdPkmPTikAn3nmmZjfFxcX44EHHsADDzwQdZmBAwfi9ddfz3TTSCdALdjb6g+abo7lUgygSBCJRSikmdxJEStbnEQLaQBRYwB1AZhaeQsVMTAUu53GtFmAPgB8trkOADD3ky0mASj2WaqUgaks8WBHfSSz0G4qOJkSjwtN7QG0+oKmYtnR8CqiVwy+IiEmGNIS+k1SweICjmMBVgeufc3ZqyEamRM3/SxgcZyi7mRHxAAKQVTiddmKeYsFUKkDGKsQtLFMshZAqXanQNM0awygEo9qfK7Gz0n3kKRdwLL1P/zQ1ZJkNqxdAetYLmB5+fIiN/YGfPAFQ6YQjZiFoJNJcnM5LQktbXEEYLqhLyQ+XSIGkJBkUJ/OW31B40blcjpMN6pkJzz3uCL1rhLNtAX0G6QsjEo8EQGYTDJKrP0UeVwmN0xrDFeuGGjl2TqASGKKwBPDmgdEXLctJgEY3wIorIXi2Es8kXZ0VBxgMoIGsFpUEi39kQnkWDljKrQUHxSEMBB1JxO1pEWbMcMOcW5KPC7bzFYjBlAJExD9UvSDmFnASV4nqgVQfNYepR9Y3KWqBVASWAkngdgcj3joak0iqUgtyQPodRZjuYBlQWg89AZCpoerWHGICQlA6fhUC2BEANr/bvEy8En6UACSgkMtkdDii1gAi9xO09N4Iu5X2UKXTBkYcXN0OPSbnUexAnjc5iK4qdIuud/kfextju6yFCJAFXyiUK3AE+cmLawZrf6AKeElGtaYr7A4KUpOlKeCmvEYz/KqCr5cCECnI/0sYMMC6E3OAqgKDlkQrtnegPP/vhSfh9144prTBaD19xfnTrUAGnUAhUXYxmqXahmcoE2Yg98m8cFvWB+TsQAmds3axTSK9iQ6nRug/2aqw6G5PWA73Z5AHKfL6TAKvv/pna9NQnp/jLjWpGIA3XYWwHAMYJTrhgKw4+mULmBC0kF1Abf4g0Ysju6Kjdx4/AEN8MbenizQPPJMIHEGpHbJ/eNwqALQbQxy6cYAimy7onB8osflgD+oYXdj5OlencVCWDsqSqwuYJlYZWAAyZ3lCxoCKxELoF+x+JRKg3S+WABVy0U2C9jKSSDpxgC2W9zsicYARhfMNzy/Al9srcfW/a1491cnGiVySoviWAANAaj3A7XEi60FUPSZpAtBmxOMxPYTLgOj7E+2ACYeA2jjAvYkLwDlNotELRF6IVAt1vL9R8wSsuTbfabrU9Rq7FbktmS5JxQDKB1fkcfeAmiXnQzErhZAMgMtgKTgaGlXXcABYzAXIkncexJxvwqh4HQoU3MlGAMoBjOTC1iOAUxT8EQsgC7Tf9kC2NRuftL3S5mhpgxF1QIYI54PMFsz5IDwaHijDPiyC7ijLICWuV6TTAJJZsBOFzkJJNMWwET7m99wz1uz1b/Yqpch2bCnGUDk3JR63Ch22whAZSYQ0a3EtSTEXbuNYDKuN0mQrNpWjw/CmbDRkAtgG9e7jQA0HkaU61UVwGoMoN3Uayr2LuCw1TxFAdi9VH9ibW4PmPpoNBdwkceJndKMIeI3A2BkIssWeEHyLuBoMYDRXMBxN0/ShKeYFBwWC6AUA+h1m61xCbmAlXpirgRjksS2RWyMGghutCFTLuDwE7jY355GWQCqT/eRhA3Z+qYKwHh1AsVg3x4IJeQCVuMe27NqAew8LmCf1HfSmQs4GIrMEy1iABONJVQTdPRi3/brtkhJILYu4LAYabc8FJkfCAxrtke2AAqRGF4mEMRpf/kAP/37UlO9TxU5NMIr9TvhDTCOU3kYEedJvTfIFmBNS+zh0U4ACndsUhZAKYZZhGk0tZtjAFVhKz/0yq7erftbjdfCAlhWZHUWJhJzKV/z6u/eFp4hKJvXDTFDAUgKDrskkEgMoH5zT8b96g+YhY0QWPEGADUDUHa9VJZ4MlYGxnjSdysCsCniAm5Upq4Sg55bKmyttysyEHhdzrguYDFQt/uDkfPkjl8IWnUBF3tcECFBHTUbSDJ17YDIANo9PH1XNmcwiPQdV1pZwLIoENbaRLcjzpecKR7NDStcwGXRXMB+8+8trkO3VAZG0zRDZMkPBGoh7M821RnfrdvVFL390r7kaQujWQDbFUtprDIwANDmS00AynGziSL2Xex2oltYkOsCMHoMoOoZsEMU6y6XBKB44EgkSzeWBVCUoYlmAcymRb1QoQAkBUdMC6AhxhIXX0YR6PA6RdJgEgv15i+7RsuL3VFdTckiBlevELeGAJQsgKoAlCr4y6E4chKInSVHRVgA2yQLYKwYQFl4y9Ypr9uZcrmPRBHtE8cVT8CLQVe43Fr9ibn9MoHcd9KZCUQWBd2SrH8ZKRXksnwmo2malATijhIDGDSVYBF91FRMPBgyRLa8DfWhQXZh7muKnsVql6Hqs0kCCRiWRf1z4zwp51t9AFBDBD78Zg8Wr99rboPN1HalKSSBRKz8LsNat18pS6S6gOXj71lmH+gs2iBbAJOZKlNOcolm+Y1mAWzxZe96KlQoAEnBocYA6lnAZteSECl2xVVVfIqwEYNWvHUtAlCKp6so9hgDe7plYGRXl/5fH2BkAdgouYCDUkahXmLEXJ5GoNYItEO2ACaXBGKux2YusN1BWcDqAB/n9xPntSpsAQwl6PZLl5AijNOJARTH7HRE6gCqAqjVF8TfFq7Hxxv2mT4XgksWB3bnrM0fQkt7xAKoJgMA+rkLhKwCUC4d0uaPCEC576ku8Ma2iDtTfq0ih31Eyg+FomY3R+ol2s9LrdbtkwXhnqZ2nPfYUpz76BLTQ2WsMjDJCECzBVBff3dTbAEoewYejTPjhny+RcmYZO6NXpfVAijaHa1mYtBm/miSWSgAScFhLQQdsLEAJm598yvCRkzhFs8CqMY7VVcUG9+VFrk7zgUcHoDlAUKfBcBamLXY4zJZiezKVcTCLgYwpgB0R45ZPn9FbqfJHZhp5Fik8nDpm3j7US2AQGJuv3RRC4gLAaRp8UsPqchuwCLjwcU8ID+1dBPueOMr/PiRxdjVGEkWkC2mwj3vD4Ys6ze2+80xgFFcjm3+oLGu17iWIgka7YGg4QIuMVkAzZbhBkn0xZqfWZ6GMWJtD1lEh3CJR2IAhQvYfK7V2n+ysPl6Z6PxWp4BJVNJIEaxd4/LEIB7m8xlntoVgSo/GB4xoDt+d+ZhUbcv1wPtVqRfH4ncl+TEL7vC+G2+UMxp87I5v3YhQgFICg4xGPUIuz1MMYAes5s0kZtcQBFyhtUrQQugEESDe5YZ37X7g4ZLOH0BaI71sUsCASJuYDmYvcjtNO1fHqjsXHkqphhAQ2THiAF0SgNxOBjfEZ7DONWCv4kQCEXm9Y24QhNzAXcrdhtta0kibitV5H7ldZlnd0lWHBuCS3KDqv125TY9o1fTgC+21Bufy/1XTt5RSwo1tgXQLGcBS/1Gtnq3S/F3ot84HA5DMDa1BYzjKzHFAJr7RUNr5DdQY1t9gRCe+3QLauvbTMfulSz+keMSDyPmouQi6UW1FKplgGRhs1d62Kpvjby2y2qOZM4nHwPodTsNi+zeuBZA830hVkJXRbHVAphUDKDLid7lRcbnwmouu4Dtqr6ooSkks1AAkoJDzLHZq5suAGPGACbh5nArxWsTjgEML++UCp+6nY5IPFwgMzGAkSxgaxkYIDJYGtN2eVxwOh2mgUyO9ypJJAbQk2QMoBT3aMQuKnUSo7lZxUT2qSBbPbtFcYWqyBYUMXhmIxFEbpfH5TDN7pKse1w+hiLJWitT3xqxWNXWR86vbPn2ShZzddBuagsYs1roSSBmd6csPO1i4kS/lTNVTRZAY+pF3QIqWwAbFQvSo+9/i2v/uwLTH/9YyoK1TwIRlmBhOTMsgEX2FkBVAMp9QZ5RY7+tBVAOrUg+BlAcS7EUA7hHtQDGiAEE4ghAKfZXJISEtOQqHRx3cC9ceeJBePrSCUatwzZ/JPymR6k1DpEWwI6FApAUHOLG2qub/kTa6o8eAyjmA/5yR0PUwVW15EUsgLFv4K02AdY3TRuBCYN74P/G90+qFE0s2qJkAauuF3GzNdxs4YHop0cPAACcOqrGVAYmERewMbj7g8b0brIVUUUIbzkWS3VdR7Os3vjCShx75wIs27TP9vtYyNsUv0eiSSDFHpdxLrJRDFp+WHFIM4EAyWcCyyWCovXbBkkArtgasQDK8/LK1mp10G5qDyhlYCL9pkyaG7jNH7R1iQoLoChJ4nY6bOcCBnQLqNxe1QL4/GdbAQBrdzYa7ezVzWsbAyj6eqsqAL32FmJVsMlZvKKenn4cCbqAk+hLcpiHyALea0kCUV3A5vtCcYzrWZ4RSHYHx/NyyEkgHpcT158yHMcc3MvoA62+oDFrSnebRBT19yOZhTOBkIJDWAB7hgVgiy+IVvEE7VZdwBpeWr4ds+Yux8XHDsac00datiduUiI7TnYnxWyHmB1BuvFeevwQXHr8EACSFTKF8h4yIgBfWLaiCTDVAlgcXu7GU0fg6CE9ceIhfUxuqVjlIwSGBdCfYAygEc8VslhHDAuVTcyQPxjCf5fpg/uTH23CuIE94rZNRoi5IrfT+D3s9gMAX+5owJZ9LbYCMBs1zVTRIAugpC2AkhUsItbNx90gDcJyhq1c400W7qpwaWyLCMBSRWSUFrn1bNq2ANr9IZNgEKgWQNVSJSeVtAWCpvY2KUkgdvXsyos9putdnN+IAAzHAAbNQkUVuupv3yS5wmUrap1kDZT7ndwewCy845GQBVCdCUQJe+ndrQjRkB/8DuxeCodDDwlobg/YnlOBcW9UlimSPAORWFpzjVF9/cTPAUkeWgBJwSEGo55SDKC4KYvYFNkicNebXwEAHv9wg+32xM29KnyTFDe3eC5EIUTLomTTejLkAm5WMifVSdkF4mYr2iWyQku9bpw2uh+6FblNA0EiYkNOLDAEYEwLYOS8W7OXo1tWl2+pM14n4ppWsXXnRhFzU//8Pi7/1zJ8ukmf57ZYWueppZtxxgMfpuyKTgRVADodMM1kkQxN0sNBNBewLER21EeSQCLZ7+bC6aowuuLfy/DBN/qsHKVe80wgZVJh6PZAxAIoP1yoFkDV8ixm7wH0DH+5vXWKiFIF6LRRfY1t6McUtApAn9kC2DscOiKEZlN7AP9asskooCzEzpZ9LfjX4o2oa/EpAtCapNJNsqqJpKK6Vr9xjf17ySa8tHwboiGuiWJPJAtYtZ5FjwHUj71PRXQBKLuA+1WVGOdGPq79zT6c/pcP8Nj73xqfid9CLSAvfvM2f9A2mUpAF3DHQgsgKTiE5U0EJbf4AkaMjngKlQcEeZqkYEizTFJer9zkZAugpmlwRJnTstnGBSyTTCJKLJqlEhxAZKYBYz8uJ3zSwN3Ubv/UDigDcwJCS4jhdknQxUoCkWso+pQBqthjL1AAYNPeyIwPW/YlL75s3bk2MVjybyFEZ5En4tZ8/jN9kL7h+ZX458VHJd2ORFBjRx0OB0o8+vyv0TIqm9oDuOfttfjh2AMx6sBK43MxQJcXu6MKbDmmrrahzbgGIvUlzTGAzTEG7TKv2zTTRqnXbVwHbVEsgMVG1rpu0VKvF4dDn61GTzYJmITPPsUNKieIAMCPxh+o78/GBWwkKihz1grPgTh3/16yCXe+8ZWxzd7lRWhqD+APb60FALy3drcpvreuVZ6D23qtif1qmn5v+WpHA256cRUAYGz/7hjQsxQqcjxjtAdK1UIpJ8EAQK+y6AJQxEuL9lWVeFDX4jcJ7IcXrcfKbfVYua3e8GKo90ZBiRQDGCmoTgGYbWgBJAWHqAMoJ4EI91JV+CYkBsNdDe2QDV3b9lvFhfqUK7ukYpWRUYWZiifBZJJ4GEIzPDDIMTwAUF0ZcYXry0cXgDLlxVaXjYoc3xURltHXK5JcxtFqwtkJQNmttnlf9Om/otEmJcoUx7AA7pIyp0VVixKPy3JOd0kPDZlGCCi7jOxoNdVue2UNnvhwI3740Iemz6957gsA4SQQj/nBRX9tFpXBkIbd4XPQYoQwuE1JFLEE4LiB3U0WwFKvufyMmoylt01ffneDvt+KEmv/EX21pT1oEqxqIWi5nwDAkYP0UAH5WhPXgVzgOxSetQKIxA4Li/lzn24xbVN1pc7/alcMC6D52hRtEdPNNbT68f43kTmNF3y103LsgNkCaBXICLfXmhENRK4rpzP6g5lcouqQmnLDYikLNLui2+K3UH+zYpMADJ9vKQZQPIgzBrBjoQAkBYcQOOJG3h4IGZYCcdMXA5rs8gKAb/dYp5aKZgHUtx09JkyUy4hmARSDQLMvkFZFfFVoliv7qwnf3IXFyxiUogjTwb30cjVnj+8fd98ieLyu1W9kh3Yrji4sZTGgWijkhBIVeYDdXt+aQjasiHt0xXQBy1mwgvJid9QYp1R5+YvtOO0v72PVtnrLd3ZWsnhZyO98qQsH+YHkq9oG4/WQ3t0MoaVpkeXkAVhcLyK2TI7rk0VzU3v0Pl/idZnOTWmR22TZFb+tXQygEN+qNUm0AdD7gZyM0dgeMF2D+xQBKH63Ykn8ttqEiMgJQeLBsbE9gFDIOpWZXO5EEM0t3dQescDKCMHU0OY3eSA27rV/uBEPtSUel2FBFAzooVsM6xV3eCJTwQnKi91YeO2JmHv50Tiodzejv+2oa8NTSzehoc1vCnv4ZlejaZ/RXcAhIwnkgKqIyBxeUwGAFsCOhi5gUnCoWcAAsCN884q4gO0z6eysS8ZNrtQqAGNZ74z5UaNk35VJ5RZa/cGEZt6ww4jpC6+vCjDxdC+EcUQw2u9v7s+Oxtb9rThiQPe4++5drg+We5t80KCLiliWRVNJEMXVGS1GDTBbVTRNH3DtsgqjIZfKEWJCLewLAF/vtD4A2AnAWFawRPjda2uws6EdM5/+DO9d+13Td0KceW1KpUSLW7SzpLyzJmJNunrSMFMdtvZAEF63M+IiLnKjuqIIe5raJQtgxHolBEGLLxD12K/53jAA5tCBMpMFMGSancM4tvDvLopQV9g8QIi+WiuJJZGosKuhHf17lJrcjQAwom+F8bpEmn2jVbFI6QWqJQEYFniapl8zaua1nQCU+6ewQgaCkSLI6rVWXuzGjnr9d9stWZ3lJByZRsnS1q+qxPTd4F5l2LS3xSIAxe8n/x7VFUXY2dCOH449AM9/Hok5rCj2oKrUi4HhWqVCtN/4wkrj+D6Sprnbur8VB/cpj+EC1o+32RcwLIA9yorw+IXjsX5XMxrb/Fj87V4s27gfC7/ejYN6l+HA7lbXN0kPWgBJl0fTNNMMCWKA6lHmNQa97WFLn3ABi8FVraZvl5mnJlk4pRp+sTKBmxRhplLqdRntS+dJuNlnFnSq67ZPudkCKM6PaimUl09E/AFAz7KI1UhYAFVrh4ws8owyMKJ+YYwyMGqwv2rpiYdsASyOUYZjo80A3K3IYzmn6jysybIz7O7cYhNyYGclk2Oq7JAtWCKOUbj8qko9umVO2t6zn25Fu5RRW1HiMR6YRCxeJFnIZZq9QvRVuX0nDe+DmScdbGorYI49bPMHDUuW7BIVlugddW1GW1TE/sWDXJnXhaF9ugEA/rl4I4BILT6HA/jzOYfjyYuOtKzf4gtaLYD+oPGw5nE5UFHsMa7v+la/qcQLYC8AZWEqlm+WHjBUa3uFlAmcmACMXFuVJR7TNTakVzfjOGRrqLi39ZQehJ+5fCJ+NXkYbj3DPCuI6h5WM7FfXr7d9H5fs88UPqD+Zj3DVtR9Tb5IKEGRCycNr8ZlJwwxrqePN+7D9Mc/xtNLN9seN0kPCkDS5fnVcytw1O/fwTe7Gk1P85WlHsuNTLhPhNj4ZpfZ4mNnSRGDrrwtOSYqGnYTrcs4HA7DspRORfwWxaUrW6vKvC7DIiiEYlMcC2Ay9CqPxBeKOMuYAlDKDpQLQQOxs4BV64Ya6xWPiDXEJVmzrPtpsPkdqko9FqtqXas/6WnZBPHc/eL3kc9jLAGoFusVfXhXWGSee5Re59HhcBhTut326hr89pU1hmiqKPEYwka4gIVALvWa6yCKGWaOHBR5SBg3sLuRDCULpIE9yyIuYH/QsGSV22TFiqLOdi5g0ad3NERE4ozv6oLz9ZW1ACLCq2eZFz84/ADz1Isi3KI9YLEAtvqDRriGeFirKNH/b93faqkXOaJvuaV9MqKvit/R43JY3LCyC1gWgFv3t9j2/wbjvOnrHSBZAcf0rzQeJOXrRPyOvSRL+eBeZZh50tC48b9qJrY6vea+Zp+RcONwWB8mhRt9b7Mv8mAoLVOpuLF7xShRQ1KHApB0ef732VbsafLh7jfXGi5dj8uB8iK3xfomBhtxg9ulTJemziwASALQK7utIoWkoxEvCQSI3BTTsQA2KpmGsgutssRjmXlA3JAzIQDlMh+CWIOLGNzrWvyGZUD8FrHqANYrgk+1ysRDTuSJFQPYYFOXrGc3r2WAC4a0lAPY5UFa0zSLIGy0saTGSlxRraNCZNWGrd41khCSNesLn20zphPr1c0bsQA2KhZAr9vUh8Q1c/Tgnsa2DqmOiKLyYg8O7K4LlO8O72McR0NbwGRxFKjZoVW2FkC36Zgqij34zrDeAIBtda1o88ulnqyhAaKPyfF2QkQ1tQUiD0Xh5YTQWr/bGhIgEkuiIfqasMDZtUeck7oWv2kWkZBmfSgFIg8mwnIozi8AHNynm8miKBD3wp4piCv1IW6rYqne1xwpfVNe5LZYEGXPgIhrlO836qwgvWysqiR9KABJl0YEIwP6wCky1XT3rwPVUu2rIrfTGAh6KvFjsbLSjBIibqsFMFoxYcDqmrWjLE0BKNdWKw9n38rWqgE9S41BTbi+osXtpILD4TBu9oJoZSoAoE95RGSIxBwxZ3PMLGBpsAGSdwHXt0aER2mMMjB2IQA9yry2Vs1k2yCQ40xDmtXqKNogz84gF9y2tENxR4s+vDMcUydfA2cdcaDxutUfxNb9elt6dyuSLID69uxiAFt9QUMgjulfhR+OPQBD+3TDUUPMoujFGcdi0bXfxQFVJcZ2t9e1Gv1cfkjpUWbuhwOlObMFwnIvzl1Fie4KFQ8fOxvaDAu03ZRj4jPhYi32OA0LYSCkYdNe/fNS5SHq3a92WbYVLTveyB5uD+CbXY1GuaL+3UssywqRu3FviyHKxw6oAgCsrW20LC+X8wGAPpKoH9yrzLZun7gX9uxmHysrLLjTRveNeizR2F7XisXr9ezlQb2sv5fY5/vrIhnOcvKK6kaPVaSapA4FIOnSyJPXL/52rzGg9QiLEtn6IVsaeiiipX84k06dWQCIWF3kqZTkOoLRsIt3UjHKLaRoTZIFq9iWPEAN7lVmBMCLmCRhceiRRBJFLOSn917dimKWmxA3fl8whG/Dg7EYnGX3sIoIsheDTbIuYFn02pW4EOxUyrt4w3PoygkFgv0pCsBNSqZnrZKJXmcj0IXQsROtllp44T68M7xdWSz8eupwzA4nawDAurC1qVd5keG226MkgZR4XaYkCpGs0aeiCPf++HDMm/0dk1gF9H4g6tmJwX3NDj0r2e10mK5F1UI2pLdVUIjlhVCrKPbA4XAY13dtfZshyNUsWdFW+XgrwrODiAe/D8OlWA7urcfTjQ9b+d75UheAw2vKUV7sxrlH6ZnxZxzez7KPYdXdjNeT7l2EVdv1e5O4t8hUV+rtXrmtLtweN0YfoNdv/HJHg2V51Sp8wcSBAHQrZqnXbRGAbf6g4RmIVv/vgZ8cgf936gj8/oxRlu/k+6aMsJou+XYfPg/XyZw0otqynJ2A7FsZEcJDpXMFRJLJSGahACRdmu3KjAxvrNLjgYSFT441qamM3NTUp+KDwjd+Owug3XRHiVgAI0kg0V3A3dK0ABruXK/LKGAtt3NgzzJj7lDhGlRL4qSLHGM00KaIrUyRO1LG4quwpUMIUWGR2aJkYgdDmiFqhADcl6wLuC0iqiJuaKuAU8WYsK6O6V+F742sxoi+FYa7M9VEECFiBHubzWEIqmUUQEy3tSoA9zX74AuEjHg52V3Yu7wIV5081BigvwlnPfcs8xpCTSSBiP7SrSjiAm5o8xuWNpFcFA/xgPD55joA+u8sPyRUK2LDrg+JBweRIS1cyGLd2oY21MXo10P7mOP2RB8QxyDE6QHhc3XehAGm5Y89uBeW3fQ9/P5MXSzdedZo/PPio3DTtBHGMuoMPA+9tx4A0N8mu3VIuB+v2qbvt0eZFweFk1oefd88I1F7IGgkmYh72PCaCrzxy+PxvyuPARARvcvD51i4f91OhxHPqNKnohiXnTDEEo8HACeE3esq04/RhWdtQ5tRFF2+rwrU++v/jTvQ9F4NzVEzm0lmoAAkXRp1Sq6V4bpqYvCUrSgTBkfcVOpT8ajw07cqAPXYIn3Aq5YGPCNeLUoMYCAYmfUgVkyc+C7VsiIRy4D9ZO59K4tRE37yFlmWhqssQxZA+WY/wMbaoSKsCyLWqUdYeIj6g1v2mwVgY5vfKMosBk41ezsewjJSUeI23G/1SiJHqy9occfKpVMevWA83vjl8Yb1RhVeiaJaAOtbzGJ2j032pvh91WQYu3Zs3NOM7XWt0DTdcmjnXhNu13XhEIpeJhdwO4IhzbBE9ijzGgLw65368m6nwzZWz46BPcwWPdWaOm6gOePcrm6dyPgVCBetEIA7G9rw5/nrAAAet9UCfaDihhXWZnHMshAD9LqJMgf17gav22kkuhR7XDhhWG/TsYwb2B3/uexoy77797CKm2MP7mV6373Ma7K6Dfr1a0aM7De7mhAMaagq9ZiWGdG3whBf4v61PmxVX/T1bgC6OIs2U1Es+lWV4P5zx+LcowbgdiljWA4hEKgCHrDeW+yssk9dOgEAcOlxg1MugUViw7NKujTbpLIQzb6gEeNjJwDlKZbUJ1QRf1OruABFJmWR22l6ko7lkgPMJSBKYySBGPN6piwArVmVxR4Xvj+mH/Y0tWPyyBpjmZ2NbQgEQ4bly25y9lSokVw70c6HzMCepYb1D4jEBYqBRE3MEXFfZV6XITDVAt7xENusKvEa1qOQBjT5Aob7Urh/SzwuXHzcIDzw7no8ev54y7Z6lEYSWVJBFYCWEjcieF8aRPtWRlydKqoA3FbXZojoA7uX2goA4XYV+ld3Aeu/Q12LH3ua2g3RXVXqMc7Riq36A9aw6vKYrn6Zww4wCz5xrQlcTgcG9CjF5n0tmHpYje02hlWbLXhCEAsBtKO+DYHwwagxqQAs50Bk/Q7pXWbMYwxEf4A5eoh94se4gd3RvdSD/S1+zPjuwXA4HJh7+dH48SNLjGUmSMkycvtLPC7DojuwRykmDDEvd9k/P0UgqGHphn0AdEt4NDE3pn8VAOC1FTvw2orXjM+PH9rLdvlE+P6Yfvj+mH7Y1+zDH99eiwOqStCzWxEmj6zG21KNyeMOtu5DFfGjDqyyLHPswb2w8c5pKbePxIcWQJIy76/bjZ/961OLmzVXBEOapeyKGLTHKZl54sleFoCym0F9Qh0aHmDqW/0md6wIpFefpMX60SxR4undLdUMtCPdGEDh2lTLlNx/7lg8fdnRKPG6jHIXmqbHQIU0fdBNppByLK6eNNR4Lc9DGw11kB1eo597IQTrWvymOEDhOjxiYHfjN7TLzozGs59uwRfheKURfctR7IlkLsvWN9nNNmvSMHz065MwaaQ1vkmct1SSQOpb/Ph4oz6gC6uNKgjtXMBC6KgPKPLyQsDtqG+NmYAAACMVK1zPMi+qSj1GaMOyTfsB6JY2j8uJvlVmK88RA6tiHaYJh8OBReFi1wN7luKnEwZalvnHxUfh5ycehD/83xjbbah99dB+evvFQ8MTH240vrv4uMG22/jrT8Yar08IC6NDaszC8piDIiJMzPX8i5MOtlgEBcUeFz6fMxkb75xm3B8mDOmJxy7QHxzGDexumyQBmK3LFxwzCJUlHlwVrqUIAB9+s9cQfwAw5VB7cQwA/Srtf+dE63nGokeZFwuuORFzfzYRgB5HKvj69qmWudMFj1+on4NJI/rgdJtEE9LxUAB2Atr8wYQsJ9nm6rlf4K3VO/Hzpz7LdVPgC4Rw8j3vYeScN02Dv7AEjVfcSMLKIAtAuXZWsVIfsFtRJJBaFrzC4lKtxDsJgbnbZn5MIDIpfVmRO6YLRiRA7G5MzqUpWL1dd10NtsmcFHhcTiN79t9LNgHQXWKeGMI0GRwOB16/6nhcPWkYLoky+Mocc5DZYiCsUZUlEQEil8IQVt0RfSvQrypi8Ul0Pt573l5rvBZuZrkcjUDMA11TUQyPyxk1LknEmKUSAzjm1reN16eErV1rpKB/TdOM0iy2ArC+DZqm4cYXVuKPb+nHtSM8fd3osPjeIVkAo1m0xg8yXy+9y4vgcDhwRPi6Ede8cIkLsSoYfUBVIodrMKBnKTbeOQ0Lr/2ubczZ4F5luO6U4THDJS48ZpDxenhYwNrNGhItu33aqL648JhB+PH4/vjN6YcC0AtYG9+P7mtyu58wrDc23jkN10w+JPbB2XDyiD7435UT8fiFR0Zd5s/n6IJ00ohqQ6j9ctIwk1CVmXP6yKjbskucAYDTx1iTVVKhR5nX+G2G9O6Gt2adgOVzvmcqBq5y0vBqbLxzGh6bfmRKbmiSPnQB5zmfb96PMx/8CID+NBXrgso2IhZp+ZY6tPmDFtGUTWY+/ZlRT+rkexbiq9tOQUiL1GL7zrDeuHfe1wB01+bEsDtFHgz6KsHKJw/vg/lf7TIy+g6oKkF9qx/b9rcaLidhYaxW1lVrpqkIARPt6V8g3NKbbKagSwThAh+quMhUQmF/nigxoZbBSZeR/Sowsp81U9aO7w7vg3OO7I9nPtmCZTdNMj53OBzo370E63c347lPt+CwsOgQAnBQT/N0UQu/3o3/izNfcXsgEsN591mjjYGoT3kxdja0Y2dDG0ZB34+YBzraYCoQrvNks4D/FZ6xQiCsTWu2RwRgU3vAqC0phymIh5fN+1rw3KdbjZkTDjugwuhrxw/thQVf7cL2+lYjkcYuAxWIzB4hEGIzmuitKvXizLEH4IXPt+GQ6nL833hrLFhH85vTR2Jfsw+t/iAGho9r2ui+uPa/K4xl/nvFxKjrOxwO3PL9Q02f9a0swZpbp8DltBZrTgeHw4FxA2PXC/zeyGosuOY7puxYl9OB00b3Q1NbAL9+Xp+G7ddTh+NnJwyJKaLKitz44Prvwut2ork9iJXb6jG2f1WH3bNVyynJTygA85Rlm/bjrIc+Mn324HvfYMyBVTjm4J649+2vceIhfTDxIGv8SEfTHgjilpfXmD4766GP8NpVx2e9LQI55gTQBZa4H1aWeDCmfxWKPU60+UM47IBK42Z5/NDemDyyGr3Kiyz1ux786RH4ZMN+I76nX1UJ1uxowFbJAmgIQLVulTJrgsq2On0AHhQnK1ZYaDZHmQQ+HkKA9opS60tw7lED8NgHG/Bp2LWXiRqA6XDnWaNx51mjLZ+feEgfrN+9Af9YvAm7m9rxx/8bg483RFymLqcDF0wciH8u3mRbMFdl5dZ6tAdC6FnmNYmW/j1KsHJbPdbtajLcvGIe4IP72Lv7BMIdqRajDoU0vL1mJ+568ytMG9UXv5oSsRxpmoabX1odadctk+F2OuF06H1o095mDOxZZmSxlxebi5jLwf/X/S8ieK7/30ojMUTEezW2BfDqih0AEHV+VfkYR/atMKzBEwb3MLI7AeBnJwwxXv/uzMMwYXAPnDCsd04sOg6HA/efa7aOlXrdeGnGsVjw1S5cdfLQqO7IWOQyASGaa/mcowbg7PH9E46zBKTfujxi6SaFDQVgHvLS8m345TPLLZ//6Z11pvd/W/QtNt45DZ9s3Ic/vLkWUw6rQSik4cJjB9m67zQtepCwHaGQhsc/3IDxg3rg8HAQMQBc/98VeFGZ+3G1ZKXIBM9/thX/+2wr/vh/Y0xPwHbcK7nwBB9v2GdMTi6mZrrrrNF48qONpjpnXrcTj1xgDeQH9EDl46QgaXf4Znvzi6tw/tF6nJKwPqmlDoQFcN6andiyr8ViadkquRNjISw7tQ1taGoPwO10wOV0xHXPapqGL3c0YlU469mueK6MmoVnNztBPnDa6L74+wd6GYzXV9Ya03x5XU7DwihE898WfYtH3v8WK34zGbX1bRYr6NNLNxuT2R81uIfp2jhiQHe8vrIWd735FQ7tV4GBPUsxL/yQIV8LdghL8scb9+Hqucvx2x8cii37WjDt/g+MZf767jf467vf4MmLjkSrL2ia+eLP5xxuPIwcdkAlVmytx3f+8B56lnmN8h2nKTFT0YSAnBV8kI2YiFaWx+t24s1Zx+Ph99bjMknknT2+P67/30rj/QWS27XU68Y5R5nLo+QDY/pXGUkQXYlkxB8hdlAA5iFyYG8i3PrKGqzcVm8Ej+9pascNp47Amu0N2NvcjvvmfY2yIjdWbavHX849Asce3NM02O1taseuxnYcUl0OhyOSEfefTzbj9te+BAB8fOPJ6F1ehOVb6iziT7BqW73hlkuFYEiDy+nAs59sMawYf1v4rcUtI/PNribcv+Aby+e3vhqxUIoyEj84/AD84PADUm6fPP9leyCIdTubjEKwByiuMbm23+MfbsD1pwzH6u0NRgzVPxfrsXbx5tyUhdhhv3kLAHBQ7zL894pjUOJ1YcOeZqzb1YRTD6vB7qZ2Q0yMv/0dYz2X04HhceYnPfvI/vjj218b7380LvsuvESIZhGZMKSHYd2Rxa6mAaNuedt2HZmZUnA9AIyWshIvePxj03fxBOCIvhVG5ucLn2/DC59vi7rshU98YnrvdTvxfSku6+zx/Y3M2r1STOEvTx4GlVdmHofT/6qLzJ+dMATdity4Jxz20C1KrOkhMUIDhtdU4E/nmC1qDocDH994Mn73+pc4c+wBln5PCOk8OLR4M4+TqDQ0NKCyshL19fWoqEgsvikR1tY2YsqfFiW0rGwVkJlyaDXeWr3TZg0968rldET9/unLJuCoQT1w2l8+MJXjSAQ5bX/BVztx//xv0NjmxxMXHmXEs63aVo8fPvgR+lUV4x8XH4X+3Usx5MbXAQCXnzAEjyz61rTNoX264aDe3bCjvhX3nH049rf48Od31qHE6zKsMoJ/XzIBP/37UtNnq347Ja7QSoSm9oAhwlQ+/PVJpsGwvsVvBPT36uY1ps9Sufm0kXETIwb9+rWY38fj8hOG4MZTR8RdbtHXu3HLy6vx4yP742ffOSitfXYkq7bV4+3VtXjsgw1o8QUxdkAV/j79SCNOrc0fxPCb30x4ewf36YZ3Zn/H9Jmmabj+fyvw7KdbTZ/3LPNi2c3fi7vNO17/En9T+nEi3H7GYfjp0ZEs2E837sOPHl5sWubGU4fj8hPsf59gSEObP4iyIjea2gM484EP4XI68PLM4+B1O7F8Sx3OeOBDAMBrVx2HQ/ul/sBGSGemo8bvzgQFYBp0ZAdKd9DPBm/NOgGlXheOv/td47MfjTsQFx4zCMGQhh+EB5pscd+Px+CMww/AuNvfkWaz8ODzOZMzto9ov8uGO061WFie+3SLKQDdjrW3nxI3uPyvC9aZrHPJoAqKrsTepnbsqG+ztTov/Ho3piuWOztcTgcW33BS1Fkr5ry0yrDWAsDiG06KG5IAAPO/3IlL/vGp5fPHLhiPSSOrsauhDUf9fr7l+69uO8UUmB8MaZj97HK8tHw7DjugAnedNTop0WYX9rG/2Ydij8tk0Sak0KAApABMi47sQKf/5QNj1op8RVj7fvXcF/jvsq1xlk6On31nCJZ8u8+ozxaPb39/qhETc84ji7HkW90dnmkrh50A/P2Zo/CTCdbYJ18ghGE3vRF1W7+eOhxXJGFp27inGfO/2oXbXl0Tf2HoQfnn2dRUKxTqW/yoKNEtYfO/3AWHA9i4pwUrt9Vh6YZ9OHJQDzx43hFxMyH/uXgjfIEQfnxkf0uiUDQ0TcOf3lmHb3Y34bUVOzCoZyn+e+UxpjlQP9u8H2trG7G7sR17mtpx07SReZXlT0hXhgKQAjAtOrID1bf68fnm/dAAfLJhHx4MzxtpxxmH98PdPxqDsbe+bZphoiM596gBuOOH+ryX+5p9OOK2eRnb9uSR1fjb+eMAAINveD3u8nMvP9pUJf/Fz7dh1tzlGDugCv+74piMBkt/s6sJk+5daLyvKvVg6Y0nR7Xi/ealVfjH4k2oqSjGnqZ2HNS7G66ZPAwetxMnDO2dUlZiIBhCUNPw21fWYGd9Gx766Tg9Y3VnI75zSG+0+PT4xJOG96GgIIQQGygAKQDTIpsd6N631+I/n2zBof0q8N7a3Zg0ohrLNu3D/hY/Pr7xZPSpKIamaahtaENZkRtPLdmM00b3xa7GNow5sAqb97Xgzje+wpJv91rmMxUcNaiHkUgi+O33D8U3u5rwryWbMKBHKd745fFobAugd3mRSbzc/eZXtiL16UsnYOZ/Pk9oXtQDu5fg5tNGmiraC4vbQ+cdgev+t8Ko6zd2QBV+c/qhUQPyA8EQ3BkqZKwiLplEMqoDwRAa2gIZm1eXEEJI+lAAUgCmRbY7kIjnWbWtHoN7laHI7USzL5h0zbZV2+px66trcP0ph6CxLYCHF67HnT8cjUG9yvDnd9bhvne+xviB3XHZCUMweWR1wqVjNu9twe9f/xKnHFaDmspiHB22yjW0+fGvxZvQrciNiQf1xPvr9mD0gZXoWebFSffo1rT/XjER4wdZC6O+tHwbVmytx/87dQSWbtiH++Z9jVvPOBTDawrzgiWEEJI+FIAUgGnRFTtQKKTh2z1NGNKrW1bqTG3Z14Jtda2GWCSEEEI6mq44ficL6wASE06nAwf3yd40Pv17lEadjooQQgghHQMjxAkhhBBCCgwKQEIIIYSQAoMCkBBCCCGkwKAAJIQQQggpMCgACSGEEEIKDApAQgghhJACgwKQEEIIIaTAoAAkhBBCCCkwKAAJIYQQQgoMCkBCCCGEkAKDApAQQgghpMCgACSEEEIIKTAoAAkhhBBCCgwKQEIIIYSQAoMCkBBCCCGkwKAAJIQQQggpMCgACSGEEEIKjIIXgA888AAGDRqE4uJiTJgwAR9//HGum0SIjqYB9dv0/9G+X3g3sOLZ7LaLEEJIp6egBeDcuXMxe/Zs/OY3v8Fnn32GMWPGYMqUKdi1a1eum0bSxdcC1K5KbNk93wDfLuzY9qTCsieB+0YCn//L/vutnwLv/g54/jIg4NMFYXtjVptIOiF71gFLHgaCgVy3hBCSQwpaAN5777247LLLcNFFF2HkyJF4+OGHUVpaiscffzzXTStsQiGgbkvkvaYBb98EvH4tEAomto1nfgI8fGx8YadpwOOTgX9+H9j0ERBoB9YvAPytqbf/i2eA5y4CWuuiLxP0A5/8Hdi3QX+/fxPgb9Pb8+x04F8/BF6dpX/38i+Apt3AztXmbdRtirze/SXwn3OBOw4EPn408nkoBCz6A/BZFBGZCk27rG3JJt8uBP7zE2DbsuTW27AI+GJudIuqIBQEdnwRu6/5W/XthIJAy77I5zvX6G3bvCTyma9F/+ydW4C2Bv13jkcoCCx+ENjySeSzoN+8jN1xhILxj+/BicCb1wOr/hu/HWKbsQi0W9u171u9721eYm23sZ5PP1/x2ivwt+rbjIZ6vflarG0PBfX91m8D2pvi71Nt2/6N+mepiGdN0/edDKKv+JrN98RsIs6ZINHfKx6alrltkZRwaFph/gI+nw+lpaX473//izPOOMP4fPr06airq8NLL71kWae9vR3t7ZGbXUNDA/r374/6+npUVFRkrnFrXgK+fEW6OML/k3mv/qzRltVCgMMBFJUn1jZNk7av/lf2HXNZ6X+gXbdcVRwAeMuAXV8Cu1YDvUcAfUboQkcM9v3GAj0OAlr3A6EAUNZbb78WimzP3wp8/WakzaPOjn48TTuBDWGR2PNgvS31W4Dug4ADxuvbtpxD0wkxvw0FgTUv6q8rDgQGTNDbE/QBJd0jy+1cDexaAzicwMBjgY3vA0WVQPcBQO3K6O2FAxj5fcDpBr58FQi22y828gf6wFu7Uj8eADj0TMDh0o8pFNC/D7Tr2yjpDri8MY5Vixzf2jf0dfofDZTX6NsS29OCgLebLhL3rQd6DQO69dEHsqJyfTvit9JCMPqB6X1I/2urB4oqgNIe5j6z+vlIsw4YB3QfHGmD3JbSnnp7GnbogqRlj75O9SiguBIo66m3K+TXj6usl35+Rf/rVg0MPkHfVv0Wva95y3TL8p61ej/0NQNNtfpyRRXAV69G2lZ9GNB7OLB+vt5fBd5yYOj39D7fvFs/vqJy/Zib9+ht2Petvl0AGH6a3oZv3wN6H6Kf0/ZGvd9WH6r3VS2kL7N5CeApAfodrp8rd1FYFIaFYWsdsOkDcz+Rf3fTT67p/WffeuDAowCXRz/ein56HwoG9O92rwV6DAaqBgJtdfqx7t+oHwc0/Tz2PBgorgLc3vBvFNSvgbpN4T5Srf9ejTuA+q36tjwlgLcUaKzVz8/2z/X1akYBDduAPofq3wd9+rb2fqPfQ7oP1tf99l19XzWjgR5Dwsus068B0U8P+i7QsF0/7zWj9OvK4dT/9nyt77v/Ufr52PO1/udw6ee7ZpT+exh9M2R9LX5TdxGwd71+vxlwtH6s4t7na9H7YHlffXnRf/d8rZ8fbzd9W/5mvT+11evnq2E7UFyhP1T0GQ6U9tKPKxi+BgJt+n5b9+v9vbgy8ps0hb1cLq/+u3q7RT+GzYt1ATjwGH27m5fo++1/VPge0qZ/H2gD/C36fkp66L+1uJbFw5K3TG9jKKj3rZZ9wKDj9HZqIb0tcMDCiNP1+14GaWhoQGVlZebH705EwQrA7du344ADDsBHH32EiRMnGp9fd911WLhwIZYuXWpZ55ZbbsFvf/tby+cZ70Dv3gEsvDNz2yOEEEI6KyfeAJz464xukgIQcOe6AZ2JG264AbNnzzbeCwtgxjn4ZP0JC4DxNORwKK/V7yQSWtYRee1v05/s4qJJ66n/7badxH+nS3+yDbRL7df0J3GXR38yD/rCVqbwM0vQF3lydDiV7YWf4hNx5bq8+vYD7fo+exwENG7Xn8xV1HMtjte0Pbf+BNxYqy8vLAaa4r5yeSKfO1wwLFzeMt0iEGjXrU7Ne/RjcXvDrsfw8g6nbgEBdItQaS+g11Bgy1L9O6c7fGzhcys/3Ts9+v5dHv11W53VXWY5Vul3DrTp6znd+vGK12JfzvCtJegP78+lWwkcTvNv73BIv538Xfh1KAi0NwBqXymu1K1RgfaI5cDpCrch/Fv6W8PnWANa9uqWSNFXPCX6OfOU6N/7mvTPxfkJ+gB3SWT5QCvgKtLb0Fqn719sR1gdnW59f+V9dUuWv1Vvv7tIt/i4vMD+Dfq50oL6uq4i/XV7U/j38OptEf06FNK/ByLnNBTQ993eqPcV8ds4XXq7xW9vLOsKXw/hPuMKW+GCPr19Ua99LWIddDgBd7F+/O2NkX24i/R9B32RcxBo0y1KRj/Q9GMVv5X4nVxe/c9woYfvLy17I9ZblyfcjwLhfuTWt7V/Y3iZkL4Nb1nkuBwu3eqlhXSrbss+fVv+1oil1enSlwsF9GNob4xYx8V1GgpG+pnLHT5+l94XfC16W7SgTd9V7m9aSN9Wtz76/7Z6/b/DoR+LuzjcxnC7xDXpdOnL1W8NW+/CFl1PmX6OG3cAVQP0dYsrIn1IXAMur75cMBwfrAXDx+bQ7xsOZ8QaG/Qr16Ij8rs7HPq163Lr14RoV3sj4CnW+7C7SD8Ol0e3TIprQqwvtutvDZ/78H1dWDuB8O8RJVzgwCOj9FGSDgUrAHv16gWXy4WdO3eaPt+5cydqamps1ykqKkJRUVHHN67/URG3AyHJ0u/wXLeAEEJInlOwSSBerxfjxo3D/Pnzjc9CoRDmz59vcgkTQgghhHQ1CtYCCACzZ8/G9OnTMX78eBx11FH405/+hObmZlx00UW5bhohhBBCSIdR0ALwxz/+MXbv3o05c+agtrYWhx9+ON58801UV1fnummEEEIIIR1GwWYBZwJmERFCCCGdD47fBRwDSAghhBBSqFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQYFICEEEIIIQUGBSAhhBBCSIFBAUgIIYQQUmAU9FRw6SImUWloaMhxSwghhBCSKGLcLuTJ0CgA06CxsREA0L9//xy3hBBCCCHJ0tjYiMrKylw3IydwLuA0CIVC2L59O8rLy+FwOHLdnKzT0NCA/v37Y8uWLQU7l2Im4HnMDDyP6cNzmBl4HjNDR55HTdPQ2NiIfv36wekszGg4WgDTwOl04sADD8x1M3JORUUFb3IZgOcxM/A8pg/PYWbgecwMHXUeC9XyJyhM2UsIIYQQUsBQABJCCCGEFBgUgCRlioqK8Jvf/AZFRUW5bkqnhucxM/A8pg/PYWbgecwMPI8dC5NACCGEEEIKDFoACSGEEEIKDApAQgghhJACgwKQEEIIIaTAoAAkhBBCCCkwKABJTO644w4ceeSRKC8vR58+fXDGGWdg7dq1pmXa2towY8YM9OzZE926dcNZZ52FnTt35qjF+c+dd94Jh8OBWbNmGZ/xHCbOtm3b8NOf/hQ9e/ZESUkJRo0ahU8//dT4XtM0zJkzB3379kVJSQkmTZqEdevW5bDF+UcwGMTNN9+MwYMHo6SkBAcddBBuu+0207yoPI9WFi1ahNNPPx39+vWDw+HAiy++aPo+kXO2b98+nHfeeaioqEBVVRUuueQSNDU1ZfEock+s8+j3+3H99ddj1KhRKCsrQ79+/XDBBRdg+/btpm3wPKYPBSCJycKFCzFjxgwsWbIE8+bNg9/vx+TJk9Hc3Gwsc/XVV+OVV17Bc889h4ULF2L79u344Q9/mMNW5y+ffPIJ/va3v2H06NGmz3kOE2P//v049thj4fF48MYbb2DNmjW455570L17d2OZu+++G/fffz8efvhhLF26FGVlZZgyZQra2tpy2PL84q677sJDDz2Ev/71r/jyyy9x11134e6778Zf/vIXYxmeRyvNzc0YM2YMHnjgAdvvEzln5513HlavXo158+bh1VdfxaJFi3D55Zdn6xDygljnsaWlBZ999hluvvlmfPbZZ3j++eexdu1afP/73zctx/OYATRCkmDXrl0aAG3hwoWapmlaXV2d5vF4tOeee85Y5ssvv9QAaIsXL85VM/OSxsZGbejQodq8efO073znO9ovf/lLTdN4DpPh+uuv14477rio34dCIa2mpkb7wx/+YHxWV1enFRUVaf/5z3+y0cROwbRp07SLL77Y9NkPf/hD7bzzztM0jecxEQBoL7zwgvE+kXO2Zs0aDYD2ySefGMu88cYbmsPh0LZt25a1tucT6nm04+OPP9YAaJs2bdI0jecxU9ACSJKivr4eANCjRw8AwLJly+D3+zFp0iRjmeHDh2PAgAFYvHhxTtqYr8yYMQPTpk0znSuA5zAZXn75ZYwfPx7/93//hz59+mDs2LF49NFHje83bNiA2tpa07msrKzEhAkTeC4ljjnmGMyfPx9ff/01AOCLL77ABx98gKlTpwLgeUyFRM7Z4sWLUVVVhfHjxxvLTJo0CU6nE0uXLs16mzsL9fX1cDgcqKqqAsDzmCncuW4A6TyEQiHMmjULxx57LA477DAAQG1tLbxer3FhCqqrq1FbW5uDVuYnzzzzDD777DN88sknlu94DhPn22+/xUMPPYTZs2fjxhtvxCeffIKrrroKXq8X06dPN85XdXW1aT2eSzO//vWv0dDQgOHDh8PlciEYDOJ3v/sdzjvvPADgeUyBRM5ZbW0t+vTpY/re7XajR48ePK9RaGtrw/XXX49zzz0XFRUVAHgeMwUFIEmYGTNmYNWqVfjggw9y3ZROxZYtW/DLX/4S8+bNQ3Fxca6b06kJhUIYP348fv/73wMAxo4di1WrVuHhhx/G9OnTc9y6zsOzzz6Lp556Ck8//TQOPfRQLF++HLNmzUK/fv14Hkne4Pf7cfbZZ0PTNDz00EO5bk6Xgy5gkhAzZ87Eq6++infffRcHHnig8XlNTQ18Ph/q6upMy+/cuRM1NTVZbmV+smzZMuzatQtHHHEE3G433G43Fi5ciPvvvx9utxvV1dU8hwnSt29fjBw50vTZiBEjsHnzZgAwzpeaQc1zaebaa6/Fr3/9a5xzzjkYNWoUzj//fFx99dW44447APA8pkIi56ympga7du0yfR8IBLBv3z6eVwUh/jZt2oR58+YZ1j+A5zFTUACSmGiahpkzZ+KFF17AggULMHjwYNP348aNg8fjwfz5843P1q5di82bN2PixInZbm5ecvLJJ2PlypVYvny58Td+/Hicd955xmuew8Q49thjLWWIvv76awwcOBAAMHjwYNTU1JjOZUNDA5YuXcpzKdHS0gKn03z7d7lcCIVCAHgeUyGRczZx4kTU1dVh2bJlxjILFixAKBTChAkTst7mfEWIv3Xr1uGdd95Bz549Td/zPGaIXGehkPzmyiuv1CorK7X33ntP27Fjh/HX0tJiLHPFFVdoAwYM0BYsWKB9+umn2sSJE7WJEyfmsNX5j5wFrGk8h4ny8ccfa263W/vd736nrVu3Tnvqqae00tJS7d///rexzJ133qlVVVVpL730krZixQrtBz/4gTZ48GCttbU1hy3PL6ZPn64dcMAB2quvvqpt2LBBe/7557VevXpp1113nbEMz6OVxsZG7fPPP9c+//xzDYB27733ap9//rmRnZrIOTvllFO0sWPHakuXLtU++OADbejQodq5556bq0PKCbHOo8/n077//e9rBx54oLZ8+XLTuNPe3m5sg+cxfSgASUwA2P498cQTxjKtra3az3/+c6179+5aaWmpduaZZ2o7duzIXaM7AaoA5DlMnFdeeUU77LDDtKKiIm348OHaI488Yvo+FAppN998s1ZdXa0VFRVpJ598srZ27doctTY/aWho0H75y19qAwYM0IqLi7UhQ4Zo/+///T/TAMvzaOXdd9+1vR9Onz5d07TEztnevXu1c889V+vWrZtWUVGhXXTRRVpjY2MOjiZ3xDqPGzZsiDruvPvuu8Y2eB7Tx6FpUul3QgghhBDS5WEMICGEEEJIgUEBSAghhBBSYFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQYFICEEEIIIQUGBSAhhBBCSIFBAUgIIYQQUmBQABJCCCGEFBgUgIQQQgghBQYFICGEEEJIgUEBSAghhBBSYFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQYFICEEEIIIQUGBSAhhBBCSIFBAUgIIYQQUmBQABJCCCGEFBgUgIQQQgghBQYFICGEEEJIgUEBSAghhBBSYFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQY/x+oPliLL9fcGAAAAABJRU5ErkJggg==", + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set scale manually" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "job.pattern.scale = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "927e5e8781ff431ea1df107177006e0c", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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Dz179sTf//53bfktt9yCQw89FIWFhejbty/uuOMOBAIBy30+//zzOPzww5GXl4du3bphwoQJpusuWbIE69evx9ixY7XPtm3bhuuvvx7XX389nn/+eYwcORK9e/fGKaecgueeew6TJ08GALzwwgsoKyvDe++9h0GDBiEvLw/z5s2Dz+dDVVWVcJyJEyfi5JNPBgBs3rwZ55xzDjp27IgOHTrg8MMPx0cffSSsX15ejsrKSgwbNgz//Oc/sWvXLixatAh33303jjjiCN15HHXUUbjjjju09+eccw5effVVy34izPGmuwEEQeQWfAwgWQAJRygKEGhMz7F9hYDLFdemt956K5599lk88sgjOOmkk7Bz5078+OOP2vLi4mK88MIL6N69O5YvX46rr74axcXFuPnmmw3399RTT2HSpEm47777MGbMGNTU1ODrr782Pf5XX32FQw89FMXFxdpnr7/+OlpbW02PUVZWpr1ubGzE/fffj+eeew7l5eXo0aMH+vbti5dffhk33XQTACAQCGDatGl44IEHAADjx49Ha2sr5s6diw4dOmDVqlUoKioybWNBQQEANVbxyiuvxF133YXFixfj2GOPBQB8//33WLZsGd566y1tm+OOOw7btm3Dpk2b0Lt3b9N9E8aQACQIIqVQDCARN4FG4B/d03Ps23YA/g6ON6urq8Ojjz6Kxx9/HJdddhkA4JBDDsFJJ52krXP77bdrr3v37o0///nPePXVV03F2b333osbb7wRf/rTn7TPmFAyYvPmzejeXey3tWvXoqSkBN26dYt5DoFAAE8++SSOPPJI7bNx48Zh6tSpmgB8//330dzcjAsuuAAAsGXLFpx//vkYPHgwAKBv376m+6+ursY999yDoqIiHHfccaioqMDo0aMxdepU7bymTp2KU089VdgPO6fNmzeTAIwDcgETBJFShJlAkhNKRBAZy+rVq9HS0oLTTz/ddJ0ZM2bgxBNPRGVlJYqKinD77bdjy5Ythuvu3r0bO3bssNyfTFNTE/Lz84XPFEWBy6ZF0+/3Y8iQIcJnl19+OdatW4eFCxcCUF3FF1xwATp0UEXy9ddfj3vvvRcnnngi/va3v2HZsmW6/Z5wwgkoKipCx44d8cMPP2DGjBmoqKgAAFx99dV45ZVX0NzcjNbWVkyfPh1XXnmlsD2zGjY2pskqnOWQBZAgiJQi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", + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set wavelength manually" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "job.parameters.wavelength = 1.912" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a1722d240d2143f1a7fe9c2da868348c", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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BI8++iiOPvpo9OvXD+PHj8cjjzyC66+/HgDw+OOPo6KiAm+88QaGDh2KgoICfPbZZ8jLy0N1dbXhOJdeeimOOuooAMD69etx0kknoXPnzigpKcGBBx6Id955x7B+ZWUlqqqqMGbMGPz973/Htm3bsGDBAtx8880YNmyY6TwOOuggXHfddfrfJ510Ep5//vmY/UTs8We6AYSQ3EKMAaQFkLhCUYBAY2aOnVcMeDwJbXr11Vfj4Ycfxj333IMjjzwSW7duxQ8//KB/36lTJzz++OPo1asXlixZggsuuACdOnXClVdeabm/Bx54ADNnzsRtt92GyZMno7a2Fp9//rnt8T/99FMMGjQInTp10pe99NJLaG1ttT1GRUWF/rmxsRG33347HnnkEVRWVqJ3794YMGAAnnrqKVxxxRUAgEAggGeeeQZ33HEHAGD69OlobW3FJ598gpKSEixfvhylpaW2bSwqKgKgxiqed955uOmmm/DVV1/hkEMOAQB8++23WLx4MV555RV9m0MPPRSbNm3CunXr0K9fP9t9E2soAAkhaYUxgCRhAo3A33pl5tjXbAHyS1xvtnfvXtx7773497//jalTpwIA9ttvPxx55JH6Otdee63+uV+/fvjTn/6E559/3lac/eUvf8Hll1+OP/7xj/oyTShZsX79evTqZey3lStXoqysDD179ox7DoFAAPfffz9GjhypL5s2bRoee+wxXQC++eabaG5uxumnnw4A2LBhA0477TQMHz4cADBgwADb/dfU1OCWW25BaWkpDj30UPTo0QOTJk3CY489pp/XY489hp/85CeG/WjntH79egrABKALmBCSVgwzgaQmlIiQrOX7779HS0sLjjvuONt1XnjhBRxxxBGoqqpCaWkprr32WmzYsMFy3e3bt2PLli0x9yfT1NSEwsJCwzJFUeBxaNHMz8/HiBEjDMvOPfdcrFq1CvPnzweguopPP/10lJSoIvmSSy7BX/7yFxxxxBG44YYbsHjxYtN+Dz/8cJSWlqJz58747rvv8MILL6BHjx4AgAsuuADPPfccmpub0draimeffRbnnXeeYXvNatjYmCGrcDuHFkBCSFoxzATCGEDihrxi1RKXqWMngCZS7Jg3bx7OOuss3HTTTZg0aRLKy8vx/PPP2yZhxNufFV27dsWSJUsMywYNGoTa2lps3bo1rhWwqKjI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", + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set background points manually" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "bkg = PointBackground(linked_experiment='PbSO4')\n", + "\n", + "bkg.append(BackgroundPoint.from_pars(meas_x[0], 200))\n", + "bkg.append(BackgroundPoint.from_pars(meas_x[-1], 250))\n", + "\n", + "job.set_background(bkg)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7862adad8bc04dd390b4095451b555e4", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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vr4e9fX1aG9vBwAsX74ct912G+bMmYOVK1fi1VdfxbnnnoujjjoKe++9NwDguOOOw5gxY3DOOefg66+/xjvvvIMbb7wRkyZNQmVlJQDg4osvxnfffYdrrrkGixcvxoMPPogXXngBV1xxRcmOnRBCCCGkGHQ6AfjQQw+hsbERRx99NIYMGeL8Pf/88wCAYDCI9957D8cddxxGjRqFq666CmeccQZee+01Zxt+vx+vv/46/H4/xo0bh1/84hc499xzpbqBI0aMwBtvvIGpU6din332wT333IN//OMfrAFISAdjGCbunfotPlq6udRNIaTDOfroo/Gb3/wGl19+Ofr27YvBgwfjscceQ2trKy644ALU1NRgt912w1tvvSWtt2DBAkyYMAG9evXC4MGDcc4552DLli3O/LfffhtHHHEE+vTpg/79++NHP/oRli9f7syPRCK49NJLMWTIEFRVVWH48OGYMmVK0Y6bdH46XRJIurKEw4YNc40C4sXw4cPx5ptvplzm6KOPxldffZVV+wgh+fHmgg3427SlAICVd5xY4taQroRpmmiP6iXZd3WFP+ds5H/961+45pprMHv2bDz//PO45JJL8PLLL+O0007DDTfcgHvvvRfnnHMOVq9ejR49eqChoQE/+MEPcOGFF+Lee+9Fe3s7rr32Wvz0pz/F+++/DwBobW3FlVdeib333hstLS2YPHkyTjvtNMydOxc+nw/33XcfXn31VbzwwgvYaaedsGbNGqxZs6aQp4R0cTqdACSEdG/qG0OlbgLporRHdYyZ/E5J9r3o1vHoEcyty9xnn31w4403ArCqSdxxxx0YMGAALrroIgDA5MmT8dBDD2HevHk49NBDcf/992O//fZzRq4CgMcffxzDhg3Dt99+i9133x1nnHGGtI/HH38cAwcOxKJFi7DXXnth9erVGDlyJI444ghomobhw4fneOSku9LpXMCEkO5NZYCPHVJe2PHpgBWi1L9/f4wdO9aZZtektRMXv/76a2cce/tv1KhRAOC4eZcuXYqzzjoLu+yyC2pra7HzzjsDAFavXg3ASkSZO3cu9thjD1x22WV49913O/w4SdeCFkBCSFGprPA7n8MxHZUBf4qlCUlQXeHHoltLE6ddXZH7dVpRUSF91zRNmma7lg3DAGCNf3zSSSfhzjvvdG3LrnZx0kknYfjw4XjssccwdOhQGIaBvfbaC5FIBACw//77Y8WKFXjrrbfw3nvv4ac//SmOPfZY/Oc//8n5OEj3ggKQEFJUfEIcVSRmUACSjNE0LWc3bFdi//33x3//+1/svPPOCATcx7t161YsWbIEjz32GI488kgAcA2YAAC1tbX42c9+hp/97Gf48Y9/jOOPPx7btm1zDa1KyhP6YgghRUWPWzkAIHXKFyHlyaRJk7Bt2zacddZZ+Pzzz7F8+XK88847uOCCC6DrOvr27Yv+/fvj0UcfxbJly/D+++9Lo1QBwF/+8hc8++yzWLx4Mb799lu8+OKLqKurQ58+fUpzUKTTQQFICCkqUT0h+0wjxYKElClDhw7FJ598Al3Xcdxxx2Hs2LG4/PLL0adPH/h8Pvh8Pjz33HOYM2cO9tprL1xxxRX485//LG2jpqYGd911Fw488EAcdNBBWLlyJd58802Oj0scNDNd3RWSlKamJvTu3RuNjY0cFo6QDPnXpyvxh1cXAgDmTv4h+vQIlrhFpLMSCoWwYsUKjBgxAlVVVaVuDulipLp+2H/TAkgIKTIxI/HOafD1kxBCSgIFICGkqBiSAKQCJISQUkABSAgpKqaQ+kH9RwghpYECkBBSVETRxxBkQggpDRSAhJCiIsb9Uf4RQkhpoAAkhBQV0QXMGEBCCCkNFICEkKIiaj5mARNCSGmgACSEFBUx7o8xgIQQUhooAAkhRUVOAildOwghpJyhACSEFBVR81EAEpKem2++Gfvuu29e24hEIthtt93w6aefFqZRJea6667Db37zm1I3o0tDAUgIKSpi4geTQEh35Pzzz8epp55a6mZIPPzwwxgxYgQOO+wwafoHH3yAE044Af3790ePHj0wZswYXHXVVVi3bl2HtWXlypXQNM3569+/P4477jh89dVXGW/jd7/7Hf71r3/hu+++67B2dncoAAkhRcVkGRhCioppmrj//vsxceJEafojjzyCY489FnV1dfjvf/+LRYsW4eGHH0ZjYyPuuecez23pug7DMArSrvfeew8bNmzAO++8g5aWFkyYMAENDQ0ZrTtgwACMHz8eDz30UEHaUo5QABJCiopJCyApMwzDwF133YXddtsNlZWV2GmnnfDHP/7RmX/ttddi9913R48ePbDLLrvgpptuQjQaTbnNxx9/HHvuuScqKysxZMgQXHrppUmXnTNnDpYvX44TTzzRmbZ27VpcdtlluOyyy/D444/j6KOPxs4774yjjjoK//jHPzB58mQAwJNPPok+ffrg1VdfxZgxY1BZWYmPP/4YFRUVqK+vl/Zz+eWX48gjjwQArFq1CieddBL69u2Lnj17Ys8998Sbb74pLd+/f3/U1dXhwAMPxN13342NGzdi1qxZuPXWW7HXXnu5jmPffffFTTfd5Hw/6aST8Nxzz6U8TyQ5gVI3gBBSXsgxgBSAJAtME4i2lWbfFT0ATctp1euvvx6PPfYY7r33XhxxxBHYsGEDFi9e7MyvqanBk08+iaFDh2L+/Pm46KKLUFNTg2uuucZzew899BCuvPJK3HHHHZgwYQIaGxvxySefJN3/Rx99hN133x01NTXOtBdffBGRSCTpPvr06eN8bmtrw5133ol//OMf6N+/P4YNG4ZddtkF//d//4err74aABCNRvH000/jrrvuAgBMmjQJkUgEM2bMQM+ePbFo0SL06tUraRurq6sBWLGKv/zlL3HLLbfg888/x0EHHQQA+OqrrzBv3jy89NJLzjoHH3ww1q5di5UrV2LnnXdOum3iDQUgIaSoMAuY5Ey0DfjT0NLs+4b1QLBn1qs1Nzfjb3/7G+6//36cd955AIBdd90VRxxxhLPMjTfe6Hzeeeed8bvf/Q7PPfdcUnF2++2346qrrsJvf/tbZ5otlLxYtWoVhg6Vz9vSpUtRW1uLIUOGpD2GaDSKBx98EPvss48zbeLEiXjiiSccAfjaa68hFArhpz/9KQBg9erVOOOMMzB27FgAwC677JJ0+w0NDbjtttvQq1cvHHzwwRg8eDDGjx+PJ554wjmuJ554At/73vek7djHtGrVKgrAHKALmBBSVOQkkBI2hJAi8M033yAcDuOYY45Juszzzz+Pww8/HHV1dejVqxduvPFGrF692nPZTZs2Yf369Sm3p9Le3o6qqippmmma0DK0aAaDQey9997StPPPPx/Lli3DZ599BsByFf/0pz9Fz56WSL7ssstw++234/DDD8cf/vAHzJs3z7Xdww47DL169ULfvn3x9ddf4/nnn8fgwYMBABdddBGeffZZhEIhRCIRPPPMM/jlL38prW9bDdvaSmQV7uLQAkgIKSqSC5hpICQbKnpYlrhS7TsHbJGSjJkzZ+Lss8/GLbfcgvHjx6N379547rnnkiZhpNueFwMGDMD8+fOlabvvvjsaGxuxYcOGtFbA6upql1gcNGgQTjrpJDzxxBMYMWIE3nrrLXz44YfO/AsvvBDjx4/HG2+8gXfffRdTpkzBPffcI5Vuef755zFmzBj0799fcjkDVnxfZWUlXn75ZQSDQUSjUfz4xz+Wltm2bRsAYODAgZmeCiJACyAhpKhIQ8EVJpmQlAuaZrlhS/GXY/zfyJEjUV1djWnTpnnO//TTTzF8+HD8/ve/x4EHHoiRI0di1apVSbdXU1ODnXfeOen2vNhvv/2wePFiKeb2xz/+MYLBoBOzp5JJNu6FF16I559/Ho8++ih23XVXHH744dL8YcOG4eKLL8ZLL72Eq666Co899phr/q677uoSfwAQCARw3nnn4YknnsATTzyBM8880yV+FyxYgIqKCuy5555p20rc0AJICCkqzAIm5URVVRWuvfZaXHPNNQgGgzj88MOxefNmLFy4EBMnTsTIkSOxevVqPPfcczjooIPwxhtv4OWXX065zZtvvhkXX3wxBg0ahAkTJqC5uRmffPJJ0sLI3//+99HS0oKFCxc62bXDhg3Dvffei0svvRRNTU0499xzsfPOO2Pt2rX497//jV69eiW1QtqMHz8etbW1uP3223HrrbdK8y6//HJMmDABu+++O7Zv344PPvgAo0ePzuLMWQLTXscryeWjjz7CkUcemZNVlNACSAgpMpR8pNy46aabcNVVV2Hy5MkYPXo0fvazn2HTpk0AgJNPPhlXXHEFLr30Uuy777749NNPpVInXpx33nn461//igcffBB77rknfvSjH2Hp0qVJl+/fvz9OO+00PP3009L0X//613j33Xexbt06nHbaaRg1ahQuvPBC1NbW4ne/+13a4/L5fDj//POh6zrOPfdcaZ6u65g0aRJGjx6N448/HrvvvjsefPDBtNsUGTlyJA477DCMGjUKhxxyiGv+c889h4suuiirbZIEmsk6DDnT1NSE3r17o7GxEbW1taVuDiFdgttfX4R/fLwCAPDqpYdj7x37lLZBpNMSCoWwYsUKjBgxwpXEQLJj3rx5+OEPf4jly5enLMeSLRMnTsTmzZvx6quvFmybNqZpYuTIkfj1r3+NK6+8Upr31ltv4aqrrsK8efMQCHg7M1NdP+y/6QImhBQZjgVMSPHZe++9ceedd2LFihVOaZZ8aGxsxPz58/HMM890iPjb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+GNz5MiR5llnnVWqQyoJqc5jJBIxTz75ZHPHHXc0586dK/U74XDY2QbPY/5QAJKUAPD8e+KJJ5xl2tvbzV//+tdm3759zR49epinnXaauWHDhtI1ugugCkCew8x57bXXzL322susrKw0R40aZT766KPSfMMwzJtuuskcPHiwWVlZaR5zzDHmkiVLStTazklTU5P529/+1txpp53Mqqoqc5dddjF///vfSx0sz6ObDz74wPN5eN5555mmmdk527p1q3nWWWeZvXr1Mmtra80LLrjAbG5uLsHRlI5U53HFihVJ+50PPvjA2QbPY/5opimUfieEEEIIId0exgASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImUEBSAghhBBSZlAAEkIIIYSUGRSAhBBCCCFlBgUgIYQQQkiZQQFICCGEEFJmUAASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImUEBSAghhBBSZlAAEkIIIYSUGRSAhBBCCCFlBgUgIYQQQkiZQQFICCGEEFJmUAASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImfH/ATdEZC/tZ8H3AAAAAElFTkSuQmCC", + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Define parameters to optimize" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "job.pattern.scale.fixed = False\n", + "job.pattern.zero_shift.fixed = False\n", + "job.parameters.resolution_u.fixed = False\n", + "job.parameters.resolution_v.fixed = False\n", + "job.parameters.resolution_w.fixed = False\n", + "job.backgrounds[0][0].y.fixed = False\n", + "job.backgrounds[0][1].y.fixed = False" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "print(job.pattern.scale)\n", + "print(job.pattern.zero_shift)\n", + "print(job.parameters.resolution_u)\n", + "print(job.parameters.resolution_v)\n", + "print(job.parameters.resolution_w)\n", + "print(job.backgrounds[0][0])\n", + "print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Initalize the fitting engine and perform the fit" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available minimizers: ['lmfit', 'bumps']\n", + "Current minimizer: lmfit\n", + "Available methods of current minimizers: ['leastsq', 'least_squares', 'differential_evolution', 'basinhopping', 'ampgo', 'nelder', 'lbfgsb', 'powell', 'cg', 'newton', 'cobyla', 'bfgs']\n" + ] + } + ], + "source": [ + "fitter = Fitter(job, calculator.fit_func)\n", + "\n", + "print(f\"Available minimizers: {fitter.available_engines}\")\n", + "print(f\"Current minimizer: {fitter.current_engine.name}\")\n", + "print(f\"Available methods of current minimizers: {fitter.available_methods()}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The fit has been successful: True\n", + "The gooodness of fit (chi2) is: 31.615632345412976\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares')\n", + "\n", + "print(\"The fit has been successful: {}\".format(result.success))\n", + "if result.success: \n", + " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", + " print(job.pattern.scale)\n", + " print(job.pattern.zero_shift)\n", + " print(job.parameters.resolution_u)\n", + " print(job.parameters.resolution_v)\n", + " print(job.parameters.resolution_w)\n", + " print(job.backgrounds[0][0])\n", + " print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b2bf93efafa14581acd8e1ed59a5e66c", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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961evRpXXHEFrrjiCjz22GM48sgjMXToUBx++OF49NFHcfPNNwMAHn/8cdTV1eHll1/GnnvuiXA4jA8++ADBYBDr1693vc6VV16Jww47DACwYsUKnHjiiejTpw8qKyux11574fXXX3ctX19fj4aGBhxwwAH44x//iA0bNuCTTz7BrbfeipEjR/r2Y99998VvfvMbfvvEE0/EM888k/F96q1QFTBBEETpCZR6A8oK0wTUjuK/brACkKROPfWGG27AI488gvvuuw+HHnoo1q1bh6+//po/Xl1djccffxyNjY2YP38+Lr30UlRXV+O6665Lub4HH3wQV199Nf7whz9gwoQJaG5uxocffpj29WfOnIkRI0agurqa3/ef//wHyWQy7WvU1dXxvzs6OnDnnXfi0UcfRX19PQYPHozhw4fjX//6F375y18CAFRVxZNPPom77roLADBp0iQkk0m8//77qKysxKJFi1BVVZV2G6PRKAArV/Giiy7C7373O3z22Wc48MADAQBffvkl5s2bhxdeeIE/53vf+x5Wr16N5cuXY+jQoWnX3RuhKmCCIIjSQwKwmKgdwO8bi/+6N64FQpV5P621tRV//vOf8be//Q0XXHABAGDnnXfGoYceype56aab+N9Dhw7Ftddei2eeeSatOLv99ttxzTXX4Be/+AW/jwmlVKxYsQKNje73bMmSJaipqcGgQYOy7oOqqnjggQewzz778PsuvvhiTJkyhQvAV155BfF4HGeccQYAYOXKlTj11FMxatQoAMDw4cPTrr+pqQm33XYbqqqq8L3vfQ8DBw7E+PHjMWXKFL5fU6ZMwRFHHOFaD9unFStWlJ0ANEGj4AiCIEoNhYCJtHz11VdIJBI4+uij0y7z7LPPYuzYsWhoaEBVVRVuuukmrFy5MuWyGzduxNq1azOuz0ssFkMkEnHdZ5ompBwdzVAohL333tt138SJE/Htt9/i448/BmCFis844wxUVloi+YorrsDtt9+OsWPH4re//S3mzZvnW+8hhxyCqqoq9OnTB3PnzsWzzz6LgQMHAgAuvfRSPP3004jH40gmk3jqqadw0UUXuZ7PXMOOjhI4wiWGQsAEQRClhxzAYhKssNy4UrxuJ2AiJR2zZs3Cueeei9/97ncYP348amtr8cwzz6Qtwsi2vlT069cP8+fPd903YsQINDc3Y926dVldwGg06hOLAwYMwIknnogpU6Zg2LBheOONN/Duu+/yxy+55BKMHz8er732Gt566y3ccccduOeee1ytW5599lnsueeeqK+vd4WcASu/LxwO48UXX0QoFIKqqjjttNNcy2zduhUA0L9//1zfil6DYZADSBAEUWrIASwmkmSFYov9r5P5f7vuuiui0ShmzJiR8vGPPvoIQ4YMwa9//WsccMAB2HXXXbFixYq066uursbQoUPTri8Vo0ePxtdff+1qF3LaaachFArxnD0vuVTjXnLJJXj22Wfx8MMPY+edd8bYsWNdjw8ePBiXXXYZXnjhBVxzzTV45JFHfI/vvPPOPvEHAIFAABdccAGmTJmCKVOm4KyzzvKJ3wULFiAYDGKvvfbKuq29DXcfwJJtBkEQRFlDDiCRlkgkguuvvx7XXXcdQqEQxo4di02bNmHhwoW4+OKLseuuu2LlypV45plncOCBB+K1117Diy++mHGdt9xyCy677DIMGDAAEyZMQGtrKz788MO0jZG///3vo62tDQsXLuTVtYMHD8Z9992HyZMno6WlBeeffz6GDh2K1atX45///CeqqqrSupCM8ePHo6amBrfffjtuvfVW12NXXnklJkyYgBEjRmDbtm145513sMcee+TxzlkCkz0nVZHLzJkzcdhhh3XKFd3ecbeBIQVIEARRCsgBJDLym9/8Btdccw1uvvlm7LHHHjjzzDOxceNGAMAPf/hDXHXVVZg8eTL23XdffPTRR65WJ6m44IIL8Kc//QkPPPAA9tprL5xwwglYsmRJ2uXr6+tx8skn48knn3Td//Of/xxvvfUW1qxZg5NPPhm77747LrnkEtTU1ODaa6/Nul+yLGPixInQdR3nn3++6zFd1zFp0iTsscceOPbYYzFixAg88MADWdcpsuuuu+KQQw7B7rvvjoMOOsj3+DPPPINLL700r3X2FigHkCAIovRIJrXi7zQtLS2ora1Fc3MzampqXI/F43EsW7YMw4YN8xUxEPkxb948/OAHP8DSpUsztmPJl4svvhibNm3Cyy+/3GXrZJimiV133RU///nPcfXVV7see+ONN3DNNddg3rx5CAR6nwmf7dj/7f8W4IlZVqrAfy8bgwOG9i32JhIEUeZkOn+XC73v7EP0Ovbee2/ceeedWLZsGW/NUgjNzc2YP38+nnrqqW4Rf5s2bcIzzzyD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", + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, meas_y-calc_y_cryspy, label='Imeas-Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Change calculator engine to CrysFML" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current calculator engine: CrysFML\n", + "Current minimizer: lmfit\n" + ] + } + ], + "source": [ + "job.interface.switch('CrysFML', fitter=fitter)\n", + "\n", + "print(f\"Current calculator engine: {job.interface.current_interface_name}\")\n", + "print(f\"Current minimizer: {fitter.current_engine.name}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show results of both CrysPy and CrysFML calculations (before fitting)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0015 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0002 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0043 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0027 s\n", + "+ calculate D: 0.0020 s\n", + "+ calculate E: 0.0056 s\n", + "+ calculate F: 0.0000 s\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "4f97b7801f3e40fd9b28ea621bf26567", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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2GWXXfCrX/0K8Xg84zrvv/9+7LnnnggEAhg5ciRmzpyZdtlFixZh+fLlmDZtmnhu7dq1uOSSS3DJJZfg/vvvx9FHH42xY8fiqKOOwn333Ydrr70WADBnzhw0NzfjiSeewKRJkxAIBPDGG2/A5/Ohra3N8TmXXnopjjzySADAqlWrcPLJJ2PIkCGoq6vDnnvuiWeeecaxfEtLC1pbW3HQQQfhT3/6EzZu3Ii3334b119/Pfbaa6+U/dhvv/3wq1/9Sjw++eSTMXfu3Izf02CFHECCcNIT78G/Pv8XtvZtrfSmEDWEXukNqCkYA+K95f9cXxhQlILeOmvWLNx777249dZbccQRR2DDhg347LPPxOsNDQ2YM2cORo0ahSVLluDCCy9EQ0MDrrrqKs/13X333bj88svx+9//HlOnTkVHRwfefPPNtJ//+uuvY8KECWhoaBDPPfroo4jFYmk/o7m5Wfzd29uLP/zhD7jvvvvQ0tKC0aNHY5dddsH//M//4MorrwQAxONxPPjgg7j55psBADNmzEAsFsNrr72Guro6fPLJJ6ivr0+7jaFQCICZq3j++efjN7/5Dd59910cfPDBAIAPPvgAH330ER577DHxnq997WtYu3YtVq5cibFjx6Zd92BErgKW8wEJolb53du/wxPLn8BDnz2Ex771WPY3EEQJIAFYTuK9wO9Glf9z/2s94K/L+21dXV24/fbbcccdd+Dcc88FAOy666444ogjxDLXXHON+Hvs2LH4xS9+gblz56YVZzfeeCOuuOIK/PznPxfPcaHkxapVqzBqlPM7++KLL9DY2IiRI0dm3Yd4PI677roL++67r3hu+vTpmD17thCATz75JCKRCE477TQAwOrVq3Hqqadi7733BgDssssuadff3t6OG264AfX19fja176GESNGYMqUKZg9e7bYr9mzZ+PrX/+6Yz18n1atWlVzAtCA7frJYpAgapUXV78IAPhi+xcV3hKilqAQMJGWTz/9FNFoFMcdd1zaZR5++GEcfvjhaG1tRX19Pa655hqsXr3ac9lNmzZh/fr1Gdfnpq+vD8Fg0PEcYwxKjo6m3+/HPvvs43juvPPOw5dffom33noLgBkqPu2001BXZ4rkSy65BDfeeCMOP/xw/PrXv8ZHH32Ust7DDjsM9fX1GDJkCD788EM8/PDDGDFiBADgwgsvxD//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O5bfuHEjWltbAQCtra0pVcH8cbZlGhsbM87NGggERHUy/0dk5rrrrsN+++1X1DpisRjGjx+PBQsWlGajBhD33HNPSl7sQIccQIIgiMpTlQLQjWEYiEajOPDAA+Hz+fDiiy+K15YtW4bVq1dj8uTJAIDJkydjyZIlYr5aAJg/fz4aGxsxadIksYy8Dr4MX0ctc9555+E73/lOpTfDAS/aOeywwxzPv/zyy/jmN7+JlpYWhMNhTJo0CVdccQXWrVvXb9uycuVKKIqS8u+ss85yvK5pWsp2bNiwAbquQ1EUrFy50rH84sWLPT/v/PPPx/vvv4/XX3+93/aJIAiCqD2qTgDOmjULr732GlauXIklS5Zg1qxZeOWVV3DmmWeiqakJ06dPx+WXX46XX34ZixYtwo9+9CNMnjwZhx56KADghBNOwKRJk3D22Wfjww8/xPPPP49rrrkGM2bMQCAQAABcdNFF+Oqrr3DVVVfhs88+w1133YVHHnkEl112WSV3nfCAMYY77rgD06dPdzz/17/+FccffzxaW1vx73//G5988gnuuecedHR0iOpuN8lkEoZRGsfphRdewIYNG8S/O++80/H6jjvuiH/84x+O5x544AHsuOOOeX2O3+/HGWecgb/85S9Fb3O1QA4gQRBE5ak6Abhp0yacc8452H333XHcccfh3XffxfPPPy+m7Lr11ltx0kkn4dRTT8VRRx2F1tZWPPbYY+L9mqbhqaeegqZpmDx5Ms466yycc845uP7668Uy48aNw9NPP4358+dj3333xS233IL77ruPWsB4YBgGbr75ZowfPx6BQAA777wzfvvb34rXr776akyYMAHhcBi77LILfvWrXyEej2dc5/33348999wTgUAAI0eOxMyZM9Muu2jRIixfvhzTpk0Tz61duxaXXHIJLrnkEtx///04+uijMXbsWBx11FG47777RM/HOXPmoLm5GU888QQmTZqEQCCAN954Az6fTxQEcS699FIceeSRAIBVq1bh5JNPxpAhQ1BXV4c999wTzzzzjGP5lpYWtLa2in9NTU2O188991zMnj3b8dzs2bNx7rnnZvxuvDj55JPxxBNPZCxQGkhQDiBBEETlqbo+gH//+98zvh4MBnHnnXemOC4yY8aMSRmw3Rx99NH44IMPCtrGQmGMoS9R/kE8pIegKEpB7501axbuvfde3HrrrTjiiCOwYcMGfPbZZ+L1hoYGzJkzB6NGjcKSJUtw4YUXoqGhAVdddZXn+u6++25cfvnl+P3vf4+pU6eio6MDb775ZtrPf/311zFhwgQ0NDSI5x599FHEYrG0nyFXiff29uIPf/gD7rvvPrS0tGD06NHYZZdd8D//8z+48sorAQDxeBwPPvggbr75ZgDAjBkzEIvF8Nprr6Gurg6ffPIJ6uvrc/7OAOBb3/oW7rnnHrzxxhs44ogj8MYbb2D79u04+eSTccMNN+S1roMOOgiJRAJvv/02jj766LzeW43QVHAEQRCVp+oE4GCmL9GHQx46pOyf+/YZbyPsC+f9vq6uLtx+++244447hHO166674ogjjhDLXHPNNeLvsWPH4he/+AXmzp2bVpzdeOONuOKKK/Dzn/9cPHfwwQen3YZVq1Zh1KhRjue++OILNDY2YuTIkVn3IR6P46677sK+++4rnps+fTpmz54tBOCTTz6JSCSC0047DYA5leCpp56KvffeGwCwyy67pKz3sMMOg6raBvrrr7+O/fffXzz2+Xw466yzcP/99+OII47A/fffj7POOgs+ny/rNrsJh8NoamrCqlWr8n5vNUIOIEEQROWpuhAwUT18+umniEajOO6449Iu8/DDD+Pwww9Ha2sr6uvrcc0112D16tWey27atAnr16/PuD43fX19CAaDjucYYzk7mn6/H/vss4/jufPOOw9ffvkl3nrrLQBmqPi0005DXV0dAOCSSy7BjTfeiMMPPxy//vWv8dFHH6Ws9+GHH8bixYvFP15gJHP++efj0UcfRVtbGx599FGcf/75OW2zF6FQCL29vQW/v5pwzARCOYAEQRAVgRzAMhLSQ3j7jLcr8rkFvS9DSxzAnFHlzDPPxG9+8xtMmTIFTU1NmDt3btoijGzr82LYsGFYsmSJ47kJEyago6MDGzZsyOoChkKp4e/hw4fj5JNPxuzZszFu3Dg8++yzeOWVV8TrF1xwAaZMmYKnn34a8+bNw0033YRbbrkFP/vZz8Qyo0ePxvjx4zN+9t5774099tgDP/zhDzFx4kTstddeaat9s7Ft2zbssMMOBb232pBFHzmABEEQlYEcwDKiKArCvnDZ/xWa/7fbbrshFAqltMzhLFiwAGPGjMH/+3//DwcddBB22223jGHKhoYGjB07Nu36vNh///3x2Wef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", + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "calc_y_crysfml = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Perform the fit with CrysFML" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The fit has been successful: True\n", + "The gooodness of fit (chi2) is: 31.615632341033855\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares', minimizer_kwargs={'diff_step': 5e-5})\n", + "\n", + "print(\"The fit has been successful: {}\".format(result.success))\n", + "if result.success: \n", + " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", + " print(job.pattern.scale)\n", + " print(job.pattern.zero_shift)\n", + " print(job.parameters.resolution_u)\n", + " print(job.parameters.resolution_v)\n", + " print(job.parameters.resolution_w)\n", + " print(job.backgrounds[0][0])\n", + " print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show results of both CrysPy and CrysFML calculations (after fitting)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0013 s\n", + "+ calculate B: 0.0017 s\n", + "+ calculate C: 0.0002 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0002 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0055 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0002 s\n", + "+ calculate D: 0.0009 s\n", + "+ calculate E: 0.0045 s\n", + "+ calculate F: 0.0001 s\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "82a2c4a889bb4b788c1c7d6de90cb8d9", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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xYsBAOPHjwcAzJgxA0uXLsWmTZvENvPnz0dzczN22203sc2zzz7r2c/8+fMxY8aMMr2SocsZZ5yBr371q9U+DIIgCIIgBohBJwDnzJmDv/71r7jvvvvQ1NSE9vZ2tLe3o7+/HwCwYsUK/PznP8eiRYuwatUqPPzwwzjttNNw2GGHYa+99gIAHH300dhtt93w7W9/G2+//TaeeuopXHrppZgzZw5isRgA4JxzzsHHH3+Miy66CMuXL8fNN9+Mv//97zj//POr9toJgiAIgiAqwaATgLfccgs6Oztx+OGHY/z48eLfvHnzAADRaBTPPPMMjj76aEyfPh0XXnghTjzxRDzyyCNiH5qm4dFHH4WmaZgxYwa+9a1v4bTTTvP0DZwyZQoee+wxzJ8/H3vvvTeuv/563HHHHWXrAThcOPzww/GDH/wA5513HkaMGIFx48bh9ttvR29vL77zne+gqakJO++8M5544gnP49555x3MmjULjY2NGDduHL797W/j008/Ffc/+eSTOOSQQ9Da2opRo0bhS1/6ElasWCHuT6VSmDt3LsaPH494PI5JkybhmmuuqdjrJgYOy2K4Yf4HePnDzdU+FIIgiJpl0BWB5GtLOHHixMAUkExMmjQJjz/+eM5tDj/8cLz11lsFHV8pMMbQn678RJC6iFZSD8I///nPuOiii/DGG29g3rx5+N73voeHHnoIJ5xwAn7yk5/ghhtuwLe//W2sWbMG9fX16OjowBFHHIGzzjoLN9xwA/r7+3HxxRfjpJNOwnPPPQcA6O3txQUXXIC99toLPT09uPzyy3HCCSdg8eLFUFUVv//97/Hwww/j73//O3bYYQesXbsWa9euLddbQlSRx9/ZgN89+yEAYNUvj6vy0RAEQdQmg04ADmf60yZ2u/ypij/vu1fNRH20+D/13nvvjUsvvRSAXQn9y1/+EqNHj8bZZ58NALj88stxyy23YMmSJfjc5z6HG2+8Efvuu6+YugIAd955JyZOnIgPPvgA06ZNw4knnuh5jjvvvBNjxozBu+++iz322ANr1qzB1KlTccghh0BRFEyaNKno4ycGF+2diWofAkEQRM0z6ELAxOCD51YCdnh91KhR2HPPPcVtvJ8iL7p5++23xQxm/m/69OkAIMK8H374Ib75zW9ixx13RHNzMyZPngzAnuEM2IUoixcvxi677IJzzz0X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+23MmzcP48aNAwCcffbZ+Nvf/oZEIoFUKoX77rsPZ555pufx3DXs66uCI1xlvEUgVTwQgiCIGoYcwEoSqbfduGo8bxFwkZKNhQsX4tRTT8WVV16JmTNnoqWlBffff3/WIox8+8vE6NGjsXTpUs9t06ZNQ2dnJzZs2JDXBayrqwuIxbFjx+L444/HXXfdhSlTpuCJJ57ACy+8IO4/66yzMHPmTDz22GN4+umncc011+D666/3tG6ZN28edtttN4waNcoTcgbs/L5YLIaHHnoI0WgU6XQaX//61z3bbN26FQAwZsyYsG/FsMETAqYyEIIgiKpADmAlURQ7FFvpf0Xm/02dOhV1dXV49tlnM96/YMECTJo0CT/96U+x//77Y+rUqVi9enXW/TU1NWHy5MlZ95eJfffdF8uXL/fkin39619HNBoVOXt+wlTjnnXWWZg3bx5uu+027LTTTjj44IM990+cOBHnnHMOHnzwQVx44YW4/fbbA/fvtNNOAfEHALqu4/TTT8ddd92Fu+66CyeffHJA/L7zzjuIRCLYfffd8x7rcMMzCq48RdkEQRBEgZADSGQlHo/j4osvxkUXXYRoNIqDDz4YmzdvxrJlyzB79mxMnToVa9aswf33348DDjgAjz32GB566KGc+7ziiitwzjnnYOzYsZg1axa6u7vx6quvZm2M/IUvfAE9PT1YtmyZqK6dOHEibrjhBsydOxddXV047bTTMHnyZKxbtw733HMPGhsbs7qQnJkzZ6K5uRlXX301rrrqKs995513HmbNmoVp06Zh27ZteP7557HrrrsW8M7ZApM/JlORy8svv4xDDz20KFd0qENVwARBENWHHEAiJ5dddhkuvPBCXH755dh1113xjW98A5s2bQIAfPnLX8b555+PuXPnYp999sGCBQs8rU4ycfrpp+O3v/0tbr75Zuy+++740pe+hA8//DDr9qNGjcIJJ5yAe++913P797//fTz99NP45JNPcMIJJ2D69Ok466yz0NzcjB/96Ed5X5eqqjjjjDNgmiZOO+00z32maWLOnDnYddddccwxx2DatGm4+eab8+5TZurUqTjooIMwffp0HHjggYH777//fpx99tkF7XO4QJKPIAii+iiM+jAUTVdXF1paWtDZ2Ynm5mbPfYlEAitXrsSUKVMCRQxEYSxZsgRf/OIXsWLFipztWApl9uzZ2Lx5Mx5++OGy7ZPDGMPUqVPx/e9/HxdccIHnvieeeAIXXnghlixZAl0vjwk/lM63qx99F3e8shIA8PDcg7HX9q3VPSCCIGqOXOt3rUAhYGLQs9dee+Haa6/FypUrRWuWUujs7MTSpUtx3333DYj427x5M+6//360t7fjO9/5TuD+3t5e3HXXXWUTf0MNmgVMEARRfWpzBSKGHGeccUbZ9vWVr3wFb7zxBs455xx88YtfLNt+OWPHjsXo0aNx2223YcSIEYH7/RXBtYanCIQUIEEQRFUgAUjUHHLLl4GAsipyQ30ACYIgqg8VgRAEUUVIARIEQVQDEoAEQVQURg4gQRBE1SEBSBBERbFoFjBBEETVIQFIEERFkce/UREIQRBEdSABSBBERbEY8FnlPbRhCzmABEEQVYKqgAmCqCjb9y7D/8V+DgBYwI6t8tEQBEHUJuQAEgPKFVdcgX322aekfaRSKey8885YsGBBeQ5qCHHrrbfi+OOPr/ZhlJXt+94TP1MRCEEQRHUgAUh4OOOMM/DVr3612ofh4dZbb8WUKVNw0EEHeW5//vnnceyxx2LUqFGor6/HbrvthgsvvBCffPLJgB3LqlWroChK4N+3vvUtz/2apgWOY8OGDdB1HYqiYNWqVZ7tFy9enPH5zjzzTPz3v//Fyy+/PGCvqdL0qC3uL2ayegdCEARRw5AAJAY1jDHceOONmD17tuf2P/7xjzjqqKPQ1taGf/7zn3j33Xdx6623orOzE9dff33GfZmmCcuyynJczzzzDDZs2CD+3XTTTZ77t9tuO9xzzz2e2/785z9ju+22K+h5otEoTjnlFPz+978v+ZgHC2k14v5ikAAkCIKoBiQAiZxYloXrrrsOO++8M2KxGHbYYQf84he/EPdffPHFmDZtGurr67HjjjvisssuQzqdzrnPO++8E7vvvjtisRjGjx+PuXPnZt120aJFWLFiBY477jhx27p163Duuefi3HPPxZ133onDDz8ckydPxmGHHYY77rgDl19+OQDg7rvvRmtrKx5++GHstttuiMVieOWVVxCJRNDe3u55nvPOOw+HHnooAGD16tU4/vjjMWLECDQ0NGD33XfH448/7tl+1KhRaGtrE/9aWlo8959++um46667PLfdddddOP3003O+N5k4/vjj8fDDD6O/v7/gxw5KPLPgjOodB0EQ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NTVVLVu2TO3atUvdcccdqqioSLW2tvZhy/uX2bNnq/z8fLVixQpVXl6u3n33XZWZmakee+yx0DFSx448Ho/avn272r59uwLUSy+9pLZv3x46O7UnNbvppptUcXGxKi0tVRs2bFDDhg1TM2fO7Kun1Ce6q6PP51O33367KigoUDt27Ih43Wlraws9htTx4kkAFN0COr397ne/Cx3T2tqqHnzwQZWWlqbi4+PVnXfeqaqrq/uu0ZeBcwOg1LDnli9frkaPHq1cLpcaMWKEev311yP2W5alnnzySZWdna1cLpeaPn26OnjwYB+1tn9yu91q7ty5qrCwUMXGxqrBgwerJ554IuIFVurY0dq1azv9ezh79mylVM9qdubMGTVz5kyVmJiokpOT1X333ac8Hk8fPJu+010dy8vLu3zdWbt2begxpI4XT1MqbOl3IYQQQgjxqSdzAIUQQgghoowEQCGEEEKIKCMBUAghhBAiykgAFEIIIYSIMhIAhRBCCCGijARAIYQQQogoIwFQCCGEECLKSAAUQgghhIgyEgCFEEIIIaKMBEAhhBBCiCgjAVAIIYQQIspIABRCCCGEiDISAIUQQgghoowEQCGEEEKIKCMBUAghhBAiykgAFEIIIYSIMhIAhRBCCCGijARAIYQQQogoIwFQCCGEECLKSAAUQgghhIgyEgCFEEIIIaKMBEAhhBBCiCgjAVAIIYQQIspIABRCCCGEiDISAIUQQgghoowEQCGEEEKIKCMBUAghhBAiykgAFEIIIYSIMhIAhRBCCCGijARAIYQQQogoIwFQCCGEECLK/H9zzbmrqv8Y+QAAAABJRU5ErkJggg==", + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "calc_y_crysfml = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "PyCharm (easyDiffractionLib)", + "language": "python", + "name": "pycharm-a1ae86a1" + }, + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Notebooks/PbSO4/PbSO4.cif b/Notebooks/PbSO4/PbSO4.cif new file mode 100644 index 00000000..fe04369d --- /dev/null +++ b/Notebooks/PbSO4/PbSO4.cif @@ -0,0 +1,25 @@ +data_PbSO4 + +_space_group_name_H-M_alt 'P n m a' + +_cell_length_a 8.480 +_cell_length_b 5.398 +_cell_length_c 6.958 +_cell_angle_alpha 90.0 +_cell_angle_beta 90.0 +_cell_angle_gamma 90.0 + +loop_ + _atom_site_label + _atom_site_type_symbol + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + _atom_site_adp_type + _atom_site_U_iso_or_equiv + Pb Pb 0.188 0.25 0.167 1.0 Uiso 0.01 + S S 0.063 0.25 0.686 1.0 Uiso 0.01 + O1 O -0.095 0.25 0.600 1.0 Uiso 0.01 + O2 O 0.181 0.25 0.543 1.0 Uiso 0.01 + O3 O 0.085 0.026 0.806 1.0 Uiso 0.01 diff --git a/Notebooks/PbSO4/PbSO4_neutrons_short.xye b/Notebooks/PbSO4/PbSO4_neutrons_short.xye new file mode 100644 index 00000000..6ff09d36 --- /dev/null +++ b/Notebooks/PbSO4/PbSO4_neutrons_short.xye @@ -0,0 +1,2202 @@ +# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992) + 10.0000 220.0000 14.8324 + 10.0500 214.0000 14.6287 + 10.1000 219.0000 14.7986 + 10.1500 224.0000 14.9666 + 10.2000 198.0000 14.0712 + 10.2500 229.0000 15.1327 + 10.3000 224.0000 14.9666 + 10.3500 216.0000 14.6969 + 10.4000 202.0000 14.2127 + 10.4500 229.0000 15.1327 + 10.5000 202.0000 14.2127 + 10.5500 215.0000 14.6629 + 10.6000 215.0000 14.6629 + 10.6500 196.0000 14.0000 + 10.7000 235.0000 15.3297 + 10.7500 207.0000 14.3875 + 10.8000 205.0000 14.3178 + 10.8500 238.0000 15.4272 + 10.9000 202.0000 14.2127 + 10.9500 213.0000 14.5945 + 11.0000 226.0000 15.0333 + 11.0500 198.0000 14.0712 + 11.1000 222.0000 14.8997 + 11.1500 186.0000 13.6382 + 11.2000 216.0000 14.6969 + 11.2500 218.0000 14.7648 + 11.3000 225.0000 15.0000 + 11.3500 200.0000 14.1421 + 11.4000 196.0000 14.0000 + 11.4500 224.0000 14.9666 + 11.5000 199.0000 14.1067 + 11.5500 204.0000 14.2829 + 11.6000 189.0000 13.7477 + 11.6500 211.0000 14.5258 + 11.7000 190.0000 13.7840 + 11.7500 184.0000 13.5647 + 11.8000 204.0000 14.2829 + 11.8500 204.0000 14.2829 + 11.9000 219.0000 14.7986 + 11.9500 207.0000 14.3875 + 12.0000 227.0000 15.0665 + 12.0500 211.0000 10.2713 + 12.1000 193.0000 9.8234 + 12.1500 206.0000 10.1489 + 12.2000 208.0000 10.1980 + 12.2500 191.0000 9.7724 + 12.3000 194.0000 9.8489 + 12.3500 185.0000 9.6177 + 12.4000 200.0000 10.0000 + 12.4500 203.0000 10.0747 + 12.5000 197.0000 9.9247 + 12.5500 203.0000 10.0747 + 12.6000 200.0000 10.0000 + 12.6500 200.0000 10.0000 + 12.7000 205.0000 10.1242 + 12.7500 208.0000 10.1980 + 12.8000 205.0000 10.1242 + 12.8500 201.0000 10.0250 + 12.9000 221.0000 10.5119 + 12.9500 218.0000 10.4403 + 13.0000 218.0000 10.4403 + 13.0500 216.0000 10.3923 + 13.1000 202.0000 10.0499 + 13.1500 206.0000 10.1489 + 13.2000 197.0000 9.9247 + 13.2500 210.0000 10.2470 + 13.3000 199.0000 9.9750 + 13.3500 219.0000 10.4642 + 13.4000 192.0000 9.7980 + 13.4500 211.0000 10.2713 + 13.5000 199.0000 9.9750 + 13.5500 196.0000 9.8995 + 13.6000 195.0000 9.8742 + 13.6500 203.0000 10.0747 + 13.7000 202.0000 10.0499 + 13.7500 200.0000 10.0000 + 13.8000 199.0000 9.9750 + 13.8500 191.0000 9.7724 + 13.9000 204.0000 10.0995 + 13.9500 191.0000 9.7724 + 14.0000 200.0000 10.0000 + 14.0500 199.0000 9.9750 + 14.1000 197.0000 9.9247 + 14.1500 202.0000 10.0499 + 14.2000 210.0000 10.2470 + 14.2500 202.0000 10.0499 + 14.3000 198.0000 9.9499 + 14.3500 191.0000 9.7724 + 14.4000 194.0000 9.8489 + 14.4500 198.0000 9.9499 + 14.5000 194.0000 9.8489 + 14.5500 193.0000 9.8234 + 14.6000 212.0000 10.2956 + 14.6500 214.0000 10.3441 + 14.7000 197.0000 9.9247 + 14.7500 195.0000 9.8742 + 14.8000 205.0000 10.1242 + 14.8500 209.0000 10.2225 + 14.9000 203.0000 10.0747 + 14.9500 197.0000 9.9247 + 15.0000 191.0000 9.7724 + 15.0500 192.0000 9.7980 + 15.1000 215.0000 10.3682 + 15.1500 194.0000 9.8489 + 15.2000 189.0000 9.7211 + 15.2500 188.0000 9.6954 + 15.3000 202.0000 10.0499 + 15.3500 201.0000 10.0250 + 15.4000 198.0000 9.9499 + 15.4500 208.0000 10.1980 + 15.5000 197.0000 9.9247 + 15.5500 187.0000 9.6695 + 15.6000 187.0000 9.6695 + 15.6500 190.0000 9.7468 + 15.7000 197.0000 9.9247 + 15.7500 200.0000 10.0000 + 15.8000 193.0000 9.8234 + 15.8500 180.0000 9.4868 + 15.9000 194.0000 9.8489 + 15.9500 206.0000 10.1489 + 16.0000 195.0000 9.8742 + 16.0500 193.0000 9.8234 + 16.1000 205.0000 10.1242 + 16.1500 194.0000 9.8489 + 16.2000 196.0000 9.8995 + 16.2500 194.0000 9.8489 + 16.3000 199.0000 9.9750 + 16.3500 207.0000 10.1735 + 16.4000 188.0000 9.6954 + 16.4500 203.0000 10.0747 + 16.5000 188.0000 9.6954 + 16.5500 180.0000 9.4868 + 16.6000 198.0000 9.9499 + 16.6500 200.0000 10.0000 + 16.7000 201.0000 10.0250 + 16.7500 210.0000 10.2470 + 16.8000 206.0000 10.1489 + 16.8500 189.0000 9.7211 + 16.9000 194.0000 9.8489 + 16.9500 187.0000 9.6695 + 17.0000 195.0000 9.8742 + 17.0500 201.0000 10.0250 + 17.1000 197.0000 9.9247 + 17.1500 206.0000 10.1489 + 17.2000 208.0000 10.1980 + 17.2500 199.0000 9.9750 + 17.3000 192.0000 9.7980 + 17.3500 193.0000 9.8234 + 17.4000 204.0000 10.0995 + 17.4500 201.0000 10.0250 + 17.5000 200.0000 10.0000 + 17.5500 177.0000 9.4074 + 17.6000 193.0000 9.8234 + 17.6500 199.0000 9.9750 + 17.7000 201.0000 10.0250 + 17.7500 194.0000 9.8489 + 17.8000 184.0000 9.5917 + 17.8500 192.0000 9.7980 + 17.9000 199.0000 9.9750 + 17.9500 190.0000 9.7468 + 18.0000 183.0000 9.5656 + 18.0500 189.0000 7.9373 + 18.1000 196.0000 8.0829 + 18.1500 196.0000 8.0829 + 18.2000 198.0000 8.1240 + 18.2500 210.0000 8.3666 + 18.3000 212.0000 8.4063 + 18.3500 219.0000 8.5440 + 18.4000 198.0000 8.1240 + 18.4500 195.0000 8.0623 + 18.5000 198.0000 8.1240 + 18.5500 191.0000 7.9791 + 18.6000 193.0000 8.0208 + 18.6500 197.0000 8.1035 + 18.7000 194.0000 8.0416 + 18.7500 187.0000 7.8951 + 18.8000 209.0000 8.3467 + 18.8500 187.0000 7.8951 + 18.9000 198.0000 8.1240 + 18.9500 206.0000 8.2865 + 19.0000 197.0000 8.1035 + 19.0500 191.0000 7.9791 + 19.1000 200.0000 8.1650 + 19.1500 207.0000 8.3066 + 19.2000 205.0000 8.2664 + 19.2500 198.0000 8.1240 + 19.3000 196.0000 8.0829 + 19.3500 209.0000 8.3467 + 19.4000 211.0000 8.3865 + 19.4500 203.0000 8.2260 + 19.5000 200.0000 8.1650 + 19.5500 192.0000 8.0000 + 19.6000 208.0000 8.3267 + 19.6500 213.0000 8.4261 + 19.7000 221.0000 8.5829 + 19.7500 216.0000 8.4853 + 19.8000 226.0000 8.6795 + 19.8500 228.0000 8.7178 + 19.9000 228.0000 8.7178 + 19.9500 215.0000 8.4656 + 20.0000 224.0000 8.6410 + 20.0500 226.0000 8.6795 + 20.1000 213.0000 8.4261 + 20.1500 239.0000 8.9256 + 20.2000 250.0000 9.1287 + 20.2500 247.0000 9.0738 + 20.3000 240.0000 8.9443 + 20.3500 231.0000 8.7750 + 20.4000 236.0000 8.8694 + 20.4500 223.0000 8.6217 + 20.5000 231.0000 8.7750 + 20.5500 226.0000 8.6795 + 20.6000 214.0000 8.4459 + 20.6500 208.0000 8.3267 + 20.7000 214.0000 8.4459 + 20.7500 196.0000 8.0829 + 20.8000 204.0000 8.2462 + 20.8500 199.0000 8.1445 + 20.9000 186.0000 7.8740 + 20.9500 192.0000 8.0000 + 21.0000 199.0000 8.1445 + 21.0500 200.0000 8.1650 + 21.1000 184.0000 7.8316 + 21.1500 184.0000 7.8316 + 21.2000 189.0000 7.9373 + 21.2500 182.0000 7.7889 + 21.3000 184.0000 7.8316 + 21.3500 185.0000 7.8528 + 21.4000 195.0000 8.0623 + 21.4500 190.0000 7.9582 + 21.5000 194.0000 8.0416 + 21.5500 185.0000 7.8528 + 21.6000 183.0000 7.8102 + 21.6500 193.0000 8.0208 + 21.7000 194.0000 8.0416 + 21.7500 193.0000 8.0208 + 21.8000 188.0000 7.9162 + 21.8500 191.0000 7.9791 + 21.9000 189.0000 7.9373 + 21.9500 188.0000 7.9162 + 22.0000 201.0000 8.1854 + 22.0500 195.0000 8.0623 + 22.1000 205.0000 8.2664 + 22.1500 200.0000 8.1650 + 22.2000 200.0000 8.1650 + 22.2500 192.0000 8.0000 + 22.3000 197.0000 8.1035 + 22.3500 204.0000 8.2462 + 22.4000 207.0000 8.3066 + 22.4500 192.0000 8.0000 + 22.5000 201.0000 8.1854 + 22.5500 190.0000 7.9582 + 22.6000 195.0000 8.0623 + 22.6500 194.0000 8.0416 + 22.7000 182.0000 7.7889 + 22.7500 189.0000 7.9373 + 22.8000 196.0000 8.0829 + 22.8500 196.0000 8.0829 + 22.9000 200.0000 8.1650 + 22.9500 190.0000 7.9582 + 23.0000 183.0000 7.8102 + 23.0500 199.0000 8.1445 + 23.1000 187.0000 7.8951 + 23.1500 196.0000 8.0829 + 23.2000 191.0000 7.9791 + 23.2500 191.0000 7.9791 + 23.3000 195.0000 8.0623 + 23.3500 194.0000 8.0416 + 23.4000 192.0000 8.0000 + 23.4500 182.0000 7.7889 + 23.5000 188.0000 7.9162 + 23.5500 203.0000 8.2260 + 23.6000 187.0000 7.8951 + 23.6500 192.0000 8.0000 + 23.7000 206.0000 8.2865 + 23.7500 201.0000 8.1854 + 23.8000 184.0000 7.8316 + 23.8500 192.0000 8.0000 + 23.9000 205.0000 8.2664 + 23.9500 196.0000 8.0829 + 24.0000 193.0000 8.0208 + 24.0500 194.0000 6.9642 + 24.1000 195.0000 6.9821 + 24.1500 194.0000 6.9642 + 24.2000 201.0000 7.0887 + 24.2500 193.0000 6.9462 + 24.3000 176.0000 6.6332 + 24.3500 187.0000 6.8374 + 24.4000 188.0000 6.8557 + 24.4500 196.0000 7.0000 + 24.5000 192.0000 6.9282 + 24.5500 185.0000 6.8007 + 24.6000 195.0000 6.9821 + 24.6500 198.0000 7.0356 + 24.7000 205.0000 7.1589 + 24.7500 200.0000 7.0711 + 24.8000 208.0000 7.2111 + 24.8500 195.0000 6.9821 + 24.9000 187.0000 6.8374 + 24.9500 193.0000 6.9462 + 25.0000 197.0000 7.0178 + 25.0500 202.0000 7.1063 + 25.1000 193.0000 6.9462 + 25.1500 196.0000 7.0000 + 25.2000 202.0000 7.1063 + 25.2500 201.0000 7.0887 + 25.3000 197.0000 7.0178 + 25.3500 204.0000 7.1414 + 25.4000 208.0000 7.2111 + 25.4500 206.0000 7.1764 + 25.5000 212.0000 7.2801 + 25.5500 207.0000 7.1937 + 25.6000 207.0000 7.1937 + 25.6500 212.0000 7.2801 + 25.7000 216.0000 7.3485 + 25.7500 218.0000 7.3824 + 25.8000 221.0000 7.4330 + 25.8500 218.0000 7.3824 + 25.9000 207.0000 7.1937 + 25.9500 203.0000 7.1239 + 26.0000 204.0000 7.1414 + 26.0500 202.0000 7.1063 + 26.1000 206.0000 7.1764 + 26.1500 202.0000 7.1063 + 26.2000 202.0000 7.1063 + 26.2500 181.0000 6.7268 + 26.3000 193.0000 6.9462 + 26.3500 205.0000 7.1589 + 26.4000 198.0000 7.0356 + 26.4500 196.0000 7.0000 + 26.5000 197.0000 7.0178 + 26.5500 195.0000 6.9821 + 26.6000 201.0000 7.0887 + 26.6500 205.0000 7.1589 + 26.7000 195.0000 6.9821 + 26.7500 196.0000 7.0000 + 26.8000 196.0000 7.0000 + 26.8500 205.0000 7.1589 + 26.9000 198.0000 7.0356 + 26.9500 200.0000 7.0711 + 27.0000 199.0000 7.0534 + 27.0500 180.0000 6.7082 + 27.1000 187.0000 6.8374 + 27.1500 193.0000 6.9462 + 27.2000 197.0000 7.0178 + 27.2500 197.0000 7.0178 + 27.3000 196.0000 7.0000 + 27.3500 194.0000 6.9642 + 27.4000 197.0000 7.0178 + 27.4500 204.0000 7.1414 + 27.5000 201.0000 7.0887 + 27.5500 187.0000 6.8374 + 27.6000 191.0000 6.9101 + 27.6500 205.0000 7.1589 + 27.7000 200.0000 7.0711 + 27.7500 198.0000 7.0356 + 27.8000 200.0000 7.0711 + 27.8500 204.0000 7.1414 + 27.9000 196.0000 7.0000 + 27.9500 195.0000 6.9821 + 28.0000 194.0000 6.9642 + 28.0500 200.0000 7.0711 + 28.1000 198.0000 7.0356 + 28.1500 201.0000 7.0887 + 28.2000 208.0000 7.2111 + 28.2500 205.0000 7.1589 + 28.3000 211.0000 7.2629 + 28.3500 211.0000 7.2629 + 28.4000 220.0000 7.4162 + 28.4500 220.0000 7.4162 + 28.5000 212.0000 7.2801 + 28.5500 208.0000 7.2111 + 28.6000 214.0000 7.3144 + 28.6500 226.0000 7.5166 + 28.7000 235.0000 7.6649 + 28.7500 233.0000 7.6322 + 28.8000 237.0000 7.6974 + 28.8500 242.0000 7.7782 + 28.9000 242.0000 7.7782 + 28.9500 245.0000 7.8262 + 29.0000 239.0000 7.7298 + 29.0500 226.0000 7.5166 + 29.1000 232.0000 7.6158 + 29.1500 238.0000 7.7136 + 29.2000 226.0000 7.5166 + 29.2500 218.0000 7.3824 + 29.3000 218.0000 7.3824 + 29.3500 214.0000 7.3144 + 29.4000 205.0000 7.1589 + 29.4500 200.0000 7.0711 + 29.5000 193.0000 6.9462 + 29.5500 195.0000 6.9821 + 29.6000 196.0000 7.0000 + 29.6500 195.0000 6.9821 + 29.7000 207.0000 7.1937 + 29.7500 215.0000 7.3314 + 29.8000 207.0000 7.1937 + 29.8500 218.0000 7.3824 + 29.9000 218.0000 7.3824 + 29.9500 220.0000 7.4162 + 30.0000 220.0000 7.4162 + 30.0500 229.0000 6.7676 + 30.1000 236.0000 6.8702 + 30.1500 254.0000 7.1274 + 30.2000 264.0000 7.2664 + 30.2500 280.0000 7.4833 + 30.3000 289.0000 7.6026 + 30.3500 289.0000 7.6026 + 30.4000 303.0000 7.7846 + 30.4500 302.0000 7.7717 + 30.5000 297.0000 7.7071 + 30.5500 281.0000 7.4967 + 30.6000 278.0000 7.4565 + 30.6500 280.0000 7.4833 + 30.7000 265.0000 7.2801 + 30.7500 258.0000 7.1833 + 30.8000 243.0000 6.9714 + 30.8500 240.0000 6.9282 + 30.9000 232.0000 6.8118 + 30.9500 231.0000 6.7971 + 31.0000 233.0000 6.8264 + 31.0500 246.0000 7.0143 + 31.1000 248.0000 7.0427 + 31.1500 249.0000 7.0569 + 31.2000 256.0000 7.1554 + 31.2500 272.0000 7.3756 + 31.3000 289.0000 7.6026 + 31.3500 311.0000 7.8867 + 31.4000 340.0000 8.2462 + 31.4500 363.0000 8.5206 + 31.5000 393.0000 8.8657 + 31.5500 440.0000 9.3808 + 31.6000 474.0000 9.7365 + 31.6500 482.0000 9.8183 + 31.7000 492.0000 9.9197 + 31.7500 508.0000 10.0797 + 31.8000 494.0000 9.9398 + 31.8500 475.0000 9.7468 + 31.9000 439.0000 9.3702 + 31.9500 413.0000 9.0885 + 32.0000 368.0000 8.5790 + 32.0500 331.0000 8.1363 + 32.1000 299.0000 7.7330 + 32.1500 286.0000 7.5631 + 32.2000 262.0000 7.2388 + 32.2500 241.0000 6.9426 + 32.3000 238.0000 6.8993 + 32.3500 252.0000 7.0993 + 32.4000 267.0000 7.3075 + 32.4500 276.0000 7.4297 + 32.5000 278.0000 7.4565 + 32.5500 300.0000 7.7460 + 32.6000 325.0000 8.0623 + 32.6500 336.0000 8.1976 + 32.7000 359.0000 8.4735 + 32.7500 405.0000 9.0000 + 32.8000 458.0000 9.5708 + 32.8500 501.0000 10.0100 + 32.9000 564.0000 10.6207 + 32.9500 640.0000 11.3137 + 33.0000 719.0000 11.9917 + 33.0500 783.0000 12.5140 + 33.1000 837.0000 12.9383 + 33.1500 851.0000 13.0461 + 33.2000 866.0000 13.1605 + 33.2500 828.0000 12.8686 + 33.3000 763.0000 12.3531 + 33.3500 697.0000 11.8068 + 33.4000 634.0000 11.2606 + 33.4500 541.0000 10.4019 + 33.5000 465.0000 9.6437 + 33.5500 391.0000 8.8431 + 33.6000 351.0000 8.3785 + 33.6500 301.0000 7.7589 + 33.7000 284.0000 7.5366 + 33.7500 260.0000 7.2111 + 33.8000 248.0000 7.0427 + 33.8500 257.0000 7.1694 + 33.9000 242.0000 6.9570 + 33.9500 246.0000 7.0143 + 34.0000 263.0000 7.2526 + 34.0500 271.0000 7.3621 + 34.1000 281.0000 7.4967 + 34.1500 302.0000 7.7717 + 34.2000 309.0000 7.8613 + 34.2500 335.0000 8.1854 + 34.3000 342.0000 8.2704 + 34.3500 345.0000 8.3066 + 34.4000 356.0000 8.4380 + 34.4500 351.0000 8.3785 + 34.5000 341.0000 8.2583 + 34.5500 334.0000 8.1731 + 34.6000 321.0000 8.0125 + 34.6500 286.0000 7.5631 + 34.7000 268.0000 7.3212 + 34.7500 256.0000 7.1554 + 34.8000 238.0000 6.8993 + 34.8500 229.0000 6.7676 + 34.9000 218.0000 6.6030 + 34.9500 223.0000 6.6783 + 35.0000 216.0000 6.5727 + 35.0500 203.0000 6.3718 + 35.1000 203.0000 6.3718 + 35.1500 194.0000 6.2290 + 35.2000 205.0000 6.4031 + 35.2500 196.0000 6.2610 + 35.3000 193.0000 6.2129 + 35.3500 206.0000 6.4187 + 35.4000 201.0000 6.3403 + 35.4500 201.0000 6.3403 + 35.5000 201.0000 6.3403 + 35.5500 200.0000 6.3246 + 35.6000 194.0000 6.2290 + 35.6500 196.0000 6.2610 + 35.7000 203.0000 6.3718 + 35.7500 195.0000 6.2450 + 35.8000 196.0000 6.2610 + 35.8500 211.0000 6.4962 + 35.9000 216.0000 6.5727 + 35.9500 207.0000 6.4343 + 36.0000 215.0000 6.5574 + 36.0500 221.0000 6.6483 + 36.1000 237.0000 6.2849 + 36.1500 248.0000 6.4291 + 36.2000 261.0000 6.5955 + 36.2500 279.0000 6.8191 + 36.3000 319.0000 7.2915 + 36.3500 337.0000 7.4944 + 36.4000 364.0000 7.7889 + 36.4500 423.0000 8.3964 + 36.5000 489.0000 9.0277 + 36.5500 557.0000 9.6350 + 36.6000 630.0000 10.2470 + 36.6500 729.0000 11.0227 + 36.7000 822.0000 11.7047 + 36.7500 943.0000 12.5366 + 36.8000 1059.0000 13.2853 + 36.8500 1196.0000 14.1185 + 36.9000 1235.0000 14.3469 + 36.9500 1220.0000 14.2595 + 37.0000 1209.0000 14.1951 + 37.0500 1128.0000 13.7113 + 37.1000 1001.0000 12.9164 + 37.1500 864.0000 12.0000 + 37.2000 729.0000 11.0227 + 37.2500 601.0000 10.0083 + 37.3000 496.0000 9.0921 + 37.3500 418.0000 8.3467 + 37.4000 355.0000 7.6920 + 37.4500 313.0000 7.2226 + 37.5000 263.0000 6.6207 + 37.5500 246.0000 6.4031 + 37.6000 226.0000 6.1373 + 37.6500 214.0000 5.9722 + 37.7000 222.0000 6.0828 + 37.7500 222.0000 6.0828 + 37.8000 211.0000 5.9301 + 37.8500 211.0000 5.9301 + 37.9000 202.0000 5.8023 + 37.9500 198.0000 5.7446 + 38.0000 192.0000 5.6569 + 38.0500 193.0000 5.6716 + 38.1000 196.0000 5.7155 + 38.1500 201.0000 5.7879 + 38.2000 203.0000 5.8166 + 38.2500 203.0000 5.8166 + 38.3000 201.0000 5.7879 + 38.3500 198.0000 5.7446 + 38.4000 196.0000 5.7155 + 38.4500 206.0000 5.8595 + 38.5000 210.0000 5.9161 + 38.5500 197.0000 5.7300 + 38.6000 204.0000 5.8310 + 38.6500 200.0000 5.7735 + 38.7000 205.0000 5.8452 + 38.7500 196.0000 5.7155 + 38.8000 195.0000 5.7009 + 38.8500 205.0000 5.8452 + 38.9000 204.0000 5.8310 + 38.9500 200.0000 5.7735 + 39.0000 203.0000 5.8166 + 39.0500 208.0000 5.8878 + 39.1000 207.0000 5.8737 + 39.1500 202.0000 5.8023 + 39.2000 203.0000 5.8166 + 39.2500 198.0000 5.7446 + 39.3000 204.0000 5.8310 + 39.3500 210.0000 5.9161 + 39.4000 216.0000 6.0000 + 39.4500 210.0000 5.9161 + 39.5000 229.0000 6.1779 + 39.5500 239.0000 6.3114 + 39.6000 247.0000 6.4161 + 39.6500 278.0000 6.8069 + 39.7000 302.0000 7.0946 + 39.7500 324.0000 7.3485 + 39.8000 371.0000 7.8634 + 39.8500 420.0000 8.3666 + 39.9000 465.0000 8.8034 + 39.9500 538.0000 9.4692 + 40.0000 630.0000 10.2470 + 40.0500 739.0000 11.0980 + 40.1000 851.0000 11.9094 + 40.1500 976.0000 12.7541 + 40.2000 1076.0000 13.3915 + 40.2500 1161.0000 13.9104 + 40.3000 1222.0000 14.2712 + 40.3500 1227.0000 14.3003 + 40.4000 1187.0000 14.0653 + 40.4500 1096.0000 13.5154 + 40.5000 964.0000 12.6754 + 40.5500 833.0000 11.7828 + 40.6000 708.0000 10.8628 + 40.6500 587.0000 9.8911 + 40.7000 512.0000 9.2376 + 40.7500 436.0000 8.5245 + 40.8000 391.0000 8.0726 + 40.8500 384.0000 8.0000 + 40.9000 370.0000 7.8528 + 40.9500 391.0000 8.0726 + 41.0000 419.0000 8.3566 + 41.0500 448.0000 8.6410 + 41.1000 490.0000 9.0370 + 41.1500 567.0000 9.7211 + 41.2000 626.0000 10.2144 + 41.2500 687.0000 10.7005 + 41.3000 735.0000 11.0680 + 41.3500 780.0000 11.4018 + 41.4000 782.0000 11.4164 + 41.4500 745.0000 11.1430 + 41.5000 721.0000 10.9621 + 41.5500 662.0000 10.5040 + 41.6000 595.0000 9.9582 + 41.6500 527.0000 9.3719 + 41.7000 446.0000 8.6217 + 41.7500 393.0000 8.0932 + 41.8000 335.0000 7.4722 + 41.8500 301.0000 7.0828 + 41.9000 276.0000 6.7823 + 41.9500 251.0000 5.9881 + 42.0000 242.0000 5.8797 + 42.0500 229.0000 5.7196 + 42.1000 209.0000 5.4642 + 42.1500 215.0000 5.5420 + 42.2000 218.0000 5.5806 + 42.2500 214.0000 5.5291 + 42.3000 209.0000 5.4642 + 42.3500 208.0000 5.4511 + 42.4000 212.0000 5.5032 + 42.4500 210.0000 5.4772 + 42.5000 209.0000 5.4642 + 42.5500 210.0000 5.4772 + 42.6000 205.0000 5.4116 + 42.6500 209.0000 5.4642 + 42.7000 211.0000 5.4903 + 42.7500 211.0000 5.4903 + 42.8000 216.0000 5.5549 + 42.8500 205.0000 5.4116 + 42.9000 204.0000 5.3984 + 42.9500 202.0000 5.3719 + 43.0000 201.0000 5.3586 + 43.0500 200.0000 5.3452 + 43.1000 207.0000 5.4380 + 43.1500 205.0000 5.4116 + 43.2000 202.0000 5.3719 + 43.2500 209.0000 5.4642 + 43.3000 202.0000 5.3719 + 43.3500 203.0000 5.3852 + 43.4000 206.0000 5.4248 + 43.4500 206.0000 5.4248 + 43.5000 200.0000 5.3452 + 43.5500 194.0000 5.2644 + 43.6000 199.0000 5.3318 + 43.6500 204.0000 5.3984 + 43.7000 205.0000 5.4116 + 43.7500 210.0000 5.4772 + 43.8000 207.0000 5.4380 + 43.8500 205.0000 5.4116 + 43.9000 210.0000 5.4772 + 43.9500 204.0000 5.3984 + 44.0000 203.0000 5.3852 + 44.0500 202.0000 5.3719 + 44.1000 205.0000 5.4116 + 44.1500 201.0000 5.3586 + 44.2000 201.0000 5.3586 + 44.2500 207.0000 5.4380 + 44.3000 197.0000 5.3050 + 44.3500 198.0000 5.3184 + 44.4000 203.0000 5.3852 + 44.4500 209.0000 5.4642 + 44.5000 209.0000 5.4642 + 44.5500 208.0000 5.4511 + 44.6000 204.0000 5.3984 + 44.6500 209.0000 5.4642 + 44.7000 199.0000 5.3318 + 44.7500 204.0000 5.3984 + 44.8000 206.0000 5.4248 + 44.8500 201.0000 5.3586 + 44.9000 205.0000 5.4116 + 44.9500 202.0000 5.3719 + 45.0000 204.0000 5.3984 + 45.0500 198.0000 5.3184 + 45.1000 198.0000 5.3184 + 45.1500 213.0000 5.5162 + 45.2000 210.0000 5.4772 + 45.2500 212.0000 5.5032 + 45.3000 214.0000 5.5291 + 45.3500 215.0000 5.5420 + 45.4000 217.0000 5.5678 + 45.4500 210.0000 5.4772 + 45.5000 214.0000 5.5291 + 45.5500 215.0000 5.5420 + 45.6000 215.0000 5.5420 + 45.6500 215.0000 5.5420 + 45.7000 217.0000 5.5678 + 45.7500 222.0000 5.6315 + 45.8000 231.0000 5.7446 + 45.8500 247.0000 5.9402 + 45.9000 252.0000 6.0000 + 45.9500 273.0000 6.2450 + 46.0000 304.0000 6.5900 + 46.0500 332.0000 6.8868 + 46.1000 366.0000 7.2309 + 46.1500 408.0000 7.6345 + 46.2000 463.0000 8.1328 + 46.2500 532.0000 8.7178 + 46.3000 619.0000 9.4036 + 46.3500 734.0000 10.2400 + 46.4000 828.0000 10.8759 + 46.4500 944.0000 11.6128 + 46.5000 1003.0000 11.9702 + 46.5500 1055.0000 12.2766 + 46.6000 1070.0000 12.3635 + 46.6500 1018.0000 12.0594 + 46.7000 944.0000 11.6128 + 46.7500 833.0000 10.9087 + 46.8000 725.0000 10.1770 + 46.8500 633.0000 9.5094 + 46.9000 507.0000 8.5105 + 46.9500 445.0000 7.9732 + 47.0000 379.0000 7.3582 + 47.0500 347.0000 7.0407 + 47.1000 316.0000 6.7188 + 47.1500 282.0000 6.3471 + 47.2000 267.0000 6.1760 + 47.2500 269.0000 6.1991 + 47.3000 281.0000 6.3358 + 47.3500 288.0000 6.4143 + 47.4000 300.0000 6.5465 + 47.4500 327.0000 6.8348 + 47.5000 346.0000 7.0305 + 47.5500 380.0000 7.3679 + 47.6000 400.0000 7.5593 + 47.6500 430.0000 7.8376 + 47.7000 453.0000 8.0445 + 47.7500 459.0000 8.0976 + 47.8000 451.0000 8.0267 + 47.8500 427.0000 7.8102 + 47.9000 402.0000 7.5782 + 47.9500 375.0000 7.3193 + 48.0000 344.0000 7.0102 + 48.0500 309.0000 6.6440 + 48.1000 277.0000 6.2906 + 48.1500 265.0000 5.7554 + 48.2000 246.0000 5.5453 + 48.2500 246.0000 5.5453 + 48.3000 230.0000 5.3619 + 48.3500 223.0000 5.2797 + 48.4000 227.0000 5.3268 + 48.4500 225.0000 5.3033 + 48.5000 217.0000 5.2082 + 48.5500 217.0000 5.2082 + 48.6000 223.0000 5.2797 + 48.6500 223.0000 5.2797 + 48.7000 220.0000 5.2440 + 48.7500 223.0000 5.2797 + 48.8000 226.0000 5.3151 + 48.8500 248.0000 5.5678 + 48.9000 258.0000 5.6789 + 48.9500 274.0000 5.8523 + 49.0000 297.0000 6.0930 + 49.0500 324.0000 6.3640 + 49.1000 355.0000 6.6615 + 49.1500 393.0000 7.0089 + 49.2000 458.0000 7.5664 + 49.2500 528.0000 8.1240 + 49.3000 589.0000 8.5805 + 49.3500 688.0000 9.2736 + 49.4000 781.0000 9.8805 + 49.4500 840.0000 10.2470 + 49.5000 876.0000 10.4642 + 49.5500 874.0000 10.4523 + 49.6000 832.0000 10.1980 + 49.6500 765.0000 9.7788 + 49.7000 682.0000 9.2331 + 49.7500 613.0000 8.7536 + 49.8000 524.0000 8.0932 + 49.8500 455.0000 7.5416 + 49.9000 408.0000 7.1414 + 49.9500 384.0000 6.9282 + 50.0000 366.0000 6.7639 + 50.0500 375.0000 6.8465 + 50.1000 392.0000 7.0000 + 50.1500 426.0000 7.2973 + 50.2000 470.0000 7.6649 + 50.2500 519.0000 8.0545 + 50.3000 588.0000 8.5732 + 50.3500 639.0000 8.9373 + 50.4000 681.0000 9.2263 + 50.4500 704.0000 9.3808 + 50.5000 693.0000 9.3073 + 50.5500 650.0000 9.0139 + 50.6000 600.0000 8.6603 + 50.6500 540.0000 8.2158 + 50.7000 478.0000 7.7298 + 50.7500 412.0000 7.1764 + 50.8000 376.0000 6.8557 + 50.8500 345.0000 6.5670 + 50.9000 330.0000 6.4226 + 50.9500 337.0000 6.4904 + 51.0000 350.0000 6.6144 + 51.0500 383.0000 6.9192 + 51.1000 426.0000 7.2973 + 51.1500 493.0000 7.8502 + 51.2000 571.0000 8.4484 + 51.2500 676.0000 9.1924 + 51.3000 803.0000 10.0187 + 51.3500 920.0000 10.7238 + 51.4000 1071.0000 11.5704 + 51.4500 1183.0000 12.1604 + 51.5000 1247.0000 12.4850 + 51.5500 1255.0000 12.5250 + 51.6000 1251.0000 12.5050 + 51.6500 1183.0000 12.1604 + 51.7000 1068.0000 11.5542 + 51.7500 945.0000 10.8685 + 51.8000 861.0000 10.3742 + 51.8500 811.0000 10.0685 + 51.9000 813.0000 10.0809 + 51.9500 872.0000 10.4403 + 52.0000 969.0000 11.0057 + 52.0500 1120.0000 11.8322 + 52.1000 1309.0000 12.7916 + 52.1500 1527.0000 13.8158 + 52.2000 1706.0000 14.6031 + 52.2500 1856.0000 15.2315 + 52.3000 1888.0000 15.3623 + 52.3500 1837.0000 15.1534 + 52.4000 1713.0000 14.6330 + 52.4500 1500.0000 13.6931 + 52.5000 1289.0000 12.6935 + 52.5500 1103.0000 11.7420 + 52.6000 904.0000 10.6301 + 52.6500 749.0000 9.6760 + 52.7000 627.0000 8.8530 + 52.7500 568.0000 8.4261 + 52.8000 551.0000 8.2991 + 52.8500 560.0000 8.3666 + 52.9000 586.0000 8.5586 + 52.9500 634.0000 8.9022 + 53.0000 691.0000 9.2938 + 53.0500 751.0000 9.6889 + 53.1000 799.0000 9.9937 + 53.1500 792.0000 9.9499 + 53.2000 820.0000 10.1242 + 53.2500 774.0000 9.8362 + 53.3000 736.0000 9.5917 + 53.3500 680.0000 9.2195 + 53.4000 627.0000 8.8530 + 53.4500 562.0000 8.3815 + 53.5000 514.0000 8.0156 + 53.5500 459.0000 7.5746 + 53.6000 424.0000 7.2801 + 53.6500 362.0000 6.7268 + 53.7000 333.0000 6.4517 + 53.7500 318.0000 6.3048 + 53.8000 300.0000 6.1237 + 53.8500 287.0000 5.9896 + 53.9000 265.0000 5.7554 + 53.9500 266.0000 5.7663 + 54.0000 262.0000 5.7228 + 54.0500 263.0000 5.4058 + 54.1000 255.0000 5.3229 + 54.1500 270.0000 5.4772 + 54.2000 278.0000 5.5578 + 54.2500 289.0000 5.6667 + 54.3000 317.0000 5.9348 + 54.3500 343.0000 6.1734 + 54.4000 400.0000 6.6667 + 54.4500 468.0000 7.2111 + 54.5000 561.0000 7.8951 + 54.5500 695.0000 8.7876 + 54.6000 873.0000 9.8489 + 54.6500 1100.0000 11.0554 + 54.7000 1372.0000 12.3468 + 54.7500 1660.0000 13.5810 + 54.8000 1954.0000 14.7347 + 54.8500 2224.0000 15.7198 + 54.9000 2400.0000 16.3299 + 54.9500 2459.0000 16.5294 + 55.0000 2435.0000 16.4486 + 55.0500 2245.0000 15.7938 + 55.1000 1986.0000 14.8549 + 55.1500 1671.0000 13.6260 + 55.2000 1358.0000 12.2837 + 55.2500 1086.0000 10.9848 + 55.3000 868.0000 9.8206 + 55.3500 682.0000 8.7050 + 55.4000 578.0000 8.0139 + 55.4500 521.0000 7.6085 + 55.5000 512.0000 7.5425 + 55.5500 537.0000 7.7244 + 55.6000 600.0000 8.1650 + 55.6500 704.0000 8.8443 + 55.7000 855.0000 9.7468 + 55.7500 1032.0000 10.7083 + 55.8000 1232.0000 11.7000 + 55.8500 1466.0000 12.7628 + 55.9000 1693.0000 13.7154 + 55.9500 1866.0000 14.3991 + 56.0000 1966.0000 14.7799 + 56.0500 2024.0000 14.9963 + 56.1000 2016.0000 14.9666 + 56.1500 1846.0000 14.3217 + 56.2000 1667.0000 13.6096 + 56.2500 1429.0000 12.6007 + 56.3000 1179.0000 11.4455 + 56.3500 950.0000 10.2740 + 56.4000 763.0000 9.2075 + 56.4500 599.0000 8.1582 + 56.5000 484.0000 7.3333 + 56.5500 404.0000 6.6999 + 56.6000 351.0000 6.2450 + 56.6500 304.0000 5.8119 + 56.7000 284.0000 5.6174 + 56.7500 273.0000 5.5076 + 56.8000 259.0000 5.3645 + 56.8500 251.0000 5.2810 + 56.9000 251.0000 5.2810 + 56.9500 252.0000 5.2915 + 57.0000 245.0000 5.2175 + 57.0500 259.0000 5.3645 + 57.1000 250.0000 5.2705 + 57.1500 253.0000 5.3020 + 57.2000 256.0000 5.3333 + 57.2500 264.0000 5.4160 + 57.3000 285.0000 5.6273 + 57.3500 301.0000 5.7831 + 57.4000 346.0000 6.2004 + 57.4500 390.0000 6.5828 + 57.5000 458.0000 7.1336 + 57.5500 528.0000 7.6594 + 57.6000 624.0000 8.3267 + 57.6500 733.0000 9.0247 + 57.7000 829.0000 9.5975 + 57.7500 916.0000 10.0885 + 57.8000 988.0000 10.4775 + 57.8500 994.0000 10.5093 + 57.9000 929.0000 10.1598 + 57.9500 843.0000 9.6782 + 58.0000 742.0000 9.0799 + 58.0500 638.0000 8.4196 + 58.1000 527.0000 7.6522 + 58.1500 434.0000 6.9442 + 58.2000 377.0000 6.4722 + 58.2500 320.0000 5.9628 + 58.3000 282.0000 5.5976 + 58.3500 273.0000 5.5076 + 58.4000 256.0000 5.3333 + 58.4500 243.0000 5.1962 + 58.5000 240.0000 5.1640 + 58.5500 240.0000 5.1640 + 58.6000 230.0000 5.0553 + 58.6500 220.0000 4.9441 + 58.7000 230.0000 5.0553 + 58.7500 227.0000 5.0222 + 58.8000 224.0000 4.9889 + 58.8500 219.0000 4.9329 + 58.9000 227.0000 5.0222 + 58.9500 227.0000 5.0222 + 59.0000 224.0000 4.9889 + 59.0500 222.0000 4.9666 + 59.1000 223.0000 4.9777 + 59.1500 217.0000 4.9103 + 59.2000 213.0000 4.8648 + 59.2500 216.0000 4.8990 + 59.3000 219.0000 4.9329 + 59.3500 219.0000 4.9329 + 59.4000 218.0000 4.9216 + 59.4500 220.0000 4.9441 + 59.5000 220.0000 4.9441 + 59.5500 220.0000 4.9441 + 59.6000 223.0000 4.9777 + 59.6500 233.0000 5.0881 + 59.7000 237.0000 5.1316 + 59.7500 249.0000 5.2599 + 59.8000 258.0000 5.3541 + 59.8500 261.0000 5.3852 + 59.9000 283.0000 5.6075 + 59.9500 304.0000 5.8119 + 60.0000 324.0000 5.6921 + 60.0500 347.0000 5.8907 + 60.1000 353.0000 5.9414 + 60.1500 359.0000 5.9917 + 60.2000 363.0000 6.0249 + 60.2500 352.0000 5.9330 + 60.3000 341.0000 5.8395 + 60.3500 330.0000 5.7446 + 60.4000 308.0000 5.5498 + 60.4500 291.0000 5.3944 + 60.5000 271.0000 5.2058 + 60.5500 254.0000 5.0398 + 60.6000 245.0000 4.9497 + 60.6500 245.0000 4.9497 + 60.7000 239.0000 4.8888 + 60.7500 228.0000 4.7749 + 60.8000 217.0000 4.6583 + 60.8500 217.0000 4.6583 + 60.9000 218.0000 4.6690 + 60.9500 223.0000 4.7223 + 61.0000 207.0000 4.5497 + 61.0500 218.0000 4.6690 + 61.1000 222.0000 4.7117 + 61.1500 215.0000 4.6368 + 61.2000 210.0000 4.5826 + 61.2500 216.0000 4.6476 + 61.3000 213.0000 4.6152 + 61.3500 212.0000 4.6043 + 61.4000 215.0000 4.6368 + 61.4500 212.0000 4.6043 + 61.5000 214.0000 4.6260 + 61.5500 211.0000 4.5935 + 61.6000 214.0000 4.6260 + 61.6500 217.0000 4.6583 + 61.7000 205.0000 4.5277 + 61.7500 207.0000 4.5497 + 61.8000 213.0000 4.6152 + 61.8500 208.0000 4.5607 + 61.9000 211.0000 4.5935 + 61.9500 205.0000 4.5277 + 62.0000 214.0000 4.6260 + 62.0500 213.0000 4.6152 + 62.1000 212.0000 4.6043 + 62.1500 212.0000 4.6043 + 62.2000 213.0000 4.6152 + 62.2500 207.0000 4.5497 + 62.3000 203.0000 4.5056 + 62.3500 211.0000 4.5935 + 62.4000 211.0000 4.5935 + 62.4500 214.0000 4.6260 + 62.5000 214.0000 4.6260 + 62.5500 207.0000 4.5497 + 62.6000 203.0000 4.5056 + 62.6500 212.0000 4.6043 + 62.7000 212.0000 4.6043 + 62.7500 214.0000 4.6260 + 62.8000 213.0000 4.6152 + 62.8500 202.0000 4.4944 + 62.9000 210.0000 4.5826 + 62.9500 211.0000 4.5935 + 63.0000 211.0000 4.5935 + 63.0500 214.0000 4.6260 + 63.1000 221.0000 4.7011 + 63.1500 217.0000 4.6583 + 63.2000 212.0000 4.6043 + 63.2500 214.0000 4.6260 + 63.3000 219.0000 4.6797 + 63.3500 223.0000 4.7223 + 63.4000 225.0000 4.7434 + 63.4500 227.0000 4.7645 + 63.5000 235.0000 4.8477 + 63.5500 240.0000 4.8990 + 63.6000 243.0000 4.9295 + 63.6500 252.0000 5.0200 + 63.7000 249.0000 4.9900 + 63.7500 249.0000 4.9900 + 63.8000 255.0000 5.0498 + 63.8500 262.0000 5.1186 + 63.9000 282.0000 5.3104 + 63.9500 308.0000 5.5498 + 64.0000 351.0000 5.9245 + 64.0500 398.0000 6.3087 + 64.1000 470.0000 6.8557 + 64.1500 525.0000 7.2457 + 64.2000 596.0000 7.7201 + 64.2500 646.0000 8.0374 + 64.3000 681.0000 8.2523 + 64.3500 665.0000 8.1548 + 64.4000 615.0000 7.8422 + 64.4500 563.0000 7.5033 + 64.5000 484.0000 6.9570 + 64.5500 421.0000 6.4885 + 64.6000 364.0000 6.0332 + 64.6500 317.0000 5.6303 + 64.7000 289.0000 5.3759 + 64.7500 261.0000 5.1088 + 64.8000 245.0000 4.9497 + 64.8500 233.0000 4.8270 + 64.9000 228.0000 4.7749 + 64.9500 219.0000 4.6797 + 65.0000 219.0000 4.6797 + 65.0500 217.0000 4.6583 + 65.1000 216.0000 4.6476 + 65.1500 221.0000 4.7011 + 65.2000 215.0000 4.6368 + 65.2500 215.0000 4.6368 + 65.3000 210.0000 4.5826 + 65.3500 212.0000 4.6043 + 65.4000 212.0000 4.6043 + 65.4500 204.0000 4.5166 + 65.5000 209.0000 4.5717 + 65.5500 206.0000 4.5387 + 65.6000 216.0000 4.6476 + 65.6500 207.0000 4.5497 + 65.7000 214.0000 4.6260 + 65.7500 207.0000 4.5497 + 65.8000 209.0000 4.5717 + 65.8500 218.0000 4.6690 + 65.9000 215.0000 4.6368 + 65.9500 222.0000 4.7117 + 66.0000 226.0000 4.7539 + 66.0500 230.0000 4.7958 + 66.1000 239.0000 4.8888 + 66.1500 249.0000 4.9900 + 66.2000 263.0000 5.1284 + 66.2500 275.0000 5.2440 + 66.3000 292.0000 5.4037 + 66.3500 317.0000 5.6303 + 66.4000 323.0000 5.6833 + 66.4500 341.0000 5.8395 + 66.5000 350.0000 5.9161 + 66.5500 330.0000 5.7446 + 66.6000 320.0000 5.6569 + 66.6500 307.0000 5.5408 + 66.7000 284.0000 5.3292 + 66.7500 275.0000 5.2440 + 66.8000 265.0000 5.1478 + 66.8500 269.0000 5.1865 + 66.9000 275.0000 5.2440 + 66.9500 292.0000 5.4037 + 67.0000 311.0000 5.5767 + 67.0500 338.0000 5.8138 + 67.1000 387.0000 6.2209 + 67.1500 413.0000 6.4265 + 67.2000 463.0000 6.8044 + 67.2500 510.0000 7.1414 + 67.3000 534.0000 7.3075 + 67.3500 559.0000 7.4766 + 67.4000 539.0000 7.3417 + 67.4500 533.0000 7.3007 + 67.5000 500.0000 7.0711 + 67.5500 471.0000 6.8629 + 67.6000 455.0000 6.7454 + 67.6500 410.0000 6.4031 + 67.7000 373.0000 6.1074 + 67.7500 342.0000 5.8481 + 67.8000 307.0000 5.5408 + 67.8500 288.0000 5.3666 + 67.9000 286.0000 5.3479 + 67.9500 281.0000 5.3009 + 68.0000 292.0000 5.4037 + 68.0500 291.0000 5.3944 + 68.1000 312.0000 5.5857 + 68.1500 326.0000 5.7096 + 68.2000 336.0000 5.7966 + 68.2500 346.0000 5.8822 + 68.3000 341.0000 5.8395 + 68.3500 327.0000 5.7184 + 68.4000 305.0000 5.5227 + 68.4500 277.0000 5.2631 + 68.5000 267.0000 5.1672 + 68.5500 249.0000 4.9900 + 68.6000 229.0000 4.7854 + 68.6500 221.0000 4.7011 + 68.7000 220.0000 4.6904 + 68.7500 217.0000 4.6583 + 68.8000 211.0000 4.5935 + 68.8500 204.0000 4.5166 + 68.9000 203.0000 4.5056 + 68.9500 220.0000 4.6904 + 69.0000 217.0000 4.6583 + 69.0500 217.0000 4.6583 + 69.1000 214.0000 4.6260 + 69.1500 205.0000 4.5277 + 69.2000 205.0000 4.5277 + 69.2500 211.0000 4.5935 + 69.3000 206.0000 4.5387 + 69.3500 208.0000 4.5607 + 69.4000 201.0000 4.4833 + 69.4500 208.0000 4.5607 + 69.5000 214.0000 4.6260 + 69.5500 212.0000 4.6043 + 69.6000 206.0000 4.5387 + 69.6500 216.0000 4.6476 + 69.7000 219.0000 4.6797 + 69.7500 215.0000 4.6368 + 69.8000 217.0000 4.6583 + 69.8500 211.0000 4.5935 + 69.9000 214.0000 4.6260 + 69.9500 215.0000 4.6368 + 70.0000 224.0000 4.7329 + 70.0500 217.0000 4.6583 + 70.1000 215.0000 4.6368 + 70.1500 218.0000 4.6690 + 70.2000 218.0000 4.6690 + 70.2500 228.0000 4.7749 + 70.3000 227.0000 4.7645 + 70.3500 228.0000 4.7749 + 70.4000 225.0000 4.7434 + 70.4500 219.0000 4.6797 + 70.5000 216.0000 4.6476 + 70.5500 219.0000 4.6797 + 70.6000 218.0000 4.6690 + 70.6500 214.0000 4.6260 + 70.7000 212.0000 4.6043 + 70.7500 221.0000 4.7011 + 70.8000 214.0000 4.6260 + 70.8500 208.0000 4.5607 + 70.9000 204.0000 4.5166 + 70.9500 209.0000 4.5717 + 71.0000 209.0000 4.5717 + 71.0500 208.0000 4.5607 + 71.1000 212.0000 4.6043 + 71.1500 213.0000 4.6152 + 71.2000 218.0000 4.6690 + 71.2500 212.0000 4.6043 + 71.3000 205.0000 4.5277 + 71.3500 207.0000 4.5497 + 71.4000 204.0000 4.5166 + 71.4500 206.0000 4.5387 + 71.5000 211.0000 4.5935 + 71.5500 216.0000 4.6476 + 71.6000 214.0000 4.6260 + 71.6500 210.0000 4.5826 + 71.7000 219.0000 4.6797 + 71.7500 222.0000 4.7117 + 71.8000 224.0000 4.7329 + 71.8500 231.0000 4.8062 + 71.9000 227.0000 4.7645 + 71.9500 237.0000 4.8683 + 72.0000 235.0000 4.8477 + 72.0500 238.0000 4.8785 + 72.1000 245.0000 4.9497 + 72.1500 242.0000 4.9193 + 72.2000 248.0000 4.9800 + 72.2500 246.0000 4.9598 + 72.3000 243.0000 4.9295 + 72.3500 253.0000 5.0299 + 72.4000 259.0000 5.0892 + 72.4500 278.0000 5.2726 + 72.5000 281.0000 5.3009 + 72.5500 297.0000 5.4498 + 72.6000 310.0000 5.5678 + 72.6500 324.0000 5.6921 + 72.7000 322.0000 5.6745 + 72.7500 311.0000 5.5767 + 72.8000 295.0000 5.4314 + 72.8500 281.0000 5.3009 + 72.9000 259.0000 5.0892 + 72.9500 250.0000 5.0000 + 73.0000 239.0000 4.8888 + 73.0500 233.0000 4.8270 + 73.1000 227.0000 4.7645 + 73.1500 226.0000 4.7539 + 73.2000 223.0000 4.7223 + 73.2500 211.0000 4.5935 + 73.3000 209.0000 4.5717 + 73.3500 217.0000 4.6583 + 73.4000 214.0000 4.6260 + 73.4500 213.0000 4.6152 + 73.5000 217.0000 4.6583 + 73.5500 220.0000 4.6904 + 73.6000 210.0000 4.5826 + 73.6500 209.0000 4.5717 + 73.7000 215.0000 4.6368 + 73.7500 218.0000 4.6690 + 73.8000 215.0000 4.6368 + 73.8500 217.0000 4.6583 + 73.9000 221.0000 4.7011 + 73.9500 217.0000 4.6583 + 74.0000 219.0000 4.6797 + 74.0500 220.0000 4.6904 + 74.1000 228.0000 4.7749 + 74.1500 229.0000 4.7854 + 74.2000 230.0000 4.7958 + 74.2500 234.0000 4.8374 + 74.3000 251.0000 5.0100 + 74.3500 261.0000 5.1088 + 74.4000 288.0000 5.3666 + 74.4500 313.0000 5.5946 + 74.5000 362.0000 6.0166 + 74.5500 424.0000 6.5115 + 74.6000 524.0000 7.2388 + 74.6500 646.0000 8.0374 + 74.7000 781.0000 8.8374 + 74.7500 920.0000 9.5917 + 74.8000 1024.0000 10.1193 + 74.8500 1120.0000 10.5830 + 74.9000 1187.0000 10.8950 + 74.9500 1187.0000 10.8950 + 75.0000 1166.0000 10.7981 + 75.0500 1114.0000 10.5546 + 75.1000 1044.0000 10.2176 + 75.1500 991.0000 9.9549 + 75.2000 927.0000 9.6281 + 75.2500 823.0000 9.0719 + 75.3000 717.0000 8.4676 + 75.3500 619.0000 7.8677 + 75.4000 520.0000 7.2111 + 75.4500 421.0000 6.4885 + 75.5000 353.0000 5.9414 + 75.5500 308.0000 5.5498 + 75.6000 273.0000 5.2249 + 75.6500 256.0000 5.0596 + 75.7000 245.0000 4.9497 + 75.7500 234.0000 4.8374 + 75.8000 230.0000 4.7958 + 75.8500 224.0000 4.7329 + 75.9000 232.0000 4.8166 + 75.9500 226.0000 4.7539 + 76.0000 222.0000 4.7117 + 76.0500 222.0000 4.7117 + 76.1000 227.0000 4.7645 + 76.1500 225.0000 4.7434 + 76.2000 226.0000 4.7539 + 76.2500 227.0000 4.7645 + 76.3000 229.0000 4.7854 + 76.3500 235.0000 4.8477 + 76.4000 233.0000 4.8270 + 76.4500 243.0000 4.9295 + 76.5000 238.0000 4.8785 + 76.5500 237.0000 4.8683 + 76.6000 236.0000 4.8580 + 76.6500 232.0000 4.8166 + 76.7000 231.0000 4.8062 + 76.7500 227.0000 4.7645 + 76.8000 225.0000 4.7434 + 76.8500 220.0000 4.6904 + 76.9000 218.0000 4.6690 + 76.9500 215.0000 4.6368 + 77.0000 219.0000 4.6797 + 77.0500 224.0000 4.7329 + 77.1000 225.0000 4.7434 + 77.1500 222.0000 4.7117 + 77.2000 231.0000 4.8062 + 77.2500 243.0000 4.9295 + 77.3000 250.0000 5.0000 + 77.3500 269.0000 5.1865 + 77.4000 286.0000 5.3479 + 77.4500 310.0000 5.5678 + 77.5000 325.0000 5.7009 + 77.5500 332.0000 5.7619 + 77.6000 337.0000 5.8052 + 77.6500 329.0000 5.7359 + 77.7000 303.0000 5.5045 + 77.7500 278.0000 5.2726 + 77.8000 268.0000 5.1769 + 77.8500 252.0000 5.0200 + 77.9000 236.0000 4.8580 + 77.9500 228.0000 4.7749 + 78.0000 219.0000 4.6797 + 78.0500 225.0000 4.7434 + 78.1000 222.0000 4.7117 + 78.1500 214.0000 4.6260 + 78.2000 228.0000 4.7749 + 78.2500 221.0000 4.7011 + 78.3000 217.0000 4.6583 + 78.3500 221.0000 4.7011 + 78.4000 222.0000 4.7117 + 78.4500 226.0000 4.7539 + 78.5000 237.0000 4.8683 + 78.5500 246.0000 4.9598 + 78.6000 255.0000 5.0498 + 78.6500 269.0000 5.1865 + 78.7000 284.0000 5.3292 + 78.7500 302.0000 5.4955 + 78.8000 313.0000 5.5946 + 78.8500 327.0000 5.7184 + 78.9000 321.0000 5.6657 + 78.9500 333.0000 5.7706 + 79.0000 331.0000 5.7533 + 79.0500 332.0000 5.7619 + 79.1000 358.0000 5.9833 + 79.1500 402.0000 6.3403 + 79.2000 460.0000 6.7823 + 79.2500 557.0000 7.4632 + 79.3000 660.0000 8.1240 + 79.3500 769.0000 8.7693 + 79.4000 859.0000 9.2682 + 79.4500 934.0000 9.6644 + 79.5000 955.0000 9.7724 + 79.5500 921.0000 9.5969 + 79.6000 824.0000 9.0774 + 79.6500 694.0000 8.3307 + 79.7000 578.0000 7.6026 + 79.7500 474.0000 6.8848 + 79.8000 402.0000 6.3403 + 79.8500 344.0000 5.8652 + 79.9000 306.0000 5.5317 + 79.9500 300.0000 5.4772 + 80.0000 292.0000 5.4037 + 80.0500 292.0000 5.4037 + 80.1000 302.0000 5.4955 + 80.1500 304.0000 5.5136 + 80.2000 306.0000 5.5317 + 80.2500 305.0000 5.5227 + 80.3000 303.0000 5.5045 + 80.3500 299.0000 5.4681 + 80.4000 278.0000 5.2726 + 80.4500 259.0000 5.0892 + 80.5000 257.0000 5.0695 + 80.5500 245.0000 4.9497 + 80.6000 237.0000 4.8683 + 80.6500 240.0000 4.8990 + 80.7000 233.0000 4.8270 + 80.7500 232.0000 4.8166 + 80.8000 235.0000 4.8477 + 80.8500 241.0000 4.9092 + 80.9000 257.0000 5.0695 + 80.9500 274.0000 5.2345 + 81.0000 292.0000 5.4037 + 81.0500 309.0000 5.5588 + 81.1000 333.0000 5.7706 + 81.1500 360.0000 6.0000 + 81.2000 381.0000 6.1725 + 81.2500 387.0000 6.2209 + 81.3000 387.0000 6.2209 + 81.3500 386.0000 6.2129 + 81.4000 382.0000 6.1806 + 81.4500 368.0000 6.0663 + 81.5000 363.0000 6.0249 + 81.5500 352.0000 5.9330 + 81.6000 337.0000 5.8052 + 81.6500 321.0000 5.6657 + 81.7000 297.0000 5.4498 + 81.7500 281.0000 5.3009 + 81.8000 265.0000 5.1478 + 81.8500 255.0000 5.0498 + 81.9000 251.0000 5.0100 + 81.9500 237.0000 4.8683 + 82.0000 238.0000 4.8785 + 82.0500 237.0000 4.8683 + 82.1000 228.0000 4.7749 + 82.1500 240.0000 4.8990 + 82.2000 234.0000 4.8374 + 82.2500 226.0000 4.7539 + 82.3000 229.0000 4.7854 + 82.3500 228.0000 4.7749 + 82.4000 233.0000 4.8270 + 82.4500 243.0000 4.9295 + 82.5000 241.0000 4.9092 + 82.5500 257.0000 5.0695 + 82.6000 279.0000 5.2820 + 82.6500 305.0000 5.5227 + 82.7000 345.0000 5.8737 + 82.7500 410.0000 6.4031 + 82.8000 455.0000 6.7454 + 82.8500 545.0000 7.3824 + 82.9000 622.0000 7.8867 + 82.9500 673.0000 8.2037 + 83.0000 725.0000 8.5147 + 83.0500 717.0000 8.4676 + 83.1000 661.0000 8.1302 + 83.1500 592.0000 7.6942 + 83.2000 518.0000 7.1972 + 83.2500 443.0000 6.6558 + 83.3000 371.0000 6.0910 + 83.3500 336.0000 5.7966 + 83.4000 290.0000 5.3852 + 83.4500 265.0000 5.1478 + 83.5000 252.0000 5.0200 + 83.5500 250.0000 5.0000 + 83.6000 244.0000 4.9396 + 83.6500 242.0000 4.9193 + 83.7000 241.0000 4.9092 + 83.7500 243.0000 4.9295 + 83.8000 248.0000 4.9800 + 83.8500 253.0000 5.0299 + 83.9000 252.0000 5.0200 + 83.9500 264.0000 5.1381 + 84.0000 266.0000 5.1575 + 84.0500 282.0000 5.3104 + 84.1000 291.0000 5.3944 + 84.1500 313.0000 5.5946 + 84.2000 346.0000 5.8822 + 84.2500 374.0000 6.1156 + 84.3000 415.0000 6.4420 + 84.3500 430.0000 6.5574 + 84.4000 433.0000 6.5803 + 84.4500 430.0000 6.5574 + 84.5000 406.0000 6.3718 + 84.5500 384.0000 6.1968 + 84.6000 349.0000 5.9076 + 84.6500 318.0000 5.6391 + 84.7000 307.0000 5.5408 + 84.7500 298.0000 5.4589 + 84.8000 296.0000 5.4406 + 84.8500 304.0000 5.5136 + 84.9000 313.0000 5.5946 + 84.9500 328.0000 5.7271 + 85.0000 346.0000 5.8822 + 85.0500 341.0000 5.8395 + 85.1000 335.0000 5.7879 + 85.1500 324.0000 5.6921 + 85.2000 336.0000 5.7966 + 85.2500 341.0000 5.8395 + 85.3000 341.0000 5.8395 + 85.3500 370.0000 6.0828 + 85.4000 414.0000 6.4343 + 85.4500 442.0000 6.6483 + 85.5000 490.0000 7.0000 + 85.5500 520.0000 7.2111 + 85.6000 532.0000 7.2938 + 85.6500 548.0000 7.4027 + 85.7000 561.0000 7.4900 + 85.7500 567.0000 7.5299 + 85.8000 585.0000 7.6485 + 85.8500 584.0000 7.6420 + 85.9000 558.0000 7.4699 + 85.9500 527.0000 7.2595 + 86.0000 481.0000 6.9354 + 86.0500 424.0000 6.5115 + 86.1000 370.0000 6.0828 + 86.1500 333.0000 5.7706 + 86.2000 312.0000 5.5857 + 86.2500 301.0000 5.4863 + 86.3000 307.0000 5.5408 + 86.3500 314.0000 5.6036 + 86.4000 340.0000 5.8310 + 86.4500 379.0000 6.1563 + 86.5000 427.0000 6.5345 + 86.5500 467.0000 6.8337 + 86.6000 535.0000 7.3144 + 86.6500 584.0000 7.6420 + 86.7000 602.0000 7.7589 + 86.7500 580.0000 7.6158 + 86.8000 532.0000 7.2938 + 86.8500 481.0000 6.9354 + 86.9000 426.0000 6.5269 + 86.9500 379.0000 6.1563 + 87.0000 329.0000 5.7359 + 87.0500 303.0000 5.5045 + 87.1000 288.0000 5.3666 + 87.1500 271.0000 5.2058 + 87.2000 269.0000 5.1865 + 87.2500 267.0000 5.1672 + 87.3000 263.0000 5.1284 + 87.3500 267.0000 5.1672 + 87.4000 260.0000 5.0990 + 87.4500 260.0000 5.0990 + 87.5000 263.0000 5.1284 + 87.5500 263.0000 5.1284 + 87.6000 270.0000 5.1962 + 87.6500 278.0000 5.2726 + 87.7000 293.0000 5.4129 + 87.7500 318.0000 5.6391 + 87.8000 364.0000 6.0332 + 87.8500 424.0000 6.5115 + 87.9000 512.0000 7.1554 + 87.9500 643.0000 8.0187 + 88.0000 817.0000 9.0388 + 88.0500 982.0000 9.9096 + 88.1000 1163.0000 10.7842 + 88.1500 1289.0000 11.3534 + 88.2000 1373.0000 11.7175 + 88.2500 1393.0000 11.8025 + 88.3000 1348.0000 11.6103 + 88.3500 1244.0000 11.1535 + 88.4000 1157.0000 10.7564 + 88.4500 1077.0000 10.3779 + 88.5000 1020.0000 10.0995 + 88.5500 965.0000 9.8234 + 88.6000 907.0000 9.5237 + 88.6500 858.0000 9.2628 + 88.7000 771.0000 8.7807 + 88.7500 647.0000 8.0436 + 88.8000 555.0000 7.4498 + 88.8500 468.0000 6.8411 + 88.9000 405.0000 6.3640 + 88.9500 348.0000 5.8992 + 89.0000 316.0000 5.6214 + 89.0500 291.0000 5.3944 + 89.1000 277.0000 5.2631 + 89.1500 278.0000 5.2726 + 89.2000 270.0000 5.1962 + 89.2500 262.0000 5.1186 + 89.3000 268.0000 5.1769 + 89.3500 270.0000 5.1962 + 89.4000 279.0000 5.2820 + 89.4500 287.0000 5.3572 + 89.5000 300.0000 5.4772 + 89.5500 319.0000 5.6480 + 89.6000 347.0000 5.8907 + 89.6500 378.0000 6.1482 + 89.7000 420.0000 6.4807 + 89.7500 469.0000 6.8484 + 89.8000 536.0000 7.3212 + 89.8500 645.0000 8.0312 + 89.9000 773.0000 8.7920 + 89.9500 925.0000 9.6177 + 90.0000 1115.0000 10.5594 + 90.0500 1254.0000 11.1982 + 90.1000 1367.0000 11.6919 + 90.1500 1400.0000 11.8322 + 90.2000 1327.0000 11.5195 + 90.2500 1188.0000 10.8995 + 90.3000 1038.0000 10.1882 + 90.3500 879.0000 9.3755 + 90.4000 738.0000 8.5907 + 90.4500 644.0000 8.0250 + 90.5000 594.0000 7.7071 + 90.5500 601.0000 7.7524 + 90.6000 643.0000 8.0187 + 90.6500 697.0000 8.3487 + 90.7000 786.0000 8.8657 + 90.7500 842.0000 9.1761 + 90.8000 847.0000 9.2033 + 90.8500 791.0000 8.8938 + 90.9000 702.0000 8.3785 + 90.9500 592.0000 7.6942 + 91.0000 508.0000 7.1274 + 91.0500 418.0000 6.4653 + 91.1000 362.0000 6.0166 + 91.1500 328.0000 5.7271 + 91.2000 299.0000 5.4681 + 91.2500 279.0000 5.2820 + 91.3000 270.0000 5.1962 + 91.3500 257.0000 5.0695 + 91.4000 253.0000 5.0299 + 91.4500 258.0000 5.0794 + 91.5000 257.0000 5.0695 + 91.5500 249.0000 4.9900 + 91.6000 245.0000 4.9497 + 91.6500 257.0000 5.0695 + 91.7000 260.0000 5.0990 + 91.7500 284.0000 5.3292 + 91.8000 296.0000 5.4406 + 91.8500 322.0000 5.6745 + 91.9000 343.0000 5.8566 + 91.9500 382.0000 6.1806 + 92.0000 405.0000 6.3640 + 92.0500 411.0000 6.4109 + 92.1000 416.0000 6.4498 + 92.1500 406.0000 6.3718 + 92.2000 372.0000 6.0992 + 92.2500 353.0000 5.9414 + 92.3000 330.0000 5.7446 + 92.3500 317.0000 5.6303 + 92.4000 313.0000 5.5946 + 92.4500 312.0000 5.5857 + 92.5000 309.0000 5.5588 + 92.5500 303.0000 5.5045 + 92.6000 288.0000 5.3666 + 92.6500 276.0000 5.2536 + 92.7000 264.0000 5.1381 + 92.7500 246.0000 4.9598 + 92.8000 249.0000 4.9900 + 92.8500 241.0000 4.9092 + 92.9000 251.0000 5.0100 + 92.9500 243.0000 4.9295 + 93.0000 246.0000 4.9598 + 93.0500 246.0000 4.9598 + 93.1000 249.0000 4.9900 + 93.1500 244.0000 4.9396 + 93.2000 252.0000 5.0200 + 93.2500 252.0000 5.0200 + 93.3000 258.0000 5.0794 + 93.3500 265.0000 5.1478 + 93.4000 263.0000 5.1284 + 93.4500 284.0000 5.3292 + 93.5000 299.0000 5.4681 + 93.5500 320.0000 5.6569 + 93.6000 344.0000 5.8652 + 93.6500 363.0000 6.0249 + 93.7000 372.0000 6.0992 + 93.7500 358.0000 5.9833 + 93.8000 351.0000 5.9245 + 93.8500 354.0000 5.9498 + 93.9000 330.0000 5.7446 + 93.9500 322.0000 5.6745 + 94.0000 334.0000 5.7793 + 94.0500 339.0000 5.8224 + 94.1000 345.0000 5.8737 + 94.1500 357.0000 5.9749 + 94.2000 360.0000 6.0000 + 94.2500 358.0000 5.9833 + 94.3000 372.0000 6.0992 + 94.3500 425.0000 6.5192 + 94.4000 511.0000 7.1484 + 94.4500 626.0000 7.9120 + 94.5000 770.0000 8.7750 + 94.5500 946.0000 9.7263 + 94.6000 1118.0000 10.5736 + 94.6500 1205.0000 10.9772 + 94.7000 1227.0000 11.0770 + 94.7500 1157.0000 10.7564 + 94.8000 1041.0000 10.2029 + 94.8500 873.0000 9.3434 + 94.9000 715.0000 8.4558 + 94.9500 562.0000 7.4967 + 95.0000 446.0000 6.6783 + 95.0500 377.0000 6.1400 + 95.1000 332.0000 5.7619 + 95.1500 297.0000 5.4498 + 95.2000 282.0000 5.3104 + 95.2500 276.0000 5.2536 + 95.3000 264.0000 5.1381 + 95.3500 261.0000 5.1088 + 95.4000 266.0000 5.1575 + 95.4500 261.0000 5.1088 + 95.5000 253.0000 5.0299 + 95.5500 258.0000 5.0794 + 95.6000 262.0000 5.1186 + 95.6500 260.0000 5.0990 + 95.7000 283.0000 5.3198 + 95.7500 307.0000 5.5408 + 95.8000 344.0000 5.8652 + 95.8500 402.0000 6.3403 + 95.9000 453.0000 6.7305 + 95.9500 529.0000 7.2732 + 96.0000 604.0000 7.7717 + 96.0500 661.0000 8.1302 + 96.1000 672.0000 8.1976 + 96.1500 629.0000 7.9310 + 96.2000 588.0000 7.6681 + 96.2500 510.0000 7.1414 + 96.3000 440.0000 6.6332 + 96.3500 377.0000 6.1400 + 96.4000 330.0000 5.7446 + 96.4500 301.0000 5.4863 + 96.5000 280.0000 5.2915 + 96.5500 269.0000 5.1865 + 96.6000 258.0000 5.0794 + 96.6500 252.0000 5.0200 + 96.7000 251.0000 5.0100 + 96.7500 252.0000 5.0200 + 96.8000 256.0000 5.0596 + 96.8500 253.0000 5.0299 + 96.9000 253.0000 5.0299 + 96.9500 253.0000 5.0299 + 97.0000 262.0000 5.1186 + 97.0500 265.0000 5.1478 + 97.1000 284.0000 5.3292 + 97.1500 291.0000 5.3944 + 97.2000 323.0000 5.6833 + 97.2500 374.0000 6.1156 + 97.3000 431.0000 6.5651 + 97.3500 511.0000 7.1484 + 97.4000 602.0000 7.7589 + 97.4500 678.0000 8.2341 + 97.5000 743.0000 8.6197 + 97.5500 756.0000 8.6948 + 97.6000 717.0000 8.4676 + 97.6500 657.0000 8.1056 + 97.7000 581.0000 7.6223 + 97.7500 490.0000 7.0000 + 97.8000 418.0000 6.4653 + 97.8500 364.0000 6.0332 + 97.9000 335.0000 5.7879 + 97.9500 306.0000 5.5317 + 98.0000 290.0000 5.3852 + 98.0500 286.0000 5.3479 + 98.1000 283.0000 5.3198 + 98.1500 283.0000 5.3198 + 98.2000 274.0000 5.2345 + 98.2500 262.0000 5.1186 + 98.3000 266.0000 5.1575 + 98.3500 261.0000 5.1088 + 98.4000 261.0000 5.1088 + 98.4500 264.0000 5.1381 + 98.5000 269.0000 5.1865 + 98.5500 278.0000 5.2726 + 98.6000 288.0000 5.3666 + 98.6500 306.0000 5.5317 + 98.7000 319.0000 5.6480 + 98.7500 330.0000 5.7446 + 98.8000 343.0000 5.8566 + 98.8500 341.0000 5.8395 + 98.9000 325.0000 5.7009 + 98.9500 318.0000 5.6391 + 99.0000 298.0000 5.4589 + 99.0500 299.0000 5.4681 + 99.1000 288.0000 5.3666 + 99.1500 309.0000 5.5588 + 99.2000 344.0000 5.8652 + 99.2500 382.0000 6.1806 + 99.3000 422.0000 6.4962 + 99.3500 470.0000 6.8557 + 99.4000 512.0000 7.1554 + 99.4500 514.0000 7.1694 + 99.5000 515.0000 7.1764 + 99.5500 488.0000 6.9857 + 99.6000 440.0000 6.6332 + 99.6500 396.0000 6.2929 + 99.7000 366.0000 6.0498 + 99.7500 332.0000 5.7619 + 99.8000 311.0000 5.5767 + 99.8500 305.0000 5.5227 + 99.9000 300.0000 5.4772 + 99.9500 293.0000 5.4129 + 100.0000 286.0000 5.3479 + 100.0500 306.0000 5.5317 + 100.1000 313.0000 5.5946 + 100.1500 317.0000 5.6303 + 100.2000 327.0000 5.7184 + 100.2500 343.0000 5.8566 + 100.3000 330.0000 5.7446 + 100.3500 320.0000 5.6569 + 100.4000 307.0000 5.5408 + 100.4500 298.0000 5.4589 + 100.5000 282.0000 5.3104 + 100.5500 274.0000 5.2345 + 100.6000 266.0000 5.1575 + 100.6500 274.0000 5.2345 + 100.7000 271.0000 5.2058 + 100.7500 274.0000 5.2345 + 100.8000 290.0000 5.3852 + 100.8500 302.0000 5.4955 + 100.9000 321.0000 5.6657 + 100.9500 350.0000 5.9161 + 101.0000 367.0000 6.0581 + 101.0500 386.0000 6.2129 + 101.1000 394.0000 6.2769 + 101.1500 370.0000 6.0828 + 101.2000 356.0000 5.9666 + 101.2500 332.0000 5.7619 + 101.3000 310.0000 5.5678 + 101.3500 288.0000 5.3666 + 101.4000 279.0000 5.2820 + 101.4500 281.0000 5.3009 + 101.5000 274.0000 5.2345 + 101.5500 284.0000 5.3292 + 101.6000 280.0000 5.2915 + 101.6500 270.0000 5.1962 + 101.7000 278.0000 5.2726 + 101.7500 269.0000 5.1865 + 101.8000 273.0000 5.2249 + 101.8500 268.0000 5.1769 + 101.9000 267.0000 5.1672 + 101.9500 265.0000 5.1478 + 102.0000 257.0000 5.3437 + 102.0500 258.0000 5.3541 + 102.1000 267.0000 5.4467 + 102.1500 267.0000 5.4467 + 102.2000 277.0000 5.5478 + 102.2500 287.0000 5.6470 + 102.3000 302.0000 5.7927 + 102.3500 332.0000 6.0736 + 102.4000 360.0000 6.3246 + 102.4500 411.0000 6.7577 + 102.5000 457.0000 7.1259 + 102.5500 524.0000 7.6303 + 102.6000 608.0000 8.2192 + 102.6500 699.0000 8.8129 + 102.7000 861.0000 9.7809 + 102.7500 1096.0000 11.0353 + 102.8000 1377.0000 12.3693 + 102.8500 1685.0000 13.6829 + 102.9000 1901.0000 14.5335 + 102.9500 2069.0000 15.1621 + 103.0000 2016.0000 14.9666 + 103.0500 1800.0000 14.1421 + 103.1000 1500.0000 12.9099 + 103.1500 1181.0000 11.4552 + 103.2000 937.0000 10.2035 + 103.2500 728.0000 8.9938 + 103.3000 629.0000 8.3600 + 103.3500 576.0000 8.0000 + 103.4000 556.0000 7.8599 + 103.4500 535.0000 7.7100 + 103.5000 519.0000 7.5939 + 103.5500 486.0000 7.3485 + 103.6000 465.0000 7.1880 + 103.6500 429.0000 6.9041 + 103.7000 385.0000 6.5405 + 103.7500 361.0000 6.3333 + 103.8000 342.0000 6.1644 + 103.8500 312.0000 5.8878 + 103.9000 293.0000 5.7057 + 103.9500 279.0000 5.5678 + 104.0000 277.0000 5.5478 + 104.0500 265.0000 5.4263 + 104.1000 257.0000 5.3437 + 104.1500 256.0000 5.3333 + 104.2000 250.0000 5.2705 + 104.2500 260.0000 5.3748 + 104.3000 261.0000 5.3852 + 104.3500 258.0000 5.3541 + 104.4000 263.0000 5.4058 + 104.4500 268.0000 5.4569 + 104.5000 284.0000 5.6174 + 104.5500 306.0000 5.8310 + 104.6000 325.0000 6.0093 + 104.6500 337.0000 6.1192 + 104.7000 337.0000 6.1192 + 104.7500 344.0000 6.1824 + 104.8000 340.0000 6.1464 + 104.8500 337.0000 6.1192 + 104.9000 328.0000 6.0369 + 104.9500 321.0000 5.9722 + 105.0000 306.0000 5.8310 + 105.0500 295.0000 5.7252 + 105.1000 289.0000 5.6667 + 105.1500 281.0000 5.5877 + 105.2000 267.0000 5.4467 + 105.2500 266.0000 5.4365 + 105.3000 270.0000 5.4772 + 105.3500 263.0000 5.4058 + 105.4000 256.0000 5.3333 + 105.4500 266.0000 5.4365 + 105.5000 264.0000 5.4160 + 105.5500 259.0000 5.3645 + 105.6000 261.0000 5.3852 + 105.6500 261.0000 5.3852 + 105.7000 258.0000 5.3541 + 105.7500 253.0000 5.3020 + 105.8000 248.0000 5.2493 + 105.8500 244.0000 5.2068 + 105.9000 249.0000 5.2599 + 105.9500 251.0000 5.2810 + 106.0000 245.0000 5.2175 + 106.0500 245.0000 5.2175 + 106.1000 247.0000 5.2387 + 106.1500 247.0000 5.2387 + 106.2000 254.0000 5.3125 + 106.2500 259.0000 5.3645 + 106.3000 250.0000 5.2705 + 106.3500 251.0000 5.2810 + 106.4000 258.0000 5.3541 + 106.4500 252.0000 5.2915 + 106.5000 255.0000 5.3229 + 106.5500 259.0000 5.3645 + 106.6000 256.0000 5.3333 + 106.6500 264.0000 5.4160 + 106.7000 268.0000 5.4569 + 106.7500 281.0000 5.5877 + 106.8000 303.0000 5.8023 + 106.8500 331.0000 6.0645 + 106.9000 371.0000 6.4205 + 106.9500 420.0000 6.8313 + 107.0000 484.0000 7.3333 + 107.0500 532.0000 7.6884 + 107.1000 576.0000 8.0000 + 107.1500 582.0000 8.0416 + 107.2000 563.0000 7.9092 + 107.2500 527.0000 7.6522 + 107.3000 490.0000 7.3786 + 107.3500 465.0000 7.1880 + 107.4000 467.0000 7.2034 + 107.4500 449.0000 7.0632 + 107.5000 416.0000 6.7987 + 107.5500 393.0000 6.6081 + 107.6000 366.0000 6.3770 + 107.6500 331.0000 6.0645 + 107.7000 316.0000 5.9255 + 107.7500 297.0000 5.7446 + 107.8000 294.0000 5.7155 + 107.8500 292.0000 5.6960 + 107.9000 286.0000 5.6372 + 107.9500 295.0000 5.7252 + 108.0000 306.0000 6.1847 + 108.0500 315.0000 6.2750 + 108.1000 334.0000 6.4614 + 108.1500 373.0000 6.8282 + 108.2000 406.0000 7.1239 + 108.2500 447.0000 7.4750 + 108.3000 499.0000 7.8978 + 108.3500 507.0000 7.9608 + 108.4000 506.0000 7.9530 + 108.4500 488.0000 7.8102 + 108.5000 432.0000 7.3485 + 108.5500 391.0000 6.9911 + 108.6000 342.0000 6.5383 + 108.6500 315.0000 6.2750 + 108.7000 292.0000 6.0415 + 108.7500 275.0000 5.8630 + 108.8000 274.0000 5.8523 + 108.8500 259.0000 5.6899 + 108.9000 250.0000 5.5902 + 108.9500 258.0000 5.6789 + 109.0000 252.0000 5.6125 + 109.0500 255.0000 5.6458 + 109.1000 254.0000 5.6347 + 109.1500 253.0000 5.6236 + 109.2000 254.0000 5.6347 + 109.2500 252.0000 5.6125 + 109.3000 257.0000 5.6679 + 109.3500 250.0000 5.5902 + 109.4000 255.0000 5.6458 + 109.4500 251.0000 5.6013 + 109.5000 254.0000 5.6347 + 109.5500 260.0000 5.7009 + 109.6000 249.0000 5.5790 + 109.6500 253.0000 5.6236 + 109.7000 254.0000 5.6347 + 109.7500 259.0000 5.6899 + 109.8000 268.0000 5.7879 + 109.8500 270.0000 5.8095 + 109.9000 284.0000 5.9582 + 109.9500 305.0000 6.1745 + 110.0000 322.0000 6.3443 + 110.0500 364.0000 6.7454 + 110.1000 417.0000 7.2198 + 110.1500 470.0000 7.6649 + 110.2000 573.0000 8.4632 + 110.2500 678.0000 9.2060 + 110.3000 771.0000 9.8171 + 110.3500 847.0000 10.2896 + 110.4000 854.0000 10.3320 + 110.4500 794.0000 9.9624 + 110.5000 720.0000 9.4868 + 110.5500 611.0000 8.7393 + 110.6000 520.0000 8.0623 + 110.6500 463.0000 7.6076 + 110.7000 412.0000 7.1764 + 110.7500 399.0000 7.0622 + 110.8000 416.0000 7.2111 + 110.8500 428.0000 7.3144 + 110.9000 432.0000 7.3485 + 110.9500 420.0000 7.2457 + 111.0000 402.0000 7.0887 + 111.0500 364.0000 6.7454 + 111.1000 348.0000 6.5955 + 111.1500 334.0000 6.4614 + 111.2000 321.0000 6.3344 + 111.2500 330.0000 6.4226 + 111.3000 342.0000 6.5383 + 111.3500 380.0000 6.8920 + 111.4000 385.0000 6.9372 + 111.4500 420.0000 7.2457 + 111.5000 441.0000 7.4246 + 111.5500 465.0000 7.6240 + 111.6000 444.0000 7.4498 + 111.6500 406.0000 7.1239 + 111.7000 383.0000 6.9192 + 111.7500 345.0000 6.5670 + 111.8000 332.0000 6.4420 + 111.8500 321.0000 6.3344 + 111.9000 308.0000 6.2048 + 111.9500 292.0000 6.0415 + 112.0000 303.0000 6.1543 + 112.0500 314.0000 6.2650 + 112.1000 333.0000 6.4517 + 112.1500 379.0000 6.8829 + 112.2000 438.0000 7.3993 + 112.2500 505.0000 7.9451 + 112.3000 594.0000 8.6168 + 112.3500 659.0000 9.0761 + 112.4000 717.0000 9.4670 + 112.4500 738.0000 9.6047 + 112.5000 710.0000 9.4207 + 112.5500 642.0000 8.9582 + 112.6000 547.0000 8.2689 + 112.6500 492.0000 7.8422 + 112.7000 421.0000 7.2543 + 112.7500 386.0000 6.9462 + 112.8000 344.0000 6.5574 + 112.8500 337.0000 6.4904 + 112.9000 350.0000 6.6144 + 112.9500 364.0000 6.7454 + 113.0000 415.0000 7.2024 + 113.0500 506.0000 7.9530 + 113.1000 586.0000 8.5586 + 113.1500 674.0000 9.1788 + 113.2000 750.0000 9.6825 + 113.2500 787.0000 9.9184 + 113.3000 753.0000 9.7018 + 113.3500 682.0000 9.2331 + 113.4000 597.0000 8.6386 + 113.4500 499.0000 7.8978 + 113.5000 417.0000 7.2198 + 113.5500 362.0000 6.7268 + 113.6000 340.0000 6.5192 + 113.6500 302.0000 6.1441 + 113.7000 286.0000 5.9791 + 113.7500 280.0000 5.9161 + 113.8000 283.0000 5.9477 + 113.8500 276.0000 5.8737 + 113.9000 282.0000 5.9372 + 113.9500 284.0000 5.9582 + 114.0000 295.0000 6.4918 + 114.0500 310.0000 6.6548 + 114.1000 319.0000 6.7507 + 114.1500 321.0000 6.7718 + 114.2000 304.0000 6.5900 + 114.2500 298.0000 6.5247 + 114.3000 293.0000 6.4697 + 114.3500 283.0000 6.3583 + 114.4000 277.0000 6.2906 + 114.4500 269.0000 6.1991 + 114.5000 265.0000 6.1528 + 114.5500 277.0000 6.2906 + 114.6000 283.0000 6.3583 + 114.6500 283.0000 6.3583 + 114.7000 293.0000 6.4697 + 114.7500 303.0000 6.5792 + 114.8000 320.0000 6.7612 + 114.8500 316.0000 6.7188 + 114.9000 331.0000 6.8765 + 114.9500 346.0000 7.0305 + 115.0000 327.0000 6.8348 + 115.0500 328.0000 6.8452 + 115.1000 306.0000 6.6117 + 115.1500 291.0000 6.4476 + 115.2000 286.0000 6.3920 + 115.2500 278.0000 6.3019 + 115.3000 273.0000 6.2450 + 115.3500 267.0000 6.1760 + 115.4000 272.0000 6.2335 + 115.4500 257.0000 6.0592 + 115.5000 260.0000 6.0945 + 115.5500 265.0000 6.1528 + 115.6000 264.0000 6.1412 + 115.6500 272.0000 6.2335 + 115.7000 270.0000 6.2106 + 115.7500 268.0000 6.1875 + 115.8000 269.0000 6.1991 + 115.8500 287.0000 6.4031 + 115.9000 292.0000 6.4587 + 115.9500 295.0000 6.4918 + 116.0000 317.0000 6.7295 + 116.0500 335.0000 6.9179 + 116.1000 364.0000 7.2111 + 116.1500 410.0000 7.6532 + 116.2000 477.0000 8.2549 + 116.2500 556.0000 8.9123 + 116.3000 642.0000 9.5768 + 116.3500 755.0000 10.3854 + 116.4000 864.0000 11.1098 + 116.4500 946.0000 11.6251 + 116.5000 970.0000 11.7716 + 116.5500 941.0000 11.5943 + 116.6000 870.0000 11.1484 + 116.6500 759.0000 10.4129 + 116.7000 647.0000 9.6140 + 116.7500 540.0000 8.7831 + 116.8000 468.0000 8.1766 + 116.8500 418.0000 7.7275 + 116.9000 379.0000 7.3582 + 116.9500 381.0000 7.3776 + 117.0000 405.0000 7.6064 + 117.0500 446.0000 7.9821 + 117.1000 476.0000 8.2462 + 117.1500 523.0000 8.6437 + 117.2000 561.0000 8.9523 + 117.2500 555.0000 8.9043 + 117.3000 529.0000 8.6932 + 117.3500 485.0000 8.3238 + 117.4000 436.0000 7.8921 + 117.4500 398.0000 7.5404 + 117.5000 355.0000 7.1214 + 117.5500 322.0000 6.7823 + 117.6000 304.0000 6.5900 + 117.6500 285.0000 6.3808 + 117.7000 270.0000 6.2106 + 117.7500 278.0000 6.3019 + 117.8000 260.0000 6.0945 + 117.8500 268.0000 6.1875 + 117.9000 264.0000 6.1412 + 117.9500 265.0000 6.1528 + 118.0000 263.0000 6.1296 + 118.0500 267.0000 6.1760 + 118.1000 286.0000 6.3920 + 118.1500 293.0000 6.4697 + 118.2000 291.0000 6.4476 + 118.2500 319.0000 6.7507 + 118.3000 366.0000 7.2309 + 118.3500 411.0000 7.6625 + 118.4000 461.0000 8.1152 + 118.4500 489.0000 8.3581 + 118.5000 521.0000 8.6272 + 118.5500 555.0000 8.9043 + 118.6000 550.0000 8.8641 + 118.6500 511.0000 8.5440 + 118.7000 486.0000 8.3324 + 118.7500 436.0000 7.8921 + 118.8000 392.0000 7.4833 + 118.8500 368.0000 7.2506 + 118.9000 330.0000 6.8661 + 118.9500 328.0000 6.8452 + 119.0000 343.0000 7.0000 + 119.0500 371.0000 7.2801 + 119.1000 394.0000 7.5024 + 119.1500 441.0000 7.9373 + 119.2000 468.0000 8.1766 + 119.2500 469.0000 8.1854 + 119.3000 456.0000 8.0711 + 119.3500 416.0000 7.7090 + 119.4000 394.0000 7.5024 + 119.4500 361.0000 7.1813 + 119.5000 330.0000 6.8661 + 119.5500 312.0000 6.6762 + 119.6000 293.0000 6.4697 + 119.6500 285.0000 6.3808 + 119.7000 286.0000 6.3920 + 119.7500 275.0000 6.2678 + 119.8000 274.0000 6.2564 + 119.8500 281.0000 6.3358 + 119.9000 279.0000 6.3133 + 119.9500 298.0000 6.5247 + 120.0000 312.0000 7.2111 diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index f4a3f7bb..546c7917 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -8,8 +8,8 @@ class InterfaceFactory(InterfaceFactoryTemplate): - def __init__(self): - super(InterfaceFactory, self).__init__(InterfaceTemplate._interfaces) + def __init__(self, *args, **kwargs): + super(InterfaceFactory, self).__init__(InterfaceTemplate._interfaces, *args, **kwargs) def get_hkl(self, x_array=None, idx=None) -> dict: return self().get_hkl(x_array) From 76f777a327ef9530a7e937a58c7f3f07f643d97e Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 27 Sep 2021 17:12:43 +0200 Subject: [PATCH 183/312] Disable debug output for CFML --- easyDiffractionLib/Calculators/CFML.py | 22 +++++++++++----------- easyDiffractionLib/Calculators/GSASII.py | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index e81bb809..dafcbbfb 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -51,7 +51,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if self.filename is None: raise AttributeError - print("\n\n\n") + #print("\n\n\n") start_time = timeit.default_timer() if self.pattern is None: @@ -62,7 +62,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: offset = self.pattern.zero_shift.raw_value end_time = timeit.default_timer() - print("+ calculate A: {0:.4f} s".format(end_time - start_time)) + #print("+ calculate A: {0:.4f} s".format(end_time - start_time)) start_time = timeit.default_timer() @@ -76,7 +76,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: job_info = cif_file.job_info end_time = timeit.default_timer() - print("+ calculate B: {0:.4f} s".format(end_time - start_time)) + #print("+ calculate B: {0:.4f} s".format(end_time - start_time)) start_time = timeit.default_timer() @@ -101,7 +101,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: job_info.bkg = 0.0 end_time = timeit.default_timer() - print("+ calculate C: {0:.4f} s".format(end_time - start_time)) + #print("+ calculate C: {0:.4f} s".format(end_time - start_time)) # Calculations try: @@ -111,14 +111,14 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: True, job_info) end_time = timeit.default_timer() - print("+ reflection_list = CFML_api.ReflectionList: {0:.4f} s".format(end_time - start_time)) + #print("+ reflection_list = CFML_api.ReflectionList: {0:.4f} s".format(end_time - start_time)) start_time = timeit.default_timer() reflection_list.compute_structure_factors(space_group, atom_list, job_info) end_time = timeit.default_timer() - print("+ reflection_list.compute_structure_factors: {0:.4f} s".format(end_time - start_time)) + #print("+ reflection_list.compute_structure_factors: {0:.4f} s".format(end_time - start_time)) start_time = timeit.default_timer() @@ -130,14 +130,14 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: self.hkl_dict['l'] = hkltth[:, 2] end_time = timeit.default_timer() - print("+ set reflection_list: {0:.4f} s".format(end_time - start_time)) + #print("+ set reflection_list: {0:.4f} s".format(end_time - start_time)) start_time = timeit.default_timer() diffraction_pattern = CFML_api.DiffractionPattern(job_info, reflection_list, cell.reciprocal_cell_vol) end_time = timeit.default_timer() - print("+ diffraction_pattern = CFML_api.DiffractionPattern: {0:.4f} s".format(end_time - start_time)) + #print("+ diffraction_pattern = CFML_api.DiffractionPattern: {0:.4f} s".format(end_time - start_time)) except: raise ArithmeticError @@ -151,7 +151,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: p.unlink() end_time = timeit.default_timer() - print("+ calculate D: {0:.4f} s".format(end_time - start_time)) + #print("+ calculate D: {0:.4f} s".format(end_time - start_time)) start_time = timeit.default_timer() @@ -163,7 +163,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: res = scale * diffraction_pattern.ycalc + bg end_time = timeit.default_timer() - print("+ calculate E: {0:.4f} s".format(end_time - start_time)) + #print("+ calculate E: {0:.4f} s".format(end_time - start_time)) start_time = timeit.default_timer() @@ -172,7 +172,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: print(f"y_calc: {res}") end_time = timeit.default_timer() - print("+ calculate F: {0:.4f} s".format(end_time - start_time)) + #print("+ calculate F: {0:.4f} s".format(end_time - start_time)) return res diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index 11d99f68..4c6f4a8e 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -102,7 +102,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: val2 = None LGmix = 0.0 # 1.0 -> 0.0: NO VISIBLE INFLUENCE... phase0.setSampleProfile(phase_index, 'size', 'isotropic', val1, val2=val2, LGmix=LGmix) - print("- size", phase0.data['Histograms'][f'PWDR {phase_name} simulation']['Size']) + #print("- size", phase0.data['Histograms'][f'PWDR {phase_name} simulation']['Size']) u = self.conditions["u_resolution"] * 1850 # ~ CrysPy/CrysFML v = self.conditions["v_resolution"] * 1850 # ~ CrysPy/CrysFML From 71be21855fd377d40d450750fae0c6463e29a494 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 27 Sep 2021 17:13:56 +0200 Subject: [PATCH 184/312] Use easyCore from the develop branch --- pyproject.toml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2d5645d5..7b3afcdf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,13 +23,13 @@ secondary = true [tool.poetry.dependencies] python = "^3.7, <3.9" -#cryspy = "^0.5" -cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } matplotlib = "^3.4" +py3Dmol = "^1.7.0" # easyScience +cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } CFML = '^0.0.1' GSASII = '^0.0.1' -easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } +easysciencecore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } # "^0.1.0" [tool.poetry.dev-dependencies] pytest = "^5.2" @@ -37,6 +37,7 @@ toml = "^0.10" requests = '^2.24' hvplot = "^0.7.0" jupyter = "^1.0.0" +ipympl = "^0.8.0" [tool.poetry.scripts] easyDiffractionLib = "easyDiffractionLib.main:main" From 4cd03c15c7e7a4c6f115cef6c1b9d44be614d1a5 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 27 Sep 2021 17:16:27 +0200 Subject: [PATCH 185/312] Update fitting notebook --- ...Powder1D.ipynb => FittingPowder1DCW.ipynb} | 1441 +++++++++-- Notebooks/PbSO4/D1A@ILL.xye | 2202 ----------------- Notebooks/PbSO4/PbSO4.cif | 25 - Notebooks/PbSO4/PbSO4_neutrons_short.xye | 2202 ----------------- Notebooks/PbSO4_neutrons_short.xye | 2202 ----------------- 5 files changed, 1273 insertions(+), 6799 deletions(-) rename Notebooks/{PbSO4/FittingPowder1D.ipynb => FittingPowder1DCW.ipynb} (51%) delete mode 100644 Notebooks/PbSO4/D1A@ILL.xye delete mode 100644 Notebooks/PbSO4/PbSO4.cif delete mode 100644 Notebooks/PbSO4/PbSO4_neutrons_short.xye delete mode 100644 Notebooks/PbSO4_neutrons_short.xye diff --git a/Notebooks/PbSO4/FittingPowder1D.ipynb b/Notebooks/FittingPowder1DCW.ipynb similarity index 51% rename from Notebooks/PbSO4/FittingPowder1D.ipynb rename to Notebooks/FittingPowder1DCW.ipynb index c8e59cf6..53872be1 100644 --- a/Notebooks/PbSO4/FittingPowder1D.ipynb +++ b/Notebooks/FittingPowder1DCW.ipynb @@ -30,7 +30,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/GSASII/bindist\n", + "GSAS-II binary directory: /Users/asazonov/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/GSASII/bindist\n", "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" ] } @@ -157,10 +157,10 @@ "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + "

\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] @@ -207,7 +207,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -2487,7 +2487,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "scrolled": true }, @@ -2495,17 +2495,17 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "eb5d1e54530a401ebc223e8a9dad00eb", + "model_id": "05d53cfe89454f0ebe0c6d3ed1799313", "version_major": 2, "version_minor": 0 }, @@ -2540,7 +2540,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -2552,21 +2552,21 @@ } ], "source": [ - "calculator = Calculator()\n", + "calculator = Calculator(interface_name='CrysPy')\n", "\n", "print(f\"Current calculator engine: {calculator.current_interface_name}\")" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Temp CIF: /tmp/easydiffraction_temp.cif\n" + "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" ] } ], @@ -2583,7 +2583,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -2599,7 +2599,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "scrolled": true }, @@ -2607,17 +2607,17 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "6988f908ec014e18a3eb70e1e2fddbaf", + "model_id": "bd67b0a81e4e40d48439cf8302bbf624", "version_major": 2, "version_minor": 0 }, @@ -2646,7 +2646,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -2655,23 +2655,23 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "927e5e8781ff431ea1df107177006e0c", + "model_id": "1ee254c7e0c847878d6ad14936b482eb", "version_major": 2, "version_minor": 0 }, @@ -2702,7 +2702,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -2711,27 +2711,27 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 15, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a1722d240d2143f1a7fe9c2da868348c", + "model_id": "6216bc5ac64747069333b822ae4a4f2c", "version_major": 2, "version_minor": 0 }, - "image/png": "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BI8++iiOPvpo9OvXD+PHj8cjjzyC66+/HgDw+OOPo6KiAm+88QaGDh2KgoICfPbZZ8jLy0N1dbXhOJdeeimOOuooAMD69etx0kknoXPnzigpKcGBBx6Id955x7B+ZWUlqqqqMGbMGPz973/Htm3bsGDBAtx8880YNmyY6TwOOuggXHfddfrfJ510Ep5//vmY/UTs8We6AYSQ3EKMAaQFkLhCUYBAY2aOnVcMeDwJbXr11Vfj4Ycfxj333IMjjzwSW7duxQ8//KB/36lTJzz++OPo1asXlixZggsuuACdOnXClVdeabm/Bx54ADNnzsRtt92GyZMno7a2Fp9//rnt8T/99FMMGjQInTp10pe99NJLaG1ttT1GRUWF/rmxsRG33347HnnkEVRWVqJ3794YMGAAnnrqKVxxxRUAgEAggGeeeQZ33HEHAGD69OlobW3FJ598gpKSEixfvhylpaW2bSwqKgKgxiqed955uOmmm/DVV1/hkEMOAQB8++23WLx4MV555RV9m0MPPRSbNm3CunXr0K9fP9t9E2soAAkhaYUxgCRhAo3A33pl5tjXbAHyS1xvtnfvXtx7773497//jalTpwIA9ttvPxx55JH6Otdee63+uV+/fvjTn/6E559/3lac/eUvf8Hll1+OP/7xj/oyTShZsX79evTqZey3lStXoqysDD179ox7DoFAAPfffz9GjhypL5s2bRoee+wxXQC++eabaG5uxumnnw4A2LBhA0477TQMHz4cADBgwADb/dfU1OCWW25BaWkpDj30UPTo0QOTJk3CY489pp/XY489hp/85CeG/WjntH79egrABKALmBCSVgwzgaQmlIiQrOX7779HS0sLjjvuONt1XnjhBRxxxBGoqqpCaWkprr32WmzYsMFy3e3bt2PLli0x9yfT1NSEwsJCwzJFUeBxaNHMz8/HiBEjDMvOPfdcrFq1CvPnzweguopPP/10lJSoIvmSSy7BX/7yFxxxxBG44YYbsHjxYtN+Dz/8cJSWlqJz58747rvv8MILL6BHjx4AgAsuuADPPfccmpub0draimeffRbnnXeeYXvNatjYmCGrcDuHFkBCSFoxzATCGEDihrxi1RKXqWMngCZS7Jg3bx7OOuss3HTTTZg0aRLKy8vx/PPP2yZhxNufFV27dsWSJUsMywYNGoTa2lps3bo1rhWwqKjI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", + "image/png": "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vr4e9fX1aG9vBwAsX74ct912G+bMmYOVK1fi1VdfxbnnnoujjjoKe++9NwDguOOOw5gxY3DOOefg66+/xjvvvIMbb7wRkyZNQmVlJQDg4osvxnfffYdrrrkGixcvxoMPPogXXngBV1xxRcmOnRBCCCGkGHQ6AfjQQw+hsbERRx99NIYMGeL8Pf/88wCAYDCI9957D8cddxxGjRqFq666CmeccQZee+01Zxt+vx+vv/46/H4/xo0bh1/84hc499xzpbqBI0aMwBtvvIGpU6din332wT333IN//OMfrAFISAdjGCbunfotPlq6udRNIaTDOfroo/Gb3/wGl19+Ofr27YvBgwfjscceQ2trKy644ALU1NRgt912w1tvvSWtt2DBAkyYMAG9evXC4MGDcc4552DLli3O/LfffhtHHHEE+vTpg/79++NHP/oRli9f7syPRCK49NJLMWTIEFRVVWH48OGYMmVK0Y6bdH46XRJIurKEw4YNc40C4sXw4cPx5ptvplzm6KOPxldffZVV+wgh+fHmgg3427SlAICVd5xY4taQroRpmmiP6iXZd3WFP+ds5H/961+45pprMHv2bDz//PO45JJL8PLLL+O0007DDTfcgHvvvRfnnHMOVq9ejR49eqChoQE/+MEPcOGFF+Lee+9Fe3s7rr32Wvz0pz/F+++/DwBobW3FlVdeib333hstLS2YPHkyTjvtNMydOxc+nw/33XcfXn31VbzwwgvYaaedsGbNGqxZs6aQp4R0cTqdACSEdG/qG0OlbgLporRHdYyZ/E5J9r3o1vHoEcyty9xnn31w4403ArCqSdxxxx0YMGAALrroIgDA5MmT8dBDD2HevHk49NBDcf/992O//fZzRq4CgMcffxzDhg3Dt99+i9133x1nnHGGtI/HH38cAwcOxKJFi7DXXnth9erVGDlyJI444ghomobhw4fneOSku9LpXMCEkO5NZYCPHVJe2PHpgBWi1L9/f4wdO9aZZtektRMXv/76a2cce/tv1KhRAOC4eZcuXYqzzjoLu+yyC2pra7HzzjsDAFavXg3ASkSZO3cu9thjD1x22WV49913O/w4SdeCFkBCSFGprPA7n8MxHZUBf4qlCUlQXeHHoltLE6ddXZH7dVpRUSF91zRNmma7lg3DAGCNf3zSSSfhzjvvdG3LrnZx0kknYfjw4XjssccwdOhQGIaBvfbaC5FIBACw//77Y8WKFXjrrbfw3nvv4ac//SmOPfZY/Oc//8n5OEj3ggKQEFJUfEIcVSRmUACSjNE0LWc3bFdi//33x3//+1/svPPOCATcx7t161YsWbIEjz32GI488kgAcA2YAAC1tbX42c9+hp/97Gf48Y9/jOOPPx7btm1zDa1KyhP6YgghRUWPWzkAIHXKFyHlyaRJk7Bt2zacddZZ+Pzzz7F8+XK88847uOCCC6DrOvr27Yv+/fvj0UcfxbJly/D+++9Lo1QBwF/+8hc8++yzWLx4Mb799lu8+OKLqKurQ58+fUpzUKTTQQFICCkqUT0h+0wjxYKElClDhw7FJ598Al3Xcdxxx2Hs2LG4/PLL0adPH/h8Pvh8Pjz33HOYM2cO9tprL1xxxRX485//LG2jpqYGd911Fw488EAcdNBBWLlyJd58802Oj0scNDNd3RWSlKamJvTu3RuNjY0cFo6QDPnXpyvxh1cXAgDmTv4h+vQIlrhFpLMSCoWwYsUKjBgxAlVVVaVuDulipLp+2H/TAkgIKTIxI/HOafD1kxBCSgIFICGkqBiSAKQCJISQUkABSAgpKqaQ+kH9RwghpYECkBBSVETRxxBkQggpDRSAhJCiIsb9Uf4RQkhpoAAkhBQV0QXMGEBCCCkNFICEkKIiaj5mARNCSGmgACSEFBUx7o8xgIQQUhooAAkhRUVOAildOwghpJyhACSEFBVR81EAEpKem2++Gfvuu29e24hEIthtt93w6aefFqZRJea6667Db37zm1I3o0tDAUgIKSpi4geTQEh35Pzzz8epp55a6mZIPPzwwxgxYgQOO+wwafoHH3yAE044Af3790ePHj0wZswYXHXVVVi3bl2HtWXlypXQNM3569+/P4477jh89dVXGW/jd7/7Hf71r3/hu+++67B2dncoAAkhRcVkGRhCioppmrj//vsxceJEafojjzyCY489FnV1dfjvf/+LRYsW4eGHH0ZjYyPuuecez23pug7DMArSrvfeew8bNmzAO++8g5aWFkyYMAENDQ0ZrTtgwACMHz8eDz30UEHaUo5QABJCiopJCyApMwzDwF133YXddtsNlZWV2GmnnfDHP/7RmX/ttddi9913R48ePbDLLrvgpptuQjQaTbnNxx9/HHvuuScqKysxZMgQXHrppUmXnTNnDpYvX44TTzzRmbZ27VpcdtlluOyyy/D444/j6KOPxs4774yjjjoK//jHPzB58mQAwJNPPok+ffrg1VdfxZgxY1BZWYmPP/4YFRUVqK+vl/Zz+eWX48gjjwQArFq1CieddBL69u2Lnj17Ys8998Sbb74pLd+/f3/U1dXhwAMPxN13342NGzdi1qxZuPXWW7HXXnu5jmPffffFTTfd5Hw/6aST8Nxzz6U8TyQ5gVI3gBBSXsgxgBSAJAtME4i2lWbfFT0ATctp1euvvx6PPfYY7r33XhxxxBHYsGEDFi9e7MyvqanBk08+iaFDh2L+/Pm46KKLUFNTg2uuucZzew899BCuvPJK3HHHHZgwYQIaGxvxySefJN3/Rx99hN133x01NTXOtBdffBGRSCTpPvr06eN8bmtrw5133ol//OMf6N+/P4YNG4ZddtkF//d//4err74aABCNRvH000/jrrvuAgBMmjQJkUgEM2bMQM+ePbFo0SL06tUraRurq6sBWLGKv/zlL3HLLbfg888/x0EHHQQA+OqrrzBv3jy89NJLzjoHH3ww1q5di5UrV2LnnXdOum3iDQUgIaSoMAuY5Ey0DfjT0NLs+4b1QLBn1qs1Nzfjb3/7G+6//36cd955AIBdd90VRxxxhLPMjTfe6Hzeeeed8bvf/Q7PPfdcUnF2++2346qrrsJvf/tbZ5otlLxYtWoVhg6Vz9vSpUtRW1uLIUOGpD2GaDSKBx98EPvss48zbeLEiXjiiSccAfjaa68hFArhpz/9KQBg9erVOOOMMzB27FgAwC677JJ0+w0NDbjtttvQq1cvHHzwwRg8eDDGjx+PJ554wjmuJ554At/73vek7djHtGrVKgrAHKALmBBSVOQkkBI2hJAi8M033yAcDuOYY45Juszzzz+Pww8/HHV1dejVqxduvPFGrF692nPZTZs2Yf369Sm3p9Le3o6qqippmmma0DK0aAaDQey9997StPPPPx/Lli3DZ599BsByFf/0pz9Fz56WSL7ssstw++234/DDD8cf/vAHzJs3z7Xdww47DL169ULfvn3x9ddf4/nnn8fgwYMBABdddBGeffZZhEIhRCIRPPPMM/jlL38prW9bDdvaSmQV7uLQAkgIKSqSC5hpICQbKnpYlrhS7TsHbJGSjJkzZ+Lss8/GLbfcgvHjx6N379547rnnkiZhpNueFwMGDMD8+fOlabvvvjsaGxuxYcOGtFbA6upql1gcNGgQTjrpJDzxxBMYMWIE3nrrLXz44YfO/AsvvBDjx4/HG2+8gXfffRdTpkzBPffcI5Vuef755zFmzBj0799fcjkDVnxfZWUlXn75ZQSDQUSjUfz4xz+Wltm2bRsAYODAgZmeCiJACyAhpKhIQ8EVJpmQlAuaZrlhS/GXY/zfyJEjUV1djWnTpnnO//TTTzF8+HD8/ve/x4EHHoiRI0di1apVSbdXU1ODnXfeOen2vNhvv/2wePFiKeb2xz/+MYLBoBOzp5JJNu6FF16I559/Ho8++ih23XVXHH744dL8YcOG4eKLL8ZLL72Eq666Co899phr/q677uoSfwAQCARw3nnn4YknnsATTzyBM8880yV+FyxYgIqKCuy5555p20rc0AJICCkqzAIm5URVVRWuvfZaXHPNNQgGgzj88MOxefNmLFy4EBMnTsTIkSOxevVqPPfcczjooIPwxhtv4OWXX065zZtvvhkXX3wxBg0ahAkTJqC5uRmffPJJ0sLI3//+99HS0oKFCxc62bXDhg3Dvffei0svvRRNTU0499xzsfPOO2Pt2rX497//jV69eiW1QtqMHz8etbW1uP3223HrrbdK8y6//HJMmDABu+++O7Zv344PPvgAo0ePzuLMWQLTXscryeWjjz7CkUcemZNVlNACSAgpMpR8pNy46aabcNVVV2Hy5MkYPXo0fvazn2HTpk0AgJNPPhlXXHEFLr30Uuy777749NNPpVInXpx33nn461//igcffBB77rknfvSjH2Hp0qVJl+/fvz9OO+00PP3009L0X//613j33Xexbt06nHbaaRg1ahQuvPBC1NbW4ne/+13a4/L5fDj//POh6zrOPfdcaZ6u65g0aRJGjx6N448/HrvvvjsefPDBtNsUGTlyJA477DCMGjUKhxxyiGv+c889h4suuiirbZIEmsk6DDnT1NSE3r17o7GxEbW1taVuDiFdgttfX4R/fLwCAPDqpYdj7x37lLZBpNMSCoWwYsUKjBgxwpXEQLJj3rx5+OEPf4jly5enLMeSLRMnTsTmzZvx6quvFmybNqZpYuTIkfj1r3+NK6+8Upr31ltv4aqrrsK8efMQCHg7M1NdP+y/6QImhBQZjgVMSPHZe++9ceedd2LFihVOaZZ8aGxsxPz58/HMM890iPjb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+GNz5MiR5llnnVWqQyoJqc5jJBIxTz75ZHPHHXc0586dK/U74XDY2QbPY/5QAJKUAPD8e+KJJ5xl2tvbzV//+tdm3759zR49epinnXaauWHDhtI1ugugCkCew8x57bXXzL322susrKw0R40aZT766KPSfMMwzJtuuskcPHiwWVlZaR5zzDHmkiVLStTazklTU5P529/+1txpp53Mqqoqc5dddjF///vfSx0sz6ObDz74wPN5eN5555mmmdk527p1q3nWWWeZvXr1Mmtra80LLrjAbG5uLsHRlI5U53HFihVJ+50PPvjA2QbPY/5opimUfieEEEIIId0exgASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImUEBSAghhBBSZlAAEkIIIYSUGRSAhBBCCCFlBgUgIYQQQkiZQQFICCGEEFJmUAASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImUEBSAghhBBSZlAAEkIIIYSUGRSAhBBCCCFlBgUgIYQQQkiZQQFICCGEEFJmUAASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImfH/ATdEZC/tZ8H3AAAAAElFTkSuQmCC", "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] @@ -2758,7 +2758,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -2772,23 +2772,23 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 17, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7862adad8bc04dd390b4095451b555e4", + "model_id": "42f8bd01a3b14f438a71100d91b23c6a", "version_major": 2, "version_minor": 0 }, @@ -2819,7 +2819,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -2834,7 +2834,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -2870,7 +2870,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -2879,7 +2879,7 @@ "text": [ "Available minimizers: ['lmfit', 'bumps']\n", "Current minimizer: lmfit\n", - "Available methods of current minimizers: ['leastsq', 'least_squares', 'differential_evolution', 'basinhopping', 'ampgo', 'nelder', 'lbfgsb', 'powell', 'cg', 'newton', 'cobyla', 'bfgs']\n" + "Available methods of current minimizers: ['least_squares', 'leastsq', 'differential_evolution', 'basinhopping', 'ampgo', 'nelder', 'lbfgsb', 'powell', 'cg', 'newton', 'cobyla', 'bfgs']\n" ] } ], @@ -2893,7 +2893,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -2901,19 +2901,20 @@ "output_type": "stream", "text": [ "The fit has been successful: True\n", - "The gooodness of fit (chi2) is: 31.615632345412976\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "The gooodness of fit (chi2) is: 31.613447982827537\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] } ], "source": [ - "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares')\n", + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, \n", + " method='least_squares', minimizer_kwargs={'diff_step': 1e-5})\n", "\n", "print(\"The fit has been successful: {}\".format(result.success))\n", "if result.success: \n", @@ -2929,27 +2930,27 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 22, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b2bf93efafa14581acd8e1ed59a5e66c", + "model_id": "212c21f6601647f19243cb00bdcae17a", "version_major": 2, "version_minor": 0 }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAADxMUlEQVR4nOydd5wU5f3HPzOz9Toc5ThFiooNVCxRxBY1IJbEXqNiS0xAY4tGY4xRfzFq1DRL1IgmsSaWWFHAhooNpSsi0nu7vmXa74+Z55lnZrbe3u0et9/368WL293Z2Znd2Z3PfL5NMk3TBEEQBEEQBFE2yKXeAIIgCIIgCKK4kAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMoMEIEEQBEEQRJlBApAgCIIgCKLMIAFIEARBEARRZpAAJAiCIAiCKDNIABIEQRAEQZQZJAAJgiAIgiDKDBKABEEQBEEQZQYJQIIgCIIgiDKDBCBBEARBEESZQQKQIAiCIAiizCABSBAEQRAEUWaQACQIgiAIgigzSAASBEEQBEGUGSQACYIgCIIgygwSgARBEARBEGUGCUCCIAiCIIgygwQgQRAEQRBEmUECkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMoMEIEEQBEEQRJlBApAgCIIgCKLMIAFIEARBEARRZpAAJAiCIAiCKDNIABIEQRAEQZQZJAAJgiAIgiDKDBKABEEQBEEQZQYJQIIgCIIgiDKDBCBBEARBEESZQQKQIAiCIAiizCABSBAEQRAEUWaQACQIgiAIgigzSAASBEEQBEGUGSQACYIgCIIgygwSgARBEARBEGUGCUCCIAiCIIgygwQgQRAEQRBEmUECkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMoMEIEEQBEEQRJlBApAgCIIgCKLMCJR6A7ZnDMPA2rVrUV1dDUmSSr05BEEQBEHkgGmaaG1tRWNjI2S5PL0wEoAFsHbtWgwePLjUm0EQBEEQRCdYtWoVdtxxx1JvRkkgAVgA1dXVAKwDqKampsRbQxAEQRBELrS0tGDw4MH8PF6OkAAsABb2rampIQFIEARBENsZ5Zy+VZ6Bb4IgCIIgiDKGBCBBEARBEESZQQKQIAiCIAiizKAcwG7GNE1omgZd10u9KQTR7SiKgkAgUNZ5NQRBENsDPU4A3nHHHXjhhRfw9ddfIxqN4pBDDsGdd96J3XbbjS9z5JFH4r333nM976c//SkeeughfnvlypX42c9+hnfeeQdVVVW44IILcMcddyAQcHb53XffxdVXX42FCxdi8ODBuOmmmzBx4sQu25dkMol169aho6Ojy9ZJED2diooKDBo0CKFQqNSbQhAEQaShxwnA9957D5MmTcKBBx4ITdNw4403Yty4cVi0aBEqKyv5cpdeeiluvfVWfruiooL/res6jj/+eDQ0NOCjjz7CunXrcP755yMYDOL3v/89AGDZsmU4/vjjcdlll+HJJ5/EjBkzcMkll2DQoEEYP358wfthGAaWLVsGRVHQ2NiIUChErgjRqzFNE8lkEps2bcKyZcuw6667lm2DVYIgiJ6OZJqmWeqNyMSmTZswYMAAvPfeezj88MMBWA7gvvvuiz/96U8pn/PGG2/ghBNOwNq1azFw4EAAwEMPPYTrr78emzZtQigUwvXXX4/XXnsNCxYs4M8766yz0NTUhKlTp+a0bS0tLaitrUVzc7OvDUw8HseyZcswZMgQlzgliN5OR0cHVqxYgWHDhiESiZR6cwiCIHxkOn+XCz3+8ry5uRkA0LdvX9f9Tz75JPr164eRI0fihhtucIVZZ82ahVGjRnHxBwDjx49HS0sLFi5cyJc55phjXOscP348Zs2alXZbEokEWlpaXP+yQQ4IUW7QMU8QBNHz6XEhYBHDMHDllVdi7NixGDlyJL//nHPOwZAhQ9DY2Ih58+bh+uuvx+LFi/HCCy8AANavX+8SfwD47fXr12dcpqWlBbFYDNFo1Lc9d9xxB373u9916T4SBEEQBEEUmx4tACdNmoQFCxbggw8+cN3/k5/8hP89atQoDBo0CEcffTSWLl2KnXfeudu254YbbsDVV1/Nb7NRMgRBEARBENsTPTZWM3nyZLz66qt45513sg5qPuiggwAA3377LQCgoaEBGzZscC3Dbjc0NGRcpqamJqX7BwDhcJiPfevN498mTpyIk046qdSbQRAEQRBEN9HjBKBpmpg8eTJefPFFvP322xg2bFjW58yZMwcAMGjQIADAmDFjMH/+fGzcuJEvM23aNNTU1GDPPffky8yYMcO1nmnTpmHMmDFdtCcEQRAEQRA9kx4nACdNmoR///vfeOqpp1BdXY3169dj/fr1iMViAIClS5fitttuw+zZs7F8+XK8/PLLOP/883H44Ydj7733BgCMGzcOe+65J8477zzMnTsXb775Jm666SZMmjQJ4XAYAHDZZZfhu+++w3XXXYevv/4aDzzwAJ577jlcddVVJdv3nsiRRx6Jyy+/HFdeeSX69OmDgQMH4pFHHkF7ezsuvPBCVFdXY5dddsEbb7zhet6CBQswYcIEVFVVYeDAgTjvvPOwefNm/vjUqVNx6KGHoq6uDvX19TjhhBOwdOlS/ngymcTkyZMxaNAgRCIRDBkyBHfccUfR9pvoPgzDxH3TvsHMJZtKvSkEQRBlS48TgA8++CCam5tx5JFHYtCgQfzfs88+CwAIhUKYPn06xo0bh9133x3XXHMNTj31VLzyyit8HYqi4NVXX4WiKBgzZgx+/OMf4/zzz3f1DRw2bBhee+01TJs2Dfvssw/uuecePProo13SAzAdpmmiI6kV/V+hnX6eeOIJ9OvXD59++ikuv/xy/OxnP8Ppp5+OQw45BF988QXGjRuH8847j1diNzU14aijjsLo0aPx+eefY+rUqdiwYQPOOOMMvs729nZcffXV+PzzzzFjxgzIsoyTTz4ZhmEAAP7yl7/g5ZdfxnPPPYfFixfjySefxNChQwvaD6Jn8MaC9fjzjCU47x+flnpTCIIgypYe3wewJ5NLH0CxF1pHUsOeN79Z9O1cdOt4VIRyr/eZOHEimpqa8NJLL+HII4+EruuYOXMmAKvJdm1tLU455RT885//BGBVVA8aNAizZs3CwQcfjNtvvx0zZ87Em286+7p69WoMHjwYixcvxogRI3yvuXnzZvTv3x/z58/HyJEjccUVV2DhwoWYPn06NdDezkh17Iv844NluO3VRQCA5X84vtibRxAEQX0A0QMdQKLnwULrgOWu1tfXY9SoUfw+1k6H5VzOnTuXj+Bj/3bffXcA4GHeJUuW4Oyzz8bw4cNRU1PD3b2VK1cCsETonDlzsNtuu+GKK67AW2+91e37SRSHaFDhfxsGXX8SBEGUgh7dBqa3EQ0qWHRr94WYM71uIQSDQddtSZJc9zGHjoVv29racOKJJ+LOO+/0rYsV6px44okYMmQIHnnkETQ2NsIwDIwcORLJZBIAsN9++2HZsmV44403MH36dJxxxhk45phj8N///regfSFKTzjgXHfGVB2VYfoZIgiCKDb0y1tEJEnKKxS7vbLffvvh+eefx9ChQxEI+Pd3y5YtWLx4MR555BEcdthhAODr9QgANTU1OPPMM3HmmWfitNNOw7HHHoutW7f6psIQ2xe6kHWiUwYKQRBESaAQMNHlTJo0CVu3bsXZZ5+Nzz77DEuXLsWbb76JCy+8ELquo0+fPqivr8fDDz+Mb7/9Fm+//barwTYA3HvvvXj66afx9ddf45tvvsF//vMfNDQ0oK6urjQ7RXQZqm7wv00jw4IEQRBEt0ECkOhyGhsb8eGHH0LXdYwbNw6jRo3ClVdeibq6OsiyDFmW8cwzz2D27NkYOXIkrrrqKtx9992udVRXV+Ouu+7CAQccgAMPPBDLly/H66+/TnNmewGa7rh+JsgBJAiCKAVUBVwA+VYBE0Q5kO3Yf3Tmd7j9ta8AAF/85gfoWxkq9iYSBFHmUBUwOYAEQRQZ8ZLToOtPgiCIkkACkCCIoiKGfUkAEgRBlAYSgARBFBWx9R/pP4IgiNJAApAgiKIiun7kABIEQZQGEoAEQRQVdw5g6baDIAiinCEBSBBEUREbD1ATAoIgiNJAApAgiKJiUg4gQRBEySEBSBBEUTGoDQxBEETJIQFIEERRcReBlHBDCIIgyhgSgES3csstt2DfffctaB3JZBK77LILPvroo67ZqBLzq1/9CpdffnmpN6NkiJqPHECCIIjSQAKQcDFx4kScdNJJpd4MFw899BCGDRuGQw45xHX/O++8g+OOOw719fWoqKjAnnvuiWuuuQZr1qzptm1Zvnw5JEni/+rr6zFu3Dh8+eWXOa/j2muvxRNPPIHvvvuu27azJ0NFIARBEKWHBCDRozFNE3/7299w8cUXu+7/+9//jmOOOQYNDQ14/vnnsWjRIjz00ENobm7GPffck3Jduq7DMIwu2a7p06dj3bp1ePPNN9HW1oYJEyagqakpp+f269cP48ePx4MPPtgl27K9QSFggiCI0kMCkMiIYRi46667sMsuuyAcDmOnnXbC//3f//HHr7/+eowYMQIVFRUYPnw4fvOb30BV1YzrfOyxx7DXXnshHA5j0KBBmDx5ctplZ8+ejaVLl+L444/n961evRpXXHEFrrjiCjz22GM48sgjMXToUBx++OF49NFHcfPNNwMAHn/8cdTV1eHll1/GnnvuiXA4jA8++ADBYBDr1693vc6VV16Jww47DACwYsUKnHjiiejTpw8qKyux11574fXXX3ctX19fj4aGBhxwwAH44x//iA0bNuCTTz7BrbfeipEjR/r2Y99998VvfvMbfvvEE0/EM888k/F96q1QFTBBEETpCZR6A8oK0wTUjuK/brACkKROPfWGG27AI488gvvuuw+HHnoo1q1bh6+//po/Xl1djccffxyNjY2YP38+Lr30UlRXV+O6665Lub4HH3wQV199Nf7whz9gwoQJaG5uxocffpj29WfOnIkRI0agurqa3/ef//wHyWQy7WvU1dXxvzs6OnDnnXfi0UcfRX19PQYPHozhw4fjX//6F375y18CAFRVxZNPPom77roLADBp0iQkk0m8//77qKysxKJFi1BVVZV2G6PRKAArV/Giiy7C7373O3z22Wc48MADAQBffvkl5s2bhxdeeIE/53vf+x5Wr16N5cuXY+jQoWnX3RuhKmCCIIjSQwKwmKgdwO8bi/+6N64FQpV5P621tRV//vOf8be//Q0XXHABAGDnnXfGoYceype56aab+N9Dhw7Ftddei2eeeSatOLv99ttxzTXX4Be/+AW/jwmlVKxYsQKNje73bMmSJaipqcGgQYOy7oOqqnjggQewzz778PsuvvhiTJkyhQvAV155BfF4HGeccQYAYOXKlTj11FMxatQoAMDw4cPTrr+pqQm33XYbqqqq8L3vfQ8DBw7E+PHjMWXKFL5fU6ZMwRFHHOFaD9unFStWlJ0ANEGj4AiCIEoNhYCJtHz11VdIJBI4+uij0y7z7LPPYuzYsWhoaEBVVRVuuukmrFy5MuWyGzduxNq1azOuz0ssFkMkEnHdZ5ompBwdzVAohL333tt138SJE/Htt9/i448/BmCFis844wxUVloi+YorrsDtt9+OsWPH4re//S3mzZvnW+8hhxyCqqoq9OnTB3PnzsWzzz6LgQMHAgAuvfRSPP3004jH40gmk3jqqadw0UUXuZ7PXMOOjhI4wiWGQsAEQRClhxzAYhKssNy4UrxuJ2AiJR2zZs3Cueeei9/97ncYP348amtr8cwzz6Qtwsi2vlT069cP8+fPd903YsQINDc3Y926dVldwGg06hOLAwYMwIknnogpU6Zg2LBheOONN/Duu+/yxy+55BKMHz8er732Gt566y3ccccduOeee1ytW5599lnsueeeqK+vd4WcASu/LxwO48UXX0QoFIKqqjjttNNcy2zduhUA0L9//1zfil6DYZADSBAEUWrIASwmkmSFYov9r5P5f7vuuiui0ShmzJiR8vGPPvoIQ4YMwa9//WsccMAB2HXXXbFixYq066uursbQoUPTri8Vo0ePxtdff+1qF3LaaachFArxnD0vuVTjXnLJJXj22Wfx8MMPY+edd8bYsWNdjw8ePBiXXXYZXnjhBVxzzTV45JFHfI/vvPPOPvEHAIFAABdccAGmTJmCKVOm4KyzzvKJ3wULFiAYDGKvvfbKuq29DXcfwJJtBkEQRFlDDiCRlkgkguuvvx7XXXcdQqEQxo4di02bNmHhwoW4+OKLseuuu2LlypV45plncOCBB+K1117Diy++mHGdt9xyCy677DIMGDAAEyZMQGtrKz788MO0jZG///3vo62tDQsXLuTVtYMHD8Z9992HyZMno6WlBeeffz6GDh2K1atX45///CeqqqrSupCM8ePHo6amBrfffjtuvfVW12NXXnklJkyYgBEjRmDbtm145513sMcee+TxzlkCkz0nVZHLzJkzcdhhh3XKFd3ecbeBIQVIEARRCsgBJDLym9/8Btdccw1uvvlm7LHHHjjzzDOxceNGAMAPf/hDXHXVVZg8eTL23XdffPTRR65WJ6m44IIL8Kc//QkPPPAA9tprL5xwwglYsmRJ2uXr6+tx8skn48knn3Td//Of/xxvvfUW1qxZg5NPPhm77747LrnkEtTU1ODaa6/Nul+yLGPixInQdR3nn3++6zFd1zFp0iTsscceOPbYYzFixAg88MADWdcpsuuuu+KQQw7B7rvvjoMOOsj3+DPPPINLL700r3X2FigHkCAIovRIJrXi7zQtLS2ora1Fc3MzampqXI/F43EsW7YMw4YN8xUxEPkxb948/OAHP8DSpUsztmPJl4svvhibNm3Cyy+/3GXrZJimiV133RU///nPcfXVV7see+ONN3DNNddg3rx5CAR6nwmf7dj/7f8W4IlZVqrAfy8bgwOG9i32JhIEUeZkOn+XC73v7EP0Ovbee2/ceeedWLZsGW/NUgjNzc2YP38+nnrqqW4Rf5s2bcIzzzyD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", + "image/png": "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fRYsWAAAGDRoEABg/Pjx+Pzzz7FhwwZnm1mzZqG+vh677rqrs83s2bM9+5k1axbGjx9fpGdCEARBEATRM+lxAnDatGn417/+hccffxx1dXVYt24d1q1bh3g8DgBYtmwZbrrpJsyfPx8rVqzA888/jzPPPBOHHnoodt99dwDAxIkTseuuu+KMM87AZ599hldffRXXXXcdpk2bhkgkAgC44IIL8O233+LKK6/EV199hXvvvRdPPfUULr300rI9957IYYcdhosuugiXXHIJmpqaMHDgQDz44IPo7OzE2Wefjbq6Ouy000545ZVXPPf74osvMHnyZNTW1mLgwIE444wzsGnTJuf2mTNn4uCDD0ZjYyP69u2Lo48+GsuWLXNuVxQF06dPx6BBgxCNRjF06FDccsstJXveRPdhGCbunPU15nyzsdyHQhAEUbH0OAF43333obW1FYcddhgGDRrk/HvyyScBAOFwGK+//jomTpyIXXbZBZdffjmOP/54vPDCC84+JEnCiy++CEmSMH78ePzf//0fzjzzTE/fwOHDh+Oll17CrFmzsMcee+D222/HQw89VJQegOkwTRMxRSv5v0I7/Tz66KPo168fPvzwQ1x00UW48MILceKJJ+LAAw/EJ598gokTJ+KMM85wKrFbWlrwox/9COPGjcPHH3+MmTNnYv369TjppJOcfXZ2duKyyy7Dxx9/jNmzZ0MURRx77LEwDAMAcNddd+H555/HU089hSVLluCxxx7DsGHDCnoeRM/glS/W4S+zv8EZf/+w3IdCEARRsfT4PoA9mVz6APK90GKKhl2vf7Xkx7n4xkmoDude7zN16lS0tLTgueeew2GHHQZd1zFnzhwAVpPthoYGHHfccfjHP/4BwKqoHjRoEObOnYsDDjgAN998M+bMmYNXX3Wf6+rVqzFkyBAsWbIEo0aNCjzmpk2b0L9/f3z++ecYM2YMLr74YixatAivv/46NdDexkh17vP8/d3luOnFxQCAFX84qtSHRxAEQX0A0QMdQKLnwULrgOWu9u3bF2PHjnX+xtrpsJzLzz77zBnBx/7tsssuAOCEeb/55huceuqpGDFiBOrr6x13b+XKlQAsEbpgwQLsvPPOuPjii/Haa691+/MkSkNVSHJ+Ngy6/iQIgigHPboNTG+jKiRh8Y3dF2LO9LiFEAqFPL8LguD5G3PoWPi2o6MDU6ZMwR//+MfAvlihzpQpUzB06FA8+OCDGDx4MAzDwJgxY6AoCgBgr732wvLly/HKK6/g9ddfx0knnYQJEybgv//9b0HPhSg/Edm97oyrOmoi9DVEEARRauibt4QIgpBXKHZbZa+99sLTTz+NYcOGQZaDz3fz5s1YsmQJHnzwQRxyyCEAEOj1CAD19fU4+eSTcfLJJ+OEE07AEUccgS1btgSmwhDbFjqXdaJTBgpBEERZoBAwUXSmTZuGLVu24NRTT8VHH32EZcuW4dVXX8XZZ58NXdfR1NSEvn374oEHHsDSpUvxxhtveBpsA8Add9yBf//73/jqq6/w9ddf4z//+Q+am5vR2NhYnidFFA1VN5yfTSPDhgRBEES3QQKQKDqDBw/Ge++9B13XMXHiRIwdOxaXXHIJGhsbIYoiRFHEE088gfnz52PMmDG49NJL8ac//cmzj7q6Otx6663YZ599sO+++2LFihV4+eWXac5sL0DTXdfPBDmABEEQ5YCqgAsg3ypggqgEsp37D835Fje/9CUA4JPf/Bh9asKlPkSCICocqgImB5AgiBLDX3IadP1JEARRFkgAEgRRUviwLwlAgiCI8kACkCCIksK3/iP9RxAEUR5IABIEUVJ4148cQIIgiPJAApAgiJLizQEs33EQBEFUMiQACYIoKXzjAWpCQBAEUR5IABIEUVIoB5AgCKL8kAAkCKKkUBsYgiCI8kMCkCCIkuItAinjgRAEQVQwJACJbuWGG27AnnvuWdA+FEXBTjvthPfff784B1Vmfv3rX+Oiiy4q92GUDV7zkQNIEARRHkgAEh6mTp2KY445ptyH4eH+++/H8OHDceCBB3r+/uabb+LII49E3759UV1djV133RWXX345vv/++247lhUrVkAQBOdf3759MXHiRHz66ac57+OKK67Ao48+im+//bbbjrMnQ0UgBEEQ5YcEINGjMU0Td999N84991zP3//2t79hwoQJaG5uxtNPP43Fixfj/vvvR2trK26//faU+9J1HYZhFOW4Xn/9daxduxavvvoqOjo6MHnyZLS0tOR03379+mHSpEm47777inIs2xoUAiYIgig/JACJjBiGgVtvvRU77bQTIpEIdthhB/y///f/nNuvuuoqjBo1CtXV1RgxYgR+85vfQFXVjPt8+OGHsdtuuyESiWDQoEGYPn162m3nz5+PZcuW4aijjnL+tnr1alx88cW4+OKL8fDDD+Owww7DsGHDcOihh+Khhx7C9ddfDwB45JFH0NjYiOeffx677rorIpEI3n33XYRCIaxbt87zOJdccgkOOeQQAMB3332HKVOmoKmpCTU1Ndhtt93w8ssve7bv27cvmpubsc8+++C2227D+vXrMW/ePNx4440YM2ZM4Hnsueee+M1vfuP8PmXKFDzxxBMZX6feiklVwARBEGVHLvcBVBSmCaix0j9uqBoQhC7d9eqrr8aDDz6IO++8EwcffDDWrl2Lr776yrm9rq4OjzzyCAYPHozPP/8c559/Purq6nDllVem3N99992Hyy67DH/4wx8wefJktLa24r333kv7+HPmzMGoUaNQV1fn/O0///kPFEVJ+xiNjY3Oz7FYDH/84x/x0EMPoW/fvhgyZAhGjBiBf/7zn/jVr34FAFBVFY899hhuvfVWAMC0adOgKAreeecd1NTUYPHixaitrU17jFVVVQCsXMVzzjkHv/vd7/DRRx9h3333BQB8+umnWLhwIZ555hnnPvvttx9Wr16NFStWYNiwYWn33RsxqAqYIAii7JAALCVqDPj94NI/7jVrgHBN3ndrb2/HX/7yF9x9990466yzAAA77rgjDj74YGeb6667zvl52LBhuOKKK/DEE0+kFWc333wzLr/8cvzyl790/saEUiq+++47DB7sfc2++eYb1NfXY9CgQVmfg6qquPfee7HHHns4fzv33HMxY8YMRwC+8MILSCQSOOmkkwAAK1euxPHHH4+xY8cCAEaMGJF2/y0tLbjppptQW1uL/fbbDwMHDsSkSZMwY8YM53nNmDEDP/jBDzz7Yc/pu+++qzgBaIJGwREEQZQbCgETafnyyy+RTCZx+OGHp93mySefxEEHHYTm5mbU1tbiuuuuw8qVK1Nuu2HDBqxZsybj/vzE43FEo1HP30zThJCjoxkOh7H77rt7/jZ16lQsXboUH3zwAQArVHzSSSehpsYSyRdffDFuvvlmHHTQQfjtb3+LhQsXBvZ74IEHora2Fk1NTfjss8/w5JNPYuDAgQCA888/H//+97+RSCSgKAoef/xxnHPOOZ77M9cwFiuDI1xmKARMEARRfsgBLCWhasuNK8fjdgEmUtIxd+5cnH766fjd736HSZMmoaGhAU888UTaIoxs+0tFv3798Pnnn3v+NmrUKLS2tmLt2rVZXcCqqqqAWBwwYACmTJmCGTNmYPjw4XjllVfw1ltvObefd955mDRpEl566SW89tpruOWWW3D77bd7Wrc8+eST2HXXXdG3b19PyBmw8vsikQieffZZhMNhqKqKE044wbPNli1bAAD9+/fP9aXoNRgGOYAEQRDlhhzAUiIIVii21P+6mP83cuRIVFVVYfbs2Slvf//99zF06FBce+212GeffTBy5Eh89913afdXV1eHYcOGpd1fKsaNG4evvvrK0y7khBNOQDgcdnL2/ORSjXveeefhySefxAMPPIAdd9wRBx10kOf2IUOG4IILLsAzzzyDyy+/HA8++GDg9h133DEg/gBAlmWcddZZmDFjBmbMmIFTTjklIH6/+OILhEIh7LbbblmPtbfh7QNYtsMgCIKoaMgBJNISjUZx1VVX4corr0Q4HMZBBx2EjRs3YtGiRTj33HMxcuRIrFy5Ek888QT23XdfvPTSS3j22Wcz7vOGG27ABRdcgAEDBmDy5Mlob2/He++9l7Yx8g9/+EN0dHRg0aJFTnXtkCFDcOedd2L69Oloa2vDmWeeiWHDhmH16tX4xz/+gdra2rQuJGPSpEmor6/HzTffjBtvvNFz2yWXXILJkydj1KhR2Lp1K958802MHj06j1fOEpjsPqmKXObMmYNDDjmkS67oto63DQwpQIIgiHJADiCRkd/85je4/PLLcf3112P06NE4+eSTsWHDBgDAT37yE1x66aWYPn069txzT7z//vueViepOOuss/DnP/8Z9957L3bbbTccffTR+Oabb9Ju37dvXxx77LF47LHHPH//xS9+gddeew3ff/89jj32WOyyyy4477zzUF9fjyuuuCLr8xJFEVOnToWu6zjzzDM9t+m6jmnTpmH06NE44ogjMGrUKNx7771Z98kzcuRIHHjggdhll12w//77B25/4okncP755+e1z94C5QASBEGUH8GkVvxdpq2tDQ0NDWhtbUV9fb3ntkQigeXLl2P48OGBIgYiPxYuXIgf//jHWLZsWcZ2LPly7rnnYuPGjXj++eeLtk+GaZoYOXIkfvGLX+Cyyy7z3PbKK6/g8ssvx8KFCyHLvc+Ez3bu//Z/X+DRuVaqwH8vGI99hvUp9SESBFHhZFq/K4Xet/oQvY7dd98df/zjH7F8+XKnNUshtLa24vPP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wr8A8nJj995778DfzjvvPMelW79+PV555RWcc845ACxRe/jhh2Ps2LE48cQT8eCDD2Lr1q2e+3/++eeora1FVVUV9ttvP4wfPx533303AEvYHXXUUXj44YcBAC+88AKSySROPPFEzz6qqqoct7dLGNQImiAIotyQA1hCquQqzDttXlketxBCoZDnd0EQPH8TBAEAPOHVKVOm4I9//GNgX4MGDQIATJkyBUOHDsWDDz6IwYMHwzAMjBkzBoqiAAD22msvLF++HK+88gpef/11nHTSSZgwYQL++9//4sYbb8QVV1yR8ZirqjI/5yuuuAKzZs3Cbbfdhp122glVVVU44YQTnMfPd3+p6NevX0CAjRo1Cl999VVO9+fDwYwzzzwTv/71rzF37ly8//77GD58OA455BAAljifNWsW3n//fbz22mv461//imuvvRbz5s3D8OHDAVgO4vPPPw9ZljF48OBAYcl5552HM844A3feeSdmzJiBk08+GdXVXvd4y5Yt6N+/f86vQxDeAaQQMEEQRDkgAVhCBEEoKBS7rbDXXnvh6aefxrBhwyDLwVNs8+bNWLJkCR588EFHvLz77ruB7err63HyySfj5JNPxgknnIAjjjgCW7ZswYABAzBgwICMx7D77rvjoYcewpYtW1K6gO+99x6mTp2KY489FoAlWlesWJFxf6tXr3ZC2Lkwbtw4LF682PO30047Dddccw0+/fTTQB6gqqpQFCWl8GP07dsXxxxzDGbMmIG5c+fi7LPP9twuCAIOOuggHHTQQbj++usxdOhQPPvss7jssssAWK1c+FC4nyOPPBI1NTW47777MHPmTLzzzjuBbb744ouUOYy5Ipi8AKQ2MASBTd8AM38NHPorYIcDyn00RIVAIWCi6EybNg1btmzBqaeeio8++gjLli3Dq6++irPPPhu6rqOpqQl9+/bFAw88gKVLl+KNN95wBArjjjvuwL///W989dVX+Prrr/Gf//wHzc3NaGxszOkYTj31VDQ3N+OYY47Be++9h2+//RZPP/005s6dC8DKr3vmmWewYMECfPbZZzjttNMcBzMVP/jBD3DooYfi+OOPx6xZsxx3cubMmWnvM2nSpICwveSSS3DQQQfh8MMPxz333IPPPvsM3377LZ566ikccMAB+Oabb7I+t/POOw+PPvoovvzyS5x11lnO3+fNm4ff//73+Pjjj7Fy5Uo888wz2LhxI0aPHp11nwxJkjB16lRcffXVGDlyJMaPHx/YZs6cOZg4cWLO+wxgkgNIEB6eOhNY+jrw8KRyHwlRQZAAJIrO4MGD8d5770HXdUycOBFjx47FJZdcgsbGRoiiCFEU8cQTT2D+/PkYM2YMLr30UvzpT3/y7KOurg633nor9tlnH+y7775YsWIFXn75ZYhibqdsOBzGa6+9hgEDBuDII4/E2LFjPVW7d9xxB5qamnDggQdiypQpmDRpEvbaa6+M+3z66aex77774tRTT8Wuu+6KK6+8MuOEj9NPPx2LFi3CkiVLnL9FIhHMmjULV155Jf72t7/hgAMOwL777ou77roLF198McaMGZP1uU2YMAGDBg3CpEmTPEUm9fX1eOedd3DkkUdi1KhRuO6663D77bdj8uTJWffJc+6550JRlIC7CABz585Fa2srTjjhhLz2ySPAzQE0zfSimyAqBaN1dbkPgahABLPQHiEVTFtbGxoaGtDa2or6+nrPbYlEAsuXL8fw4cMDhQBE5fCrX/0KbW1tOTdazoWOjg5st912mDFjBo477rii7ZcxZ84cHH744Vi1apVT4MM4+eSTsccee+Caa65Je/9s5/5zd16EY1r/AQB4a/8HcdjkkwLbEEQl0XbjDqg3Wq1fbmgt78FUCJnW70qBHECC6EauvfZaDB06NGN4OVcMw8CGDRtw0003obGxET/5yU+KcIQuyWQSq1evxg033IATTzwxIP4URcHYsWNx6aWXFvZAnhAwOYAEkTSEch8CUYGQACSIbqSxsRHXXHNNzqHrTKxcuRIDBw7E448/jocffjhlgU0h/Pvf/8bQoUPR0tIS6D8IWGH16667rksV0TwUAiYILzrVYxJlgM46gthGGDZsWMFTXTIxdepUTJ06tdv278CJPhKABAHoSD9RiCC6C3IACYIoKUKaPoCUjkxUKrpAApAoPT1OAN5yyy3Yd999UVdXhwEDBuCYY47xVFECVpL5tGnT0LdvX9TW1uL444/H+vXrPdusXLkSRx11FKqrqzFgwAD86le/gqZ5pw689dZb2GuvvRCJRLDTTjvhkUce6e6nRxAE7/rZou9vby/DPje/jqUbOsp0UARRPgwSgEQZ6HEC8O2338a0adPwwQcfYNasWVBVFRMnTkRnZ6ezzaWXXooXXngB//nP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wNq1a51///73vz23n3766Vi0aBFmzZqFF198Ee+88w5+9rOfObe3tbVh4sSJGDp0KObPn48//elPuOGGG/DAAw902/MiiN6KAE4AZljA/IubACPFAkh90IgKInDBRAKQKA1yuQ8gFZMnT8bkyZMzbhOJRNDc3Jzyti+//BIzZ87ERx99hH322QcA8Ne//hVHHnkkbrvtNgwePBiPPfYYFEXBww8/jHA4jN122w0LFizAHXfc4RGKBEFkRzB9lb1pMHzizl8EAgC6TgKQqCDIASTKRI90AHPhrbfewoABA7DzzjvjwgsvxObNm53b5s6di8bGRkf8AcCECRMgiiLmzZvnbHPooYciHA4720yaNAlLlizB1q1bS/dECKIXwOf9Za4C9glAXw4gABi0ABKVhF8AUg4sUSJ6pAOYjSOOOALHHXcchg8fjmXLluGaa67B5MmTMXfuXEiShHXr1mHAgAGe+8iyjD59+mDdunUAgHXr1mH48OGebQYOHOjc1tTUFHjcZDKJZDLp/N7W1lbsp0YQ2yTeIpAMAs4MhoD9fc9MXSvqsRFEj4ZSIIgysU0KwFNOOcX5eezYsdh9992x44474q233sLhhx/ebY97yy234He/+1237Z8gtlk8bWAyVAEHcgDNwPbUCJeoKMgBJMrENhsC5hkxYgT69euHpUuXAgCam5uxYcMGzzaapmHLli1O3mBzczPWr1/v2Yb9ni638Oqrr0Zra6vzb9WqVcV+KgSxTSLk2Ag6IABNI1A0YlAOIFFJpHDFCaIU9AoBuHr1amzevBmDBg0CAIwfPx4tLS2YP3++s80bb7wBwzCw//77O9u88847UFXV2WbWrFnYeeedU4Z/AavwpL6+3vOPIIjcQ8B+dyNlDmAGB5Egeh1UBEKUiR4pADs6OrBgwQIsWLAAALB8+XIsWLAAK1euREdHB371q1/hgw8+wIoVKzB79mz89Kc/xU477YRJkyYBAEaPHo0jjjgC559/Pj788EO89957mD59Ok455RQMHjwYAHDaaachHA7j3HPPxaJFi/Dkk0/iL3/5Cy677LJyPW2C2GbJVQAGqoBThIAztZEhiF6HvxE0hYCJEtEjBeDHH3+McePGYdy4cQCAyy67DOPGjcP1118PSZKwcOFC/OQnP8GoUaNw7rnnYu+998acOXMQiUScfTz22GPYZZddcPjh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", "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] @@ -2977,7 +2978,24 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available calculator engines: ['CrysPy', 'CrysFML', 'GSASII']\n" + ] + } + ], + "source": [ + "print(f\"Available calculator engines: {calculator.available_interfaces}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -3005,7 +3023,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -3016,36 +3034,36 @@ "\n", "\n", "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0015 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0002 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0043 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0027 s\n", - "+ calculate D: 0.0020 s\n", - "+ calculate E: 0.0056 s\n", + "+ calculate A: 0.0012 s\n", + "+ calculate B: 0.0041 s\n", + "+ calculate C: 0.0002 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0003 s\n", + "+ reflection_list.compute_structure_factors: 0.0008 s\n", + "+ set reflection_list: 0.0061 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0026 s\n", + "+ calculate D: 0.0024 s\n", + "+ calculate E: 0.0043 s\n", "+ calculate F: 0.0000 s\n" ] }, { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 24, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4f97b7801f3e40fd9b28ea621bf26567", + "model_id": "e48cecadb66d48a48714ba92c3d43cb4", "version_major": 2, "version_minor": 0 }, - "image/png": "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2GWXXfCrX/0K8Xg84zrvv/9+7LnnnggEAhg5ciRmzpyZdtlFixZh+fLlmDZtmnhu7dq1uOSSS3DJJZfg/vvvx9FHH42xY8fiqKOOwn333Ydrr70WADBnzhw0NzfjiSeewKRJkxAIBPDGG2/A5/Ohra3N8TmXXnopjjzySADAqlWrcPLJJ2PIkCGoq6vDnnvuiWeeecaxfEtLC1pbW3HQQQfhT3/6EzZu3Ii3334b119/Pfbaa6+U/dhvv/3wq1/9Sjw++eSTMXfu3Izf02CFHECCcNIT78G/Pv8XtvZtrfSmEDWEXukNqCkYA+K95f9cXxhQlILeOmvWLNx777249dZbccQRR2DDhg347LPPxOsNDQ2YM2cORo0ahSVLluDCCy9EQ0MDrrrqKs/13X333bj88svx+9//HlOnTkVHRwfefPPNtJ//+uuvY8KECWhoaBDPPfroo4jFYmk/o7m5Wfzd29uLP/zhD7jvvvvQ0tKC0aNHY5dddsH//M//4MorrwQAxONxPPjgg7j55psBADNmzEAsFsNrr72Guro6fPLJJ6ivr0+7jaFQCICZq3j++efjN7/5Dd59910cfPDBAIAPPvgAH330ER577DHxnq997WtYu3YtVq5cibFjx6Zd92BErgKW8wEJolb53du/wxPLn8BDnz2Ex771WPY3EEQJIAFYTuK9wO9Glf9z/2s94K/L+21dXV24/fbbcccdd+Dcc88FAOy666444ogjxDLXXHON+Hvs2LH4xS9+gblz56YVZzfeeCOuuOIK/PznPxfPcaHkxapVqzBqlPM7++KLL9DY2IiRI0dm3Yd4PI677roL++67r3hu+vTpmD17thCATz75JCKRCE477TQAwOrVq3Hqqadi7733BgDssssuadff3t6OG264AfX19fja176GESNGYMqUKZg9e7bYr9mzZ+PrX/+6Yz18n1atWlVzAtCA7frJYpAgapUXV78IAPhi+xcV3hKilqAQMJGWTz/9FNFoFMcdd1zaZR5++GEcfvjhaG1tRX19Pa655hqsXr3ac9lNmzZh/fr1Gdfnpq+vD8Fg0PEcYwxKjo6m3+/HPvvs43juvPPOw5dffom33noLgBkqPu2001BXZ4rkSy65BDfeeCMOP/xw/PrXv8ZHH32Ust7DDjsM9fX1GDJkCD788EM8/PDDGDFiBADgwgsvxD//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O5bfuHEjWltbAQCtra0pVcH8cbZlGhsbM87NGggERHUy/0dk5rrrrsN+++1X1DpisRjGjx+PBQsWlGajBhD33HNPSl7sQIccQIIgiMpTlQLQjWEYiEajOPDAA+Hz+fDiiy+K15YtW4bVq1dj8uTJAIDJkydjyZIlYr5aAJg/fz4aGxsxadIksYy8Dr4MX0ctc9555+E73/lOpTfDAS/aOeywwxzPv/zyy/jmN7+JlpYWhMNhTJo0CVdccQXWrVvXb9uycuVKKIqS8u+ss85yvK5pWsp2bNiwAbquQ1EUrFy50rH84sWLPT/v/PPPx/vvv4/XX3+93/aJIAiCqD2qTgDOmjULr732GlauXIklS5Zg1qxZeOWVV3DmmWeiqakJ06dPx+WXX46XX34ZixYtwo9+9CNMnjwZhx56KADghBNOwKRJk3D22Wfjww8/xPPPP49rrrkGM2bMQCAQAABcdNFF+Oqrr3DVVVfhs88+w1133YVHHnkEl112WSV3nfCAMYY77rgD06dPdzz/17/+FccffzxaW1vx73//G5988gnuuecedHR0iOpuN8lkEoZRGsfphRdewIYNG8S/O++80/H6jjvuiH/84x+O5x544AHsuOOOeX2O3+/HGWecgb/85S9Fb3O1QA4gQRBE5ak6Abhp0yacc8452H333XHcccfh3XffxfPPPy+m7Lr11ltx0kkn4dRTT8VRRx2F1tZWPPbYY+L9mqbhqaeegqZpmDx5Ms466yycc845uP7668Uy48aNw9NPP4358+dj3333xS233IL77ruPWsB4YBgGbr75ZowfPx6BQAA777wzfvvb34rXr776akyYMAHhcBi77LILfvWrXyEej2dc5/33348999wTgUAAI0eOxMyZM9Muu2jRIixfvhzTpk0Tz61duxaXXHIJLrnkEtx///04+uijMXbsWBx11FG47777RM/HOXPmoLm5GU888QQmTZqEQCCAN954Az6fTxQEcS699FIceeSRAIBVq1bh5JNPxpAhQ1BXV4c999wTzzzzjGP5lpYWtLa2in9NTU2O188991zMnj3b8dzs2bNx7rnnZvxuvDj55JPxxBNPZCxQGkhQDiBBEETlqbo+gH//+98zvh4MBnHnnXemOC4yY8aMSRmw3Rx99NH44IMPCtrGQmGMoS9R/kE8pIegKEpB7501axbuvfde3HrrrTjiiCOwYcMGfPbZZ+L1hoYGzJkzB6NGjcKSJUtw4YUXoqGhAVdddZXn+u6++25cfvnl+P3vf4+pU6eio6MDb775ZtrPf/311zFhwgQ0NDSI5x599FHEYrG0nyFXiff29uIPf/gD7rvvPrS0tGD06NHYZZdd8D//8z+48sorAQDxeBwPPvggbr75ZgDAjBkzEIvF8Nprr6Gurg6ffPIJ6uvrc/7OAOBb3/oW7rnnHrzxxhs44ogj8MYbb2D79u04+eSTccMNN+S1roMOOgiJRAJvv/02jj766LzeW43QVHAEQRCVp+oE4GCmL9GHQx46pOyf+/YZbyPsC+f9vq6uLtx+++244447hHO166674ogjjhDLXHPNNeLvsWPH4he/+AXmzp2bVpzdeOONuOKKK/Dzn/9cPHfwwQen3YZVq1Zh1KhRjue++OILNDY2YuTIkVn3IR6P46677sK+++4rnps+fTpmz54tBOCTTz6JSCSC0047DYA5leCpp56KvffeGwCwyy67pKz3sMMOg6raBvrrr7+O/fffXzz2+Xw466yzcP/99+OII47A/fffj7POOgs+ny/rNrsJh8NoamrCqlWr8n5vNUIOIEEQROWpuhAwUT18+umniEajOO6449Iu8/DDD+Pwww9Ha2sr6uvrcc0112D16tWey27atAnr16/PuD43fX19CAaDjucYYzk7mn6/H/vss4/jufPOOw9ffvkl3nrrLQBmqPi0005DXV0dAOCSSy7BjTfeiMMPPxy//vWv8dFHH6Ws9+GHH8bixYvFP15gJHP++efj0UcfRVtbGx599FGcf/75OW2zF6FQCL29vQW/v5pwzARCOYAEQRAVgRzAMhLSQ3j7jLcr8rkFvS9DSxzAnFHlzDPPxG9+8xtMmTIFTU1NmDt3btoijGzr82LYsGFYsmSJ47kJEyago6MDGzZsyOoChkKp4e/hw4fj5JNPxuzZszFu3Dg8++yzeOWVV8TrF1xwAaZMmYKnn34a8+bNw0033YRbbrkFP/vZz8Qyo0ePxvjx4zN+9t5774099tgDP/zhDzFx4kTstddeaat9s7Ft2zbssMMOBb232pBFHzmABEEQlYEcwDKiKArCvnDZ/xWa/7fbbrshFAqltMzhLFiwAGPGjMH/+3//DwcddBB22223jGHKhoYGjB07Nu36vNh///3x2Wef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", + "image/png": "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w8O3PT09OPnkk/HrX/86ZV2jR48GAJx88skYN24c7rnnHowZMwaGYWCvvfZCLBYDABxwwAFYvXo1nnnmGbzwwgs4/fTTcfzxx+N///d/i9oXovKoin3fmWCJCm4JQRBE7UICsIwoilJUKHawcMABB+CRRx7B+PHjoeup+7tt2zasXLkS99xzD4488kgAwBtvvJGyXGNjI773ve/he9/7Hr7zne/gxBNPxPbt2zFs2LAB3wdi4GCwc1L5TQNBEARRXigETJScWbNmYfv27fj+97+P9957D6tWrcJzzz2HH/7wh0gmk2hpaUFrayv+8pe/4PPPP8dLL72Eyy+/3LGO3/3ud/j73/+OTz75BJ9++ikefvhhtLW1obm5uTI7RZQMuSgpyZIV3BKCIIjahQQgUXLGjBmDN998E8lkEieccAL23ntvXHrppWhuboaqqlBVFQsWLMCSJUuw11574bLLLsNvfvMbxzoaGhpwyy234KCDDsLBBx+MNWvW4Omnn6Y5b4cAsugzGDmABEEQlUBhxfYIqWG6urrQ1NSEzs5ONDY2Ol6LRCJYvXo1JkyYgGAwWKEtJGqFwXS8PbP6GVz92tUAgEXfWYS2urYKbxFBELVGpvG7ViA7hSCIspIw7MIPcgAJgiAqAwlAgiDKihwCphxAgiCIykACkCCIspI0KAeQIAii0pAAJAiirJADSBAEUXlIABIEUVZk0Uc1aARBEJWBBCBBEGVFDgGTA0gQBFEZSAASBFFWqA8gQRBE5SEBSBBEWaGZQAiCICoPCUCCIMoKzQVMEARReUgAEgPK9ddfj/3226+odcRiMUycOBFvvfVWaTaqwvznf/4nLr744kpvRsWQw77kABIEQVQGEoCEg/POOw+nnHJKpTfDwd13340JEybgsMMOczz/8ssv4+tf/zpaW1sRDocxdepUXHHFFfjqq68GbFvWrFkDRVHEv9bWVpxwwgl4//33c17HlVdeifvvvx9ffPHFgG1nNeNwACkHkCAIoiKQACSqGsYY/vSnP2HmzJmO5//85z/j+OOPR1tbGx555BGsWLECd999Nzo7O3Hrrbd6riuZTJYs5PjCCy9g48aNeO6559DT04MZM2ago6Mjp/cOHz4c06dPx1133VWSbRnMkANIEARRGUgAEhkxDAO33HILJk6ciEAggF122QW/+MUvxOvXXHMNJk2ahHA4jF133RU/+9nPEI/HM67zvvvuw5577olAIIDRo0dj9uzZaZddsmQJVq1ahZNOOkk8t379elxyySW45JJLcN999+Hoo4/G+PHjcdRRR+Hee+/FddddBwCYN28empub8fjjj2Pq1KkIBAJ444034PP50N7e7vicSy+9FEceeSQA4Msvv8TJJ5+MlpYW1NXVYc8998TTTz/tWL61tRVtbW046KCD8Nvf/habNm3CO++8gxtuuAF77bVXyn7st99++NnPfiYen3zyyViwYEHG72moIrt+5AASBLCmcw1+/MKPsXTz0kpvClFD6JXegJqCMSDeV/7P9YUBRSnorXPmzME999yD2267DUcccQQ2btyITz75RLze0NCAefPmYcyYMVi2bBkuvPBCNDQ04Oqrr/Zc31133YXLL78cv/rVrzBjxgx0dnbizTffTPv5r7/+OiZNmoSGhgbx3MMPP4xYLJb2M5qbm8XffX19+PWvf417770Xra2tGDt2LHbddVf8z//8D6666ioAQDwex4MPPohbbrkFADBr1izEYjG89tprqKurw4oVK1BfX592G0OhEAAzV/H888/Hz3/+c7z33ns4+OCDAQDvv/8+PvzwQzz66KPiPf/2b/+G9evXY82aNRg/fnzadQ9F5CpgORxMELXKZa9chs87PscbX72BZecuq/TmEDUCCcByEu8Dfjmm/J/70w2Avy7vt3V3d+P222/Hn/70J5x77rkAgN122w1HHHGEWObaa68Vf48fPx5XXnklFixYkFac3XTTTbjiiivwH//xH+I5LpS8+PLLLzFmjPM7++yzz9DY2IjRo0dn3Yd4PI4777wT++67r3hu5syZmDt3rhCATzzxBCKRCE4//XQAwNq1a3Haaadh7733BgDsuuuuadff0dGBG2+8EfX19fi3f/s3jBo1CtOnT8fcuXPFfs2dOxf//u//7lgP36cvv/yy5gSgAdv1o5lACAJo723PvhBBlBgKARNp+fjjjxGNRnHcccelXWbhwoU4/PDD0dbWhvr6elx77bVYu3at57KbN2/Ghg0bMq7PTX9/P4LBoOM5xhiUHB1Nv9+PffbZx/Hceeedh88//xxvv/02ADNUfPrpp6OuzhTJl1xyCW666SYcfvjh+O///m98+OGHKes97LDDUF9fj5aWFnzwwQdYuHAhRo0aBQC48MIL8fe/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h2P5TZs2oa2tDQDQ1taWUhXMH2dbprGxMePcrIFAQFQn839EZq6//nrst99+Ra0jFoth4sSJeOutt0qzUYOIu+++OyUvdrBDjaAJgiAqT1UKQDeGYSAajeLAAw+Ez+fDiy++KF5buXIl1q5di2nTpgEApk2bhmXLlon5agFg0aJFaGxsxNSpU8Uy8jr4Mnwdtcx5552HU045pdKb4YAX7Rx22GGO519++WV8/etfR2trK8LhMKZOnYorrrgCX3311YBty5o1a6AoSsq/s846y/G6pmkp27Fx40boug5FUbBmzRrH8kuXLvX8vPPPPx//+te/8Prrrw/YPhEEQRC1R9UJwDlz5uC1117DmjVrsGzZMsyZMwevvPIKzjzzTDQ1NWHmzJm4/PLL8fLLL2PJkiX44Q9/iGnTpuHQQw8FAJxwwgmYOnUqzj77bHzwwQd47rnncO2112LWrFkIBAIAgIsuughffPEFrr76anzyySe488478dBDD+Gyyy6r5K4THjDG8Kc//QkzZ850PP/nP/8Zxx9/PNra2vDII49gxYoVuPvuu9HZ2Smqu90kk0kYRmkcpxdeeAEbN24U/+644w7H6zvttBMeeOABx3P3338/dtppp7w+x+/34wc/+AH+8Ic/FL3N1QI5gARBEJWn6gTg5s2bcc4552CPPfbAcccdh/feew/PPfecmLLrtttuwze+8Q2cdtppOOqoo9DW1oZHH31UvF/TNDz55JPQNA3Tpk3DWWedhXPOOQc33HCDWGbChAl46qmnsGjRIuy777649dZbce+991ILGA8Mw8Att9yCiRMnIhAIYJdddsEvfvEL8fo111yDSZMmIRwOY9ddd8XPfvYzxOPxjOu87777sOeeeyIQCGD06NGYPXt22mWXLFmCVatW4aSTThLPrV+/HpdccgkuueQS3HfffTj66KMxfvx4HHXUUbj33ntFz8d58+ahubkZjz/+OKZOnYpAIIA33ngDPp9PFARxLr30Uhx55JEAgC+//BInn3wyWlpaUFdXhz333BNPP/20Y/nW1la0tbWJf01NTY7Xzz33XMydO9fx3Ny5c3Huuedm/G68OPnkk/H4449nLFAaTFAOIEEQROWpuj6Af/3rXzO+HgwGcccdd6Q4LjLjxo1LGbDdHH300Xj//fcL2sZCYYyhP1H+QTykh6AohXWanzNnDu65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TjrpJBxzzDFYunQpLr30UlxwwQV47rnnyravBDFUyGc6N/dg5wh/gdxAovYgB5CoBHqlN8DNs88+63g8b948jBw5EkuWLMFRRx0lng+Hw2hra/Ncx/PPP48VK1bghRdewKhRo7DffvvhxhtvxDXXXIPrr78efr8fd999NyZMmIBbb70VADBlyhS88cYbuO222zB9+vSB20GCGILIoi/bTCCZcgBp8CNqEWqGTlSCqnMA3XR2dgIAhg0b5nj+wQcfxPDhw7HXXnthzpw56OvrE68tXrwYe++9N0aNGiWemz59Orq6urB8+XKxzPHHH+9Y5/Tp07F48eK02xKNRtHV1eX4RxBEfkns1AaGIJxQEQhRCarOAZQxDAOXXnopDj/8cOy1117i+R/84AcYN24cxowZgw8//BDXXHMNVq5ciUcffRQA0N7e7hB/AMTj9vb2jMt0dXWhv78foVAoZXtuvvlm/PznPy/pPhLEUKDgEDCjEDBBuG+KCKIcVLUAnDVrFj766CO88cYbjud/9KMfib/33ntvjB49GscddxxWrVqF3XbbbcC2Z86cObj88svF466uLowdO3bAPo8gBgv5OHeOqeCYQQ4gUfO4b4oIohxUbQh49uzZePLJJ/Hyyy9j5513zrjsIYccAgD4/PPPAQBtbW3YtGmTYxn+mOcNplumsbHR0/0DgEAggMbGRsc/giCKKwLJ570EMRShHECiElSdAGSMYfbs2Xjsscfw0ksvYcKECVnfs3TpUgDA6NGjAQDTpk3DsmXLsHnzZrHMokWL0NjYiKlTp4plXnzxRcd6Fi1ahGnTppVoTwiidsinD6D7dcp/ImodOgeISlB1AnDWrFn429/+hvnz56OhoQHt7e1ob29Hf38/AGDVqlW48cYbsWTJEqxZswaPP/44zjnnHBx11FHYZ599AAAnnHACpk6dirPPPhsffPABnnvuOVx77bWYNWsWAoEAAOCiiy7CF198gauvvhqffPIJ7rzzTjz00EO47LLLKrbvBDFYySeHKWE4Q76U/0TUOnQOEJWg6gTgXXfdhc7OThx99NEYPXq0+Ldw4UIAgN/vxwsvvIATTjgBkydPxhVXXIHTTjsNTzzxhFiHpml48sknoWkapk2bhrPOOgvnnHMObrjhBrHMhAkT8NRTT2HRokXYd999ceutt+Lee++lFjAEUQD5hHEj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", "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] @@ -3073,50 +3091,7 @@ }, { "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The fit has been successful: True\n", - "The gooodness of fit (chi2) is: 31.615632341033855\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares', minimizer_kwargs={'diff_step': 5e-5})\n", - "\n", - "print(\"The fit has been successful: {}\".format(result.success))\n", - "if result.success: \n", - " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", - " print(job.pattern.scale)\n", - " print(job.pattern.zero_shift)\n", - " print(job.parameters.resolution_u)\n", - " print(job.parameters.resolution_v)\n", - " print(job.parameters.resolution_w)\n", - " print(job.backgrounds[0][0])\n", - " print(job.backgrounds[0][1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Show results of both CrysPy and CrysFML calculations (after fitting)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -3127,51 +3102,1181 @@ "\n", "\n", "\n", - "+ calculate A: 0.0013 s\n", - "+ calculate B: 0.0017 s\n", - "+ calculate C: 0.0002 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0002 s\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0055 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0002 s\n", + "+ set reflection_list: 0.0050 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0019 s\n", + "+ calculate E: 0.0049 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0012 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0053 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0011 s\n", + "+ calculate E: 0.0034 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0052 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0011 s\n", + "+ calculate E: 0.0035 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0008 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0011 s\n", + "+ calculate E: 0.0034 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0008 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0011 s\n", + "+ calculate E: 0.0035 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0008 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0011 s\n", + "+ calculate E: 0.0035 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", "+ calculate D: 0.0009 s\n", - "+ calculate E: 0.0045 s\n", - "+ calculate F: 0.0001 s\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "82a2c4a889bb4b788c1c7d6de90cb8d9", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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xYsBAOPHjwcAzJgxA0uXLsWmTZvENvPnz0dzczN22203sc2zzz7r2c/8+fMxY8aMMr2SocsZZ5yBr371q9U+DIIgCIIgBohBJwDnzJmDv/71r7jvvvvQ1NSE9vZ2tLe3o7+/HwCwYsUK/PznP8eiRYuwatUqPPzwwzjttNNw2GGHYa+99gIAHH300dhtt93w7W9/G2+//TaeeuopXHrppZgzZw5isRgA4JxzzsHHH3+Miy66CMuXL8fNN9+Mv//97zj//POr9toJgiAIgiAqwaATgLfccgs6Oztx+OGHY/z48eLfvHnzAADRaBTPPPMMjj76aEyfPh0XXnghTjzxRDzyyCNiH5qm4dFHH4WmaZgxYwa+9a1v4bTTTvP0DZwyZQoee+wxzJ8/H3vvvTeuv/563HHHHWXrAThcOPzww/GDH/wA5513HkaMGIFx48bh9ttvR29vL77zne+gqakJO++8M5544gnP49555x3MmjULjY2NGDduHL797W/j008/Ffc/+eSTOOSQQ9Da2opRo0bhS1/6ElasWCHuT6VSmDt3LsaPH494PI5JkybhmmuuqdjrJgYOy2K4Yf4HePnDzdU+FIIgiJpl0BWB5GtLOHHixMAUkExMmjQJjz/+eM5tDj/8cLz11lsFHV8pMMbQn678RJC6iFZSD8I///nPuOiii/DGG29g3rx5+N73voeHHnoIJ5xwAn7yk5/ghhtuwLe//W2sWbMG9fX16OjowBFHHIGzzjoLN9xwA/r7+3HxxRfjpJNOwnPPPQcA6O3txQUXXIC99toLPT09uPzyy3HCCSdg8eLFUFUVv//97/Hwww/j73//O3bYYQesXbsWa9euLddbQlSRx9/ZgN89+yEAYNUvj6vy0RAEQdQmg04ADmf60yZ2u/ypij/vu1fNRH20+D/13nvvjUsvvRSAXQn9y1/+EqNHj8bZZ58NALj88stxyy23YMmSJfjc5z6HG2+8Efvuu6+YugIAd955JyZOnIgPPvgA06ZNw4knnuh5jjvvvBNjxozBu+++iz322ANr1qzB1KlTccghh0BRFEyaNKno4ycGF+2diWofAkEQRM0z6ELAxOCD51YCdnh91KhR2HPPPcVtvJ8iL7p5++23xQxm/m/69OkAIMK8H374Ib75zW9ixx13RHNzMyZPngzAnuEM2IUoixcvxi677IJzzz0X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+23MmzcP48aNAwCcffbZ+Nvf/oZEIoFUKoX77rsPZ555pufx3DXs66uCI1xlvEUgVTwQgiCIGoYcwEoSqbfduGo8bxFwkZKNhQsX4tRTT8WVV16JmTNnoqWlBffff3/WIox8+8vE6NGjsXTpUs9t06ZNQ2dnJzZs2JDXBayrqwuIxbFjx+L444/HXXfdhSlTpuCJJ57ACy+8IO4/66yzMHPmTDz22GN4+umncc011+D666/3tG6ZN28edtttN4waNcoTcgbs/L5YLIaHHnoI0WgU6XQaX//61z3bbN26FQAwZsyYsG/FsMETAqYyEIIgiKpADmAlURQ7FFvpf0Xm/02dOhV1dXV49tlnM96/YMECTJo0CT/96U+x//77Y+rUqVi9enXW/TU1NWHy5MlZ95eJfffdF8uXL/fkin39619HNBoVOXt+wlTjnnXWWZg3bx5uu+027LTTTjj44IM990+cOBHnnHMOHnzwQVx44YW4/fbbA/fvtNNOAfEHALqu4/TTT8ddd92Fu+66CyeffHJA/L7zzjuIRCLYfffd8x7rcMMzCq48RdkEQRBEgZADSGQlHo/j4osvxkUXXYRoNIqDDz4YmzdvxrJlyzB79mxMnToVa9aswf33348DDjgAjz32GB566KGc+7ziiitwzjnnYOzYsZg1axa6u7vx6quvZm2M/IUvfAE9PT1YtmyZqK6dOHEibrjhBsydOxddXV047bTTMHnyZKxbtw733HMPGhsbs7qQnJkzZ6K5uRlXX301rrrqKs995513HmbNmoVp06Zh27ZteP7557HrrrsW8M7ZApM/JlORy8svv4xDDz20KFd0qENVwARBENWHHEAiJ5dddhkuvPBCXH755dh1113xjW98A5s2bQIAfPnLX8b555+PuXPnYp999sGCBQs8rU4ycfrpp+O3v/0tbr75Zuy+++740pe+hA8//DDr9qNGjcIJJ5yAe++913P797//fTz99NP45JNPcMIJJ2D69Ok466yz0NzcjB/96Ed5X5eqqjjjjDNgmiZOO+00z32maWLOnDnYddddccwxx2DatGm4+eab8+5TZurUqTjooIMwffp0HHjggYH777//fpx99tkF7XO4QJKPIAii+iiM+jAUTVdXF1paWtDZ2Ynm5mbPfYlEAitXrsSUKVMCRQxEYSxZsgRf/OIXsWLFipztWApl9uzZ2Lx5Mx5++OGy7ZPDGMPUqVPx/e9/HxdccIHnvieeeAIXXnghlixZAl0vjwk/lM63qx99F3e8shIA8PDcg7HX9q3VPSCCIGqOXOt3rUAhYGLQs9dee+Haa6/FypUrRWuWUujs7MTSpUtx3333DYj427x5M+6//360t7fjO9/5TuD+3t5e3HXXXWUTf0MNmgVMEARRfWpzBSKGHGeccUbZ9vWVr3wFb7zxBs455xx88YtfLNt+OWPHjsXo0aNx2223YcSIEYH7/RXBtYanCIQUIEEQRFUgAUjUHHLLl4GAsipyQ30ACYIgqg8VgRAEUUVIARIEQVQDEoAEQVQURg4gQRBE1SEBSBBERbFoFjBBEETVIQFIEERFkce/UREIQRBEdSABSBBERbEY8FnlPbRhCzmABEEQVYKqgAmCqCjb9y7D/8V+DgBYwI6t8tEQBEHUJuQAEgPKFVdcgX322aekfaRSKey8885YsGBBeQ5qCHHrrbfi+OOPr/ZhlJXt+94TP1MRCEEQRHUgAUh4OOOMM/DVr3612ofh4dZbb8WUKVNw0EEHeW5//vnnceyxx2LUqFGor6/HbrvthgsvvBCffPLJgB3LqlWroChK4N+3vvUtz/2apgWOY8OGDdB1HYqiYNWqVZ7tFy9enPH5zjzzTPz3v//Fyy+/PGCvqdL0qC3uL2ayegdCEARRw5AAJAY1jDHceOONmD17tuf2P/7xjzjqqKPQ1taGf/7zn3j33Xdx6623orOzE9dff33GfZmmCcuyynJczzzzDDZs2CD+3XTTTZ77t9tuO9xzzz2e2/785z9ju+22K+h5otEoTjnlFPz+978v+ZgHC2k14v5ikAAkCIKoBiQAiZxYloXrrrsOO++8M2KxGHbYYQf84he/EPdffPHFmDZtGurr67HjjjvisssuQzqdzrnPO++8E7vvvjtisRjGjx+PuXPnZt120aJFWLFiBY477jhx27p163Duuefi3HPPxZ133onDDz8ckydPxmGHHYY77rgDl19+OQDg7rvvRmtrKx5++GHstttuiMVieOWVVxCJRNDe3u55nvPOOw+HHnooAGD16tU4/vjjMWLECDQ0NGD33XfH448/7tl+1KhRaGtrE/9aWlo8959++um46667PLfdddddOP3003O+N5k4/vjj8fDDD6O/v7/gxw5KPLPgjOodB0EQ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NTVVLVu2TO3atUvdcccdqqioSLW2tvZhy/uX2bNnq/z8fLVixQpVXl6u3n33XZWZmakee+yx0DFSx448Ho/avn272r59uwLUSy+9pLZv3x46O7UnNbvppptUcXGxKi0tVRs2bFDDhg1TM2fO7Kun1Ce6q6PP51O33367KigoUDt27Ih43Wlraws9htTx4kkAFN0COr397ne/Cx3T2tqqHnzwQZWWlqbi4+PVnXfeqaqrq/uu0ZeBcwOg1LDnli9frkaPHq1cLpcaMWKEev311yP2W5alnnzySZWdna1cLpeaPn26OnjwYB+1tn9yu91q7ty5qrCwUMXGxqrBgwerJ554IuIFVurY0dq1azv9ezh79mylVM9qdubMGTVz5kyVmJiokpOT1X333ac8Hk8fPJu+010dy8vLu3zdWbt2begxpI4XT1MqbOl3IYQQQgjxqSdzAIUQQgghoowEQCGEEEKIKCMBUAghhBAiykgAFEIIIYSIMhIAhRBCCCGijARAIYQQQogoIwFQCCGEECLKSAAUQgghhIgyEgCFEEIIIaKMBEAhhBBCiCgjAVAIIYQQIspIABRCCCGEiDISAIUQQgghoowEQCGEEEKIKCMBUAghhBAiykgAFEIIIYSIMhIAhRBCCCGijARAIYQQQogoIwFQCCGEECLKSAAUQgghhIgyEgCFEEIIIaKMBEAhhBBCiCgjAVAIIYQQIspIABRCCCGEiDISAIUQQgghoowEQCGEEEKIKCMBUAghhBAiykgAFEIIIYSIMhIAhRBCCCGijARAIYQQQogoIwFQCCGEECLK/H9zzbmrqv8Y+QAAAABJRU5ErkJggg==", - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "calc_y_crysfml = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", + "+ calculate E: 0.0033 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0008 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0050 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0010 s\n", + "+ calculate E: 0.0033 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0008 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0009 s\n", + "+ calculate E: 0.0036 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0008 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0049 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0014 s\n", + "+ calculate E: 0.0033 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0014 s\n", + "+ calculate D: 0.0016 s\n", + "+ calculate E: 0.0034 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0008 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0027 s\n", + "+ calculate E: 0.0058 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0014 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0073 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0035 s\n", + "+ calculate D: 0.0033 s\n", + "+ calculate E: 0.0060 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0014 s\n", + "+ calculate B: 0.0014 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0056 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", + "+ calculate D: 0.0022 s\n", + "+ calculate E: 0.0039 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0011 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0049 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0018 s\n", + "+ calculate E: 0.0038 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0011 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0045 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0038 s\n", + "+ calculate F: 0.0001 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0013 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0044 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0032 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0014 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0045 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0033 s\n", + "+ calculate D: 0.0012 s\n", + "+ calculate E: 0.0039 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0013 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0045 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", + "+ calculate D: 0.0015 s\n", + "+ calculate E: 0.0031 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0051 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0010 s\n", + "+ calculate E: 0.0033 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0047 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0023 s\n", + "+ calculate D: 0.0018 s\n", + "+ calculate E: 0.0042 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0013 s\n", + "+ calculate B: 0.0013 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0074 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0033 s\n", + "+ calculate D: 0.0031 s\n", + "+ calculate E: 0.0061 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0066 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0023 s\n", + "+ calculate D: 0.0018 s\n", + "+ calculate E: 0.0056 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0012 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0049 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0035 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0013 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0049 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0016 s\n", + "+ calculate E: 0.0036 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0047 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0013 s\n", + "+ calculate E: 0.0047 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0033 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0013 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0003 s\n", + "+ set reflection_list: 0.0051 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0018 s\n", + "+ calculate D: 0.0014 s\n", + "+ calculate E: 0.0035 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0010 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0051 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0036 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0012 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0044 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0018 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0038 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+ set reflection_list: 0.0056 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0022 s\n", + "+ calculate D: 0.0031 s\n", + "+ calculate E: 0.0041 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0013 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0071 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0033 s\n", + "+ calculate D: 0.0023 s\n", + "+ calculate E: 0.0046 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0065 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0042 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0056 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0019 s\n", + "+ calculate E: 0.0050 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0050 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0022 s\n", + "+ calculate E: 0.0040 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0050 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0022 s\n", + "+ calculate D: 0.0016 s\n", + "+ calculate E: 0.0037 s\n", + "+ calculate F: 0.0001 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0012 s\n", + "+ calculate B: 0.0013 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0050 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", + "+ calculate D: 0.0015 s\n", + "+ calculate E: 0.0033 s\n", + "+ calculate F: 0.0001 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0013 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0002 s\n", + "+ reflection_list.compute_structure_factors: 0.0003 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0018 s\n", + "+ calculate D: 0.0016 s\n", + "+ calculate E: 0.0038 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0014 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0044 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", + "+ calculate D: 0.0015 s\n", + "+ calculate E: 0.0032 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0010 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0055 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0018 s\n", + "+ calculate D: 0.0016 s\n", + "+ calculate E: 0.0045 s\n", + "+ calculate F: 0.0001 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0014 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0087 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0031 s\n", + "+ calculate D: 0.0039 s\n", + "+ calculate E: 0.0059 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0013 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0054 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0027 s\n", + "+ calculate D: 0.0023 s\n", + "+ calculate E: 0.0049 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0014 s\n", + "+ calculate B: 0.0011 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0061 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0023 s\n", + "+ calculate D: 0.0018 s\n", + "+ calculate E: 0.0058 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0010 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0049 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0026 s\n", + "+ calculate D: 0.0015 s\n", + "+ calculate E: 0.0038 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0054 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0016 s\n", + "+ calculate E: 0.0045 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0010 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0054 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0028 s\n", + "+ calculate D: 0.0018 s\n", + "+ calculate E: 0.0039 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0012 s\n", + "+ calculate B: 0.0011 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0050 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", + "+ calculate D: 0.0019 s\n", + "+ calculate E: 0.0041 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0011 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0063 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0018 s\n", + "+ calculate D: 0.0019 s\n", + "+ calculate E: 0.0044 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0014 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0062 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0041 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0016 s\n", + "+ calculate B: 0.0014 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0056 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", + "+ calculate D: 0.0012 s\n", + "+ calculate E: 0.0040 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0053 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0018 s\n", + "+ calculate E: 0.0036 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", + "+ calculate D: 0.0020 s\n", + "+ calculate E: 0.0037 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0045 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0015 s\n", + "+ calculate E: 0.0035 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0013 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0030 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0034 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0021 s\n", + "+ calculate E: 0.0035 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0011 s\n", + "+ calculate E: 0.0034 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0008 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0049 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0010 s\n", + "+ calculate E: 0.0033 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0008 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0010 s\n", + "+ calculate E: 0.0037 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0051 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0043 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0011 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0065 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0022 s\n", + "+ calculate E: 0.0037 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0071 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0020 s\n", + "+ calculate E: 0.0057 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0014 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0002 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0074 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0032 s\n", + "+ calculate D: 0.0021 s\n", + "+ calculate E: 0.0057 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0015 s\n", + "+ calculate B: 0.0013 s\n", + "+ calculate C: 0.0002 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0077 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0033 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0060 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0011 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0073 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0034 s\n", + "+ calculate D: 0.0020 s\n", + "+ calculate E: 0.0055 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0011 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0069 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0029 s\n", + "+ calculate D: 0.0020 s\n", + "+ calculate E: 0.0044 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0012 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0074 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0034 s\n", + "+ calculate D: 0.0019 s\n", + "+ calculate E: 0.0053 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0078 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0023 s\n", + "+ calculate D: 0.0022 s\n", + "+ calculate E: 0.0049 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0016 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0066 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0034 s\n", + "+ calculate D: 0.0018 s\n", + "+ calculate E: 0.0058 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0009 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0072 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0030 s\n", + "+ calculate D: 0.0021 s\n", + "+ calculate E: 0.0052 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0014 s\n", + "+ calculate B: 0.0011 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0064 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0029 s\n", + "+ calculate D: 0.0027 s\n", + "+ calculate E: 0.0052 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0012 s\n", + "+ calculate B: 0.0012 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0050 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", + "+ calculate D: 0.0018 s\n", + "+ calculate E: 0.0036 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0010 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", + "+ calculate D: 0.0018 s\n", + "+ calculate E: 0.0036 s\n", + "+ calculate F: 0.0000 s\n", + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0008 s\n", + "+ calculate B: 0.0009 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0048 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0024 s\n", + "+ calculate D: 0.0026 s\n", + "+ calculate E: 0.0049 s\n", + "+ calculate F: 0.0000 s\n", + "The fit has been successful: True\n", + "The gooodness of fit (chi2) is: 31.740148464580013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, \n", + " method='least_squares', minimizer_kwargs={'diff_step': 1e-5})\n", + "\n", + "\n", + "print(\"The fit has been successful: {}\".format(result.success))\n", + "if result.success: \n", + " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", + " print(job.pattern.scale)\n", + " print(job.pattern.zero_shift)\n", + " print(job.parameters.resolution_u)\n", + " print(job.parameters.resolution_v)\n", + " print(job.parameters.resolution_w)\n", + " print(job.backgrounds[0][0])\n", + " print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show results of both CrysPy and CrysFML calculations (after fitting)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "+ calculate A: 0.0012 s\n", + "+ calculate B: 0.0011 s\n", + "+ calculate C: 0.0001 s\n", + "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", + "+ reflection_list.compute_structure_factors: 0.0002 s\n", + "+ set reflection_list: 0.0064 s\n", + "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0027 s\n", + "+ calculate D: 0.0017 s\n", + "+ calculate E: 0.0044 s\n", + "+ calculate F: 0.0000 s\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "928d78db75ed4cd7bc142003eb269ab5", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAADU1ElEQVR4nOydeZgcZbn276rqbfbJQjYJSVjCElYBMWwfChIi5ijiUQQFJODBk8hhERAPcBBRBEXUwyYoQRQMcgRF9rAvCaCRkJCQACELIZkkZDJrL7V+f1S9b721dHf1dE/3zPTzu65c6emurq7qru666342ybIsCwRBEARBEETdINd6AwiCIAiCIIjqQgKQIAiCIAiiziABSBAEQRAEUWeQACQIgiAIgqgzSAASBEEQBEHUGSQACYIgCIIg6gwSgARBEARBEHUGCUCCIAiCIIg6gwQgQRAEQRBEnUECkCAIgiAIos4gAUgQBEEQBFFnkAAkCIIgCIKoM0gAEgRBEARB1BkkAAmCIAiCIOoMEoAEQRAEQRB1BglAgiAIgiCIOoMEIEEQBEEQRJ1BApAgCIIgCKLOIAFIEARBEARRZ5AAJAiCIAiCqDNIABIEQRAEQdQZJAAJgiAIgiDqDBKABEEQBEEQdQYJQIIgCIIgiDqDBCBBEARBEESdQQKQIAiCIAiiziABSBAEQRAEUWeQACQIgiAIgqgzSAASBEEQBEHUGSQACYIgCIIg6gwSgARBEARBEHUGCUCCIAiCIIg6gwQgQRAEQRBEnUECkCAIgiAIos4gAUgQBEEQBFFnkAAkCIIgCIKoM0gAEgRBEARB1BkkAAmCIAiCIOoMEoAEQRAEQRB1BglAgiAIgiCIOoMEIEEQBEEQRJ1BApAgCIIgCKLOIAFIEARBEARRZ5AAJAiCIAiCqDNIABIEQRAEQdQZJAAJgiAIgiDqDBKABEEQBEEQdQYJQIIgCIIgiDqDBCBBEARBEESdQQKQIAiCIAiiziABSBAEQRAEUWeQACQIgiAIgqgzSAASBEEQBEHUGSQACYIgCIIg6gwSgARBEARBEHUGCUCCIAiCIIg6I1brDRjOmKaJzZs3o6WlBZIk1XpzCIIgCIKIgGVZ6O3txaRJkyDL9emFkQAsg82bN2Py5Mm13gyCIAiCIAbAhx9+iF133bXWm1ETSACWQUtLCwD7AGptba3x1hAEQRAEEYWenh5MnjyZn8frERKAZcDCvq2trSQACYIgCGKYUc/pW/UZ+CYIgiAIgqhjSAASBEEQBEHUGSQACYIgCIIg6owhlwN4/fXX46GHHsLq1avR0NCAI488EjfccAP23ntvvsxxxx2HF1980fO8//iP/8Add9zB/964cSO+853v4Pnnn0dzczPOOussXH/99YjF3F1+4YUXcPHFF2PlypWYPHkyrrzySpx99tkV3R/LsqDrOgzDqOh6CYKhKApisVhd57IQBEEQpTHkBOCLL76IefPm4fDDD4eu6/jBD36AE088EatWrUJTUxNf7rzzzsO1117L/25sbOS3DcPAySefjAkTJmDx4sXYsmULzjzzTMTjcfzkJz8BAKxbtw4nn3wyzj//fNx333149tlnce6552LixImYNWtWRfZFVVVs2bIF6XS6IusjiHw0NjZi4sSJSCQStd4UgiAIYhggWZZl1XojCrF9+3aMGzcOL774Io499lgAtgN48MEH45e//GXoc5544gl84QtfwObNmzF+/HgAwB133IHLL78c27dvRyKRwOWXX47HHnsMb7/9Nn/eaaedhq6uLjz55JORtq2npwdtbW3o7u4OVAGbpon33nsPiqJgl112QSKRIIeGqDiWZUFVVWzfvh2GYWCvvfaq26amBEEQUSl0/q4XhpwD6Ke7uxsAMHr0aM/99913H/74xz9iwoQJmDNnDq666iruAi5ZsgQHHHAAF38AMGvWLHznO9/BypUrccghh2DJkiU44YQTPOucNWsWLrzwwrzbksvlkMvl+N89PT15l1VVFaZpYvLkyR53kiAqTUNDA+LxODZs2ABVVZFKpWq9SQRBEMQQZ0gLQNM0ceGFF+Koo47C/vvvz+8//fTTMWXKFEyaNAnLly/H5ZdfjjVr1uChhx4CAHR0dHjEHwD+d0dHR8Flenp6kMlk0NDQENie66+/Hj/84Q9L2gdyY4hqQMcZQRAEUQpDWgDOmzcPb7/9Nl555RXP/d/+9rf57QMOOAATJ07E8ccfj7Vr12KPPfYYtO254oorcPHFF/O/WSdxgiAIgiCI4cSQtQ3mz5+PRx99FM8//3zROX1HHHEEAOD9998HAEyYMAFbt271LMP+njBhQsFlWltbQ90/AEgmk3zqB03/IAiCIAhiuDLkBKBlWZg/fz4efvhhPPfcc5g2bVrR5yxbtgwAMHHiRADAzJkzsWLFCmzbto0vs2jRIrS2tmK//fbjyzz77LOe9SxatAgzZ86s0J4MX84++2x86UtfqvVmEARBEAQxSAw5AThv3jz88Y9/xP3334+WlhZ0dHSgo6MDmUwGALB27Vr86Ec/wtKlS7F+/Xo88sgjOPPMM3HsscfiwAMPBACceOKJ2G+//fDNb34Tb731Fp566ilceeWVmDdvHpLJJADg/PPPxwcffIDLLrsMq1evxm233YY///nPuOiii2q27wRBEARBENVgyAnA22+/Hd3d3TjuuOMwceJE/u+BBx4AACQSCTzzzDM48cQTsc8+++CSSy7Bqaeeir///e98HYqi4NFHH4WiKJg5cya+8Y1v4Mwzz/T0DZw2bRoee+wxLFq0CAcddBBuuukm/Pa3v61YD8CRwnHHHYfvfve7uPDCCzFq1CiMHz8ed911F/r7+/Gtb30LLS0t2HPPPfHEE094nvf2229j9uzZaG5uxvjx4/HNb34TH3/8MX/8ySefxNFHH4329naMGTMGX/jCF7B27Vr+uKqqmD9/PiZOnIhUKoUpU6bg+uuvr9p+E4OHaVq4edG7ePm97bXeFIIgiLplyBWBFGtLOHny5MAUkDCmTJmCxx9/vOAyxx13HN58882Stq8cLMtCRqv+RJCGuFJWD8Lf//73uOyyy/DGG2/ggQcewHe+8x08/PDDOOWUU/CDH/wAN998M775zW9i48aNaGxsRFdXFz772c/i3HPPxc0334xMJoPLL78cX/3qV/Hcc88BAPr7+3HxxRfjwAMPRF9fH66++mqccsopWLZsGWRZxq9//Ws88sgj+POf/4zddtsNH374IT788MNKvSVEDXn87S341bPvAQDW//TkGm8NQRBEfTLkBOBIJqMZ2O/qp6r+uquunYXGxMA/6oMOOghXXnklALsS+qc//SnGjh2L8847DwBw9dVX4/bbb8fy5cvx6U9/GrfccgsOOeQQPnUFAO6++25MnjwZ7777LqZPn45TTz3V8xp33303dtllF6xatQr7778/Nm7ciL322gtHH300JEnClClTBrz9xNCioztb600gCIKoe4ZcCJgYerDcSsAOr48ZMwYHHHAAv4/1U2RFN2+99Rafwcz+7bPPPgDAw7zvvfcevv71r2P33XdHa2srpk6dCsCe4QzYhSjLli3D3nvvjQsuuABPP/30oO8nUR2SMfrZIQiCqDXkAFaRhriCVddWP8ewIa6U9fx4PO75W5Ikz30svGyaJgCgr68Pc+bMwQ033BBYF6vUnjNnDqZMmYK77roLkyZNgmma2H///aGqKgDgk5/8JNatW4cnnngCzzzzDL761a/ihBNOwP/93/+VtS9E7UkKx2NON5CMlXd8EgRBEKVDArCKSJJUVih2uPDJT34Sf/nLXzB16lTEYsH93bFjB9asWYO77roLxxxzDAAEmn0DQGtrK772ta/ha1/7Gr7yla/gpJNOQmdnZ2AsIDG8kIV8VFU3SQASBEHUAIrFEBVn3rx56OzsxNe//nX84x//wNq1a/HUU0/hW9/6FgzDwKhRozBmzBjceeedeP/99/Hcc895JqwAwC9+8Qv86U9/wurVq/Huu+/iwQcfxIQJE9De3l6bnSIqhuE4xQBQuOSLIAiCGCxIABIVZ9KkSXj11VdhGAZOPPFEHHDAAbjwwgvR3t4OWZYhyzIWLlyIpUuXYv/998dFF12En/3sZ551tLS04MYbb8Rhhx2Gww8/HOvXr8fjjz9OM29HAJrhyj7LLLAgQRAEMWhIVrG+K0Reenp60NbWhu7u7sBYuGw2i3Xr1mHatGlIpVI12kKiXhhOx9vvF6/H/zyyEgCw7OrPob0xUeMtIgii3ih0/q4XyE4hCKKq6KZ7zWnS5SdBEERNIAFIEERVMT0CkBQgQRBELSABSBBEVbGE0g/SfwRBELWBBCBBEFVFFH2UgkwQBFEbSAASBFFVxLw/kn8EQRC1gQQgQRBVRQwBUw4gQRBEbSABSBBEVRE1H1UBEwRB1AYSgARBVBUx749yAAmCIGoDCUCCIKqKtwikdttBEARRz5AAJAaVa665BgcffHBZ61BVFXvuuScWL15cmY2qMd///vfx3e9+t9abUTNEzUcCkCAIojaQACQ8nH322fjSl75U683wcMcdd2DatGk48sgjPfc///zz+PznP48xY8agsbER++23Hy655BJ89NFHg7Yt69evhyRJ/N+YMWNw4okn4s0334y8ju9973v4/e9/jw8++GDQtnMoIxZ+UBEIQRBEbSABSAxpLMvCLbfcgrlz53ru/81vfoMTTjgBEyZMwF/+8hesWrUKd9xxB7q7u3HTTTeFrsswDJimWZHteuaZZ7BlyxY89dRT6Ovrw+zZs9HV1RXpuWPHjsWsWbNw++23V2RbhhsWtYEhCIKoOSQAiYKYpokbb7wRe+65J5LJJHbbbTf8+Mc/5o9ffvnlmD59OhobG7H77rvjqquugqZpBdd59913Y8aMGUgmk5g4cSLmz5+fd9mlS5di7dq1OPnkk/l9mzZtwgUXXIALLrgAd999N4477jhMnToVxx57LH7729/i6quvBgDcc889aG9vxyOPPIL99tsPyWQSr7zyCuLxODo6Ojyvc+GFF+KYY44BAGzYsAFz5szBqFGj0NTUhBkzZuDxxx/3LD9mzBhMmDABhx12GH7+859j69ateP3113Httddi//33D+zHwQcfjKuuuor/PWfOHCxcuLDg+zRSscgBJAiCqDmxWm9AXWFZgJau/uvGGwFJGtBTr7jiCtx11124+eabcfTRR2PLli1YvXo1f7ylpQX33HMPJk2ahBUrVuC8885DS0sLLrvsstD13X777bj44ovx05/+FLNnz0Z3dzdeffXVvK//8ssvY/r06WhpaeH3Pfjgg1BVNe9rtLe389vpdBo33HADfvvb32LMmDGYPHkydt99d/zhD3/ApZdeCgDQNA333XcfbrzxRgDAvHnzoKoqXnrpJTQ1NWHVqlVobm7Ou40NDQ0A7FzFc845Bz/84Q/xj3/8A4cffjgA4M0338Ty5cvx0EMP8ed86lOfwqZNm7B+/XpMnTo177pHIt4cQBKABEEQtYAEYDXR0sBPJlX/dX+wGUg0lfy03t5e/OpXv8Itt9yCs846CwCwxx574Oijj+bLXHnllfz21KlT8b3vfQ8LFy7MK86uu+46XHLJJfiv//ovfh8TSmFs2LABkyZ537P33nsPra2tmDhxYtF90DQNt912Gw466CB+39y5c7FgwQIuAP/+978jm83iq1/9KgBg48aNOPXUU3HAAQcAAHbfffe86+/q6sKPfvQjNDc341Of+hTGjx+PWbNmYcGCBXy/FixYgP/3//6fZz1snzZs2FB/ApCqgAmCIGoOhYCJvLzzzjvI5XI4/vjj8y7zwAMP4KijjsKECRPQ3NyMK6+8Ehs3bgxddtu2bdi8eXPB9fnJZDJIpVKe+yzLghTR0UwkEjjwwAM995199tl4//338dprrwGwQ8Vf/epX0dRki+QLLrgA1113HY466ij8z//8D5YvXx5Y75FHHonm5maMGjUKb731Fh544AGMHz8eAHDeeefhT3/6E7LZLFRVxf33349zzjnH83zmGqbTNXCEa4y3CKSGG0IQBFHHkANYTeKNthtXi9cdAEyk5GPJkiU444wz8MMf/hCzZs1CW1sbFi5cmLcIo9j6whg7dixWrFjhuW/69Ono7u7Gli1birqADQ0NAbE4btw4zJkzBwsWLMC0adPwxBNP4IUXXuCPn3vuuZg1axYee+wxPP3007j++utx0003eVq3PPDAA9hvv/0wZswYT8gZsPP7kskkHn74YSQSCWiahq985SueZTo7OwEAu+yyS9S3YsTgCQFTGQhBEERNIAewmkiSHYqt9r8B5v/ttddeaGhowLPPPhv6+OLFizFlyhT893//Nw477DDstdde2LBhQ971tbS0YOrUqXnXF8YhhxyC1atXe3LFvvKVryCRSPCcPT9RqnHPPfdcPPDAA7jzzjuxxx574KijjvI8PnnyZJx//vl46KGHcMkll+Cuu+4KPL7HHnsExB8AxGIxnHXWWViwYAEWLFiA0047LSB+3377bcTjccyYMaPoto40PKPgKlOUTRAEQZQIOYBEXlKpFC6//HJcdtllSCQSOOqoo7B9+3asXLkSc+fOxV577YWNGzdi4cKFOPzww/HYY4/h4YcfLrjOa665Bueffz7GjRuH2bNno7e3F6+++mrexsif+cxn0NfXh5UrV/Lq2smTJ+Pmm2/G/Pnz0dPTgzPPPBNTp07Fpk2bcO+996K5uTmvC8mYNWsWWltbcd111+Haa6/1PHbhhRdi9uzZmD59Onbu3Innn38e++67bwnvnC0w2XPCilxefvllHHPMMQNyRYc7VAVMEARRe8gBJApy1VVX4ZJLLsHVV1+NfffdF1/72tewbds2AMC//du/4aKLLsL8+fNx8MEHY/HixZ5WJ2GcddZZ+OUvf4nbbrsNM2bMwBe+8AW89957eZcfM2YMTjnlFNx3332e+//zP/8TTz/9ND766COccsop2GeffXDuueeitbUV3/ve94rulyzLOPvss2EYBs4880zPY4ZhYN68edh3331x0kknYfr06bjtttuKrlNkr732wpFHHol99tkHRxxxRODxhQsX4rzzzitpnSMFknwEQRC1R7KoD8OA6enpQVtbG7q7u9Ha2up5LJvNYt26dZg2bVqgiIEojeXLl+Nzn/sc1q5d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", + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "calc_y_crysfml = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "bf4f8d7d972f46ccbb7b39f902b859f6", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAACYHElEQVR4nO2dd5wU9f3/X1uuwt3ROZDeRJqgCEGsESVGidFEoyERbIkRY41RvpYYo9Fo1MQeNaL+omJMLLGLWFEEBVEURFCkd7g74Liyu/P7Y29mPzPzmbZ9d15PHzzcm53ymc/OzOc17/YJKIqigBBCCCGE+IZgrhtACCGEEEKyCwUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiM8K5bkAhE4vFsHHjRlRVVSEQCOS6OYQQQghxgaIo2L17N3r27Ilg0J+2MArAFNi4cSN69+6d62YQQgghJAnWrVuHXr165boZOYECMAWqqqoAxC+g6urqHLeGEEIIIW5oaGhA7969tXHcj1AApoDq9q2urqYAJIQQQgoMP4dv+dPxTQghhBDiYygACSGEEEJ8BgUgIYQQQojPYAxghlEUBZFIBNFoNNdNIYRkmFAohHA47Ou4IkJIYUABmEFaWlqwadMmNDY25rophJAsUVlZiR49eqC0tDTXTSGEEEsoADNELBbD6tWrEQqF0LNnT5SWltIqQEgRoygKWlpasG3bNqxevRqDBw/2bYFZQkj+QwGYIVpaWhCLxdC7d29UVlbmujmEkCxQUVGBkpISrFmzBi0tLSgvL891kwghRApfTzMMLQCE+Ave84SQQoBPKkIIIYQQn0EBSDLK9ddfj9GjR6e0j5aWFgwaNAgffvhhehqVY6666ir89re/zfpxv/vuOwQCASxZsiSl/Vx77bX41a9+lZ5GFRDbt29Ht27dsH79+lw3hRBCUoYCkOiYPn06fvzjH+e6GToeeOAB9O/fH4ceeqhu+dtvv40f/vCH6Ny5MyorKzFs2DBcfvnl2LBhQ8baoooo9V/nzp1x3HHH4dNPP3W9j9/97nd47LHH8O2339qu98477yAQCKCuri7FVqePzZs34+9//zuuvvpq0/Lf/va3GDBgAMrKytC7d29MmTIFc+fOzWh7jjrqKN3vof6LRCK672+55RbTtieccAICgQCuv/563f4uueQS6bG6dOmCM888E3/4wx8ycSqEEJJVKABJXqMoCu655x6cc845uuX/+Mc/MGnSJNTW1uK///0vli1bhgceeAD19fW4/fbbpfuKRqOIxWJpadebb76JTZs24fXXX8eePXtw/PHHuxZqXbp0weTJk3H//fenpS3Z5OGHH8ahhx6Kvn37asu+++47HHzwwXjrrbdw2223YenSpXjttddw9NFHY8aMGZb7am1tTUubzjvvPGzatEn3LxxO5Lf17t0bjz76qG6bDRs2YO7cuejRo4enY5111ll44oknsHPnznQ0nRBCcgYFILElFovh1ltvxaBBg1BWVoY+ffrgpptu0r6/8sorMWTIEFRWVmLAgAG49tprHQf2Rx55BMOHD0dZWRl69OiBCy+80HLdRYsW4ZtvvsEJJ5ygLVu/fj0uuugiXHTRRXjkkUdw1FFHoV+/fjjiiCPw8MMP47rrrgMAPProo+jQoQP+97//YdiwYSgrK8O8efNQUlKCzZs3645zySWX4PDDDwcArFmzBlOmTEHHjh3Rrl07DB8+HK+88opu/c6dO6O2thZjx47FX//6V2zZsgULFizADTfcgBEjRpjOY/To0bj22mu1v6dMmYLZs2fb9pOMDz74AEcddRQqKyvRsWNHTJ48Gbt27QIAvPbaazjssMPQoUMHdO7cGSeeeCK++eYb2/19+eWXOPHEE1FdXY2qqiocfvjhttvMnj0bU6ZM0S274IILEAgEsHDhQvzkJz/BkCFDMHz4cFx22WX46KOPtPUCgQDuv/9+/OhHP0K7du1w4403YtCgQfjrX/+q29+SJUsQCASwatUqKIqC66+/Hn369EFZWRl69uyJiy66SLd+ZWUlamtrdf9ETjzxRGzfvh0ffPCBtuyxxx7Dcccdh27dutn2j5Hhw4ejZ8+eeO655zxtR4gd23Y34+ZXlmP19r25bgrxERSAWURRFDS2RLL+T1GUpNs8c+ZM3HLLLbj22muxbNkyPPnkk+jevbv2fVVVFR599FEsW7YMf//73/HQQw/hzjvvtNzf/fffjxkzZuBXv/oVli5div/9738YNGiQ5frvv/8+hgwZgqqqKm3ZM888g5aWFvz+97+XbtOhQwftc2NjI/7yl7/g4YcfxpdffomxY8diwIAB+H//7/9p67S2tuKJJ57A2WefDQCYMWMGmpub8d5772Hp0qX4y1/+gvbt21u2saKiAkA8VvHss8/G8uXL8fHHH2vff/rpp/j8889x1llnacvGjRuH9evX47vvvrPcr5ElS5bgmGOOwbBhwzB//nzMmzcPU6ZM0WaZ2bt3Ly677DJ88sknmDt3LoLBIE4++WRLq+eGDRtwxBFHoKysDG+99RYWLVqEs88+W3OfGtm5cyeWLVuGsWPH6pa99tprmDFjBtq1a2faRvwtgHhM6Mknn4ylS5finHPOwdlnn41Zs2bp1pk1axaOOOIIDBo0CP/9739x55134h//+AdWrlyJ559/HiNHjnTdZwBQWlqKqVOn6o7z6KOPar+3V8aNG4f3338/qW0JkXHp00vwj/e+xUn3zMt1U4iPYB3ALLKvNYph172e9eMuu2EyKku9/9S7d+/G3//+d9xzzz2YNm0aAGDgwIE47LDDtHWuueYa7XO/fv3wu9/9DrNnz7YUZzfeeCMuv/xyXHzxxdqyQw45xLINa9asQc+ePXXLVq5cierqalfuu9bWVtx333048MADtWXnnHMOZs2ahSuuuAIA8OKLL6KpqQmnnXYaAGDt2rX4yU9+ogmNAQMGWO6/rq4Of/rTn9C+fXuMGzcO3bt3x+TJkzFr1iztvGbNmoUjjzxStx/1nNasWYN+/fo5ngcA3HrrrRg7dizuu+8+bdnw4cO1zz/5yU906z/yyCPo2rUrli1bJrVK3nvvvaipqcHs2bNRUlICABgyZIjl8deuXQtFUXS/h2qlGzp0qKtz+PnPf64TwtOnT8d1112HhQsXYty4cWhtbcWTTz6pWQXXrl2L2tpaTJo0CSUlJejTpw/GjRun2+d9992Hhx9+WPv717/+tSkM4Oyzz8bhhx+Ov//971i0aBHq6+tx4okn6uL/3NKzZ09PMZ+EOLFoTdyK39Akf/kiJBPQAkgsWb58OZqbm3HMMcdYrvP0009j4sSJqK2tRfv27XHNNddg7dq10nW3bt2KjRs32u7PyL59+0zFdBVFcT2rSmlpKUaNGqVbNn36dKxatUpzTz766KM47bTTNAvWRRddhBtvvBETJ07EH/7wB3z++eem/R566KFo3749OnbsiM8++wxPP/20Zhk977zz8NRTT6GpqQktLS148sknTdYm1WqoThM4fPhwtG/fHu3bt8fxxx8vPRfVAmjFypUrccYZZ2DAgAGorq7WhKXV77FkyRIcfvjhmvhzYt++fQCg+z28WpdF6yEQF1MnnHACHnnkEQBxMd7c3IxTTz0VAHDqqadi3759GDBgAM477zw899xzJgvl1KlTsWTJEu3fzJkzTcc98MADMXjwYPznP//BI488gl/+8pe6OEEvVFRUcHpHklY4SRTJBbQAZpGKkhCW3TA5J8dNars2kWLF/PnzMXXqVPzxj3/E5MmTNWuSVRKG0/5kdOnSBUuXLtUtGzJkCOrr67Fp0yZHK2BFRYVJLHbr1g1TpkzBrFmz0L9/f7z66qt45513tO/PPfdcTJ48GS+//DLeeOMN3Hzzzbj99tt1pVuefvppDBs2DJ07dza5OadMmYKysjI899xzKC0tRWtrK37605/q1lGTCLp27QoAeOWVV7TYSat+cuq/KVOmoG/fvnjooYfQs2dPxGIxjBgxAi0tLUntz0iXLl0AALt27dLaPXjwYAQCAXz11Veu9iFzE5977rn45S9/iTvvvBOzZs3Cz372M232nN69e2PFihV48803MWfOHFxwwQW47bbb8O6772rCtaamxjaMQOXss8/Gvffei2XLlmHhwoWu2itj586d2vkTQkihQgtgFgkEAqgsDWf9X7JzEA8e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EAjgkksu0ZaxD92zYcMG/OIXv0Dnzp1RUVGBkSNH4pNPPtG+VxQF1113HXr06IGKigpMmjQJK1euzGGL849oNIprr70W/fv3R0VFBQYOHIg//elPunlR2Y9m3nvvPUyZMgU9e/ZEIBDA888/r/veTZ/t3LkTU6dORXV1NTp06IBzzjkHe/bsyeJZ5B67fmxtbcWVV16JkSNHol27dujZsyfOPPNMbNy4UbcP9mPqUAASW959913MmDEDH330EebMmYPW1lYcd9xx2Lt3r7bOpZdeihdffBHPPPMM3n33XWzcuBGnnHJKDludv3z88cf4xz/+gVGjRumWsw/dsWvXLkycOBElJSV49dVXsWzZMtx+++3o2LGjts6tt96Ku+66Cw888AAWLFiAdu3aYfLkyWhqasphy/OLv/zlL7j//vtxzz33YPny5fjLX/6CW2+9FXfffbe2DvvRzN69e3HggQfi3nvvlX7vps+mTp2KL7/8EnPmzMFLL72E9957D7/61a+ydQp5gV0/NjY2YvHixbj22muxePFiPPvss1ixYgV+9KMf6dZjP6YBhRAPbN26VQGgvPvuu4qiKEpdXZ1SUlKiPPPMM9o6y5cvVwAo8+fPz1Uz85Ldu3crgwcPVubMmaMceeSRysUXX6woCvvQC1deeaVy2GGHWX4fi8WU2tpa5bbbbtOW1dXVKWVlZcpTTz2VjSYWBCeccIJy9tln65adcsopytSpUxVFYT+6AYDy3HPPaX+76bNly5YpAJSPP/5YW+fVV19VAoGAsmHDhqy1PZ8w9qOMhQsXKgCUNWvWKIrCfkwXtAAST9TX1wMAOnXqBABYtGgRWltbMWnSJG2doUOHok+fPpg/f35O2pivzJgxAyeccIKurwD2oRf+97//YezYsTj11FPRrVs3jBkzBg899JD2/erVq7F582ZdX9bU1GD8+PHsS4FDDz0Uc+fOxddffw0A+OyzzzBv3jwcf/zxANiPyeCmz+bPn48OHTpg7Nix2jqTJk1CMBjEggULst7mQqG+vh6BQAAdOnQAwH5MF+FcN4AUDrFYDJdccgkmTpyIESNGAAA2b96M0tJS7cZU6d69OzZv3pyDVuYns2fPxuLFi/Hxxx+bvmMfuufbb7/F/fffj8suuwz/93//h48//hgXXXQRSktLMW3aNK2/unfvrtuOfannqquuQkNDA4YOHYpQKIRoNIqbbroJU6dOBQD2YxK46bPNmzejW7duuu/D4TA6derEfrWgqakJV155Jc444wxUV1cDYD+mCwpA4poZM2bgiy++wLx583LdlIJi3bp1uPjiizFnzhyUl5fnujkFTSwWw9ixY/HnP/8ZADBmzBh88cUXeOCBBzBt2rQct65w+Pe//40nnngCTz75JIYPH44lS5bgkksuQc+ePdmPJG9obW3FaaedBkVRcP/99+e6OUUHXcDEFRdeeCFeeuklvP322+jVq5e2vLa2Fi0tLairq9Otv2XLFtTW1ma5lfnJokWLsHXrVhx00EEIh8MIh8N49913cddddyEcDqN79+7sQ5f06NEDw4YN0y074IADsHbtWgDQ+suYQc2+1HPFFVfgqquuwumnn46RI0fil7/8JS699FLcfPPNANiPyeCmz2pra7F161bd95FIBDt37mS/GlDF35o1azBnzhzN+gewH9MFBSCxRVEUXHjhhXjuuefw1ltvoX///rrvDz74YJSUlGDu3LnashUrVmDt2rWYMGFCtpublxxzzDFYunQplixZov0bO3Yspk6dqn1mH7pj4sSJpjJEX3/9Nfr27QsA6N+/P2pra3V92dDQgAULFrAvBRobGxEM6h//oVAIsVgMAPsxGdz02YQJE1BXV4dFixZp67z11luIxWIYP3581tucr6jib+XKlXjzzTfRuXNn3ffsxzSR6ywUkt/85je/UWpqapR33nlH2bRpk/avsbFRW+f8889X+vTpo7z11lvKJ598okyYMEGZMGFCDlud/4hZwIrCPnTLwoULlXA4rNx0003KypUrlSeeeEKprKxU/vWvf2nr3HLLLUqHDh2UF154Qfn888+Vk046Senfv7+yb9++HLY8v5g2bZqy3377KS+99JKyevVq5dlnn1W6dOmi/P73v9fWYT+a2b17t/Lpp58qn376qQJAueOOO5RPP/1Uy05102c/+MEPlDFjxigLFixQ5s2bpwwePFg544wzcnVKOcGuH1taWpQf/ehHSq9evZQlS5boxp3m5mZtH+zH1KEAJLYAkP6bNWuWts6+ffuUCy64QOnYsaNSWVmpnHzyycqmTZty1+gCwCgA2YfuefHFF5URI0YoZWVlytChQ5UHH3xQ930sFlOuvfZapXv37kpZWZlyzDHHKCtWrMhRa/OThoYG5eKLL1b69OmjlJeXKwMGDFCuvvpq3QDLfjTz9ttvS5+H06ZNUxTFXZ/t2LFDOeOMM5T27dsr1dXVyllnnaXs3r07B2eTO+z6cfXq1Zbjzttvv63tg/2YOgFFEUq/E0IIIYSQoocxgIQQQgghPoMCkBBCCCHEZ1AAEkIIIYT4DApAQgghhBCfQQFICCGEEOIzKAAJIYQQQnwGBSAhhBBCiM+gACSEEEII8RkUgIQQQgghPoMCkBBCCCHEZ1AAEkIIIYT4DApAQgghhBCfQQFICCGEEOIzKAAJIYQQQnwGBSAhhBBCiM+gACSEEEII8RkUgIQQQgghPoMCkBBCCCHEZ1AAEkIIIYT4DApAQgghhBCfQQFICCGEEOIzKAAJIYQQQnwGBSAhhBBCiM+gACSEEEII8RkUgIQQQgghPoMCkBBCCCHEZ1AAEkIIIYT4DApAQgghhBCfQQFICCGEEOIzKAAJIYQQQnwGBSAhhBBCiM/4/yRSOTwEAh1NAAAAAElFTkSuQmCC", + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib widget\n", + "plt.plot(meas_x, calc_y_cryspy-calc_y_crysfml, label='Icalc (CrysPy)-Icalc (CrysFML)')\n", "plt.legend()" ] }, @@ -3199,9 +4304,9 @@ ], "metadata": { "kernelspec": { - "display_name": "PyCharm (easyDiffractionLib)", + "display_name": "Python 3 (ipykernel)", "language": "python", - "name": "pycharm-a1ae86a1" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -3213,7 +4318,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/Notebooks/PbSO4/D1A@ILL.xye b/Notebooks/PbSO4/D1A@ILL.xye deleted file mode 100644 index 6ff09d36..00000000 --- a/Notebooks/PbSO4/D1A@ILL.xye +++ /dev/null @@ -1,2202 +0,0 @@ -# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992) - 10.0000 220.0000 14.8324 - 10.0500 214.0000 14.6287 - 10.1000 219.0000 14.7986 - 10.1500 224.0000 14.9666 - 10.2000 198.0000 14.0712 - 10.2500 229.0000 15.1327 - 10.3000 224.0000 14.9666 - 10.3500 216.0000 14.6969 - 10.4000 202.0000 14.2127 - 10.4500 229.0000 15.1327 - 10.5000 202.0000 14.2127 - 10.5500 215.0000 14.6629 - 10.6000 215.0000 14.6629 - 10.6500 196.0000 14.0000 - 10.7000 235.0000 15.3297 - 10.7500 207.0000 14.3875 - 10.8000 205.0000 14.3178 - 10.8500 238.0000 15.4272 - 10.9000 202.0000 14.2127 - 10.9500 213.0000 14.5945 - 11.0000 226.0000 15.0333 - 11.0500 198.0000 14.0712 - 11.1000 222.0000 14.8997 - 11.1500 186.0000 13.6382 - 11.2000 216.0000 14.6969 - 11.2500 218.0000 14.7648 - 11.3000 225.0000 15.0000 - 11.3500 200.0000 14.1421 - 11.4000 196.0000 14.0000 - 11.4500 224.0000 14.9666 - 11.5000 199.0000 14.1067 - 11.5500 204.0000 14.2829 - 11.6000 189.0000 13.7477 - 11.6500 211.0000 14.5258 - 11.7000 190.0000 13.7840 - 11.7500 184.0000 13.5647 - 11.8000 204.0000 14.2829 - 11.8500 204.0000 14.2829 - 11.9000 219.0000 14.7986 - 11.9500 207.0000 14.3875 - 12.0000 227.0000 15.0665 - 12.0500 211.0000 10.2713 - 12.1000 193.0000 9.8234 - 12.1500 206.0000 10.1489 - 12.2000 208.0000 10.1980 - 12.2500 191.0000 9.7724 - 12.3000 194.0000 9.8489 - 12.3500 185.0000 9.6177 - 12.4000 200.0000 10.0000 - 12.4500 203.0000 10.0747 - 12.5000 197.0000 9.9247 - 12.5500 203.0000 10.0747 - 12.6000 200.0000 10.0000 - 12.6500 200.0000 10.0000 - 12.7000 205.0000 10.1242 - 12.7500 208.0000 10.1980 - 12.8000 205.0000 10.1242 - 12.8500 201.0000 10.0250 - 12.9000 221.0000 10.5119 - 12.9500 218.0000 10.4403 - 13.0000 218.0000 10.4403 - 13.0500 216.0000 10.3923 - 13.1000 202.0000 10.0499 - 13.1500 206.0000 10.1489 - 13.2000 197.0000 9.9247 - 13.2500 210.0000 10.2470 - 13.3000 199.0000 9.9750 - 13.3500 219.0000 10.4642 - 13.4000 192.0000 9.7980 - 13.4500 211.0000 10.2713 - 13.5000 199.0000 9.9750 - 13.5500 196.0000 9.8995 - 13.6000 195.0000 9.8742 - 13.6500 203.0000 10.0747 - 13.7000 202.0000 10.0499 - 13.7500 200.0000 10.0000 - 13.8000 199.0000 9.9750 - 13.8500 191.0000 9.7724 - 13.9000 204.0000 10.0995 - 13.9500 191.0000 9.7724 - 14.0000 200.0000 10.0000 - 14.0500 199.0000 9.9750 - 14.1000 197.0000 9.9247 - 14.1500 202.0000 10.0499 - 14.2000 210.0000 10.2470 - 14.2500 202.0000 10.0499 - 14.3000 198.0000 9.9499 - 14.3500 191.0000 9.7724 - 14.4000 194.0000 9.8489 - 14.4500 198.0000 9.9499 - 14.5000 194.0000 9.8489 - 14.5500 193.0000 9.8234 - 14.6000 212.0000 10.2956 - 14.6500 214.0000 10.3441 - 14.7000 197.0000 9.9247 - 14.7500 195.0000 9.8742 - 14.8000 205.0000 10.1242 - 14.8500 209.0000 10.2225 - 14.9000 203.0000 10.0747 - 14.9500 197.0000 9.9247 - 15.0000 191.0000 9.7724 - 15.0500 192.0000 9.7980 - 15.1000 215.0000 10.3682 - 15.1500 194.0000 9.8489 - 15.2000 189.0000 9.7211 - 15.2500 188.0000 9.6954 - 15.3000 202.0000 10.0499 - 15.3500 201.0000 10.0250 - 15.4000 198.0000 9.9499 - 15.4500 208.0000 10.1980 - 15.5000 197.0000 9.9247 - 15.5500 187.0000 9.6695 - 15.6000 187.0000 9.6695 - 15.6500 190.0000 9.7468 - 15.7000 197.0000 9.9247 - 15.7500 200.0000 10.0000 - 15.8000 193.0000 9.8234 - 15.8500 180.0000 9.4868 - 15.9000 194.0000 9.8489 - 15.9500 206.0000 10.1489 - 16.0000 195.0000 9.8742 - 16.0500 193.0000 9.8234 - 16.1000 205.0000 10.1242 - 16.1500 194.0000 9.8489 - 16.2000 196.0000 9.8995 - 16.2500 194.0000 9.8489 - 16.3000 199.0000 9.9750 - 16.3500 207.0000 10.1735 - 16.4000 188.0000 9.6954 - 16.4500 203.0000 10.0747 - 16.5000 188.0000 9.6954 - 16.5500 180.0000 9.4868 - 16.6000 198.0000 9.9499 - 16.6500 200.0000 10.0000 - 16.7000 201.0000 10.0250 - 16.7500 210.0000 10.2470 - 16.8000 206.0000 10.1489 - 16.8500 189.0000 9.7211 - 16.9000 194.0000 9.8489 - 16.9500 187.0000 9.6695 - 17.0000 195.0000 9.8742 - 17.0500 201.0000 10.0250 - 17.1000 197.0000 9.9247 - 17.1500 206.0000 10.1489 - 17.2000 208.0000 10.1980 - 17.2500 199.0000 9.9750 - 17.3000 192.0000 9.7980 - 17.3500 193.0000 9.8234 - 17.4000 204.0000 10.0995 - 17.4500 201.0000 10.0250 - 17.5000 200.0000 10.0000 - 17.5500 177.0000 9.4074 - 17.6000 193.0000 9.8234 - 17.6500 199.0000 9.9750 - 17.7000 201.0000 10.0250 - 17.7500 194.0000 9.8489 - 17.8000 184.0000 9.5917 - 17.8500 192.0000 9.7980 - 17.9000 199.0000 9.9750 - 17.9500 190.0000 9.7468 - 18.0000 183.0000 9.5656 - 18.0500 189.0000 7.9373 - 18.1000 196.0000 8.0829 - 18.1500 196.0000 8.0829 - 18.2000 198.0000 8.1240 - 18.2500 210.0000 8.3666 - 18.3000 212.0000 8.4063 - 18.3500 219.0000 8.5440 - 18.4000 198.0000 8.1240 - 18.4500 195.0000 8.0623 - 18.5000 198.0000 8.1240 - 18.5500 191.0000 7.9791 - 18.6000 193.0000 8.0208 - 18.6500 197.0000 8.1035 - 18.7000 194.0000 8.0416 - 18.7500 187.0000 7.8951 - 18.8000 209.0000 8.3467 - 18.8500 187.0000 7.8951 - 18.9000 198.0000 8.1240 - 18.9500 206.0000 8.2865 - 19.0000 197.0000 8.1035 - 19.0500 191.0000 7.9791 - 19.1000 200.0000 8.1650 - 19.1500 207.0000 8.3066 - 19.2000 205.0000 8.2664 - 19.2500 198.0000 8.1240 - 19.3000 196.0000 8.0829 - 19.3500 209.0000 8.3467 - 19.4000 211.0000 8.3865 - 19.4500 203.0000 8.2260 - 19.5000 200.0000 8.1650 - 19.5500 192.0000 8.0000 - 19.6000 208.0000 8.3267 - 19.6500 213.0000 8.4261 - 19.7000 221.0000 8.5829 - 19.7500 216.0000 8.4853 - 19.8000 226.0000 8.6795 - 19.8500 228.0000 8.7178 - 19.9000 228.0000 8.7178 - 19.9500 215.0000 8.4656 - 20.0000 224.0000 8.6410 - 20.0500 226.0000 8.6795 - 20.1000 213.0000 8.4261 - 20.1500 239.0000 8.9256 - 20.2000 250.0000 9.1287 - 20.2500 247.0000 9.0738 - 20.3000 240.0000 8.9443 - 20.3500 231.0000 8.7750 - 20.4000 236.0000 8.8694 - 20.4500 223.0000 8.6217 - 20.5000 231.0000 8.7750 - 20.5500 226.0000 8.6795 - 20.6000 214.0000 8.4459 - 20.6500 208.0000 8.3267 - 20.7000 214.0000 8.4459 - 20.7500 196.0000 8.0829 - 20.8000 204.0000 8.2462 - 20.8500 199.0000 8.1445 - 20.9000 186.0000 7.8740 - 20.9500 192.0000 8.0000 - 21.0000 199.0000 8.1445 - 21.0500 200.0000 8.1650 - 21.1000 184.0000 7.8316 - 21.1500 184.0000 7.8316 - 21.2000 189.0000 7.9373 - 21.2500 182.0000 7.7889 - 21.3000 184.0000 7.8316 - 21.3500 185.0000 7.8528 - 21.4000 195.0000 8.0623 - 21.4500 190.0000 7.9582 - 21.5000 194.0000 8.0416 - 21.5500 185.0000 7.8528 - 21.6000 183.0000 7.8102 - 21.6500 193.0000 8.0208 - 21.7000 194.0000 8.0416 - 21.7500 193.0000 8.0208 - 21.8000 188.0000 7.9162 - 21.8500 191.0000 7.9791 - 21.9000 189.0000 7.9373 - 21.9500 188.0000 7.9162 - 22.0000 201.0000 8.1854 - 22.0500 195.0000 8.0623 - 22.1000 205.0000 8.2664 - 22.1500 200.0000 8.1650 - 22.2000 200.0000 8.1650 - 22.2500 192.0000 8.0000 - 22.3000 197.0000 8.1035 - 22.3500 204.0000 8.2462 - 22.4000 207.0000 8.3066 - 22.4500 192.0000 8.0000 - 22.5000 201.0000 8.1854 - 22.5500 190.0000 7.9582 - 22.6000 195.0000 8.0623 - 22.6500 194.0000 8.0416 - 22.7000 182.0000 7.7889 - 22.7500 189.0000 7.9373 - 22.8000 196.0000 8.0829 - 22.8500 196.0000 8.0829 - 22.9000 200.0000 8.1650 - 22.9500 190.0000 7.9582 - 23.0000 183.0000 7.8102 - 23.0500 199.0000 8.1445 - 23.1000 187.0000 7.8951 - 23.1500 196.0000 8.0829 - 23.2000 191.0000 7.9791 - 23.2500 191.0000 7.9791 - 23.3000 195.0000 8.0623 - 23.3500 194.0000 8.0416 - 23.4000 192.0000 8.0000 - 23.4500 182.0000 7.7889 - 23.5000 188.0000 7.9162 - 23.5500 203.0000 8.2260 - 23.6000 187.0000 7.8951 - 23.6500 192.0000 8.0000 - 23.7000 206.0000 8.2865 - 23.7500 201.0000 8.1854 - 23.8000 184.0000 7.8316 - 23.8500 192.0000 8.0000 - 23.9000 205.0000 8.2664 - 23.9500 196.0000 8.0829 - 24.0000 193.0000 8.0208 - 24.0500 194.0000 6.9642 - 24.1000 195.0000 6.9821 - 24.1500 194.0000 6.9642 - 24.2000 201.0000 7.0887 - 24.2500 193.0000 6.9462 - 24.3000 176.0000 6.6332 - 24.3500 187.0000 6.8374 - 24.4000 188.0000 6.8557 - 24.4500 196.0000 7.0000 - 24.5000 192.0000 6.9282 - 24.5500 185.0000 6.8007 - 24.6000 195.0000 6.9821 - 24.6500 198.0000 7.0356 - 24.7000 205.0000 7.1589 - 24.7500 200.0000 7.0711 - 24.8000 208.0000 7.2111 - 24.8500 195.0000 6.9821 - 24.9000 187.0000 6.8374 - 24.9500 193.0000 6.9462 - 25.0000 197.0000 7.0178 - 25.0500 202.0000 7.1063 - 25.1000 193.0000 6.9462 - 25.1500 196.0000 7.0000 - 25.2000 202.0000 7.1063 - 25.2500 201.0000 7.0887 - 25.3000 197.0000 7.0178 - 25.3500 204.0000 7.1414 - 25.4000 208.0000 7.2111 - 25.4500 206.0000 7.1764 - 25.5000 212.0000 7.2801 - 25.5500 207.0000 7.1937 - 25.6000 207.0000 7.1937 - 25.6500 212.0000 7.2801 - 25.7000 216.0000 7.3485 - 25.7500 218.0000 7.3824 - 25.8000 221.0000 7.4330 - 25.8500 218.0000 7.3824 - 25.9000 207.0000 7.1937 - 25.9500 203.0000 7.1239 - 26.0000 204.0000 7.1414 - 26.0500 202.0000 7.1063 - 26.1000 206.0000 7.1764 - 26.1500 202.0000 7.1063 - 26.2000 202.0000 7.1063 - 26.2500 181.0000 6.7268 - 26.3000 193.0000 6.9462 - 26.3500 205.0000 7.1589 - 26.4000 198.0000 7.0356 - 26.4500 196.0000 7.0000 - 26.5000 197.0000 7.0178 - 26.5500 195.0000 6.9821 - 26.6000 201.0000 7.0887 - 26.6500 205.0000 7.1589 - 26.7000 195.0000 6.9821 - 26.7500 196.0000 7.0000 - 26.8000 196.0000 7.0000 - 26.8500 205.0000 7.1589 - 26.9000 198.0000 7.0356 - 26.9500 200.0000 7.0711 - 27.0000 199.0000 7.0534 - 27.0500 180.0000 6.7082 - 27.1000 187.0000 6.8374 - 27.1500 193.0000 6.9462 - 27.2000 197.0000 7.0178 - 27.2500 197.0000 7.0178 - 27.3000 196.0000 7.0000 - 27.3500 194.0000 6.9642 - 27.4000 197.0000 7.0178 - 27.4500 204.0000 7.1414 - 27.5000 201.0000 7.0887 - 27.5500 187.0000 6.8374 - 27.6000 191.0000 6.9101 - 27.6500 205.0000 7.1589 - 27.7000 200.0000 7.0711 - 27.7500 198.0000 7.0356 - 27.8000 200.0000 7.0711 - 27.8500 204.0000 7.1414 - 27.9000 196.0000 7.0000 - 27.9500 195.0000 6.9821 - 28.0000 194.0000 6.9642 - 28.0500 200.0000 7.0711 - 28.1000 198.0000 7.0356 - 28.1500 201.0000 7.0887 - 28.2000 208.0000 7.2111 - 28.2500 205.0000 7.1589 - 28.3000 211.0000 7.2629 - 28.3500 211.0000 7.2629 - 28.4000 220.0000 7.4162 - 28.4500 220.0000 7.4162 - 28.5000 212.0000 7.2801 - 28.5500 208.0000 7.2111 - 28.6000 214.0000 7.3144 - 28.6500 226.0000 7.5166 - 28.7000 235.0000 7.6649 - 28.7500 233.0000 7.6322 - 28.8000 237.0000 7.6974 - 28.8500 242.0000 7.7782 - 28.9000 242.0000 7.7782 - 28.9500 245.0000 7.8262 - 29.0000 239.0000 7.7298 - 29.0500 226.0000 7.5166 - 29.1000 232.0000 7.6158 - 29.1500 238.0000 7.7136 - 29.2000 226.0000 7.5166 - 29.2500 218.0000 7.3824 - 29.3000 218.0000 7.3824 - 29.3500 214.0000 7.3144 - 29.4000 205.0000 7.1589 - 29.4500 200.0000 7.0711 - 29.5000 193.0000 6.9462 - 29.5500 195.0000 6.9821 - 29.6000 196.0000 7.0000 - 29.6500 195.0000 6.9821 - 29.7000 207.0000 7.1937 - 29.7500 215.0000 7.3314 - 29.8000 207.0000 7.1937 - 29.8500 218.0000 7.3824 - 29.9000 218.0000 7.3824 - 29.9500 220.0000 7.4162 - 30.0000 220.0000 7.4162 - 30.0500 229.0000 6.7676 - 30.1000 236.0000 6.8702 - 30.1500 254.0000 7.1274 - 30.2000 264.0000 7.2664 - 30.2500 280.0000 7.4833 - 30.3000 289.0000 7.6026 - 30.3500 289.0000 7.6026 - 30.4000 303.0000 7.7846 - 30.4500 302.0000 7.7717 - 30.5000 297.0000 7.7071 - 30.5500 281.0000 7.4967 - 30.6000 278.0000 7.4565 - 30.6500 280.0000 7.4833 - 30.7000 265.0000 7.2801 - 30.7500 258.0000 7.1833 - 30.8000 243.0000 6.9714 - 30.8500 240.0000 6.9282 - 30.9000 232.0000 6.8118 - 30.9500 231.0000 6.7971 - 31.0000 233.0000 6.8264 - 31.0500 246.0000 7.0143 - 31.1000 248.0000 7.0427 - 31.1500 249.0000 7.0569 - 31.2000 256.0000 7.1554 - 31.2500 272.0000 7.3756 - 31.3000 289.0000 7.6026 - 31.3500 311.0000 7.8867 - 31.4000 340.0000 8.2462 - 31.4500 363.0000 8.5206 - 31.5000 393.0000 8.8657 - 31.5500 440.0000 9.3808 - 31.6000 474.0000 9.7365 - 31.6500 482.0000 9.8183 - 31.7000 492.0000 9.9197 - 31.7500 508.0000 10.0797 - 31.8000 494.0000 9.9398 - 31.8500 475.0000 9.7468 - 31.9000 439.0000 9.3702 - 31.9500 413.0000 9.0885 - 32.0000 368.0000 8.5790 - 32.0500 331.0000 8.1363 - 32.1000 299.0000 7.7330 - 32.1500 286.0000 7.5631 - 32.2000 262.0000 7.2388 - 32.2500 241.0000 6.9426 - 32.3000 238.0000 6.8993 - 32.3500 252.0000 7.0993 - 32.4000 267.0000 7.3075 - 32.4500 276.0000 7.4297 - 32.5000 278.0000 7.4565 - 32.5500 300.0000 7.7460 - 32.6000 325.0000 8.0623 - 32.6500 336.0000 8.1976 - 32.7000 359.0000 8.4735 - 32.7500 405.0000 9.0000 - 32.8000 458.0000 9.5708 - 32.8500 501.0000 10.0100 - 32.9000 564.0000 10.6207 - 32.9500 640.0000 11.3137 - 33.0000 719.0000 11.9917 - 33.0500 783.0000 12.5140 - 33.1000 837.0000 12.9383 - 33.1500 851.0000 13.0461 - 33.2000 866.0000 13.1605 - 33.2500 828.0000 12.8686 - 33.3000 763.0000 12.3531 - 33.3500 697.0000 11.8068 - 33.4000 634.0000 11.2606 - 33.4500 541.0000 10.4019 - 33.5000 465.0000 9.6437 - 33.5500 391.0000 8.8431 - 33.6000 351.0000 8.3785 - 33.6500 301.0000 7.7589 - 33.7000 284.0000 7.5366 - 33.7500 260.0000 7.2111 - 33.8000 248.0000 7.0427 - 33.8500 257.0000 7.1694 - 33.9000 242.0000 6.9570 - 33.9500 246.0000 7.0143 - 34.0000 263.0000 7.2526 - 34.0500 271.0000 7.3621 - 34.1000 281.0000 7.4967 - 34.1500 302.0000 7.7717 - 34.2000 309.0000 7.8613 - 34.2500 335.0000 8.1854 - 34.3000 342.0000 8.2704 - 34.3500 345.0000 8.3066 - 34.4000 356.0000 8.4380 - 34.4500 351.0000 8.3785 - 34.5000 341.0000 8.2583 - 34.5500 334.0000 8.1731 - 34.6000 321.0000 8.0125 - 34.6500 286.0000 7.5631 - 34.7000 268.0000 7.3212 - 34.7500 256.0000 7.1554 - 34.8000 238.0000 6.8993 - 34.8500 229.0000 6.7676 - 34.9000 218.0000 6.6030 - 34.9500 223.0000 6.6783 - 35.0000 216.0000 6.5727 - 35.0500 203.0000 6.3718 - 35.1000 203.0000 6.3718 - 35.1500 194.0000 6.2290 - 35.2000 205.0000 6.4031 - 35.2500 196.0000 6.2610 - 35.3000 193.0000 6.2129 - 35.3500 206.0000 6.4187 - 35.4000 201.0000 6.3403 - 35.4500 201.0000 6.3403 - 35.5000 201.0000 6.3403 - 35.5500 200.0000 6.3246 - 35.6000 194.0000 6.2290 - 35.6500 196.0000 6.2610 - 35.7000 203.0000 6.3718 - 35.7500 195.0000 6.2450 - 35.8000 196.0000 6.2610 - 35.8500 211.0000 6.4962 - 35.9000 216.0000 6.5727 - 35.9500 207.0000 6.4343 - 36.0000 215.0000 6.5574 - 36.0500 221.0000 6.6483 - 36.1000 237.0000 6.2849 - 36.1500 248.0000 6.4291 - 36.2000 261.0000 6.5955 - 36.2500 279.0000 6.8191 - 36.3000 319.0000 7.2915 - 36.3500 337.0000 7.4944 - 36.4000 364.0000 7.7889 - 36.4500 423.0000 8.3964 - 36.5000 489.0000 9.0277 - 36.5500 557.0000 9.6350 - 36.6000 630.0000 10.2470 - 36.6500 729.0000 11.0227 - 36.7000 822.0000 11.7047 - 36.7500 943.0000 12.5366 - 36.8000 1059.0000 13.2853 - 36.8500 1196.0000 14.1185 - 36.9000 1235.0000 14.3469 - 36.9500 1220.0000 14.2595 - 37.0000 1209.0000 14.1951 - 37.0500 1128.0000 13.7113 - 37.1000 1001.0000 12.9164 - 37.1500 864.0000 12.0000 - 37.2000 729.0000 11.0227 - 37.2500 601.0000 10.0083 - 37.3000 496.0000 9.0921 - 37.3500 418.0000 8.3467 - 37.4000 355.0000 7.6920 - 37.4500 313.0000 7.2226 - 37.5000 263.0000 6.6207 - 37.5500 246.0000 6.4031 - 37.6000 226.0000 6.1373 - 37.6500 214.0000 5.9722 - 37.7000 222.0000 6.0828 - 37.7500 222.0000 6.0828 - 37.8000 211.0000 5.9301 - 37.8500 211.0000 5.9301 - 37.9000 202.0000 5.8023 - 37.9500 198.0000 5.7446 - 38.0000 192.0000 5.6569 - 38.0500 193.0000 5.6716 - 38.1000 196.0000 5.7155 - 38.1500 201.0000 5.7879 - 38.2000 203.0000 5.8166 - 38.2500 203.0000 5.8166 - 38.3000 201.0000 5.7879 - 38.3500 198.0000 5.7446 - 38.4000 196.0000 5.7155 - 38.4500 206.0000 5.8595 - 38.5000 210.0000 5.9161 - 38.5500 197.0000 5.7300 - 38.6000 204.0000 5.8310 - 38.6500 200.0000 5.7735 - 38.7000 205.0000 5.8452 - 38.7500 196.0000 5.7155 - 38.8000 195.0000 5.7009 - 38.8500 205.0000 5.8452 - 38.9000 204.0000 5.8310 - 38.9500 200.0000 5.7735 - 39.0000 203.0000 5.8166 - 39.0500 208.0000 5.8878 - 39.1000 207.0000 5.8737 - 39.1500 202.0000 5.8023 - 39.2000 203.0000 5.8166 - 39.2500 198.0000 5.7446 - 39.3000 204.0000 5.8310 - 39.3500 210.0000 5.9161 - 39.4000 216.0000 6.0000 - 39.4500 210.0000 5.9161 - 39.5000 229.0000 6.1779 - 39.5500 239.0000 6.3114 - 39.6000 247.0000 6.4161 - 39.6500 278.0000 6.8069 - 39.7000 302.0000 7.0946 - 39.7500 324.0000 7.3485 - 39.8000 371.0000 7.8634 - 39.8500 420.0000 8.3666 - 39.9000 465.0000 8.8034 - 39.9500 538.0000 9.4692 - 40.0000 630.0000 10.2470 - 40.0500 739.0000 11.0980 - 40.1000 851.0000 11.9094 - 40.1500 976.0000 12.7541 - 40.2000 1076.0000 13.3915 - 40.2500 1161.0000 13.9104 - 40.3000 1222.0000 14.2712 - 40.3500 1227.0000 14.3003 - 40.4000 1187.0000 14.0653 - 40.4500 1096.0000 13.5154 - 40.5000 964.0000 12.6754 - 40.5500 833.0000 11.7828 - 40.6000 708.0000 10.8628 - 40.6500 587.0000 9.8911 - 40.7000 512.0000 9.2376 - 40.7500 436.0000 8.5245 - 40.8000 391.0000 8.0726 - 40.8500 384.0000 8.0000 - 40.9000 370.0000 7.8528 - 40.9500 391.0000 8.0726 - 41.0000 419.0000 8.3566 - 41.0500 448.0000 8.6410 - 41.1000 490.0000 9.0370 - 41.1500 567.0000 9.7211 - 41.2000 626.0000 10.2144 - 41.2500 687.0000 10.7005 - 41.3000 735.0000 11.0680 - 41.3500 780.0000 11.4018 - 41.4000 782.0000 11.4164 - 41.4500 745.0000 11.1430 - 41.5000 721.0000 10.9621 - 41.5500 662.0000 10.5040 - 41.6000 595.0000 9.9582 - 41.6500 527.0000 9.3719 - 41.7000 446.0000 8.6217 - 41.7500 393.0000 8.0932 - 41.8000 335.0000 7.4722 - 41.8500 301.0000 7.0828 - 41.9000 276.0000 6.7823 - 41.9500 251.0000 5.9881 - 42.0000 242.0000 5.8797 - 42.0500 229.0000 5.7196 - 42.1000 209.0000 5.4642 - 42.1500 215.0000 5.5420 - 42.2000 218.0000 5.5806 - 42.2500 214.0000 5.5291 - 42.3000 209.0000 5.4642 - 42.3500 208.0000 5.4511 - 42.4000 212.0000 5.5032 - 42.4500 210.0000 5.4772 - 42.5000 209.0000 5.4642 - 42.5500 210.0000 5.4772 - 42.6000 205.0000 5.4116 - 42.6500 209.0000 5.4642 - 42.7000 211.0000 5.4903 - 42.7500 211.0000 5.4903 - 42.8000 216.0000 5.5549 - 42.8500 205.0000 5.4116 - 42.9000 204.0000 5.3984 - 42.9500 202.0000 5.3719 - 43.0000 201.0000 5.3586 - 43.0500 200.0000 5.3452 - 43.1000 207.0000 5.4380 - 43.1500 205.0000 5.4116 - 43.2000 202.0000 5.3719 - 43.2500 209.0000 5.4642 - 43.3000 202.0000 5.3719 - 43.3500 203.0000 5.3852 - 43.4000 206.0000 5.4248 - 43.4500 206.0000 5.4248 - 43.5000 200.0000 5.3452 - 43.5500 194.0000 5.2644 - 43.6000 199.0000 5.3318 - 43.6500 204.0000 5.3984 - 43.7000 205.0000 5.4116 - 43.7500 210.0000 5.4772 - 43.8000 207.0000 5.4380 - 43.8500 205.0000 5.4116 - 43.9000 210.0000 5.4772 - 43.9500 204.0000 5.3984 - 44.0000 203.0000 5.3852 - 44.0500 202.0000 5.3719 - 44.1000 205.0000 5.4116 - 44.1500 201.0000 5.3586 - 44.2000 201.0000 5.3586 - 44.2500 207.0000 5.4380 - 44.3000 197.0000 5.3050 - 44.3500 198.0000 5.3184 - 44.4000 203.0000 5.3852 - 44.4500 209.0000 5.4642 - 44.5000 209.0000 5.4642 - 44.5500 208.0000 5.4511 - 44.6000 204.0000 5.3984 - 44.6500 209.0000 5.4642 - 44.7000 199.0000 5.3318 - 44.7500 204.0000 5.3984 - 44.8000 206.0000 5.4248 - 44.8500 201.0000 5.3586 - 44.9000 205.0000 5.4116 - 44.9500 202.0000 5.3719 - 45.0000 204.0000 5.3984 - 45.0500 198.0000 5.3184 - 45.1000 198.0000 5.3184 - 45.1500 213.0000 5.5162 - 45.2000 210.0000 5.4772 - 45.2500 212.0000 5.5032 - 45.3000 214.0000 5.5291 - 45.3500 215.0000 5.5420 - 45.4000 217.0000 5.5678 - 45.4500 210.0000 5.4772 - 45.5000 214.0000 5.5291 - 45.5500 215.0000 5.5420 - 45.6000 215.0000 5.5420 - 45.6500 215.0000 5.5420 - 45.7000 217.0000 5.5678 - 45.7500 222.0000 5.6315 - 45.8000 231.0000 5.7446 - 45.8500 247.0000 5.9402 - 45.9000 252.0000 6.0000 - 45.9500 273.0000 6.2450 - 46.0000 304.0000 6.5900 - 46.0500 332.0000 6.8868 - 46.1000 366.0000 7.2309 - 46.1500 408.0000 7.6345 - 46.2000 463.0000 8.1328 - 46.2500 532.0000 8.7178 - 46.3000 619.0000 9.4036 - 46.3500 734.0000 10.2400 - 46.4000 828.0000 10.8759 - 46.4500 944.0000 11.6128 - 46.5000 1003.0000 11.9702 - 46.5500 1055.0000 12.2766 - 46.6000 1070.0000 12.3635 - 46.6500 1018.0000 12.0594 - 46.7000 944.0000 11.6128 - 46.7500 833.0000 10.9087 - 46.8000 725.0000 10.1770 - 46.8500 633.0000 9.5094 - 46.9000 507.0000 8.5105 - 46.9500 445.0000 7.9732 - 47.0000 379.0000 7.3582 - 47.0500 347.0000 7.0407 - 47.1000 316.0000 6.7188 - 47.1500 282.0000 6.3471 - 47.2000 267.0000 6.1760 - 47.2500 269.0000 6.1991 - 47.3000 281.0000 6.3358 - 47.3500 288.0000 6.4143 - 47.4000 300.0000 6.5465 - 47.4500 327.0000 6.8348 - 47.5000 346.0000 7.0305 - 47.5500 380.0000 7.3679 - 47.6000 400.0000 7.5593 - 47.6500 430.0000 7.8376 - 47.7000 453.0000 8.0445 - 47.7500 459.0000 8.0976 - 47.8000 451.0000 8.0267 - 47.8500 427.0000 7.8102 - 47.9000 402.0000 7.5782 - 47.9500 375.0000 7.3193 - 48.0000 344.0000 7.0102 - 48.0500 309.0000 6.6440 - 48.1000 277.0000 6.2906 - 48.1500 265.0000 5.7554 - 48.2000 246.0000 5.5453 - 48.2500 246.0000 5.5453 - 48.3000 230.0000 5.3619 - 48.3500 223.0000 5.2797 - 48.4000 227.0000 5.3268 - 48.4500 225.0000 5.3033 - 48.5000 217.0000 5.2082 - 48.5500 217.0000 5.2082 - 48.6000 223.0000 5.2797 - 48.6500 223.0000 5.2797 - 48.7000 220.0000 5.2440 - 48.7500 223.0000 5.2797 - 48.8000 226.0000 5.3151 - 48.8500 248.0000 5.5678 - 48.9000 258.0000 5.6789 - 48.9500 274.0000 5.8523 - 49.0000 297.0000 6.0930 - 49.0500 324.0000 6.3640 - 49.1000 355.0000 6.6615 - 49.1500 393.0000 7.0089 - 49.2000 458.0000 7.5664 - 49.2500 528.0000 8.1240 - 49.3000 589.0000 8.5805 - 49.3500 688.0000 9.2736 - 49.4000 781.0000 9.8805 - 49.4500 840.0000 10.2470 - 49.5000 876.0000 10.4642 - 49.5500 874.0000 10.4523 - 49.6000 832.0000 10.1980 - 49.6500 765.0000 9.7788 - 49.7000 682.0000 9.2331 - 49.7500 613.0000 8.7536 - 49.8000 524.0000 8.0932 - 49.8500 455.0000 7.5416 - 49.9000 408.0000 7.1414 - 49.9500 384.0000 6.9282 - 50.0000 366.0000 6.7639 - 50.0500 375.0000 6.8465 - 50.1000 392.0000 7.0000 - 50.1500 426.0000 7.2973 - 50.2000 470.0000 7.6649 - 50.2500 519.0000 8.0545 - 50.3000 588.0000 8.5732 - 50.3500 639.0000 8.9373 - 50.4000 681.0000 9.2263 - 50.4500 704.0000 9.3808 - 50.5000 693.0000 9.3073 - 50.5500 650.0000 9.0139 - 50.6000 600.0000 8.6603 - 50.6500 540.0000 8.2158 - 50.7000 478.0000 7.7298 - 50.7500 412.0000 7.1764 - 50.8000 376.0000 6.8557 - 50.8500 345.0000 6.5670 - 50.9000 330.0000 6.4226 - 50.9500 337.0000 6.4904 - 51.0000 350.0000 6.6144 - 51.0500 383.0000 6.9192 - 51.1000 426.0000 7.2973 - 51.1500 493.0000 7.8502 - 51.2000 571.0000 8.4484 - 51.2500 676.0000 9.1924 - 51.3000 803.0000 10.0187 - 51.3500 920.0000 10.7238 - 51.4000 1071.0000 11.5704 - 51.4500 1183.0000 12.1604 - 51.5000 1247.0000 12.4850 - 51.5500 1255.0000 12.5250 - 51.6000 1251.0000 12.5050 - 51.6500 1183.0000 12.1604 - 51.7000 1068.0000 11.5542 - 51.7500 945.0000 10.8685 - 51.8000 861.0000 10.3742 - 51.8500 811.0000 10.0685 - 51.9000 813.0000 10.0809 - 51.9500 872.0000 10.4403 - 52.0000 969.0000 11.0057 - 52.0500 1120.0000 11.8322 - 52.1000 1309.0000 12.7916 - 52.1500 1527.0000 13.8158 - 52.2000 1706.0000 14.6031 - 52.2500 1856.0000 15.2315 - 52.3000 1888.0000 15.3623 - 52.3500 1837.0000 15.1534 - 52.4000 1713.0000 14.6330 - 52.4500 1500.0000 13.6931 - 52.5000 1289.0000 12.6935 - 52.5500 1103.0000 11.7420 - 52.6000 904.0000 10.6301 - 52.6500 749.0000 9.6760 - 52.7000 627.0000 8.8530 - 52.7500 568.0000 8.4261 - 52.8000 551.0000 8.2991 - 52.8500 560.0000 8.3666 - 52.9000 586.0000 8.5586 - 52.9500 634.0000 8.9022 - 53.0000 691.0000 9.2938 - 53.0500 751.0000 9.6889 - 53.1000 799.0000 9.9937 - 53.1500 792.0000 9.9499 - 53.2000 820.0000 10.1242 - 53.2500 774.0000 9.8362 - 53.3000 736.0000 9.5917 - 53.3500 680.0000 9.2195 - 53.4000 627.0000 8.8530 - 53.4500 562.0000 8.3815 - 53.5000 514.0000 8.0156 - 53.5500 459.0000 7.5746 - 53.6000 424.0000 7.2801 - 53.6500 362.0000 6.7268 - 53.7000 333.0000 6.4517 - 53.7500 318.0000 6.3048 - 53.8000 300.0000 6.1237 - 53.8500 287.0000 5.9896 - 53.9000 265.0000 5.7554 - 53.9500 266.0000 5.7663 - 54.0000 262.0000 5.7228 - 54.0500 263.0000 5.4058 - 54.1000 255.0000 5.3229 - 54.1500 270.0000 5.4772 - 54.2000 278.0000 5.5578 - 54.2500 289.0000 5.6667 - 54.3000 317.0000 5.9348 - 54.3500 343.0000 6.1734 - 54.4000 400.0000 6.6667 - 54.4500 468.0000 7.2111 - 54.5000 561.0000 7.8951 - 54.5500 695.0000 8.7876 - 54.6000 873.0000 9.8489 - 54.6500 1100.0000 11.0554 - 54.7000 1372.0000 12.3468 - 54.7500 1660.0000 13.5810 - 54.8000 1954.0000 14.7347 - 54.8500 2224.0000 15.7198 - 54.9000 2400.0000 16.3299 - 54.9500 2459.0000 16.5294 - 55.0000 2435.0000 16.4486 - 55.0500 2245.0000 15.7938 - 55.1000 1986.0000 14.8549 - 55.1500 1671.0000 13.6260 - 55.2000 1358.0000 12.2837 - 55.2500 1086.0000 10.9848 - 55.3000 868.0000 9.8206 - 55.3500 682.0000 8.7050 - 55.4000 578.0000 8.0139 - 55.4500 521.0000 7.6085 - 55.5000 512.0000 7.5425 - 55.5500 537.0000 7.7244 - 55.6000 600.0000 8.1650 - 55.6500 704.0000 8.8443 - 55.7000 855.0000 9.7468 - 55.7500 1032.0000 10.7083 - 55.8000 1232.0000 11.7000 - 55.8500 1466.0000 12.7628 - 55.9000 1693.0000 13.7154 - 55.9500 1866.0000 14.3991 - 56.0000 1966.0000 14.7799 - 56.0500 2024.0000 14.9963 - 56.1000 2016.0000 14.9666 - 56.1500 1846.0000 14.3217 - 56.2000 1667.0000 13.6096 - 56.2500 1429.0000 12.6007 - 56.3000 1179.0000 11.4455 - 56.3500 950.0000 10.2740 - 56.4000 763.0000 9.2075 - 56.4500 599.0000 8.1582 - 56.5000 484.0000 7.3333 - 56.5500 404.0000 6.6999 - 56.6000 351.0000 6.2450 - 56.6500 304.0000 5.8119 - 56.7000 284.0000 5.6174 - 56.7500 273.0000 5.5076 - 56.8000 259.0000 5.3645 - 56.8500 251.0000 5.2810 - 56.9000 251.0000 5.2810 - 56.9500 252.0000 5.2915 - 57.0000 245.0000 5.2175 - 57.0500 259.0000 5.3645 - 57.1000 250.0000 5.2705 - 57.1500 253.0000 5.3020 - 57.2000 256.0000 5.3333 - 57.2500 264.0000 5.4160 - 57.3000 285.0000 5.6273 - 57.3500 301.0000 5.7831 - 57.4000 346.0000 6.2004 - 57.4500 390.0000 6.5828 - 57.5000 458.0000 7.1336 - 57.5500 528.0000 7.6594 - 57.6000 624.0000 8.3267 - 57.6500 733.0000 9.0247 - 57.7000 829.0000 9.5975 - 57.7500 916.0000 10.0885 - 57.8000 988.0000 10.4775 - 57.8500 994.0000 10.5093 - 57.9000 929.0000 10.1598 - 57.9500 843.0000 9.6782 - 58.0000 742.0000 9.0799 - 58.0500 638.0000 8.4196 - 58.1000 527.0000 7.6522 - 58.1500 434.0000 6.9442 - 58.2000 377.0000 6.4722 - 58.2500 320.0000 5.9628 - 58.3000 282.0000 5.5976 - 58.3500 273.0000 5.5076 - 58.4000 256.0000 5.3333 - 58.4500 243.0000 5.1962 - 58.5000 240.0000 5.1640 - 58.5500 240.0000 5.1640 - 58.6000 230.0000 5.0553 - 58.6500 220.0000 4.9441 - 58.7000 230.0000 5.0553 - 58.7500 227.0000 5.0222 - 58.8000 224.0000 4.9889 - 58.8500 219.0000 4.9329 - 58.9000 227.0000 5.0222 - 58.9500 227.0000 5.0222 - 59.0000 224.0000 4.9889 - 59.0500 222.0000 4.9666 - 59.1000 223.0000 4.9777 - 59.1500 217.0000 4.9103 - 59.2000 213.0000 4.8648 - 59.2500 216.0000 4.8990 - 59.3000 219.0000 4.9329 - 59.3500 219.0000 4.9329 - 59.4000 218.0000 4.9216 - 59.4500 220.0000 4.9441 - 59.5000 220.0000 4.9441 - 59.5500 220.0000 4.9441 - 59.6000 223.0000 4.9777 - 59.6500 233.0000 5.0881 - 59.7000 237.0000 5.1316 - 59.7500 249.0000 5.2599 - 59.8000 258.0000 5.3541 - 59.8500 261.0000 5.3852 - 59.9000 283.0000 5.6075 - 59.9500 304.0000 5.8119 - 60.0000 324.0000 5.6921 - 60.0500 347.0000 5.8907 - 60.1000 353.0000 5.9414 - 60.1500 359.0000 5.9917 - 60.2000 363.0000 6.0249 - 60.2500 352.0000 5.9330 - 60.3000 341.0000 5.8395 - 60.3500 330.0000 5.7446 - 60.4000 308.0000 5.5498 - 60.4500 291.0000 5.3944 - 60.5000 271.0000 5.2058 - 60.5500 254.0000 5.0398 - 60.6000 245.0000 4.9497 - 60.6500 245.0000 4.9497 - 60.7000 239.0000 4.8888 - 60.7500 228.0000 4.7749 - 60.8000 217.0000 4.6583 - 60.8500 217.0000 4.6583 - 60.9000 218.0000 4.6690 - 60.9500 223.0000 4.7223 - 61.0000 207.0000 4.5497 - 61.0500 218.0000 4.6690 - 61.1000 222.0000 4.7117 - 61.1500 215.0000 4.6368 - 61.2000 210.0000 4.5826 - 61.2500 216.0000 4.6476 - 61.3000 213.0000 4.6152 - 61.3500 212.0000 4.6043 - 61.4000 215.0000 4.6368 - 61.4500 212.0000 4.6043 - 61.5000 214.0000 4.6260 - 61.5500 211.0000 4.5935 - 61.6000 214.0000 4.6260 - 61.6500 217.0000 4.6583 - 61.7000 205.0000 4.5277 - 61.7500 207.0000 4.5497 - 61.8000 213.0000 4.6152 - 61.8500 208.0000 4.5607 - 61.9000 211.0000 4.5935 - 61.9500 205.0000 4.5277 - 62.0000 214.0000 4.6260 - 62.0500 213.0000 4.6152 - 62.1000 212.0000 4.6043 - 62.1500 212.0000 4.6043 - 62.2000 213.0000 4.6152 - 62.2500 207.0000 4.5497 - 62.3000 203.0000 4.5056 - 62.3500 211.0000 4.5935 - 62.4000 211.0000 4.5935 - 62.4500 214.0000 4.6260 - 62.5000 214.0000 4.6260 - 62.5500 207.0000 4.5497 - 62.6000 203.0000 4.5056 - 62.6500 212.0000 4.6043 - 62.7000 212.0000 4.6043 - 62.7500 214.0000 4.6260 - 62.8000 213.0000 4.6152 - 62.8500 202.0000 4.4944 - 62.9000 210.0000 4.5826 - 62.9500 211.0000 4.5935 - 63.0000 211.0000 4.5935 - 63.0500 214.0000 4.6260 - 63.1000 221.0000 4.7011 - 63.1500 217.0000 4.6583 - 63.2000 212.0000 4.6043 - 63.2500 214.0000 4.6260 - 63.3000 219.0000 4.6797 - 63.3500 223.0000 4.7223 - 63.4000 225.0000 4.7434 - 63.4500 227.0000 4.7645 - 63.5000 235.0000 4.8477 - 63.5500 240.0000 4.8990 - 63.6000 243.0000 4.9295 - 63.6500 252.0000 5.0200 - 63.7000 249.0000 4.9900 - 63.7500 249.0000 4.9900 - 63.8000 255.0000 5.0498 - 63.8500 262.0000 5.1186 - 63.9000 282.0000 5.3104 - 63.9500 308.0000 5.5498 - 64.0000 351.0000 5.9245 - 64.0500 398.0000 6.3087 - 64.1000 470.0000 6.8557 - 64.1500 525.0000 7.2457 - 64.2000 596.0000 7.7201 - 64.2500 646.0000 8.0374 - 64.3000 681.0000 8.2523 - 64.3500 665.0000 8.1548 - 64.4000 615.0000 7.8422 - 64.4500 563.0000 7.5033 - 64.5000 484.0000 6.9570 - 64.5500 421.0000 6.4885 - 64.6000 364.0000 6.0332 - 64.6500 317.0000 5.6303 - 64.7000 289.0000 5.3759 - 64.7500 261.0000 5.1088 - 64.8000 245.0000 4.9497 - 64.8500 233.0000 4.8270 - 64.9000 228.0000 4.7749 - 64.9500 219.0000 4.6797 - 65.0000 219.0000 4.6797 - 65.0500 217.0000 4.6583 - 65.1000 216.0000 4.6476 - 65.1500 221.0000 4.7011 - 65.2000 215.0000 4.6368 - 65.2500 215.0000 4.6368 - 65.3000 210.0000 4.5826 - 65.3500 212.0000 4.6043 - 65.4000 212.0000 4.6043 - 65.4500 204.0000 4.5166 - 65.5000 209.0000 4.5717 - 65.5500 206.0000 4.5387 - 65.6000 216.0000 4.6476 - 65.6500 207.0000 4.5497 - 65.7000 214.0000 4.6260 - 65.7500 207.0000 4.5497 - 65.8000 209.0000 4.5717 - 65.8500 218.0000 4.6690 - 65.9000 215.0000 4.6368 - 65.9500 222.0000 4.7117 - 66.0000 226.0000 4.7539 - 66.0500 230.0000 4.7958 - 66.1000 239.0000 4.8888 - 66.1500 249.0000 4.9900 - 66.2000 263.0000 5.1284 - 66.2500 275.0000 5.2440 - 66.3000 292.0000 5.4037 - 66.3500 317.0000 5.6303 - 66.4000 323.0000 5.6833 - 66.4500 341.0000 5.8395 - 66.5000 350.0000 5.9161 - 66.5500 330.0000 5.7446 - 66.6000 320.0000 5.6569 - 66.6500 307.0000 5.5408 - 66.7000 284.0000 5.3292 - 66.7500 275.0000 5.2440 - 66.8000 265.0000 5.1478 - 66.8500 269.0000 5.1865 - 66.9000 275.0000 5.2440 - 66.9500 292.0000 5.4037 - 67.0000 311.0000 5.5767 - 67.0500 338.0000 5.8138 - 67.1000 387.0000 6.2209 - 67.1500 413.0000 6.4265 - 67.2000 463.0000 6.8044 - 67.2500 510.0000 7.1414 - 67.3000 534.0000 7.3075 - 67.3500 559.0000 7.4766 - 67.4000 539.0000 7.3417 - 67.4500 533.0000 7.3007 - 67.5000 500.0000 7.0711 - 67.5500 471.0000 6.8629 - 67.6000 455.0000 6.7454 - 67.6500 410.0000 6.4031 - 67.7000 373.0000 6.1074 - 67.7500 342.0000 5.8481 - 67.8000 307.0000 5.5408 - 67.8500 288.0000 5.3666 - 67.9000 286.0000 5.3479 - 67.9500 281.0000 5.3009 - 68.0000 292.0000 5.4037 - 68.0500 291.0000 5.3944 - 68.1000 312.0000 5.5857 - 68.1500 326.0000 5.7096 - 68.2000 336.0000 5.7966 - 68.2500 346.0000 5.8822 - 68.3000 341.0000 5.8395 - 68.3500 327.0000 5.7184 - 68.4000 305.0000 5.5227 - 68.4500 277.0000 5.2631 - 68.5000 267.0000 5.1672 - 68.5500 249.0000 4.9900 - 68.6000 229.0000 4.7854 - 68.6500 221.0000 4.7011 - 68.7000 220.0000 4.6904 - 68.7500 217.0000 4.6583 - 68.8000 211.0000 4.5935 - 68.8500 204.0000 4.5166 - 68.9000 203.0000 4.5056 - 68.9500 220.0000 4.6904 - 69.0000 217.0000 4.6583 - 69.0500 217.0000 4.6583 - 69.1000 214.0000 4.6260 - 69.1500 205.0000 4.5277 - 69.2000 205.0000 4.5277 - 69.2500 211.0000 4.5935 - 69.3000 206.0000 4.5387 - 69.3500 208.0000 4.5607 - 69.4000 201.0000 4.4833 - 69.4500 208.0000 4.5607 - 69.5000 214.0000 4.6260 - 69.5500 212.0000 4.6043 - 69.6000 206.0000 4.5387 - 69.6500 216.0000 4.6476 - 69.7000 219.0000 4.6797 - 69.7500 215.0000 4.6368 - 69.8000 217.0000 4.6583 - 69.8500 211.0000 4.5935 - 69.9000 214.0000 4.6260 - 69.9500 215.0000 4.6368 - 70.0000 224.0000 4.7329 - 70.0500 217.0000 4.6583 - 70.1000 215.0000 4.6368 - 70.1500 218.0000 4.6690 - 70.2000 218.0000 4.6690 - 70.2500 228.0000 4.7749 - 70.3000 227.0000 4.7645 - 70.3500 228.0000 4.7749 - 70.4000 225.0000 4.7434 - 70.4500 219.0000 4.6797 - 70.5000 216.0000 4.6476 - 70.5500 219.0000 4.6797 - 70.6000 218.0000 4.6690 - 70.6500 214.0000 4.6260 - 70.7000 212.0000 4.6043 - 70.7500 221.0000 4.7011 - 70.8000 214.0000 4.6260 - 70.8500 208.0000 4.5607 - 70.9000 204.0000 4.5166 - 70.9500 209.0000 4.5717 - 71.0000 209.0000 4.5717 - 71.0500 208.0000 4.5607 - 71.1000 212.0000 4.6043 - 71.1500 213.0000 4.6152 - 71.2000 218.0000 4.6690 - 71.2500 212.0000 4.6043 - 71.3000 205.0000 4.5277 - 71.3500 207.0000 4.5497 - 71.4000 204.0000 4.5166 - 71.4500 206.0000 4.5387 - 71.5000 211.0000 4.5935 - 71.5500 216.0000 4.6476 - 71.6000 214.0000 4.6260 - 71.6500 210.0000 4.5826 - 71.7000 219.0000 4.6797 - 71.7500 222.0000 4.7117 - 71.8000 224.0000 4.7329 - 71.8500 231.0000 4.8062 - 71.9000 227.0000 4.7645 - 71.9500 237.0000 4.8683 - 72.0000 235.0000 4.8477 - 72.0500 238.0000 4.8785 - 72.1000 245.0000 4.9497 - 72.1500 242.0000 4.9193 - 72.2000 248.0000 4.9800 - 72.2500 246.0000 4.9598 - 72.3000 243.0000 4.9295 - 72.3500 253.0000 5.0299 - 72.4000 259.0000 5.0892 - 72.4500 278.0000 5.2726 - 72.5000 281.0000 5.3009 - 72.5500 297.0000 5.4498 - 72.6000 310.0000 5.5678 - 72.6500 324.0000 5.6921 - 72.7000 322.0000 5.6745 - 72.7500 311.0000 5.5767 - 72.8000 295.0000 5.4314 - 72.8500 281.0000 5.3009 - 72.9000 259.0000 5.0892 - 72.9500 250.0000 5.0000 - 73.0000 239.0000 4.8888 - 73.0500 233.0000 4.8270 - 73.1000 227.0000 4.7645 - 73.1500 226.0000 4.7539 - 73.2000 223.0000 4.7223 - 73.2500 211.0000 4.5935 - 73.3000 209.0000 4.5717 - 73.3500 217.0000 4.6583 - 73.4000 214.0000 4.6260 - 73.4500 213.0000 4.6152 - 73.5000 217.0000 4.6583 - 73.5500 220.0000 4.6904 - 73.6000 210.0000 4.5826 - 73.6500 209.0000 4.5717 - 73.7000 215.0000 4.6368 - 73.7500 218.0000 4.6690 - 73.8000 215.0000 4.6368 - 73.8500 217.0000 4.6583 - 73.9000 221.0000 4.7011 - 73.9500 217.0000 4.6583 - 74.0000 219.0000 4.6797 - 74.0500 220.0000 4.6904 - 74.1000 228.0000 4.7749 - 74.1500 229.0000 4.7854 - 74.2000 230.0000 4.7958 - 74.2500 234.0000 4.8374 - 74.3000 251.0000 5.0100 - 74.3500 261.0000 5.1088 - 74.4000 288.0000 5.3666 - 74.4500 313.0000 5.5946 - 74.5000 362.0000 6.0166 - 74.5500 424.0000 6.5115 - 74.6000 524.0000 7.2388 - 74.6500 646.0000 8.0374 - 74.7000 781.0000 8.8374 - 74.7500 920.0000 9.5917 - 74.8000 1024.0000 10.1193 - 74.8500 1120.0000 10.5830 - 74.9000 1187.0000 10.8950 - 74.9500 1187.0000 10.8950 - 75.0000 1166.0000 10.7981 - 75.0500 1114.0000 10.5546 - 75.1000 1044.0000 10.2176 - 75.1500 991.0000 9.9549 - 75.2000 927.0000 9.6281 - 75.2500 823.0000 9.0719 - 75.3000 717.0000 8.4676 - 75.3500 619.0000 7.8677 - 75.4000 520.0000 7.2111 - 75.4500 421.0000 6.4885 - 75.5000 353.0000 5.9414 - 75.5500 308.0000 5.5498 - 75.6000 273.0000 5.2249 - 75.6500 256.0000 5.0596 - 75.7000 245.0000 4.9497 - 75.7500 234.0000 4.8374 - 75.8000 230.0000 4.7958 - 75.8500 224.0000 4.7329 - 75.9000 232.0000 4.8166 - 75.9500 226.0000 4.7539 - 76.0000 222.0000 4.7117 - 76.0500 222.0000 4.7117 - 76.1000 227.0000 4.7645 - 76.1500 225.0000 4.7434 - 76.2000 226.0000 4.7539 - 76.2500 227.0000 4.7645 - 76.3000 229.0000 4.7854 - 76.3500 235.0000 4.8477 - 76.4000 233.0000 4.8270 - 76.4500 243.0000 4.9295 - 76.5000 238.0000 4.8785 - 76.5500 237.0000 4.8683 - 76.6000 236.0000 4.8580 - 76.6500 232.0000 4.8166 - 76.7000 231.0000 4.8062 - 76.7500 227.0000 4.7645 - 76.8000 225.0000 4.7434 - 76.8500 220.0000 4.6904 - 76.9000 218.0000 4.6690 - 76.9500 215.0000 4.6368 - 77.0000 219.0000 4.6797 - 77.0500 224.0000 4.7329 - 77.1000 225.0000 4.7434 - 77.1500 222.0000 4.7117 - 77.2000 231.0000 4.8062 - 77.2500 243.0000 4.9295 - 77.3000 250.0000 5.0000 - 77.3500 269.0000 5.1865 - 77.4000 286.0000 5.3479 - 77.4500 310.0000 5.5678 - 77.5000 325.0000 5.7009 - 77.5500 332.0000 5.7619 - 77.6000 337.0000 5.8052 - 77.6500 329.0000 5.7359 - 77.7000 303.0000 5.5045 - 77.7500 278.0000 5.2726 - 77.8000 268.0000 5.1769 - 77.8500 252.0000 5.0200 - 77.9000 236.0000 4.8580 - 77.9500 228.0000 4.7749 - 78.0000 219.0000 4.6797 - 78.0500 225.0000 4.7434 - 78.1000 222.0000 4.7117 - 78.1500 214.0000 4.6260 - 78.2000 228.0000 4.7749 - 78.2500 221.0000 4.7011 - 78.3000 217.0000 4.6583 - 78.3500 221.0000 4.7011 - 78.4000 222.0000 4.7117 - 78.4500 226.0000 4.7539 - 78.5000 237.0000 4.8683 - 78.5500 246.0000 4.9598 - 78.6000 255.0000 5.0498 - 78.6500 269.0000 5.1865 - 78.7000 284.0000 5.3292 - 78.7500 302.0000 5.4955 - 78.8000 313.0000 5.5946 - 78.8500 327.0000 5.7184 - 78.9000 321.0000 5.6657 - 78.9500 333.0000 5.7706 - 79.0000 331.0000 5.7533 - 79.0500 332.0000 5.7619 - 79.1000 358.0000 5.9833 - 79.1500 402.0000 6.3403 - 79.2000 460.0000 6.7823 - 79.2500 557.0000 7.4632 - 79.3000 660.0000 8.1240 - 79.3500 769.0000 8.7693 - 79.4000 859.0000 9.2682 - 79.4500 934.0000 9.6644 - 79.5000 955.0000 9.7724 - 79.5500 921.0000 9.5969 - 79.6000 824.0000 9.0774 - 79.6500 694.0000 8.3307 - 79.7000 578.0000 7.6026 - 79.7500 474.0000 6.8848 - 79.8000 402.0000 6.3403 - 79.8500 344.0000 5.8652 - 79.9000 306.0000 5.5317 - 79.9500 300.0000 5.4772 - 80.0000 292.0000 5.4037 - 80.0500 292.0000 5.4037 - 80.1000 302.0000 5.4955 - 80.1500 304.0000 5.5136 - 80.2000 306.0000 5.5317 - 80.2500 305.0000 5.5227 - 80.3000 303.0000 5.5045 - 80.3500 299.0000 5.4681 - 80.4000 278.0000 5.2726 - 80.4500 259.0000 5.0892 - 80.5000 257.0000 5.0695 - 80.5500 245.0000 4.9497 - 80.6000 237.0000 4.8683 - 80.6500 240.0000 4.8990 - 80.7000 233.0000 4.8270 - 80.7500 232.0000 4.8166 - 80.8000 235.0000 4.8477 - 80.8500 241.0000 4.9092 - 80.9000 257.0000 5.0695 - 80.9500 274.0000 5.2345 - 81.0000 292.0000 5.4037 - 81.0500 309.0000 5.5588 - 81.1000 333.0000 5.7706 - 81.1500 360.0000 6.0000 - 81.2000 381.0000 6.1725 - 81.2500 387.0000 6.2209 - 81.3000 387.0000 6.2209 - 81.3500 386.0000 6.2129 - 81.4000 382.0000 6.1806 - 81.4500 368.0000 6.0663 - 81.5000 363.0000 6.0249 - 81.5500 352.0000 5.9330 - 81.6000 337.0000 5.8052 - 81.6500 321.0000 5.6657 - 81.7000 297.0000 5.4498 - 81.7500 281.0000 5.3009 - 81.8000 265.0000 5.1478 - 81.8500 255.0000 5.0498 - 81.9000 251.0000 5.0100 - 81.9500 237.0000 4.8683 - 82.0000 238.0000 4.8785 - 82.0500 237.0000 4.8683 - 82.1000 228.0000 4.7749 - 82.1500 240.0000 4.8990 - 82.2000 234.0000 4.8374 - 82.2500 226.0000 4.7539 - 82.3000 229.0000 4.7854 - 82.3500 228.0000 4.7749 - 82.4000 233.0000 4.8270 - 82.4500 243.0000 4.9295 - 82.5000 241.0000 4.9092 - 82.5500 257.0000 5.0695 - 82.6000 279.0000 5.2820 - 82.6500 305.0000 5.5227 - 82.7000 345.0000 5.8737 - 82.7500 410.0000 6.4031 - 82.8000 455.0000 6.7454 - 82.8500 545.0000 7.3824 - 82.9000 622.0000 7.8867 - 82.9500 673.0000 8.2037 - 83.0000 725.0000 8.5147 - 83.0500 717.0000 8.4676 - 83.1000 661.0000 8.1302 - 83.1500 592.0000 7.6942 - 83.2000 518.0000 7.1972 - 83.2500 443.0000 6.6558 - 83.3000 371.0000 6.0910 - 83.3500 336.0000 5.7966 - 83.4000 290.0000 5.3852 - 83.4500 265.0000 5.1478 - 83.5000 252.0000 5.0200 - 83.5500 250.0000 5.0000 - 83.6000 244.0000 4.9396 - 83.6500 242.0000 4.9193 - 83.7000 241.0000 4.9092 - 83.7500 243.0000 4.9295 - 83.8000 248.0000 4.9800 - 83.8500 253.0000 5.0299 - 83.9000 252.0000 5.0200 - 83.9500 264.0000 5.1381 - 84.0000 266.0000 5.1575 - 84.0500 282.0000 5.3104 - 84.1000 291.0000 5.3944 - 84.1500 313.0000 5.5946 - 84.2000 346.0000 5.8822 - 84.2500 374.0000 6.1156 - 84.3000 415.0000 6.4420 - 84.3500 430.0000 6.5574 - 84.4000 433.0000 6.5803 - 84.4500 430.0000 6.5574 - 84.5000 406.0000 6.3718 - 84.5500 384.0000 6.1968 - 84.6000 349.0000 5.9076 - 84.6500 318.0000 5.6391 - 84.7000 307.0000 5.5408 - 84.7500 298.0000 5.4589 - 84.8000 296.0000 5.4406 - 84.8500 304.0000 5.5136 - 84.9000 313.0000 5.5946 - 84.9500 328.0000 5.7271 - 85.0000 346.0000 5.8822 - 85.0500 341.0000 5.8395 - 85.1000 335.0000 5.7879 - 85.1500 324.0000 5.6921 - 85.2000 336.0000 5.7966 - 85.2500 341.0000 5.8395 - 85.3000 341.0000 5.8395 - 85.3500 370.0000 6.0828 - 85.4000 414.0000 6.4343 - 85.4500 442.0000 6.6483 - 85.5000 490.0000 7.0000 - 85.5500 520.0000 7.2111 - 85.6000 532.0000 7.2938 - 85.6500 548.0000 7.4027 - 85.7000 561.0000 7.4900 - 85.7500 567.0000 7.5299 - 85.8000 585.0000 7.6485 - 85.8500 584.0000 7.6420 - 85.9000 558.0000 7.4699 - 85.9500 527.0000 7.2595 - 86.0000 481.0000 6.9354 - 86.0500 424.0000 6.5115 - 86.1000 370.0000 6.0828 - 86.1500 333.0000 5.7706 - 86.2000 312.0000 5.5857 - 86.2500 301.0000 5.4863 - 86.3000 307.0000 5.5408 - 86.3500 314.0000 5.6036 - 86.4000 340.0000 5.8310 - 86.4500 379.0000 6.1563 - 86.5000 427.0000 6.5345 - 86.5500 467.0000 6.8337 - 86.6000 535.0000 7.3144 - 86.6500 584.0000 7.6420 - 86.7000 602.0000 7.7589 - 86.7500 580.0000 7.6158 - 86.8000 532.0000 7.2938 - 86.8500 481.0000 6.9354 - 86.9000 426.0000 6.5269 - 86.9500 379.0000 6.1563 - 87.0000 329.0000 5.7359 - 87.0500 303.0000 5.5045 - 87.1000 288.0000 5.3666 - 87.1500 271.0000 5.2058 - 87.2000 269.0000 5.1865 - 87.2500 267.0000 5.1672 - 87.3000 263.0000 5.1284 - 87.3500 267.0000 5.1672 - 87.4000 260.0000 5.0990 - 87.4500 260.0000 5.0990 - 87.5000 263.0000 5.1284 - 87.5500 263.0000 5.1284 - 87.6000 270.0000 5.1962 - 87.6500 278.0000 5.2726 - 87.7000 293.0000 5.4129 - 87.7500 318.0000 5.6391 - 87.8000 364.0000 6.0332 - 87.8500 424.0000 6.5115 - 87.9000 512.0000 7.1554 - 87.9500 643.0000 8.0187 - 88.0000 817.0000 9.0388 - 88.0500 982.0000 9.9096 - 88.1000 1163.0000 10.7842 - 88.1500 1289.0000 11.3534 - 88.2000 1373.0000 11.7175 - 88.2500 1393.0000 11.8025 - 88.3000 1348.0000 11.6103 - 88.3500 1244.0000 11.1535 - 88.4000 1157.0000 10.7564 - 88.4500 1077.0000 10.3779 - 88.5000 1020.0000 10.0995 - 88.5500 965.0000 9.8234 - 88.6000 907.0000 9.5237 - 88.6500 858.0000 9.2628 - 88.7000 771.0000 8.7807 - 88.7500 647.0000 8.0436 - 88.8000 555.0000 7.4498 - 88.8500 468.0000 6.8411 - 88.9000 405.0000 6.3640 - 88.9500 348.0000 5.8992 - 89.0000 316.0000 5.6214 - 89.0500 291.0000 5.3944 - 89.1000 277.0000 5.2631 - 89.1500 278.0000 5.2726 - 89.2000 270.0000 5.1962 - 89.2500 262.0000 5.1186 - 89.3000 268.0000 5.1769 - 89.3500 270.0000 5.1962 - 89.4000 279.0000 5.2820 - 89.4500 287.0000 5.3572 - 89.5000 300.0000 5.4772 - 89.5500 319.0000 5.6480 - 89.6000 347.0000 5.8907 - 89.6500 378.0000 6.1482 - 89.7000 420.0000 6.4807 - 89.7500 469.0000 6.8484 - 89.8000 536.0000 7.3212 - 89.8500 645.0000 8.0312 - 89.9000 773.0000 8.7920 - 89.9500 925.0000 9.6177 - 90.0000 1115.0000 10.5594 - 90.0500 1254.0000 11.1982 - 90.1000 1367.0000 11.6919 - 90.1500 1400.0000 11.8322 - 90.2000 1327.0000 11.5195 - 90.2500 1188.0000 10.8995 - 90.3000 1038.0000 10.1882 - 90.3500 879.0000 9.3755 - 90.4000 738.0000 8.5907 - 90.4500 644.0000 8.0250 - 90.5000 594.0000 7.7071 - 90.5500 601.0000 7.7524 - 90.6000 643.0000 8.0187 - 90.6500 697.0000 8.3487 - 90.7000 786.0000 8.8657 - 90.7500 842.0000 9.1761 - 90.8000 847.0000 9.2033 - 90.8500 791.0000 8.8938 - 90.9000 702.0000 8.3785 - 90.9500 592.0000 7.6942 - 91.0000 508.0000 7.1274 - 91.0500 418.0000 6.4653 - 91.1000 362.0000 6.0166 - 91.1500 328.0000 5.7271 - 91.2000 299.0000 5.4681 - 91.2500 279.0000 5.2820 - 91.3000 270.0000 5.1962 - 91.3500 257.0000 5.0695 - 91.4000 253.0000 5.0299 - 91.4500 258.0000 5.0794 - 91.5000 257.0000 5.0695 - 91.5500 249.0000 4.9900 - 91.6000 245.0000 4.9497 - 91.6500 257.0000 5.0695 - 91.7000 260.0000 5.0990 - 91.7500 284.0000 5.3292 - 91.8000 296.0000 5.4406 - 91.8500 322.0000 5.6745 - 91.9000 343.0000 5.8566 - 91.9500 382.0000 6.1806 - 92.0000 405.0000 6.3640 - 92.0500 411.0000 6.4109 - 92.1000 416.0000 6.4498 - 92.1500 406.0000 6.3718 - 92.2000 372.0000 6.0992 - 92.2500 353.0000 5.9414 - 92.3000 330.0000 5.7446 - 92.3500 317.0000 5.6303 - 92.4000 313.0000 5.5946 - 92.4500 312.0000 5.5857 - 92.5000 309.0000 5.5588 - 92.5500 303.0000 5.5045 - 92.6000 288.0000 5.3666 - 92.6500 276.0000 5.2536 - 92.7000 264.0000 5.1381 - 92.7500 246.0000 4.9598 - 92.8000 249.0000 4.9900 - 92.8500 241.0000 4.9092 - 92.9000 251.0000 5.0100 - 92.9500 243.0000 4.9295 - 93.0000 246.0000 4.9598 - 93.0500 246.0000 4.9598 - 93.1000 249.0000 4.9900 - 93.1500 244.0000 4.9396 - 93.2000 252.0000 5.0200 - 93.2500 252.0000 5.0200 - 93.3000 258.0000 5.0794 - 93.3500 265.0000 5.1478 - 93.4000 263.0000 5.1284 - 93.4500 284.0000 5.3292 - 93.5000 299.0000 5.4681 - 93.5500 320.0000 5.6569 - 93.6000 344.0000 5.8652 - 93.6500 363.0000 6.0249 - 93.7000 372.0000 6.0992 - 93.7500 358.0000 5.9833 - 93.8000 351.0000 5.9245 - 93.8500 354.0000 5.9498 - 93.9000 330.0000 5.7446 - 93.9500 322.0000 5.6745 - 94.0000 334.0000 5.7793 - 94.0500 339.0000 5.8224 - 94.1000 345.0000 5.8737 - 94.1500 357.0000 5.9749 - 94.2000 360.0000 6.0000 - 94.2500 358.0000 5.9833 - 94.3000 372.0000 6.0992 - 94.3500 425.0000 6.5192 - 94.4000 511.0000 7.1484 - 94.4500 626.0000 7.9120 - 94.5000 770.0000 8.7750 - 94.5500 946.0000 9.7263 - 94.6000 1118.0000 10.5736 - 94.6500 1205.0000 10.9772 - 94.7000 1227.0000 11.0770 - 94.7500 1157.0000 10.7564 - 94.8000 1041.0000 10.2029 - 94.8500 873.0000 9.3434 - 94.9000 715.0000 8.4558 - 94.9500 562.0000 7.4967 - 95.0000 446.0000 6.6783 - 95.0500 377.0000 6.1400 - 95.1000 332.0000 5.7619 - 95.1500 297.0000 5.4498 - 95.2000 282.0000 5.3104 - 95.2500 276.0000 5.2536 - 95.3000 264.0000 5.1381 - 95.3500 261.0000 5.1088 - 95.4000 266.0000 5.1575 - 95.4500 261.0000 5.1088 - 95.5000 253.0000 5.0299 - 95.5500 258.0000 5.0794 - 95.6000 262.0000 5.1186 - 95.6500 260.0000 5.0990 - 95.7000 283.0000 5.3198 - 95.7500 307.0000 5.5408 - 95.8000 344.0000 5.8652 - 95.8500 402.0000 6.3403 - 95.9000 453.0000 6.7305 - 95.9500 529.0000 7.2732 - 96.0000 604.0000 7.7717 - 96.0500 661.0000 8.1302 - 96.1000 672.0000 8.1976 - 96.1500 629.0000 7.9310 - 96.2000 588.0000 7.6681 - 96.2500 510.0000 7.1414 - 96.3000 440.0000 6.6332 - 96.3500 377.0000 6.1400 - 96.4000 330.0000 5.7446 - 96.4500 301.0000 5.4863 - 96.5000 280.0000 5.2915 - 96.5500 269.0000 5.1865 - 96.6000 258.0000 5.0794 - 96.6500 252.0000 5.0200 - 96.7000 251.0000 5.0100 - 96.7500 252.0000 5.0200 - 96.8000 256.0000 5.0596 - 96.8500 253.0000 5.0299 - 96.9000 253.0000 5.0299 - 96.9500 253.0000 5.0299 - 97.0000 262.0000 5.1186 - 97.0500 265.0000 5.1478 - 97.1000 284.0000 5.3292 - 97.1500 291.0000 5.3944 - 97.2000 323.0000 5.6833 - 97.2500 374.0000 6.1156 - 97.3000 431.0000 6.5651 - 97.3500 511.0000 7.1484 - 97.4000 602.0000 7.7589 - 97.4500 678.0000 8.2341 - 97.5000 743.0000 8.6197 - 97.5500 756.0000 8.6948 - 97.6000 717.0000 8.4676 - 97.6500 657.0000 8.1056 - 97.7000 581.0000 7.6223 - 97.7500 490.0000 7.0000 - 97.8000 418.0000 6.4653 - 97.8500 364.0000 6.0332 - 97.9000 335.0000 5.7879 - 97.9500 306.0000 5.5317 - 98.0000 290.0000 5.3852 - 98.0500 286.0000 5.3479 - 98.1000 283.0000 5.3198 - 98.1500 283.0000 5.3198 - 98.2000 274.0000 5.2345 - 98.2500 262.0000 5.1186 - 98.3000 266.0000 5.1575 - 98.3500 261.0000 5.1088 - 98.4000 261.0000 5.1088 - 98.4500 264.0000 5.1381 - 98.5000 269.0000 5.1865 - 98.5500 278.0000 5.2726 - 98.6000 288.0000 5.3666 - 98.6500 306.0000 5.5317 - 98.7000 319.0000 5.6480 - 98.7500 330.0000 5.7446 - 98.8000 343.0000 5.8566 - 98.8500 341.0000 5.8395 - 98.9000 325.0000 5.7009 - 98.9500 318.0000 5.6391 - 99.0000 298.0000 5.4589 - 99.0500 299.0000 5.4681 - 99.1000 288.0000 5.3666 - 99.1500 309.0000 5.5588 - 99.2000 344.0000 5.8652 - 99.2500 382.0000 6.1806 - 99.3000 422.0000 6.4962 - 99.3500 470.0000 6.8557 - 99.4000 512.0000 7.1554 - 99.4500 514.0000 7.1694 - 99.5000 515.0000 7.1764 - 99.5500 488.0000 6.9857 - 99.6000 440.0000 6.6332 - 99.6500 396.0000 6.2929 - 99.7000 366.0000 6.0498 - 99.7500 332.0000 5.7619 - 99.8000 311.0000 5.5767 - 99.8500 305.0000 5.5227 - 99.9000 300.0000 5.4772 - 99.9500 293.0000 5.4129 - 100.0000 286.0000 5.3479 - 100.0500 306.0000 5.5317 - 100.1000 313.0000 5.5946 - 100.1500 317.0000 5.6303 - 100.2000 327.0000 5.7184 - 100.2500 343.0000 5.8566 - 100.3000 330.0000 5.7446 - 100.3500 320.0000 5.6569 - 100.4000 307.0000 5.5408 - 100.4500 298.0000 5.4589 - 100.5000 282.0000 5.3104 - 100.5500 274.0000 5.2345 - 100.6000 266.0000 5.1575 - 100.6500 274.0000 5.2345 - 100.7000 271.0000 5.2058 - 100.7500 274.0000 5.2345 - 100.8000 290.0000 5.3852 - 100.8500 302.0000 5.4955 - 100.9000 321.0000 5.6657 - 100.9500 350.0000 5.9161 - 101.0000 367.0000 6.0581 - 101.0500 386.0000 6.2129 - 101.1000 394.0000 6.2769 - 101.1500 370.0000 6.0828 - 101.2000 356.0000 5.9666 - 101.2500 332.0000 5.7619 - 101.3000 310.0000 5.5678 - 101.3500 288.0000 5.3666 - 101.4000 279.0000 5.2820 - 101.4500 281.0000 5.3009 - 101.5000 274.0000 5.2345 - 101.5500 284.0000 5.3292 - 101.6000 280.0000 5.2915 - 101.6500 270.0000 5.1962 - 101.7000 278.0000 5.2726 - 101.7500 269.0000 5.1865 - 101.8000 273.0000 5.2249 - 101.8500 268.0000 5.1769 - 101.9000 267.0000 5.1672 - 101.9500 265.0000 5.1478 - 102.0000 257.0000 5.3437 - 102.0500 258.0000 5.3541 - 102.1000 267.0000 5.4467 - 102.1500 267.0000 5.4467 - 102.2000 277.0000 5.5478 - 102.2500 287.0000 5.6470 - 102.3000 302.0000 5.7927 - 102.3500 332.0000 6.0736 - 102.4000 360.0000 6.3246 - 102.4500 411.0000 6.7577 - 102.5000 457.0000 7.1259 - 102.5500 524.0000 7.6303 - 102.6000 608.0000 8.2192 - 102.6500 699.0000 8.8129 - 102.7000 861.0000 9.7809 - 102.7500 1096.0000 11.0353 - 102.8000 1377.0000 12.3693 - 102.8500 1685.0000 13.6829 - 102.9000 1901.0000 14.5335 - 102.9500 2069.0000 15.1621 - 103.0000 2016.0000 14.9666 - 103.0500 1800.0000 14.1421 - 103.1000 1500.0000 12.9099 - 103.1500 1181.0000 11.4552 - 103.2000 937.0000 10.2035 - 103.2500 728.0000 8.9938 - 103.3000 629.0000 8.3600 - 103.3500 576.0000 8.0000 - 103.4000 556.0000 7.8599 - 103.4500 535.0000 7.7100 - 103.5000 519.0000 7.5939 - 103.5500 486.0000 7.3485 - 103.6000 465.0000 7.1880 - 103.6500 429.0000 6.9041 - 103.7000 385.0000 6.5405 - 103.7500 361.0000 6.3333 - 103.8000 342.0000 6.1644 - 103.8500 312.0000 5.8878 - 103.9000 293.0000 5.7057 - 103.9500 279.0000 5.5678 - 104.0000 277.0000 5.5478 - 104.0500 265.0000 5.4263 - 104.1000 257.0000 5.3437 - 104.1500 256.0000 5.3333 - 104.2000 250.0000 5.2705 - 104.2500 260.0000 5.3748 - 104.3000 261.0000 5.3852 - 104.3500 258.0000 5.3541 - 104.4000 263.0000 5.4058 - 104.4500 268.0000 5.4569 - 104.5000 284.0000 5.6174 - 104.5500 306.0000 5.8310 - 104.6000 325.0000 6.0093 - 104.6500 337.0000 6.1192 - 104.7000 337.0000 6.1192 - 104.7500 344.0000 6.1824 - 104.8000 340.0000 6.1464 - 104.8500 337.0000 6.1192 - 104.9000 328.0000 6.0369 - 104.9500 321.0000 5.9722 - 105.0000 306.0000 5.8310 - 105.0500 295.0000 5.7252 - 105.1000 289.0000 5.6667 - 105.1500 281.0000 5.5877 - 105.2000 267.0000 5.4467 - 105.2500 266.0000 5.4365 - 105.3000 270.0000 5.4772 - 105.3500 263.0000 5.4058 - 105.4000 256.0000 5.3333 - 105.4500 266.0000 5.4365 - 105.5000 264.0000 5.4160 - 105.5500 259.0000 5.3645 - 105.6000 261.0000 5.3852 - 105.6500 261.0000 5.3852 - 105.7000 258.0000 5.3541 - 105.7500 253.0000 5.3020 - 105.8000 248.0000 5.2493 - 105.8500 244.0000 5.2068 - 105.9000 249.0000 5.2599 - 105.9500 251.0000 5.2810 - 106.0000 245.0000 5.2175 - 106.0500 245.0000 5.2175 - 106.1000 247.0000 5.2387 - 106.1500 247.0000 5.2387 - 106.2000 254.0000 5.3125 - 106.2500 259.0000 5.3645 - 106.3000 250.0000 5.2705 - 106.3500 251.0000 5.2810 - 106.4000 258.0000 5.3541 - 106.4500 252.0000 5.2915 - 106.5000 255.0000 5.3229 - 106.5500 259.0000 5.3645 - 106.6000 256.0000 5.3333 - 106.6500 264.0000 5.4160 - 106.7000 268.0000 5.4569 - 106.7500 281.0000 5.5877 - 106.8000 303.0000 5.8023 - 106.8500 331.0000 6.0645 - 106.9000 371.0000 6.4205 - 106.9500 420.0000 6.8313 - 107.0000 484.0000 7.3333 - 107.0500 532.0000 7.6884 - 107.1000 576.0000 8.0000 - 107.1500 582.0000 8.0416 - 107.2000 563.0000 7.9092 - 107.2500 527.0000 7.6522 - 107.3000 490.0000 7.3786 - 107.3500 465.0000 7.1880 - 107.4000 467.0000 7.2034 - 107.4500 449.0000 7.0632 - 107.5000 416.0000 6.7987 - 107.5500 393.0000 6.6081 - 107.6000 366.0000 6.3770 - 107.6500 331.0000 6.0645 - 107.7000 316.0000 5.9255 - 107.7500 297.0000 5.7446 - 107.8000 294.0000 5.7155 - 107.8500 292.0000 5.6960 - 107.9000 286.0000 5.6372 - 107.9500 295.0000 5.7252 - 108.0000 306.0000 6.1847 - 108.0500 315.0000 6.2750 - 108.1000 334.0000 6.4614 - 108.1500 373.0000 6.8282 - 108.2000 406.0000 7.1239 - 108.2500 447.0000 7.4750 - 108.3000 499.0000 7.8978 - 108.3500 507.0000 7.9608 - 108.4000 506.0000 7.9530 - 108.4500 488.0000 7.8102 - 108.5000 432.0000 7.3485 - 108.5500 391.0000 6.9911 - 108.6000 342.0000 6.5383 - 108.6500 315.0000 6.2750 - 108.7000 292.0000 6.0415 - 108.7500 275.0000 5.8630 - 108.8000 274.0000 5.8523 - 108.8500 259.0000 5.6899 - 108.9000 250.0000 5.5902 - 108.9500 258.0000 5.6789 - 109.0000 252.0000 5.6125 - 109.0500 255.0000 5.6458 - 109.1000 254.0000 5.6347 - 109.1500 253.0000 5.6236 - 109.2000 254.0000 5.6347 - 109.2500 252.0000 5.6125 - 109.3000 257.0000 5.6679 - 109.3500 250.0000 5.5902 - 109.4000 255.0000 5.6458 - 109.4500 251.0000 5.6013 - 109.5000 254.0000 5.6347 - 109.5500 260.0000 5.7009 - 109.6000 249.0000 5.5790 - 109.6500 253.0000 5.6236 - 109.7000 254.0000 5.6347 - 109.7500 259.0000 5.6899 - 109.8000 268.0000 5.7879 - 109.8500 270.0000 5.8095 - 109.9000 284.0000 5.9582 - 109.9500 305.0000 6.1745 - 110.0000 322.0000 6.3443 - 110.0500 364.0000 6.7454 - 110.1000 417.0000 7.2198 - 110.1500 470.0000 7.6649 - 110.2000 573.0000 8.4632 - 110.2500 678.0000 9.2060 - 110.3000 771.0000 9.8171 - 110.3500 847.0000 10.2896 - 110.4000 854.0000 10.3320 - 110.4500 794.0000 9.9624 - 110.5000 720.0000 9.4868 - 110.5500 611.0000 8.7393 - 110.6000 520.0000 8.0623 - 110.6500 463.0000 7.6076 - 110.7000 412.0000 7.1764 - 110.7500 399.0000 7.0622 - 110.8000 416.0000 7.2111 - 110.8500 428.0000 7.3144 - 110.9000 432.0000 7.3485 - 110.9500 420.0000 7.2457 - 111.0000 402.0000 7.0887 - 111.0500 364.0000 6.7454 - 111.1000 348.0000 6.5955 - 111.1500 334.0000 6.4614 - 111.2000 321.0000 6.3344 - 111.2500 330.0000 6.4226 - 111.3000 342.0000 6.5383 - 111.3500 380.0000 6.8920 - 111.4000 385.0000 6.9372 - 111.4500 420.0000 7.2457 - 111.5000 441.0000 7.4246 - 111.5500 465.0000 7.6240 - 111.6000 444.0000 7.4498 - 111.6500 406.0000 7.1239 - 111.7000 383.0000 6.9192 - 111.7500 345.0000 6.5670 - 111.8000 332.0000 6.4420 - 111.8500 321.0000 6.3344 - 111.9000 308.0000 6.2048 - 111.9500 292.0000 6.0415 - 112.0000 303.0000 6.1543 - 112.0500 314.0000 6.2650 - 112.1000 333.0000 6.4517 - 112.1500 379.0000 6.8829 - 112.2000 438.0000 7.3993 - 112.2500 505.0000 7.9451 - 112.3000 594.0000 8.6168 - 112.3500 659.0000 9.0761 - 112.4000 717.0000 9.4670 - 112.4500 738.0000 9.6047 - 112.5000 710.0000 9.4207 - 112.5500 642.0000 8.9582 - 112.6000 547.0000 8.2689 - 112.6500 492.0000 7.8422 - 112.7000 421.0000 7.2543 - 112.7500 386.0000 6.9462 - 112.8000 344.0000 6.5574 - 112.8500 337.0000 6.4904 - 112.9000 350.0000 6.6144 - 112.9500 364.0000 6.7454 - 113.0000 415.0000 7.2024 - 113.0500 506.0000 7.9530 - 113.1000 586.0000 8.5586 - 113.1500 674.0000 9.1788 - 113.2000 750.0000 9.6825 - 113.2500 787.0000 9.9184 - 113.3000 753.0000 9.7018 - 113.3500 682.0000 9.2331 - 113.4000 597.0000 8.6386 - 113.4500 499.0000 7.8978 - 113.5000 417.0000 7.2198 - 113.5500 362.0000 6.7268 - 113.6000 340.0000 6.5192 - 113.6500 302.0000 6.1441 - 113.7000 286.0000 5.9791 - 113.7500 280.0000 5.9161 - 113.8000 283.0000 5.9477 - 113.8500 276.0000 5.8737 - 113.9000 282.0000 5.9372 - 113.9500 284.0000 5.9582 - 114.0000 295.0000 6.4918 - 114.0500 310.0000 6.6548 - 114.1000 319.0000 6.7507 - 114.1500 321.0000 6.7718 - 114.2000 304.0000 6.5900 - 114.2500 298.0000 6.5247 - 114.3000 293.0000 6.4697 - 114.3500 283.0000 6.3583 - 114.4000 277.0000 6.2906 - 114.4500 269.0000 6.1991 - 114.5000 265.0000 6.1528 - 114.5500 277.0000 6.2906 - 114.6000 283.0000 6.3583 - 114.6500 283.0000 6.3583 - 114.7000 293.0000 6.4697 - 114.7500 303.0000 6.5792 - 114.8000 320.0000 6.7612 - 114.8500 316.0000 6.7188 - 114.9000 331.0000 6.8765 - 114.9500 346.0000 7.0305 - 115.0000 327.0000 6.8348 - 115.0500 328.0000 6.8452 - 115.1000 306.0000 6.6117 - 115.1500 291.0000 6.4476 - 115.2000 286.0000 6.3920 - 115.2500 278.0000 6.3019 - 115.3000 273.0000 6.2450 - 115.3500 267.0000 6.1760 - 115.4000 272.0000 6.2335 - 115.4500 257.0000 6.0592 - 115.5000 260.0000 6.0945 - 115.5500 265.0000 6.1528 - 115.6000 264.0000 6.1412 - 115.6500 272.0000 6.2335 - 115.7000 270.0000 6.2106 - 115.7500 268.0000 6.1875 - 115.8000 269.0000 6.1991 - 115.8500 287.0000 6.4031 - 115.9000 292.0000 6.4587 - 115.9500 295.0000 6.4918 - 116.0000 317.0000 6.7295 - 116.0500 335.0000 6.9179 - 116.1000 364.0000 7.2111 - 116.1500 410.0000 7.6532 - 116.2000 477.0000 8.2549 - 116.2500 556.0000 8.9123 - 116.3000 642.0000 9.5768 - 116.3500 755.0000 10.3854 - 116.4000 864.0000 11.1098 - 116.4500 946.0000 11.6251 - 116.5000 970.0000 11.7716 - 116.5500 941.0000 11.5943 - 116.6000 870.0000 11.1484 - 116.6500 759.0000 10.4129 - 116.7000 647.0000 9.6140 - 116.7500 540.0000 8.7831 - 116.8000 468.0000 8.1766 - 116.8500 418.0000 7.7275 - 116.9000 379.0000 7.3582 - 116.9500 381.0000 7.3776 - 117.0000 405.0000 7.6064 - 117.0500 446.0000 7.9821 - 117.1000 476.0000 8.2462 - 117.1500 523.0000 8.6437 - 117.2000 561.0000 8.9523 - 117.2500 555.0000 8.9043 - 117.3000 529.0000 8.6932 - 117.3500 485.0000 8.3238 - 117.4000 436.0000 7.8921 - 117.4500 398.0000 7.5404 - 117.5000 355.0000 7.1214 - 117.5500 322.0000 6.7823 - 117.6000 304.0000 6.5900 - 117.6500 285.0000 6.3808 - 117.7000 270.0000 6.2106 - 117.7500 278.0000 6.3019 - 117.8000 260.0000 6.0945 - 117.8500 268.0000 6.1875 - 117.9000 264.0000 6.1412 - 117.9500 265.0000 6.1528 - 118.0000 263.0000 6.1296 - 118.0500 267.0000 6.1760 - 118.1000 286.0000 6.3920 - 118.1500 293.0000 6.4697 - 118.2000 291.0000 6.4476 - 118.2500 319.0000 6.7507 - 118.3000 366.0000 7.2309 - 118.3500 411.0000 7.6625 - 118.4000 461.0000 8.1152 - 118.4500 489.0000 8.3581 - 118.5000 521.0000 8.6272 - 118.5500 555.0000 8.9043 - 118.6000 550.0000 8.8641 - 118.6500 511.0000 8.5440 - 118.7000 486.0000 8.3324 - 118.7500 436.0000 7.8921 - 118.8000 392.0000 7.4833 - 118.8500 368.0000 7.2506 - 118.9000 330.0000 6.8661 - 118.9500 328.0000 6.8452 - 119.0000 343.0000 7.0000 - 119.0500 371.0000 7.2801 - 119.1000 394.0000 7.5024 - 119.1500 441.0000 7.9373 - 119.2000 468.0000 8.1766 - 119.2500 469.0000 8.1854 - 119.3000 456.0000 8.0711 - 119.3500 416.0000 7.7090 - 119.4000 394.0000 7.5024 - 119.4500 361.0000 7.1813 - 119.5000 330.0000 6.8661 - 119.5500 312.0000 6.6762 - 119.6000 293.0000 6.4697 - 119.6500 285.0000 6.3808 - 119.7000 286.0000 6.3920 - 119.7500 275.0000 6.2678 - 119.8000 274.0000 6.2564 - 119.8500 281.0000 6.3358 - 119.9000 279.0000 6.3133 - 119.9500 298.0000 6.5247 - 120.0000 312.0000 7.2111 diff --git a/Notebooks/PbSO4/PbSO4.cif b/Notebooks/PbSO4/PbSO4.cif deleted file mode 100644 index fe04369d..00000000 --- a/Notebooks/PbSO4/PbSO4.cif +++ /dev/null @@ -1,25 +0,0 @@ -data_PbSO4 - -_space_group_name_H-M_alt 'P n m a' - -_cell_length_a 8.480 -_cell_length_b 5.398 -_cell_length_c 6.958 -_cell_angle_alpha 90.0 -_cell_angle_beta 90.0 -_cell_angle_gamma 90.0 - -loop_ - _atom_site_label - _atom_site_type_symbol - _atom_site_fract_x - _atom_site_fract_y - _atom_site_fract_z - _atom_site_occupancy - _atom_site_adp_type - _atom_site_U_iso_or_equiv - Pb Pb 0.188 0.25 0.167 1.0 Uiso 0.01 - S S 0.063 0.25 0.686 1.0 Uiso 0.01 - O1 O -0.095 0.25 0.600 1.0 Uiso 0.01 - O2 O 0.181 0.25 0.543 1.0 Uiso 0.01 - O3 O 0.085 0.026 0.806 1.0 Uiso 0.01 diff --git a/Notebooks/PbSO4/PbSO4_neutrons_short.xye b/Notebooks/PbSO4/PbSO4_neutrons_short.xye deleted file mode 100644 index 6ff09d36..00000000 --- a/Notebooks/PbSO4/PbSO4_neutrons_short.xye +++ /dev/null @@ -1,2202 +0,0 @@ -# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992) - 10.0000 220.0000 14.8324 - 10.0500 214.0000 14.6287 - 10.1000 219.0000 14.7986 - 10.1500 224.0000 14.9666 - 10.2000 198.0000 14.0712 - 10.2500 229.0000 15.1327 - 10.3000 224.0000 14.9666 - 10.3500 216.0000 14.6969 - 10.4000 202.0000 14.2127 - 10.4500 229.0000 15.1327 - 10.5000 202.0000 14.2127 - 10.5500 215.0000 14.6629 - 10.6000 215.0000 14.6629 - 10.6500 196.0000 14.0000 - 10.7000 235.0000 15.3297 - 10.7500 207.0000 14.3875 - 10.8000 205.0000 14.3178 - 10.8500 238.0000 15.4272 - 10.9000 202.0000 14.2127 - 10.9500 213.0000 14.5945 - 11.0000 226.0000 15.0333 - 11.0500 198.0000 14.0712 - 11.1000 222.0000 14.8997 - 11.1500 186.0000 13.6382 - 11.2000 216.0000 14.6969 - 11.2500 218.0000 14.7648 - 11.3000 225.0000 15.0000 - 11.3500 200.0000 14.1421 - 11.4000 196.0000 14.0000 - 11.4500 224.0000 14.9666 - 11.5000 199.0000 14.1067 - 11.5500 204.0000 14.2829 - 11.6000 189.0000 13.7477 - 11.6500 211.0000 14.5258 - 11.7000 190.0000 13.7840 - 11.7500 184.0000 13.5647 - 11.8000 204.0000 14.2829 - 11.8500 204.0000 14.2829 - 11.9000 219.0000 14.7986 - 11.9500 207.0000 14.3875 - 12.0000 227.0000 15.0665 - 12.0500 211.0000 10.2713 - 12.1000 193.0000 9.8234 - 12.1500 206.0000 10.1489 - 12.2000 208.0000 10.1980 - 12.2500 191.0000 9.7724 - 12.3000 194.0000 9.8489 - 12.3500 185.0000 9.6177 - 12.4000 200.0000 10.0000 - 12.4500 203.0000 10.0747 - 12.5000 197.0000 9.9247 - 12.5500 203.0000 10.0747 - 12.6000 200.0000 10.0000 - 12.6500 200.0000 10.0000 - 12.7000 205.0000 10.1242 - 12.7500 208.0000 10.1980 - 12.8000 205.0000 10.1242 - 12.8500 201.0000 10.0250 - 12.9000 221.0000 10.5119 - 12.9500 218.0000 10.4403 - 13.0000 218.0000 10.4403 - 13.0500 216.0000 10.3923 - 13.1000 202.0000 10.0499 - 13.1500 206.0000 10.1489 - 13.2000 197.0000 9.9247 - 13.2500 210.0000 10.2470 - 13.3000 199.0000 9.9750 - 13.3500 219.0000 10.4642 - 13.4000 192.0000 9.7980 - 13.4500 211.0000 10.2713 - 13.5000 199.0000 9.9750 - 13.5500 196.0000 9.8995 - 13.6000 195.0000 9.8742 - 13.6500 203.0000 10.0747 - 13.7000 202.0000 10.0499 - 13.7500 200.0000 10.0000 - 13.8000 199.0000 9.9750 - 13.8500 191.0000 9.7724 - 13.9000 204.0000 10.0995 - 13.9500 191.0000 9.7724 - 14.0000 200.0000 10.0000 - 14.0500 199.0000 9.9750 - 14.1000 197.0000 9.9247 - 14.1500 202.0000 10.0499 - 14.2000 210.0000 10.2470 - 14.2500 202.0000 10.0499 - 14.3000 198.0000 9.9499 - 14.3500 191.0000 9.7724 - 14.4000 194.0000 9.8489 - 14.4500 198.0000 9.9499 - 14.5000 194.0000 9.8489 - 14.5500 193.0000 9.8234 - 14.6000 212.0000 10.2956 - 14.6500 214.0000 10.3441 - 14.7000 197.0000 9.9247 - 14.7500 195.0000 9.8742 - 14.8000 205.0000 10.1242 - 14.8500 209.0000 10.2225 - 14.9000 203.0000 10.0747 - 14.9500 197.0000 9.9247 - 15.0000 191.0000 9.7724 - 15.0500 192.0000 9.7980 - 15.1000 215.0000 10.3682 - 15.1500 194.0000 9.8489 - 15.2000 189.0000 9.7211 - 15.2500 188.0000 9.6954 - 15.3000 202.0000 10.0499 - 15.3500 201.0000 10.0250 - 15.4000 198.0000 9.9499 - 15.4500 208.0000 10.1980 - 15.5000 197.0000 9.9247 - 15.5500 187.0000 9.6695 - 15.6000 187.0000 9.6695 - 15.6500 190.0000 9.7468 - 15.7000 197.0000 9.9247 - 15.7500 200.0000 10.0000 - 15.8000 193.0000 9.8234 - 15.8500 180.0000 9.4868 - 15.9000 194.0000 9.8489 - 15.9500 206.0000 10.1489 - 16.0000 195.0000 9.8742 - 16.0500 193.0000 9.8234 - 16.1000 205.0000 10.1242 - 16.1500 194.0000 9.8489 - 16.2000 196.0000 9.8995 - 16.2500 194.0000 9.8489 - 16.3000 199.0000 9.9750 - 16.3500 207.0000 10.1735 - 16.4000 188.0000 9.6954 - 16.4500 203.0000 10.0747 - 16.5000 188.0000 9.6954 - 16.5500 180.0000 9.4868 - 16.6000 198.0000 9.9499 - 16.6500 200.0000 10.0000 - 16.7000 201.0000 10.0250 - 16.7500 210.0000 10.2470 - 16.8000 206.0000 10.1489 - 16.8500 189.0000 9.7211 - 16.9000 194.0000 9.8489 - 16.9500 187.0000 9.6695 - 17.0000 195.0000 9.8742 - 17.0500 201.0000 10.0250 - 17.1000 197.0000 9.9247 - 17.1500 206.0000 10.1489 - 17.2000 208.0000 10.1980 - 17.2500 199.0000 9.9750 - 17.3000 192.0000 9.7980 - 17.3500 193.0000 9.8234 - 17.4000 204.0000 10.0995 - 17.4500 201.0000 10.0250 - 17.5000 200.0000 10.0000 - 17.5500 177.0000 9.4074 - 17.6000 193.0000 9.8234 - 17.6500 199.0000 9.9750 - 17.7000 201.0000 10.0250 - 17.7500 194.0000 9.8489 - 17.8000 184.0000 9.5917 - 17.8500 192.0000 9.7980 - 17.9000 199.0000 9.9750 - 17.9500 190.0000 9.7468 - 18.0000 183.0000 9.5656 - 18.0500 189.0000 7.9373 - 18.1000 196.0000 8.0829 - 18.1500 196.0000 8.0829 - 18.2000 198.0000 8.1240 - 18.2500 210.0000 8.3666 - 18.3000 212.0000 8.4063 - 18.3500 219.0000 8.5440 - 18.4000 198.0000 8.1240 - 18.4500 195.0000 8.0623 - 18.5000 198.0000 8.1240 - 18.5500 191.0000 7.9791 - 18.6000 193.0000 8.0208 - 18.6500 197.0000 8.1035 - 18.7000 194.0000 8.0416 - 18.7500 187.0000 7.8951 - 18.8000 209.0000 8.3467 - 18.8500 187.0000 7.8951 - 18.9000 198.0000 8.1240 - 18.9500 206.0000 8.2865 - 19.0000 197.0000 8.1035 - 19.0500 191.0000 7.9791 - 19.1000 200.0000 8.1650 - 19.1500 207.0000 8.3066 - 19.2000 205.0000 8.2664 - 19.2500 198.0000 8.1240 - 19.3000 196.0000 8.0829 - 19.3500 209.0000 8.3467 - 19.4000 211.0000 8.3865 - 19.4500 203.0000 8.2260 - 19.5000 200.0000 8.1650 - 19.5500 192.0000 8.0000 - 19.6000 208.0000 8.3267 - 19.6500 213.0000 8.4261 - 19.7000 221.0000 8.5829 - 19.7500 216.0000 8.4853 - 19.8000 226.0000 8.6795 - 19.8500 228.0000 8.7178 - 19.9000 228.0000 8.7178 - 19.9500 215.0000 8.4656 - 20.0000 224.0000 8.6410 - 20.0500 226.0000 8.6795 - 20.1000 213.0000 8.4261 - 20.1500 239.0000 8.9256 - 20.2000 250.0000 9.1287 - 20.2500 247.0000 9.0738 - 20.3000 240.0000 8.9443 - 20.3500 231.0000 8.7750 - 20.4000 236.0000 8.8694 - 20.4500 223.0000 8.6217 - 20.5000 231.0000 8.7750 - 20.5500 226.0000 8.6795 - 20.6000 214.0000 8.4459 - 20.6500 208.0000 8.3267 - 20.7000 214.0000 8.4459 - 20.7500 196.0000 8.0829 - 20.8000 204.0000 8.2462 - 20.8500 199.0000 8.1445 - 20.9000 186.0000 7.8740 - 20.9500 192.0000 8.0000 - 21.0000 199.0000 8.1445 - 21.0500 200.0000 8.1650 - 21.1000 184.0000 7.8316 - 21.1500 184.0000 7.8316 - 21.2000 189.0000 7.9373 - 21.2500 182.0000 7.7889 - 21.3000 184.0000 7.8316 - 21.3500 185.0000 7.8528 - 21.4000 195.0000 8.0623 - 21.4500 190.0000 7.9582 - 21.5000 194.0000 8.0416 - 21.5500 185.0000 7.8528 - 21.6000 183.0000 7.8102 - 21.6500 193.0000 8.0208 - 21.7000 194.0000 8.0416 - 21.7500 193.0000 8.0208 - 21.8000 188.0000 7.9162 - 21.8500 191.0000 7.9791 - 21.9000 189.0000 7.9373 - 21.9500 188.0000 7.9162 - 22.0000 201.0000 8.1854 - 22.0500 195.0000 8.0623 - 22.1000 205.0000 8.2664 - 22.1500 200.0000 8.1650 - 22.2000 200.0000 8.1650 - 22.2500 192.0000 8.0000 - 22.3000 197.0000 8.1035 - 22.3500 204.0000 8.2462 - 22.4000 207.0000 8.3066 - 22.4500 192.0000 8.0000 - 22.5000 201.0000 8.1854 - 22.5500 190.0000 7.9582 - 22.6000 195.0000 8.0623 - 22.6500 194.0000 8.0416 - 22.7000 182.0000 7.7889 - 22.7500 189.0000 7.9373 - 22.8000 196.0000 8.0829 - 22.8500 196.0000 8.0829 - 22.9000 200.0000 8.1650 - 22.9500 190.0000 7.9582 - 23.0000 183.0000 7.8102 - 23.0500 199.0000 8.1445 - 23.1000 187.0000 7.8951 - 23.1500 196.0000 8.0829 - 23.2000 191.0000 7.9791 - 23.2500 191.0000 7.9791 - 23.3000 195.0000 8.0623 - 23.3500 194.0000 8.0416 - 23.4000 192.0000 8.0000 - 23.4500 182.0000 7.7889 - 23.5000 188.0000 7.9162 - 23.5500 203.0000 8.2260 - 23.6000 187.0000 7.8951 - 23.6500 192.0000 8.0000 - 23.7000 206.0000 8.2865 - 23.7500 201.0000 8.1854 - 23.8000 184.0000 7.8316 - 23.8500 192.0000 8.0000 - 23.9000 205.0000 8.2664 - 23.9500 196.0000 8.0829 - 24.0000 193.0000 8.0208 - 24.0500 194.0000 6.9642 - 24.1000 195.0000 6.9821 - 24.1500 194.0000 6.9642 - 24.2000 201.0000 7.0887 - 24.2500 193.0000 6.9462 - 24.3000 176.0000 6.6332 - 24.3500 187.0000 6.8374 - 24.4000 188.0000 6.8557 - 24.4500 196.0000 7.0000 - 24.5000 192.0000 6.9282 - 24.5500 185.0000 6.8007 - 24.6000 195.0000 6.9821 - 24.6500 198.0000 7.0356 - 24.7000 205.0000 7.1589 - 24.7500 200.0000 7.0711 - 24.8000 208.0000 7.2111 - 24.8500 195.0000 6.9821 - 24.9000 187.0000 6.8374 - 24.9500 193.0000 6.9462 - 25.0000 197.0000 7.0178 - 25.0500 202.0000 7.1063 - 25.1000 193.0000 6.9462 - 25.1500 196.0000 7.0000 - 25.2000 202.0000 7.1063 - 25.2500 201.0000 7.0887 - 25.3000 197.0000 7.0178 - 25.3500 204.0000 7.1414 - 25.4000 208.0000 7.2111 - 25.4500 206.0000 7.1764 - 25.5000 212.0000 7.2801 - 25.5500 207.0000 7.1937 - 25.6000 207.0000 7.1937 - 25.6500 212.0000 7.2801 - 25.7000 216.0000 7.3485 - 25.7500 218.0000 7.3824 - 25.8000 221.0000 7.4330 - 25.8500 218.0000 7.3824 - 25.9000 207.0000 7.1937 - 25.9500 203.0000 7.1239 - 26.0000 204.0000 7.1414 - 26.0500 202.0000 7.1063 - 26.1000 206.0000 7.1764 - 26.1500 202.0000 7.1063 - 26.2000 202.0000 7.1063 - 26.2500 181.0000 6.7268 - 26.3000 193.0000 6.9462 - 26.3500 205.0000 7.1589 - 26.4000 198.0000 7.0356 - 26.4500 196.0000 7.0000 - 26.5000 197.0000 7.0178 - 26.5500 195.0000 6.9821 - 26.6000 201.0000 7.0887 - 26.6500 205.0000 7.1589 - 26.7000 195.0000 6.9821 - 26.7500 196.0000 7.0000 - 26.8000 196.0000 7.0000 - 26.8500 205.0000 7.1589 - 26.9000 198.0000 7.0356 - 26.9500 200.0000 7.0711 - 27.0000 199.0000 7.0534 - 27.0500 180.0000 6.7082 - 27.1000 187.0000 6.8374 - 27.1500 193.0000 6.9462 - 27.2000 197.0000 7.0178 - 27.2500 197.0000 7.0178 - 27.3000 196.0000 7.0000 - 27.3500 194.0000 6.9642 - 27.4000 197.0000 7.0178 - 27.4500 204.0000 7.1414 - 27.5000 201.0000 7.0887 - 27.5500 187.0000 6.8374 - 27.6000 191.0000 6.9101 - 27.6500 205.0000 7.1589 - 27.7000 200.0000 7.0711 - 27.7500 198.0000 7.0356 - 27.8000 200.0000 7.0711 - 27.8500 204.0000 7.1414 - 27.9000 196.0000 7.0000 - 27.9500 195.0000 6.9821 - 28.0000 194.0000 6.9642 - 28.0500 200.0000 7.0711 - 28.1000 198.0000 7.0356 - 28.1500 201.0000 7.0887 - 28.2000 208.0000 7.2111 - 28.2500 205.0000 7.1589 - 28.3000 211.0000 7.2629 - 28.3500 211.0000 7.2629 - 28.4000 220.0000 7.4162 - 28.4500 220.0000 7.4162 - 28.5000 212.0000 7.2801 - 28.5500 208.0000 7.2111 - 28.6000 214.0000 7.3144 - 28.6500 226.0000 7.5166 - 28.7000 235.0000 7.6649 - 28.7500 233.0000 7.6322 - 28.8000 237.0000 7.6974 - 28.8500 242.0000 7.7782 - 28.9000 242.0000 7.7782 - 28.9500 245.0000 7.8262 - 29.0000 239.0000 7.7298 - 29.0500 226.0000 7.5166 - 29.1000 232.0000 7.6158 - 29.1500 238.0000 7.7136 - 29.2000 226.0000 7.5166 - 29.2500 218.0000 7.3824 - 29.3000 218.0000 7.3824 - 29.3500 214.0000 7.3144 - 29.4000 205.0000 7.1589 - 29.4500 200.0000 7.0711 - 29.5000 193.0000 6.9462 - 29.5500 195.0000 6.9821 - 29.6000 196.0000 7.0000 - 29.6500 195.0000 6.9821 - 29.7000 207.0000 7.1937 - 29.7500 215.0000 7.3314 - 29.8000 207.0000 7.1937 - 29.8500 218.0000 7.3824 - 29.9000 218.0000 7.3824 - 29.9500 220.0000 7.4162 - 30.0000 220.0000 7.4162 - 30.0500 229.0000 6.7676 - 30.1000 236.0000 6.8702 - 30.1500 254.0000 7.1274 - 30.2000 264.0000 7.2664 - 30.2500 280.0000 7.4833 - 30.3000 289.0000 7.6026 - 30.3500 289.0000 7.6026 - 30.4000 303.0000 7.7846 - 30.4500 302.0000 7.7717 - 30.5000 297.0000 7.7071 - 30.5500 281.0000 7.4967 - 30.6000 278.0000 7.4565 - 30.6500 280.0000 7.4833 - 30.7000 265.0000 7.2801 - 30.7500 258.0000 7.1833 - 30.8000 243.0000 6.9714 - 30.8500 240.0000 6.9282 - 30.9000 232.0000 6.8118 - 30.9500 231.0000 6.7971 - 31.0000 233.0000 6.8264 - 31.0500 246.0000 7.0143 - 31.1000 248.0000 7.0427 - 31.1500 249.0000 7.0569 - 31.2000 256.0000 7.1554 - 31.2500 272.0000 7.3756 - 31.3000 289.0000 7.6026 - 31.3500 311.0000 7.8867 - 31.4000 340.0000 8.2462 - 31.4500 363.0000 8.5206 - 31.5000 393.0000 8.8657 - 31.5500 440.0000 9.3808 - 31.6000 474.0000 9.7365 - 31.6500 482.0000 9.8183 - 31.7000 492.0000 9.9197 - 31.7500 508.0000 10.0797 - 31.8000 494.0000 9.9398 - 31.8500 475.0000 9.7468 - 31.9000 439.0000 9.3702 - 31.9500 413.0000 9.0885 - 32.0000 368.0000 8.5790 - 32.0500 331.0000 8.1363 - 32.1000 299.0000 7.7330 - 32.1500 286.0000 7.5631 - 32.2000 262.0000 7.2388 - 32.2500 241.0000 6.9426 - 32.3000 238.0000 6.8993 - 32.3500 252.0000 7.0993 - 32.4000 267.0000 7.3075 - 32.4500 276.0000 7.4297 - 32.5000 278.0000 7.4565 - 32.5500 300.0000 7.7460 - 32.6000 325.0000 8.0623 - 32.6500 336.0000 8.1976 - 32.7000 359.0000 8.4735 - 32.7500 405.0000 9.0000 - 32.8000 458.0000 9.5708 - 32.8500 501.0000 10.0100 - 32.9000 564.0000 10.6207 - 32.9500 640.0000 11.3137 - 33.0000 719.0000 11.9917 - 33.0500 783.0000 12.5140 - 33.1000 837.0000 12.9383 - 33.1500 851.0000 13.0461 - 33.2000 866.0000 13.1605 - 33.2500 828.0000 12.8686 - 33.3000 763.0000 12.3531 - 33.3500 697.0000 11.8068 - 33.4000 634.0000 11.2606 - 33.4500 541.0000 10.4019 - 33.5000 465.0000 9.6437 - 33.5500 391.0000 8.8431 - 33.6000 351.0000 8.3785 - 33.6500 301.0000 7.7589 - 33.7000 284.0000 7.5366 - 33.7500 260.0000 7.2111 - 33.8000 248.0000 7.0427 - 33.8500 257.0000 7.1694 - 33.9000 242.0000 6.9570 - 33.9500 246.0000 7.0143 - 34.0000 263.0000 7.2526 - 34.0500 271.0000 7.3621 - 34.1000 281.0000 7.4967 - 34.1500 302.0000 7.7717 - 34.2000 309.0000 7.8613 - 34.2500 335.0000 8.1854 - 34.3000 342.0000 8.2704 - 34.3500 345.0000 8.3066 - 34.4000 356.0000 8.4380 - 34.4500 351.0000 8.3785 - 34.5000 341.0000 8.2583 - 34.5500 334.0000 8.1731 - 34.6000 321.0000 8.0125 - 34.6500 286.0000 7.5631 - 34.7000 268.0000 7.3212 - 34.7500 256.0000 7.1554 - 34.8000 238.0000 6.8993 - 34.8500 229.0000 6.7676 - 34.9000 218.0000 6.6030 - 34.9500 223.0000 6.6783 - 35.0000 216.0000 6.5727 - 35.0500 203.0000 6.3718 - 35.1000 203.0000 6.3718 - 35.1500 194.0000 6.2290 - 35.2000 205.0000 6.4031 - 35.2500 196.0000 6.2610 - 35.3000 193.0000 6.2129 - 35.3500 206.0000 6.4187 - 35.4000 201.0000 6.3403 - 35.4500 201.0000 6.3403 - 35.5000 201.0000 6.3403 - 35.5500 200.0000 6.3246 - 35.6000 194.0000 6.2290 - 35.6500 196.0000 6.2610 - 35.7000 203.0000 6.3718 - 35.7500 195.0000 6.2450 - 35.8000 196.0000 6.2610 - 35.8500 211.0000 6.4962 - 35.9000 216.0000 6.5727 - 35.9500 207.0000 6.4343 - 36.0000 215.0000 6.5574 - 36.0500 221.0000 6.6483 - 36.1000 237.0000 6.2849 - 36.1500 248.0000 6.4291 - 36.2000 261.0000 6.5955 - 36.2500 279.0000 6.8191 - 36.3000 319.0000 7.2915 - 36.3500 337.0000 7.4944 - 36.4000 364.0000 7.7889 - 36.4500 423.0000 8.3964 - 36.5000 489.0000 9.0277 - 36.5500 557.0000 9.6350 - 36.6000 630.0000 10.2470 - 36.6500 729.0000 11.0227 - 36.7000 822.0000 11.7047 - 36.7500 943.0000 12.5366 - 36.8000 1059.0000 13.2853 - 36.8500 1196.0000 14.1185 - 36.9000 1235.0000 14.3469 - 36.9500 1220.0000 14.2595 - 37.0000 1209.0000 14.1951 - 37.0500 1128.0000 13.7113 - 37.1000 1001.0000 12.9164 - 37.1500 864.0000 12.0000 - 37.2000 729.0000 11.0227 - 37.2500 601.0000 10.0083 - 37.3000 496.0000 9.0921 - 37.3500 418.0000 8.3467 - 37.4000 355.0000 7.6920 - 37.4500 313.0000 7.2226 - 37.5000 263.0000 6.6207 - 37.5500 246.0000 6.4031 - 37.6000 226.0000 6.1373 - 37.6500 214.0000 5.9722 - 37.7000 222.0000 6.0828 - 37.7500 222.0000 6.0828 - 37.8000 211.0000 5.9301 - 37.8500 211.0000 5.9301 - 37.9000 202.0000 5.8023 - 37.9500 198.0000 5.7446 - 38.0000 192.0000 5.6569 - 38.0500 193.0000 5.6716 - 38.1000 196.0000 5.7155 - 38.1500 201.0000 5.7879 - 38.2000 203.0000 5.8166 - 38.2500 203.0000 5.8166 - 38.3000 201.0000 5.7879 - 38.3500 198.0000 5.7446 - 38.4000 196.0000 5.7155 - 38.4500 206.0000 5.8595 - 38.5000 210.0000 5.9161 - 38.5500 197.0000 5.7300 - 38.6000 204.0000 5.8310 - 38.6500 200.0000 5.7735 - 38.7000 205.0000 5.8452 - 38.7500 196.0000 5.7155 - 38.8000 195.0000 5.7009 - 38.8500 205.0000 5.8452 - 38.9000 204.0000 5.8310 - 38.9500 200.0000 5.7735 - 39.0000 203.0000 5.8166 - 39.0500 208.0000 5.8878 - 39.1000 207.0000 5.8737 - 39.1500 202.0000 5.8023 - 39.2000 203.0000 5.8166 - 39.2500 198.0000 5.7446 - 39.3000 204.0000 5.8310 - 39.3500 210.0000 5.9161 - 39.4000 216.0000 6.0000 - 39.4500 210.0000 5.9161 - 39.5000 229.0000 6.1779 - 39.5500 239.0000 6.3114 - 39.6000 247.0000 6.4161 - 39.6500 278.0000 6.8069 - 39.7000 302.0000 7.0946 - 39.7500 324.0000 7.3485 - 39.8000 371.0000 7.8634 - 39.8500 420.0000 8.3666 - 39.9000 465.0000 8.8034 - 39.9500 538.0000 9.4692 - 40.0000 630.0000 10.2470 - 40.0500 739.0000 11.0980 - 40.1000 851.0000 11.9094 - 40.1500 976.0000 12.7541 - 40.2000 1076.0000 13.3915 - 40.2500 1161.0000 13.9104 - 40.3000 1222.0000 14.2712 - 40.3500 1227.0000 14.3003 - 40.4000 1187.0000 14.0653 - 40.4500 1096.0000 13.5154 - 40.5000 964.0000 12.6754 - 40.5500 833.0000 11.7828 - 40.6000 708.0000 10.8628 - 40.6500 587.0000 9.8911 - 40.7000 512.0000 9.2376 - 40.7500 436.0000 8.5245 - 40.8000 391.0000 8.0726 - 40.8500 384.0000 8.0000 - 40.9000 370.0000 7.8528 - 40.9500 391.0000 8.0726 - 41.0000 419.0000 8.3566 - 41.0500 448.0000 8.6410 - 41.1000 490.0000 9.0370 - 41.1500 567.0000 9.7211 - 41.2000 626.0000 10.2144 - 41.2500 687.0000 10.7005 - 41.3000 735.0000 11.0680 - 41.3500 780.0000 11.4018 - 41.4000 782.0000 11.4164 - 41.4500 745.0000 11.1430 - 41.5000 721.0000 10.9621 - 41.5500 662.0000 10.5040 - 41.6000 595.0000 9.9582 - 41.6500 527.0000 9.3719 - 41.7000 446.0000 8.6217 - 41.7500 393.0000 8.0932 - 41.8000 335.0000 7.4722 - 41.8500 301.0000 7.0828 - 41.9000 276.0000 6.7823 - 41.9500 251.0000 5.9881 - 42.0000 242.0000 5.8797 - 42.0500 229.0000 5.7196 - 42.1000 209.0000 5.4642 - 42.1500 215.0000 5.5420 - 42.2000 218.0000 5.5806 - 42.2500 214.0000 5.5291 - 42.3000 209.0000 5.4642 - 42.3500 208.0000 5.4511 - 42.4000 212.0000 5.5032 - 42.4500 210.0000 5.4772 - 42.5000 209.0000 5.4642 - 42.5500 210.0000 5.4772 - 42.6000 205.0000 5.4116 - 42.6500 209.0000 5.4642 - 42.7000 211.0000 5.4903 - 42.7500 211.0000 5.4903 - 42.8000 216.0000 5.5549 - 42.8500 205.0000 5.4116 - 42.9000 204.0000 5.3984 - 42.9500 202.0000 5.3719 - 43.0000 201.0000 5.3586 - 43.0500 200.0000 5.3452 - 43.1000 207.0000 5.4380 - 43.1500 205.0000 5.4116 - 43.2000 202.0000 5.3719 - 43.2500 209.0000 5.4642 - 43.3000 202.0000 5.3719 - 43.3500 203.0000 5.3852 - 43.4000 206.0000 5.4248 - 43.4500 206.0000 5.4248 - 43.5000 200.0000 5.3452 - 43.5500 194.0000 5.2644 - 43.6000 199.0000 5.3318 - 43.6500 204.0000 5.3984 - 43.7000 205.0000 5.4116 - 43.7500 210.0000 5.4772 - 43.8000 207.0000 5.4380 - 43.8500 205.0000 5.4116 - 43.9000 210.0000 5.4772 - 43.9500 204.0000 5.3984 - 44.0000 203.0000 5.3852 - 44.0500 202.0000 5.3719 - 44.1000 205.0000 5.4116 - 44.1500 201.0000 5.3586 - 44.2000 201.0000 5.3586 - 44.2500 207.0000 5.4380 - 44.3000 197.0000 5.3050 - 44.3500 198.0000 5.3184 - 44.4000 203.0000 5.3852 - 44.4500 209.0000 5.4642 - 44.5000 209.0000 5.4642 - 44.5500 208.0000 5.4511 - 44.6000 204.0000 5.3984 - 44.6500 209.0000 5.4642 - 44.7000 199.0000 5.3318 - 44.7500 204.0000 5.3984 - 44.8000 206.0000 5.4248 - 44.8500 201.0000 5.3586 - 44.9000 205.0000 5.4116 - 44.9500 202.0000 5.3719 - 45.0000 204.0000 5.3984 - 45.0500 198.0000 5.3184 - 45.1000 198.0000 5.3184 - 45.1500 213.0000 5.5162 - 45.2000 210.0000 5.4772 - 45.2500 212.0000 5.5032 - 45.3000 214.0000 5.5291 - 45.3500 215.0000 5.5420 - 45.4000 217.0000 5.5678 - 45.4500 210.0000 5.4772 - 45.5000 214.0000 5.5291 - 45.5500 215.0000 5.5420 - 45.6000 215.0000 5.5420 - 45.6500 215.0000 5.5420 - 45.7000 217.0000 5.5678 - 45.7500 222.0000 5.6315 - 45.8000 231.0000 5.7446 - 45.8500 247.0000 5.9402 - 45.9000 252.0000 6.0000 - 45.9500 273.0000 6.2450 - 46.0000 304.0000 6.5900 - 46.0500 332.0000 6.8868 - 46.1000 366.0000 7.2309 - 46.1500 408.0000 7.6345 - 46.2000 463.0000 8.1328 - 46.2500 532.0000 8.7178 - 46.3000 619.0000 9.4036 - 46.3500 734.0000 10.2400 - 46.4000 828.0000 10.8759 - 46.4500 944.0000 11.6128 - 46.5000 1003.0000 11.9702 - 46.5500 1055.0000 12.2766 - 46.6000 1070.0000 12.3635 - 46.6500 1018.0000 12.0594 - 46.7000 944.0000 11.6128 - 46.7500 833.0000 10.9087 - 46.8000 725.0000 10.1770 - 46.8500 633.0000 9.5094 - 46.9000 507.0000 8.5105 - 46.9500 445.0000 7.9732 - 47.0000 379.0000 7.3582 - 47.0500 347.0000 7.0407 - 47.1000 316.0000 6.7188 - 47.1500 282.0000 6.3471 - 47.2000 267.0000 6.1760 - 47.2500 269.0000 6.1991 - 47.3000 281.0000 6.3358 - 47.3500 288.0000 6.4143 - 47.4000 300.0000 6.5465 - 47.4500 327.0000 6.8348 - 47.5000 346.0000 7.0305 - 47.5500 380.0000 7.3679 - 47.6000 400.0000 7.5593 - 47.6500 430.0000 7.8376 - 47.7000 453.0000 8.0445 - 47.7500 459.0000 8.0976 - 47.8000 451.0000 8.0267 - 47.8500 427.0000 7.8102 - 47.9000 402.0000 7.5782 - 47.9500 375.0000 7.3193 - 48.0000 344.0000 7.0102 - 48.0500 309.0000 6.6440 - 48.1000 277.0000 6.2906 - 48.1500 265.0000 5.7554 - 48.2000 246.0000 5.5453 - 48.2500 246.0000 5.5453 - 48.3000 230.0000 5.3619 - 48.3500 223.0000 5.2797 - 48.4000 227.0000 5.3268 - 48.4500 225.0000 5.3033 - 48.5000 217.0000 5.2082 - 48.5500 217.0000 5.2082 - 48.6000 223.0000 5.2797 - 48.6500 223.0000 5.2797 - 48.7000 220.0000 5.2440 - 48.7500 223.0000 5.2797 - 48.8000 226.0000 5.3151 - 48.8500 248.0000 5.5678 - 48.9000 258.0000 5.6789 - 48.9500 274.0000 5.8523 - 49.0000 297.0000 6.0930 - 49.0500 324.0000 6.3640 - 49.1000 355.0000 6.6615 - 49.1500 393.0000 7.0089 - 49.2000 458.0000 7.5664 - 49.2500 528.0000 8.1240 - 49.3000 589.0000 8.5805 - 49.3500 688.0000 9.2736 - 49.4000 781.0000 9.8805 - 49.4500 840.0000 10.2470 - 49.5000 876.0000 10.4642 - 49.5500 874.0000 10.4523 - 49.6000 832.0000 10.1980 - 49.6500 765.0000 9.7788 - 49.7000 682.0000 9.2331 - 49.7500 613.0000 8.7536 - 49.8000 524.0000 8.0932 - 49.8500 455.0000 7.5416 - 49.9000 408.0000 7.1414 - 49.9500 384.0000 6.9282 - 50.0000 366.0000 6.7639 - 50.0500 375.0000 6.8465 - 50.1000 392.0000 7.0000 - 50.1500 426.0000 7.2973 - 50.2000 470.0000 7.6649 - 50.2500 519.0000 8.0545 - 50.3000 588.0000 8.5732 - 50.3500 639.0000 8.9373 - 50.4000 681.0000 9.2263 - 50.4500 704.0000 9.3808 - 50.5000 693.0000 9.3073 - 50.5500 650.0000 9.0139 - 50.6000 600.0000 8.6603 - 50.6500 540.0000 8.2158 - 50.7000 478.0000 7.7298 - 50.7500 412.0000 7.1764 - 50.8000 376.0000 6.8557 - 50.8500 345.0000 6.5670 - 50.9000 330.0000 6.4226 - 50.9500 337.0000 6.4904 - 51.0000 350.0000 6.6144 - 51.0500 383.0000 6.9192 - 51.1000 426.0000 7.2973 - 51.1500 493.0000 7.8502 - 51.2000 571.0000 8.4484 - 51.2500 676.0000 9.1924 - 51.3000 803.0000 10.0187 - 51.3500 920.0000 10.7238 - 51.4000 1071.0000 11.5704 - 51.4500 1183.0000 12.1604 - 51.5000 1247.0000 12.4850 - 51.5500 1255.0000 12.5250 - 51.6000 1251.0000 12.5050 - 51.6500 1183.0000 12.1604 - 51.7000 1068.0000 11.5542 - 51.7500 945.0000 10.8685 - 51.8000 861.0000 10.3742 - 51.8500 811.0000 10.0685 - 51.9000 813.0000 10.0809 - 51.9500 872.0000 10.4403 - 52.0000 969.0000 11.0057 - 52.0500 1120.0000 11.8322 - 52.1000 1309.0000 12.7916 - 52.1500 1527.0000 13.8158 - 52.2000 1706.0000 14.6031 - 52.2500 1856.0000 15.2315 - 52.3000 1888.0000 15.3623 - 52.3500 1837.0000 15.1534 - 52.4000 1713.0000 14.6330 - 52.4500 1500.0000 13.6931 - 52.5000 1289.0000 12.6935 - 52.5500 1103.0000 11.7420 - 52.6000 904.0000 10.6301 - 52.6500 749.0000 9.6760 - 52.7000 627.0000 8.8530 - 52.7500 568.0000 8.4261 - 52.8000 551.0000 8.2991 - 52.8500 560.0000 8.3666 - 52.9000 586.0000 8.5586 - 52.9500 634.0000 8.9022 - 53.0000 691.0000 9.2938 - 53.0500 751.0000 9.6889 - 53.1000 799.0000 9.9937 - 53.1500 792.0000 9.9499 - 53.2000 820.0000 10.1242 - 53.2500 774.0000 9.8362 - 53.3000 736.0000 9.5917 - 53.3500 680.0000 9.2195 - 53.4000 627.0000 8.8530 - 53.4500 562.0000 8.3815 - 53.5000 514.0000 8.0156 - 53.5500 459.0000 7.5746 - 53.6000 424.0000 7.2801 - 53.6500 362.0000 6.7268 - 53.7000 333.0000 6.4517 - 53.7500 318.0000 6.3048 - 53.8000 300.0000 6.1237 - 53.8500 287.0000 5.9896 - 53.9000 265.0000 5.7554 - 53.9500 266.0000 5.7663 - 54.0000 262.0000 5.7228 - 54.0500 263.0000 5.4058 - 54.1000 255.0000 5.3229 - 54.1500 270.0000 5.4772 - 54.2000 278.0000 5.5578 - 54.2500 289.0000 5.6667 - 54.3000 317.0000 5.9348 - 54.3500 343.0000 6.1734 - 54.4000 400.0000 6.6667 - 54.4500 468.0000 7.2111 - 54.5000 561.0000 7.8951 - 54.5500 695.0000 8.7876 - 54.6000 873.0000 9.8489 - 54.6500 1100.0000 11.0554 - 54.7000 1372.0000 12.3468 - 54.7500 1660.0000 13.5810 - 54.8000 1954.0000 14.7347 - 54.8500 2224.0000 15.7198 - 54.9000 2400.0000 16.3299 - 54.9500 2459.0000 16.5294 - 55.0000 2435.0000 16.4486 - 55.0500 2245.0000 15.7938 - 55.1000 1986.0000 14.8549 - 55.1500 1671.0000 13.6260 - 55.2000 1358.0000 12.2837 - 55.2500 1086.0000 10.9848 - 55.3000 868.0000 9.8206 - 55.3500 682.0000 8.7050 - 55.4000 578.0000 8.0139 - 55.4500 521.0000 7.6085 - 55.5000 512.0000 7.5425 - 55.5500 537.0000 7.7244 - 55.6000 600.0000 8.1650 - 55.6500 704.0000 8.8443 - 55.7000 855.0000 9.7468 - 55.7500 1032.0000 10.7083 - 55.8000 1232.0000 11.7000 - 55.8500 1466.0000 12.7628 - 55.9000 1693.0000 13.7154 - 55.9500 1866.0000 14.3991 - 56.0000 1966.0000 14.7799 - 56.0500 2024.0000 14.9963 - 56.1000 2016.0000 14.9666 - 56.1500 1846.0000 14.3217 - 56.2000 1667.0000 13.6096 - 56.2500 1429.0000 12.6007 - 56.3000 1179.0000 11.4455 - 56.3500 950.0000 10.2740 - 56.4000 763.0000 9.2075 - 56.4500 599.0000 8.1582 - 56.5000 484.0000 7.3333 - 56.5500 404.0000 6.6999 - 56.6000 351.0000 6.2450 - 56.6500 304.0000 5.8119 - 56.7000 284.0000 5.6174 - 56.7500 273.0000 5.5076 - 56.8000 259.0000 5.3645 - 56.8500 251.0000 5.2810 - 56.9000 251.0000 5.2810 - 56.9500 252.0000 5.2915 - 57.0000 245.0000 5.2175 - 57.0500 259.0000 5.3645 - 57.1000 250.0000 5.2705 - 57.1500 253.0000 5.3020 - 57.2000 256.0000 5.3333 - 57.2500 264.0000 5.4160 - 57.3000 285.0000 5.6273 - 57.3500 301.0000 5.7831 - 57.4000 346.0000 6.2004 - 57.4500 390.0000 6.5828 - 57.5000 458.0000 7.1336 - 57.5500 528.0000 7.6594 - 57.6000 624.0000 8.3267 - 57.6500 733.0000 9.0247 - 57.7000 829.0000 9.5975 - 57.7500 916.0000 10.0885 - 57.8000 988.0000 10.4775 - 57.8500 994.0000 10.5093 - 57.9000 929.0000 10.1598 - 57.9500 843.0000 9.6782 - 58.0000 742.0000 9.0799 - 58.0500 638.0000 8.4196 - 58.1000 527.0000 7.6522 - 58.1500 434.0000 6.9442 - 58.2000 377.0000 6.4722 - 58.2500 320.0000 5.9628 - 58.3000 282.0000 5.5976 - 58.3500 273.0000 5.5076 - 58.4000 256.0000 5.3333 - 58.4500 243.0000 5.1962 - 58.5000 240.0000 5.1640 - 58.5500 240.0000 5.1640 - 58.6000 230.0000 5.0553 - 58.6500 220.0000 4.9441 - 58.7000 230.0000 5.0553 - 58.7500 227.0000 5.0222 - 58.8000 224.0000 4.9889 - 58.8500 219.0000 4.9329 - 58.9000 227.0000 5.0222 - 58.9500 227.0000 5.0222 - 59.0000 224.0000 4.9889 - 59.0500 222.0000 4.9666 - 59.1000 223.0000 4.9777 - 59.1500 217.0000 4.9103 - 59.2000 213.0000 4.8648 - 59.2500 216.0000 4.8990 - 59.3000 219.0000 4.9329 - 59.3500 219.0000 4.9329 - 59.4000 218.0000 4.9216 - 59.4500 220.0000 4.9441 - 59.5000 220.0000 4.9441 - 59.5500 220.0000 4.9441 - 59.6000 223.0000 4.9777 - 59.6500 233.0000 5.0881 - 59.7000 237.0000 5.1316 - 59.7500 249.0000 5.2599 - 59.8000 258.0000 5.3541 - 59.8500 261.0000 5.3852 - 59.9000 283.0000 5.6075 - 59.9500 304.0000 5.8119 - 60.0000 324.0000 5.6921 - 60.0500 347.0000 5.8907 - 60.1000 353.0000 5.9414 - 60.1500 359.0000 5.9917 - 60.2000 363.0000 6.0249 - 60.2500 352.0000 5.9330 - 60.3000 341.0000 5.8395 - 60.3500 330.0000 5.7446 - 60.4000 308.0000 5.5498 - 60.4500 291.0000 5.3944 - 60.5000 271.0000 5.2058 - 60.5500 254.0000 5.0398 - 60.6000 245.0000 4.9497 - 60.6500 245.0000 4.9497 - 60.7000 239.0000 4.8888 - 60.7500 228.0000 4.7749 - 60.8000 217.0000 4.6583 - 60.8500 217.0000 4.6583 - 60.9000 218.0000 4.6690 - 60.9500 223.0000 4.7223 - 61.0000 207.0000 4.5497 - 61.0500 218.0000 4.6690 - 61.1000 222.0000 4.7117 - 61.1500 215.0000 4.6368 - 61.2000 210.0000 4.5826 - 61.2500 216.0000 4.6476 - 61.3000 213.0000 4.6152 - 61.3500 212.0000 4.6043 - 61.4000 215.0000 4.6368 - 61.4500 212.0000 4.6043 - 61.5000 214.0000 4.6260 - 61.5500 211.0000 4.5935 - 61.6000 214.0000 4.6260 - 61.6500 217.0000 4.6583 - 61.7000 205.0000 4.5277 - 61.7500 207.0000 4.5497 - 61.8000 213.0000 4.6152 - 61.8500 208.0000 4.5607 - 61.9000 211.0000 4.5935 - 61.9500 205.0000 4.5277 - 62.0000 214.0000 4.6260 - 62.0500 213.0000 4.6152 - 62.1000 212.0000 4.6043 - 62.1500 212.0000 4.6043 - 62.2000 213.0000 4.6152 - 62.2500 207.0000 4.5497 - 62.3000 203.0000 4.5056 - 62.3500 211.0000 4.5935 - 62.4000 211.0000 4.5935 - 62.4500 214.0000 4.6260 - 62.5000 214.0000 4.6260 - 62.5500 207.0000 4.5497 - 62.6000 203.0000 4.5056 - 62.6500 212.0000 4.6043 - 62.7000 212.0000 4.6043 - 62.7500 214.0000 4.6260 - 62.8000 213.0000 4.6152 - 62.8500 202.0000 4.4944 - 62.9000 210.0000 4.5826 - 62.9500 211.0000 4.5935 - 63.0000 211.0000 4.5935 - 63.0500 214.0000 4.6260 - 63.1000 221.0000 4.7011 - 63.1500 217.0000 4.6583 - 63.2000 212.0000 4.6043 - 63.2500 214.0000 4.6260 - 63.3000 219.0000 4.6797 - 63.3500 223.0000 4.7223 - 63.4000 225.0000 4.7434 - 63.4500 227.0000 4.7645 - 63.5000 235.0000 4.8477 - 63.5500 240.0000 4.8990 - 63.6000 243.0000 4.9295 - 63.6500 252.0000 5.0200 - 63.7000 249.0000 4.9900 - 63.7500 249.0000 4.9900 - 63.8000 255.0000 5.0498 - 63.8500 262.0000 5.1186 - 63.9000 282.0000 5.3104 - 63.9500 308.0000 5.5498 - 64.0000 351.0000 5.9245 - 64.0500 398.0000 6.3087 - 64.1000 470.0000 6.8557 - 64.1500 525.0000 7.2457 - 64.2000 596.0000 7.7201 - 64.2500 646.0000 8.0374 - 64.3000 681.0000 8.2523 - 64.3500 665.0000 8.1548 - 64.4000 615.0000 7.8422 - 64.4500 563.0000 7.5033 - 64.5000 484.0000 6.9570 - 64.5500 421.0000 6.4885 - 64.6000 364.0000 6.0332 - 64.6500 317.0000 5.6303 - 64.7000 289.0000 5.3759 - 64.7500 261.0000 5.1088 - 64.8000 245.0000 4.9497 - 64.8500 233.0000 4.8270 - 64.9000 228.0000 4.7749 - 64.9500 219.0000 4.6797 - 65.0000 219.0000 4.6797 - 65.0500 217.0000 4.6583 - 65.1000 216.0000 4.6476 - 65.1500 221.0000 4.7011 - 65.2000 215.0000 4.6368 - 65.2500 215.0000 4.6368 - 65.3000 210.0000 4.5826 - 65.3500 212.0000 4.6043 - 65.4000 212.0000 4.6043 - 65.4500 204.0000 4.5166 - 65.5000 209.0000 4.5717 - 65.5500 206.0000 4.5387 - 65.6000 216.0000 4.6476 - 65.6500 207.0000 4.5497 - 65.7000 214.0000 4.6260 - 65.7500 207.0000 4.5497 - 65.8000 209.0000 4.5717 - 65.8500 218.0000 4.6690 - 65.9000 215.0000 4.6368 - 65.9500 222.0000 4.7117 - 66.0000 226.0000 4.7539 - 66.0500 230.0000 4.7958 - 66.1000 239.0000 4.8888 - 66.1500 249.0000 4.9900 - 66.2000 263.0000 5.1284 - 66.2500 275.0000 5.2440 - 66.3000 292.0000 5.4037 - 66.3500 317.0000 5.6303 - 66.4000 323.0000 5.6833 - 66.4500 341.0000 5.8395 - 66.5000 350.0000 5.9161 - 66.5500 330.0000 5.7446 - 66.6000 320.0000 5.6569 - 66.6500 307.0000 5.5408 - 66.7000 284.0000 5.3292 - 66.7500 275.0000 5.2440 - 66.8000 265.0000 5.1478 - 66.8500 269.0000 5.1865 - 66.9000 275.0000 5.2440 - 66.9500 292.0000 5.4037 - 67.0000 311.0000 5.5767 - 67.0500 338.0000 5.8138 - 67.1000 387.0000 6.2209 - 67.1500 413.0000 6.4265 - 67.2000 463.0000 6.8044 - 67.2500 510.0000 7.1414 - 67.3000 534.0000 7.3075 - 67.3500 559.0000 7.4766 - 67.4000 539.0000 7.3417 - 67.4500 533.0000 7.3007 - 67.5000 500.0000 7.0711 - 67.5500 471.0000 6.8629 - 67.6000 455.0000 6.7454 - 67.6500 410.0000 6.4031 - 67.7000 373.0000 6.1074 - 67.7500 342.0000 5.8481 - 67.8000 307.0000 5.5408 - 67.8500 288.0000 5.3666 - 67.9000 286.0000 5.3479 - 67.9500 281.0000 5.3009 - 68.0000 292.0000 5.4037 - 68.0500 291.0000 5.3944 - 68.1000 312.0000 5.5857 - 68.1500 326.0000 5.7096 - 68.2000 336.0000 5.7966 - 68.2500 346.0000 5.8822 - 68.3000 341.0000 5.8395 - 68.3500 327.0000 5.7184 - 68.4000 305.0000 5.5227 - 68.4500 277.0000 5.2631 - 68.5000 267.0000 5.1672 - 68.5500 249.0000 4.9900 - 68.6000 229.0000 4.7854 - 68.6500 221.0000 4.7011 - 68.7000 220.0000 4.6904 - 68.7500 217.0000 4.6583 - 68.8000 211.0000 4.5935 - 68.8500 204.0000 4.5166 - 68.9000 203.0000 4.5056 - 68.9500 220.0000 4.6904 - 69.0000 217.0000 4.6583 - 69.0500 217.0000 4.6583 - 69.1000 214.0000 4.6260 - 69.1500 205.0000 4.5277 - 69.2000 205.0000 4.5277 - 69.2500 211.0000 4.5935 - 69.3000 206.0000 4.5387 - 69.3500 208.0000 4.5607 - 69.4000 201.0000 4.4833 - 69.4500 208.0000 4.5607 - 69.5000 214.0000 4.6260 - 69.5500 212.0000 4.6043 - 69.6000 206.0000 4.5387 - 69.6500 216.0000 4.6476 - 69.7000 219.0000 4.6797 - 69.7500 215.0000 4.6368 - 69.8000 217.0000 4.6583 - 69.8500 211.0000 4.5935 - 69.9000 214.0000 4.6260 - 69.9500 215.0000 4.6368 - 70.0000 224.0000 4.7329 - 70.0500 217.0000 4.6583 - 70.1000 215.0000 4.6368 - 70.1500 218.0000 4.6690 - 70.2000 218.0000 4.6690 - 70.2500 228.0000 4.7749 - 70.3000 227.0000 4.7645 - 70.3500 228.0000 4.7749 - 70.4000 225.0000 4.7434 - 70.4500 219.0000 4.6797 - 70.5000 216.0000 4.6476 - 70.5500 219.0000 4.6797 - 70.6000 218.0000 4.6690 - 70.6500 214.0000 4.6260 - 70.7000 212.0000 4.6043 - 70.7500 221.0000 4.7011 - 70.8000 214.0000 4.6260 - 70.8500 208.0000 4.5607 - 70.9000 204.0000 4.5166 - 70.9500 209.0000 4.5717 - 71.0000 209.0000 4.5717 - 71.0500 208.0000 4.5607 - 71.1000 212.0000 4.6043 - 71.1500 213.0000 4.6152 - 71.2000 218.0000 4.6690 - 71.2500 212.0000 4.6043 - 71.3000 205.0000 4.5277 - 71.3500 207.0000 4.5497 - 71.4000 204.0000 4.5166 - 71.4500 206.0000 4.5387 - 71.5000 211.0000 4.5935 - 71.5500 216.0000 4.6476 - 71.6000 214.0000 4.6260 - 71.6500 210.0000 4.5826 - 71.7000 219.0000 4.6797 - 71.7500 222.0000 4.7117 - 71.8000 224.0000 4.7329 - 71.8500 231.0000 4.8062 - 71.9000 227.0000 4.7645 - 71.9500 237.0000 4.8683 - 72.0000 235.0000 4.8477 - 72.0500 238.0000 4.8785 - 72.1000 245.0000 4.9497 - 72.1500 242.0000 4.9193 - 72.2000 248.0000 4.9800 - 72.2500 246.0000 4.9598 - 72.3000 243.0000 4.9295 - 72.3500 253.0000 5.0299 - 72.4000 259.0000 5.0892 - 72.4500 278.0000 5.2726 - 72.5000 281.0000 5.3009 - 72.5500 297.0000 5.4498 - 72.6000 310.0000 5.5678 - 72.6500 324.0000 5.6921 - 72.7000 322.0000 5.6745 - 72.7500 311.0000 5.5767 - 72.8000 295.0000 5.4314 - 72.8500 281.0000 5.3009 - 72.9000 259.0000 5.0892 - 72.9500 250.0000 5.0000 - 73.0000 239.0000 4.8888 - 73.0500 233.0000 4.8270 - 73.1000 227.0000 4.7645 - 73.1500 226.0000 4.7539 - 73.2000 223.0000 4.7223 - 73.2500 211.0000 4.5935 - 73.3000 209.0000 4.5717 - 73.3500 217.0000 4.6583 - 73.4000 214.0000 4.6260 - 73.4500 213.0000 4.6152 - 73.5000 217.0000 4.6583 - 73.5500 220.0000 4.6904 - 73.6000 210.0000 4.5826 - 73.6500 209.0000 4.5717 - 73.7000 215.0000 4.6368 - 73.7500 218.0000 4.6690 - 73.8000 215.0000 4.6368 - 73.8500 217.0000 4.6583 - 73.9000 221.0000 4.7011 - 73.9500 217.0000 4.6583 - 74.0000 219.0000 4.6797 - 74.0500 220.0000 4.6904 - 74.1000 228.0000 4.7749 - 74.1500 229.0000 4.7854 - 74.2000 230.0000 4.7958 - 74.2500 234.0000 4.8374 - 74.3000 251.0000 5.0100 - 74.3500 261.0000 5.1088 - 74.4000 288.0000 5.3666 - 74.4500 313.0000 5.5946 - 74.5000 362.0000 6.0166 - 74.5500 424.0000 6.5115 - 74.6000 524.0000 7.2388 - 74.6500 646.0000 8.0374 - 74.7000 781.0000 8.8374 - 74.7500 920.0000 9.5917 - 74.8000 1024.0000 10.1193 - 74.8500 1120.0000 10.5830 - 74.9000 1187.0000 10.8950 - 74.9500 1187.0000 10.8950 - 75.0000 1166.0000 10.7981 - 75.0500 1114.0000 10.5546 - 75.1000 1044.0000 10.2176 - 75.1500 991.0000 9.9549 - 75.2000 927.0000 9.6281 - 75.2500 823.0000 9.0719 - 75.3000 717.0000 8.4676 - 75.3500 619.0000 7.8677 - 75.4000 520.0000 7.2111 - 75.4500 421.0000 6.4885 - 75.5000 353.0000 5.9414 - 75.5500 308.0000 5.5498 - 75.6000 273.0000 5.2249 - 75.6500 256.0000 5.0596 - 75.7000 245.0000 4.9497 - 75.7500 234.0000 4.8374 - 75.8000 230.0000 4.7958 - 75.8500 224.0000 4.7329 - 75.9000 232.0000 4.8166 - 75.9500 226.0000 4.7539 - 76.0000 222.0000 4.7117 - 76.0500 222.0000 4.7117 - 76.1000 227.0000 4.7645 - 76.1500 225.0000 4.7434 - 76.2000 226.0000 4.7539 - 76.2500 227.0000 4.7645 - 76.3000 229.0000 4.7854 - 76.3500 235.0000 4.8477 - 76.4000 233.0000 4.8270 - 76.4500 243.0000 4.9295 - 76.5000 238.0000 4.8785 - 76.5500 237.0000 4.8683 - 76.6000 236.0000 4.8580 - 76.6500 232.0000 4.8166 - 76.7000 231.0000 4.8062 - 76.7500 227.0000 4.7645 - 76.8000 225.0000 4.7434 - 76.8500 220.0000 4.6904 - 76.9000 218.0000 4.6690 - 76.9500 215.0000 4.6368 - 77.0000 219.0000 4.6797 - 77.0500 224.0000 4.7329 - 77.1000 225.0000 4.7434 - 77.1500 222.0000 4.7117 - 77.2000 231.0000 4.8062 - 77.2500 243.0000 4.9295 - 77.3000 250.0000 5.0000 - 77.3500 269.0000 5.1865 - 77.4000 286.0000 5.3479 - 77.4500 310.0000 5.5678 - 77.5000 325.0000 5.7009 - 77.5500 332.0000 5.7619 - 77.6000 337.0000 5.8052 - 77.6500 329.0000 5.7359 - 77.7000 303.0000 5.5045 - 77.7500 278.0000 5.2726 - 77.8000 268.0000 5.1769 - 77.8500 252.0000 5.0200 - 77.9000 236.0000 4.8580 - 77.9500 228.0000 4.7749 - 78.0000 219.0000 4.6797 - 78.0500 225.0000 4.7434 - 78.1000 222.0000 4.7117 - 78.1500 214.0000 4.6260 - 78.2000 228.0000 4.7749 - 78.2500 221.0000 4.7011 - 78.3000 217.0000 4.6583 - 78.3500 221.0000 4.7011 - 78.4000 222.0000 4.7117 - 78.4500 226.0000 4.7539 - 78.5000 237.0000 4.8683 - 78.5500 246.0000 4.9598 - 78.6000 255.0000 5.0498 - 78.6500 269.0000 5.1865 - 78.7000 284.0000 5.3292 - 78.7500 302.0000 5.4955 - 78.8000 313.0000 5.5946 - 78.8500 327.0000 5.7184 - 78.9000 321.0000 5.6657 - 78.9500 333.0000 5.7706 - 79.0000 331.0000 5.7533 - 79.0500 332.0000 5.7619 - 79.1000 358.0000 5.9833 - 79.1500 402.0000 6.3403 - 79.2000 460.0000 6.7823 - 79.2500 557.0000 7.4632 - 79.3000 660.0000 8.1240 - 79.3500 769.0000 8.7693 - 79.4000 859.0000 9.2682 - 79.4500 934.0000 9.6644 - 79.5000 955.0000 9.7724 - 79.5500 921.0000 9.5969 - 79.6000 824.0000 9.0774 - 79.6500 694.0000 8.3307 - 79.7000 578.0000 7.6026 - 79.7500 474.0000 6.8848 - 79.8000 402.0000 6.3403 - 79.8500 344.0000 5.8652 - 79.9000 306.0000 5.5317 - 79.9500 300.0000 5.4772 - 80.0000 292.0000 5.4037 - 80.0500 292.0000 5.4037 - 80.1000 302.0000 5.4955 - 80.1500 304.0000 5.5136 - 80.2000 306.0000 5.5317 - 80.2500 305.0000 5.5227 - 80.3000 303.0000 5.5045 - 80.3500 299.0000 5.4681 - 80.4000 278.0000 5.2726 - 80.4500 259.0000 5.0892 - 80.5000 257.0000 5.0695 - 80.5500 245.0000 4.9497 - 80.6000 237.0000 4.8683 - 80.6500 240.0000 4.8990 - 80.7000 233.0000 4.8270 - 80.7500 232.0000 4.8166 - 80.8000 235.0000 4.8477 - 80.8500 241.0000 4.9092 - 80.9000 257.0000 5.0695 - 80.9500 274.0000 5.2345 - 81.0000 292.0000 5.4037 - 81.0500 309.0000 5.5588 - 81.1000 333.0000 5.7706 - 81.1500 360.0000 6.0000 - 81.2000 381.0000 6.1725 - 81.2500 387.0000 6.2209 - 81.3000 387.0000 6.2209 - 81.3500 386.0000 6.2129 - 81.4000 382.0000 6.1806 - 81.4500 368.0000 6.0663 - 81.5000 363.0000 6.0249 - 81.5500 352.0000 5.9330 - 81.6000 337.0000 5.8052 - 81.6500 321.0000 5.6657 - 81.7000 297.0000 5.4498 - 81.7500 281.0000 5.3009 - 81.8000 265.0000 5.1478 - 81.8500 255.0000 5.0498 - 81.9000 251.0000 5.0100 - 81.9500 237.0000 4.8683 - 82.0000 238.0000 4.8785 - 82.0500 237.0000 4.8683 - 82.1000 228.0000 4.7749 - 82.1500 240.0000 4.8990 - 82.2000 234.0000 4.8374 - 82.2500 226.0000 4.7539 - 82.3000 229.0000 4.7854 - 82.3500 228.0000 4.7749 - 82.4000 233.0000 4.8270 - 82.4500 243.0000 4.9295 - 82.5000 241.0000 4.9092 - 82.5500 257.0000 5.0695 - 82.6000 279.0000 5.2820 - 82.6500 305.0000 5.5227 - 82.7000 345.0000 5.8737 - 82.7500 410.0000 6.4031 - 82.8000 455.0000 6.7454 - 82.8500 545.0000 7.3824 - 82.9000 622.0000 7.8867 - 82.9500 673.0000 8.2037 - 83.0000 725.0000 8.5147 - 83.0500 717.0000 8.4676 - 83.1000 661.0000 8.1302 - 83.1500 592.0000 7.6942 - 83.2000 518.0000 7.1972 - 83.2500 443.0000 6.6558 - 83.3000 371.0000 6.0910 - 83.3500 336.0000 5.7966 - 83.4000 290.0000 5.3852 - 83.4500 265.0000 5.1478 - 83.5000 252.0000 5.0200 - 83.5500 250.0000 5.0000 - 83.6000 244.0000 4.9396 - 83.6500 242.0000 4.9193 - 83.7000 241.0000 4.9092 - 83.7500 243.0000 4.9295 - 83.8000 248.0000 4.9800 - 83.8500 253.0000 5.0299 - 83.9000 252.0000 5.0200 - 83.9500 264.0000 5.1381 - 84.0000 266.0000 5.1575 - 84.0500 282.0000 5.3104 - 84.1000 291.0000 5.3944 - 84.1500 313.0000 5.5946 - 84.2000 346.0000 5.8822 - 84.2500 374.0000 6.1156 - 84.3000 415.0000 6.4420 - 84.3500 430.0000 6.5574 - 84.4000 433.0000 6.5803 - 84.4500 430.0000 6.5574 - 84.5000 406.0000 6.3718 - 84.5500 384.0000 6.1968 - 84.6000 349.0000 5.9076 - 84.6500 318.0000 5.6391 - 84.7000 307.0000 5.5408 - 84.7500 298.0000 5.4589 - 84.8000 296.0000 5.4406 - 84.8500 304.0000 5.5136 - 84.9000 313.0000 5.5946 - 84.9500 328.0000 5.7271 - 85.0000 346.0000 5.8822 - 85.0500 341.0000 5.8395 - 85.1000 335.0000 5.7879 - 85.1500 324.0000 5.6921 - 85.2000 336.0000 5.7966 - 85.2500 341.0000 5.8395 - 85.3000 341.0000 5.8395 - 85.3500 370.0000 6.0828 - 85.4000 414.0000 6.4343 - 85.4500 442.0000 6.6483 - 85.5000 490.0000 7.0000 - 85.5500 520.0000 7.2111 - 85.6000 532.0000 7.2938 - 85.6500 548.0000 7.4027 - 85.7000 561.0000 7.4900 - 85.7500 567.0000 7.5299 - 85.8000 585.0000 7.6485 - 85.8500 584.0000 7.6420 - 85.9000 558.0000 7.4699 - 85.9500 527.0000 7.2595 - 86.0000 481.0000 6.9354 - 86.0500 424.0000 6.5115 - 86.1000 370.0000 6.0828 - 86.1500 333.0000 5.7706 - 86.2000 312.0000 5.5857 - 86.2500 301.0000 5.4863 - 86.3000 307.0000 5.5408 - 86.3500 314.0000 5.6036 - 86.4000 340.0000 5.8310 - 86.4500 379.0000 6.1563 - 86.5000 427.0000 6.5345 - 86.5500 467.0000 6.8337 - 86.6000 535.0000 7.3144 - 86.6500 584.0000 7.6420 - 86.7000 602.0000 7.7589 - 86.7500 580.0000 7.6158 - 86.8000 532.0000 7.2938 - 86.8500 481.0000 6.9354 - 86.9000 426.0000 6.5269 - 86.9500 379.0000 6.1563 - 87.0000 329.0000 5.7359 - 87.0500 303.0000 5.5045 - 87.1000 288.0000 5.3666 - 87.1500 271.0000 5.2058 - 87.2000 269.0000 5.1865 - 87.2500 267.0000 5.1672 - 87.3000 263.0000 5.1284 - 87.3500 267.0000 5.1672 - 87.4000 260.0000 5.0990 - 87.4500 260.0000 5.0990 - 87.5000 263.0000 5.1284 - 87.5500 263.0000 5.1284 - 87.6000 270.0000 5.1962 - 87.6500 278.0000 5.2726 - 87.7000 293.0000 5.4129 - 87.7500 318.0000 5.6391 - 87.8000 364.0000 6.0332 - 87.8500 424.0000 6.5115 - 87.9000 512.0000 7.1554 - 87.9500 643.0000 8.0187 - 88.0000 817.0000 9.0388 - 88.0500 982.0000 9.9096 - 88.1000 1163.0000 10.7842 - 88.1500 1289.0000 11.3534 - 88.2000 1373.0000 11.7175 - 88.2500 1393.0000 11.8025 - 88.3000 1348.0000 11.6103 - 88.3500 1244.0000 11.1535 - 88.4000 1157.0000 10.7564 - 88.4500 1077.0000 10.3779 - 88.5000 1020.0000 10.0995 - 88.5500 965.0000 9.8234 - 88.6000 907.0000 9.5237 - 88.6500 858.0000 9.2628 - 88.7000 771.0000 8.7807 - 88.7500 647.0000 8.0436 - 88.8000 555.0000 7.4498 - 88.8500 468.0000 6.8411 - 88.9000 405.0000 6.3640 - 88.9500 348.0000 5.8992 - 89.0000 316.0000 5.6214 - 89.0500 291.0000 5.3944 - 89.1000 277.0000 5.2631 - 89.1500 278.0000 5.2726 - 89.2000 270.0000 5.1962 - 89.2500 262.0000 5.1186 - 89.3000 268.0000 5.1769 - 89.3500 270.0000 5.1962 - 89.4000 279.0000 5.2820 - 89.4500 287.0000 5.3572 - 89.5000 300.0000 5.4772 - 89.5500 319.0000 5.6480 - 89.6000 347.0000 5.8907 - 89.6500 378.0000 6.1482 - 89.7000 420.0000 6.4807 - 89.7500 469.0000 6.8484 - 89.8000 536.0000 7.3212 - 89.8500 645.0000 8.0312 - 89.9000 773.0000 8.7920 - 89.9500 925.0000 9.6177 - 90.0000 1115.0000 10.5594 - 90.0500 1254.0000 11.1982 - 90.1000 1367.0000 11.6919 - 90.1500 1400.0000 11.8322 - 90.2000 1327.0000 11.5195 - 90.2500 1188.0000 10.8995 - 90.3000 1038.0000 10.1882 - 90.3500 879.0000 9.3755 - 90.4000 738.0000 8.5907 - 90.4500 644.0000 8.0250 - 90.5000 594.0000 7.7071 - 90.5500 601.0000 7.7524 - 90.6000 643.0000 8.0187 - 90.6500 697.0000 8.3487 - 90.7000 786.0000 8.8657 - 90.7500 842.0000 9.1761 - 90.8000 847.0000 9.2033 - 90.8500 791.0000 8.8938 - 90.9000 702.0000 8.3785 - 90.9500 592.0000 7.6942 - 91.0000 508.0000 7.1274 - 91.0500 418.0000 6.4653 - 91.1000 362.0000 6.0166 - 91.1500 328.0000 5.7271 - 91.2000 299.0000 5.4681 - 91.2500 279.0000 5.2820 - 91.3000 270.0000 5.1962 - 91.3500 257.0000 5.0695 - 91.4000 253.0000 5.0299 - 91.4500 258.0000 5.0794 - 91.5000 257.0000 5.0695 - 91.5500 249.0000 4.9900 - 91.6000 245.0000 4.9497 - 91.6500 257.0000 5.0695 - 91.7000 260.0000 5.0990 - 91.7500 284.0000 5.3292 - 91.8000 296.0000 5.4406 - 91.8500 322.0000 5.6745 - 91.9000 343.0000 5.8566 - 91.9500 382.0000 6.1806 - 92.0000 405.0000 6.3640 - 92.0500 411.0000 6.4109 - 92.1000 416.0000 6.4498 - 92.1500 406.0000 6.3718 - 92.2000 372.0000 6.0992 - 92.2500 353.0000 5.9414 - 92.3000 330.0000 5.7446 - 92.3500 317.0000 5.6303 - 92.4000 313.0000 5.5946 - 92.4500 312.0000 5.5857 - 92.5000 309.0000 5.5588 - 92.5500 303.0000 5.5045 - 92.6000 288.0000 5.3666 - 92.6500 276.0000 5.2536 - 92.7000 264.0000 5.1381 - 92.7500 246.0000 4.9598 - 92.8000 249.0000 4.9900 - 92.8500 241.0000 4.9092 - 92.9000 251.0000 5.0100 - 92.9500 243.0000 4.9295 - 93.0000 246.0000 4.9598 - 93.0500 246.0000 4.9598 - 93.1000 249.0000 4.9900 - 93.1500 244.0000 4.9396 - 93.2000 252.0000 5.0200 - 93.2500 252.0000 5.0200 - 93.3000 258.0000 5.0794 - 93.3500 265.0000 5.1478 - 93.4000 263.0000 5.1284 - 93.4500 284.0000 5.3292 - 93.5000 299.0000 5.4681 - 93.5500 320.0000 5.6569 - 93.6000 344.0000 5.8652 - 93.6500 363.0000 6.0249 - 93.7000 372.0000 6.0992 - 93.7500 358.0000 5.9833 - 93.8000 351.0000 5.9245 - 93.8500 354.0000 5.9498 - 93.9000 330.0000 5.7446 - 93.9500 322.0000 5.6745 - 94.0000 334.0000 5.7793 - 94.0500 339.0000 5.8224 - 94.1000 345.0000 5.8737 - 94.1500 357.0000 5.9749 - 94.2000 360.0000 6.0000 - 94.2500 358.0000 5.9833 - 94.3000 372.0000 6.0992 - 94.3500 425.0000 6.5192 - 94.4000 511.0000 7.1484 - 94.4500 626.0000 7.9120 - 94.5000 770.0000 8.7750 - 94.5500 946.0000 9.7263 - 94.6000 1118.0000 10.5736 - 94.6500 1205.0000 10.9772 - 94.7000 1227.0000 11.0770 - 94.7500 1157.0000 10.7564 - 94.8000 1041.0000 10.2029 - 94.8500 873.0000 9.3434 - 94.9000 715.0000 8.4558 - 94.9500 562.0000 7.4967 - 95.0000 446.0000 6.6783 - 95.0500 377.0000 6.1400 - 95.1000 332.0000 5.7619 - 95.1500 297.0000 5.4498 - 95.2000 282.0000 5.3104 - 95.2500 276.0000 5.2536 - 95.3000 264.0000 5.1381 - 95.3500 261.0000 5.1088 - 95.4000 266.0000 5.1575 - 95.4500 261.0000 5.1088 - 95.5000 253.0000 5.0299 - 95.5500 258.0000 5.0794 - 95.6000 262.0000 5.1186 - 95.6500 260.0000 5.0990 - 95.7000 283.0000 5.3198 - 95.7500 307.0000 5.5408 - 95.8000 344.0000 5.8652 - 95.8500 402.0000 6.3403 - 95.9000 453.0000 6.7305 - 95.9500 529.0000 7.2732 - 96.0000 604.0000 7.7717 - 96.0500 661.0000 8.1302 - 96.1000 672.0000 8.1976 - 96.1500 629.0000 7.9310 - 96.2000 588.0000 7.6681 - 96.2500 510.0000 7.1414 - 96.3000 440.0000 6.6332 - 96.3500 377.0000 6.1400 - 96.4000 330.0000 5.7446 - 96.4500 301.0000 5.4863 - 96.5000 280.0000 5.2915 - 96.5500 269.0000 5.1865 - 96.6000 258.0000 5.0794 - 96.6500 252.0000 5.0200 - 96.7000 251.0000 5.0100 - 96.7500 252.0000 5.0200 - 96.8000 256.0000 5.0596 - 96.8500 253.0000 5.0299 - 96.9000 253.0000 5.0299 - 96.9500 253.0000 5.0299 - 97.0000 262.0000 5.1186 - 97.0500 265.0000 5.1478 - 97.1000 284.0000 5.3292 - 97.1500 291.0000 5.3944 - 97.2000 323.0000 5.6833 - 97.2500 374.0000 6.1156 - 97.3000 431.0000 6.5651 - 97.3500 511.0000 7.1484 - 97.4000 602.0000 7.7589 - 97.4500 678.0000 8.2341 - 97.5000 743.0000 8.6197 - 97.5500 756.0000 8.6948 - 97.6000 717.0000 8.4676 - 97.6500 657.0000 8.1056 - 97.7000 581.0000 7.6223 - 97.7500 490.0000 7.0000 - 97.8000 418.0000 6.4653 - 97.8500 364.0000 6.0332 - 97.9000 335.0000 5.7879 - 97.9500 306.0000 5.5317 - 98.0000 290.0000 5.3852 - 98.0500 286.0000 5.3479 - 98.1000 283.0000 5.3198 - 98.1500 283.0000 5.3198 - 98.2000 274.0000 5.2345 - 98.2500 262.0000 5.1186 - 98.3000 266.0000 5.1575 - 98.3500 261.0000 5.1088 - 98.4000 261.0000 5.1088 - 98.4500 264.0000 5.1381 - 98.5000 269.0000 5.1865 - 98.5500 278.0000 5.2726 - 98.6000 288.0000 5.3666 - 98.6500 306.0000 5.5317 - 98.7000 319.0000 5.6480 - 98.7500 330.0000 5.7446 - 98.8000 343.0000 5.8566 - 98.8500 341.0000 5.8395 - 98.9000 325.0000 5.7009 - 98.9500 318.0000 5.6391 - 99.0000 298.0000 5.4589 - 99.0500 299.0000 5.4681 - 99.1000 288.0000 5.3666 - 99.1500 309.0000 5.5588 - 99.2000 344.0000 5.8652 - 99.2500 382.0000 6.1806 - 99.3000 422.0000 6.4962 - 99.3500 470.0000 6.8557 - 99.4000 512.0000 7.1554 - 99.4500 514.0000 7.1694 - 99.5000 515.0000 7.1764 - 99.5500 488.0000 6.9857 - 99.6000 440.0000 6.6332 - 99.6500 396.0000 6.2929 - 99.7000 366.0000 6.0498 - 99.7500 332.0000 5.7619 - 99.8000 311.0000 5.5767 - 99.8500 305.0000 5.5227 - 99.9000 300.0000 5.4772 - 99.9500 293.0000 5.4129 - 100.0000 286.0000 5.3479 - 100.0500 306.0000 5.5317 - 100.1000 313.0000 5.5946 - 100.1500 317.0000 5.6303 - 100.2000 327.0000 5.7184 - 100.2500 343.0000 5.8566 - 100.3000 330.0000 5.7446 - 100.3500 320.0000 5.6569 - 100.4000 307.0000 5.5408 - 100.4500 298.0000 5.4589 - 100.5000 282.0000 5.3104 - 100.5500 274.0000 5.2345 - 100.6000 266.0000 5.1575 - 100.6500 274.0000 5.2345 - 100.7000 271.0000 5.2058 - 100.7500 274.0000 5.2345 - 100.8000 290.0000 5.3852 - 100.8500 302.0000 5.4955 - 100.9000 321.0000 5.6657 - 100.9500 350.0000 5.9161 - 101.0000 367.0000 6.0581 - 101.0500 386.0000 6.2129 - 101.1000 394.0000 6.2769 - 101.1500 370.0000 6.0828 - 101.2000 356.0000 5.9666 - 101.2500 332.0000 5.7619 - 101.3000 310.0000 5.5678 - 101.3500 288.0000 5.3666 - 101.4000 279.0000 5.2820 - 101.4500 281.0000 5.3009 - 101.5000 274.0000 5.2345 - 101.5500 284.0000 5.3292 - 101.6000 280.0000 5.2915 - 101.6500 270.0000 5.1962 - 101.7000 278.0000 5.2726 - 101.7500 269.0000 5.1865 - 101.8000 273.0000 5.2249 - 101.8500 268.0000 5.1769 - 101.9000 267.0000 5.1672 - 101.9500 265.0000 5.1478 - 102.0000 257.0000 5.3437 - 102.0500 258.0000 5.3541 - 102.1000 267.0000 5.4467 - 102.1500 267.0000 5.4467 - 102.2000 277.0000 5.5478 - 102.2500 287.0000 5.6470 - 102.3000 302.0000 5.7927 - 102.3500 332.0000 6.0736 - 102.4000 360.0000 6.3246 - 102.4500 411.0000 6.7577 - 102.5000 457.0000 7.1259 - 102.5500 524.0000 7.6303 - 102.6000 608.0000 8.2192 - 102.6500 699.0000 8.8129 - 102.7000 861.0000 9.7809 - 102.7500 1096.0000 11.0353 - 102.8000 1377.0000 12.3693 - 102.8500 1685.0000 13.6829 - 102.9000 1901.0000 14.5335 - 102.9500 2069.0000 15.1621 - 103.0000 2016.0000 14.9666 - 103.0500 1800.0000 14.1421 - 103.1000 1500.0000 12.9099 - 103.1500 1181.0000 11.4552 - 103.2000 937.0000 10.2035 - 103.2500 728.0000 8.9938 - 103.3000 629.0000 8.3600 - 103.3500 576.0000 8.0000 - 103.4000 556.0000 7.8599 - 103.4500 535.0000 7.7100 - 103.5000 519.0000 7.5939 - 103.5500 486.0000 7.3485 - 103.6000 465.0000 7.1880 - 103.6500 429.0000 6.9041 - 103.7000 385.0000 6.5405 - 103.7500 361.0000 6.3333 - 103.8000 342.0000 6.1644 - 103.8500 312.0000 5.8878 - 103.9000 293.0000 5.7057 - 103.9500 279.0000 5.5678 - 104.0000 277.0000 5.5478 - 104.0500 265.0000 5.4263 - 104.1000 257.0000 5.3437 - 104.1500 256.0000 5.3333 - 104.2000 250.0000 5.2705 - 104.2500 260.0000 5.3748 - 104.3000 261.0000 5.3852 - 104.3500 258.0000 5.3541 - 104.4000 263.0000 5.4058 - 104.4500 268.0000 5.4569 - 104.5000 284.0000 5.6174 - 104.5500 306.0000 5.8310 - 104.6000 325.0000 6.0093 - 104.6500 337.0000 6.1192 - 104.7000 337.0000 6.1192 - 104.7500 344.0000 6.1824 - 104.8000 340.0000 6.1464 - 104.8500 337.0000 6.1192 - 104.9000 328.0000 6.0369 - 104.9500 321.0000 5.9722 - 105.0000 306.0000 5.8310 - 105.0500 295.0000 5.7252 - 105.1000 289.0000 5.6667 - 105.1500 281.0000 5.5877 - 105.2000 267.0000 5.4467 - 105.2500 266.0000 5.4365 - 105.3000 270.0000 5.4772 - 105.3500 263.0000 5.4058 - 105.4000 256.0000 5.3333 - 105.4500 266.0000 5.4365 - 105.5000 264.0000 5.4160 - 105.5500 259.0000 5.3645 - 105.6000 261.0000 5.3852 - 105.6500 261.0000 5.3852 - 105.7000 258.0000 5.3541 - 105.7500 253.0000 5.3020 - 105.8000 248.0000 5.2493 - 105.8500 244.0000 5.2068 - 105.9000 249.0000 5.2599 - 105.9500 251.0000 5.2810 - 106.0000 245.0000 5.2175 - 106.0500 245.0000 5.2175 - 106.1000 247.0000 5.2387 - 106.1500 247.0000 5.2387 - 106.2000 254.0000 5.3125 - 106.2500 259.0000 5.3645 - 106.3000 250.0000 5.2705 - 106.3500 251.0000 5.2810 - 106.4000 258.0000 5.3541 - 106.4500 252.0000 5.2915 - 106.5000 255.0000 5.3229 - 106.5500 259.0000 5.3645 - 106.6000 256.0000 5.3333 - 106.6500 264.0000 5.4160 - 106.7000 268.0000 5.4569 - 106.7500 281.0000 5.5877 - 106.8000 303.0000 5.8023 - 106.8500 331.0000 6.0645 - 106.9000 371.0000 6.4205 - 106.9500 420.0000 6.8313 - 107.0000 484.0000 7.3333 - 107.0500 532.0000 7.6884 - 107.1000 576.0000 8.0000 - 107.1500 582.0000 8.0416 - 107.2000 563.0000 7.9092 - 107.2500 527.0000 7.6522 - 107.3000 490.0000 7.3786 - 107.3500 465.0000 7.1880 - 107.4000 467.0000 7.2034 - 107.4500 449.0000 7.0632 - 107.5000 416.0000 6.7987 - 107.5500 393.0000 6.6081 - 107.6000 366.0000 6.3770 - 107.6500 331.0000 6.0645 - 107.7000 316.0000 5.9255 - 107.7500 297.0000 5.7446 - 107.8000 294.0000 5.7155 - 107.8500 292.0000 5.6960 - 107.9000 286.0000 5.6372 - 107.9500 295.0000 5.7252 - 108.0000 306.0000 6.1847 - 108.0500 315.0000 6.2750 - 108.1000 334.0000 6.4614 - 108.1500 373.0000 6.8282 - 108.2000 406.0000 7.1239 - 108.2500 447.0000 7.4750 - 108.3000 499.0000 7.8978 - 108.3500 507.0000 7.9608 - 108.4000 506.0000 7.9530 - 108.4500 488.0000 7.8102 - 108.5000 432.0000 7.3485 - 108.5500 391.0000 6.9911 - 108.6000 342.0000 6.5383 - 108.6500 315.0000 6.2750 - 108.7000 292.0000 6.0415 - 108.7500 275.0000 5.8630 - 108.8000 274.0000 5.8523 - 108.8500 259.0000 5.6899 - 108.9000 250.0000 5.5902 - 108.9500 258.0000 5.6789 - 109.0000 252.0000 5.6125 - 109.0500 255.0000 5.6458 - 109.1000 254.0000 5.6347 - 109.1500 253.0000 5.6236 - 109.2000 254.0000 5.6347 - 109.2500 252.0000 5.6125 - 109.3000 257.0000 5.6679 - 109.3500 250.0000 5.5902 - 109.4000 255.0000 5.6458 - 109.4500 251.0000 5.6013 - 109.5000 254.0000 5.6347 - 109.5500 260.0000 5.7009 - 109.6000 249.0000 5.5790 - 109.6500 253.0000 5.6236 - 109.7000 254.0000 5.6347 - 109.7500 259.0000 5.6899 - 109.8000 268.0000 5.7879 - 109.8500 270.0000 5.8095 - 109.9000 284.0000 5.9582 - 109.9500 305.0000 6.1745 - 110.0000 322.0000 6.3443 - 110.0500 364.0000 6.7454 - 110.1000 417.0000 7.2198 - 110.1500 470.0000 7.6649 - 110.2000 573.0000 8.4632 - 110.2500 678.0000 9.2060 - 110.3000 771.0000 9.8171 - 110.3500 847.0000 10.2896 - 110.4000 854.0000 10.3320 - 110.4500 794.0000 9.9624 - 110.5000 720.0000 9.4868 - 110.5500 611.0000 8.7393 - 110.6000 520.0000 8.0623 - 110.6500 463.0000 7.6076 - 110.7000 412.0000 7.1764 - 110.7500 399.0000 7.0622 - 110.8000 416.0000 7.2111 - 110.8500 428.0000 7.3144 - 110.9000 432.0000 7.3485 - 110.9500 420.0000 7.2457 - 111.0000 402.0000 7.0887 - 111.0500 364.0000 6.7454 - 111.1000 348.0000 6.5955 - 111.1500 334.0000 6.4614 - 111.2000 321.0000 6.3344 - 111.2500 330.0000 6.4226 - 111.3000 342.0000 6.5383 - 111.3500 380.0000 6.8920 - 111.4000 385.0000 6.9372 - 111.4500 420.0000 7.2457 - 111.5000 441.0000 7.4246 - 111.5500 465.0000 7.6240 - 111.6000 444.0000 7.4498 - 111.6500 406.0000 7.1239 - 111.7000 383.0000 6.9192 - 111.7500 345.0000 6.5670 - 111.8000 332.0000 6.4420 - 111.8500 321.0000 6.3344 - 111.9000 308.0000 6.2048 - 111.9500 292.0000 6.0415 - 112.0000 303.0000 6.1543 - 112.0500 314.0000 6.2650 - 112.1000 333.0000 6.4517 - 112.1500 379.0000 6.8829 - 112.2000 438.0000 7.3993 - 112.2500 505.0000 7.9451 - 112.3000 594.0000 8.6168 - 112.3500 659.0000 9.0761 - 112.4000 717.0000 9.4670 - 112.4500 738.0000 9.6047 - 112.5000 710.0000 9.4207 - 112.5500 642.0000 8.9582 - 112.6000 547.0000 8.2689 - 112.6500 492.0000 7.8422 - 112.7000 421.0000 7.2543 - 112.7500 386.0000 6.9462 - 112.8000 344.0000 6.5574 - 112.8500 337.0000 6.4904 - 112.9000 350.0000 6.6144 - 112.9500 364.0000 6.7454 - 113.0000 415.0000 7.2024 - 113.0500 506.0000 7.9530 - 113.1000 586.0000 8.5586 - 113.1500 674.0000 9.1788 - 113.2000 750.0000 9.6825 - 113.2500 787.0000 9.9184 - 113.3000 753.0000 9.7018 - 113.3500 682.0000 9.2331 - 113.4000 597.0000 8.6386 - 113.4500 499.0000 7.8978 - 113.5000 417.0000 7.2198 - 113.5500 362.0000 6.7268 - 113.6000 340.0000 6.5192 - 113.6500 302.0000 6.1441 - 113.7000 286.0000 5.9791 - 113.7500 280.0000 5.9161 - 113.8000 283.0000 5.9477 - 113.8500 276.0000 5.8737 - 113.9000 282.0000 5.9372 - 113.9500 284.0000 5.9582 - 114.0000 295.0000 6.4918 - 114.0500 310.0000 6.6548 - 114.1000 319.0000 6.7507 - 114.1500 321.0000 6.7718 - 114.2000 304.0000 6.5900 - 114.2500 298.0000 6.5247 - 114.3000 293.0000 6.4697 - 114.3500 283.0000 6.3583 - 114.4000 277.0000 6.2906 - 114.4500 269.0000 6.1991 - 114.5000 265.0000 6.1528 - 114.5500 277.0000 6.2906 - 114.6000 283.0000 6.3583 - 114.6500 283.0000 6.3583 - 114.7000 293.0000 6.4697 - 114.7500 303.0000 6.5792 - 114.8000 320.0000 6.7612 - 114.8500 316.0000 6.7188 - 114.9000 331.0000 6.8765 - 114.9500 346.0000 7.0305 - 115.0000 327.0000 6.8348 - 115.0500 328.0000 6.8452 - 115.1000 306.0000 6.6117 - 115.1500 291.0000 6.4476 - 115.2000 286.0000 6.3920 - 115.2500 278.0000 6.3019 - 115.3000 273.0000 6.2450 - 115.3500 267.0000 6.1760 - 115.4000 272.0000 6.2335 - 115.4500 257.0000 6.0592 - 115.5000 260.0000 6.0945 - 115.5500 265.0000 6.1528 - 115.6000 264.0000 6.1412 - 115.6500 272.0000 6.2335 - 115.7000 270.0000 6.2106 - 115.7500 268.0000 6.1875 - 115.8000 269.0000 6.1991 - 115.8500 287.0000 6.4031 - 115.9000 292.0000 6.4587 - 115.9500 295.0000 6.4918 - 116.0000 317.0000 6.7295 - 116.0500 335.0000 6.9179 - 116.1000 364.0000 7.2111 - 116.1500 410.0000 7.6532 - 116.2000 477.0000 8.2549 - 116.2500 556.0000 8.9123 - 116.3000 642.0000 9.5768 - 116.3500 755.0000 10.3854 - 116.4000 864.0000 11.1098 - 116.4500 946.0000 11.6251 - 116.5000 970.0000 11.7716 - 116.5500 941.0000 11.5943 - 116.6000 870.0000 11.1484 - 116.6500 759.0000 10.4129 - 116.7000 647.0000 9.6140 - 116.7500 540.0000 8.7831 - 116.8000 468.0000 8.1766 - 116.8500 418.0000 7.7275 - 116.9000 379.0000 7.3582 - 116.9500 381.0000 7.3776 - 117.0000 405.0000 7.6064 - 117.0500 446.0000 7.9821 - 117.1000 476.0000 8.2462 - 117.1500 523.0000 8.6437 - 117.2000 561.0000 8.9523 - 117.2500 555.0000 8.9043 - 117.3000 529.0000 8.6932 - 117.3500 485.0000 8.3238 - 117.4000 436.0000 7.8921 - 117.4500 398.0000 7.5404 - 117.5000 355.0000 7.1214 - 117.5500 322.0000 6.7823 - 117.6000 304.0000 6.5900 - 117.6500 285.0000 6.3808 - 117.7000 270.0000 6.2106 - 117.7500 278.0000 6.3019 - 117.8000 260.0000 6.0945 - 117.8500 268.0000 6.1875 - 117.9000 264.0000 6.1412 - 117.9500 265.0000 6.1528 - 118.0000 263.0000 6.1296 - 118.0500 267.0000 6.1760 - 118.1000 286.0000 6.3920 - 118.1500 293.0000 6.4697 - 118.2000 291.0000 6.4476 - 118.2500 319.0000 6.7507 - 118.3000 366.0000 7.2309 - 118.3500 411.0000 7.6625 - 118.4000 461.0000 8.1152 - 118.4500 489.0000 8.3581 - 118.5000 521.0000 8.6272 - 118.5500 555.0000 8.9043 - 118.6000 550.0000 8.8641 - 118.6500 511.0000 8.5440 - 118.7000 486.0000 8.3324 - 118.7500 436.0000 7.8921 - 118.8000 392.0000 7.4833 - 118.8500 368.0000 7.2506 - 118.9000 330.0000 6.8661 - 118.9500 328.0000 6.8452 - 119.0000 343.0000 7.0000 - 119.0500 371.0000 7.2801 - 119.1000 394.0000 7.5024 - 119.1500 441.0000 7.9373 - 119.2000 468.0000 8.1766 - 119.2500 469.0000 8.1854 - 119.3000 456.0000 8.0711 - 119.3500 416.0000 7.7090 - 119.4000 394.0000 7.5024 - 119.4500 361.0000 7.1813 - 119.5000 330.0000 6.8661 - 119.5500 312.0000 6.6762 - 119.6000 293.0000 6.4697 - 119.6500 285.0000 6.3808 - 119.7000 286.0000 6.3920 - 119.7500 275.0000 6.2678 - 119.8000 274.0000 6.2564 - 119.8500 281.0000 6.3358 - 119.9000 279.0000 6.3133 - 119.9500 298.0000 6.5247 - 120.0000 312.0000 7.2111 diff --git a/Notebooks/PbSO4_neutrons_short.xye b/Notebooks/PbSO4_neutrons_short.xye deleted file mode 100644 index 6ff09d36..00000000 --- a/Notebooks/PbSO4_neutrons_short.xye +++ /dev/null @@ -1,2202 +0,0 @@ -# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992) - 10.0000 220.0000 14.8324 - 10.0500 214.0000 14.6287 - 10.1000 219.0000 14.7986 - 10.1500 224.0000 14.9666 - 10.2000 198.0000 14.0712 - 10.2500 229.0000 15.1327 - 10.3000 224.0000 14.9666 - 10.3500 216.0000 14.6969 - 10.4000 202.0000 14.2127 - 10.4500 229.0000 15.1327 - 10.5000 202.0000 14.2127 - 10.5500 215.0000 14.6629 - 10.6000 215.0000 14.6629 - 10.6500 196.0000 14.0000 - 10.7000 235.0000 15.3297 - 10.7500 207.0000 14.3875 - 10.8000 205.0000 14.3178 - 10.8500 238.0000 15.4272 - 10.9000 202.0000 14.2127 - 10.9500 213.0000 14.5945 - 11.0000 226.0000 15.0333 - 11.0500 198.0000 14.0712 - 11.1000 222.0000 14.8997 - 11.1500 186.0000 13.6382 - 11.2000 216.0000 14.6969 - 11.2500 218.0000 14.7648 - 11.3000 225.0000 15.0000 - 11.3500 200.0000 14.1421 - 11.4000 196.0000 14.0000 - 11.4500 224.0000 14.9666 - 11.5000 199.0000 14.1067 - 11.5500 204.0000 14.2829 - 11.6000 189.0000 13.7477 - 11.6500 211.0000 14.5258 - 11.7000 190.0000 13.7840 - 11.7500 184.0000 13.5647 - 11.8000 204.0000 14.2829 - 11.8500 204.0000 14.2829 - 11.9000 219.0000 14.7986 - 11.9500 207.0000 14.3875 - 12.0000 227.0000 15.0665 - 12.0500 211.0000 10.2713 - 12.1000 193.0000 9.8234 - 12.1500 206.0000 10.1489 - 12.2000 208.0000 10.1980 - 12.2500 191.0000 9.7724 - 12.3000 194.0000 9.8489 - 12.3500 185.0000 9.6177 - 12.4000 200.0000 10.0000 - 12.4500 203.0000 10.0747 - 12.5000 197.0000 9.9247 - 12.5500 203.0000 10.0747 - 12.6000 200.0000 10.0000 - 12.6500 200.0000 10.0000 - 12.7000 205.0000 10.1242 - 12.7500 208.0000 10.1980 - 12.8000 205.0000 10.1242 - 12.8500 201.0000 10.0250 - 12.9000 221.0000 10.5119 - 12.9500 218.0000 10.4403 - 13.0000 218.0000 10.4403 - 13.0500 216.0000 10.3923 - 13.1000 202.0000 10.0499 - 13.1500 206.0000 10.1489 - 13.2000 197.0000 9.9247 - 13.2500 210.0000 10.2470 - 13.3000 199.0000 9.9750 - 13.3500 219.0000 10.4642 - 13.4000 192.0000 9.7980 - 13.4500 211.0000 10.2713 - 13.5000 199.0000 9.9750 - 13.5500 196.0000 9.8995 - 13.6000 195.0000 9.8742 - 13.6500 203.0000 10.0747 - 13.7000 202.0000 10.0499 - 13.7500 200.0000 10.0000 - 13.8000 199.0000 9.9750 - 13.8500 191.0000 9.7724 - 13.9000 204.0000 10.0995 - 13.9500 191.0000 9.7724 - 14.0000 200.0000 10.0000 - 14.0500 199.0000 9.9750 - 14.1000 197.0000 9.9247 - 14.1500 202.0000 10.0499 - 14.2000 210.0000 10.2470 - 14.2500 202.0000 10.0499 - 14.3000 198.0000 9.9499 - 14.3500 191.0000 9.7724 - 14.4000 194.0000 9.8489 - 14.4500 198.0000 9.9499 - 14.5000 194.0000 9.8489 - 14.5500 193.0000 9.8234 - 14.6000 212.0000 10.2956 - 14.6500 214.0000 10.3441 - 14.7000 197.0000 9.9247 - 14.7500 195.0000 9.8742 - 14.8000 205.0000 10.1242 - 14.8500 209.0000 10.2225 - 14.9000 203.0000 10.0747 - 14.9500 197.0000 9.9247 - 15.0000 191.0000 9.7724 - 15.0500 192.0000 9.7980 - 15.1000 215.0000 10.3682 - 15.1500 194.0000 9.8489 - 15.2000 189.0000 9.7211 - 15.2500 188.0000 9.6954 - 15.3000 202.0000 10.0499 - 15.3500 201.0000 10.0250 - 15.4000 198.0000 9.9499 - 15.4500 208.0000 10.1980 - 15.5000 197.0000 9.9247 - 15.5500 187.0000 9.6695 - 15.6000 187.0000 9.6695 - 15.6500 190.0000 9.7468 - 15.7000 197.0000 9.9247 - 15.7500 200.0000 10.0000 - 15.8000 193.0000 9.8234 - 15.8500 180.0000 9.4868 - 15.9000 194.0000 9.8489 - 15.9500 206.0000 10.1489 - 16.0000 195.0000 9.8742 - 16.0500 193.0000 9.8234 - 16.1000 205.0000 10.1242 - 16.1500 194.0000 9.8489 - 16.2000 196.0000 9.8995 - 16.2500 194.0000 9.8489 - 16.3000 199.0000 9.9750 - 16.3500 207.0000 10.1735 - 16.4000 188.0000 9.6954 - 16.4500 203.0000 10.0747 - 16.5000 188.0000 9.6954 - 16.5500 180.0000 9.4868 - 16.6000 198.0000 9.9499 - 16.6500 200.0000 10.0000 - 16.7000 201.0000 10.0250 - 16.7500 210.0000 10.2470 - 16.8000 206.0000 10.1489 - 16.8500 189.0000 9.7211 - 16.9000 194.0000 9.8489 - 16.9500 187.0000 9.6695 - 17.0000 195.0000 9.8742 - 17.0500 201.0000 10.0250 - 17.1000 197.0000 9.9247 - 17.1500 206.0000 10.1489 - 17.2000 208.0000 10.1980 - 17.2500 199.0000 9.9750 - 17.3000 192.0000 9.7980 - 17.3500 193.0000 9.8234 - 17.4000 204.0000 10.0995 - 17.4500 201.0000 10.0250 - 17.5000 200.0000 10.0000 - 17.5500 177.0000 9.4074 - 17.6000 193.0000 9.8234 - 17.6500 199.0000 9.9750 - 17.7000 201.0000 10.0250 - 17.7500 194.0000 9.8489 - 17.8000 184.0000 9.5917 - 17.8500 192.0000 9.7980 - 17.9000 199.0000 9.9750 - 17.9500 190.0000 9.7468 - 18.0000 183.0000 9.5656 - 18.0500 189.0000 7.9373 - 18.1000 196.0000 8.0829 - 18.1500 196.0000 8.0829 - 18.2000 198.0000 8.1240 - 18.2500 210.0000 8.3666 - 18.3000 212.0000 8.4063 - 18.3500 219.0000 8.5440 - 18.4000 198.0000 8.1240 - 18.4500 195.0000 8.0623 - 18.5000 198.0000 8.1240 - 18.5500 191.0000 7.9791 - 18.6000 193.0000 8.0208 - 18.6500 197.0000 8.1035 - 18.7000 194.0000 8.0416 - 18.7500 187.0000 7.8951 - 18.8000 209.0000 8.3467 - 18.8500 187.0000 7.8951 - 18.9000 198.0000 8.1240 - 18.9500 206.0000 8.2865 - 19.0000 197.0000 8.1035 - 19.0500 191.0000 7.9791 - 19.1000 200.0000 8.1650 - 19.1500 207.0000 8.3066 - 19.2000 205.0000 8.2664 - 19.2500 198.0000 8.1240 - 19.3000 196.0000 8.0829 - 19.3500 209.0000 8.3467 - 19.4000 211.0000 8.3865 - 19.4500 203.0000 8.2260 - 19.5000 200.0000 8.1650 - 19.5500 192.0000 8.0000 - 19.6000 208.0000 8.3267 - 19.6500 213.0000 8.4261 - 19.7000 221.0000 8.5829 - 19.7500 216.0000 8.4853 - 19.8000 226.0000 8.6795 - 19.8500 228.0000 8.7178 - 19.9000 228.0000 8.7178 - 19.9500 215.0000 8.4656 - 20.0000 224.0000 8.6410 - 20.0500 226.0000 8.6795 - 20.1000 213.0000 8.4261 - 20.1500 239.0000 8.9256 - 20.2000 250.0000 9.1287 - 20.2500 247.0000 9.0738 - 20.3000 240.0000 8.9443 - 20.3500 231.0000 8.7750 - 20.4000 236.0000 8.8694 - 20.4500 223.0000 8.6217 - 20.5000 231.0000 8.7750 - 20.5500 226.0000 8.6795 - 20.6000 214.0000 8.4459 - 20.6500 208.0000 8.3267 - 20.7000 214.0000 8.4459 - 20.7500 196.0000 8.0829 - 20.8000 204.0000 8.2462 - 20.8500 199.0000 8.1445 - 20.9000 186.0000 7.8740 - 20.9500 192.0000 8.0000 - 21.0000 199.0000 8.1445 - 21.0500 200.0000 8.1650 - 21.1000 184.0000 7.8316 - 21.1500 184.0000 7.8316 - 21.2000 189.0000 7.9373 - 21.2500 182.0000 7.7889 - 21.3000 184.0000 7.8316 - 21.3500 185.0000 7.8528 - 21.4000 195.0000 8.0623 - 21.4500 190.0000 7.9582 - 21.5000 194.0000 8.0416 - 21.5500 185.0000 7.8528 - 21.6000 183.0000 7.8102 - 21.6500 193.0000 8.0208 - 21.7000 194.0000 8.0416 - 21.7500 193.0000 8.0208 - 21.8000 188.0000 7.9162 - 21.8500 191.0000 7.9791 - 21.9000 189.0000 7.9373 - 21.9500 188.0000 7.9162 - 22.0000 201.0000 8.1854 - 22.0500 195.0000 8.0623 - 22.1000 205.0000 8.2664 - 22.1500 200.0000 8.1650 - 22.2000 200.0000 8.1650 - 22.2500 192.0000 8.0000 - 22.3000 197.0000 8.1035 - 22.3500 204.0000 8.2462 - 22.4000 207.0000 8.3066 - 22.4500 192.0000 8.0000 - 22.5000 201.0000 8.1854 - 22.5500 190.0000 7.9582 - 22.6000 195.0000 8.0623 - 22.6500 194.0000 8.0416 - 22.7000 182.0000 7.7889 - 22.7500 189.0000 7.9373 - 22.8000 196.0000 8.0829 - 22.8500 196.0000 8.0829 - 22.9000 200.0000 8.1650 - 22.9500 190.0000 7.9582 - 23.0000 183.0000 7.8102 - 23.0500 199.0000 8.1445 - 23.1000 187.0000 7.8951 - 23.1500 196.0000 8.0829 - 23.2000 191.0000 7.9791 - 23.2500 191.0000 7.9791 - 23.3000 195.0000 8.0623 - 23.3500 194.0000 8.0416 - 23.4000 192.0000 8.0000 - 23.4500 182.0000 7.7889 - 23.5000 188.0000 7.9162 - 23.5500 203.0000 8.2260 - 23.6000 187.0000 7.8951 - 23.6500 192.0000 8.0000 - 23.7000 206.0000 8.2865 - 23.7500 201.0000 8.1854 - 23.8000 184.0000 7.8316 - 23.8500 192.0000 8.0000 - 23.9000 205.0000 8.2664 - 23.9500 196.0000 8.0829 - 24.0000 193.0000 8.0208 - 24.0500 194.0000 6.9642 - 24.1000 195.0000 6.9821 - 24.1500 194.0000 6.9642 - 24.2000 201.0000 7.0887 - 24.2500 193.0000 6.9462 - 24.3000 176.0000 6.6332 - 24.3500 187.0000 6.8374 - 24.4000 188.0000 6.8557 - 24.4500 196.0000 7.0000 - 24.5000 192.0000 6.9282 - 24.5500 185.0000 6.8007 - 24.6000 195.0000 6.9821 - 24.6500 198.0000 7.0356 - 24.7000 205.0000 7.1589 - 24.7500 200.0000 7.0711 - 24.8000 208.0000 7.2111 - 24.8500 195.0000 6.9821 - 24.9000 187.0000 6.8374 - 24.9500 193.0000 6.9462 - 25.0000 197.0000 7.0178 - 25.0500 202.0000 7.1063 - 25.1000 193.0000 6.9462 - 25.1500 196.0000 7.0000 - 25.2000 202.0000 7.1063 - 25.2500 201.0000 7.0887 - 25.3000 197.0000 7.0178 - 25.3500 204.0000 7.1414 - 25.4000 208.0000 7.2111 - 25.4500 206.0000 7.1764 - 25.5000 212.0000 7.2801 - 25.5500 207.0000 7.1937 - 25.6000 207.0000 7.1937 - 25.6500 212.0000 7.2801 - 25.7000 216.0000 7.3485 - 25.7500 218.0000 7.3824 - 25.8000 221.0000 7.4330 - 25.8500 218.0000 7.3824 - 25.9000 207.0000 7.1937 - 25.9500 203.0000 7.1239 - 26.0000 204.0000 7.1414 - 26.0500 202.0000 7.1063 - 26.1000 206.0000 7.1764 - 26.1500 202.0000 7.1063 - 26.2000 202.0000 7.1063 - 26.2500 181.0000 6.7268 - 26.3000 193.0000 6.9462 - 26.3500 205.0000 7.1589 - 26.4000 198.0000 7.0356 - 26.4500 196.0000 7.0000 - 26.5000 197.0000 7.0178 - 26.5500 195.0000 6.9821 - 26.6000 201.0000 7.0887 - 26.6500 205.0000 7.1589 - 26.7000 195.0000 6.9821 - 26.7500 196.0000 7.0000 - 26.8000 196.0000 7.0000 - 26.8500 205.0000 7.1589 - 26.9000 198.0000 7.0356 - 26.9500 200.0000 7.0711 - 27.0000 199.0000 7.0534 - 27.0500 180.0000 6.7082 - 27.1000 187.0000 6.8374 - 27.1500 193.0000 6.9462 - 27.2000 197.0000 7.0178 - 27.2500 197.0000 7.0178 - 27.3000 196.0000 7.0000 - 27.3500 194.0000 6.9642 - 27.4000 197.0000 7.0178 - 27.4500 204.0000 7.1414 - 27.5000 201.0000 7.0887 - 27.5500 187.0000 6.8374 - 27.6000 191.0000 6.9101 - 27.6500 205.0000 7.1589 - 27.7000 200.0000 7.0711 - 27.7500 198.0000 7.0356 - 27.8000 200.0000 7.0711 - 27.8500 204.0000 7.1414 - 27.9000 196.0000 7.0000 - 27.9500 195.0000 6.9821 - 28.0000 194.0000 6.9642 - 28.0500 200.0000 7.0711 - 28.1000 198.0000 7.0356 - 28.1500 201.0000 7.0887 - 28.2000 208.0000 7.2111 - 28.2500 205.0000 7.1589 - 28.3000 211.0000 7.2629 - 28.3500 211.0000 7.2629 - 28.4000 220.0000 7.4162 - 28.4500 220.0000 7.4162 - 28.5000 212.0000 7.2801 - 28.5500 208.0000 7.2111 - 28.6000 214.0000 7.3144 - 28.6500 226.0000 7.5166 - 28.7000 235.0000 7.6649 - 28.7500 233.0000 7.6322 - 28.8000 237.0000 7.6974 - 28.8500 242.0000 7.7782 - 28.9000 242.0000 7.7782 - 28.9500 245.0000 7.8262 - 29.0000 239.0000 7.7298 - 29.0500 226.0000 7.5166 - 29.1000 232.0000 7.6158 - 29.1500 238.0000 7.7136 - 29.2000 226.0000 7.5166 - 29.2500 218.0000 7.3824 - 29.3000 218.0000 7.3824 - 29.3500 214.0000 7.3144 - 29.4000 205.0000 7.1589 - 29.4500 200.0000 7.0711 - 29.5000 193.0000 6.9462 - 29.5500 195.0000 6.9821 - 29.6000 196.0000 7.0000 - 29.6500 195.0000 6.9821 - 29.7000 207.0000 7.1937 - 29.7500 215.0000 7.3314 - 29.8000 207.0000 7.1937 - 29.8500 218.0000 7.3824 - 29.9000 218.0000 7.3824 - 29.9500 220.0000 7.4162 - 30.0000 220.0000 7.4162 - 30.0500 229.0000 6.7676 - 30.1000 236.0000 6.8702 - 30.1500 254.0000 7.1274 - 30.2000 264.0000 7.2664 - 30.2500 280.0000 7.4833 - 30.3000 289.0000 7.6026 - 30.3500 289.0000 7.6026 - 30.4000 303.0000 7.7846 - 30.4500 302.0000 7.7717 - 30.5000 297.0000 7.7071 - 30.5500 281.0000 7.4967 - 30.6000 278.0000 7.4565 - 30.6500 280.0000 7.4833 - 30.7000 265.0000 7.2801 - 30.7500 258.0000 7.1833 - 30.8000 243.0000 6.9714 - 30.8500 240.0000 6.9282 - 30.9000 232.0000 6.8118 - 30.9500 231.0000 6.7971 - 31.0000 233.0000 6.8264 - 31.0500 246.0000 7.0143 - 31.1000 248.0000 7.0427 - 31.1500 249.0000 7.0569 - 31.2000 256.0000 7.1554 - 31.2500 272.0000 7.3756 - 31.3000 289.0000 7.6026 - 31.3500 311.0000 7.8867 - 31.4000 340.0000 8.2462 - 31.4500 363.0000 8.5206 - 31.5000 393.0000 8.8657 - 31.5500 440.0000 9.3808 - 31.6000 474.0000 9.7365 - 31.6500 482.0000 9.8183 - 31.7000 492.0000 9.9197 - 31.7500 508.0000 10.0797 - 31.8000 494.0000 9.9398 - 31.8500 475.0000 9.7468 - 31.9000 439.0000 9.3702 - 31.9500 413.0000 9.0885 - 32.0000 368.0000 8.5790 - 32.0500 331.0000 8.1363 - 32.1000 299.0000 7.7330 - 32.1500 286.0000 7.5631 - 32.2000 262.0000 7.2388 - 32.2500 241.0000 6.9426 - 32.3000 238.0000 6.8993 - 32.3500 252.0000 7.0993 - 32.4000 267.0000 7.3075 - 32.4500 276.0000 7.4297 - 32.5000 278.0000 7.4565 - 32.5500 300.0000 7.7460 - 32.6000 325.0000 8.0623 - 32.6500 336.0000 8.1976 - 32.7000 359.0000 8.4735 - 32.7500 405.0000 9.0000 - 32.8000 458.0000 9.5708 - 32.8500 501.0000 10.0100 - 32.9000 564.0000 10.6207 - 32.9500 640.0000 11.3137 - 33.0000 719.0000 11.9917 - 33.0500 783.0000 12.5140 - 33.1000 837.0000 12.9383 - 33.1500 851.0000 13.0461 - 33.2000 866.0000 13.1605 - 33.2500 828.0000 12.8686 - 33.3000 763.0000 12.3531 - 33.3500 697.0000 11.8068 - 33.4000 634.0000 11.2606 - 33.4500 541.0000 10.4019 - 33.5000 465.0000 9.6437 - 33.5500 391.0000 8.8431 - 33.6000 351.0000 8.3785 - 33.6500 301.0000 7.7589 - 33.7000 284.0000 7.5366 - 33.7500 260.0000 7.2111 - 33.8000 248.0000 7.0427 - 33.8500 257.0000 7.1694 - 33.9000 242.0000 6.9570 - 33.9500 246.0000 7.0143 - 34.0000 263.0000 7.2526 - 34.0500 271.0000 7.3621 - 34.1000 281.0000 7.4967 - 34.1500 302.0000 7.7717 - 34.2000 309.0000 7.8613 - 34.2500 335.0000 8.1854 - 34.3000 342.0000 8.2704 - 34.3500 345.0000 8.3066 - 34.4000 356.0000 8.4380 - 34.4500 351.0000 8.3785 - 34.5000 341.0000 8.2583 - 34.5500 334.0000 8.1731 - 34.6000 321.0000 8.0125 - 34.6500 286.0000 7.5631 - 34.7000 268.0000 7.3212 - 34.7500 256.0000 7.1554 - 34.8000 238.0000 6.8993 - 34.8500 229.0000 6.7676 - 34.9000 218.0000 6.6030 - 34.9500 223.0000 6.6783 - 35.0000 216.0000 6.5727 - 35.0500 203.0000 6.3718 - 35.1000 203.0000 6.3718 - 35.1500 194.0000 6.2290 - 35.2000 205.0000 6.4031 - 35.2500 196.0000 6.2610 - 35.3000 193.0000 6.2129 - 35.3500 206.0000 6.4187 - 35.4000 201.0000 6.3403 - 35.4500 201.0000 6.3403 - 35.5000 201.0000 6.3403 - 35.5500 200.0000 6.3246 - 35.6000 194.0000 6.2290 - 35.6500 196.0000 6.2610 - 35.7000 203.0000 6.3718 - 35.7500 195.0000 6.2450 - 35.8000 196.0000 6.2610 - 35.8500 211.0000 6.4962 - 35.9000 216.0000 6.5727 - 35.9500 207.0000 6.4343 - 36.0000 215.0000 6.5574 - 36.0500 221.0000 6.6483 - 36.1000 237.0000 6.2849 - 36.1500 248.0000 6.4291 - 36.2000 261.0000 6.5955 - 36.2500 279.0000 6.8191 - 36.3000 319.0000 7.2915 - 36.3500 337.0000 7.4944 - 36.4000 364.0000 7.7889 - 36.4500 423.0000 8.3964 - 36.5000 489.0000 9.0277 - 36.5500 557.0000 9.6350 - 36.6000 630.0000 10.2470 - 36.6500 729.0000 11.0227 - 36.7000 822.0000 11.7047 - 36.7500 943.0000 12.5366 - 36.8000 1059.0000 13.2853 - 36.8500 1196.0000 14.1185 - 36.9000 1235.0000 14.3469 - 36.9500 1220.0000 14.2595 - 37.0000 1209.0000 14.1951 - 37.0500 1128.0000 13.7113 - 37.1000 1001.0000 12.9164 - 37.1500 864.0000 12.0000 - 37.2000 729.0000 11.0227 - 37.2500 601.0000 10.0083 - 37.3000 496.0000 9.0921 - 37.3500 418.0000 8.3467 - 37.4000 355.0000 7.6920 - 37.4500 313.0000 7.2226 - 37.5000 263.0000 6.6207 - 37.5500 246.0000 6.4031 - 37.6000 226.0000 6.1373 - 37.6500 214.0000 5.9722 - 37.7000 222.0000 6.0828 - 37.7500 222.0000 6.0828 - 37.8000 211.0000 5.9301 - 37.8500 211.0000 5.9301 - 37.9000 202.0000 5.8023 - 37.9500 198.0000 5.7446 - 38.0000 192.0000 5.6569 - 38.0500 193.0000 5.6716 - 38.1000 196.0000 5.7155 - 38.1500 201.0000 5.7879 - 38.2000 203.0000 5.8166 - 38.2500 203.0000 5.8166 - 38.3000 201.0000 5.7879 - 38.3500 198.0000 5.7446 - 38.4000 196.0000 5.7155 - 38.4500 206.0000 5.8595 - 38.5000 210.0000 5.9161 - 38.5500 197.0000 5.7300 - 38.6000 204.0000 5.8310 - 38.6500 200.0000 5.7735 - 38.7000 205.0000 5.8452 - 38.7500 196.0000 5.7155 - 38.8000 195.0000 5.7009 - 38.8500 205.0000 5.8452 - 38.9000 204.0000 5.8310 - 38.9500 200.0000 5.7735 - 39.0000 203.0000 5.8166 - 39.0500 208.0000 5.8878 - 39.1000 207.0000 5.8737 - 39.1500 202.0000 5.8023 - 39.2000 203.0000 5.8166 - 39.2500 198.0000 5.7446 - 39.3000 204.0000 5.8310 - 39.3500 210.0000 5.9161 - 39.4000 216.0000 6.0000 - 39.4500 210.0000 5.9161 - 39.5000 229.0000 6.1779 - 39.5500 239.0000 6.3114 - 39.6000 247.0000 6.4161 - 39.6500 278.0000 6.8069 - 39.7000 302.0000 7.0946 - 39.7500 324.0000 7.3485 - 39.8000 371.0000 7.8634 - 39.8500 420.0000 8.3666 - 39.9000 465.0000 8.8034 - 39.9500 538.0000 9.4692 - 40.0000 630.0000 10.2470 - 40.0500 739.0000 11.0980 - 40.1000 851.0000 11.9094 - 40.1500 976.0000 12.7541 - 40.2000 1076.0000 13.3915 - 40.2500 1161.0000 13.9104 - 40.3000 1222.0000 14.2712 - 40.3500 1227.0000 14.3003 - 40.4000 1187.0000 14.0653 - 40.4500 1096.0000 13.5154 - 40.5000 964.0000 12.6754 - 40.5500 833.0000 11.7828 - 40.6000 708.0000 10.8628 - 40.6500 587.0000 9.8911 - 40.7000 512.0000 9.2376 - 40.7500 436.0000 8.5245 - 40.8000 391.0000 8.0726 - 40.8500 384.0000 8.0000 - 40.9000 370.0000 7.8528 - 40.9500 391.0000 8.0726 - 41.0000 419.0000 8.3566 - 41.0500 448.0000 8.6410 - 41.1000 490.0000 9.0370 - 41.1500 567.0000 9.7211 - 41.2000 626.0000 10.2144 - 41.2500 687.0000 10.7005 - 41.3000 735.0000 11.0680 - 41.3500 780.0000 11.4018 - 41.4000 782.0000 11.4164 - 41.4500 745.0000 11.1430 - 41.5000 721.0000 10.9621 - 41.5500 662.0000 10.5040 - 41.6000 595.0000 9.9582 - 41.6500 527.0000 9.3719 - 41.7000 446.0000 8.6217 - 41.7500 393.0000 8.0932 - 41.8000 335.0000 7.4722 - 41.8500 301.0000 7.0828 - 41.9000 276.0000 6.7823 - 41.9500 251.0000 5.9881 - 42.0000 242.0000 5.8797 - 42.0500 229.0000 5.7196 - 42.1000 209.0000 5.4642 - 42.1500 215.0000 5.5420 - 42.2000 218.0000 5.5806 - 42.2500 214.0000 5.5291 - 42.3000 209.0000 5.4642 - 42.3500 208.0000 5.4511 - 42.4000 212.0000 5.5032 - 42.4500 210.0000 5.4772 - 42.5000 209.0000 5.4642 - 42.5500 210.0000 5.4772 - 42.6000 205.0000 5.4116 - 42.6500 209.0000 5.4642 - 42.7000 211.0000 5.4903 - 42.7500 211.0000 5.4903 - 42.8000 216.0000 5.5549 - 42.8500 205.0000 5.4116 - 42.9000 204.0000 5.3984 - 42.9500 202.0000 5.3719 - 43.0000 201.0000 5.3586 - 43.0500 200.0000 5.3452 - 43.1000 207.0000 5.4380 - 43.1500 205.0000 5.4116 - 43.2000 202.0000 5.3719 - 43.2500 209.0000 5.4642 - 43.3000 202.0000 5.3719 - 43.3500 203.0000 5.3852 - 43.4000 206.0000 5.4248 - 43.4500 206.0000 5.4248 - 43.5000 200.0000 5.3452 - 43.5500 194.0000 5.2644 - 43.6000 199.0000 5.3318 - 43.6500 204.0000 5.3984 - 43.7000 205.0000 5.4116 - 43.7500 210.0000 5.4772 - 43.8000 207.0000 5.4380 - 43.8500 205.0000 5.4116 - 43.9000 210.0000 5.4772 - 43.9500 204.0000 5.3984 - 44.0000 203.0000 5.3852 - 44.0500 202.0000 5.3719 - 44.1000 205.0000 5.4116 - 44.1500 201.0000 5.3586 - 44.2000 201.0000 5.3586 - 44.2500 207.0000 5.4380 - 44.3000 197.0000 5.3050 - 44.3500 198.0000 5.3184 - 44.4000 203.0000 5.3852 - 44.4500 209.0000 5.4642 - 44.5000 209.0000 5.4642 - 44.5500 208.0000 5.4511 - 44.6000 204.0000 5.3984 - 44.6500 209.0000 5.4642 - 44.7000 199.0000 5.3318 - 44.7500 204.0000 5.3984 - 44.8000 206.0000 5.4248 - 44.8500 201.0000 5.3586 - 44.9000 205.0000 5.4116 - 44.9500 202.0000 5.3719 - 45.0000 204.0000 5.3984 - 45.0500 198.0000 5.3184 - 45.1000 198.0000 5.3184 - 45.1500 213.0000 5.5162 - 45.2000 210.0000 5.4772 - 45.2500 212.0000 5.5032 - 45.3000 214.0000 5.5291 - 45.3500 215.0000 5.5420 - 45.4000 217.0000 5.5678 - 45.4500 210.0000 5.4772 - 45.5000 214.0000 5.5291 - 45.5500 215.0000 5.5420 - 45.6000 215.0000 5.5420 - 45.6500 215.0000 5.5420 - 45.7000 217.0000 5.5678 - 45.7500 222.0000 5.6315 - 45.8000 231.0000 5.7446 - 45.8500 247.0000 5.9402 - 45.9000 252.0000 6.0000 - 45.9500 273.0000 6.2450 - 46.0000 304.0000 6.5900 - 46.0500 332.0000 6.8868 - 46.1000 366.0000 7.2309 - 46.1500 408.0000 7.6345 - 46.2000 463.0000 8.1328 - 46.2500 532.0000 8.7178 - 46.3000 619.0000 9.4036 - 46.3500 734.0000 10.2400 - 46.4000 828.0000 10.8759 - 46.4500 944.0000 11.6128 - 46.5000 1003.0000 11.9702 - 46.5500 1055.0000 12.2766 - 46.6000 1070.0000 12.3635 - 46.6500 1018.0000 12.0594 - 46.7000 944.0000 11.6128 - 46.7500 833.0000 10.9087 - 46.8000 725.0000 10.1770 - 46.8500 633.0000 9.5094 - 46.9000 507.0000 8.5105 - 46.9500 445.0000 7.9732 - 47.0000 379.0000 7.3582 - 47.0500 347.0000 7.0407 - 47.1000 316.0000 6.7188 - 47.1500 282.0000 6.3471 - 47.2000 267.0000 6.1760 - 47.2500 269.0000 6.1991 - 47.3000 281.0000 6.3358 - 47.3500 288.0000 6.4143 - 47.4000 300.0000 6.5465 - 47.4500 327.0000 6.8348 - 47.5000 346.0000 7.0305 - 47.5500 380.0000 7.3679 - 47.6000 400.0000 7.5593 - 47.6500 430.0000 7.8376 - 47.7000 453.0000 8.0445 - 47.7500 459.0000 8.0976 - 47.8000 451.0000 8.0267 - 47.8500 427.0000 7.8102 - 47.9000 402.0000 7.5782 - 47.9500 375.0000 7.3193 - 48.0000 344.0000 7.0102 - 48.0500 309.0000 6.6440 - 48.1000 277.0000 6.2906 - 48.1500 265.0000 5.7554 - 48.2000 246.0000 5.5453 - 48.2500 246.0000 5.5453 - 48.3000 230.0000 5.3619 - 48.3500 223.0000 5.2797 - 48.4000 227.0000 5.3268 - 48.4500 225.0000 5.3033 - 48.5000 217.0000 5.2082 - 48.5500 217.0000 5.2082 - 48.6000 223.0000 5.2797 - 48.6500 223.0000 5.2797 - 48.7000 220.0000 5.2440 - 48.7500 223.0000 5.2797 - 48.8000 226.0000 5.3151 - 48.8500 248.0000 5.5678 - 48.9000 258.0000 5.6789 - 48.9500 274.0000 5.8523 - 49.0000 297.0000 6.0930 - 49.0500 324.0000 6.3640 - 49.1000 355.0000 6.6615 - 49.1500 393.0000 7.0089 - 49.2000 458.0000 7.5664 - 49.2500 528.0000 8.1240 - 49.3000 589.0000 8.5805 - 49.3500 688.0000 9.2736 - 49.4000 781.0000 9.8805 - 49.4500 840.0000 10.2470 - 49.5000 876.0000 10.4642 - 49.5500 874.0000 10.4523 - 49.6000 832.0000 10.1980 - 49.6500 765.0000 9.7788 - 49.7000 682.0000 9.2331 - 49.7500 613.0000 8.7536 - 49.8000 524.0000 8.0932 - 49.8500 455.0000 7.5416 - 49.9000 408.0000 7.1414 - 49.9500 384.0000 6.9282 - 50.0000 366.0000 6.7639 - 50.0500 375.0000 6.8465 - 50.1000 392.0000 7.0000 - 50.1500 426.0000 7.2973 - 50.2000 470.0000 7.6649 - 50.2500 519.0000 8.0545 - 50.3000 588.0000 8.5732 - 50.3500 639.0000 8.9373 - 50.4000 681.0000 9.2263 - 50.4500 704.0000 9.3808 - 50.5000 693.0000 9.3073 - 50.5500 650.0000 9.0139 - 50.6000 600.0000 8.6603 - 50.6500 540.0000 8.2158 - 50.7000 478.0000 7.7298 - 50.7500 412.0000 7.1764 - 50.8000 376.0000 6.8557 - 50.8500 345.0000 6.5670 - 50.9000 330.0000 6.4226 - 50.9500 337.0000 6.4904 - 51.0000 350.0000 6.6144 - 51.0500 383.0000 6.9192 - 51.1000 426.0000 7.2973 - 51.1500 493.0000 7.8502 - 51.2000 571.0000 8.4484 - 51.2500 676.0000 9.1924 - 51.3000 803.0000 10.0187 - 51.3500 920.0000 10.7238 - 51.4000 1071.0000 11.5704 - 51.4500 1183.0000 12.1604 - 51.5000 1247.0000 12.4850 - 51.5500 1255.0000 12.5250 - 51.6000 1251.0000 12.5050 - 51.6500 1183.0000 12.1604 - 51.7000 1068.0000 11.5542 - 51.7500 945.0000 10.8685 - 51.8000 861.0000 10.3742 - 51.8500 811.0000 10.0685 - 51.9000 813.0000 10.0809 - 51.9500 872.0000 10.4403 - 52.0000 969.0000 11.0057 - 52.0500 1120.0000 11.8322 - 52.1000 1309.0000 12.7916 - 52.1500 1527.0000 13.8158 - 52.2000 1706.0000 14.6031 - 52.2500 1856.0000 15.2315 - 52.3000 1888.0000 15.3623 - 52.3500 1837.0000 15.1534 - 52.4000 1713.0000 14.6330 - 52.4500 1500.0000 13.6931 - 52.5000 1289.0000 12.6935 - 52.5500 1103.0000 11.7420 - 52.6000 904.0000 10.6301 - 52.6500 749.0000 9.6760 - 52.7000 627.0000 8.8530 - 52.7500 568.0000 8.4261 - 52.8000 551.0000 8.2991 - 52.8500 560.0000 8.3666 - 52.9000 586.0000 8.5586 - 52.9500 634.0000 8.9022 - 53.0000 691.0000 9.2938 - 53.0500 751.0000 9.6889 - 53.1000 799.0000 9.9937 - 53.1500 792.0000 9.9499 - 53.2000 820.0000 10.1242 - 53.2500 774.0000 9.8362 - 53.3000 736.0000 9.5917 - 53.3500 680.0000 9.2195 - 53.4000 627.0000 8.8530 - 53.4500 562.0000 8.3815 - 53.5000 514.0000 8.0156 - 53.5500 459.0000 7.5746 - 53.6000 424.0000 7.2801 - 53.6500 362.0000 6.7268 - 53.7000 333.0000 6.4517 - 53.7500 318.0000 6.3048 - 53.8000 300.0000 6.1237 - 53.8500 287.0000 5.9896 - 53.9000 265.0000 5.7554 - 53.9500 266.0000 5.7663 - 54.0000 262.0000 5.7228 - 54.0500 263.0000 5.4058 - 54.1000 255.0000 5.3229 - 54.1500 270.0000 5.4772 - 54.2000 278.0000 5.5578 - 54.2500 289.0000 5.6667 - 54.3000 317.0000 5.9348 - 54.3500 343.0000 6.1734 - 54.4000 400.0000 6.6667 - 54.4500 468.0000 7.2111 - 54.5000 561.0000 7.8951 - 54.5500 695.0000 8.7876 - 54.6000 873.0000 9.8489 - 54.6500 1100.0000 11.0554 - 54.7000 1372.0000 12.3468 - 54.7500 1660.0000 13.5810 - 54.8000 1954.0000 14.7347 - 54.8500 2224.0000 15.7198 - 54.9000 2400.0000 16.3299 - 54.9500 2459.0000 16.5294 - 55.0000 2435.0000 16.4486 - 55.0500 2245.0000 15.7938 - 55.1000 1986.0000 14.8549 - 55.1500 1671.0000 13.6260 - 55.2000 1358.0000 12.2837 - 55.2500 1086.0000 10.9848 - 55.3000 868.0000 9.8206 - 55.3500 682.0000 8.7050 - 55.4000 578.0000 8.0139 - 55.4500 521.0000 7.6085 - 55.5000 512.0000 7.5425 - 55.5500 537.0000 7.7244 - 55.6000 600.0000 8.1650 - 55.6500 704.0000 8.8443 - 55.7000 855.0000 9.7468 - 55.7500 1032.0000 10.7083 - 55.8000 1232.0000 11.7000 - 55.8500 1466.0000 12.7628 - 55.9000 1693.0000 13.7154 - 55.9500 1866.0000 14.3991 - 56.0000 1966.0000 14.7799 - 56.0500 2024.0000 14.9963 - 56.1000 2016.0000 14.9666 - 56.1500 1846.0000 14.3217 - 56.2000 1667.0000 13.6096 - 56.2500 1429.0000 12.6007 - 56.3000 1179.0000 11.4455 - 56.3500 950.0000 10.2740 - 56.4000 763.0000 9.2075 - 56.4500 599.0000 8.1582 - 56.5000 484.0000 7.3333 - 56.5500 404.0000 6.6999 - 56.6000 351.0000 6.2450 - 56.6500 304.0000 5.8119 - 56.7000 284.0000 5.6174 - 56.7500 273.0000 5.5076 - 56.8000 259.0000 5.3645 - 56.8500 251.0000 5.2810 - 56.9000 251.0000 5.2810 - 56.9500 252.0000 5.2915 - 57.0000 245.0000 5.2175 - 57.0500 259.0000 5.3645 - 57.1000 250.0000 5.2705 - 57.1500 253.0000 5.3020 - 57.2000 256.0000 5.3333 - 57.2500 264.0000 5.4160 - 57.3000 285.0000 5.6273 - 57.3500 301.0000 5.7831 - 57.4000 346.0000 6.2004 - 57.4500 390.0000 6.5828 - 57.5000 458.0000 7.1336 - 57.5500 528.0000 7.6594 - 57.6000 624.0000 8.3267 - 57.6500 733.0000 9.0247 - 57.7000 829.0000 9.5975 - 57.7500 916.0000 10.0885 - 57.8000 988.0000 10.4775 - 57.8500 994.0000 10.5093 - 57.9000 929.0000 10.1598 - 57.9500 843.0000 9.6782 - 58.0000 742.0000 9.0799 - 58.0500 638.0000 8.4196 - 58.1000 527.0000 7.6522 - 58.1500 434.0000 6.9442 - 58.2000 377.0000 6.4722 - 58.2500 320.0000 5.9628 - 58.3000 282.0000 5.5976 - 58.3500 273.0000 5.5076 - 58.4000 256.0000 5.3333 - 58.4500 243.0000 5.1962 - 58.5000 240.0000 5.1640 - 58.5500 240.0000 5.1640 - 58.6000 230.0000 5.0553 - 58.6500 220.0000 4.9441 - 58.7000 230.0000 5.0553 - 58.7500 227.0000 5.0222 - 58.8000 224.0000 4.9889 - 58.8500 219.0000 4.9329 - 58.9000 227.0000 5.0222 - 58.9500 227.0000 5.0222 - 59.0000 224.0000 4.9889 - 59.0500 222.0000 4.9666 - 59.1000 223.0000 4.9777 - 59.1500 217.0000 4.9103 - 59.2000 213.0000 4.8648 - 59.2500 216.0000 4.8990 - 59.3000 219.0000 4.9329 - 59.3500 219.0000 4.9329 - 59.4000 218.0000 4.9216 - 59.4500 220.0000 4.9441 - 59.5000 220.0000 4.9441 - 59.5500 220.0000 4.9441 - 59.6000 223.0000 4.9777 - 59.6500 233.0000 5.0881 - 59.7000 237.0000 5.1316 - 59.7500 249.0000 5.2599 - 59.8000 258.0000 5.3541 - 59.8500 261.0000 5.3852 - 59.9000 283.0000 5.6075 - 59.9500 304.0000 5.8119 - 60.0000 324.0000 5.6921 - 60.0500 347.0000 5.8907 - 60.1000 353.0000 5.9414 - 60.1500 359.0000 5.9917 - 60.2000 363.0000 6.0249 - 60.2500 352.0000 5.9330 - 60.3000 341.0000 5.8395 - 60.3500 330.0000 5.7446 - 60.4000 308.0000 5.5498 - 60.4500 291.0000 5.3944 - 60.5000 271.0000 5.2058 - 60.5500 254.0000 5.0398 - 60.6000 245.0000 4.9497 - 60.6500 245.0000 4.9497 - 60.7000 239.0000 4.8888 - 60.7500 228.0000 4.7749 - 60.8000 217.0000 4.6583 - 60.8500 217.0000 4.6583 - 60.9000 218.0000 4.6690 - 60.9500 223.0000 4.7223 - 61.0000 207.0000 4.5497 - 61.0500 218.0000 4.6690 - 61.1000 222.0000 4.7117 - 61.1500 215.0000 4.6368 - 61.2000 210.0000 4.5826 - 61.2500 216.0000 4.6476 - 61.3000 213.0000 4.6152 - 61.3500 212.0000 4.6043 - 61.4000 215.0000 4.6368 - 61.4500 212.0000 4.6043 - 61.5000 214.0000 4.6260 - 61.5500 211.0000 4.5935 - 61.6000 214.0000 4.6260 - 61.6500 217.0000 4.6583 - 61.7000 205.0000 4.5277 - 61.7500 207.0000 4.5497 - 61.8000 213.0000 4.6152 - 61.8500 208.0000 4.5607 - 61.9000 211.0000 4.5935 - 61.9500 205.0000 4.5277 - 62.0000 214.0000 4.6260 - 62.0500 213.0000 4.6152 - 62.1000 212.0000 4.6043 - 62.1500 212.0000 4.6043 - 62.2000 213.0000 4.6152 - 62.2500 207.0000 4.5497 - 62.3000 203.0000 4.5056 - 62.3500 211.0000 4.5935 - 62.4000 211.0000 4.5935 - 62.4500 214.0000 4.6260 - 62.5000 214.0000 4.6260 - 62.5500 207.0000 4.5497 - 62.6000 203.0000 4.5056 - 62.6500 212.0000 4.6043 - 62.7000 212.0000 4.6043 - 62.7500 214.0000 4.6260 - 62.8000 213.0000 4.6152 - 62.8500 202.0000 4.4944 - 62.9000 210.0000 4.5826 - 62.9500 211.0000 4.5935 - 63.0000 211.0000 4.5935 - 63.0500 214.0000 4.6260 - 63.1000 221.0000 4.7011 - 63.1500 217.0000 4.6583 - 63.2000 212.0000 4.6043 - 63.2500 214.0000 4.6260 - 63.3000 219.0000 4.6797 - 63.3500 223.0000 4.7223 - 63.4000 225.0000 4.7434 - 63.4500 227.0000 4.7645 - 63.5000 235.0000 4.8477 - 63.5500 240.0000 4.8990 - 63.6000 243.0000 4.9295 - 63.6500 252.0000 5.0200 - 63.7000 249.0000 4.9900 - 63.7500 249.0000 4.9900 - 63.8000 255.0000 5.0498 - 63.8500 262.0000 5.1186 - 63.9000 282.0000 5.3104 - 63.9500 308.0000 5.5498 - 64.0000 351.0000 5.9245 - 64.0500 398.0000 6.3087 - 64.1000 470.0000 6.8557 - 64.1500 525.0000 7.2457 - 64.2000 596.0000 7.7201 - 64.2500 646.0000 8.0374 - 64.3000 681.0000 8.2523 - 64.3500 665.0000 8.1548 - 64.4000 615.0000 7.8422 - 64.4500 563.0000 7.5033 - 64.5000 484.0000 6.9570 - 64.5500 421.0000 6.4885 - 64.6000 364.0000 6.0332 - 64.6500 317.0000 5.6303 - 64.7000 289.0000 5.3759 - 64.7500 261.0000 5.1088 - 64.8000 245.0000 4.9497 - 64.8500 233.0000 4.8270 - 64.9000 228.0000 4.7749 - 64.9500 219.0000 4.6797 - 65.0000 219.0000 4.6797 - 65.0500 217.0000 4.6583 - 65.1000 216.0000 4.6476 - 65.1500 221.0000 4.7011 - 65.2000 215.0000 4.6368 - 65.2500 215.0000 4.6368 - 65.3000 210.0000 4.5826 - 65.3500 212.0000 4.6043 - 65.4000 212.0000 4.6043 - 65.4500 204.0000 4.5166 - 65.5000 209.0000 4.5717 - 65.5500 206.0000 4.5387 - 65.6000 216.0000 4.6476 - 65.6500 207.0000 4.5497 - 65.7000 214.0000 4.6260 - 65.7500 207.0000 4.5497 - 65.8000 209.0000 4.5717 - 65.8500 218.0000 4.6690 - 65.9000 215.0000 4.6368 - 65.9500 222.0000 4.7117 - 66.0000 226.0000 4.7539 - 66.0500 230.0000 4.7958 - 66.1000 239.0000 4.8888 - 66.1500 249.0000 4.9900 - 66.2000 263.0000 5.1284 - 66.2500 275.0000 5.2440 - 66.3000 292.0000 5.4037 - 66.3500 317.0000 5.6303 - 66.4000 323.0000 5.6833 - 66.4500 341.0000 5.8395 - 66.5000 350.0000 5.9161 - 66.5500 330.0000 5.7446 - 66.6000 320.0000 5.6569 - 66.6500 307.0000 5.5408 - 66.7000 284.0000 5.3292 - 66.7500 275.0000 5.2440 - 66.8000 265.0000 5.1478 - 66.8500 269.0000 5.1865 - 66.9000 275.0000 5.2440 - 66.9500 292.0000 5.4037 - 67.0000 311.0000 5.5767 - 67.0500 338.0000 5.8138 - 67.1000 387.0000 6.2209 - 67.1500 413.0000 6.4265 - 67.2000 463.0000 6.8044 - 67.2500 510.0000 7.1414 - 67.3000 534.0000 7.3075 - 67.3500 559.0000 7.4766 - 67.4000 539.0000 7.3417 - 67.4500 533.0000 7.3007 - 67.5000 500.0000 7.0711 - 67.5500 471.0000 6.8629 - 67.6000 455.0000 6.7454 - 67.6500 410.0000 6.4031 - 67.7000 373.0000 6.1074 - 67.7500 342.0000 5.8481 - 67.8000 307.0000 5.5408 - 67.8500 288.0000 5.3666 - 67.9000 286.0000 5.3479 - 67.9500 281.0000 5.3009 - 68.0000 292.0000 5.4037 - 68.0500 291.0000 5.3944 - 68.1000 312.0000 5.5857 - 68.1500 326.0000 5.7096 - 68.2000 336.0000 5.7966 - 68.2500 346.0000 5.8822 - 68.3000 341.0000 5.8395 - 68.3500 327.0000 5.7184 - 68.4000 305.0000 5.5227 - 68.4500 277.0000 5.2631 - 68.5000 267.0000 5.1672 - 68.5500 249.0000 4.9900 - 68.6000 229.0000 4.7854 - 68.6500 221.0000 4.7011 - 68.7000 220.0000 4.6904 - 68.7500 217.0000 4.6583 - 68.8000 211.0000 4.5935 - 68.8500 204.0000 4.5166 - 68.9000 203.0000 4.5056 - 68.9500 220.0000 4.6904 - 69.0000 217.0000 4.6583 - 69.0500 217.0000 4.6583 - 69.1000 214.0000 4.6260 - 69.1500 205.0000 4.5277 - 69.2000 205.0000 4.5277 - 69.2500 211.0000 4.5935 - 69.3000 206.0000 4.5387 - 69.3500 208.0000 4.5607 - 69.4000 201.0000 4.4833 - 69.4500 208.0000 4.5607 - 69.5000 214.0000 4.6260 - 69.5500 212.0000 4.6043 - 69.6000 206.0000 4.5387 - 69.6500 216.0000 4.6476 - 69.7000 219.0000 4.6797 - 69.7500 215.0000 4.6368 - 69.8000 217.0000 4.6583 - 69.8500 211.0000 4.5935 - 69.9000 214.0000 4.6260 - 69.9500 215.0000 4.6368 - 70.0000 224.0000 4.7329 - 70.0500 217.0000 4.6583 - 70.1000 215.0000 4.6368 - 70.1500 218.0000 4.6690 - 70.2000 218.0000 4.6690 - 70.2500 228.0000 4.7749 - 70.3000 227.0000 4.7645 - 70.3500 228.0000 4.7749 - 70.4000 225.0000 4.7434 - 70.4500 219.0000 4.6797 - 70.5000 216.0000 4.6476 - 70.5500 219.0000 4.6797 - 70.6000 218.0000 4.6690 - 70.6500 214.0000 4.6260 - 70.7000 212.0000 4.6043 - 70.7500 221.0000 4.7011 - 70.8000 214.0000 4.6260 - 70.8500 208.0000 4.5607 - 70.9000 204.0000 4.5166 - 70.9500 209.0000 4.5717 - 71.0000 209.0000 4.5717 - 71.0500 208.0000 4.5607 - 71.1000 212.0000 4.6043 - 71.1500 213.0000 4.6152 - 71.2000 218.0000 4.6690 - 71.2500 212.0000 4.6043 - 71.3000 205.0000 4.5277 - 71.3500 207.0000 4.5497 - 71.4000 204.0000 4.5166 - 71.4500 206.0000 4.5387 - 71.5000 211.0000 4.5935 - 71.5500 216.0000 4.6476 - 71.6000 214.0000 4.6260 - 71.6500 210.0000 4.5826 - 71.7000 219.0000 4.6797 - 71.7500 222.0000 4.7117 - 71.8000 224.0000 4.7329 - 71.8500 231.0000 4.8062 - 71.9000 227.0000 4.7645 - 71.9500 237.0000 4.8683 - 72.0000 235.0000 4.8477 - 72.0500 238.0000 4.8785 - 72.1000 245.0000 4.9497 - 72.1500 242.0000 4.9193 - 72.2000 248.0000 4.9800 - 72.2500 246.0000 4.9598 - 72.3000 243.0000 4.9295 - 72.3500 253.0000 5.0299 - 72.4000 259.0000 5.0892 - 72.4500 278.0000 5.2726 - 72.5000 281.0000 5.3009 - 72.5500 297.0000 5.4498 - 72.6000 310.0000 5.5678 - 72.6500 324.0000 5.6921 - 72.7000 322.0000 5.6745 - 72.7500 311.0000 5.5767 - 72.8000 295.0000 5.4314 - 72.8500 281.0000 5.3009 - 72.9000 259.0000 5.0892 - 72.9500 250.0000 5.0000 - 73.0000 239.0000 4.8888 - 73.0500 233.0000 4.8270 - 73.1000 227.0000 4.7645 - 73.1500 226.0000 4.7539 - 73.2000 223.0000 4.7223 - 73.2500 211.0000 4.5935 - 73.3000 209.0000 4.5717 - 73.3500 217.0000 4.6583 - 73.4000 214.0000 4.6260 - 73.4500 213.0000 4.6152 - 73.5000 217.0000 4.6583 - 73.5500 220.0000 4.6904 - 73.6000 210.0000 4.5826 - 73.6500 209.0000 4.5717 - 73.7000 215.0000 4.6368 - 73.7500 218.0000 4.6690 - 73.8000 215.0000 4.6368 - 73.8500 217.0000 4.6583 - 73.9000 221.0000 4.7011 - 73.9500 217.0000 4.6583 - 74.0000 219.0000 4.6797 - 74.0500 220.0000 4.6904 - 74.1000 228.0000 4.7749 - 74.1500 229.0000 4.7854 - 74.2000 230.0000 4.7958 - 74.2500 234.0000 4.8374 - 74.3000 251.0000 5.0100 - 74.3500 261.0000 5.1088 - 74.4000 288.0000 5.3666 - 74.4500 313.0000 5.5946 - 74.5000 362.0000 6.0166 - 74.5500 424.0000 6.5115 - 74.6000 524.0000 7.2388 - 74.6500 646.0000 8.0374 - 74.7000 781.0000 8.8374 - 74.7500 920.0000 9.5917 - 74.8000 1024.0000 10.1193 - 74.8500 1120.0000 10.5830 - 74.9000 1187.0000 10.8950 - 74.9500 1187.0000 10.8950 - 75.0000 1166.0000 10.7981 - 75.0500 1114.0000 10.5546 - 75.1000 1044.0000 10.2176 - 75.1500 991.0000 9.9549 - 75.2000 927.0000 9.6281 - 75.2500 823.0000 9.0719 - 75.3000 717.0000 8.4676 - 75.3500 619.0000 7.8677 - 75.4000 520.0000 7.2111 - 75.4500 421.0000 6.4885 - 75.5000 353.0000 5.9414 - 75.5500 308.0000 5.5498 - 75.6000 273.0000 5.2249 - 75.6500 256.0000 5.0596 - 75.7000 245.0000 4.9497 - 75.7500 234.0000 4.8374 - 75.8000 230.0000 4.7958 - 75.8500 224.0000 4.7329 - 75.9000 232.0000 4.8166 - 75.9500 226.0000 4.7539 - 76.0000 222.0000 4.7117 - 76.0500 222.0000 4.7117 - 76.1000 227.0000 4.7645 - 76.1500 225.0000 4.7434 - 76.2000 226.0000 4.7539 - 76.2500 227.0000 4.7645 - 76.3000 229.0000 4.7854 - 76.3500 235.0000 4.8477 - 76.4000 233.0000 4.8270 - 76.4500 243.0000 4.9295 - 76.5000 238.0000 4.8785 - 76.5500 237.0000 4.8683 - 76.6000 236.0000 4.8580 - 76.6500 232.0000 4.8166 - 76.7000 231.0000 4.8062 - 76.7500 227.0000 4.7645 - 76.8000 225.0000 4.7434 - 76.8500 220.0000 4.6904 - 76.9000 218.0000 4.6690 - 76.9500 215.0000 4.6368 - 77.0000 219.0000 4.6797 - 77.0500 224.0000 4.7329 - 77.1000 225.0000 4.7434 - 77.1500 222.0000 4.7117 - 77.2000 231.0000 4.8062 - 77.2500 243.0000 4.9295 - 77.3000 250.0000 5.0000 - 77.3500 269.0000 5.1865 - 77.4000 286.0000 5.3479 - 77.4500 310.0000 5.5678 - 77.5000 325.0000 5.7009 - 77.5500 332.0000 5.7619 - 77.6000 337.0000 5.8052 - 77.6500 329.0000 5.7359 - 77.7000 303.0000 5.5045 - 77.7500 278.0000 5.2726 - 77.8000 268.0000 5.1769 - 77.8500 252.0000 5.0200 - 77.9000 236.0000 4.8580 - 77.9500 228.0000 4.7749 - 78.0000 219.0000 4.6797 - 78.0500 225.0000 4.7434 - 78.1000 222.0000 4.7117 - 78.1500 214.0000 4.6260 - 78.2000 228.0000 4.7749 - 78.2500 221.0000 4.7011 - 78.3000 217.0000 4.6583 - 78.3500 221.0000 4.7011 - 78.4000 222.0000 4.7117 - 78.4500 226.0000 4.7539 - 78.5000 237.0000 4.8683 - 78.5500 246.0000 4.9598 - 78.6000 255.0000 5.0498 - 78.6500 269.0000 5.1865 - 78.7000 284.0000 5.3292 - 78.7500 302.0000 5.4955 - 78.8000 313.0000 5.5946 - 78.8500 327.0000 5.7184 - 78.9000 321.0000 5.6657 - 78.9500 333.0000 5.7706 - 79.0000 331.0000 5.7533 - 79.0500 332.0000 5.7619 - 79.1000 358.0000 5.9833 - 79.1500 402.0000 6.3403 - 79.2000 460.0000 6.7823 - 79.2500 557.0000 7.4632 - 79.3000 660.0000 8.1240 - 79.3500 769.0000 8.7693 - 79.4000 859.0000 9.2682 - 79.4500 934.0000 9.6644 - 79.5000 955.0000 9.7724 - 79.5500 921.0000 9.5969 - 79.6000 824.0000 9.0774 - 79.6500 694.0000 8.3307 - 79.7000 578.0000 7.6026 - 79.7500 474.0000 6.8848 - 79.8000 402.0000 6.3403 - 79.8500 344.0000 5.8652 - 79.9000 306.0000 5.5317 - 79.9500 300.0000 5.4772 - 80.0000 292.0000 5.4037 - 80.0500 292.0000 5.4037 - 80.1000 302.0000 5.4955 - 80.1500 304.0000 5.5136 - 80.2000 306.0000 5.5317 - 80.2500 305.0000 5.5227 - 80.3000 303.0000 5.5045 - 80.3500 299.0000 5.4681 - 80.4000 278.0000 5.2726 - 80.4500 259.0000 5.0892 - 80.5000 257.0000 5.0695 - 80.5500 245.0000 4.9497 - 80.6000 237.0000 4.8683 - 80.6500 240.0000 4.8990 - 80.7000 233.0000 4.8270 - 80.7500 232.0000 4.8166 - 80.8000 235.0000 4.8477 - 80.8500 241.0000 4.9092 - 80.9000 257.0000 5.0695 - 80.9500 274.0000 5.2345 - 81.0000 292.0000 5.4037 - 81.0500 309.0000 5.5588 - 81.1000 333.0000 5.7706 - 81.1500 360.0000 6.0000 - 81.2000 381.0000 6.1725 - 81.2500 387.0000 6.2209 - 81.3000 387.0000 6.2209 - 81.3500 386.0000 6.2129 - 81.4000 382.0000 6.1806 - 81.4500 368.0000 6.0663 - 81.5000 363.0000 6.0249 - 81.5500 352.0000 5.9330 - 81.6000 337.0000 5.8052 - 81.6500 321.0000 5.6657 - 81.7000 297.0000 5.4498 - 81.7500 281.0000 5.3009 - 81.8000 265.0000 5.1478 - 81.8500 255.0000 5.0498 - 81.9000 251.0000 5.0100 - 81.9500 237.0000 4.8683 - 82.0000 238.0000 4.8785 - 82.0500 237.0000 4.8683 - 82.1000 228.0000 4.7749 - 82.1500 240.0000 4.8990 - 82.2000 234.0000 4.8374 - 82.2500 226.0000 4.7539 - 82.3000 229.0000 4.7854 - 82.3500 228.0000 4.7749 - 82.4000 233.0000 4.8270 - 82.4500 243.0000 4.9295 - 82.5000 241.0000 4.9092 - 82.5500 257.0000 5.0695 - 82.6000 279.0000 5.2820 - 82.6500 305.0000 5.5227 - 82.7000 345.0000 5.8737 - 82.7500 410.0000 6.4031 - 82.8000 455.0000 6.7454 - 82.8500 545.0000 7.3824 - 82.9000 622.0000 7.8867 - 82.9500 673.0000 8.2037 - 83.0000 725.0000 8.5147 - 83.0500 717.0000 8.4676 - 83.1000 661.0000 8.1302 - 83.1500 592.0000 7.6942 - 83.2000 518.0000 7.1972 - 83.2500 443.0000 6.6558 - 83.3000 371.0000 6.0910 - 83.3500 336.0000 5.7966 - 83.4000 290.0000 5.3852 - 83.4500 265.0000 5.1478 - 83.5000 252.0000 5.0200 - 83.5500 250.0000 5.0000 - 83.6000 244.0000 4.9396 - 83.6500 242.0000 4.9193 - 83.7000 241.0000 4.9092 - 83.7500 243.0000 4.9295 - 83.8000 248.0000 4.9800 - 83.8500 253.0000 5.0299 - 83.9000 252.0000 5.0200 - 83.9500 264.0000 5.1381 - 84.0000 266.0000 5.1575 - 84.0500 282.0000 5.3104 - 84.1000 291.0000 5.3944 - 84.1500 313.0000 5.5946 - 84.2000 346.0000 5.8822 - 84.2500 374.0000 6.1156 - 84.3000 415.0000 6.4420 - 84.3500 430.0000 6.5574 - 84.4000 433.0000 6.5803 - 84.4500 430.0000 6.5574 - 84.5000 406.0000 6.3718 - 84.5500 384.0000 6.1968 - 84.6000 349.0000 5.9076 - 84.6500 318.0000 5.6391 - 84.7000 307.0000 5.5408 - 84.7500 298.0000 5.4589 - 84.8000 296.0000 5.4406 - 84.8500 304.0000 5.5136 - 84.9000 313.0000 5.5946 - 84.9500 328.0000 5.7271 - 85.0000 346.0000 5.8822 - 85.0500 341.0000 5.8395 - 85.1000 335.0000 5.7879 - 85.1500 324.0000 5.6921 - 85.2000 336.0000 5.7966 - 85.2500 341.0000 5.8395 - 85.3000 341.0000 5.8395 - 85.3500 370.0000 6.0828 - 85.4000 414.0000 6.4343 - 85.4500 442.0000 6.6483 - 85.5000 490.0000 7.0000 - 85.5500 520.0000 7.2111 - 85.6000 532.0000 7.2938 - 85.6500 548.0000 7.4027 - 85.7000 561.0000 7.4900 - 85.7500 567.0000 7.5299 - 85.8000 585.0000 7.6485 - 85.8500 584.0000 7.6420 - 85.9000 558.0000 7.4699 - 85.9500 527.0000 7.2595 - 86.0000 481.0000 6.9354 - 86.0500 424.0000 6.5115 - 86.1000 370.0000 6.0828 - 86.1500 333.0000 5.7706 - 86.2000 312.0000 5.5857 - 86.2500 301.0000 5.4863 - 86.3000 307.0000 5.5408 - 86.3500 314.0000 5.6036 - 86.4000 340.0000 5.8310 - 86.4500 379.0000 6.1563 - 86.5000 427.0000 6.5345 - 86.5500 467.0000 6.8337 - 86.6000 535.0000 7.3144 - 86.6500 584.0000 7.6420 - 86.7000 602.0000 7.7589 - 86.7500 580.0000 7.6158 - 86.8000 532.0000 7.2938 - 86.8500 481.0000 6.9354 - 86.9000 426.0000 6.5269 - 86.9500 379.0000 6.1563 - 87.0000 329.0000 5.7359 - 87.0500 303.0000 5.5045 - 87.1000 288.0000 5.3666 - 87.1500 271.0000 5.2058 - 87.2000 269.0000 5.1865 - 87.2500 267.0000 5.1672 - 87.3000 263.0000 5.1284 - 87.3500 267.0000 5.1672 - 87.4000 260.0000 5.0990 - 87.4500 260.0000 5.0990 - 87.5000 263.0000 5.1284 - 87.5500 263.0000 5.1284 - 87.6000 270.0000 5.1962 - 87.6500 278.0000 5.2726 - 87.7000 293.0000 5.4129 - 87.7500 318.0000 5.6391 - 87.8000 364.0000 6.0332 - 87.8500 424.0000 6.5115 - 87.9000 512.0000 7.1554 - 87.9500 643.0000 8.0187 - 88.0000 817.0000 9.0388 - 88.0500 982.0000 9.9096 - 88.1000 1163.0000 10.7842 - 88.1500 1289.0000 11.3534 - 88.2000 1373.0000 11.7175 - 88.2500 1393.0000 11.8025 - 88.3000 1348.0000 11.6103 - 88.3500 1244.0000 11.1535 - 88.4000 1157.0000 10.7564 - 88.4500 1077.0000 10.3779 - 88.5000 1020.0000 10.0995 - 88.5500 965.0000 9.8234 - 88.6000 907.0000 9.5237 - 88.6500 858.0000 9.2628 - 88.7000 771.0000 8.7807 - 88.7500 647.0000 8.0436 - 88.8000 555.0000 7.4498 - 88.8500 468.0000 6.8411 - 88.9000 405.0000 6.3640 - 88.9500 348.0000 5.8992 - 89.0000 316.0000 5.6214 - 89.0500 291.0000 5.3944 - 89.1000 277.0000 5.2631 - 89.1500 278.0000 5.2726 - 89.2000 270.0000 5.1962 - 89.2500 262.0000 5.1186 - 89.3000 268.0000 5.1769 - 89.3500 270.0000 5.1962 - 89.4000 279.0000 5.2820 - 89.4500 287.0000 5.3572 - 89.5000 300.0000 5.4772 - 89.5500 319.0000 5.6480 - 89.6000 347.0000 5.8907 - 89.6500 378.0000 6.1482 - 89.7000 420.0000 6.4807 - 89.7500 469.0000 6.8484 - 89.8000 536.0000 7.3212 - 89.8500 645.0000 8.0312 - 89.9000 773.0000 8.7920 - 89.9500 925.0000 9.6177 - 90.0000 1115.0000 10.5594 - 90.0500 1254.0000 11.1982 - 90.1000 1367.0000 11.6919 - 90.1500 1400.0000 11.8322 - 90.2000 1327.0000 11.5195 - 90.2500 1188.0000 10.8995 - 90.3000 1038.0000 10.1882 - 90.3500 879.0000 9.3755 - 90.4000 738.0000 8.5907 - 90.4500 644.0000 8.0250 - 90.5000 594.0000 7.7071 - 90.5500 601.0000 7.7524 - 90.6000 643.0000 8.0187 - 90.6500 697.0000 8.3487 - 90.7000 786.0000 8.8657 - 90.7500 842.0000 9.1761 - 90.8000 847.0000 9.2033 - 90.8500 791.0000 8.8938 - 90.9000 702.0000 8.3785 - 90.9500 592.0000 7.6942 - 91.0000 508.0000 7.1274 - 91.0500 418.0000 6.4653 - 91.1000 362.0000 6.0166 - 91.1500 328.0000 5.7271 - 91.2000 299.0000 5.4681 - 91.2500 279.0000 5.2820 - 91.3000 270.0000 5.1962 - 91.3500 257.0000 5.0695 - 91.4000 253.0000 5.0299 - 91.4500 258.0000 5.0794 - 91.5000 257.0000 5.0695 - 91.5500 249.0000 4.9900 - 91.6000 245.0000 4.9497 - 91.6500 257.0000 5.0695 - 91.7000 260.0000 5.0990 - 91.7500 284.0000 5.3292 - 91.8000 296.0000 5.4406 - 91.8500 322.0000 5.6745 - 91.9000 343.0000 5.8566 - 91.9500 382.0000 6.1806 - 92.0000 405.0000 6.3640 - 92.0500 411.0000 6.4109 - 92.1000 416.0000 6.4498 - 92.1500 406.0000 6.3718 - 92.2000 372.0000 6.0992 - 92.2500 353.0000 5.9414 - 92.3000 330.0000 5.7446 - 92.3500 317.0000 5.6303 - 92.4000 313.0000 5.5946 - 92.4500 312.0000 5.5857 - 92.5000 309.0000 5.5588 - 92.5500 303.0000 5.5045 - 92.6000 288.0000 5.3666 - 92.6500 276.0000 5.2536 - 92.7000 264.0000 5.1381 - 92.7500 246.0000 4.9598 - 92.8000 249.0000 4.9900 - 92.8500 241.0000 4.9092 - 92.9000 251.0000 5.0100 - 92.9500 243.0000 4.9295 - 93.0000 246.0000 4.9598 - 93.0500 246.0000 4.9598 - 93.1000 249.0000 4.9900 - 93.1500 244.0000 4.9396 - 93.2000 252.0000 5.0200 - 93.2500 252.0000 5.0200 - 93.3000 258.0000 5.0794 - 93.3500 265.0000 5.1478 - 93.4000 263.0000 5.1284 - 93.4500 284.0000 5.3292 - 93.5000 299.0000 5.4681 - 93.5500 320.0000 5.6569 - 93.6000 344.0000 5.8652 - 93.6500 363.0000 6.0249 - 93.7000 372.0000 6.0992 - 93.7500 358.0000 5.9833 - 93.8000 351.0000 5.9245 - 93.8500 354.0000 5.9498 - 93.9000 330.0000 5.7446 - 93.9500 322.0000 5.6745 - 94.0000 334.0000 5.7793 - 94.0500 339.0000 5.8224 - 94.1000 345.0000 5.8737 - 94.1500 357.0000 5.9749 - 94.2000 360.0000 6.0000 - 94.2500 358.0000 5.9833 - 94.3000 372.0000 6.0992 - 94.3500 425.0000 6.5192 - 94.4000 511.0000 7.1484 - 94.4500 626.0000 7.9120 - 94.5000 770.0000 8.7750 - 94.5500 946.0000 9.7263 - 94.6000 1118.0000 10.5736 - 94.6500 1205.0000 10.9772 - 94.7000 1227.0000 11.0770 - 94.7500 1157.0000 10.7564 - 94.8000 1041.0000 10.2029 - 94.8500 873.0000 9.3434 - 94.9000 715.0000 8.4558 - 94.9500 562.0000 7.4967 - 95.0000 446.0000 6.6783 - 95.0500 377.0000 6.1400 - 95.1000 332.0000 5.7619 - 95.1500 297.0000 5.4498 - 95.2000 282.0000 5.3104 - 95.2500 276.0000 5.2536 - 95.3000 264.0000 5.1381 - 95.3500 261.0000 5.1088 - 95.4000 266.0000 5.1575 - 95.4500 261.0000 5.1088 - 95.5000 253.0000 5.0299 - 95.5500 258.0000 5.0794 - 95.6000 262.0000 5.1186 - 95.6500 260.0000 5.0990 - 95.7000 283.0000 5.3198 - 95.7500 307.0000 5.5408 - 95.8000 344.0000 5.8652 - 95.8500 402.0000 6.3403 - 95.9000 453.0000 6.7305 - 95.9500 529.0000 7.2732 - 96.0000 604.0000 7.7717 - 96.0500 661.0000 8.1302 - 96.1000 672.0000 8.1976 - 96.1500 629.0000 7.9310 - 96.2000 588.0000 7.6681 - 96.2500 510.0000 7.1414 - 96.3000 440.0000 6.6332 - 96.3500 377.0000 6.1400 - 96.4000 330.0000 5.7446 - 96.4500 301.0000 5.4863 - 96.5000 280.0000 5.2915 - 96.5500 269.0000 5.1865 - 96.6000 258.0000 5.0794 - 96.6500 252.0000 5.0200 - 96.7000 251.0000 5.0100 - 96.7500 252.0000 5.0200 - 96.8000 256.0000 5.0596 - 96.8500 253.0000 5.0299 - 96.9000 253.0000 5.0299 - 96.9500 253.0000 5.0299 - 97.0000 262.0000 5.1186 - 97.0500 265.0000 5.1478 - 97.1000 284.0000 5.3292 - 97.1500 291.0000 5.3944 - 97.2000 323.0000 5.6833 - 97.2500 374.0000 6.1156 - 97.3000 431.0000 6.5651 - 97.3500 511.0000 7.1484 - 97.4000 602.0000 7.7589 - 97.4500 678.0000 8.2341 - 97.5000 743.0000 8.6197 - 97.5500 756.0000 8.6948 - 97.6000 717.0000 8.4676 - 97.6500 657.0000 8.1056 - 97.7000 581.0000 7.6223 - 97.7500 490.0000 7.0000 - 97.8000 418.0000 6.4653 - 97.8500 364.0000 6.0332 - 97.9000 335.0000 5.7879 - 97.9500 306.0000 5.5317 - 98.0000 290.0000 5.3852 - 98.0500 286.0000 5.3479 - 98.1000 283.0000 5.3198 - 98.1500 283.0000 5.3198 - 98.2000 274.0000 5.2345 - 98.2500 262.0000 5.1186 - 98.3000 266.0000 5.1575 - 98.3500 261.0000 5.1088 - 98.4000 261.0000 5.1088 - 98.4500 264.0000 5.1381 - 98.5000 269.0000 5.1865 - 98.5500 278.0000 5.2726 - 98.6000 288.0000 5.3666 - 98.6500 306.0000 5.5317 - 98.7000 319.0000 5.6480 - 98.7500 330.0000 5.7446 - 98.8000 343.0000 5.8566 - 98.8500 341.0000 5.8395 - 98.9000 325.0000 5.7009 - 98.9500 318.0000 5.6391 - 99.0000 298.0000 5.4589 - 99.0500 299.0000 5.4681 - 99.1000 288.0000 5.3666 - 99.1500 309.0000 5.5588 - 99.2000 344.0000 5.8652 - 99.2500 382.0000 6.1806 - 99.3000 422.0000 6.4962 - 99.3500 470.0000 6.8557 - 99.4000 512.0000 7.1554 - 99.4500 514.0000 7.1694 - 99.5000 515.0000 7.1764 - 99.5500 488.0000 6.9857 - 99.6000 440.0000 6.6332 - 99.6500 396.0000 6.2929 - 99.7000 366.0000 6.0498 - 99.7500 332.0000 5.7619 - 99.8000 311.0000 5.5767 - 99.8500 305.0000 5.5227 - 99.9000 300.0000 5.4772 - 99.9500 293.0000 5.4129 - 100.0000 286.0000 5.3479 - 100.0500 306.0000 5.5317 - 100.1000 313.0000 5.5946 - 100.1500 317.0000 5.6303 - 100.2000 327.0000 5.7184 - 100.2500 343.0000 5.8566 - 100.3000 330.0000 5.7446 - 100.3500 320.0000 5.6569 - 100.4000 307.0000 5.5408 - 100.4500 298.0000 5.4589 - 100.5000 282.0000 5.3104 - 100.5500 274.0000 5.2345 - 100.6000 266.0000 5.1575 - 100.6500 274.0000 5.2345 - 100.7000 271.0000 5.2058 - 100.7500 274.0000 5.2345 - 100.8000 290.0000 5.3852 - 100.8500 302.0000 5.4955 - 100.9000 321.0000 5.6657 - 100.9500 350.0000 5.9161 - 101.0000 367.0000 6.0581 - 101.0500 386.0000 6.2129 - 101.1000 394.0000 6.2769 - 101.1500 370.0000 6.0828 - 101.2000 356.0000 5.9666 - 101.2500 332.0000 5.7619 - 101.3000 310.0000 5.5678 - 101.3500 288.0000 5.3666 - 101.4000 279.0000 5.2820 - 101.4500 281.0000 5.3009 - 101.5000 274.0000 5.2345 - 101.5500 284.0000 5.3292 - 101.6000 280.0000 5.2915 - 101.6500 270.0000 5.1962 - 101.7000 278.0000 5.2726 - 101.7500 269.0000 5.1865 - 101.8000 273.0000 5.2249 - 101.8500 268.0000 5.1769 - 101.9000 267.0000 5.1672 - 101.9500 265.0000 5.1478 - 102.0000 257.0000 5.3437 - 102.0500 258.0000 5.3541 - 102.1000 267.0000 5.4467 - 102.1500 267.0000 5.4467 - 102.2000 277.0000 5.5478 - 102.2500 287.0000 5.6470 - 102.3000 302.0000 5.7927 - 102.3500 332.0000 6.0736 - 102.4000 360.0000 6.3246 - 102.4500 411.0000 6.7577 - 102.5000 457.0000 7.1259 - 102.5500 524.0000 7.6303 - 102.6000 608.0000 8.2192 - 102.6500 699.0000 8.8129 - 102.7000 861.0000 9.7809 - 102.7500 1096.0000 11.0353 - 102.8000 1377.0000 12.3693 - 102.8500 1685.0000 13.6829 - 102.9000 1901.0000 14.5335 - 102.9500 2069.0000 15.1621 - 103.0000 2016.0000 14.9666 - 103.0500 1800.0000 14.1421 - 103.1000 1500.0000 12.9099 - 103.1500 1181.0000 11.4552 - 103.2000 937.0000 10.2035 - 103.2500 728.0000 8.9938 - 103.3000 629.0000 8.3600 - 103.3500 576.0000 8.0000 - 103.4000 556.0000 7.8599 - 103.4500 535.0000 7.7100 - 103.5000 519.0000 7.5939 - 103.5500 486.0000 7.3485 - 103.6000 465.0000 7.1880 - 103.6500 429.0000 6.9041 - 103.7000 385.0000 6.5405 - 103.7500 361.0000 6.3333 - 103.8000 342.0000 6.1644 - 103.8500 312.0000 5.8878 - 103.9000 293.0000 5.7057 - 103.9500 279.0000 5.5678 - 104.0000 277.0000 5.5478 - 104.0500 265.0000 5.4263 - 104.1000 257.0000 5.3437 - 104.1500 256.0000 5.3333 - 104.2000 250.0000 5.2705 - 104.2500 260.0000 5.3748 - 104.3000 261.0000 5.3852 - 104.3500 258.0000 5.3541 - 104.4000 263.0000 5.4058 - 104.4500 268.0000 5.4569 - 104.5000 284.0000 5.6174 - 104.5500 306.0000 5.8310 - 104.6000 325.0000 6.0093 - 104.6500 337.0000 6.1192 - 104.7000 337.0000 6.1192 - 104.7500 344.0000 6.1824 - 104.8000 340.0000 6.1464 - 104.8500 337.0000 6.1192 - 104.9000 328.0000 6.0369 - 104.9500 321.0000 5.9722 - 105.0000 306.0000 5.8310 - 105.0500 295.0000 5.7252 - 105.1000 289.0000 5.6667 - 105.1500 281.0000 5.5877 - 105.2000 267.0000 5.4467 - 105.2500 266.0000 5.4365 - 105.3000 270.0000 5.4772 - 105.3500 263.0000 5.4058 - 105.4000 256.0000 5.3333 - 105.4500 266.0000 5.4365 - 105.5000 264.0000 5.4160 - 105.5500 259.0000 5.3645 - 105.6000 261.0000 5.3852 - 105.6500 261.0000 5.3852 - 105.7000 258.0000 5.3541 - 105.7500 253.0000 5.3020 - 105.8000 248.0000 5.2493 - 105.8500 244.0000 5.2068 - 105.9000 249.0000 5.2599 - 105.9500 251.0000 5.2810 - 106.0000 245.0000 5.2175 - 106.0500 245.0000 5.2175 - 106.1000 247.0000 5.2387 - 106.1500 247.0000 5.2387 - 106.2000 254.0000 5.3125 - 106.2500 259.0000 5.3645 - 106.3000 250.0000 5.2705 - 106.3500 251.0000 5.2810 - 106.4000 258.0000 5.3541 - 106.4500 252.0000 5.2915 - 106.5000 255.0000 5.3229 - 106.5500 259.0000 5.3645 - 106.6000 256.0000 5.3333 - 106.6500 264.0000 5.4160 - 106.7000 268.0000 5.4569 - 106.7500 281.0000 5.5877 - 106.8000 303.0000 5.8023 - 106.8500 331.0000 6.0645 - 106.9000 371.0000 6.4205 - 106.9500 420.0000 6.8313 - 107.0000 484.0000 7.3333 - 107.0500 532.0000 7.6884 - 107.1000 576.0000 8.0000 - 107.1500 582.0000 8.0416 - 107.2000 563.0000 7.9092 - 107.2500 527.0000 7.6522 - 107.3000 490.0000 7.3786 - 107.3500 465.0000 7.1880 - 107.4000 467.0000 7.2034 - 107.4500 449.0000 7.0632 - 107.5000 416.0000 6.7987 - 107.5500 393.0000 6.6081 - 107.6000 366.0000 6.3770 - 107.6500 331.0000 6.0645 - 107.7000 316.0000 5.9255 - 107.7500 297.0000 5.7446 - 107.8000 294.0000 5.7155 - 107.8500 292.0000 5.6960 - 107.9000 286.0000 5.6372 - 107.9500 295.0000 5.7252 - 108.0000 306.0000 6.1847 - 108.0500 315.0000 6.2750 - 108.1000 334.0000 6.4614 - 108.1500 373.0000 6.8282 - 108.2000 406.0000 7.1239 - 108.2500 447.0000 7.4750 - 108.3000 499.0000 7.8978 - 108.3500 507.0000 7.9608 - 108.4000 506.0000 7.9530 - 108.4500 488.0000 7.8102 - 108.5000 432.0000 7.3485 - 108.5500 391.0000 6.9911 - 108.6000 342.0000 6.5383 - 108.6500 315.0000 6.2750 - 108.7000 292.0000 6.0415 - 108.7500 275.0000 5.8630 - 108.8000 274.0000 5.8523 - 108.8500 259.0000 5.6899 - 108.9000 250.0000 5.5902 - 108.9500 258.0000 5.6789 - 109.0000 252.0000 5.6125 - 109.0500 255.0000 5.6458 - 109.1000 254.0000 5.6347 - 109.1500 253.0000 5.6236 - 109.2000 254.0000 5.6347 - 109.2500 252.0000 5.6125 - 109.3000 257.0000 5.6679 - 109.3500 250.0000 5.5902 - 109.4000 255.0000 5.6458 - 109.4500 251.0000 5.6013 - 109.5000 254.0000 5.6347 - 109.5500 260.0000 5.7009 - 109.6000 249.0000 5.5790 - 109.6500 253.0000 5.6236 - 109.7000 254.0000 5.6347 - 109.7500 259.0000 5.6899 - 109.8000 268.0000 5.7879 - 109.8500 270.0000 5.8095 - 109.9000 284.0000 5.9582 - 109.9500 305.0000 6.1745 - 110.0000 322.0000 6.3443 - 110.0500 364.0000 6.7454 - 110.1000 417.0000 7.2198 - 110.1500 470.0000 7.6649 - 110.2000 573.0000 8.4632 - 110.2500 678.0000 9.2060 - 110.3000 771.0000 9.8171 - 110.3500 847.0000 10.2896 - 110.4000 854.0000 10.3320 - 110.4500 794.0000 9.9624 - 110.5000 720.0000 9.4868 - 110.5500 611.0000 8.7393 - 110.6000 520.0000 8.0623 - 110.6500 463.0000 7.6076 - 110.7000 412.0000 7.1764 - 110.7500 399.0000 7.0622 - 110.8000 416.0000 7.2111 - 110.8500 428.0000 7.3144 - 110.9000 432.0000 7.3485 - 110.9500 420.0000 7.2457 - 111.0000 402.0000 7.0887 - 111.0500 364.0000 6.7454 - 111.1000 348.0000 6.5955 - 111.1500 334.0000 6.4614 - 111.2000 321.0000 6.3344 - 111.2500 330.0000 6.4226 - 111.3000 342.0000 6.5383 - 111.3500 380.0000 6.8920 - 111.4000 385.0000 6.9372 - 111.4500 420.0000 7.2457 - 111.5000 441.0000 7.4246 - 111.5500 465.0000 7.6240 - 111.6000 444.0000 7.4498 - 111.6500 406.0000 7.1239 - 111.7000 383.0000 6.9192 - 111.7500 345.0000 6.5670 - 111.8000 332.0000 6.4420 - 111.8500 321.0000 6.3344 - 111.9000 308.0000 6.2048 - 111.9500 292.0000 6.0415 - 112.0000 303.0000 6.1543 - 112.0500 314.0000 6.2650 - 112.1000 333.0000 6.4517 - 112.1500 379.0000 6.8829 - 112.2000 438.0000 7.3993 - 112.2500 505.0000 7.9451 - 112.3000 594.0000 8.6168 - 112.3500 659.0000 9.0761 - 112.4000 717.0000 9.4670 - 112.4500 738.0000 9.6047 - 112.5000 710.0000 9.4207 - 112.5500 642.0000 8.9582 - 112.6000 547.0000 8.2689 - 112.6500 492.0000 7.8422 - 112.7000 421.0000 7.2543 - 112.7500 386.0000 6.9462 - 112.8000 344.0000 6.5574 - 112.8500 337.0000 6.4904 - 112.9000 350.0000 6.6144 - 112.9500 364.0000 6.7454 - 113.0000 415.0000 7.2024 - 113.0500 506.0000 7.9530 - 113.1000 586.0000 8.5586 - 113.1500 674.0000 9.1788 - 113.2000 750.0000 9.6825 - 113.2500 787.0000 9.9184 - 113.3000 753.0000 9.7018 - 113.3500 682.0000 9.2331 - 113.4000 597.0000 8.6386 - 113.4500 499.0000 7.8978 - 113.5000 417.0000 7.2198 - 113.5500 362.0000 6.7268 - 113.6000 340.0000 6.5192 - 113.6500 302.0000 6.1441 - 113.7000 286.0000 5.9791 - 113.7500 280.0000 5.9161 - 113.8000 283.0000 5.9477 - 113.8500 276.0000 5.8737 - 113.9000 282.0000 5.9372 - 113.9500 284.0000 5.9582 - 114.0000 295.0000 6.4918 - 114.0500 310.0000 6.6548 - 114.1000 319.0000 6.7507 - 114.1500 321.0000 6.7718 - 114.2000 304.0000 6.5900 - 114.2500 298.0000 6.5247 - 114.3000 293.0000 6.4697 - 114.3500 283.0000 6.3583 - 114.4000 277.0000 6.2906 - 114.4500 269.0000 6.1991 - 114.5000 265.0000 6.1528 - 114.5500 277.0000 6.2906 - 114.6000 283.0000 6.3583 - 114.6500 283.0000 6.3583 - 114.7000 293.0000 6.4697 - 114.7500 303.0000 6.5792 - 114.8000 320.0000 6.7612 - 114.8500 316.0000 6.7188 - 114.9000 331.0000 6.8765 - 114.9500 346.0000 7.0305 - 115.0000 327.0000 6.8348 - 115.0500 328.0000 6.8452 - 115.1000 306.0000 6.6117 - 115.1500 291.0000 6.4476 - 115.2000 286.0000 6.3920 - 115.2500 278.0000 6.3019 - 115.3000 273.0000 6.2450 - 115.3500 267.0000 6.1760 - 115.4000 272.0000 6.2335 - 115.4500 257.0000 6.0592 - 115.5000 260.0000 6.0945 - 115.5500 265.0000 6.1528 - 115.6000 264.0000 6.1412 - 115.6500 272.0000 6.2335 - 115.7000 270.0000 6.2106 - 115.7500 268.0000 6.1875 - 115.8000 269.0000 6.1991 - 115.8500 287.0000 6.4031 - 115.9000 292.0000 6.4587 - 115.9500 295.0000 6.4918 - 116.0000 317.0000 6.7295 - 116.0500 335.0000 6.9179 - 116.1000 364.0000 7.2111 - 116.1500 410.0000 7.6532 - 116.2000 477.0000 8.2549 - 116.2500 556.0000 8.9123 - 116.3000 642.0000 9.5768 - 116.3500 755.0000 10.3854 - 116.4000 864.0000 11.1098 - 116.4500 946.0000 11.6251 - 116.5000 970.0000 11.7716 - 116.5500 941.0000 11.5943 - 116.6000 870.0000 11.1484 - 116.6500 759.0000 10.4129 - 116.7000 647.0000 9.6140 - 116.7500 540.0000 8.7831 - 116.8000 468.0000 8.1766 - 116.8500 418.0000 7.7275 - 116.9000 379.0000 7.3582 - 116.9500 381.0000 7.3776 - 117.0000 405.0000 7.6064 - 117.0500 446.0000 7.9821 - 117.1000 476.0000 8.2462 - 117.1500 523.0000 8.6437 - 117.2000 561.0000 8.9523 - 117.2500 555.0000 8.9043 - 117.3000 529.0000 8.6932 - 117.3500 485.0000 8.3238 - 117.4000 436.0000 7.8921 - 117.4500 398.0000 7.5404 - 117.5000 355.0000 7.1214 - 117.5500 322.0000 6.7823 - 117.6000 304.0000 6.5900 - 117.6500 285.0000 6.3808 - 117.7000 270.0000 6.2106 - 117.7500 278.0000 6.3019 - 117.8000 260.0000 6.0945 - 117.8500 268.0000 6.1875 - 117.9000 264.0000 6.1412 - 117.9500 265.0000 6.1528 - 118.0000 263.0000 6.1296 - 118.0500 267.0000 6.1760 - 118.1000 286.0000 6.3920 - 118.1500 293.0000 6.4697 - 118.2000 291.0000 6.4476 - 118.2500 319.0000 6.7507 - 118.3000 366.0000 7.2309 - 118.3500 411.0000 7.6625 - 118.4000 461.0000 8.1152 - 118.4500 489.0000 8.3581 - 118.5000 521.0000 8.6272 - 118.5500 555.0000 8.9043 - 118.6000 550.0000 8.8641 - 118.6500 511.0000 8.5440 - 118.7000 486.0000 8.3324 - 118.7500 436.0000 7.8921 - 118.8000 392.0000 7.4833 - 118.8500 368.0000 7.2506 - 118.9000 330.0000 6.8661 - 118.9500 328.0000 6.8452 - 119.0000 343.0000 7.0000 - 119.0500 371.0000 7.2801 - 119.1000 394.0000 7.5024 - 119.1500 441.0000 7.9373 - 119.2000 468.0000 8.1766 - 119.2500 469.0000 8.1854 - 119.3000 456.0000 8.0711 - 119.3500 416.0000 7.7090 - 119.4000 394.0000 7.5024 - 119.4500 361.0000 7.1813 - 119.5000 330.0000 6.8661 - 119.5500 312.0000 6.6762 - 119.6000 293.0000 6.4697 - 119.6500 285.0000 6.3808 - 119.7000 286.0000 6.3920 - 119.7500 275.0000 6.2678 - 119.8000 274.0000 6.2564 - 119.8500 281.0000 6.3358 - 119.9000 279.0000 6.3133 - 119.9500 298.0000 6.5247 - 120.0000 312.0000 7.2111 From 4ef56f008b800a4cfbf4447fd717345fa58b10a7 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 27 Sep 2021 17:31:18 +0200 Subject: [PATCH 186/312] Move notebooks into 'examples' folder --- Notebooks/FittingPowder1D.ipynb | 572 -------- {Notebooks => examples}/CreateSample.ipynb | 2 +- {Notebooks => examples}/D1A@ILL.xye | 0 .../FittingPdCw1d.ipynb | 1275 ++--------------- {Notebooks => examples}/PbSO4.cif | 0 5 files changed, 108 insertions(+), 1741 deletions(-) delete mode 100644 Notebooks/FittingPowder1D.ipynb rename {Notebooks => examples}/CreateSample.ipynb (99%) rename {Notebooks => examples}/D1A@ILL.xye (100%) rename Notebooks/FittingPowder1DCW.ipynb => examples/FittingPdCw1d.ipynb (80%) rename {Notebooks => examples}/PbSO4.cif (100%) diff --git a/Notebooks/FittingPowder1D.ipynb b/Notebooks/FittingPowder1D.ipynb deleted file mode 100644 index ff44cee5..00000000 --- a/Notebooks/FittingPowder1D.ipynb +++ /dev/null @@ -1,572 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fitting to the experimental data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this notebook we will show how to load a CIF file, an experimental profile and how to perform a parameter fit.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Import Python packages" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# esyScience, technique-independent\n", - "from easyCore import np\n", - "from easyCore.Fitting.Fitting import Fitter\n", - "\n", - "# esyScience, diffraction\n", - "from easyDiffractionLib import Phases\n", - "from easyDiffractionLib.sample import Sample as Job\n", - "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", - "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", - "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", - "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", - "\n", - "# Vizualization\n", - "import py3Dmol\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## --- Sample ---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Show a CIF file content" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cif_fname = 'PbSO4.cif'\n", - "\n", - "with open(cif_fname, 'r') as f:\n", - " content = f.read()\n", - " \n", - "print(content)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Load structure from a CIF file" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "phases = Phases.from_cif_file(cif_fname)\n", - "phase = phases[0]\n", - "\n", - "print(phases)\n", - "print(phase)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Visualise the structure" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "structure = py3Dmol.view()\n", - "structure.addModel(phase.to_cif_str(), 'cif')\n", - "structure.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol','radius': 0.1}})\n", - "structure.addUnitCell()\n", - "structure.replicateUnitCell(2,2,1)\n", - "structure.zoomTo()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## --- Experiment ---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Show measured data as text" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "meas_fname = 'D1A@ILL.xye'\n", - "\n", - "with open(meas_fname, 'r') as f:\n", - " content = f.read()\n", - " \n", - "# print(content)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Load the measured data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "meas_x, meas_y, meas_e = np.loadtxt(meas_fname, unpack=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Visualize the measured data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## --- Analysis ---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Create job with default parameters for the 1D powder neutron diffraction experiment with constant wavelength " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calculator = Calculator()\n", - "\n", - "print(f\"Current calculator engine: {calculator.current_interface_name}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "job = Job(phases=phases, parameters=Instrument1DCWParameters.default(), calculator=calculator)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Generate the calculated data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calc_y_cryspy = calculator.fit_func(meas_x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Visualize both the measured and calculated data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Set scale manually" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "job.pattern.scale = 100" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calc_y_cryspy = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Set wavelength manually" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "job.parameters.wavelength = 1.912" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calc_y_cryspy = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Set background points manually" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "bkg = PointBackground(linked_experiment='PbSO4')\n", - "\n", - "bkg.append(BackgroundPoint.from_pars(meas_x[0], 200))\n", - "bkg.append(BackgroundPoint.from_pars(meas_x[-1], 250))\n", - "\n", - "job.set_background(bkg)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calc_y_cryspy = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Define parameters to optimize" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "job.pattern.scale.fixed = False\n", - "job.pattern.zero_shift.fixed = False\n", - "job.parameters.resolution_u.fixed = False\n", - "job.parameters.resolution_v.fixed = False\n", - "job.parameters.resolution_w.fixed = False\n", - "job.backgrounds[0][0].y.fixed = False\n", - "job.backgrounds[0][1].y.fixed = False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(job.pattern.scale)\n", - "print(job.pattern.zero_shift)\n", - "print(job.parameters.resolution_u)\n", - "print(job.parameters.resolution_v)\n", - "print(job.parameters.resolution_w)\n", - "print(job.backgrounds[0][0])\n", - "print(job.backgrounds[0][1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Initalize the fitting engine and perform the fit" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fitter = Fitter(job, calculator.fit_func)\n", - "\n", - "print(f\"Available minimizers: {fitter.available_engines}\")\n", - "print(f\"Current minimizer: {fitter.current_engine.name}\")\n", - "print(f\"Available methods of current minimizers: {fitter.available_methods()}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares')\n", - "\n", - "print(\"The fit has been successful: {}\".format(result.success))\n", - "if result.success: \n", - " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", - " print(job.pattern.scale)\n", - " print(job.pattern.zero_shift)\n", - " print(job.parameters.resolution_u)\n", - " print(job.parameters.resolution_v)\n", - " print(job.parameters.resolution_w)\n", - " print(job.backgrounds[0][0])\n", - " print(job.backgrounds[0][1])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calc_y_cryspy = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, meas_y-calc_y_cryspy, label='Imeas-Icalc (CrysPy)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Change calculator engine to CrysFML" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "job.interface.switch('CrysFML')\n", - "job.update_bindings()\n", - "\n", - "print(f\"Current calculator engine: {job.interface.current_interface_name}\")\n", - "print(f\"Current minimizer: {fitter.current_engine.name}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Show results of both CrysPy and CrysFML calculations (before fitting)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calc_y_crysfml = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Perform the fit with CrysFML" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, method='least_squares')\n", - "\n", - "print(\"The fit has been successful: {}\".format(result.success))\n", - "if result.success: \n", - " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", - " print(job.pattern.scale)\n", - " print(job.pattern.zero_shift)\n", - " print(job.parameters.resolution_u)\n", - " print(job.parameters.resolution_v)\n", - " print(job.parameters.resolution_w)\n", - " print(job.backgrounds[0][0])\n", - " print(job.backgrounds[0][1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Show results of both CrysPy and CrysFML calculations (after fitting)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calc_y_crysfml = calculator.fit_func(meas_x)\n", - "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/Notebooks/CreateSample.ipynb b/examples/CreateSample.ipynb similarity index 99% rename from Notebooks/CreateSample.ipynb rename to examples/CreateSample.ipynb index 3d1fa32f..c966195b 100644 --- a/Notebooks/CreateSample.ipynb +++ b/examples/CreateSample.ipynb @@ -362,7 +362,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.9" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/Notebooks/D1A@ILL.xye b/examples/D1A@ILL.xye similarity index 100% rename from Notebooks/D1A@ILL.xye rename to examples/D1A@ILL.xye diff --git a/Notebooks/FittingPowder1DCW.ipynb b/examples/FittingPdCw1d.ipynb similarity index 80% rename from Notebooks/FittingPowder1DCW.ipynb rename to examples/FittingPdCw1d.ipynb index 53872be1..161da9f4 100644 --- a/Notebooks/FittingPowder1DCW.ipynb +++ b/examples/FittingPdCw1d.ipynb @@ -157,10 +157,10 @@ "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + "

\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] @@ -207,7 +207,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -2487,7 +2487,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "scrolled": true }, @@ -2495,17 +2495,17 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "05d53cfe89454f0ebe0c6d3ed1799313", + "model_id": "0475b77236454c15a23460ae7b41cc7f", "version_major": 2, "version_minor": 0 }, @@ -2538,6 +2538,15 @@ "#### Create job with default parameters for the 1D powder neutron diffraction experiment with constant wavelength " ] }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "calculator = Calculator(interface_name='CrysPy')" + ] + }, { "cell_type": "code", "execution_count": 9, @@ -2552,8 +2561,6 @@ } ], "source": [ - "calculator = Calculator(interface_name='CrysPy')\n", - "\n", "print(f\"Current calculator engine: {calculator.current_interface_name}\")" ] }, @@ -2607,7 +2614,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -2617,7 +2624,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "bd67b0a81e4e40d48439cf8302bbf624", + "model_id": "078eac310daf4b87bfb81becfd195517", "version_major": 2, "version_minor": 0 }, @@ -2661,7 +2668,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -2671,7 +2678,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1ee254c7e0c847878d6ad14936b482eb", + "model_id": "7be148050c5c4278b4ca2b7de922731f", "version_major": 2, "version_minor": 0 }, @@ -2711,27 +2718,27 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 18, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "6216bc5ac64747069333b822ae4a4f2c", + "model_id": "7f5e9f092c2140bcbad127060160cae4", "version_major": 2, "version_minor": 0 }, - "image/png": "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vr4e9fX1aG9vBwAsX74ct912G+bMmYOVK1fi1VdfxbnnnoujjjoKe++9NwDguOOOw5gxY3DOOefg66+/xjvvvIMbb7wRkyZNQmVlJQDg4osvxnfffYdrrrkGixcvxoMPPogXXngBV1xxRcmOnRBCCCGkGHQ6AfjQQw+hsbERRx99NIYMGeL8Pf/88wCAYDCI9957D8cddxxGjRqFq666CmeccQZee+01Zxt+vx+vv/46/H4/xo0bh1/84hc499xzpbqBI0aMwBtvvIGpU6din332wT333IN//OMfrAFISAdjGCbunfotPlq6udRNIaTDOfroo/Gb3/wGl19+Ofr27YvBgwfjscceQ2trKy644ALU1NRgt912w1tvvSWtt2DBAkyYMAG9evXC4MGDcc4552DLli3O/LfffhtHHHEE+vTpg/79++NHP/oRli9f7syPRCK49NJLMWTIEFRVVWH48OGYMmVK0Y6bdH46XRJIurKEw4YNc40C4sXw4cPx5ptvplzm6KOPxldffZVV+wgh+fHmgg3427SlAICVd5xY4taQroRpmmiP6iXZd3WFP+ds5H/961+45pprMHv2bDz//PO45JJL8PLLL+O0007DDTfcgHvvvRfnnHMOVq9ejR49eqChoQE/+MEPcOGFF+Lee+9Fe3s7rr32Wvz0pz/F+++/DwBobW3FlVdeib333hstLS2YPHkyTjvtNMydOxc+nw/33XcfXn31VbzwwgvYaaedsGbNGqxZs6aQp4R0cTqdACSEdG/qG0OlbgLporRHdYyZ/E5J9r3o1vHoEcyty9xnn31w4403ArCqSdxxxx0YMGAALrroIgDA5MmT8dBDD2HevHk49NBDcf/992O//fZzRq4CgMcffxzDhg3Dt99+i9133x1nnHGGtI/HH38cAwcOxKJFi7DXXnth9erVGDlyJI444ghomobhw4fneOSku9LpXMCEkO5NZYCPHVJe2PHpgBWi1L9/f4wdO9aZZtektRMXv/76a2cce/tv1KhRAOC4eZcuXYqzzjoLu+yyC2pra7HzzjsDAFavXg3ASkSZO3cu9thjD1x22WV49913O/w4SdeCFkBCSFGprPA7n8MxHZUBf4qlCUlQXeHHoltLE6ddXZH7dVpRUSF91zRNmma7lg3DAGCNf3zSSSfhzjvvdG3LrnZx0kknYfjw4XjssccwdOhQGIaBvfbaC5FIBACw//77Y8WKFXjrrbfw3nvv4ac//SmOPfZY/Oc//8n5OEj3ggKQEFJUfEIcVSRmUACSjNE0LWc3bFdi//33x3//+1/svPPOCATcx7t161YsWbIEjz32GI488kgAcA2YAAC1tbX42c9+hp/97Gf48Y9/jOOPPx7btm1zDa1KyhP6YgghRUWPWzkAIHXKFyHlyaRJk7Bt2zacddZZ+Pzzz7F8+XK88847uOCCC6DrOvr27Yv+/fvj0UcfxbJly/D+++9Lo1QBwF/+8hc8++yzWLx4Mb799lu8+OKLqKurQ58+fUpzUKTTQQFICCkqUT0h+0wjxYKElClDhw7FJ598Al3Xcdxxx2Hs2LG4/PLL0adPH/h8Pvh8Pjz33HOYM2cO9tprL1xxxRX485//LG2jpqYGd911Fw488EAcdNBBWLlyJd58802Oj0scNDNd3RWSlKamJvTu3RuNjY0cFo6QDPnXpyvxh1cXAgDmTv4h+vQIlrhFpLMSCoWwYsUKjBgxAlVVVaVuDulipLp+2H/TAkgIKTIxI/HOafD1kxBCSgIFICGkqBiSAKQCJISQUkABSAgpKqaQ+kH9RwghpYECkBBSVETRxxBkQggpDRSAhJCiIsb9Uf4RQkhpoAAkhBQV0QXMGEBCCCkNFICEkKIiaj5mARNCSGmgACSEFBUx7o8xgIQQUhooAAkhRUVOAildOwghpJyhACSEFBVR81EAEpKem2++Gfvuu29e24hEIthtt93w6aefFqZRJea6667Db37zm1I3o0tDAUgIKSpi4geTQEh35Pzzz8epp55a6mZIPPzwwxgxYgQOO+wwafoHH3yAE044Af3790ePHj0wZswYXHXVVVi3bl2HtWXlypXQNM3569+/P4477jh89dVXGW/jd7/7Hf71r3/hu+++67B2dncoAAkhRcVkGRhCioppmrj//vsxceJEafojjzyCY489FnV1dfjvf/+LRYsW4eGHH0ZjYyPuuecez23pug7DMArSrvfeew8bNmzAO++8g5aWFkyYMAENDQ0ZrTtgwACMHz8eDz30UEHaUo5QABJCiopJCyApMwzDwF133YXddtsNlZWV2GmnnfDHP/7RmX/ttddi9913R48ePbDLLrvgpptuQjQaTbnNxx9/HHvuuScqKysxZMgQXHrppUmXnTNnDpYvX44TTzzRmbZ27VpcdtlluOyyy/D444/j6KOPxs4774yjjjoK//jHPzB58mQAwJNPPok+ffrg1VdfxZgxY1BZWYmPP/4YFRUVqK+vl/Zz+eWX48gjjwQArFq1CieddBL69u2Lnj17Ys8998Sbb74pLd+/f3/U1dXhwAMPxN13342NGzdi1qxZuPXWW7HXXnu5jmPffffFTTfd5Hw/6aST8Nxzz6U8TyQ5gVI3gBBSXsgxgBSAJAtME4i2lWbfFT0ATctp1euvvx6PPfYY7r33XhxxxBHYsGEDFi9e7MyvqanBk08+iaFDh2L+/Pm46KKLUFNTg2uuucZzew899BCuvPJK3HHHHZgwYQIaGxvxySefJN3/Rx99hN133x01NTXOtBdffBGRSCTpPvr06eN8bmtrw5133ol//OMf6N+/P4YNG4ZddtkF//d//4err74aABCNRvH000/jrrvuAgBMmjQJkUgEM2bMQM+ePbFo0SL06tUraRurq6sBWLGKv/zlL3HLLbfg888/x0EHHQQA+OqrrzBv3jy89NJLzjoHH3ww1q5di5UrV2LnnXdOum3iDQUgIaSoMAuY5Ey0DfjT0NLs+4b1QLBn1qs1Nzfjb3/7G+6//36cd955AIBdd90VRxxxhLPMjTfe6Hzeeeed8bvf/Q7PPfdcUnF2++2346qrrsJvf/tbZ5otlLxYtWoVhg6Vz9vSpUtRW1uLIUOGpD2GaDSKBx98EPvss48zbeLEiXjiiSccAfjaa68hFArhpz/9KQBg9erVOOOMMzB27FgAwC677JJ0+w0NDbjtttvQq1cvHHzwwRg8eDDGjx+PJ554wjmuJ554At/73vek7djHtGrVKgrAHKALmBBSVOQkkBI2hJAi8M033yAcDuOYY45Juszzzz+Pww8/HHV1dejVqxduvPFGrF692nPZTZs2Yf369Sm3p9Le3o6qqippmmma0DK0aAaDQey9997StPPPPx/Lli3DZ599BsByFf/0pz9Fz56WSL7ssstw++234/DDD8cf/vAHzJs3z7Xdww47DL169ULfvn3x9ddf4/nnn8fgwYMBABdddBGeffZZhEIhRCIRPPPMM/jlL38prW9bDdvaSmQV7uLQAkgIKSqSC5hpICQbKnpYlrhS7TsHbJGSjJkzZ+Lss8/GLbfcgvHjx6N379547rnnkiZhpNueFwMGDMD8+fOlabvvvjsaGxuxYcOGtFbA6upql1gcNGgQTjrpJDzxxBMYMWIE3nrrLXz44YfO/AsvvBDjx4/HG2+8gXfffRdTpkzBPffcI5Vuef755zFmzBj0799fcjkDVnxfZWUlXn75ZQSDQUSjUfz4xz+Wltm2bRsAYODAgZmeCiJACyAhpKhIQ8EVJpmQlAuaZrlhS/GXY/zfyJEjUV1djWnTpnnO//TTTzF8+HD8/ve/x4EHHoiRI0di1apVSbdXU1ODnXfeOen2vNhvv/2wePFiKeb2xz/+MYLBoBOzp5JJNu6FF16I559/Ho8++ih23XVXHH744dL8YcOG4eKLL8ZLL72Eq666Co899phr/q677uoSfwAQCARw3nnn4YknnsATTzyBM8880yV+FyxYgIqKCuy5555p20rc0AJICCkqzAIm5URVVRWuvfZaXHPNNQgGgzj88MOxefNmLFy4EBMnTsTIkSOxevVqPPfcczjooIPwxhtv4OWXX065zZtvvhkXX3wxBg0ahAkTJqC5uRmffPJJ0sLI3//+99HS0oKFCxc62bXDhg3Dvffei0svvRRNTU0499xzsfPOO2Pt2rX497//jV69eiW1QtqMHz8etbW1uP3223HrrbdK8y6//HJMmDABu+++O7Zv344PPvgAo0ePzuLMWQLTXscryeWjjz7CkUcemZNVlNACSAgpMpR8pNy46aabcNVVV2Hy5MkYPXo0fvazn2HTpk0AgJNPPhlXXHEFLr30Uuy777749NNPpVInXpx33nn461//igcffBB77rknfvSjH2Hp0qVJl+/fvz9OO+00PP3009L0X//613j33Xexbt06nHbaaRg1ahQuvPBC1NbW4ne/+13a4/L5fDj//POh6zrOPfdcaZ6u65g0aRJGjx6N448/HrvvvjsefPDBtNsUGTlyJA477DCMGjUKhxxyiGv+c889h4suuiirbZIEmsk6DDnT1NSE3r17o7GxEbW1taVuDiFdgttfX4R/fLwCAPDqpYdj7x37lLZBpNMSCoWwYsUKjBgxwpXEQLJj3rx5+OEPf4jly5enLMeSLRMnTsTmzZvx6quvFmybNqZpYuTIkfj1r3+NK6+8Upr31ltv4aqrrsK8efMQCHg7M1NdP+y/6QImhBQZjgVMSPHZe++9ceedd2LFihVOaZZ8aGxsxPz58/HMM890iPjb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+GNz5MiR5llnnVWqQyoJqc5jJBIxTz75ZHPHHXc0586dK/U74XDY2QbPY/5QAJKUAPD8e+KJJ5xl2tvbzV//+tdm3759zR49epinnXaauWHDhtI1ugugCkCew8x57bXXzL322susrKw0R40aZT766KPSfMMwzJtuuskcPHiwWVlZaR5zzDHmkiVLStTazklTU5P529/+1txpp53Mqqoqc5dddjF///vfSx0sz6ObDz74wPN5eN5555mmmdk527p1q3nWWWeZvXr1Mmtra80LLrjAbG5uLsHRlI5U53HFihVJ+50PPvjA2QbPY/5opimUfieEEEIIId0exgASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImUEBSAghhBBSZlAAEkIIIYSUGRSAhBBCCCFlBgUgIYQQQkiZQQFICCGEEFJmUAASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImUEBSAghhBBSZlAAEkIIIYSUGRSAhBBCCCFlBgUgIYQQQkiZQQFICCGEEFJmUAASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImfH/ATdEZC/tZ8H3AAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAACzLElEQVR4nO2dd5wU5f3HP1uuH3cHRzlQqoKAFBEUsRALARGNGhOjMYoRNRqIUYwa/dlNYosak1iixt419o6g2AAVRZoivR/97ri+ZX5/zM7sM8/M7M7s7u3u3X7erxcv9manPPPszDyf+bbHoyiKAkIIIYQQkjN4M90AQgghhBCSXigACSGEEEJyDApAQgghhJAcgwKQEEIIISTHoAAkhBBCCMkxKAAJIYQQQnIMCkBCCCGEkByDApAQQgghJMegACSEEEIIyTEoAAkhhBBCcgwKQEIIIYSQHIMCkBBCCCEkx6AAJIQQQgjJMSgACSGEEEJyDApAQgghhJAcgwKQEEIIISTHoAAkhBBCCMkxKAAJIYQQQnIMCkBCCCGEkByDApAQQgghJMegACSEEEIIyTEoAAkhhBBCcgwKQEIIIYSQHIMCkBBCCCEkx6AAJIQQQgjJMSgACSGEEEJyDApAQgghhJAcgwKQEEIIISTHoAAkhBBCCMkxKAAJIYQQQnIMCkBCCCGEkByDApAQQgghJMegACSEEEIIyTEoAAkhhBBCcgwKQEIIIYSQHIMCkBBCCCEkx6AAJIQQQgjJMSgACSGEEEJyDApAQgghhJAcgwKQEEIIISTHoAAkhBBCCMkxKAAJIYQQQnIMCkBCCCGEkByDApAQQgghJMegACSEEEIIyTEoAAkhhBBCcgwKQEIIIYSQHIMCkBBCCCEkx6AAJIQQQgjJMSgACSGEEEJyDApAQgghhJAcgwKQEEIIISTHoAAkhBBCCMkxKAAJIYQQQnIMCkBCCCGEkByDApAQQgghJMfwZ7oB7ZlwOIwtW7agU6dO8Hg8mW4OIYQQQhygKAr27t2LXr16wevNTVsYBWASbNmyBb179850MwghhBCSABs3bsS+++6b6WZkBArAJOjUqRMA9QIqKyvLcGsIIYQQ4oS6ujr07t1bH8dzEQrAJNDcvmVlZRSAhBBCSDsjl8O3ctPxTQghhBCSw1AAEkIIIYTkGBSAhBBCCCE5RtbFAN5666145ZVX8MMPP6CoqAiHH344br/9dhxwwAH6OkcffTTmzp1r2O53v/sdHnzwQf3vDRs24OKLL8ZHH32E0tJSTJ06Fbfeeiv8/ugpf/zxx5g5cyaWLVuG3r1749prr8W5557b5udICCHEOaFQCIFAINPNIO0In88Hv9+f0zF+8cg6ATh37lxMnz4dhxxyCILBIK655hpMnDgRy5cvR0lJib7eBRdcgJtvvln/u7i4WP8cCoUwZcoUVFVV4YsvvsDWrVtxzjnnIC8vD3/7298AAGvXrsWUKVNw0UUX4ZlnnsHs2bNx/vnno2fPnpg0aVL6TpgQQogt9fX12LRpExRFyXRTSDujuLgYPXv2RH5+fqabkpV4lCy/q3bs2IHu3btj7ty5GD9+PADVAnjQQQfhH//4h+U27777Lk488URs2bIFPXr0AAA8+OCDuOqqq7Bjxw7k5+fjqquuwttvv42lS5fq251xxhmoqanBe++956htdXV1KC8vR21tLbOACSEkxYRCIaxcuRLFxcXo1q0brTnEEYqioLW1FTt27EAoFMLAgQNNxZ45fmehBVCmtrYWANClSxfD8meeeQZPP/00qqqqcNJJJ+G6667TrYDz5s3D8OHDdfEHAJMmTcLFF1+MZcuWYdSoUZg3bx4mTJhg2OekSZNw6aWXtu0JEUIIcUQgEICiKOjWrRuKiooy3RzSjigqKkJeXh7Wr1+P1tZWFBYWZrpJWUdWC8BwOIxLL70URxxxBIYNG6Yv//Wvf42+ffuiV69eWLx4Ma666iqsWLECr7zyCgCgurraIP4A6H9XV1fHXKeurg5NTU2WD5uWlha0tLTof9fV1aXmRAkhhNhCyx9JhFyd4s0pWS0Ap0+fjqVLl+Kzzz4zLL/wwgv1z8OHD0fPnj1x3HHHYfXq1dhvv/3arD233norbrrppjbbPyGEEEJIOshaeTxjxgy89dZb+Oijj+LO0zd27FgAwKpVqwAAVVVV2LZtm2Ed7e+qqqqY65SVldm6Gq6++mrU1tbq/zZu3Oj+xAghhBBCMkzWCUBFUTBjxgy8+uqrmDNnDvr37x93m0WLFgEAevbsCQAYN24clixZgu3bt+vrzJo1C2VlZRg6dKi+zuzZsw37mTVrFsaNG2d7nIKCAn3aN07/RgghxIpzzz0Xp5xySqabQUhMsk4ATp8+HU8//TSeffZZdOrUCdXV1aiurkZTUxMAYPXq1bjllluwcOFCrFu3Dm+88QbOOeccjB8/HiNGjAAATJw4EUOHDsXZZ5+N7777Du+//z6uvfZaTJ8+HQUFBQCAiy66CGvWrMGVV16JH374Affffz9efPFFXHbZZRk7d0IIIYSQdJB1AvCBBx5AbW0tjj76aPTs2VP/98ILLwAA8vPz8eGHH2LixIkYPHgwLr/8cpx22ml488039X34fD689dZb8Pl8GDduHH7zm9/gnHPOMdQN7N+/P95++23MmjULI0eOxF133YVHHnmENQAJaWPCYQX3zPoRn67ckemmENLmHH300fjDH/6ASy+9FJ07d0aPHj3w8MMPo6GhAb/97W/RqVMn7L///nj33XcN2y1duhSTJ09GaWkpevTogbPPPhs7d+7Uv3/vvfdw5JFHoqKiApWVlTjxxBOxevVq/fvW1lbMmDEDPXv2RGFhIfr27Ytbb701bedNsp+sSwKJV5awd+/epllArOjbty/eeeedmOscffTR+Pbbb121jxCSHO8s3Yp7Z68EAKy7bUqGW0PaE4qioCkQysixi/J8CWcjP/HEE7jyyivx5Zdf4oUXXsDFF1+MV199FaeeeiquueYa3HPPPTj77LOxYcMGFBcXo6amBsceeyzOP/983HPPPWhqasJVV12F008/HXPmzAEANDQ0YObMmRgxYgTq6+tx/fXX49RTT8WiRYvg9Xrxz3/+E2+88QZefPFF9OnTBxs3bmTcOjGQdQKQENKxqa5tznQTSDulKRDC0Ovfz8ixl988CcX5iQ2ZI0eOxLXXXgtATSa87bbb0LVrV1xwwQUAgOuvvx4PPPAAFi9ejMMOOwz//ve/MWrUKH3mKgB49NFH0bt3b/z4448YNGgQTjvtNMMxHn30UXTr1g3Lly/HsGHDsGHDBgwcOBBHHnkkPB4P+vbtm+CZk45K1rmACSEdm6J8n/45yyciIiQlaPHpgBqiVFlZieHDh+vLtJq0WuLid999p89jr/0bPHgwAOhu3pUrV+LMM8/EgAEDUFZWhn79+gEANmzYAEBNRFm0aBEOOOAAXHLJJfjggw/a/DxJ+4IWQEJIWin0RwVgcyBsEISExKIoz4flN2cmTrsoL/HrNC8vz/C3x+MxLNNcy+FwGIA6//FJJ52E22+/3bQvrdrFSSedhL59++Lhhx9Gr169EA6HMWzYMLS2tgIADj74YKxduxbvvvsuPvzwQ5x++umYMGECXn755YTPg3QsKAAJIWlFtPkFw2EAFIDEGR6PJ2E3bHvi4IMPxv/+9z/069cPfr/5fHft2oUVK1bg4YcfxlFHHQUApgkTAKCsrAy/+tWv8Ktf/Qq/+MUvcPzxx2P37t2mqVVJbkIXMCEkrQRDYf1zmB5gQkxMnz4du3fvxplnnomvvvoKq1evxvvvv4/f/va3CIVC6Ny5MyorK/HQQw9h1apVmDNnDmbOnGnYx913343nnnsOP/zwA3788Ue89NJLqKqqQkVFRWZOimQdFICEkLQSEFQfYwAJMdOrVy98/vnnCIVCmDhxIoYPH45LL70UFRUV8Hq98Hq9eP7557Fw4UIMGzYMl112Ge68807DPjp16oQ77rgDY8aMwSGHHIJ169bhnXfe4fy4RMej8AmcMHV1dSgvL0dtbS1nBSHEIY99vhY3vbkcAPDtdT9F55L8DLeIZCvNzc1Yu3Yt+vfvj8LCwkw3h7QzYl0/HL9pASSEpJmQYAEM8/2TEEIyAgUgISStiJqPMYCEEJIZKAAJIWlFtPopoAIkhJBMQAFICEkrouSjB5gQQjIDBSAhJK2IFkDGABJCSGagACSEpBXGABJCSOahACSEpBWx8hSrUBFCSGagACSEpBVR81H/EUJIZqAAJISklbDBBUwFSAghmYACkBCSVsTSL9R/hMTnxhtvxEEHHZTUPlpbW7H//vvjiy++SE2jMsyf//xn/OEPf8h0M9o1FICEkLRCCyDp6Jx77rk45ZRTMt0MAw8++CD69++Pww8/3LD8o48+wgknnIDKykoUFxdj6NChuPzyy7F58+Y2a8u6devg8Xj0f5WVlZg4cSK+/fZbx/v405/+hCeeeAJr1qxps3Z2dCgACSHpxVAGJoPtICRHUBQF//73vzFt2jTD8v/85z+YMGECqqqq8L///Q/Lly/Hgw8+iNraWtx1112W+wqFQgiHwylp14cffoitW7fi/fffR319PSZPnoyamhpH23bt2hWTJk3CAw88kJK25CIUgISQtGIUfVSApOMTDodxxx13YP/990dBQQH69OmDv/71r/r3V111FQYNGoTi4mIMGDAA1113HQKBQMx9PvroozjwwANRUFCAnj17YsaMGbbrLly4EKtXr8aUKVP0ZZs2bcIll1yCSy65BI8++iiOPvpo9OvXD+PHj8cjjzyC66+/HgDw+OOPo6KiAm+88QaGDh2KgoICfPbZZ8jLy0N1dbXhOJdeeimOOuooAMD69etx0kknoXPnzigpKcGBBx6Id955x7B+ZWUlqqqqMGbMGPz973/Htm3bsGDBAtx8880YNmyY6TwOOuggXHfddfrfJ510Ep5//vmY/UTs8We6AYSQ3EKMAaQFkLhCUYBAY2aOnVcMeDwJbXr11Vfj4Ycfxj333IMjjzwSW7duxQ8//KB/36lTJzz++OPo1asXlixZggsuuACdOnXClVdeabm/Bx54ADNnzsRtt92GyZMno7a2Fp9//rnt8T/99FMMGjQInTp10pe99NJLaG1ttT1GRUWF/rmxsRG33347HnnkEVRWVqJ3794YMGAAnnrqKVxxxRUAgEAggGeeeQZ33HEHAGD69OlobW3FJ598gpKSEixfvhylpaW2bSwqKgKgxiqed955uOmmm/DVV1/hkEMOAQB8++23WLx4MV555RV9m0MPPRSbNm3CunXr0K9fP9t9E2soAAkhaYUxgCRhAo3A33pl5tjXbAHyS1xvtnfvXtx7773497//jalTpwIA9ttvPxx55JH6Otdee63+uV+/fvjTn/6E559/3lac/eUvf8Hll1+OP/7xj/oyTShZsX79evTqZey3lStXoqysDD179ox7DoFAAPfffz9GjhypL5s2bRoee+wxXQC++eabaG5uxumnnw4A2LBhA0477TQMHz4cADBgwADb/dfU1OCWW25BaWkpDj30UPTo0QOTJk3CY489pp/XY489hp/85CeG/WjntH79egrABKALmBCSVgwzgaQmlIiQrOX7779HS0sLjjvuONt1XnjhBRxxxBGoqqpCaWkprr32WmzYsMFy3e3bt2PLli0x9yfT1NSEwsJCwzJFUeBxaNHMz8/HiBEjDMvOPfdcrFq1CvPnzweguopPP/10lJSoIvmSSy7BX/7yFxxxxBG44YYbsHjxYtN+Dz/8cJSWlqJz58747rvv8MILL6BHjx4AgAsuuADPPfccmpub0draimeffRbnnXeeYXvNatjYmCGrcDuHFkBCSFoxzATCGEDihrxi1RKXqWMngCZS7Jg3bx7OOuss3HTTTZg0aRLKy8vx/PPP2yZhxNufFV27dsWSJUsMywYNGoTa2lps3bo1rhWwqKjI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", "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] @@ -2758,7 +2765,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -2772,23 +2779,23 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 20, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "42f8bd01a3b14f438a71100d91b23c6a", + "model_id": "fecad5f396894c59b35b216dfc80ac16", "version_major": 2, "version_minor": 0 }, @@ -2819,7 +2826,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -2834,7 +2841,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -2870,7 +2877,16 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "fitter = Fitter(job, calculator.fit_func)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -2884,13 +2900,21 @@ } ], "source": [ - "fitter = Fitter(job, calculator.fit_func)\n", - "\n", "print(f\"Available minimizers: {fitter.available_engines}\")\n", "print(f\"Current minimizer: {fitter.current_engine.name}\")\n", "print(f\"Available methods of current minimizers: {fitter.available_methods()}\")" ] }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, \n", + " method='least_squares', minimizer_kwargs={'diff_step': 1e-5})" + ] + }, { "cell_type": "code", "execution_count": 24, @@ -2913,9 +2937,6 @@ } ], "source": [ - "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, \n", - " method='least_squares', minimizer_kwargs={'diff_step': 1e-5})\n", - "\n", "print(\"The fit has been successful: {}\".format(result.success))\n", "if result.success: \n", " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", @@ -2936,7 +2957,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 25, @@ -2946,7 +2967,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "212c21f6601647f19243cb00bdcae17a", + "model_id": "353b0d1362894d83ad06e3bf16326088", "version_major": 2, "version_minor": 0 }, @@ -2978,7 +2999,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -2995,7 +3016,16 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "job.interface.switch('CrysFML', fitter=fitter)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -3008,8 +3038,6 @@ } ], "source": [ - "job.interface.switch('CrysFML', fitter=fitter)\n", - "\n", "print(f\"Current calculator engine: {job.interface.current_interface_name}\")\n", "print(f\"Current minimizer: {fitter.current_engine.name}\")" ] @@ -3023,43 +3051,23 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 29, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0012 s\n", - "+ calculate B: 0.0041 s\n", - "+ calculate C: 0.0002 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0003 s\n", - "+ reflection_list.compute_structure_factors: 0.0008 s\n", - "+ set reflection_list: 0.0061 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0026 s\n", - "+ calculate D: 0.0024 s\n", - "+ calculate E: 0.0043 s\n", - "+ calculate F: 0.0000 s\n" - ] - }, { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 27, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e48cecadb66d48a48714ba92c3d43cb4", + "model_id": "9c823b646db14db39ee23e6409955f84", "version_major": 2, "version_minor": 0 }, @@ -3093,1059 +3101,21 @@ "cell_type": "code", "execution_count": 30, "metadata": {}, + "outputs": [], + "source": [ + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, \n", + " method='least_squares', minimizer_kwargs={'diff_step': 1e-5})" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0050 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0019 s\n", - "+ calculate E: 0.0049 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0012 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0053 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0011 s\n", - "+ calculate E: 0.0034 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0052 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0011 s\n", - "+ calculate E: 0.0035 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0008 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0011 s\n", - "+ calculate E: 0.0034 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0008 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0011 s\n", - "+ calculate E: 0.0035 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0008 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0011 s\n", - "+ calculate E: 0.0035 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0009 s\n", - "+ calculate E: 0.0033 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0008 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0050 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0010 s\n", - "+ calculate E: 0.0033 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0008 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0009 s\n", - "+ calculate E: 0.0036 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0008 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0049 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0014 s\n", - "+ calculate E: 0.0033 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0014 s\n", - "+ calculate D: 0.0016 s\n", - "+ calculate E: 0.0034 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0008 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0027 s\n", - "+ calculate E: 0.0058 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0014 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0073 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0035 s\n", - "+ calculate D: 0.0033 s\n", - "+ calculate E: 0.0060 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0014 s\n", - "+ calculate B: 0.0014 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0056 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", - "+ calculate D: 0.0022 s\n", - "+ calculate E: 0.0039 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0011 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0049 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0018 s\n", - "+ calculate E: 0.0038 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0011 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0045 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0038 s\n", - "+ calculate F: 0.0001 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0013 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0044 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0032 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0014 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0045 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0033 s\n", - "+ calculate D: 0.0012 s\n", - "+ calculate E: 0.0039 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0013 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0045 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", - "+ calculate D: 0.0015 s\n", - "+ calculate E: 0.0031 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0051 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0010 s\n", - "+ calculate E: 0.0033 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0047 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0023 s\n", - "+ calculate D: 0.0018 s\n", - "+ calculate E: 0.0042 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0013 s\n", - "+ calculate B: 0.0013 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0074 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0033 s\n", - "+ calculate D: 0.0031 s\n", - "+ calculate E: 0.0061 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0066 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0023 s\n", - "+ calculate D: 0.0018 s\n", - "+ calculate E: 0.0056 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0012 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0049 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0035 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0013 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0049 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0016 s\n", - "+ calculate E: 0.0036 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0047 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0013 s\n", - "+ calculate E: 0.0047 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0033 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0013 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0003 s\n", - "+ set reflection_list: 0.0051 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0018 s\n", - "+ calculate D: 0.0014 s\n", - "+ calculate E: 0.0035 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0010 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0051 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0036 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0012 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0044 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0018 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0038 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "+ set reflection_list: 0.0056 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0022 s\n", - "+ calculate D: 0.0031 s\n", - "+ calculate E: 0.0041 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0013 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0071 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0033 s\n", - "+ calculate D: 0.0023 s\n", - "+ calculate E: 0.0046 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0065 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0042 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0056 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0019 s\n", - "+ calculate E: 0.0050 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0050 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0022 s\n", - "+ calculate E: 0.0040 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0050 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0022 s\n", - "+ calculate D: 0.0016 s\n", - "+ calculate E: 0.0037 s\n", - "+ calculate F: 0.0001 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0012 s\n", - "+ calculate B: 0.0013 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0050 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", - "+ calculate D: 0.0015 s\n", - "+ calculate E: 0.0033 s\n", - "+ calculate F: 0.0001 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0013 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0002 s\n", - "+ reflection_list.compute_structure_factors: 0.0003 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0018 s\n", - "+ calculate D: 0.0016 s\n", - "+ calculate E: 0.0038 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0014 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0044 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", - "+ calculate D: 0.0015 s\n", - "+ calculate E: 0.0032 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0010 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0055 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0018 s\n", - "+ calculate D: 0.0016 s\n", - "+ calculate E: 0.0045 s\n", - "+ calculate F: 0.0001 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0014 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0087 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0031 s\n", - "+ calculate D: 0.0039 s\n", - "+ calculate E: 0.0059 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0013 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0054 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0027 s\n", - "+ calculate D: 0.0023 s\n", - "+ calculate E: 0.0049 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0014 s\n", - "+ calculate B: 0.0011 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0061 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0023 s\n", - "+ calculate D: 0.0018 s\n", - "+ calculate E: 0.0058 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0010 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0049 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0026 s\n", - "+ calculate D: 0.0015 s\n", - "+ calculate E: 0.0038 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0054 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0016 s\n", - "+ calculate E: 0.0045 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0010 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0054 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0028 s\n", - "+ calculate D: 0.0018 s\n", - "+ calculate E: 0.0039 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0012 s\n", - "+ calculate B: 0.0011 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0050 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", - "+ calculate D: 0.0019 s\n", - "+ calculate E: 0.0041 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0011 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0063 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0018 s\n", - "+ calculate D: 0.0019 s\n", - "+ calculate E: 0.0044 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0014 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0062 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0019 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0041 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0016 s\n", - "+ calculate B: 0.0014 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0056 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", - "+ calculate D: 0.0012 s\n", - "+ calculate E: 0.0040 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0053 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0018 s\n", - "+ calculate E: 0.0036 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", - "+ calculate D: 0.0020 s\n", - "+ calculate E: 0.0037 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0045 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0015 s\n", - "+ calculate E: 0.0035 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0013 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0030 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0034 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0021 s\n", - "+ calculate E: 0.0035 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0011 s\n", - "+ calculate E: 0.0034 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0008 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0049 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0010 s\n", - "+ calculate E: 0.0033 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0008 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0010 s\n", - "+ calculate E: 0.0037 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0051 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0043 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0011 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0065 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0022 s\n", - "+ calculate E: 0.0037 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0071 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0020 s\n", - "+ calculate E: 0.0057 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0014 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0002 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0074 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0032 s\n", - "+ calculate D: 0.0021 s\n", - "+ calculate E: 0.0057 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0015 s\n", - "+ calculate B: 0.0013 s\n", - "+ calculate C: 0.0002 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0077 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0033 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0060 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0011 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0073 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0034 s\n", - "+ calculate D: 0.0020 s\n", - "+ calculate E: 0.0055 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0011 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0069 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0029 s\n", - "+ calculate D: 0.0020 s\n", - "+ calculate E: 0.0044 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0012 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0074 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0034 s\n", - "+ calculate D: 0.0019 s\n", - "+ calculate E: 0.0053 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0078 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0023 s\n", - "+ calculate D: 0.0022 s\n", - "+ calculate E: 0.0049 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0016 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0066 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0034 s\n", - "+ calculate D: 0.0018 s\n", - "+ calculate E: 0.0058 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0009 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0072 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0030 s\n", - "+ calculate D: 0.0021 s\n", - "+ calculate E: 0.0052 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0014 s\n", - "+ calculate B: 0.0011 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0064 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0029 s\n", - "+ calculate D: 0.0027 s\n", - "+ calculate E: 0.0052 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0012 s\n", - "+ calculate B: 0.0012 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0050 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0021 s\n", - "+ calculate D: 0.0018 s\n", - "+ calculate E: 0.0036 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0010 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0020 s\n", - "+ calculate D: 0.0018 s\n", - "+ calculate E: 0.0036 s\n", - "+ calculate F: 0.0000 s\n", - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0008 s\n", - "+ calculate B: 0.0009 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0048 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0024 s\n", - "+ calculate D: 0.0026 s\n", - "+ calculate E: 0.0049 s\n", - "+ calculate F: 0.0000 s\n", "The fit has been successful: True\n", "The gooodness of fit (chi2) is: 31.740148464580013\n", "\n", @@ -4159,10 +3129,6 @@ } ], "source": [ - "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, \n", - " method='least_squares', minimizer_kwargs={'diff_step': 1e-5})\n", - "\n", - "\n", "print(\"The fit has been successful: {}\".format(result.success))\n", "if result.success: \n", " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", @@ -4184,43 +3150,23 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n", - "+ calculate A: 0.0012 s\n", - "+ calculate B: 0.0011 s\n", - "+ calculate C: 0.0001 s\n", - "+ reflection_list = CFML_api.ReflectionList: 0.0001 s\n", - "+ reflection_list.compute_structure_factors: 0.0002 s\n", - "+ set reflection_list: 0.0064 s\n", - "+ diffraction_pattern = CFML_api.DiffractionPattern: 0.0027 s\n", - "+ calculate D: 0.0017 s\n", - "+ calculate E: 0.0044 s\n", - "+ calculate F: 0.0000 s\n" - ] - }, { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 35, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "928d78db75ed4cd7bc142003eb269ab5", + "model_id": "51aca60efaf04679808a0e9cf4f610e6", "version_major": 2, "version_minor": 0 }, @@ -4243,29 +3189,36 @@ "plt.legend()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show the difference between CrysPy and CrysFML in calculated patterns" + ] + }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 32, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "bf4f8d7d972f46ccbb7b39f902b859f6", + "model_id": "5504ea2dcb464128b0c538e3c9e7b606", "version_major": 2, "version_minor": 0 }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAACYHElEQVR4nO2dd5wU9f3/X1uuwt3ROZDeRJqgCEGsESVGidFEoyERbIkRY41RvpYYo9Fo1MQeNaL+omJMLLGLWFEEBVEURFCkd7g74Liyu/P7Y29mPzPzmbZ9d15PHzzcm53ymc/OzOc17/YJKIqigBBCCCGE+IZgrhtACCGEEEKyCwUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiMygACSGEEEJ8BgUgIYQQQojPoAAkhBBCCPEZFICEEEIIIT6DApAQQgghxGdQABJCCCGE+AwKQEIIIYQQn0EBSAghhBDiM8K5bkAhE4vFsHHjRlRVVSEQCOS6OYQQQghxgaIo2L17N3r27Ilg0J+2MArAFNi4cSN69+6d62YQQgghJAnWrVuHXr165boZOYECMAWqqqoAxC+g6urqHLeGEEIIIW5oaGhA7969tXHcj1AApoDq9q2urqYAJIQQQgoMP4dv+dPxTQghhBDiYygACSGEEEJ8BgUgIYQQQojPYAxghlEUBZFIBNFoNNdNIYRkmFAohHA47Ou4IkJIYUABmEFaWlqwadMmNDY25rophJAsUVlZiR49eqC0tDTXTSGEEEsoADNELBbD6tWrEQqF0LNnT5SWltIqQEgRoygKWlpasG3bNqxevRqDBw/2bYFZQkj+QwGYIVpaWhCLxdC7d29UVlbmujmEkCxQUVGBkpISrFmzBi0tLSgvL891kwghRApfTzMMLQCE+Ave84SQQoBPKkIIIYQQn0EBSDLK9ddfj9GjR6e0j5aWFgwaNAgffvhhehqVY6666ir89re/zfpxv/vuOwQCASxZsiSl/Vx77bX41a9+lZ5GFRDbt29Ht27dsH79+lw3hRBCUoYCkOiYPn06fvzjH+e6GToeeOAB9O/fH4ceeqhu+dtvv40f/vCH6Ny5MyorKzFs2DBcfvnl2LBhQ8baoooo9V/nzp1x3HHH4dNPP3W9j9/97nd47LHH8O2339qu98477yAQCKCuri7FVqePzZs34+9//zuuvvpq0/Lf/va3GDBgAMrKytC7d29MmTIFc+fOzWh7jjrqKN3vof6LRCK672+55RbTtieccAICgQCuv/563f4uueQS6bG6dOmCM888E3/4wx8ycSqEEJJVKABJXqMoCu655x6cc845uuX/+Mc/MGnSJNTW1uK///0vli1bhgceeAD19fW4/fbbpfuKRqOIxWJpadebb76JTZs24fXXX8eePXtw/PHHuxZqXbp0weTJk3H//fenpS3Z5OGHH8ahhx6Kvn37asu+++47HHzwwXjrrbdw2223YenSpXjttddw9NFHY8aMGZb7am1tTUubzjvvPGzatEn3LxxO5Lf17t0bjz76qG6bDRs2YO7cuejRo4enY5111ll44oknsHPnznQ0nRBCcgYFILElFovh1ltvxaBBg1BWVoY+ffrgpptu0r6/8sorMWTIEFRWVmLAgAG49tprHQf2Rx55BMOHD0dZWRl69OiBCy+80HLdRYsW4ZtvvsEJJ5ygLVu/fj0uuugiXHTRRXjkkUdw1FFHoV+/fjjiiCPw8MMP47rrrgMAPProo+jQoQP+97//YdiwYSgrK8O8efNQUlKCzZs3645zySWX4PDDDwcArFmzBlOmTEHHjh3Rrl07DB8+HK+88opu/c6dO6O2thZjx47FX//6V2zZsgULFizADTfcgBEjRpjOY/To0bj22mu1v6dMmYLZs2fb9pOMDz74AEcddRQqKyvRsWNHTJ48Gbt27QIAvPbaazjssMPQoUMHdO7cGSeeeCK++eYb2/19+eWXOPHEE1FdXY2qqiocfvjhttvMnj0bU6ZM0S274IILEAgEsHDhQvzkJz/BkCFDMHz4cFx22WX46KOPtPUCgQDuv/9+/OhHP0K7du1w4403YtCgQfjrX/+q29+SJUsQCASwatUqKIqC66+/Hn369EFZWRl69uyJiy66SLd+ZWUlamtrdf9ETjzxRGzfvh0ffPCBtuyxxx7Dcccdh27dutn2j5Hhw4ejZ8+eeO655zxtR4gd23Y34+ZXlmP19r25bgrxERSAWURRFDS2RLL+T1GUpNs8c+ZM3HLLLbj22muxbNkyPPnkk+jevbv2fVVVFR599FEsW7YMf//73/HQQw/hzjvvtNzf/fffjxkzZuBXv/oVli5div/9738YNGiQ5frvv/8+hgwZgqqqKm3ZM888g5aWFvz+97+XbtOhQwftc2NjI/7yl7/g4YcfxpdffomxY8diwIAB+H//7/9p67S2tuKJJ57A2WefDQCYMWMGmpub8d5772Hp0qX4y1/+gvbt21u2saKiAkA8VvHss8/G8uXL8fHHH2vff/rpp/j8889x1llnacvGjRuH9evX47vvvrPcr5ElS5bgmGOOwbBhwzB//nzMmzcPU6ZM0WaZ2bt3Ly677DJ88sknmDt3LoLBIE4++WRLq+eGDRtwxBFHoKysDG+99RYWLVqEs88+W3OfGtm5cyeWLVuGsWPH6pa99tprmDFjBtq1a2faRvwtgHhM6Mknn4ylS5finHPOwdlnn41Zs2bp1pk1axaOOOIIDBo0CP/9739x55134h//+AdWrlyJ559/HiNHjnTdZwBQWlqKqVOn6o7z6KOPar+3V8aNG4f3338/qW0JkXHp00vwj/e+xUn3zMt1U4iPYB3ALLKvNYph172e9eMuu2EyKku9/9S7d+/G3//+d9xzzz2YNm0aAGDgwIE47LDDtHWuueYa7XO/fv3wu9/9DrNnz7YUZzfeeCMuv/xyXHzxxdqyQw45xLINa9asQc+ePXXLVq5cierqalfuu9bWVtx333048MADtWXnnHMOZs2ahSuuuAIA8OKLL6KpqQmnnXYaAGDt2rX4yU9+ogmNAQMGWO6/rq4Of/rTn9C+fXuMGzcO3bt3x+TJkzFr1iztvGbNmoUjjzxStx/1nNasWYN+/fo5ngcA3HrrrRg7dizuu+8+bdnw4cO1zz/5yU906z/yyCPo2rUrli1bJrVK3nvvvaipqcHs2bNRUlICABgyZIjl8deuXQtFUXS/h2qlGzp0qKtz+PnPf64TwtOnT8d1112HhQsXYty4cWhtbcWTTz6pWQXXrl2L2tpaTJo0CSUlJejTpw/GjRun2+d9992Hhx9+WPv717/+tSkM4Oyzz8bhhx+Ov//971i0aBHq6+tx4okn6uL/3NKzZ09PMZ+EOLFoTdyK39Akf/kiJBPQAkgsWb58OZqbm3HMMcdYrvP0009j4sSJqK2tRfv27XHNNddg7dq10nW3bt2KjRs32u7PyL59+0zFdBVFcT2rSmlpKUaNGqVbNn36dKxatUpzTz766KM47bTTNAvWRRddhBtvvBETJ07EH/7wB3z++eem/R566KFo3749OnbsiM8++wxPP/20Zhk977zz8NRTT6GpqQktLS148sknTdYm1WqoThM4fPhwtG/fHu3bt8fxxx8vPRfVAmjFypUrccYZZ2DAgAGorq7WhKXV77FkyRIcfvjhmvhzYt++fQCg+z28WpdF6yEQF1MnnHACHnnkEQBxMd7c3IxTTz0VAHDqqadi3759GDBgAM477zw899xzJgvl1KlTsWTJEu3fzJkzTcc98MADMXjwYPznP//BI488gl/+8pe6OEEvVFRUcHpHklY4SRTJBbQAZpGKkhCW3TA5J8dNars2kWLF/PnzMXXqVPzxj3/E5MmTNWuSVRKG0/5kdOnSBUuXLtUtGzJkCOrr67Fp0yZHK2BFRYVJLHbr1g1TpkzBrFmz0L9/f7z66qt45513tO/PPfdcTJ48GS+//DLeeOMN3Hzzzbj99tt1pVuefvppDBs2DJ07dza5OadMmYKysjI899xzKC0tRWtrK37605/q1lGTCLp27QoAeOWVV7TYSat+cuq/KVOmoG/fvnjooYfQs2dPxGIxjBgxAi0tLUntz0iXLl0AALt27dLaPXjwYAQCAXz11Veu9iFzE5977rn45S9/iTvvvBOzZs3Cz372M232nN69e2PFihV48803MWfOHFxwwQW47bbb8O6772rCtaamxjaMQOXss8/Gvffei2XLlmHhwoWu2itj586d2vkTQkihQgtgFgkEAqgsDWf9X7JzEA8e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EAjgkksu0ZaxD92zYcMG/OIXv0Dnzp1RUVGBkSNH4pNPPtG+VxQF1113HXr06IGKigpMmjQJK1euzGGL849oNIprr70W/fv3R0VFBQYOHIg//elPunlR2Y9m3nvvPUyZMgU9e/ZEIBDA888/r/veTZ/t3LkTU6dORXV1NTp06IBzzjkHe/bsyeJZ5B67fmxtbcWVV16JkSNHol27dujZsyfOPPNMbNy4UbcP9mPqUAASW959913MmDEDH330EebMmYPW1lYcd9xx2Lt3r7bOpZdeihdffBHPPPMM3n33XWzcuBGnnHJKDludv3z88cf4xz/+gVGjRumWsw/dsWvXLkycOBElJSV49dVXsWzZMtx+++3o2LGjts6tt96Ku+66Cw888AAWLFiAdu3aYfLkyWhqasphy/OLv/zlL7j//vtxzz33YPny5fjLX/6CW2+9FXfffbe2DvvRzN69e3HggQfi3nvvlX7vps+mTp2KL7/8EnPmzMFLL72E9957D7/61a+ydQp5gV0/NjY2YvHixbj22muxePFiPPvss1ixYgV+9KMf6dZjP6YBhRAPbN26VQGgvPvuu4qiKEpdXZ1SUlKiPPPMM9o6y5cvVwAo8+fPz1Uz85Ldu3crgwcPVubMmaMceeSRysUXX6woCvvQC1deeaVy2GGHWX4fi8WU2tpa5bbbbtOW1dXVKWVlZcpTTz2VjSYWBCeccIJy9tln65adcsopytSpUxVFYT+6AYDy3HPPaX+76bNly5YpAJSPP/5YW+fVV19VAoGAsmHDhqy1PZ8w9qOMhQsXKgCUNWvWKIrCfkwXtAAST9TX1wMAOnXqBABYtGgRWltbMWnSJG2doUOHok+fPpg/f35O2pivzJgxAyeccIKurwD2oRf+97//YezYsTj11FPRrVs3jBkzBg899JD2/erVq7F582ZdX9bU1GD8+PHsS4FDDz0Uc+fOxddffw0A+OyzzzBv3jwcf/zxANiPyeCmz+bPn48OHTpg7Nix2jqTJk1CMBjEggULst7mQqG+vh6BQAAdOnQAwH5MF+FcN4AUDrFYDJdccgkmTpyIESNGAAA2b96M0tJS7cZU6d69OzZv3pyDVuYns2fPxuLFi/Hxxx+bvmMfuufbb7/F/fffj8suuwz/93//h48//hgXXXQRSktLMW3aNK2/unfvrtuOfannqquuQkNDA4YOHYpQKIRoNIqbbroJU6dOBQD2YxK46bPNmzejW7duuu/D4TA6derEfrWgqakJV155Jc444wxUV1cDYD+mCwpA4poZM2bgiy++wLx583LdlIJi3bp1uPjiizFnzhyUl5fnujkFTSwWw9ixY/HnP/8ZADBmzBh88cUXeOCBBzBt2rQct65w+Pe//40nnngCTz75JIYPH44lS5bgkksuQc+ePdmPJG9obW3FaaedBkVRcP/99+e6OUUHXcDEFRdeeCFeeuklvP322+jVq5e2vLa2Fi0tLairq9Otv2XLFtTW1ma5lfnJokWLsHXrVhx00EEIh8MIh8N49913cddddyEcDqN79+7sQ5f06NEDw4YN0y074IADsHbtWgDQ+suYQc2+1HPFFVfgqquuwumnn46RI0fil7/8JS699FLcfPPNANiPyeCmz2pra7F161bd95FIBDt37mS/GlDF35o1azBnzhzN+gewH9MFBSCxRVEUXHjhhXjuuefw1ltvoX///rrvDz74YJSUlGDu3LnashUrVmDt2rWYMGFCtpublxxzzDFYunQplixZov0bO3Yspk6dqn1mH7pj4sSJpjJEX3/9Nfr27QsA6N+/P2pra3V92dDQgAULFrAvBRobGxEM6h//oVAIsVgMAPsxGdz02YQJE1BXV4dFixZp67z11luIxWIYP3581tucr6jib+XKlXjzzTfRuXNn3ffsxzSR6ywUkt/85je/UWpqapR33nlH2bRpk/avsbFRW+f8889X+vTpo7z11lvKJ598okyYMEGZMGFCDlud/4hZwIrCPnTLwoULlXA4rNx0003KypUrlSeeeEKprKxU/vWvf2nr3HLLLUqHDh2UF154Qfn888+Vk046Senfv7+yb9++HLY8v5g2bZqy3377KS+99JKyevVq5dlnn1W6dOmi/P73v9fWYT+a2b17t/Lpp58qn376qQJAueOOO5RPP/1Uy05102c/+MEPlDFjxigLFixQ5s2bpwwePFg544wzcnVKOcGuH1taWpQf/ehHSq9evZQlS5boxp3m5mZtH+zH1KEAJLYAkP6bNWuWts6+ffuUCy64QOnYsaNSWVmpnHzyycqmTZty1+gCwCgA2YfuefHFF5URI0YoZWVlytChQ5UHH3xQ930sFlOuvfZapXv37kpZWZlyzDHHKCtWrMhRa/OThoYG5eKLL1b69OmjlJeXKwMGDFCuvvpq3QDLfjTz9ttvS5+H06ZNUxTFXZ/t2LFDOeOMM5T27dsr1dXVyllnnaXs3r07B2eTO+z6cfXq1Zbjzttvv63tg/2YOgFFEUq/E0IIIYSQoocxgIQQQgghPoMCkBBCCCHEZ1AAEkIIIYT4DApAQgghhBCfQQFICCGEEOIzKAAJIYQQQnwGBSAhhBBCiM+gACSEEEII8RkUgIQQQgghPoMCkBBCCCHEZ1AAEkIIIYT4DApAQgghhBCfQQFICCGEEOIzKAAJIYQQQnwGBSAhhBBCiM+gACSEEEII8RkUgIQQQgghPoMCkBBCCCHEZ1AAEkIIIYT4DApAQgghhBCfQQFICCGEEOIzKAAJIYQQQnwGBSAhhBBCiM+gACSEEEII8RkUgIQQQgghPoMCkBBCCCHEZ1AAEkIIIYT4DApAQgghhBCfQQFICCGEEOIzKAAJIYQQQnwGBSAhhBBCiM/4/yRSOTwEAh1NAAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAACXWUlEQVR4nO2dd5wU9f3/X7t7He6OzoH0JoogKIrYDSj2lsRoSMSaaDTWGOWbaBKjsSSaxB5NRPOzYEzU2A12QcSCiAoqIL23uwOOK7s7vz/2ZvYzn/lM2347r6cPHu7NTvnMZ2fm85p3+4Q0TdNACCGEEEICQzjfDSCEEEIIIbmFApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYJfluQEcmHo9j3bp1qK6uRigUyndzCCGEEOIBTdOwY8cO9O3bF+FwMG1hFIBpsG7dOvTv3z/fzSCEEEJICqxevRr9+vXLdzPyAgVgGlRXVwNIXEA1NTV5bg0hhBBCvNDY2Ij+/fsb43gQoQBMA93tW1NTQwFICCGEdDCCHL4VTMc3IYQQQkiAoQAkhBBCCAkYFICEEEIIIQGDMYBZRtM0RKNRxGKxfDeFEFIARCIRlJSUBDr2iBCSfygAs0hrayvWr1+PpqamfDeFEFJAVFVVoU+fPigrK8t3UwghAYUCMEvE43EsX74ckUgEffv2RVlZGd/4CQk4mqahtbUVmzdvxvLlyzF8+PDAFqElhOQXCsAs0draing8jv79+6OqqirfzSGEFAiVlZUoLS3FypUr0draioqKinw3iRASQPjqmWX4dk8IkeFzgRCSb/gUIoQQQggJGBSAJKv89re/xdixY9PaR2trK4YNG4b3338/M43KM9dddx1+/vOf57sZSh555BF06dIl7f0cfvjheOKJJ9JvUAfj1VdfxdixYxGPx/PdFEIIcYQCkJg455xzcOqpp+a7GSYeeOABDB48GAcffLBp+VtvvYXjjz8e3bt3R1VVFfbee29cffXVWLt2bdbasmLFCoRCIeNf9+7dccwxx+DTTz/1vI9f/OIXePTRR/Htt9+m3Z5MCOxM8/zzz2Pjxo0488wzTcs//fRTfP/730fv3r1RUVGB4cOH48ILL8Q333yT1faIv5f+79BDD7V8/8EHH5i2a2lpQffu3REKhfD222+b1n/uueeUxzr22GNRWlqKxx9/PBunQgghGYMCkBQ0mqbhnnvuwfnnn29a/re//Q2TJ09GXV0d/vOf/2DRokV44IEH0NDQgDvuuEO5r1gsljHLzOuvv47169fjtddew86dO3Hcccehvr7e07Y9evTAlClTcP/992ekLYXGXXfdhXPPPdcU5/biiy/ioIMOQktLCx5//HEsXrwYjz32GGpra3H99dcr96PX0MwEM2bMwPr1641/zz//vOn7/v37Y8aMGaZlzz77LDp37uz7WOeccw7uuuuutNpLCCHZhgKQOBKPx3H77bdj2LBhKC8vx4ABA3DzzTcb31977bUYMWIEqqqqMGTIEFx//fVoa2tz3OfDDz+MUaNGoby8HH369MGll15qu+4nn3yCZcuW4YQTTjCWrVmzBpdddhkuu+wyPPzwwzjyyCMxaNAgHH744fj73/+OG264AUDSnfn8889j7733Rnl5OWbPno3S0lJs2LDBdJwrrrgChx12GABg5cqVOOmkk9C1a1d06tQJo0aNwssvv2xav3v37qirq8P48ePxpz/9CRs3bsS8efNw4403Yp999rGcx9ixY01C56STTsLMmTMd+ylVnPr3zjvvxOjRo9GpUyf0798fP/vZz7Bz507H/b3wwgs44IADUFFRgR49euC0006zXXfz5s148803cdJJJxnLmpqacO655+L444/H888/j8mTJ2Pw4MGYMGEC/vSnP+Fvf/sbAODtt99GKBTCK6+8gv333x/l5eV47LHHEA6H8fHHH5uO85e//AUDBw5EPB7H9u3bMXXqVPTs2ROVlZUYPny4Rcx16dIFdXV1xr9u3bqZvp82bRpmzpyJ3bt3m/px2rRpjn2j4qSTTsLHH3+MZcuW+d6WBJPNO1pwy8uLsXzLrnw3hQQICsAcomkamlqjOf+naVrKbZ4+fTpuvfVWXH/99Vi0aBGeeOIJ9O7d2/i+uroajzzyCBYtWoS//vWveOihh/DnP//Zdn/3338/LrnkEvzkJz/B559/jueffx7Dhg2zXf+9997DiBEjUF1dbSx7+umn0drail/+8pfKbcQYtqamJtx22234+9//ji+//BLjx4/HkCFD8P/+3/8z1mlra8Pjjz+O8847DwBwySWXoKWlBe+++y4+//xz3HbbbY6WoMrKSgCJWMXzzjsPixcvxkcffWR8/+mnn2LhwoU499xzjWUHHngg1qxZgxUrVtjuNxXc+jccDuOuu+7Cl19+iUcffRRvvvmmbT8CwEsvvYTTTjsNxx9/PD799FO88cYbOPDAA23Xnz17NqqqqrDXXnsZy1577TVs2bLF0+8FJGIkb731VixevBgnn3wyJk+ebBF0M2bMwDnnnINwOGxcm6+88goWL16M+++/Hz169HDqJgv7778/Bg0ahP/85z8AgFWrVuHdd9/Fj3/8Y1/7AYABAwagd+/eeO+993xvS4LJlU8twN/e/Ran3DM7300hAYJ1AHPI7rYY9r7htZwfd9GNU1BV5v+n3rFjB/7617/innvuMSwhQ4cONcVP/frXvzY+Dxo0CL/4xS8wc+ZM28H+pptuwtVXX43LL7/cWHbAAQfYtmHlypXo27evadmSJUtQU1ODPn36uJ5DW1sb7rvvPuy7777GsvPPPx8zZszANddcAyBh4WpubsYZZ5wBIDH4f/e738Xo0aMBAEOGDLHdf319PX7/+9+jc+fOOPDAA9G7d29MmTIFM2bMMM5rxowZOOKII0z70c9p5cqVGDRokOt5eMWtf6+44grj86BBg3DTTTfhoosuwn333afc380334wzzzwTv/vd74xlYl/KrFy5Er179za5f5csWQIAGDlypKdzuPHGG3H00Ucbf19wwQW46KKLcOedd6K8vBzz58/H559/jv/+978AEr/XuHHjMH78eOO8ZM466yxEIhHj78cee8wS63reeefh4Ycfxo9+9CM88sgjOP7449GzZ09PbZbp27cvVq5cmdK2JHh8snI7AKCxOTMhD4R4gRZAYsvixYvR0tKCSZMm2a7z1FNP4ZBDDkFdXR06d+6MX//611i1apVy3U2bNmHdunWO+5PZvXu3pVCupmmeZ1UpKyvDmDFjTMvOOeccLF261Aj6f+SRR3DGGWegU6dOAIDLLrsMN910Ew455BD85je/wcKFCy37Pfjgg9G5c2d07doVn332GZ566inDMnrhhRfiySefRHNzM1pbW/HEE08Y1kUd3WpoN03gH/7wB3Tu3Nn4Z9enIl769/XXX8ekSZOwxx57oLq6Gj/+8Y+xdetW23YsWLAgI7+XH3Qhp3PqqaciEong2WefBZD4vY466ihD6F188cWYOXMmxo4di1/+8pfKbPE///nPWLBggfFPFJg6P/rRjzB37lx8++23eOSRRyy/mR8qKys5BSTxDCeJIvmAFsAcUlkawaIbp+TluClt1y5S7Jg7dy6mTp2K3/3ud5gyZQpqa2sxc+ZM2yQMt/2p6NGjBz7//HPTshEjRqChoQHr1693tQJWVlZaxGKvXr1w0kknYcaMGRg8eDBeeeUVU5bnBRdcgClTpuCll17C//73P9xyyy244447TKVbnnrqKey9997o3r27xYV50kknoby8HM8++yzKysrQ1taG733ve6Z1tm3bBgC2FqaLLrrIsEgCsFhB7c7ViRUrVuDEE0/ExRdfjJtvvhndunXD7Nmzcf7556O1tVU5Y43f36xHjx7Yvn27admIESMAAF999RUmTpzoug9diOuUlZXh7LPPxowZM3D66afjiSeewF//+lfj++OOOw4rV67Eyy+/jFmzZmHSpEm45JJL8Kc//clYp66uzjHUAEjEdZ544ok4//zz0dzcjOOOOw47duxwba+Kbdu2pWw9JISQXEALYA4JhUKoKivJ+b9U5yAePnw4Kisr8cYbbyi/f//99zFw4ED86le/wvjx4zF8+HBHt1d1dTUGDRpkuz8V48aNw1dffWWyIn3ve99DWVkZbr/9duU2XrJxL7jgAjz11FN48MEHMXToUBxyyCGm7/v374+LLroIzzzzDK6++mo89NBDlu+HDh2qrJlXUlKCadOmYcaMGZgxYwbOPPNMi5D64osvUFpailGjRinb161bNwwbNsz4V1Li/q7m1r+ffPIJ4vE47rjjDhx00EEYMWIE1q1b57jPMWPG+P69NmzYYBKBxxxzDHr06JH27/X666/jvvvuQzQaxemnn276vmfPnpg2bRoee+wx/OUvf8GDDz7ouc0i5513Ht5++22cffbZJpexH5qbm7Fs2TKMGzcupe0JISQX0AJIbKmoqMC1116LX/7ylygrK8MhhxyCzZs348svv8T555+P4cOHY9WqVZg5cyYOOOAAvPTSS4abzo7f/va3uOiii9CrVy/DwjJnzhzbwshHHXUUdu7ciS+//NLIru3fvz/+/Oc/49JLL0VjYyPOPvtsDBo0CGvWrME///lPdO7c2dYKqTNlyhTU1NTgpptuwo033mj67oorrsBxxx2HESNGYPv27XjrrbdMSQ1euOCCC4xt5syZY/n+vffew2GHHZaSVdQJp/4dNmwY2tracPfdd+Okk07CnDlz8MADDzju7ze/+Q0mTZqEoUOH4swzz0Q0GsXLL7+Ma6+9Vrn+uHHj0KNHD8yZMwcnnngigIRF7+9//zu+//3v4+STT8Zll12GYcOGYcuWLfjXv/5lXENO7LXXXjjooINw7bXX4rzzzjP12w033ID9998fo0aNQktLC1588UXfv5fOsccei82bN6OmpsZxveXLl2PBggWmZcOHD0enTp3wwQcfoLy83JO1kxBC8gUtgMSR66+/HldffTVuuOEG7LXXXvjBD36ATZs2AQBOPvlkXHnllbj00ksxduxYvP/++7Y13XSmTZuGv/zlL7jvvvswatQonHjiiUaSgIru3bvjtNNOsxTW/dnPfob//e9/WLt2LU477TSMHDkSF1xwAWpqavCLX/zC9bzC4TDOOeccxGIxnH322abvYrEYLrnkEuy111449thjMWLECNskCTuGDx+Ogw8+GCNHjsSECRMs38+cORMXXnihr316wal/9913X9x555247bbbsM8+++Dxxx/HLbfc4ri/I488Ek8//TSef/55jB07Ft/5znfw4Ycf2q4fiURw7rnnWn6vU045Be+//z5KS0vxwx/+ECNHjsRZZ52FhoYG3HTTTZ7OTXdVy7F5ZWVl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", "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] @@ -4276,24 +3229,10 @@ ], "source": [ "%matplotlib widget\n", - "plt.plot(meas_x, calc_y_cryspy-calc_y_crysfml, label='Icalc (CrysPy)-Icalc (CrysFML)')\n", + "plt.plot(meas_x, calc_y_cryspy-calc_y_crysfml, label='Icalc (CrysPy) - Icalc (CrysFML)')\n", "plt.legend()" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": null, diff --git a/Notebooks/PbSO4.cif b/examples/PbSO4.cif similarity index 100% rename from Notebooks/PbSO4.cif rename to examples/PbSO4.cif From e7e8dab52fa905177a6feb44bff9d193757d8f0a Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 27 Sep 2021 17:42:49 +0200 Subject: [PATCH 187/312] Add instruction on how to run Jupyter Notebook examples --- README.md | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 37a696df..0d304873 100644 --- a/README.md +++ b/README.md @@ -1 +1,40 @@ -# easyDiffractionLib \ No newline at end of file +## Getting Started + +### Download easyDiffractionLib repo +* Open **Terminal** +* Change the current working directory to the location where you want the **easyDiffractionLib** directory +* Clone **easyDiffractionApp** repo from GitHub using **git** + ``` + git clone https://github.com/easyScience/easyDiffractionApp + ``` + +### Install easyDiffractionLib dependencies +* Open **Terminal** +* Install [**Poetry**](https://python-poetry.org/docs/) (Python dependency manager) + * osx / linux / bashonwindows + ``` + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python + ``` + * windows powershell + ``` + (Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python + ``` +* Go to **easyDiffractionLib** directory +* Create virtual environment for **easyDiffractionLib** and install its dependences using **poetry** (configuration file: **pyproject.toml**) + ``` + poetry install + ``` + +### Run Jupyter Notebook examples that use easyDiffractionLib +* Open **Terminal** +* Go to **easyDiffractionLib** directory +* Run Jupyter Notebook server + ``` + poetry run jupyter notebook + ``` +* In webbrowser open + ``` + http://localhost:8888/ + ``` +* Go to *examples* directory +* Select one of the *.ipynb files From 1bce0b8d26b074a5c2193b647eef797667d4f016 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 27 Sep 2021 17:52:42 +0200 Subject: [PATCH 188/312] Update fitting example --- examples/FittingPdCw1d.ipynb | 2283 +--------------------------------- 1 file changed, 46 insertions(+), 2237 deletions(-) diff --git a/examples/FittingPdCw1d.ipynb b/examples/FittingPdCw1d.ipynb index 161da9f4..b4630e8d 100644 --- a/examples/FittingPdCw1d.ipynb +++ b/examples/FittingPdCw1d.ipynb @@ -157,10 +157,10 @@ "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + "

\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] @@ -207,7 +207,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -257,2199 +257,7 @@ " 10.3000 224.0000 14.9666\n", " 10.3500 216.0000 14.6969\n", " 10.4000 202.0000 14.2127\n", - " 10.4500 229.0000 15.1327\n", - " 10.5000 202.0000 14.2127\n", - " 10.5500 215.0000 14.6629\n", - " 10.6000 215.0000 14.6629\n", - " 10.6500 196.0000 14.0000\n", - " 10.7000 235.0000 15.3297\n", - " 10.7500 207.0000 14.3875\n", - " 10.8000 205.0000 14.3178\n", - " 10.8500 238.0000 15.4272\n", - " 10.9000 202.0000 14.2127\n", - " 10.9500 213.0000 14.5945\n", - " 11.0000 226.0000 15.0333\n", - " 11.0500 198.0000 14.0712\n", - " 11.1000 222.0000 14.8997\n", - " 11.1500 186.0000 13.6382\n", - " 11.2000 216.0000 14.6969\n", - " 11.2500 218.0000 14.7648\n", - " 11.3000 225.0000 15.0000\n", - " 11.3500 200.0000 14.1421\n", - " 11.4000 196.0000 14.0000\n", - " 11.4500 224.0000 14.9666\n", - " 11.5000 199.0000 14.1067\n", - " 11.5500 204.0000 14.2829\n", - " 11.6000 189.0000 13.7477\n", - " 11.6500 211.0000 14.5258\n", - " 11.7000 190.0000 13.7840\n", - " 11.7500 184.0000 13.5647\n", - " 11.8000 204.0000 14.2829\n", - " 11.8500 204.0000 14.2829\n", - " 11.9000 219.0000 14.7986\n", - " 11.9500 207.0000 14.3875\n", - " 12.0000 227.0000 15.0665\n", - " 12.0500 211.0000 10.2713\n", - " 12.1000 193.0000 9.8234\n", - " 12.1500 206.0000 10.1489\n", - " 12.2000 208.0000 10.1980\n", - " 12.2500 191.0000 9.7724\n", - " 12.3000 194.0000 9.8489\n", - " 12.3500 185.0000 9.6177\n", - " 12.4000 200.0000 10.0000\n", - " 12.4500 203.0000 10.0747\n", - " 12.5000 197.0000 9.9247\n", - " 12.5500 203.0000 10.0747\n", - " 12.6000 200.0000 10.0000\n", - " 12.6500 200.0000 10.0000\n", - " 12.7000 205.0000 10.1242\n", - " 12.7500 208.0000 10.1980\n", - " 12.8000 205.0000 10.1242\n", - " 12.8500 201.0000 10.0250\n", - " 12.9000 221.0000 10.5119\n", - " 12.9500 218.0000 10.4403\n", - " 13.0000 218.0000 10.4403\n", - " 13.0500 216.0000 10.3923\n", - " 13.1000 202.0000 10.0499\n", - " 13.1500 206.0000 10.1489\n", - " 13.2000 197.0000 9.9247\n", - " 13.2500 210.0000 10.2470\n", - " 13.3000 199.0000 9.9750\n", - " 13.3500 219.0000 10.4642\n", - " 13.4000 192.0000 9.7980\n", - " 13.4500 211.0000 10.2713\n", - " 13.5000 199.0000 9.9750\n", - " 13.5500 196.0000 9.8995\n", - " 13.6000 195.0000 9.8742\n", - " 13.6500 203.0000 10.0747\n", - " 13.7000 202.0000 10.0499\n", - " 13.7500 200.0000 10.0000\n", - " 13.8000 199.0000 9.9750\n", - " 13.8500 191.0000 9.7724\n", - " 13.9000 204.0000 10.0995\n", - " 13.9500 191.0000 9.7724\n", - " 14.0000 200.0000 10.0000\n", - " 14.0500 199.0000 9.9750\n", - " 14.1000 197.0000 9.9247\n", - " 14.1500 202.0000 10.0499\n", - " 14.2000 210.0000 10.2470\n", - " 14.2500 202.0000 10.0499\n", - " 14.3000 198.0000 9.9499\n", - " 14.3500 191.0000 9.7724\n", - " 14.4000 194.0000 9.8489\n", - " 14.4500 198.0000 9.9499\n", - " 14.5000 194.0000 9.8489\n", - " 14.5500 193.0000 9.8234\n", - " 14.6000 212.0000 10.2956\n", - " 14.6500 214.0000 10.3441\n", - " 14.7000 197.0000 9.9247\n", - " 14.7500 195.0000 9.8742\n", - " 14.8000 205.0000 10.1242\n", - " 14.8500 209.0000 10.2225\n", - " 14.9000 203.0000 10.0747\n", - " 14.9500 197.0000 9.9247\n", - " 15.0000 191.0000 9.7724\n", - " 15.0500 192.0000 9.7980\n", - " 15.1000 215.0000 10.3682\n", - " 15.1500 194.0000 9.8489\n", - " 15.2000 189.0000 9.7211\n", - " 15.2500 188.0000 9.6954\n", - " 15.3000 202.0000 10.0499\n", - " 15.3500 201.0000 10.0250\n", - " 15.4000 198.0000 9.9499\n", - " 15.4500 208.0000 10.1980\n", - " 15.5000 197.0000 9.9247\n", - " 15.5500 187.0000 9.6695\n", - " 15.6000 187.0000 9.6695\n", - " 15.6500 190.0000 9.7468\n", - " 15.7000 197.0000 9.9247\n", - " 15.7500 200.0000 10.0000\n", - " 15.8000 193.0000 9.8234\n", - " 15.8500 180.0000 9.4868\n", - " 15.9000 194.0000 9.8489\n", - " 15.9500 206.0000 10.1489\n", - " 16.0000 195.0000 9.8742\n", - " 16.0500 193.0000 9.8234\n", - " 16.1000 205.0000 10.1242\n", - " 16.1500 194.0000 9.8489\n", - " 16.2000 196.0000 9.8995\n", - " 16.2500 194.0000 9.8489\n", - " 16.3000 199.0000 9.9750\n", - " 16.3500 207.0000 10.1735\n", - " 16.4000 188.0000 9.6954\n", - " 16.4500 203.0000 10.0747\n", - " 16.5000 188.0000 9.6954\n", - " 16.5500 180.0000 9.4868\n", - " 16.6000 198.0000 9.9499\n", - " 16.6500 200.0000 10.0000\n", - " 16.7000 201.0000 10.0250\n", - " 16.7500 210.0000 10.2470\n", - " 16.8000 206.0000 10.1489\n", - " 16.8500 189.0000 9.7211\n", - " 16.9000 194.0000 9.8489\n", - " 16.9500 187.0000 9.6695\n", - " 17.0000 195.0000 9.8742\n", - " 17.0500 201.0000 10.0250\n", - " 17.1000 197.0000 9.9247\n", - " 17.1500 206.0000 10.1489\n", - " 17.2000 208.0000 10.1980\n", - " 17.2500 199.0000 9.9750\n", - " 17.3000 192.0000 9.7980\n", - " 17.3500 193.0000 9.8234\n", - " 17.4000 204.0000 10.0995\n", - " 17.4500 201.0000 10.0250\n", - " 17.5000 200.0000 10.0000\n", - " 17.5500 177.0000 9.4074\n", - " 17.6000 193.0000 9.8234\n", - " 17.6500 199.0000 9.9750\n", - " 17.7000 201.0000 10.0250\n", - " 17.7500 194.0000 9.8489\n", - " 17.8000 184.0000 9.5917\n", - " 17.8500 192.0000 9.7980\n", - " 17.9000 199.0000 9.9750\n", - " 17.9500 190.0000 9.7468\n", - " 18.0000 183.0000 9.5656\n", - " 18.0500 189.0000 7.9373\n", - " 18.1000 196.0000 8.0829\n", - " 18.1500 196.0000 8.0829\n", - " 18.2000 198.0000 8.1240\n", - " 18.2500 210.0000 8.3666\n", - " 18.3000 212.0000 8.4063\n", - " 18.3500 219.0000 8.5440\n", - " 18.4000 198.0000 8.1240\n", - " 18.4500 195.0000 8.0623\n", - " 18.5000 198.0000 8.1240\n", - " 18.5500 191.0000 7.9791\n", - " 18.6000 193.0000 8.0208\n", - " 18.6500 197.0000 8.1035\n", - " 18.7000 194.0000 8.0416\n", - " 18.7500 187.0000 7.8951\n", - " 18.8000 209.0000 8.3467\n", - " 18.8500 187.0000 7.8951\n", - " 18.9000 198.0000 8.1240\n", - " 18.9500 206.0000 8.2865\n", - " 19.0000 197.0000 8.1035\n", - " 19.0500 191.0000 7.9791\n", - " 19.1000 200.0000 8.1650\n", - " 19.1500 207.0000 8.3066\n", - " 19.2000 205.0000 8.2664\n", - " 19.2500 198.0000 8.1240\n", - " 19.3000 196.0000 8.0829\n", - " 19.3500 209.0000 8.3467\n", - " 19.4000 211.0000 8.3865\n", - " 19.4500 203.0000 8.2260\n", - " 19.5000 200.0000 8.1650\n", - " 19.5500 192.0000 8.0000\n", - " 19.6000 208.0000 8.3267\n", - " 19.6500 213.0000 8.4261\n", - " 19.7000 221.0000 8.5829\n", - " 19.7500 216.0000 8.4853\n", - " 19.8000 226.0000 8.6795\n", - " 19.8500 228.0000 8.7178\n", - " 19.9000 228.0000 8.7178\n", - " 19.9500 215.0000 8.4656\n", - " 20.0000 224.0000 8.6410\n", - " 20.0500 226.0000 8.6795\n", - " 20.1000 213.0000 8.4261\n", - " 20.1500 239.0000 8.9256\n", - " 20.2000 250.0000 9.1287\n", - " 20.2500 247.0000 9.0738\n", - " 20.3000 240.0000 8.9443\n", - " 20.3500 231.0000 8.7750\n", - " 20.4000 236.0000 8.8694\n", - " 20.4500 223.0000 8.6217\n", - " 20.5000 231.0000 8.7750\n", - " 20.5500 226.0000 8.6795\n", - " 20.6000 214.0000 8.4459\n", - " 20.6500 208.0000 8.3267\n", - " 20.7000 214.0000 8.4459\n", - " 20.7500 196.0000 8.0829\n", - " 20.8000 204.0000 8.2462\n", - " 20.8500 199.0000 8.1445\n", - " 20.9000 186.0000 7.8740\n", - " 20.9500 192.0000 8.0000\n", - " 21.0000 199.0000 8.1445\n", - " 21.0500 200.0000 8.1650\n", - " 21.1000 184.0000 7.8316\n", - " 21.1500 184.0000 7.8316\n", - " 21.2000 189.0000 7.9373\n", - " 21.2500 182.0000 7.7889\n", - " 21.3000 184.0000 7.8316\n", - " 21.3500 185.0000 7.8528\n", - " 21.4000 195.0000 8.0623\n", - " 21.4500 190.0000 7.9582\n", - " 21.5000 194.0000 8.0416\n", - " 21.5500 185.0000 7.8528\n", - " 21.6000 183.0000 7.8102\n", - " 21.6500 193.0000 8.0208\n", - " 21.7000 194.0000 8.0416\n", - " 21.7500 193.0000 8.0208\n", - " 21.8000 188.0000 7.9162\n", - " 21.8500 191.0000 7.9791\n", - " 21.9000 189.0000 7.9373\n", - " 21.9500 188.0000 7.9162\n", - " 22.0000 201.0000 8.1854\n", - " 22.0500 195.0000 8.0623\n", - " 22.1000 205.0000 8.2664\n", - " 22.1500 200.0000 8.1650\n", - " 22.2000 200.0000 8.1650\n", - " 22.2500 192.0000 8.0000\n", - " 22.3000 197.0000 8.1035\n", - " 22.3500 204.0000 8.2462\n", - " 22.4000 207.0000 8.3066\n", - " 22.4500 192.0000 8.0000\n", - " 22.5000 201.0000 8.1854\n", - " 22.5500 190.0000 7.9582\n", - " 22.6000 195.0000 8.0623\n", - " 22.6500 194.0000 8.0416\n", - " 22.7000 182.0000 7.7889\n", - " 22.7500 189.0000 7.9373\n", - " 22.8000 196.0000 8.0829\n", - " 22.8500 196.0000 8.0829\n", - " 22.9000 200.0000 8.1650\n", - " 22.9500 190.0000 7.9582\n", - " 23.0000 183.0000 7.8102\n", - " 23.0500 199.0000 8.1445\n", - " 23.1000 187.0000 7.8951\n", - " 23.1500 196.0000 8.0829\n", - " 23.2000 191.0000 7.9791\n", - " 23.2500 191.0000 7.9791\n", - " 23.3000 195.0000 8.0623\n", - " 23.3500 194.0000 8.0416\n", - " 23.4000 192.0000 8.0000\n", - " 23.4500 182.0000 7.7889\n", - " 23.5000 188.0000 7.9162\n", - " 23.5500 203.0000 8.2260\n", - " 23.6000 187.0000 7.8951\n", - " 23.6500 192.0000 8.0000\n", - " 23.7000 206.0000 8.2865\n", - " 23.7500 201.0000 8.1854\n", - " 23.8000 184.0000 7.8316\n", - " 23.8500 192.0000 8.0000\n", - " 23.9000 205.0000 8.2664\n", - " 23.9500 196.0000 8.0829\n", - " 24.0000 193.0000 8.0208\n", - " 24.0500 194.0000 6.9642\n", - " 24.1000 195.0000 6.9821\n", - " 24.1500 194.0000 6.9642\n", - " 24.2000 201.0000 7.0887\n", - " 24.2500 193.0000 6.9462\n", - " 24.3000 176.0000 6.6332\n", - " 24.3500 187.0000 6.8374\n", - " 24.4000 188.0000 6.8557\n", - " 24.4500 196.0000 7.0000\n", - " 24.5000 192.0000 6.9282\n", - " 24.5500 185.0000 6.8007\n", - " 24.6000 195.0000 6.9821\n", - " 24.6500 198.0000 7.0356\n", - " 24.7000 205.0000 7.1589\n", - " 24.7500 200.0000 7.0711\n", - " 24.8000 208.0000 7.2111\n", - " 24.8500 195.0000 6.9821\n", - " 24.9000 187.0000 6.8374\n", - " 24.9500 193.0000 6.9462\n", - " 25.0000 197.0000 7.0178\n", - " 25.0500 202.0000 7.1063\n", - " 25.1000 193.0000 6.9462\n", - " 25.1500 196.0000 7.0000\n", - " 25.2000 202.0000 7.1063\n", - " 25.2500 201.0000 7.0887\n", - " 25.3000 197.0000 7.0178\n", - " 25.3500 204.0000 7.1414\n", - " 25.4000 208.0000 7.2111\n", - " 25.4500 206.0000 7.1764\n", - " 25.5000 212.0000 7.2801\n", - " 25.5500 207.0000 7.1937\n", - " 25.6000 207.0000 7.1937\n", - " 25.6500 212.0000 7.2801\n", - " 25.7000 216.0000 7.3485\n", - " 25.7500 218.0000 7.3824\n", - " 25.8000 221.0000 7.4330\n", - " 25.8500 218.0000 7.3824\n", - " 25.9000 207.0000 7.1937\n", - " 25.9500 203.0000 7.1239\n", - " 26.0000 204.0000 7.1414\n", - " 26.0500 202.0000 7.1063\n", - " 26.1000 206.0000 7.1764\n", - " 26.1500 202.0000 7.1063\n", - " 26.2000 202.0000 7.1063\n", - " 26.2500 181.0000 6.7268\n", - " 26.3000 193.0000 6.9462\n", - " 26.3500 205.0000 7.1589\n", - " 26.4000 198.0000 7.0356\n", - " 26.4500 196.0000 7.0000\n", - " 26.5000 197.0000 7.0178\n", - " 26.5500 195.0000 6.9821\n", - " 26.6000 201.0000 7.0887\n", - " 26.6500 205.0000 7.1589\n", - " 26.7000 195.0000 6.9821\n", - " 26.7500 196.0000 7.0000\n", - " 26.8000 196.0000 7.0000\n", - " 26.8500 205.0000 7.1589\n", - " 26.9000 198.0000 7.0356\n", - " 26.9500 200.0000 7.0711\n", - " 27.0000 199.0000 7.0534\n", - " 27.0500 180.0000 6.7082\n", - " 27.1000 187.0000 6.8374\n", - " 27.1500 193.0000 6.9462\n", - " 27.2000 197.0000 7.0178\n", - " 27.2500 197.0000 7.0178\n", - " 27.3000 196.0000 7.0000\n", - " 27.3500 194.0000 6.9642\n", - " 27.4000 197.0000 7.0178\n", - " 27.4500 204.0000 7.1414\n", - " 27.5000 201.0000 7.0887\n", - " 27.5500 187.0000 6.8374\n", - " 27.6000 191.0000 6.9101\n", - " 27.6500 205.0000 7.1589\n", - " 27.7000 200.0000 7.0711\n", - " 27.7500 198.0000 7.0356\n", - " 27.8000 200.0000 7.0711\n", - " 27.8500 204.0000 7.1414\n", - " 27.9000 196.0000 7.0000\n", - " 27.9500 195.0000 6.9821\n", - " 28.0000 194.0000 6.9642\n", - " 28.0500 200.0000 7.0711\n", - " 28.1000 198.0000 7.0356\n", - " 28.1500 201.0000 7.0887\n", - " 28.2000 208.0000 7.2111\n", - " 28.2500 205.0000 7.1589\n", - " 28.3000 211.0000 7.2629\n", - " 28.3500 211.0000 7.2629\n", - " 28.4000 220.0000 7.4162\n", - " 28.4500 220.0000 7.4162\n", - " 28.5000 212.0000 7.2801\n", - " 28.5500 208.0000 7.2111\n", - " 28.6000 214.0000 7.3144\n", - " 28.6500 226.0000 7.5166\n", - " 28.7000 235.0000 7.6649\n", - " 28.7500 233.0000 7.6322\n", - " 28.8000 237.0000 7.6974\n", - " 28.8500 242.0000 7.7782\n", - " 28.9000 242.0000 7.7782\n", - " 28.9500 245.0000 7.8262\n", - " 29.0000 239.0000 7.7298\n", - " 29.0500 226.0000 7.5166\n", - " 29.1000 232.0000 7.6158\n", - " 29.1500 238.0000 7.7136\n", - " 29.2000 226.0000 7.5166\n", - " 29.2500 218.0000 7.3824\n", - " 29.3000 218.0000 7.3824\n", - " 29.3500 214.0000 7.3144\n", - " 29.4000 205.0000 7.1589\n", - " 29.4500 200.0000 7.0711\n", - " 29.5000 193.0000 6.9462\n", - " 29.5500 195.0000 6.9821\n", - " 29.6000 196.0000 7.0000\n", - " 29.6500 195.0000 6.9821\n", - " 29.7000 207.0000 7.1937\n", - " 29.7500 215.0000 7.3314\n", - " 29.8000 207.0000 7.1937\n", - " 29.8500 218.0000 7.3824\n", - " 29.9000 218.0000 7.3824\n", - " 29.9500 220.0000 7.4162\n", - " 30.0000 220.0000 7.4162\n", - " 30.0500 229.0000 6.7676\n", - " 30.1000 236.0000 6.8702\n", - " 30.1500 254.0000 7.1274\n", - " 30.2000 264.0000 7.2664\n", - " 30.2500 280.0000 7.4833\n", - " 30.3000 289.0000 7.6026\n", - " 30.3500 289.0000 7.6026\n", - " 30.4000 303.0000 7.7846\n", - " 30.4500 302.0000 7.7717\n", - " 30.5000 297.0000 7.7071\n", - " 30.5500 281.0000 7.4967\n", - " 30.6000 278.0000 7.4565\n", - " 30.6500 280.0000 7.4833\n", - " 30.7000 265.0000 7.2801\n", - " 30.7500 258.0000 7.1833\n", - " 30.8000 243.0000 6.9714\n", - " 30.8500 240.0000 6.9282\n", - " 30.9000 232.0000 6.8118\n", - " 30.9500 231.0000 6.7971\n", - " 31.0000 233.0000 6.8264\n", - " 31.0500 246.0000 7.0143\n", - " 31.1000 248.0000 7.0427\n", - " 31.1500 249.0000 7.0569\n", - " 31.2000 256.0000 7.1554\n", - " 31.2500 272.0000 7.3756\n", - " 31.3000 289.0000 7.6026\n", - " 31.3500 311.0000 7.8867\n", - " 31.4000 340.0000 8.2462\n", - " 31.4500 363.0000 8.5206\n", - " 31.5000 393.0000 8.8657\n", - " 31.5500 440.0000 9.3808\n", - " 31.6000 474.0000 9.7365\n", - " 31.6500 482.0000 9.8183\n", - " 31.7000 492.0000 9.9197\n", - " 31.7500 508.0000 10.0797\n", - " 31.8000 494.0000 9.9398\n", - " 31.8500 475.0000 9.7468\n", - " 31.9000 439.0000 9.3702\n", - " 31.9500 413.0000 9.0885\n", - " 32.0000 368.0000 8.5790\n", - " 32.0500 331.0000 8.1363\n", - " 32.1000 299.0000 7.7330\n", - " 32.1500 286.0000 7.5631\n", - " 32.2000 262.0000 7.2388\n", - " 32.2500 241.0000 6.9426\n", - " 32.3000 238.0000 6.8993\n", - " 32.3500 252.0000 7.0993\n", - " 32.4000 267.0000 7.3075\n", - " 32.4500 276.0000 7.4297\n", - " 32.5000 278.0000 7.4565\n", - " 32.5500 300.0000 7.7460\n", - " 32.6000 325.0000 8.0623\n", - " 32.6500 336.0000 8.1976\n", - " 32.7000 359.0000 8.4735\n", - " 32.7500 405.0000 9.0000\n", - " 32.8000 458.0000 9.5708\n", - " 32.8500 501.0000 10.0100\n", - " 32.9000 564.0000 10.6207\n", - " 32.9500 640.0000 11.3137\n", - " 33.0000 719.0000 11.9917\n", - " 33.0500 783.0000 12.5140\n", - " 33.1000 837.0000 12.9383\n", - " 33.1500 851.0000 13.0461\n", - " 33.2000 866.0000 13.1605\n", - " 33.2500 828.0000 12.8686\n", - " 33.3000 763.0000 12.3531\n", - " 33.3500 697.0000 11.8068\n", - " 33.4000 634.0000 11.2606\n", - " 33.4500 541.0000 10.4019\n", - " 33.5000 465.0000 9.6437\n", - " 33.5500 391.0000 8.8431\n", - " 33.6000 351.0000 8.3785\n", - " 33.6500 301.0000 7.7589\n", - " 33.7000 284.0000 7.5366\n", - " 33.7500 260.0000 7.2111\n", - " 33.8000 248.0000 7.0427\n", - " 33.8500 257.0000 7.1694\n", - " 33.9000 242.0000 6.9570\n", - " 33.9500 246.0000 7.0143\n", - " 34.0000 263.0000 7.2526\n", - " 34.0500 271.0000 7.3621\n", - " 34.1000 281.0000 7.4967\n", - " 34.1500 302.0000 7.7717\n", - " 34.2000 309.0000 7.8613\n", - " 34.2500 335.0000 8.1854\n", - " 34.3000 342.0000 8.2704\n", - " 34.3500 345.0000 8.3066\n", - " 34.4000 356.0000 8.4380\n", - " 34.4500 351.0000 8.3785\n", - " 34.5000 341.0000 8.2583\n", - " 34.5500 334.0000 8.1731\n", - " 34.6000 321.0000 8.0125\n", - " 34.6500 286.0000 7.5631\n", - " 34.7000 268.0000 7.3212\n", - " 34.7500 256.0000 7.1554\n", - " 34.8000 238.0000 6.8993\n", - " 34.8500 229.0000 6.7676\n", - " 34.9000 218.0000 6.6030\n", - " 34.9500 223.0000 6.6783\n", - " 35.0000 216.0000 6.5727\n", - " 35.0500 203.0000 6.3718\n", - " 35.1000 203.0000 6.3718\n", - " 35.1500 194.0000 6.2290\n", - " 35.2000 205.0000 6.4031\n", - " 35.2500 196.0000 6.2610\n", - " 35.3000 193.0000 6.2129\n", - " 35.3500 206.0000 6.4187\n", - " 35.4000 201.0000 6.3403\n", - " 35.4500 201.0000 6.3403\n", - " 35.5000 201.0000 6.3403\n", - " 35.5500 200.0000 6.3246\n", - " 35.6000 194.0000 6.2290\n", - " 35.6500 196.0000 6.2610\n", - " 35.7000 203.0000 6.3718\n", - " 35.7500 195.0000 6.2450\n", - " 35.8000 196.0000 6.2610\n", - " 35.8500 211.0000 6.4962\n", - " 35.9000 216.0000 6.5727\n", - " 35.9500 207.0000 6.4343\n", - " 36.0000 215.0000 6.5574\n", - " 36.0500 221.0000 6.6483\n", - " 36.1000 237.0000 6.2849\n", - " 36.1500 248.0000 6.4291\n", - " 36.2000 261.0000 6.5955\n", - " 36.2500 279.0000 6.8191\n", - " 36.3000 319.0000 7.2915\n", - " 36.3500 337.0000 7.4944\n", - " 36.4000 364.0000 7.7889\n", - " 36.4500 423.0000 8.3964\n", - " 36.5000 489.0000 9.0277\n", - " 36.5500 557.0000 9.6350\n", - " 36.6000 630.0000 10.2470\n", - " 36.6500 729.0000 11.0227\n", - " 36.7000 822.0000 11.7047\n", - " 36.7500 943.0000 12.5366\n", - " 36.8000 1059.0000 13.2853\n", - " 36.8500 1196.0000 14.1185\n", - " 36.9000 1235.0000 14.3469\n", - " 36.9500 1220.0000 14.2595\n", - " 37.0000 1209.0000 14.1951\n", - " 37.0500 1128.0000 13.7113\n", - " 37.1000 1001.0000 12.9164\n", - " 37.1500 864.0000 12.0000\n", - " 37.2000 729.0000 11.0227\n", - " 37.2500 601.0000 10.0083\n", - " 37.3000 496.0000 9.0921\n", - " 37.3500 418.0000 8.3467\n", - " 37.4000 355.0000 7.6920\n", - " 37.4500 313.0000 7.2226\n", - " 37.5000 263.0000 6.6207\n", - " 37.5500 246.0000 6.4031\n", - " 37.6000 226.0000 6.1373\n", - " 37.6500 214.0000 5.9722\n", - " 37.7000 222.0000 6.0828\n", - " 37.7500 222.0000 6.0828\n", - " 37.8000 211.0000 5.9301\n", - " 37.8500 211.0000 5.9301\n", - " 37.9000 202.0000 5.8023\n", - " 37.9500 198.0000 5.7446\n", - " 38.0000 192.0000 5.6569\n", - " 38.0500 193.0000 5.6716\n", - " 38.1000 196.0000 5.7155\n", - " 38.1500 201.0000 5.7879\n", - " 38.2000 203.0000 5.8166\n", - " 38.2500 203.0000 5.8166\n", - " 38.3000 201.0000 5.7879\n", - " 38.3500 198.0000 5.7446\n", - " 38.4000 196.0000 5.7155\n", - " 38.4500 206.0000 5.8595\n", - " 38.5000 210.0000 5.9161\n", - " 38.5500 197.0000 5.7300\n", - " 38.6000 204.0000 5.8310\n", - " 38.6500 200.0000 5.7735\n", - " 38.7000 205.0000 5.8452\n", - " 38.7500 196.0000 5.7155\n", - " 38.8000 195.0000 5.7009\n", - " 38.8500 205.0000 5.8452\n", - " 38.9000 204.0000 5.8310\n", - " 38.9500 200.0000 5.7735\n", - " 39.0000 203.0000 5.8166\n", - " 39.0500 208.0000 5.8878\n", - " 39.1000 207.0000 5.8737\n", - " 39.1500 202.0000 5.8023\n", - " 39.2000 203.0000 5.8166\n", - " 39.2500 198.0000 5.7446\n", - " 39.3000 204.0000 5.8310\n", - " 39.3500 210.0000 5.9161\n", - " 39.4000 216.0000 6.0000\n", - " 39.4500 210.0000 5.9161\n", - " 39.5000 229.0000 6.1779\n", - " 39.5500 239.0000 6.3114\n", - " 39.6000 247.0000 6.4161\n", - " 39.6500 278.0000 6.8069\n", - " 39.7000 302.0000 7.0946\n", - " 39.7500 324.0000 7.3485\n", - " 39.8000 371.0000 7.8634\n", - " 39.8500 420.0000 8.3666\n", - " 39.9000 465.0000 8.8034\n", - " 39.9500 538.0000 9.4692\n", - " 40.0000 630.0000 10.2470\n", - " 40.0500 739.0000 11.0980\n", - " 40.1000 851.0000 11.9094\n", - " 40.1500 976.0000 12.7541\n", - " 40.2000 1076.0000 13.3915\n", - " 40.2500 1161.0000 13.9104\n", - " 40.3000 1222.0000 14.2712\n", - " 40.3500 1227.0000 14.3003\n", - " 40.4000 1187.0000 14.0653\n", - " 40.4500 1096.0000 13.5154\n", - " 40.5000 964.0000 12.6754\n", - " 40.5500 833.0000 11.7828\n", - " 40.6000 708.0000 10.8628\n", - " 40.6500 587.0000 9.8911\n", - " 40.7000 512.0000 9.2376\n", - " 40.7500 436.0000 8.5245\n", - " 40.8000 391.0000 8.0726\n", - " 40.8500 384.0000 8.0000\n", - " 40.9000 370.0000 7.8528\n", - " 40.9500 391.0000 8.0726\n", - " 41.0000 419.0000 8.3566\n", - " 41.0500 448.0000 8.6410\n", - " 41.1000 490.0000 9.0370\n", - " 41.1500 567.0000 9.7211\n", - " 41.2000 626.0000 10.2144\n", - " 41.2500 687.0000 10.7005\n", - " 41.3000 735.0000 11.0680\n", - " 41.3500 780.0000 11.4018\n", - " 41.4000 782.0000 11.4164\n", - " 41.4500 745.0000 11.1430\n", - " 41.5000 721.0000 10.9621\n", - " 41.5500 662.0000 10.5040\n", - " 41.6000 595.0000 9.9582\n", - " 41.6500 527.0000 9.3719\n", - " 41.7000 446.0000 8.6217\n", - " 41.7500 393.0000 8.0932\n", - " 41.8000 335.0000 7.4722\n", - " 41.8500 301.0000 7.0828\n", - " 41.9000 276.0000 6.7823\n", - " 41.9500 251.0000 5.9881\n", - " 42.0000 242.0000 5.8797\n", - " 42.0500 229.0000 5.7196\n", - " 42.1000 209.0000 5.4642\n", - " 42.1500 215.0000 5.5420\n", - " 42.2000 218.0000 5.5806\n", - " 42.2500 214.0000 5.5291\n", - " 42.3000 209.0000 5.4642\n", - " 42.3500 208.0000 5.4511\n", - " 42.4000 212.0000 5.5032\n", - " 42.4500 210.0000 5.4772\n", - " 42.5000 209.0000 5.4642\n", - " 42.5500 210.0000 5.4772\n", - " 42.6000 205.0000 5.4116\n", - " 42.6500 209.0000 5.4642\n", - " 42.7000 211.0000 5.4903\n", - " 42.7500 211.0000 5.4903\n", - " 42.8000 216.0000 5.5549\n", - " 42.8500 205.0000 5.4116\n", - " 42.9000 204.0000 5.3984\n", - " 42.9500 202.0000 5.3719\n", - " 43.0000 201.0000 5.3586\n", - " 43.0500 200.0000 5.3452\n", - " 43.1000 207.0000 5.4380\n", - " 43.1500 205.0000 5.4116\n", - " 43.2000 202.0000 5.3719\n", - " 43.2500 209.0000 5.4642\n", - " 43.3000 202.0000 5.3719\n", - " 43.3500 203.0000 5.3852\n", - " 43.4000 206.0000 5.4248\n", - " 43.4500 206.0000 5.4248\n", - " 43.5000 200.0000 5.3452\n", - " 43.5500 194.0000 5.2644\n", - " 43.6000 199.0000 5.3318\n", - " 43.6500 204.0000 5.3984\n", - " 43.7000 205.0000 5.4116\n", - " 43.7500 210.0000 5.4772\n", - " 43.8000 207.0000 5.4380\n", - " 43.8500 205.0000 5.4116\n", - " 43.9000 210.0000 5.4772\n", - " 43.9500 204.0000 5.3984\n", - " 44.0000 203.0000 5.3852\n", - " 44.0500 202.0000 5.3719\n", - " 44.1000 205.0000 5.4116\n", - " 44.1500 201.0000 5.3586\n", - " 44.2000 201.0000 5.3586\n", - " 44.2500 207.0000 5.4380\n", - " 44.3000 197.0000 5.3050\n", - " 44.3500 198.0000 5.3184\n", - " 44.4000 203.0000 5.3852\n", - " 44.4500 209.0000 5.4642\n", - " 44.5000 209.0000 5.4642\n", - " 44.5500 208.0000 5.4511\n", - " 44.6000 204.0000 5.3984\n", - " 44.6500 209.0000 5.4642\n", - " 44.7000 199.0000 5.3318\n", - " 44.7500 204.0000 5.3984\n", - " 44.8000 206.0000 5.4248\n", - " 44.8500 201.0000 5.3586\n", - " 44.9000 205.0000 5.4116\n", - " 44.9500 202.0000 5.3719\n", - " 45.0000 204.0000 5.3984\n", - " 45.0500 198.0000 5.3184\n", - " 45.1000 198.0000 5.3184\n", - " 45.1500 213.0000 5.5162\n", - " 45.2000 210.0000 5.4772\n", - " 45.2500 212.0000 5.5032\n", - " 45.3000 214.0000 5.5291\n", - " 45.3500 215.0000 5.5420\n", - " 45.4000 217.0000 5.5678\n", - " 45.4500 210.0000 5.4772\n", - " 45.5000 214.0000 5.5291\n", - " 45.5500 215.0000 5.5420\n", - " 45.6000 215.0000 5.5420\n", - " 45.6500 215.0000 5.5420\n", - " 45.7000 217.0000 5.5678\n", - " 45.7500 222.0000 5.6315\n", - " 45.8000 231.0000 5.7446\n", - " 45.8500 247.0000 5.9402\n", - " 45.9000 252.0000 6.0000\n", - " 45.9500 273.0000 6.2450\n", - " 46.0000 304.0000 6.5900\n", - " 46.0500 332.0000 6.8868\n", - " 46.1000 366.0000 7.2309\n", - " 46.1500 408.0000 7.6345\n", - " 46.2000 463.0000 8.1328\n", - " 46.2500 532.0000 8.7178\n", - " 46.3000 619.0000 9.4036\n", - " 46.3500 734.0000 10.2400\n", - " 46.4000 828.0000 10.8759\n", - " 46.4500 944.0000 11.6128\n", - " 46.5000 1003.0000 11.9702\n", - " 46.5500 1055.0000 12.2766\n", - " 46.6000 1070.0000 12.3635\n", - " 46.6500 1018.0000 12.0594\n", - " 46.7000 944.0000 11.6128\n", - " 46.7500 833.0000 10.9087\n", - " 46.8000 725.0000 10.1770\n", - " 46.8500 633.0000 9.5094\n", - " 46.9000 507.0000 8.5105\n", - " 46.9500 445.0000 7.9732\n", - " 47.0000 379.0000 7.3582\n", - " 47.0500 347.0000 7.0407\n", - " 47.1000 316.0000 6.7188\n", - " 47.1500 282.0000 6.3471\n", - " 47.2000 267.0000 6.1760\n", - " 47.2500 269.0000 6.1991\n", - " 47.3000 281.0000 6.3358\n", - " 47.3500 288.0000 6.4143\n", - " 47.4000 300.0000 6.5465\n", - " 47.4500 327.0000 6.8348\n", - " 47.5000 346.0000 7.0305\n", - " 47.5500 380.0000 7.3679\n", - " 47.6000 400.0000 7.5593\n", - " 47.6500 430.0000 7.8376\n", - " 47.7000 453.0000 8.0445\n", - " 47.7500 459.0000 8.0976\n", - " 47.8000 451.0000 8.0267\n", - " 47.8500 427.0000 7.8102\n", - " 47.9000 402.0000 7.5782\n", - " 47.9500 375.0000 7.3193\n", - " 48.0000 344.0000 7.0102\n", - " 48.0500 309.0000 6.6440\n", - " 48.1000 277.0000 6.2906\n", - " 48.1500 265.0000 5.7554\n", - " 48.2000 246.0000 5.5453\n", - " 48.2500 246.0000 5.5453\n", - " 48.3000 230.0000 5.3619\n", - " 48.3500 223.0000 5.2797\n", - " 48.4000 227.0000 5.3268\n", - " 48.4500 225.0000 5.3033\n", - " 48.5000 217.0000 5.2082\n", - " 48.5500 217.0000 5.2082\n", - " 48.6000 223.0000 5.2797\n", - " 48.6500 223.0000 5.2797\n", - " 48.7000 220.0000 5.2440\n", - " 48.7500 223.0000 5.2797\n", - " 48.8000 226.0000 5.3151\n", - " 48.8500 248.0000 5.5678\n", - " 48.9000 258.0000 5.6789\n", - " 48.9500 274.0000 5.8523\n", - " 49.0000 297.0000 6.0930\n", - " 49.0500 324.0000 6.3640\n", - " 49.1000 355.0000 6.6615\n", - " 49.1500 393.0000 7.0089\n", - " 49.2000 458.0000 7.5664\n", - " 49.2500 528.0000 8.1240\n", - " 49.3000 589.0000 8.5805\n", - " 49.3500 688.0000 9.2736\n", - " 49.4000 781.0000 9.8805\n", - " 49.4500 840.0000 10.2470\n", - " 49.5000 876.0000 10.4642\n", - " 49.5500 874.0000 10.4523\n", - " 49.6000 832.0000 10.1980\n", - " 49.6500 765.0000 9.7788\n", - " 49.7000 682.0000 9.2331\n", - " 49.7500 613.0000 8.7536\n", - " 49.8000 524.0000 8.0932\n", - " 49.8500 455.0000 7.5416\n", - " 49.9000 408.0000 7.1414\n", - " 49.9500 384.0000 6.9282\n", - " 50.0000 366.0000 6.7639\n", - " 50.0500 375.0000 6.8465\n", - " 50.1000 392.0000 7.0000\n", - " 50.1500 426.0000 7.2973\n", - " 50.2000 470.0000 7.6649\n", - " 50.2500 519.0000 8.0545\n", - " 50.3000 588.0000 8.5732\n", - " 50.3500 639.0000 8.9373\n", - " 50.4000 681.0000 9.2263\n", - " 50.4500 704.0000 9.3808\n", - " 50.5000 693.0000 9.3073\n", - " 50.5500 650.0000 9.0139\n", - " 50.6000 600.0000 8.6603\n", - " 50.6500 540.0000 8.2158\n", - " 50.7000 478.0000 7.7298\n", - " 50.7500 412.0000 7.1764\n", - " 50.8000 376.0000 6.8557\n", - " 50.8500 345.0000 6.5670\n", - " 50.9000 330.0000 6.4226\n", - " 50.9500 337.0000 6.4904\n", - " 51.0000 350.0000 6.6144\n", - " 51.0500 383.0000 6.9192\n", - " 51.1000 426.0000 7.2973\n", - " 51.1500 493.0000 7.8502\n", - " 51.2000 571.0000 8.4484\n", - " 51.2500 676.0000 9.1924\n", - " 51.3000 803.0000 10.0187\n", - " 51.3500 920.0000 10.7238\n", - " 51.4000 1071.0000 11.5704\n", - " 51.4500 1183.0000 12.1604\n", - " 51.5000 1247.0000 12.4850\n", - " 51.5500 1255.0000 12.5250\n", - " 51.6000 1251.0000 12.5050\n", - " 51.6500 1183.0000 12.1604\n", - " 51.7000 1068.0000 11.5542\n", - " 51.7500 945.0000 10.8685\n", - " 51.8000 861.0000 10.3742\n", - " 51.8500 811.0000 10.0685\n", - " 51.9000 813.0000 10.0809\n", - " 51.9500 872.0000 10.4403\n", - " 52.0000 969.0000 11.0057\n", - " 52.0500 1120.0000 11.8322\n", - " 52.1000 1309.0000 12.7916\n", - " 52.1500 1527.0000 13.8158\n", - " 52.2000 1706.0000 14.6031\n", - " 52.2500 1856.0000 15.2315\n", - " 52.3000 1888.0000 15.3623\n", - " 52.3500 1837.0000 15.1534\n", - " 52.4000 1713.0000 14.6330\n", - " 52.4500 1500.0000 13.6931\n", - " 52.5000 1289.0000 12.6935\n", - " 52.5500 1103.0000 11.7420\n", - " 52.6000 904.0000 10.6301\n", - " 52.6500 749.0000 9.6760\n", - " 52.7000 627.0000 8.8530\n", - " 52.7500 568.0000 8.4261\n", - " 52.8000 551.0000 8.2991\n", - " 52.8500 560.0000 8.3666\n", - " 52.9000 586.0000 8.5586\n", - " 52.9500 634.0000 8.9022\n", - " 53.0000 691.0000 9.2938\n", - " 53.0500 751.0000 9.6889\n", - " 53.1000 799.0000 9.9937\n", - " 53.1500 792.0000 9.9499\n", - " 53.2000 820.0000 10.1242\n", - " 53.2500 774.0000 9.8362\n", - " 53.3000 736.0000 9.5917\n", - " 53.3500 680.0000 9.2195\n", - " 53.4000 627.0000 8.8530\n", - " 53.4500 562.0000 8.3815\n", - " 53.5000 514.0000 8.0156\n", - " 53.5500 459.0000 7.5746\n", - " 53.6000 424.0000 7.2801\n", - " 53.6500 362.0000 6.7268\n", - " 53.7000 333.0000 6.4517\n", - " 53.7500 318.0000 6.3048\n", - " 53.8000 300.0000 6.1237\n", - " 53.8500 287.0000 5.9896\n", - " 53.9000 265.0000 5.7554\n", - " 53.9500 266.0000 5.7663\n", - " 54.0000 262.0000 5.7228\n", - " 54.0500 263.0000 5.4058\n", - " 54.1000 255.0000 5.3229\n", - " 54.1500 270.0000 5.4772\n", - " 54.2000 278.0000 5.5578\n", - " 54.2500 289.0000 5.6667\n", - " 54.3000 317.0000 5.9348\n", - " 54.3500 343.0000 6.1734\n", - " 54.4000 400.0000 6.6667\n", - " 54.4500 468.0000 7.2111\n", - " 54.5000 561.0000 7.8951\n", - " 54.5500 695.0000 8.7876\n", - " 54.6000 873.0000 9.8489\n", - " 54.6500 1100.0000 11.0554\n", - " 54.7000 1372.0000 12.3468\n", - " 54.7500 1660.0000 13.5810\n", - " 54.8000 1954.0000 14.7347\n", - " 54.8500 2224.0000 15.7198\n", - " 54.9000 2400.0000 16.3299\n", - " 54.9500 2459.0000 16.5294\n", - " 55.0000 2435.0000 16.4486\n", - " 55.0500 2245.0000 15.7938\n", - " 55.1000 1986.0000 14.8549\n", - " 55.1500 1671.0000 13.6260\n", - " 55.2000 1358.0000 12.2837\n", - " 55.2500 1086.0000 10.9848\n", - " 55.3000 868.0000 9.8206\n", - " 55.3500 682.0000 8.7050\n", - " 55.4000 578.0000 8.0139\n", - " 55.4500 521.0000 7.6085\n", - " 55.5000 512.0000 7.5425\n", - " 55.5500 537.0000 7.7244\n", - " 55.6000 600.0000 8.1650\n", - " 55.6500 704.0000 8.8443\n", - " 55.7000 855.0000 9.7468\n", - " 55.7500 1032.0000 10.7083\n", - " 55.8000 1232.0000 11.7000\n", - " 55.8500 1466.0000 12.7628\n", - " 55.9000 1693.0000 13.7154\n", - " 55.9500 1866.0000 14.3991\n", - " 56.0000 1966.0000 14.7799\n", - " 56.0500 2024.0000 14.9963\n", - " 56.1000 2016.0000 14.9666\n", - " 56.1500 1846.0000 14.3217\n", - " 56.2000 1667.0000 13.6096\n", - " 56.2500 1429.0000 12.6007\n", - " 56.3000 1179.0000 11.4455\n", - " 56.3500 950.0000 10.2740\n", - " 56.4000 763.0000 9.2075\n", - " 56.4500 599.0000 8.1582\n", - " 56.5000 484.0000 7.3333\n", - " 56.5500 404.0000 6.6999\n", - " 56.6000 351.0000 6.2450\n", - " 56.6500 304.0000 5.8119\n", - " 56.7000 284.0000 5.6174\n", - " 56.7500 273.0000 5.5076\n", - " 56.8000 259.0000 5.3645\n", - " 56.8500 251.0000 5.2810\n", - " 56.9000 251.0000 5.2810\n", - " 56.9500 252.0000 5.2915\n", - " 57.0000 245.0000 5.2175\n", - " 57.0500 259.0000 5.3645\n", - " 57.1000 250.0000 5.2705\n", - " 57.1500 253.0000 5.3020\n", - " 57.2000 256.0000 5.3333\n", - " 57.2500 264.0000 5.4160\n", - " 57.3000 285.0000 5.6273\n", - " 57.3500 301.0000 5.7831\n", - " 57.4000 346.0000 6.2004\n", - " 57.4500 390.0000 6.5828\n", - " 57.5000 458.0000 7.1336\n", - " 57.5500 528.0000 7.6594\n", - " 57.6000 624.0000 8.3267\n", - " 57.6500 733.0000 9.0247\n", - " 57.7000 829.0000 9.5975\n", - " 57.7500 916.0000 10.0885\n", - " 57.8000 988.0000 10.4775\n", - " 57.8500 994.0000 10.5093\n", - " 57.9000 929.0000 10.1598\n", - " 57.9500 843.0000 9.6782\n", - " 58.0000 742.0000 9.0799\n", - " 58.0500 638.0000 8.4196\n", - " 58.1000 527.0000 7.6522\n", - " 58.1500 434.0000 6.9442\n", - " 58.2000 377.0000 6.4722\n", - " 58.2500 320.0000 5.9628\n", - " 58.3000 282.0000 5.5976\n", - " 58.3500 273.0000 5.5076\n", - " 58.4000 256.0000 5.3333\n", - " 58.4500 243.0000 5.1962\n", - " 58.5000 240.0000 5.1640\n", - " 58.5500 240.0000 5.1640\n", - " 58.6000 230.0000 5.0553\n", - " 58.6500 220.0000 4.9441\n", - " 58.7000 230.0000 5.0553\n", - " 58.7500 227.0000 5.0222\n", - " 58.8000 224.0000 4.9889\n", - " 58.8500 219.0000 4.9329\n", - " 58.9000 227.0000 5.0222\n", - " 58.9500 227.0000 5.0222\n", - " 59.0000 224.0000 4.9889\n", - " 59.0500 222.0000 4.9666\n", - " 59.1000 223.0000 4.9777\n", - " 59.1500 217.0000 4.9103\n", - " 59.2000 213.0000 4.8648\n", - " 59.2500 216.0000 4.8990\n", - " 59.3000 219.0000 4.9329\n", - " 59.3500 219.0000 4.9329\n", - " 59.4000 218.0000 4.9216\n", - " 59.4500 220.0000 4.9441\n", - " 59.5000 220.0000 4.9441\n", - " 59.5500 220.0000 4.9441\n", - " 59.6000 223.0000 4.9777\n", - " 59.6500 233.0000 5.0881\n", - " 59.7000 237.0000 5.1316\n", - " 59.7500 249.0000 5.2599\n", - " 59.8000 258.0000 5.3541\n", - " 59.8500 261.0000 5.3852\n", - " 59.9000 283.0000 5.6075\n", - " 59.9500 304.0000 5.8119\n", - " 60.0000 324.0000 5.6921\n", - " 60.0500 347.0000 5.8907\n", - " 60.1000 353.0000 5.9414\n", - " 60.1500 359.0000 5.9917\n", - " 60.2000 363.0000 6.0249\n", - " 60.2500 352.0000 5.9330\n", - " 60.3000 341.0000 5.8395\n", - " 60.3500 330.0000 5.7446\n", - " 60.4000 308.0000 5.5498\n", - " 60.4500 291.0000 5.3944\n", - " 60.5000 271.0000 5.2058\n", - " 60.5500 254.0000 5.0398\n", - " 60.6000 245.0000 4.9497\n", - " 60.6500 245.0000 4.9497\n", - " 60.7000 239.0000 4.8888\n", - " 60.7500 228.0000 4.7749\n", - " 60.8000 217.0000 4.6583\n", - " 60.8500 217.0000 4.6583\n", - " 60.9000 218.0000 4.6690\n", - " 60.9500 223.0000 4.7223\n", - " 61.0000 207.0000 4.5497\n", - " 61.0500 218.0000 4.6690\n", - " 61.1000 222.0000 4.7117\n", - " 61.1500 215.0000 4.6368\n", - " 61.2000 210.0000 4.5826\n", - " 61.2500 216.0000 4.6476\n", - " 61.3000 213.0000 4.6152\n", - " 61.3500 212.0000 4.6043\n", - " 61.4000 215.0000 4.6368\n", - " 61.4500 212.0000 4.6043\n", - " 61.5000 214.0000 4.6260\n", - " 61.5500 211.0000 4.5935\n", - " 61.6000 214.0000 4.6260\n", - " 61.6500 217.0000 4.6583\n", - " 61.7000 205.0000 4.5277\n", - " 61.7500 207.0000 4.5497\n", - " 61.8000 213.0000 4.6152\n", - " 61.8500 208.0000 4.5607\n", - " 61.9000 211.0000 4.5935\n", - " 61.9500 205.0000 4.5277\n", - " 62.0000 214.0000 4.6260\n", - " 62.0500 213.0000 4.6152\n", - " 62.1000 212.0000 4.6043\n", - " 62.1500 212.0000 4.6043\n", - " 62.2000 213.0000 4.6152\n", - " 62.2500 207.0000 4.5497\n", - " 62.3000 203.0000 4.5056\n", - " 62.3500 211.0000 4.5935\n", - " 62.4000 211.0000 4.5935\n", - " 62.4500 214.0000 4.6260\n", - " 62.5000 214.0000 4.6260\n", - " 62.5500 207.0000 4.5497\n", - " 62.6000 203.0000 4.5056\n", - " 62.6500 212.0000 4.6043\n", - " 62.7000 212.0000 4.6043\n", - " 62.7500 214.0000 4.6260\n", - " 62.8000 213.0000 4.6152\n", - " 62.8500 202.0000 4.4944\n", - " 62.9000 210.0000 4.5826\n", - " 62.9500 211.0000 4.5935\n", - " 63.0000 211.0000 4.5935\n", - " 63.0500 214.0000 4.6260\n", - " 63.1000 221.0000 4.7011\n", - " 63.1500 217.0000 4.6583\n", - " 63.2000 212.0000 4.6043\n", - " 63.2500 214.0000 4.6260\n", - " 63.3000 219.0000 4.6797\n", - " 63.3500 223.0000 4.7223\n", - " 63.4000 225.0000 4.7434\n", - " 63.4500 227.0000 4.7645\n", - " 63.5000 235.0000 4.8477\n", - " 63.5500 240.0000 4.8990\n", - " 63.6000 243.0000 4.9295\n", - " 63.6500 252.0000 5.0200\n", - " 63.7000 249.0000 4.9900\n", - " 63.7500 249.0000 4.9900\n", - " 63.8000 255.0000 5.0498\n", - " 63.8500 262.0000 5.1186\n", - " 63.9000 282.0000 5.3104\n", - " 63.9500 308.0000 5.5498\n", - " 64.0000 351.0000 5.9245\n", - " 64.0500 398.0000 6.3087\n", - " 64.1000 470.0000 6.8557\n", - " 64.1500 525.0000 7.2457\n", - " 64.2000 596.0000 7.7201\n", - " 64.2500 646.0000 8.0374\n", - " 64.3000 681.0000 8.2523\n", - " 64.3500 665.0000 8.1548\n", - " 64.4000 615.0000 7.8422\n", - " 64.4500 563.0000 7.5033\n", - " 64.5000 484.0000 6.9570\n", - " 64.5500 421.0000 6.4885\n", - " 64.6000 364.0000 6.0332\n", - " 64.6500 317.0000 5.6303\n", - " 64.7000 289.0000 5.3759\n", - " 64.7500 261.0000 5.1088\n", - " 64.8000 245.0000 4.9497\n", - " 64.8500 233.0000 4.8270\n", - " 64.9000 228.0000 4.7749\n", - " 64.9500 219.0000 4.6797\n", - " 65.0000 219.0000 4.6797\n", - " 65.0500 217.0000 4.6583\n", - " 65.1000 216.0000 4.6476\n", - " 65.1500 221.0000 4.7011\n", - " 65.2000 215.0000 4.6368\n", - " 65.2500 215.0000 4.6368\n", - " 65.3000 210.0000 4.5826\n", - " 65.3500 212.0000 4.6043\n", - " 65.4000 212.0000 4.6043\n", - " 65.4500 204.0000 4.5166\n", - " 65.5000 209.0000 4.5717\n", - " 65.5500 206.0000 4.5387\n", - " 65.6000 216.0000 4.6476\n", - " 65.6500 207.0000 4.5497\n", - " 65.7000 214.0000 4.6260\n", - " 65.7500 207.0000 4.5497\n", - " 65.8000 209.0000 4.5717\n", - " 65.8500 218.0000 4.6690\n", - " 65.9000 215.0000 4.6368\n", - " 65.9500 222.0000 4.7117\n", - " 66.0000 226.0000 4.7539\n", - " 66.0500 230.0000 4.7958\n", - " 66.1000 239.0000 4.8888\n", - " 66.1500 249.0000 4.9900\n", - " 66.2000 263.0000 5.1284\n", - " 66.2500 275.0000 5.2440\n", - " 66.3000 292.0000 5.4037\n", - " 66.3500 317.0000 5.6303\n", - " 66.4000 323.0000 5.6833\n", - " 66.4500 341.0000 5.8395\n", - " 66.5000 350.0000 5.9161\n", - " 66.5500 330.0000 5.7446\n", - " 66.6000 320.0000 5.6569\n", - " 66.6500 307.0000 5.5408\n", - " 66.7000 284.0000 5.3292\n", - " 66.7500 275.0000 5.2440\n", - " 66.8000 265.0000 5.1478\n", - " 66.8500 269.0000 5.1865\n", - " 66.9000 275.0000 5.2440\n", - " 66.9500 292.0000 5.4037\n", - " 67.0000 311.0000 5.5767\n", - " 67.0500 338.0000 5.8138\n", - " 67.1000 387.0000 6.2209\n", - " 67.1500 413.0000 6.4265\n", - " 67.2000 463.0000 6.8044\n", - " 67.2500 510.0000 7.1414\n", - " 67.3000 534.0000 7.3075\n", - " 67.3500 559.0000 7.4766\n", - " 67.4000 539.0000 7.3417\n", - " 67.4500 533.0000 7.3007\n", - " 67.5000 500.0000 7.0711\n", - " 67.5500 471.0000 6.8629\n", - " 67.6000 455.0000 6.7454\n", - " 67.6500 410.0000 6.4031\n", - " 67.7000 373.0000 6.1074\n", - " 67.7500 342.0000 5.8481\n", - " 67.8000 307.0000 5.5408\n", - " 67.8500 288.0000 5.3666\n", - " 67.9000 286.0000 5.3479\n", - " 67.9500 281.0000 5.3009\n", - " 68.0000 292.0000 5.4037\n", - " 68.0500 291.0000 5.3944\n", - " 68.1000 312.0000 5.5857\n", - " 68.1500 326.0000 5.7096\n", - " 68.2000 336.0000 5.7966\n", - " 68.2500 346.0000 5.8822\n", - " 68.3000 341.0000 5.8395\n", - " 68.3500 327.0000 5.7184\n", - " 68.4000 305.0000 5.5227\n", - " 68.4500 277.0000 5.2631\n", - " 68.5000 267.0000 5.1672\n", - " 68.5500 249.0000 4.9900\n", - " 68.6000 229.0000 4.7854\n", - " 68.6500 221.0000 4.7011\n", - " 68.7000 220.0000 4.6904\n", - " 68.7500 217.0000 4.6583\n", - " 68.8000 211.0000 4.5935\n", - " 68.8500 204.0000 4.5166\n", - " 68.9000 203.0000 4.5056\n", - " 68.9500 220.0000 4.6904\n", - " 69.0000 217.0000 4.6583\n", - " 69.0500 217.0000 4.6583\n", - " 69.1000 214.0000 4.6260\n", - " 69.1500 205.0000 4.5277\n", - " 69.2000 205.0000 4.5277\n", - " 69.2500 211.0000 4.5935\n", - " 69.3000 206.0000 4.5387\n", - " 69.3500 208.0000 4.5607\n", - " 69.4000 201.0000 4.4833\n", - " 69.4500 208.0000 4.5607\n", - " 69.5000 214.0000 4.6260\n", - " 69.5500 212.0000 4.6043\n", - " 69.6000 206.0000 4.5387\n", - " 69.6500 216.0000 4.6476\n", - " 69.7000 219.0000 4.6797\n", - " 69.7500 215.0000 4.6368\n", - " 69.8000 217.0000 4.6583\n", - " 69.8500 211.0000 4.5935\n", - " 69.9000 214.0000 4.6260\n", - " 69.9500 215.0000 4.6368\n", - " 70.0000 224.0000 4.7329\n", - " 70.0500 217.0000 4.6583\n", - " 70.1000 215.0000 4.6368\n", - " 70.1500 218.0000 4.6690\n", - " 70.2000 218.0000 4.6690\n", - " 70.2500 228.0000 4.7749\n", - " 70.3000 227.0000 4.7645\n", - " 70.3500 228.0000 4.7749\n", - " 70.4000 225.0000 4.7434\n", - " 70.4500 219.0000 4.6797\n", - " 70.5000 216.0000 4.6476\n", - " 70.5500 219.0000 4.6797\n", - " 70.6000 218.0000 4.6690\n", - " 70.6500 214.0000 4.6260\n", - " 70.7000 212.0000 4.6043\n", - " 70.7500 221.0000 4.7011\n", - " 70.8000 214.0000 4.6260\n", - " 70.8500 208.0000 4.5607\n", - " 70.9000 204.0000 4.5166\n", - " 70.9500 209.0000 4.5717\n", - " 71.0000 209.0000 4.5717\n", - " 71.0500 208.0000 4.5607\n", - " 71.1000 212.0000 4.6043\n", - " 71.1500 213.0000 4.6152\n", - " 71.2000 218.0000 4.6690\n", - " 71.2500 212.0000 4.6043\n", - " 71.3000 205.0000 4.5277\n", - " 71.3500 207.0000 4.5497\n", - " 71.4000 204.0000 4.5166\n", - " 71.4500 206.0000 4.5387\n", - " 71.5000 211.0000 4.5935\n", - " 71.5500 216.0000 4.6476\n", - " 71.6000 214.0000 4.6260\n", - " 71.6500 210.0000 4.5826\n", - " 71.7000 219.0000 4.6797\n", - " 71.7500 222.0000 4.7117\n", - " 71.8000 224.0000 4.7329\n", - " 71.8500 231.0000 4.8062\n", - " 71.9000 227.0000 4.7645\n", - " 71.9500 237.0000 4.8683\n", - " 72.0000 235.0000 4.8477\n", - " 72.0500 238.0000 4.8785\n", - " 72.1000 245.0000 4.9497\n", - " 72.1500 242.0000 4.9193\n", - " 72.2000 248.0000 4.9800\n", - " 72.2500 246.0000 4.9598\n", - " 72.3000 243.0000 4.9295\n", - " 72.3500 253.0000 5.0299\n", - " 72.4000 259.0000 5.0892\n", - " 72.4500 278.0000 5.2726\n", - " 72.5000 281.0000 5.3009\n", - " 72.5500 297.0000 5.4498\n", - " 72.6000 310.0000 5.5678\n", - " 72.6500 324.0000 5.6921\n", - " 72.7000 322.0000 5.6745\n", - " 72.7500 311.0000 5.5767\n", - " 72.8000 295.0000 5.4314\n", - " 72.8500 281.0000 5.3009\n", - " 72.9000 259.0000 5.0892\n", - " 72.9500 250.0000 5.0000\n", - " 73.0000 239.0000 4.8888\n", - " 73.0500 233.0000 4.8270\n", - " 73.1000 227.0000 4.7645\n", - " 73.1500 226.0000 4.7539\n", - " 73.2000 223.0000 4.7223\n", - " 73.2500 211.0000 4.5935\n", - " 73.3000 209.0000 4.5717\n", - " 73.3500 217.0000 4.6583\n", - " 73.4000 214.0000 4.6260\n", - " 73.4500 213.0000 4.6152\n", - " 73.5000 217.0000 4.6583\n", - " 73.5500 220.0000 4.6904\n", - " 73.6000 210.0000 4.5826\n", - " 73.6500 209.0000 4.5717\n", - " 73.7000 215.0000 4.6368\n", - " 73.7500 218.0000 4.6690\n", - " 73.8000 215.0000 4.6368\n", - " 73.8500 217.0000 4.6583\n", - " 73.9000 221.0000 4.7011\n", - " 73.9500 217.0000 4.6583\n", - " 74.0000 219.0000 4.6797\n", - " 74.0500 220.0000 4.6904\n", - " 74.1000 228.0000 4.7749\n", - " 74.1500 229.0000 4.7854\n", - " 74.2000 230.0000 4.7958\n", - " 74.2500 234.0000 4.8374\n", - " 74.3000 251.0000 5.0100\n", - " 74.3500 261.0000 5.1088\n", - " 74.4000 288.0000 5.3666\n", - " 74.4500 313.0000 5.5946\n", - " 74.5000 362.0000 6.0166\n", - " 74.5500 424.0000 6.5115\n", - " 74.6000 524.0000 7.2388\n", - " 74.6500 646.0000 8.0374\n", - " 74.7000 781.0000 8.8374\n", - " 74.7500 920.0000 9.5917\n", - " 74.8000 1024.0000 10.1193\n", - " 74.8500 1120.0000 10.5830\n", - " 74.9000 1187.0000 10.8950\n", - " 74.9500 1187.0000 10.8950\n", - " 75.0000 1166.0000 10.7981\n", - " 75.0500 1114.0000 10.5546\n", - " 75.1000 1044.0000 10.2176\n", - " 75.1500 991.0000 9.9549\n", - " 75.2000 927.0000 9.6281\n", - " 75.2500 823.0000 9.0719\n", - " 75.3000 717.0000 8.4676\n", - " 75.3500 619.0000 7.8677\n", - " 75.4000 520.0000 7.2111\n", - " 75.4500 421.0000 6.4885\n", - " 75.5000 353.0000 5.9414\n", - " 75.5500 308.0000 5.5498\n", - " 75.6000 273.0000 5.2249\n", - " 75.6500 256.0000 5.0596\n", - " 75.7000 245.0000 4.9497\n", - " 75.7500 234.0000 4.8374\n", - " 75.8000 230.0000 4.7958\n", - " 75.8500 224.0000 4.7329\n", - " 75.9000 232.0000 4.8166\n", - " 75.9500 226.0000 4.7539\n", - " 76.0000 222.0000 4.7117\n", - " 76.0500 222.0000 4.7117\n", - " 76.1000 227.0000 4.7645\n", - " 76.1500 225.0000 4.7434\n", - " 76.2000 226.0000 4.7539\n", - " 76.2500 227.0000 4.7645\n", - " 76.3000 229.0000 4.7854\n", - " 76.3500 235.0000 4.8477\n", - " 76.4000 233.0000 4.8270\n", - " 76.4500 243.0000 4.9295\n", - " 76.5000 238.0000 4.8785\n", - " 76.5500 237.0000 4.8683\n", - " 76.6000 236.0000 4.8580\n", - " 76.6500 232.0000 4.8166\n", - " 76.7000 231.0000 4.8062\n", - " 76.7500 227.0000 4.7645\n", - " 76.8000 225.0000 4.7434\n", - " 76.8500 220.0000 4.6904\n", - " 76.9000 218.0000 4.6690\n", - " 76.9500 215.0000 4.6368\n", - " 77.0000 219.0000 4.6797\n", - " 77.0500 224.0000 4.7329\n", - " 77.1000 225.0000 4.7434\n", - " 77.1500 222.0000 4.7117\n", - " 77.2000 231.0000 4.8062\n", - " 77.2500 243.0000 4.9295\n", - " 77.3000 250.0000 5.0000\n", - " 77.3500 269.0000 5.1865\n", - " 77.4000 286.0000 5.3479\n", - " 77.4500 310.0000 5.5678\n", - " 77.5000 325.0000 5.7009\n", - " 77.5500 332.0000 5.7619\n", - " 77.6000 337.0000 5.8052\n", - " 77.6500 329.0000 5.7359\n", - " 77.7000 303.0000 5.5045\n", - " 77.7500 278.0000 5.2726\n", - " 77.8000 268.0000 5.1769\n", - " 77.8500 252.0000 5.0200\n", - " 77.9000 236.0000 4.8580\n", - " 77.9500 228.0000 4.7749\n", - " 78.0000 219.0000 4.6797\n", - " 78.0500 225.0000 4.7434\n", - " 78.1000 222.0000 4.7117\n", - " 78.1500 214.0000 4.6260\n", - " 78.2000 228.0000 4.7749\n", - " 78.2500 221.0000 4.7011\n", - " 78.3000 217.0000 4.6583\n", - " 78.3500 221.0000 4.7011\n", - " 78.4000 222.0000 4.7117\n", - " 78.4500 226.0000 4.7539\n", - " 78.5000 237.0000 4.8683\n", - " 78.5500 246.0000 4.9598\n", - " 78.6000 255.0000 5.0498\n", - " 78.6500 269.0000 5.1865\n", - " 78.7000 284.0000 5.3292\n", - " 78.7500 302.0000 5.4955\n", - " 78.8000 313.0000 5.5946\n", - " 78.8500 327.0000 5.7184\n", - " 78.9000 321.0000 5.6657\n", - " 78.9500 333.0000 5.7706\n", - " 79.0000 331.0000 5.7533\n", - " 79.0500 332.0000 5.7619\n", - " 79.1000 358.0000 5.9833\n", - " 79.1500 402.0000 6.3403\n", - " 79.2000 460.0000 6.7823\n", - " 79.2500 557.0000 7.4632\n", - " 79.3000 660.0000 8.1240\n", - " 79.3500 769.0000 8.7693\n", - " 79.4000 859.0000 9.2682\n", - " 79.4500 934.0000 9.6644\n", - " 79.5000 955.0000 9.7724\n", - " 79.5500 921.0000 9.5969\n", - " 79.6000 824.0000 9.0774\n", - " 79.6500 694.0000 8.3307\n", - " 79.7000 578.0000 7.6026\n", - " 79.7500 474.0000 6.8848\n", - " 79.8000 402.0000 6.3403\n", - " 79.8500 344.0000 5.8652\n", - " 79.9000 306.0000 5.5317\n", - " 79.9500 300.0000 5.4772\n", - " 80.0000 292.0000 5.4037\n", - " 80.0500 292.0000 5.4037\n", - " 80.1000 302.0000 5.4955\n", - " 80.1500 304.0000 5.5136\n", - " 80.2000 306.0000 5.5317\n", - " 80.2500 305.0000 5.5227\n", - " 80.3000 303.0000 5.5045\n", - " 80.3500 299.0000 5.4681\n", - " 80.4000 278.0000 5.2726\n", - " 80.4500 259.0000 5.0892\n", - " 80.5000 257.0000 5.0695\n", - " 80.5500 245.0000 4.9497\n", - " 80.6000 237.0000 4.8683\n", - " 80.6500 240.0000 4.8990\n", - " 80.7000 233.0000 4.8270\n", - " 80.7500 232.0000 4.8166\n", - " 80.8000 235.0000 4.8477\n", - " 80.8500 241.0000 4.9092\n", - " 80.9000 257.0000 5.0695\n", - " 80.9500 274.0000 5.2345\n", - " 81.0000 292.0000 5.4037\n", - " 81.0500 309.0000 5.5588\n", - " 81.1000 333.0000 5.7706\n", - " 81.1500 360.0000 6.0000\n", - " 81.2000 381.0000 6.1725\n", - " 81.2500 387.0000 6.2209\n", - " 81.3000 387.0000 6.2209\n", - " 81.3500 386.0000 6.2129\n", - " 81.4000 382.0000 6.1806\n", - " 81.4500 368.0000 6.0663\n", - " 81.5000 363.0000 6.0249\n", - " 81.5500 352.0000 5.9330\n", - " 81.6000 337.0000 5.8052\n", - " 81.6500 321.0000 5.6657\n", - " 81.7000 297.0000 5.4498\n", - " 81.7500 281.0000 5.3009\n", - " 81.8000 265.0000 5.1478\n", - " 81.8500 255.0000 5.0498\n", - " 81.9000 251.0000 5.0100\n", - " 81.9500 237.0000 4.8683\n", - " 82.0000 238.0000 4.8785\n", - " 82.0500 237.0000 4.8683\n", - " 82.1000 228.0000 4.7749\n", - " 82.1500 240.0000 4.8990\n", - " 82.2000 234.0000 4.8374\n", - " 82.2500 226.0000 4.7539\n", - " 82.3000 229.0000 4.7854\n", - " 82.3500 228.0000 4.7749\n", - " 82.4000 233.0000 4.8270\n", - " 82.4500 243.0000 4.9295\n", - " 82.5000 241.0000 4.9092\n", - " 82.5500 257.0000 5.0695\n", - " 82.6000 279.0000 5.2820\n", - " 82.6500 305.0000 5.5227\n", - " 82.7000 345.0000 5.8737\n", - " 82.7500 410.0000 6.4031\n", - " 82.8000 455.0000 6.7454\n", - " 82.8500 545.0000 7.3824\n", - " 82.9000 622.0000 7.8867\n", - " 82.9500 673.0000 8.2037\n", - " 83.0000 725.0000 8.5147\n", - " 83.0500 717.0000 8.4676\n", - " 83.1000 661.0000 8.1302\n", - " 83.1500 592.0000 7.6942\n", - " 83.2000 518.0000 7.1972\n", - " 83.2500 443.0000 6.6558\n", - " 83.3000 371.0000 6.0910\n", - " 83.3500 336.0000 5.7966\n", - " 83.4000 290.0000 5.3852\n", - " 83.4500 265.0000 5.1478\n", - " 83.5000 252.0000 5.0200\n", - " 83.5500 250.0000 5.0000\n", - " 83.6000 244.0000 4.9396\n", - " 83.6500 242.0000 4.9193\n", - " 83.7000 241.0000 4.9092\n", - " 83.7500 243.0000 4.9295\n", - " 83.8000 248.0000 4.9800\n", - " 83.8500 253.0000 5.0299\n", - " 83.9000 252.0000 5.0200\n", - " 83.9500 264.0000 5.1381\n", - " 84.0000 266.0000 5.1575\n", - " 84.0500 282.0000 5.3104\n", - " 84.1000 291.0000 5.3944\n", - " 84.1500 313.0000 5.5946\n", - " 84.2000 346.0000 5.8822\n", - " 84.2500 374.0000 6.1156\n", - " 84.3000 415.0000 6.4420\n", - " 84.3500 430.0000 6.5574\n", - " 84.4000 433.0000 6.5803\n", - " 84.4500 430.0000 6.5574\n", - " 84.5000 406.0000 6.3718\n", - " 84.5500 384.0000 6.1968\n", - " 84.6000 349.0000 5.9076\n", - " 84.6500 318.0000 5.6391\n", - " 84.7000 307.0000 5.5408\n", - " 84.7500 298.0000 5.4589\n", - " 84.8000 296.0000 5.4406\n", - " 84.8500 304.0000 5.5136\n", - " 84.9000 313.0000 5.5946\n", - " 84.9500 328.0000 5.7271\n", - " 85.0000 346.0000 5.8822\n", - " 85.0500 341.0000 5.8395\n", - " 85.1000 335.0000 5.7879\n", - " 85.1500 324.0000 5.6921\n", - " 85.2000 336.0000 5.7966\n", - " 85.2500 341.0000 5.8395\n", - " 85.3000 341.0000 5.8395\n", - " 85.3500 370.0000 6.0828\n", - " 85.4000 414.0000 6.4343\n", - " 85.4500 442.0000 6.6483\n", - " 85.5000 490.0000 7.0000\n", - " 85.5500 520.0000 7.2111\n", - " 85.6000 532.0000 7.2938\n", - " 85.6500 548.0000 7.4027\n", - " 85.7000 561.0000 7.4900\n", - " 85.7500 567.0000 7.5299\n", - " 85.8000 585.0000 7.6485\n", - " 85.8500 584.0000 7.6420\n", - " 85.9000 558.0000 7.4699\n", - " 85.9500 527.0000 7.2595\n", - " 86.0000 481.0000 6.9354\n", - " 86.0500 424.0000 6.5115\n", - " 86.1000 370.0000 6.0828\n", - " 86.1500 333.0000 5.7706\n", - " 86.2000 312.0000 5.5857\n", - " 86.2500 301.0000 5.4863\n", - " 86.3000 307.0000 5.5408\n", - " 86.3500 314.0000 5.6036\n", - " 86.4000 340.0000 5.8310\n", - " 86.4500 379.0000 6.1563\n", - " 86.5000 427.0000 6.5345\n", - " 86.5500 467.0000 6.8337\n", - " 86.6000 535.0000 7.3144\n", - " 86.6500 584.0000 7.6420\n", - " 86.7000 602.0000 7.7589\n", - " 86.7500 580.0000 7.6158\n", - " 86.8000 532.0000 7.2938\n", - " 86.8500 481.0000 6.9354\n", - " 86.9000 426.0000 6.5269\n", - " 86.9500 379.0000 6.1563\n", - " 87.0000 329.0000 5.7359\n", - " 87.0500 303.0000 5.5045\n", - " 87.1000 288.0000 5.3666\n", - " 87.1500 271.0000 5.2058\n", - " 87.2000 269.0000 5.1865\n", - " 87.2500 267.0000 5.1672\n", - " 87.3000 263.0000 5.1284\n", - " 87.3500 267.0000 5.1672\n", - " 87.4000 260.0000 5.0990\n", - " 87.4500 260.0000 5.0990\n", - " 87.5000 263.0000 5.1284\n", - " 87.5500 263.0000 5.1284\n", - " 87.6000 270.0000 5.1962\n", - " 87.6500 278.0000 5.2726\n", - " 87.7000 293.0000 5.4129\n", - " 87.7500 318.0000 5.6391\n", - " 87.8000 364.0000 6.0332\n", - " 87.8500 424.0000 6.5115\n", - " 87.9000 512.0000 7.1554\n", - " 87.9500 643.0000 8.0187\n", - " 88.0000 817.0000 9.0388\n", - " 88.0500 982.0000 9.9096\n", - " 88.1000 1163.0000 10.7842\n", - " 88.1500 1289.0000 11.3534\n", - " 88.2000 1373.0000 11.7175\n", - " 88.2500 1393.0000 11.8025\n", - " 88.3000 1348.0000 11.6103\n", - " 88.3500 1244.0000 11.1535\n", - " 88.4000 1157.0000 10.7564\n", - " 88.4500 1077.0000 10.3779\n", - " 88.5000 1020.0000 10.0995\n", - " 88.5500 965.0000 9.8234\n", - " 88.6000 907.0000 9.5237\n", - " 88.6500 858.0000 9.2628\n", - " 88.7000 771.0000 8.7807\n", - " 88.7500 647.0000 8.0436\n", - " 88.8000 555.0000 7.4498\n", - " 88.8500 468.0000 6.8411\n", - " 88.9000 405.0000 6.3640\n", - " 88.9500 348.0000 5.8992\n", - " 89.0000 316.0000 5.6214\n", - " 89.0500 291.0000 5.3944\n", - " 89.1000 277.0000 5.2631\n", - " 89.1500 278.0000 5.2726\n", - " 89.2000 270.0000 5.1962\n", - " 89.2500 262.0000 5.1186\n", - " 89.3000 268.0000 5.1769\n", - " 89.3500 270.0000 5.1962\n", - " 89.4000 279.0000 5.2820\n", - " 89.4500 287.0000 5.3572\n", - " 89.5000 300.0000 5.4772\n", - " 89.5500 319.0000 5.6480\n", - " 89.6000 347.0000 5.8907\n", - " 89.6500 378.0000 6.1482\n", - " 89.7000 420.0000 6.4807\n", - " 89.7500 469.0000 6.8484\n", - " 89.8000 536.0000 7.3212\n", - " 89.8500 645.0000 8.0312\n", - " 89.9000 773.0000 8.7920\n", - " 89.9500 925.0000 9.6177\n", - " 90.0000 1115.0000 10.5594\n", - " 90.0500 1254.0000 11.1982\n", - " 90.1000 1367.0000 11.6919\n", - " 90.1500 1400.0000 11.8322\n", - " 90.2000 1327.0000 11.5195\n", - " 90.2500 1188.0000 10.8995\n", - " 90.3000 1038.0000 10.1882\n", - " 90.3500 879.0000 9.3755\n", - " 90.4000 738.0000 8.5907\n", - " 90.4500 644.0000 8.0250\n", - " 90.5000 594.0000 7.7071\n", - " 90.5500 601.0000 7.7524\n", - " 90.6000 643.0000 8.0187\n", - " 90.6500 697.0000 8.3487\n", - " 90.7000 786.0000 8.8657\n", - " 90.7500 842.0000 9.1761\n", - " 90.8000 847.0000 9.2033\n", - " 90.8500 791.0000 8.8938\n", - " 90.9000 702.0000 8.3785\n", - " 90.9500 592.0000 7.6942\n", - " 91.0000 508.0000 7.1274\n", - " 91.0500 418.0000 6.4653\n", - " 91.1000 362.0000 6.0166\n", - " 91.1500 328.0000 5.7271\n", - " 91.2000 299.0000 5.4681\n", - " 91.2500 279.0000 5.2820\n", - " 91.3000 270.0000 5.1962\n", - " 91.3500 257.0000 5.0695\n", - " 91.4000 253.0000 5.0299\n", - " 91.4500 258.0000 5.0794\n", - " 91.5000 257.0000 5.0695\n", - " 91.5500 249.0000 4.9900\n", - " 91.6000 245.0000 4.9497\n", - " 91.6500 257.0000 5.0695\n", - " 91.7000 260.0000 5.0990\n", - " 91.7500 284.0000 5.3292\n", - " 91.8000 296.0000 5.4406\n", - " 91.8500 322.0000 5.6745\n", - " 91.9000 343.0000 5.8566\n", - " 91.9500 382.0000 6.1806\n", - " 92.0000 405.0000 6.3640\n", - " 92.0500 411.0000 6.4109\n", - " 92.1000 416.0000 6.4498\n", - " 92.1500 406.0000 6.3718\n", - " 92.2000 372.0000 6.0992\n", - " 92.2500 353.0000 5.9414\n", - " 92.3000 330.0000 5.7446\n", - " 92.3500 317.0000 5.6303\n", - " 92.4000 313.0000 5.5946\n", - " 92.4500 312.0000 5.5857\n", - " 92.5000 309.0000 5.5588\n", - " 92.5500 303.0000 5.5045\n", - " 92.6000 288.0000 5.3666\n", - " 92.6500 276.0000 5.2536\n", - " 92.7000 264.0000 5.1381\n", - " 92.7500 246.0000 4.9598\n", - " 92.8000 249.0000 4.9900\n", - " 92.8500 241.0000 4.9092\n", - " 92.9000 251.0000 5.0100\n", - " 92.9500 243.0000 4.9295\n", - " 93.0000 246.0000 4.9598\n", - " 93.0500 246.0000 4.9598\n", - " 93.1000 249.0000 4.9900\n", - " 93.1500 244.0000 4.9396\n", - " 93.2000 252.0000 5.0200\n", - " 93.2500 252.0000 5.0200\n", - " 93.3000 258.0000 5.0794\n", - " 93.3500 265.0000 5.1478\n", - " 93.4000 263.0000 5.1284\n", - " 93.4500 284.0000 5.3292\n", - " 93.5000 299.0000 5.4681\n", - " 93.5500 320.0000 5.6569\n", - " 93.6000 344.0000 5.8652\n", - " 93.6500 363.0000 6.0249\n", - " 93.7000 372.0000 6.0992\n", - " 93.7500 358.0000 5.9833\n", - " 93.8000 351.0000 5.9245\n", - " 93.8500 354.0000 5.9498\n", - " 93.9000 330.0000 5.7446\n", - " 93.9500 322.0000 5.6745\n", - " 94.0000 334.0000 5.7793\n", - " 94.0500 339.0000 5.8224\n", - " 94.1000 345.0000 5.8737\n", - " 94.1500 357.0000 5.9749\n", - " 94.2000 360.0000 6.0000\n", - " 94.2500 358.0000 5.9833\n", - " 94.3000 372.0000 6.0992\n", - " 94.3500 425.0000 6.5192\n", - " 94.4000 511.0000 7.1484\n", - " 94.4500 626.0000 7.9120\n", - " 94.5000 770.0000 8.7750\n", - " 94.5500 946.0000 9.7263\n", - " 94.6000 1118.0000 10.5736\n", - " 94.6500 1205.0000 10.9772\n", - " 94.7000 1227.0000 11.0770\n", - " 94.7500 1157.0000 10.7564\n", - " 94.8000 1041.0000 10.2029\n", - " 94.8500 873.0000 9.3434\n", - " 94.9000 715.0000 8.4558\n", - " 94.9500 562.0000 7.4967\n", - " 95.0000 446.0000 6.6783\n", - " 95.0500 377.0000 6.1400\n", - " 95.1000 332.0000 5.7619\n", - " 95.1500 297.0000 5.4498\n", - " 95.2000 282.0000 5.3104\n", - " 95.2500 276.0000 5.2536\n", - " 95.3000 264.0000 5.1381\n", - " 95.3500 261.0000 5.1088\n", - " 95.4000 266.0000 5.1575\n", - " 95.4500 261.0000 5.1088\n", - " 95.5000 253.0000 5.0299\n", - " 95.5500 258.0000 5.0794\n", - " 95.6000 262.0000 5.1186\n", - " 95.6500 260.0000 5.0990\n", - " 95.7000 283.0000 5.3198\n", - " 95.7500 307.0000 5.5408\n", - " 95.8000 344.0000 5.8652\n", - " 95.8500 402.0000 6.3403\n", - " 95.9000 453.0000 6.7305\n", - " 95.9500 529.0000 7.2732\n", - " 96.0000 604.0000 7.7717\n", - " 96.0500 661.0000 8.1302\n", - " 96.1000 672.0000 8.1976\n", - " 96.1500 629.0000 7.9310\n", - " 96.2000 588.0000 7.6681\n", - " 96.2500 510.0000 7.1414\n", - " 96.3000 440.0000 6.6332\n", - " 96.3500 377.0000 6.1400\n", - " 96.4000 330.0000 5.7446\n", - " 96.4500 301.0000 5.4863\n", - " 96.5000 280.0000 5.2915\n", - " 96.5500 269.0000 5.1865\n", - " 96.6000 258.0000 5.0794\n", - " 96.6500 252.0000 5.0200\n", - " 96.7000 251.0000 5.0100\n", - " 96.7500 252.0000 5.0200\n", - " 96.8000 256.0000 5.0596\n", - " 96.8500 253.0000 5.0299\n", - " 96.9000 253.0000 5.0299\n", - " 96.9500 253.0000 5.0299\n", - " 97.0000 262.0000 5.1186\n", - " 97.0500 265.0000 5.1478\n", - " 97.1000 284.0000 5.3292\n", - " 97.1500 291.0000 5.3944\n", - " 97.2000 323.0000 5.6833\n", - " 97.2500 374.0000 6.1156\n", - " 97.3000 431.0000 6.5651\n", - " 97.3500 511.0000 7.1484\n", - " 97.4000 602.0000 7.7589\n", - " 97.4500 678.0000 8.2341\n", - " 97.5000 743.0000 8.6197\n", - " 97.5500 756.0000 8.6948\n", - " 97.6000 717.0000 8.4676\n", - " 97.6500 657.0000 8.1056\n", - " 97.7000 581.0000 7.6223\n", - " 97.7500 490.0000 7.0000\n", - " 97.8000 418.0000 6.4653\n", - " 97.8500 364.0000 6.0332\n", - " 97.9000 335.0000 5.7879\n", - " 97.9500 306.0000 5.5317\n", - " 98.0000 290.0000 5.3852\n", - " 98.0500 286.0000 5.3479\n", - " 98.1000 283.0000 5.3198\n", - " 98.1500 283.0000 5.3198\n", - " 98.2000 274.0000 5.2345\n", - " 98.2500 262.0000 5.1186\n", - " 98.3000 266.0000 5.1575\n", - " 98.3500 261.0000 5.1088\n", - " 98.4000 261.0000 5.1088\n", - " 98.4500 264.0000 5.1381\n", - " 98.5000 269.0000 5.1865\n", - " 98.5500 278.0000 5.2726\n", - " 98.6000 288.0000 5.3666\n", - " 98.6500 306.0000 5.5317\n", - " 98.7000 319.0000 5.6480\n", - " 98.7500 330.0000 5.7446\n", - " 98.8000 343.0000 5.8566\n", - " 98.8500 341.0000 5.8395\n", - " 98.9000 325.0000 5.7009\n", - " 98.9500 318.0000 5.6391\n", - " 99.0000 298.0000 5.4589\n", - " 99.0500 299.0000 5.4681\n", - " 99.1000 288.0000 5.3666\n", - " 99.1500 309.0000 5.5588\n", - " 99.2000 344.0000 5.8652\n", - " 99.2500 382.0000 6.1806\n", - " 99.3000 422.0000 6.4962\n", - " 99.3500 470.0000 6.8557\n", - " 99.4000 512.0000 7.1554\n", - " 99.4500 514.0000 7.1694\n", - " 99.5000 515.0000 7.1764\n", - " 99.5500 488.0000 6.9857\n", - " 99.6000 440.0000 6.6332\n", - " 99.6500 396.0000 6.2929\n", - " 99.7000 366.0000 6.0498\n", - " 99.7500 332.0000 5.7619\n", - " 99.8000 311.0000 5.5767\n", - " 99.8500 305.0000 5.5227\n", - " 99.9000 300.0000 5.4772\n", - " 99.9500 293.0000 5.4129\n", - " 100.0000 286.0000 5.3479\n", - " 100.0500 306.0000 5.5317\n", - " 100.1000 313.0000 5.5946\n", - " 100.1500 317.0000 5.6303\n", - " 100.2000 327.0000 5.7184\n", - " 100.2500 343.0000 5.8566\n", - " 100.3000 330.0000 5.7446\n", - " 100.3500 320.0000 5.6569\n", - " 100.4000 307.0000 5.5408\n", - " 100.4500 298.0000 5.4589\n", - " 100.5000 282.0000 5.3104\n", - " 100.5500 274.0000 5.2345\n", - " 100.6000 266.0000 5.1575\n", - " 100.6500 274.0000 5.2345\n", - " 100.7000 271.0000 5.2058\n", - " 100.7500 274.0000 5.2345\n", - " 100.8000 290.0000 5.3852\n", - " 100.8500 302.0000 5.4955\n", - " 100.9000 321.0000 5.6657\n", - " 100.9500 350.0000 5.9161\n", - " 101.0000 367.0000 6.0581\n", - " 101.0500 386.0000 6.2129\n", - " 101.1000 394.0000 6.2769\n", - " 101.1500 370.0000 6.0828\n", - " 101.2000 356.0000 5.9666\n", - " 101.2500 332.0000 5.7619\n", - " 101.3000 310.0000 5.5678\n", - " 101.3500 288.0000 5.3666\n", - " 101.4000 279.0000 5.2820\n", - " 101.4500 281.0000 5.3009\n", - " 101.5000 274.0000 5.2345\n", - " 101.5500 284.0000 5.3292\n", - " 101.6000 280.0000 5.2915\n", - " 101.6500 270.0000 5.1962\n", - " 101.7000 278.0000 5.2726\n", - " 101.7500 269.0000 5.1865\n", - " 101.8000 273.0000 5.2249\n", - " 101.8500 268.0000 5.1769\n", - " 101.9000 267.0000 5.1672\n", - " 101.9500 265.0000 5.1478\n", - " 102.0000 257.0000 5.3437\n", - " 102.0500 258.0000 5.3541\n", - " 102.1000 267.0000 5.4467\n", - " 102.1500 267.0000 5.4467\n", - " 102.2000 277.0000 5.5478\n", - " 102.2500 287.0000 5.6470\n", - " 102.3000 302.0000 5.7927\n", - " 102.3500 332.0000 6.0736\n", - " 102.4000 360.0000 6.3246\n", - " 102.4500 411.0000 6.7577\n", - " 102.5000 457.0000 7.1259\n", - " 102.5500 524.0000 7.6303\n", - " 102.6000 608.0000 8.2192\n", - " 102.6500 699.0000 8.8129\n", - " 102.7000 861.0000 9.7809\n", - " 102.7500 1096.0000 11.0353\n", - " 102.8000 1377.0000 12.3693\n", - " 102.8500 1685.0000 13.6829\n", - " 102.9000 1901.0000 14.5335\n", - " 102.9500 2069.0000 15.1621\n", - " 103.0000 2016.0000 14.9666\n", - " 103.0500 1800.0000 14.1421\n", - " 103.1000 1500.0000 12.9099\n", - " 103.1500 1181.0000 11.4552\n", - " 103.2000 937.0000 10.2035\n", - " 103.2500 728.0000 8.9938\n", - " 103.3000 629.0000 8.3600\n", - " 103.3500 576.0000 8.0000\n", - " 103.4000 556.0000 7.8599\n", - " 103.4500 535.0000 7.7100\n", - " 103.5000 519.0000 7.5939\n", - " 103.5500 486.0000 7.3485\n", - " 103.6000 465.0000 7.1880\n", - " 103.6500 429.0000 6.9041\n", - " 103.7000 385.0000 6.5405\n", - " 103.7500 361.0000 6.3333\n", - " 103.8000 342.0000 6.1644\n", - " 103.8500 312.0000 5.8878\n", - " 103.9000 293.0000 5.7057\n", - " 103.9500 279.0000 5.5678\n", - " 104.0000 277.0000 5.5478\n", - " 104.0500 265.0000 5.4263\n", - " 104.1000 257.0000 5.3437\n", - " 104.1500 256.0000 5.3333\n", - " 104.2000 250.0000 5.2705\n", - " 104.2500 260.0000 5.3748\n", - " 104.3000 261.0000 5.3852\n", - " 104.3500 258.0000 5.3541\n", - " 104.4000 263.0000 5.4058\n", - " 104.4500 268.0000 5.4569\n", - " 104.5000 284.0000 5.6174\n", - " 104.5500 306.0000 5.8310\n", - " 104.6000 325.0000 6.0093\n", - " 104.6500 337.0000 6.1192\n", - " 104.7000 337.0000 6.1192\n", - " 104.7500 344.0000 6.1824\n", - " 104.8000 340.0000 6.1464\n", - " 104.8500 337.0000 6.1192\n", - " 104.9000 328.0000 6.0369\n", - " 104.9500 321.0000 5.9722\n", - " 105.0000 306.0000 5.8310\n", - " 105.0500 295.0000 5.7252\n", - " 105.1000 289.0000 5.6667\n", - " 105.1500 281.0000 5.5877\n", - " 105.2000 267.0000 5.4467\n", - " 105.2500 266.0000 5.4365\n", - " 105.3000 270.0000 5.4772\n", - " 105.3500 263.0000 5.4058\n", - " 105.4000 256.0000 5.3333\n", - " 105.4500 266.0000 5.4365\n", - " 105.5000 264.0000 5.4160\n", - " 105.5500 259.0000 5.3645\n", - " 105.6000 261.0000 5.3852\n", - " 105.6500 261.0000 5.3852\n", - " 105.7000 258.0000 5.3541\n", - " 105.7500 253.0000 5.3020\n", - " 105.8000 248.0000 5.2493\n", - " 105.8500 244.0000 5.2068\n", - " 105.9000 249.0000 5.2599\n", - " 105.9500 251.0000 5.2810\n", - " 106.0000 245.0000 5.2175\n", - " 106.0500 245.0000 5.2175\n", - " 106.1000 247.0000 5.2387\n", - " 106.1500 247.0000 5.2387\n", - " 106.2000 254.0000 5.3125\n", - " 106.2500 259.0000 5.3645\n", - " 106.3000 250.0000 5.2705\n", - " 106.3500 251.0000 5.2810\n", - " 106.4000 258.0000 5.3541\n", - " 106.4500 252.0000 5.2915\n", - " 106.5000 255.0000 5.3229\n", - " 106.5500 259.0000 5.3645\n", - " 106.6000 256.0000 5.3333\n", - " 106.6500 264.0000 5.4160\n", - " 106.7000 268.0000 5.4569\n", - " 106.7500 281.0000 5.5877\n", - " 106.8000 303.0000 5.8023\n", - " 106.8500 331.0000 6.0645\n", - " 106.9000 371.0000 6.4205\n", - " 106.9500 420.0000 6.8313\n", - " 107.0000 484.0000 7.3333\n", - " 107.0500 532.0000 7.6884\n", - " 107.1000 576.0000 8.0000\n", - " 107.1500 582.0000 8.0416\n", - " 107.2000 563.0000 7.9092\n", - " 107.2500 527.0000 7.6522\n", - " 107.3000 490.0000 7.3786\n", - " 107.3500 465.0000 7.1880\n", - " 107.4000 467.0000 7.2034\n", - " 107.4500 449.0000 7.0632\n", - " 107.5000 416.0000 6.7987\n", - " 107.5500 393.0000 6.6081\n", - " 107.6000 366.0000 6.3770\n", - " 107.6500 331.0000 6.0645\n", - " 107.7000 316.0000 5.9255\n", - " 107.7500 297.0000 5.7446\n", - " 107.8000 294.0000 5.7155\n", - " 107.8500 292.0000 5.6960\n", - " 107.9000 286.0000 5.6372\n", - " 107.9500 295.0000 5.7252\n", - " 108.0000 306.0000 6.1847\n", - " 108.0500 315.0000 6.2750\n", - " 108.1000 334.0000 6.4614\n", - " 108.1500 373.0000 6.8282\n", - " 108.2000 406.0000 7.1239\n", - " 108.2500 447.0000 7.4750\n", - " 108.3000 499.0000 7.8978\n", - " 108.3500 507.0000 7.9608\n", - " 108.4000 506.0000 7.9530\n", - " 108.4500 488.0000 7.8102\n", - " 108.5000 432.0000 7.3485\n", - " 108.5500 391.0000 6.9911\n", - " 108.6000 342.0000 6.5383\n", - " 108.6500 315.0000 6.2750\n", - " 108.7000 292.0000 6.0415\n", - " 108.7500 275.0000 5.8630\n", - " 108.8000 274.0000 5.8523\n", - " 108.8500 259.0000 5.6899\n", - " 108.9000 250.0000 5.5902\n", - " 108.9500 258.0000 5.6789\n", - " 109.0000 252.0000 5.6125\n", - " 109.0500 255.0000 5.6458\n", - " 109.1000 254.0000 5.6347\n", - " 109.1500 253.0000 5.6236\n", - " 109.2000 254.0000 5.6347\n", - " 109.2500 252.0000 5.6125\n", - " 109.3000 257.0000 5.6679\n", - " 109.3500 250.0000 5.5902\n", - " 109.4000 255.0000 5.6458\n", - " 109.4500 251.0000 5.6013\n", - " 109.5000 254.0000 5.6347\n", - " 109.5500 260.0000 5.7009\n", - " 109.6000 249.0000 5.5790\n", - " 109.6500 253.0000 5.6236\n", - " 109.7000 254.0000 5.6347\n", - " 109.7500 259.0000 5.6899\n", - " 109.8000 268.0000 5.7879\n", - " 109.8500 270.0000 5.8095\n", - " 109.9000 284.0000 5.9582\n", - " 109.9500 305.0000 6.1745\n", - " 110.0000 322.0000 6.3443\n", - " 110.0500 364.0000 6.7454\n", - " 110.1000 417.0000 7.2198\n", - " 110.1500 470.0000 7.6649\n", - " 110.2000 573.0000 8.4632\n", - " 110.2500 678.0000 9.2060\n", - " 110.3000 771.0000 9.8171\n", - " 110.3500 847.0000 10.2896\n", - " 110.4000 854.0000 10.3320\n", - " 110.4500 794.0000 9.9624\n", - " 110.5000 720.0000 9.4868\n", - " 110.5500 611.0000 8.7393\n", - " 110.6000 520.0000 8.0623\n", - " 110.6500 463.0000 7.6076\n", - " 110.7000 412.0000 7.1764\n", - " 110.7500 399.0000 7.0622\n", - " 110.8000 416.0000 7.2111\n", - " 110.8500 428.0000 7.3144\n", - " 110.9000 432.0000 7.3485\n", - " 110.9500 420.0000 7.2457\n", - " 111.0000 402.0000 7.0887\n", - " 111.0500 364.0000 6.7454\n", - " 111.1000 348.0000 6.5955\n", - " 111.1500 334.0000 6.4614\n", - " 111.2000 321.0000 6.3344\n", - " 111.2500 330.0000 6.4226\n", - " 111.3000 342.0000 6.5383\n", - " 111.3500 380.0000 6.8920\n", - " 111.4000 385.0000 6.9372\n", - " 111.4500 420.0000 7.2457\n", - " 111.5000 441.0000 7.4246\n", - " 111.5500 465.0000 7.6240\n", - " 111.6000 444.0000 7.4498\n", - " 111.6500 406.0000 7.1239\n", - " 111.7000 383.0000 6.9192\n", - " 111.7500 345.0000 6.5670\n", - " 111.8000 332.0000 6.4420\n", - " 111.8500 321.0000 6.3344\n", - " 111.9000 308.0000 6.2048\n", - " 111.9500 292.0000 6.0415\n", - " 112.0000 303.0000 6.1543\n", - " 112.0500 314.0000 6.2650\n", - " 112.1000 333.0000 6.4517\n", - " 112.1500 379.0000 6.8829\n", - " 112.2000 438.0000 7.3993\n", - " 112.2500 505.0000 7.9451\n", - " 112.3000 594.0000 8.6168\n", - " 112.3500 659.0000 9.0761\n", - " 112.4000 717.0000 9.4670\n", - " 112.4500 738.0000 9.6047\n", - " 112.5000 710.0000 9.4207\n", - " 112.5500 642.0000 8.9582\n", - " 112.6000 547.0000 8.2689\n", - " 112.6500 492.0000 7.8422\n", - " 112.7000 421.0000 7.2543\n", - " 112.7500 386.0000 6.9462\n", - " 112.8000 344.0000 6.5574\n", - " 112.8500 337.0000 6.4904\n", - " 112.9000 350.0000 6.6144\n", - " 112.9500 364.0000 6.7454\n", - " 113.0000 415.0000 7.2024\n", - " 113.0500 506.0000 7.9530\n", - " 113.1000 586.0000 8.5586\n", - " 113.1500 674.0000 9.1788\n", - " 113.2000 750.0000 9.6825\n", - " 113.2500 787.0000 9.9184\n", - " 113.3000 753.0000 9.7018\n", - " 113.3500 682.0000 9.2331\n", - " 113.4000 597.0000 8.6386\n", - " 113.4500 499.0000 7.8978\n", - " 113.5000 417.0000 7.2198\n", - " 113.5500 362.0000 6.7268\n", - " 113.6000 340.0000 6.5192\n", - " 113.6500 302.0000 6.1441\n", - " 113.7000 286.0000 5.9791\n", - " 113.7500 280.0000 5.9161\n", - " 113.8000 283.0000 5.9477\n", - " 113.8500 276.0000 5.8737\n", - " 113.9000 282.0000 5.9372\n", - " 113.9500 284.0000 5.9582\n", - " 114.0000 295.0000 6.4918\n", - " 114.0500 310.0000 6.6548\n", - " 114.1000 319.0000 6.7507\n", - " 114.1500 321.0000 6.7718\n", - " 114.2000 304.0000 6.5900\n", - " 114.2500 298.0000 6.5247\n", - " 114.3000 293.0000 6.4697\n", - " 114.3500 283.0000 6.3583\n", - " 114.4000 277.0000 6.2906\n", - " 114.4500 269.0000 6.1991\n", - " 114.5000 265.0000 6.1528\n", - " 114.5500 277.0000 6.2906\n", - " 114.6000 283.0000 6.3583\n", - " 114.6500 283.0000 6.3583\n", - " 114.7000 293.0000 6.4697\n", - " 114.7500 303.0000 6.5792\n", - " 114.8000 320.0000 6.7612\n", - " 114.8500 316.0000 6.7188\n", - " 114.9000 331.0000 6.8765\n", - " 114.9500 346.0000 7.0305\n", - " 115.0000 327.0000 6.8348\n", - " 115.0500 328.0000 6.8452\n", - " 115.1000 306.0000 6.6117\n", - " 115.1500 291.0000 6.4476\n", - " 115.2000 286.0000 6.3920\n", - " 115.2500 278.0000 6.3019\n", - " 115.3000 273.0000 6.2450\n", - " 115.3500 267.0000 6.1760\n", - " 115.4000 272.0000 6.2335\n", - " 115.4500 257.0000 6.0592\n", - " 115.5000 260.0000 6.0945\n", - " 115.5500 265.0000 6.1528\n", - " 115.6000 264.0000 6.1412\n", - " 115.6500 272.0000 6.2335\n", - " 115.7000 270.0000 6.2106\n", - " 115.7500 268.0000 6.1875\n", - " 115.8000 269.0000 6.1991\n", - " 115.8500 287.0000 6.4031\n", - " 115.9000 292.0000 6.4587\n", - " 115.9500 295.0000 6.4918\n", - " 116.0000 317.0000 6.7295\n", - " 116.0500 335.0000 6.9179\n", - " 116.1000 364.0000 7.2111\n", - " 116.1500 410.0000 7.6532\n", - " 116.2000 477.0000 8.2549\n", - " 116.2500 556.0000 8.9123\n", - " 116.3000 642.0000 9.5768\n", - " 116.3500 755.0000 10.3854\n", - " 116.4000 864.0000 11.1098\n", - " 116.4500 946.0000 11.6251\n", - " 116.5000 970.0000 11.7716\n", - " 116.5500 941.0000 11.5943\n", - " 116.6000 870.0000 11.1484\n", - " 116.6500 759.0000 10.4129\n", - " 116.7000 647.0000 9.6140\n", - " 116.7500 540.0000 8.7831\n", - " 116.8000 468.0000 8.1766\n", - " 116.8500 418.0000 7.7275\n", - " 116.9000 379.0000 7.3582\n", - " 116.9500 381.0000 7.3776\n", - " 117.0000 405.0000 7.6064\n", - " 117.0500 446.0000 7.9821\n", - " 117.1000 476.0000 8.2462\n", - " 117.1500 523.0000 8.6437\n", - " 117.2000 561.0000 8.9523\n", - " 117.2500 555.0000 8.9043\n", - " 117.3000 529.0000 8.6932\n", - " 117.3500 485.0000 8.3238\n", - " 117.4000 436.0000 7.8921\n", - " 117.4500 398.0000 7.5404\n", - " 117.5000 355.0000 7.1214\n", - " 117.5500 322.0000 6.7823\n", - " 117.6000 304.0000 6.5900\n", - " 117.6500 285.0000 6.3808\n", - " 117.7000 270.0000 6.2106\n", - " 117.7500 278.0000 6.3019\n", - " 117.8000 260.0000 6.0945\n", - " 117.8500 268.0000 6.1875\n", - " 117.9000 264.0000 6.1412\n", - " 117.9500 265.0000 6.1528\n", - " 118.0000 263.0000 6.1296\n", - " 118.0500 267.0000 6.1760\n", - " 118.1000 286.0000 6.3920\n", - " 118.1500 293.0000 6.4697\n", - " 118.2000 291.0000 6.4476\n", - " 118.2500 319.0000 6.7507\n", - " 118.3000 366.0000 7.2309\n", - " 118.3500 411.0000 7.6625\n", - " 118.4000 461.0000 8.1152\n", - " 118.4500 489.0000 8.3581\n", - " 118.5000 521.0000 8.6272\n", - " 118.5500 555.0000 8.9043\n", - " 118.6000 550.0000 8.8641\n", - " 118.6500 511.0000 8.5440\n", - " 118.7000 486.0000 8.3324\n", - " 118.7500 436.0000 7.8921\n", - " 118.8000 392.0000 7.4833\n", - " 118.8500 368.0000 7.2506\n", - " 118.9000 330.0000 6.8661\n", - " 118.9500 328.0000 6.8452\n", - " 119.0000 343.0000 7.0000\n", - " 119.0500 371.0000 7.2801\n", - " 119.1000 394.0000 7.5024\n", - " 119.1500 441.0000 7.9373\n", - " 119.2000 468.0000 8.1766\n", - " 119.2500 469.0000 8.1854\n", - " 119.3000 456.0000 8.0711\n", - " 119.3500 416.0000 7.7090\n", - " 119.4000 394.0000 7.5024\n", - " 119.4500 361.0000 7.1813\n", - " 119.5000 330.0000 6.8661\n", - " 119.5500 312.0000 6.6762\n", - " 119.6000 293.0000 6.4697\n", - " 119.6500 285.0000 6.3808\n", - " 119.7000 286.0000 6.3920\n", - " 119.7500 275.0000 6.2678\n", - " 119.8000 274.0000 6.2564\n", - " 119.8500 281.0000 6.3358\n", - " 119.9000 279.0000 6.3133\n", - " 119.9500 298.0000 6.5247\n", - " 120.0000 312.0000 7.2111\n", - "\n" + " 10.4500 229.0000 15.1327\n" ] } ], @@ -2459,7 +267,8 @@ "with open(meas_fname, 'r') as f:\n", " content = f.read()\n", " \n", - "print(content)" + "\n", + "print('\\n'.join(content.split('\\n')[:11]))" ] }, { @@ -2495,7 +304,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -2505,7 +314,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0475b77236454c15a23460ae7b41cc7f", + "model_id": "8e78ecf96d3847c1b60fc307b3059044", "version_major": 2, "version_minor": 0 }, @@ -2614,7 +423,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -2624,7 +433,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "078eac310daf4b87bfb81becfd195517", + "model_id": "5694871b850a4d26a6f7d9dd4986a6a5", "version_major": 2, "version_minor": 0 }, @@ -2668,7 +477,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -2678,7 +487,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7be148050c5c4278b4ca2b7de922731f", + "model_id": "7afef53df7ba4f07b9e6a8ce5491a402", "version_major": 2, "version_minor": 0 }, @@ -2724,7 +533,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -2734,7 +543,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7f5e9f092c2140bcbad127060160cae4", + "model_id": "07e158e0e1054695bac62299cb028e1d", "version_major": 2, "version_minor": 0 }, @@ -2785,7 +594,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -2795,7 +604,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "fecad5f396894c59b35b216dfc80ac16", + "model_id": "489db9c7825b42d49ae4716eb3c37d18", "version_major": 2, "version_minor": 0 }, @@ -2951,27 +760,27 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 25, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "353b0d1362894d83ad06e3bf16326088", + "model_id": "688df481b4a24a668e5f307ecc0bf48b", "version_major": 2, "version_minor": 0 }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAADxp0lEQVR4nOydd5wU9f3/X1O2XL+jHihSFBQFFTu2mEhAVBJ7/arYEg1obNFYYoz6i4mxJMYWNaJJNGpiiRVFbKiIiiIKioIgIL1c3TL198fMZ+YzM1tv93aP2/fz8eDB3e3s7Ozu7H5e83o3wTRNEwRBEARBEETFIJb7AAiCIAiCIIjSQgKQIAiCIAiiwiABSBAEQRAEUWGQACQIgiAIgqgwSAASBEEQBEFUGCQACYIgCIIgKgwSgARBEARBEBUGCUCCIAiCIIgKgwQgQRAEQRBEhUECkCAIgiAIosIgAUgQBEEQBFFhkAAkCIIgCIKoMEgAEgRBEARBVBgkAAmCIAiCICoMEoAEQRAEQRAVBglAgiAIgiCICoMEIEEQBEEQRIVBApAgCIIgCKLCIAFIEARBEARRYZAAJAiCIAiCqDBIABIEQRAEQVQYJAAJgiAIgiAqDBKABEEQBEEQFQYJQIIgCIIgiAqDBCBBEARBEESFQQKQIAiCIAiiwiABSBAEQRAEUWGQACQIgiAIgqgwSAASBEEQBEFUGCQACYIgCIIgKgwSgARBEARBEBUGCUCCIAiCIIgKgwQgQRAEQRBEhUECkCAIgiAIosIgAUgQBEEQBFFhkAAkCIIgCIKoMEgAEgRBEARBVBgkAAmCIAiCICoMEoAEQRAEQRAVBglAgiAIgiCICoMEIEEQBEEQRIVBApAgCIIgCKLCIAFIEARBEARRYZAAJAiCIAiCqDBIABIEQRAEQVQYJAAJgiAIgiAqDBKABEEQBEEQFQYJQIIgCIIgiAqDBCBBEARBEESFQQKQIAiCIAiiwiABSBAEQRAEUWGQACQIgiAIgqgwSAASBEEQBEFUGCQACYIgCIIgKgwSgARBEARBEBUGCUCCIAiCIIgKQy73AWzLGIaBNWvWoK6uDoIglPtwCIIgCILIAdM00d7ejsGDB0MUK9MLIwFYAGvWrMGQIUPKfRgEQRAEQXSBVatWYfvtty/3YZQFEoAFUFdXB8A6gerr68t8NARBEARB5EJbWxuGDBnirOOVCAnAAmBh3/r6ehKABEEQBLGNUcnpW5UZ+CYIgiAIgqhgSAASBEEQBEFUGCQACYIgCIIgKgzKAexmTNOEpmnQdb3ch0IQ3Y4kSZBluaLzagiCILYFepwAvOWWW/DMM8/gq6++QlVVFQ488ED88Y9/xM477+xsc9hhh+Htt9/23O/nP/857r//fuf3lStX4sILL8Sbb76J2tpanHXWWbjlllsgy+5Tfuutt3DZZZdh0aJFGDJkCK677jpMnTq1aM9FURSsXbsWsVisaPskiJ5OdXU1Bg0ahHA4XO5DIQiCINLQ4wTg22+/jWnTpmHfffeFpmm45pprMHHiRCxevBg1NTXOdueffz5uvPFG5/fq6mrnZ13XcdRRR6G5uRnvv/8+1q5dizPPPBOhUAi///3vAQDLly/HUUcdhQsuuACPPfYYZs+ejfPOOw+DBg3CpEmTCn4ehmFg+fLlkCQJgwcPRjgcJleE6NWYpglFUbBx40YsX74cI0eOrNgGqwRBED0dwTRNs9wHkYmNGzdiwIABePvtt3HooYcCsBzAPffcE3/+859T3ueVV17B0UcfjTVr1mDgwIEAgPvvvx9XXXUVNm7ciHA4jKuuugovvfQSvvjiC+d+p5xyClpaWjBz5sycjq2trQ0NDQ1obW0NtIFJJBJYvnw5hg4d6hGnBNHbicVi+O677zB8+HBEo9FyHw5BEESATOt3pdDjL89bW1sBAH369PH8/bHHHkO/fv0wZswYXH311Z4w69y5czF27FhH/AHApEmT0NbWhkWLFjnbTJgwwbPPSZMmYe7cuWmPJZlMoq2tzfMvG+SAEJUGnfMEQRA9nx4XAuYxDAOXXHIJDjroIIwZM8b5+2mnnYahQ4di8ODBWLhwIa666iosWbIEzzzzDABg3bp1HvEHwPl93bp1Gbdpa2tDPB5HVVVV4HhuueUW/O53vyvqcyQIgiAIgig1PVoATps2DV988QXeffddz99/9rOfOT+PHTsWgwYNwuGHH45ly5Zhxx137Lbjufrqq3HZZZc5v7NRMgRBEARBENsSPTZWM336dLz44ot48803sw5q3n///QEAS5cuBQA0Nzdj/fr1nm3Y783NzRm3qa+vT+n+AUAkEnHGvvXm8W9Tp07FMcccU+7DIAiCIAiim+hxAtA0TUyfPh3PPvss3njjDQwfPjzrfRYsWAAAGDRoEABg/Pjx+Pzzz7FhwwZnm1mzZqG+vh677rqrs83s2bM9+5k1axbGjx9fpGdCEARBEATRM+lxAnDatGn417/+hccffxx1dXVYt24d1q1bh3g8DgBYtmwZbrrpJsyfPx8rVqzA888/jzPPPBOHHnoodt99dwDAxIkTseuuu+KMM87AZ599hldffRXXXXcdpk2bhkgkAgC44IIL8O233+LKK6/EV199hXvvvRdPPfUULr300rI9957IYYcdhosuugiXXHIJmpqaMHDgQDz44IPo7OzE2Wefjbq6Ouy000545ZVXPPf74osvMHnyZNTW1mLgwIE444wzsGnTJuf2mTNn4uCDD0ZjYyP69u2Lo48+GsuWLXNuVxQF06dPx6BBgxCNRjF06FDccsstJXveRPdhGCbunPU15nyzsdyHQhAEUbH0OAF43333obW1FYcddhgGDRrk/HvyyScBAOFwGK+//jomTpyIXXbZBZdffjmOP/54vPDCC84+JEnCiy++CEmSMH78ePzf//0fzjzzTE/fwOHDh+Oll17CrFmzsMcee+D222/HQw89VJQegOkwTRMxRSv5v0I7/Tz66KPo168fPvzwQ1x00UW48MILceKJJ+LAAw/EJ598gokTJ+KMM85wKrFbWlrwox/9COPGjcPHH3+MmTNnYv369TjppJOcfXZ2duKyyy7Dxx9/jNmzZ0MURRx77LEwDAMAcNddd+H555/HU089hSVLluCxxx7DsGHDCnoeRM/glS/W4S+zv8EZf/+w3IdCEARRsfT4PoA9mVz6APK90GKKhl2vf7Xkx7n4xkmoDude7zN16lS0tLTgueeew2GHHQZd1zFnzhwAVpPthoYGHHfccfjHP/4BwKqoHjRoEObOnYsDDjgAN998M+bMmYNXX3Wf6+rVqzFkyBAsWbIEo0aNCjzmpk2b0L9/f3z++ecYM2YMLr74YixatAivv/46NdDexkh17vP8/d3luOnFxQCAFX84qtSHRxAEQX0A0QMdQKLnwULrgOWu9u3bF2PHjnX+xtrpsJzLzz77zBnBx/7tsssuAOCEeb/55huceuqpGDFiBOrr6x13b+XKlQAsEbpgwQLsvPPOuPjii/Haa691+/MkSkNVSHJ+Ngy6/iQIgigHPboNTG+jKiRh8Y3dF2LO9LiFEAqFPL8LguD5G3PoWPi2o6MDU6ZMwR//+MfAvlihzpQpUzB06FA8+OCDGDx4MAzDwJgxY6AoCgBgr732wvLly/HKK6/g9ddfx0knnYQJEybgv//9b0HPhSg/Edm97oyrOmoi9DVEEARRauibt4QIgpBXKHZbZa+99sLTTz+NYcOGQZaDz3fz5s1YsmQJHnzwQRxyyCEAEOj1CAD19fU4+eSTcfLJJ+OEE07AEUccgS1btgSmwhDbFjqXdaJTBgpBEERZoBAwUXSmTZuGLVu24NRTT8VHH32EZcuW4dVXX8XZZ58NXdfR1NSEvn374oEHHsDSpUvxxhtveBpsA8Add9yBf//73/jqq6/w9ddf4z//+Q+am5vR2NhYnidFFA1VN5yfTSPDhgRBEES3QQKQKDqDBw/Ge++9B13XMXHiRIwdOxaXXHIJGhsbIYoiRFHEE088gfnz52PMmDG49NJL8ac//cmzj7q6Otx6663YZ599sO+++2LFihV4+eWXac5sL0DTXdfPBDmABEEQ5YCqgAsg3ypggqgEsp37D835Fje/9CUA4JPf/Bh9asKlPkSCICocqgImB5AgiBLDX3IadP1JEARRFkgAEgRRUviwLwlAgiCI8kACkCCIksK3/iP9RxAEUR5IABIEUVJ4148cQIIgiPJAApAgiJLizQEs33EQBEFUMiQACYIoKXzjAWpCQBAEUR5IABIEUVIoB5AgCKL8kAAkCKKkUBsYgiCI8kMCkCCIkuItAinjgRAEQVQwJACJbuWGG27AnnvuWdA+FEXBTjvthPfff784B1Vmfv3rX+Oiiy4q92GUDV7zkQNIEARRHkgAEh6mTp2KY445ptyH4eH+++/H8OHDceCBB3r+/uabb+LII49E3759UV1djV133RWXX345vv/++247lhUrVkAQBOdf3759MXHiRHz66ac57+OKK67Ao48+im+//bbbjrMnQ0UgBEEQ5YcEINGjMU0Td999N84991zP3//2t79hwoQJaG5uxtNPP43Fixfj/vvvR2trK26//faU+9J1HYZhFOW4Xn/9daxduxavvvoqOjo6MHnyZLS0tOR03379+mHSpEm47777inIs2xoUAiYIgig/JACJjBiGgVtvvRU77bQTIpEIdthhB/y///f/nNuvuuoqjBo1CtXV1RgxYgR+85vfQFXVjPt8+OGHsdtuuyESiWDQoEGYPn162m3nz5+PZcuW4aijjnL+tnr1alx88cW4+OKL8fDDD+Owww7DsGHDcOihh+Khhx7C9ddfDwB45JFH0NjYiOeffx677rorIpEI3n33XYRCIaxbt87zOJdccgkOOeQQAMB3332HKVOmoKmpCTU1Ndhtt93w8ssve7bv27cvmpubsc8+++C2227D+vXrMW/ePNx4440YM2ZM4Hnsueee+M1vfuP8PmXKFDzxxBMZX6feiklVwARBEGVHLvcBVBSmCaix0j9uqBoQhC7d9eqrr8aDDz6IO++8EwcffDDWrl2Lr776yrm9rq4OjzzyCAYPHozPP/8c559/Purq6nDllVem3N99992Hyy67DH/4wx8wefJktLa24r333kv7+HPmzMGoUaNQV1fn/O0///kPFEVJ+xiNjY3Oz7FYDH/84x/x0EMPoW/fvhgyZAhGjBiBf/7zn/jVr34FAFBVFY899hhuvfVWAMC0adOgKAreeecd1NTUYPHixaitrU17jFVVVQCsXMVzzjkHv/vd7/DRRx9h3333BQB8+umnWLhwIZ555hnnPvvttx9Wr16NFStWYNiwYWn33RsxqAqYIAii7JAALCVqDPj94NI/7jVrgHBN3ndrb2/HX/7yF9x9990466yzAAA77rgjDj74YGeb6667zvl52LBhuOKKK/DEE0+kFWc333wzLr/8cvzyl790/saEUiq+++47DB7sfc2++eYb1NfXY9CgQVmfg6qquPfee7HHHns4fzv33HMxY8YMRwC+8MILSCQSOOmkkwAAK1euxPHHH4+xY8cCAEaMGJF2/y0tLbjppptQW1uL/fbbDwMHDsSkSZMwY8YM53nNmDEDP/jBDzz7Yc/pu+++qzgBaIJGwREEQZQbCgETafnyyy+RTCZx+OGHp93mySefxEEHHYTm5mbU1tbiuuuuw8qVK1Nuu2HDBqxZsybj/vzE43FEo1HP30zThJCjoxkOh7H77rt7/jZ16lQsXboUH3zwAQArVHzSSSehpsYSyRdffDFuvvlmHHTQQfjtb3+LhQsXBvZ74IEHora2Fk1NTfjss8/w5JNPYuDAgQCA888/H//+97+RSCSgKAoef/xxnHPOOZ77M9cwFiuDI1xmKARMEARRfsgBLCWhasuNK8fjdgEmUtIxd+5cnH766fjd736HSZMmoaGhAU888UTaIoxs+0tFv3798Pnnn3v+NmrUKLS2tmLt2rVZXcCqqqqAWBwwYACmTJmCGTNmYPjw4XjllVfw1ltvObefd955mDRpEl566SW89tpruOWWW3D77bd7Wrc8+eST2HXXXdG3b19PyBmw8vsikQieffZZhMNhqKqKE044wbPNli1bAAD9+/fP9aXoNRgGOYAEQRDlhhzAUiIIVii21P+6mP83cuRIVFVVYfbs2Slvf//99zF06FBce+212GeffTBy5Eh89913afdXV1eHYcOGpd1fKsaNG4evvvrK0y7khBNOQDgcdnL2/ORSjXveeefhySefxAMPPIAdd9wRBx10kOf2IUOG4IILLsAzzzyDyy+/HA8++GDg9h133DEg/gBAlmWcddZZmDFjBmbMmIFTTjklIH6/+OILhEIh7LbbblmPtbfh7QNYtsMgCIKoaMgBJNISjUZx1VVX4corr0Q4HMZBBx2EjRs3YtGiRTj33HMxcuRIrFy5Ek888QT23XdfvPTSS3j22Wcz7vOGG27ABRdcgAEDBmDy5Mlob2/He++9l7Yx8g9/+EN0dHRg0aJFTnXtkCFDcOedd2L69Oloa2vDmWeeiWHDhmH16tX4xz/+gdra2rQuJGPSpEmor6/HzTffjBtvvNFz2yWXXILJkydj1KhR2Lp1K958802MHj06j1fOEpjsPqmKXObMmYNDDjmkS67oto63DQwpQIIgiHJADiCRkd/85je4/PLLcf3112P06NE4+eSTsWHDBgDAT37yE1x66aWYPn069txzT7z//vueViepOOuss/DnP/8Z9957L3bbbTccffTR+Oabb9Ju37dvXxx77LF47LHHPH//xS9+gddeew3ff/89jj32WOyyyy4477zzUF9fjyuuuCLr8xJFEVOnToWu6zjzzDM9t+m6jmnTpmH06NE44ogjMGrUKNx7771Z98kzcuRIHHjggdhll12w//77B25/4okncP755+e1z94C5QASBEGUH8GkVvxdpq2tDQ0NDWhtbUV9fb3ntkQigeXLl2P48OGBIgYiPxYuXIgf//jHWLZsWcZ2LPly7rnnYuPGjXj++eeLtk+GaZoYOXIkfvGLX+Cyyy7z3PbKK6/g8ssvx8KFCyHLvc+Ez3bu//Z/X+DRuVaqwH8vGI99hvUp9SESBFHhZFq/K4Xet/oQvY7dd98df/zjH7F8+XKnNUshtLa24vPP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wr8A8nJj995778DfzjvvPMelW79+PV555RWcc845ACxRe/jhh2Ps2LE48cQT8eCDD2Lr1q2e+3/++eeora1FVVUV9ttvP4wfPx533303AEvYHXXUUXj44YcBAC+88AKSySROPPFEzz6qqqoct7dLGNQImiAIotyQA1hCquQqzDttXlketxBCoZDnd0EQPH8TBAEAPOHVKVOm4I9//GNgX4MGDQIATJkyBUOHDsWDDz6IwYMHwzAMjBkzBoqiAAD22msvLF++HK+88gpef/11nHTSSZgwYQL++9//4sYbb8QVV1yR8ZirqjI/5yuuuAKzZs3Cbbfdhp122glVVVU44YQTnMfPd3+p6NevX0CAjRo1Cl999VVO9+fDwYwzzzwTv/71rzF37ly8//77GD58OA455BAAljifNWsW3n//fbz22mv461//imuvvRbz5s3D8OHDAVgO4vPPPw9ZljF48OBAYcl5552HM844A3feeSdmzJiBk08+GdXVXvd4y5Yt6N+/f86vQxDeAaQQMEEQRDkgAVhCBEEoKBS7rbDXXnvh6aefxrBhwyDLwVNs8+bNWLJkCR588EFHvLz77ruB7err63HyySfj5JNPxgknnIAjjjgCW7ZswYABAzBgwICMx7D77rvjoYcewpYtW1K6gO+99x6mTp2KY489FoAlWlesWJFxf6tXr3ZC2Lkwbtw4LF682PO30047Dddccw0+/fTTQB6gqqpQFCWl8GP07dsXxxxzDGbMmIG5c+fi7LPP9twuCAIOOuggHHTQQbj++usxdOhQPPvss7jssssAWK1c+FC4nyOPPBI1NTW47777MHPmTLzzzjuBbb744ouUOYy5Ipi8AKQ2MASBTd8AM38NHPorYIcDyn00RIVAIWCi6EybNg1btmzBqaeeio8++gjLli3Dq6++irPPPhu6rqOpqQl9+/bFAw88gKVLl+KNN95wBArjjjvuwL///W989dVX+Prrr/Gf//wHzc3NaGxszOkYTj31VDQ3N+OYY47Be++9h2+//RZPP/005s6dC8DKr3vmmWewYMECfPbZZzjttNMcBzMVP/jBD3DooYfi+OOPx6xZsxx3cubMmWnvM2nSpICwveSSS3DQQQfh8MMPxz333IPPPvsM3377LZ566ikccMAB+Oabb7I+t/POOw+PPvoovvzyS5x11lnO3+fNm4ff//73+Pjjj7Fy5Uo888wz2LhxI0aPHp11nwxJkjB16lRcffXVGDlyJMaPHx/YZs6cOZg4cWLO+wxgkgNIEB6eOhNY+jrw8KRyHwlRQZAAJIrO4MGD8d5770HXdUycOBFjx47FJZdcgsbGRoiiCFEU8cQTT2D+/PkYM2YMLr30UvzpT3/y7KOurg633nor9tlnH+y7775YsWIFXn75ZYhibqdsOBzGa6+9hgEDBuDII4/E2LFjPVW7d9xxB5qamnDggQdiypQpmDRpEvbaa6+M+3z66aex77774tRTT8Wuu+6KK6+8MuOEj9NPPx2LFi3CkiVLnL9FIhHMmjULV155Jf72t7/hgAMOwL777ou77roLF198McaMGZP1uU2YMAGDBg3CpEmTPEUm9fX1eOedd3DkkUdi1KhRuO6663D77bdj8uTJWffJc+6550JRlIC7CABz585Fa2srTjjhhLz2ySPAzQE0zfSimyAqBaN1dbkPgahABLPQHiEVTFtbGxoaGtDa2or6+nrPbYlEAsuXL8fw4cMDhQBE5fCrX/0KbW1tOTdazoWOjg5st912mDFjBo477rii7ZcxZ84cHH744Vi1apVT4MM4+eSTsccee+Caa65Je/9s5/5zd16EY1r/AQB4a/8HcdjkkwLbEEQl0XbjDqg3Wq1fbmgt78FUCJnW70qBHECC6EauvfZaDB06NGN4OVcMw8CGDRtw0003obGxET/5yU+KcIQuyWQSq1evxg033IATTzwxIP4URcHYsWNx6aWXFvZAnhAwOYAEkTSEch8CUYGQACSIbqSxsRHXXHNNzqHrTKxcuRIDBw7E448/jocffjhlgU0h/Pvf/8bQoUPR0tIS6D8IWGH16667rksV0TwUAiYILzrVYxJlgM46gthGGDZsWMFTXTIxdepUTJ06tdv278CJPhKABAHoSD9RiCC6C3IACYIoKUKaPoCUjkxUKrpAApAoPT1OAN5yyy3Yd999UVdXhwEDBuCYY47xVFECVpL5tGnT0LdvX9TW1uL444/H+vXrPdusXLkSRx11FKqrqzFgwAD86le/gqZ5pw689dZb2GuvvRCJRLDTTjvhkUce6e6nRxAE7/rZou9vby/DPje/jqUbOsp0UARRPgwSgEQZ6HEC8O2338a0adPwwQcfYNasWVBVFRMnTkRnZ6ezzaWXXooXXngB//nP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wNq1a51///73vz23n3766Vi0aBFmzZqFF198Ee+88w5+9rOfObe3tbVh4sSJGDp0KObPn48//elPuOGGG/DAAw902/MiiN6KAE4AZljA/IubACPFAkh90IgKInDBRAKQKA1yuQ8gFZMnT8bkyZMzbhOJRNDc3Jzyti+//BIzZ87ERx99hH322QcA8Ne//hVHHnkkbrvtNgwePBiPPfYYFEXBww8/jHA4jN122w0LFizAHXfc4RGKBEFkRzB9lb1pMHzizl8EAgC6TgKQqCDIASTKRI90AHPhrbfewoABA7DzzjvjwgsvxObNm53b5s6di8bGRkf8AcCECRMgiiLmzZvnbHPooYciHA4720yaNAlLlizB1q1bS/dECKIXwOf9Za4C9glAXw4gABi0ABKVhF8AUg4sUSJ6pAOYjSOOOALHHXcchg8fjmXLluGaa67B5MmTMXfuXEiShHXr1mHAgAGe+8iyjD59+mDdunUAgHXr1mH48OGebQYOHOjc1tTUFHjcZDKJZDLp/N7W1lbsp0YQ2yTeIpAMAs4MhoD9fc9MXSvqsRFEj4ZSIIgysU0KwFNOOcX5eezYsdh9992x44474q233sLhhx/ebY97yy234He/+1237Z8gtlk8bWAyVAEHcgDNwPbUCJeoKMgBJMrENhsC5hkxYgT69euHpUuXAgCam5uxYcMGzzaapmHLli1O3mBzczPWr1/v2Yb9ni638Oqrr0Zra6vzb9WqVcV+KgSxTSLk2Ag6IABNI1A0YlAOIFFJpHDFCaIU9AoBuHr1amzevBmDBg0CAIwfPx4tLS2YP3++s80bb7wBwzCw//77O9u88847UFXV2WbWrFnYeeedU4Z/AavwpL6+3vOPIIjcQ8B+dyNlDmAGB5Egeh1UBEKUiR4pADs6OrBgwQIsWLAAALB8+XIsWLAAK1euREdHB371q1/hgw8+wIoVKzB79mz89Kc/xU477YRJkyYBAEaPHo0jjjgC559/Pj788EO89957mD59Ok455RQMHjwYAHDaaachHA7j3HPPxaJFi/Dkk0/iL3/5Cy677LJyPW2C2GbJVQAGqoBThIAztZEhiF6HvxE0hYCJEtEjBeDHH3+McePGYdy4cQCAyy67DOPGjcP1118PSZKwcOFC/OQnP8GoUaNw7rnnYu+998acOXMQiUScfTz22GPYZZddcPjh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", + "image/png": "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guD6G3PoWPi2vb0dU6ZMwZ///GffvlhB4JQpUzBkyBA8/PDDaGxshK7rGDt2LBKJBADggAMOwKpVq/Daa6/hzTffxBlnnIEJEybgv//9b5efB0HsLNA3L0EQRUXjsk40ykApOIIgZB2G3Zk54IAD8Oyzz2Lo0KGQZf/z3bZtG5YtW4aHH34YRx11FAD4esoCQE1NDc4880yceeaZOO2003Dcccdh+/btvulTBNHboBAwQRBFRdF0+2dDT7MhQaRh2rRp2L59O84++2x8+umnWLlyJV5//XVceOGF0DQN9fX16Nu3Lx566CGsWLECb731lquRPwDceeedeOqpp/D111/jm2++wTPPPIOGhgbU1dWV5kkRRBEhAUgQRFFRNcf1M0AOINE1Ghsb8cEHH0DTNEycOBF77703rrrqKtTV1UEURYiiiJkzZ2L+/PkYO3Ysrr76atx+++2ufVRXV+O2227DQQcdhIMPPhirV6/Gq6++SjNkibKAqoDzgKqICCJ3Hpn7LW555SsAwOe//QH6VAZLvKKdl3RVjgRR7lAVcHroMocgiKLCX3LqdP1JEARREkgAEgRRVPiwLwlAgiCI0kACkCCIosK3/iP9RxAEURpIABIEUVR4148cQIIgiNJAApAgiKLizgEs3ToIgiDKGRKABEEUFb7xADUhIAiCKA0kAAmCKCqUA0gQBFF6SAASBFFUqA0MQRBE6SEBSBBEUXEXgZRwIQRBEGUMCUCCIIoKr/nIASQKxU033YT99tsvr30kEgmMGDECH374YWEWVWJ+9atf4Yorrij1MogeCglAgiCKChWBEAAwdepUnHTSSaVehosHH3wQw4YNw+GHH+76+9tvv43jjz8effv2RUVFBcaMGYNrr70W69ev77a1rF69GoIg2P/69u2LiRMn4osvvsh6Hz//+c/x+OOP49tvv+22dRI7LyQACYIoKhQCJnoihmHg3nvvxcUXX+z6+9///ndMmDABDQ0NePbZZ7F06VI8+OCDaGlpwV/+8pek+9I0DbquF2Rdb775JjZu3IjXX38d7e3tmDx5Mpqbm7O6b79+/TBp0iQ88MADBVkL0bsgAUgQRFExqAqYSIKu67jtttswYsQIhEIh7Lbbbvh//+//2bdfd911GDVqFCoqKjB8+HD89re/haIoaff56KOPYq+99kIoFMKgQYMwffr0lNvOnz8fK1euxAknnGD/bd26dbjyyitx5ZVX4tFHH8X48eMxdOhQHH300XjkkUdw4403AgAee+wx1NXV4cUXX8SYMWMQCoXw/vvvIxAIoKmpyfU4V111FY466igAwHfffYcpU6agvr4elZWV2GuvvfDqq6+6tu/bty8aGhpw0EEH4Y477sCmTZvw8ccf4+abb8bYsWN9z2O//fbDb3/7W/v3KVOmYObMmWlfJ6I8kUu9AIIgygudqoC7F8MAlM7SPHagAhCELt31+uuvx8MPP4y77roLRx55JDZu3Iivv/7avr26uhqPPfYYGhsbsWjRIlx66aWorq7GL3/5y6T7e+CBB3DNNdfgT3/6EyZPnoyWlhZ88MEHKR9/7ty5GDVqFKqrq+2/PfPMM0gkEikfo66uzv65s7MTf/7zn/HII4+gb9++GDx4MIYPH45//etf+MUvfgEAUBQFTzzxBG677TYAwLRp05BIJPDee++hsrISS5cuRVVVVco1RiIRAGau4kUXXYTf//73+PTTT3HwwQcDAL744gssXLgQzz33nH2fQw45BOvWrcPq1asxdOjQlPsmyg8SgARBFBUDNAquW1E6gT82luaxf70BCFbmfLe2tjbcfffduPfee3HBBRcAAHbffXcceeSR9jY33HCD/fPQoUPx85//HDNnzkwpzm655RZce+21+NnPfmb/jQmlZHz33XdobHS/bsuXL0dNTQ0GDRqU8TkoioL7778f++67r/23iy++GDNmzLAF4EsvvYRYLIYzzjgDALBmzRqceuqp2HvvvQEAw4cPT7n/5uZm/OEPf0BVVRUOOeQQDBw4EJMmTcKMGTPs5zVjxgx873vfc+2HPafvvvuOBCDhgkLABEEUFQoBE16++uorxONxHHvssSm3efrpp3HEEUegoaEBVVVVuOGGG7BmzZqk227evBkbNmxIuz8v0WgU4XDY9TfDMCBk6WgGg0Hss88+rr9NnToVK1aswEcffQTADBWfccYZqKw0RfKVV16JW265BUcccQR+97vfYeHChb79Hn744aiqqkJ9fT2+/PJLPP300xg4cCAA4NJLL8VTTz2FWCyGRCKBJ598EhdddJHr/sw17OwskStM9FjIASQIoqjoOjmA3UqgwnTiSvXYXYCJlFTMmzcP5557Ln7/+99j0qRJqK2txcyZM1MWYWTaXzL69euHRYsWuf42atQotLS0YOPGjRldwEgk4hOLAwYMwJQpUzBjxgwMGzYMr732Gt555x379ksuuQSTJk3CK6+8gjfeeAO33nor/vKXv7hatzz99NMYM2YM+vbt6wo5A2Z+XygUwvPPP49gMAhFUXDaaae5ttm+fTsAoH///tm+FESZQA4gQRBFxd0HsGTL6L0IghmGLcW/Lub/jRw5EpFIBHPmzEl6+4cffoghQ4bgN7/5DQ466CCMHDkS3333Xcr9VVdXY+jQoSn3l4z9998fX3/9tas10WmnnYZgMGjn7HnJphr3kksuwdNPP42HHnoIu+++O4444gjX7YMHD8Zll12G5557Dtdeey0efvhh3+277767T/wBgCzLuOCCCzBjxgzMmDEDZ511lk/8Ll68GIFAAHvttVfGtRLlBTmABEEUFXcbGFKABBAOh3Hdddfhl7/8JYLBII444ghs2bIFS5YswcUXX4yRI0dizZo1mDlzJg4++GC88soreP7559Pu86abbsJll12GAQMGYPLkyWhra8MHH3yQsjHyMcccg/b2dixZssSurh08eDDuuusuTJ8+Ha2trTj//PMxdOhQrFu3Dv/85z9RVVWV0oVkTJo0CTU1Nbjllltw8803u2676qqrMHnyZIwaNQo7duzA22+/jT333DOHV84UmOw+yYpc5s6di6OOOqpLrijRuyEHkCCIokI5gEQyfvvb3+Laa6/FjTfeiD333BNnnnkmNm/eDAD44Q9/iKuvvhrTp0/Hfvvthw8//NDV6iQZF1xwAf7617/i/vvvx1577YUTTzwRy5cvT7l93759cfLJJ+OJJ55w/f2nP/0p3njjDaxfvx4nn3wyRo8ejUsuuQQ1NTX4+c9/nvF5iaKIqVOnQtM0nH/++a7bNE3DtGnTsOeee+K4447DqFGjcP/992fcJ8/IkSNx+OGHY/To0Tj00EN9t8+cOROXXnppTvskygPBoFb8Xaa1tRW1tbVoaWlBTU1NqZdDEDsFv/vfYjw+zwzf/feycThoaJ8Sr2jnJRaLYdWqVRg2bJivgIHInYULF+IHP/gBVq5cmbYdS65cfPHF2LJlC1588cWC7ZNhGAZGjhyJn/70p7jmmmtct7322mu49tprsXDhQshy+QX80n0+6PxNIWCCIIqMuw9g6dZBEF722Wcf/PnPf8aqVavs1iz50NLSgkWLFuHJJ5/sFvG3ZcsWzJw5E01NTbjwwgt9t3d0dGDGjBllKf6IzNBRQRBEUaE+gERPZurUqQXb149+9CN88sknuOyyy/CDH/ygYPtlDBgwAP369cNDDz2E+vp63+3eimCC4CEBSBBEURG1OB4I3IX39H2gG/6cJYLoLfAtX7oDyuAi8oGKQAiCKCp773gTk6VPcWvgH1QEQhAEUSJIABIEUVz4NjC6VsKFEARBlC8kAAmCKCpR0ZkVKyQ6SrgSgiCI8oUEIEEQRYYvA1ZLtwyCIIgyhgQgQRBFxZX3RyFggiCIkkACkCCIoiLqiv2zQQ4gQRBESSABSBBEURENR/QZ5AASREZWr14NQRCwYMGCvPbz29/+Fj/+8Y8Ls6gSs3TpUuy6667o6KA84q5CApAgiKIiGo4DCM4NJMqLqVOn4qSTTir1MrqFd955B4IgoLm5udRLsWlqasLdd9+N3/zmN76/X3HFFRg+fDhCoRAGDx6MKVOmYM6cOd26nvHjx0MQBAiCgHA4jDFjxuQ0B3nMmDE47LDDcOedd3bjKns3JAAJgigqEu/6aRQCJohi8Mgjj+Dwww/HkCFD7L+tXr0aBx54IN566y3cfvvtWLRoEWbNmoVjjjkG06ZNS7kvRSnMhdull16KjRs3YunSpTjjjDMwbdo0PPXUU1nf/8ILL8QDDzwAVaXvka5AApAgiKIiGHwOIIWACZPx48fjiiuuwFVXXYX6+noMHDgQDz/8MDo6OnDhhReiuroaI0aMwGuvvea63+LFizF58mRUVVVh4MCBOO+887B161b79lmzZuHII49EXV0d+vbtixNPPBErV660b08kEpg+fToGDRqEcDiMIUOG4NZbby348/vggw8wfvx4VFRUoL6+HpMmTcKOHTuyWmMylixZghNPPBE1NTWorq7GUUcdlfY+M2fOxJQpU1x/++lPfwpBEPDJJ5/g1FNPxahRo7DXXnvhmmuuwUcffWRvJwgCHnjgAfzwhz9EZWUlbrnlFowYMQJ33HGHa38LFiyAIAhYsWIFDMPATTfdhN122w2hUAiNjY248sorXdtXVFSgoaEBw4cPx0033YSRI0fixRdfxOrVqyGKIj777DPX9n/9618xZMgQ6LoOAPjBD36A7du349133037WhHJIQFIEERREQ1O9JEALDiGYaBT6SzJv3xHkz3++OPo168fPvnkE1xxxRW4/PLLcfrpp+Pwww/H559/jokTJ+K8885DZ2cnAKC5uRnf//73sf/+++Ozzz7DrFmzsGnTJpxxxhn2Pjs6OnDNNdfgs88+w5w5cyCKIk4++WRbRNxzzz148cUX8Z///AfLli3DE088gaFDh+b1PLwsWLAAxx57LMaMGYN58+bh/fffx5QpU6BpWlZr9LJ+/XocffTRCIVCeOuttzB//nxcdNFFKZ2w7du3Y+nSpTjooINcf5s1axamTZuGyspK333q6upcv9900004+eSTsWjRIlx88cW46KKLMGPGDNc2M2bMwNFHH40RI0bg2WefxV133YW///3vWL58OV544QXsvffeaV+nSCSCRCKBoUOHYsKECUn3P3XqVIiiKV2CwSD2228/zJ07N+1+ieTQLGCCIIqKAO6kRlXABSeqRnHok6WZsfzxOR+jIlDR5fvvu+++uOGGGwAA119/Pf70pz+hX79+uPTSSwEAN954Ix544AEsXLgQhx12GO69917sv//++OMf/2jv49FHH8XgwYPxzTffYNSoUTj11FNdj/Hoo4+if//+WLp0KcaOHYs1a9Zg5MiROPLIIyEIgitEWihuu+02HHTQQa4ct7322sv+OdMavdx3332ora3FzJkzEQgEAACjRo1K+fhr1qyBYRhobGy0/8ZcutGjR2f1HM455xxceOGF9u9Tp07FjTfeiE8++QSHHHIIFEXBk08+abuCa9asQUNDAyZMmIBAIIDddtsNhxxySNJ9a5qGp556CgsXLrSLVC655BJcdtlluPPOOxEKhfD5559j0aJF+N///ue6b2NjI7777rusngPhhhxAgiCKi06NoInk7LPPPvbPkiShb9++Ltdo4MCBAIDNmzcDAL788ku8/fbbqKqqsv8xQcPCocuXL8fZZ5+N4cOHo6amxnb31qxZA8AUMgsWLMAee+yBK6+8Em+88UbK9c2dO9f1WE888URWz4s5gKnItMZk+zvqqKNs8ZeJaDQKAAiHw/bfcnVrefcQMIXXCSecgEcffRQA8NJLLyEej+P0008HAJx++umIRqMYPnw4Lr30Ujz//PM+h/L+++9HVVUVIpEILr30Ulx99dW4/PLLAQAnnXQSJEnC888/DwB47LHHcMwxx/jc2UgkYjvCRG6QA0gQRJHhHUAKAReaiBzBx+d8XLLHzgevoBEEwfU3QRAAwA6Ntre3Y8qUKfjzn//s29egQYMAAFOmTMGQIUPw8MMPo7GxEbquY+zYsUgkEgCAAw44AKtWrcJrr72GN998E2eccQYmTJiA//73v759HnTQQa5WLEyQZiISSf+6ZFpjrvvz0q9fPwDAjh070L9/fwDAyJEjIQgCvv7666z2kSxMfMkll+C8887DXXfdhRkzZuDMM89ERYXpAA8ePBjLli3Dm2++idmzZ+OnP/0pbr/9drz77rv2e3ruuefiN7/5DSKRCAYNGmSHdgEzvHv++edjxowZOOWUU/Dkk0/i7rvv9q1h+/bt2H333XN6PQgTEoAEQRQVweAFILWBKTSCIOQVht2ZOOCAA/Dss89i6NChkGX/6Wzbtm1YtmwZHn74YRx11FEAgPfff9+3XU1NDc4880yceeaZOO2003Dcccdh+/bt6NOnj2u7SCSCESNG5LzOffbZB3PmzMHvf//71Gu843c46shDgVBV0jV69/f4449DUZSsXMDdd98dNTU1WLp0qR0q7tOnDyZNmoT77rsPV155pU/gNTc3+/IAvRx//PGorKzEAw88gFmzZuG9995z3R6JRDBlyhRMmTIF06ZNw+jRo7Fo0SIccMABAIDa2tq0r+cll1yCsWPH4v7774eqqjjllFN82yxevBinnXZaxteA8EMhYIIgiotBDiBRGKZNm4bt27fj7LPPxqeffoqVK1fi9ddfx4UXXghN01BfX4++ffvioYcewooVK/DWW2/hmmuuce3jzjvvxFNPPYWvv/4a33zzDZ555hk0NDRkFD+5cP311+PTTz/FT3/6UyxcuBBff/01HnjgAWzdutVcY586PDTj31jx2Zyka/Qyffp0tLa24qyzzsJnn32G5cuX41//+heWLVuWdHtRFDFhwgSfsLzvvvugaRoOOeQQPPvss1i+fDm++uor3HPPPRg3blzG5yVJEqZOnYrrr78eI0eOdN3nsccewz/+8Q8sXrwY3377Lf79738jEonklGO555574rDDDsN1112Hs88+2+d8rl69GuvXr8eECROy3ifhQAKQIIiiIsDJPTKM5FWOBJENjY2N+OCDD6BpGiZOnIi9994bV111Ferq6iCKIkRRxMyZMzF//nyMHTsWV199NW6//XbXPqqrq+0ijYMPPhirV6/Gq6++6gpH5suoUaPwxhtv4Msvv8QhhxyCcePG4X//+x9kWYYoinjq/j9j/qKvMPbYM5Ku0Uvfvn3x1ltvob29Hd/73vdw4IEH4uGHH07rBl5yySWYOXOmq7J4+PDh+Pzzz3HMMcfg2muvxdixY/GDH/wAc+bMwQMPPJDVc7v44ouRSCRcBSKAWUX88MMP44gjjsA+++yDN998Ey+99BL69u2b1X69+7/ooot8tz311FOYOHFitxTulAOCkW/dfhnT2tqK2tpatLS0oKamptTLIYidghfuugIntfwTAPDOoQ9j/OQzMtyDSEUsFsOqVaswbNgwV4I/sXOhbVgICZYb3rh/tzyGYRg49NBDcfXVV+Pss88u2H7nzp2LY489FmvXrs06JzIX/vCHP+CZZ57BwoULXX9PJBIYOXIknnzySRxxxBFJ75vu80Hnb3IACYIoNq4QMDmABFGMT4EgCHjooYcKNjUjHo9j3bp1uOmmm3D66acXXPy1t7dj8eLFuPfee3HFFVf4bl+zZg1+/etfpxR/RGZIABIEUVQoBEwQXoSiPMp+++2H8847ryD7euqppzBkyBA0NzfjtttuK8g+eaZPn44DDzwQ48ePTxr+HTFiBH7yk58U/HHLCRKABEEUF070kQAkCGBnzMOaOnUqNE3D/PnzscsuuxR8/4899hji8TiefvppSJJU8P0TJAAJgigyQoo+gJSOTJQrRpEcQILg6XEC8NZbb8XBBx+M6upqDBgwACeddJKvtD0Wi2HatGno27cvqqqqcOqpp2LTpk2ubdasWYMTTjgBFRUVGDBgAH7xi1/4ch/eeecdHHDAAQiFQhgxYgQee+yx7n56BEHwrp8l+v7+7kocdMubWLG5vUSLIohSQgKQKD49TgC+++67mDZtGj766CPMnj0biqJg4sSJ6OjosLe5+uqr8dJLL+GZZ57Bu+++iw0bNrgaRGqahhNOOAGJRAIffvghHn/8cTz22GO48cYb7W1WrVqFE044AccccwwWLFiAq666Cpdccglef/31oj5fgig3BFcI2HQAb33ta2zrSODqpxeUaFU7N+SeEoQf+lykp8dNApk1a5br98ceewwDBgzA/PnzcfTRR6OlpQX/+Mc/8OSTT+L73/8+AGDGjBnYc8898dFHH+Gwww7DG2+8gaVLl+LNN9/EwIEDsd9+++EPf/gDrrvuOtx0000IBoN48MEHMWzYMPzlL38BYDac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", "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] @@ -2986,7 +795,7 @@ "%matplotlib widget\n", "plt.plot(meas_x, meas_y, label='Imeas')\n", "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, meas_y-calc_y_cryspy, label='Imeas-Icalc (CrysPy)')\n", + "plt.plot(meas_x, meas_y-calc_y_cryspy, label='Imeas - Icalc (CrysPy)')\n", "plt.legend()" ] }, @@ -2999,7 +808,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -3016,7 +825,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -3025,7 +834,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -3051,23 +860,23 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 29, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9c823b646db14db39ee23e6409955f84", + "model_id": "009219b8d65d4a64905f0772a2d269a4", "version_major": 2, "version_minor": 0 }, @@ -3099,7 +908,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -3109,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -3156,7 +965,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 34, @@ -3166,7 +975,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "51aca60efaf04679808a0e9cf4f610e6", + "model_id": "85a3e2cef709405cb5380da0257eb361", "version_major": 2, "version_minor": 0 }, @@ -3204,7 +1013,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 35, @@ -3214,7 +1023,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5504ea2dcb464128b0c538e3c9e7b606", + "model_id": "ae28c78d7ec547f2a7da827d7974af3e", "version_major": 2, "version_minor": 0 }, From d16ddb33caa08ea69c76d4d5a5aa5560672d5288 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 28 Sep 2021 11:02:32 +0200 Subject: [PATCH 189/312] A bit better README --- README.md | 47 ++++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 234a65a0..f9fdc86e 100644 --- a/README.md +++ b/README.md @@ -7,27 +7,20 @@ **easyDiffractionLib** is the foundation of the *easyScience* universe, providing the building blocks for libraries and applications which aim to make scientific data simulation and analysis easier. -## Install - -**easyDiffractionLib** can be downloaded using pip: - -```pip install easysciencecore``` - -Or direct from the repository: - -```pip install https://github.com/easyScience/easyDiffractionLib``` - ## Getting Started +**Currently easyDiffractionLib is in alpha and has not been released on pypi. Please use one of the alternative methods.** + ### Download easyDiffractionLib repo * Open **Terminal** * Change the current working directory to the location where you want the **easyDiffractionLib** directory -* Clone **easyDiffractionApp** repo from GitHub using **git** +* Clone **easyDiffractionLib** repo from GitHub using **git** ``` - git clone https://github.com/easyScience/easyDiffractionApp + git clone https://github.com/easyScience/easyDiffractionLib ``` - -### Install easyDiffractionLib dependencies +* Or extract [this zip file](https://github.com/easyScience/easyDiffractionLib/archive/refs/heads/main.zip) + +### Install easyDiffractionLib dependencies (Using poetry) * Open **Terminal** * Install [**Poetry**](https://python-poetry.org/docs/) (Python dependency manager) * osx / linux / bashonwindows @@ -39,11 +32,31 @@ Or direct from the repository: (Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python ``` * Go to **easyDiffractionLib** directory -* Create virtual environment for **easyDiffractionLib** and install its dependences using **poetry** (configuration file: **pyproject.toml**) +* Create virtual environment for **easyDiffractionLib** and install its dependencies using **poetry** (configuration file: **pyproject.toml**) ``` poetry install ``` - + +### Install easyDiffractionLib dependencies (Using requirements.txt) +* Open **Terminal** +* Activate any environment which you may want to use +* Go to **easyDiffractionLib** directory +* Install via + ``` + pip install -r requirements.txt + ``` + + +### Using pip + +Currently, **easyDiffractionLib** can be installed via pointing pip to this repository: +``` +pip install https://github.com/easyScience/easyDiffractionLib +``` + + +## Examples + ### Run Jupyter Notebook examples that use easyDiffractionLib * Open **Terminal** * Go to **easyDiffractionLib** directory @@ -61,7 +74,7 @@ Or direct from the repository: ## Test -After installation, launch the test suite: +The installation can be verified by running the test suite: ```python -m pytest``` From 0fb59471afbfdb1a78034292c569548200bc7338 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 28 Sep 2021 11:09:05 +0200 Subject: [PATCH 190/312] Add contributing details --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8b137891..7030bda2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1 +1,3 @@ +## Contributing +We absolutely welcome contributions. **easyDiffractionLib** is maintained by the ESS and on a volunteer basis and thus we need to foster a community that can support user questions and develop new features to make this software a useful tool for all users while encouraging every member of the community to share their ideas. From 3c080407a7cf6c681bbbf1f34e6deb8346c00b86 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 28 Sep 2021 14:27:28 +0200 Subject: [PATCH 191/312] Start with tests --- pyproject.toml | 30 ++++++------ requirements.txt | 4 +- tests/test_resources/cifs/PbSO4.cif | 24 ++++++++++ tests/test_resources/cifs/SrTiO3.cif | 68 ++++++++++++++++++++++++++++ tests/unit_tests/test_sample.py | 9 +++- 5 files changed, 114 insertions(+), 21 deletions(-) create mode 100644 tests/test_resources/cifs/PbSO4.cif create mode 100644 tests/test_resources/cifs/SrTiO3.cif diff --git a/pyproject.toml b/pyproject.toml index e042439e..e9528b44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,6 +4,13 @@ requires = ["poetry>=1.0"] build-backend = "poetry.masonry.api" +[tool.coverage.run] +source = ['easyDiffractionLib'] + +[tool.github.info] +organization = 'easyScience' +repo = 'easyDiffractionLib' + [tool.poetry] name = "easyDiffractionLib" version = "0.0.2" @@ -23,16 +30,8 @@ classifiers = [ include = ["CHANGELOG.md"] packages = [ { include = "easyDiffractionLib" } ] -[[tool.poetry.source]] -name = "easyScience" -url = "https://easyscience.github.io/pypi/" -secondary = true - [tool.poetry.dependencies] python = "^3.7, <3.9" -matplotlib = "^3.4" -py3Dmol = "^1.7.0" -# easyScience cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } CFML = '^0.0.1' GSASII = '^0.0.1' @@ -45,18 +44,16 @@ requests = '^2.24' hvplot = "^0.7.0" jupyter = "^1.0.0" ipympl = "^0.8.0" - -[tool.coverage.run] -source = ['easyDiffractionLib'] - -[tool.github.info] -organization = 'easyScience' -repo = 'easyDiffractionLib' +matplotlib = "^3.4" +py3Dmol = "^1.7.0" [tool.poetry.scripts] easyDiffractionLib = "easyDiffractionLib.main:main" -# CUSTOM CONFIG +[[tool.poetry.source]] +name = "easyScience" +url = "https://easyscience.github.io/pypi/" +secondary = true [tool.tox] legacy_tox_ini = """ @@ -90,4 +87,3 @@ commands = poetry install -vvv poetry run pytest --cov --cov-report=xml """ - diff --git a/requirements.txt b/requirements.txt index 0af28cd3..4b0294cf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ cycler==0.10.0; python_version >= "3.7" easysciencecore @ git+https://github.com/easyScience/easyCore.git@develop ; python_version >= "3.7" and python_version < "4.0" future==0.18.2; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.3.0" gsasii==0.0.1 -importlib-metadata==4.6.4; python_version >= "3.7" and python_version < "3.8" +importlib-metadata==4.7.0; python_version >= "3.7" and python_version < "3.8" kiwisolver==1.3.1; python_version >= "3.7" lmfit==1.0.2; python_version >= "3.7" and python_version < "4.0" matplotlib==3.4.3; python_version >= "3.7" @@ -22,7 +22,7 @@ pyparsing==2.4.7; python_version >= "3.7" and python_full_version < "3.0.0" and python-dateutil==2.8.2; python_full_version >= "3.6.1" and python_version >= "3.7" and python_version < "4.0" pytz==2021.1; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.6.1" scipy==1.7.1; python_version >= "3.7" and python_version < "3.10" -six==1.16.0; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.3.0" and python_version >= "3.7" and python_version < "4.0" +six==1.16.0; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.3.0" typing-extensions==3.10.0.0; python_version >= "3.7" and python_version < "3.8" uncertainties==3.1.6; python_version >= "3.7" and python_version < "4.0" xarray==0.19.0; python_version >= "3.7" and python_version < "4.0" diff --git a/tests/test_resources/cifs/PbSO4.cif b/tests/test_resources/cifs/PbSO4.cif new file mode 100644 index 00000000..4e7ad534 --- /dev/null +++ b/tests/test_resources/cifs/PbSO4.cif @@ -0,0 +1,24 @@ +data_PbSO4 + +_cell_length_a 8.48 +_cell_length_b 5.398 +_cell_length_c 6.958 +_cell_angle_alpha 90.0 +_cell_angle_beta 90.0 +_cell_angle_gamma 90.0 +_space_group_name_H-M_alt 'P n m a' + +loop_ + _atom_site_label + _atom_site_type_symbol + _atom_site_occupancy + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_adp_type + _atom_site_U_iso_or_equiv + Pb Pb 1.0 0.1882 0.25 0.167 Uiso 0.01 + S S 1.0 0.063 0.25 0.686 Uiso 0.01 + O1 O 1.0 -0.095 0.25 0.6 Uiso 0.01 + O2 O 1.0 0.181 0.25 0.543 Uiso 0.01 + O3 O 1.0 0.085 0.026 0.806 Uiso 0.01 diff --git a/tests/test_resources/cifs/SrTiO3.cif b/tests/test_resources/cifs/SrTiO3.cif new file mode 100644 index 00000000..4578b508 --- /dev/null +++ b/tests/test_resources/cifs/SrTiO3.cif @@ -0,0 +1,68 @@ +#------------------------------------------------------------------------------ +#$Date: 2016-02-16 14:49:47 +0200 (Tue, 16 Feb 2016) $ +#$Revision: 176465 $ +#$URL: file:///home/coder/svn-repositories/cod/cif/9/00/28/9002806.cif $ +#------------------------------------------------------------------------------ +# +# This file is available in the Crystallography Open Database (COD), +# http://www.crystallography.net/. The original data for this entry +# were provided the American Mineralogist Crystal Structure Database, +# http://rruff.geo.arizona.edu/AMS/amcsd.php +# +# The file may be used within the scientific community so long as +# proper attribution is given to the journal article from which the +# data were obtained. +# +data_9002806 +loop_ +_publ_author_name +'Yamanaka, T.' +'Hirai, M.' +'Komatsu, Y.' +_publ_section_title +; + Structure change of Ca1-xSrxTiO3 perovskite with composition and pressure + Sample: SrTiO3, x = 1.0 +; +_journal_name_full 'American Mineralogist' +_journal_page_first 1183 +_journal_page_last 1189 +_journal_volume 87 +_journal_year 2002 +_chemical_formula_sum 'O3 Sr Ti' +_chemical_name_mineral Tausonite +_space_group_IT_number 62 +_symmetry_space_group_name_Hall '-P 2c 2ab' +_symmetry_space_group_name_H-M 'P b n m' +_cell_angle_alpha 90 +_cell_angle_beta 90 +_cell_angle_gamma 90 +_cell_length_a 5.5202 +_cell_length_b 5.5202 +_cell_length_c 7.8067 +_cell_volume 237.891 +_exptl_crystal_density_diffrn 5.123 +_cod_original_cell_volume 237.890 +_cod_original_formula_sum 'Sr Ti O3' +_cod_database_code 9002806 +loop_ +_symmetry_equiv_pos_as_xyz +x,y,z +x,y,1/2-z +-x,-y,1/2+z +1/2+x,1/2-y,1/2+z +1/2-x,1/2+y,1/2-z +1/2-x,1/2+y,z +1/2+x,1/2-y,-z +-x,-y,-z +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +_atom_site_U_iso_or_equiv +Sr Sr 0.00000 0.00000 0.25000 0.00608 +Ti Ti 0.50000 0.00000 0.00000 0.00507 +O1 O 0.00000 0.50000 0.25000 0.01646 +O2 O 0.75000 0.25000 0.00000 0.02026 diff --git a/tests/unit_tests/test_sample.py b/tests/unit_tests/test_sample.py index 505728ea..5e49c8a0 100644 --- a/tests/unit_tests/test_sample.py +++ b/tests/unit_tests/test_sample.py @@ -1,5 +1,10 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.0.1' +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +import os + +CIF_DIRECTORY = os.path.join("tests", "test_resources", "cifs") +AVAILABLE_PHASES = os.listdir(CIF_DIRECTORY) def test_get_phase(): From aaf6727ad3c97421f7f3ea43d11b868d74296cea Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 28 Sep 2021 14:39:31 +0200 Subject: [PATCH 192/312] Delete setup.py --- setup.py | 41 ----------------------------------------- 1 file changed, 41 deletions(-) delete mode 100644 setup.py diff --git a/setup.py b/setup.py deleted file mode 100644 index 8e2a90aa..00000000 --- a/setup.py +++ /dev/null @@ -1,41 +0,0 @@ - -# -*- coding: utf-8 -*- - -# DO NOT EDIT THIS FILE! -# This file has been autogenerated by dephell <3 -# https://github.com/dephell/dephell - -try: - from setuptools import setup -except ImportError: - from distutils.core import setup - - -import os.path - -readme = '' -here = os.path.abspath(os.path.dirname(__file__)) -readme_path = os.path.join(here, 'README.rst') -if os.path.exists(readme_path): - with open(readme_path, 'rb') as stream: - readme = stream.read().decode('utf8') - - -setup( - long_description=readme, - name='easyDiffractionLib', - version='0.0.1', - description='Making diffraction data analysis and modelling easy.', - python_requires='<3.8,==3.*,>=3.7.0', - project_urls={"documentation": "https://github.com/easyScience/easyDiffractionLib", "homepage": "https://github.com/easyScience/easyDiffractionLib"}, - author='Andrew Sazonov', - maintainer='Simon Ward', - license='GPL-3.0-only', - entry_points={"console_scripts": ["easyDiffractionLib = easyDiffractionLib.main:main"]}, - packages=['easyDiffractionLib', 'easyDiffractionLib.Calculators', 'easyDiffractionLib.Elements', 'easyDiffractionLib.Elements.Backgrounds', 'easyDiffractionLib.Elements.Experiments', 'easyDiffractionLib.Interfaces'], - package_dir={"": "."}, - package_data={}, - install_requires=['cryspy==0.*,>=0.4.11', 'easycore', 'libsdarwin; sys_platform == "darwin"', 'libslinux; sys_platform == "linux"', 'libswin32; sys_platform == "win32"'], - dependency_links=['git+https://github.com/easyScience/easyCore.git@xarray#egg=easycore', 'git+https://github.com/easyScience/libsDarwin.git@main#egg=libsdarwin', 'git+https://github.com/easyScience/libsLinux.git@main#egg=libslinux', 'git+https://github.com/easyScience/libsWin32.git@main#egg=libswin32'], - extras_require={"dev": ["hvplot==0.*,>=0.7.0", "jupyter==1.*,>=1.0.0", "pytest==5.*,>=5.2.0", "requests==2.*,>=2.24.0", "toml==0.*,>=0.10.0"]}, -) From febe16c991774e53f97ace12694d00770d97e753 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 28 Sep 2021 16:19:25 +0200 Subject: [PATCH 193/312] Update README.md --- README.md | 86 +++++++++++++++++++------------------------------------ 1 file changed, 30 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index f9fdc86e..c2224ca2 100644 --- a/README.md +++ b/README.md @@ -1,88 +1,62 @@ -# [![License][50]][51] [![Release][32]][33] [![Downloads][70]][71] [![CI Build][20]][21] +## [![Downloads][70]][71] [![Lines of code][81]](<>) [![Total lines][80]](<>) [![Files][82]](<>) [![License][50]][51] -[![CodeFactor][83]][84] [![Lines of code][81]](<>) [![Total lines][80]](<>) [![Files][82]](<>) + - +**easydiffractionLib** is a Python library for modelling and analysis of diffraction data, a base of the [**easyDiffraction**](https://easydiffraction.org) -**easyDiffractionLib** is the foundation of the *easyScience* universe, providing the building blocks for libraries and applications which aim to make scientific data simulation and analysis easier. ## Getting Started -**Currently easyDiffractionLib is in alpha and has not been released on pypi. Please use one of the alternative methods.** +### Install easyDiffractionLib -### Download easyDiffractionLib repo -* Open **Terminal** -* Change the current working directory to the location where you want the **easyDiffractionLib** directory -* Clone **easyDiffractionLib** repo from GitHub using **git** +Currently **easyDiffractionLib** is in **alpha** and has not been released on **pypi**. Please use the alternative method given below to install **easyDiffractionLib** from the [GitHub repo](https://github.com/easyScience/easyDiffractionLib) using our [custom Python Package Index](https://easyscience.github.io/pypi) for some dependencies, such as CrysFML and GSAS-II. + +* Create and go to, e.g., **easyDiffraction** (*optional*) ``` - git clone https://github.com/easyScience/easyDiffractionLib + mkdir easyDiffraction && cd easyDiffraction ``` -* Or extract [this zip file](https://github.com/easyScience/easyDiffractionLib/archive/refs/heads/main.zip) - -### Install easyDiffractionLib dependencies (Using poetry) -* Open **Terminal** -* Install [**Poetry**](https://python-poetry.org/docs/) (Python dependency manager) - * osx / linux / bashonwindows - ``` - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - ``` - * windows powershell - ``` - (Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python - ``` -* Go to **easyDiffractionLib** directory -* Create virtual environment for **easyDiffractionLib** and install its dependencies using **poetry** (configuration file: **pyproject.toml**) +* Create virtual environment and activate it (*optional*) ``` - poetry install + python -m venv .venv + source .venv/bin/activate ``` - -### Install easyDiffractionLib dependencies (Using requirements.txt) -* Open **Terminal** -* Activate any environment which you may want to use -* Go to **easyDiffractionLib** directory -* Install via +* Upgrade pip (*optional*) ``` - pip install -r requirements.txt + pip install --upgrade pip + ``` +* Install **easyDiffractionLib** + ``` + pip install git+https://github.com/easyScience/easyDiffractionLib@more_notebooks --extra-index-url https://easyscience.github.io/pypi ``` - - -### Using pip - -Currently, **easyDiffractionLib** can be installed via pointing pip to this repository: -``` -pip install https://github.com/easyScience/easyDiffractionLib -``` ## Examples -### Run Jupyter Notebook examples that use easyDiffractionLib -* Open **Terminal** -* Go to **easyDiffractionLib** directory +### Jupyter Notebook examples that use easyDiffractionLib + +* Install **easyDiffractionLib** as described above +* Install Jupyter Notebook and visualization libraries, such as matplotlib and py3Dmol + ``` + pip install jupyter notebook ipympl matplotlib py3Dmol + ``` +* Download **easyDiffractionLib** Jupyter Notebook [examples](https://github.com/easyScience/easyDiffractionLib/tree/more_notebooks/examples) from GitHub, e.g., using svn + ``` + svn export https://github.com/easyScience/easyDiffractionLib/branches/more_notebooks/examples + ``` * Run Jupyter Notebook server ``` - poetry run jupyter notebook + jupyter notebook examples/ ``` * In webbrowser open ``` http://localhost:8888/ ``` -* Go to *examples* directory * Select one of the *.ipynb files - -## Test - -The installation can be verified by running the test suite: - -```python -m pytest``` - ## Documentation -Documentation can be found at: - -[https://easyScience.github.io/easyDiffractionLib](https://easyScience.github.io/easyDiffractionLib) +Documentation can be found at: [https://easyScience.github.io/easyDiffractionLib](https://easyScience.github.io/easyDiffractionLib) ## Contributing We absolutely welcome contributions. **easyDiffractionLib** is maintained by the ESS and on a volunteer basis and thus we need to foster a community that can support user questions and develop new features to make this software a useful tool for all users while encouraging every member of the community to share their ideas. From 9133c6d98f9eefaa7f7f3c24f826c50a276d7206 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 28 Sep 2021 17:07:43 +0200 Subject: [PATCH 194/312] Update both `simulation` and `fitting` examples --- examples/CreateSample.ipynb | 370 --- .../{FittingPdCw1d.ipynb => Fitting.ipynb} | 103 +- examples/Simulation.ipynb | 2528 +++++++++++++++++ 3 files changed, 2580 insertions(+), 421 deletions(-) delete mode 100644 examples/CreateSample.ipynb rename examples/{FittingPdCw1d.ipynb => Fitting.ipynb} (86%) create mode 100644 examples/Simulation.ipynb diff --git a/examples/CreateSample.ipynb b/examples/CreateSample.ipynb deleted file mode 100644 index c966195b..00000000 --- a/examples/CreateSample.ipynb +++ /dev/null @@ -1,370 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "8a365a14", - "metadata": {}, - "source": [ - "# Creating sample\n", - "\n", - "This notebook shows how we can create a sample from atoms and calculate diffraction profiles using both constant wavelength and time-of-flight experiment types." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9ecc4733", - "metadata": {}, - "outputs": [], - "source": [ - "from easyCore import np\n", - "from easyDiffractionLib.sample import Sample\n", - "from easyDiffractionLib import Site, Phase, Phases\n", - "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", - "\n", - "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", - "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", - "from easyDiffractionLib.Profiles.P1D import Instrument1DTOFParameters as TOFParams\n", - "from easyDiffractionLib.Profiles.P1D import Powder1DParameters\n", - "\n", - "from easyCore.Fitting.Fitting import Fitter\n", - "\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "id": "283767f9", - "metadata": {}, - "source": [ - "**Preparing the sample and data**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1ed88f8e", - "metadata": {}, - "outputs": [], - "source": [ - "calculator = Calculator()\n", - "calculator.switch('CrysPy') # this is the default" - ] - }, - { - "cell_type": "markdown", - "id": "19a39b25", - "metadata": {}, - "source": [ - "Create an atom using `Site` interface" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "41020330", - "metadata": {}, - "outputs": [], - "source": [ - "atom = Site.from_pars(label=\"Cl1\",\n", - " specie='Cl',\n", - " fract_x=0.0,\n", - " fract_y=0.0,\n", - " fract_z=0.0)" - ] - }, - { - "cell_type": "markdown", - "id": "910aed87", - "metadata": {}, - "source": [ - "Create a phase" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1e2f3193", - "metadata": {}, - "outputs": [], - "source": [ - "phase = Phase(name=\"salt\")\n", - "\n", - "# set the space group\n", - "phase.spacegroup.space_group_HM_name = \"F m -3 m\"\n", - "\n", - "# add the atom\n", - "phase.add_atom(atom)" - ] - }, - { - "cell_type": "markdown", - "id": "d4532d8b", - "metadata": {}, - "source": [ - "Add another atom (using `Phase` interface)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4231d16a", - "metadata": {}, - "outputs": [], - "source": [ - "phase.add_atom('Na1', 'Na', 0.5, 0.5, 0.5)" - ] - }, - { - "cell_type": "markdown", - "id": "81ace320", - "metadata": {}, - "source": [ - "Visualise the structure" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e68ddbea", - "metadata": {}, - "outputs": [], - "source": [ - "import py3Dmol\n", - "viewer = py3Dmol.view()\n", - "viewer.addModel(phase.to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", - "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", - "viewer.addUnitCell()\n", - "viewer.replicateUnitCell(2,2,2)\n", - "#viewer.setStyle({'sym':2},{'sphere':{'scale':.5,'color':'blue'},'stick':{'color':'cyan'}})\n", - "viewer.zoomTo()" - ] - }, - { - "cell_type": "markdown", - "id": "ebe0e0ee", - "metadata": {}, - "source": [ - "Create Phases object" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "29071aa2", - "metadata": {}, - "outputs": [], - "source": [ - "phases = Phases()\n", - "phases.append(phase)" - ] - }, - { - "cell_type": "markdown", - "id": "e93c42b9", - "metadata": {}, - "source": [ - "Create and modify a Parameters object" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "83e3845f", - "metadata": {}, - "outputs": [], - "source": [ - "parameters = CWParams.default()\n", - "\n", - "parameters.length_a = 5.6402\n", - "parameters.resolution_u = 0.1447\n", - "parameters.resolution_v = -0.4252\n", - "parameters.resolution_w = 0.3864\n", - "parameters.resolution_x = 0.0\n", - "parameters.resolution_y = 0.0" - ] - }, - { - "cell_type": "markdown", - "id": "370f0baa", - "metadata": {}, - "source": [ - "Create and modify a Pattern object" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "70fa1571", - "metadata": {}, - "outputs": [], - "source": [ - "pattern = Powder1DParameters.default()\n", - "pattern.zero_shift = 0.0\n", - "pattern.scale = 100.0" - ] - }, - { - "cell_type": "markdown", - "id": "42da041a", - "metadata": {}, - "source": [ - "Finally, create the Sample" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c90662f7", - "metadata": {}, - "outputs": [], - "source": [ - "S = Sample(phases=phases, parameters=parameters, calculator=calculator)" - ] - }, - { - "cell_type": "markdown", - "id": "00e24eab", - "metadata": {}, - "source": [ - "Calculate the profile - using the calculator we defined previously.\n", - "Note that we don't run anything on the `Sample` object but on a separate `Calculator` instance" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "398bbb91", - "metadata": {}, - "outputs": [], - "source": [ - "x_data = np.linspace(1, 120, 500)\n", - "y_data = calculator.fit_func(x_data)\n", - "\n", - "%matplotlib notebook\n", - "plt.plot(x_data, y_data, label='CW Simulation')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "id": "cee54608", - "metadata": {}, - "source": [ - "## Switch to TOF" - ] - }, - { - "cell_type": "markdown", - "id": "ea998649", - "metadata": {}, - "source": [ - "Retrieve the phases and pattern" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eedade0f", - "metadata": {}, - "outputs": [], - "source": [ - "phases = S.phases[0]\n", - "pattern = S.pattern" - ] - }, - { - "cell_type": "markdown", - "id": "161efebd", - "metadata": {}, - "source": [ - "Modify the parameters to correspond to a TOF experiment" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "59381e83", - "metadata": {}, - "outputs": [], - "source": [ - "parameters = TOFParams.default()\n", - "parameters.length_a = 5.6402\n", - "parameters.dtt1 = 6167.24700\n", - "parameters.dtt2 = -2.28000\n", - "parameters.ttheta_bank = 145.00" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2aa1648d", - "metadata": {}, - "outputs": [], - "source": [ - "pattern.zero_shift = 0.0\n", - "pattern.scale = 100.0\n", - "\n", - "tof_str = 'Npowder1DTOF'\n", - "interfaces = calculator.interface_compatability(tof_str)\n", - "print(interfaces[0])\n", - "calculator.switch(interfaces[0])\n", - "\n", - "S = Sample(phases=phases, parameters=parameters, calculator=calculator)\n" - ] - }, - { - "cell_type": "markdown", - "id": "f6676f54", - "metadata": {}, - "source": [ - "Calculate the profile again, this time based on the TOF parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eac224b9", - "metadata": {}, - "outputs": [], - "source": [ - "x_data = np.linspace(5000, 60000, 500)\n", - "y_data = calculator.fit_func(x_data)\n", - "\n", - "%matplotlib notebook\n", - "\n", - "plt.plot(x_data, y_data, label='TOF Simulation')\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3647d5ab", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/FittingPdCw1d.ipynb b/examples/Fitting.ipynb similarity index 86% rename from examples/FittingPdCw1d.ipynb rename to examples/Fitting.ipynb index b4630e8d..9fb39a33 100644 --- a/examples/FittingPdCw1d.ipynb +++ b/examples/Fitting.ipynb @@ -30,7 +30,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /Users/asazonov/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/GSASII/bindist\n", + "GSAS-II binary directory: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" ] } @@ -46,7 +46,7 @@ "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", - "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", "\n", "# Vizualization\n", "import py3Dmol\n", @@ -157,10 +157,10 @@ "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + "

\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] @@ -207,7 +207,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -304,7 +304,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -314,7 +314,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8e78ecf96d3847c1b60fc307b3059044", + "model_id": "5576dadff8e3423cb4ffd8479d148c8c", "version_major": 2, "version_minor": 0 }, @@ -382,12 +382,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" + "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" ] } ], "source": [ - "job = Job(phases=phases, parameters=Instrument1DCWParameters.default(), calculator=calculator)" + "job = Job(phases=phases, parameters=CWParams.default(), calculator=calculator)" ] }, { @@ -423,7 +423,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -433,7 +433,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5694871b850a4d26a6f7d9dd4986a6a5", + "model_id": "056ea7a850624c478431b451dc981f2f", "version_major": 2, "version_minor": 0 }, @@ -477,7 +477,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -487,7 +487,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7afef53df7ba4f07b9e6a8ce5491a402", + "model_id": "835fc41bc483460992fe6221f8352ca5", "version_major": 2, "version_minor": 0 }, @@ -533,7 +533,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -543,7 +543,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "07e158e0e1054695bac62299cb028e1d", + "model_id": "f8d9b3eb4fa04c609f5cfdffc2e496fe", "version_major": 2, "version_minor": 0 }, @@ -594,7 +594,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -604,7 +604,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "489db9c7825b42d49ae4716eb3c37d18", + "model_id": "20e950f859b04c25bbd54a6e61dc63ad", "version_major": 2, "version_minor": 0 }, @@ -702,7 +702,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Available minimizers: ['lmfit', 'bumps']\n", + "Available minimizers: ['lmfit', 'bumps', 'DFO_LS']\n", "Current minimizer: lmfit\n", "Available methods of current minimizers: ['least_squares', 'leastsq', 'differential_evolution', 'basinhopping', 'ampgo', 'nelder', 'lbfgsb', 'powell', 'cg', 'newton', 'cobyla', 'bfgs']\n" ] @@ -760,23 +760,23 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 27, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "688df481b4a24a668e5f307ecc0bf48b", + "model_id": "4165c69111104fbcb310a5c31239c951", "version_major": 2, "version_minor": 0 }, @@ -808,7 +808,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -825,7 +825,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ @@ -834,7 +834,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -860,23 +860,23 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 31, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "009219b8d65d4a64905f0772a2d269a4", + "model_id": "a5dcd6155d3f41069c446996a77b9339", "version_major": 2, "version_minor": 0 }, @@ -908,7 +908,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -918,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -959,27 +959,27 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 34, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "85a3e2cef709405cb5380da0257eb361", + "model_id": "cb7001f206ba447dbc03a6b21c9db6c3", "version_major": 2, "version_minor": 0 }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAADU1ElEQVR4nOydeZgcZbn276rqbfbJQjYJSVjCElYBMWwfChIi5ijiUQQFJODBk8hhERAPcBBRBEXUwyYoQRQMcgRF9rAvCaCRkJCQACELIZkkZDJrL7V+f1S9b721dHf1dE/3zPTzu65c6emurq7qru666342ybIsCwRBEARBEETdINd6AwiCIAiCIIjqQgKQIAiCIAiiziABSBAEQRAEUWeQACQIgiAIgqgzSAASBEEQBEHUGSQACYIgCIIg6gwSgARBEARBEHUGCUCCIAiCIIg6gwQgQRAEQRBEnUECkCAIgiAIos4gAUgQBEEQBFFnkAAkCIIgCIKoM0gAEgRBEARB1BkkAAmCIAiCIOoMEoAEQRAEQRB1BglAgiAIgiCIOoMEIEEQBEEQRJ1BApAgCIIgCKLOIAFIEARBEARRZ5AAJAiCIAiCqDNIABIEQRAEQdQZJAAJgiAIgiDqDBKABEEQBEEQdQYJQIIgCIIgiDqDBCBBEARBEESdQQKQIAiCIAiiziABSBAEQRAEUWeQACQIgiAIgqgzSAASBEEQBEHUGSQACYIgCIIg6gwSgARBEARBEHUGCUCCIAiCIIg6gwQgQRAEQRBEnUECkCAIgiAIos4gAUgQBEEQBFFnkAAkCIIgCIKoM0gAEgRBEARB1BkkAAmCIAiCIOoMEoAEQRAEQRB1BglAgiAIgiCIOoMEIEEQBEEQRJ1BApAgCIIgCKLOIAFIEARBEARRZ5AAJAiCIAiCqDNIABIEQRAEQdQZJAAJgiAIgiDqDBKABEEQBEEQdQYJQIIgCIIgiDqDBCBBEARBEESdQQKQIAiCIAiiziABSBAEQRAEUWeQACQIgiAIgqgzSAASBEEQBEHUGSQACYIgCIIg6gwSgARBEARBEHUGCUCCIAiCIIg6I1brDRjOmKaJzZs3o6WlBZIk1XpzCIIgCIKIgGVZ6O3txaRJkyDL9emFkQAsg82bN2Py5Mm13gyCIAiCIAbAhx9+iF133bXWm1ETSACWQUtLCwD7AGptba3x1hAEQRAEEYWenh5MnjyZn8frERKAZcDCvq2trSQACYIgCGKYUc/pW/UZ+CYIgiAIgqhjSAASBEEQBEHUGSQACYIgCIIg6owhlwN4/fXX46GHHsLq1avR0NCAI488EjfccAP23ntvvsxxxx2HF1980fO8//iP/8Add9zB/964cSO+853v4Pnnn0dzczPOOussXH/99YjF3F1+4YUXcPHFF2PlypWYPHkyrrzySpx99tkV3R/LsqDrOgzDqOh6CYKhKApisVhd57IQBEEQpTHkBOCLL76IefPm4fDDD4eu6/jBD36AE088EatWrUJTUxNf7rzzzsO1117L/25sbOS3DcPAySefjAkTJmDx4sXYsmULzjzzTMTjcfzkJz8BAKxbtw4nn3wyzj//fNx333149tlnce6552LixImYNWtWRfZFVVVs2bIF6XS6IusjiHw0NjZi4sSJSCQStd4UgiAIYhggWZZl1XojCrF9+3aMGzcOL774Io499lgAtgN48MEH45e//GXoc5544gl84QtfwObNmzF+/HgAwB133IHLL78c27dvRyKRwOWXX47HHnsMb7/9Nn/eaaedhq6uLjz55JORtq2npwdtbW3o7u4OVAGbpon33nsPiqJgl112QSKRIIeGqDiWZUFVVWzfvh2GYWCvvfaq26amBEEQUSl0/q4XhpwD6Ke7uxsAMHr0aM/99913H/74xz9iwoQJmDNnDq666iruAi5ZsgQHHHAAF38AMGvWLHznO9/BypUrccghh2DJkiU44YQTPOucNWsWLrzwwrzbksvlkMvl+N89PT15l1VVFaZpYvLkyR53kiAqTUNDA+LxODZs2ABVVZFKpWq9SQRBEMQQZ0gLQNM0ceGFF+Koo47C/vvvz+8//fTTMWXKFEyaNAnLly/H5ZdfjjVr1uChhx4CAHR0dHjEHwD+d0dHR8Flenp6kMlk0NDQENie66+/Hj/84Q9L2gdyY4hqQMcZQRAEUQpDWgDOmzcPb7/9Nl555RXP/d/+9rf57QMOOAATJ07E8ccfj7Vr12KPPfYYtO254oorcPHFF/O/WSdxgiAIgiCI4cSQtQ3mz5+PRx99FM8//3zROX1HHHEEAOD9998HAEyYMAFbt271LMP+njBhQsFlWltbQ90/AEgmk3zqB03/IAiCIAhiuDLkBKBlWZg/fz4efvhhPPfcc5g2bVrR5yxbtgwAMHHiRADAzJkzsWLFCmzbto0vs2jRIrS2tmK//fbjyzz77LOe9SxatAgzZ86s0J4MX84++2x86UtfqvVmEARBEAQxSAw5AThv3jz88Y9/xP3334+WlhZ0dHSgo6MDmUwGALB27Vr86Ec/wtKlS7F+/Xo88sgjOPPMM3HsscfiwAMPBACceOKJ2G+//fDNb34Tb731Fp566ilceeWVmDdvHpLJJADg/PPPxwcffIDLLrsMq1evxm233YY///nPuOiii2q27wRBEARBENVgyAnA22+/Hd3d3TjuuOMwceJE/u+BBx4AACQSCTzzzDM48cQTsc8+++CSSy7Bqaeeir///e98HYqi4NFHH4WiKJg5cya+8Y1v4Mwzz/T0DZw2bRoee+wxLFq0CAcddBBuuukm/Pa3v61YD8CRwnHHHYfvfve7uPDCCzFq1CiMHz8ed911F/r7+/Gtb30LLS0t2HPPPfHEE094nvf2229j9uzZaG5uxvjx4/HNb34TH3/8MX/8ySefxNFHH4329naMGTMGX/jCF7B27Vr+uKqqmD9/PiZOnIhUKoUpU6bg+uuvr9p+E4OHaVq4edG7ePm97bXeFIIgiLplyBWBFGtLOHny5MAUkDCmTJmCxx9/vOAyxx13HN58882Stq8cLMtCRqv+RJCGuFJWD8Lf//73uOyyy/DGG2/ggQcewHe+8x08/PDDOOWUU/CDH/wAN998M775zW9i48aNaGxsRFdXFz772c/i3HPPxc0334xMJoPLL78cX/3qV/Hcc88BAPr7+3HxxRfjwAMPRF9fH66++mqccsopWLZsGWRZxq9//Ws88sgj+POf/4zddtsNH374IT788MNKvSVEDXn87S341bPvAQDW//TkGm8NQRBEfTLkBOBIJqMZ2O/qp6r+uquunYXGxMA/6oMOOghXXnklALsS+qc//SnGjh2L8847DwBw9dVX4/bbb8fy5cvx6U9/GrfccgsOOeQQPnUFAO6++25MnjwZ7777LqZPn45TTz3V8xp33303dtllF6xatQr7778/Nm7ciL322gtHH300JEnClClTBrz9xNCioztb600gCIKoe4ZcCJgYerDcSsAOr48ZMwYHHHAAv4/1U2RFN2+99Rafwcz+7bPPPgDAw7zvvfcevv71r2P33XdHa2srpk6dCsCe4QzYhSjLli3D3nvvjQsuuABPP/30oO8nUR2SMfrZIQiCqDXkAFaRhriCVddWP8ewIa6U9fx4PO75W5Ikz30svGyaJgCgr68Pc+bMwQ033BBYF6vUnjNnDqZMmYK77roLkyZNgmma2H///aGqKgDgk5/8JNatW4cnnngCzzzzDL761a/ihBNOwP/93/+VtS9E7UkKx2NON5CMlXd8EgRBEKVDArCKSJJUVih2uPDJT34Sf/nLXzB16lTEYsH93bFjB9asWYO77roLxxxzDAAEmn0DQGtrK772ta/ha1/7Gr7yla/gpJNOQmdnZ2AsIDG8kIV8VFU3SQASBEHUAIrFEBVn3rx56OzsxNe//nX84x//wNq1a/HUU0/hW9/6FgzDwKhRozBmzBjceeedeP/99/Hcc895JqwAwC9+8Qv86U9/wurVq/Huu+/iwQcfxIQJE9De3l6bnSIqhuE4xQBQuOSLIAiCGCxIABIVZ9KkSXj11VdhGAZOPPFEHHDAAbjwwgvR3t4OWZYhyzIWLlyIpUuXYv/998dFF12En/3sZ551tLS04MYbb8Rhhx2Gww8/HOvXr8fjjz9OM29HAJrhyj7LLLAgQRAEMWhIVrG+K0Reenp60NbWhu7u7sBYuGw2i3Xr1mHatGlIpVI12kKiXhhOx9vvF6/H/zyyEgCw7OrPob0xUeMtIgii3ih0/q4XyE4hCKKq6KZ7zWnS5SdBEERNIAFIEERVMT0CkBQgQRBELSABSBBEVbGE0g/SfwRBELWBBCBBEFVFFH2UgkwQBFEbSAASBFFVxLw/kn8EQRC1gQQgQRBVRQwBUw4gQRBEbSABSBBEVRE1H1UBEwRB1AYSgARBVBUx749yAAmCIGoDCUCCIKqKtwikdttBEARRz5AAJAaVa665BgcffHBZ61BVFXvuuScWL15cmY2qMd///vfx3e9+t9abUTNEzUcCkCAIojaQACQ8nH322fjSl75U683wcMcdd2DatGk48sgjPfc///zz+PznP48xY8agsbER++23Hy655BJ89NFHg7Yt69evhyRJ/N+YMWNw4okn4s0334y8ju9973v4/e9/jw8++GDQtnMoIxZ+UBEIQRBEbSABSAxpLMvCLbfcgrlz53ru/81vfoMTTjgBEyZMwF/+8hesWrUKd9xxB7q7u3HTTTeFrsswDJimWZHteuaZZ7BlyxY89dRT6Ovrw+zZs9HV1RXpuWPHjsWsWbNw++23V2RbhhsWtYEhCIKoOSQAiYKYpokbb7wRe+65J5LJJHbbbTf8+Mc/5o9ffvnlmD59OhobG7H77rvjqquugqZpBdd59913Y8aMGUgmk5g4cSLmz5+fd9mlS5di7dq1OPnkk/l9mzZtwgUXXIALLrgAd999N4477jhMnToVxx57LH7729/i6quvBgDcc889aG9vxyOPPIL99tsPyWQSr7zyCuLxODo6Ojyvc+GFF+KYY44BAGzYsAFz5szBqFGj0NTUhBkzZuDxxx/3LD9mzBhMmDABhx12GH7+859j69ateP3113Httddi//33D+zHwQcfjKuuuor/PWfOHCxcuLDg+zRSscgBJAiCqDmxWm9AXWFZgJau/uvGGwFJGtBTr7jiCtx11124+eabcfTRR2PLli1YvXo1f7ylpQX33HMPJk2ahBUrVuC8885DS0sLLrvsstD13X777bj44ovx05/+FLNnz0Z3dzdeffXVvK//8ssvY/r06WhpaeH3Pfjgg1BVNe9rtLe389vpdBo33HADfvvb32LMmDGYPHkydt99d/zhD3/ApZdeCgDQNA333XcfbrzxRgDAvHnzoKoqXnrpJTQ1NWHVqlVobm7Ou40NDQ0A7FzFc845Bz/84Q/xj3/8A4cffjgA4M0338Ty5cvx0EMP8ed86lOfwqZNm7B+/XpMnTo177pHIt4cQBKABEEQtYAEYDXR0sBPJlX/dX+wGUg0lfy03t5e/OpXv8Itt9yCs846CwCwxx574Oijj+bLXHnllfz21KlT8b3vfQ8LFy7MK86uu+46XHLJJfiv//ovfh8TSmFs2LABkyZ537P33nsPra2tmDhxYtF90DQNt912Gw466CB+39y5c7FgwQIuAP/+978jm83iq1/9KgBg48aNOPXUU3HAAQcAAHbfffe86+/q6sKPfvQjNDc341Of+hTGjx+PWbNmYcGCBXy/FixYgP/3//6fZz1snzZs2FB/ApCqgAmCIGoOhYCJvLzzzjvI5XI4/vjj8y7zwAMP4KijjsKECRPQ3NyMK6+8Ehs3bgxddtu2bdi8eXPB9fnJZDJIpVKe+yzLghTR0UwkEjjwwAM995199tl4//338dprrwGwQ8Vf/epX0dRki+QLLrgA1113HY466ij8z//8D5YvXx5Y75FHHonm5maMGjUKb731Fh544AGMHz8eAHDeeefhT3/6E7LZLFRVxf33349zzjnH83zmGqbTNXCEa4y3CKSGG0IQBFHHkANYTeKNthtXi9cdAEyk5GPJkiU444wz8MMf/hCzZs1CW1sbFi5cmLcIo9j6whg7dixWrFjhuW/69Ono7u7Gli1birqADQ0NAbE4btw4zJkzBwsWLMC0adPwxBNP4IUXXuCPn3vuuZg1axYee+wxPP3007j++utx0003eVq3PPDAA9hvv/0wZswYT8gZsPP7kskkHn74YSQSCWiahq985SueZTo7OwEAu+yyS9S3YsTgCQFTGQhBEERNIAewmkiSHYqt9r8B5v/ttddeaGhowLPPPhv6+OLFizFlyhT893//Nw477DDstdde2LBhQ971tbS0YOrUqXnXF8YhhxyC1atXe3LFvvKVryCRSPCcPT9RqnHPPfdcPPDAA7jzzjuxxx574KijjvI8PnnyZJx//vl46KGHcMkll+Cuu+4KPL7HHnsExB8AxGIxnHXWWViwYAEWLFiA0047LSB+3377bcTjccyYMaPoto40PKPgKlOUTRAEQZQIOYBEXlKpFC6//HJcdtllSCQSOOqoo7B9+3asXLkSc+fOxV577YWNGzdi4cKFOPzww/HYY4/h4YcfLrjOa665Bueffz7GjRuH2bNno7e3F6+++mrexsif+cxn0NfXh5UrV/Lq2smTJ+Pmm2/G/Pnz0dPTgzPPPBNTp07Fpk2bcO+996K5uTmvC8mYNWsWWltbcd111+Haa6/1PHbhhRdi9uzZmD59Onbu3Innn38e++67bwnvnC0w2XPCilxefvllHHPMMQNyRYc7VAVMEARRe8gBJApy1VVX4ZJLLsHVV1+NfffdF1/72tewbds2AMC//du/4aKLLsL8+fNx8MEHY/HixZ5WJ2GcddZZ+OUvf4nbbrsNM2bMwBe+8AW89957eZcfM2YMTjnlFNx3332e+//zP/8TTz/9ND766COccsop2GeffXDuueeitbUV3/ve94rulyzLOPvss2EYBs4880zPY4ZhYN68edh3331x0kknYfr06bjtttuKrlNkr732wpFHHol99tkHRxxxRODxhQsX4rzzzitpnSMFknwEQRC1R7KoD8OA6enpQVtbG7q7u9Ha2up5LJvNYt26dZg2bVqgiIEojeXLl+Nzn/sc1q5d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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAADnwElEQVR4nOydd7gU5fn+75nZdjpNOGAQUECKBaLGghqNBVExGo3RaAAF80MhRsUSEyW2xGjssUUNoBEF/UYT7NgFwRKUgICKSBHh0E/dMvX3x847885smy1n95yzz+e6uNizOzs7szu7c8/9NMEwDAMEQRAEQRBE2SCWegMIgiAIgiCI4kICkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMoMEIEEQBEEQRJlBApAgCIIgCKLMIAFIEARBEARRZpAAJAiCIAiCKDNIABIEQRAEQZQZJAAJgiAIgiDKDBKABEEQBEEQZQYJQIIgCIIgiDKDBCBBEARBEESZQQKQIAiCIAiizCABSBAEQRAEUWaQACQIgiAIgigzSAASBEEQBEGUGSQACYIgCIIgygwSgARBEARBEGUGCUCCIAiCIIgygwQgQRAEQRBEmUECkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMoMEIEEQBEEQRJlBApAgCIIgCKLMIAFIEARBEARRZpAAJAiCIAiCKDNIABIEQRAEQZQZJAAJgiAIgiDKDBKABEEQBEEQZQYJQIIgCIIgiDKDBCBBEARBEESZQQKQIAiCIAiizCABSBAEQRAEUWaQACQIgiAIgigzSAASBEEQBEGUGSQACYIgCIIgygwSgARBEARBEGUGCUCCIAiCIIgygwQgQRAEQRBEmUECkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMsNX6g3ozOi6ji1btqCmpgaCIJR6cwiCIAiC8IBhGGhpaUG/fv0giuXphZEAzIMtW7agf//+pd4MgiAIgiBy4LvvvsMPfvCDUm9GSSABmAc1NTUA4gdQbW1tibeGIAiCIAgvNDc3o3///tZ5vBwhAZgHLOxbW1tLApAgCIIgOhnlnL5VnoFvgiAIgiCIMoYEIEEQBEEQRJlBApAgCIIgCKLM6HA5gLfffjteeOEFfPnll6ioqMBRRx2FO+64A/vvv7+1zHHHHYf333/f8bz/9//+Hx599FHr702bNuHSSy/Fu+++i+rqakycOBG33347fD57l9977z1cddVVWLVqFfr3748bbrgBkyZNavd9JAiisBiGAVVVoWlaqTeFIIgOgCRJ8Pl8ZZ3jl4kOJwDff/99TJs2DYcddhhUVcXvf/97nHzyyVi9ejWqqqqs5S655BLccsst1t+VlZXWbU3TcNppp6G+vh5LlizB1q1bMWHCBPj9fvz5z38GAKxfvx6nnXYapk6dirlz5+Ltt9/GlClT0LdvX4wdO7Z4O0wQRF7IsoytW7ciHA6XelMIguhAVFZWom/fvggEAqXelA6JYBiGUeqNSMeOHTvQu3dvvP/++zj22GMBxB3AUaNG4b777kv6nNdeew2nn346tmzZgj59+gAAHn30UVx33XXYsWMHAoEArrvuOrzyyiv44osvrOedd955aGxsxOuvv+5p25qbm1FXV4empiaqAiaIEqDrOtauXQtJkrDXXnshEAjQFT9BlDmGYUCWZezYsQOapmHIkCEJzZ7p/N0BHUA3TU1NAIAePXo47p87dy6efvpp1NfXY/z48bjxxhstF3Dp0qU48MADLfEHAGPHjsWll16KVatWYfTo0Vi6dClOPPFExzrHjh2LK664on13iCCIgiHLMnRdR//+/R1RAIIgypuKigr4/X5s3LgRsiwjFAqVepM6HB1aAOq6jiuuuAJjxozBAQccYN3/y1/+EgMGDEC/fv2wYsUKXHfddfjqq6/wwgsvAAAaGhoc4g+A9XdDQ0PaZZqbmxGJRFBRUZGwPbFYDLFYzPq7ubm5MDtKEERelOsoJ4IgUkO/C+np0AJw2rRp+OKLL7B48WLH/b/+9a+t2wceeCD69u2LE044AevWrcN+++3Xbttz++234+abb2639RMEQRAEQRSDDiuPp0+fjpdffhnvvvtuxjl9hx9+OADgm2++AQDU19dj27ZtjmXY3/X19WmXqa2tTer+AcD111+PpqYm6993332X/Y4RBEEQBEGUmA4nAA3DwPTp0/Hiiy/inXfewaBBgzI+Z/ny5QCAvn37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HW688cak6zEMIyFFKldmz56NrVu3Wv/c85/79++P2bNnO+578cUXc5o9PWnSJDzwwAN5bW8506EFoK7ruOKKKzBmzBgccMABAICGhgYEAgHLOmf06dMHDQ0N1jK8+GOPs8fSLdPc3IxIJJJ0e2KxGJqbmx3/CILIDkcjaJcAFMXyTYfXdR133nknBg8ejGAwiH322Qd/+tOfrMevu+46DB06FJWVldh3331x4403QlHSz1KeNWsWRo4ciWAwiL59+2L69Okpl122bBnWrVuH0047zbpv8+bNuPzyy3H55Zdj1qxZOO644zBw4EAce+yxeOKJJ6y0GhbOXLBgAUaMGIFgMIjFixfD7/dbv7mMK664AscccwwAYOPGjRg/fjy6d++OqqoqjBw5Eq+++qpj+Z49e6K+vh6HHnoo7rrrLmzbtg0ff/wxbrnlFuu8wDNq1CiH0Bk/fjzmzZuX9n3KlXTv7z333IMDDzwQVVVV6N+/Py677DK0tramXd97b7yHww47DKFQCL169cJZZ52VctkdO3bgnXfewfjx4637wuEwLrroIpx66qlYsGABTjzxRAwaNAiHH3447rrrLvz973+Pv85770EQBLz22ms45JBDEAwG8fTTT0MURfz3v/91vM59992HAQMGQNd17NmzBxdccAH22msvVFRUYMiQIQlirlu3bqivr7f+MfOGMXHiRMybN89xnp01axYmTpyY9r1Jxvjx4/Hf//4X69aty/q5RAcXgNOmTcMXX3zRbl/ebLn99ttRV1dn/evfv3+pN4kgOh2OIhCXAJQKIAANw4AeDpfkHy9us+X666/HX/7yF9x4441YvXo1nnnmGcdFak1NDebMmYPVq1fj/vvvx+OPP542ZeWRRx7BtGnT8Otf/xorV67EggULMHjw4JTLL1q0CEOHDkVNTY113/PPPw9ZlnHttdcmfQ5/IR4Oh3HHHXfgiSeewKpVq3DooYdi3333xT//+U9rGUVRMHfuXFx88cUA4r/xsVgMH3zwAVauXIk77rgjrRNUUVEBIJ6rePHFF2PNmjX49NNPrcc///xzrFixAhdddJF1349+9CNs3rwZGzZsSLneXMj0/oqiiAceeACrVq3Ck08+iXfeeSfl+wgA7y98H7+d+Fuceuqp+Pzzz/H222/jRz/6UcrlFy9ejMrKSgwfPty674033sDOnTs9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", "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] @@ -995,6 +995,7 @@ "plt.plot(meas_x, meas_y, label='Imeas')\n", "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", + "plt.plot(meas_x, calc_y_cryspy-calc_y_crysfml, label='Icalc (CrysPy) - Icalc (CrysFML)')\n", "plt.legend()" ] }, @@ -1007,23 +1008,23 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 35, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ae28c78d7ec547f2a7da827d7974af3e", + "model_id": "1ae89e177ecc47a0a0ad82e81d37e881", "version_major": 2, "version_minor": 0 }, diff --git a/examples/Simulation.ipynb b/examples/Simulation.ipynb new file mode 100644 index 00000000..9b2eaa02 --- /dev/null +++ b/examples/Simulation.ipynb @@ -0,0 +1,2528 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8a365a14", + "metadata": {}, + "source": [ + "# Simulation of the diffraction pattern\n", + "This notebook shows how we can create a sample (phase) from atoms and calculate diffraction profiles using both constant wavelength and time-of-flight experiment types." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9ecc4733", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GSAS-II binary directory: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", + "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" + ] + } + ], + "source": [ + "# esyScience, technique-independent\n", + "from easyCore import np\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "# esyScience, diffraction\n", + "from easyDiffractionLib import Site, Phase, Phases\n", + "from easyDiffractionLib.sample import Sample as Job\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DTOFParameters as TOFParams\n", + "from easyDiffractionLib.Profiles.P1D import Powder1DParameters\n", + "\n", + "# Vizualization\n", + "import py3Dmol\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "283767f9", + "metadata": {}, + "source": [ + "## --- Sample ---" + ] + }, + { + "cell_type": "markdown", + "id": "19a39b25", + "metadata": {}, + "source": [ + "#### Create an atom using `Site` interface" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "41020330", + "metadata": {}, + "outputs": [], + "source": [ + "atom = Site.from_pars(label=\"Cl\",\n", + " specie=\"Cl\",\n", + " fract_x=0.0,\n", + " fract_y=0.0,\n", + " fract_z=0.0)" + ] + }, + { + "cell_type": "markdown", + "id": "910aed87", + "metadata": {}, + "source": [ + "#### Create a phase, set space group, add atom" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "1e2f3193", + "metadata": {}, + "outputs": [], + "source": [ + "phase = Phase(name=\"salt\")\n", + "\n", + "phase.spacegroup.space_group_HM_name = \"F m -3 m\"\n", + "\n", + "phase.add_atom(atom)" + ] + }, + { + "cell_type": "markdown", + "id": "d4532d8b", + "metadata": {}, + "source": [ + "#### Add another atom (using `Phase` interface)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4231d16a", + "metadata": {}, + "outputs": [], + "source": [ + "phase.add_atom('Na', 'Na', 0.5, 0.5, 0.5)" + ] + }, + { + "cell_type": "markdown", + "id": "81ace320", + "metadata": {}, + "source": [ + "#### Visualise the structure" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e68ddbea", + "metadata": {}, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "text/html": [ + "
\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "viewer = py3Dmol.view()\n", + "viewer.addModel(phase.to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", + "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", + "viewer.addUnitCell()\n", + "viewer.replicateUnitCell(2,2,2)\n", + "viewer.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "id": "ebe0e0ee", + "metadata": {}, + "source": [ + "#### Create Phases object" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "29071aa2", + "metadata": {}, + "outputs": [], + "source": [ + "phases = Phases()\n", + "phases.append(phase)" + ] + }, + { + "cell_type": "markdown", + "id": "07db27b5", + "metadata": {}, + "source": [ + "## --- Experiment ---" + ] + }, + { + "cell_type": "markdown", + "id": "e93c42b9", + "metadata": {}, + "source": [ + "#### Create and modify a `Parameters` object" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "83e3845f", + "metadata": {}, + "outputs": [], + "source": [ + "parameters = CWParams.default()\n", + "\n", + "parameters.length_a = 5.6402\n", + "parameters.resolution_u = 0.1447\n", + "parameters.resolution_v = -0.4252\n", + "parameters.resolution_w = 0.3864\n", + "parameters.resolution_x = 0.0\n", + "parameters.resolution_y = 0.0" + ] + }, + { + "cell_type": "markdown", + "id": "370f0baa", + "metadata": {}, + "source": [ + "#### Create and modify a Pattern object" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "70fa1571", + "metadata": {}, + "outputs": [], + "source": [ + "pattern = Powder1DParameters.default()\n", + "\n", + "pattern.zero_shift = 0.0\n", + "pattern.scale = 100.0" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "1ed88f8e", + "metadata": {}, + "outputs": [], + "source": [ + "calculator = Calculator(interface_name='CrysPy') # this is the default" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "784fb8e5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current calculator engine: CrysPy\n" + ] + } + ], + "source": [ + "print(f\"Current calculator engine: {calculator.current_interface_name}\")" + ] + }, + { + "cell_type": "markdown", + "id": "42da041a", + "metadata": {}, + "source": [ + "#### Finally, create the job" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c90662f7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" + ] + } + ], + "source": [ + "job_cw = Job(phases=phases, parameters=parameters, calculator=calculator)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "210bc79d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available calculator engines: ['CrysPy', 'CrysFML', 'GSASII']\n", + "Available calculators for CW: ['CrysPy', 'CrysFML', 'GSASII']\n" + ] + } + ], + "source": [ + "print(f\"Available calculator engines: {calculator.available_interfaces}\")\n", + "print(f\"Available calculators for CW: {calculator.interface_compatability('Npowder1DCW')}\")" + ] + }, + { + "cell_type": "markdown", + "id": "eb234f76", + "metadata": {}, + "source": [ + "## --- Analysis ---" + ] + }, + { + "cell_type": "markdown", + "id": "00e24eab", + "metadata": {}, + "source": [ + "#### Calculate the profile using the calculator we defined previously.\n", + "Note that we don't run anything on the `Sample` object but on a separate `Calculator` instance" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "398bbb91", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", + " if (this.ResizeObserver === undefined) {\n", + " if (window.ResizeObserver !== undefined) {\n", + " this.ResizeObserver = window.ResizeObserver;\n", + " } else {\n", + " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", + " this.ResizeObserver = obs.ResizeObserver;\n", + " }\n", + " }\n", + "\n", + " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " this.resizeObserverInstance.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'dblclick',\n", + " on_mouse_event_closure('dblclick')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " var img = evt.data;\n", + " if (img.type !== 'image/png') {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " img.type = 'image/png';\n", + " }\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " img\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.key === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.key;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.key !== 'Control') {\n", + " value += 'ctrl+';\n", + " }\n", + " else if (event.altKey && event.key !== 'Alt') {\n", + " value += 'alt+';\n", + " }\n", + " else if (event.shiftKey && event.key !== 'Shift') {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k' + event.key;\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "\n", + "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", + "// prettier-ignore\n", + "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.binaryType = comm.kernel.ws.binaryType;\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " function updateReadyState(_event) {\n", + " if (comm.kernel.ws) {\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " } else {\n", + " ws.readyState = 3; // Closed state.\n", + " }\n", + " }\n", + " comm.kernel.ws.addEventListener('open', updateReadyState);\n", + " comm.kernel.ws.addEventListener('close', updateReadyState);\n", + " comm.kernel.ws.addEventListener('error', updateReadyState);\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " var data = msg['content']['data'];\n", + " if (data['blob'] !== undefined) {\n", + " data = {\n", + " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", + " };\n", + " }\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(data);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.on(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " if (event.target !== this) {\n", + " // Ignore bubbled events from children.\n", + " return;\n", + " }\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_data = np.linspace(20, 170, 500)\n", + "y_data = calculator.fit_func(x_data)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(x_data, y_data, label='CW Simulation')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "0f2cb72f", + "metadata": {}, + "source": [ + "## --- Experiment ---" + ] + }, + { + "cell_type": "markdown", + "id": "161efebd", + "metadata": {}, + "source": [ + "#### Modify the parameters to correspond to a TOF experiment" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "59381e83", + "metadata": {}, + "outputs": [], + "source": [ + "parameters = TOFParams.default()\n", + "\n", + "parameters.length_a = 5.6402\n", + "parameters.dtt1 = 6167.24700\n", + "parameters.dtt2 = -2.28000\n", + "parameters.ttheta_bank = 145.00" + ] + }, + { + "cell_type": "markdown", + "id": "ea998649", + "metadata": {}, + "source": [ + "#### Create new job (TOF) with new parameters, but old phase and calculator objects" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "2aa1648d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" + ] + } + ], + "source": [ + "job_tof = Job(phases=phases, parameters=parameters, calculator=calculator)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "9d612a23", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available calculator engines: ['CrysPy', 'CrysFML', 'GSASII']\n", + "Available calculators for TOF: ['CrysPy']\n" + ] + } + ], + "source": [ + "print(f\"Available calculator engines: {calculator.available_interfaces}\")\n", + "print(f\"Available calculators for TOF: {calculator.interface_compatability('Npowder1DTOF')}\")" + ] + }, + { + "cell_type": "markdown", + "id": "2245224b", + "metadata": {}, + "source": [ + "## --- Analysis ---" + ] + }, + { + "cell_type": "markdown", + "id": "f6676f54", + "metadata": {}, + "source": [ + "#### Calculate the profile again, this time based on the TOF parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "eac224b9", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", + " if (this.ResizeObserver === undefined) {\n", + " if (window.ResizeObserver !== undefined) {\n", + " this.ResizeObserver = window.ResizeObserver;\n", + " } else {\n", + " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", + " this.ResizeObserver = obs.ResizeObserver;\n", + " }\n", + " }\n", + "\n", + " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " this.resizeObserverInstance.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'dblclick',\n", + " on_mouse_event_closure('dblclick')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " var img = evt.data;\n", + " if (img.type !== 'image/png') {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " img.type = 'image/png';\n", + " }\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " img\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.key === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.key;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.key !== 'Control') {\n", + " value += 'ctrl+';\n", + " }\n", + " else if (event.altKey && event.key !== 'Alt') {\n", + " value += 'alt+';\n", + " }\n", + " else if (event.shiftKey && event.key !== 'Shift') {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k' + event.key;\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "\n", + "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", + "// prettier-ignore\n", + "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.binaryType = comm.kernel.ws.binaryType;\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " function updateReadyState(_event) {\n", + " if (comm.kernel.ws) {\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " } else {\n", + " ws.readyState = 3; // Closed state.\n", + " }\n", + " }\n", + " comm.kernel.ws.addEventListener('open', updateReadyState);\n", + " comm.kernel.ws.addEventListener('close', updateReadyState);\n", + " comm.kernel.ws.addEventListener('error', updateReadyState);\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " var data = msg['content']['data'];\n", + " if (data['blob'] !== undefined) {\n", + " data = {\n", + " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", + " };\n", + " }\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(data);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.on(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " if (event.target !== this) {\n", + " // Ignore bubbled events from children.\n", + " return;\n", + " }\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_data = np.linspace(3000, 15000, 500)\n", + "y_data = calculator.fit_func(x_data)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(x_data, y_data, label='TOF Simulation')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3647d5ab", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 530ca9608d3fedcba4d889b707ec0001a6e460a5 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 28 Sep 2021 17:10:53 +0200 Subject: [PATCH 195/312] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index c2224ca2..a2a143ac 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,12 @@ Currently **easyDiffractionLib** is in **alpha** and has not been released on ** ``` * Select one of the *.ipynb files +## Test + +The installation can be verified by running the test suite: + +```python -m pytest``` + ## Documentation Documentation can be found at: [https://easyScience.github.io/easyDiffractionLib](https://easyScience.github.io/easyDiffractionLib) From 17c403f6ee1b256048b277d99086989a398b498b Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 28 Sep 2021 17:13:34 +0200 Subject: [PATCH 196/312] Delete unused files --- README.rst | 3 --- resources/images/ed_logo.svg | 29 -------------------- resources/images/ed_logo_single.svg | 27 ------------------- resources/images/ed_logo_wfont.svg | 42 ----------------------------- setup.py | 41 ---------------------------- 5 files changed, 142 deletions(-) delete mode 100644 README.rst delete mode 100644 resources/images/ed_logo.svg delete mode 100644 resources/images/ed_logo_single.svg delete mode 100644 resources/images/ed_logo_wfont.svg delete mode 100644 setup.py diff --git a/README.rst b/README.rst deleted file mode 100644 index a1c4a814..00000000 --- a/README.rst +++ /dev/null @@ -1,3 +0,0 @@ - -easyDiffractionLib -================== diff --git a/resources/images/ed_logo.svg b/resources/images/ed_logo.svg deleted file mode 100644 index de319d8d..00000000 --- a/resources/images/ed_logo.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/images/ed_logo_single.svg b/resources/images/ed_logo_single.svg deleted file mode 100644 index 5aab6b19..00000000 --- a/resources/images/ed_logo_single.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/images/ed_logo_wfont.svg b/resources/images/ed_logo_wfont.svg deleted file mode 100644 index 97697d02..00000000 --- a/resources/images/ed_logo_wfont.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - easydiffraction - \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100644 index 8e2a90aa..00000000 --- a/setup.py +++ /dev/null @@ -1,41 +0,0 @@ - -# -*- coding: utf-8 -*- - -# DO NOT EDIT THIS FILE! -# This file has been autogenerated by dephell <3 -# https://github.com/dephell/dephell - -try: - from setuptools import setup -except ImportError: - from distutils.core import setup - - -import os.path - -readme = '' -here = os.path.abspath(os.path.dirname(__file__)) -readme_path = os.path.join(here, 'README.rst') -if os.path.exists(readme_path): - with open(readme_path, 'rb') as stream: - readme = stream.read().decode('utf8') - - -setup( - long_description=readme, - name='easyDiffractionLib', - version='0.0.1', - description='Making diffraction data analysis and modelling easy.', - python_requires='<3.8,==3.*,>=3.7.0', - project_urls={"documentation": "https://github.com/easyScience/easyDiffractionLib", "homepage": "https://github.com/easyScience/easyDiffractionLib"}, - author='Andrew Sazonov', - maintainer='Simon Ward', - license='GPL-3.0-only', - entry_points={"console_scripts": ["easyDiffractionLib = easyDiffractionLib.main:main"]}, - packages=['easyDiffractionLib', 'easyDiffractionLib.Calculators', 'easyDiffractionLib.Elements', 'easyDiffractionLib.Elements.Backgrounds', 'easyDiffractionLib.Elements.Experiments', 'easyDiffractionLib.Interfaces'], - package_dir={"": "."}, - package_data={}, - install_requires=['cryspy==0.*,>=0.4.11', 'easycore', 'libsdarwin; sys_platform == "darwin"', 'libslinux; sys_platform == "linux"', 'libswin32; sys_platform == "win32"'], - dependency_links=['git+https://github.com/easyScience/easyCore.git@xarray#egg=easycore', 'git+https://github.com/easyScience/libsDarwin.git@main#egg=libsdarwin', 'git+https://github.com/easyScience/libsLinux.git@main#egg=libslinux', 'git+https://github.com/easyScience/libsWin32.git@main#egg=libswin32'], - extras_require={"dev": ["hvplot==0.*,>=0.7.0", "jupyter==1.*,>=1.0.0", "pytest==5.*,>=5.2.0", "requests==2.*,>=2.24.0", "toml==0.*,>=0.10.0"]}, -) From 015217e588c8634ea9c118bf5a2fd8e6deb98d19 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Thu, 30 Sep 2021 11:33:38 +0200 Subject: [PATCH 197/312] Added modified fix from the mp_mc branch to enable proper phase removal and profile calculation on experiment type change --- easyDiffractionLib/Calculators/cryspy.py | 26 ++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index a27ca20b..b32d939c 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -270,7 +270,18 @@ def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: if crystal is None: return bg - profile = self.model.calc_profile(this_x_array, [crystal], True, False) + crystals = [crystal] + phase_lists = [] + for crystal in crystals: + phasesL = cryspy.PhaseL() + idx = [idx for idx, item in reversed(list(enumerate(self.phases.items))) if item.label == crystal.data_name][0] + phasesL.items.append(self.phases.items[idx]) + phase_lists.append(phasesL) + + idx = [idx for idx, item in enumerate(self.model.items) if isinstance(item, cryspy.PhaseL)][0] + self.model.items[idx] = phase_lists[0] + + profile = self.model.calc_profile(this_x_array, crystals, True, False) self.hkl_dict = { 'ttheta': self.model.d_internal_val['peak_' + crystal.data_name].numpy_ttheta, 'h': self.model.d_internal_val['peak_' + crystal.data_name].numpy_index_h, @@ -328,7 +339,18 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: if crystal is None: return bg - profile = self.model.calc_profile(this_x_array, [crystal], True, False) + crystals = [crystal] + phase_lists = [] + for crystal in crystals: + phasesL = cryspy.PhaseL() + idx = [idx for idx, item in reversed(list(enumerate(self.phases.items))) if item.label == crystal.data_name][0] + phasesL.items.append(self.phases.items[idx]) + phase_lists.append(phasesL) + + idx = [idx for idx, item in enumerate(self.model.items) if isinstance(item, cryspy.PhaseL)][0] + self.model.items[idx] = phase_lists[0] + + profile = self.model.calc_profile(this_x_array, crystals, True, False) self.hkl_dict = { 'time': np.array(self.model.d_internal_val['peak_' + crystal.data_name].time), 'h': np.array(self.model.d_internal_val['peak_' + crystal.data_name].index_h), From dfa183d24017d52b7d6129f4724d7237dabdd67f Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 28 Sep 2021 17:07:43 +0200 Subject: [PATCH 198/312] Update both `simulation` and `fitting` examples --- examples/CreateSample.ipynb | 370 --- .../{FittingPdCw1d.ipynb => Fitting.ipynb} | 103 +- examples/Simulation.ipynb | 2528 +++++++++++++++++ 3 files changed, 2580 insertions(+), 421 deletions(-) delete mode 100644 examples/CreateSample.ipynb rename examples/{FittingPdCw1d.ipynb => Fitting.ipynb} (86%) create mode 100644 examples/Simulation.ipynb diff --git a/examples/CreateSample.ipynb b/examples/CreateSample.ipynb deleted file mode 100644 index c966195b..00000000 --- a/examples/CreateSample.ipynb +++ /dev/null @@ -1,370 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "8a365a14", - "metadata": {}, - "source": [ - "# Creating sample\n", - "\n", - "This notebook shows how we can create a sample from atoms and calculate diffraction profiles using both constant wavelength and time-of-flight experiment types." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9ecc4733", - "metadata": {}, - "outputs": [], - "source": [ - "from easyCore import np\n", - "from easyDiffractionLib.sample import Sample\n", - "from easyDiffractionLib import Site, Phase, Phases\n", - "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", - "\n", - "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", - "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", - "from easyDiffractionLib.Profiles.P1D import Instrument1DTOFParameters as TOFParams\n", - "from easyDiffractionLib.Profiles.P1D import Powder1DParameters\n", - "\n", - "from easyCore.Fitting.Fitting import Fitter\n", - "\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "id": "283767f9", - "metadata": {}, - "source": [ - "**Preparing the sample and data**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1ed88f8e", - "metadata": {}, - "outputs": [], - "source": [ - "calculator = Calculator()\n", - "calculator.switch('CrysPy') # this is the default" - ] - }, - { - "cell_type": "markdown", - "id": "19a39b25", - "metadata": {}, - "source": [ - "Create an atom using `Site` interface" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "41020330", - "metadata": {}, - "outputs": [], - "source": [ - "atom = Site.from_pars(label=\"Cl1\",\n", - " specie='Cl',\n", - " fract_x=0.0,\n", - " fract_y=0.0,\n", - " fract_z=0.0)" - ] - }, - { - "cell_type": "markdown", - "id": "910aed87", - "metadata": {}, - "source": [ - "Create a phase" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1e2f3193", - "metadata": {}, - "outputs": [], - "source": [ - "phase = Phase(name=\"salt\")\n", - "\n", - "# set the space group\n", - "phase.spacegroup.space_group_HM_name = \"F m -3 m\"\n", - "\n", - "# add the atom\n", - "phase.add_atom(atom)" - ] - }, - { - "cell_type": "markdown", - "id": "d4532d8b", - "metadata": {}, - "source": [ - "Add another atom (using `Phase` interface)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4231d16a", - "metadata": {}, - "outputs": [], - "source": [ - "phase.add_atom('Na1', 'Na', 0.5, 0.5, 0.5)" - ] - }, - { - "cell_type": "markdown", - "id": "81ace320", - "metadata": {}, - "source": [ - "Visualise the structure" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e68ddbea", - "metadata": {}, - "outputs": [], - "source": [ - "import py3Dmol\n", - "viewer = py3Dmol.view()\n", - "viewer.addModel(phase.to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", - "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", - "viewer.addUnitCell()\n", - "viewer.replicateUnitCell(2,2,2)\n", - "#viewer.setStyle({'sym':2},{'sphere':{'scale':.5,'color':'blue'},'stick':{'color':'cyan'}})\n", - "viewer.zoomTo()" - ] - }, - { - "cell_type": "markdown", - "id": "ebe0e0ee", - "metadata": {}, - "source": [ - "Create Phases object" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "29071aa2", - "metadata": {}, - "outputs": [], - "source": [ - "phases = Phases()\n", - "phases.append(phase)" - ] - }, - { - "cell_type": "markdown", - "id": "e93c42b9", - "metadata": {}, - "source": [ - "Create and modify a Parameters object" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "83e3845f", - "metadata": {}, - "outputs": [], - "source": [ - "parameters = CWParams.default()\n", - "\n", - "parameters.length_a = 5.6402\n", - "parameters.resolution_u = 0.1447\n", - "parameters.resolution_v = -0.4252\n", - "parameters.resolution_w = 0.3864\n", - "parameters.resolution_x = 0.0\n", - "parameters.resolution_y = 0.0" - ] - }, - { - "cell_type": "markdown", - "id": "370f0baa", - "metadata": {}, - "source": [ - "Create and modify a Pattern object" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "70fa1571", - "metadata": {}, - "outputs": [], - "source": [ - "pattern = Powder1DParameters.default()\n", - "pattern.zero_shift = 0.0\n", - "pattern.scale = 100.0" - ] - }, - { - "cell_type": "markdown", - "id": "42da041a", - "metadata": {}, - "source": [ - "Finally, create the Sample" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c90662f7", - "metadata": {}, - "outputs": [], - "source": [ - "S = Sample(phases=phases, parameters=parameters, calculator=calculator)" - ] - }, - { - "cell_type": "markdown", - "id": "00e24eab", - "metadata": {}, - "source": [ - "Calculate the profile - using the calculator we defined previously.\n", - "Note that we don't run anything on the `Sample` object but on a separate `Calculator` instance" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "398bbb91", - "metadata": {}, - "outputs": [], - "source": [ - "x_data = np.linspace(1, 120, 500)\n", - "y_data = calculator.fit_func(x_data)\n", - "\n", - "%matplotlib notebook\n", - "plt.plot(x_data, y_data, label='CW Simulation')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "id": "cee54608", - "metadata": {}, - "source": [ - "## Switch to TOF" - ] - }, - { - "cell_type": "markdown", - "id": "ea998649", - "metadata": {}, - "source": [ - "Retrieve the phases and pattern" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eedade0f", - "metadata": {}, - "outputs": [], - "source": [ - "phases = S.phases[0]\n", - "pattern = S.pattern" - ] - }, - { - "cell_type": "markdown", - "id": "161efebd", - "metadata": {}, - "source": [ - "Modify the parameters to correspond to a TOF experiment" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "59381e83", - "metadata": {}, - "outputs": [], - "source": [ - "parameters = TOFParams.default()\n", - "parameters.length_a = 5.6402\n", - "parameters.dtt1 = 6167.24700\n", - "parameters.dtt2 = -2.28000\n", - "parameters.ttheta_bank = 145.00" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2aa1648d", - "metadata": {}, - "outputs": [], - "source": [ - "pattern.zero_shift = 0.0\n", - "pattern.scale = 100.0\n", - "\n", - "tof_str = 'Npowder1DTOF'\n", - "interfaces = calculator.interface_compatability(tof_str)\n", - "print(interfaces[0])\n", - "calculator.switch(interfaces[0])\n", - "\n", - "S = Sample(phases=phases, parameters=parameters, calculator=calculator)\n" - ] - }, - { - "cell_type": "markdown", - "id": "f6676f54", - "metadata": {}, - "source": [ - "Calculate the profile again, this time based on the TOF parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eac224b9", - "metadata": {}, - "outputs": [], - "source": [ - "x_data = np.linspace(5000, 60000, 500)\n", - "y_data = calculator.fit_func(x_data)\n", - "\n", - "%matplotlib notebook\n", - "\n", - "plt.plot(x_data, y_data, label='TOF Simulation')\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3647d5ab", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/FittingPdCw1d.ipynb b/examples/Fitting.ipynb similarity index 86% rename from examples/FittingPdCw1d.ipynb rename to examples/Fitting.ipynb index b4630e8d..9fb39a33 100644 --- a/examples/FittingPdCw1d.ipynb +++ b/examples/Fitting.ipynb @@ -30,7 +30,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /Users/asazonov/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-x2vVD2Ys-py3.7/lib/python3.7/site-packages/GSASII/bindist\n", + "GSAS-II binary directory: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" ] } @@ -46,7 +46,7 @@ "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", - "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", "\n", "# Vizualization\n", "import py3Dmol\n", @@ -157,10 +157,10 @@ "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + "

\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] @@ -207,7 +207,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -304,7 +304,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -314,7 +314,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8e78ecf96d3847c1b60fc307b3059044", + "model_id": "5576dadff8e3423cb4ffd8479d148c8c", "version_major": 2, "version_minor": 0 }, @@ -382,12 +382,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" + "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" ] } ], "source": [ - "job = Job(phases=phases, parameters=Instrument1DCWParameters.default(), calculator=calculator)" + "job = Job(phases=phases, parameters=CWParams.default(), calculator=calculator)" ] }, { @@ -423,7 +423,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -433,7 +433,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5694871b850a4d26a6f7d9dd4986a6a5", + "model_id": "056ea7a850624c478431b451dc981f2f", "version_major": 2, "version_minor": 0 }, @@ -477,7 +477,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -487,7 +487,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7afef53df7ba4f07b9e6a8ce5491a402", + "model_id": "835fc41bc483460992fe6221f8352ca5", "version_major": 2, "version_minor": 0 }, @@ -533,7 +533,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -543,7 +543,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "07e158e0e1054695bac62299cb028e1d", + "model_id": "f8d9b3eb4fa04c609f5cfdffc2e496fe", "version_major": 2, "version_minor": 0 }, @@ -594,7 +594,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -604,7 +604,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "489db9c7825b42d49ae4716eb3c37d18", + "model_id": "20e950f859b04c25bbd54a6e61dc63ad", "version_major": 2, "version_minor": 0 }, @@ -702,7 +702,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Available minimizers: ['lmfit', 'bumps']\n", + "Available minimizers: ['lmfit', 'bumps', 'DFO_LS']\n", "Current minimizer: lmfit\n", "Available methods of current minimizers: ['least_squares', 'leastsq', 'differential_evolution', 'basinhopping', 'ampgo', 'nelder', 'lbfgsb', 'powell', 'cg', 'newton', 'cobyla', 'bfgs']\n" ] @@ -760,23 +760,23 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 27, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "688df481b4a24a668e5f307ecc0bf48b", + "model_id": "4165c69111104fbcb310a5c31239c951", "version_major": 2, "version_minor": 0 }, @@ -808,7 +808,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -825,7 +825,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ @@ -834,7 +834,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -860,23 +860,23 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 31, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "009219b8d65d4a64905f0772a2d269a4", + "model_id": "a5dcd6155d3f41069c446996a77b9339", "version_major": 2, "version_minor": 0 }, @@ -908,7 +908,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -918,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -959,27 +959,27 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 34, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "85a3e2cef709405cb5380da0257eb361", + "model_id": "cb7001f206ba447dbc03a6b21c9db6c3", "version_major": 2, "version_minor": 0 }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAADU1ElEQVR4nOydeZgcZbn276rqbfbJQjYJSVjCElYBMWwfChIi5ijiUQQFJODBk8hhERAPcBBRBEXUwyYoQRQMcgRF9rAvCaCRkJCQACELIZkkZDJrL7V+f1S9b721dHf1dE/3zPTzu65c6emurq7qru666342ybIsCwRBEARBEETdINd6AwiCIAiCIIjqQgKQIAiCIAiiziABSBAEQRAEUWeQACQIgiAIgqgzSAASBEEQBEHUGSQACYIgCIIg6gwSgARBEARBEHUGCUCCIAiCIIg6gwQgQRAEQRBEnUECkCAIgiAIos4gAUgQBEEQBFFnkAAkCIIgCIKoM0gAEgRBEARB1BkkAAmCIAiCIOoMEoAEQRAEQRB1BglAgiAIgiCIOoMEIEEQBEEQRJ1BApAgCIIgCKLOIAFIEARBEARRZ5AAJAiCIAiCqDNIABIEQRAEQdQZJAAJgiAIgiDqDBKABEEQBEEQdQYJQIIgCIIgiDqDBCBBEARBEESdQQKQIAiCIAiiziABSBAEQRAEUWeQACQIgiAIgqgzSAASBEEQBEHUGSQACYIgCIIg6gwSgARBEARBEHUGCUCCIAiCIIg6gwQgQRAEQRBEnUECkCAIgiAIos4gAUgQBEEQBFFnkAAkCIIgCIKoM0gAEgRBEARB1BkkAAmCIAiCIOoMEoAEQRAEQRB1BglAgiAIgiCIOoMEIEEQBEEQRJ1BApAgCIIgCKLOIAFIEARBEARRZ5AAJAiCIAiCqDNIABIEQRAEQdQZJAAJgiAIgiDqDBKABEEQBEEQdQYJQIIgCIIgiDqDBCBBEARBEESdQQKQIAiCIAiiziABSBAEQRAEUWeQACQIgiAIgqgzSAASBEEQBEHUGSQACYIgCIIg6gwSgARBEARBEHUGCUCCIAiCIIg6I1brDRjOmKaJzZs3o6WlBZIk1XpzCIIgCIKIgGVZ6O3txaRJkyDL9emFkQAsg82bN2Py5Mm13gyCIAiCIAbAhx9+iF133bXWm1ETSACWQUtLCwD7AGptba3x1hAEQRAEEYWenh5MnjyZn8frERKAZcDCvq2trSQACYIgCGKYUc/pW/UZ+CYIgiAIgqhjSAASBEEQBEHUGSQACYIgCIIg6owhlwN4/fXX46GHHsLq1avR0NCAI488EjfccAP23ntvvsxxxx2HF1980fO8//iP/8Add9zB/964cSO+853v4Pnnn0dzczPOOussXH/99YjF3F1+4YUXcPHFF2PlypWYPHkyrrzySpx99tkV3R/LsqDrOgzDqOh6CYKhKApisVhd57IQBEEQpTHkBOCLL76IefPm4fDDD4eu6/jBD36AE088EatWrUJTUxNf7rzzzsO1117L/25sbOS3DcPAySefjAkTJmDx4sXYsmULzjzzTMTjcfzkJz8BAKxbtw4nn3wyzj//fNx333149tlnce6552LixImYNWtWRfZFVVVs2bIF6XS6IusjiHw0NjZi4sSJSCQStd4UgiAIYhggWZZl1XojCrF9+3aMGzcOL774Io499lgAtgN48MEH45e//GXoc5544gl84QtfwObNmzF+/HgAwB133IHLL78c27dvRyKRwOWXX47HHnsMb7/9Nn/eaaedhq6uLjz55JORtq2npwdtbW3o7u4OVAGbpon33nsPiqJgl112QSKRIIeGqDiWZUFVVWzfvh2GYWCvvfaq26amBEEQUSl0/q4XhpwD6Ke7uxsAMHr0aM/99913H/74xz9iwoQJmDNnDq666iruAi5ZsgQHHHAAF38AMGvWLHznO9/BypUrccghh2DJkiU44YQTPOucNWsWLrzwwrzbksvlkMvl+N89PT15l1VVFaZpYvLkyR53kiAqTUNDA+LxODZs2ABVVZFKpWq9SQRBEMQQZ0gLQNM0ceGFF+Koo47C/vvvz+8//fTTMWXKFEyaNAnLly/H5ZdfjjVr1uChhx4CAHR0dHjEHwD+d0dHR8Flenp6kMlk0NDQENie66+/Hj/84Q9L2gdyY4hqQMcZQRAEUQpDWgDOmzcPb7/9Nl555RXP/d/+9rf57QMOOAATJ07E8ccfj7Vr12KPPfYYtO254oorcPHFF/O/WSdxgiAIgiCI4cSQtQ3mz5+PRx99FM8//3zROX1HHHEEAOD9998HAEyYMAFbt271LMP+njBhQsFlWltbQ90/AEgmk3zqB03/IAiCIAhiuDLkBKBlWZg/fz4efvhhPPfcc5g2bVrR5yxbtgwAMHHiRADAzJkzsWLFCmzbto0vs2jRIrS2tmK//fbjyzz77LOe9SxatAgzZ86s0J4MX84++2x86UtfqvVmEARBEAQxSAw5AThv3jz88Y9/xP3334+WlhZ0dHSgo6MDmUwGALB27Vr86Ec/wtKlS7F+/Xo88sgjOPPMM3HsscfiwAMPBACceOKJ2G+//fDNb34Tb731Fp566ilceeWVmDdvHpLJJADg/PPPxwcffIDLLrsMq1evxm233YY///nPuOiii2q27wRBEARBENVgyAnA22+/Hd3d3TjuuOMwceJE/u+BBx4AACQSCTzzzDM48cQTsc8+++CSSy7Bqaeeir///e98HYqi4NFHH4WiKJg5cya+8Y1v4Mwzz/T0DZw2bRoee+wxLFq0CAcddBBuuukm/Pa3v61YD8CRwnHHHYfvfve7uPDCCzFq1CiMHz8ed911F/r7+/Gtb30LLS0t2HPPPfHEE094nvf2229j9uzZaG5uxvjx4/HNb34TH3/8MX/8ySefxNFHH4329naMGTMGX/jCF7B27Vr+uKqqmD9/PiZOnIhUKoUpU6bg+uuvr9p+E4OHaVq4edG7ePm97bXeFIIgiLplyBWBFGtLOHny5MAUkDCmTJmCxx9/vOAyxx13HN58882Stq8cLMtCRqv+RJCGuFJWD8Lf//73uOyyy/DGG2/ggQcewHe+8x08/PDDOOWUU/CDH/wAN998M775zW9i48aNaGxsRFdXFz772c/i3HPPxc0334xMJoPLL78cX/3qV/Hcc88BAPr7+3HxxRfjwAMPRF9fH66++mqccsopWLZsGWRZxq9//Ws88sgj+POf/4zddtsNH374IT788MNKvSVEDXn87S341bPvAQDW//TkGm8NQRBEfTLkBOBIJqMZ2O/qp6r+uquunYXGxMA/6oMOOghXXnklALsS+qc//SnGjh2L8847DwBw9dVX4/bbb8fy5cvx6U9/GrfccgsOOeQQPnUFAO6++25MnjwZ7777LqZPn45TTz3V8xp33303dtllF6xatQr7778/Nm7ciL322gtHH300JEnClClTBrz9xNCioztb600gCIKoe4ZcCJgYerDcSsAOr48ZMwYHHHAAv4/1U2RFN2+99Rafwcz+7bPPPgDAw7zvvfcevv71r2P33XdHa2srpk6dCsCe4QzYhSjLli3D3nvvjQsuuABPP/30oO8nUR2SMfrZIQiCqDXkAFaRhriCVddWP8ewIa6U9fx4PO75W5Ikz30svGyaJgCgr68Pc+bMwQ033BBYF6vUnjNnDqZMmYK77roLkyZNgmma2H///aGqKgDgk5/8JNatW4cnnngCzzzzDL761a/ihBNOwP/93/+VtS9E7UkKx2NON5CMlXd8EgRBEKVDArCKSJJUVih2uPDJT34Sf/nLXzB16lTEYsH93bFjB9asWYO77roLxxxzDAAEmn0DQGtrK772ta/ha1/7Gr7yla/gpJNOQmdnZ2AsIDG8kIV8VFU3SQASBEHUAIrFEBVn3rx56OzsxNe//nX84x//wNq1a/HUU0/hW9/6FgzDwKhRozBmzBjceeedeP/99/Hcc895JqwAwC9+8Qv86U9/wurVq/Huu+/iwQcfxIQJE9De3l6bnSIqhuE4xQBQuOSLIAiCGCxIABIVZ9KkSXj11VdhGAZOPPFEHHDAAbjwwgvR3t4OWZYhyzIWLlyIpUuXYv/998dFF12En/3sZ551tLS04MYbb8Rhhx2Gww8/HOvXr8fjjz9OM29HAJrhyj7LLLAgQRAEMWhIVrG+K0Reenp60NbWhu7u7sBYuGw2i3Xr1mHatGlIpVI12kKiXhhOx9vvF6/H/zyyEgCw7OrPob0xUeMtIgii3ih0/q4XyE4hCKKq6KZ7zWnS5SdBEERNIAFIEERVMT0CkBQgQRBELSABSBBEVbGE0g/SfwRBELWBBCBBEFVFFH2UgkwQBFEbSAASBFFVxLw/kn8EQRC1gQQgQRBVRQwBUw4gQRBEbSABSBBEVRE1H1UBEwRB1AYSgARBVBUx749yAAmCIGoDCUCCIKqKtwikdttBEARRz5AAJAaVa665BgcffHBZ61BVFXvuuScWL15cmY2qMd///vfx3e9+t9abUTNEzUcCkCAIojaQACQ8nH322fjSl75U683wcMcdd2DatGk48sgjPfc///zz+PznP48xY8agsbER++23Hy655BJ89NFHg7Yt69evhyRJ/N+YMWNw4okn4s0334y8ju9973v4/e9/jw8++GDQtnMoIxZ+UBEIQRBEbSABSAxpLMvCLbfcgrlz53ru/81vfoMTTjgBEyZMwF/+8hesWrUKd9xxB7q7u3HTTTeFrsswDJimWZHteuaZZ7BlyxY89dRT6Ovrw+zZs9HV1RXpuWPHjsWsWbNw++23V2RbhhsWtYEhCIKoOSQAiYKYpokbb7wRe+65J5LJJHbbbTf8+Mc/5o9ffvnlmD59OhobG7H77rvjqquugqZpBdd59913Y8aMGUgmk5g4cSLmz5+fd9mlS5di7dq1OPnkk/l9mzZtwgUXXIALLrgAd999N4477jhMnToVxx57LH7729/i6quvBgDcc889aG9vxyOPPIL99tsPyWQSr7zyCuLxODo6Ojyvc+GFF+KYY44BAGzYsAFz5szBqFGj0NTUhBkzZuDxxx/3LD9mzBhMmDABhx12GH7+859j69ateP3113Httddi//33D+zHwQcfjKuuuor/PWfOHCxcuLDg+zRSscgBJAiCqDmxWm9AXWFZgJau/uvGGwFJGtBTr7jiCtx11124+eabcfTRR2PLli1YvXo1f7ylpQX33HMPJk2ahBUrVuC8885DS0sLLrvsstD13X777bj44ovx05/+FLNnz0Z3dzdeffXVvK//8ssvY/r06WhpaeH3Pfjgg1BVNe9rtLe389vpdBo33HADfvvb32LMmDGYPHkydt99d/zhD3/ApZdeCgDQNA333XcfbrzxRgDAvHnzoKoqXnrpJTQ1NWHVqlVobm7Ou40NDQ0A7FzFc845Bz/84Q/xj3/8A4cffjgA4M0338Ty5cvx0EMP8ed86lOfwqZNm7B+/XpMnTo177pHIt4cQBKABEEQtYAEYDXR0sBPJlX/dX+wGUg0lfy03t5e/OpXv8Itt9yCs846CwCwxx574Oijj+bLXHnllfz21KlT8b3vfQ8LFy7MK86uu+46XHLJJfiv//ovfh8TSmFs2LABkyZ537P33nsPra2tmDhxYtF90DQNt912Gw466CB+39y5c7FgwQIuAP/+978jm83iq1/9KgBg48aNOPXUU3HAAQcAAHbfffe86+/q6sKPfvQjNDc341Of+hTGjx+PWbNmYcGCBXy/FixYgP/3//6fZz1snzZs2FB/ApCqgAmCIGoOhYCJvLzzzjvI5XI4/vjj8y7zwAMP4KijjsKECRPQ3NyMK6+8Ehs3bgxddtu2bdi8eXPB9fnJZDJIpVKe+yzLghTR0UwkEjjwwAM995199tl4//338dprrwGwQ8Vf/epX0dRki+QLLrgA1113HY466ij8z//8D5YvXx5Y75FHHonm5maMGjUKb731Fh544AGMHz8eAHDeeefhT3/6E7LZLFRVxf33349zzjnH83zmGqbTNXCEa4y3CKSGG0IQBFHHkANYTeKNthtXi9cdAEyk5GPJkiU444wz8MMf/hCzZs1CW1sbFi5cmLcIo9j6whg7dixWrFjhuW/69Ono7u7Gli1birqADQ0NAbE4btw4zJkzBwsWLMC0adPwxBNP4IUXXuCPn3vuuZg1axYee+wxPP3007j++utx0003eVq3PPDAA9hvv/0wZswYT8gZsPP7kskkHn74YSQSCWiahq985SueZTo7OwEAu+yyS9S3YsTgCQFTGQhBEERNIAewmkiSHYqt9r8B5v/ttddeaGhowLPPPhv6+OLFizFlyhT893//Nw477DDstdde2LBhQ971tbS0YOrUqXnXF8YhhxyC1atXe3LFvvKVryCRSPCcPT9RqnHPPfdcPPDAA7jzzjuxxx574KijjvI8PnnyZJx//vl46KGHcMkll+Cuu+4KPL7HHnsExB8AxGIxnHXWWViwYAEWLFiA0047LSB+3377bcTjccyYMaPoto40PKPgKlOUTRAEQZQIOYBEXlKpFC6//HJcdtllSCQSOOqoo7B9+3asXLkSc+fOxV577YWNGzdi4cKFOPzww/HYY4/h4YcfLrjOa665Bueffz7GjRuH2bNno7e3F6+++mrexsif+cxn0NfXh5UrV/Lq2smTJ+Pmm2/G/Pnz0dPTgzPPPBNTp07Fpk2bcO+996K5uTmvC8mYNWsWWltbcd111+Haa6/1PHbhhRdi9uzZmD59Onbu3Innn38e++67bwnvnC0w2XPCilxefvllHHPMMQNyRYc7VAVMEARRe8gBJApy1VVX4ZJLLsHVV1+NfffdF1/72tewbds2AMC//du/4aKLLsL8+fNx8MEHY/HixZ5WJ2GcddZZ+OUvf4nbbrsNM2bMwBe+8AW89957eZcfM2YMTjnlFNx3332e+//zP/8TTz/9ND766COccsop2GeffXDuueeitbUV3/ve94rulyzLOPvss2EYBs4880zPY4ZhYN68edh3331x0kknYfr06bjtttuKrlNkr732wpFHHol99tkHRxxxRODxhQsX4rzzzitpnSMFknwEQRC1R7KoD8OA6enpQVtbG7q7u9Ha2up5LJvNYt26dZg2bVqgiIEojeXLl+Nzn/sc1q5d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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAADnwElEQVR4nOydd7gU5fn+75nZdjpNOGAQUECKBaLGghqNBVExGo3RaAAF80MhRsUSEyW2xGjssUUNoBEF/UYT7NgFwRKUgICKSBHh0E/dMvX3x847885smy1n95yzz+e6uNizOzs7szu7c8/9NMEwDAMEQRAEQRBE2SCWegMIgiAIgiCI4kICkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMoMEIEEQBEEQRJlBApAgCIIgCKLMIAFIEARBEARRZpAAJAiCIAiCKDNIABIEQRAEQZQZJAAJgiAIgiDKDBKABEEQBEEQZQYJQIIgCIIgiDKDBCBBEARBEESZQQKQIAiCIAiizCABSBAEQRAEUWaQACQIgiAIgigzSAASBEEQBEGUGSQACYIgCIIgygwSgARBEARBEGUGCUCCIAiCIIgygwQgQRAEQRBEmUECkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMoMEIEEQBEEQRJlBApAgCIIgCKLMIAFIEARBEARRZpAAJAiCIAiCKDNIABIEQRAEQZQZJAAJgiAIgiDKDBKABEEQBEEQZQYJQIIgCIIgiDKDBCBBEARBEESZQQKQIAiCIAiizCABSBAEQRAEUWaQACQIgiAIgigzSAASBEEQBEGUGSQACYIgCIIgygwSgARBEARBEGUGCUCCIAiCIIgygwQgQRAEQRBEmUECkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMsNX6g3ozOi6ji1btqCmpgaCIJR6cwiCIAiC8IBhGGhpaUG/fv0giuXphZEAzIMtW7agf//+pd4MgiAIgiBy4LvvvsMPfvCDUm9GSSABmAc1NTUA4gdQbW1tibeGIAiCIAgvNDc3o3///tZ5vBwhAZgHLOxbW1tLApAgCIIgOhnlnL5VnoFvgiAIgiCIMoYEIEEQBEEQRJlBApAgCIIgCKLM6HA5gLfffjteeOEFfPnll6ioqMBRRx2FO+64A/vvv7+1zHHHHYf333/f8bz/9//+Hx599FHr702bNuHSSy/Fu+++i+rqakycOBG33347fD57l9977z1cddVVWLVqFfr3748bbrgBkyZNavd9JAiisBiGAVVVoWlaqTeFIIgOgCRJ8Pl8ZZ3jl4kOJwDff/99TJs2DYcddhhUVcXvf/97nHzyyVi9ejWqqqqs5S655BLccsst1t+VlZXWbU3TcNppp6G+vh5LlizB1q1bMWHCBPj9fvz5z38GAKxfvx6nnXYapk6dirlz5+Ltt9/GlClT0LdvX4wdO7Z4O0wQRF7IsoytW7ciHA6XelMIguhAVFZWom/fvggEAqXelA6JYBiGUeqNSMeOHTvQu3dvvP/++zj22GMBxB3AUaNG4b777kv6nNdeew2nn346tmzZgj59+gAAHn30UVx33XXYsWMHAoEArrvuOrzyyiv44osvrOedd955aGxsxOuvv+5p25qbm1FXV4empiaqAiaIEqDrOtauXQtJkrDXXnshEAjQFT9BlDmGYUCWZezYsQOapmHIkCEJzZ7p/N0BHUA3TU1NAIAePXo47p87dy6efvpp1NfXY/z48bjxxhstF3Dp0qU48MADLfEHAGPHjsWll16KVatWYfTo0Vi6dClOPPFExzrHjh2LK664on13iCCIgiHLMnRdR//+/R1RAIIgypuKigr4/X5s3LgRsiwjFAqVepM6HB1aAOq6jiuuuAJjxozBAQccYN3/y1/+EgMGDEC/fv2wYsUKXHfddfjqq6/wwgsvAAAaGhoc4g+A9XdDQ0PaZZqbmxGJRFBRUZGwPbFYDLFYzPq7ubm5MDtKEERelOsoJ4IgUkO/C+np0AJw2rRp+OKLL7B48WLH/b/+9a+t2wceeCD69u2LE044AevWrcN+++3Xbttz++234+abb2639RMEQRAEQRSDDiuPp0+fjpdffhnvvvtuxjl9hx9+OADgm2++AQDU19dj27ZtjmXY3/X19WmXqa2tTer+AcD111+PpqYm6993332X/Y4RBEEQBEGUmA4nAA3DwPTp0/Hiiy/inXfewaBBgzI+Z/ny5QCAvn37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HW688cak6zEMIyFFKldmz56NrVu3Wv/c85/79++P2bNnO+578cUXc5o9PWnSJDzwwAN5bW8506EFoK7ruOKKKzBmzBgccMABAICGhgYEAgHLOmf06dMHDQ0N1jK8+GOPs8fSLdPc3IxIJJJ0e2KxGJqbmx3/CILIDkcjaJcAFMXyTYfXdR133nknBg8ejGAwiH322Qd/+tOfrMevu+46DB06FJWVldh3331x4403QlHSz1KeNWsWRo4ciWAwiL59+2L69Okpl122bBnWrVuH0047zbpv8+bNuPzyy3H55Zdj1qxZOO644zBw4EAce+yxeOKJJ6y0GhbOXLBgAUaMGIFgMIjFixfD7/dbv7mMK664AscccwwAYOPGjRg/fjy6d++OqqoqjBw5Eq+++qpj+Z49e6K+vh6HHnoo7rrrLmzbtg0ff/wxbrnlFuu8wDNq1CiH0Bk/fjzmzZuX9n3KlXTv7z333IMDDzwQVVVV6N+/Py677DK0tramXd97b7yHww47DKFQCL169cJZZ52VctkdO3bgnXfewfjx4637wuEwLrroIpx66qlYsGABTjzxRAwaNAiHH3447rrrLvz973+Pv85770EQBLz22ms45JBDEAwG8fTTT0MURfz3v/91vM59992HAQMGQNd17NmzBxdccAH22msvVFRUYMiQIQlirlu3bqivr7f+MfOGMXHiRMybN89xnp01axYmTpyY9r1Jxvjx4/Hf//4X69aty/q5RAcXgNOmTcMXX3zRbl/ebLn99ttRV1dn/evfv3+pN4kgOh2OIhCXAJQKIAANw4AeDpfkHy9us+X666/HX/7yF9x4441YvXo1nnnmGcdFak1NDebMmYPVq1fj/vvvx+OPP542ZeWRRx7BtGnT8Otf/xorV67EggULMHjw4JTLL1q0CEOHDkVNTY113/PPPw9ZlnHttdcmfQ5/IR4Oh3HHHXfgiSeewKpVq3DooYdi3333xT//+U9rGUVRMHfuXFx88cUA4r/xsVgMH3zwAVauXIk77rgjrRNUUVEBIJ6rePHFF2PNmjX49NNPrcc///xzrFixAhdddJF1349+9CNs3rwZGzZsSLneXMj0/oqiiAceeACrVq3Ck08+iXfeeSfl+wgA7y98H7+d+Fuceuqp+Pzzz/H222/jRz/6UcrlFy9ejMrKSgwfPty674033sDOnTs9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", "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] @@ -995,6 +995,7 @@ "plt.plot(meas_x, meas_y, label='Imeas')\n", "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", + "plt.plot(meas_x, calc_y_cryspy-calc_y_crysfml, label='Icalc (CrysPy) - Icalc (CrysFML)')\n", "plt.legend()" ] }, @@ -1007,23 +1008,23 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 35, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ae28c78d7ec547f2a7da827d7974af3e", + "model_id": "1ae89e177ecc47a0a0ad82e81d37e881", "version_major": 2, "version_minor": 0 }, diff --git a/examples/Simulation.ipynb b/examples/Simulation.ipynb new file mode 100644 index 00000000..9b2eaa02 --- /dev/null +++ b/examples/Simulation.ipynb @@ -0,0 +1,2528 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8a365a14", + "metadata": {}, + "source": [ + "# Simulation of the diffraction pattern\n", + "This notebook shows how we can create a sample (phase) from atoms and calculate diffraction profiles using both constant wavelength and time-of-flight experiment types." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9ecc4733", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GSAS-II binary directory: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", + "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" + ] + } + ], + "source": [ + "# esyScience, technique-independent\n", + "from easyCore import np\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "# esyScience, diffraction\n", + "from easyDiffractionLib import Site, Phase, Phases\n", + "from easyDiffractionLib.sample import Sample as Job\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DTOFParameters as TOFParams\n", + "from easyDiffractionLib.Profiles.P1D import Powder1DParameters\n", + "\n", + "# Vizualization\n", + "import py3Dmol\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "283767f9", + "metadata": {}, + "source": [ + "## --- Sample ---" + ] + }, + { + "cell_type": "markdown", + "id": "19a39b25", + "metadata": {}, + "source": [ + "#### Create an atom using `Site` interface" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "41020330", + "metadata": {}, + "outputs": [], + "source": [ + "atom = Site.from_pars(label=\"Cl\",\n", + " specie=\"Cl\",\n", + " fract_x=0.0,\n", + " fract_y=0.0,\n", + " fract_z=0.0)" + ] + }, + { + "cell_type": "markdown", + "id": "910aed87", + "metadata": {}, + "source": [ + "#### Create a phase, set space group, add atom" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "1e2f3193", + "metadata": {}, + "outputs": [], + "source": [ + "phase = Phase(name=\"salt\")\n", + "\n", + "phase.spacegroup.space_group_HM_name = \"F m -3 m\"\n", + "\n", + "phase.add_atom(atom)" + ] + }, + { + "cell_type": "markdown", + "id": "d4532d8b", + "metadata": {}, + "source": [ + "#### Add another atom (using `Phase` interface)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4231d16a", + "metadata": {}, + "outputs": [], + "source": [ + "phase.add_atom('Na', 'Na', 0.5, 0.5, 0.5)" + ] + }, + { + "cell_type": "markdown", + "id": "81ace320", + "metadata": {}, + "source": [ + "#### Visualise the structure" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e68ddbea", + "metadata": {}, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "text/html": [ + "
\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "viewer = py3Dmol.view()\n", + "viewer.addModel(phase.to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", + "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", + "viewer.addUnitCell()\n", + "viewer.replicateUnitCell(2,2,2)\n", + "viewer.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "id": "ebe0e0ee", + "metadata": {}, + "source": [ + "#### Create Phases object" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "29071aa2", + "metadata": {}, + "outputs": [], + "source": [ + "phases = Phases()\n", + "phases.append(phase)" + ] + }, + { + "cell_type": "markdown", + "id": "07db27b5", + "metadata": {}, + "source": [ + "## --- Experiment ---" + ] + }, + { + "cell_type": "markdown", + "id": "e93c42b9", + "metadata": {}, + "source": [ + "#### Create and modify a `Parameters` object" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "83e3845f", + "metadata": {}, + "outputs": [], + "source": [ + "parameters = CWParams.default()\n", + "\n", + "parameters.length_a = 5.6402\n", + "parameters.resolution_u = 0.1447\n", + "parameters.resolution_v = -0.4252\n", + "parameters.resolution_w = 0.3864\n", + "parameters.resolution_x = 0.0\n", + "parameters.resolution_y = 0.0" + ] + }, + { + "cell_type": "markdown", + "id": "370f0baa", + "metadata": {}, + "source": [ + "#### Create and modify a Pattern object" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "70fa1571", + "metadata": {}, + "outputs": [], + "source": [ + "pattern = Powder1DParameters.default()\n", + "\n", + "pattern.zero_shift = 0.0\n", + "pattern.scale = 100.0" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "1ed88f8e", + "metadata": {}, + "outputs": [], + "source": [ + "calculator = Calculator(interface_name='CrysPy') # this is the default" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "784fb8e5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current calculator engine: CrysPy\n" + ] + } + ], + "source": [ + "print(f\"Current calculator engine: {calculator.current_interface_name}\")" + ] + }, + { + "cell_type": "markdown", + "id": "42da041a", + "metadata": {}, + "source": [ + "#### Finally, create the job" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c90662f7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" + ] + } + ], + "source": [ + "job_cw = Job(phases=phases, parameters=parameters, calculator=calculator)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "210bc79d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available calculator engines: ['CrysPy', 'CrysFML', 'GSASII']\n", + "Available calculators for CW: ['CrysPy', 'CrysFML', 'GSASII']\n" + ] + } + ], + "source": [ + "print(f\"Available calculator engines: {calculator.available_interfaces}\")\n", + "print(f\"Available calculators for CW: {calculator.interface_compatability('Npowder1DCW')}\")" + ] + }, + { + "cell_type": "markdown", + "id": "eb234f76", + "metadata": {}, + "source": [ + "## --- Analysis ---" + ] + }, + { + "cell_type": "markdown", + "id": "00e24eab", + "metadata": {}, + "source": [ + "#### Calculate the profile using the calculator we defined previously.\n", + "Note that we don't run anything on the `Sample` object but on a separate `Calculator` instance" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "398bbb91", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", + " if (this.ResizeObserver === undefined) {\n", + " if (window.ResizeObserver !== undefined) {\n", + " this.ResizeObserver = window.ResizeObserver;\n", + " } else {\n", + " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", + " this.ResizeObserver = obs.ResizeObserver;\n", + " }\n", + " }\n", + "\n", + " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " this.resizeObserverInstance.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'dblclick',\n", + " on_mouse_event_closure('dblclick')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " var img = evt.data;\n", + " if (img.type !== 'image/png') {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " img.type = 'image/png';\n", + " }\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " img\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.key === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.key;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.key !== 'Control') {\n", + " value += 'ctrl+';\n", + " }\n", + " else if (event.altKey && event.key !== 'Alt') {\n", + " value += 'alt+';\n", + " }\n", + " else if (event.shiftKey && event.key !== 'Shift') {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k' + event.key;\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "\n", + "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", + "// prettier-ignore\n", + "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.binaryType = comm.kernel.ws.binaryType;\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " function updateReadyState(_event) {\n", + " if (comm.kernel.ws) {\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " } else {\n", + " ws.readyState = 3; // Closed state.\n", + " }\n", + " }\n", + " comm.kernel.ws.addEventListener('open', updateReadyState);\n", + " comm.kernel.ws.addEventListener('close', updateReadyState);\n", + " comm.kernel.ws.addEventListener('error', updateReadyState);\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " var data = msg['content']['data'];\n", + " if (data['blob'] !== undefined) {\n", + " data = {\n", + " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", + " };\n", + " }\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(data);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.on(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " if (event.target !== this) {\n", + " // Ignore bubbled events from children.\n", + " return;\n", + " }\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_data = np.linspace(20, 170, 500)\n", + "y_data = calculator.fit_func(x_data)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(x_data, y_data, label='CW Simulation')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "0f2cb72f", + "metadata": {}, + "source": [ + "## --- Experiment ---" + ] + }, + { + "cell_type": "markdown", + "id": "161efebd", + "metadata": {}, + "source": [ + "#### Modify the parameters to correspond to a TOF experiment" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "59381e83", + "metadata": {}, + "outputs": [], + "source": [ + "parameters = TOFParams.default()\n", + "\n", + "parameters.length_a = 5.6402\n", + "parameters.dtt1 = 6167.24700\n", + "parameters.dtt2 = -2.28000\n", + "parameters.ttheta_bank = 145.00" + ] + }, + { + "cell_type": "markdown", + "id": "ea998649", + "metadata": {}, + "source": [ + "#### Create new job (TOF) with new parameters, but old phase and calculator objects" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "2aa1648d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" + ] + } + ], + "source": [ + "job_tof = Job(phases=phases, parameters=parameters, calculator=calculator)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "9d612a23", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available calculator engines: ['CrysPy', 'CrysFML', 'GSASII']\n", + "Available calculators for TOF: ['CrysPy']\n" + ] + } + ], + "source": [ + "print(f\"Available calculator engines: {calculator.available_interfaces}\")\n", + "print(f\"Available calculators for TOF: {calculator.interface_compatability('Npowder1DTOF')}\")" + ] + }, + { + "cell_type": "markdown", + "id": "2245224b", + "metadata": {}, + "source": [ + "## --- Analysis ---" + ] + }, + { + "cell_type": "markdown", + "id": "f6676f54", + "metadata": {}, + "source": [ + "#### Calculate the profile again, this time based on the TOF parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "eac224b9", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", + " if (this.ResizeObserver === undefined) {\n", + " if (window.ResizeObserver !== undefined) {\n", + " this.ResizeObserver = window.ResizeObserver;\n", + " } else {\n", + " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", + " this.ResizeObserver = obs.ResizeObserver;\n", + " }\n", + " }\n", + "\n", + " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " this.resizeObserverInstance.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'dblclick',\n", + " on_mouse_event_closure('dblclick')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " var img = evt.data;\n", + " if (img.type !== 'image/png') {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " img.type = 'image/png';\n", + " }\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " img\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * this.ratio;\n", + " var y = canvas_pos.y * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.key === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.key;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.key !== 'Control') {\n", + " value += 'ctrl+';\n", + " }\n", + " else if (event.altKey && event.key !== 'Alt') {\n", + " value += 'alt+';\n", + " }\n", + " else if (event.shiftKey && event.key !== 'Shift') {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k' + event.key;\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "\n", + "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", + "// prettier-ignore\n", + "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.binaryType = comm.kernel.ws.binaryType;\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " function updateReadyState(_event) {\n", + " if (comm.kernel.ws) {\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " } else {\n", + " ws.readyState = 3; // Closed state.\n", + " }\n", + " }\n", + " comm.kernel.ws.addEventListener('open', updateReadyState);\n", + " comm.kernel.ws.addEventListener('close', updateReadyState);\n", + " comm.kernel.ws.addEventListener('error', updateReadyState);\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " var data = msg['content']['data'];\n", + " if (data['blob'] !== undefined) {\n", + " data = {\n", + " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", + " };\n", + " }\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(data);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.on(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " if (event.target !== this) {\n", + " // Ignore bubbled events from children.\n", + " return;\n", + " }\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_data = np.linspace(3000, 15000, 500)\n", + "y_data = calculator.fit_func(x_data)\n", + "\n", + "%matplotlib notebook\n", + "plt.plot(x_data, y_data, label='TOF Simulation')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3647d5ab", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 0d1d414e1e6e390bfa93f7b4fe49592a98b93174 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 11:11:31 +0200 Subject: [PATCH 199/312] Fix up Docs and files --- .github/workflows/{test.yml => unit_test.yml} | 4 +-- .pre-commit-config.yaml | 18 ++++++------ README.md | 16 +++++++---- README.rst | 3 -- pyproject.toml | 2 +- requirements.txt | 28 ++----------------- 6 files changed, 24 insertions(+), 47 deletions(-) rename .github/workflows/{test.yml => unit_test.yml} (97%) delete mode 100644 README.rst diff --git a/.github/workflows/test.yml b/.github/workflows/unit_test.yml similarity index 97% rename from .github/workflows/test.yml rename to .github/workflows/unit_test.yml index 66e204be..e10c30a0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/unit_test.yml @@ -1,4 +1,4 @@ -name: test macOS +name: unit_test # Trigger the workflow on push or pull request on: [push, pull_request] @@ -38,7 +38,7 @@ jobs: - name: Set up Python environment uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: 3.7 - name: Some logging shell: bash diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 436634be..7d6b7786 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,18 +11,18 @@ repos: - id: trailing-whitespace - id: check-yaml - id: check-xml - - id: requirements-txt-fixer +# - id: requirements-txt-fixer - id: check-toml - id: pretty-format-json - id: detect-private-key -- repo: local - hooks: - - id: export-requirements - name: Export requeriments.txt - language: system - pass_filenames: false - entry: poetry export --without-hashes -o requirements.txt - files: ^(pyproject.toml|poetry.lock)$ +#- repo: local +# hooks: +# - id: export-requirements +# name: Export requeriments.txt +# language: system +# pass_filenames: false +# entry: poetry export --without-hashes -o requirements.txt +# files: ^(pyproject.toml|poetry.lock)$ # - id: export-setup # name: Export setup.py # language: system diff --git a/README.md b/README.md index f9fdc86e..927ac923 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,15 @@ -# [![License][50]][51] [![Release][32]][33] [![Downloads][70]][71] [![CI Build][20]][21] +# [![License][50]][51] [![Release][32]][33] [![Downloads][70]][71] [![Unit Tests][20]][21] [![CodeFactor][83]][84] [![Lines of code][81]](<>) [![Total lines][80]](<>) [![Files][82]](<>) -**easyDiffractionLib** is the foundation of the *easyScience* universe, providing the building blocks for libraries and applications which aim to make scientific data simulation and analysis easier. +**easyDiffractionLib** is the foundation of [*easyDiffraction*](https://github.com/easyScience/easyDiffraction), an intuitive application which +endeavors simplifying and accelerating the analysis of diffraction experiments. *easyDiffractionLib* provides: +* Scripting interface to simulate and analyse neutron diffraction patterns +* Optimization algorithms to minimize models to experimental data +* 3 pattern calculators; [cryspy](https://github.com/ikibalin/cryspy), [crysFML](https://www.ill.eu/sites/fullprof/php/programs24b7.html?pagina=Crysfml), [GSAS-II](https://subversion.xray.aps.anl.gov/trac/pyGSAS) ## Getting Started @@ -88,11 +92,11 @@ Documentation can be found at: We absolutely welcome contributions. **easyDiffractionLib** is maintained by the ESS and on a volunteer basis and thus we need to foster a community that can support user questions and develop new features to make this software a useful tool for all users while encouraging every member of the community to share their ideas. ## License -While **easyDiffractionLib** is under the BSD-3 license, DFO_LS is subject to the GPL license. +**easyDiffractionLib** is licenced under the BSD-3-Clause license. -[20]: https://github.com/easyScience/easyDiffractionLib/workflows/CI%20using%20pip/badge.svg +[20]: https://github.com/easyScience/easyDiffractionLib/workflows/unit_tests/badge.svg [21]: https://github.com/easyScience/easyDiffractionLib/actions @@ -125,6 +129,6 @@ While **easyDiffractionLib** is under the BSD-3 license, DFO_LS is subject to th [82]: https://tokei.rs/b1/github/easyScience/easyDiffractionLib?category=files -[83]: https://www.codefactor.io/repository/github/easyscience/easyDiffractionLib/badge +[83]: https://www.codefactor.io/repository/github/easyscience/easydiffractionlib/badge -[84]: https://www.codefactor.io/repository/github/easyscience/easyDiffractionLib +[84]: https://www.codefactor.io/repository/github/easyscience/easydiffractionlib diff --git a/README.rst b/README.rst deleted file mode 100644 index a1c4a814..00000000 --- a/README.rst +++ /dev/null @@ -1,3 +0,0 @@ - -easyDiffractionLib -================== diff --git a/pyproject.toml b/pyproject.toml index e9528b44..566f4853 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ repo = 'easyDiffractionLib' name = "easyDiffractionLib" version = "0.0.2" description = 'Making diffraction data analysis and modelling easy.' -license = "BSD-3" +license = "BSD-3-Clause" authors = ["Simon Ward", "Andrew Sazonov"] readme = "README.md" homepage = "https://github.com/easyScience/easyDiffractionLib" diff --git a/requirements.txt b/requirements.txt index 4b0294cf..fbc10ccb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,29 +1,5 @@ +easysciencecore @ git+https://github.com/easyScience/easyCore.git@develop ; python_version >= "3.7" and python_version < "4.0" +cryspy @ git+https://github.com/ikibalin/cryspy.git@bravis_type_fix --extra-index-url https://easyscience.github.io/pypi - -asteval==0.9.25; python_version >= "3.7" and python_version < "4.0" -bumps==0.8.0; python_version >= "3.7" and python_version < "4.0" cfml==0.0.1 -cryspy @ git+https://github.com/ikibalin/cryspy.git@bravis_type_fix -cycler==0.10.0; python_version >= "3.7" -easysciencecore @ git+https://github.com/easyScience/easyCore.git@develop ; python_version >= "3.7" and python_version < "4.0" -future==0.18.2; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.3.0" gsasii==0.0.1 -importlib-metadata==4.7.0; python_version >= "3.7" and python_version < "3.8" -kiwisolver==1.3.1; python_version >= "3.7" -lmfit==1.0.2; python_version >= "3.7" and python_version < "4.0" -matplotlib==3.4.3; python_version >= "3.7" -numpy==1.21.2; python_version >= "3.7" and python_version < "3.10" and python_full_version >= "3.6.1" -packaging==21.0; python_version >= "3.7" and python_version < "4.0" -pandas==1.1.5; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.6.1" -pillow==8.3.1; python_version >= "3.7" -pint==0.17; python_version >= "3.7" and python_version < "4.0" -pycifstar==0.2.8 -pyparsing==2.4.7; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.3.0" and python_version >= "3.7" and python_version < "4.0" -python-dateutil==2.8.2; python_full_version >= "3.6.1" and python_version >= "3.7" and python_version < "4.0" -pytz==2021.1; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.6.1" -scipy==1.7.1; python_version >= "3.7" and python_version < "3.10" -six==1.16.0; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.3.0" -typing-extensions==3.10.0.0; python_version >= "3.7" and python_version < "3.8" -uncertainties==3.1.6; python_version >= "3.7" and python_version < "4.0" -xarray==0.19.0; python_version >= "3.7" and python_version < "4.0" -zipp==3.5.0; python_version >= "3.7" and python_version < "3.8" From 6598952b3cd735b27ddb63a07b2f4e02f943dc8b Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 11:18:03 +0200 Subject: [PATCH 200/312] Update badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 927ac923..74f88b84 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ We absolutely welcome contributions. **easyDiffractionLib** is maintained by the -[20]: https://github.com/easyScience/easyDiffractionLib/workflows/unit_tests/badge.svg +[20]: https://github.com/easyScience/easyDiffractionLib/actions/workflows/unit_test.yml/badge.svg [21]: https://github.com/easyScience/easyDiffractionLib/actions From 94a06514853e596a4d3ea6c844d1103faebfa7db Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 14:46:15 +0200 Subject: [PATCH 201/312] Add generators --- .github/workflows/self_publish_alpha.yml | 57 ++++++++++++++++++++++++ tools/Scripts/generate_html.py | 17 +++++++ 2 files changed, 74 insertions(+) create mode 100644 .github/workflows/self_publish_alpha.yml create mode 100644 tools/Scripts/generate_html.py diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml new file mode 100644 index 00000000..ffa9d789 --- /dev/null +++ b/.github/workflows/self_publish_alpha.yml @@ -0,0 +1,57 @@ +name: Build package for easyScience pypi + +on: + push: + branches: [develop] + +jobs: + Build_package: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]')" + steps: + - name: Check-out repository + uses: actions/checkout@v2 + + - uses: actions/setup-python@v2 + name: Setup Python + with: + python-version: 3.8 + + - uses: Gr1N/setup-poetry@v4 + - name: Install and build + run: | + poetry update + poetry build + + - name: Upload Artifacts GitHub releases + uses: ncipollo/release-action@v1 + with: + draft: false + prerelease: true + allowUpdates: true + replacesArtifacts: true + token: ${{ secrets.GITHUB_TOKEN }} + artifacts: ./**/*.whl + tag: eDL_alpha + body: This is an alpha build of easyDiffractionLib + + - name: Generate HTML + run: | + python tools/Scripts/generate_html.py + + - name: Checkout tools repo + uses: actions/checkout@v2 + with: + repository: easyScience/pypi + path: pypi + + - name: Checkout pypi repo + - uses: actions/checkout@v2 + - run: |- + mv index.html pypi/easyDiffractionLib/ + cd pypi + git config user.name github-actions + git config user.email github-actions@github.com + git add . + git commit -m "Auto update easyDiffractionLib" + git push diff --git a/tools/Scripts/generate_html.py b/tools/Scripts/generate_html.py new file mode 100644 index 00000000..9cefa13a --- /dev/null +++ b/tools/Scripts/generate_html.py @@ -0,0 +1,17 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +import os + +whl_dir = "dist" +base_url = "https://github.com/easyScience/easyDifractionLib/releases/download/develop/" + +file = [file for file in os.listdir(whl_dir) if file.endswith(".whl")][0] + +header = "\n\n\nLinks for easyDiffractionLib (alpha)\n\n\n

Links for easyDiffractionLib

" +body = f'{file[:-4]}
' +footer = "\n" + +content = "\n".join([header, body, footer]) +with open("index.html", "w") as fid: + fid.write(content) From b6657dbb92bbe3b28e6482893b8d4f6b70a010b3 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 14:53:03 +0200 Subject: [PATCH 202/312] Update self_publish_alpha.yml --- .github/workflows/self_publish_alpha.yml | 92 ++++++++++++------------ 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index ffa9d789..5e60c5ff 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -9,49 +9,49 @@ jobs: runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[ci skip]')" steps: - - name: Check-out repository - uses: actions/checkout@v2 - - - uses: actions/setup-python@v2 - name: Setup Python - with: - python-version: 3.8 - - - uses: Gr1N/setup-poetry@v4 - - name: Install and build - run: | - poetry update - poetry build - - - name: Upload Artifacts GitHub releases - uses: ncipollo/release-action@v1 - with: - draft: false - prerelease: true - allowUpdates: true - replacesArtifacts: true - token: ${{ secrets.GITHUB_TOKEN }} - artifacts: ./**/*.whl - tag: eDL_alpha - body: This is an alpha build of easyDiffractionLib - - - name: Generate HTML - run: | - python tools/Scripts/generate_html.py - - - name: Checkout tools repo - uses: actions/checkout@v2 - with: - repository: easyScience/pypi - path: pypi - - - name: Checkout pypi repo - - uses: actions/checkout@v2 - - run: |- - mv index.html pypi/easyDiffractionLib/ - cd pypi - git config user.name github-actions - git config user.email github-actions@github.com - git add . - git commit -m "Auto update easyDiffractionLib" - git push + - name: Check-out repository + uses: actions/checkout@v2 + + - uses: actions/setup-python@v2 + name: Setup Python + with: + python-version: 3.8 + + - uses: Gr1N/setup-poetry@v4 + - name: Install and build + run: | + poetry update + poetry build + + - name: Upload Artifacts GitHub releases + uses: ncipollo/release-action@v1 + with: + draft: false + prerelease: true + allowUpdates: true + replacesArtifacts: true + token: ${{ secrets.GITHUB_TOKEN }} + artifacts: ./**/*.whl + tag: eDL_alpha + body: This is an alpha build of easyDiffractionLib + + - name: Generate HTML + run: | + python tools/Scripts/generate_html.py + + - name: Checkout tools repo + uses: actions/checkout@v2 + with: + repository: easyScience/pypi + path: pypi + + - name: Checkout pypi repo + - uses: actions/checkout@v2 + - run: |- + mv index.html pypi/easyDiffractionLib/ + cd pypi + git config user.name github-actions + git config user.email github-actions@github.com + git add . + git commit -m "Auto update easyDiffractionLib" + git push From fe9338dab91e878a7ec01c71bec2572f270e79b7 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 15:05:15 +0200 Subject: [PATCH 203/312] Auto stash before merge of "develop" and "origin/develop" --- .github/workflows/self_publish_alpha.yml | 96 ++++++++++++------------ 1 file changed, 50 insertions(+), 46 deletions(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 5e60c5ff..54e3e051 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -9,49 +9,53 @@ jobs: runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[ci skip]')" steps: - - name: Check-out repository - uses: actions/checkout@v2 - - - uses: actions/setup-python@v2 - name: Setup Python - with: - python-version: 3.8 - - - uses: Gr1N/setup-poetry@v4 - - name: Install and build - run: | - poetry update - poetry build - - - name: Upload Artifacts GitHub releases - uses: ncipollo/release-action@v1 - with: - draft: false - prerelease: true - allowUpdates: true - replacesArtifacts: true - token: ${{ secrets.GITHUB_TOKEN }} - artifacts: ./**/*.whl - tag: eDL_alpha - body: This is an alpha build of easyDiffractionLib - - - name: Generate HTML - run: | - python tools/Scripts/generate_html.py - - - name: Checkout tools repo - uses: actions/checkout@v2 - with: - repository: easyScience/pypi - path: pypi - - - name: Checkout pypi repo - - uses: actions/checkout@v2 - - run: |- - mv index.html pypi/easyDiffractionLib/ - cd pypi - git config user.name github-actions - git config user.email github-actions@github.com - git add . - git commit -m "Auto update easyDiffractionLib" - git push + - name: Check-out repository + uses: actions/checkout@v2 + + - uses: actions/setup-python@v2 + name: Setup Python + with: + python-version: 3.8 + + - uses: Gr1N/setup-poetry@v4 + - name: Install and build + run: | + poetry update + poetry build + + - name: Upload Artifacts GitHub releases + uses: ncipollo/release-action@v1 + with: + draft: false + prerelease: true + allowUpdates: true + replacesArtifacts: true + token: ${{ secrets.GITHUB_TOKEN }} + artifacts: ./**/*.whl + tag: eDL_alpha + body: This is an alpha build of easyDiffractionLib + + - name: Generate HTML + run: | + python tools/Scripts/generate_html.py + + - name: Checkout tools repo + uses: actions/checkout@v2 + with: + repository: easyScience/pypi + path: pypi + + - name: Commit files + run: |- + mv index.html pypi/easyDiffractionLib/ + cd pypi + git config --local user.email "$(git log --format='%ae' HEAD^!)" + git config --local user.name "$(git log --format='%an' HEAD^!)" + git remote add github "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git" + git pull github ${GITHUB_REF} --ff-only + git add . + if [ -z "$(git status --porcelain)" ]; then + exit 0 + fi + git commit -m "Fix a[href] in Webflow exported html" + git push github HEAD:${GITHUB_REF} From 99d4cc04269b2c5e7b0882d7a75a132afa99f00e Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 15:37:40 +0200 Subject: [PATCH 204/312] Update self_publish_alpha.yml --- .github/workflows/self_publish_alpha.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 54e3e051..5eed5526 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -51,11 +51,7 @@ jobs: cd pypi git config --local user.email "$(git log --format='%ae' HEAD^!)" git config --local user.name "$(git log --format='%an' HEAD^!)" - git remote add github "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git" - git pull github ${GITHUB_REF} --ff-only - git add . - if [ -z "$(git status --porcelain)" ]; then - exit 0 - fi - git commit -m "Fix a[href] in Webflow exported html" - git push github HEAD:${GITHUB_REF} + git remote add github "https://$GITHUB_ACTOR:${{ secrets.ES_TOKEN }}@github.com/easyScience/pypi.git" + git add easyDiffractionLib/index.html + git commit -m "Uto update eDL alpha" + git push origin HEAD:main From fb0e90395fbd4712b012d25b53a4b2c4f7baf069 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 15:38:02 +0200 Subject: [PATCH 205/312] Update generate_html.py --- tools/Scripts/generate_html.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/Scripts/generate_html.py b/tools/Scripts/generate_html.py index 9cefa13a..f6724bb7 100644 --- a/tools/Scripts/generate_html.py +++ b/tools/Scripts/generate_html.py @@ -4,7 +4,7 @@ import os whl_dir = "dist" -base_url = "https://github.com/easyScience/easyDifractionLib/releases/download/develop/" +base_url = "https://github.com/easyScience/easyDifractionLib/releases/download/eDL_alpha/" file = [file for file in os.listdir(whl_dir) if file.endswith(".whl")][0] From ecce5531eaaa96ad6081b8b4a9a47070124a4f3e Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 16:17:39 +0200 Subject: [PATCH 206/312] Update self_publish_alpha.yml --- .github/workflows/self_publish_alpha.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 5eed5526..1162f806 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -51,7 +51,7 @@ jobs: cd pypi git config --local user.email "$(git log --format='%ae' HEAD^!)" git config --local user.name "$(git log --format='%an' HEAD^!)" - git remote add github "https://$GITHUB_ACTOR:${{ secrets.ES_TOKEN }}@github.com/easyScience/pypi.git" + git remote add github "https://${{ secrets.ES_TOKEN }}@github.com/easyScience/pypi.git" git add easyDiffractionLib/index.html git commit -m "Uto update eDL alpha" - git push origin HEAD:main + git push origin HEAD:master From 78ad79c9adc18335cba568134d20ad032724d002 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 16:32:17 +0200 Subject: [PATCH 207/312] Update self_publish_alpha.yml --- .github/workflows/self_publish_alpha.yml | 40 +++++++++++++++--------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 1162f806..a26ed09c 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -39,19 +39,31 @@ jobs: run: | python tools/Scripts/generate_html.py - - name: Checkout tools repo + - name: Checkout target repo uses: actions/checkout@v2 + env: + REPO: easyScience/pypi + REPO_PATH: pypi with: - repository: easyScience/pypi - path: pypi - - - name: Commit files - run: |- - mv index.html pypi/easyDiffractionLib/ - cd pypi - git config --local user.email "$(git log --format='%ae' HEAD^!)" - git config --local user.name "$(git log --format='%an' HEAD^!)" - git remote add github "https://${{ secrets.ES_TOKEN }}@github.com/easyScience/pypi.git" - git add easyDiffractionLib/index.html - git commit -m "Uto update eDL alpha" - git push origin HEAD:master + fetch-depth: 0 + token: ${{ secrets.ES_TOKEN }} + repository: "${{ env.REPO }}" + path: ${{ env.REPO_PATH }} + - name: Copy index to new repo + env: + SOURCE: index.yaml + TARGET: pypi/easyDiffractionLib/ + run: + cp ${{ env.SOURCE }} ${{ env.TARGET }} + - name: Push + env: + REPO_PATH: pypi + GIT_USERNAME: action + GIT_EMAIL: action@github.com + run: | + cd ${{ env.REPO_PATH }} + git config --local user.name "${{ env.GIT_USERNAME }}" + git config --local user.email "${{ env.GIT_EMAIL }}" + git add . + git commit -m "Github Actions Automatically Built in `date +"%Y-%m-%d %H:%M"`" + git push From b612523b379caed705efdfc2627b9480ef13ba22 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 16:46:20 +0200 Subject: [PATCH 208/312] Update self_publish_alpha.yml --- .github/workflows/self_publish_alpha.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index a26ed09c..9f7a05c8 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -51,7 +51,7 @@ jobs: path: ${{ env.REPO_PATH }} - name: Copy index to new repo env: - SOURCE: index.yaml + SOURCE: index.html TARGET: pypi/easyDiffractionLib/ run: cp ${{ env.SOURCE }} ${{ env.TARGET }} From 20dad3d9636ff399da6f1dd736896b90595ca65d Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Oct 2021 16:59:30 +0200 Subject: [PATCH 209/312] Auto stash before merge of "develop" and "origin/develop" --- tools/Scripts/generate_html.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/Scripts/generate_html.py b/tools/Scripts/generate_html.py index f6724bb7..1fd46b10 100644 --- a/tools/Scripts/generate_html.py +++ b/tools/Scripts/generate_html.py @@ -4,7 +4,9 @@ import os whl_dir = "dist" -base_url = "https://github.com/easyScience/easyDifractionLib/releases/download/eDL_alpha/" +base_url = ( + "https://github.com/easyScience/easyDiffractionLib/releases/download/eDL_alpha/" +) file = [file for file in os.listdir(whl_dir) if file.endswith(".whl")][0] From e8843118a4f7675affcb940e763ae45eaaa2dc06 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 4 Oct 2021 10:24:54 +0200 Subject: [PATCH 210/312] Update self_publish_alpha.yml --- .github/workflows/self_publish_alpha.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 9f7a05c8..8409d33f 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -52,7 +52,7 @@ jobs: - name: Copy index to new repo env: SOURCE: index.html - TARGET: pypi/easyDiffractionLib/ + TARGET: pypi/easydiffractionlib/ run: cp ${{ env.SOURCE }} ${{ env.TARGET }} - name: Push From c55ab0c384bc8b26697e57dda58f93967a94452f Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 4 Oct 2021 11:25:45 +0200 Subject: [PATCH 211/312] Try to create tagged realease --- .github/workflows/self_publish_alpha.yml | 17 +++++++++++------ tools/Scripts/generate_html.py | 9 ++++++--- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 8409d33f..0ec5a05c 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -20,9 +20,15 @@ jobs: - uses: Gr1N/setup-poetry@v4 - name: Install and build run: | - poetry update + poetry version prerelease poetry build + - name: Set name variable + id: name + run: | + EDLVERSION=$( poetry version | awk -F'[" "|.|-]' '{ print $5=="" ? $2"."$3"."$4 : $2"."$3"."$4"-"$5 ;}' ) + echo "::set-output name=tag::$EDLVERSION" + - name: Upload Artifacts GitHub releases uses: ncipollo/release-action@v1 with: @@ -32,12 +38,12 @@ jobs: replacesArtifacts: true token: ${{ secrets.GITHUB_TOKEN }} artifacts: ./**/*.whl - tag: eDL_alpha + tag: ${{ steps.name.outputs.tag }} body: This is an alpha build of easyDiffractionLib - name: Generate HTML run: | - python tools/Scripts/generate_html.py + python tools/Scripts/generate_html.py ${{ steps.name.outputs.tag }} - name: Checkout target repo uses: actions/checkout@v2 @@ -47,14 +53,13 @@ jobs: with: fetch-depth: 0 token: ${{ secrets.ES_TOKEN }} - repository: "${{ env.REPO }}" + repository: ${{ env.REPO }} path: ${{ env.REPO_PATH }} - name: Copy index to new repo env: SOURCE: index.html TARGET: pypi/easydiffractionlib/ - run: - cp ${{ env.SOURCE }} ${{ env.TARGET }} + run: cp ${{ env.SOURCE }} ${{ env.TARGET }} - name: Push env: REPO_PATH: pypi diff --git a/tools/Scripts/generate_html.py b/tools/Scripts/generate_html.py index 1fd46b10..b25af534 100644 --- a/tools/Scripts/generate_html.py +++ b/tools/Scripts/generate_html.py @@ -2,11 +2,14 @@ __version__ = "0.0.1" import os +import sys + +tag = "eDL_alpha" +if len(sys.argv) > 1: + tag = sys.argv[1] whl_dir = "dist" -base_url = ( - "https://github.com/easyScience/easyDiffractionLib/releases/download/eDL_alpha/" -) +base_url = f"https://github.com/easyScience/easyDiffractionLib/releases/download/{tag}/" file = [file for file in os.listdir(whl_dir) if file.endswith(".whl")][0] From 638ddf88b67eda1c3440670a50660967624c67d7 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 4 Oct 2021 11:46:10 +0200 Subject: [PATCH 212/312] Rename from easyDiffractionLib to easyDiffraction --- .github/workflows/self_publish_alpha.yml | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 0ec5a05c..c34edeb3 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -58,7 +58,7 @@ jobs: - name: Copy index to new repo env: SOURCE: index.html - TARGET: pypi/easydiffractionlib/ + TARGET: pypi/easydiffraction/ run: cp ${{ env.SOURCE }} ${{ env.TARGET }} - name: Push env: diff --git a/pyproject.toml b/pyproject.toml index 566f4853..c174fe6a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ organization = 'easyScience' repo = 'easyDiffractionLib' [tool.poetry] -name = "easyDiffractionLib" +name = "easyDiffraction" version = "0.0.2" description = 'Making diffraction data analysis and modelling easy.' license = "BSD-3-Clause" From 219881c4cf4fdf67ab734bd9f1b6a931a69a933f Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 4 Oct 2021 11:54:43 +0200 Subject: [PATCH 213/312] Modify project and requirements --- pyproject.toml | 2 +- requirements.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index c174fe6a..a31d72ec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,9 +33,9 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.9" cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } +easysciencecore = '^0.1' CFML = '^0.0.1' GSASII = '^0.0.1' -easysciencecore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } # "^0.1.0" [tool.poetry.dev-dependencies] pytest = "^5.2" diff --git a/requirements.txt b/requirements.txt index fbc10ccb..fc51b8ad 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -easysciencecore @ git+https://github.com/easyScience/easyCore.git@develop ; python_version >= "3.7" and python_version < "4.0" cryspy @ git+https://github.com/ikibalin/cryspy.git@bravis_type_fix --extra-index-url https://easyscience.github.io/pypi +easysciencecore cfml==0.0.1 -gsasii==0.0.1 +gsasii==0.0.1 \ No newline at end of file From 5fbc026b4b094908a6bbf61ee4e5fd1afee11b99 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 4 Oct 2021 13:11:09 +0200 Subject: [PATCH 214/312] Use easysciencecore >= 0.1.1a0 --- pyproject.toml | 2 +- requirements.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a31d72ec..159ea884 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,8 +32,8 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.9" +easyScienceCore = '>=0.1.1a0' cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } -easysciencecore = '^0.1' CFML = '^0.0.1' GSASII = '^0.0.1' diff --git a/requirements.txt b/requirements.txt index fc51b8ad..365b5513 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ cryspy @ git+https://github.com/ikibalin/cryspy.git@bravis_type_fix --extra-index-url https://easyscience.github.io/pypi -easysciencecore +easysciencecore>=0.1.1a0 cfml==0.0.1 -gsasii==0.0.1 \ No newline at end of file +gsasii==0.0.1 From 532744c5b7712a9ac539538aef17b241f485e08f Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 4 Oct 2021 13:24:37 +0200 Subject: [PATCH 215/312] Only push if changes --- .github/workflows/self_publish_alpha.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index c34edeb3..363d541e 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -70,5 +70,8 @@ jobs: git config --local user.name "${{ env.GIT_USERNAME }}" git config --local user.email "${{ env.GIT_EMAIL }}" git add . - git commit -m "Github Actions Automatically Built in `date +"%Y-%m-%d %H:%M"`" - git push + if [[ `git status --porcelain` ]]; then + git commit -m "Github Actions Automatically Built in `date +"%Y-%m-%d %H:%M"`" + git push + fi + From 51b2e1100dacdb30bf2224359bdd61b68bd0835d Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 4 Oct 2021 13:33:05 +0200 Subject: [PATCH 216/312] Add `v` to tag --- .github/workflows/self_publish_alpha.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 363d541e..0e0fc69e 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -26,7 +26,7 @@ jobs: - name: Set name variable id: name run: | - EDLVERSION=$( poetry version | awk -F'[" "|.|-]' '{ print $5=="" ? $2"."$3"."$4 : $2"."$3"."$4"-"$5 ;}' ) + EDLVERSION=$( poetry version | awk -F'[" "|.|-]' '{ print $5=="" ? "v"$2"."$3"."$4 : "v"$2"."$3"."$4"-"$5 ;}' ) echo "::set-output name=tag::$EDLVERSION" - name: Upload Artifacts GitHub releases From f746eea435e24d84ed37502772611b067bca5010 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 4 Oct 2021 13:45:48 +0200 Subject: [PATCH 217/312] Update README.md --- README.md | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 693fd2f3..22086b5f 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,21 @@ -# [![License][50]][51] [![Release][32]][33] [![Downloads][70]][71] [![Unit Tests][20]][21] - +# [![Unit Tests][20]][21] ![Release][31] [![Downloads][70]][71] [![Lines of code][81]](<>) [![Total lines][80]](<>) [![Files][82]](<>) [![License][50]][51] -**easydiffractionLib** is a Python library for modelling and analysis of diffraction data, a base of the [**easyDiffraction**](https://easydiffraction.org) +**easydiffractionLib** is a Python library which provides: +* Scripting interface to simulate and analyse neutron diffraction patterns. +* Multiple optimization algorithms to minimize models to experimental data: [Lmfit](https://lmfit.github.io/lmfit-py/), [Bumps](https://github.com/bumps/bumps) and [DFO_LS](https://github.com/numericalalgorithmsgroup/dfols). +* Multiple calculation engines: [CrysPy](https://github.com/ikibalin/cryspy), [CrysFML](https://www.ill.eu/sites/fullprof/php/programs24b7.html?pagina=Crysfml), [GSAS-II](https://subversion.xray.aps.anl.gov/trac/pyGSAS). -**easyDiffractionLib** is the foundation of [*easyDiffraction*](https://github.com/easyScience/easyDiffraction), an intuitive application which -endeavors simplifying and accelerating the analysis of diffraction experiments. *easyDiffractionLib* provides: -* Scripting interface to simulate and analyse neutron diffraction patterns -* Optimization algorithms to minimize models to experimental data -* 3 pattern calculators; [cryspy](https://github.com/ikibalin/cryspy), [crysFML](https://www.ill.eu/sites/fullprof/php/programs24b7.html?pagina=Crysfml), [GSAS-II](https://subversion.xray.aps.anl.gov/trac/pyGSAS) +**easydiffractionLib** is the foundation of [**easyDiffraction**](https://github.com/easyScience/easyDiffraction), an intuitive application which endeavors simplifying and accelerating the analysis of diffraction experiments. ## Getting Started ### Install easyDiffractionLib -Currently **easyDiffractionLib** is in **alpha** and has not been released on **pypi**. Please use the alternative method given below to install **easyDiffractionLib** from the [GitHub repo](https://github.com/easyScience/easyDiffractionLib) using our [custom Python Package Index](https://easyscience.github.io/pypi) for some dependencies, such as CrysFML and GSAS-II. +Currently **easyDiffractionLib** is in **alpha** and has not been released on **pypi**. Please use the alternative method given below to install **easyDiffractionLib** from our [custom Python Package Index](https://easyscience.github.io/pypi). -* Create and go to, e.g., **easyDiffraction** (*optional*) +* Create and go to, e.g., **easyDiffraction** directory (*optional*) ``` mkdir easyDiffraction && cd easyDiffraction ``` @@ -32,22 +30,21 @@ Currently **easyDiffractionLib** is in **alpha** and has not been released on ** ``` * Install **easyDiffractionLib** ``` - pip install git+https://github.com/easyScience/easyDiffractionLib@more_notebooks --extra-index-url https://easyscience.github.io/pypi + pip install easyDiffraction --extra-index-url https://easyscience.github.io/pypi ``` - ## Examples ### Jupyter Notebook examples that use easyDiffractionLib * Install **easyDiffractionLib** as described above -* Install Jupyter Notebook and visualization libraries, such as matplotlib and py3Dmol +* Install Jupyter Notebook and visualization libraries, such as matplotlib and py3Dmol (*if not done already*) ``` pip install jupyter notebook ipympl matplotlib py3Dmol ``` -* Download **easyDiffractionLib** Jupyter Notebook [examples](https://github.com/easyScience/easyDiffractionLib/tree/more_notebooks/examples) from GitHub, e.g., using svn +* Download **easyDiffractionLib** Jupyter Notebook [examples](https://github.com/easyScience/easyDiffractionLib/tree/develop/examples) from GitHub, e.g., using **svn** (*if not done already*) ``` - svn export https://github.com/easyScience/easyDiffractionLib/branches/more_notebooks/examples + svn export https://github.com/easyScience/easyDiffractionLib/branches/develop/examples ``` * Run Jupyter Notebook server ``` @@ -57,7 +54,7 @@ Currently **easyDiffractionLib** is in **alpha** and has not been released on ** ``` http://localhost:8888/ ``` -* Select one of the *.ipynb files +* Select one of the ***.ipynb** files ## Test @@ -65,15 +62,11 @@ The installation can be verified by running the test suite: ```python -m pytest``` -## Documentation - -Documentation can be found at: [https://easyScience.github.io/easyDiffractionLib](https://easyScience.github.io/easyDiffractionLib) - ## Contributing We absolutely welcome contributions. **easyDiffractionLib** is maintained by the ESS and on a volunteer basis and thus we need to foster a community that can support user questions and develop new features to make this software a useful tool for all users while encouraging every member of the community to share their ideas. ## License -**easyDiffractionLib** is licenced under the BSD-3-Clause license. +**easyDiffractionLib** is licenced under the BSD-3-Clause license, [DFO_LS](https://github.com/numericalalgorithmsgroup/dfols) is subject to the GPL license. @@ -84,6 +77,8 @@ We absolutely welcome contributions. **easyDiffractionLib** is maintained by the +[31]: https://img.shields.io/badge/release-v0.0.1--alpha-orange + [32]: https://img.shields.io/pypi/v/easyScienceCore.svg [33]: https://pypi.org/project/easyScienceCore From 4f33ee51683941ab2b14df1a40f7cb07dde06f68 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 4 Oct 2021 14:49:07 +0200 Subject: [PATCH 218/312] Write all packages --- .github/workflows/self_publish_alpha.yml | 7 +++++-- tools/Scripts/generate_html.py | 24 +++++++++++++++--------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 0e0fc69e..6fc5fea7 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -25,8 +25,10 @@ jobs: - name: Set name variable id: name + shell: bash run: | EDLVERSION=$( poetry version | awk -F'[" "|.|-]' '{ print $5=="" ? "v"$2"."$3"."$4 : "v"$2"."$3"."$4"-"$5 ;}' ) + echo "REPOSITORY_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV echo "::set-output name=tag::$EDLVERSION" - name: Upload Artifacts GitHub releases @@ -39,11 +41,12 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} artifacts: ./**/*.whl tag: ${{ steps.name.outputs.tag }} - body: This is an alpha build of easyDiffractionLib + body: This is an alpha build of easyDiffractionLib (${{ steps.name.outputs.tag }}) - name: Generate HTML run: | - python tools/Scripts/generate_html.py ${{ steps.name.outputs.tag }} + pip install requests + python tools/Scripts/generate_html.py ${{ env.REPOSITORY_NAME }} - name: Checkout target repo uses: actions/checkout@v2 diff --git a/tools/Scripts/generate_html.py b/tools/Scripts/generate_html.py index b25af534..924ff40a 100644 --- a/tools/Scripts/generate_html.py +++ b/tools/Scripts/generate_html.py @@ -1,20 +1,26 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" -import os import sys +import requests -tag = "eDL_alpha" +org = "easyScience" +repo = "easyCore" if len(sys.argv) > 1: - tag = sys.argv[1] + repo = sys.argv[1] -whl_dir = "dist" -base_url = f"https://github.com/easyScience/easyDiffractionLib/releases/download/{tag}/" +releases = requests.get(f"https://api.github.com/repos/{org}/{repo}/releases").json() -file = [file for file in os.listdir(whl_dir) if file.endswith(".whl")][0] - -header = "\n\n\nLinks for easyDiffractionLib (alpha)\n\n\n

Links for easyDiffractionLib

" -body = f'{file[:-4]}
' +header = f"\n\n\nLinks for {repo} (alpha)\n\n\n

Links for {repo}

" +body = "" +for release in releases: + asset_url = release["assets_url"] + assets = requests.get(asset_url).json() + for asset in assets: + if asset["name"].endswith(".whl"): + name = asset["name"][:-4] + url = asset["browser_download_url"] + body += f'{name}
\n' footer = "\n" content = "\n".join([header, body, footer]) From e11ad79d7e88505964b76ef3f730a914973a7b8e Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 5 Oct 2021 10:55:58 +0200 Subject: [PATCH 219/312] Add PR validation (needs labels) --- .github/workflows/verify_pr_labels.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/verify_pr_labels.yml diff --git a/.github/workflows/verify_pr_labels.yml b/.github/workflows/verify_pr_labels.yml new file mode 100644 index 00000000..2fc893ea --- /dev/null +++ b/.github/workflows/verify_pr_labels.yml @@ -0,0 +1,22 @@ +# This workflow will be verify that all PRs have at +# least on the label: 'bugs', 'enhancement' before +# they can be merged. + +name: Verify PR labels +on: + pull_request_target: + types: [opened, labeled, unlabeled, synchronize] + +jobs: + check_pr_labels: + runs-on: ubuntu-latest + name: Verify that the PR has a valid label + steps: + - name: Verify PR label action + uses: jesusvasquez333/verify-pr-label-action@v1.4.0 + id: verify-pr-label + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + valid-labels: chore, fix, bugfix, bug, enhancement, feature + pull-request-number: ${{ github.event.pull_request.number }} + disable-reviews: false From 47510839040807b8f2a49114f4a8be68ba8cb9f4 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 5 Oct 2021 11:41:14 +0200 Subject: [PATCH 220/312] Add more branch protection stuff --- .github/dependabot.yml | 9 ++++++++ .github/release-drafter.yml | 30 ++++++++++++++++++++++++++ .github/workflows/verify_pr_labels.yml | 2 +- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/release-drafter.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..45b333a3 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,9 @@ +version: 2 +updates: +- package-ecosystem: pip + directory: / + schedule: + interval: daily + open-pull-requests-limit: 10 + target-branch: develop + default_labels: dependencies diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 00000000..4b78e4d5 --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,30 @@ +# https://github.com/marketplace/actions/release-drafter +name-template: v$NEXT_PATCH_VERSION 🌈 +tag-template: v$NEXT_PATCH_VERSION +categories: +- title: 🚀 Features + labels: + - feature + - enhancement +- title: 🐛 Bug Fixes + labels: + - fix + - bugfix + - bug +- title: 🧰 Maintenance + label: chore +change-template: '- $TITLE @$AUTHOR (#$NUMBER)' +version-resolver: + major: + labels: + - major + minor: + labels: + - minor + patch: + labels: + - patch + default: patch +template: | + ## Changes + $CHANGES diff --git a/.github/workflows/verify_pr_labels.yml b/.github/workflows/verify_pr_labels.yml index 2fc893ea..da60e2f6 100644 --- a/.github/workflows/verify_pr_labels.yml +++ b/.github/workflows/verify_pr_labels.yml @@ -17,6 +17,6 @@ jobs: id: verify-pr-label with: github-token: ${{ secrets.GITHUB_TOKEN }} - valid-labels: chore, fix, bugfix, bug, enhancement, feature + valid-labels: chore, fix, bugfix, bug, enhancement, feature, dependencies pull-request-number: ${{ github.event.pull_request.number }} disable-reviews: false From 8f5cc14958b87a97c9997f262f4f0b03f2d2ff36 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 5 Oct 2021 11:54:05 +0200 Subject: [PATCH 221/312] Add documentation label --- .github/dependabot.yml | 3 ++- .github/release-drafter.yml | 4 +++- .github/workflows/verify_pr_labels.yml | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 45b333a3..33115f71 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,4 +6,5 @@ updates: interval: daily open-pull-requests-limit: 10 target-branch: develop - default_labels: dependencies + labels: + - dependencies diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 4b78e4d5..a95ea8fc 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -12,7 +12,9 @@ categories: - bugfix - bug - title: 🧰 Maintenance - label: chore + labels: + - chore + - documentation change-template: '- $TITLE @$AUTHOR (#$NUMBER)' version-resolver: major: diff --git a/.github/workflows/verify_pr_labels.yml b/.github/workflows/verify_pr_labels.yml index da60e2f6..cbd9497c 100644 --- a/.github/workflows/verify_pr_labels.yml +++ b/.github/workflows/verify_pr_labels.yml @@ -17,6 +17,6 @@ jobs: id: verify-pr-label with: github-token: ${{ secrets.GITHUB_TOKEN }} - valid-labels: chore, fix, bugfix, bug, enhancement, feature, dependencies + valid-labels: chore, fix, bugfix, bug, enhancement, feature, dependencies, documentation pull-request-number: ${{ github.event.pull_request.number }} disable-reviews: false From 56bacd34972229c07bd245bcc86ede4f184a859e Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 5 Oct 2021 13:23:45 +0200 Subject: [PATCH 222/312] Add the ability to launch examples on Binder (#12) * Create binder scripts * Remove unnecessary jupyter * Explicit external libs * Add correct path when using binder * Update readme [ci skip] --- .pre-commit-config.yaml | 9 +++++++-- README.md | 7 ++++++- binder/postBuild | 4 ++++ examples/Fitting.ipynb | 8 +++++++- examples/Simulation.ipynb | 9 +++++++-- pyproject.toml | 1 - requirements-dev.txt | 7 +++++++ 7 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 binder/postBuild create mode 100644 requirements-dev.txt diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7d6b7786..321785c5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,8 +15,13 @@ repos: - id: check-toml - id: pretty-format-json - id: detect-private-key -#- repo: local -# hooks: +- repo: local + hooks: + - id: export_dev_requirements + name: Export dev requirements + language: system + pass_filenames: false + entry: peodd -o requirements-dev.txt # - id: export-requirements # name: Export requeriments.txt # language: system diff --git a/README.md b/README.md index 22086b5f..f4ee6029 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -# [![Unit Tests][20]][21] ![Release][31] [![Downloads][70]][71] [![Lines of code][81]](<>) [![Total lines][80]](<>) [![Files][82]](<>) [![License][50]][51] +# [![Unit Tests][20]][21] ![Release][31] [![Downloads][70]][71] [![Lines of code][81]](<>) [![Total lines][80]](<>) [![Files][82]](<>) [![License][50]][51] [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/easyScience/easyDiffractionLib/develop) + @@ -56,6 +57,10 @@ Currently **easyDiffractionLib** is in **alpha** and has not been released on ** ``` * Select one of the ***.ipynb** files +### Via Binder + +Examples can also be run on the online service [binder](https://mybinder.org/). [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/easyScience/easyDiffractionLib/develop) and navigate to the examples folder to run one of the notebooks or create your own. + ## Test The installation can be verified by running the test suite: diff --git a/binder/postBuild b/binder/postBuild new file mode 100644 index 00000000..1b275d62 --- /dev/null +++ b/binder/postBuild @@ -0,0 +1,4 @@ +#!/bin/bash + +pip install --extra-index-url https://easyscience.github.io/pypi -r requirements.txt +pip install -r requirements-dev.txt \ No newline at end of file diff --git a/examples/Fitting.ipynb b/examples/Fitting.ipynb index 9fb39a33..b77042cd 100644 --- a/examples/Fitting.ipynb +++ b/examples/Fitting.ipynb @@ -40,6 +40,12 @@ "from easyCore import np\n", "from easyCore.Fitting.Fitting import Fitter\n", "\n", + "try:\n", + " from easyDiffractionLib import Phase\n", + "except ImportError:\n", + " import sys, os\n", + " sys.path.append(os.path.abspath('..'))\n", + "\n", "# esyScience, diffraction\n", "from easyDiffractionLib import Phases\n", "from easyDiffractionLib.sample import Sample as Job\n", @@ -1072,4 +1078,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/examples/Simulation.ipynb b/examples/Simulation.ipynb index 9b2eaa02..15f33aae 100644 --- a/examples/Simulation.ipynb +++ b/examples/Simulation.ipynb @@ -27,7 +27,12 @@ "source": [ "# esyScience, technique-independent\n", "from easyCore import np\n", - "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "try:\n", + " from easyDiffractionLib import Phase\n", + "except ImportError:\n", + " import sys, os\n", + " sys.path.append(os.path.abspath('..'))\n", "\n", "# esyScience, diffraction\n", "from easyDiffractionLib import Site, Phase, Phases\n", @@ -2525,4 +2530,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 159ea884..b0e8cf53 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,6 @@ pytest = "^5.2" toml = "^0.10" requests = '^2.24' hvplot = "^0.7.0" -jupyter = "^1.0.0" ipympl = "^0.8.0" matplotlib = "^3.4" py3Dmol = "^1.7.0" diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 00000000..57b55ece --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,7 @@ +pytest>=5.2 +toml>=0.10 +requests>=2.24 +hvplot>=0.7.0 +ipympl>=0.8.0 +matplotlib>=3.4 +py3Dmol>=1.7.0 From 44c3c00fbe420dbd3336d6ef6accd4ae1657731a Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 6 Oct 2021 16:24:08 +0200 Subject: [PATCH 223/312] Switch from `matplotlib` to `bokeh` in notebooks --- README.md | 10 +- examples/Fitting.ipynb | 1019 +++++++++++--- examples/Simulation.ipynb | 2691 ++++++++----------------------------- 3 files changed, 1360 insertions(+), 2360 deletions(-) diff --git a/README.md b/README.md index f4ee6029..d74b909f 100644 --- a/README.md +++ b/README.md @@ -38,10 +38,12 @@ Currently **easyDiffractionLib** is in **alpha** and has not been released on ** ### Jupyter Notebook examples that use easyDiffractionLib +#### Locally + * Install **easyDiffractionLib** as described above -* Install Jupyter Notebook and visualization libraries, such as matplotlib and py3Dmol (*if not done already*) +* Install Jupyter Notebook and visualization libraries, such as **py3Dmol** and **bokeh** (*if not done already*) ``` - pip install jupyter notebook ipympl matplotlib py3Dmol + pip install notebook py3Dmol bokeh ``` * Download **easyDiffractionLib** Jupyter Notebook [examples](https://github.com/easyScience/easyDiffractionLib/tree/develop/examples) from GitHub, e.g., using **svn** (*if not done already*) ``` @@ -57,9 +59,9 @@ Currently **easyDiffractionLib** is in **alpha** and has not been released on ** ``` * Select one of the ***.ipynb** files -### Via Binder +#### Via Binder -Examples can also be run on the online service [binder](https://mybinder.org/). [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/easyScience/easyDiffractionLib/develop) and navigate to the examples folder to run one of the notebooks or create your own. +Examples can also be run on the online service [**Binder**](https://mybinder.org/). Click [launch **Binder**](https://mybinder.org/v2/gh/easyScience/easyDiffractionLib/develop) and navigate to the examples folder to run one of the notebooks or create your own. ## Test diff --git a/examples/Fitting.ipynb b/examples/Fitting.ipynb index b77042cd..036aa73d 100644 --- a/examples/Fitting.ipynb +++ b/examples/Fitting.ipynb @@ -30,7 +30,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", + "GSAS-II binary directory: /Users/asazonov/Developing/CrossPlatform/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" ] } @@ -40,12 +40,6 @@ "from easyCore import np\n", "from easyCore.Fitting.Fitting import Fitter\n", "\n", - "try:\n", - " from easyDiffractionLib import Phase\n", - "except ImportError:\n", - " import sys, os\n", - " sys.path.append(os.path.abspath('..'))\n", - "\n", "# esyScience, diffraction\n", "from easyDiffractionLib import Phases\n", "from easyDiffractionLib.sample import Sample as Job\n", @@ -56,7 +50,332 @@ "\n", "# Vizualization\n", "import py3Dmol\n", - "import matplotlib.pyplot as plt" + "from bokeh.io import show, output_notebook\n", + "from bokeh.plotting import figure" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"
    \\n\"+\n", + " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", + " \"
  • use INLINE resources instead, as so:
  • \\n\"+\n", + " \"
\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"1002\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.0.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.0.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "output_notebook()\n", + "FIGURE_WIDTH = 990\n", + "FIGURE_HEIGHT = 300" ] }, { @@ -75,7 +394,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -129,7 +448,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -158,15 +477,15 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + "

\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] @@ -213,10 +532,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -246,7 +565,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -273,7 +592,6 @@ "with open(meas_fname, 'r') as f:\n", " content = f.read()\n", " \n", - "\n", "print('\\n'.join(content.split('\\n')[:11]))" ] }, @@ -286,7 +604,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -302,41 +620,70 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "data": { - "text/plain": [ - "" + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" ] }, - "execution_count": 7, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "5576dadff8e3423cb4ffd8479d148c8c", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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YP369bjllluwdOlSbNy4ES+++CLOP/98nHDCCRg9ejQAYMqUKRg5ciTOO+88fPrpp3j99ddx4403YubMmSgrKwMAXHbZZfjyyy9x7bXXYs2aNbjvvvvw9NNP46qrrirYsRNCCCGE5IOiE4D3338/GhsbMWnSJAwYMED/99RTTwEA/H4/3nzzTUyZMgXDhw/HL3/5S5x55pl46aWX9G14PB68/PLL8Hg8mDhxIs4991ycf/75prqBw4YNwyuvvIK5c+dizJgxuPPOO/GPf/yDNQAJyTGRiIa7536Od9btLPRQCCFpMGnSJPzsZz/DlVdeiV69eqGurg4PPvggWltbcdFFF6GqqgoHHXQQXnvtNdN6K1euxLRp09CzZ0/U1dXhvPPOw65du/TP58yZg+OOOw61tbXo06cPvvOd72D9+vX654FAAFdccQUGDBiA8vJyDB06FLNnz87bcXc3ii4JJFlZwsGDB2PhwoVJtzN06FC8+uqrCZeZNGkSPvnkk5TGRwjJjFdXbsOf560DAGy8dXqBR0NIYdE0De3BcEH2XeHzpF2H8F//+heuvfZaLFmyBE899RQuv/xyPPfcczj99NNxww034O6778Z5552HTZs2obKyEvv27cOJJ56In/zkJ7j77rvR3t6O6667DmeddRbmz58PAGhtbcXVV1+N0aNHo6WlBbNmzcLpp5+OZcuWwe1245577sGLL76Ip59+GkOGDMHmzZuxefPmbJ6SkqLoBCAhpHvT0NhR6CEQUjS0B8MYOev1gux79c1TUelPTwaMGTMGN954I4BohYxbb70Vffv2xSWXXAIAmDVrFu6//34sX74cRx99NP76179i7NixejcuAHjooYcwePBgfP755zjkkENw5plnmvbx0EMPoV+/fli9ejUOP/xwbNq0CQcffDCOO+44uFwuDB06NM0jJ0ARuoAJId2bMi9vO4R0dUTMPRANu+rTpw9GjRqlvyfq7IpkzE8//RQLFixAz5499X/Dhw8HAN3Nu27dOpxzzjk44IADUF1djf333x8AsGnTJgDRRJRly5bh0EMPxc9//nO88cYbOT/O7gwtgISQvFLm8+ivO0NhlHk9CZYmpHtT4fNg9c2FiT2v8KX/2/P5fKa/XS6X6T3hWo5EIgCAlpYWnHrqqbjtttss2xIVPE499VQMHToUDz74IAYOHIhIJILD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", - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"116779a9-3b85-4ec3-b5b9-862c6610802d\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1051\"}],\"height\":300,\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"width\":990,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1052\"}]},\"id\":\"1051\",\"type\":\"Legend\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1038\"}]},\"id\":\"1052\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"116779a9-3b85-4ec3-b5b9-862c6610802d\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"75b3dcc1-5016-4e62-8227-06e873e27c62\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1003" + } }, - "metadata": {}, "output_type": "display_data" } ], "source": [ - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.legend()" + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(meas_x, meas_y, legend_label='Imeas', color='steelblue', line_width=2)\n", + "show(fig)" ] }, { @@ -355,7 +702,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -364,7 +711,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -381,14 +728,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" + "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" ] } ], @@ -405,7 +752,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -421,42 +768,71 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [ { "data": { - "text/plain": [ - "" + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" ] }, - "execution_count": 12, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "056ea7a850624c478431b451dc981f2f", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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mzsL9fX1cDgcqKqqAsDzmCncuW4A6TyEQiHMmjULxx57LA477DAAQG1tLbxer3FhCqqrq1FbW5uDVuYnzzzzDD777DN88sknlu94DhPn22+/xUMPPYTZs2fjxhtvxCeffIKrrroKXq8X06dPN85XdXW1aT2eSzO//vWv0dDQgOHDh8PlciEYDOJ3v/sdzjvvPADgeUyBRM5ZbW0t+vTpY/re7XajR48ePK9RaGtrw/XXX49zzz0XFRUVAHgeMwUFIEmYGTNmYNWqVfjggw9y3ZROxZYtW/DLX/4S8+bNQ3Fxca6b06kJhUIYP348fv/73wMAxo4di1WrVuHhhx/G9OnTc9y6zsOzzz6Lp556Ck8//TQOPfRQLF++HLNmzUK/fv14Hkne4Pf7cfbZZ0PTNDz00EO5bk6Xgy5gkhAzZ87Eq6++infffRcHHnig8XlNTQ18Ph/q6upMy+/cuRM1NTVZbmV+smzZMuzatQtHHHEE3G433G43Fi5ciPvvvx9utxvV1dU8hwnSt29fjBw50vTZiBEjsHnzZgAwzpeaQc1zaebaa6/Fr3/9a5xzzjkYNWoUzj//fFx99dW44447APA8pkIi56ympga7du0yfR8IBLBv3z6eVwUh/jZt2oR58+YZ1j+A5zFTUACSmGiahpkzZ+KFF17AggULMHjwYNP348aNg8fjwfz5843P1q5di82bN2PixInZbm5ecvLJJ2PlypVYvny58Td+/Hicd955xmuew8Q49thjLWWIvv76awwcOBAAMHjwYNTU1JjOZUNDA5YuXcpzKdHS0gKn03z7d7lcCIVCAHgeUyGRczZx4kTU1dVh2bJlxjILFixAKBTChAkTst7mfEWIv3Xr1uGdd95Bz549Td/zPGaIXGehkPzmyiuv1CorK7X33ntP27Fjh/HX0tJiLHPFFVdoAwYM0BYsWKB9+umn2sSJE7WJEyfmsNX5j5wFrGk8h4ny8ccfa263W/vd736nrVu3Tnvqqae00tJS7d///rexzJ133qlVVVVpL730krZixQrtBz/4gTZ48GCttbU1hy3PL6ZPn64dcMAB2quvvqpt2LBBe/7557VevXpp1113nbEMz6OVxsZG7fPPP9c+//xzDYB27733ap9//rmRnZrIOTvllFO0sWPHakuXLtU++OADbejQodq5556bq0PKCbHOo8/n077//e9rBx54oLZ8+XLTuNPe3m5sg+cxfSgASUwA2P498cQTxjKtra3az3/+c6179+5aaWmpduaZZ2o7duzIXaM7AaoA5DlMnFdeeUU77LDDtKKiIm348OHaI488Yvo+FAppN998s1ZdXa0VFRVpJ598srZ27doctTY/aWho0H75y19qAwYM0IqLi7UhQ4Zo/+///T/TAMvzaOXdd9+1vR9Onz5d07TEztnevXu1c889V+vWrZtWUVGhXXTRRVpjY2MOjiZ3xDqPGzZsiDruvPvuu8Y2eB7Tx6FpUul3QgghhBDS5WEMICGEEEJIgUEBSAghhBBSYFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQYFICEEEIIIQUGBSAhhBBCSIFBAUgIIYQQUmBQABJCCCGEFBgUgIQQQgghBQYFICGEEEJIgUEBSAghhBBSYFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQYFICEEEIIIQUGBSAhhBBCSIFBAUgIIYQQUmBQABJCCCGEFBgUgIQQQgghBQYFICGEEEJIgUEBSAghhBBSYFAAEkIIIYQUGBSAhBBCCCEFBgUgIYQQQkiBQQFICCGEEFJgUAASQgghhBQY/x+oPliLL9fcGAAAAABJRU5ErkJggg==", - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"79d619d3-7b33-4f78-a037-c0c8faac216d\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1128\"}],\"center\":[{\"id\":\"1131\"},{\"id\":\"1135\"},{\"id\":\"1167\"}],\"height\":300,\"left\":[{\"id\":\"1132\"}],\"renderers\":[{\"id\":\"1154\"},{\"id\":\"1173\"}],\"title\":{\"id\":\"1156\"},\"toolbar\":{\"id\":\"1143\"},\"width\":990,\"x_range\":{\"id\":\"1120\"},\"x_scale\":{\"id\":\"1124\"},\"y_range\":{\"id\":\"1122\"},\"y_scale\":{\"id\":\"1126\"}},\"id\":\"1119\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1173\"}]},\"id\":\"1188\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1136\",\"type\":\"PanTool\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1154\"}]},\"id\":\"1168\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1137\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1151\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1186\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1165\"},\"selection_policy\":{\"id\":\"1164\"}},\"id\":\"1150\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"overlay\":{\"id\":\"1142\"}},\"id\":\"1138\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"SaveTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1142\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1140\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"HelpTool\"},{\"attributes\":{\"source\":{\"id\":\"1169\"}},\"id\":\"1174\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1185\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1169\"},\"glyph\":{\"id\":\"1170\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1172\"},\"nonselection_glyph\":{\"id\":\"1171\"},\"view\":{\"id\":\"1174\"}},\"id\":\"1173\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1159\"},\"group\":null,\"major_label_policy\":{\"id\":\"1160\"},\"ticker\":{\"id\":\"1133\"}},\"id\":\"1132\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1171\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1156\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1162\"},\"group\":null,\"major_label_policy\":{\"id\":\"1163\"},\"ticker\":{\"id\":\"1129\"}},\"id\":\"1128\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1150\"},\"glyph\":{\"id\":\"1151\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1153\"},\"nonselection_glyph\":{\"id\":\"1152\"},\"view\":{\"id\":\"1155\"}},\"id\":\"1154\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1172\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1133\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1128\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1131\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1186\"},\"selection_policy\":{\"id\":\"1185\"}},\"id\":\"1169\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1150\"}},\"id\":\"1155\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1153\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"1132\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1135\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1168\"},{\"id\":\"1188\"}]},\"id\":\"1167\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1152\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1170\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"1136\"},{\"id\":\"1137\"},{\"id\":\"1138\"},{\"id\":\"1139\"},{\"id\":\"1140\"},{\"id\":\"1141\"}]},\"id\":\"1143\",\"type\":\"Toolbar\"}],\"root_ids\":[\"1119\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"79d619d3-7b33-4f78-a037-c0c8faac216d\",\"root_ids\":[\"1119\"],\"roots\":{\"1119\":\"78ba44e0-92bf-4243-a9bd-2165271be925\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1119" + } }, - "metadata": {}, "output_type": "display_data" } ], "source": [ - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(meas_x, meas_y, legend_label='Imeas', color='steelblue', line_width=2)\n", + "fig.line(meas_x, calc_y_cryspy, legend_label='Icalc (CrysPy)', color='orangered', line_width=2)\n", + "show(fig)" ] }, { @@ -468,7 +844,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -477,42 +853,71 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - "" + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" ] }, - "execution_count": 14, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "835fc41bc483460992fe6221f8352ca5", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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Dz179sTf//53bfktt9yCQw89FIWFhejbty/uuOMOBAIBy30+//zzOPzww5GXl4du3bphwoQJpusuWbIE69evx9ixY7XPtm3bhuuvvx7XX389nn/+eYwcORK9e/fGKaecgueeew6TJ08GALzwwgsoKyvDe++9h0GDBiEvLw/z5s2Dz+dDVVWVcJyJEyfi5JNPBgBs3rwZ55xzDjp27IgOHTrg8MMPx0cffSSsX15ejsrKSgwbNgz//Oc/sWvXLixatAh33303jjjiCN15HHXUUbjjjju09+eccw5effVVy34izPGmuwEEQeQWfAwgWQAJRygKEGhMz7F9hYDLFdemt956K5599lk88sgjOOmkk7Bz5078+OOP2vLi4mK88MIL6N69O5YvX46rr74axcXFuPnmmw3399RTT2HSpEm47777MGbMGNTU1ODrr782Pf5XX32FQw89FMXFxdpnr7/+OlpbW02PUVZWpr1ubGzE/fffj+eeew7l5eXo0aMH+vbti5dffhk33XQTACAQCGDatGl44IEHAADjx49Ha2sr5s6diw4dOmDVqlUoKioybWNBQQEANVbxyiuvxF133YXFixfj2GOPBQB8//33WLZsGd566y1tm+OOOw7btm3Dpk2b0Lt3b9N9E8aQACQIIqVQDCARN4FG4B/d03Ps23YA/g6ON6urq8Ojjz6Kxx9/HJdddhkA4JBDDsFJJ52krXP77bdrr3v37o0///nPePXVV03F2b333osbb7wRf/rTn7TPmFAyYvPmzejeXey3tWvXoqSkBN26dYt5DoFAAE8++SSOPPJI7bNx48Zh6tSpmgB8//330dzcjAsuuAAAsGXLFpx//vkYPHgwAKBv376m+6+ursY999yDoqIiHHfccaioqMDo0aMxdepU7bymTp2KU089VdgPO6fNmzeTAIwDcgETBJFShJlAkhNKRBAZy+rVq9HS0oLTTz/ddJ0ZM2bgxBNPRGVlJYqKinD77bdjy5Ythuvu3r0bO3bssNyfTFNTE/Lz84XPFEWBy6ZF0+/3Y8iQIcJnl19+OdatW4eFCxcCUF3FF1xwATp0UEXy9ddfj3vvvRcnnngi/va3v2HZsmW6/Z5wwgkoKipCx44d8cMPP2DGjBmoqKgAAFx99dV45ZVX0NzcjNbWVkyfPh1XXnmlsD2zGjY2pskqnOWQBZAgiJQi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", - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"a28d7134-ab64-4a4c-b674-88a478195ecd\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1287\"}],\"center\":[{\"id\":\"1290\"},{\"id\":\"1294\"},{\"id\":\"1326\"}],\"height\":300,\"left\":[{\"id\":\"1291\"}],\"renderers\":[{\"id\":\"1313\"},{\"id\":\"1332\"}],\"title\":{\"id\":\"1315\"},\"toolbar\":{\"id\":\"1302\"},\"width\":990,\"x_range\":{\"id\":\"1279\"},\"x_scale\":{\"id\":\"1283\"},\"y_range\":{\"id\":\"1281\"},\"y_scale\":{\"id\":\"1285\"}},\"id\":\"1278\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"1301\"}},\"id\":\"1297\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1313\"}]},\"id\":\"1327\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1281\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1298\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1283\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1279\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1331\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1285\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1309\"}},\"id\":\"1314\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1315\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1321\"},\"group\":null,\"major_label_policy\":{\"id\":\"1322\"},\"ticker\":{\"id\":\"1288\"}},\"id\":\"1287\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1292\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1318\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1319\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1288\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1287\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1290\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1324\"},\"selection_policy\":{\"id\":\"1323\"}},\"id\":\"1309\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1300\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1321\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1291\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1294\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1318\"},\"group\":null,\"major_label_policy\":{\"id\":\"1319\"},\"ticker\":{\"id\":\"1292\"}},\"id\":\"1291\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1322\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1323\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1345\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1324\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1345\"},\"selection_policy\":{\"id\":\"1344\"}},\"id\":\"1328\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1344\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1309\"},\"glyph\":{\"id\":\"1310\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1312\"},\"nonselection_glyph\":{\"id\":\"1311\"},\"view\":{\"id\":\"1314\"}},\"id\":\"1313\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1327\"},{\"id\":\"1347\"}]},\"id\":\"1326\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1310\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"1295\"},{\"id\":\"1296\"},{\"id\":\"1297\"},{\"id\":\"1298\"},{\"id\":\"1299\"},{\"id\":\"1300\"}]},\"id\":\"1302\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1312\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1330\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1328\"},\"glyph\":{\"id\":\"1329\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1331\"},\"nonselection_glyph\":{\"id\":\"1330\"},\"view\":{\"id\":\"1333\"}},\"id\":\"1332\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1311\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1329\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1295\",\"type\":\"PanTool\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1332\"}]},\"id\":\"1347\",\"type\":\"LegendItem\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1301\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"1328\"}},\"id\":\"1333\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1296\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1299\",\"type\":\"ResetTool\"}],\"root_ids\":[\"1278\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"a28d7134-ab64-4a4c-b674-88a478195ecd\",\"root_ids\":[\"1278\"],\"roots\":{\"1278\":\"72032121-6016-47aa-b25d-1230668868e2\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1278" + } }, - "metadata": {}, "output_type": "display_data" } ], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(meas_x, meas_y, legend_label='Imeas', color='steelblue', line_width=2)\n", + "fig.line(meas_x, calc_y_cryspy, legend_label='Icalc (CrysPy)', color='orangered', line_width=2)\n", + "show(fig)" ] }, { @@ -524,7 +929,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -533,42 +938,71 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - "" + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" ] }, - "execution_count": 16, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f8d9b3eb4fa04c609f5cfdffc2e496fe", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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BI8++iiOPvpo9OvXD+PHj8cjjzyC66+/HgDw+OOPo6KiAm+88QaGDh2KgoICfPbZZ8jLy0N1dbXhOJdeeimOOuooAMD69etx0kknoXPnzigpKcGBBx6Id955x7B+ZWUlqqqqMGbMGPz973/Htm3bsGDBAtx8880YNmyY6TwOOuggXHfddfrfJ510Ep5//vmY/UTs8We6AYSQ3EKMAaQFkLhCUYBAY2aOnVcMeDwJbXr11Vfj4Ycfxj333IMjjzwSW7duxQ8//KB/36lTJzz++OPo1asXlixZggsuuACdOnXClVdeabm/Bx54ADNnzsRtt92GyZMno7a2Fp9//rnt8T/99FMMGjQInTp10pe99NJLaG1ttT1GRUWF/rmxsRG33347HnnkEVRWVqJ3794YMGAAnnrqKVxxxRUAgEAggGeeeQZ33HEHAGD69OlobW3FJ598gpKSEixfvhylpaW2bSwqKgKgxiqed955uOmmm/DVV1/hkEMOAQB8++23WLx4MV555RV9m0MPPRSbNm3CunXr0K9fP9t9E2soAAkhaYUxgCRhAo3A33pl5tjXbAHyS1xvtnfvXtx7773497//jalTpwIA9ttvPxx55JH6Otdee63+uV+/fvjTn/6E559/3lac/eUvf8Hll1+OP/7xj/oyTShZsX79evTqZey3lStXoqysDD179ox7DoFAAPfffz9GjhypL5s2bRoee+wxXQC++eabaG5uxumnnw4A2LBhA0477TQMHz4cADBgwADb/dfU1OCWW25BaWkpDj30UPTo0QOTJk3CY489pp/XY489hp/85CeG/WjntH79egrABKALmBCSVgwzgaQmlIiQrOX7779HS0sLjjvuONt1XnjhBRxxxBGoqqpCaWkprr32WmzYsMFy3e3bt2PLli0x9yfT1NSEwsJCwzJFUeBxaNHMz8/HiBEjDMvOPfdcrFq1CvPnzweguopPP/10lJSoIvmSSy7BX/7yFxxxxBG44YYbsHjxYtN+Dz/8cJSWlqJz58747rvv8MILL6BHjx4AgAsuuADPPfccmpub0draimeffRbnnXeeYXvNatjYmCGrcDuHFkBCSFoxzATCGEDihrxi1RKXqWMngCZS7Jg3bx7OOuss3HTTTZg0aRLKy8vx/PPP2yZhxNufFV27dsWSJUsMywYNGoTa2lps3bo1rhWwqKjI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", - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"7d9652be-e64a-483d-b732-fcde9cad4c0d\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1459\"}],\"center\":[{\"id\":\"1462\"},{\"id\":\"1466\"},{\"id\":\"1498\"}],\"height\":300,\"left\":[{\"id\":\"1463\"}],\"renderers\":[{\"id\":\"1485\"},{\"id\":\"1504\"}],\"title\":{\"id\":\"1487\"},\"toolbar\":{\"id\":\"1474\"},\"width\":990,\"x_range\":{\"id\":\"1451\"},\"x_scale\":{\"id\":\"1455\"},\"y_range\":{\"id\":\"1453\"},\"y_scale\":{\"id\":\"1457\"}},\"id\":\"1450\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1453\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1481\"}},\"id\":\"1486\",\"type\":\"CDSView\"},{\"attributes\":{\"tools\":[{\"id\":\"1467\"},{\"id\":\"1468\"},{\"id\":\"1469\"},{\"id\":\"1470\"},{\"id\":\"1471\"},{\"id\":\"1472\"}]},\"id\":\"1474\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1460\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1494\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1490\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1471\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1516\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1472\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1451\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1481\"},\"glyph\":{\"id\":\"1482\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1484\"},\"nonselection_glyph\":{\"id\":\"1483\"},\"view\":{\"id\":\"1486\"}},\"id\":\"1485\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1501\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1491\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1470\",\"type\":\"SaveTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1473\"}},\"id\":\"1469\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1493\"},\"group\":null,\"major_label_policy\":{\"id\":\"1494\"},\"ticker\":{\"id\":\"1460\"}},\"id\":\"1459\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1468\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1495\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1496\"},\"selection_policy\":{\"id\":\"1495\"}},\"id\":\"1481\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1503\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1467\",\"type\":\"PanTool\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1504\"}]},\"id\":\"1519\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1482\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1484\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1502\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1500\"},\"glyph\":{\"id\":\"1501\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1503\"},\"nonselection_glyph\":{\"id\":\"1502\"},\"view\":{\"id\":\"1505\"}},\"id\":\"1504\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1455\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEqoLz7Cn505500QQFdL3jnY6bpYkHoDOvqWsPzpfw868BFabqADADqjlgii33nUOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1517\"},\"selection_policy\":{\"id\":\"1516\"}},\"id\":\"1500\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1493\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1487\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1464\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1496\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1490\"},\"group\":null,\"major_label_policy\":{\"id\":\"1491\"},\"ticker\":{\"id\":\"1464\"}},\"id\":\"1463\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1499\"},{\"id\":\"1519\"}]},\"id\":\"1498\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"1463\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1466\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1517\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1457\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1483\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"1459\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1462\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1485\"}]},\"id\":\"1499\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"1500\"}},\"id\":\"1505\",\"type\":\"CDSView\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1473\",\"type\":\"BoxAnnotation\"}],\"root_ids\":[\"1450\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"7d9652be-e64a-483d-b732-fcde9cad4c0d\",\"root_ids\":[\"1450\"],\"roots\":{\"1450\":\"4a53b34c-a872-4821-ba1a-f61f83ddfa0f\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1450" + } }, - "metadata": {}, "output_type": "display_data" } ], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(meas_x, meas_y, legend_label='Imeas', color='steelblue', line_width=2)\n", + "fig.line(meas_x, calc_y_cryspy, legend_label='Icalc (CrysPy)', color='orangered', line_width=2)\n", + "show(fig)" ] }, { @@ -580,7 +1014,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -594,42 +1028,71 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - "" + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" ] }, - "execution_count": 18, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "20e950f859b04c25bbd54a6e61dc63ad", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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vr4e9fX1aG9vBwAsX74ct912G+bMmYOVK1fi1VdfxbnnnoujjjoKe++9NwDguOOOw5gxY3DOOefg66+/xjvvvIMbb7wRkyZNQmVlJQDg4osvxnfffYdrrrkGixcvxoMPPogXXngBV1xxRcmOnRBCCCGkGHQ6AfjQQw+hsbERRx99NIYMGeL8Pf/88wCAYDCI9957D8cddxxGjRqFq666CmeccQZee+01Zxt+vx+vv/46/H4/xo0bh1/84hc499xzpbqBI0aMwBtvvIGpU6din332wT333IN//OMfrAFISAdjGCbunfotPlq6udRNIaTDOfroo/Gb3/wGl19+Ofr27YvBgwfjscceQ2trKy644ALU1NRgt912w1tvvSWtt2DBAkyYMAG9evXC4MGDcc4552DLli3O/LfffhtHHHEE+vTpg/79++NHP/oRli9f7syPRCK49NJLMWTIEFRVVWH48OGYMmVK0Y6bdH46XRJIurKEw4YNc40C4sXw4cPx5ptvplzm6KOPxldffZVV+wgh+fHmgg3427SlAICVd5xY4taQroRpmmiP6iXZd3WFP+ds5H/961+45pprMHv2bDz//PO45JJL8PLLL+O0007DDTfcgHvvvRfnnHMOVq9ejR49eqChoQE/+MEPcOGFF+Lee+9Fe3s7rr32Wvz0pz/F+++/DwBobW3FlVdeib333hstLS2YPHkyTjvtNMydOxc+nw/33XcfXn31VbzwwgvYaaedsGbNGqxZs6aQp4R0cTqdACSEdG/qG0OlbgLporRHdYyZ/E5J9r3o1vHoEcyty9xnn31w4403ArCqSdxxxx0YMGAALrroIgDA5MmT8dBDD2HevHk49NBDcf/992O//fZzRq4CgMcffxzDhg3Dt99+i9133x1nnHGGtI/HH38cAwcOxKJFi7DXXnth9erVGDlyJI444ghomobhw4fneOSku9LpXMCEkO5NZYCPHVJe2PHpgBWi1L9/f4wdO9aZZtektRMXv/76a2cce/tv1KhRAOC4eZcuXYqzzjoLu+yyC2pra7HzzjsDAFavXg3ASkSZO3cu9thjD1x22WV49913O/w4SdeCFkBCSFGprPA7n8MxHZUBf4qlCUlQXeHHoltLE6ddXZH7dVpRUSF91zRNmma7lg3DAGCNf3zSSSfhzjvvdG3LrnZx0kknYfjw4XjssccwdOhQGIaBvfbaC5FIBACw//77Y8WKFXjrrbfw3nvv4ac//SmOPfZY/Oc//8n5OEj3ggKQEFJUfEIcVSRmUACSjNE0LWc3bFdi//33x3//+1/svPPOCATcx7t161YsWbIEjz32GI488kgAcA2YAAC1tbX42c9+hp/97Gf48Y9/jOOPPx7btm1zDa1KyhP6YgghRUWPWzkAIHXKFyHlyaRJk7Bt2zacddZZ+Pzzz7F8+XK88847uOCCC6DrOvr27Yv+/fvj0UcfxbJly/D+++9Lo1QBwF/+8hc8++yzWLx4Mb799lu8+OKLqKurQ58+fUpzUKTTQQFICCkqUT0h+0wjxYKElClDhw7FJ598Al3Xcdxxx2Hs2LG4/PLL0adPH/h8Pvh8Pjz33HOYM2cO9tprL1xxxRX485//LG2jpqYGd911Fw488EAcdNBBWLlyJd58802Oj0scNDNd3RWSlKamJvTu3RuNjY0cFo6QDPnXpyvxh1cXAgDmTv4h+vQIlrhFpLMSCoWwYsUKjBgxAlVVVaVuDulipLp+2H/TAkgIKTIxI/HOafD1kxBCSgIFICGkqBiSAKQCJISQUkABSAgpKqaQ+kH9RwghpYECkBBSVETRxxBkQggpDRSAhJCiIsb9Uf4RQkhpoAAkhBQV0QXMGEBCCCkNFICEkKIiaj5mARNCSGmgACSEFBUx7o8xgIQQUhooAAkhRUVOAildOwghpJyhACSEFBVR81EAEpKem2++Gfvuu29e24hEIthtt93w6aefFqZRJea6667Db37zm1I3o0tDAUgIKSpi4geTQEh35Pzzz8epp55a6mZIPPzwwxgxYgQOO+wwafoHH3yAE044Af3790ePHj0wZswYXHXVVVi3bl2HtWXlypXQNM3569+/P4477jh89dVXGW/jd7/7Hf71r3/hu+++67B2dncoAAkhRcVkGRhCioppmrj//vsxceJEafojjzyCY489FnV1dfjvf/+LRYsW4eGHH0ZjYyPuuecez23pug7DMArSrvfeew8bNmzAO++8g5aWFkyYMAENDQ0ZrTtgwACMHz8eDz30UEHaUo5QABJCiopJCyApMwzDwF133YXddtsNlZWV2GmnnfDHP/7RmX/ttddi9913R48ePbDLLrvgpptuQjQaTbnNxx9/HHvuuScqKysxZMgQXHrppUmXnTNnDpYvX44TTzzRmbZ27VpcdtlluOyyy/D444/j6KOPxs4774yjjjoK//jHPzB58mQAwJNPPok+ffrg1VdfxZgxY1BZWYmPP/4YFRUVqK+vl/Zz+eWX48gjjwQArFq1CieddBL69u2Lnj17Ys8998Sbb74pLd+/f3/U1dXhwAMPxN13342NGzdi1qxZuPXWW7HXXnu5jmPffffFTTfd5Hw/6aST8Nxzz6U8TyQ5gVI3gBBSXsgxgBSAJAtME4i2lWbfFT0ATctp1euvvx6PPfYY7r33XhxxxBHYsGEDFi9e7MyvqanBk08+iaFDh2L+/Pm46KKLUFNTg2uuucZzew899BCuvPJK3HHHHZgwYQIaGxvxySefJN3/Rx99hN133x01NTXOtBdffBGRSCTpPvr06eN8bmtrw5133ol//OMf6N+/P4YNG4ZddtkF//d//4err74aABCNRvH000/jrrvuAgBMmjQJkUgEM2bMQM+ePbFo0SL06tUraRurq6sBWLGKv/zlL3HLLbfg888/x0EHHQQA+OqrrzBv3jy89NJLzjoHH3ww1q5di5UrV2LnnXdOum3iDQUgIaSoMAuY5Ey0DfjT0NLs+4b1QLBn1qs1Nzfjb3/7G+6//36cd955AIBdd90VRxxxhLPMjTfe6Hzeeeed8bvf/Q7PPfdcUnF2++2346qrrsJvf/tbZ5otlLxYtWoVhg6Vz9vSpUtRW1uLIUOGpD2GaDSKBx98EPvss48zbeLEiXjiiSccAfjaa68hFArhpz/9KQBg9erVOOOMMzB27FgAwC677JJ0+w0NDbjtttvQq1cvHHzwwRg8eDDGjx+PJ554wjmuJ554At/73vek7djHtGrVKgrAHKALmBBSVOQkkBI2hJAi8M033yAcDuOYY45Juszzzz+Pww8/HHV1dejVqxduvPFGrF692nPZTZs2Yf369Sm3p9Le3o6qqippmmma0DK0aAaDQey9997StPPPPx/Lli3DZ599BsByFf/0pz9Fz56WSL7ssstw++234/DDD8cf/vAHzJs3z7Xdww47DL169ULfvn3x9ddf4/nnn8fgwYMBABdddBGeffZZhEIhRCIRPPPMM/jlL38prW9bDdvaSmQV7uLQAkgIKSqSC5hpICQbKnpYlrhS7TsHbJGSjJkzZ+Lss8/GLbfcgvHjx6N379547rnnkiZhpNueFwMGDMD8+fOlabvvvjsaGxuxYcOGtFbA6upql1gcNGgQTjrpJDzxxBMYMWIE3nrrLXz44YfO/AsvvBDjx4/HG2+8gXfffRdTpkzBPffcI5Vuef755zFmzBj0799fcjkDVnxfZWUlXn75ZQSDQUSjUfz4xz+Wltm2bRsAYODAgZmeCiJACyAhpKhIQ8EVJpmQlAuaZrlhS/GXY/zfyJEjUV1djWnTpnnO//TTTzF8+HD8/ve/x4EHHoiRI0di1apVSbdXU1ODnXfeOen2vNhvv/2wePFiKeb2xz/+MYLBoBOzp5JJNu6FF16I559/Ho8++ih23XVXHH744dL8YcOG4eKLL8ZLL72Eq666Co899phr/q677uoSfwAQCARw3nnn4YknnsATTzyBM8880yV+FyxYgIqKCuy5555p20rc0AJICCkqzAIm5URVVRWuvfZaXHPNNQgGgzj88MOxefNmLFy4EBMnTsTIkSOxevVqPPfcczjooIPwxhtv4OWXX065zZtvvhkXX3wxBg0ahAkTJqC5uRmffPJJ0sLI3//+99HS0oKFCxc62bXDhg3Dvffei0svvRRNTU0499xzsfPOO2Pt2rX497//jV69eiW1QtqMHz8etbW1uP3223HrrbdK8y6//HJMmDABu+++O7Zv344PPvgAo0ePzuLMWQLTXscryeWjjz7CkUcemZNVlNACSAgpMpR8pNy46aabcNVVV2Hy5MkYPXo0fvazn2HTpk0AgJNPPhlXXHEFLr30Uuy777749NNPpVInXpx33nn461//igcffBB77rknfvSjH2Hp0qVJl+/fvz9OO+00PP3009L0X//613j33Xexbt06nHbaaRg1ahQuvPBC1NbW4ne/+13a4/L5fDj//POh6zrOPfdcaZ6u65g0aRJGjx6N448/HrvvvjsefPDBtNsUGTlyJA477DCMGjUKhxxyiGv+c889h4suuiirbZIEmsk6DDnT1NSE3r17o7GxEbW1taVuDiFdgttfX4R/fLwCAPDqpYdj7x37lLZBpNMSCoWwYsUKjBgxwpXEQLJj3rx5+OEPf4jly5enLMeSLRMnTsTmzZvx6quvFmybNqZpYuTIkfj1r3+NK6+8Upr31ltv4aqrrsK8efMQCHg7M1NdP+y/6QImhBQZjgVMSPHZe++9ceedd2LFihVOaZZ8aGxsxPz58/HMM890iPjb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+GNz5MiR5llnnVWqQyoJqc5jJBIxTz75ZHPHHXc0586dK/U74XDY2QbPY/5QAJKUAPD8e+KJJ5xl2tvbzV//+tdm3759zR49epinnXaauWHDhtI1ugugCkCew8x57bXXzL322susrKw0R40aZT766KPSfMMwzJtuuskcPHiwWVlZaR5zzDHmkiVLStTazklTU5P529/+1txpp53Mqqoqc5dddjF///vfSx0sz6ObDz74wPN5eN5555mmmdk527p1q3nWWWeZvXr1Mmtra80LLrjAbG5uLsHRlI5U53HFihVJ+50PPvjA2QbPY/5opimUfieEEEIIId0exgASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImUEBSAghhBBSZlAAEkIIIYSUGRSAhBBCCCFlBgUgIYQQQkiZQQFICCGEEFJmUAASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImUEBSAghhBBSZlAAEkIIIYSUGRSAhBBCCCFlBgUgIYQQQkiZQQFICCGEEFJmUAASQgghhJQZFICEEEIIIWUGBSAhhBBCSJlBAUgIIYQQUmZQABJCCCGElBkUgIQQQgghZQYFICGEEEJImfH/ATdEZC/tZ8H3AAAAAElFTkSuQmCC", - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"58f9e23c-3587-44be-a3b2-7b9318ecce20\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1644\"}],\"center\":[{\"id\":\"1647\"},{\"id\":\"1651\"},{\"id\":\"1683\"}],\"height\":300,\"left\":[{\"id\":\"1648\"}],\"renderers\":[{\"id\":\"1670\"},{\"id\":\"1689\"}],\"title\":{\"id\":\"1672\"},\"toolbar\":{\"id\":\"1659\"},\"width\":990,\"x_range\":{\"id\":\"1636\"},\"x_scale\":{\"id\":\"1640\"},\"y_range\":{\"id\":\"1638\"},\"y_scale\":{\"id\":\"1642\"}},\"id\":\"1635\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1689\"}]},\"id\":\"1704\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1669\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1667\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1685\"},\"glyph\":{\"id\":\"1686\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1688\"},\"nonselection_glyph\":{\"id\":\"1687\"},\"view\":{\"id\":\"1690\"}},\"id\":\"1689\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1636\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1638\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1688\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1640\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"1648\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1651\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1666\"}},\"id\":\"1671\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1657\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1676\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1652\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1681\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1680\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1655\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1672\",\"type\":\"Title\"},{\"attributes\":{\"tools\":[{\"id\":\"1652\"},{\"id\":\"1653\"},{\"id\":\"1654\"},{\"id\":\"1655\"},{\"id\":\"1656\"},{\"id\":\"1657\"}]},\"id\":\"1659\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1642\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1687\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1678\"},\"group\":null,\"major_label_policy\":{\"id\":\"1679\"},\"ticker\":{\"id\":\"1645\"}},\"id\":\"1644\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1678\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1679\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1675\"},\"group\":null,\"major_label_policy\":{\"id\":\"1676\"},\"ticker\":{\"id\":\"1649\"}},\"id\":\"1648\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1675\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAAAAaUDpoosuugBpQNFFF110AWlAuuiiiy4CaUCjiy666AJpQIwuuuiiA2lAdNFFF10EaUBddNFFFwVpQEYXXXTRBWlAL7rooosGaUAXXXTRRQdpQAAAAAAACGlA6aKLLroIaUDRRRdddAlpQLrooosuCmlAo4suuugKaUCMLrroogtpQHTRRRddDGlAXXTRRRcNaUBGF1100Q1pQC+66KKLDmlAF1100UUPaUAAAAAAABBpQOmiiy66EGlA0UUXXXQRaUC66KKLLhJpQKOLLrroEmlAjC666KITaUB00UUXXRRpQF100UUXFWlARhdddNEVaUAvuuiiixZpQBdddNFFF2lAAAAAAAAYaUDpoosuuhhpQNFFF110GWlAuuiiiy4aaUCjiy666BppQIwuuuiiG2lAdNFFF10caUBddNFFFx1pQEYXXXTRHWlAL7roooseaUAXXXTRRR9pQAAAAAAAIGlA6aKLLrogaUDRRRdddCFpQLrooosuImlAo4suuugiaUCMLrrooiNpQHTRRRddJGlAXXTRRRclaUBGF1100SVpQC+66KKLJmlAF1100UUnaUAAAAAAAChpQOmiiy66KGlA0UUXXXQpaUC66KKLLippQKOLLrroKmlAjC666KIraUB00UUXXSxpQF100UUXLWlARhdddNEtaUAvuuiiiy5pQBdddNFFL2lAAAAAAAAwaUDpoosuujBpQNFFF110MWlAuuiiiy4yaUCjiy666DJpQIwuuuiiM2lAdNFFF100aUBddNFFFzVpQEYXXXTRNWlAL7rooos2aUAXXXTRRTdpQAAAAAAAOGlA6aKLLro4aUDRRRdddDlpQLrooosuOmlAo4suuug6aUCMLrroojtpQHTRRRddPGlAXXTRRRc9aUBGF1100T1pQC+66KKLPmlAF1100UU/aUAAAAAAAEBpQOmiiy66QGlA0UUXXXRBaUC66KKLLkJpQKOLLrroQmlAjC666KJDaUB00UUXXURpQF100UUXRWlARhdddNFFaUAvuuiii0ZpQBdddNFFR2lAAAAAAABIaUDpoosuukhpQNFFF110SWlAuuiiiy5KaUCjiy666EppQIwuuuiiS2lAdNFFF11MaUBddNFFF01pQEYXXXTRTWlAL7roootOaUAXXXTRRU9pQAAAAAAAUGlA6aKLLrpQaUDRRRdddFFpQLrooosuUmlAo4suuuhSaUCMLrroolNpQHTRRRddVGlAXXTRRRdVaUBGF1100VVpQC+66KKLVmlAF1100UVXaUAAAAAAAFhpQOmiiy66WGlA0UUXXXRZaUC66KKLLlppQKOLLrroWmlAjC666KJbaUB00UUXXVxpQF100UUXXWlARhdddNFdaUAvuuiii15pQBdddNFFX2lAAAAAAABgaUDpoosuumBpQNFFF110YWlAuuiiiy5iaUCjiy666GJpQIwuuuiiY2lAdNFFF11kaUBddNFFF2VpQEYXXXTRZWlAL7roootmaUAXXXTRRWdpQAAAAAAAaGlA6aKLLrpoaUDRRRdddGlpQLrooosuamlAo4suuuhqaUCMLrroomtpQHTRRRddbGlAXXTRRRdtaUBGF1100W1pQC+66KKLbmlAF1100UVvaUAAAAAAAHBpQOmiiy66cGlA0UUXXXRxaUC66KKLLnJpQKOLLrrocmlAjC666KJzaUB00UUXXXRpQF100UUXdWlARhdddNF1aUAvuuiii3ZpQBdddNFFd2lAAAAAAAB4aUDpoosuunhpQNFFF110eWlAuuiiiy56aUCjiy666HppQIwuuuiie2lAdNFFF118aUBddNFFF31pQEYXXXTRfWlAL7rooot+aUAXXXTRRX9pQAAAAAAAgGlA6aKLLrqAaUDRRRdddIFpQLrooosugmlAo4suuuiCaUCMLrroooNpQHTRRRddhGlAXXTRRReFaUBGF1100YVpQC+66KKLhmlAF1100UWHaUAAAAAAAIhpQOmiiy66iGlA0UUXXXSJaUC66KKLLoppQKOLLrroimlAjC666KKLaUB00UUXXYxpQF100UUXjWlARhdddNGNaUAvuuiii45pQBdddNFFj2lAAAAAAACQaUDpoosuupBpQNFFF110kWlAuuiiiy6SaUCjiy666JJpQIwuuuiik2lAdNFFF12UaUBddNFFF5VpQEYXXXTRlWlAE6qQIxvWaUDIwCeWwxVsQHu/g+JBu3BAWqpcXYiycEABO5h40QZsQNwFbBjt1mlAo4suuuiaaUCMLrrooptpQHTRRRddnGlAXXTRRRedaUBGF1100Z1pQC+66KKLnmlAF1100UWfaUAAAAAAAKBpQOmiiy66oGlA0UUXXXShaUC66KKLLqJpQKOLLrroomlAjC666KKjaUB00UUXXaRpQF100UUXpWlARhdddNGlaUAvuuiii6ZpQBdddNFFp2lAAAAAAACoaUDpoosuuqhpQNFFF110qWlAuuiiiy6qaUCjiy666KppQIwuuuiiq2lAdNFFF12saUBddNFFF61pQEYXXXTRrWlAL7rooouuaUAXXXTRRa9pQAAAAAAAsGlA6aKLLrqwaUDRRRdddLFpQLrooosusmlAo4suuuiyaUCMLrroorNpQHTRRRddtGlAXXTRRRe1aUBGF1100bVpQC+66KKLtmlAF1100UW3aUAAAAAAALhpQOmiiy66uGlA0UUXXXS5aUC66KKLLrppQKOLLrroumlAjC666KK7aUB00UUXXbxpQF100UUXvWlARhdddNG9aUAvuuiii75pQBdddNFFv2lAAAAAAADAaUDpoosuusBpQNFFF110wWlAuuiiiy7CaUCjiy666MJpQIwuuuiiw2lAdNFFF13EaUBddNFFF8VpQEYXXXTRxWlALrrooovGaUAXXXTRRcdpQAAAAAAAyGlA6aKLLrrIaUDRRRdddMlpQLrooosuymlAo4suuujKaUCMLrroostpQHTRRRddzGlAXXTRRRfNaUBGF1100c1pQC+66KKLzmlAF1100UXPaUAAAAAAANBpQOmiiy660GlA0UUXXXTRaUC66KKLLtJpQKOLLrro0mlAjC666KLTaUB00UUXXdRpQF100UUX1WlARhdddNHVaUAvuuiii9ZpQBdddNFF12lAAAAAAADYaUDpoosuuthpQNFFF1102WlAuuiiiy7aaUCjiy666NppQIwuuuii22lAdNFFF13caUBddNFFF91pQEYXXXTR3WlAL7roooveaUAXXXTRRd9pQAAAAAAA4GlA6aKLLrrgaUDRRRdddOFpQLrooosu4mlAo4suuujiaUCMLrroouNpQHTRRRdd5GlAXXTRRRflaUCJeNNL3gtqQHNfdjiy3GpArsabnCHba0DEAvhYyCtrQI0aY5BQTmpA3w22+btEakD34y1DYylqQCXZKCZH+WlAxblQZ6nsaUB00UUXXexpQF100UUX7WlARhdddNHtaUAuuuiii+5pQBdddNFF72lAAAAAAADwaUDpoosuuvBpQNFFF1108WlAuuiiiy7yaUCjiy666PJpQIwuuuii82lAdNFFF130aUBddNFFF/VpQEYXXXTR9WlAL7rooov2aUAXXXTRRfdpQAAAAAAA+GlA6aKLLrr4aUDRRRdddPlpQLrooosu+mlAo4suuuj6aUCMLrroovtpQHTRRRdd/GlAXXTRRRf9aUBGF1100f1pQC+66KKL/mlAF1100UX/aUAAAAAAAABqQOmiiy66AGpA0UUXXXQBakC66KKLLgJqQKOLLrroAmpAjC666KIDakB00UUXXQRqQF100UUXBWpARhdddNEFakAvuuiiiwZqQBdddNFFB2pAAAAAAAAIakDpoosuughqQNFFF110CWpAuuiiiy4KakCjiy666ApqQIwuuuiiC2pAdNFFF10MakBddNFFFw1qQEYXXXTRDWpAL7rooosOakAXXXTRRQ9qQAAAAAAAEGpA6aKLLroQakDRRRdddBFqQLrooosuEmpAo4suuugSakCiLWwtNnhqQEWxQTLhA21AzQRADqh7cEC8WcsEkyZvQAp+nBAAQmtAW6GCRfksakAAAAAAABhqQOmiiy66GGpA0UUXXXQZakC66KKLLhpqQKOLLrroGmpAjC666KIbakB00UUXXRxqQF100UUXHWpARhdddNEdakAuuuiiix5qQBdddNFFH2pAAAAAAAAgakDpoosuuiBqQNFFF110IWpAuuiiiy4iakCjiy666CJqQIwuuuiiI2pAdNFFF10kakBddNFFFyVqQEYXXXTRJWpAL7rooosmakAXXXTRRSdqQAAAAAAAKGpA6aKLLrooakDRRRdddClqQG97P4M3qmpA99ZpL/acbkBIXDbH10hzQMqflx8Gg3JA3p+GudEnbUAv7ZvjiG9qQC+66KKLLmpAF1100UUvakAAAAAAADBqQOmiiy66MGpA0UUXXXQxakC66KKLLjJqQKOLLrroMmpAjC666KIzakB00UUXXTRqQF100UUXNWpARhdddNE1akAvuuiiizZqQBdddNFFN2pAAAAAAAA4akDpoosuujhqQNFFF110OWpAuuiiiy46akCjiy666DpqQIwuuuiiO2pAdNFFF108akDZLnrOgeBtQGNjjK4iQHdAoucUr7XRfkAtCqOj19J2QNE3X1sPlm1A6aKLLrpAakDRRRdddEFqQLrooosuQmpAo4suuuhCakCMLrrookNqQHTRRRddRGpAXXTRRRdFakBGF1100UVqQC+66KKLRmpAF1100UVHakAAAAAAAEhqQOmiiy66SGpA0UUXXXRJakC66KKLLkpqQKOLLrroSmpAjC666KJLakB00UUXXUxqQF100UUXTWpARhdddNFNakAvuuiii05qQBdddNFFT2pAAAAAAABQakDpoosuulBqQIEGOhucn2xAWPVf67kceEAWIicVDueGQHZ1yQHf14VAjVfbeUUedkD4zbTK7vprQEYXXXTRVWpALrroootWakAXXXTRRVdqQAAAAAAAWGpA6aKLLrpYakDRRRdddFlqQLrooosuWmpAo4suuuhaakCMLrrooltqQHTRRRddXGpAXXTRRRddakBGF1100V1qQC+66KKLXmpAF1100UVfakAAAAAAAGBqQOmiiy66YGpA0UUXXXRhakC66KKLLmJqQKOLLrroYmpAac72t2VPa0Cfxi+Yz0hwQBLyDAzssXNALA84daN8cUCfJ48XBy1sQIdVt9XIhGpAAAAAAABoakDpoosuumhqQNFFF110aWpAuuiiiy5qakCjiy666GpqQIwuuuiia2pAdNFFF11sakBddNFFF21qQEYXXXTRbWpAL7roootuakAXXXTRRW9qQAAAAAAAcGpA6aKLLrpwakDRRRdddHFqQLrooosucmpAo4suuuhyakCMLrroonNqQHTRRRdddGpAXXTRRRd1akBGF1100XVqQC+66KKLdmpAF1100UV3akAAAAAAAHhqQOmiiy66eGpA0kUXXXR5akC66KKLLnpqQKOLLrroempAjC666KJ7akB00UUXXXxqQF100UUXfWpARhdddNF9akAuuuiii35qQBdddNFFf2pAAAAAAACAakDpoosuuoBqQNFFF110gWpAuuiiiy6CakCjiy666IJqQIwuuuiig2pAdNFFF12EakBddNFFF4VqQEYXXXTRhWpAL7rooouGakAXXXTRRYdqQHk5C5TJO21AM+tdCw42e0Bs/XJXXzONQOoIT+Hkio1AyZ8X3ILbe0DpnXWzUnVtQHTRRRddjGpAXXTRRReNakBGF1100Y1qQC666KKLjmpAF1100UWPakAAAAAAAJBqQOmiiy66kGpA0UUXXXSRakC66KKLLpJqQKOLLrrokmpAjC666KKTakB00UUXXZRqQF100UUXlWpARhdddNGVakAvuuiii5ZqQBdddNFFl2pAAAAAAACYakDpoosuuphqQNFFF110mWpAuuiiiy6aakCjiy666JpqQIwuuuiim2pAdNFFF12cakBddNFFF51qQEYXXXTRnWpALrroooueakAXXXTRRZ9qQAAAAAAAoGpA6aKLLrqgakDSRRdddKFqQLrooosuompAo4suuuiiakCMLrrooqNqQHTRRRddpGpAXXTRRRelakBGF1100aVqQC666KKLpmpAF1100UWnakAAAAAAAKhqQOmiiy66qGpA0UUXXXSpakC66KKLLqpqQKOLLrroqmpAjC666KKrakB00UUXXaxqQF100UUXrWpARhdddNGtakAvuuiii65qQBdddNFFr2pAAAAAAACwakDpoosuurBqQNFFF110sWpAuuiiiy6yakCjiy666LJqQIwuuuiis2pAdNFFF120akBddNFFF7VqQEYXXXTRtWpALrrooou2akAXXXTRRbdqQAAAAAAAuGpA6aKLLrq4akCy1ijFj0twQEWr7Z8b2IFAGLlfwY2pkEB1AQElZ5+KQI8mG+AFunZA+svlbLMdbEBGF1100b1qQC+66KKLvmpAF1100UW/akAAAAAAAMBqQOmiiy66wGpA0UUXXXTBakC66KKLLsJqQKOLLrrowmpAjC666KLDakB00UUXXcRqQF100UUXxWpARhdddNHFakAuuuiii8ZqQBdddNFFx2pAcCbiUa9Ja0CMwTm4Y/1wQAUzHuq1an1AEmZ1FiDqgUCQ3OttqBR4QO6eK0fp/HJAJYQ6RZfFc0AS1NildGZwQEcJgQJ9sGtALrrooovOakAXXXTRRc9qQAAAAAAA0GpA6aKLLrrQakDRRRdddNFqQLrooosu0mpAo4suuujSakCMLrrootNqQHTRRRdd1GpAXXTRRRfVakBGF1100dVqQC+66KKL1mpAF1100UXXakAAAAAAANhqQOmiiy662GpA0UUXXXTZakC66KKLLtpqQKOLLrro2mpA9KmH2FzmakDByPMHhUBrQMOqpHhOAmxA+k5tsPXqa0D3yfSAACxrQA9acARD5mpAAAAAAADgakDpoosuuuBqQNFFF1104WpAuuiiiy7iakCjiy666OJqQIwuuuii42pAdNFFF13kakBddNFFF+VqQEYXXXTR5WpAL7rooovmakAXXXTRRedqQAAAAAAA6GpA6aKLLrroakDRRRdddOlqQLrooosu6mpAo4suuujqakCMLrrooutqQHTRRRdd7GpAXXTRRRftakBGF1100e1qQC666KKL7mpAF1100UXvakAAAAAAAPBqQOmiiy668GpA0kUXXXTxakC66KKLLvJqQKOLLrro8mpAjC666KLzakB00UUXXfRqQF100UUX9WpARhdddNH1akAuuuiii/ZqQBdddNFF92pAAAAAAAD4akDpoosuuvhqQNFFF110+WpAuuiiiy76akCjiy666PpqQIwuuuii+2pAdNFFF138akBddNFFF/1qQEYXXXTR/WpAL7rooov+akAXXXTRRf9qQAAAAAAAAGtA6aKLLroAa0DRRRdddAFrQLrooosuAmtAo4suuugCa0CMLrroogNrQHTRRRddBGtAXXTRRRcFa0BGF1100QVrQC666KKLBmtAF1100UUHa0AAAAAAAAhrQOmiiy66CGtA0kUXXXQJa0C66KKLLgprQKOLLrroCmtAjC666KILa0B00UUXXQxrQF100UUXDWtARhdddNENa0Avuuiiiw5rQBdddNFFD2tAAAAAAAAQa0DpoosuuhBrQNFFF110EWtAuuiiiy4Sa0Cjiy666BJrQP7FSDIDqWtAB1WTw0sSckCjsNVjy82BQIbptD5E+YdArhPP4m/IgEBzGEui95d2QMRksUgBFHFACS/2/p1GbEDSRRdddBlrQLrooosuGmtAo4suuugaa0CMLrroohtrQHTRRRddHGtAXXTRRRcda0BGF1100R1rQC666KKLHmtAF1100UUfa0AAAAAAACBrQOmiiy66IGtA0UUXXXQha0C66KKLLiJrQKOLLrroImtAjC666KIja0B00UUXXSRrQMs/ONT6eWtAz0FPMrWLbkBWCch/eQhzQBzhIWakEnNADXHdfFSgbkDnRmXyooBrQNFFF110KWtAuuiiiy4qa0Cjiy666CprQIwuuuiiK2tAdNFFF10sa0BddNFFFy1rQEYXXXTRLWtALrrooosua0AXXXTRRS9rQAAAAAAAMGtA6aKLLrowa0DSRRdddDFrQLrooosuMmtAo4suuugya0CMLrroojNrQHTRRRddNGtAXXTRRRc1a0BGF1100TVrQC+66KKLNmtAF1100UU3a0AAAAAAADhrQOmiiy66OGtA0UUXXXQ5a0C66KKLLjprQKOLLrroOmtAjC666KI7a0B00UUXXTxrQF100UUXPWtARhdddNE9a0Auuuiiiz5rQOShUv8+oW9AbPLNxslKe0ASt64RXiyEQPa9YgjlAH5Admpdh3XGcECAe7cK6aNrQIwuuuiiQ2tAdNFFF11Ea0BddNFFF0VrQEYXXXTRRWtALrroootGa0AXXXTRRUdrQAAAAAAASGtA6aKLLrpIa0DRRRdddElrQLrooosuSmtAo4suuuhKa0CMLrrooktrQKzCarrZkmtAXJYyBRzbb0DtauoQF3Z5QGhT7hmwbIBADQFKjYdvd0A5jaKv2W9uQOmiiy66UGtA0UUXXXRRa0C66KKLLlJrQKOLLrroUmtAjC666KJTa0B00UUXXVRrQF100UUXVWtARhdddNFVa0Auuuiii1ZrQBdddNFFV2tAAAAAAABYa0DpoosuulhrQNJFF110WWtAuuiiiy5aa0Cjiy666FprQIwuuuiiW2tAXl3B1RGRbkA8j0KDCrB7QE5RMAqkBYpAeFPoxEdPh0DxiSC+s4x2QFr7XBHX3mxA6aKLLrpga0DRRRdddGFrQLrooosuYmtAo4suuuhia0CMLrroomNrQHTRRRddZGtAXXTRRRdla0BGF1100WVrQC666KKLZmtA0wNtYpqabUC2n0TJMSN8QD7jDCYSRJJAXP+plFGOlkBl2x3VJ1CGQH5mQBkDoHFAjC666KJra0B00UUXXWxrQF100UUXbWtARhdddNFta0Auuuiii25rQBdddNFFb2tAAAAAAABwa0DpoosuunBrQNFFF110cWtAuuiiiy5ya0Cjiy666HJrQIrO3MaNYWxAZG1ujXR5ckA8wMboQ8R9QFHPt3/AG4FAyOapMhYDeEDiImsMMVdvQB1pBv2vtWtABUILtcnsbEBATun3g8RyQGKStbaAp3hA1u0omjAqdUAooA8fKqZuQKtvY/aIsmtAXXTRRRd9a0BGF1100X1rQC666KKLfmtAF1100UV/a0AAAAAAAIBrQOmiiy66gGtA0kUXXXSBa0C66KKLLoJrQKOLLrrogmtAjC666KKDa0B00UUXXYRrQF100UUXhWtARhdddNGFa0Avuuiii4ZrQBdddNFFh2tAAAAAAACIa0DpoosuuohrQNFFF110iWtAuuiiiy6Ka0Cjiy666IprQIwuuuiii2tAdNFFF12Ma0BddNFFF41rQBzyJGkMhm9ABsvSp4cSgUBy7zKfQ62UQB8HLFjS8plAXL/+Hqp3jUAmFM3SfOx1QDC3fTNQhmxAo4suuuiSa0CMLrroopNrQHTRRRddlGtAXXTRRReVa0BGF1100ZVrQC666KKLlmtAF1100UWXa0AAAAAAAJhrQOmiiy66mGtA0UUXXXSZa0C66KKLLpprQKOLLrrommtA2cU9Q9O9a0C15U9oDNFtQA7g3jat9XRAzn+rHKnQgUBitipDzWKKQNC20GFBzYdAKkiMmL30hUBF573qLOaLQFfB8vgH8IJAd6ObBzY1ckCjiy666KJrQIwuuuiio2tAdNFFF12ka0BddNFFF6VrQEYXXXTRpWtALrrooouma0AXXXTRRadrQAAAAAAAqGtA6aKLLrqoa0DSRRdddKlrQLrooosuqmtAo4suuuiqa0CMLrrooqtrQHTRRRddrGtAXXTRRReta0BGF1100a1rQC+66KKLrmtAF1100UWva0AAAAAAALBrQOmiiy66sGtA0UUXXXSxa0C66KKLLrJrQKOLLrrosmtAjC666KKza0B00UUXXbRrQF100UUXtWtARhdddNG1a0Auuuiii7ZrQBdddNFFt2tAB6mUOfBBcEAUGd8vSZF9QDIFIeQKDodAVkR7IiRPgUC0Yx3FbQ1yQNH3lPA7Q2xAdNFFF128a0BddNFFF71rQEYXXXTRvWtALrrooou+a0AXXXTRRb9rQAAAAAAAwGtA6aKLLrrAa0DRRRdddMFrQLrooosuwmtAo4suuujCa0CMLrroosNrQHTRRRddxGtAXXTRRRfFa0BGF1100cVrQC666KKLxmtAF1100UXHa0AAAAAAAMhrQOmiiy66yGtA0UUXXXTJa0C66KKLLsprQKOLLrroymtAjC666KLLa0B00UUXXcxrQF100UUXzWtARhdddNHNa0Auuuiii85rQBdddNFFz2tAAAAAAADQa0DpoosuutBrQNJFF1100WtAuuiiiy7Sa0Cjiy666NJrQIwuuuii02tAdNFFF13Ua0BddNFFF9VrQEYXXXTR1WtAL7rooovWa0AXXXTRRddrQAAAAAAA2GtA0LJte0bsa0AfLkLs7fhsQOJ5ObBQjnBA4yizJrwSckCChsZoPENwQDfokmKTFG1AwVLCEF83bkAIvR1oQoVxQIwcSuFKdXFA+SC95ckKbkC549O1oBVsQOmiiy664GtA0kUXXXTha0C66KKLLuJrQKOLLrro4mtAjC666KLja0B00UUXXeRrQF100UUX5WtARhdddNHla0DZ+4yH6RhsQFeP13D19mxAuirr+3SzbUC6UqmzU9xsQPf8cSryEWxAuuiiiy7qa0Cjiy666OprQIwuuuii62tAdNFFF13sa0BddNFFF+1rQEYXXXTR7WtALrrooovua0AXXXTRRe9rQAAAAAAA8GtA6aKLLrrwa0DRRRdddPFrQLrooosu8mtAo4suuujya0CMLrroovNrQHTRRRdd9GtAXXTRRRf1a0BGF1100fVrQC666KKL9mtAF1100UX3a0AAAAAAAPhrQOmiiy66+GtA0kUXXXT5a0C66KKLLvprQKOLLrro+mtAjC666KL7a0B00UUXXfxrQF100UUX/WtARhdddNH9a0Avuuiii/5rQBdddNFF/2tAAAAAAAAAbEDpoosuugBsQNFFF110AWxAuuiiiy4CbECjiy666AJsQIwuuuiiA2xAdNFFF10EbEBddNFFFwVsQEYXXXTRBWxALrrooosGbEAXXXTRRQdsQAAAAAAACGxA6aKLLroIbEDSRRdddAlsQLrooosuCmxAo4suuugKbECMLrroogtsQO6q8dW2NmxAVIbGrmsBbUAV2TyIzMdtQK4nmsc8CW1ANXP8its7bEAAAAAAABBsQOmiiy66EGxA0UUXXXQRbEC66KKLLhJsQKOLLrroEmxAjC666KITbEB00UUXXRRsQF100UUXFWxAWVO1XFeHbEBEQlAcXVZxQD+SWhRKYn1Aeaw7y0Q5gkAklz9vaE54QJ4dW1KdC29Auuiiiy4abECjiy666BpsQIwuuuiiG2xAdNFFF10cbEBddNFFFx1sQEYXXXTRHWxAL7rooosebEAXXXTRRR9sQAAAAAAAIGxA6aKLLrogbEDRRRdddCFsQLrooosuImxAo4suuugibECMLrrooiNsQHTRRRddJGxAXXTRRRclbEBGF1100SVsQC666KKLJmxAF1100UUnbEAAAAAAAChsQOmiiy66KGxA0kUXXXQpbEC66KKLLipsQKOLLrroKmxAjC666KIrbEB00UUXXSxsQF100UUXLWxARhdddNEtbEAuuuiiiy5sQBdddNFFL2xAAAAAAAAwbEDpoosuujBsQNJFF110MWxAuuiiiy4ybECjiy666DJsQIwuuuiiM2xAdNFFF100bEAEjzSnkIZsQPy8GZMA7W5ANgw6Y+zFcUD+zfoiloJxQF8TVOz6FXBARUjoKW3NbkBwz/kXbAZtQP9mH88zT2xAo4suuug6bECMLrroojtsQHTRRRddPGxAXXTRRRc9bEBGF1100T1sQC666KKLPmxAF1100UU/bEAAAAAAAEBsQOmiiy66QGxApIoSjCTLbEBU26KWAvxwQKK1vRZMo3dAAhsgdZYPeEDwoNt2tmJxQBvR43xcBG1Am/NzmfeGbUBU7A8MB0NxQOxjtxrwBHNAfEgtWxSIcEDTYxn51QRtQNFFF110SWxAuuiiiy5KbECjiy666EpsQGpP1OzcS2xAt6QmGxJQbEBClGhVHGBsQGOKYut7bGxAMztft61ebECYRZ+mMqlsQJi4A09C8G5A4P1pQNBicUD6u1pYH6pwQD/rT9s/i21APKGVjOJqbECMLrroolNsQHTRRRddVGxAXXTRRRdVbEBGF1100VVsQC666KKLVmxAF1100UVXbEAAAAAAAFhsQOmiiy66WGxA0kUXXXRZbEC66KKLLlpsQKOLLrroWmxAjC666KJbbEB00UUXXVxsQF100UUXXWxARhdddNFdbEAuuuiii15sQBdddNFFX2xAAAAAAABgbEDpoosuumBsQNFFF110YWxAuuiiiy5ibECjiy666GJsQIwuuuiiY2xAdNFFF11kbEBddNFFF2VsQEYXXXTRZWxAeK9/gFhnbEBNjwWrBnBsQPUpICUJhmxADAokBw+JbEC8KPhOX3RsQK6pFJ9Wa2xAo4suuuhqbECMLrroomtsQHTRRRddbGxAXXTRRRdtbEBGF1100W1sQEPKbF85lWxAD8WeC+ldbUCeM91T5z1uQECZAjY2iW1AlbNqROOmbEAOj+8QYHVsQKOLLrrocmxAjC666KJzbECDiDy8cXZsQLHa4GsZi2xA5AWb99q+bEA7lHLblsJsQCX119AckGxAkKpyr4t6bEDpoosuunhsQNJFF110eWxAuuiiiy56bECjiy666HpsQIwuuuiie2xAdNFFF118bEBddNFFF31sQEYXXXTRfWxALrrooot+bEAXXXTRRX9sQAAAAAAAgGxA6aKLLrqAbEDSRRdddIFsQLrooosugmxAo4suuuiCbECMLrroooNsQHTRRRddhGxAVljLtl+ObECFRieEbPdsQMgyCkMePm5ANI7BhnOgbkCUpLQ622dtQJIOIFsyJ21ARJ03v7HWbUBlrkzfmY9tQCKNkldCy2xACJWZVJuQbEB00UUXXYxsQF100UUXjWxARhdddNGNbEAuuuiii45sQMhV7PnXw2xA0GRZjCEQb0ByRWoPeg9zQJV2p5vxBHRAK6XyU5B4cEDVZluQ/CltQMSuCLVtnGxAUc4J94eVbEBddNFFF5VsQEYXXXTRlWxAL7rooouWbEAXXXTRRZdsQAAAAAAAmGxA6aKLLrqYbEDRRRdddJlsQLrooosummxAo4suuuiabECMLrrooptsQHTRRRddnGxAXXTRRRedbEBGF1100Z1sQC666KKLnmxAF1100UWfbEAAAAAAAKBsQOmiiy66oGxA0kUXXXShbEC66KKLLqJsQKOLLrroomxAjC666KKjbEB00UUXXaRsQF100UUXpWxARhdddNGlbEAuuuiii6ZsQBdddNFFp2xAAAAAAACobEDpoosuuqhsQNJFF110qWxAuuiiiy6qbEAL8iSqK61sQK+Oev3ry2xAZYwUmgk9bUCjkxxmlHhtQFr7ReKnB21A9u9Mpf66bEAspTgHEn1tQLW3HZYfJHRANuKu8cNLhECA+1TyvdKJQNjY3CWl/H5ArLhmO+WtcECMLrroorNsQMteRx04d25A7O8A4mNzdUBJp7RHvieAQJUOenPRnXxAZgaejbvpcUC/2XNuckZtQOmiiy66uGxA0UUXXXS5bEC66KKLLrpsQKOLLrroumxAjC666KK7bEB00UUXXbxsQF100UUXvWxARhdddNG9bEAvuuiii75sQBdddNFFv2xAAAAAAADAbEDpoosuusBsQNFFF110wWxAuuiiiy7CbECjiy666MJsQIwuuuiiw2xAdNFFF13EbEBddNFFF8VsQEYXXXTRxWxALrrooovGbECBGDoAOf9sQARkwdUbf25AYYFkPmCBcECJzYVJSwdwQAb8rz6IlW1A/s5ZEWvabECMLrroostsQHTRRRddzGxAXXTRRRfNbEBGF1100c1sQC666KKLzmxAF1100UXPbEAAAAAAANBsQOmiiy660GxA0kUXXXTRbEC66KKLLtJsQKOLLrro0mxAjC666KLTbEB00UUXXdRsQF100UUX1WxARhdddNHVbEBg7l1YLyRtQFqNlnB5sm9AOqjEVEKlckBtwrh1kFhyQAznKlczI29AeONG49MPbUCjiy666NpsQIwuuuii22xAdNFFF13cbEBddNFFF91sQEYXXXTR3WxALrrooovebEAXXXTRRd9sQAAAAAAA4GxA6aKLLrrgbEDRRRdddOFsQLrooosu4mxAo4suuujibECMLrroouNsQHTRRRdd5GxAXXTRRRflbEBGF1100eVsQC+66KKL5mxAF1100UXnbEAAAAAAAOhsQOmiiy666GxAwNpimFuPbUA4f2xBpYpxQLdVDJTIwXdA4wpQn1EkeEBJSj52ahdyQFXUZtDD621ARhdddNHtbEAuuuiii+5sQBdddNFF72xAAAAAAADwbEB8CnytHfRsQGVQQi70EG1Afm/i0ShObUD4dE73botxQDDXjwJ3Ln9AtcQ97vs9hkAo7NYfKnR/QCDACf9Ff3FALrrooov2bEAXXXTRRfdsQAAAAAAA+GxA6aKLLrr4bEDSRRdddPlsQLrooosu+mxAo4suuuj6bECMLrroovtsQM/28LdzAG1Aj4QSfpUnbUBKt0uXZMBtQJN03rgp6m9AxWUOuaCdckDw15yk+NFyQJzj/nYO529AckMSEeRPbUC66KKLLgJtQKOLLrroAm1AjC666KIDbUB00UUXXQRtQF100UUXBW1ARhdddNEFbUAuuuiiiwZtQBdddNFFB21AAAAAAAAIbUDpoosuughtQNFFF110CW1Auuiiiy4KbUCjiy666AptQI8hWF4mPG1AF7eAHR8Zb0BJMHarZgJyQJKz3uGMP3JAjUg3SBSOb0A1DcAzu1JtQAAAAAAAEG1AxxnbXNO5bUANulaG5hFxQA+WCUmGp3RA5HtmY08tc0CTiXv5zUlvQB/QnkjEPm1AXXTRRRcVbUBGF1100RVtQC666KKLFm1AF1100UUXbUAAAAAAABhtQOiiiy66GG1A0kUXXXQZbUC66KKLLhptQKOLLrroGm1AjC666KIbbUB00UUXXRxtQF100UUXHW1ARhdddNEdbUAuuuiiix5tQBdddNFFH21AAAAAAAAgbUDpoosuuiBtQNJFF110IW1Auuiiiy4ibUCjiy666CJtQIwuuuiiI21AdNFFF10kbUBddNFFFyVtQEKtlmps7m1A3tZhj5FHc0ANEM/d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luxtQIwuuuiiy21AdNFFF13MbUBddNFFF81tQEYXXXTRzW1ALrrooovObUAXXXTRRc9tQCAo3cAacXFA/NFxX5Erf0CE9QSLWemHQEJkye8494FA/o7dgvwlc0DiFi+HlF1uQHTRRRdd1G1AXXTRRRfVbUBGF1100dVtQC666KKL1m1AF1100UXXbUAAAAAAANhtQOmiiy662G1A0UUXXXTZbUC66KKLLtptQKOLLrro2m1AjC666KLbbUB00UUXXdxtQF100UUX3W1ARhdddNHdbUAuuuiii95tQBdddNFF321AAAAAAADgbUDooosuuuBtQNJFF1104W1AWRRhD1LwbUAJjsddbS9uQB65k4diZm5Ag1nnMTCPb0A2pTuhkrV0QCA2TSX5431AhEbVLyM8e0Aju282ECRyQACFFFLZbW5A6aKLLrrobUDSRRdddOltQLrooosu6m1Ao4suuujqbUCMLrroouttQHTRRRdd7G1AXXTRRRftbUBGF1100e1tQC666KKL7m1AF1100UXvbUCqVcx0CvBtQHAOny4i8W1A1KwwHLvybUCW2VvQcvNtQON7F2FO821AGbiM+azzbUB00UUXXfRtQF100UUX9W1A8LDE6oMCbkCezOJcAkFuQAS8x+c9gW5AnByeeMNIbkAX+ZbmqQduQF4uSrcgaHBAFKzyDf0yd0BBJhby1v59QHSuTpwWqHdANcXOm++ScEBddNFFF/1tQEYXXXTR/W1ALrrooov+bUAXXXTRRf9tQAAAAAAAAG5A6aKLLroAbkCRn//nTwZuQO6KZVjeNm5AzfEqn4a3bkAAJk8wVsduQCA11xdiR25A5wFAV1gMbkBGF1100QVuQC666KKLBm5AF1100UUHbkAAAAAAAAhuQOiiiy66CG5A0kUXXXQJbkC66KKLLgpuQKOLLrroCm5AyEySg7+7bkAcpTPFSvZwQJYd9uZJenJAEXpcAab4cECSs5vS0L9uQBdddNFFD25AAAAAAAAQbkDpoosuuhBuQNJFF110EW5Auuiiiy4SbkCjiy666BJuQIwuuuiiE25AdNFFF10UbkAl/Csb0VBwQHBGnvdKHXdANCtrCos2f0BSm3DiJUp5QHpS7eyFGXFACTnj0VdbbkDSRRdddBluQL1PWhfiJW5A96lWM0rHbkC9UfiogJ9wQPB6hWBnXnFA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LhJvQKOLLrroEm9AjC666KITb0B00UUXXRRvQF100UUXFW9ARhdddNEVb0AuuuiiixZvQFvx2/bsQG9AO1/yy6WncEBReRLpLWh0QEaxSjnegXZATYfkodJGc0A1S55j3vZwQIqaQlClBHBARHrCRiFBb0BddNFFFx1vQEYXXXTRHW9ALrroooseb0AXXXTRRR9vQAAAAAAAIG9A6KKLLrogb0DSRRdddCFvQLrooosuIm9Ao4suuugib0CMLrrooiNvQHTRRRddJG9AXXTRRRclb0BGF1100SVvQC666KKLJm9AF1100UUnb0AAAAAAAChvQOmiiy66KG9A0kUXXXQpb0C66KKLLipvQNAKNcx0XXBAaEhyqB9HdUC0e4dewvB8QHB3VqpRrHlAXtQ2FqIKckD+f7wf0ZBvQBdddNFFL29AAAAAAAAwb0DpoosuujBvQNJFF110MW9Auuiiiy4yb0Cjiy666DJvQIwuuuiiM29AdNFFF100b0B9iMOBo8dvQFfgn5kKK3JAAQReVNAAd0DcPVw+zHx2QGwljHrqq3FAIJMgQ7qeb0DRRRdddDlvQLrooosuOm9Ao4suuug6b0CMLrroojtvQHTRRRddPG9AXXTRRRc9b0BGF1100T1vQC666KKLPm9AF1100UU/b0AAAAAAAEBvQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1702\"},\"selection_policy\":{\"id\":\"1701\"}},\"id\":\"1685\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1649\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1645\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1644\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1647\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1668\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1685\"}},\"id\":\"1690\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1686\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1656\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1701\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1684\"},{\"id\":\"1704\"}]},\"id\":\"1683\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1653\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1681\"},\"selection_policy\":{\"id\":\"1680\"}},\"id\":\"1666\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1670\"}]},\"id\":\"1684\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1702\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1658\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1666\"},\"glyph\":{\"id\":\"1667\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1669\"},\"nonselection_glyph\":{\"id\":\"1668\"},\"view\":{\"id\":\"1671\"}},\"id\":\"1670\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"overlay\":{\"id\":\"1658\"}},\"id\":\"1654\",\"type\":\"BoxZoomTool\"}],\"root_ids\":[\"1635\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"58f9e23c-3587-44be-a3b2-7b9318ecce20\",\"root_ids\":[\"1635\"],\"roots\":{\"1635\":\"3fc1f776-bc02-4ddc-a7bb-61a2de505609\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1635" + } }, - "metadata": {}, "output_type": "display_data" } ], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.legend()" + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(meas_x, meas_y, legend_label='Imeas', color='steelblue', line_width=2)\n", + "fig.line(meas_x, calc_y_cryspy, legend_label='Icalc (CrysPy)', color='orangered', line_width=2)\n", + "show(fig)" ] }, { @@ -641,7 +1104,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -656,7 +1119,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -692,7 +1155,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -701,7 +1164,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -722,7 +1185,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -732,7 +1195,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -766,43 +1229,72 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - "" + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" ] }, - "execution_count": 25, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4165c69111104fbcb310a5c31239c951", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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guD6G3PoWPi2vb0dU6ZMwZ///GffvlhB4JQpUzBkyBA8/PDDaGxshK7rGDt2LBKJBADggAMOwKpVq/Daa6/hzTffxBlnnIEJEybgv//9b5efB0HsLNA3L0EQRUXjsk40ykApOIIgZB2G3Zk54IAD8Oyzz2Lo0KGQZf/z3bZtG5YtW4aHH34YRx11FAD4esoCQE1NDc4880yceeaZOO2003Dcccdh+/btvulTBNHboBAwQRBFRdF0+2dDT7MhQaRh2rRp2L59O84++2x8+umnWLlyJV5//XVceOGF0DQN9fX16Nu3Lx566CGsWLECb731lquRPwDceeedeOqpp/D111/jm2++wTPPPIOGhgbU1dWV5kkRRBEhAUgQRFFRNcf1M0AOINE1Ghsb8cEHH0DTNEycOBF77703rrrqKtTV1UEURYiiiJkzZ2L+/PkYO3Ysrr76atx+++2ufVRXV+O2227DQQcdhIMPPhirV6/Gq6++SjNkibKAqoDzgKqICCJ3Hpn7LW555SsAwOe//QH6VAZLvKKdl3RVjgRR7lAVcHroMocgiKLCX3LqdP1JEARREkgAEgRRVPiwLwlAgiCI0kACkCCIosK3/iP9RxAEURpIABIEUVR4148cQIIgiNJAApAgiKLizgEs3ToIgiDKGRKABEEUFb7xADUhIAiCKA0kAAmCKCqUA0gQBFF6SAASBFFUqA0MQRBE6SEBSBBEUXEXgZRwIQRBEGUMCUCCIIoKr/nIASQKxU033YT99tsvr30kEgmMGDECH374YWEWVWJ+9atf4Yorrij1MogeCglAgiCKChWBEAAwdepUnHTSSaVehosHH3wQw4YNw+GHH+76+9tvv43jjz8effv2RUVFBcaMGYNrr70W69ev77a1rF69GoIg2P/69u2LiRMn4osvvsh6Hz//+c/x+OOP49tvv+22dRI7LyQACYIoKhQCJnoihmHg3nvvxcUXX+z6+9///ndMmDABDQ0NePbZZ7F06VI8+OCDaGlpwV/+8pek+9I0DbquF2Rdb775JjZu3IjXX38d7e3tmDx5Mpqbm7O6b79+/TBp0iQ88MADBVkL0bsgAUgQRFExqAqYSIKu67jtttswYsQIhEIh7Lbbbvh//+//2bdfd911GDVqFCoqKjB8+HD89re/haIoaff56KOPYq+99kIoFMKgQYMwffr0lNvOnz8fK1euxAknnGD/bd26dbjyyitx5ZVX4tFHH8X48eMxdOhQHH300XjkkUdw4403AgAee+wx1NXV4cUXX8SYMWMQCoXw/vvvIxAIoKmpyfU4V111FY466igAwHfffYcpU6agvr4elZWV2GuvvfDqq6+6tu/bty8aGhpw0EEH4Y477sCmTZvw8ccf4+abb8bYsWN9z2O//fbDb3/7W/v3KVOmYObMmWlfJ6I8kUu9AIIgygudqoC7F8MAlM7SPHagAhCELt31+uuvx8MPP4y77roLRx55JDZu3Iivv/7avr26uhqPPfYYGhsbsWjRIlx66aWorq7GL3/5y6T7e+CBB3DNNdfgT3/6EyZPnoyWlhZ88MEHKR9/7ty5GDVqFKqrq+2/PfPMM0gkEikfo66uzv65s7MTf/7zn/HII4+gb9++GDx4MIYPH45//etf+MUvfgEAUBQFTzzxBG677TYAwLRp05BIJPDee++hsrISS5cuRVVVVco1RiIRAGau4kUXXYTf//73+PTTT3HwwQcDAL744gssXLgQzz33nH2fQw45BOvWrcPq1asxdOjQlPsmyg8SgARBFBUDNAquW1E6gT82luaxf70BCFbmfLe2tjbcfffduPfee3HBBRcAAHbffXcceeSR9jY33HCD/fPQoUPx85//HDNnzkwpzm655RZce+21+NnPfmb/jQmlZHz33XdobHS/bsuXL0dNTQ0GDRqU8TkoioL7778f++67r/23iy++GDNmzLAF4EsvvYRYLIYzzjgDALBmzRqceuqp2HvvvQEAw4cPT7n/5uZm/OEPf0BVVRUOOeQQDBw4EJMmTcKMGTPs5zVjxgx873vfc+2HPafvvvuOBCDhgkLABEEUFQoBE16++uorxONxHHvssSm3efrpp3HEEUegoaEBVVVVuOGGG7BmzZqk227evBkbNmxIuz8v0WgU4XDY9TfDMCBk6WgGg0Hss88+rr9NnToVK1aswEcffQTADBWfccYZqKw0RfKVV16JW265BUcccQR+97vfYeHChb79Hn744aiqqkJ9fT2+/PJLPP300xg4cCAA4NJLL8VTTz2FWCyGRCKBJ598EhdddJHr/sw17OwskStM9FjIASQIoqjoOjmA3UqgwnTiSvXYXYCJlFTMmzcP5557Ln7/+99j0qRJqK2txcyZM1MWYWTaXzL69euHRYsWuf42atQotLS0YOPGjRldwEgk4hOLAwYMwJQpUzBjxgwMGzYMr732Gt555x379ksuuQSTJk3CK6+8gjfeeAO33nor/vKXv7hatzz99NMYM2YM+vbt6wo5A2Z+XygUwvPPP49gMAhFUXDaaae5ttm+fTsAoH///tm+FESZQA4gQRBFxd0HsGTL6L0IghmGLcW/Lub/jRw5EpFIBHPmzEl6+4cffoghQ4bgN7/5DQ466CCMHDkS3333Xcr9VVdXY+jQoSn3l4z9998fX3/9tas10WmnnYZgMGjn7HnJphr3kksuwdNPP42HHnoIu+++O4444gjX7YMHD8Zll12G5557Dtdeey0efvhh3+277767T/wBgCzLuOCCCzBjxgzMmDEDZ511lk/8Ll68GIFAAHvttVfGtRLlBTmABEEUFXcbGFKABBAOh3Hdddfhl7/8JYLBII444ghs2bIFS5YswcUXX4yRI0dizZo1mDlzJg4++GC88soreP7559Pu86abbsJll12GAQMGYPLkyWhra8MHH3yQsjHyMcccg/b2dixZssSurh08eDDuuusuTJ8+Ha2trTj//PMxdOhQrFu3Dv/85z9RVVWV0oVkTJo0CTU1Nbjllltw8803u2676qqrMHnyZIwaNQo7duzA22+/jT333DOHV84UmOw+yYpc5s6di6OOOqpLrijRuyEHkCCIokI5gEQyfvvb3+Laa6/FjTfeiD333BNnnnkmNm/eDAD44Q9/iKuvvhrTp0/Hfvvthw8//NDV6iQZF1xwAf7617/i/vvvx1577YUTTzwRy5cvT7l93759cfLJJ+OJJ55w/f2nP/0p3njjDaxfvx4nn3wyRo8ejUsuuQQ1NTX4+c9/nvF5iaKIqVOnQtM0nH/++a7bNE3DtGnTsOeee+K4447DqFGjcP/992fcJ8/IkSNx+OGHY/To0Tj00EN9t8+cOROXXnppTvskygPBoFb8Xaa1tRW1tbVoaWlBTU1NqZdDEDsFv/vfYjw+zwzf/feycThoaJ8Sr2jnJRaLYdWqVRg2bJivgIHInYULF+IHP/gBVq5cmbYdS65cfPHF2LJlC1588cWC7ZNhGAZGjhyJn/70p7jmmmtct7322mu49tprsXDhQshy+QX80n0+6PxNIWCCIIqMuw9g6dZBEF722Wcf/PnPf8aqVavs1iz50NLSgkWLFuHJJ5/sFvG3ZcsWzJw5E01NTbjwwgt9t3d0dGDGjBllKf6IzNBRQRBEUaE+gERPZurUqQXb149+9CN88sknuOyyy/CDH/ygYPtlDBgwAP369cNDDz2E+vp63+3eimCC4CEBSBBEURG1OB4I3IX39H2gG/6cJYLoLfAtX7oDyuAi8oGKQAiCKCp773gTk6VPcWvgH1QEQhAEUSJIABIEUVz4NjC6VsKFEARBlC8kAAmCKCpR0ZkVKyQ6SrgSgiCI8oUEIEEQRYYvA1ZLtwyCIIgyhgQgQRBFxZX3RyFggiCIkkACkCCIoiLqiv2zQQ4gQRBESSABSBBEURENR/QZ5AASREZWr14NQRCwYMGCvPbz29/+Fj/+8Y8Ls6gSs3TpUuy6667o6KA84q5CApAgiKIiGo4DCM4NJMqLqVOn4qSTTir1MrqFd955B4IgoLm5udRLsWlqasLdd9+N3/zmN76/X3HFFRg+fDhCoRAGDx6MKVOmYM6cOd26nvHjx0MQBAiCgHA4jDFjxuQ0B3nMmDE47LDDcOedd3bjKns3JAAJgigqEu/6aRQCJohi8Mgjj+Dwww/HkCFD7L+tXr0aBx54IN566y3cfvvtWLRoEWbNmoVjjjkG06ZNS7kvRSnMhdull16KjRs3YunSpTjjjDMwbdo0PPXUU1nf/8ILL8QDDzwAVaXvka5AApAgiKIiGHwOIIWACZPx48fjiiuuwFVXXYX6+noMHDgQDz/8MDo6OnDhhReiuroaI0aMwGuvvea63+LFizF58mRUVVVh4MCBOO+887B161b79lmzZuHII49EXV0d+vbtixNPPBErV660b08kEpg+fToGDRqEcDiMIUOG4NZbby348/vggw8wfvx4VFRUoL6+HpMmTcKOHTuyWmMylixZghNPPBE1NTWorq7GUUcdlfY+M2fOxJQpU1x/++lPfwpBEPDJJ5/g1FNPxahRo7DXXnvhmmuuwUcffWRvJwgCHnjgAfzwhz9EZWUlbrnlFowYMQJ33HGHa38LFiyAIAhYsWIFDMPATTfdhN122w2hUAiNjY248sorXdtXVFSgoaEBw4cPx0033YSRI0fixRdfxOrVqyGKIj777DPX9n/9618xZMgQ6LoOAPjBD36A7du349133037WhHJIQFIEERREQ1O9JEALDiGYaBT6SzJv3xHkz3++OPo168fPvnkE1xxxRW4/PLLcfrpp+Pwww/H559/jokTJ+K8885DZ2cnAKC5uRnf//73sf/+++Ozzz7DrFmzsGnTJpxxxhn2Pjs6OnDNNdfgs88+w5w5cyCKIk4++WRbRNxzzz148cUX8Z///AfLli3DE088gaFDh+b1PLwsWLAAxx57LMaMGYN58+bh/fffx5QpU6BpWlZr9LJ+/XocffTRCIVCeOuttzB//nxcdNFFKZ2w7du3Y+nSpTjooINcf5s1axamTZuGyspK333q6upcv9900004+eSTsWjRIlx88cW46KKLMGPGDNc2M2bMwNFHH40RI0bg2WefxV133YW///3vWL58OV544QXsvffeaV+nSCSCRCKBoUOHYsKECUn3P3XqVIiiKV2CwSD2228/zJ07N+1+ieTQLGCCIIqKAO6kRlXABSeqRnHok6WZsfzxOR+jIlDR5fvvu+++uOGGGwAA119/Pf70pz+hX79+uPTSSwEAN954Ix544AEsXLgQhx12GO69917sv//++OMf/2jv49FHH8XgwYPxzTffYNSoUTj11FNdj/Hoo4+if//+WLp0KcaOHYs1a9Zg5MiROPLIIyEIgitEWihuu+02HHTQQa4ct7322sv+OdMavdx3332ora3FzJkzEQgEAACjRo1K+fhr1qyBYRhobGy0/8ZcutGjR2f1HM455xxceOGF9u9Tp07FjTfeiE8++QSHHHIIFEXBk08+abuCa9asQUNDAyZMmIBAIIDddtsNhxxySNJ9a5qGp556CgsXLrSLVC655BJcdtlluPPOOxEKhfD5559j0aJF+N///ue6b2NjI7777rusngPhhhxAgiCKi06NoInk7LPPPvbPkiShb9++Ltdo4MCBAIDNmzcDAL788ku8/fbbqKqqsv8xQcPCocuXL8fZZ5+N4cOHo6amxnb31qxZA8AUMgsWLMAee+yBK6+8Em+88UbK9c2dO9f1WE888URWz4s5gKnItMZk+zvqqKNs8ZeJaDQKAAiHw/bfcnVrefcQMIXXCSecgEcffRQA8NJLLyEej+P0008HAJx++umIRqMYPnw4Lr30Ujz//PM+h/L+++9HVVUVIpEILr30Ulx99dW4/PLLAQAnnXQSJEnC888/DwB47LHHcMwxx/jc2UgkYjvCRG6QA0gQRJHhHUAKAReaiBzBx+d8XLLHzgevoBEEwfU3QRAAwA6Ntre3Y8qUKfjzn//s29egQYMAAFOmTMGQIUPw8MMPo7GxEbquY+zYsUgkEgCAAw44AKtWrcJrr72GN998E2eccQYmTJiA//73v759HnTQQa5WLEyQZiISSf+6ZFpjrvvz0q9fPwDAjh070L9/fwDAyJEjIQgCvv7666z2kSxMfMkll+C8887DXXfdhRkzZuDMM89ERYXpAA8ePBjLli3Dm2++idmzZ+OnP/0pbr/9drz77rv2e3ruuefiN7/5DSKRCAYNGmSHdgEzvHv++edjxowZOOWUU/Dkk0/i7rvv9q1h+/bt2H333XN6PQgTEoAEQRQVweAFILWBKTSCIOQVht2ZOOCAA/Dss89i6NChkGX/6Wzbtm1YtmwZHn74YRx11FEAgPfff9+3XU1NDc4880yceeaZOO2003Dcccdh+/bt6NOnj2u7SCSCESNG5LzOffbZB3PmzMHvf//71Gu843c46shDgVBV0jV69/f4449DUZSsXMDdd98dNTU1WLp0qR0q7tOnDyZNmoT77rsPV155pU/gNTc3+/IAvRx//PGorKzEAw88gFmzZuG9995z3R6JRDBlyhRMmTIF06ZNw+jRo7Fo0SIccMABAIDa2tq0r+cll1yCsWPH4v7774eqqjjllFN82yxevBinnXZaxteA8EMhYIIgiotBDiBRGKZNm4bt27fj7LPPxqeffoqVK1fi9ddfx4UXXghN01BfX4++ffvioYcewooVK/DWW2/hmmuuce3jzjvvxFNPPYWvv/4a33zzDZ555hk0NDRkFD+5cP311+PTTz/FT3/6UyxcuBBff/01HnjgAWzdutVcY586PDTj31jx2Zyka/Qyffp0tLa24qyzzsJnn32G5cuX41//+heWLVuWdHtRFDFhwgSfsLzvvvugaRoOOeQQPPvss1i+fDm++uor3HPPPRg3blzG5yVJEqZOnYrrr78eI0eOdN3nsccewz/+8Q8sXrwY3377Lf79738jEonklGO555574rDDDsN1112Hs88+2+d8rl69GuvXr8eECROy3ifhQAKQIIiiIsDJPTKM5FWOBJENjY2N+OCDD6BpGiZOnIi9994bV111Ferq6iCKIkRRxMyZMzF//nyMHTsWV199NW6//XbXPqqrq+0ijYMPPhirV6/Gq6++6gpH5suoUaPwxhtv4Msvv8QhhxyCcePG4X//+x9kWYYoinjq/j9j/qKvMPbYM5Ku0Uvfvn3x1ltvob29Hd/73vdw4IEH4uGHH07rBl5yySWYOXOmq7J4+PDh+Pzzz3HMMcfg2muvxdixY/GDH/wAc+bMwQMPPJDVc7v44ouRSCRcBSKAWUX88MMP44gjjsA+++yDN998Ey+99BL69u2b1X69+7/ooot8tz311FOYOHFitxTulAOCkW/dfhnT2tqK2tpatLS0oKamptTLIYidghfuugIntfwTAPDOoQ9j/OQzMtyDSEUsFsOqVaswbNgwV4I/sXOhbVgICZYb3rh/tzyGYRg49NBDcfXVV+Pss88u2H7nzp2LY489FmvXrs06JzIX/vCHP+CZZ57BwoULXX9PJBIYOXIknnzySRxxxBFJ75vu80Hnb3IACYIoNq4QMDmABFGMT4EgCHjooYcKNjUjHo9j3bp1uOmmm3D66acXXPy1t7dj8eLFuPfee3HFFVf4bl+zZg1+/etfpxR/RGZIABIEUVQoBEwQXoSiPMp+++2H8847ryD7euqppzBkyBA0NzfjtttuK8g+eaZPn44DDzwQ48ePTxr+HTFiBH7yk58U/HHLCRKABEEUF070kQAkCGBnzMOaOnUqNE3D/PnzscsuuxR8/4899hji8TiefvppSJJU8P0TJAAJgigyQoo+gJSOTJQrRpEcQILg6XEC8NZbb8XBBx+M6upqDBgwACeddJKvtD0Wi2HatGno27cvqqqqcOqpp2LTpk2ubdasWYMTTjgBFRUVGDBgAH7xi1/4ch/eeecdHHDAAQiFQhgxYgQee+yx7n56BEHwrp8l+v7+7kocdMubWLG5vUSLIohSQgKQKD49TgC+++67mDZtGj766CPMnj0biqJg4sSJ6OjosLe5+uqr8dJLL+GZZ57Bu+++iw0bNrgaRGqahhNOOAGJRAIffvghHn/8cTz22GO48cYb7W1WrVqFE044AccccwwWLFiAq666Cpdccglef/31oj5fgig3BFcI2HQAb33ta2zrSODqpxeUaFU7N+SeEoQf+lykp8dNApk1a5br98ceewwDBgzA/PnzcfTRR6OlpQX/+Mc/8OSTT+L73/8+AGDGjBnYc8898dFHH+Gwww7DG2+8gaVLl+LNN9/EwIEDsd9+++EPf/gDrrvuOtx0000IBoN48MEHMWzYMPzlL38BYDac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", - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"5ba8e780-a97d-4cf3-9566-eafdb3d18e2c\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1842\"}],\"center\":[{\"id\":\"1845\"},{\"id\":\"1849\"},{\"id\":\"1881\"}],\"height\":300,\"left\":[{\"id\":\"1846\"}],\"renderers\":[{\"id\":\"1868\"},{\"id\":\"1887\"},{\"id\":\"1907\"}],\"title\":{\"id\":\"1870\"},\"toolbar\":{\"id\":\"1857\"},\"width\":990,\"x_range\":{\"id\":\"1834\"},\"x_scale\":{\"id\":\"1838\"},\"y_range\":{\"id\":\"1836\"},\"y_scale\":{\"id\":\"1840\"}},\"id\":\"1833\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1864\"}},\"id\":\"1869\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1865\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1900\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1921\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"tools\":[{\"id\":\"1850\"},{\"id\":\"1851\"},{\"id\":\"1852\"},{\"id\":\"1853\"},{\"id\":\"1854\"},{\"id\":\"1855\"}]},\"id\":\"1857\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1899\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1922\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1838\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1903\"}},\"id\":\"1908\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1873\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1883\"},\"glyph\":{\"id\":\"1884\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1886\"},\"nonselection_glyph\":{\"id\":\"1885\"},\"view\":{\"id\":\"1888\"}},\"id\":\"1887\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1874\",\"type\":\"AllLabels\"},{\"attributes\":{\"label\":{\"value\":\"Imeas - Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1907\"}]},\"id\":\"1924\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1887\"}]},\"id\":\"1902\",\"type\":\"LegendItem\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1856\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1870\",\"type\":\"Title\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1884\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1882\"},{\"id\":\"1902\"},{\"id\":\"1924\"}]},\"id\":\"1881\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1876\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1879\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1905\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1850\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1885\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1868\"}]},\"id\":\"1882\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1834\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1879\"},\"selection_policy\":{\"id\":\"1878\"}},\"id\":\"1864\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1878\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1864\"},\"glyph\":{\"id\":\"1865\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1867\"},\"nonselection_glyph\":{\"id\":\"1866\"},\"view\":{\"id\":\"1869\"}},\"id\":\"1868\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1842\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1845\",\"type\":\"Grid\"},{\"attributes\":{\"axis\":{\"id\":\"1846\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1849\",\"type\":\"Grid\"},{\"attributes\":{\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1904\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1873\"},\"group\":null,\"major_label_policy\":{\"id\":\"1874\"},\"ticker\":{\"id\":\"1847\"}},\"id\":\"1846\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1847\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1903\"},\"glyph\":{\"id\":\"1904\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1906\"},\"nonselection_glyph\":{\"id\":\"1905\"},\"view\":{\"id\":\"1908\"}},\"id\":\"1907\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1900\"},\"selection_policy\":{\"id\":\"1899\"}},\"id\":\"1883\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1883\"}},\"id\":\"1888\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1866\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1843\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1840\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1867\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1906\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1836\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1886\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1854\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1876\"},\"group\":null,\"major_label_policy\":{\"id\":\"1877\"},\"ticker\":{\"id\":\"1843\"}},\"id\":\"1842\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1851\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1877\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1853\",\"type\":\"SaveTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1856\"}},\"id\":\"1852\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1855\",\"type\":\"HelpTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1922\"},\"selection_policy\":{\"id\":\"1921\"}},\"id\":\"1903\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"1833\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"5ba8e780-a97d-4cf3-9566-eafdb3d18e2c\",\"root_ids\":[\"1833\"],\"roots\":{\"1833\":\"31641284-fee6-4b59-b2d9-fbb063243010\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1833" + } }, - "metadata": {}, "output_type": "display_data" } ], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, meas_y-calc_y_cryspy, label='Imeas - Icalc (CrysPy)')\n", - "plt.legend()" + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(meas_x, meas_y, legend_label='Imeas', color='steelblue', line_width=2)\n", + "fig.line(meas_x, calc_y_cryspy, legend_label='Icalc (CrysPy)', color='orangered', line_width=2)\n", + "fig.line(meas_x, meas_y-calc_y_cryspy, legend_label='Imeas - Icalc (CrysPy)', color='olivedrab', line_width=2)\n", + "show(fig)" ] }, { @@ -814,7 +1306,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -831,7 +1323,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -840,7 +1332,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -866,43 +1358,72 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 30, "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - "" + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" ] }, - "execution_count": 29, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a5dcd6155d3f41069c446996a77b9339", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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w8O3PT09OPnkk/HrX/86ZV2jR48GAJx88skYN24c7rnnHowZMwaGYWCvvfZCLBYDABxwwAFYvXo1nnnmGbzwwgs4/fTTcfzxx+N///d/i9oXovKoin3fmWCJCm4JQRBE7UICsIwoilJUKHawcMABB+CRRx7B+PHjoeup+7tt2zasXLkS99xzD4488kgAwBtvvJGyXGNjI773ve/he9/7Hr7zne/gxBNPxPbt2zFs2LAB3wdi4GCwc1L5TQNBEARRXigETJScWbNmYfv27fj+97+P9957D6tWrcJzzz2HH/7wh0gmk2hpaUFrayv+8pe/4PPPP8dLL72Eyy+/3LGO3/3ud/j73/+OTz75BJ9++ikefvhhtLW1obm5uTI7RZQMuSgpyZIV3BKCIIjahQQgUXLGjBmDN998E8lkEieccAL23ntvXHrppWhuboaqqlBVFQsWLMCSJUuw11574bLLLsNvfvMbxzoaGhpwyy234KCDDsLBBx+MNWvW4Omnn6Y5b4cAsugzGDmABEEQlUBhxfYIqWG6urrQ1NSEzs5ONDY2Ol6LRCJYvXo1JkyYgGAwWKEtJGqFwXS8PbP6GVz92tUAgEXfWYS2urYKbxFBELVGpvG7ViA7hSCIspIw7MIPcgAJgiAqAwlAgiDKihwCphxAgiCIykACkCCIspI0KAeQIAii0pAAJAiirJADSBAEUXlIABIEUVZk0Uc1aARBEJWBBCBBEGVFDgGTA0gQBFEZSAASBFFWqA8gQRBE5SEBSBBEWaGZQAiCICoPCUCCIMoKzQVMEARReUgAEgPK9ddfj/3226+odcRiMUycOBFvvfVWaTaqwvznf/4nLr744kpvRsWQw77kABIEQVQGEoCEg/POOw+nnHJKpTfDwd13340JEybgsMMOczz/8ssv4+tf/zpaW1sRDocxdepUXHHFFfjqq68GbFvWrFkDRVHEv9bWVpxwwgl4//33c17HlVdeifvvvx9ffPHFgG1nNeNwACkHkCAIoiKQACSqGsYY/vSnP2HmzJmO5//85z/j+OOPR1tbGx555BGsWLECd999Nzo7O3Hrrbd6riuZTJYs5PjCCy9g48aNeO6559DT04MZM2ago6Mjp/cOHz4c06dPx1133VWSbRnMkANIEARRGUgAEhkxDAO33HILJk6ciEAggF122QW/+MUvxOvXXHMNJk2ahHA4jF133RU/+9nPEI/HM67zvvvuw5577olAIIDRo0dj9uzZaZddsmQJVq1ahZNOOkk8t379elxyySW45JJLcN999+Hoo4/G+PHjcdRRR+Hee+/FddddBwCYN28empub8fjjj2Pq1KkIBAJ444034PP50N7e7vicSy+9FEceeSQA4Msvv8TJJ5+MlpYW1NXVYc8998TTTz/tWL61tRVtbW046KCD8Nvf/habNm3CO++8gxtuuAF77bVXyn7st99++NnPfiYen3zyyViwYEHG72moIrt+5AASBLCmcw1+/MKPsXTz0kpvClFD6JXegJqCMSDeV/7P9YUBRSnorXPmzME999yD2267DUcccQQ2btyITz75RLze0NCAefPmYcyYMVi2bBkuvPBCNDQ04Oqrr/Zc31133YXLL78cv/rVrzBjxgx0dnbizTffTPv5r7/+OiZNmoSGhgbx3MMPP4xYLJb2M5qbm8XffX19+PWvf417770Xra2tGDt2LHbddVf8z//8D6666ioAQDwex4MPPohbbrkFADBr1izEYjG89tprqKurw4oVK1BfX592G0OhEAAzV/H888/Hz3/+c7z33ns4+OCDAQDvv/8+PvzwQzz66KPiPf/2b/+G9evXY82aNRg/fnzadQ9F5CpgORxMELXKZa9chs87PscbX72BZecuq/TmEDUCCcByEu8Dfjmm/J/70w2Avy7vt3V3d+P222/Hn/70J5x77rkAgN122w1HHHGEWObaa68Vf48fPx5XXnklFixYkFac3XTTTbjiiivwH//xH+I5LpS8+PLLLzFmjPM7++yzz9DY2IjRo0dn3Yd4PI4777wT++67r3hu5syZmDt3rhCATzzxBCKRCE4//XQAwNq1a3Haaadh7733BgDsuuuuadff0dGBG2+8EfX19fi3f/s3jBo1CtOnT8fcuXPFfs2dOxf//u//7lgP36cvv/yy5gSgAdv1o5lACAJo723PvhBBlBgKARNp+fjjjxGNRnHcccelXWbhwoU4/PDD0dbWhvr6elx77bVYu3at57KbN2/Ghg0bMq7PTX9/P4LBoOM5xhiUHB1Nv9+PffbZx/Hceeedh88//xxvv/02ADNUfPrpp6OuzhTJl1xyCW666SYcfvjh+O///m98+OGHKes97LDDUF9fj5aWFnzwwQdYuHAhRo0aBQC48MIL8fe/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h2P5TZs2oa2tDQDQ1taWUhXMH2dbprGxMePcrIFAQFQn839EZq6//nrst99+Ra0jFoth4sSJeOutt0qzUYOIu+++OyUvdrBDjaAJgiAqT1UKQDeGYSAajeLAAw+Ez+fDiy++KF5buXIl1q5di2nTpgEApk2bhmXLlon5agFg0aJFaGxsxNSpU8Uy8jr4Mnwdtcx5552HU045pdKb4YAX7Rx22GGO519++WV8/etfR2trK8LhMKZOnYorrrgCX3311YBty5o1a6AoSsq/s846y/G6pmkp27Fx40boug5FUbBmzRrH8kuXLvX8vPPPPx//+te/8Prrrw/YPhEEQRC1R9UJwDlz5uC1117DmjVrsGzZMsyZMwevvPIKzjzzTDQ1NWHmzJm4/PLL8fLLL2PJkiX44Q9/iGnTpuHQQw8FAJxwwgmYOnUqzj77bHzwwQd47rnncO2112LWrFkIBAIAgIsuughffPEFrr76anzyySe488478dBDD+Gyyy6r5K4THjDG8Kc//QkzZ850PP/nP/8Zxx9/PNra2vDII49gxYoVuPvuu9HZ2Smqu90kk0kYRmkcpxdeeAEbN24U/+644w7H6zvttBMeeOABx3P3338/dtppp7w+x+/34wc/+AH+8Ic/FL3N1QI5gARBEJWn6gTg5s2bcc4552CPPfbAcccdh/feew/PPfecmLLrtttuwze+8Q2cdtppOOqoo9DW1oZHH31UvF/TNDz55JPQNA3Tpk3DWWedhXPOOQc33HCDWGbChAl46qmnsGjRIuy777649dZbce+991ILGA8Mw8Att9yCiRMnIhAIYJdddsEvfvEL8fo111yDSZMmIRwOY9ddd8XPfvYzxOPxjOu87777sOeeeyIQCGD06NGYPXt22mWXLFmCVatW4aSTThLPrV+/HpdccgkuueQS3HfffTj66KMxfvx4HHXUUbj33ntFz8d58+ahubkZjz/+OKZOnYpAIIA33ngDPp9PFARxLr30Uhx55JEAgC+//BInn3wyWlpaUFdXhz333BNPP/20Y/nW1la0tbWJf01NTY7Xzz33XMydO9fx3Ny5c3Huuedm/G68OPnkk/H4449nLFAaTFAOIEEQROWpuj6Af/3rXzO+HgwGcccdd6Q4LjLjxo1LGbDdHH300Xj//fcL2sZCYYyhP1H+QTykh6AohXWanzNnDu65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TjrpJBxzzDFYunQpLr30UlxwwQV47rnnyravBDFUyGc6N/dg5wh/gdxAovYgB5CoBHqlN8DNs88+63g8b948jBw5EkuWLMFRRx0lng+Hw2hra/Ncx/PPP48VK1bghRdewKhRo7DffvvhxhtvxDXXXIPrr78efr8fd999NyZMmIBbb70VADBlyhS88cYbuO222zB9+vSB20GCGILIoi/bTCCZcgBp8CNqEWqGTlSCqnMA3XR2dgIAhg0b5nj+wQcfxPDhw7HXXnthzpw56OvrE68tXrwYe++9N0aNGiWemz59Orq6urB8+XKxzPHHH+9Y5/Tp07F48eK02xKNRtHV1eX4RxBEfkns1AaGIJxQEQhRCarOAZQxDAOXXnopDj/8cOy1117i+R/84AcYN24cxowZgw8//BDXXHMNVq5ciUcffRQA0N7e7hB/AMTj9vb2jMt0dXWhv78foVAoZXtuvvlm/PznPy/pPhLEUKDgEDCjEDBBuG+KCKIcVLUAnDVrFj766CO88cYbjud/9KMfib/33ntvjB49GscddxxWrVqF3XbbbcC2Z86cObj88svF466uLowdO3bAPo8gBgv5OHeOqeCYQQ4gUfO4b4oIohxUbQh49uzZePLJJ/Hyyy9j5513zrjsIYccAgD4/PPPAQBtbW3YtGmTYxn+mOcNplumsbHR0/0DgEAggMbGRsc/giCKKwLJ570EMRShHECiElSdAGSMYfbs2Xjsscfw0ksvYcKECVnfs3TpUgDA6NGjAQDTpk3DsmXLsHnzZrHMokWL0NjYiKlTp4plXnzxRcd6Fi1ahGnTppVoTwiidsinD6D7dcp/ImodOgeISlB1AnDWrFn429/+hvnz56OhoQHt7e1ob29Hf38/AGDVqlW48cYbsWTJEqxZswaPP/44zjnnHBx11FHYZ599AAAnnHACpk6dirPPPhsffPABnnvuOVx77bWYNWsWAoEAAOCiiy7CF198gauvvhqffPIJ7rzzTjz00EO47LLLKrbvBDFYySeHKWE4Q76U/0TUOnQOEJWg6gTgXXfdhc7OThx99NEYPXq0+Ldw4UIAgN/vxwsvvIATTjgBkydPxhVXXIHTTjsNTzzxhFiHpml48sknoWkapk2bhrPOOgvnnHMObrjhBrHMhAkT8NRTT2HRokXYd999ceutt+Lee++lFjAEUQD5hHEj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", - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"c5199493-7411-4c87-9017-6491e687ade1\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2087\"}],\"center\":[{\"id\":\"2090\"},{\"id\":\"2094\"},{\"id\":\"2126\"}],\"height\":300,\"left\":[{\"id\":\"2091\"}],\"renderers\":[{\"id\":\"2113\"},{\"id\":\"2132\"},{\"id\":\"2152\"}],\"title\":{\"id\":\"2115\"},\"toolbar\":{\"id\":\"2102\"},\"width\":990,\"x_range\":{\"id\":\"2079\"},\"x_scale\":{\"id\":\"2083\"},\"y_range\":{\"id\":\"2081\"},\"y_scale\":{\"id\":\"2085\"}},\"id\":\"2078\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"2101\"}},\"id\":\"2097\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2127\"},{\"id\":\"2147\"},{\"id\":\"2169\"}]},\"id\":\"2126\",\"type\":\"Legend\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2115\",\"type\":\"Title\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2131\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2129\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2149\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2148\"},\"glyph\":{\"id\":\"2149\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2151\"},\"nonselection_glyph\":{\"id\":\"2150\"},\"view\":{\"id\":\"2153\"}},\"id\":\"2152\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"2113\"}]},\"id\":\"2127\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"2109\"}},\"id\":\"2114\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"2148\"}},\"id\":\"2153\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2151\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2099\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2085\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2088\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2145\"},\"selection_policy\":{\"id\":\"2144\"}},\"id\":\"2128\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2118\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2083\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2119\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"2095\"},{\"id\":\"2096\"},{\"id\":\"2097\"},{\"id\":\"2098\"},{\"id\":\"2099\"},{\"id\":\"2100\"}]},\"id\":\"2102\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2166\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2098\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis\":{\"id\":\"2091\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2094\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2124\"},\"selection_policy\":{\"id\":\"2123\"}},\"id\":\"2109\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2081\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2121\"},\"group\":null,\"major_label_policy\":{\"id\":\"2122\"},\"ticker\":{\"id\":\"2088\"}},\"id\":\"2087\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2130\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2109\"},\"glyph\":{\"id\":\"2110\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2112\"},\"nonselection_glyph\":{\"id\":\"2111\"},\"view\":{\"id\":\"2114\"}},\"id\":\"2113\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"2132\"}]},\"id\":\"2147\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2128\"},\"glyph\":{\"id\":\"2129\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2131\"},\"nonselection_glyph\":{\"id\":\"2130\"},\"view\":{\"id\":\"2133\"}},\"id\":\"2132\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2092\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2095\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2145\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2150\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2121\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2096\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2167\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2101\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2112\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2152\"}]},\"id\":\"2169\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2118\"},\"group\":null,\"major_label_policy\":{\"id\":\"2119\"},\"ticker\":{\"id\":\"2092\"}},\"id\":\"2091\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"2128\"}},\"id\":\"2133\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2167\"},\"selection_policy\":{\"id\":\"2166\"}},\"id\":\"2148\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2122\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2123\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2144\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2111\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2100\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2124\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2079\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2110\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"2087\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2090\",\"type\":\"Grid\"}],\"root_ids\":[\"2078\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"c5199493-7411-4c87-9017-6491e687ade1\",\"root_ids\":[\"2078\"],\"roots\":{\"2078\":\"87255524-ac13-4917-8084-4df6f2666f9b\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "2078" + } }, - "metadata": {}, "output_type": "display_data" } ], "source": [ "calc_y_crysfml = calculator.fit_func(meas_x)\n", "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", - "plt.legend()" + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(meas_x, meas_y, legend_label='Imeas', color='steelblue', line_width=2)\n", + "fig.line(meas_x, calc_y_cryspy, legend_label='Icalc (CrysPy)', color='orangered', line_width=2)\n", + "fig.line(meas_x, calc_y_crysfml, legend_label='Icalc (CrysFML)', color='orange', line_width=2)\n", + "show(fig)" ] }, { @@ -914,7 +1435,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -924,7 +1445,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -970,39 +1491,68 @@ "outputs": [ { "data": { - "text/plain": [ - "" + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" ] }, - "execution_count": 33, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "cb7001f206ba447dbc03a6b21c9db6c3", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAADnwElEQVR4nOydd7gU5fn+75nZdjpNOGAQUECKBaLGghqNBVExGo3RaAAF80MhRsUSEyW2xGjssUUNoBEF/UYT7NgFwRKUgICKSBHh0E/dMvX3x847885smy1n95yzz+e6uNizOzs7szu7c8/9NMEwDAMEQRAEQRBE2SCWegMIgiAIgiCI4kICkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMoMEIEEQBEEQRJlBApAgCIIgCKLMIAFIEARBEARRZpAAJAiCIAiCKDNIABIEQRAEQZQZJAAJgiAIgiDKDBKABEEQBEEQZQYJQIIgCIIgiDKDBCBBEARBEESZQQKQIAiCIAiizCABSBAEQRAEUWaQACQIgiAIgigzSAASBEEQBEGUGSQACYIgCIIgygwSgARBEARBEGUGCUCCIAiCIIgygwQgQRAEQRBEmUECkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMoMEIEEQBEEQRJlBApAgCIIgCKLMIAFIEARBEARRZpAAJAiCIAiCKDNIABIEQRAEQZQZJAAJgiAIgiDKDBKABEEQBEEQZQYJQIIgCIIgiDKDBCBBEARBEESZQQKQIAiCIAiizCABSBAEQRAEUWaQACQIgiAIgigzSAASBEEQBEGUGSQACYIgCIIgygwSgARBEARBEGUGCUCCIAiCIIgygwQgQRAEQRBEmUECkCAIgiAIoswgAUgQBEEQBFFmkAAkCIIgCIIoM0gAEgRBEARBlBkkAAmCIAiCIMoMEoAEQRAEQRBlBglAgiAIgiCIMsNX6g3ozOi6ji1btqCmpgaCIJR6cwiCIAiC8IBhGGhpaUG/fv0giuXphZEAzIMtW7agf//+pd4MgiAIgiBy4LvvvsMPfvCDUm9GSSABmAc1NTUA4gdQbW1tibeGIAiCIAgvNDc3o3///tZ5vBwhAZgHLOxbW1tLApAgCIIgOhnlnL5VnoFvgiAIgiCIMoYEIEEQBEEQRJlBApAgCIIgCKLM6HA5gLfffjteeOEFfPnll6ioqMBRRx2FO+64A/vvv7+1zHHHHYf333/f8bz/9//+Hx599FHr702bNuHSSy/Fu+++i+rqakycOBG33347fD57l9977z1cddVVWLVqFfr3748bbrgBkyZNavd9JAiisBiGAVVVoWlaqTeFIIgOgCRJ8Pl8ZZ3jl4kOJwDff/99TJs2DYcddhhUVcXvf/97nHzyyVi9ejWqqqqs5S655BLccsst1t+VlZXWbU3TcNppp6G+vh5LlizB1q1bMWHCBPj9fvz5z38GAKxfvx6nnXYapk6dirlz5+Ltt9/GlClT0LdvX4wdO7Z4O0wQRF7IsoytW7ciHA6XelMIguhAVFZWom/fvggEAqXelA6JYBiGUeqNSMeOHTvQu3dvvP/++zj22GMBxB3AUaNG4b777kv6nNdeew2nn346tmzZgj59+gAAHn30UVx33XXYsWMHAoEArrvuOrzyyiv44osvrOedd955aGxsxOuvv+5p25qbm1FXV4empiaqAiaIEqDrOtauXQtJkrDXXnshEAjQFT9BlDmGYUCWZezYsQOapmHIkCEJzZ7p/N0BHUA3TU1NAIAePXo47p87dy6efvpp1NfXY/z48bjxxhstF3Dp0qU48MADLfEHAGPHjsWll16KVatWYfTo0Vi6dClOPPFExzrHjh2LK664on13iCCIgiHLMnRdR//+/R1RAIIgypuKigr4/X5s3LgRsiwjFAqVepM6HB1aAOq6jiuuuAJjxozBAQccYN3/y1/+EgMGDEC/fv2wYsUKXHfddfjqq6/wwgsvAAAaGhoc4g+A9XdDQ0PaZZqbmxGJRFBRUZGwPbFYDLFYzPq7ubm5MDtKEERelOsoJ4IgUkO/C+np0AJw2rRp+OKLL7B48WLH/b/+9a+t2wceeCD69u2LE044AevWrcN+++3Xbttz++234+abb2639RMEQRAEQRSDDiuPp0+fjpdffhnvvvtuxjl9hx9+OADgm2++AQDU19dj27ZtjmXY3/X19WmXqa2tTer+AcD111+PpqYm6993332X/Y4RBEEQBEGUmA4nAA3DwPTp0/Hiiy/inXfewaBBgzI+Z/ny5QCAvn37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HW688cak6zEMIyFFKldmz56NrVu3Wv/c85/79++P2bNnO+578cUXc5o9PWnSJDzwwAN5bW8506EFoK7ruOKKKzBmzBgccMABAICGhgYEAgHLOmf06dMHDQ0N1jK8+GOPs8fSLdPc3IxIJJJ0e2KxGJqbmx3/CILIDkcjaJcAFMXyTYfXdR133nknBg8ejGAwiH322Qd/+tOfrMevu+46DB06FJWVldh3331x4403QlHSz1KeNWsWRo4ciWAwiL59+2L69Okpl122bBnWrVuH0047zbpv8+bNuPzyy3H55Zdj1qxZOO644zBw4EAce+yxeOKJJ6y0GhbOXLBgAUaMGIFgMIjFixfD7/dbv7mMK664AscccwwAYOPGjRg/fjy6d++OqqoqjBw5Eq+++qpj+Z49e6K+vh6HHnoo7rrrLmzbtg0ff/wxbrnlFuu8wDNq1CiH0Bk/fjzmzZuX9n3KlXTv7z333IMDDzwQVVVV6N+/Py677DK0tramXd97b7yHww47DKFQCL169cJZZ52VctkdO3bgnXfewfjx4637wuEwLrroIpx66qlYsGABTjzxRAwaNAiHH3447rrrLvz973+Pv85770EQBLz22ms45JBDEAwG8fTTT0MURfz3v/91vM59992HAQMGQNd17NmzBxdccAH22msvVFRUYMiQIQlirlu3bqivr7f+MfOGMXHiRMybN89xnp01axYmTpyY9r1Jxvjx4/Hf//4X69aty/q5RAcXgNOmTcMXX3zRbl/ebLn99ttRV1dn/evfv3+pN4kgOh2OIhCXAJQKIAANw4AeDpfkHy9us+X666/HX/7yF9x4441YvXo1nnnmGcdFak1NDebMmYPVq1fj/vvvx+OPP542ZeWRRx7BtGnT8Otf/xorV67EggULMHjw4JTLL1q0CEOHDkVNTY113/PPPw9ZlnHttdcmfQ5/IR4Oh3HHHXfgiSeewKpVq3DooYdi3333xT//+U9rGUVRMHfuXFx88cUA4r/xsVgMH3zwAVauXIk77rgjrRNUUVEBIJ6rePHFF2PNmjX49NNPrcc///xzrFixAhdddJF1349+9CNs3rwZGzZsSLneXMj0/oqiiAceeACrVq3Ck08+iXfeeSfl+wgA7y98H7+d+Fuceuqp+Pzzz/H222/jRz/6UcrlFy9ejMrKSgwfPty674033sDOnTs9fV5APEfyL3/5C9asWYMzzjgDJ554YoKgmz17NiZNmgRRFK1j87XXXsOaNWvwyCOPoFevXunepgQOOeQQDBw4EP/6178AxAs2P/jgA/zqV7/Kaj0AsM8++6BPnz5YtGhR1s8lOvAs4OnTp+Pll1/GBx98gB/84AfW/fX19ZBlGY2NjY6Dedu2baivr7eW+eSTTxzrY1XC/DLuyuFt27ahtrbW+pFxc/311+Oqq66y/m5ubiYRSBBZk0YACgUQgJEIvvrhIXmvJxf2/2wZhMrKrJ/X0tKC+++/Hw8++KDlhOy3336O/KkbbrjBuj1w4EBcffXVmDdvXsqT/W233YYZM2bgt7/9rXXfYYcdlnIbNm7ciH79+jnuW7t2LWpra9G3b9+M+6AoCh5++GEcfPDB1n2TJ0/G7Nmzcc011wAAXnrpJUSjUZx77rkA4if/s88+GwceeCAAYN999025/sbGRtx6662orq7Gj370I/Tp0wdjx47F7Nmzrf2aPXs2fvzjHzvWw/Zp48aNGDhwYMb98Eqm9/eKK66wbg8cOBC33XYbpk6diocffjjp+h677zGcctYpuPnmm637+PfSzcaNG9GnTx9H+Hft2rUA4mlRXrjllltw0kknWX9PmTIFU6dOxT333INgMIjPPvsMK1euxH/+8x8A8c9r9OjROPTQQ639cnP++edDkiTr76effjoh1/Xiiy/GrFmzcOGFF2LOnDk49dRTsddee3naZjf9+vXDxo0bc3puudPhHEDDMDB9+nS8+OKLeOeddzBo0CDH44cccgj8fj/efvtt676vvvoKmzZtwpFHHgkAOPLII7Fy5Ups377dWubNN99EbW0tRowYYS3Dr4Mtw9aRjGAwiNraWsc/giCyw9EH0NUBt1xDwGvWrEEsFsMJJ5yQcpn58+djzJgxqK+vR3V1NW644QZs2rQp6bLbt2/Hli1b0q7PTSQSQSgUctxnGAYEj6I8EAjgoIMOctw3adIkfPPNN1bS/5w5c3DuueeiqqoKAHD55Zfjtttuw5gxY/DHP/4RK1asSFjvUUcdherqanTv3h3/+9//MH/+fMsZveSSS/Dss88iGo1ClmU888wzlrvIYBf04XA46Xb/+c9/RnV1tfUv1XvK4+X9feutt3DCCSdg7733Rk1NDX71q19h165dKbfjqy++whHHHJHxtRmpPq9sYEKOceaZZ0KSJLz44osA4p/X8ccfbwm9Sy+9FPPmzcOoUaNw7bXXJq0Wv/fee7F8+XLrHy8wGRdeeCGWLl2Kb7/9FnPmzEn4zLKhoqIi5XtKpKfDOYDTpk3DM888g//85z+oqamx8kfq6upQUVGBuro6TJ48GVdddRV69OiB2tpa/OY3v8GRRx6JI46If3lOPvlkjBgxAr/61a9w5513oqGhATfccAOmTZuGYDAIAJg6dSoefPBBXHvttbj44ovxzjvv4LnnnsMrr7xSsn0niHIgWR9ARiEcQKGiAvt/tizv9eT62rmQKurAWLp0KS644ALcfPPNGDt2LOrq6jBv3ryURRiZ1peMXr16YeXKlY77hg4diqamJmzdujWjC1hRUZEgFnv37o3x48dj9uzZGDRoEF577TVHleeUKVMwduxYvPLKK1i4cCFuv/123H333Y7WLfPnz8eIESPQs2fPhBDm+PHjEQwG8eKLLyIQCEBRFJxzzjmOZXbv3g0AKR2mqVOnWo4kgAQXNNW+pmPDhg04/fTTcemll+JPf/oTevTogcWLF2Py5MmQZRmVSVziYCiY8XV5evXqhT179jjuGzp0KADgyy+/TGtmMJgQZwQCAUyYMAGzZ8/Gz372MzzzzDO4//77rcfHjRuHjRs34tVXX8Wbb76JE044AdOmTcNdd91lLVNfX5821QCI53WefvrpmDx5MqLRKMaNG4eWlpaM25uM3bt35+weljsdzgF85JFH0NTUhOOOOw59+/a1/s2fP99a5t5778Xpp5+Os88+G8ceeyzq6+vxwgsvWI9LkoSXX34ZkiThyCOPxIUXXogJEybglltusZYZNGgQXnnlFbz55ps4+OCDcffdd+OJJ57A2LFji7q/BFFuOHMAnY5FAfQfBEGAWFlZkn9e3TI3Q4YMQUVFRUJUgrFkyRIMGDAAf/jDH3DooYdiyJAhacNeNTU1GDhwYMr1JWP06NH48ssvHZ/JOeecg0AggDvvvDPpc7xU406ZMgXz58/HY489hv322w9jxoxxPN6/f39MnToVL7zwAmbMmIHHH3884fH99tsvQfwBgM/nw8SJEzF79mzMnj0b5513XoI4++KLL+D3+zFy5Mik29ejRw8MHjzY+ufzZfZFMr2/y5Ytg67ruPvuu3HEEUdg6NCh2LJlS9p1Dh0xFB8t+ijtMjyjR49GQ0ODQwSefPLJ6NWrV96f11tvvYWHH34Yqqo6euwCcSE9ceJEPP3007jvvvvw2GOPed5mnosvvhjvvfceJkyY4AgZZ0M0GsW6deswevTonJ5f7nQ4B9CLhR0KhfDQQw/hoYceSrnMgAEDEqrJ3Bx33HFZ9ZQiCKIQcN/xdigC6YyEQiFcd911uPbaaxEIBDBmzBjs2LEDq1atwuTJkzFkyBBs2rQJ8+bNw2GHHYZXXnnFCtOl4qabbsLUqVPRu3dvy2H58MMPUzZGPv7449Ha2opVq1ZZ1bX9+/fHvffei+nTp6O5uRkTJkzAwIEDsXnzZjz11FOorq5O6UIyxo4di9raWtx2222Oi3Agnic3btw4DB06FHv27MG7777rKGrwwpQpU6znfPjhhwmPL1q0CMccc0xOrmg60r2/gwcPhqIo+Nvf/obx48fjww8/xKOPPpp2fZdecymm/GwK/vjHP+K8886Dqqp49dVXcd111yVdfvTo0ejVqxc+/PBDnH766QDijt4TTzyBn//85zjjjDNw+eWXY/Dgwdi5cyeee+456xhKx/Dhw3HEEUfguuuuw8UXX+x432bOnIlDDjkEI0eORCwWw8svv5z158U45ZRTsGPHjoypVOvXr8fy5csd9w0ZMgRVVVX46KOPEAwGPbmdRCIdzgEkCKJr095VwJ2VG2+8ETNmzMDMmTMxfPhw/OIXv7DymM844wxceeWVmD59OkaNGoUlS5ak7OnGmDhxIu677z48/PDDGDlyJE4//XSrSCAZPXv2xFlnnZXQWPeyyy7DwoUL8f333+Oss87CsGHDMGXKFNTW1uLqq6/OuF+iKGLSpEnQNA0TJkxwPKZpGqZNm4bhw4fjlFNOwdChQ1MWSaRiyJAhOOqoozBs2DAcfvjhCY/PmzcPl1xySVbr9EK69/fggw/GPffcgzvuuAMHHHAA5s6di9tvvz3t+n405ke4+x93Y8GCBRg1ahR+8pOfJBQz8kiShIsuuijh8/rpT3+KJUuWwO/345e//CWGDRuG888/H01NTbjttts87RsLVbtz8wKBAK6//nocdNBBOPbYYyFJUs5dOgRBQK9evRAIBNIud9VVV2H06NGOf8y4efbZZ3HBBRckDakTmRGMfPoWlDnNzc2oq6tDU1MTFYQQhEcmPzwGn1TFe2ieKxyFGyf8HQN/F8+9HdW/G/49bUy6pzuIRqNYv349Bg0alJAQT2TPihUrcNJJJ2HdunU5NeZNxeTJk7Fjx46EpsCFwDAMDBkyBJdddpmjSwMAvPbaa5gxYwZWrFjhKbRbKtbuWAXZvPYZ2St5qDoZDQ0NGDlyJD777DMMGDCgYNtz66234vnnn09alNNR2LlzJ/bff3/897//TSgWZaT7faDzNzmABEEUGcNxmxzAjsRBBx2EO+64A+vXry/I+pqamrB48WI888wz7TKTd8eOHXjwwQfR0NDg6P3HaGtrw+zZszu0+MuH+vp6/OMf//BUueyF1tZWfPHFF3jwwQc77AxlxoYNG/Dwww+nFH9EZrrmt4IgiA4MLwEL3weQyI9JkyYVbF0//elP8cknn2Dq1KlJ24HkS+/evdGrVy889thj6N69e8Lj7orgrkgh50lPnz4dzz77LM4888y8WrMUg0MPPTShjQ2RHSQACYIoMs4cQD4LRaSYRJeCb/nSHlAGU2GZM2cO5syZU+rNIIoE/dwSBFFUnH0ADai6/TeFgAmCIIoDCUCCIIqKUwDqUDXOAaQQMEEQRFEgAUgQRFFxFIEYBlTdzgPMVQDqup55IYIgygr6XUgP5QASBJE3um7gkqf+iz51Ifz5rAPTLyw4cwB5BzDbEHAgEIAoitiyZQv22msvBAKBnKdxEESp0BQdunnYRqPR0m5MF8AwDMiyjB07dkAUxYy9BssVEoAEQeTNqi3NePvLeNPiP515QFoRxuftG9ChcFfp2Uo3URQxaNAgbN26NeOoLYLoqGxv2Q7VPPh9jXRaLhSVlZXYZ599IFJ1WVLoSCMIIm9iqmbdVnUDfimNABScs4B5BzCXms5AIIB99tkHqqpC07TMTyCIDsadz/0W3/vjtxecVfhm2eWIJEnw+XwUEUgDCUCCIPJG4URcTNXhl1JfcfNFILpZBDJC+hKHhJaiQcut+awgCPD7/fD7/Tk9nyBKyc7YVmw1vxY00YYoFuSLEgSRN3whR0zJwoUzAM0wUD3gMfx7n68wIPK3dtg6giAIwg0JQIIg8iaq2AJQ1tJX3rnbwOiGgTXBeJL2Gn9hRpARRGeC2lkTpYAEIEEQeaNxzZxjSiYByN92TgLRBToVEgRBFAMSgARB5A0v4mKqdwcQhgFOO0InL4QgCKIokAAkCCJveBGnZAgBO54HAzonHqmGlyhHqE6VKAUkAAmCyBtexPG3k+FoAwMDfLN++kEiCIIoDvR7SxBE3vCiT9UzCEDnMx3PFQ3yQojygxIfiFJAApAgiLzhTT89owB0NoLOYBgSRHlBXwiiSJAAJAgib/gqYC0LB9BwOYAGeSFEmWPolAlLFAcSgARB5I2jkCOjg+Ec/eYQgNQGhihzdF0t9SYQZQIJQIIg8sYwAAgxQFAdRR1Jl3XcdraBoegXUY7wma+6QQ4gURxoFjBBEHkjq1H0GHoTfLoPmvFG2mWddR7ORtBUA0KUI46LIgoBE0WCHECCIPIm0rQMimgg4lMQiTWmXTahCCTFYwRRjlAImCgWJAAJgsgbkfspaWn51vPzDBjQucbRJP+IcodCwESxIAFIEETe6FrEuq1GtqVd1u34aZrm+JsgyhlNIweQKA4kAAmCyBtdi3K3Y2mXdYSAYUA3FO5vgihvNMoBJIoECUCCIPJG0zkHUJfTLssXesQdQJX7myDKD772iXfECaI9IQFIEETeaConALUMApC/bRjQdQoBE+UNf9RrBoWAieJAApAgiLzRdDvsq+tKmiXdLp8BjVue2sAQ5Y5OIWCiSJAAJAgib3Qu7JvZAXTlANIJjyAsdAoBE0WCBCBBEHmjca0rMvUxS5gEksExJIiuDz9KkQQgURxIABIEkTcG7JOWZmQIAScUgWj8HQRRdvDTE8kRJ4oFCUCCIPKGH1+lZZEDGG8DQ0nvRJnDXRRpNAmEKBIkAAmCyBvDsD2MdILOPfoNcM0+pSIQogxxOICGnnI5gigkJAAJgsgbgzuFpcvpMwxnEYgOw5k/2D6bRxAdGv6iSKdJIESRIAFIEETe8NML0vUx0w0jIQdQ12gSCFHeOC6KdLoMIooDCUCCIAqAfdIy0iSxG0hWBUyNoInyhhpBE6WABCBBEHnD5y3paQK58RAw97erCITkH1GO6I4iEHIAieJAApAgiLzRPTqAekIRiAGDO+HpVARClDkGVQETRYIEIEEQ+WN4D+M6cwBBDiBR9lAVMFEKSAASBJE3jhBwmhOY2wE0YDgKSCgHkChHHDmA1AiaKBIkAAmCyBu+D6CRRQ4gQA4gQfCueKZRigRRKEgAEgSRN7zoM9LMMtUNpzzUYThyBikHkChH+O8EFYEQxYIEIEEQeeOYBJLGxzOQLAdQc/xNEOWG47hPcwFFEIWEBCBBEHnjqAJOkwNo6G6R53IAC79pBNHhIQeQKAUkAAmCyBvDYxGIgSRFILwDSCFgoszRyQEkigQJQIIg8saR2Ze2CjgxzEsOIFHu6I4iEPoWEMWBBCBBEHljGNws07RVwIbjZBcfBWdXPequdRFEOcAf8eQAEsWCBCBBEHljwFsvP7cDGBd8XP6gEF+GIMoJRw4gzQImigQJQIIg8oZ37dIWgSSRh84egvFWMQRRThjgY8B0/BPFgQQgQRB5w4d904eAnW6HIRiOvoE6BBKARNnBp0VoNAqOKBIkAAmCyBve10uXwxefBGKf7dyzgHVzGYIoJ5x9AEkAEsWBBCBBEHnjdRScnqQIxNFCRqAQMFF+OGYBUxEIUSRIABIEkTcGvE8Ccf/tngRCKVBEWeEaj0hV8ESxIAFIEETeOEPAaRxA3XWyczuAIAeQKC8MXYch2LY4OYBEseiQAvCDDz7A+PHj0a9fPwiCgH//+9+OxydNmgRBEBz/TjnlFMcyu3fvxgUXXIDa2lp069YNkydPRmtrq2OZFStW4JhjjkEoFEL//v1x5513tveuEUSXxCn60gg4w4AuOMd96Do/CUSArlIOFFE+uFMmDGoETRSJDikA29racPDBB+Ohhx5Kucwpp5yCrVu3Wv+effZZx+MXXHABVq1ahTfffBMvv/wyPvjgA/z617+2Hm9ubsbJJ5+MAQMGYNmyZfjrX/+Km266CY899li77RdBdFUMgW8EnVoAapqzx5mBxBOgSn3QiDKCb4QOkANOFA9fqTcgGePGjcO4cePSLhMMBlFfX5/0sTVr1uD111/Hp59+ikMPPRQA8Le//Q2nnnoq7rrrLvTr1w9z586FLMuYNWsWAoEARo4cieXLl+Oee+5xCEWCIDLj6AOYpghE090C0HCMggMSRSJBdGUSUiaoCpgoEh3SAfTCe++9h969e2P//ffHpZdeil27dlmPLV26FN26dbPEHwCceOKJEEURH3/8sbXMsccei0AgYC0zduxYfPXVV9izZ0/xdoQgugC86EuXxO52OwzA0QcQAFQSgEQZYSQ4gCQAieLQIR3ATJxyyin42c9+hkGDBmHdunX4/e9/j3HjxmHp0qWQJAkNDQ3o3bu34zk+nw89evRAQ0MDAKChoQGDBg1yLNOnTx/rse7duye8biwWQywWs/5ubm4u9K4RRKfEOd4t3Sg4p9gzhMTG0ZqmFHLTCKJDkxAC1qkIhCgOnVIAnnfeedbtAw88EAcddBD2228/vPfeezjhhBPa7XVvv/123Hzzze22foLorDgcwHQCUHMlvMNIcDx0nQQgUT4kHP+UA0gUiU4bAubZd9990atXL3zzzTcAgPr6emzfvt2xjKqq2L17t5U3WF9fj23btjmWYX+nyi28/vrr0dTUZP377rvvCr0rBNEpcbSBSdsIOnMIWCMHhCgj3CFggI5/ojh0CQG4efNm7Nq1C3379gUAHHnkkWhsbMSyZcusZd555x3ouo7DDz/cWuaDDz6Aothuw5tvvon9998/afgXiBee1NbWOv4RBOEM+6Z1AHW3A5iYBE8CkCgn3CFfcgCJYtEhBWBrayuWL1+O5cuXAwDWr1+P5cuXY9OmTWhtbcU111yDjz76CBs2bMDbb7+Nn/70pxg8eDDGjh0LABg+fDhOOeUUXHLJJfjkk0/w4YcfYvr06TjvvPPQr18/AMAvf/lLBAIBTJ48GatWrcL8+fNx//3346qrrirVbhNEJ8ZjCDhpeJdyAInyxe2Au/NkCaK96JAC8L///S9Gjx6N0aNHAwCuuuoqjB49GjNnzoQkSVixYgXOOOMMDB06FJMnT8YhhxyCRYsWIRgMWuuYO3cuhg0bhhNOOAGnnnoqjj76aEePv7q6OixcuBDr16/HIYccghkzZmDmzJnUAoYgcoB3ANMVgaguBzA++YPawBDli9sBp1FwRLHokEUgxx13XNovwRtvvJFxHT169MAzzzyTdpmDDjoIixYtynr7CIJwYngMAbt7/gFG/LvODQdx9wokiK5MYgiY2sAQxaFDOoAEQXReshGAhpDogOjkABKZaPoeiDSWeisKQkJzdHIAiSJBApAgiLzhe/mlHQXnFnsADFfVo0Y5UEQ62nZBvXcEjLv3L/WWFAS3A5gwGYQg2gkSgARB5A0v+dI5GIktL5I5gFQEQqQm0rACp/bvh+k9awA5XOrNyRt31TsJQKJYkAAkCCJvHDmAQurlkjqArvtUygEk0rAmug1bfT58UFmBaNPGUm9O3iSORyQBSBQHEoAEQeSN1yKQhHAXEkfB0SgsAroGNG9N+lBIkKzb29u2JV2mM+F2AKkPIFEsSAASBJE3DgGYLgTsDm8lKQLRDHIAyx3lmfOw5YGRwJbliY8pEeu2qsYSHu9sJI6CowsgojiQACQIIm8ck0CEdA6ga/B9fBqw8z6NQmDlzvSWzzG2/95YtWpewmOKGrVva9GExzsbCY43GYBEkSABSBBE3vDnrHRVwEndQbcDQiHgsmdJZQUA4K2W9QmPyZwAbGhsLto2tRfuNjDUB5AoFiQACYLIG2cOYGoSwl1IzBlMPi6OKBu4i4QdzYkOn6LaIeBdrW1F2aT2RNXcebEkAIniQAKQIIi84cO+6YtA3BWPSXIAqQq4rDFU2brdGku8GIgotigU0PkvFtyzgKkRNFEsSAASBJE3zhBwmuVcs4ANJDoeFAIrb1TO4ROSnKHCCl/40fkFoOb+TlARCFEkSAASBJE3ntvAuN0OIXF5aoRb3iiKHdZN1lIyptqiT9HkJEt0LtyCTycDkCgSJAAJgsgbI8XthOWMRAcwoQ8gOSBlDd/mxV0gBAAqVySkqp1fACbMAqYcQKJIkAAkCCJveBdPT9MGxj3n1wAcSf8AoGuUA1jOKIo93k1H4sWAxh0fit75+wDSKDiiVJAAJAgib3QuVpc+B9AV7kIyB5BOgOWMoqYXgPzxonaBudF6Qg4gxYCJ4kACkCCIvDE8BoHdY64MAYl9ACkEXNaEZTsEnMwN4x0ztQu4xbrhDgGTACSKAwlAgiDyhj9Np+8DmBgCTugDSAKwrFFUWxAZQqIA5B1id0pBZ8TQqQiKKA0kAAmCyBuvbWCQIACFJI2g6QRYzvBhXXd6AOB2ADu/AEy8KCIHkCgOJAAJgsgbZyPo1CSEgOP3Ou/rAq4OkTsKJwCTuWG8A5gsR7CzkVAYRQ4gUSRIABIEkTeOEHCaKmD3nN+kbWBoFnBZw+f1JXMAecesK0yNSfxOkANIFAcSgARB5I3nSSDugg8hseqRqoDLGyVDCNjhAHYBt5jawBClggQgQRB5o3sOAcdPbqIp+pIWgZADWNbweX16kqNJcwjAzi+WEi6KqA0MUSRIABIEkTfZFoFIjudRFSRhkzkEzAnALnCx4BaxFAImigUJQIIg8sbRBTDZAFcT2wE0/0bi6KuuENYjcofP60vmAHa1ELC7OTo1giaKBQlAgiDyxtkHMF0j6PiSEvP+hCRtYMgBLGuyEoBdYG5uQg5gF9gnonNAApAgiLwxPI+CczqA8eXdIeDO7+oQucOHdcuiCIRCwESJ8JV6AwiC6JzouoE/v7oGg3tXe58EYvZt4688E0PA5ICUM7wjpiVpKdTVBGBCc3Q6/okiQQKQIIic+Hj9bjyxeD0AYJ8h9v16mhxA5gBK/H2UA0hw6JlCwOhaVcCJDiBBFAcKARNEASmnBO7v9oSt23wION07wN6f9CHgzn9SJ3JH5RzAZMdSV8sBNFyjD+n4J4oFCUCCKBBNYQVj/vIObvj3yqyfG1EjiGmxdtiq9iOm8idiJL3thrl7FAImUmFwDqCWRAIaXSwETG1giFJBApAgCsTLK7dgS1MUT3+0KavntUTbcOw/j8ApTx3TqRxEhROAjjYwaZ8Vf1SCbRm6XRxyQMobfjauniQH0NkIOr/vy67WGE657wM8sejbvNaTDwmj4DrRbwDRuSEBSBAFoipgp9RGFe/OxMtL/4WoqGOnGEE41toem9YuKJp9Itb4KuC0fQBNB5BCwEQKnFXAifAOWb4O4P1vr8WXDS247ZU1ea0nH8gBJEoFCUCCKBB+yf46bWmMeH5euHWrdXtX87aCblN7wgtA5ySQ1AqQOTb8Eol9ADt/WI/IHd7hSxYCLmQO4K5WOa/nF4JEAUgXQERxIAFIEAWCd/0amqOen6dqbdbtxk4kAGWNc2K4+9MXgbAcQC4ELFAIOCfUGNQP7gI2Li31lhQUvg1MMje5kFXAbbKaeaF2xn3BQ/4fUSxIABJEgYhwAlBWvZ+YVM0Wi40t2wu6Te0J7wDqAi/oUj/HcI2CAxJDwFQE4o1179yEE76ZhdsWXlbqTSkousEXgSTC58glaxOTDapWernldsApB5AoFiQACaJA8FWx2ZxYZNWu/o3GWgq6Te1JLkUg7OTG9wFMyAGkEJgn7t/6LnZLEuYHSu9iFRJdT55baj3OHS/5HitCmouVYpEwC5iOf6JIkAAkiAKh6/aJSdW9/4grui0AY3LnaQVjO4CGw6lJOwrODHcJjhCwywHUyQHxQpvSNYUCHxJN5gA6J4Hk9x5IYukVYEIjaHIAiSJBApAgCoTG/XArWTiAKtf/T+5EvQAVnRV06DAcIWAh5UmMner4HMCEEFjS0z7hRusA4cv2QM+QA+ioAs4zBCx1AAvQnfNKVcBEsSABSBAFQtMNQIwAYjh+2yOqblciqlrpqxK9wpw6KYlgS1nIkaQRdGIbGDoBekHkxIumdp4Lh0zwDqAKAXC56Y4ikDzDpWIHcABJABKlgmYBE0SBUDUV3YbcAk00EJFfzOJ5sqWINE1pp60rPEzkiklOwrquQhSlxPutk50AwTBgCEKCy0MOoDd4F7WlrQnd6nqXcGsKh264HEBdAcQg93jXcgAT2sCQ/iOKBDmABFEgNHknNLO8ta1ltefnqYYt+jqTA8hC3qKQxAHUU4g4VgUM+8eHqoBzw+ByJ8NyW5olOxe6ow8gAN1Z5OIoAukCOYCJDiAd/0RxIAFIEAVCl+0eftFog/fncY6XqnceB1C3HMBEsce38nDcD84BZPe5HUCyQLImEu1CApC7eFAFAYbroqiQOYCO9ZbouEtsBE0QxYEEIEEUCEOxe/ipsZ2en+eYfNCJBCCrQZCSOBaanlwAsnOsAHsaiHvaAzWC9gYfCo3EupAAhNMB1FSXA8gdH4XMlytV8Xni8U4SkCgOJAAJokBoqj3HV1W9j4Iz+KT3TpQDaLVrSRIC1lPsBz8JhDWDZqc70RQ0+Sb2lwu8+xWTwyXcksLiEHiCAFl2TtUpqAPIuc/ZFG4VEiqCIkoFCUCCKBA6l8un6N4FIC94+Irgjo6WJgSsaqkcwMSTG2v2K9kLFWLzujy8cIjEuqYABABZcQpA3SEA87xY4CfSlCoErFMVMFEaSAASRIEwuPCtrntvy8GfeFKFTjsirAhESuIAaimKQFiCuwABonmiY42gfeQAZgUvhKKy9wuOjo57Nq6sOL9Leorb+b9uqRxAd5sbEoBEcSABSBAFwjHDNAsnr/MXgSSehlOFsm0ByOcAxmEOIOUAesMRAs4i5aCjk+gAOveNr5LtCiHghOOdHHCiSJAAJIgCwQtA1chCAPJ9zVJUz3ZErDYwpoQTvDiZBpseklgFLFk5gXQC9AIvfuQu5QC6BaDLAeTDtvkeK/y6SnTd4RaA7tGIBNFekAAkiAJh6LwD6D0EbDgcwM4jAK0aEIEJQbuQQ0uRA6jzfQDN57PTHzmA2cELBaULTQJx98Fz75ujD2BBq4A7RhEIOYBEsSABSBAFgi8CyaadC98GRetEDqAdAlbN/+0flNRtYBL7AKouB5AaQXvD4QB24RCwqjjddF74FtIt00okvGgUHFEqSAASRIEwoHK3vY8zMxx9ADvPGDSrClgwXT2Dy+vTUhWBsBAwnwMYvyW5liHSw8sGuQs5gG4BqGiuNjB8qkGexwqf96eXqg0MNYImSgQJQIIoEPwEA3clY9rn8Y1v29EBbIooeOjdb7B5T2FahrhHwfFh3VQhYCZ2k+cAxm+QAPSGwwHUuq4AlFWXA8jdzvdIcebf5rmyHCEHkCgVJAAJokDwDZ2zE4DFCQFf938r8Nc3vsLEWZ8UZH3uUXAiDAjmvqQMAZv/CwBY9I69U+zHiHIAvcG/S10pB9DdFkVxFYEUshG0owVTyULA7tclAUgUBxKABFEg+AreXB3A9sx/e31VfD7xuh2FGRtmO4B2CNjKAcwwCcTpALIQMDmA2eAoAtE6TwPxTLgvANI3gs6PjhACdhe9lMqJJMoPX6k3gCC6CjqXA5hNM2Oj0xeB2CFgZmakbgSd2AaGYY+GIwfQC/y7pHalELDbAXSJW4M7cHT3QZTta3Fiq2Sj4NwOILWBIYoEOYAEUSCcIWDvIsYZAu5ERSBJcgAtVy/FfhhJ+gAymANYqnYcnQ3+HVa7sgOYkAPYPiHgUh13iQ4gHf9EcSABSBAFwhECzqIK2CEAO5H7pZmbKjAHkA8Bp3AAdasIBCkFIIWAvcGHgFWj80yQyYRbALnFLf9oQUPApeoDSIKPKBEUAiaIAsG7ftmEgDutA6hrCNX/H1qFZgCACMEuAkmRAwguBCy6znsiE4BUBOIJRwi4E40QzERiI+g0DmC+IWBdx5niYnxuDLYuaIqN+7eCLoCIYtEhHcAPPvgA48ePR79+/SAIAv797387HjcMAzNnzkTfvn1RUVGBE088EWvXrnUss3v3blxwwQWora1Ft27dMHnyZLS2tjqWWbFiBY455hiEQiH0798fd955Z3vvGtGF4Xv/5SoAO1MTZF1aDn/3/6Kl29cAzBBwphxA5gAKiWdukRzArODf4ZSj9zohmRxA3XE7v2Pl6LY3MKz30/hrzY2lCwG7XpeOf6JYdEgB2NbWhoMPPhgPPfRQ0sfvvPNOPPDAA3j00Ufx8ccfo6qqCmPHjkU0aleLXXDBBVi1ahXefPNNvPzyy/jggw/w61//2nq8ubkZJ598MgYMGIBly5bhr3/9K2666SY89thj7b5/RNeEz3vLtQikMxVADNC/cvzNh4D1VCHgJI2gGRQCzg7e/epMznEm3J+/4nI39RS3c6HJtxAPde+GyXv3LFkRCBOAkvk/Hf9EseiQIeBx48Zh3LhxSR8zDAP33XcfbrjhBvz0pz8FADz11FPo06cP/v3vf+O8887DmjVr8Prrr+PTTz/FoYceCgD429/+hlNPPRV33XUX+vXrh7lz50KWZcyaNQuBQAAjR47E8uXLcc899ziEIkF4xeEA5loE0ol+/N2FHo5RcKmqmR1FIE4JKJnPTuyLRiSDP8I6U/V4JhJGwSXkABpglw/5hoBXB23ToNRFICLiri4d/USx6JAOYDrWr1+PhoYGnHjiidZ9dXV1OPzww7F06VIAwNKlS9GtWzdL/AHAiSeeCFEU8fHHH1vLHHvssQgEAtYyY8eOxVdffYU9e/Ykfe1YLIbm5mbHP4JgGDk6gPxJLJvnlRpJcKZUiBCsELCuJ98PdrJL2gYmjQP43e4w1FIlaXVQNO4NVLuQAHR//qrWfg4gv+ZSt4EhB5AoNp1OADY0xJvZ9unTx3F/nz59rMcaGhrQu3dvx+M+nw89evRwLJNsHfxruLn99ttRV1dn/evfv3/+O0R0GRwNnbP4EXfmAHamH3/nidkxCzjlJJB0RSCmA+g6rb/z5TYcc+e7uPE/q/Lf5C6EQwh1oRCw+yLIXeDC9wHMd6/5i5CSjYLjHECCKCZ0zGXB9ddfj6amJuvfd999V+pNIjoQvHDJpp2Lc7RVZ3K5nCdmPq9PTyUAuVnAbqwQsEs8/3FBXPg9+8mmPLa166Fx72FXzgF0X0w4il/yDAELnJosXQiYOYDmdpADSBSJTicA6+vrAQDbtm1z3L9t2zbrsfr6emzfvt3xuKqq2L17t2OZZOvgX8NNMBhEbW2t4x9BMPgQcDZhHM0RAm6/H3+/2IYDezyDGt+2zAt7wIDzxCxCsMK4qUPApgMoJAsBJxeAMaUzieLi0VlTBzLhzgHU3A6g44IpPwXIH4WlCwGTA0iUhk53zA0aNAj19fV4++23rfuam5vx8ccf48gjjwQAHHnkkWhsbMSyZcusZd555x3ouo7DDz/cWuaDDz6Aotg/Lm+++Sb2339/dO/evUh7Q3QldEFPejsThRxun46D+z6ADX1WoH//BwuzQsHtANph3VRFCfwkEPePjyTE73G/B0k6xhCG4XTCurQD6Ny3QuYACvx3L0XlenvDjEd7FGLXcwD/8OJKnP3IEiiUx9uh6JACsLW1FcuXL8fy5csBxAs/li9fjk2bNkEQBFxxxRW47bbbsGDBAqxcuRITJkxAv379cOaZZwIAhg8fjlNOOQWXXHIJPvnkE3z44YeYPn06zjvvPPTr1w8A8Mtf/hKBQACTJ0/GqlWrMH/+fNx///246qqrSrTXRGeHb2CcTTUvf9ppLwFoGAa+qm0CAHwXKkzT4AQH0OBDwKl+6PkQsFPZMQcQ7r5oXe98mDe6rsLglHGXcgDdRSCG2wHkli3gxYGmlqaZtjsHsCse7nM/3oRlG/dgybpdpd4UgqNDtoH573//i+OPP976m4myiRMnYs6cObj22mvR1taGX//612hsbMTRRx+N119/HaFQyHrO3LlzMX36dJxwwgkQRRFnn302HnjgAevxuro6LFy4ENOmTcMhhxyCXr16YebMmdQChsiZXGeUFiOUJ7fDlbcuJIaA7SKQFI2gzf8FIVkfwOQhYCIRzdUaRcuzHOLdr7bjjte+xF0/PxgH7F2X17ryxf35u505rYBFIPz3VCnRPGW7D6D5dxc7/qMK3x6ra+1bZ6dDCsDjjjsubS8wQRBwyy234JZbbkm5TI8ePfDMM8+kfZ2DDjoIixYtynk7CYLHOQnE+w+do69ZoTfKRFZd46YMI+k0jmxwV+uKXHOXVEUgOt8H0F0FnCIETKeMRPSE3nj5HTkXzf4UADDtmc/w/jXHZ1i6fXF//u50Av5RQxCgaypEKbdTmSP9Qo3ltI58Ydsgcvd0JZqjtrNK2Rwdiw4ZAiaIzojjZJLFL10xikDcAlDR8n8dw5XnKMDOY0rVCDttH0BBspYi0pPoABbmPWuOlH6mcCYB6D6yND13545vKePuN1gsrBCwVQXctWiL2RfGYbnr5Kp2BUgAEkSBcBSBZNUHkL/dPuLHXeFYiIrH5A5gnNQJ9cwBFBMkoGQKQGqDkRm3ACxU6kDAV/pTQkII2FXg4r640vMRbtxLaVo09XLtCPvk7EboXQuNywfmw8FE6emQIWCC6IzwJ65sHJmiCEBXSoWq6wCk5At7JHUI2EjZmNhuA5P4mGRuj1sAUNpQIppL9GTTd7Kjk+gApq4CBhLbxOSKW1QXDSstwrqjNNvRTqi6gb4Vy1Hh2wVVO6jUm0NwkAAkiAKhFyIE3E5JMqrWDg6gK4lP8OIAGrYD6PaaWA5gV0uCbw8UzZmvVqgLB3eqQClg+d8+w4AqCIkOoMs5zscB5I/hQgnJbGGfXZcNAbftRuvAeWgF0NpyKgCaoNVRKL3fTxBdhNxHwfG3ixMCVvMUgLpuJAg1Rwg4hQNoneyAhCIQQWAOIJEJWXE5gFn0nUxHR3jvdfPA8JsJeu4KZ/dFUj7Cjf++aWqJqoCt74Rg3dOVaNy90roda11fwi0h3JAAJIgCoXOKRvXo5BmG4TihtVeGjDsErOcpADXDSHAARQgQzZN26iIQFgIWE+LAkpA8BEyNoBNxtyzJV/6NEVfghsp70M9IPge9mLDP35+ioMi9r/k4gPy68ikmyQdrPGIXdQAVTlgramsJt4RwQwKQIAoEL1y8hjF1oziNoAvtAGq6kVAFLApiRgfQKgIREtvASILPXMIdWibcqC63Sne/mVkyoN/juH/AdhxcNT+v9RQCdq3iYxcTbgfQtbw7HzKr1+Iv2rTkrYvaG3cRSFdD4drrKGpzCbeEcEMCkCAKhLMIxBuqrjtymtorBzBBAObZGFpLGQI2KxlTzQK23Jxks4AzO4Dp+oOWE2qB28C8VFMFANhUtTmv9RQC9vn7rN6Y9rFk6LpjAgqQn3PnSL8olQOYkAPYtY5xVbWrqxW1rYRbQrghAUgQBYJ3YbwKOU03XJNA2ge3AIwp3preNqXoC6cZRoLr5JgEkrIKmF/W+SYJVhsYJ/xyhehf2BVQVHcOYGHel0gHOCOw4yqZAEwW7s2netdRuFWqSSBWa6Qu6gByBUuqFi7hlhBuOsDXnSC6BnouDqCmQXXMdC1OCFhWWjI+Z+7HG3HwzQvx5JINCY/Fi0Cc8L39MuYAJjndSWKKELAA7C1uhQTNbF9DuEPAhcod7Qjymm2D32CTYTgBmGTCjFsMZwN/8aUapQkBuwVgR/gMCgl/rJaq0ppIDglAguDY1hzF5Dmf4v2vd2T1PMPliGkeKxdUxXUibycTQFGdJ7dYLPOV+KzF8Yq9Py5YlfCYqidxAAUuBJyhD2C85YtzZ8UUOYAjpbcRHXIfTuhzFzmAJqrrRJpvDqBN6d9fdhHEZkPzFxN6EpGWT+6eIwRcskkgLAQsOP7uqGhtO4As3nNFJwHYUSEBSBAcv/u/F/G1MhUzX0g9ZzoZuuFu5+IN2Z3Mn9WrekdVI46/Y3IkxZI2G3elFom6nlgFLHFp7HpKpy6NA2gJQCc7uy2ALApY2mNP3rmLXQXF3Qg6nwsHLq+yI0gPKweQpQSk6NXnN7dbzScHkE/bKFkVsLMNTLE/A1nV0RL1Jsx2bP4Ex8//MW6b+xPP61e5EHAyAU+UDhKABMHRKN+PxoCM3X3fy+p5qq67HEBvz5NdA+jbywGUXTl/ippZAOppCi40w0gIV8ergBPztnjsNjBCkkbQyR1AhQ/TFaCBdVdAdecAIvcCGZ07BjtCJSo7cnxIHA1ocCFgn7m/25vCOTewdraBKXEj6BIJwFPu/wBH3/EuWmOZxdk/l/4ZeyQJ8409ntfP52hqBjmAHQkSgATBIQi59anSdeRUzKEobgewfU7AfCVe/HUzh4DTnYhUzUgodBG51i6pJ4HE/xMEAalDwE58hv0z1REmVXQEEqqAhdynu3i5GCgmVh9AqyjI/sz5li8+c3f/uGA5rpy/POvX0d0FWEnyC4sB+9TsHMDiScAdLTF8u6MNTREFG3ZmrtBtVrMv4uDTFVK3hyJKAQlAguAwchRgqu70wzRB8OTIuKcPtNfPo3t0mKJmHnyfbvN1I1kbmGyLQFyNoFMUgbB+cAA5gAx33psq5P7eyIotAEvv//EOYPx44J11PreUCUAROl5ZuTXr14m72NzrlkwAlq4IhK/yl8TMn76QQ1d2pwCkEHBHggQgQXDkegLU9MSQaEoXjCOWxMlpD9yCjz/ppyLd+cDdvgaIC0ArjOVhEoh79alGwfGphoWYYdwVYPlqAfP9UCHk/N5EPeSDFhO2Fz7zgsBRXc+JNMn8XxRyu2zS3QKwZOHJ0oWA+WNG8ZBfG5KC9vIxb9ESZwiYBGBHggQgQXAIjpON9xOLphsJ4s1LfzJVcQqzdusDqGbvAIpprvaTCV6+E6Cia5i1eD2+2+0MGTnnntrrlwwDYopRcO7XJQDFdAADpk2r5eEAxpTMx0IxYRcWfsFv/m1YowuZSycYBiTLAcxRALrSNrQSOYB2DmD8dFzMI5wXfV4EIH/Zpijemjqr3PvqnupClBYSgATBwUueaBa5UckcMXeeVjLcyfy6x9BxtiTkAOaQy8OjGYmCV+Bau6zZ0oRbXl6NMx5c7FjGWQRir0AAIIhm2480zmNM7lhipVSwkyqbl6sKAlQ1t5OrzAnAQjWUzgcmiPyi3/pbMavKdVP4irDFiJCjA6gZhkOOpGpd1N7wzdGB9psGlAynA5jdZ+81d5R3VikHsGNBApAgOHhXKxJr8vw898kEcJ5YU6EkEYn5zDZNRULRgAdxmi7dJ+4AOglKAUvSyeaJek84+b64a4BFA54cQC+h63KAOWEB7q2SPbi6yVC4EHBH6EHHjitLAAq2OGE5ZCLs1AAxR99cNwyXA1jaPoCCITr+LgaqhxCwocTwzbLHoUabHFvmJYoAON9XEoAdC1+pN4AgOhIKp3oU2XtFsKolOmKK6sEBTCL2dF0BEPD82l5QXUUg7kbC2aLrifmK9TWV2BJmwi5VDmD8fkFwFoEIsBPM+ZOM2w2VZRolBfAOoP0e5hrKjXGV6O2Vg5oNTJQFxPh3QBMMKKoOBG3hKxq2e5FzDqBuQOPncJcoP81qfJ1iFGJ74iUH8L55p2CWvhM3fP+hI4fPHVVI+RoGhYA7KuQAEgSHyp0AvbRKYSRzxDwJQHMZkRM6brFWCDTXOrOdn+rOvVP1xE5/QV+QC+smdzGscJcgOn58RBhJ28C409qy+Uy6MuzCwc8JGC/NvZPBh/K0DuAAWkUgUlwA6gBkU5xYAhAGRKulUI4hYFfebulDwJlTIAoNP1pRVpN/9rP0nQCAe3Z9CpXLi/YsACkHsMNCApAgOPgcKDkLBzBZTpyXcKV1Iud+e3VNQWNYxifrd3t+/cyvI7v+zs4BdLsDepL99Ut+29VLkUuWqghEhF10wofA3EIz5jHxvKvDTqp8ixwlx/A434y8mOIjFXYOIHMA7f6PVhEIuBxAU1ToWRbBJEzvKXkRCKt6Lh78hV2mOdsCBMQ03gH0dqHqdACpj2dHggQgQXDw16fRmHexoemJOYCqmvmEwoSZn3MANTWGMX95B+f+fSn+912j521Iu31uAehh7BUfonVXmGpJQsB+LgcwdQiYrdwZAhYNQBAT28BorpnDXl2Hrg4TgBLfJDvHEDDvVHdMB9CwLkBYayXR4HIAhfhj2VZBa5oKnUv50ErmAJoCUEicfNLeeMkBZMgCsCdii77cQsAkADsSJAAJwsQwDEcIOJZFvlk8nORURO7my8lI5gDKmoI2OX4y+mKL90KU9NvnKgLJ0u1wz+BV9cRgjl8MWKJOgIG9A1+jVtzpWoqd7Jwh4LgfmJgDpbrazVARSBw7FCpYI9FyFYCyZj9P7QgOoLkNPjHec04TuBAwXwRiLi+YR0y2LYIU13hEA6V2ANns4+K9tsZV/iopQsDW44LgEHBeU1V4AahRCLhDQUUgBGHizgmKemx0CgCalvjT5iUHUNP4qkYDhiAgwuVyZRvWSv06bgHoYdsM3h1wN7lGguD1S0Gwa0ottB3Ne83C/hERwERrGb4RdEIImDmAfGWmxhxAs79gBxtbVipYLpZgCkBVEHIWgHworyP4M9YkECkEIO7KM3FiOYBgIWADohD/Dim6jgqrPXRm3BdopR4FV4oQMO8Ayh76AGo5CUD7l5EcwI4FOYAEYaLqBpQcHUBZlWEkOICZ8+xYiwTJ8r+AqGyLs0L1PXZX/WZyAA3DSFshmKztjW5oVl7Wypq4GPmqQoeRJLfIPQoungOY2AZGdYlylQQgAM4JMwRrJJrXthxuFK4XZYdwAM3//RJzAAWrKTv7vggGIFhXCmYz7Cz72GmKqwenhxDwR9/uwoVPfIx1O3KbGZ4MqwpYLHEOoAcByAs4xWMOoO4QgKVPMSBsSAAShIms6Y62ENmEG1UunMRCcu7pG8lgfQAFA9Zkg5gc4x4vzOlAdwnATG6H2/FTXX8rquzInwKAgL8q6azQpqaN1m2DCwHzS4oGIIqJkxDiriwvRCkHELAFvMhdOHg9Ibvhe1Hm1AZmy+dAmzvUnzt2DmDcAVQFQDdFKmucLsI+ebEqYCVDEYMbdx5sqvGFPOc99hEWf7MT1/9rZVavlY4EB7BEVcBeGkHzDmDE4+8jOYAdFxKABGGiKJrTAcyi5QjvvrDxXN4cQDukJZmngogchV9qxl4VKxBVCpMz425ym6kPoLsi0H1y1ZKEt4cPHudw9Rht4R3WbccsYMHtACY6IO5cQyoCicNOqgIE68LBa1WmGz4UqiG7STSx7z7B9S+ejZf/MSan104GE6F+HwsBC9YEEDXJJBAx1xxAdwg4i/y0PeHs2iilw8oBZKPvcp5Inj38hV22IWDZaxUwyAHsqFAOIEGYxJSow9WSs+iVp3KCyBrP5eH5zJmTDMHqBRhTZAwccCcagip27QwBuNLzdqTcPrcDmKHpLXMDBCEKwwgmOJG82HjkqNsQUaMY3O9HSQVgS9su67bTAeQFoAApRRWw6ggBF+7E25mxc+EE60fcS9FRMvjJM6oQTzuQPGqQ11f9Ey9XV+FlAKfrOiDm7ylYDqCvwt4m83Nnx7HIh4BZFXARQsCMioD3XMNMsN2QklwAtTdeGkHz8AJOUbx9F/n3tSOMGiRsSAAShEk06nT8sgmp8c6UzxKAXtrA2CEtdkqJKVE0BOPPbWj+NwohAN0hYDWDAFQ1HcMqF2P7Pi9h2O4fQNWOcT7OCbFDf/BjhCq6AYgLOzfNYbufIfv5l9wC0IAtAHnB584B1MkBBOwQsAARkvmG5dpA3BkCjs8UlgLeTg0R7vOORXcjWNkrp23gYQ6YX4oLQA2CHQLW7NC33QcwtzYw7ouixFbuabaxgPO6bQfQ7ntYLOz3zPAkoPk2QbLXIhDufaUQcMeCBCBBmMRcjZ9jWbhNfIiVOYBepm1ofGNb83nhmJ1bIxqFORu4HT9dT+92qLqByN4LoAgiVvb8PtEB5ISY5Atat90zfgGgJdJo3TYE5ixKDgEowRaAvMuQ4AC2w5SUzgg7kRYiB9AthBQ1imCg2tNztzW2WLej0caCCEB3CFgV7JxVlS8CYQLQcgCzzAFU3TmA3h3AAqXmxl/X/F9is48Lt+qMaJqKc+pnIuqLQpP/mXl5RwjYowPIC0ByADsUlANIECZR1ygtJZsQsFkEIhmG5Ux4eb7OVQGzL2NLdI/1uFCgs4HbAdQyhoB1x4+D213RucpRSbLnFicrAmmL2b0M7YpHybGsAMFuA8O/rmZA5YSiO5exXLFzR20HMNvxfgx3qkI0i+r3Ni5PtrmtMafXd8MO+YBVBCLAYCFgNTEHUMi1EbSrCET3UARiLVuo8nzY+2sJQCG7PMx8kPf8F290l/F+jQi17bOMy/O/Gl4vOJwOINGRIAFIECbRmCsE7KFXnrWsxgSgXc3rZdwaX82ZTABqBfrJdAu+TDmAqmZY+wEAiqrjo2934TfPfo6drTFrtrBoGJZwA+yTMk9btJn7ywx3iZJj2XgVcKIA1F3NuVWdHEDA/jwF7rjxknOaDLcDKCve32O+GVBrZE+aJT2uzzCsPNwQE4CIj0cEnA6gffzEtyHbHED39zObELBWQIFm5cWaAhCAVfTS3kTlBvs11cTRk+4WTnwI2EuRW/w59jooB7BjQSFggjBxz1L10siZwdwXCfZVlebhR1zjkvlZCLgl1mhvQ4E65+uGyvddzjj2StV1RzsKRTcw8YmPAQARWcPx/e395UmWA9jGhdbZqUCEBH4WiAg+BMy9rqI4Gk5rWc4wzokCFTO0J8ytiheBxBsiZzvfmaG6WgJl0/6Iv7BoizSnWdIbvPDxm6kFhiBYLZU0LgcwIQScbRsYze0Aev+uFTYHMI4kBq0/dF2BBH/K5xQKWeHcea0x4fGEEZIOAZhDCJiqgDsUHftXjiCKSEx1O4DeT6jsaliCYeXtZWq1AvANfe0cwIhi51XJGZw6ryQ6gOlPdormbPTM51d9umG35cSJrt9zIYkADCt8biVfBcwLQMFqhMunPSquVjyZQtf58s9nTsXvnjgY4d3ftuvr5AsTgAIk7njLzQF0h9XlLNof8Z9HOOZBAIZ3Ay0NKR/WDXtbAmYVMGCHG1XdDgGz48eoWYN6cUvWIeCE3pjZFIEUMgTMqoC5VIpcw/nZoqiN9m0tceyku/E6n8PntUsC7xrSILiOBQlAgjCRZWeFqWJ4F4CWA2hk6wCaJzTBrmqMckJUEQojeNyNnzM6gJrhCObGuJYZiqZbTpzkuqJPFgKOco4SO4FIkgTR0QdQSNoI2t2LMdsZxtlyp/IdXgkCz38ws11fJ1+sCwdBgGS+57nmR7ovVLJptcNXk8cyjaIzDFw798e44Nkfo237qvhdqxfAWPuWtYjOuZghf6V1mzUAZ1XAgmF/X1ZW+DC0/305hICdx1KpQsDW6DvRLqZyi9P2QtX4sZOJn7tbADpyAD1uoyMHsANMmiFsSAAShInsajLsNccFgJ0Tx7Wn8OQAWo6GHRCVuR/lgoWAXevJ1PRW0Z3taPkKaQFOwcuTLAQc5Sp3rXCXIEEEnzuYfBSW6hIVehaiPFt0Lqn9u7B3F6wUaFYIOB5MB3J3AN0V4dnkACo6LwDTh46jbTvwWgBYEQzg7RVPQtn9LX6x+Bpc+tbUeNgdThEbNKuAAXuqDnMc4w6gfYR+XinmHwLmp1zIGt5esy1lI/YsXyotLAfQz1XTFyXVAc6cWt1IPH7caTF8CNhLmyvA7QBSCLgjQQKQIEzcuU+ZeuU5lmWOmGG3bvEyXJ7lAEqww6n8uDOlQGXAbscvYwhYdQpARXGG9/icR55kAlDmhIlhVQH7HMuKEOBjIWD+ua7PpD0dwNbmLdbtQk1gaS+YWBEgWhccOTuAruM8m2IS/riSMziAu3Z/Y91uU1rwxYa3sCYYwIeVFYi2bQPgdAADvhAE02lj7X8sB9BR/mJud7ZVwO4iEK4K+Jr/+x8mP/lfzPzPF9zjzvZEhcKafcwJ3qI5gNx3U0siAN2Td2KOPGJv30U+bFzMHodEZkgAEoSJ4vqxy0ZsGGxCAexaC08OINhIL7sxsmxws4ALVDVnuH6sM1UXq7ozICbHbAfQAN++xkmyPoAxhwCMI0mSY1kBAkTJLAJxTP5wCcAsEvWzpZUbWee1yW2psIpABJELAecmjt0n8mxGyqnc55GpLciOPeus23siu9EYbbT+bmzaFN8Wbh8kKWBVKWrmRZGVMsFPAmHbku0kEJfzaXCXHi+v2AoAeO6/m637+Fm5Ba0CdvU9jG9bDp+lYSCy+j9Qdq71/BRe9CVz190CMCra77m7eCgVvGtIbWA6FiQACcLEPUpLzUJsqJwgYidkL1WFOt8GhjmA3I+yXCAB6N6WzEUguqP9iqy0OR7XuBF2PGKS6lk+V0h3OIDO9jFSEgfQLcozta/JhzZO5CpJ3JCOBPv8RDMIDOTuALqFkNcGv4DLAczgHO5q3mTdjmgxR65rU2vcfeWdL5/ks44vVnGq6rYDCNexp2UZl822CIQPMReyCIS9g84QcPbH39avXsaxH/8ef5g/1vtrc6IvuQPo6owg8ALQ2++jI6WDHMAOBQlAgjBxJ79nEwLmZ/oyJ89Ljgw7gUpc7iAvPmKFEoAJOYAZTnaaAcVRjeuckpJVCJh7H9k5WxScbWAkTgDywWe3A6Gh/QRgOGaL3PZ8nUJghYAFycoBLJgDmEUuocodR26x7mZ3xHZYo5qMCBfej8jx954Py/okv+0AmtvEz0B29DWC06HztO1Z9gHk11/ITDa2Lr/PD8kKeWcv5t9atwBRUcRr1VVQ5bbMT4DLAUxyzKebL+2+cEiF6goBF1I8E/lBApAgTPjcOyC7cKOm2iFgJmy8uFXMyREgcg6g/bxCXTGzooGA+ePrxe2Quat9twBkzqVbAEqC+x4gxu0PcwB9kg8Ct6wAAVKSKmD36LdserVlCy8A1Q7esIIPAbPjLdcWOe7jXMmiCIR/bqbcwShX0R3TZUT4XFfTabIvpAyIksjN1TaLQJgANBIdQDYlxCvutAgjg6zjWyGlnNRhGECWI/nsHECfdULOpgeptR4uh7HNzKnMBH+RqyFRdKYT9V4vkDXHbaGg4XMiP0gAEoSJ2/lQsxgNxUIpEgSwC14vjozOOYDMOeRbvygFGgvFuvoFzXVlygGMKSpUPtyjuYsxTMHrOglLQmJveYUTCWxPfKIPkrsIRDIdQN551Nwh4PYTZhFOACrt+DqFgDUi5quAtRwrpN2pDtkUgfAOYKac1ygnJqK6ggj3t8wEoNXoGZAcLW7i26RZF0wC3KcvRfHmeqXa3swXRUbS2zzvPf8L3PH3A6Ds2eh5O9jxHvAF7IvAHML5YS5c2+pRAPLHTLLvVrrZ214vkN1FIIUsoCHygwQgQZi4k9+1LFwgFroSzbpMIDsBKAh2NafMva4sZD/kPunrmOsMGOx1M4S7ZKfj584BNDjBy+MTE6cXsP0xDMMybSQpMQeQCUD+9KCpxXMAozHOkergDqCWNASc2za70wOyaUHCX0ikCxcCcDh+MV1BjFuetWDiG6NLogCfNec4fr/G5QAKrmNPy1IAuqv03QKwBq7G8Nz3MGnBiWHgN5E1eLo6hNc/+qv37TD3wy/5rL6a2fRiZER5ARje6ek5/G9cshBwuu3wKgD5taqCAEXt2N+tcoJGwRGESaIDmIUA5CYUWG05PDzfsJL5BauqkW/9YggConIUfl+V521JBju5MQGYaSan6jqZRuXkDZndAV+fGIAbBazHm51l5ROluAA0N0OEAMEcBac5nMfcRXm2RLh9zuazLwXsnRQhWUI6U2/HVGiui4FsZmBn5QDyAtBQHa/DHEDVSqUwIIm2A6gaLATM9jsxZ8/dsy4Tmpa6Cvj00Mvo3fM1bN75UwCnxbdB4x3AxAsoJdJo3d6dxXvI1loRCFoOoKxk7wBGuO9Ka3iXp+eonDzThCQOYJoQsFcB6G79Eu+vmvg7QRQfcgAJwsRdRZkpTJrsuXwxh5c+gMyJkzgH0F340RotwIxV83X8rEdhhn1zO36yav9tGHbLCPfkDympA2gKQMOw+wBKfocDKECE32efFFg+l9tVymZcV7ZEFd4B7NgNKzTuuGF5l4XKAcyqD6CjMXB60RLj1hsxNChckRRzAFklcbwxuC0AWW4g20cBIgzB9X3NNgTsqnrl59R+84P38HxtDdr6vWYvr/Nup5GQmhGJ7OYezyKPkoWA/X7rhBzLxQHk3t+26B5vr81dNKjZFoF4dQBdAlCWsxPqRPtBApAgTNwOYFYC0JpQwCflZ34+XwRi9QF0CcBItCXhedliOYDMncyQ8O6ewcu3BlE0nSsC8SAAzf3RdMPKd7IcQBNREBCQ7DYYrA+fux1Ge/YB5EeZqQWt8yw8TKwIXDV1zgLQdZxnU4GanQPIVbcbmiPPzf68XSFgV5NrVgUsQEhwAFUtu+ktehoH8Ht/PDi2ImQfk+4qY3ceoCzbs3SzyeFjawlwRSCykr0AjHC/X61cj8V08N+nZL936S4GvPy+AYDq+o3I1DCcKB4kAAnCxJ2zl021Gu8AsgbH2VQBiw4H0LlMJNrqflrWaFYI2Ny2TBWPLjeFL8ZQdcMuAnH9uPulxNCObC6i6fYp1udyAEWIkDgHkFWiphvXVWhiXA5VoSawtBdM/EiiZBXeeD0hu3GHu/WscgD5sGj6450XKDFDRxtXbRw1cz15B9AnJs451riUiTrZFmdAYs+6jNvuKprJXAVs4CT/+7iy13UYJq5NyAOUo7YAzKaROEt58Et+OwSsZh8CjnHvf6vc6Ok5vIBPJgDlNBXNXi+Q3SFgEoAdBxKABGHCTgisVYqaVQjYdsTsHEAPDiALiXIOoFsARmPZhbaSv44ZAoY3Aai4G8BqMvr51+HoXn9HD+l7q8dhQgiYE4Csp5lsvpau2xWPPskHUeQdQBF+yXYPWfK5phcvBKxwYrOjO4BMeImCZIWAcy2QcedVqllUE/PhvUwOZJQTKFEYDsEYNsOCqssBdFc4s1QGAQJ+OGImzm6yxYSerQB0X/BlEP2KruObgS/jib0EjOj+HyiuPEA5ZqdqRD2G0Q1uHT7JDgHnIgD5yvU22dtFo8rl/SXb/3QC0MvxZui6o5sAQAKwI0ECkCBMmMsQslqlZOMAcg2dBe8OIGvPEm+MbOY7uX4wIx6buqZ/HXPgPNi4tUxuh2sush5Dfb/Z+N9e63Fg/RPWydsdAvZzRSA1ppCOmfuj6rZ884k+iFwNmgQBAb89CoudeLJt1ZEPfL6TIqRZsAPA5tbGm8CYOYC5FoEkhFK9h5L570hGAWjwAlCHwgmwCHN8uX6akiCABUVZzz5Nt1Mmzj/pOJx55ifoYTpxmpadsHA7lpkcQE03sNMXf6/X1+yGojrftxjnmsseQ8B83rHfl58AjHJV4BHFWzicv9BJ5uhF0/SE9NImS03ymWTTZ5JoX0gAEoQJCy8FWOuJLKZwWDmAgsiFgD2MgrMa+koQjORfx1gBBCC7umezFTKJW/fJVDMUrK2M7+NntRErT0x0/YT4OBFXpbOcxrgTEC8CMZfz+SFJtgMoCSJ8jiIQNvkh97zMbHHkpHUWB1D02RNUcg0BuwVgFvlrvAOYqTFwjPs+xADI3N8sBKxyfQBFvgqY5QByIWBJFDBqn+5cq5jsBGDiKLj0KI52TEZCDqDCOVteHUCdE9t+rg9gLjmAYa4RdsSjG6pyrp+a5Pcu3Xi/TFEEAFCTuH3ZFMgQ7QsJQIIwYWGmoClcsgkDMrdPyrYIxHRtJEGEKCS3nWIer+bTv058XwKCRwGouhs/u1rkcDmPPHwOYJURF3iGIEBRwo4iEFGQLOES/9tZBcx60bkrs72cdHKFzzfMxgEsRKPubNF5AWh9prk5gO7jPJuRck4HMP3rR7jHFUFwCEZWIWxdWJirleB00zUrBGyfuqxCkSyFhVuwZswB5PrXGYJbEAIxbrZxzGMYnU87iDuA8X2J5iAAeSEf9iiG+c8+mQBU0hWBeLgY4/MyRfN7srWxGQ1NFAbuCJAAJAgT2wGMfy2yEoC67QCKVtjKiwPIBKDkOKnxxArQNoH9WPsENm83Pe7QTeK8WHt/eaqCldbtStg5fbFYk6MPoCT64eMEoCSIkCTRzhtMEQJuTweQrwJXUohxN6u2NOGwP72Fpz/yPvmhEFi5owLnAOb43rjfU7foTgcvlDM53hHu+6QIgMKFLGXd3eg5jgRnixu7at5+YSYA9awdwPg6fQYbj5j8+85m18a4HD/REBKLQByNrr2JaIUruAn47NnH4Vj2AokXcG0Z5jIne46SpQPoTQDa2xE0V3/naytxxO1vI8YJ6paoguc+/Q7N0dym2RC5QQKQIEzYScZvCsDsQsAsB1CEIGTjALJ+bvZEBzeymr8DaFgOYFyUZdq3xOILV8K85QA6t7mu0m5YXSkEIZgn15jcAl23W16IogQfV/QhCiIEQYBkzX41Q8BG8RxAfgazVwfwhn9/gZ2tMm749xfttFXJYSF9SfRDYp9pjgKQnfiDOmvXk00VMH87vQCM8m6hIDhmRLOm0LYDGP8AJOu7xASgXQTCsASgnqUANNcZYALQfB/cji4r9ojJznZMbgeQDwHHPBbkyLLTAWR9OltyKPziX7HNYyNqvuVU0hBw2kkgHkLApgAUDAN+g120xN/3L7fa7+ddC1fivrfvxuQ573vabqIwkAAkCBO7Vx5LqveOYXChXCsE7MEBZBMdBF9KB1DOcsJBMpjgC4jx1hmZtswtAA0huQPoczmAPaqrrduVvoA1eSQWa4aq61ZLCFGU4Od6BrJKVtEUCYrKQsDmSZqJkyxEebbwwkcTBGgeEvFltf0cyXToSXIAcxWALIzLip8ytXPhURw5gOlfP+rub8mPPDTdQFbkwY4qn+UAxu+3cma574oVJtazCwFrlgCM/822XnaNKmP9/xRHLq6R0BcwpuUgALn3OhAIImjuSyQHAcg7eBGPIp7P4Uz2DCVNSyAvF2OKKQB9gHVxJ5mVx40Re92fbZ6Blr5vo02+I+M6icJBApAgTFTzhOQ3Q5fZ5IFZOYCCaPW3M7JyAH0J4VSGnGV7i+SvE4fl6GXrAAqiy4mz9tc5DC4UqLBuB0U/gpYD2AqdKwIRRT98PqcDCNg/SMwJYifpoBWma8ciEJfbqCiZW2n4xNKUC1uhdMEP0XQAc3VHWapD0FxpNg2l+RYfmRzAmLu6nZ9CYb6mavWXjOOzxty5cgAFPgeQCcDs8uaY2PSbbxs7OsNRp/his7j56TiaYCSMg5NzEIAK7wCKPuviM5rlVBPAmbIS9hqC5p+f5FBW0qzHS5eEiJm+4jMMa2ykaL5qCxfu3VAVn138XV1DxnUShYMEIEGYsPwiJgCzcQCZQ+ETJEvMeHFkmKDxiRLcFbWMdL24vGIVgYghc9syLO+uvhXdEznsohcev8+uAg6IfuvkGpNboOqGNfheFCX4JTsH0Gf2BLRCwOY+65YAZPvRfrgdW/c4vGT0rrX3tylcvPwldvKVRB98Un45gOzEb1W/696OfHePt3SvryqRhLzKCLc862HHqoAFKwTs7HHIiqaEZA6gkZ0A1K2UD9Z+KX5/W9g5ejESi6dg8MeDKhgJIWBZcza69gKf4+rzBawirVgOF338BWvE46+XzH0mcpK813QV4V5+31hYXDIAyfpM4+97SzS3yTVE4eiUAvCmm26CIAiOf8OGDbMej0ajmDZtGnr27Inq6mqcffbZ2LZtm2MdmzZtwmmnnYbKykr07t0b11xzjTV/lOj66JqKxxZejtc++7t1nzUtw3RUkl0Rp8KA7YixvmyeHEBzGZ/kt/KdGKxqTskyuT0ZLPQaNAWanmHf3GPxFMn53dCFuEDziU4H0CfZgigoBe0QsNIGTTe4ELAfPq5i2C+yELC5vWzyA5gAzL41T7a4q0IVObvcy2ImsFshYInPAcztvWGhQ7/OGph7+x10T95I9/qxJKPJInz42Pzu8W1gAHBzjs0QMTcDmWG5hFk0sI5vL7vgY/OxmQPoEoCReK4aPx1HERJDwPyFWtTjZyEr8W0WDAOCKCJoCsBcXH9eAIY9iDND160pPe7nW9uXLgTs4bvIxiv6YH+moikA22J0vi01nVIAAsDIkSOxdetW69/ixYutx6688kq89NJLeP755/H+++9jy5Yt+NnPfmY9rmkaTjvtNMiyjCVLluDJJ5/EnDlzMHPmzFLsClEC3v7or/jb1ndx7coHrfmizF1geXLuGZbpYCcTnyjZRSBZOYA+R1gLAKp0JgAL5wAGffEQbSZxa7jcFFl0zU2VTAEIlwDkHUApaPVoi8mtjiIQSfChMuDnlo3ftotAnH3fWGV2riLHC6rLNXHPQ05GrG03zujxIAb71qBNLt4JjQlpHyekc31v2Fb72JhAjw6g+/1JNzknwo1JqzRDp21c+JyNo7Oq6c3vHrvAYN8vXWc5s3wI2BSAWYaALcefOYBsW2PO0H8kFt92hWuOrohIUgVsv77XPpIs15V9i4JmPqecw0Wfwv1eeRGgqhaFwTu4gpDQty9dPqiXo4TlAEoGuBBw/JmxEuXPEjadVgD6fD7U19db/3r16gUAaGpqwj/+8Q/cc889+MlPfoJDDjkEs2fPxpIlS/DRRx8BABYuXIjVq1fj6aefxqhRozBu3DjceuuteOihhxxVWUTX5butX1q3d+z5BgDnAEpxkaQIALyGw5iTJ/jssJUHAchO2n7RZzmHjArzN7wQApAJvpApALUM4tY9JzUqulqFmCFh0eUA+v12G5iA5LdcpZgShqpp1txTQfKhZ7W9bMgfFzFWDiAbBcdCwKzXWzum3Lln4ipq5hBwT+UfeLfPZuiD/lFUR8NqAyP6rfF7ubqj7NhgAjBXBzBdDmI01ggACOmGlRbgWBdzAF1tYHyuHofsO8rPkfZZObdZOoAsbcMVAo5EndW+7G9V4WdFI2EUXIT7nsY8CsCYeZyz/Q2Zn6WSZUEL4LyoC5vfs+92h3HSPe/jwXfWJiyvxFoS7nNXOqdr7u0l5zRmTv3gQ8CiGF9nRM6tbyVRODqtAFy7di369euHfffdFxdccAE2bdoEAFi2bBkURcGJJ55oLTts2DDss88+WLp0KQBg6dKlOPDAA9GnTx9rmbFjx6K5uRmrVq1K+ZqxWAzNzc2Of0Tn5NsdO6zbe3avA2CfXEKmADQEAZrHuZWGwwFkISkPDqCQOgRcocf/VrJ0NhK2zTCscE3IFGiZHEC3AIyIzh97VWRVwD7H/YGAXQUckAKQTFERVdosVw+I564FuMbP1YG4c8gcQFb9a7myOVRmZ4u7iMFL9fX2wNcAgB0+H1ojxcwBjCNJfmv8Xq4OIMv98hks3OrNmVFc3420IWBTbASN9AKQfe6sDYzVt9LcJuZO8sVHUo4h4FTzsSNRtwMY/513OIACEkfBcS1TZI8XKiwEzL5eFZIZfcgyn1FTZeviCgCiogBNlfGvzzZj7fZW3LXw64T2NrEk84LDrn1Plg9qz0r3UgUc3w++y6lkHr1RJfm3WdXIGSwWnVIAHn744ZgzZw5ef/11PPLII1i/fj2OOeYYtLS0oKGhAYFAAN26dXM8p0+fPmhoiFcYNTQ0OMQfe5w9lorbb78ddXV11r/+/fsXdseIoqEa9smrJRyvQGMiKci5WKrHHnxWCFiwnTwvV8i6+aMckPwOVwMAQqwhdZ4CUNUNSzCEAlXm9mbarviJmIXrWiXnGU2RzPCZywGsqOxl3TYMxbrqj6kRa84rEG97I3FtYFh1MnsVdwjYGmHXjjmAisuxlT2EgEVufF9jY/GaQVshYCkAScq9Cpgv5LAFoMcQsOu7kayPHCMqx8OoAcMW+Y7nWgKQFXnEYa2CbAeQCUCugMhyCbNzYNmxZYWQzReNuj532axk5Zujy4KQMAqOH/+WrKAiGRGZ5cjF11Xhz00AKknEXDS6G9uabSex1eVQy+ZzfIZh5Ru3RZymhpLEAbRmpXvYRZYXyTuAgpkDGFWTH2et0fy7HhDe6JQCcNy4cfj5z3+Ogw46CGPHjsWrr76KxsZGPPfcc+36utdffz2ampqsf9999127vh7Rfsiwf2BbI7sA2A5ghc9uZpxslmUyrFw+yWeFRb2EgJno9CcRgEFT9GQzmzUZqmYXX1SYDp2Roc8da7thhaFdJ7SYaLev4RG45Q7Y/1xIBmtrEXHM2hUlP0SuCpgJQNEa68WKQJgDyARg2l3NC3fOZsxLEQgnllrathR6k1Jih4ADdg5gluJY01Tc98LZ1t+SYQpJjwIwKqcuAtFat+OTly+DvGcDACBiOoABXbBy7niYm8TP+gVgTYth3yXWa5AfI+gzi2ByDQH7rQs2c79c1d9MEPICUBUESxgyYpzDrSXJp0uGzIokzLeu0s+iD2pKhywZyfJVI5Hdjr/3tDnfH9lscxTgXFm3A+hOi4gvH//fi09n5wAK1mcqmn0AI7L5mbq6HDQ27/SwZqIQdEoB6KZbt24YOnQovvnmG9TX10OWZTQ2NjqW2bZtG+rr6wEA9fX1CVXB7G+2TDKCwSBqa2sd/4jOSYy7wt7VxgRg/JetMmA7gIrHajyribRoCznDiwAELwCdX8eQ2Y5GzfLE5kbRbSlaGaqx7k83O5W5KZVG8p+ImCk2+HFujIVnvYonfnwvDh54MkSdhYAjjsH3kuiD32f3DPSboa+EIhBXZXZ7hoBVwZXT5SEErHDFMa3h7QXfplQwt8rn88MneWvu7Wbpyicxq+0b628JTrctE1GXQObF+QPPjcfkXYvw6H9+CcAWgH5DsJwgHiYANc056s1qcm1+NnaxFddE3BKJ2b0Ddg9OFgKO4xb+TFxprsIMWXYKxZjrQi0Wa0ImZK5IAgCqTAGoCyoas2grxLvVzLUPR3Y7RGTEJShlcz/9hj0NxV0AY0044sLHgSxmpbNZwhLsueECCwGbDqC7QryppXjfo3KnSwjA1tZWrFu3Dn379sUhhxwCv9+Pt99+23r8q6++wqZNm3DkkUcCAI488kisXLkS27fbB9qbb76J2tpajBgxoujbTxSfGNcCdXd4DwDbjasKVFojzLyGgJnY83HFHF5ysthr+nyBhHy6oGCGg7KYzJAMVTOsMF9VRZ19f5p5obYDmPwnImze7efGuTH61vbH4QNPRMAnQmQOoBqBwl3pC6IfFUF7WwKmiGEugaq7HEAx+9Y82eI+oblDgW4Mw4DCicZwpHjOhZUDKAbg95nHSZbvzZYdzvF1PsTX49kBjDkFMn+UzpLi793jQlz4tZoC0KdnEICGsw0M+9yZWNOsYiv7uPNZy2QZArZyAE0BaW5WzPW5x8wLAdVVmCHLznCp7PqeJsuxc8NcRPbNrzIdel1U0RjxHgZm4XifYaDCPCTdAjDmCrmyvoY+w26GzSaQbG+JIqZqlgMY4gSg32rJ5GG7TAEoJHEAY+a2tZq/v4xP1n2LaXM/w7bm/NtfEelJvHzvBFx99dUYP348BgwYgC1btuCPf/wjJEnC+eefj7q6OkyePBlXXXUVevTogdraWvzmN7/BkUceiSOOOAIAcPLJJ2PEiBH41a9+hTvvvBMNDQ244YYbMG3aNASDwRLvHdHe6LoBReCcm1gzVE03Q2gCKgIh+BDvkp9OJDnWyRdziAKgZQ4BG4ZhicSgLwDJlU8XYAIwTwcwvm/x25Uh27WWlQjCrTF83dCCowb3cjyHiYAQJCQL9oRFZ4guGU4BGIPGO4CSHxWh7tbfPslZBayorAiEOavM5Wo/BegWgDE5/WevaAZiXHFMOLY7zdKFhR29PikIA+y9yS4EvKvN6bSILMzusQgk6nJIVQGAYQBJ8t/aYizfTDK/K0bic8HnAJrHl+TscahaF1rJBGCWDqBLTLJny67vPPtb02MOy0RxhYplQwV/eMpJqmzdsAp/JoprK/eKP1dSEkK2addjitaAYSBoKtlIrAlRxY5ouduuxFTbAbRa4Mht2LQrjGP/+i6G961F/+r4I0EdaGMXfboAu+wtPVYOIATbATRzAJkj2dzmFIDPffwl1kar0SarmHPRjzy8CpErnVIAbt68Geeffz527dqFvfbaC0cffTQ++ugj7LVX/Mtz7733QhRFnH322YjFYhg7diwefvhh6/mSJOHll1/GpZdeiiOPPBJVVVWYOHEibrnlllLtElFEoqpm9rWL/6K1ya2IqfbpoyJYAZ/BKv28tWOwJm1IfkiiCGiZT8iabo9GC/oC8IlBh9YKivFcxGR5ONkgq3Z6fCjYjbs/hglzPsaXDS14YsKhOHGEXRilmQI5JPiRbEqobp7k/WkEoCQKgBF/PKJGrZ5nQHyGbSjUzfE3wKo/DStf0BLIYhAw2tkBNC8AGLEM4j+qaohygqA1SbPj9oIvAoEQcNznlYgrvUHMon0RYLf4YCgCAE0BuOpuRjjG3CbRXLvzNZj4VhP6ADJxpjv+l7gm4rkKQBZWtiqNzffPLQBZGoi7Mj5RAGoOAehuqZIMKwRs/l1b1RtAvO1SNm2F2Db6DHuiSzjW5Aj7xhTne85C+D5DsPMfY214fdVWAMCarc3oN9gUgNxPWbxdkObNAXRUAZvjHgVWBWwWmLkcQL8Yf1//911j5hcg8qJTCsB58+alfTwUCuGhhx7CQw89lHKZAQMG4NVXXy30phGdgLCsWTlsANCmhSGruhmOFVAVCFlJ2e5Kx2TEhRzvAJrVuxlOpLJmv2bAF4BPDFnnRcEw7BBwlqEtN5GY3fA1GKqBYBgwBAGyEsGXDfGT1Iuff+8QgEwEVAgBAKnfA7+UeLLnYYUFMU22TgaAKQArelh/11XGT3zWJBBXDmBQCgFqPLle1zSIktMtLQRMAFboOiKiaIX+UhGVFcc0i6ia+YRfKJgT6vcHYai55QCGXTltzM310sAcSGyTowoCoMnJBaDCxIbPqjB3Pjf+P5sAw9oHBczji6VKsG3zJ6kgz94BNPNvLQdQiIf13QLQfJ/clbnu9BDFdaEW8zBKkF1g+szPs64q/h1skwyEsyoCsQWgXxcB6GiJNkGVwzi8ciE+Cx+XEAKOWKJcAIvKx4/5bfhJn79iT+vB9vvNjQ6SdAnx5IzMClDRWJsbEX7zAkMQ4vex8HRLpNHxnIDIqq7br+KfiNMlcgAJIhsisoYYd+THNBkxVbdOQhWBCispO+ahkk/RdBgC5wAK3kJysmqHZgP+gFUIAZjtMsz+bu4JFdnC52qFghXWVV9r1N43n6vNC8u9q5TSp0QkywHkEc2Ta1STISu8AJTg8wWxL/wIGsAB+58Vv988qShmuNjqzci15snkzOUK83dYDlWm15HDbQiL9oGkGJlzvgoFO24kKYCAP95DUfXYeoTBNy4+YNPRdsWtxxAwcwB9bGQhTAFoJB73zG2U4EuYHw3YY8iYy8bcIr8rBMz+93HHpc/qg5hd/ziWtmEJQCHeMknW3QLQbEque3AA+b895AAqavIQcKsoIJLFZJmYJbABn1l41RRpQr1xJ1YPeAc/7v23hBAwK3KSDMGe2KOGsfn7u/Bpj13YtvdbVvTBz+UCs8p+T21grCIQET7zl4cJQOZOtrkab/tMASiK7Wj3EwBIABJlSFh2hu4iuuwQY8FApRWSyZQHBsRPGrolAAMQPY7mklXdDh37gvBzc3QDhn2SUz2ekFPBN7YNBSqtir49rfYPr/uczU6OlVylbjJ8GQSghPh7EXcAmUthv9hzFyzBB+cvRWVFNwBcGxgzFMjCdBW8AIyld+ZyhYmQkM5EaPok/La2XQ7RpaI4SeuGrltNf/2+oFVNnW14nAnAQ3YNw9K207N3AE3xwnLOVAGAJie0JNE1BRGV9bvzJxWAqlX8w0LAzAE0L6aYA8jaJnEuI7tw0oXMF0qGEsPHb12Plm0r7SIQH3MQ4xdz7s+dOYDuELCqOY9Ddx9JdzFJMuwqWVMAVvWNP1cU0BL27ijHLAdQsPo5tsVa8X5tvDXRxz13JDiALATMC8DFX29BgxJ/ToskQmaRDd3+zATdbE8lCDD09McKy3H0QYTfDLWLpgBkIelwzFlMI4mmKCYB2O50yhAwQeRDOBK2ihgAIGYo8Yo38++QP2Q5gO5eZ8lQrPAxEPAFrAbH7rYibmKc6PRJfvi5ObpBA/EJD5r3thypiMbsE1HQX2mFt/e0tYFdA4ZdY5nYybHaX4l0EehAphCw6c7EDNUKU/GTIIK+kONXyKoCtkLArEGu3ZvRy4SOXGACMGC5IenzP1vM9kEM1ch/ZJ8XNE6g+HxB+MwLBFWIhzAFj05g2HS0VC0uoHySs+deJti82qAOtElmr0hNRtTVfy4c3oGolevmh4BEYS0LZlGU7nIAfU43XbVybW0HkH1vHMJViQCClBCOfum1S/GHPZ/i5PWvQDMPvKCZe6sLAmKymlDty0SMBrcAdIWAEwSghxCw+VmyEHB1dR+IhgFdENAW3gZgZMZ1AEBEZg4r4DP8AGJodbV0ScgBtESjaOYu6tjd1oqKgA6zIxBaBBWAYDqAZoGOYadf6JoCSUwdJZBZkQsku8uB6AwBu1vPwNeGqoovIQgHZd5xIi/IASTKjmhrszUrEwCihuoIAQcDFdwEC28hYLufX8DKScok22TNPtX6xKBDAPrN+wA4Wo3kAl+tKfn8lrsZF4BxWqKuk5spaCv91UiHP0m+Fw8Lh8u6yuU7pXZGEx1AszVP0N4OL65sLrBm10Et/g5lcgBbw04BqAjFGQXH92/0SwH4/SHuMe/bEDFz8WJqyFxXdhNFmBAPGcwBFKArUUQizqT+trYdiJnTbHyCs90Rm0BhCAI0TbYcQMk8Sv0+c5sEZwiYP+4ClgMYf0xu24lJsw/BlFmjoLgKDGbtWgYAWBgwrBzdoGS73BE5lvC5qywE7MpdVN19Ad1V5F7yh83PizmAor8CNeaEkbZo6qlUbhxunum674zucC3j6lNo9SAUIepsTq+MGLefTWaVux+20y/o9m33e+CGTTESIVkjC3dX7saQ6nesEHDE1U9x9V5rIQ6cgx9UP5t23UT+kAAkyo6W8E6rihUAYtAcbpzfF7JEkuylm79mO4A+KQCRhW4zTGbgw86SFECAm0DiNwT4zRNTpmKSjNtnugOiYUAURMvdbG6zhaF7TBQLAVe5BGCNa/wVG12VCkmMi4sYVKhWy4vUy4uuUCBzfKrM4hUgc3++XNCUmD0STY9/+nKaRtkA0OYSOkUTgJwzGQqGEOA+A69tiwBbACoaE4DZ5dJZIWAuP0xWwoi6GiC3RXYiagnAICTO8q3ijidFCdsC0CwYCPpYfmN8Gc1y2rkm4mwZ81hZ8fUrWBaU8HFQwof/+7djW6phu1dt5jzrioDdGqktFk4s9jBDv6pLAGoJIWDngR2OZT5OmUDiw+I15tsfiXrvKxnlQsB+sy3QRtnZ5ifmFoTmb5sICaIaF3WS1IaIaO9ni2Q6sYYt+gzdFt9qhkb5rJrfxwnAjRUyGvovRG9pGQzDQFRN7pRu6vZJ2nUT+UMCkCg7WtucP6wRQYes6pYD5PeFrGH0fOFCKhTN4Jw8P4J+JtzS4xSAfgT89kktADEh/JUrMS48xP/fHOEdQJe7waaiBJ3Tbmpd2iBTEQgTgLKhW+LEl6Z60O0AshN/KFBlyQbF43i+bGBjsQBAMnOclAwj+MKuti8xDzlohUDlhGnIX4kAlx/pnlaRjrAZOpb1+PODvtQXHIamofH7ZQCX88VCo7wAjMTaEIk5hXE4stuakhGQKuDjRh6GuENbUdoskcWaqQd8dj6tYRjWd6oiwKVLsO+bKQ7/t3Gl9diXW//n2BaZ8+W/88cPrkquNVI01prwuTOR5p41rLlCxTHzO1Ojxd+jiIdRgqzhOS8Aq1n0Qd6T9DnJ4MO5fjNysN6VkxoLO6dfxaz8QwmSmQYgSGFrzCOPH7boE8ALwAy9Mtn+CT4ERGe0oD64CopmIJpCRKa7UCQKAwlAouxoc+UoxWAgGotZP+8+PxcC9nBCVV0OIHMtMs1m5UPAkhRCIGA7gAGI8LtObLkS5UY+AfYPawtXBex2AK3QK9erDwBqXGnDvgw5gD4xvg8yNEu4+NLsDjsRaroKTTesfa8IVFrbLSuFz7XjKzZ9hhl6zyAAI+5JEKIOI0kFbKHhcwBDwaAlgADvs6sBIGIKFsUUgCFzPclSDmYtuBDHvDUJc1++2LqPOaQBLicsGgsj4krqD0cbETNdNJ8YcjRxDnHtRWQ5bIVZLQcwwL5L8e8LOy5DnABkRTDssR1tttO1M7zVsS2tSQqqKgLduO1vSwz1slxJV1KH5qoWltl3hjl4rlzV11ZuxcJVzrAuy3n0cWMgK0zxq6qZR8kx7IpeEX7zO7dHcp7eYzGnA2jl5xkSgqLp9EsRRMTEY5itE4indbBCskhkD1pbUs/AVjkB6HflCvr9jYgoGmIpBKDfMIryfSpnSAASZUc46ryyjorxUC/rleeXKqycHC+NoGVNdzTmZU5epoCgrOqQrTYwlQjyAlCQrDCXO7SULaxCkA1xZ/vWxlXTtkQV68dW1ex8yOqQPa4NAOoE54+4L1OVsI8JQCMh4T0Z/Cg4mcvLDAUr7XYjHptzZ4NsNu0VDcOaiZutAIyKekKrjfaA5W4JhoFQwJkDqGTjALLeb3oVJFFA0JyB7XYAm6MKHm9cAQD4y55l3GvFP88ARCuXLyq3WXN/GU2RJst5izuA3BQPXbA+10iszZoEIpl5gpV+Ju7ijYOZBAsFbdeTtQhiFwthxX79Rtnp9rclcTcrgjXws+2PhaG4q32NVALQGR2IsTZS3PxrxrbmKC6d+xl+/c9lkLljREviAFaY+y5n0VeShXN9EOEXq5IuoyjOnFWrRYvgwyH9fwAAUCUZbUmqbwOiPUNcEgPW7OAb3vg1jvu/k/G/L5L35lVMMe2Dz7owtlcUQUzRUl5k+2A3iybaBxKARNkRkeNX1iEz/ygiADGuEs0XqLIa0cYyFAIA8RCw3Z8sgGCAOXfpqzFlRbXCzoFAFfp0s0ej+SEh4HOe2HJFVp3Vt+xL3xa1T1CKZljiJaraTktlsNrRtqVWcgq+kD/5yYYhSfF9kKFDtXqepV7ex9wPQ0ZM1azK3Mqg3ZrHPamhELC5rX7DngyhZJjBHDWrPHuYDWujIhyzV9uLSJSN/YqP2/P7fLY49ugAGrpuNbGO6NUI+kQEzeNNcR1vTy5ejTYx8VRh56/5rDYiUTmClqjTuWoKN1rtRAK+KkcTZ8kQLDERjrXZgsH8DEIB1gw9PjuWHQ9VQS4H0HLK43+HuZyyPbpTRLUl+U4GA9W2AJTbrMbrTNQyRzBBABpuAegsIopwx+k32+3fl8aw/TzN2l/7/a00J7uoWfSVZN8JERJC/u5Jl1EU54WvzH1+/bvHG1DHJBnRZAJQ6mbd9ok11sXkx0IUMVHAo8vuTfqalqMr+iG6Lh4NMYqookM2Q+kBV35xRBDQEitOXm25QgKQKDuipgCs0+zqxXDYdgoCgSr4zK+G7MFtUjTdGiPl84UQCjhPSKmQ5Tarn1vAX4V9eva0HpMg2U5inu2wWLUmO+2yYe4RVzEFCwNHZM3a9spgpXWCBoAaX43jOcGgs0jEDStskQU7ZyqdA8hCf5rLAawIVFknnZicur2G6poq4JU2s1diwDCsEKXbCXIT0+Lb0c0sGgmLgmP0VnvRFok7jwHDQEASIUm2i+aez5sKRW61jr2oXo2AT0TIdKDdx9v3m5c5/paj8de3BYRkifOYHEaLq7FvS7TFcgCD/iqrcTMQz1ljKQHhaNiaQ8zmYrPemJoANEdVa5sreQeQOZcCAMNAxLDfg91cHpwityGWRNxUhGqsbYjF2iyhV20KEiZKWVunoHk/7wAqSsTuzaiZzc85AbirzV62MWIfV+6QNwBUmqFSVfde7BSz0iskBP09HY8xISurjY77Zct99KFf98EAgLUVyR23UMCeFe6TahPSOFLlKbPpKJLgR12F82JRleR4CNh8H2tdAjAmCtjd5AxbE4WFBCBRdsimQ1Cj2/lskfD3AOI/lj7RD7+Z1+QlB1BRdbuHXKDKCqUpGRql8g2aA4FqBDgxFRT9CJruWr7XwCzXhwk/1tXf3eOQFYJEZNtpCfgrEeJ2oY7LlwKAYMApCN34A/F9isHgwl2pBSBrFqvqCmKqDtlySKtt4ZpCAM5/7Tf40fyj8eKbV6bdpmSEY7wDyByY9GIuarb5qDXiIkURBDS1Nad7SkEIm+FqnwH4JQE+Uciqah0AwhE7HBg2HcCQ+VnJLgdQiHzl+Hv3nrUA7F6NkiDZAkqNojXqdK7a5FZErNy9OkfvSAm2AIzIYavQQjLDxKwQShXizhm7IKgK2Q4guwiRBQG6EkOE68e4S7Q/w3CbsyqWUVdTz21/xBJ8leZxr7oEYDVzBrl+hjEu79FnVlW3cU7k7lZ7mxrDnADUEwVghVX9793ptidu+FAR2svx2D4yS6twfi6WgBcCOHD4z1Gnpf6tqqqot24H/DWOXp6AXVHuhr13fjGAfXo4nUlZUhFVNMimk1qtJcqRXY3fp9wmIn9IABJlh6zFfwgrjYCdfxSNV8gFDUAQBCsnJ6rJ0HQDH3y9I2V4L6ZxAtBfhVDQvtJV07QSiUTtk4Y/UIWKEDcbN+iH33Jk8rMArRAwmx9r7psA57a1MgGo2A6g31eBKu5nomel8+QSzNAnMOCzT87MMfGl+dlhoT/VUBCJ2a1ZeAEYTTFi668N70ARBDzw3cK025SMcCS+zrioMht5pzipMdjIsGrB/rybm7elWjwrGnesxgfv/RF6EkePCXc/O1ZFwZ5d7bFAJmIKwIBhQEMg7gCaQsp9waErmx1/79qzHoD9/kjwWUVTshJFm0ugtylhSwBWVvR0zI/2QbTKiiKy7QCyCTM+ibV4EbC7Tba+CxXcd4zlzioQoCgRRDhhtkcSETND0q3h5AJwnz77WO64rEQsoRcyL5TYhQALjVeadj8/GYQXgFDj29PG9QHcw4m+PVwIWLdCwLYArGKpH4Z3AWhV9AoSqiptseYzDNTGzDQM3fm5sMIcv1gBX6ASBwvOfF+e2m4HYVAUqNR1+Cp/aIX8GY0p8mWZmyqJftRW9nI8FpE0UwAywZ3YUWBP09aE+4jCQQKQKDtkPX4CDQoBVLCmq7H4yYGFGVkumqzJmPvxRkyY9QlmPPe/xJUBaI4oVjFHMFCDCs7JS9cmgYUdBdN15KuANUOznEQ2JSFXWNGALQDj+yYKzhwm1gw6omjxua6IO4C1on1y6lVd73hO0NUmxk3AdAhjAl/xmC4EbI4jM1SnQ+qv5PLMEkNjUUVDzMxT2yll/7PGXEW/IVjTS9yzXRkffbsLcz/eiJgpAENChRUWbG5NLjKy5U+vXYJpG1/ArJcmJm6r5VaafQtFu7djqopKN2Gzh2GF+bygT0JlKP5Zya7PRzGcVfO7mr8DYBdHSIItAGNKBGFXakFEabMKC6oqeyLg4+b4GpL1uUZirVYPQnYh4OMcwJ0tdg5biHOeayrYRQYQi0YRcbXjadgWL2BpMxt317icrtrqbtY2yGrEEi0VBstHjf9t9aRkeao6LwDjIjOoG9D1uIMX5i7+mriwb1M4MQTs5wRgTTC+b4qQOf+YoVh9Fv2oqv6BvW+aAcl0JFXDeWxErc8vvr0DKvdOuf6aqjp8teFGtK29Hn37DEkQgLtNcez+nWLvXdAXQp8eQx2PRUTD/K2JvwfVRiXcNLUV5oKKSA4JQKLsYAIwJAURNH+v2swmqcybsASgruDBd74BALyyMvnVaHNr2E4AD1ShImT/kLkHxvNEzFypgOnk8AzoMwoVZkjOEISsGvy6YQIwYH7d2b6JovOqvcXMAWyNyJaj6Q9UOXL2+nT/geM5mULAAVMgGoIAzcxpSjYLlsEqRDVDRZSrJvX77e1I1gh62QZnhWMkvDthmXSwnm0+Q7Aa1qaawXzeYx/hDy9+gWbTiQtIIVSZJ74Fn63CUbe/jW+2e6/gTMbrRtxRerJpdcJjrK8jez9Ewe7tGJU9OoCxRgC2AKwJ+VAZin9Wsihg67fvwNDiJ29ZcO5Lo+mkKVb+ms8K68tqFBGXCP1mzy7Luauq6m31G2TPDTgEYPw1WaEIa/GiCwL2NNviuqLCznOrDLBcWQGRSBhRVxubr79bBABoM13Pag3oac7FrTBTNNh7KSsRqwq6wmx+zAQhcwCrBOYQx78/u9tkPPPRGgBxR1UU4t/bVj2Gu974Cg1NUTRzk3YaI1zuoPke8mHxbuxzEBSoWry10D0Lv8ITi75FKqx8PsGP6mrbpZcMAdDNtkYuR5FN/PCZhVr7dd8v5fq7VXdDzKhCq94d/bqFrIsPRrMo4PtdjTj8z2/jr298ae8fey99IfTf+3AcZATwA9NBbRUFRBUdMfP9rRJ7wE2Lq2crUVhIABJlh2LmCFVKIQTNc0WbmSDNTkZ+MzAV02Vsb7FPqkqSPJmWcLPVQiYQqEVVyHbylDRJ+VYoj7vvvkOvxwV9j8Xk4+9AqMJ2EpUUYU8vsIkFLMxkO4AKasWdOLh6CQA7BNwasffH76905Oz1qO3rWHcomDpsBAAhro2Maoag0oWA2YlfhYpwlBeAlVbuYrJZwJsa1jv+3rJ1WcIy6WAOoA+C1a/MXfUJwNHCI2K6LkGxwupn903DFmxpiuL6F1YmPNcrSpoiFwCIKbZYBeIXDywEHE0xJm9XawyXzV2GD7+Jn1DDzLEy11ET8qOywnZzT170Wzz1SrznX0R0Cu7dppBSzZYtPsFvh4C1mKP4AQAUn/13t9o+qPDbr+ODz9qGsNxsO4CmIApxUzr2NG0CEK8Wlfim6eaycQEYQdgUavtG4+tds+1zAECb2f4paIjwbx2HnqqOCRWj46/HQuhazMqBDLFcUHObZPOwrbaOj/j35amlG/D6irg4CxhAQIpvc7Mm48F3v8Flc5ehOcKHgO3bqhmuruRapHSr7BZ/TFTRGFHw5upteOCdb3DbK2uwdlvyCwvVCiX7UVMRsPL5RrRVQNfNZuyCu3G1Kbal+O/VsL1HJ123aBjo083+HKqD/qQXcf9450Nsb4nhoXfXcftnhtODIfj8IcydtAzPnf1a/PVFAeFIo1UgVB3YN2Gd4Vh2F3JEdpAAJMqC77etgG6esBQz963KZ4uKqGa6cabYYaHIiBr/ga6TtiIghPHd7kT3qbmt0bodDNYgGPBbuYVt0dTCLcq1HmGcMPKX+N3JDyEgBVDJuWtyHgKQzetkBRZ+Mf6/ICgY1v8efNt/AQ6vm4ewmePY0mJfdVdU9HRU+PFjswTDgI/rQZeMUKDaGuGmGKbIEtIJQLsAg1X7+gwDoihZzmWyMGfjHmehwrbGdQnLpCPG+qgZ9gQWJYkDuK05isOrX8aY2uehsFFivipUmMdRUIp/Tq2x3KuBd+362rqdzIOMugQgAGtyTao5yXc/NxvGjum4dk68X1vEFIBs6pdfFFBd6RTzd+35DFFFQ0SKC5ZKs93NTnO+LnOv/FIAAfOziSoRRMzQeHdTLIfN54d0HT/at59juoxP8FkFVxG51dFOCQCCXCPy5tZ46DlkGADnmDMBqAoCIpFWhM1wc2047oStbt0IAGg1J7cEdBFrW3+CDWvvwJSzn4y/ntX3M2o5fSGBCT0dum5YaR6sFRITXS989j38ot1rMxSMO1lRc6LGZ5saobRtxo/3+R1Oqb8NjVxFsGJmXFZy01xqKuLFErKooyWqYtlGO/T9/tfJq2JZHp1PDKAq6MOIzUfjuEY/vth5PmCGpGOu7E4mAH1S/EJz0A+Ost9TriLXbwB7VQfRqzr+fvxwQDcrj9ixvsh31m2rp6h5BDOXFgCqqvpYlcltLd9bjm1tqC8GbBuN/Zp644Bw/LXalMak+0sUBhKARJfnuYW/xSmvX4C7Xvw5APtHtyZQjYDp3ISN+Ek1aIoTyfzxl7UYDq55DfrQ+3Fw/79g/c5Ed6Y1YieAB3wV8Z5q7AcukrqbP3NyAkbyx2uqquwWDmlCyZnQXAIwYDobfimMNWapo9z9C4RZCNgMn0qGAb8v5MgJC3KOHiuYSUf36pC1f7KZg+TncgrdsAIBFbYAZG1o7LzMRJHT3Op0ALebbpFXIgorAhG52bKJ8mvttx9hdf/FWLH3MqyvNC8kArUIsfC66ZYFfLn/tO40q2yBeGjNPd2D9XzjXRgrBJyibdE65UEs7t6K/fr+AwDQZhYgBcwWNj8c0B1VoVpLrFuvH1XQ7IsLhXol/tnsMYsqWH6XXwxYF1IRNWbN/a01qzpbzOdX6vH3parCrgYNiiG74l5psxxAVogj+PwImWHacMQu1OLhw6e7m3ZYrV6a20YAAFab7XrazEINNusZEBDyx2/zbZ+YAKz2sVw8DbJmV6TXmLm6GjTougFV0+ETzUp7XUB1RVx4tokGRHN/qtQX8FkV8GH3VkRb7BApcxGrOQFYbRaDxUQdzREFuxp34IgBv8dR+/wem7Y5C3Ks9XDVtj2qAlgYPgMvbb0VG5T9URGIf2djgrOoKWrup98f38/Kuv7oYzZeHhq28zQDhoG6Sj8WXnks3p7xY/Stq4DPSPwOb2+0v3NrtraYr2mKuwr7d0OUfNYM6HBkq1Ug1LNuL3yx+xdYvuUqVAvx72BEyS+VgkgPCUCiy/Po5rcAAP9sjZ9YZfOHsCZUY50MImbLhaB5KpXMH6CYLqOq21IAwJdVMtZvTczDabNy+QwIgoCAJFqh5dY0felkUwD6U7RFqQkFLHewuS33H0JWfRsww6sB8+Sq++1tU0QVYTl+omYzbkOmwLvqR9fCZxj4Re0wVITsk7eWXvsBAHpW21MDVDP0zie8u2ECUIOGqFWYEX+MCUAlSXPu1qhzHNXW5tTjqZIRMVurBOFDwMfauiQq8xXrXrVus+bINaE6hMx8MeYEtUSTV0V6YUfjBsffja6/mQD0GbwAZPmRyQXg6lD88c+r48d+m+wUQ1OOGYRQwGeF/hk7d2/FLil+Xzc9/tk3m9WtTLwEpAACZspEWIsiarb1qFTj9+0yxXC1uY3VXP5eUKy20i2iathyAPlKYTYvOKruMP92bmNIsl3oLbtt53d99HAA8Urg1ubv0WS6nj6z/dNPhvW2lmUCUFFjttNntjyKCQbC0ahVkd7dzNHTRB0tMRUDpTexoX/8Nyaki6ipGw4AaPSJqBl2PY6s/T/IsPOHtbbl8dfSdChmm5pqrqq5yqyWjYhxAa41PotVlTpWVulo3v53JIMVLAV8IezdzdmsvdYU3O5Z1Ux4BQO2OBsUnogfbhuCA7v/3H5vDKAm6EOPqgD22yvuFvqSfIcj8hc4ZMAfcFTPf6ChOf49YCKzW7WzArjG/AzbwtsQMQ/juqqe+Pe0MXjg/NGoM1tg7Qo34tlPNmHVltQX0kTukAAkujaGgd1c89c9jRusH91uFbWQWPjJLIgImeFRSWSVcyrCPltwNO1OzC1TFNZEOP63IAjW7XQOoGIVZyRXUiG/7SQ2tu1JuowXdPOEzIRf0AyzNga4dhk+HWE5fkLnBSAAHDHiPCz65Uf4w5nPIcQJQC/tafaqDlrvhSKwthOpBWBAijsPGjQu1y3+mM8UCrKe6ACGFWf17bZIdsnjbHqE3wggZDoisSQO4M62RAemNtgNIbMwQDQF4J427xWcbna0OF9jd5PT3YxqbOyX/T7aPRITUxQ0lyiMKSrC5jErGT4M7VONoE9CMIlruWn9m2g1q6prxf4AgGaziIrlboX8VXYIWIsiYgrDCt2ZHtDLPO56dR9k3efzBeE3s2BjWsSqtK3gUgvYcRjTGgEAQddpSxIlqwp7h1mhHNQNDKwfiFozF27LtuVoNJ16SQ/g+alH4v7zRtnbwRxALWoVQNVVxEVLTDDQ2Gp///YyBZoqaGgKK2ju/pL1WEDzo2ePQdb26IKAcM9PEeUKaTQ1/vm2xVSopihjlb8AUM0EoBCvGG7TbUe4QUwsCgIANsm80l+DqqAP3SrtzOJetXFHMioajlZWUfP7263aLr7406TLMf6EB3DO4YdZ94X0RKffZzXvsfmi17f4ulLDyt5rsbOpBVFFQ9T8qHrVONtHVZm/u62RHYgwZ7WqN0b174YzDu6HSrOBfFgP4/oXVuL1L5wzlInCQAKQ6NI071lvdegHgDXr34Ns/uh2r+4JyTCdCzNfJ8gEoOkqyIaKPT5bCDS1fZHwGpqaGMoNmqHltmgaAchCsym+hoIggDXm39OaezUcG1kVZIn1psO1has+aZZEqzVIzHSHgpzTUh2ohiAIEJKMBEtHz2rbxZRNARgQE08ejKDV982A7CpUYBXCip4orsJ6IwC7qnOnnJ1jEFGZGxtERTAuciNiogPYqiZ+Dt3r+iFoXjAIUvwzbYwo0PTE53thu6v1xZ7m7xx/xxQ2UcX+LFjPOvd8YgBo2L7K8ffWHevRZuaUipofJ4+It/ZJFs7/ZvvHAOKCqlsgXgDUbFa/Rs3vUUWgFn7zs4lqMqKmG9VD6u1Y117mSX3g3oOt+/atHmA13o5pdv5ddcjOE2SfvyHGRbpbAMb3P77MHrOfZ6Vu4LcnDEEPNb7s1p1fotl0ef2owGEDe6AmxM0kZvmlmmxV9PcwWx7FRAONLfH1CoaBvWrilfCypGHT7jC+99vvm2RIOPAH3VDPFQs1+gxEfbYI1xF3MltjKhTzGKvmBGCl2WvTEATsCjcjLNif6TdBBXuaE4/BKBOAwW4A4HABB/WJb29ENKx2NJpqj3zrUWt/Tr1rQzjnkB+ge43d7iloJL7fQcEW6H1NUcn/zu7c8SmaI4qVj9nj/7d333FSlff+wD+nTO/bO7v03gUBFQvBgp1YEA1RY24Uo4TYotd2Uyy58Wc0XkjM1SRXY8HeFUFBDGVpAtKWtsD2PrPT55zn98dzpu3MrktdzHzfr9e+dnfmzMwzz5w553u+T3Mk7wtWLYD0BmqhRgNRWzxLaNFFs6z8ux7tf0iOLwoAyb+1uvqNSf8faNyJgHbQzbblxbIPHi2ZEs0A6rQJjoNCGK0JmRFvOLVpUVG0/oMJmbxYn6geBm9EB2foexgUET2xe45wWpMoxhgi0Y7m2uAGo/bb3yWYU718IEV0XVxjDyt29JZZL8eyUxFtxIFB6j4ANBujqyAo8MamKuHl1MXW6E1tXvUJvMz9gvyDbFZ6v4wWAPi0gSV60QiLSevEn+btu1lqU3x+TimsEj+Bb86uxWn9HkC+tC9p5OeRaPB3mXfPk7zPRaf1ic6VBwB6rQnal6bP1L7a5IuWQ/VbYpMUC6oe+Y74yXxsl66m1Z18CqQsVYDNzNeL7dT6dUUzpBajE4ZoFk8NxTr1l7qGJD1XPwsPKkwGHea0j8fVTbm4fOZ90GujagORQGwErt2S0NdUO00pkjZ9U5rsUzQAdId53ZmZgEkVWbCE+XNXt+6JNV3rhNT55qLdErwhTyyQKc3lo1L9goAWbUJii8pgs8QzalX1TUmLoMn+Aowvc8HaNAlm7WKkVRbRrE8Y+Svwi5NGT7y/oSkhADSZc2J9f1s8jfDI8UFPQVHAivWvpJTfr9W5Tdt3kwLAAp659YlCLAB0J2SZC3P6pTyfxZof+zvdUuQmMd5knRdK/Txa2zahqaMt1mxu7TIJdHQkdafWrC8wBmdCltCutTREjxkUAJ4YFACSf2vfVG9J+r+moxpeLdizmfOh1wZ7eLRmruh0DDZtepNafXIzoEdJDcQi2jQr+jQBoC/Yfd+96PQs+h76xEWvvt1HGQAGIyoUrXnbrvWrMetTT4AAEA4dAAAEwjzjYET35ToSsWBYis8J1h27tl5oBCzWfzJajugasukygB5tigtHiJ84WnFkTbCB6KTOkhkWCz9Z+UQxNnI8qkNIHYFckFOOLEP8hLnTrGBw7uto9R1dM3BDl+xlvTt5/snoqg/RrBsA6KMZuHDqBUdN657k52upgjc6kEbVo8Ae/zxGF/4BUxuLMbqTn9T3q3y/c6o6OG18omC3dgEVvZCyGJ2x/qVBFo71++pfOCLpdUcXx0eZLrztBSy4/VO47BaYtKyvTwkiqD2nK6FZMtovN6h1xTBLqStGmLRTmUfl+66JibAZdTAq/ELukLsm9p71YurqNWYtO+5ReHZNYAwDS0YB4PMiHmjkI4nNDLFBHn6R4YvNK2MB4xktLmxqmw2TXsIa91Vo2fU7OLUm6JaEi8ig5MPqvS041OpDSHu/SaPr9dbYIImapsNo0fHnKAnz27bWrkopv0+MBs583y1KCAAHFpYB4F02Wtz882x38wDQoqrIc7rQVeKqRIKUeiVkTlgBSA6mzt/X5tuDr7bHR+abu6wgZNNWO+lQohOSM+TY4mXOsvJ+ojssEZzj+l+I7Z+nvAY5dhQAkqMWCnTgly+dhXv/eS5CafoenQqqW7vMD+etR2d0mghrPoxScodpq3Zgcpn5QbGzy6oSHUKa0bhqtPkwvm10rj1/D6N3GfjJ2iJ2f3Vr1PrKeHpoSu6JOxCOXUXbtY7mDlPqARsAIhGeaQpoZTYJ6TN1N1gHAQDm2If1qgzRwLhTO0mZZVO327rM/MQSERjatf6TJiHad5E/LsBSBzq4Ja0zvcCzNi0iO6LVU/xaM7lRtsBljwdzfl9yc1urlDq9S5YtBwMLBiXd5jF0HHU/wDqtj11JiJe/ocsattH1qQ0JgZBem8I8oCTsb9r7r3cnj4hu8hyCT8siMtWAfHt8/7vtonNx4Yz/hRR2AgB2ax0wHYIZuVk8kPCJIsIhXyzQs5mzY/1KAywc69Sfa8+LTbgsMoap434Wex2jToo1wUb7v3Wq/ljza7Ytvo+atAskt8z346w0yw9GR2F3QssSat8bA3ggURdogTfaFUJOXb3GpjVPd2p99awqg9MWn/Nybx2fmsfCRNisvDmzUxTQ0cGb1/uFgD34NW48dwoA4OfnDkQEMrLDqRdRXjmMOc+vwZp9rbE+cubE+TRFERZt121o3I4O7Rg0Wtu39/mTj2kA4Is1o/Ky3XJWf1j0Ek7vnwWXPd6c29DKv+NN7TwAtCq8m0ZXiV098uTU41Oxa0Lsb3+wNOX+tnAD9tXz1zCoqdNFObTP0K/jx06zCuTa4q9TmhOv+/UFVdha/27Ka5BjRwEgOWpfrX4Snylt+CjchM8q/19fFwc1NWuxduPzYGo8a9esTR0R7Qx+ONIaa5awWQthlJJPBnZt9Y2sLqPWokvGtUipzXqKwrMO1oSASdb6FgbTrFoRe5w29Yy1h4yYHtGmvdS+Xb3RGYjERxpqB91sa3J/nCxtfreQwptjwlrzqbGbvnq3XvAX/Hn8vbjv8ld7VYboCNk2LQti7OH9Osz8hO0XGTq0qUpMWnARbRbydhkEEg6H0SJrQb19En8vggC3v/dZ00C0mVxvQ7YjNz5PWUIAGA55YyNiEwmCgFH9kifRrTEoaPYc+UWRqkRQpwXKOX6+bzYFkwcARefZi3aUBwCdtpxXUPFDiYTwy39MxdUvjkZTwxY0+ZMDyGZvHTq1ZcoU1YRSVzwjbDHIuHxcMfTgAUl0VLBDtqMgu19smpgO98FY/y6nLQcG7SLGp4Zio6PL8gfgtrwpyItE8HTxhdDp0wf+WWatb6EQiDW7mxIuUkxadq5B62uXb3KmPIdZu+Dy6HiQZ9K+N0aZZy0bVS+82lQpJkPq43O0ORA7tcdbVEBnsMbm82zz8cDJzCRYtaZsRRBgNfLMYB5MWLpwOhbM4MudLZgxGF/cdTaK5NRgtVXm08O8Urkn3kfOkvydjL4fIcKb722Kiv65MwAAe0UvwuH4lC5unzc29U1ZHu/vV+w0YcU95+CFH58GUdLBoh0Tdx7mwWOtFghaVBFWQ/rv+fVGHvBfUnZeyn2zz7sdw2rHo+DAFVDU1AvKTqkTG/Yf0Oos9UIsutpJnV7rj82Sy1CcnbxsXKmtKG0ZybGhAJActa318RGx67XllvpKyFOPH316E36y9Rl8sPKR2O2t2uCAEj8/+VRrWQSRMZhNWTDrkw9eVm3y5Txn8pq3I1R+kmyWgEjCXGu+UAQMPGtgT1zjNLqSSDd90cKKCibyE3m0OSQdA7T+emma9nrDkxgAahPw5jiSD6YjRP6e/aydl03VMpNS+sykzZKDqaOuh9hD38VEViE54DP18H5tFp5980kMQa3PllkrR47WLOTvMqHt4YaqWFCfWzQtFuw3te5Gb3m1TvQWYzacFiNM2kmrM2EpquraLWCCAJkxlGm7wEgfP1FX9DsHoxUpNmedXxTR1Jjc/aA3DhxYjqAoQGQMip+fgFuV5M8+2lxtTciERTPZfjWAdd/+E58xD3ZIwDtrfo8WbZWb6OoQTaFWtGhZRBVZSSNGo2Qx+QLIpc9GntMKm3YhVN+8O1bn+VlFMGoBYLMQHbnNUJRfgasv+V8su2E9zvnB77t9z/3yeGarSafEAk67Pb7kYE7CGtkAkJ0mg23RsqFNWnOpVVuOzWLmy5vVCxG0a4NWdHJOyuOztNU3WrSMp1kVAUGAObpWuMpXPzELOpgtebELBGbko1PzuxxHJFFARY4FRaZ402e+ljxuliXkCk3Qy+0AAIOqwupI7ofn0vZ51cQDtVxFREX5BZAZQ5ss4uY/XoaaljYEwgrWVcWnvinJTag3qwFmPT8OObRBac1tPADccHC/9j6lbufyvHv22/j0nD/j0nMeS60vix4P3vAM5px3Iy6bODb++trrtOsisMr8u+NI05Wk0M6PQdGuNw6WfKwpyB+d9H+JIzXLSI4dBYDkqG3zx4fmf+NPv07uybJ128to1A4m71d/Gru9XZvfzxziJ9PowAerNrWBxdilb4o291dR3sCk24fbB0JmDIogoLEpPqqyviMAUZv815kQ2MixzF36peB8QQVMG+Fm63KCS2TQ+ij6j3BQQ1RiAGjR+uFkO5IXfR/l4FfbAbETwYgCRWuaztKnNpUdDacueb3g6BrH6ditPBvkFUWoEo+yrFqTcY7WvOXvMp/Zt/v5Ul9ORUVZbjZcWkazqbUKvaGqDO1aHeU4KuAw6WKjr1vc8ZUX9h7+BgCQHQEuK7oHEzxGzB0+HwAgSBL+dt1X+PrKT9FPi0+bWip79fpRu3a/j9lfLQQA9AsK8IX559XKkpuSA1r/RmvCihrRCxe/GsT66mWx279u244mrYtCqZ/vS+1qJ1qiU7UYCtMGADo5ecm/AmsJcm0GWLWq31MXH1iS7yqA08Q/m0M6voFDYZCiTdQ97N8AMLyU9xWMBgNGlUGfMCgix5jcRy3LlPydBQCnllWONpdaZScvh2skAKBNEtCsZaCzs4anPN6mrTji1zJp0SZklxbQBPW8O4JdMkKUdCjU9o/9Zv5dGZxVgXQGZZfH/h6ps8fWXs7TVSNHruHvT2UQzMkBZLHWX3e/mX92ecyC6cMHYECAl2tT7kH85pUfYerjy/Hwm0sB8BHwum7qOl+7kDzYtBvl932IqmaeucwRu78YE2U9isqmJq26kmhUiQM3nVGBc8eeFbvtB07eLaRRFuDS8SbgXCk141+eOzLp/zxD8rHGYHQgW4lnDgtzUz8zcuwoACRHRQ12YntCJma/oCDQw6THJ9r6w/GO0RuYF6EgPzC3aH22nLbTISU0RTi0gQk2c3KmL7oMU0F2UdL2A3MHISfC/99X803s9gZ3EJBSM3nRUXLubppuO0MRqFoA6DDY0m4DACZtdGmncnQTQbf5QrGO9Ratmclhi2cJHKqKwXn8BOyVQ9hW0wFFG3WY201fwSM1KCc/6X+7KTUDE2WzxrOTEZn3Z8sy8ToozOJBiV+Kz1kIAFW1fN3dXEVGkdMEc4Q3GTY2p58zratFyzagVWvaHTNgAvSyCKu2ikVd24HYdoeaeUbRqejw04tvwIvz1+Hi6bfE7tcZbdA7SlDA+Gff6k1enu47y7H2cUQEAXqVQWyejoIsnhlr7TqBrzaoJzthpKZLazr3IIjN7fHM51YEUat1W7BFeODfJgTRqh35bbb0gUtpXnKfxn5ZA2EzyDBrE0dv1UYWm1UVBoMZBa5yAIg1RTrSrBTRnbzc4cnfzS6jz3O6BHw5aZoDi7qMMi3W1qzOzSqPTQ0E8NVtbjz37JTH27oEmU4tm5+jZa9rjPw7Xmjh2/XX1s+N9hEeVTIx3VtD/7x4JqufKQ/F2oXhnEkK8nR8ep9sQZ8SZBUZ+fvxaPvlUGcpDLKESyt+hUFaD4gt5n3o9LXDpdcCSaX703mBNq2KQa9d0Oh5RrPEUtzdQ3qtOG8A7s+fjh8ainDr+YvgUvmFctDOs4xFaS4kS4tOS/q/3FGQsk1BQpeaouLTj7mcJBUFgN8DNe1+VLcc/VJgJ8KhA1/CI4nQqQxWhX/h9+7vu5FalZ54x+iQIGD7ng8QCrjRrB1AB5ROQnYkfpLJ1+ZtcyYEQwBg1U4EBr0Ma8IA4EF5o+CM8IP3voYdsdsb3IFYU649IbNl0fETcoeavum2zRtCRNKWgUqYib8ruza6tEM9us9/W007vNFF7LXsmjUhyDIzoCCbZzvdsoqX1hxEWOKBaZa5+0DtSLgSVn4AAIclv5stAZ3RHmtG9eh5IJqtBTe5WtO1VwQ2H2qPPaax8wAAIEewoMhpgiHETzhfHPoqZRRvOqs2vgwmCHBFVAwr55kJm8I/67qEVTgOufnf2Yx/zt01neXKPNBuDdek3KcqESx+ew6eeG0W2lrio3M72quxUuFZJkf1NdjsuRCnDeb9CjskEUFtEBBjDB4tW1noijcblmh9ppqkMLYkDAQJCQI6tay3wzoNAFCti0/inZuTHOhFjRyYfMIdUHEmBEFAthbcbnHz74BLi8PHViQ32WX3MLCpK4PJhZFqPGCMBklROdbkbOSA4ikpz1HU5XtcpmXe8hwm5ETin5NLYTAZU/siZlmTg8r+Wra5RFv6MJqdLNFGQg+1xpskBcYwbOBFad4ZMGrIFcjRmt6nD7gEYw18X97i/hfOHcY/p9I0fRJLs4YmP0/hGADADTOvwcMXfI6ciAq3JGKC63W4LPyCtFzXfTavQguaQ8ZGAArajPy4NKFsbLePORJzLvgTHr72U5jMWRij9aveZubHkUFpgszsrEEoSsjwDc1LLcc1pT8AAFyky4XZnJ1yPzl2FACewlSV4aOtdZj2+HJM//2X8AYj3/2gk2Rb9RcAgKKQDsVBfsDe0Uf9AMOdTfhGm2Q4X2stq9y7FPuq14JpGZWZY8bBFYmfZIq0A3th7vBYR28AyHHFm34tCROgVhRNhl07+dV0VMdur3cHoEjRptx4IOcw8iDHnWbEKgDsaexESMvkWHvItBU4+Um+XTi6EaVtrXWxk1f0vUmyDkO0UaMzzP1QlMdPLi2yiIONhxDQMkauHgK1I1FgT84yRacTSUsQYNc+jhptZu1c7eSck8XL7xNF/GPl2thDWkO8+0GePhtFDiN8nby5aBncuPEfk+HrMpI3kdvrhsfFm9Cm6uNBgJXxrGNDZ3wOvrog/ztH13PWJM/C+501Cu0p973+2Z14zr0NLwUO4o73rkZYy1Qvq3wGYUFAaRDYFxgPADh96NhYv73d+z7j79Xtjg14qSiKN6MNLuOjMltlAQFRgE1RMaozHkjlhVWMH35lbIUKgDeZl+YkDz6IGlRYiAJtXViTqqKskAeKWRIPxnaateUUtYuiki5TvgyxpmZ0enKhIz5n4CBdcsaoMDseDGUpKlwFY1MeX+AckPT/+IG8WfKCEQWwheOjXPuL6QeiDCo7OykL2V97vvIugeHgAp7pu27yvXBpn81UwQyLLTlIjTKas/DPHzyPV8fdh/HjbsJ5Ay4FAHwYbsLzbh64jXaljqY/fchlsb9lxjBl9DwA/KJjTL98nG/i9b0tfyc2Z/FBPuO7BI2JzhpyBQBguzUI27AHUKvnzzt+2OxuH3O0rtDeI8AzrucMn5OyjSCKuCqLXzQUKAxTxtyU+jwzfo/lF76Gx6+lKWBOFAoAT1FvbjiM/vd/hNtejk9kfO1f1uDR979FoyeAm/9Wibc3pV8Y/ERzB8L4uGodAMASyII+wK/Odrbu6OlhR6ShdgOWrnwUPs93LwH07a63EBBF2BWGgo5yAMDG1u3YtHclAKAoLGJwgQMOJX6FnK81K00b1g/2hCaixM7HU2z8Kr9IUWFxlMAm8uxgnT++UkODO4CQNst/VkLHdaeV/90hpA/aa9t98Mg8k5Of0/2BuyyPZ3ZaJRUsEkb9/i8Q8LV0u31XXjdvBjWoDPaEjN5/z1iEhfln4vaLX4QrawBytKtxX9vX6NDKldvlpHq0BpWdmfR/YdbgbrbkSrQBNNFBBsU5/ARpsRUiTytn9cFVKL/vQxxo9qJW4qN9RxWM5yNyR96KcW4LBMawUQji9+/O7fa1Fr33E1QbBDgUFfdcHF9n1S7zffpQgO9/qhLGLok3wxdmT0h9ogT9CmcCAPboFDQ37YQaDsDddgBLv3oMf6hfEdtusxjGXa/NxPbtb+L1w7zfXpab91U98PgsDCqwozjIg5clG/6Kb7e9isXv3oGIIMCiqigtio88Hlg2JjbxMACU+U2QfWWx/wsDJpw5tARlQTHhNj1Ks9JnjQbkWpHTOAl5EQVn+k+DpDXtji6ZmrTdIBMPkAwmF0YlLA49qST5M/8uV1/wHGaHZQwJhXD92J8l3Td48MXIUvg+eY6xIG2ftDGDL4NVe//9IgxFWhOjLIm4pGxabLtz8sanfX2ToxgjtBYCiTFMG8rXwp05bE4sMMxTGMaOuBYAkFNyGl6f8Vc83u9yPHnZkh7fW2HpVIwYzffBM067HXdlnwabVtYcheGiyb9MeUxe0Wm4Xs6DzBh+6hwNW5dBED+/5I84TRs4YVVVnB0Crjnr192WYfjQK3GVHA/2jaqKu3OnIquHY8/ROmfKPXiw8Fz8QLDjmf7XomzgBWm3u+niF/HykJvxxqzXYDSnvwjOzRt+xKsPkd7rfkp+0mf++tU+/ObD1GBqa00HttZ04MWvDwAAlu1sxBXjSvDR1jo88PZWTK7Iht0k4+FLRsCSMLRfVRkEAWjuDCXNtfRdAmEFj7z3Lc4ekosLRsavcOc+vxY6fRsAAX5/OUQmAGjAjoTA6Fgc3P8Frv3idngkEYP2vIl//PBjWO3psy6MMfxj3TuAGSj0W9DiHQXkHsA21Q21ag3gBPIYzyicXjQR69z8BDy0gJ8IRFHASEXESomPxrMkZOPmz3wO9lWP4vyh1wCCAIH1A1CNfUo8o7RyZwOQpQCQUJw/JnZ7fs4QoA1olIHN1XUY2y85Q7C7ugqNWqf0ooLuA4rh/adBt53BI4m49O9jcUAWUaAwPHf6oxg8vPur91BExXvf1KKzYy1gAcqgT2qyLC+ehBuLJ8X+r2BmNMOPQueXqJS1ka3lZ3f7/EciO28URMagCjwz1V22JGqYPhsbtSlpZMZQURbvZF4hmNCIAApy30WRbxMeefkxHHDy+84ezeujIteBv61+EKOsn+NA6ed4I1SL+hdOR6HJjpAaQZgpCKsRtAQD+EYXBAQBZ+JsZLn6x8uQOxWfuquwRufBNc+PRocYQasswayqOG98akYj0aCKqSjfARwwCDjno6sgMBYb3QpRwBCfhEjrFOwv/grL4cHyykcAkWfadrZfjDd+xps49bKIQozGdmzE22ot3t7w29hrnBYyJJ0YJVmP0Z0mrLHzixFv61nY4RuLMseTaNABra3nodhpgr5tLGDig2Zk93BU5KQfNCCKAp6+fRGWVB7EDyfGA8nrZi7Akr/+HfuMgI4xXDUh3gfy1sKz8au6zzFRMOOsSQt6rKOudJZcPPKjVUBnA5DVP/k+2Yi/T3oEn295Adf84Om0j7c4SvC46zS8W78aN066O6lu5pz/ewTemYMwU3DNef/dbRl+M+IW/H3nP3FW7jgUlfJAt2zQhXi26kOsb9+Nyyf+NGmQRUHZFMwqS22O7pEgYN7FL2C2pw5bt72CoYMuhjN7YNpN753zGe7xNkOwpWbiLbZCvDCvEj5fM0ymbP7d7mFtbkEU8dDcZbir7QACYS/s1gLIJ6hZVRBFXD3zj7j6O7YTZQNGn77ghJSB9A4FgKeg+o7Uxe67o6oMC1/fjEBYxSff8mxFkyeIF358Gt7fUocmTxBPfLITIW1tyrtmDsaPp1XE5n4KRhRUt/iwq96DswblIqKqyNaW3Vn05V68WnkIr1Yewv/dPAljSp34ZFs9Whq2wKsdsw52ToIkRACsxbeigtbWPcjKih/QGGNgjJ9QehIIK2jxhuBEM27//Ofw6PkBvEpiuPvtK/DsnC8hp1nB4otv92OnfBCACMEzGGHzmTCq76FdEvEvJ6+PChsPzK6Z8QA+eWs1jIIOZ477j9hz3DHyZni2v4ibxv486blzneVYePGLsf/zCy4FOlai2iDgrU8Xwq/kIi/yLbbJEkTGMKjkjNi2OTnjkL1DQYss4X8+vRlnFvVHQ4cPhU4dOkJB1Lv3QHEIyFIY8uzdT3GQ58rFoICI7SaGA1rAWC8JmLv2IZy27gkIigi/osBkkBBUFIRUFYIIeEJhqALQkq8AEDHO2v1rAMCsfueisuZDVDp4v6RhihRbVupYCaKIhYYyPB08iJ9FjIDY8wCBs7JH4eXG5QCAM2BO6v9zadYorG2vxHqLBFjifexOD9qQX8Czt/1z+Ul6a+cMnNm6FZuzGrBK8gKhLv0o9QAgYJTbhvlzn0y6a8r467Di4+exyaTHdj0DtKksBjQNx7Cy5P5mXQ0psMHsvgYu1ytok8VY8JcTUVHc6cI3Df8Bj5qFwdU5cOV+iGpTCDYFsDRMh1w8BhPL4/U+bcJDaP/Xj3HYyuevNKoC8oMy7pr+SMrr3veDp/HcR3ehzj8Kcy+7C+2+MB58xwaT6Ie+uB8EQcCajqtxNgOs8GN15PpuA0AAyLcbcft5ydlaUZLxf1d/hCWfP4HxJaMxbtQVsfvOnPkUVjXtAHIGA3Lq5MLfSW9JCf6iykdejZ+M7DmkmH753zCdsZRASNIZ8ZOr3v7Ol6+YsgCPTFmQfKMg4MxZz+HI8pnfzWorxJQpC3veSJTSBn8xggCzJXVEdE/MrnJ031OQZBqBHcl0+SSJ2+2Gw+FAR0cH7PbjM2UGwAd9THt8GUQwSFAhIQIJCkQhAhEKJCECERFIQgSSqEBEBKKgQNC2kQR+myAoEKHw34IKQdvGbhQQVsIIK2EIggpB2waCChEqhhdZUOg0YM3+RvhCYUBQAagQtN+qqRbbzQxlARFVhx5HKKJidMV92G8EJqg6jLQUA0xBXYcfbf4AmMCQa9NBlAAVKjrDYbgDYagCg1EvArGAhaFFZmiRRbgiDM766agtWoGgKCArosKuAKIkIAIgzBgiAl+v1SOJsCgq2vY8gHfvuBi/eW0WvnG2A+BNn59c9h5yujmxHImwouKGxZPxrTU1QJ8WFrH4J/HRwf6Qgv9cNB6fOdWUbRNdE7LiP29Z3eM2V/3XL9BS/CmsEQntjZcjJ+cjVJl73yfQrih4efJ/oXzED7vdJhz2486Xz8VXQiccioI/llyMCTOf7Hb7I+ZvR3jlk9ANmQWUT+t5244avP/hf+BQxItrpz6ArIEzYncxdx2WfHIH1vib0OJXEQmK6GcrwX1XPwO7tnyYojIMuP8j7REqRlqXw2HcAwgRgMlg2o/KdOgIlqGo9Aq8cOPklGK8+fmXeG3NEvhEASHFhLZQCSqKJ+H1n3131uePn1fhmc+3IVuugZ+Z4FcdiDDe/8ykk+APpx+c8qfrxuHi0fF+Z9tqOnDxs8lLf/3jpkk4a/B3n/jDiooFr26GXhbxh6vGQBQF1HcEcPpjvLl57f3nIT9hGThCMsmJOn9/n1AAeAxO1A70/DvX469tm6CAzzYf6SG131cExvDUiDtwxtibMfTBTzDS+jkOlyyNrYt5LFwRBhy6FgcD4zDW/j5qClch0EMG0aQy5NZNxwPXPIqpA3Jw9u/eQKHjcbTqgygPnYc/z3/6mMsUNer+f2BMwWK0GXl/MAFAUUjEr6f9EvnjfpS07bbV7+CF1U+gxhDWFowXIEKApIqQmQhX0Ignr/tv6IvT90uKev+bWtz5ygaosS67Coaav4bdcBCCGAGYCDAJLPob8f9nTyjHhUPOgLPirB5fAwDAGFobtsKqt0J/HALmEy2sqPCFFDhMqRMZbzncjsuf+xp6WUQg3H0QPnN4Pp69bhwMcvqs5BsbDuOuJfHA/puHZ6Z9va4qD7TiqsWpgf3SX5yFQfk2BCMKhvznJ0n3jS114q1bpyZlyxlj+PPKfVhV1YzSLDMWzBh0zEFb9JDf3ShmQjIBBYAUAB6TE7UDLXpnLv6no3erCEiMQWK8gUpiDCIAiSHpt8gESABEBogQtN/8dkH7X4j9LUCE9r92m8BECBAAxu9XoMM+z1lY8SDvdPz/lu7GH5dVocK4EaW2VVBEFSqQEowAEpj2N8/C8Pwmv02GCgkhxYS9vsn4v5+ci8+21+PFrw/AKHagxLgdesGnbS9DZRIYJChMh5rgYOx+LN489JO/V+LzHXxk3PJfTkf/3O4nHj5S5/3hS+xtSm5KXDR3PC4cldqvTVUZhj70Saz5vatn5ozDpWN6v8SRJxDG3iYv7n9rK7bXxecXFITYsq9JnrtuPGaN7rm/XSZQVIb9zZ0QBQF7m7w41OrDtpoOFDiM+OXMIbEBDt3ZeLANLrO+x+bSdD7aWofOQATLdzaiNMuE+y8alhR01bT7UdfuBwPQ0hnC+SPyKSgj5CShAJACwGNyonagDncNOnxNaPczBCMi9raE8PB7u6FChqIFSmASeP5JwH0XDsV/nNUf//XB9tgAkRPt7vOHYP45vK9fIKxg6IOffMcjeu/Xl4/EDafz6U/K7/uwx20n9nPh2evGodARn97hX3ub8bP/24BZowvx2JWje3j0kWv0BDDpt/GVFi4bW4Snrxnb7Yn7+ZX78Jev9mHWqMJY5uX60/vBapSTynw0/vb1fjR1BnHXzCGodwdQ3xHAuDIXghEFde0BlB9hwEIIIZmCAkAKAI/JydyB3thwGO9ursH5Iwrwn+9sw4+nliMYUbB2XyveuX0a7EbeLBX9OA+2+lDiMqMzGIHDpIM/pOCDLbVYvbcFb23inef751qwLyGbded5g/DHZcnLZ71082SojOFHL6zDXTMH47azB4IPOEsOeJasP4S730jOWg4tsOHvN03CC1/vx59X7Et5T1aDjM6EuQ0vG1uEW87sj5HF8fn0ogHgK7ecjkff/xY76z3Itxtw7tB8zD9nAEpc1KWZEELIkaEAkALAY9JXO5A/pMCoE4+6uaim3Y/nV+7DjdPK4Q8reK3yEH5+7iBkWfT4aGsdFr6+GY9fORoT+rm6nScsnbCi4pNt9Rhd4oBRJ8X6KoUVFV9VNaHAbkK/bDO+OdyOoQV2mPUSrv/rWqyvbsPX952LYmdqRmzTwTbsa/Ji9oQS7Gn04KU1B3HbOQOQZ6PO64QQQo4OBYAUAB6Tf9cdKKKokKWTM/lmMKLAE4ggx9r7+QkJIYSQY/Hvev4+EjQPIElxsoI/ADDIEgzW3i8cTwghhJBjR2usEEIIIYRkGAoACSGEEEIyDAWAhBBCCCEZhgJAQgghhJAMQwEgIYQQQkiGoQCQEEIIISTDUABICCGEEJJhKAAkhBBCCMkwFAASQgghhGQYCgAJIYQQQjIMBYCEEEIIIRmGAkBCCCGEkAxDASAhhBBCSIahAJAQQgghJMNQAEgIIYQQkmEoACSEEEIIyTAUABJCCCGEZJiMDwCfe+45lJeXw2g0YvLkyVi3bl1fF4kQQggh5ITK6ADwtddew8KFC/Hwww9j48aNGDNmDM4//3w0Njb2ddHI95DidoOFw0f8ODUUAmPsBJTo5GGKAqaqvdo2sGs3Art2neASke8zpig9fidUnw8sEjmJJTqxgvv2oebue+Bbv76vi0IySEYHgE899RRuueUW3HjjjRg+fDgWL14Ms9mMF154oa+LdlQYY2Cqyn8Uhf9EIvwnHAYLhcBCIajRn2AQaiDAf/x+/uPz8R+vF0pn9KeT/3g8UNxu/tPRgXBdHSLNzb0+8ff6PXR9H0fzHrxe/h60crJQiD9/JAL/t9+i/c23ENy7N/a64YYG1NxzD/ZdfgXa33o7Xp5wGGow2ON7VAMBNP3pOeyeOg17Z12McC8vIFS/H03P/gm7J0xE9ZzroHR6wSIRtL/5Jjreffe41avq96NtyRLU//o38G/e/J3bM1VFsKoK7s8+Q7imhj9HMIjArt2xMgX37EHrP/4Bz+efI1Rdjb0XXYSqqdPg37IFLByGf+tWKB0dKc/b8uLfsP+KK7D/iivRuXIlIm1t2H/lbOwYOgzNf/5Lykk/0twMz/Iv4Nuw4YQHyarfj8Du3Yi0tPT6MSwUQqSt7bh+B2LP3cP7ZYyh48MP0fDYY736TLt7DhaJgKkqvP/6F5qffx6q13tEZVHa29H22uvwbdiQdLsaCCC4b1/SBRELhRA6dAihgwdjr+3+7LOU8odrarD3BzOx74ILETpwIOU1vevWoeqs6dh3yaWINDUhdPgwIq2tvXrPaiiUdMzyrluH/Vdfg9a//z25DPX1cC9dikhbW9LtocM16Pz6a6jBYNrnD+zcecT7KmMMtff9Cu7338fhO+48qovI6POEa2pSyvxdZVF9Pihud4/Pm/h+o8flIykXYwxMUfh35bsCe+1Y3fU5yPEnsAyt2VAoBLPZjDfeeAOXX3557PZ58+ahvb0d7777bspjgsEggglfBLfbjdLSUnR0dMButx+3sjX9z/+gZdFiMACIfjzpfp8qH50kQcpyAaEwvyrXDu7R8sVKmVjmk/0+RBGSwwEl8eAoirCedRY6v/wyZXPHlVcisH07gjt3AgAEsxm6/PzYe+OBaRiq1wfm8yU91jJ1KvT9+6PtpZf4Yw0GCLIMxhgEAIJOBzUcTvs4xeNBYOtWAICcmwvTxAkIfLsd4YMHIZrN6KmmBEEAZBmCJEGQJECWEamrS95Ip4Pjoovg27QJ4YMHeTVYrfy5g8GUoC1aDqWzE8zv7+HV44zDhyOwfTt/uaIiSLk5ECQZ/o0bk7aTsrOhdAm27BddBO+aNVDSnND1/fpB0OsQrNrDy223A4IAATzggKoCggDRZAJ0Ov5/NJOUGKBp9SPIMiBLUNrak9+bJMHQvyL+OjYbf7x2IgNjEGQZgtEIpblZqyQZcm4uoChQvV4IOl1s2ySCwH91+T/2t6ryjHAoBCgKRLMZgsUMKNpJV1WhejwpdSNaLPHgTZb54wSBP6co8n02EOD7ok6Xtn6B5M9acrkgGAyIJFzQiGYzJIcD4bo6iEYjvyjTAhZdSQnChw8nl8vhgKDXgQVDvHwJgYPkcMT2N12/MoSrD6YWSBB4fRuNYIFA2jJHGYYNQ3DHDkg5Obz+IhH+XQuFeP14PGDdBG4pdDogHI59d1WvF7rSUv7+GIPkcACiCMXjgWg0Qu3sTHq45HLFjjWi1QrRYgFTFSAcAXQyBIHnXiI9XCzqSkpi9csiEUBV+T6rk/lBVdCOJW4PVK8Xos0GNRrISRKgKBC077VoMkG0WLR9WAUiSvKxEICUmwOlqTnp/af8nYZotfJyRfc37Sf23RBFiCYTDxwTvmei3Q7RaITi8UAQBAh6ffz4wxivM+3iP/f2+ci59daePrEj5na74XA4jvv5+/skYwPA2tpaFBcX41//+hemTJkSu/2ee+7BihUrsHbt2pTHPPLII3j00UdTbj/uAeCzf0Lzc88dt+c7YWSZH9BP9V1IloGE5iLBaIS+vDwW3CUyn346fGvWHNXLZN/yE7S88GLSSa43nFf9EO1L3jiq1+wtwWyGcfDgI8oW6cvL02Zg0j6/TtfrzEXOz29H26uvxk82vShHuKGh1wHosehNoHEqMY4YgcCOHckB7kkm2mxpg9J0gcP3qn67CXyOZF8/6USxT/eFEyXnttuQe8fPj+tzUgAIyH1dgO+TX/3qV1i4cGHs/2gG8HjL+vE8OH84m/8TvaLi/8R+CdHbEn93vQ1dtkv3GO054y/RzXbpMhdaYBVpbYXS0gJBr4eg0/GsjCSlPtd3vY+02x7he+iyrSCKgE4HpbkZoYMHoXS4YT1jGgS9Hr7KSngrKyEajIg0NiBn/nyIFgsafvs7eNesgf2CCyC5XNAVF0FfXoFIYyMESeRZNlkHQSeDhSNof/MNWM8+G7azz4aUlY2mp56CrrQUxuHDoXR0IPuWn0BXUBDL8LBIBJGmZrQvWQLH5ZfBeuaZkAsL0fzMs5ByclD+6qsQdDq4P/wQLByGrrAATFFhHDGcZ7cSs0aJFAVMUQElmqFUEGlsQPjQIbjmzAF0OnS89RYC23fANHoUIMnQ9yuDaLFC9fu0zFAbfJWVsM+aBUP/CnSuXAnfpk2wn38+5NxcBLZvR/vrr8M8ZQqcl12Gwwt+AaWjA/3+9iLa33wLzYsXwzJlCgLbt0M0mZB3zz1QvZ0I19Wh5fm/wjx+PHLnz4e+Xzlq77oLACA5nci//1cI19XDt24dQgcOIFxTA/tFFyLv7ruhKyxEpK0N3lVfQw344aushOOSS6ArLgGgZeQMRv7ZMAbV7weLKBBEnv2CIMb2tWhWjkUigJbJVf1+sGAIpjGjIdpsCB8+jNC+fQjs3MWzsOPG8v0oIbvBQmGoHjfkwkLITicira2INDaCBYOQc3P584uitpNrn088Fa79SrhwimbLw2GeUdHrIUgS78rg9wOiyP/v7ETHhx9CNBhgnjQJ1jPPRLihEW0vv4xQdTX0FeWwnX02RLsDYFrWUlUhSBLPVAVDCNfWAozxz/errwAA5gkTIOXkwPPJJ2DhMPT9B0DOzYXq7YQgy5DzCwABUD0eKB1uQIkg0tICfVkZDIMHI1hVBd/GjVDa2mGZOgX68nJIdjv833yDSFMzBFmCrqwMhkGDEKyqQv2DD8Ex+0pYp0+H0t4B35rV8G3eDP/6DbCccQayfnQDdKVlcL//Huof/S/YL7kExuHD4f7wQ9gvngXn7Nlwf/Qx2l57FfrSMtgvnoXQgQOQbDYYR4yAaLFCEAUonV6onR5IdjtEuwOS3QbBaIR/4yZ4v/4auuIi2GfNQufy5Wh/+x1ILifM4yfAPHECDIMHw1dZieDuKuiKCiE5nZCysqErLIBv/QZEGhuhKy2B7HLx7hHBAExjxkByOhHcsweRpiYYBg+BoNdB9fogyDzzHG12h6LgwNXXAABcN9yA7JtvQu2vfgXfan4BWrJ4EeTcXAg6HQRZx/cjrUsMBBFgKu+i0tkJFgpBV1wMXXExwBh869cjXFMD46jRkLNciDQ18cOiXs+zc21t8G/eDOPIUfxYACCwcxd8G9bDPHEidEVF8FWuh2i1wDRiBFSfD6GDh6B6vZBzc2AYPBgd772H4J49cM6eDclmS8iQ83080tCA0MFDsJ51JlR/AKrHDf2AAWh76WUYBg2EYfBgqD4/JKsFLBxGYOcuGEeMgNLWitCBAzCNGwfRYABkHSSrJf0xjxyTjM0AHk0TcFd0BUHSYZEIb2bsLlDrRrihEYJeB9nlOkElO7X4t2yBYDDAOGRIXxeFkD4R3LMHSns7zBMnxm/bvx9QFBgGDuzDkv37o/N3Bg8C0ev1mDBhApYtWxa7TVVVLFu2LKlJmJAjJcjyEQd/AKDLz8uY4A8ATKNHU/BHMpph4MCk4A8ADBUVFPyRkyKjm4AXLlyIefPmYeLEiZg0aRKefvppeL1e3HjjjX1dNEIIIYSQEyajA8BrrrkGTU1NeOihh1BfX4+xY8fik08+QX5+fl8XjRBCCCHkhMnYPoDHA/UhIIQQQr5/6PydwX0ACSGEEEIyFQWAhBBCCCEZhgJAQgghhJAMQwEgIYQQQkiGoQCQEEIIISTDUABICCGEEJJhKAAkhBBCCMkwFAASQgghhGQYCgAJIYQQQjIMBYCEEEIIIRkmo9cCPlbRVfTcbncfl4QQQgghvRU9b2fyargUAB4Dj8cDACgtLe3jkhBCCCHkSHk8Hjgcjr4uRp8QWCaHv8dIVVXU1tbCZrNBEIS+Ls5J53a7UVpaikOHDmXsYtrHA9Xj8UH1eOyoDo8Pqsfj40TWI2MMHo8HRUVFEMXM7A1HGcBjIIoiSkpK+roYfc5ut9NB7jigejw+qB6PHdXh8UH1eHycqHrM1MxfVGaGvYQQQgghGYwCQEIIIYSQDEMBIDlqBoMBDz/8MAwGQ18X5XuN6vH4oHo8dlSHxwfV4/FB9Xhi0SAQQgghhJAMQxlAQgghhJAMQwEgIYQQQkiGoQCQEEIIISTDUABICCGEEJJhKAAkPXrsscdw2mmnwWazIS8vD5dffjl27dqVtE0gEMD8+fORnZ0Nq9WK2bNno6GhoY9KfOp7/PHHIQgCFixYELuN6rD3ampqcP311yM7OxsmkwmjRo3C+vXrY/czxvDQQw+hsLAQJpMJM2bMQFVVVR+W+NSjKAoefPBBVFRUwGQyYcCAAfj1r3+dtC4q1WOqlStX4pJLLkFRUREEQcA777yTdH9v6qy1tRVz586F3W6H0+nEzTffjM7OzpP4LvpeT/UYDodx7733YtSoUbBYLCgqKsKPfvQj1NbWJj0H1eOxowCQ9GjFihWYP38+1qxZg6VLlyIcDmPmzJnwer2xbX7xi1/g/fffx5IlS7BixQrU1tbiyiuv7MNSn7oqKyvx5z//GaNHj066neqwd9ra2jBt2jTodDp8/PHH2L59O/7whz/A5XLFtnnyySfxzDPPYPHixVi7di0sFgvOP/98BAKBPiz5qeWJJ57AokWL8Kc//Qk7duzAE088gSeffBLPPvtsbBuqx1RerxdjxozBc889l/b+3tTZ3Llz8e2332Lp0qX44IMPsHLlSvz0pz89WW/hlNBTPfp8PmzcuBEPPvggNm7ciLfeegu7du3CpZdemrQd1eNxwAg5Ao2NjQwAW7FiBWOMsfb2dqbT6diSJUti2+zYsYMBYKtXr+6rYp6SPB4PGzRoEFu6dCmbPn06u/POOxljVIdH4t5772VnnHFGt/erqsoKCgrY73//+9ht7e3tzGAwsFdeeeVkFPF7YdasWeymm25Kuu3KK69kc+fOZYxRPfYGAPb222/H/u9NnW3fvp0BYJWVlbFtPv74YyYIAqupqTlpZT+VdK3HdNatW8cAsOrqasYY1ePxQhlAckQ6OjoAAFlZWQCADRs2IBwOY8aMGbFthg4dirKyMqxevbpPyniqmj9/PmbNmpVUVwDV4ZF47733MHHiRFx11VXIy8vDuHHj8Pzzz8fu379/P+rr65Pq0uFwYPLkyVSXCaZOnYply5Zh9+7dAIBvvvkGq1atwoUXXgiA6vFo9KbOVq9eDafTiYkTJ8a2mTFjBkRRxNq1a096mb8vOjo6IAgCnE4nAKrH40Xu6wKQ7w9VVbFgwQJMmzYNI0eOBADU19dDr9fHvphR+fn5qK+v74NSnppeffVVbNy4EZWVlSn3UR323r59+7Bo0SIsXLgQ999/PyorK3HHHXdAr9dj3rx5sfrKz89PehzVZbL77rsPbrcbQ4cOhSRJUBQFv/3tbzF37lwAoHo8Cr2ps/r6euTl5SXdL8sysrKyqF67EQgEcO+992LOnDmw2+0AqB6PFwoASa/Nnz8f27Ztw6pVq/q6KN8rhw4dwp133omlS5fCaDT2dXG+11RVxcSJE/G73/0OADBu3Dhs27YNixcvxrx58/q4dN8fr7/+Ol5++WX885//xIgRI7B582YsWLAARUVFVI/klBEOh3H11VeDMYZFixb1dXH+7VATMOmV22+/HR988AG++OILlJSUxG4vKChAKBRCe3t70vYNDQ0oKCg4yaU8NW3YsAGNjY0YP348ZFmGLMtYsWIFnnnmGciyjPz8fKrDXiosLMTw4cOTbhs2bBgOHjwIALH66jqCmuoy2d1334377rsP1157LUaNGoUbbrgBv/jFL/DYY48BoHo8Gr2ps4KCAjQ2NibdH4lE0NraSvXaRTT4q66uxtKlS2PZP4Dq8XihAJD0iDGG22+/HW+//TaWL1+OioqKpPsnTJgAnU6HZcuWxW7btWsXDh48iClTppzs4p6SzjvvPGzduhWbN2+O/UycOBFz586N/U112DvTpk1LmYZo9+7d6NevHwCgoqICBQUFSXXpdruxdu1aqssEPp8Poph8+JckCaqqAqB6PBq9qbMpU6agvb0dGzZsiG2zfPlyqKqKyZMnn/Qyn6qiwV9VVRU+//xzZGdnJ91P9Xic9PUoFHJqu/XWW5nD4WBffvklq6uri/34fL7YNj/72c9YWVkZW758OVu/fj2bMmUKmzJlSh+W+tSXOAqYMarD3lq3bh2TZZn99re/ZVVVVezll19mZrOZvfTSS7FtHn/8ceZ0Otm7777LtmzZwi677DJWUVHB/H5/H5b81DJv3jxWXFzMPvjgA7Z//3721ltvsZycHHbPPffEtqF6TOXxeNimTZvYpk2bGAD21FNPsU2bNsVGp/amzi644AI2btw4tnbtWrZq1So2aNAgNmfOnL56S32ip3oMhULs0ksvZSUlJWzz5s1J551gMBh7DqrHY0cBIOkRgLQ/L774Ymwbv9/PbrvtNuZyuZjZbGZXXHEFq6ur67tCfw90DQCpDnvv/fffZyNHjmQGg4ENHTqU/eUvf0m6X1VV9uCDD7L8/HxmMBjYeeedx3bt2tVHpT01ud1uduedd7KysjJmNBpZ//792QMPPJB0gqV6TPXFF1+kPR7OmzePMda7OmtpaWFz5sxhVquV2e12duONNzKPx9MH76bv9FSP+/fv7/a888UXX8Seg+rx2AmMJUz9TgghhBBC/u1RH0BCCCGEkAxDASAhhBBCSIahAJAQQgghJMNQAEgIIYQQkmEoACSEEEIIyTAUABJCCCGEZBgKAAkhhBBCMgwFgIQQQgghGYYCQEIIIYSQDEMBICGEEEJIhqEAkBBCCCEkw1AASAghhBCSYSgAJIQQQgjJMBQAEkIIIYRkGAoACSGEEEIyDAWAhBBCCCEZhgJAQgghhJAMQwEgIYQQQkiGoQCQEEIIISTDUABICCGEEJJhKAAkhBBCCMkwFAASQgghhGQYCgAJIYQQQjIMBYCEEEIIIRmGAkBCCCGEkAxDASAhhBBCSIahAJAQQgghJMNQAEgIIYQQkmEoACSEEEIIyTAUABJCCCGEZBgKAAkhhBBCMsz/B9FihF5sS0JFAAAAAElFTkSuQmCC", - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"f69ec89d-0b35-4726-befc-b9527bb9e6d6\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2347\"}],\"center\":[{\"id\":\"2350\"},{\"id\":\"2354\"},{\"id\":\"2386\"}],\"height\":300,\"left\":[{\"id\":\"2351\"}],\"renderers\":[{\"id\":\"2373\"},{\"id\":\"2392\"},{\"id\":\"2412\"},{\"id\":\"2434\"}],\"title\":{\"id\":\"2375\"},\"toolbar\":{\"id\":\"2362\"},\"width\":990,\"x_range\":{\"id\":\"2339\"},\"x_scale\":{\"id\":\"2343\"},\"y_range\":{\"id\":\"2341\"},\"y_scale\":{\"id\":\"2345\"}},\"id\":\"2338\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2381\"},\"group\":null,\"major_label_policy\":{\"id\":\"2382\"},\"ticker\":{\"id\":\"2348\"}},\"id\":\"2347\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2426\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2410\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2355\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2358\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2341\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2391\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"2355\"},{\"id\":\"2356\"},{\"id\":\"2357\"},{\"id\":\"2358\"},{\"id\":\"2359\"},{\"id\":\"2360\"}]},\"id\":\"2362\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"2430\"}},\"id\":\"2435\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2381\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"2373\"}]},\"id\":\"2387\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2387\"},{\"id\":\"2407\"},{\"id\":\"2429\"},{\"id\":\"2453\"}]},\"id\":\"2386\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2389\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"2392\"}]},\"id\":\"2407\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2378\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2375\",\"type\":\"Title\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2427\"},\"selection_policy\":{\"id\":\"2426\"}},\"id\":\"2408\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2343\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"2369\"}},\"id\":\"2374\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2370\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2356\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2390\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2409\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2427\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2431\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2433\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2361\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2360\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2359\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2408\"},\"glyph\":{\"id\":\"2409\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2411\"},\"nonselection_glyph\":{\"id\":\"2410\"},\"view\":{\"id\":\"2413\"}},\"id\":\"2412\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2450\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2430\"},\"glyph\":{\"id\":\"2431\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2433\"},\"nonselection_glyph\":{\"id\":\"2432\"},\"view\":{\"id\":\"2435\"}},\"id\":\"2434\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2372\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2378\"},\"group\":null,\"major_label_policy\":{\"id\":\"2379\"},\"ticker\":{\"id\":\"2352\"}},\"id\":\"2351\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"2408\"}},\"id\":\"2413\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2405\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2369\"},\"glyph\":{\"id\":\"2370\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2372\"},\"nonselection_glyph\":{\"id\":\"2371\"},\"view\":{\"id\":\"2374\"}},\"id\":\"2373\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2371\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"2388\"}},\"id\":\"2393\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2352\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2451\"},\"selection_policy\":{\"id\":\"2450\"}},\"id\":\"2430\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy) - Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2434\"}]},\"id\":\"2453\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2388\"},\"glyph\":{\"id\":\"2389\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2391\"},\"nonselection_glyph\":{\"id\":\"2390\"},\"view\":{\"id\":\"2393\"}},\"id\":\"2392\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2405\"},\"selection_policy\":{\"id\":\"2404\"}},\"id\":\"2388\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2451\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2411\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2412\"}]},\"id\":\"2429\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2384\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2345\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2382\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2404\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2339\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2384\"},\"selection_policy\":{\"id\":\"2383\"}},\"id\":\"2369\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2432\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"2361\"}},\"id\":\"2357\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"2351\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2354\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2348\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2383\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis\":{\"id\":\"2347\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2350\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2379\",\"type\":\"AllLabels\"}],\"root_ids\":[\"2338\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"f69ec89d-0b35-4726-befc-b9527bb9e6d6\",\"root_ids\":[\"2338\"],\"roots\":{\"2338\":\"2b1aad70-fb78-4efb-b103-4448ccd43aaf\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "2338" + } }, - "metadata": {}, "output_type": "display_data" } ], "source": [ "calc_y_crysfml = calculator.fit_func(meas_x)\n", "\n", - "%matplotlib widget\n", - "plt.plot(meas_x, meas_y, label='Imeas')\n", - "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", - "plt.plot(meas_x, calc_y_crysfml, label='Icalc (CrysFML)')\n", - "plt.plot(meas_x, calc_y_cryspy-calc_y_crysfml, label='Icalc (CrysPy) - Icalc (CrysFML)')\n", - "plt.legend()" + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(meas_x, meas_y, legend_label='Imeas', color='steelblue', line_width=2)\n", + "fig.line(meas_x, calc_y_cryspy, legend_label='Icalc (CrysPy)', color='orangered', line_width=2)\n", + "fig.line(meas_x, calc_y_crysfml, legend_label='Icalc (CrysFML)', color='orange', line_width=2)\n", + "fig.line(meas_x, calc_y_cryspy-calc_y_crysfml, legend_label='Icalc (CrysPy) - Icalc (CrysFML)', color='grey', line_width=2)\n", + "show(fig)" ] }, { @@ -1019,34 +1569,63 @@ "outputs": [ { "data": { - "text/plain": [ - "" + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" ] }, - "execution_count": 34, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "1ae89e177ecc47a0a0ad82e81d37e881", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAACXWUlEQVR4nO2dd5wU9f3/X7t7He6OzoH0JoogKIrYDSj2lsRoSMSaaDTWGOWbaBKjsSSaxB5NRPOzYEzU2A12QcSCiAoqIL23uwOOK7s7vz/2ZvYzn/lM2347r6cPHu7NTvnMZ2fm85p3+4Q0TdNACCGEEEICQzjfDSCEEEIIIbmFApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYFICEEEIIIQGDApAQQgghJGBQABJCCCGEBAwKQEIIIYSQgEEBSAghhBASMCgACSGEEEICBgUgIYQQQkjAoAAkhBBCCAkYJfluQEcmHo9j3bp1qK6uRigUyndzCCGEEOIBTdOwY8cO9O3bF+FwMG1hFIBpsG7dOvTv3z/fzSCEEEJICqxevRr9+vXLdzPyAgVgGlRXVwNIXEA1NTV5bg0hhBBCvNDY2Ij+/fsb43gQoQBMA93tW1NTQwFICCGEdDCCHL4VTMc3IYQQQkiAoQAkhBBCCAkYFICEEEIIIQGDMYBZRtM0RKNRxGKxfDeFEFIARCIRlJSUBDr2iBCSfygAs0hrayvWr1+PpqamfDeFEFJAVFVVoU+fPigrK8t3UwghAYUCMEvE43EsX74ckUgEffv2RVlZGd/4CQk4mqahtbUVmzdvxvLlyzF8+PDAFqElhOQXCsAs0draing8jv79+6OqqirfzSGEFAiVlZUoLS3FypUr0draioqKinw3iRASQPjqmWX4dk8IkeFzgRCSb/gUIoQQQggJGBSAJKv89re/xdixY9PaR2trK4YNG4b3338/M43KM9dddx1+/vOf57sZSh555BF06dIl7f0cfvjheOKJJ9JvUAfj1VdfxdixYxGPx/PdFEIIcYQCkJg455xzcOqpp+a7GSYeeOABDB48GAcffLBp+VtvvYXjjz8e3bt3R1VVFfbee29cffXVWLt2bdbasmLFCoRCIeNf9+7dccwxx+DTTz/1vI9f/OIXePTRR/Htt9+m3Z5MCOxM8/zzz2Pjxo0488wzTcs//fRTfP/730fv3r1RUVGB4cOH48ILL8Q333yT1faIv5f+79BDD7V8/8EHH5i2a2lpQffu3REKhfD222+b1n/uueeUxzr22GNRWlqKxx9/PBunQgghGYMCkBQ0mqbhnnvuwfnnn29a/re//Q2TJ09GXV0d/vOf/2DRokV44IEH0NDQgDvuuEO5r1gsljHLzOuvv47169fjtddew86dO3Hcccehvr7e07Y9evTAlClTcP/992ekLYXGXXfdhXPPPdcU5/biiy/ioIMOQktLCx5//HEsXrwYjz32GGpra3H99dcr96PX0MwEM2bMwPr1641/zz//vOn7/v37Y8aMGaZlzz77LDp37uz7WOeccw7uuuuutNpLCCHZhgKQOBKPx3H77bdj2LBhKC8vx4ABA3DzzTcb31977bUYMWIEqqqqMGTIEFx//fVoa2tz3OfDDz+MUaNGoby8HH369MGll15qu+4nn3yCZcuW4YQTTjCWrVmzBpdddhkuu+wyPPzwwzjyyCMxaNAgHH744fj73/+OG264AUDSnfn8889j7733Rnl5OWbPno3S0lJs2LDBdJwrrrgChx12GABg5cqVOOmkk9C1a1d06tQJo0aNwssvv2xav3v37qirq8P48ePxpz/9CRs3bsS8efNw4403Yp999rGcx9ixY01C56STTsLMmTMd+ylVnPr3zjvvxOjRo9GpUyf0798fP/vZz7Bz507H/b3wwgs44IADUFFRgR49euC0006zXXfz5s148803cdJJJxnLmpqacO655+L444/H888/j8mTJ2Pw4MGYMGEC/vSnP+Fvf/sbAODtt99GKBTCK6+8gv333x/l5eV47LHHEA6H8fHHH5uO85e//AUDBw5EPB7H9u3bMXXqVPTs2ROVlZUYPny4Rcx16dIFdXV1xr9u3bqZvp82bRpmzpyJ3bt3m/px2rRpjn2j4qSTTsLHH3+MZcuW+d6WBJPNO1pwy8uLsXzLrnw3hQQICsAcomkamlqjOf+naVrKbZ4+fTpuvfVWXH/99Vi0aBGeeOIJ9O7d2/i+uroajzzyCBYtWoS//vWveOihh/DnP//Zdn/3338/LrnkEvzkJz/B559/jueffx7Dhg2zXf+9997DiBEjUF1dbSx7+umn0drail/+8pfKbcQYtqamJtx22234+9//ji+//BLjx4/HkCFD8P/+3/8z1mlra8Pjjz+O8847DwBwySWXoKWlBe+++y4+//xz3HbbbY6WoMrKSgCJWMXzzjsPixcvxkcffWR8/+mnn2LhwoU499xzjWUHHngg1qxZgxUrVtjuNxXc+jccDuOuu+7Cl19+iUcffRRvvvmmbT8CwEsvvYTTTjsNxx9/PD799FO88cYbOPDAA23Xnz17NqqqqrDXXnsZy1577TVs2bLF0+8FJGIkb731VixevBgnn3wyJk+ebBF0M2bMwDnnnINwOGxcm6+88goWL16M+++/Hz169HDqJgv7778/Bg0ahP/85z8AgFWrVuHdd9/Fj3/8Y1/7AYABAwagd+/eeO+993xvS4LJlU8twN/e/Ran3DM7300hAYJ1AHPI7rYY9r7htZwfd9GNU1BV5v+n3rFjB/7617/innvuMSwhQ4cONcVP/frXvzY+Dxo0CL/4xS8wc+ZM28H+pptuwtVXX43LL7/cWHbAAQfYtmHlypXo27evadmSJUtQU1ODPn36uJ5DW1sb7rvvPuy7777GsvPPPx8zZszANddcAyBh4WpubsYZZ5wBIDH4f/e738Xo0aMBAEOGDLHdf319PX7/+9+jc+fOOPDAA9G7d29MmTIFM2bMMM5rxowZOOKII0z70c9p5cqVGDRokOt5eMWtf6+44grj86BBg3DTTTfhoosuwn333afc380334wzzzwTv/vd74xlYl/KrFy5Er179za5f5csWQIAGDlypKdzuPHGG3H00Ucbf19wwQW46KKLcOedd6K8vBzz58/H559/jv/+978AEr/XuHHjMH78eOO8ZM466yxEIhHj78cee8wS63reeefh4Ycfxo9+9CM88sgjOP7449GzZ09PbZbp27cvVq5cmdK2JHh8snI7AKCxOTMhD4R4gRZAYsvixYvR0tKCSZMm2a7z1FNP4ZBDDkFdXR06d+6MX//611i1apVy3U2bNmHdunWO+5PZvXu3pVCupmmeZ1UpKyvDmDFjTMvOOeccLF261Aj6f+SRR3DGGWegU6dOAIDLLrsMN910Ew455BD85je/wcKFCy37Pfjgg9G5c2d07doVn332GZ566inDMnrhhRfiySefRHNzM1pbW/HEE08Y1kUd3WpoN03gH/7wB3Tu3Nn4Z9enIl769/XXX8ekSZOwxx57oLq6Gj/+8Y+xdetW23YsWLAgI7+XH3Qhp3PqqaciEong2WefBZD4vY466ihD6F188cWYOXMmxo4di1/+8pfKbPE///nPWLBggfFPFJg6P/rRjzB37lx8++23eOSRRyy/mR8qKys5BSTxDCeJIvmAFsAcUlkawaIbp+TluClt1y5S7Jg7dy6mTp2K3/3ud5gyZQpqa2sxc+ZM2yQMt/2p6NGjBz7//HPTshEjRqChoQHr1693tQJWVlZaxGKvXr1w0kknYcaMGRg8eDBeeeUVU5bnBRdcgClTpuCll17C//73P9xyyy244447TKVbnnrqKey9997o3r27xYV50kknoby8HM8++yzKysrQ1taG733ve6Z1tm3bBgC2FqaLLrrIsEgCsFhB7c7ViRUrVuDEE0/ExRdfjJtvvhndunXD7Nmzcf7556O1tVU5Y43f36xHjx7Yvn27admIESMAAF999RUmTpzoug9diOuUlZXh7LPPxowZM3D66afjiSeewF//+lfj++OOOw4rV67Eyy+/jFmzZmHSpEm45JJL8Kc//clYp66uzjHUAEjEdZ544ok4//zz0dzcjOOOOw47duxwba+Kbdu2pWw9JISQXEALYA4JhUKoKivJ+b9U5yAePnw4Kisr8cYbbyi/f//99zFw4ED86le/wvjx4zF8+HBHt1d1dTUGDRpkuz8V48aNw1dffWWyIn3ve99DWVkZbr/9duU2XrJxL7jgAjz11FN48MEHMXToUBxyyCGm7/v374+LLroIzzzzDK6++mo89NBDlu+HDh2qrJlXUlKCadOmYcaMGZgxYwbOPPNMi5D64osvUFpailGjRinb161bNwwbNsz4V1Li/q7m1r+ffPIJ4vE47rjjDhx00EEYMWIE1q1b57jPMWPG+P69NmzYYBKBxxxzDHr06JH27/X666/jvvvuQzQaxemnn276vmfPnpg2bRoee+wx/OUvf8GDDz7ouc0i5513Ht5++22cffbZJpexH5qbm7Fs2TKMGzcupe0JISQX0AJIbKmoqMC1116LX/7ylygrK8MhhxyCzZs348svv8T555+P4cOHY9WqVZg5cyYOOOAAvPTSS4abzo7f/va3uOiii9CrVy/DwjJnzhzbwshHHXUUdu7ciS+//NLIru3fvz/+/Oc/49JLL0VjYyPOPvtsDBo0CGvWrME///lPdO7c2dYKqTNlyhTU1NTgpptuwo033mj67oorrsBxxx2HESNGYPv27XjrrbdMSQ1euOCCC4xt5syZY/n+vffew2GHHZaSVdQJp/4dNmwY2tracPfdd+Okk07CnDlz8MADDzju7ze/+Q0mTZqEoUOH4swzz0Q0GsXLL7+Ma6+9Vrn+uHHj0KNHD8yZMwcnnngigIRF7+9//zu+//3v4+STT8Zll12GYcOGYcuWLfjXv/5lXENO7LXXXjjooINw7bXX4rzzzjP12w033ID9998fo0aNQktLC1588UXfv5fOsccei82bN6OmpsZxveXLl2PBggWmZcOHD0enTp3wwQcfoLy83JO1kxBC8gUtgMSR66+/HldffTVuuOEG7LXXXvjBD36ATZs2AQBOPvlkXHnllbj00ksxduxYvP/++7Y13XSmTZuGv/zlL7jvvvswatQonHjiiUaSgIru3bvjtNNOsxTW/dnPfob//e9/WLt2LU477TSMHDkSF1xwAWpqavCLX/zC9bzC4TDOOeccxGIxnH322abvYrEYLrnkEuy111449thjMWLECNskCTuGDx+Ogw8+GCNHjsSECRMs38+cORMXXnihr316wal/9913X9x555247bbbsM8+++Dxxx/HLbfc4ri/I488Ek8//TSef/55jB07Ft/5znfw4Ycf2q4fiURw7rnnWn6vU045Be+//z5KS0vxwx/+ECNHjsRZZ52FhoYG3HTTTZ7OTXdVy7F5ZWVl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", - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"edf7ba91-84a6-4ac2-93ce-2ee849c5c4ef\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2658\"}],\"center\":[{\"id\":\"2661\"},{\"id\":\"2665\"},{\"id\":\"2697\"}],\"height\":300,\"left\":[{\"id\":\"2662\"}],\"renderers\":[{\"id\":\"2684\"}],\"title\":{\"id\":\"2686\"},\"toolbar\":{\"id\":\"2673\"},\"width\":990,\"x_range\":{\"id\":\"2650\"},\"x_scale\":{\"id\":\"2654\"},\"y_range\":{\"id\":\"2652\"},\"y_scale\":{\"id\":\"2656\"}},\"id\":\"2649\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2698\"}]},\"id\":\"2697\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"2692\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2672\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2689\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2681\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2689\"},\"group\":null,\"major_label_policy\":{\"id\":\"2690\"},\"ticker\":{\"id\":\"2663\"}},\"id\":\"2662\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2666\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2654\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2663\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2692\"},\"group\":null,\"major_label_policy\":{\"id\":\"2693\"},\"ticker\":{\"id\":\"2659\"}},\"id\":\"2658\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2682\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2693\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2695\",\"type\":\"Selection\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy) - Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2684\"}]},\"id\":\"2698\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2656\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"2662\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2665\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2686\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2680\"},\"glyph\":{\"id\":\"2681\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2683\"},\"nonselection_glyph\":{\"id\":\"2682\"},\"view\":{\"id\":\"2685\"}},\"id\":\"2684\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2695\"},\"selection_policy\":{\"id\":\"2694\"}},\"id\":\"2680\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2671\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2650\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2659\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2694\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2667\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2669\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"2680\"}},\"id\":\"2685\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"2672\"}},\"id\":\"2668\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2670\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis\":{\"id\":\"2658\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2661\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2690\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"2666\"},{\"id\":\"2667\"},{\"id\":\"2668\"},{\"id\":\"2669\"},{\"id\":\"2670\"},{\"id\":\"2671\"}]},\"id\":\"2673\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2652\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2683\",\"type\":\"Line\"}],\"root_ids\":[\"2649\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"edf7ba91-84a6-4ac2-93ce-2ee849c5c4ef\",\"root_ids\":[\"2649\"],\"roots\":{\"2649\":\"4cec7f7b-4cc4-49ce-ac47-cf33430f0eee\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "2649" + } }, - "metadata": {}, "output_type": "display_data" } ], "source": [ - "%matplotlib widget\n", - "plt.plot(meas_x, calc_y_cryspy-calc_y_crysfml, label='Icalc (CrysPy) - Icalc (CrysFML)')\n", - "plt.legend()" + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(meas_x, calc_y_cryspy-calc_y_crysfml, legend_label='Icalc (CrysPy) - Icalc (CrysFML)', color='grey', line_width=2)\n", + "show(fig)" ] }, { @@ -1078,4 +1657,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/examples/Simulation.ipynb b/examples/Simulation.ipynb index 15f33aae..d28fc1e6 100644 --- a/examples/Simulation.ipynb +++ b/examples/Simulation.ipynb @@ -19,7 +19,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /Users/andrewsazonov/Development/Projects/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", + "GSAS-II binary directory: /Users/asazonov/Developing/CrossPlatform/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" ] } @@ -27,12 +27,7 @@ "source": [ "# esyScience, technique-independent\n", "from easyCore import np\n", - "\n", - "try:\n", - " from easyDiffractionLib import Phase\n", - "except ImportError:\n", - " import sys, os\n", - " sys.path.append(os.path.abspath('..'))\n", + "from easyCore.Fitting.Fitting import Fitter\n", "\n", "# esyScience, diffraction\n", "from easyDiffractionLib import Site, Phase, Phases\n", @@ -45,7 +40,333 @@ "\n", "# Vizualization\n", "import py3Dmol\n", - "import matplotlib.pyplot as plt" + "from bokeh.io import show, output_notebook\n", + "from bokeh.plotting import figure" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "d76d50fc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " const JS_MIME_TYPE = 'application/javascript';\n", + " const HTML_MIME_TYPE = 'text/html';\n", + " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " const CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " const script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " const cell = handle.cell;\n", + "\n", + " const id = cell.output_area._bokeh_element_id;\n", + " const server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd_clean, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " const id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd_destroy);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " const output_area = handle.output_area;\n", + " const output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " const bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " const script_attrs = bk_div.children[0].attributes;\n", + " for (let i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " const toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " const events = require('base/js/events');\n", + " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"
    \\n\"+\n", + " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", + " \"
  • use INLINE resources instead, as so:
  • \\n\"+\n", + " \"
\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " const el = document.getElementById(\"1002\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error(url) {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error.bind(null, url);\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.0.min.js\"];\n", + " const css_urls = [];\n", + " \n", + "\n", + " const inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.0.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "output_notebook()\n", + "FIGURE_WIDTH = 990\n", + "FIGURE_HEIGHT = 300" ] }, { @@ -66,7 +387,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "41020330", "metadata": {}, "outputs": [], @@ -88,7 +409,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "1e2f3193", "metadata": {}, "outputs": [], @@ -110,7 +431,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "4231d16a", "metadata": {}, "outputs": [], @@ -128,16 +449,16 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "e68ddbea", "metadata": {}, "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + "

\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] @@ -184,10 +505,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -211,7 +532,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "id": "29071aa2", "metadata": {}, "outputs": [], @@ -238,7 +559,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "83e3845f", "metadata": {}, "outputs": [], @@ -263,7 +584,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "id": "70fa1571", "metadata": {}, "outputs": [], @@ -276,7 +597,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "id": "1ed88f8e", "metadata": {}, "outputs": [], @@ -286,7 +607,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "id": "784fb8e5", "metadata": {}, "outputs": [ @@ -312,7 +633,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "id": "c90662f7", "metadata": {}, "outputs": [ @@ -320,7 +641,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" + "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" ] } ], @@ -330,7 +651,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "id": "210bc79d", "metadata": {}, "outputs": [ @@ -367,2102 +688,183 @@ }, { "cell_type": "code", - "execution_count": 13, - "id": "398bbb91", + "execution_count": 14, + "id": "f556cc94", "metadata": {}, "outputs": [ { "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "/* global mpl */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function () {\n", - " if (typeof WebSocket !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof MozWebSocket !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert(\n", - " 'Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.'\n", - " );\n", - " }\n", - "};\n", - "\n", - "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = this.ws.binaryType !== undefined;\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById('mpl-warnings');\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent =\n", - " 'This browser does not support binary websocket messages. ' +\n", - " 'Performance may be slow.';\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = document.createElement('div');\n", - " this.root.setAttribute('style', 'display: inline-block');\n", - " this._root_extra_style(this.root);\n", - "\n", - " parent_element.appendChild(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message('supports_binary', { value: fig.supports_binary });\n", - " fig.send_message('send_image_mode', {});\n", - " if (fig.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", - " }\n", - " fig.send_message('refresh', {});\n", - " };\n", - "\n", - " this.imageObj.onload = function () {\n", - " if (fig.image_mode === 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function () {\n", - " fig.ws.close();\n", - " };\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "};\n", - "\n", - "mpl.figure.prototype._init_header = function () {\n", - " var titlebar = document.createElement('div');\n", - " titlebar.classList =\n", - " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", - " var titletext = document.createElement('div');\n", - " titletext.classList = 'ui-dialog-title';\n", - " titletext.setAttribute(\n", - " 'style',\n", - " 'width: 100%; text-align: center; padding: 3px;'\n", - " );\n", - " titlebar.appendChild(titletext);\n", - " this.root.appendChild(titlebar);\n", - " this.header = titletext;\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._init_canvas = function () {\n", - " var fig = this;\n", - "\n", - " var canvas_div = (this.canvas_div = document.createElement('div'));\n", - " canvas_div.setAttribute(\n", - " 'style',\n", - " 'border: 1px solid #ddd;' +\n", - " 'box-sizing: content-box;' +\n", - " 'clear: both;' +\n", - " 'min-height: 1px;' +\n", - " 'min-width: 1px;' +\n", - " 'outline: 0;' +\n", - " 'overflow: hidden;' +\n", - " 'position: relative;' +\n", - " 'resize: both;'\n", - " );\n", - "\n", - " function on_keyboard_event_closure(name) {\n", - " return function (event) {\n", - " return fig.key_event(event, name);\n", - " };\n", - " }\n", - "\n", - " canvas_div.addEventListener(\n", - " 'keydown',\n", - " on_keyboard_event_closure('key_press')\n", - " );\n", - " canvas_div.addEventListener(\n", - " 'keyup',\n", - " on_keyboard_event_closure('key_release')\n", - " );\n", - "\n", - " this._canvas_extra_style(canvas_div);\n", - " this.root.appendChild(canvas_div);\n", - "\n", - " var canvas = (this.canvas = document.createElement('canvas'));\n", - " canvas.classList.add('mpl-canvas');\n", - " canvas.setAttribute('style', 'box-sizing: content-box;');\n", - "\n", - " this.context = canvas.getContext('2d');\n", - "\n", - " var backingStore =\n", - " this.context.backingStorePixelRatio ||\n", - " this.context.webkitBackingStorePixelRatio ||\n", - " this.context.mozBackingStorePixelRatio ||\n", - " this.context.msBackingStorePixelRatio ||\n", - " this.context.oBackingStorePixelRatio ||\n", - " this.context.backingStorePixelRatio ||\n", - " 1;\n", - "\n", - " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", - " 'canvas'\n", - " ));\n", - " rubberband_canvas.setAttribute(\n", - " 'style',\n", - " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", - " );\n", - "\n", - " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", - " if (this.ResizeObserver === undefined) {\n", - " if (window.ResizeObserver !== undefined) {\n", - " this.ResizeObserver = window.ResizeObserver;\n", - " } else {\n", - " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", - " this.ResizeObserver = obs.ResizeObserver;\n", - " }\n", - " }\n", - "\n", - " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", - " var nentries = entries.length;\n", - " for (var i = 0; i < nentries; i++) {\n", - " var entry = entries[i];\n", - " var width, height;\n", - " if (entry.contentBoxSize) {\n", - " if (entry.contentBoxSize instanceof Array) {\n", - " // Chrome 84 implements new version of spec.\n", - " width = entry.contentBoxSize[0].inlineSize;\n", - " height = entry.contentBoxSize[0].blockSize;\n", - " } else {\n", - " // Firefox implements old version of spec.\n", - " width = entry.contentBoxSize.inlineSize;\n", - " height = entry.contentBoxSize.blockSize;\n", - " }\n", - " } else {\n", - " // Chrome <84 implements even older version of spec.\n", - " width = entry.contentRect.width;\n", - " height = entry.contentRect.height;\n", - " }\n", - "\n", - " // Keep the size of the canvas and rubber band canvas in sync with\n", - " // the canvas container.\n", - " if (entry.devicePixelContentBoxSize) {\n", - " // Chrome 84 implements new version of spec.\n", - " canvas.setAttribute(\n", - " 'width',\n", - " entry.devicePixelContentBoxSize[0].inlineSize\n", - " );\n", - " canvas.setAttribute(\n", - " 'height',\n", - " entry.devicePixelContentBoxSize[0].blockSize\n", - " );\n", - " } else {\n", - " canvas.setAttribute('width', width * fig.ratio);\n", - " canvas.setAttribute('height', height * fig.ratio);\n", - " }\n", - " canvas.setAttribute(\n", - " 'style',\n", - " 'width: ' + width + 'px; height: ' + height + 'px;'\n", - " );\n", - "\n", - " rubberband_canvas.setAttribute('width', width);\n", - " rubberband_canvas.setAttribute('height', height);\n", - "\n", - " // And update the size in Python. We ignore the initial 0/0 size\n", - " // that occurs as the element is placed into the DOM, which should\n", - " // otherwise not happen due to the minimum size styling.\n", - " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", - " fig.request_resize(width, height);\n", - " }\n", - " }\n", - " });\n", - " this.resizeObserverInstance.observe(canvas_div);\n", - "\n", - " function on_mouse_event_closure(name) {\n", - " return function (event) {\n", - " return fig.mouse_event(event, name);\n", - " };\n", - " }\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mousedown',\n", - " on_mouse_event_closure('button_press')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseup',\n", - " on_mouse_event_closure('button_release')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'dblclick',\n", - " on_mouse_event_closure('dblclick')\n", - " );\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband_canvas.addEventListener(\n", - " 'mousemove',\n", - " on_mouse_event_closure('motion_notify')\n", - " );\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseenter',\n", - " on_mouse_event_closure('figure_enter')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseleave',\n", - " on_mouse_event_closure('figure_leave')\n", - " );\n", - "\n", - " canvas_div.addEventListener('wheel', function (event) {\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " on_mouse_event_closure('scroll')(event);\n", - " });\n", - "\n", - " canvas_div.appendChild(canvas);\n", - " canvas_div.appendChild(rubberband_canvas);\n", - "\n", - " this.rubberband_context = rubberband_canvas.getContext('2d');\n", - " this.rubberband_context.strokeStyle = '#000000';\n", - "\n", - " this._resize_canvas = function (width, height, forward) {\n", - " if (forward) {\n", - " canvas_div.style.width = width + 'px';\n", - " canvas_div.style.height = height + 'px';\n", - " }\n", - " };\n", - "\n", - " // Disable right mouse context menu.\n", - " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", - " event.preventDefault();\n", - " return false;\n", - " });\n", - "\n", - " function set_focus() {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", + "text/html": [ "\n", - " window.setTimeout(set_focus, 100);\n", - "};\n", "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'mpl-toolbar';\n", - " this.root.appendChild(toolbar);\n", "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"1602a6ca-fbcf-4e1b-9eac-82bf074cba5b\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1051\"}],\"height\":300,\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"width\":990,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1052\"}]},\"id\":\"1051\",\"type\":\"Legend\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{\"label\":{\"value\":\"CW Simulation\"},\"renderers\":[{\"id\":\"1038\"}]},\"id\":\"1052\",\"type\":\"LegendItem\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4PXGYM2z2T8fcJdvRej9PxPMl6nq4+k/1HNfWKmsoD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdLadmZyL0T+2feDjKELzP7rkpnDKIdY/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGehThclepk/56Q1M4Fo+T+JQdIURT7kPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7oh5wy490z/4UlnFhUERQBLNKX//trg/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/7g/f1A5c/Udv0pISm8D8Zh/gpKHTcPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"1602a6ca-fbcf-4e1b-9eac-82bf074cba5b\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"02da6718-2af4-4a8b-ad84-a7bf5ba675c9\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1003" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "x_data = np.linspace(20, 170, 500)\n", + "y_data = calculator.fit_func(x_data)\n", + "\n", + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(x_data, y_data, legend_label='CW Simulation', color='orangered', line_width=2)\n", + "show(fig)" + ] + }, + { + "cell_type": "markdown", + "id": "0f2cb72f", + "metadata": {}, + "source": [ + "## --- Experiment ---" + ] + }, + { + "cell_type": "markdown", + "id": "161efebd", + "metadata": {}, + "source": [ + "#### Modify the parameters to correspond to a TOF experiment" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "59381e83", + "metadata": {}, + "outputs": [], + "source": [ + "parameters = TOFParams.default()\n", + "\n", + "parameters.length_a = 5.6402\n", + "parameters.dtt1 = 6167.24700\n", + "parameters.dtt2 = -2.28000\n", + "parameters.ttheta_bank = 145.00" + ] + }, + { + "cell_type": "markdown", + "id": "ea998649", + "metadata": {}, + "source": [ + "#### Create new job (TOF) with new parameters, but old phase and calculator objects" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "2aa1648d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" + ] + } + ], + "source": [ + "job_tof = Job(phases=phases, parameters=parameters, calculator=calculator)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9d612a23", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Available calculator engines: ['CrysPy', 'CrysFML', 'GSASII']\n", + "Available calculators for TOF: ['CrysPy']\n" + ] + } + ], + "source": [ + "print(f\"Available calculator engines: {calculator.available_interfaces}\")\n", + "print(f\"Available calculators for TOF: {calculator.interface_compatability('Npowder1DTOF')}\")" + ] + }, + { + "cell_type": "markdown", + "id": "2245224b", + "metadata": {}, + "source": [ + "## --- Analysis ---" + ] + }, + { + "cell_type": "markdown", + "id": "f6676f54", + "metadata": {}, + "source": [ + "#### Calculate the profile again, this time based on the TOF parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "eac224b9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " continue;\n", - " }\n", "\n", - " var button = (fig.buttons[name] = document.createElement('button'));\n", - " button.classList = 'mpl-widget';\n", - " button.setAttribute('role', 'button');\n", - " button.setAttribute('aria-disabled', 'false');\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", "\n", - " var icon_img = document.createElement('img');\n", - " icon_img.src = '_images/' + image + '.png';\n", - " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", - " icon_img.alt = tooltip;\n", - " button.appendChild(icon_img);\n", "\n", - " buttonGroup.appendChild(button);\n", - " }\n", "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", "\n", - " var fmt_picker = document.createElement('select');\n", - " fmt_picker.classList = 'mpl-widget';\n", - " toolbar.appendChild(fmt_picker);\n", - " this.format_dropdown = fmt_picker;\n", - "\n", - " for (var ind in mpl.extensions) {\n", - " var fmt = mpl.extensions[ind];\n", - " var option = document.createElement('option');\n", - " option.selected = fmt === mpl.default_extension;\n", - " option.innerHTML = fmt;\n", - " fmt_picker.appendChild(option);\n", - " }\n", - "\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "};\n", - "\n", - "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", - " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", - " // which will in turn request a refresh of the image.\n", - " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", - "};\n", - "\n", - "mpl.figure.prototype.send_message = function (type, properties) {\n", - " properties['type'] = type;\n", - " properties['figure_id'] = this.id;\n", - " this.ws.send(JSON.stringify(properties));\n", - "};\n", - "\n", - "mpl.figure.prototype.send_draw_message = function () {\n", - " if (!this.waiting) {\n", - " this.waiting = true;\n", - " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " var format_dropdown = fig.format_dropdown;\n", - " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", - " fig.ondownload(fig, format);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", - " var size = msg['size'];\n", - " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", - " fig._resize_canvas(size[0], size[1], msg['forward']);\n", - " fig.send_message('refresh', {});\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", - " var x0 = msg['x0'] / fig.ratio;\n", - " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", - " var x1 = msg['x1'] / fig.ratio;\n", - " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", - " x0 = Math.floor(x0) + 0.5;\n", - " y0 = Math.floor(y0) + 0.5;\n", - " x1 = Math.floor(x1) + 0.5;\n", - " y1 = Math.floor(y1) + 0.5;\n", - " var min_x = Math.min(x0, x1);\n", - " var min_y = Math.min(y0, y1);\n", - " var width = Math.abs(x1 - x0);\n", - " var height = Math.abs(y1 - y0);\n", - "\n", - " fig.rubberband_context.clearRect(\n", - " 0,\n", - " 0,\n", - " fig.canvas.width / fig.ratio,\n", - " fig.canvas.height / fig.ratio\n", - " );\n", - "\n", - " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", - " // Updates the figure title.\n", - " fig.header.textContent = msg['label'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", - " var cursor = msg['cursor'];\n", - " switch (cursor) {\n", - " case 0:\n", - " cursor = 'pointer';\n", - " break;\n", - " case 1:\n", - " cursor = 'default';\n", - " break;\n", - " case 2:\n", - " cursor = 'crosshair';\n", - " break;\n", - " case 3:\n", - " cursor = 'move';\n", - " break;\n", - " }\n", - " fig.rubberband_canvas.style.cursor = cursor;\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_message = function (fig, msg) {\n", - " fig.message.textContent = msg['message'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", - " // Request the server to send over a new figure.\n", - " fig.send_draw_message();\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", - " fig.image_mode = msg['mode'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", - " for (var key in msg) {\n", - " if (!(key in fig.buttons)) {\n", - " continue;\n", - " }\n", - " fig.buttons[key].disabled = !msg[key];\n", - " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", - " if (msg['mode'] === 'PAN') {\n", - " fig.buttons['Pan'].classList.add('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " } else if (msg['mode'] === 'ZOOM') {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.add('active');\n", - " } else {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Called whenever the canvas gets updated.\n", - " this.send_message('ack', {});\n", - "};\n", - "\n", - "// A function to construct a web socket function for onmessage handling.\n", - "// Called in the figure constructor.\n", - "mpl.figure.prototype._make_on_message_function = function (fig) {\n", - " return function socket_on_message(evt) {\n", - " if (evt.data instanceof Blob) {\n", - " var img = evt.data;\n", - " if (img.type !== 'image/png') {\n", - " /* FIXME: We get \"Resource interpreted as Image but\n", - " * transferred with MIME type text/plain:\" errors on\n", - " * Chrome. But how to set the MIME type? It doesn't seem\n", - " * to be part of the websocket stream */\n", - " img.type = 'image/png';\n", - " }\n", - "\n", - " /* Free the memory for the previous frames */\n", - " if (fig.imageObj.src) {\n", - " (window.URL || window.webkitURL).revokeObjectURL(\n", - " fig.imageObj.src\n", - " );\n", - " }\n", - "\n", - " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", - " img\n", - " );\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " } else if (\n", - " typeof evt.data === 'string' &&\n", - " evt.data.slice(0, 21) === 'data:image/png;base64'\n", - " ) {\n", - " fig.imageObj.src = evt.data;\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - "\n", - " var msg = JSON.parse(evt.data);\n", - " var msg_type = msg['type'];\n", - "\n", - " // Call the \"handle_{type}\" callback, which takes\n", - " // the figure and JSON message as its only arguments.\n", - " try {\n", - " var callback = fig['handle_' + msg_type];\n", - " } catch (e) {\n", - " console.log(\n", - " \"No handler for the '\" + msg_type + \"' message type: \",\n", - " msg\n", - " );\n", - " return;\n", - " }\n", - "\n", - " if (callback) {\n", - " try {\n", - " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", - " callback(fig, msg);\n", - " } catch (e) {\n", - " console.log(\n", - " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", - " e,\n", - " e.stack,\n", - " msg\n", - " );\n", - " }\n", - " }\n", - " };\n", - "};\n", - "\n", - "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", - "mpl.findpos = function (e) {\n", - " //this section is from http://www.quirksmode.org/js/events_properties.html\n", - " var targ;\n", - " if (!e) {\n", - " e = window.event;\n", - " }\n", - " if (e.target) {\n", - " targ = e.target;\n", - " } else if (e.srcElement) {\n", - " targ = e.srcElement;\n", - " }\n", - " if (targ.nodeType === 3) {\n", - " // defeat Safari bug\n", - " targ = targ.parentNode;\n", - " }\n", - "\n", - " // pageX,Y are the mouse positions relative to the document\n", - " var boundingRect = targ.getBoundingClientRect();\n", - " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", - " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", - "\n", - " return { x: x, y: y };\n", - "};\n", - "\n", - "/*\n", - " * return a copy of an object with only non-object keys\n", - " * we need this to avoid circular references\n", - " * http://stackoverflow.com/a/24161582/3208463\n", - " */\n", - "function simpleKeys(original) {\n", - " return Object.keys(original).reduce(function (obj, key) {\n", - " if (typeof original[key] !== 'object') {\n", - " obj[key] = original[key];\n", - " }\n", - " return obj;\n", - " }, {});\n", - "}\n", - "\n", - "mpl.figure.prototype.mouse_event = function (event, name) {\n", - " var canvas_pos = mpl.findpos(event);\n", - "\n", - " if (name === 'button_press') {\n", - " this.canvas.focus();\n", - " this.canvas_div.focus();\n", - " }\n", - "\n", - " var x = canvas_pos.x * this.ratio;\n", - " var y = canvas_pos.y * this.ratio;\n", - "\n", - " this.send_message(name, {\n", - " x: x,\n", - " y: y,\n", - " button: event.button,\n", - " step: event.step,\n", - " guiEvent: simpleKeys(event),\n", - " });\n", - "\n", - " /* This prevents the web browser from automatically changing to\n", - " * the text insertion cursor when the button is pressed. We want\n", - " * to control all of the cursor setting manually through the\n", - " * 'cursor' event from matplotlib */\n", - " event.preventDefault();\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", - " // Handle any extra behaviour associated with a key event\n", - "};\n", - "\n", - "mpl.figure.prototype.key_event = function (event, name) {\n", - " // Prevent repeat events\n", - " if (name === 'key_press') {\n", - " if (event.key === this._key) {\n", - " return;\n", - " } else {\n", - " this._key = event.key;\n", - " }\n", - " }\n", - " if (name === 'key_release') {\n", - " this._key = null;\n", - " }\n", - "\n", - " var value = '';\n", - " if (event.ctrlKey && event.key !== 'Control') {\n", - " value += 'ctrl+';\n", - " }\n", - " else if (event.altKey && event.key !== 'Alt') {\n", - " value += 'alt+';\n", - " }\n", - " else if (event.shiftKey && event.key !== 'Shift') {\n", - " value += 'shift+';\n", - " }\n", - "\n", - " value += 'k' + event.key;\n", - "\n", - " this._key_event_extra(event, name);\n", - "\n", - " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", - " if (name === 'download') {\n", - " this.handle_save(this, null);\n", - " } else {\n", - " this.send_message('toolbar_button', { name: name });\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", - " this.message.textContent = tooltip;\n", - "};\n", - "\n", - "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", - "// prettier-ignore\n", - "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", - "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", - "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", - "\n", - "mpl.default_extension = \"png\";/* global mpl */\n", - "\n", - "var comm_websocket_adapter = function (comm) {\n", - " // Create a \"websocket\"-like object which calls the given IPython comm\n", - " // object with the appropriate methods. Currently this is a non binary\n", - " // socket, so there is still some room for performance tuning.\n", - " var ws = {};\n", - "\n", - " ws.binaryType = comm.kernel.ws.binaryType;\n", - " ws.readyState = comm.kernel.ws.readyState;\n", - " function updateReadyState(_event) {\n", - " if (comm.kernel.ws) {\n", - " ws.readyState = comm.kernel.ws.readyState;\n", - " } else {\n", - " ws.readyState = 3; // Closed state.\n", - " }\n", - " }\n", - " comm.kernel.ws.addEventListener('open', updateReadyState);\n", - " comm.kernel.ws.addEventListener('close', updateReadyState);\n", - " comm.kernel.ws.addEventListener('error', updateReadyState);\n", - "\n", - " ws.close = function () {\n", - " comm.close();\n", - " };\n", - " ws.send = function (m) {\n", - " //console.log('sending', m);\n", - " comm.send(m);\n", - " };\n", - " // Register the callback with on_msg.\n", - " comm.on_msg(function (msg) {\n", - " //console.log('receiving', msg['content']['data'], msg);\n", - " var data = msg['content']['data'];\n", - " if (data['blob'] !== undefined) {\n", - " data = {\n", - " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", - " };\n", - " }\n", - " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", - " ws.onmessage(data);\n", - " });\n", - " return ws;\n", - "};\n", - "\n", - "mpl.mpl_figure_comm = function (comm, msg) {\n", - " // This is the function which gets called when the mpl process\n", - " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", - "\n", - " var id = msg.content.data.id;\n", - " // Get hold of the div created by the display call when the Comm\n", - " // socket was opened in Python.\n", - " var element = document.getElementById(id);\n", - " var ws_proxy = comm_websocket_adapter(comm);\n", - "\n", - " function ondownload(figure, _format) {\n", - " window.open(figure.canvas.toDataURL());\n", - " }\n", - "\n", - " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", - "\n", - " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", - " // web socket which is closed, not our websocket->open comm proxy.\n", - " ws_proxy.onopen();\n", - "\n", - " fig.parent_element = element;\n", - " fig.cell_info = mpl.find_output_cell(\"
\");\n", - " if (!fig.cell_info) {\n", - " console.error('Failed to find cell for figure', id, fig);\n", - " return;\n", - " }\n", - " fig.cell_info[0].output_area.element.on(\n", - " 'cleared',\n", - " { fig: fig },\n", - " fig._remove_fig_handler\n", - " );\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_close = function (fig, msg) {\n", - " var width = fig.canvas.width / fig.ratio;\n", - " fig.cell_info[0].output_area.element.off(\n", - " 'cleared',\n", - " fig._remove_fig_handler\n", - " );\n", - " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", - "\n", - " // Update the output cell to use the data from the current canvas.\n", - " fig.push_to_output();\n", - " var dataURL = fig.canvas.toDataURL();\n", - " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", - " // the notebook keyboard shortcuts fail.\n", - " IPython.keyboard_manager.enable();\n", - " fig.parent_element.innerHTML =\n", - " '';\n", - " fig.close_ws(fig, msg);\n", - "};\n", - "\n", - "mpl.figure.prototype.close_ws = function (fig, msg) {\n", - " fig.send_message('closing', msg);\n", - " // fig.ws.close()\n", - "};\n", - "\n", - "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", - " // Turn the data on the canvas into data in the output cell.\n", - " var width = this.canvas.width / this.ratio;\n", - " var dataURL = this.canvas.toDataURL();\n", - " this.cell_info[1]['text/html'] =\n", - " '';\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Tell IPython that the notebook contents must change.\n", - " IPython.notebook.set_dirty(true);\n", - " this.send_message('ack', {});\n", - " var fig = this;\n", - " // Wait a second, then push the new image to the DOM so\n", - " // that it is saved nicely (might be nice to debounce this).\n", - " setTimeout(function () {\n", - " fig.push_to_output();\n", - " }, 1000);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'btn-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " var button;\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " continue;\n", - " }\n", - "\n", - " button = fig.buttons[name] = document.createElement('button');\n", - " button.classList = 'btn btn-default';\n", - " button.href = '#';\n", - " button.title = name;\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message pull-right';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = document.createElement('div');\n", - " buttongrp.classList = 'btn-group inline pull-right';\n", - " button = document.createElement('button');\n", - " button.classList = 'btn btn-mini btn-primary';\n", - " button.href = '#';\n", - " button.title = 'Stop Interaction';\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', function (_evt) {\n", - " fig.handle_close(fig, {});\n", - " });\n", - " button.addEventListener(\n", - " 'mouseover',\n", - " on_mouseover_closure('Stop Interaction')\n", - " );\n", - " buttongrp.appendChild(button);\n", - " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", - " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", - "};\n", - "\n", - "mpl.figure.prototype._remove_fig_handler = function (event) {\n", - " var fig = event.data.fig;\n", - " if (event.target !== this) {\n", - " // Ignore bubbled events from children.\n", - " return;\n", - " }\n", - " fig.close_ws(fig, {});\n", - "};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (el) {\n", - " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (el) {\n", - " // this is important to make the div 'focusable\n", - " el.setAttribute('tabindex', 0);\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " } else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager) {\n", - " manager = IPython.keyboard_manager;\n", - " }\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which === 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " fig.ondownload(fig, null);\n", - "};\n", - "\n", - "mpl.find_output_cell = function (html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i = 0; i < ncells; i++) {\n", - " var cell = cells[i];\n", - " if (cell.cell_type === 'code') {\n", - " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", - " var data = cell.output_area.outputs[j];\n", - " if (data.data) {\n", - " // IPython >= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] === html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "};\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel !== null) {\n", - " IPython.notebook.kernel.comm_manager.register_target(\n", - " 'matplotlib',\n", - " mpl.mpl_figure_comm\n", - " );\n", - "}\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x_data = np.linspace(20, 170, 500)\n", - "y_data = calculator.fit_func(x_data)\n", - "\n", - "%matplotlib notebook\n", - "plt.plot(x_data, y_data, label='CW Simulation')\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "id": "0f2cb72f", - "metadata": {}, - "source": [ - "## --- Experiment ---" - ] - }, - { - "cell_type": "markdown", - "id": "161efebd", - "metadata": {}, - "source": [ - "#### Modify the parameters to correspond to a TOF experiment" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "59381e83", - "metadata": {}, - "outputs": [], - "source": [ - "parameters = TOFParams.default()\n", - "\n", - "parameters.length_a = 5.6402\n", - "parameters.dtt1 = 6167.24700\n", - "parameters.dtt2 = -2.28000\n", - "parameters.ttheta_bank = 145.00" - ] - }, - { - "cell_type": "markdown", - "id": "ea998649", - "metadata": {}, - "source": [ - "#### Create new job (TOF) with new parameters, but old phase and calculator objects" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "2aa1648d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Temp CIF: /var/folders/vj/bjjkqpsx4js6s242h0t_h45sf5f66_/T/easydiffraction_temp.cif\n" - ] - } - ], - "source": [ - "job_tof = Job(phases=phases, parameters=parameters, calculator=calculator)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "9d612a23", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Available calculator engines: ['CrysPy', 'CrysFML', 'GSASII']\n", - "Available calculators for TOF: ['CrysPy']\n" - ] - } - ], - "source": [ - "print(f\"Available calculator engines: {calculator.available_interfaces}\")\n", - "print(f\"Available calculators for TOF: {calculator.interface_compatability('Npowder1DTOF')}\")" - ] - }, - { - "cell_type": "markdown", - "id": "2245224b", - "metadata": {}, - "source": [ - "## --- Analysis ---" - ] - }, - { - "cell_type": "markdown", - "id": "f6676f54", - "metadata": {}, - "source": [ - "#### Calculate the profile again, this time based on the TOF parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "eac224b9", - "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "/* global mpl */\n", - "window.mpl = {};\n", - "\n", - "mpl.get_websocket_type = function () {\n", - " if (typeof WebSocket !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof MozWebSocket !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert(\n", - " 'Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.'\n", - " );\n", - " }\n", - "};\n", - "\n", - "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = this.ws.binaryType !== undefined;\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById('mpl-warnings');\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent =\n", - " 'This browser does not support binary websocket messages. ' +\n", - " 'Performance may be slow.';\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = document.createElement('div');\n", - " this.root.setAttribute('style', 'display: inline-block');\n", - " this._root_extra_style(this.root);\n", - "\n", - " parent_element.appendChild(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message('supports_binary', { value: fig.supports_binary });\n", - " fig.send_message('send_image_mode', {});\n", - " if (fig.ratio !== 1) {\n", - " fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n", - " }\n", - " fig.send_message('refresh', {});\n", - " };\n", - "\n", - " this.imageObj.onload = function () {\n", - " if (fig.image_mode === 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function () {\n", - " fig.ws.close();\n", - " };\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "};\n", - "\n", - "mpl.figure.prototype._init_header = function () {\n", - " var titlebar = document.createElement('div');\n", - " titlebar.classList =\n", - " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", - " var titletext = document.createElement('div');\n", - " titletext.classList = 'ui-dialog-title';\n", - " titletext.setAttribute(\n", - " 'style',\n", - " 'width: 100%; text-align: center; padding: 3px;'\n", - " );\n", - " titlebar.appendChild(titletext);\n", - " this.root.appendChild(titlebar);\n", - " this.header = titletext;\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", - "\n", - "mpl.figure.prototype._init_canvas = function () {\n", - " var fig = this;\n", - "\n", - " var canvas_div = (this.canvas_div = document.createElement('div'));\n", - " canvas_div.setAttribute(\n", - " 'style',\n", - " 'border: 1px solid #ddd;' +\n", - " 'box-sizing: content-box;' +\n", - " 'clear: both;' +\n", - " 'min-height: 1px;' +\n", - " 'min-width: 1px;' +\n", - " 'outline: 0;' +\n", - " 'overflow: hidden;' +\n", - " 'position: relative;' +\n", - " 'resize: both;'\n", - " );\n", - "\n", - " function on_keyboard_event_closure(name) {\n", - " return function (event) {\n", - " return fig.key_event(event, name);\n", - " };\n", - " }\n", - "\n", - " canvas_div.addEventListener(\n", - " 'keydown',\n", - " on_keyboard_event_closure('key_press')\n", - " );\n", - " canvas_div.addEventListener(\n", - " 'keyup',\n", - " on_keyboard_event_closure('key_release')\n", - " );\n", - "\n", - " this._canvas_extra_style(canvas_div);\n", - " this.root.appendChild(canvas_div);\n", - "\n", - " var canvas = (this.canvas = document.createElement('canvas'));\n", - " canvas.classList.add('mpl-canvas');\n", - " canvas.setAttribute('style', 'box-sizing: content-box;');\n", - "\n", - " this.context = canvas.getContext('2d');\n", - "\n", - " var backingStore =\n", - " this.context.backingStorePixelRatio ||\n", - " this.context.webkitBackingStorePixelRatio ||\n", - " this.context.mozBackingStorePixelRatio ||\n", - " this.context.msBackingStorePixelRatio ||\n", - " this.context.oBackingStorePixelRatio ||\n", - " this.context.backingStorePixelRatio ||\n", - " 1;\n", - "\n", - " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", - " 'canvas'\n", - " ));\n", - " rubberband_canvas.setAttribute(\n", - " 'style',\n", - " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", - " );\n", - "\n", - " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", - " if (this.ResizeObserver === undefined) {\n", - " if (window.ResizeObserver !== undefined) {\n", - " this.ResizeObserver = window.ResizeObserver;\n", - " } else {\n", - " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", - " this.ResizeObserver = obs.ResizeObserver;\n", - " }\n", - " }\n", - "\n", - " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", - " var nentries = entries.length;\n", - " for (var i = 0; i < nentries; i++) {\n", - " var entry = entries[i];\n", - " var width, height;\n", - " if (entry.contentBoxSize) {\n", - " if (entry.contentBoxSize instanceof Array) {\n", - " // Chrome 84 implements new version of spec.\n", - " width = entry.contentBoxSize[0].inlineSize;\n", - " height = entry.contentBoxSize[0].blockSize;\n", - " } else {\n", - " // Firefox implements old version of spec.\n", - " width = entry.contentBoxSize.inlineSize;\n", - " height = entry.contentBoxSize.blockSize;\n", - " }\n", - " } else {\n", - " // Chrome <84 implements even older version of spec.\n", - " width = entry.contentRect.width;\n", - " height = entry.contentRect.height;\n", - " }\n", - "\n", - " // Keep the size of the canvas and rubber band canvas in sync with\n", - " // the canvas container.\n", - " if (entry.devicePixelContentBoxSize) {\n", - " // Chrome 84 implements new version of spec.\n", - " canvas.setAttribute(\n", - " 'width',\n", - " entry.devicePixelContentBoxSize[0].inlineSize\n", - " );\n", - " canvas.setAttribute(\n", - " 'height',\n", - " entry.devicePixelContentBoxSize[0].blockSize\n", - " );\n", - " } else {\n", - " canvas.setAttribute('width', width * fig.ratio);\n", - " canvas.setAttribute('height', height * fig.ratio);\n", - " }\n", - " canvas.setAttribute(\n", - " 'style',\n", - " 'width: ' + width + 'px; height: ' + height + 'px;'\n", - " );\n", - "\n", - " rubberband_canvas.setAttribute('width', width);\n", - " rubberband_canvas.setAttribute('height', height);\n", - "\n", - " // And update the size in Python. We ignore the initial 0/0 size\n", - " // that occurs as the element is placed into the DOM, which should\n", - " // otherwise not happen due to the minimum size styling.\n", - " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", - " fig.request_resize(width, height);\n", - " }\n", - " }\n", - " });\n", - " this.resizeObserverInstance.observe(canvas_div);\n", - "\n", - " function on_mouse_event_closure(name) {\n", - " return function (event) {\n", - " return fig.mouse_event(event, name);\n", - " };\n", - " }\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mousedown',\n", - " on_mouse_event_closure('button_press')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseup',\n", - " on_mouse_event_closure('button_release')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'dblclick',\n", - " on_mouse_event_closure('dblclick')\n", - " );\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband_canvas.addEventListener(\n", - " 'mousemove',\n", - " on_mouse_event_closure('motion_notify')\n", - " );\n", - "\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseenter',\n", - " on_mouse_event_closure('figure_enter')\n", - " );\n", - " rubberband_canvas.addEventListener(\n", - " 'mouseleave',\n", - " on_mouse_event_closure('figure_leave')\n", - " );\n", - "\n", - " canvas_div.addEventListener('wheel', function (event) {\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " on_mouse_event_closure('scroll')(event);\n", - " });\n", - "\n", - " canvas_div.appendChild(canvas);\n", - " canvas_div.appendChild(rubberband_canvas);\n", - "\n", - " this.rubberband_context = rubberband_canvas.getContext('2d');\n", - " this.rubberband_context.strokeStyle = '#000000';\n", - "\n", - " this._resize_canvas = function (width, height, forward) {\n", - " if (forward) {\n", - " canvas_div.style.width = width + 'px';\n", - " canvas_div.style.height = height + 'px';\n", - " }\n", - " };\n", - "\n", - " // Disable right mouse context menu.\n", - " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", - " event.preventDefault();\n", - " return false;\n", - " });\n", - "\n", - " function set_focus() {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'mpl-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'mpl-button-group';\n", - " continue;\n", - " }\n", - "\n", - " var button = (fig.buttons[name] = document.createElement('button'));\n", - " button.classList = 'mpl-widget';\n", - " button.setAttribute('role', 'button');\n", - " button.setAttribute('aria-disabled', 'false');\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - "\n", - " var icon_img = document.createElement('img');\n", - " icon_img.src = '_images/' + image + '.png';\n", - " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", - " icon_img.alt = tooltip;\n", - " button.appendChild(icon_img);\n", - "\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " var fmt_picker = document.createElement('select');\n", - " fmt_picker.classList = 'mpl-widget';\n", - " toolbar.appendChild(fmt_picker);\n", - " this.format_dropdown = fmt_picker;\n", - "\n", - " for (var ind in mpl.extensions) {\n", - " var fmt = mpl.extensions[ind];\n", - " var option = document.createElement('option');\n", - " option.selected = fmt === mpl.default_extension;\n", - " option.innerHTML = fmt;\n", - " fmt_picker.appendChild(option);\n", - " }\n", - "\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "};\n", - "\n", - "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", - " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", - " // which will in turn request a refresh of the image.\n", - " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", - "};\n", - "\n", - "mpl.figure.prototype.send_message = function (type, properties) {\n", - " properties['type'] = type;\n", - " properties['figure_id'] = this.id;\n", - " this.ws.send(JSON.stringify(properties));\n", - "};\n", - "\n", - "mpl.figure.prototype.send_draw_message = function () {\n", - " if (!this.waiting) {\n", - " this.waiting = true;\n", - " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " var format_dropdown = fig.format_dropdown;\n", - " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", - " fig.ondownload(fig, format);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", - " var size = msg['size'];\n", - " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", - " fig._resize_canvas(size[0], size[1], msg['forward']);\n", - " fig.send_message('refresh', {});\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", - " var x0 = msg['x0'] / fig.ratio;\n", - " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", - " var x1 = msg['x1'] / fig.ratio;\n", - " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", - " x0 = Math.floor(x0) + 0.5;\n", - " y0 = Math.floor(y0) + 0.5;\n", - " x1 = Math.floor(x1) + 0.5;\n", - " y1 = Math.floor(y1) + 0.5;\n", - " var min_x = Math.min(x0, x1);\n", - " var min_y = Math.min(y0, y1);\n", - " var width = Math.abs(x1 - x0);\n", - " var height = Math.abs(y1 - y0);\n", - "\n", - " fig.rubberband_context.clearRect(\n", - " 0,\n", - " 0,\n", - " fig.canvas.width / fig.ratio,\n", - " fig.canvas.height / fig.ratio\n", - " );\n", - "\n", - " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", - " // Updates the figure title.\n", - " fig.header.textContent = msg['label'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", - " var cursor = msg['cursor'];\n", - " switch (cursor) {\n", - " case 0:\n", - " cursor = 'pointer';\n", - " break;\n", - " case 1:\n", - " cursor = 'default';\n", - " break;\n", - " case 2:\n", - " cursor = 'crosshair';\n", - " break;\n", - " case 3:\n", - " cursor = 'move';\n", - " break;\n", - " }\n", - " fig.rubberband_canvas.style.cursor = cursor;\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_message = function (fig, msg) {\n", - " fig.message.textContent = msg['message'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", - " // Request the server to send over a new figure.\n", - " fig.send_draw_message();\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", - " fig.image_mode = msg['mode'];\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", - " for (var key in msg) {\n", - " if (!(key in fig.buttons)) {\n", - " continue;\n", - " }\n", - " fig.buttons[key].disabled = !msg[key];\n", - " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", - " if (msg['mode'] === 'PAN') {\n", - " fig.buttons['Pan'].classList.add('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " } else if (msg['mode'] === 'ZOOM') {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.add('active');\n", - " } else {\n", - " fig.buttons['Pan'].classList.remove('active');\n", - " fig.buttons['Zoom'].classList.remove('active');\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Called whenever the canvas gets updated.\n", - " this.send_message('ack', {});\n", - "};\n", - "\n", - "// A function to construct a web socket function for onmessage handling.\n", - "// Called in the figure constructor.\n", - "mpl.figure.prototype._make_on_message_function = function (fig) {\n", - " return function socket_on_message(evt) {\n", - " if (evt.data instanceof Blob) {\n", - " var img = evt.data;\n", - " if (img.type !== 'image/png') {\n", - " /* FIXME: We get \"Resource interpreted as Image but\n", - " * transferred with MIME type text/plain:\" errors on\n", - " * Chrome. But how to set the MIME type? It doesn't seem\n", - " * to be part of the websocket stream */\n", - " img.type = 'image/png';\n", - " }\n", - "\n", - " /* Free the memory for the previous frames */\n", - " if (fig.imageObj.src) {\n", - " (window.URL || window.webkitURL).revokeObjectURL(\n", - " fig.imageObj.src\n", - " );\n", - " }\n", - "\n", - " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", - " img\n", - " );\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " } else if (\n", - " typeof evt.data === 'string' &&\n", - " evt.data.slice(0, 21) === 'data:image/png;base64'\n", - " ) {\n", - " fig.imageObj.src = evt.data;\n", - " fig.updated_canvas_event();\n", - " fig.waiting = false;\n", - " return;\n", - " }\n", - "\n", - " var msg = JSON.parse(evt.data);\n", - " var msg_type = msg['type'];\n", - "\n", - " // Call the \"handle_{type}\" callback, which takes\n", - " // the figure and JSON message as its only arguments.\n", - " try {\n", - " var callback = fig['handle_' + msg_type];\n", - " } catch (e) {\n", - " console.log(\n", - " \"No handler for the '\" + msg_type + \"' message type: \",\n", - " msg\n", - " );\n", - " return;\n", - " }\n", - "\n", - " if (callback) {\n", - " try {\n", - " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", - " callback(fig, msg);\n", - " } catch (e) {\n", - " console.log(\n", - " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", - " e,\n", - " e.stack,\n", - " msg\n", - " );\n", - " }\n", - " }\n", - " };\n", - "};\n", - "\n", - "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", - "mpl.findpos = function (e) {\n", - " //this section is from http://www.quirksmode.org/js/events_properties.html\n", - " var targ;\n", - " if (!e) {\n", - " e = window.event;\n", - " }\n", - " if (e.target) {\n", - " targ = e.target;\n", - " } else if (e.srcElement) {\n", - " targ = e.srcElement;\n", - " }\n", - " if (targ.nodeType === 3) {\n", - " // defeat Safari bug\n", - " targ = targ.parentNode;\n", - " }\n", - "\n", - " // pageX,Y are the mouse positions relative to the document\n", - " var boundingRect = targ.getBoundingClientRect();\n", - " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", - " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", - "\n", - " return { x: x, y: y };\n", - "};\n", - "\n", - "/*\n", - " * return a copy of an object with only non-object keys\n", - " * we need this to avoid circular references\n", - " * http://stackoverflow.com/a/24161582/3208463\n", - " */\n", - "function simpleKeys(original) {\n", - " return Object.keys(original).reduce(function (obj, key) {\n", - " if (typeof original[key] !== 'object') {\n", - " obj[key] = original[key];\n", - " }\n", - " return obj;\n", - " }, {});\n", - "}\n", - "\n", - "mpl.figure.prototype.mouse_event = function (event, name) {\n", - " var canvas_pos = mpl.findpos(event);\n", - "\n", - " if (name === 'button_press') {\n", - " this.canvas.focus();\n", - " this.canvas_div.focus();\n", - " }\n", - "\n", - " var x = canvas_pos.x * this.ratio;\n", - " var y = canvas_pos.y * this.ratio;\n", - "\n", - " this.send_message(name, {\n", - " x: x,\n", - " y: y,\n", - " button: event.button,\n", - " step: event.step,\n", - " guiEvent: simpleKeys(event),\n", - " });\n", - "\n", - " /* This prevents the web browser from automatically changing to\n", - " * the text insertion cursor when the button is pressed. We want\n", - " * to control all of the cursor setting manually through the\n", - " * 'cursor' event from matplotlib */\n", - " event.preventDefault();\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", - " // Handle any extra behaviour associated with a key event\n", - "};\n", - "\n", - "mpl.figure.prototype.key_event = function (event, name) {\n", - " // Prevent repeat events\n", - " if (name === 'key_press') {\n", - " if (event.key === this._key) {\n", - " return;\n", - " } else {\n", - " this._key = event.key;\n", - " }\n", - " }\n", - " if (name === 'key_release') {\n", - " this._key = null;\n", - " }\n", - "\n", - " var value = '';\n", - " if (event.ctrlKey && event.key !== 'Control') {\n", - " value += 'ctrl+';\n", - " }\n", - " else if (event.altKey && event.key !== 'Alt') {\n", - " value += 'alt+';\n", - " }\n", - " else if (event.shiftKey && event.key !== 'Shift') {\n", - " value += 'shift+';\n", - " }\n", - "\n", - " value += 'k' + event.key;\n", - "\n", - " this._key_event_extra(event, name);\n", - "\n", - " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", - " return false;\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", - " if (name === 'download') {\n", - " this.handle_save(this, null);\n", - " } else {\n", - " this.send_message('toolbar_button', { name: name });\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", - " this.message.textContent = tooltip;\n", - "};\n", - "\n", - "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", - "// prettier-ignore\n", - "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", - "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", - "\n", - "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", - "\n", - "mpl.default_extension = \"png\";/* global mpl */\n", - "\n", - "var comm_websocket_adapter = function (comm) {\n", - " // Create a \"websocket\"-like object which calls the given IPython comm\n", - " // object with the appropriate methods. Currently this is a non binary\n", - " // socket, so there is still some room for performance tuning.\n", - " var ws = {};\n", - "\n", - " ws.binaryType = comm.kernel.ws.binaryType;\n", - " ws.readyState = comm.kernel.ws.readyState;\n", - " function updateReadyState(_event) {\n", - " if (comm.kernel.ws) {\n", - " ws.readyState = comm.kernel.ws.readyState;\n", - " } else {\n", - " ws.readyState = 3; // Closed state.\n", - " }\n", - " }\n", - " comm.kernel.ws.addEventListener('open', updateReadyState);\n", - " comm.kernel.ws.addEventListener('close', updateReadyState);\n", - " comm.kernel.ws.addEventListener('error', updateReadyState);\n", - "\n", - " ws.close = function () {\n", - " comm.close();\n", - " };\n", - " ws.send = function (m) {\n", - " //console.log('sending', m);\n", - " comm.send(m);\n", - " };\n", - " // Register the callback with on_msg.\n", - " comm.on_msg(function (msg) {\n", - " //console.log('receiving', msg['content']['data'], msg);\n", - " var data = msg['content']['data'];\n", - " if (data['blob'] !== undefined) {\n", - " data = {\n", - " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", - " };\n", - " }\n", - " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", - " ws.onmessage(data);\n", - " });\n", - " return ws;\n", - "};\n", - "\n", - "mpl.mpl_figure_comm = function (comm, msg) {\n", - " // This is the function which gets called when the mpl process\n", - " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", - "\n", - " var id = msg.content.data.id;\n", - " // Get hold of the div created by the display call when the Comm\n", - " // socket was opened in Python.\n", - " var element = document.getElementById(id);\n", - " var ws_proxy = comm_websocket_adapter(comm);\n", - "\n", - " function ondownload(figure, _format) {\n", - " window.open(figure.canvas.toDataURL());\n", - " }\n", - "\n", - " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", - "\n", - " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", - " // web socket which is closed, not our websocket->open comm proxy.\n", - " ws_proxy.onopen();\n", - "\n", - " fig.parent_element = element;\n", - " fig.cell_info = mpl.find_output_cell(\"
\");\n", - " if (!fig.cell_info) {\n", - " console.error('Failed to find cell for figure', id, fig);\n", - " return;\n", - " }\n", - " fig.cell_info[0].output_area.element.on(\n", - " 'cleared',\n", - " { fig: fig },\n", - " fig._remove_fig_handler\n", - " );\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_close = function (fig, msg) {\n", - " var width = fig.canvas.width / fig.ratio;\n", - " fig.cell_info[0].output_area.element.off(\n", - " 'cleared',\n", - " fig._remove_fig_handler\n", - " );\n", - " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", - "\n", - " // Update the output cell to use the data from the current canvas.\n", - " fig.push_to_output();\n", - " var dataURL = fig.canvas.toDataURL();\n", - " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", - " // the notebook keyboard shortcuts fail.\n", - " IPython.keyboard_manager.enable();\n", - " fig.parent_element.innerHTML =\n", - " '';\n", - " fig.close_ws(fig, msg);\n", - "};\n", - "\n", - "mpl.figure.prototype.close_ws = function (fig, msg) {\n", - " fig.send_message('closing', msg);\n", - " // fig.ws.close()\n", - "};\n", - "\n", - "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", - " // Turn the data on the canvas into data in the output cell.\n", - " var width = this.canvas.width / this.ratio;\n", - " var dataURL = this.canvas.toDataURL();\n", - " this.cell_info[1]['text/html'] =\n", - " '';\n", - "};\n", - "\n", - "mpl.figure.prototype.updated_canvas_event = function () {\n", - " // Tell IPython that the notebook contents must change.\n", - " IPython.notebook.set_dirty(true);\n", - " this.send_message('ack', {});\n", - " var fig = this;\n", - " // Wait a second, then push the new image to the DOM so\n", - " // that it is saved nicely (might be nice to debounce this).\n", - " setTimeout(function () {\n", - " fig.push_to_output();\n", - " }, 1000);\n", - "};\n", - "\n", - "mpl.figure.prototype._init_toolbar = function () {\n", - " var fig = this;\n", - "\n", - " var toolbar = document.createElement('div');\n", - " toolbar.classList = 'btn-toolbar';\n", - " this.root.appendChild(toolbar);\n", - "\n", - " function on_click_closure(name) {\n", - " return function (_event) {\n", - " return fig.toolbar_button_onclick(name);\n", - " };\n", - " }\n", - "\n", - " function on_mouseover_closure(tooltip) {\n", - " return function (event) {\n", - " if (!event.currentTarget.disabled) {\n", - " return fig.toolbar_button_onmouseover(tooltip);\n", - " }\n", - " };\n", - " }\n", - "\n", - " fig.buttons = {};\n", - " var buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " var button;\n", - " for (var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " /* Instead of a spacer, we start a new button group. */\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - " buttonGroup = document.createElement('div');\n", - " buttonGroup.classList = 'btn-group';\n", - " continue;\n", - " }\n", - "\n", - " button = fig.buttons[name] = document.createElement('button');\n", - " button.classList = 'btn btn-default';\n", - " button.href = '#';\n", - " button.title = name;\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', on_click_closure(method_name));\n", - " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", - " buttonGroup.appendChild(button);\n", - " }\n", - "\n", - " if (buttonGroup.hasChildNodes()) {\n", - " toolbar.appendChild(buttonGroup);\n", - " }\n", - "\n", - " // Add the status bar.\n", - " var status_bar = document.createElement('span');\n", - " status_bar.classList = 'mpl-message pull-right';\n", - " toolbar.appendChild(status_bar);\n", - " this.message = status_bar;\n", - "\n", - " // Add the close button to the window.\n", - " var buttongrp = document.createElement('div');\n", - " buttongrp.classList = 'btn-group inline pull-right';\n", - " button = document.createElement('button');\n", - " button.classList = 'btn btn-mini btn-primary';\n", - " button.href = '#';\n", - " button.title = 'Stop Interaction';\n", - " button.innerHTML = '';\n", - " button.addEventListener('click', function (_evt) {\n", - " fig.handle_close(fig, {});\n", - " });\n", - " button.addEventListener(\n", - " 'mouseover',\n", - " on_mouseover_closure('Stop Interaction')\n", - " );\n", - " buttongrp.appendChild(button);\n", - " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", - " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", - "};\n", - "\n", - "mpl.figure.prototype._remove_fig_handler = function (event) {\n", - " var fig = event.data.fig;\n", - " if (event.target !== this) {\n", - " // Ignore bubbled events from children.\n", - " return;\n", - " }\n", - " fig.close_ws(fig, {});\n", - "};\n", - "\n", - "mpl.figure.prototype._root_extra_style = function (el) {\n", - " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", - "};\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function (el) {\n", - " // this is important to make the div 'focusable\n", - " el.setAttribute('tabindex', 0);\n", - " // reach out to IPython and tell the keyboard manager to turn it's self\n", - " // off when our div gets focus\n", - "\n", - " // location in version 3\n", - " if (IPython.notebook.keyboard_manager) {\n", - " IPython.notebook.keyboard_manager.register_events(el);\n", - " } else {\n", - " // location in version 2\n", - " IPython.keyboard_manager.register_events(el);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", - " var manager = IPython.notebook.keyboard_manager;\n", - " if (!manager) {\n", - " manager = IPython.keyboard_manager;\n", - " }\n", - "\n", - " // Check for shift+enter\n", - " if (event.shiftKey && event.which === 13) {\n", - " this.canvas_div.blur();\n", - " // select the cell after this one\n", - " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", - " IPython.notebook.select(index + 1);\n", - " }\n", - "};\n", - "\n", - "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", - " fig.ondownload(fig, null);\n", - "};\n", - "\n", - "mpl.find_output_cell = function (html_output) {\n", - " // Return the cell and output element which can be found *uniquely* in the notebook.\n", - " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", - " // IPython event is triggered only after the cells have been serialised, which for\n", - " // our purposes (turning an active figure into a static one), is too late.\n", - " var cells = IPython.notebook.get_cells();\n", - " var ncells = cells.length;\n", - " for (var i = 0; i < ncells; i++) {\n", - " var cell = cells[i];\n", - " if (cell.cell_type === 'code') {\n", - " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", - " var data = cell.output_area.outputs[j];\n", - " if (data.data) {\n", - " // IPython >= 3 moved mimebundle to data attribute of output\n", - " data = data.data;\n", - " }\n", - " if (data['text/html'] === html_output) {\n", - " return [cell, data, j];\n", - " }\n", - " }\n", - " }\n", - " }\n", - "};\n", - "\n", - "// Register the function which deals with the matplotlib target/channel.\n", - "// The kernel may be null if the page has been refreshed.\n", - "if (IPython.notebook.kernel !== null) {\n", - " IPython.notebook.kernel.comm_manager.register_target(\n", - " 'matplotlib',\n", - " mpl.mpl_figure_comm\n", - " );\n", - "}\n" - ], - "text/plain": [ - "" + "
\n" ] }, "metadata": {}, @@ -2470,40 +872,57 @@ }, { "data": { - "text/html": [ - "" + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " const docs_json = {\"c95b6522-7314-4ce1-953e-ca36bebac9b2\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1128\"}],\"center\":[{\"id\":\"1131\"},{\"id\":\"1135\"},{\"id\":\"1167\"}],\"height\":300,\"left\":[{\"id\":\"1132\"}],\"renderers\":[{\"id\":\"1154\"}],\"title\":{\"id\":\"1156\"},\"toolbar\":{\"id\":\"1143\"},\"width\":990,\"x_range\":{\"id\":\"1120\"},\"x_scale\":{\"id\":\"1124\"},\"y_range\":{\"id\":\"1122\"},\"y_scale\":{\"id\":\"1126\"}},\"id\":\"1119\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1159\"},\"group\":null,\"major_label_policy\":{\"id\":\"1160\"},\"ticker\":{\"id\":\"1133\"}},\"id\":\"1132\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1162\"},\"group\":null,\"major_label_policy\":{\"id\":\"1163\"},\"ticker\":{\"id\":\"1129\"}},\"id\":\"1128\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"1150\"}},\"id\":\"1155\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"SoXpFd+zgDsOLuKoM8/YPP154VmtGy0+Ns8uZraJbT9zBfRLlE6pP4mEJrOZMaQ/x0Tuix2grz/HpM2oXXmFP6JMxjI+hl4/ZtnO8AOnNj/36XB+MIoRP+NbqB0kiIk/ci+ezLaQkT/iR3+8SwNrP2C7vJl4i0U/+GxoaF7KIT9NeRr421z+PsuMzGW2uto+WIES0EM8uD6jRlyT5piWPgVqR129onU+frEY6JA+VT4STHK+q4anPoS/seugcKE/iuXk0flAsj9QRD6szNOQPzaznIsIxW8/y0H6VZawTj+bxHGo200uP3pHLHnsjQ4/6uBo+rZs7z6az6A4qanYPhiCn55+E6M/ZDlvX53SsD9crmy+4RKRPzGY36ZSonE/f1I+nNeHUj+WCGqg/sszP9evFLU8fBU/MjwGIbqr9z5JuDXZkHTaPqWyYR2W+b0+CgdJGGs0oT7DxLFSff+DPuM6wqT1hWc+Iv66xdJvTD7BKRgTveHmPmHrzeCSX64/rp9KTiKctz8S9Dp8E8maP8sEhiZEtH4/Soyp/pXbdT/5GrngPX7EP4XslcPCH6s/teb1YvWsjz/Wvxq8U65yP27fotoRP1Y/Om8FUIi8Oj8OxzYyWjUgP/Boh2uO0QM/PKS5Ngtu6D42GFwzUFnOPpTWWAj0/bI+bDzDucjwlz5s0Ry15GJ+PtKebt+KcGM+GxEeBLwurj6FMeKR0nt2P2Ip2rPgr6g/OJg30t8RkD+vxqLoSQp0P3m8apaTJ1k/fUvuIr/FPz9OEv5o1y8kP32i4SYGzQk/1gNq9oyU8D4abU7RqmzVPpPgEZrR07s+OWq1WX4poj6i+elyStKHPv5ZXTeAY28+MHQC8ZnFVD5wJAfZI5w7Pr+TjYHabCI+vUzGKYCwCD6h0sCA4ZrwPUcaXnX3atY9f/OjPXpfvj1Xtx3uVaWkPflMoaEDKYw9Ljie1AREcz2IrjYwEXFaPVgqDmfeMkI95qgiiGPGKT15sA/nYgWaPX+8sfGH0V0++HHQdW+5Hj/d4HmFVsGqP46O+pIhCLY/xNtIysy7nT9ZXfNS5eGDP9I2NuzCrGo/1i4sCvTyUT/hUYVPJzo4PwLxDrbTZSA/RgpRypKVBj8B9uE4t9tbP+GTUvyQ29A/M8hk6VEg0T+UwPZ/bE63P9avjPW9n58/LgEcKo+ChT/pbIaye1VtP3yZ+s7FDFQ/xvFoqeJ4Oz/iCoViEN0iPxpcZrgk9gk/u9851Cbn8T4fkWV9/73YPp+zbmqKIcE+NZhflJ3Epz4dswUJ2YSQPgiZdfzFAHc+B1gc6k4LYD5fiP3YQmtGPu4uYdfSYC8+Hb4G2G/+FT5HT5FeQ+H+PUvtP0vlteU9ksCKG3GSzj3LqTo8OI61PaVGFY8ecJ49Zr/f/8mEhT1XnshPE3duPYotYFijl1U9Lsq4e+6kPj0sHu5KWMUlPY2creED+A49sV6Ik/IM9jyuKsJcQW/fPNrBluPrbcY8gyrbfhJosDzpN4LGr337PBrIqM0YOJw9pKQko0PdOz63gmUOoyHaPmhVladCwXI/Br4XZ+CZzj+K0l5KAR/QP53Me8J/CLc/rhJJfpgvoD9glySjZcaGPwYx2/6bCnA/8ymHuFmfVj8zBMjKEfA/P/4KQDNvkSY/5qE6OFTtDz+GxMjyJZv2PocZdIeSBeA+3dCnvVu7xj4m83h+EiSwPt4U8wk/8ZY+ONSsf69RgD7MN7qVRDxnPnhP3KsdjlA+oYjHPR+cNz7oHJ6sOtkgPv1goKG5EAg+eDNNwAkz8T1jBkM+MZrYPW28vbWwm8E9d4QNvNI4qT1ngoCtdROSPa1c1TsX7Xk9r2YrgL2aYj2TvBV6ordKPXKKQbAKMjM9dwrDqEGZGz3B4wfU/NkDPSMNWOfqkuw8phfzZ1CT1DxI4NpFvaW9PJLJB/7eXqU8syDIRAHTjjxAwnDBnz12PC+5U+MUDmA8sntAR6gwRzw5YuS1asEwPAbVT6gtORg8DR0jKWiEATyrRIbghVjpO4agjBsLWNI7oIUGcimQujvxQyx7aj2jO+lJaUu14Ys7Hxwqtbc1dDv+xkjx7E5dO4FvQ1VAQkU7gp887LzZLjv1jEDWb2QWO6LLfb4eQgA7IvPipNGd5zotqNHMWijROtQKi1cT8Lg6ratgG88gojp04vEcB12KOjwsQvDSLHM6vXPoZKbmWzqMLTpU2k1EOqKPvcYUjy06PlVhNniFFTpVGdIoo1j/OQ5nWL9g1eY5jdTtlumi0DmKTJTXaz+4OQQ8UXatrKE50YLZ45fFiTl9lYR7FMtyOcCSCrwMals5WjpMW7T/Qznyg2TgHi8tOegZSJJDTBU5rqbK8VIX/ziievTxm7LmONEG+riwktA4VZegYr00uDhdcqdoHa6hOE4ZG97Q1Ik4kvLj54XfcjjYd1+nK5VbOH03wBuhKEQ4OHAdxFJ4LTjyfdz7SIsVON/a+rz+gP83wKTRU30J5zdMwOnUD9nQN9h5kbxmpbg3H+v5yHAHojeZbg9/XGGKNxCzay2vUXM3XSZeTi/0ZDcdIdToIvfENze2+/o5Bz84PtEiTGpmtjh2O02xeXAvOfHgGMuzc6U5tENLJlR4HDqsxAn1gWCSOnxgadocFQc7UnLD3gA3fDt1ymQQAMnwOyWvZDSVcWM8XDDHz97u1Tx5cWF0FRlIPQQqM1cpy7k9u5wPzOPmKj6ga4wsZlibPmWfBiAEDgs/tiLAnUeHdj8jSCj30jfGP2fhfjI9VOI/hQNpqEX91D9yKzrwNuK+P8PqK15DX6Y//LazV5Q1kD9VVCkrPn53P34CEwRLB2E/B1rvo7ywSD8w8932QecxP3xorT4M+Bk/jFImgW3WAj/1YrT4klXrPgcF9eXT1dM+MBwEEdHKvD55SFKejuakPh/gAuRiWY4+poUstssJdj6+AH91gQFgPrlvg0PPQEc+1N1O8cXkMD6WXPz59IwYPnrzQY191wE+/kK33LHv6T2cur94udrSPZGwkBCWars9oL+HwJ7voz0ZmjzRTv+MPfj4FL5nF3U95JDJi6ivXj1QfSOiZVNGPQf6hJDIPjA96IXHHAKlFz3TpoQpjTUBPXgOxCTBDek8hchJMD490jz1ZtbgQo+6PHdfGWkMV6M8jQQDtUUrjDx7XCG+PoR0PJ/D+3ao4108cGoA3TPGRTy+2DHMbLovPN9x6PJjHhc8eTRw2tzYADy1EmmyYo7oO7XvoXIJ5tE7Sm1kEQo5uju0gcUF9r+zO+ASlJta5Ag8oFoulV1mbTwwJmGI1RfRPMoS9wiafDM9zN/jJnjIlT1NdPwAF+H3PZYz1wmprFk+MtXgPfsTuz6tjLTemPsbPzLy+/lDFXo/iYCwwgk/xz8XmSKm5HXwP4yUVXYXMPE/Yhw91U8f3T8Hn+9YVUXFP3C+WU049a4/vT1qc8mHlj8bzAolFmaAP3/2xY3F32c/LptEYldhUT/m9jcY1E45Pz4B/SJ3bSI/altH0o3WCj/SbeOJoIvzPtB2x5KoeNw+3Z2XBRS9xD5pZipf+TauPuoTwtgoA5Y+m+TVVLsJgD7Am4q+Tl9nPjpWn1wdCFE+vD/IrQ/TOD7sEUIfwxciPpww37wRYAo+SKgujOE58z2TR+UoGQjcPaFxOabDb8Q9+3yAggrNrT2aIHMbzLqVPTulbAPtsH89s+Cu+nYcZz2xep6H9tpQPQCV+4hbljg9JwuDcS/vIT2okxg5LioKPTgVfbtgFvM8oy7Ix8LZ2zy/d+LK4FHEPInzan8Op608Bj3Mlh6jlTzdOsGlKpR/PFEpdG+jC2c8L0yRi6vRUDzVpP3mFI04PKV0I4l+6yE8JNaF3TYpCjxnEBMc2RjzOx7Bx7Pt4ds7M2oH4h1bxDtFgImmQLmtO/RL0P/Is5U7moIiVlyxfzvfYLL7cSRnO/Keq75K5lA7TxVMus2uODuLBGHttQYiO6LznqCwVAo7ak9kqEY78zoxqu/dEBjcOkIe5J9shcQ6pJeM4Aj7rTrAA6EPsuaVOkH2QfjZ/386/jb9rL1gZzrdPyiVdxRROtvsPrlU9Tg6PdIUHXA8IjpUM306XaYKOoiMfnU6efM5CIcjXuB13Dn84Qw/VMzEOQicSAgNZq45yw5fuVY3ljlyPT5JnTyAOUxHGsb4u2c5YMxI3/VYUTl1438REVw5OQLV/O9oiSI5MdCWY5gZCzllG3AgaM/zOIHikxys9tw4F7g/438sxTh/ZOffkPWuOFjO6WxZopY4VtKcuFqMgDgtwbvMvDJoOCa7lONasVE4KCAiLZPfOThdfr8rL+siOD3EDz7pqgs4nriT0Fc79DeQlK7M8ZbdN+HhXPxwo8U3m0aniwimrzeP0PHNNCWXNyWC4oda7YA3bXbaiH3CaDfhuSAC1xtSN/AKPu5HfTo3Ipi+Te5fIzdOQ/jBtVcMN+sh/R8wu/Q2iwn7fhBU3jYp4GtFSS/GNtJ3MR9mOrA2aFQvwgW+lzYXSnlqRV6BNjQSUhpTaWk2ePGGlQ+XUjY7H8jEQjM7Nq34y2lI5iM2QiV+zAweDTYb7unyj031NZAwvaISLN81/IUIkKTOxjWpr0MT8a+wNQOYuStla5g1puBochzegTW4ELGd0yVqNXaL6MoDIlM1Hmk7ORcAPDXEsdHtOn0kNeCggYt//A01ChfWI3Px9TS7/8mmww7gNJw4flV9gMc0mPLHxusysTQ2ahNcTCyZNIJdqoklbII0rFoCfvf2ajTf93MC+btTNC15wRm94jw05SaW5wokJTTzR0ODBfIONCRXKqwepvYz6vlbC7OT4DOHw2PAGETIM9m7xULSwrEzGWSR/AAAmjPoGI8w3QeDM16UeTkF3GszA0wVdGxkVDPiUV4ZfNo9M2tA5o022iUzYJiSBej9DzMs8XYQEmv3MgcHEzJ9JOEyf8I1+vcYyTKhNguFS1+yMvf6uTsG5poyp44B9+uwgzJciY1tgtRsMt9jXJAIG1UyS6K6uNzmPjIlWyiIap8mMrg6F3vZjxAyASiujfw/+DEkT3EE6sDhMRahMj3N/skxfmyFuyEIszExEcLCEd6bMYTzcaMeZ4QxVMC/rijgbTEsNx4Snd9VMT6Sw3/OA0Ax3C0M6nlzJzFsjjSylCsRMfcLC/60JPkw3QDu3t1o4jAaW8Chc/XKMIxz1G88vbMw1eOXagPonDD9XeNMYCqFMEdZriTd/m4wFLqqBhmyVjB6EHH/U55AMB7vYylYVigwLMKbeR7SETD4Hfi7Mxn6L8ibgTdVHOMvDCTu7ej8yy/1HfsfnH60Lw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1165\"},\"selection_policy\":{\"id\":\"1164\"}},\"id\":\"1150\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1152\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"tools\":[{\"id\":\"1136\"},{\"id\":\"1137\"},{\"id\":\"1138\"},{\"id\":\"1139\"},{\"id\":\"1140\"},{\"id\":\"1141\"}]},\"id\":\"1143\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1151\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1153\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1156\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1150\"},\"glyph\":{\"id\":\"1151\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1153\"},\"nonselection_glyph\":{\"id\":\"1152\"},\"view\":{\"id\":\"1155\"}},\"id\":\"1154\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1132\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1135\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1137\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1168\"}]},\"id\":\"1167\",\"type\":\"Legend\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1142\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"overlay\":{\"id\":\"1142\"}},\"id\":\"1138\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1140\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1133\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"HelpTool\"},{\"attributes\":{\"label\":{\"value\":\"TOF Simulation\"},\"renderers\":[{\"id\":\"1154\"}]},\"id\":\"1168\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1136\",\"type\":\"PanTool\"},{\"attributes\":{\"axis\":{\"id\":\"1128\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1131\",\"type\":\"Grid\"}],\"root_ids\":[\"1119\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"c95b6522-7314-4ce1-953e-ca36bebac9b2\",\"root_ids\":[\"1119\"],\"roots\":{\"1119\":\"b4397b78-27fa-49d6-aeb6-944a02c96c0e\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " let attempts = 0;\n", + " const timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" ], - "text/plain": [ - "" - ] + "application/vnd.bokehjs_exec.v0+json": "" }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1119" + } }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ "x_data = np.linspace(3000, 15000, 500)\n", "y_data = calculator.fit_func(x_data)\n", "\n", - "%matplotlib notebook\n", - "plt.plot(x_data, y_data, label='TOF Simulation')\n", - "plt.legend()" + "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", + "fig.line(x_data, y_data, legend_label='TOF Simulation', color='orange', line_width=2)\n", + "show(fig)" ] }, { "cell_type": "code", "execution_count": null, - "id": "3647d5ab", + "id": "088510c2", "metadata": {}, "outputs": [], "source": [] @@ -2530,4 +949,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} From 07796684270a70776a9843462a2e5e878ea2aea3 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 6 Oct 2021 16:30:43 +0200 Subject: [PATCH 224/312] Update requirements to use `bokeh` instead of `matplotlib` --- pyproject.toml | 4 +--- requirements-dev.txt | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index b0e8cf53..4bd942a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,10 +41,8 @@ GSASII = '^0.0.1' pytest = "^5.2" toml = "^0.10" requests = '^2.24' -hvplot = "^0.7.0" -ipympl = "^0.8.0" -matplotlib = "^3.4" py3Dmol = "^1.7.0" +bokeh = "^2.4.0" [tool.poetry.scripts] easyDiffractionLib = "easyDiffractionLib.main:main" diff --git a/requirements-dev.txt b/requirements-dev.txt index 57b55ece..4c4434ae 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,7 +1,5 @@ pytest>=5.2 toml>=0.10 requests>=2.24 -hvplot>=0.7.0 -ipympl>=0.8.0 -matplotlib>=3.4 py3Dmol>=1.7.0 +bokeh>=2.4.0 From 94d40fb4a7bae73b51b09e74f1d08e6c61a54fcb Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 6 Oct 2021 16:41:38 +0200 Subject: [PATCH 225/312] Add links to non-interactive preview for notebooks --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d74b909f..9c965844 100644 --- a/README.md +++ b/README.md @@ -59,10 +59,15 @@ Currently **easyDiffractionLib** is in **alpha** and has not been released on ** ``` * Select one of the ***.ipynb** files -#### Via Binder +#### Via Binder (interactive) Examples can also be run on the online service [**Binder**](https://mybinder.org/). Click [launch **Binder**](https://mybinder.org/v2/gh/easyScience/easyDiffractionLib/develop) and navigate to the examples folder to run one of the notebooks or create your own. +#### Via nbviewer (non-interactive preview) + +* [Simulation](https://nbviewer.jupyter.org/github/easyScience/easyDiffractionLib/blob/develop/examples/Simulation.ipynb) +* [Fitting](https://nbviewer.jupyter.org/github/easyScience/easyDiffractionLib/blob/develop/examples/Fitting.ipynb) + ## Test The installation can be verified by running the test suite: From 60e68ff5fd6de9f87942ed1996cfe2b4e985b6d4 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 6 Oct 2021 16:49:41 +0200 Subject: [PATCH 226/312] Fix import `easyDiffractionLib` --- examples/Fitting.ipynb | 6 ++++++ examples/Simulation.ipynb | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/examples/Fitting.ipynb b/examples/Fitting.ipynb index 036aa73d..632dc6e8 100644 --- a/examples/Fitting.ipynb +++ b/examples/Fitting.ipynb @@ -41,6 +41,12 @@ "from easyCore.Fitting.Fitting import Fitter\n", "\n", "# esyScience, diffraction\n", + "try:\n", + " from easyDiffractionLib import Phase\n", + "except ImportError:\n", + " import sys, os\n", + " sys.path.append(os.path.abspath('..'))\n", + " \n", "from easyDiffractionLib import Phases\n", "from easyDiffractionLib.sample import Sample as Job\n", "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", diff --git a/examples/Simulation.ipynb b/examples/Simulation.ipynb index d28fc1e6..f153d4fc 100644 --- a/examples/Simulation.ipynb +++ b/examples/Simulation.ipynb @@ -30,6 +30,12 @@ "from easyCore.Fitting.Fitting import Fitter\n", "\n", "# esyScience, diffraction\n", + "try:\n", + " from easyDiffractionLib import Phase\n", + "except ImportError:\n", + " import sys, os\n", + " sys.path.append(os.path.abspath('..'))\n", + " \n", "from easyDiffractionLib import Site, Phase, Phases\n", "from easyDiffractionLib.sample import Sample as Job\n", "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", From 2471742ddf8765651512c02efb675c3801755117 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Wed, 6 Oct 2021 20:53:16 +0200 Subject: [PATCH 227/312] Update notebooks --- examples/Fitting.ipynb | 136 +++++++++++++++++++------------------- examples/Simulation.ipynb | 56 ++++++++-------- 2 files changed, 96 insertions(+), 96 deletions(-) diff --git a/examples/Fitting.ipynb b/examples/Fitting.ipynb index 632dc6e8..b6872c24 100644 --- a/examples/Fitting.ipynb +++ b/examples/Fitting.ipynb @@ -30,7 +30,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /Users/asazonov/Developing/CrossPlatform/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", + "GSAS-II binary directory: /srv/conda/envs/notebook/lib/python3.7/site-packages/GSASII/bindist\n", "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" ] } @@ -388,7 +388,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## --- Sample ---" + "## Sample" ] }, { @@ -488,10 +488,10 @@ "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + "

\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] @@ -538,7 +538,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -559,7 +559,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## --- Experiment ---" + "## Experiment" ] }, { @@ -628,7 +628,7 @@ "cell_type": "code", "execution_count": 8, "metadata": { - "scrolled": true + "tags": [] }, "outputs": [ { @@ -640,7 +640,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -652,8 +652,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"116779a9-3b85-4ec3-b5b9-862c6610802d\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1051\"}],\"height\":300,\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"width\":990,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1052\"}]},\"id\":\"1051\",\"type\":\"Legend\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1038\"}]},\"id\":\"1052\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"116779a9-3b85-4ec3-b5b9-862c6610802d\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"75b3dcc1-5016-4e62-8227-06e873e27c62\"}}];\n", + " const docs_json = {\"5817d16a-7152-469c-acae-1957dc8829c4\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1051\"}],\"height\":300,\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"width\":990,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1038\"}]},\"id\":\"1052\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1052\"}]},\"id\":\"1051\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"5817d16a-7152-469c-acae-1957dc8829c4\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"d1f4ee00-9780-4c1f-84c7-b8c1c6fb8190\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -696,7 +696,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## --- Analysis ---" + "## Analysis" ] }, { @@ -741,7 +741,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" + "Temp CIF: /tmp/easydiffraction_temp.cif\n" ] } ], @@ -776,7 +776,7 @@ "cell_type": "code", "execution_count": 13, "metadata": { - "scrolled": true + "tags": [] }, "outputs": [ { @@ -788,7 +788,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -800,8 +800,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"79d619d3-7b33-4f78-a037-c0c8faac216d\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1128\"}],\"center\":[{\"id\":\"1131\"},{\"id\":\"1135\"},{\"id\":\"1167\"}],\"height\":300,\"left\":[{\"id\":\"1132\"}],\"renderers\":[{\"id\":\"1154\"},{\"id\":\"1173\"}],\"title\":{\"id\":\"1156\"},\"toolbar\":{\"id\":\"1143\"},\"width\":990,\"x_range\":{\"id\":\"1120\"},\"x_scale\":{\"id\":\"1124\"},\"y_range\":{\"id\":\"1122\"},\"y_scale\":{\"id\":\"1126\"}},\"id\":\"1119\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1173\"}]},\"id\":\"1188\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1136\",\"type\":\"PanTool\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1154\"}]},\"id\":\"1168\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1137\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1151\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1186\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1165\"},\"selection_policy\":{\"id\":\"1164\"}},\"id\":\"1150\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"overlay\":{\"id\":\"1142\"}},\"id\":\"1138\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"SaveTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1142\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1140\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"HelpTool\"},{\"attributes\":{\"source\":{\"id\":\"1169\"}},\"id\":\"1174\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1185\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1169\"},\"glyph\":{\"id\":\"1170\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1172\"},\"nonselection_glyph\":{\"id\":\"1171\"},\"view\":{\"id\":\"1174\"}},\"id\":\"1173\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1159\"},\"group\":null,\"major_label_policy\":{\"id\":\"1160\"},\"ticker\":{\"id\":\"1133\"}},\"id\":\"1132\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1171\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1156\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1162\"},\"group\":null,\"major_label_policy\":{\"id\":\"1163\"},\"ticker\":{\"id\":\"1129\"}},\"id\":\"1128\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1150\"},\"glyph\":{\"id\":\"1151\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1153\"},\"nonselection_glyph\":{\"id\":\"1152\"},\"view\":{\"id\":\"1155\"}},\"id\":\"1154\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1172\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1133\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1128\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1131\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1186\"},\"selection_policy\":{\"id\":\"1185\"}},\"id\":\"1169\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1150\"}},\"id\":\"1155\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1153\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"1132\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1135\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1168\"},{\"id\":\"1188\"}]},\"id\":\"1167\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1152\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1170\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"1136\"},{\"id\":\"1137\"},{\"id\":\"1138\"},{\"id\":\"1139\"},{\"id\":\"1140\"},{\"id\":\"1141\"}]},\"id\":\"1143\",\"type\":\"Toolbar\"}],\"root_ids\":[\"1119\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"79d619d3-7b33-4f78-a037-c0c8faac216d\",\"root_ids\":[\"1119\"],\"roots\":{\"1119\":\"78ba44e0-92bf-4243-a9bd-2165271be925\"}}];\n", + " const docs_json = {\"345dd7ec-cb67-424a-8348-850ecf33badd\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1128\"}],\"center\":[{\"id\":\"1131\"},{\"id\":\"1135\"},{\"id\":\"1167\"}],\"height\":300,\"left\":[{\"id\":\"1132\"}],\"renderers\":[{\"id\":\"1154\"},{\"id\":\"1173\"}],\"title\":{\"id\":\"1156\"},\"toolbar\":{\"id\":\"1143\"},\"width\":990,\"x_range\":{\"id\":\"1120\"},\"x_scale\":{\"id\":\"1124\"},\"y_range\":{\"id\":\"1122\"},\"y_scale\":{\"id\":\"1126\"}},\"id\":\"1119\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1185\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1171\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1186\"},\"selection_policy\":{\"id\":\"1185\"}},\"id\":\"1169\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1136\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1137\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1142\"}},\"id\":\"1138\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1142\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1150\"},\"glyph\":{\"id\":\"1151\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1153\"},\"nonselection_glyph\":{\"id\":\"1152\"},\"view\":{\"id\":\"1155\"}},\"id\":\"1154\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1151\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1140\",\"type\":\"ResetTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1136\"},{\"id\":\"1137\"},{\"id\":\"1138\"},{\"id\":\"1139\"},{\"id\":\"1140\"},{\"id\":\"1141\"}]},\"id\":\"1143\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1172\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1133\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1162\"},\"group\":null,\"major_label_policy\":{\"id\":\"1163\"},\"ticker\":{\"id\":\"1129\"}},\"id\":\"1128\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1152\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1154\"}]},\"id\":\"1168\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1173\"}]},\"id\":\"1188\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1156\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1186\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1169\"}},\"id\":\"1174\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1153\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1165\"},\"selection_policy\":{\"id\":\"1164\"}},\"id\":\"1150\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"1128\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1131\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1150\"}},\"id\":\"1155\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"1132\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1135\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1159\"},\"group\":null,\"major_label_policy\":{\"id\":\"1160\"},\"ticker\":{\"id\":\"1133\"}},\"id\":\"1132\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1168\"},{\"id\":\"1188\"}]},\"id\":\"1167\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1170\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1169\"},\"glyph\":{\"id\":\"1170\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1172\"},\"nonselection_glyph\":{\"id\":\"1171\"},\"view\":{\"id\":\"1174\"}},\"id\":\"1173\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"1119\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"345dd7ec-cb67-424a-8348-850ecf33badd\",\"root_ids\":[\"1119\"],\"roots\":{\"1119\":\"7018e60b-dad4-49c1-81d5-b88b93f84faa\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -871,7 +871,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -883,8 +883,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"a28d7134-ab64-4a4c-b674-88a478195ecd\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1287\"}],\"center\":[{\"id\":\"1290\"},{\"id\":\"1294\"},{\"id\":\"1326\"}],\"height\":300,\"left\":[{\"id\":\"1291\"}],\"renderers\":[{\"id\":\"1313\"},{\"id\":\"1332\"}],\"title\":{\"id\":\"1315\"},\"toolbar\":{\"id\":\"1302\"},\"width\":990,\"x_range\":{\"id\":\"1279\"},\"x_scale\":{\"id\":\"1283\"},\"y_range\":{\"id\":\"1281\"},\"y_scale\":{\"id\":\"1285\"}},\"id\":\"1278\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"1301\"}},\"id\":\"1297\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1313\"}]},\"id\":\"1327\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1281\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1298\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1283\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1279\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1331\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1285\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1309\"}},\"id\":\"1314\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1315\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1321\"},\"group\":null,\"major_label_policy\":{\"id\":\"1322\"},\"ticker\":{\"id\":\"1288\"}},\"id\":\"1287\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1292\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1318\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1319\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1288\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1287\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1290\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1324\"},\"selection_policy\":{\"id\":\"1323\"}},\"id\":\"1309\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1300\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1321\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1291\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1294\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1318\"},\"group\":null,\"major_label_policy\":{\"id\":\"1319\"},\"ticker\":{\"id\":\"1292\"}},\"id\":\"1291\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1322\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1323\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1345\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1324\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1345\"},\"selection_policy\":{\"id\":\"1344\"}},\"id\":\"1328\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1344\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1309\"},\"glyph\":{\"id\":\"1310\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1312\"},\"nonselection_glyph\":{\"id\":\"1311\"},\"view\":{\"id\":\"1314\"}},\"id\":\"1313\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1327\"},{\"id\":\"1347\"}]},\"id\":\"1326\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1310\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"1295\"},{\"id\":\"1296\"},{\"id\":\"1297\"},{\"id\":\"1298\"},{\"id\":\"1299\"},{\"id\":\"1300\"}]},\"id\":\"1302\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1312\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1330\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1328\"},\"glyph\":{\"id\":\"1329\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1331\"},\"nonselection_glyph\":{\"id\":\"1330\"},\"view\":{\"id\":\"1333\"}},\"id\":\"1332\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1311\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1329\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1295\",\"type\":\"PanTool\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1332\"}]},\"id\":\"1347\",\"type\":\"LegendItem\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1301\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"1328\"}},\"id\":\"1333\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1296\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1299\",\"type\":\"ResetTool\"}],\"root_ids\":[\"1278\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"a28d7134-ab64-4a4c-b674-88a478195ecd\",\"root_ids\":[\"1278\"],\"roots\":{\"1278\":\"72032121-6016-47aa-b25d-1230668868e2\"}}];\n", + " const docs_json = {\"45cbca08-74d6-4cdf-93a8-2dc09c77db89\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1287\"}],\"center\":[{\"id\":\"1290\"},{\"id\":\"1294\"},{\"id\":\"1326\"}],\"height\":300,\"left\":[{\"id\":\"1291\"}],\"renderers\":[{\"id\":\"1313\"},{\"id\":\"1332\"}],\"title\":{\"id\":\"1315\"},\"toolbar\":{\"id\":\"1302\"},\"width\":990,\"x_range\":{\"id\":\"1279\"},\"x_scale\":{\"id\":\"1283\"},\"y_range\":{\"id\":\"1281\"},\"y_scale\":{\"id\":\"1285\"}},\"id\":\"1278\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1310\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1324\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1329\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1330\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1323\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1279\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1328\"},\"glyph\":{\"id\":\"1329\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1331\"},\"nonselection_glyph\":{\"id\":\"1330\"},\"view\":{\"id\":\"1333\"}},\"id\":\"1332\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"1309\"}},\"id\":\"1314\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1292\",\"type\":\"BasicTicker\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1301\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1300\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1281\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1309\"},\"glyph\":{\"id\":\"1310\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1312\"},\"nonselection_glyph\":{\"id\":\"1311\"},\"view\":{\"id\":\"1314\"}},\"id\":\"1313\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1313\"}]},\"id\":\"1327\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1344\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"tools\":[{\"id\":\"1295\"},{\"id\":\"1296\"},{\"id\":\"1297\"},{\"id\":\"1298\"},{\"id\":\"1299\"},{\"id\":\"1300\"}]},\"id\":\"1302\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"1328\"}},\"id\":\"1333\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1324\"},\"selection_policy\":{\"id\":\"1323\"}},\"id\":\"1309\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1332\"}]},\"id\":\"1347\",\"type\":\"LegendItem\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1345\"},\"selection_policy\":{\"id\":\"1344\"}},\"id\":\"1328\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1345\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1327\"},{\"id\":\"1347\"}]},\"id\":\"1326\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1331\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1315\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1295\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1318\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"1301\"}},\"id\":\"1297\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1298\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1299\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1319\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1285\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1321\"},\"group\":null,\"major_label_policy\":{\"id\":\"1322\"},\"ticker\":{\"id\":\"1288\"}},\"id\":\"1287\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1311\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1312\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1318\"},\"group\":null,\"major_label_policy\":{\"id\":\"1319\"},\"ticker\":{\"id\":\"1292\"}},\"id\":\"1291\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1321\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1291\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1294\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1288\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1287\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1290\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1322\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1296\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1283\",\"type\":\"LinearScale\"}],\"root_ids\":[\"1278\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"45cbca08-74d6-4cdf-93a8-2dc09c77db89\",\"root_ids\":[\"1278\"],\"roots\":{\"1278\":\"d452d852-3db5-4ba0-a3a2-450328a7d527\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -956,7 +956,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -968,8 +968,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"7d9652be-e64a-483d-b732-fcde9cad4c0d\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1459\"}],\"center\":[{\"id\":\"1462\"},{\"id\":\"1466\"},{\"id\":\"1498\"}],\"height\":300,\"left\":[{\"id\":\"1463\"}],\"renderers\":[{\"id\":\"1485\"},{\"id\":\"1504\"}],\"title\":{\"id\":\"1487\"},\"toolbar\":{\"id\":\"1474\"},\"width\":990,\"x_range\":{\"id\":\"1451\"},\"x_scale\":{\"id\":\"1455\"},\"y_range\":{\"id\":\"1453\"},\"y_scale\":{\"id\":\"1457\"}},\"id\":\"1450\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1453\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1481\"}},\"id\":\"1486\",\"type\":\"CDSView\"},{\"attributes\":{\"tools\":[{\"id\":\"1467\"},{\"id\":\"1468\"},{\"id\":\"1469\"},{\"id\":\"1470\"},{\"id\":\"1471\"},{\"id\":\"1472\"}]},\"id\":\"1474\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1460\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1494\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1490\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1471\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1516\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1472\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1451\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1481\"},\"glyph\":{\"id\":\"1482\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1484\"},\"nonselection_glyph\":{\"id\":\"1483\"},\"view\":{\"id\":\"1486\"}},\"id\":\"1485\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1501\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1491\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1470\",\"type\":\"SaveTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1473\"}},\"id\":\"1469\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1493\"},\"group\":null,\"major_label_policy\":{\"id\":\"1494\"},\"ticker\":{\"id\":\"1460\"}},\"id\":\"1459\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1468\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1495\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1496\"},\"selection_policy\":{\"id\":\"1495\"}},\"id\":\"1481\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1503\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1467\",\"type\":\"PanTool\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1504\"}]},\"id\":\"1519\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1482\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1484\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1502\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1500\"},\"glyph\":{\"id\":\"1501\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1503\"},\"nonselection_glyph\":{\"id\":\"1502\"},\"view\":{\"id\":\"1505\"}},\"id\":\"1504\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1455\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEqoLz7Cn505500QQFdL3jnY6bpYkHoDOvqWsPzpfw868BFabqADADqjlgii33nUOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdUoOZ8DLA5LwhiqkKa7zncFCYugI4TOuycO58ZbR464pzUApvADTonhkYAMkniOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJxrFW0RnRwzPPL3U8DH/z+FHZsl7vMzQNj7HRQPek9AKMe2MFoxT0CAqQfc6GozQACRjmRGX/4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATFTZBCytgDmAxq2gbzy8OdplHQQUBd45vECiPnMK5DmCBOgDQ83QOSrYalKosKE5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2oTC7awbzP42otLHSxB5Ab5l2srw9L0BCLICPhTwkQAjp3XWYZQlAkAOyJ+fRBkCFnn3FW5r/P4oEm/TXvNw/+5azaOlnoD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACexX8s0SQJQIv+3tcgfDdA9VS6WuOIS0DZCblBBkNEQL09PNtGtyJANkREDnSz5T8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJhWkvMeARBAUC3t1DXIQUAGFGVLGcxYQD7c0k9es1VACFypndPVN0BeerXP220AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg00VFVBs9QICvu+hzQmRAi4qg3W+ycUBDt9F1aWZjQIq++dp6sDpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHcFFvE9cTJA9wEdS0XnZUAtf5vmU1KAQKXTNY/shX5Apt1w3C3oYUComTVOeF0qQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApPuT51l4HUAo72ZkCLVIQIzfkKSB/VlAJg4m7OomUUAP12ZKt2csQA9w+EIEg+0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMXLWaBMnjVAfTMw6GHja0D4Ky1AApGGQLtOZj5Z6IZA77MA/hwsbUDmettVfk03QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIbdqBVJ5zk1ZIruwbgWOuUg0mIK0Cs6BQC8PGFaJTo4+r4bkpAEOvTFjJc32Mg5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd6LPtoObmjkntnG1SnvVOXdtlzgQwfU5dcPQBxSi+znQtHugmAPmOUAWXKd5/7U5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLnum0rHZHQC3iCfofU3ZAR88zVGGkikDSddJqfvCDQKp78Kiut2JAzHlFccIJJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA981EPOo1EEDAgJ8HNchMQByQkrv7BXBAyFcZ5yhvdkB9LakhaF5lQKIeOktfXFZAq21e5qJ9WUAYz4AXSP9HQCJAfsRxVRxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtD2mt9z1T8p030r/AkJQGJmMy1zUyJAO3sDwUPSIEA68gODN10DQDXf8+/L9Ms/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/Pwc8N0N5OQKr8yzVIbg5wtzS5uPo3DlVlvDbb7flOd4X0GZKddQ5aCDJq3IrqDkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMul89sDlzOeS6gbeNOqA5TJqxGustsTlrwoJoP86mOWvRLUUai6A51496/OPL0zk7O6r/Qr/0OQLjDQQGUvs5TjAF/seO5jkbL4BNVlu3OQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEnu0jEJrBJANLHB33QgUkAXp8IkCxF2QLWjneHPM4FARsop9JkFdEDP0yFzqRhiQB0mi0UKQExAB8KoBj3eIkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGbbspnjOAVASFSR7x0vO0D9sE65ztRVQEDKnvUF/FVAZ4jr5qPCO0B8/2j2MPoFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm+htxIWxTlAG30gIL4AOi5B5xVSqyA6LhPrjlXPJDobpL+ipEkQOli/ZXJP+N85AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUTebfkh0FA2OSbjZNVa0CvnBcMX7h6QA0b19kqYHBAxLBfDPIqSUA89zsiFEAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNOPMkonwFA/IeE/RI4QkCUvnetXJ5nQLhJaGIaMnNAA6UfScmPY0DIaRR9zf44QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUl/c86WlOUAcqrPA/QJsQHwLGa0vLoNA7CQu3KR3gEDLtsyqIbphQKa1zxVx7SdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4TXFh6SaMUBsP4mSY95sQMLddsD1rY1AohYHCSMhk0BtQmpkOOt+QGQFSeF1VE9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALD/U8RbvR1AqBIuBxj9UkANBt5FuAlwQP8SQUWYfHRAYhNrwqCPZEBaLrbXWf8+QEeONIP+1/4/x/H5Z/hAJ0BgrXYlJx9UQAs8yOHS1GVAEqBG9PCyXUDcjKuyOVQ5QGUbz47vFfs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK/WPqbXwT9A9DgxfslddEDPYwTlWjuRQB8HLFjSgJZAotZbk3uThkB74oJIhUdgQLTOWfs0hB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaabLQS0Y8T8JolCIeqUxQH+X2E+GnFxA+XMof2nSdUDXh3BaKnuDQIqfc+1v5YBAVJAYMXsZfkCL/hpf/v2EQMXfWcNVD3hAabwoB3uQUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOEilzIEvQ0BAjzIx2GlvQL0z28ytH4BAUBQl/zDBdECLdxig5b9QQKQoWfsg8xBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFstnXsNNWY5dC90y35/jTkkaLRI9JCYOT/oJUGDp4k57/Rw/ATMYDkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMucP4kyM4z/ahK7ymPchQCwsQFPLCUVAR4xvJh+VUEDieUujV6tCQDNs0bRkgyNAH/OGVz7SMkAoi3lvzbJMQKX7rX4oMExAEx9GoiBcMUBd3PHpWtD6PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB21SBS8i75P/8jM/b5+iBAoquyvk+3LEAo+rWjMHMeQBSTW63mPvQ/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu97FXfLPU/1z6iHo2KHkDtHPw9sZ8rQPyvLZYkVh9ACQ8LxNxK9j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNK/fucIJeOf2blq9fB5o5R5bXPxLauzmObsTXlrDCOVLTHcnnda85vwQPFnphDEBsKd9WulhKQGfHQFdOrW5A8lh3lolmdkBfi/OvFoRkQGm+HqpHkTdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl/dOh1z9gjk3ERCG3rTGOQIOWnVZlvI5kqOtKThnCDqPpeLe6PAJOm65l2bWcvQ5vK67f99LxTkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTqcZYWF4EQLAt5fV4uTVA9HgtjjRVTUCS+wTSmTdLQPA1QcWunz9A4Crl2pelNEDVM1Fc954ZQCpFfnxDBeU/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa5po3wU2EUC2N4uGWtdGQKLfTHOvA2NAeAeGAYrbY0CwwcVZPwRKQMKXS+Km6BdAUMVtUWISJEDiedzUCf5IQIPV9Mc0hVNA3ENq2aIgQ0A+HbhReYMXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIbhANAn0/2haaBh+ovT/b5B+XDwXjPwAdcwV3qu4/XQWBdhQi4D87ILpKNXsGQL7EHXgSAjVAYGMhSZnTSUCMyHhOKQtEQE0o0PoUkSNAoZgVZ9L55z+RaXEzF4jwOVA4wE+PIgg6z8e3zKwaBjqwSZB8TmbpOUOy1E44T7I5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuEep3rKbmT9Ha2Qis4HRP4j0KSAlCe4/v5EzTGwq8D8C1cXB49XVPy86Dxw3gaI/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4KCELeVvM/9f5MRWfUHUDYOdM9dd4sQGtlb3fAhyFALOK2qXO3+j+soDJlKoy5PwAAAAAAAAAAAAAAAAAAAAAVdbi1J6WwP+BTZg8mAuY/mad7z2BCAkBVg3YizgIDQLINmGP/1ug/MIFUlXtdtD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIvHH8+GQ0j/cz4vyw2YMQKCJFwIqeStA5ohpqm3JMECKkpRWZ/sbQBh1jZIFzxNAM3cFItbTJECtWpw6tVYgQM5fAFlnFgBATvCZfa/hwz/fZrp6PonyOVjVPRPgxtw5/CVgi5IJrDkAAAAAAAAAAGdY/DsUSfo/gybLYgwBNED2z5HgcxxTQLJOb7Td8FZAboYJcch7QUAzZpvFeuISQN9vAJ2YldE/h8jNP/ytoj8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMKZsMOvm3OXSe81WKuO85uP7HJBlYCjpU/rsGCHcLOiga9djf+PE5V+BRwraGvTkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxQTOzfxeyP6URMGCKJPA/KF7XWZAVEkC06GMJpG8ZQB4FOXqbdQZAmI9ryATm2D+sAom4hrkZQNXedlh+MFdA+PIXzCo/ekAMKg/bYKaCQHtkC+CNo3BA0JZ78oajQkAAAAAAAAAAAGrVGGCwLSxA99Zg/GBjXEDvwjrVk/RxQPxiC0QXhWxA0r4eJ8VwTEDbN3vOTc4RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQtN1il/n7P0RAFly9cStAZX/1OBnoQEAFqqKvESk6QH5pomE2axlAIrWGVq4E3z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwDE1d7WgDQBuCEfmc2TZA6KASUwnlUEDFh5fzmmFPQNQJndD3TTJAEl/90avS+j8AAAAAAAAAAAAAAAAAAAAAhD+fTk9d6jnrlKrf1iggOq9YR+xj4jg6BCErc5IRODo4D9Khbz4dOmOT6w5MUeY5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J1yaee8FEDUVtjcb6xIQMsf6m2omGJAOuflVQBdY0B1DNtU3wlNQA3/q1KR1R9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFmTyD9xu7P1KTCivRf+8/67Dhj5H+BkA0ebnR1I9IQOq/Mo6ltHBAsKDYUMkBfkD5Me58nvlwQOaj2SbqIkhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIRtlayCWsA/BRmIIBw/9T95ANRdZFIYQCjTra/wXDdA59xQQfd3UEC/X3OS4kdRQJcFmkOiMjdA6me//uybA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHSB+c66Qfg/Gy3XMRBmMEDUsGtE2N5LQHw/gT0hxU1A+HJ0KkX8M0B7B+ySWN0AQAAAAAAAAAAAwNvuySUjFUAhuVi+YklEQMeG4Ay8eVhAStg8GWyPUkA32AqGWLExQLZVf6yYM/U/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHS/MsdeExlAGue19y7RUkCP8ePSqMFxQGLT7oPoEXVAgkG3hHdwX0D8HzoJ2X4tQAAAAAAAAAAAbgvKWX2mADlfxDI6p9g1OZ0MnRAIBlI5jf2QfzKzUjkrnb8QQ2Y4OQLuo1uvBAQ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzMiG5nGLs/iS/m+GNE5j8zLyiTEwT3P6W/Agry6+0/5zNNg3t2yD/RxJs/oSeJPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAART20fmrlIkAs9mK2SOpRQJzyKY+cXWVAgGg057MGYEBdcfirJj4+QOOvUSWI8gFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgjk0HhH56T/+n65YzrAhQF0PYv6hUT5APfK8TuBXQEB+cW73zSomQGPeYPLT6fI/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANetoPCe1TFAJaQDjNsaWUBwHudjuDtmQOKx7NuOxlhAUA+dUKJeMUAAAAAAAAAAAFXNRugtdR1AVuoBl9owUkCcMJzZhUVsQKcFDC1cpWtAw2O9v3sCUUC8Gth441YaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdBUJRv3wszkZrN+Q5jgyQDsRWHzdiGBA6ir9YGPickD0AVVaqSVrQD50Jndlj0hArXFry6v3C0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIWPShJimtP1q5I7E/Iu4/2+qGA5WZE0Bpq5iGYgwgQKT+FnC1ihBACDW03zLp6T9vYw7iZr/yP3ywRXVL4AhA4cpY3wnHBECgubhjB9nlP3T6soD566w/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKP+wx0xTwNA/hizW2t+QUDVipnlDfVjQNpV7w64MHFAyOFkiWQ2eECHzhGY28mBQEsf1LjEUnVAzFZG5fa1UEDkoFXSkzoqQHyUISvpN0FAaPCdC3BfR0DPCucosTJTQCzSw06Kd2pAKh/I7DpEbEDDshS01ixTQCtcZeTQYSBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJWXa9nsphFAt8ZIT+U5OkDGwuqZkYtIQLgccOED8TxA7yqOERh/FUAAAAAAAAAAAAAAAAAAAAAAR8J6+ltXQ0At6EuFmdFxQKCH93E7r4RAtE3JiHKBfkAffd60BnZjQEGvZeRBIGRAaZxp2mfZZEBXfePVUKpMQB+PpnDtshlA4qjuddyD+T83aUIvtNsQQF0ss0FzhQxA5XJjyZBz7j8CKMSVUk0IQCrf+sbl2EVAvPAGcD9saUA0G6d+aqRyQN2CIViEOmFACaODnRgRNEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFoWahsPibo5hFDTdSl27Dme+pwmET4DOhbZRhoo+QE/RabKTZnMPD8MNKWzyRZdP5N5cfR1hWI/soPj5zK8TT/IFQUywxcePxCPBf7Ucm0//LPo61GZB0DC/SXqISY/QHiejb9ZEFpA34aI4tWRW0BY2XH0S2hCQAQXbJNe/w5AuAsVAlESvTkdNYnaRU+9OcjIubiIoaI5Px2e+lWGDUCwmiMRROI6QOpBa1fv3k5AFKbEzkBaRkD5tPRIImkkQMAkQSD+gOc/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmGbxAQhPM/nsWC7HaEMUBbPhHikBRUQJQLT7Gjbl5ATe4/GxQ1UEB6WFLoiY0qQEosNPskxuk/AAAAAAAAAAAAAAAAAAAAACYVG+tWQAhAWXYxJF2mOEBss5h0BJ5PQJuTtdSAlklAmq4MEtghKkBLDmBqzdbwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP5A6QbWSERAhwAsSDRDcEAQJL9z/HSAQChUwZlaBXVAsyQZlyDyUEC/Cp3OMz4RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdT5XfAdH3D+DmUDmKCEDQDxSMdvzVxBA74AYqjGtKkAdrEv5GwxXQPpUPdYg4m1A2dLBvLqRaEC9ZKxtaoNJQPOfkEIquxBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA43VOrmOlUPzfa4doEAIo/SB1wlvFrpD+4vA2PS0SkP8TmDzy6aYk/EQUZE6UhVD8AAAAAAAAAAAAAAAAAAAAAJFMzz+xk2T/im4R+rp0CQKrda8oCPxFA+yaHJ94wBEBfW6wWcN/dP1u36ItotjZAbW9CkMtrYEDfwP0pxQJuQF0u40+KVGFAtMe9AhFMOUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcAWehK27DP/QZUWHmV/o/R8WMn7yTFkB+7p7yaHYYQPjqWCRAwQBAHCg2ukUEzT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeMcDW5MDFkAoxguZwwE/QD0bayDynUtA3+bectQbP0B4LF/2pSgWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsHzSEV2Q0QJt133rEJGBAHc72OEUrcECM2WzzBX1kQMyTamcvbEBAAYjl1WinAEAlAnOIiHs2OvAGzm4XZ9c/jsoDJS+MFUB1p7NJ8xo5QLSRFKfGgUJAU+PWU4tDMUAUjuV46mAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDoc9UVfPQ/bCOb6SP/KkA9HDDSNIRGQNRhh84exUdA3FoEoebCL0AKoICgt9v6PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQKd6wDaw5T/hwDXT4XwjQHJ2i9mPLEZAp+MEuDvzT0C4RMx1/iU9QKNkG/JY1hBA/5CrEL5/0jkAQSf7SYbVOXjfkEzYwRI6dClIOAW0NDpo+wuCZPE8OofjE2PXnyk6wLruKWU2zD9UiIpxkfj2P9SSnR9FsQdAtHJ+C4n0/j/1v7UB1Z3ZP3XP78552po/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgVDK+pfIBQLn1o+tY4TRAmoOelVTKTkCKN3R5c8ZMQIOmIngECzFAhbiNyuSW+T8AAAAAAAAAAFqa/tWS50JABlAx9v5WdkCqUZ8wELyQQF0VvuM0yY9AHbdReMgic0APKCuY+zU9QAAAAAAAAAAAH1/fRn/2jTnAJ2pHwnvLOZ1WFsXX9+85D0h9h8ST9zl/JD4FqocaQKT2I8Avn0lANIB+RgNiX0CcFfVy6WBYQOPinrthFzhAhg1DU/7pAkD7Nma/YjEDQHQKZc+qmxRAvYmxVKImDUB6XqlZFD/qP4DxRmzn/K0/AAAAAAAAAABK8IF+j1GdORecFb3RUMs5eIhGaBwl4Dl4tPyH8DbYOTUigcEdCrc5f3bYRz7QezkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKl+aYdUv7D901A1C/nEcQJwif3rO1jRAXez+KmGMP0DvMWVe695CQCO16qGLIDZA8ygT4aTOEUAz1frvjXPSP57YuoWr2/E/C5VjJtVbJEB8wJPcu3c9QIWjP9WVEztAEKx44niWH0ApXsMlv2TnPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ0x6nDjE1D/U+J9sCssNQEqDfN+VUCtAEGTbtVH/L0CFEHF9G/AXQAHKX5aP3eY/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAzsDpPEW9PyxENEziRec/rG/yHjqE9z9Q4ldM7zLuP6XfjklnpMg/uO3ugeuNiT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkJx3GUMH+P333Q61X6D5AFDqTOdO/Y0Aju+bZKwxwQMZEgTf4lGBAcvxOjuTJNUAAAAAAAAAAAHB2w3/A2O0/8Frny/MBLUC/ydg8Me5RQDzPaX9BMlxAJ+CEFFIzTEApAPxUOfAhQAAAAAAAAAAAAAAAAAAAAABsx/tHvI7IOUkcQlJnpPI5NG3Hg64BAjpwA3hmUyYDQBIM+/EUEDdA78naLFqsUUAWToXbFjxRQEQR2O1mYzVA9iG+mI/jAEAAAAAAAAAAANPB6sJBbQFAtPDVtWmqOUA64f83kA9YQJQtTplrulxADk2wonjbRUCkGIulUDkVQJyv5djWlW8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfPf6IwvOzOYSDfoCeHPE5x+JwyGi1EjooiM9mBjnnP8X7OiY+niVAP32Dz4GoSUBIxoKb6mlTQKshO71pukJAoYiGT+0IF0CthD5WKt8iQLHuEnMzF1ZAFl6NNhN9cEBV9E37OGpvQFMn/7aKHFNAamlTgOq9HUDLU0VCA0F2PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW9yeNhOcIEAM7H8xbzdHQMsmdvAbtFRApF8kwsWOR0CnNcv59RkhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnbUzHYODL0DIUwxGXvdUQN9RsFojz2FAECXhh0lQU0DvHcHhzL0qQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg2sJSS/dQ0Dvq+h6bjJrQAdG7zwh6HdANXya29GFa0C/Bfl0ppNGQO6JPbermwBApMMVTiTTxz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3FaT6bFg4QFtQV7fyJGZAeoZR+hTIeUCIZWz4DkFzQAYx42ZRllJAurxuKAjKF0Auu+WRxA+iPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/56ffgyfAkAe5a9gqhw5QGx+A3rMrVVA4m6ULxL2V0AX3Ux2sflAQDPBsQlcpBBAfNTwd35o6D9fw+d2p5HiP4zAOOcjF8I/ER7aC7iRhj8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASlH+Cur64jnvFhoibtcNOkQblzp6FwtAzusBSoObN0BXECA0GV1KQLakGGil3UJAC0PofjpNIUC9KsJmwlXkPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjdznb/4Pg/gC/HO0ZsMkCe1yklioNRQFWQd87iX1VAKJpebA7iRkC3IEsao7NeQCTGegLE/HZAkOIArc7idkCA4UCiLkJdQHcg/BQ1BChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkiyrOS0/Q/t/Mlv1y6MUB1nzJHQ29TQHc5/CqQ1FtAgJeY4NrNTUA9VnBooJY2QPDQYPn2tB1A7mdUvhdi8j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANifuOMNAClAiMRU0DjFVkD0JcmlJ7VqQIJ62w6MK2RA20VC4MqdQ0Dpc/E0X5EIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2g0J+h1ESQKClivsOgURAqJumCyqWXUBCPYhWpYRbQGArYdRTf0BAtA08JQWACUAAAAAAAAAAAAAAAAAAAAAAjMHUj1KzdDmGL3HA3MSjOVe9f9plWrg5QjFtcl1ZszliqheyltSTOQrGxtJXN1o5AAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1517\"},\"selection_policy\":{\"id\":\"1516\"}},\"id\":\"1500\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1493\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1487\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1464\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1496\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1490\"},\"group\":null,\"major_label_policy\":{\"id\":\"1491\"},\"ticker\":{\"id\":\"1464\"}},\"id\":\"1463\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1499\"},{\"id\":\"1519\"}]},\"id\":\"1498\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"1463\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1466\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1517\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1457\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1483\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"1459\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1462\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1485\"}]},\"id\":\"1499\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"1500\"}},\"id\":\"1505\",\"type\":\"CDSView\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1473\",\"type\":\"BoxAnnotation\"}],\"root_ids\":[\"1450\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"7d9652be-e64a-483d-b732-fcde9cad4c0d\",\"root_ids\":[\"1450\"],\"roots\":{\"1450\":\"4a53b34c-a872-4821-ba1a-f61f83ddfa0f\"}}];\n", + " const docs_json = {\"93578f1f-8401-462d-9060-dfa65295b4f5\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1459\"}],\"center\":[{\"id\":\"1462\"},{\"id\":\"1466\"},{\"id\":\"1498\"}],\"height\":300,\"left\":[{\"id\":\"1463\"}],\"renderers\":[{\"id\":\"1485\"},{\"id\":\"1504\"}],\"title\":{\"id\":\"1487\"},\"toolbar\":{\"id\":\"1474\"},\"width\":990,\"x_range\":{\"id\":\"1451\"},\"x_scale\":{\"id\":\"1455\"},\"y_range\":{\"id\":\"1453\"},\"y_scale\":{\"id\":\"1457\"}},\"id\":\"1450\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1481\"}},\"id\":\"1486\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPSpCOVi2KM5OMLTaFRL5DmK3StpCBkKOgiv/EELGhU63Y/PUbV0BTp4iXg8GW/bOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1517\"},\"selection_policy\":{\"id\":\"1516\"}},\"id\":\"1500\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1503\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1484\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"1467\"},{\"id\":\"1468\"},{\"id\":\"1469\"},{\"id\":\"1470\"},{\"id\":\"1471\"},{\"id\":\"1472\"}]},\"id\":\"1474\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"1459\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1462\",\"type\":\"Grid\"},{\"attributes\":{\"axis\":{\"id\":\"1463\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1466\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1487\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1460\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1504\"}]},\"id\":\"1519\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"1500\"}},\"id\":\"1505\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1464\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1490\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1493\"},\"group\":null,\"major_label_policy\":{\"id\":\"1494\"},\"ticker\":{\"id\":\"1460\"}},\"id\":\"1459\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1482\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1499\"},{\"id\":\"1519\"}]},\"id\":\"1498\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1502\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1467\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1457\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1493\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1494\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1496\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1500\"},\"glyph\":{\"id\":\"1501\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1503\"},\"nonselection_glyph\":{\"id\":\"1502\"},\"view\":{\"id\":\"1505\"}},\"id\":\"1504\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1468\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1495\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1455\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1473\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1453\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1483\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"1473\"}},\"id\":\"1469\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1470\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1451\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1490\"},\"group\":null,\"major_label_policy\":{\"id\":\"1491\"},\"ticker\":{\"id\":\"1464\"}},\"id\":\"1463\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1481\"},\"glyph\":{\"id\":\"1482\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1484\"},\"nonselection_glyph\":{\"id\":\"1483\"},\"view\":{\"id\":\"1486\"}},\"id\":\"1485\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1472\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1491\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1496\"},\"selection_policy\":{\"id\":\"1495\"}},\"id\":\"1481\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1471\",\"type\":\"ResetTool\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1485\"}]},\"id\":\"1499\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1517\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1516\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1501\",\"type\":\"Line\"}],\"root_ids\":[\"1450\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"93578f1f-8401-462d-9060-dfa65295b4f5\",\"root_ids\":[\"1450\"],\"roots\":{\"1450\":\"e2611573-2902-40de-abe7-217e42e2da27\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -1046,7 +1046,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -1058,8 +1058,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"58f9e23c-3587-44be-a3b2-7b9318ecce20\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1644\"}],\"center\":[{\"id\":\"1647\"},{\"id\":\"1651\"},{\"id\":\"1683\"}],\"height\":300,\"left\":[{\"id\":\"1648\"}],\"renderers\":[{\"id\":\"1670\"},{\"id\":\"1689\"}],\"title\":{\"id\":\"1672\"},\"toolbar\":{\"id\":\"1659\"},\"width\":990,\"x_range\":{\"id\":\"1636\"},\"x_scale\":{\"id\":\"1640\"},\"y_range\":{\"id\":\"1638\"},\"y_scale\":{\"id\":\"1642\"}},\"id\":\"1635\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1689\"}]},\"id\":\"1704\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1669\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1667\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1685\"},\"glyph\":{\"id\":\"1686\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1688\"},\"nonselection_glyph\":{\"id\":\"1687\"},\"view\":{\"id\":\"1690\"}},\"id\":\"1689\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1636\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1638\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1688\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1640\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"1648\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1651\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1666\"}},\"id\":\"1671\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1657\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1676\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1652\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1681\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1680\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1655\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1672\",\"type\":\"Title\"},{\"attributes\":{\"tools\":[{\"id\":\"1652\"},{\"id\":\"1653\"},{\"id\":\"1654\"},{\"id\":\"1655\"},{\"id\":\"1656\"},{\"id\":\"1657\"}]},\"id\":\"1659\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1642\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1687\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1678\"},\"group\":null,\"major_label_policy\":{\"id\":\"1679\"},\"ticker\":{\"id\":\"1645\"}},\"id\":\"1644\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1678\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1679\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1675\"},\"group\":null,\"major_label_policy\":{\"id\":\"1676\"},\"ticker\":{\"id\":\"1649\"}},\"id\":\"1648\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1675\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAAAAaUDpoosuugBpQNFFF110AWlAuuiiiy4CaUCjiy666AJpQIwuuuiiA2lAdNFFF10EaUBddNFFFwVpQEYXXXTRBWlAL7rooosGaUAXXXTRRQdpQAAAAAAACGlA6aKLLroIaUDRRRdddAlpQLrooosuCmlAo4suuugKaUCMLrroogtpQHTRRRddDGlAXXTRRRcNaUBGF1100Q1pQC+66KKLDmlAF1100UUPaUAAAAAAABBpQOmiiy66EGlA0UUXXXQRaUC66KKLLhJpQKOLLrroEmlAjC666KITaUB00UUXXRRpQF100UUXFWlARhdddNEVaUAvuuiiixZpQBdddNFFF2lAAAAAAAAYaUDpoosuuhhpQNFFF110GWlAuuiiiy4aaUCjiy666BppQIwuuuiiG2lAdNFFF10caUBddNFFFx1pQEYXXXTRHWlAL7roooseaUAXXXTRRR9pQAAAAAAAIGlA6aKLLrogaUDRRRdddCFpQLrooosuImlAo4suuugiaUCMLrrooiNpQHTRRRddJGlAXXTRRRclaUBGF1100SVpQC+66KKLJmlAF1100UUnaUAAAAAAAChpQOmiiy66KGlA0UUXXXQpaUC66KKLLippQKOLLrroKmlAjC666KIraUB00UUXXSxpQF100UUXLWlARhdddNEtaUAvuuiiiy5pQBdddNFFL2lAAAAAAAAwaUDpoosuujBpQNFFF110MWlAuuiiiy4yaUCjiy666DJpQIwuuuiiM2lAdNFFF100aUBddNFFFzVpQEYXXXTRNWlAL7rooos2aUAXXXTRRTdpQAAAAAAAOGlA6aKLLro4aUDRRRdddDlpQLrooosuOmlAo4suuug6aUCMLrroojtpQHTRRRddPGlAXXTRRRc9aUBGF1100T1pQC+66KKLPmlAF1100UU/aUAAAAAAAEBpQOmiiy66QGlA0UUXXXRBaUC66KKLLkJpQKOLLrroQmlAjC666KJDaUB00UUXXURpQF100UUXRWlARhdddNFFaUAvuuiii0ZpQBdddNFFR2lAAAAAAABIaUDpoosuukhpQNFFF110SWlAuuiiiy5KaUCjiy666EppQIwuuuiiS2lAdNFFF11MaUBddNFFF01pQEYXXXTRTWlAL7roootOaUAXXXTRRU9pQAAAAAAAUGlA6aKLLrpQaUDRRRdddFFpQLrooosuUmlAo4suuuhSaUCMLrroolNpQHTRRRddVGlAXXTRRRdVaUBGF1100VVpQC+66KKLVmlAF1100UVXaUAAAAAAAFhpQOmiiy66WGlA0UUXXXRZaUC66KKLLlppQKOLLrroWmlAjC666KJbaUB00UUXXVxpQF100UUXXWlARhdddNFdaUAvuuiii15pQBdddNFFX2lAAAAAAABgaUDpoosuumBpQNFFF110YWlAuuiiiy5iaUCjiy666GJpQIwuuuiiY2lAdNFFF11kaUBddNFFF2VpQEYXXXTRZWlAL7roootmaUAXXXTRRWdpQAAAAAAAaGlA6aKLLrpoaUDRRRdddGlpQLrooosuamlAo4suuuhqaUCMLrroomtpQHTRRRddbGlAXXTRRRdtaUBGF1100W1pQC+66KKLbmlAF1100UVvaUAAAAAAAHBpQOmiiy66cGlA0UUXXXRxaUC66KKLLnJpQKOLLrrocmlAjC666KJzaUB00UUXXXRpQF100UUXdWlARhdddNF1aUAvuuiii3ZpQBdddNFFd2lAAAAAAAB4aUDpoosuunhpQNFFF110eWlAuuiiiy56aUCjiy666HppQIwuuuiie2lAdNFFF118aUBddNFFF31pQEYXXXTRfWlAL7rooot+aUAXXXTRRX9pQAAAAAAAgGlA6aKLLrqAaUDRRRdddIFpQLrooosugmlAo4suuuiCaUCMLrroooNpQHTRRRddhGlAXXTRRReFaUBGF1100YVpQC+66KKLhmlAF1100UWHaUAAAAAAAIhpQOmiiy66iGlA0UUXXXSJaUC66KKLLoppQKOLLrroimlAjC666KKLaUB00UUXXYxpQF100UUXjWlARhdddNGNaUAvuuiii45pQBdddNFFj2lAAAAAAACQaUDpoosuupBpQNFFF110kWlAuuiiiy6SaUCjiy666JJpQIwuuuiik2lAdNFFF12UaUBddNFFF5VpQEYXXXTRlWlAE6qQIxvWaUDIwCeWwxVsQHu/g+JBu3BAWqpcXYiycEABO5h40QZsQNwFbBjt1mlAo4suuuiaaUCMLrrooptpQHTRRRddnGlAXXTRRRedaUBGF1100Z1pQC+66KKLnmlAF1100UWfaUAAAAAAAKBpQOmiiy66oGlA0UUXXXShaUC66KKLLqJpQKOLLrroomlAjC666KKjaUB00UUXXaRpQF100UUXpWlARhdddNGlaUAvuuiii6ZpQBdddNFFp2lAAAAAAACoaUDpoosuuqhpQNFFF110qWlAuuiiiy6qaUCjiy666KppQIwuuuiiq2lAdNFFF12saUBddNFFF61pQEYXXXTRrWlAL7rooouuaUAXXXTRRa9pQAAAAAAAsGlA6aKLLrqwaUDRRRdddLFpQLrooosusmlAo4suuuiyaUCMLrroorNpQHTRRRddtGlAXXTRRRe1aUBGF1100bVpQC+66KKLtmlAF1100UW3aUAAAAAAALhpQOmiiy66uGlA0UUXXXS5aUC66KKLLrppQKOLLrroumlAjC666KK7aUB00UUXXbxpQF100UUXvWlARhdddNG9aUAvuuiii75pQBdddNFFv2lAAAAAAADAaUDpoosuusBpQNFFF110wWlAuuiiiy7CaUCjiy666MJpQIwuuuiiw2lAdNFFF13EaUBddNFFF8VpQEYXXXTRxWlALrrooovGaUAXXXTRRcdpQAAAAAAAyGlA6aKLLrrIaUDRRRdddMlpQLrooosuymlAo4suuujKaUCMLrroostpQHTRRRddzGlAXXTRRRfNaUBGF1100c1pQC+66KKLzmlAF1100UXPaUAAAAAAANBpQOmiiy660GlA0UUXXXTRaUC66KKLLtJpQKOLLrro0mlAjC666KLTaUB00UUXXdRpQF100UUX1WlARhdddNHVaUAvuuiii9ZpQBdddNFF12lAAAAAAADYaUDpoosuuthpQNFFF1102WlAuuiiiy7aaUCjiy666NppQIwuuuii22lAdNFFF13caUBddNFFF91pQEYXXXTR3WlAL7roooveaUAXXXTRRd9pQAAAAAAA4GlA6aKLLrrgaUDRRRdddOFpQLrooosu4mlAo4suuujiaUCMLrroouNpQHTRRRdd5GlAXXTRRRflaUCJeNNL3gtqQHNfdjiy3GpArsabnCHba0DEAvhYyCtrQI0aY5BQTmpA3w22+btEakD34y1DYylqQCXZKCZH+WlAxblQZ6nsaUB00UUXXexpQF100UUX7WlARhdddNHtaUAuuuiii+5pQBdddNFF72lAAAAAAADwaUDpoosuuvBpQNFFF1108WlAuuiiiy7yaUCjiy666PJpQIwuuuii82lAdNFFF130aUBddNFFF/VpQEYXXXTR9WlAL7rooov2aUAXXXTRRfdpQAAAAAAA+GlA6aKLLrr4aUDRRRdddPlpQLrooosu+mlAo4suuuj6aUCMLrroovtpQHTRRRdd/GlAXXTRRRf9aUBGF1100f1pQC+66KKL/mlAF1100UX/aUAAAAAAAABqQOmiiy66AGpA0UUXXXQBakC66KKLLgJqQKOLLrroAmpAjC666KIDakB00UUXXQRqQF100UUXBWpARhdddNEFakAvuuiiiwZqQBdddNFFB2pAAAAAAAAIakDpoosuughqQNFFF110CWpAuuiiiy4KakCjiy666ApqQIwuuuiiC2pAdNFFF10MakBddNFFFw1qQEYXXXTRDWpAL7rooosOakAXXXTRRQ9qQAAAAAAAEGpA6aKLLroQakDRRRdddBFqQLrooosuEmpAo4suuugSakCiLWwtNnhqQEWxQTLhA21AzQRADqh7cEC8WcsEkyZvQAp+nBAAQmtAW6GCRfksakAAAAAAABhqQOmiiy66GGpA0UUXXXQZakC66KKLLhpqQKOLLrroGmpAjC666KIbakB00UUXXRxqQF100UUXHWpARhdddNEdakAuuuiiix5qQBdddNFFH2pAAAAAAAAgakDpoosuuiBqQNFFF110IWpAuuiiiy4iakCjiy666CJqQIwuuuiiI2pAdNFFF10kakBddNFFFyVqQEYXXXTRJWpAL7rooosmakAXXXTRRSdqQAAAAAAAKGpA6aKLLrooakDRRRdddClqQG97P4M3qmpA99ZpL/acbkBIXDbH10hzQMqflx8Gg3JA3p+GudEnbUAv7ZvjiG9qQC+66KKLLmpAF1100UUvakAAAAAAADBqQOmiiy66MGpA0UUXXXQxakC66KKLLjJqQKOLLrroMmpAjC666KIzakB00UUXXTRqQF100UUXNWpARhdddNE1akAvuuiiizZqQBdddNFFN2pAAAAAAAA4akDpoosuujhqQNFFF110OWpAuuiiiy46akCjiy666DpqQIwuuuiiO2pAdNFFF108akDZLnrOgeBtQGNjjK4iQHdAoucUr7XRfkAtCqOj19J2QNE3X1sPlm1A6aKLLrpAakDRRRdddEFqQLrooosuQmpAo4suuuhCakCMLrrookNqQHTRRRddRGpAXXTRRRdFakBGF1100UVqQC+66KKLRmpAF1100UVHakAAAAAAAEhqQOmiiy66SGpA0UUXXXRJakC66KKLLkpqQKOLLrroSmpAjC666KJLakB00UUXXUxqQF100UUXTWpARhdddNFNakAvuuiii05qQBdddNFFT2pAAAAAAABQakDpoosuulBqQIEGOhucn2xAWPVf67kceEAWIicVDueGQHZ1yQHf14VAjVfbeUUedkD4zbTK7vprQEYXXXTRVWpALrroootWakAXXXTRRVdqQAAAAAAAWGpA6aKLLrpYakDRRRdddFlqQLrooosuWmpAo4suuuhaakCMLrrooltqQHTRRRddXGpAXXTRRRddakBGF1100V1qQC+66KKLXmpAF1100UVfakAAAAAAAGBqQOmiiy66YGpA0UUXXXRhakC66KKLLmJqQKOLLrroYmpAac72t2VPa0Cfxi+Yz0hwQBLyDAzssXNALA84daN8cUCfJ48XBy1sQIdVt9XIhGpAAAAAAABoakDpoosuumhqQNFFF110aWpAuuiiiy5qakCjiy666GpqQIwuuuiia2pAdNFFF11sakBddNFFF21qQEYXXXTRbWpAL7roootuakAXXXTRRW9qQAAAAAAAcGpA6aKLLrpwakDRRRdddHFqQLrooosucmpAo4suuuhyakCMLrroonNqQHTRRRdddGpAXXTRRRd1akBGF1100XVqQC+66KKLdmpAF1100UV3akAAAAAAAHhqQOmiiy66eGpA0kUXXXR5akC66KKLLnpqQKOLLrroempAjC666KJ7akB00UUXXXxqQF100UUXfWpARhdddNF9akAuuuiii35qQBdddNFFf2pAAAAAAACAakDpoosuuoBqQNFFF110gWpAuuiiiy6CakCjiy666IJqQIwuuuiig2pAdNFFF12EakBddNFFF4VqQEYXXXTRhWpAL7rooouGakAXXXTRRYdqQHk5C5TJO21AM+tdCw42e0Bs/XJXXzONQOoIT+Hkio1AyZ8X3ILbe0DpnXWzUnVtQHTRRRddjGpAXXTRRReNakBGF1100Y1qQC666KKLjmpAF1100UWPakAAAAAAAJBqQOmiiy66kGpA0UUXXXSRakC66KKLLpJqQKOLLrrokmpAjC666KKTakB00UUXXZRqQF100UUXlWpARhdddNGVakAvuuiii5ZqQBdddNFFl2pAAAAAAACYakDpoosuuphqQNFFF110mWpAuuiiiy6aakCjiy666JpqQIwuuuiim2pAdNFFF12cakBddNFFF51qQEYXXXTRnWpALrroooueakAXXXTRRZ9qQAAAAAAAoGpA6aKLLrqgakDSRRdddKFqQLrooosuompAo4suuuiiakCMLrrooqNqQHTRRRddpGpAXXTRRRelakBGF1100aVqQC666KKLpmpAF1100UWnakAAAAAAAKhqQOmiiy66qGpA0UUXXXSpakC66KKLLqpqQKOLLrroqmpAjC666KKrakB00UUXXaxqQF100UUXrWpARhdddNGtakAvuuiii65qQBdddNFFr2pAAAAAAACwakDpoosuurBqQNFFF110sWpAuuiiiy6yakCjiy666LJqQIwuuuiis2pAdNFFF120akBddNFFF7VqQEYXXXTRtWpALrrooou2akAXXXTRRbdqQAAAAAAAuGpA6aKLLrq4akCy1ijFj0twQEWr7Z8b2IFAGLlfwY2pkEB1AQElZ5+KQI8mG+AFunZA+svlbLMdbEBGF1100b1qQC+66KKLvmpAF1100UW/akAAAAAAAMBqQOmiiy66wGpA0UUXXXTBakC66KKLLsJqQKOLLrrowmpAjC666KLDakB00UUXXcRqQF100UUXxWpARhdddNHFakAuuuiii8ZqQBdddNFFx2pAcCbiUa9Ja0CMwTm4Y/1wQAUzHuq1an1AEmZ1FiDqgUCQ3OttqBR4QO6eK0fp/HJAJYQ6RZfFc0AS1NildGZwQEcJgQJ9sGtALrrooovOakAXXXTRRc9qQAAAAAAA0GpA6aKLLrrQakDRRRdddNFqQLrooosu0mpAo4suuujSakCMLrrootNqQHTRRRdd1GpAXXTRRRfVakBGF1100dVqQC+66KKL1mpAF1100UXXakAAAAAAANhqQOmiiy662GpA0UUXXXTZakC66KKLLtpqQKOLLrro2mpA9KmH2FzmakDByPMHhUBrQMOqpHhOAmxA+k5tsPXqa0D3yfSAACxrQA9acARD5mpAAAAAAADgakDpoosuuuBqQNFFF1104WpAuuiiiy7iakCjiy666OJqQIwuuuii42pAdNFFF13kakBddNFFF+VqQEYXXXTR5WpAL7rooovmakAXXXTRRedqQAAAAAAA6GpA6aKLLrroakDRRRdddOlqQLrooosu6mpAo4suuujqakCMLrrooutqQHTRRRdd7GpAXXTRRRftakBGF1100e1qQC666KKL7mpAF1100UXvakAAAAAAAPBqQOmiiy668GpA0kUXXXTxakC66KKLLvJqQKOLLrro8mpAjC666KLzakB00UUXXfRqQF100UUX9WpARhdddNH1akAuuuiii/ZqQBdddNFF92pAAAAAAAD4akDpoosuuvhqQNFFF110+WpAuuiiiy76akCjiy666PpqQIwuuuii+2pAdNFFF138akBddNFFF/1qQEYXXXTR/WpAL7rooov+akAXXXTRRf9qQAAAAAAAAGtA6aKLLroAa0DRRRdddAFrQLrooosuAmtAo4suuugCa0CMLrroogNrQHTRRRddBGtAXXTRRRcFa0BGF1100QVrQC666KKLBmtAF1100UUHa0AAAAAAAAhrQOmiiy66CGtA0kUXXXQJa0C66KKLLgprQKOLLrroCmtAjC666KILa0B00UUXXQxrQF100UUXDWtARhdddNENa0Avuuiiiw5rQBdddNFFD2tAAAAAAAAQa0DpoosuuhBrQNFFF110EWtAuuiiiy4Sa0Cjiy666BJrQP7FSDIDqWtAB1WTw0sSckCjsNVjy82BQIbptD5E+YdArhPP4m/IgEBzGEui95d2QMRksUgBFHFACS/2/p1GbEDSRRdddBlrQLrooosuGmtAo4suuugaa0CMLrroohtrQHTRRRddHGtAXXTRRRcda0BGF1100R1rQC666KKLHmtAF1100UUfa0AAAAAAACBrQOmiiy66IGtA0UUXXXQha0C66KKLLiJrQKOLLrroImtAjC666KIja0B00UUXXSRrQMs/ONT6eWtAz0FPMrWLbkBWCch/eQhzQBzhIWakEnNADXHdfFSgbkDnRmXyooBrQNFFF110KWtAuuiiiy4qa0Cjiy666CprQIwuuuiiK2tAdNFFF10sa0BddNFFFy1rQEYXXXTRLWtALrrooosua0AXXXTRRS9rQAAAAAAAMGtA6aKLLrowa0DSRRdddDFrQLrooosuMmtAo4suuugya0CMLrroojNrQHTRRRddNGtAXXTRRRc1a0BGF1100TVrQC+66KKLNmtAF1100UU3a0AAAAAAADhrQOmiiy66OGtA0UUXXXQ5a0C66KKLLjprQKOLLrroOmtAjC666KI7a0B00UUXXTxrQF100UUXPWtARhdddNE9a0Auuuiiiz5rQOShUv8+oW9AbPLNxslKe0ASt64RXiyEQPa9YgjlAH5Admpdh3XGcECAe7cK6aNrQIwuuuiiQ2tAdNFFF11Ea0BddNFFF0VrQEYXXXTRRWtALrroootGa0AXXXTRRUdrQAAAAAAASGtA6aKLLrpIa0DRRRdddElrQLrooosuSmtAo4suuuhKa0CMLrrooktrQKzCarrZkmtAXJYyBRzbb0DtauoQF3Z5QGhT7hmwbIBADQFKjYdvd0A5jaKv2W9uQOmiiy66UGtA0UUXXXRRa0C66KKLLlJrQKOLLrroUmtAjC666KJTa0B00UUXXVRrQF100UUXVWtARhdddNFVa0Auuuiii1ZrQBdddNFFV2tAAAAAAABYa0DpoosuulhrQNJFF110WWtAuuiiiy5aa0Cjiy666FprQIwuuuiiW2tAXl3B1RGRbkA8j0KDCrB7QE5RMAqkBYpAeFPoxEdPh0DxiSC+s4x2QFr7XBHX3mxA6aKLLrpga0DRRRdddGFrQLrooosuYmtAo4suuuhia0CMLrroomNrQHTRRRddZGtAXXTRRRdla0BGF1100WVrQC666KKLZmtA0wNtYpqabUC2n0TJMSN8QD7jDCYSRJJAXP+plFGOlkBl2x3VJ1CGQH5mQBkDoHFAjC666KJra0B00UUXXWxrQF100UUXbWtARhdddNFta0Auuuiii25rQBdddNFFb2tAAAAAAABwa0DpoosuunBrQNFFF110cWtAuuiiiy5ya0Cjiy666HJrQIrO3MaNYWxAZG1ujXR5ckA8wMboQ8R9QFHPt3/AG4FAyOapMhYDeEDiImsMMVdvQB1pBv2vtWtABUILtcnsbEBATun3g8RyQGKStbaAp3hA1u0omjAqdUAooA8fKqZuQKtvY/aIsmtAXXTRRRd9a0BGF1100X1rQC666KKLfmtAF1100UV/a0AAAAAAAIBrQOmiiy66gGtA0kUXXXSBa0C66KKLLoJrQKOLLrrogmtAjC666KKDa0B00UUXXYRrQF100UUXhWtARhdddNGFa0Avuuiii4ZrQBdddNFFh2tAAAAAAACIa0DpoosuuohrQNFFF110iWtAuuiiiy6Ka0Cjiy666IprQIwuuuiii2tAdNFFF12Ma0BddNFFF41rQBzyJGkMhm9ABsvSp4cSgUBy7zKfQ62UQB8HLFjS8plAXL/+Hqp3jUAmFM3SfOx1QDC3fTNQhmxAo4suuuiSa0CMLrroopNrQHTRRRddlGtAXXTRRReVa0BGF1100ZVrQC666KKLlmtAF1100UWXa0AAAAAAAJhrQOmiiy66mGtA0UUXXXSZa0C66KKLLpprQKOLLrrommtA2cU9Q9O9a0C15U9oDNFtQA7g3jat9XRAzn+rHKnQgUBitipDzWKKQNC20GFBzYdAKkiMmL30hUBF573qLOaLQFfB8vgH8IJAd6ObBzY1ckCjiy666KJrQIwuuuiio2tAdNFFF12ka0BddNFFF6VrQEYXXXTRpWtALrrooouma0AXXXTRRadrQAAAAAAAqGtA6aKLLrqoa0DSRRdddKlrQLrooosuqmtAo4suuuiqa0CMLrrooqtrQHTRRRddrGtAXXTRRReta0BGF1100a1rQC+66KKLrmtAF1100UWva0AAAAAAALBrQOmiiy66sGtA0UUXXXSxa0C66KKLLrJrQKOLLrrosmtAjC666KKza0B00UUXXbRrQF100UUXtWtARhdddNG1a0Auuuiii7ZrQBdddNFFt2tAB6mUOfBBcEAUGd8vSZF9QDIFIeQKDodAVkR7IiRPgUC0Yx3FbQ1yQNH3lPA7Q2xAdNFFF128a0BddNFFF71rQEYXXXTRvWtALrrooou+a0AXXXTRRb9rQAAAAAAAwGtA6aKLLrrAa0DRRRdddMFrQLrooosuwmtAo4suuujCa0CMLrroosNrQHTRRRddxGtAXXTRRRfFa0BGF1100cVrQC666KKLxmtAF1100UXHa0AAAAAAAMhrQOmiiy66yGtA0UUXXXTJa0C66KKLLsprQKOLLrroymtAjC666KLLa0B00UUXXcxrQF100UUXzWtARhdddNHNa0Auuuiii85rQBdddNFFz2tAAAAAAADQa0DpoosuutBrQNJFF1100WtAuuiiiy7Sa0Cjiy666NJrQIwuuuii02tAdNFFF13Ua0BddNFFF9VrQEYXXXTR1WtAL7rooovWa0AXXXTRRddrQAAAAAAA2GtA0LJte0bsa0AfLkLs7fhsQOJ5ObBQjnBA4yizJrwSckCChsZoPENwQDfokmKTFG1AwVLCEF83bkAIvR1oQoVxQIwcSuFKdXFA+SC95ckKbkC549O1oBVsQOmiiy664GtA0kUXXXTha0C66KKLLuJrQKOLLrro4mtAjC666KLja0B00UUXXeRrQF100UUX5WtARhdddNHla0DZ+4yH6RhsQFeP13D19mxAuirr+3SzbUC6UqmzU9xsQPf8cSryEWxAuuiiiy7qa0Cjiy666OprQIwuuuii62tAdNFFF13sa0BddNFFF+1rQEYXXXTR7WtALrrooovua0AXXXTRRe9rQAAAAAAA8GtA6aKLLrrwa0DRRRdddPFrQLrooosu8mtAo4suuujya0CMLrroovNrQHTRRRdd9GtAXXTRRRf1a0BGF1100fVrQC666KKL9mtAF1100UX3a0AAAAAAAPhrQOmiiy66+GtA0kUXXXT5a0C66KKLLvprQKOLLrro+mtAjC666KL7a0B00UUXXfxrQF100UUX/WtARhdddNH9a0Avuuiii/5rQBdddNFF/2tAAAAAAAAAbEDpoosuugBsQNFFF110AWxAuuiiiy4CbECjiy666AJsQIwuuuiiA2xAdNFFF10EbEBddNFFFwVsQEYXXXTRBWxALrrooosGbEAXXXTRRQdsQAAAAAAACGxA6aKLLroIbEDSRRdddAlsQLrooosuCmxAo4suuugKbECMLrroogtsQO6q8dW2NmxAVIbGrmsBbUAV2TyIzMdtQK4nmsc8CW1ANXP8its7bEAAAAAAABBsQOmiiy66EGxA0UUXXXQRbEC66KKLLhJsQKOLLrroEmxAjC666KITbEB00UUXXRRsQF100UUXFWxAWVO1XFeHbEBEQlAcXVZxQD+SWhRKYn1Aeaw7y0Q5gkAklz9vaE54QJ4dW1KdC29Auuiiiy4abECjiy666BpsQIwuuuiiG2xAdNFFF10cbEBddNFFFx1sQEYXXXTRHWxAL7rooosebEAXXXTRRR9sQAAAAAAAIGxA6aKLLrogbEDRRRdddCFsQLrooosuImxAo4suuugibECMLrrooiNsQHTRRRddJGxAXXTRRRclbEBGF1100SVsQC666KKLJmxAF1100UUnbEAAAAAAAChsQOmiiy66KGxA0kUXXXQpbEC66KKLLipsQKOLLrroKmxAjC666KIrbEB00UUXXSxsQF100UUXLWxARhdddNEtbEAuuuiiiy5sQBdddNFFL2xAAAAAAAAwbEDpoosuujBsQNJFF110MWxAuuiiiy4ybECjiy666DJsQIwuuuiiM2xAdNFFF100bEAEjzSnkIZsQPy8GZMA7W5ANgw6Y+zFcUD+zfoiloJxQF8TVOz6FXBARUjoKW3NbkBwz/kXbAZtQP9mH88zT2xAo4suuug6bECMLrroojtsQHTRRRddPGxAXXTRRRc9bEBGF1100T1sQC666KKLPmxAF1100UU/bEAAAAAAAEBsQOmiiy66QGxApIoSjCTLbEBU26KWAvxwQKK1vRZMo3dAAhsgdZYPeEDwoNt2tmJxQBvR43xcBG1Am/NzmfeGbUBU7A8MB0NxQOxjtxrwBHNAfEgtWxSIcEDTYxn51QRtQNFFF110SWxAuuiiiy5KbECjiy666EpsQGpP1OzcS2xAt6QmGxJQbEBClGhVHGBsQGOKYut7bGxAMztft61ebECYRZ+mMqlsQJi4A09C8G5A4P1pQNBicUD6u1pYH6pwQD/rT9s/i21APKGVjOJqbECMLrroolNsQHTRRRddVGxAXXTRRRdVbEBGF1100VVsQC666KKLVmxAF1100UVXbEAAAAAAAFhsQOmiiy66WGxA0kUXXXRZbEC66KKLLlpsQKOLLrroWmxAjC666KJbbEB00UUXXVxsQF100UUXXWxARhdddNFdbEAuuuiii15sQBdddNFFX2xAAAAAAABgbEDpoosuumBsQNFFF110YWxAuuiiiy5ibECjiy666GJsQIwuuuiiY2xAdNFFF11kbEBddNFFF2VsQEYXXXTRZWxAeK9/gFhnbEBNjwWrBnBsQPUpICUJhmxADAokBw+JbEC8KPhOX3RsQK6pFJ9Wa2xAo4suuuhqbECMLrroomtsQHTRRRddbGxAXXTRRRdtbEBGF1100W1sQEPKbF85lWxAD8WeC+ldbUCeM91T5z1uQECZAjY2iW1AlbNqROOmbEAOj+8QYHVsQKOLLrrocmxAjC666KJzbECDiDy8cXZsQLHa4GsZi2xA5AWb99q+bEA7lHLblsJsQCX119AckGxAkKpyr4t6bEDpoosuunhsQNJFF110eWxAuuiiiy56bECjiy666HpsQIwuuuiie2xAdNFFF118bEBddNFFF31sQEYXXXTRfWxALrrooot+bEAXXXTRRX9sQAAAAAAAgGxA6aKLLrqAbEDSRRdddIFsQLrooosugmxAo4suuuiCbECMLrroooNsQHTRRRddhGxAVljLtl+ObECFRieEbPdsQMgyCkMePm5ANI7BhnOgbkCUpLQ622dtQJIOIFsyJ21ARJ03v7HWbUBlrkzfmY9tQCKNkldCy2xACJWZVJuQbEB00UUXXYxsQF100UUXjWxARhdddNGNbEAuuuiii45sQMhV7PnXw2xA0GRZjCEQb0ByRWoPeg9zQJV2p5vxBHRAK6XyU5B4cEDVZluQ/CltQMSuCLVtnGxAUc4J94eVbEBddNFFF5VsQEYXXXTRlWxAL7rooouWbEAXXXTRRZdsQAAAAAAAmGxA6aKLLrqYbEDRRRdddJlsQLrooosummxAo4suuuiabECMLrrooptsQHTRRRddnGxAXXTRRRedbEBGF1100Z1sQC666KKLnmxAF1100UWfbEAAAAAAAKBsQOmiiy66oGxA0kUXXXShbEC66KKLLqJsQKOLLrroomxAjC666KKjbEB00UUXXaRsQF100UUXpWxARhdddNGlbEAuuuiii6ZsQBdddNFFp2xAAAAAAACobEDpoosuuqhsQNJFF110qWxAuuiiiy6qbEAL8iSqK61sQK+Oev3ry2xAZYwUmgk9bUCjkxxmlHhtQFr7ReKnB21A9u9Mpf66bEAspTgHEn1tQLW3HZYfJHRANuKu8cNLhECA+1TyvdKJQNjY3CWl/H5ArLhmO+WtcECMLrroorNsQMteRx04d25A7O8A4mNzdUBJp7RHvieAQJUOenPRnXxAZgaejbvpcUC/2XNuckZtQOmiiy66uGxA0UUXXXS5bEC66KKLLrpsQKOLLrroumxAjC666KK7bEB00UUXXbxsQF100UUXvWxARhdddNG9bEAvuuiii75sQBdddNFFv2xAAAAAAADAbEDpoosuusBsQNFFF110wWxAuuiiiy7CbECjiy666MJsQIwuuuiiw2xAdNFFF13EbEBddNFFF8VsQEYXXXTRxWxALrrooovGbECBGDoAOf9sQARkwdUbf25AYYFkPmCBcECJzYVJSwdwQAb8rz6IlW1A/s5ZEWvabECMLrroostsQHTRRRddzGxAXXTRRRfNbEBGF1100c1sQC666KKLzmxAF1100UXPbEAAAAAAANBsQOmiiy660GxA0kUXXXTRbEC66KKLLtJsQKOLLrro0mxAjC666KLTbEB00UUXXdRsQF100UUX1WxARhdddNHVbEBg7l1YLyRtQFqNlnB5sm9AOqjEVEKlckBtwrh1kFhyQAznKlczI29AeONG49MPbUCjiy666NpsQIwuuuii22xAdNFFF13cbEBddNFFF91sQEYXXXTR3WxALrrooovebEAXXXTRRd9sQAAAAAAA4GxA6aKLLrrgbEDRRRdddOFsQLrooosu4mxAo4suuujibECMLrroouNsQHTRRRdd5GxAXXTRRRflbEBGF1100eVsQC+66KKL5mxAF1100UXnbEAAAAAAAOhsQOmiiy666GxAwNpimFuPbUA4f2xBpYpxQLdVDJTIwXdA4wpQn1EkeEBJSj52ahdyQFXUZtDD621ARhdddNHtbEAuuuiii+5sQBdddNFF72xAAAAAAADwbEB8CnytHfRsQGVQQi70EG1Afm/i0ShObUD4dE73botxQDDXjwJ3Ln9AtcQ97vs9hkAo7NYfKnR/QCDACf9Ff3FALrrooov2bEAXXXTRRfdsQAAAAAAA+GxA6aKLLrr4bEDSRRdddPlsQLrooosu+mxAo4suuuj6bECMLrroovtsQM/28LdzAG1Aj4QSfpUnbUBKt0uXZMBtQJN03rgp6m9AxWUOuaCdckDw15yk+NFyQJzj/nYO529AckMSEeRPbUC66KKLLgJtQKOLLrroAm1AjC666KIDbUB00UUXXQRtQF100UUXBW1ARhdddNEFbUAuuuiiiwZtQBdddNFFB21AAAAAAAAIbUDpoosuughtQNFFF110CW1Auuiiiy4KbUCjiy666AptQI8hWF4mPG1AF7eAHR8Zb0BJMHarZgJyQJKz3uGMP3JAjUg3SBSOb0A1DcAzu1JtQAAAAAAAEG1AxxnbXNO5bUANulaG5hFxQA+WCUmGp3RA5HtmY08tc0CTiXv5zUlvQB/QnkjEPm1AXXTRRRcVbUBGF1100RVtQC666KKLFm1AF1100UUXbUAAAAAAABhtQOiiiy66GG1A0kUXXXQZbUC66KKLLhptQKOLLrroGm1AjC666KIbbUB00UUXXRxtQF100UUXHW1ARhdddNEdbUAuuuiiix5tQBdddNFFH21AAAAAAAAgbUDpoosuuiBtQNJFF110IW1Auuiiiy4ibUCjiy666CJtQIwuuuiiI21AdNFFF10kbUBddNFFFyVtQEKtlmps7m1A3tZhj5FHc0ANEM/d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luxtQIwuuuiiy21AdNFFF13MbUBddNFFF81tQEYXXXTRzW1ALrrooovObUAXXXTRRc9tQCAo3cAacXFA/NFxX5Erf0CE9QSLWemHQEJkye8494FA/o7dgvwlc0DiFi+HlF1uQHTRRRdd1G1AXXTRRRfVbUBGF1100dVtQC666KKL1m1AF1100UXXbUAAAAAAANhtQOmiiy662G1A0UUXXXTZbUC66KKLLtptQKOLLrro2m1AjC666KLbbUB00UUXXdxtQF100UUX3W1ARhdddNHdbUAuuuiii95tQBdddNFF321AAAAAAADgbUDooosuuuBtQNJFF1104W1AWRRhD1LwbUAJjsddbS9uQB65k4diZm5Ag1nnMTCPb0A2pTuhkrV0QCA2TSX5431AhEbVLyM8e0Aju282ECRyQACFFFLZbW5A6aKLLrrobUDSRRdddOltQLrooosu6m1Ao4suuujqbUCMLrroouttQHTRRRdd7G1AXXTRRRftbUBGF1100e1tQC666KKL7m1AF1100UXvbUCqVcx0CvBtQHAOny4i8W1A1KwwHLvybUCW2VvQcvNtQON7F2FO821AGbiM+azzbUB00UUXXfRtQF100UUX9W1A8LDE6oMCbkCezOJcAkFuQAS8x+c9gW5AnByeeMNIbkAX+ZbmqQduQF4uSrcgaHBAFKzyDf0yd0BBJhby1v59QHSuTpwWqHdANcXOm++ScEBddNFFF/1tQEYXXXTR/W1ALrrooov+bUAXXXTRRf9tQAAAAAAAAG5A6aKLLroAbkCRn//nTwZuQO6KZVjeNm5AzfEqn4a3bkAAJk8wVsduQCA11xdiR25A5wFAV1gMbkBGF1100QVuQC666KKLBm5AF1100UUHbkAAAAAAAAhuQOiiiy66CG5A0kUXXXQJbkC66KKLLgpuQKOLLrroCm5AyEySg7+7bkAcpTPFSvZwQJYd9uZJenJAEXpcAab4cECSs5vS0L9uQBdddNFFD25AAAAAAAAQbkDpoosuuhBuQNJFF110EW5Auuiiiy4SbkCjiy666BJuQIwuuuiiE25AdNFFF10UbkAl/Csb0VBwQHBGnvdKHXdANCtrCos2f0BSm3DiJUp5QHpS7eyFGXFACTnj0VdbbkDSRRdddBluQL1PWhfiJW5A96lWM0rHbkC9UfiogJ9wQPB6hWBnXnFA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LhJvQKOLLrroEm9AjC666KITb0B00UUXXRRvQF100UUXFW9ARhdddNEVb0AuuuiiixZvQFvx2/bsQG9AO1/yy6WncEBReRLpLWh0QEaxSjnegXZATYfkodJGc0A1S55j3vZwQIqaQlClBHBARHrCRiFBb0BddNFFFx1vQEYXXXTRHW9ALrroooseb0AXXXTRRR9vQAAAAAAAIG9A6KKLLrogb0DSRRdddCFvQLrooosuIm9Ao4suuugib0CMLrrooiNvQHTRRRddJG9AXXTRRRclb0BGF1100SVvQC666KKLJm9AF1100UUnb0AAAAAAAChvQOmiiy66KG9A0kUXXXQpb0C66KKLLipvQNAKNcx0XXBAaEhyqB9HdUC0e4dewvB8QHB3VqpRrHlAXtQ2FqIKckD+f7wf0ZBvQBdddNFFL29AAAAAAAAwb0DpoosuujBvQNJFF110MW9Auuiiiy4yb0Cjiy666DJvQIwuuuiiM29AdNFFF100b0B9iMOBo8dvQFfgn5kKK3JAAQReVNAAd0DcPVw+zHx2QGwljHrqq3FAIJMgQ7qeb0DRRRdddDlvQLrooosuOm9Ao4suuug6b0CMLrroojtvQHTRRRddPG9AXXTRRRc9b0BGF1100T1vQC666KKLPm9AF1100UU/b0AAAAAAAEBvQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1702\"},\"selection_policy\":{\"id\":\"1701\"}},\"id\":\"1685\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1649\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1645\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1644\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1647\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1668\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1685\"}},\"id\":\"1690\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1686\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1656\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1701\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1684\"},{\"id\":\"1704\"}]},\"id\":\"1683\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1653\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAAAKBpQAAAAAAAwGhAAAAAAAAAaUAAAAAAAOBoQAAAAAAAgGZAAAAAAABgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAACgaEAAAAAAAIBoQAAAAAAAQGhAAAAAAACgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAABgZ0AAAAAAAOBnQAAAAAAAoGlAAAAAAAAAaUAAAAAAAMBoQAAAAAAAAGlAAAAAAACAaUAAAAAAAIBoQAAAAAAAYGhAAAAAAABAaEAAAAAAAABpQAAAAAAAwGhAAAAAAAAgaUAAAAAAAABqQAAAAAAAoGlAAAAAAABgakAAAAAAAGBqQAAAAAAAgGtAAAAAAACAa0AAAAAAAIBqQAAAAAAAAGpAAAAAAADAakAAAAAAAEBsQAAAAAAAYG1AAAAAAAAgbUAAAAAAAKBtQAAAAAAAQG5AAAAAAABAbkAAAAAAAKBuQAAAAAAA4G1AAAAAAABAbEAAAAAAAABtQAAAAAAAwG1AAAAAAABAbEAAAAAAAEBrQAAAAAAAQGtAAAAAAADAakAAAAAAAKBpQAAAAAAAAGlAAAAAAAAgaEAAAAAAAGBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAOBpQAAAAAAA4GpAAAAAAADgaUAAAAAAAEBrQAAAAAAAQGtAAAAAAACAa0AAAAAAAIBrQAAAAAAAoGxAAAAAAACAbUAAAAAAAMBvQAAAAAAAgHBAAAAAAACAcUAAAAAAABByQAAAAAAAEHJAAAAAAADwckAAAAAAAOByQAAAAAAAkHJAAAAAAACQcUAAAAAAAGBxQAAAAAAAgHFAAAAAAACQcEAAAAAAACBwQAAAAAAAYG5AAAAAAAAAbkAAAAAAAABtQAAAAAAA4GxAAAAAAAAgbUAAAAAAAMBuQAAAAAAAAG9AAAAAAAAgb0AAAAAAAABwQAAAAAAAAHFAAAAAAAAQckAAAAAAAHBzQAAAAAAAQHVAAAAAAACwdkAAAAAAAJB4QAAAAAAAgHtAAAAAAACgfUAAAAAAACB+QAAAAAAAwH5AAAAAAADAf0AAAAAAAOB+QAAAAAAAsH1AAAAAAABwe0AAAAAAANB5QAAAAAAAAHdAAAAAAACwdEAAAAAAALByQAAAAAAA4HFAAAAAAABgcEAAAAAAACBuQAAAAAAAwG1AAAAAAACAb0AAAAAAALBwQAAAAAAAQHFAAAAAAABgcUAAAAAAAMByQAAAAAAAUHRAAAAAAAAAdUAAAAAAAHB2QAAAAAAAUHlAAAAAAACgfEAAAAAAAFB/QAAAAAAAoIFAAAAAAAAAhEAAAAAAAHiGQAAAAAAAeIhAAAAAAAAoikAAAAAAAJiKQAAAAAAAEItAAAAAAADgiUAAAAAAANiHQAAAAAAAyIVAAAAAAADQg0AAAAAAAOiAQAAAAAAAEH1AAAAAAABweEAAAAAAAPB1QAAAAAAA0HJAAAAAAADAcUAAAAAAAEBwQAAAAAAAAG9AAAAAAAAQcEAAAAAAAEBuQAAAAAAAwG5AAAAAAABwcEAAAAAAAPBwQAAAAAAAkHFAAAAAAADgckAAAAAAAFBzQAAAAAAA8HRAAAAAAABgdUAAAAAAAJB1QAAAAAAAQHZAAAAAAADwdUAAAAAAAFB1QAAAAAAA4HRAAAAAAAAQdEAAAAAAAOBxQAAAAAAAwHBAAAAAAAAAcEAAAAAAAMBtQAAAAAAAoGxAAAAAAABAa0AAAAAAAOBrQAAAAAAAAGtAAAAAAABgaUAAAAAAAGBpQAAAAAAAQGhAAAAAAACgaUAAAAAAAIBoQAAAAAAAIGhAAAAAAADAaUAAAAAAACBpQAAAAAAAIGlAAAAAAAAgaUAAAAAAAABpQAAAAAAAQGhAAAAAAACAaEAAAAAAAGBpQAAAAAAAYGhAAAAAAACAaEAAAAAAAGBqQAAAAAAAAGtAAAAAAADgaUAAAAAAAOBqQAAAAAAAoGtAAAAAAACgbUAAAAAAAABvQAAAAAAAUHBAAAAAAABwcUAAAAAAAPBzQAAAAAAAEHVAAAAAAADAdkAAAAAAAHB6QAAAAAAAkH5AAAAAAABogUAAAAAAALCDQAAAAAAAyIZAAAAAAACwiUAAAAAAAHiNQAAAAAAAjJBAAAAAAACwkkAAAAAAAEyTQAAAAAAAEJNAAAAAAADkkkAAAAAAAKCRQAAAAAAASI9AAAAAAAAAi0AAAAAAAMiGQAAAAAAAyIJAAAAAAAAAf0AAAAAAACB6QAAAAAAAMHZAAAAAAACQc0AAAAAAAHBwQAAAAAAAwG5AAAAAAABAbEAAAAAAAMBqQAAAAAAAwGtAAAAAAADAa0AAAAAAAGBqQAAAAAAAYGpAAAAAAABAaUAAAAAAAMBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBoQAAAAAAAIGlAAAAAAABgaUAAAAAAAGBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAIBoQAAAAAAAwGlAAAAAAABAakAAAAAAAKBoQAAAAAAAgGlAAAAAAAAAaUAAAAAAAKBpQAAAAAAAgGhAAAAAAABgaEAAAAAAAKBpQAAAAAAAgGlAAAAAAAAAaUAAAAAAAGBpQAAAAAAAAGpAAAAAAADgaUAAAAAAAEBpQAAAAAAAYGlAAAAAAADAaEAAAAAAAIBpQAAAAAAAQGpAAAAAAAAAa0AAAAAAAEBqQAAAAAAAoGxAAAAAAADgbUAAAAAAAOBuQAAAAAAAYHFAAAAAAADgckAAAAAAAEB0QAAAAAAAMHdAAAAAAABAekAAAAAAABB9QAAAAAAA0IBAAAAAAACwg0AAAAAAABiHQAAAAAAAmIpAAAAAAACAjkAAAAAAANCQQAAAAAAAJJJAAAAAAAAYk0AAAAAAACyTQAAAAAAAjJJAAAAAAAAgkUAAAAAAACCOQAAAAAAACIpAAAAAAAAghkAAAAAAAFiCQAAAAAAAAIBAAAAAAABAe0AAAAAAAHB4QAAAAAAAAHhAAAAAAAAgd0AAAAAAAHB4QAAAAAAAMHpAAAAAAAAAfEAAAAAAAKB+QAAAAAAAuIFAAAAAAACQg0AAAAAAAHiFQAAAAAAA+IZAAAAAAABgiEAAAAAAAHCIQAAAAAAASIdAAAAAAACIhkAAAAAAALCEQAAAAAAAmIJAAAAAAAB4gEAAAAAAAOB7QAAAAAAAkHhAAAAAAADwdEAAAAAAANByQAAAAAAAQHFAAAAAAABgb0AAAAAAAEBuQAAAAAAAoGxAAAAAAAAgakAAAAAAAOBqQAAAAAAAQGtAAAAAAADAakAAAAAAACBqQAAAAAAAAGpAAAAAAACAakAAAAAAAEBqQAAAAAAAIGpAAAAAAABAakAAAAAAAKBpQAAAAAAAIGpAAAAAAABgakAAAAAAAGBqQAAAAAAAAGtAAAAAAACgaUAAAAAAAIBpQAAAAAAAQGlAAAAAAAAgaUAAAAAAAABpQAAAAAAA4GlAAAAAAACgaUAAAAAAAEBpQAAAAAAAIGpAAAAAAABAaUAAAAAAAGBpQAAAAAAAwGlAAAAAAADAaUAAAAAAAABpQAAAAAAAQGhAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGlAAAAAAABAakAAAAAAAOBpQAAAAAAAoGlAAAAAAABAakAAAAAAAIBpQAAAAAAAYGlAAAAAAABAaUAAAAAAAKBpQAAAAAAAIGlAAAAAAAAgaUAAAAAAAOBpQAAAAAAAoGhAAAAAAADAaEAAAAAAAGBpQAAAAAAAIGpAAAAAAAAgakAAAAAAAABqQAAAAAAAgGlAAAAAAAAgakAAAAAAAOBoQAAAAAAAgGlAAAAAAADAaUAAAAAAACBpQAAAAAAAoGlAAAAAAABAaUAAAAAAAIBpQAAAAAAAwGhAAAAAAADAaEAAAAAAAKBqQAAAAAAAQGpAAAAAAACAakAAAAAAAMBqQAAAAAAA4GpAAAAAAAAga0AAAAAAAEBqQAAAAAAAwGpAAAAAAADgakAAAAAAAOBqQAAAAAAA4GpAAAAAAAAga0AAAAAAAMBrQAAAAAAA4GxAAAAAAADgbkAAAAAAAIBvQAAAAAAAEHFAAAAAAAAAc0AAAAAAAMB0QAAAAAAA4HZAAAAAAACAeUAAAAAAAPB8QAAAAAAAoIBAAAAAAABYg0AAAAAAAPCGQAAAAAAA4IlAAAAAAACAjUAAAAAAAFiPQAAAAAAAfJBAAAAAAAC4kEAAAAAAANCPQAAAAAAAgI1AAAAAAAAIikAAAAAAAKiGQAAAAAAAyINAAAAAAACwf0AAAAAAANB7QAAAAAAAsHdAAAAAAACwdUAAAAAAAMBzQAAAAAAAoHFAAAAAAACwcEAAAAAAANBwQAAAAAAAkHFAAAAAAAAAckAAAAAAAMByQAAAAAAAcHRAAAAAAACgdUAAAAAAAMB3QAAAAAAAAHlAAAAAAADgekAAAAAAAFB8QAAAAAAAsHxAAAAAAAAwfEAAAAAAALB6QAAAAAAAIHlAAAAAAABwd0AAAAAAAIB1QAAAAAAAUHNAAAAAAABQcUAAAAAAAJBwQAAAAAAAwG5AAAAAAADAbkAAAAAAAMBsQAAAAAAA4GtAAAAAAABgbEAAAAAAACBsQAAAAAAAIGtAAAAAAAAga0AAAAAAAOBrQAAAAAAA4GtAAAAAAACAa0AAAAAAAOBrQAAAAAAAQGxAAAAAAAAAb0AAAAAAACBwQAAAAAAAIHFAAAAAAACQckAAAAAAAEB0QAAAAAAAMHZAAAAAAACQeEAAAAAAAKB8QAAAAAAAgIBAAAAAAABogkAAAAAAAICFQAAAAAAAaIhAAAAAAABAikAAAAAAAGCLQAAAAAAAUItAAAAAAAAAikAAAAAAAOiHQAAAAAAAUIVAAAAAAAAog0AAAAAAAGCAQAAAAAAAcHxAAAAAAACAeUAAAAAAAAB4QAAAAAAA4HZAAAAAAABwd0AAAAAAAIB4QAAAAAAAoHpAAAAAAABgfUAAAAAAADiAQAAAAAAAYIJAAAAAAAD4g0AAAAAAAEiFQAAAAAAAAIZAAAAAAACohUAAAAAAAFCEQAAAAAAAwIJAAAAAAADggEAAAAAAAOB9QAAAAAAAwHlAAAAAAACAd0AAAAAAAJB1QAAAAAAAoHRAAAAAAAAQdUAAAAAAAOB1QAAAAAAA8HdAAAAAAACgekAAAAAAANB+QAAAAAAA2IFAAAAAAAAghUAAAAAAABiJQAAAAAAAwIxAAAAAAAC8kEAAAAAAAHySQAAAAAAAfJNAAAAAAACck0AAAAAAAIyTQAAAAAAAfJJAAAAAAACwkEAAAAAAAIiNQAAAAAAA6IpAAAAAAABYiUAAAAAAAGiJQAAAAAAAQItAAAAAAABIjkAAAAAAAICRQAAAAAAAdJRAAAAAAADcl0AAAAAAAKiaQAAAAAAAAJ1AAAAAAACAnUAAAAAAALScQAAAAAAAxJpAAAAAAABwl0AAAAAAACSUQAAAAAAAPJFAAAAAAABAjEAAAAAAAGiHQAAAAAAAmINAAAAAAADAgUAAAAAAADiBQAAAAAAAgIFAAAAAAABQgkAAAAAAANCDQAAAAAAAmIVAAAAAAAB4h0AAAAAAAPiIQAAAAAAAwIhAAAAAAACgiUAAAAAAADCIQAAAAAAAAIdAAAAAAABAhUAAAAAAAJiDQAAAAAAAkIFAAAAAAAAQgEAAAAAAALB8QAAAAAAAgHpAAAAAAACgdkAAAAAAANB0QAAAAAAA4HNAAAAAAADAckAAAAAAAPBxQAAAAAAAkHBAAAAAAACgcEAAAAAAAGBwQAAAAAAAcHBAAAAAAADgb0AAAAAAAOBwQAAAAAAAYHFAAAAAAAAQckAAAAAAANBzQAAAAAAAcHVAAAAAAAAAeUAAAAAAAEB9QAAAAAAAiIFAAAAAAAC4hUAAAAAAAEiLQAAAAAAAMJFAAAAAAABwlUAAAAAAAPCZQAAAAAAAiJ5AAAAAAABgoUAAAAAAAMCiQAAAAAAANqNAAAAAAAAGo0AAAAAAAIqhQAAAAAAACJ9AAAAAAAAcmkAAAAAAADiVQAAAAAAA+JBAAAAAAAAgi0AAAAAAAFCFQAAAAAAAEIJAAAAAAABIgEAAAAAAAACAQAAAAAAAyIBAAAAAAADAgkAAAAAAAACGQAAAAAAAuIpAAAAAAAAgkEAAAAAAAECTQAAAAAAA6JZAAAAAAAB0mkAAAAAAACidQAAAAAAAuJ5AAAAAAACgn0AAAAAAAICfQAAAAAAA2JxAAAAAAAAMmkAAAAAAAFSWQAAAAAAAbJJAAAAAAACwjUAAAAAAANiHQAAAAAAAuIJAAAAAAABAfkAAAAAAAEB5QAAAAAAA8HVAAAAAAAAAc0AAAAAAAMBxQAAAAAAAEHFAAAAAAAAwcEAAAAAAAGBvQAAAAAAAYG9AAAAAAACAb0AAAAAAAKBuQAAAAAAAMHBAAAAAAABAb0AAAAAAAKBvQAAAAAAAAHBAAAAAAACAcEAAAAAAANBxQAAAAAAA0HJAAAAAAACgdUAAAAAAAGB4QAAAAAAAoHxAAAAAAACAgEAAAAAAAICDQAAAAAAA6IZAAAAAAADoiUAAAAAAAKCMQAAAAAAA4I5AAAAAAAAQj0AAAAAAAAiNQAAAAAAAWIpAAAAAAAAwh0AAAAAAAPCDQAAAAAAAeIBAAAAAAAAge0AAAAAAAJB3QAAAAAAAAHRAAAAAAACgcUAAAAAAABBxQAAAAAAAAHBAAAAAAABgbkAAAAAAAABuQAAAAAAAAG5AAAAAAADAbEAAAAAAAIBrQAAAAAAAwGxAAAAAAABgbEAAAAAAAABsQAAAAAAAYGtAAAAAAABgbEAAAAAAAGBsQAAAAAAAAGxAAAAAAADAa0AAAAAAAOBrQAAAAAAAIGtAAAAAAACgakAAAAAAAABrQAAAAAAAYGtAAAAAAABga0AAAAAAAEBrQAAAAAAAgGtAAAAAAACAa0AAAAAAAIBrQAAAAAAA4GtAAAAAAAAgbUAAAAAAAKBtQAAAAAAAIG9AAAAAAAAgcEAAAAAAAFBwQAAAAAAAsHFAAAAAAAAAc0AAAAAAAEB0QAAAAAAAsHVAAAAAAAAQdkAAAAAAAHB2QAAAAAAAsHZAAAAAAAAAdkAAAAAAAFB1QAAAAAAAoHRAAAAAAABAc0AAAAAAADByQAAAAAAA8HBAAAAAAADAb0AAAAAAAKBuQAAAAAAAoG5AAAAAAADgbUAAAAAAAIBsQAAAAAAAIGtAAAAAAAAga0AAAAAAAEBrQAAAAAAA4GtAAAAAAADgaUAAAAAAAEBrQAAAAAAAwGtAAAAAAADgakAAAAAAAEBqQAAAAAAAAGtAAAAAAACgakAAAAAAAIBqQAAAAAAA4GpAAAAAAACAakAAAAAAAMBqQAAAAAAAYGpAAAAAAADAakAAAAAAACBrQAAAAAAAoGlAAAAAAADgaUAAAAAAAKBqQAAAAAAAAGpAAAAAAABgakAAAAAAAKBpQAAAAAAAwGpAAAAAAACgakAAAAAAAIBqQAAAAAAAgGpAAAAAAACgakAAAAAAAOBpQAAAAAAAYGlAAAAAAABgakAAAAAAAGBqQAAAAAAAwGpAAAAAAADAakAAAAAAAOBpQAAAAAAAYGlAAAAAAACAakAAAAAAAIBqQAAAAAAAwGpAAAAAAACgakAAAAAAAEBpQAAAAAAAQGpAAAAAAABgakAAAAAAAGBqQAAAAAAAwGpAAAAAAACga0AAAAAAACBrQAAAAAAAgGpAAAAAAADAakAAAAAAAGBrQAAAAAAA4GtAAAAAAAAgbEAAAAAAAGBsQAAAAAAAYG1AAAAAAAAAbkAAAAAAAGBuQAAAAAAAgG9AAAAAAAAgb0AAAAAAACBvQAAAAAAA4G9AAAAAAABgcEAAAAAAAKBxQAAAAAAAQHNAAAAAAADwdUAAAAAAAOB4QAAAAAAAYH1AAAAAAABogEAAAAAAAKCCQAAAAAAAMIRAAAAAAABIhUAAAAAAAMiEQAAAAAAAOINAAAAAAACYgUAAAAAAAEB+QAAAAAAAUHpAAAAAAADAdkAAAAAAANBzQAAAAAAAEHJAAAAAAABQcEAAAAAAAKBuQAAAAAAAIG1AAAAAAACAbEAAAAAAAGBrQAAAAAAAYGtAAAAAAAAga0AAAAAAAABrQAAAAAAAoGtAAAAAAADgakAAAAAAAOBqQAAAAAAAQGpAAAAAAACAakAAAAAAAIBqQAAAAAAAgGlAAAAAAAAgakAAAAAAAMBpQAAAAAAAAGtAAAAAAADgaUAAAAAAAMBqQAAAAAAA4GlAAAAAAAAgakAAAAAAAEBrQAAAAAAA4GpAAAAAAADAa0AAAAAAAEBsQAAAAAAAwGxAAAAAAADgbUAAAAAAACBvQAAAAAAAcHBAAAAAAAAwcUAAAAAAAEByQAAAAAAA0HNAAAAAAAAwdEAAAAAAAFB1QAAAAAAA4HVAAAAAAACgdEAAAAAAAAB0QAAAAAAAMHNAAAAAAADAcUAAAAAAADBxQAAAAAAAkHBAAAAAAADQcEAAAAAAADBxQAAAAAAAQHJAAAAAAABwc0AAAAAAACB1QAAAAAAAMHhAAAAAAADQeUAAAAAAAPB8QAAAAAAA4H9AAAAAAACwgEAAAAAAAHiBQAAAAAAA2IBAAAAAAACogEAAAAAAAEB/QAAAAAAAcH1AAAAAAABwfEAAAAAAAKB5QAAAAAAAUHdAAAAAAABgdUAAAAAAADBzQAAAAAAAAHJAAAAAAADgcUAAAAAAAJBxQAAAAAAAQHJAAAAAAAAwckAAAAAAAIBzQAAAAAAAYHRAAAAAAAAAdUAAAAAAAKB1QAAAAAAAUHVAAAAAAABwdEAAAAAAABBzQAAAAAAAUHFAAAAAAACwcEAAAAAAACBvQAAAAAAAoGxAAAAAAACga0AAAAAAAIBrQAAAAAAAIGtAAAAAAABgakAAAAAAAIBpQAAAAAAAYGlAAAAAAACAa0AAAAAAACBrQAAAAAAAIGtAAAAAAADAakAAAAAAAKBpQAAAAAAAoGlAAAAAAABgakAAAAAAAMBpQAAAAAAAAGpAAAAAAAAgaUAAAAAAAABqQAAAAAAAwGpAAAAAAACAakAAAAAAAMBpQAAAAAAAAGtAAAAAAABga0AAAAAAAOBqQAAAAAAAIGtAAAAAAABgakAAAAAAAMBqQAAAAAAA4GpAAAAAAAAAbEAAAAAAACBrQAAAAAAA4GpAAAAAAABAa0AAAAAAAEBrQAAAAAAAgGxAAAAAAABgbEAAAAAAAIBsQAAAAAAAIGxAAAAAAABga0AAAAAAAABrQAAAAAAAYGtAAAAAAABAa0AAAAAAAMBqQAAAAAAAgGpAAAAAAACga0AAAAAAAMBqQAAAAAAAAGpAAAAAAACAaUAAAAAAACBqQAAAAAAAIGpAAAAAAAAAakAAAAAAAIBqQAAAAAAAoGpAAAAAAABAa0AAAAAAAIBqQAAAAAAAoGlAAAAAAADgaUAAAAAAAIBpQAAAAAAAwGlAAAAAAABgakAAAAAAAABrQAAAAAAAwGpAAAAAAABAakAAAAAAAGBrQAAAAAAAwGtAAAAAAAAAbEAAAAAAAOBsQAAAAAAAYGxAAAAAAACgbUAAAAAAAGBtQAAAAAAAwG1AAAAAAACgbkAAAAAAAEBuQAAAAAAAAG9AAAAAAADAbkAAAAAAAGBuQAAAAAAAoG9AAAAAAAAwcEAAAAAAAGBxQAAAAAAAkHFAAAAAAACQckAAAAAAAGBzQAAAAAAAQHRAAAAAAAAgdEAAAAAAAHBzQAAAAAAAcHJAAAAAAACQcUAAAAAAADBwQAAAAAAAQG9AAAAAAADgbUAAAAAAACBtQAAAAAAAYGxAAAAAAABAbEAAAAAAAOBrQAAAAAAAYGpAAAAAAAAgakAAAAAAACBrQAAAAAAAwGpAAAAAAACgakAAAAAAACBrQAAAAAAAgGtAAAAAAABAakAAAAAAACBqQAAAAAAA4GpAAAAAAABAa0AAAAAAAOBqQAAAAAAAIGtAAAAAAACga0AAAAAAACBrQAAAAAAAYGtAAAAAAACAa0AAAAAAAIBsQAAAAAAAoGxAAAAAAADAbEAAAAAAAEBtQAAAAAAAYG9AAAAAAABQcEAAAAAAAAByQAAAAAAAkHNAAAAAAACgdkAAAAAAAIB6QAAAAAAAYIBAAAAAAAAwhEAAAAAAAGiIQAAAAAAAwIxAAAAAAAAAkEAAAAAAAICRQAAAAAAAjJJAAAAAAACMkkAAAAAAADiSQAAAAAAAaJFAAAAAAABQkEAAAAAAAPiOQAAAAAAA+IxAAAAAAAC4iUAAAAAAAGiGQAAAAAAAWINAAAAAAABAgEAAAAAAAFB6QAAAAAAAEHZAAAAAAABAc0AAAAAAABBxQAAAAAAAAHBAAAAAAACgbkAAAAAAAEBtQAAAAAAAwGxAAAAAAAAAbEAAAAAAAABtQAAAAAAAQGxAAAAAAADAa0AAAAAAAMBrQAAAAAAAYGxAAAAAAAAgbEAAAAAAAEBsQAAAAAAAYGxAAAAAAACgbEAAAAAAAGBtQAAAAAAAIG1AAAAAAABgbkAAAAAAAMBtQAAAAAAAoG1AAAAAAACAbUAAAAAAAABtQAAAAAAA4GxAAAAAAABgbEAAAAAAACBsQAAAAAAAgGtAAAAAAABAa0AAAAAAAOBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAACBsQAAAAAAAwGtAAAAAAADgbEAAAAAAAGBuQAAAAAAAQG9AAAAAAADQcEAAAAAAAOBxQAAAAAAAYHNAAAAAAABQdEAAAAAAAMB0QAAAAAAAEHVAAAAAAACQdEAAAAAAAPByQAAAAAAAYHFAAAAAAADAcEAAAAAAAIBvQAAAAAAAgG1AAAAAAACAbEAAAAAAAGBrQAAAAAAAIGxAAAAAAADAa0AAAAAAAMBqQAAAAAAAgGxAAAAAAACga0AAAAAAACBrQAAAAAAAoGtAAAAAAADAa0AAAAAAAEBsQAAAAAAAoG1AAAAAAADAbkAAAAAAAOBvQAAAAAAA0HBAAAAAAADAcUAAAAAAAOByQAAAAAAAkHNAAAAAAABwdEAAAAAAABB0QAAAAAAA0HRAAAAAAACwdEAAAAAAAMB0QAAAAAAAYHZAAAAAAAAgeUAAAAAAAMB8QAAAAAAAaIFAAAAAAACghEAAAAAAAAiIQAAAAAAA2IpAAAAAAAAwjUAAAAAAANiNQAAAAAAAyIxAAAAAAADAiUAAAAAAALCFQAAAAAAAEIJAAAAAAACgfUAAAAAAACB5QAAAAAAAgHVAAAAAAAAgc0AAAAAAAMByQAAAAAAAQHJAAAAAAABAckAAAAAAAOByQAAAAAAAAHNAAAAAAAAgc0AAAAAAABBzQAAAAAAA8HJAAAAAAACwckAAAAAAAGBxQAAAAAAAMHBAAAAAAAAQcEAAAAAAAKBuQAAAAAAAoG1AAAAAAAAAbkAAAAAAACBtQAAAAAAAAG1AAAAAAABgbUAAAAAAACBuQAAAAAAAEHBAAAAAAAAgcUAAAAAAAEByQAAAAAAAUHNAAAAAAADQdEAAAAAAAIB2QAAAAAAA0HdAAAAAAAAweEAAAAAAADB4QAAAAAAAIHhAAAAAAADgd0AAAAAAAAB3QAAAAAAAsHZAAAAAAAAAdkAAAAAAABB1QAAAAAAAEHRAAAAAAACQckAAAAAAAJBxQAAAAAAAkHBAAAAAAADgb0AAAAAAAGBvQAAAAAAAoG1AAAAAAADAbUAAAAAAAKBtQAAAAAAAgGxAAAAAAAAAbkAAAAAAAEBtQAAAAAAAQGxAAAAAAACgbEAAAAAAAIBsQAAAAAAAIG1AAAAAAABgbkAAAAAAACBuQAAAAAAAEHBAAAAAAABwcUAAAAAAABBzQAAAAAAAkHVAAAAAAACgeUAAAAAAAHB8QAAAAAAACIFAAAAAAABwg0AAAAAAAAiFQAAAAAAAqIZAAAAAAABohkAAAAAAAKiEQAAAAAAAgIJAAAAAAAAwgEAAAAAAALB7QAAAAAAAMHdAAAAAAAAAdUAAAAAAACByQAAAAAAAkHBAAAAAAACAb0AAAAAAAEBvQAAAAAAAgG5AAAAAAABAbkAAAAAAACBuQAAAAAAAYG5AAAAAAAAAb0AAAAAAAKBvQAAAAAAAgG9AAAAAAACAcEAAAAAAAKBwQAAAAAAAoHFAAAAAAAAwckAAAAAAAJBzQAAAAAAAoHVAAAAAAABgd0AAAAAAAPB5QAAAAAAA4HpAAAAAAAAQe0AAAAAAAOB6QAAAAAAAYHlAAAAAAAAAeEAAAAAAANB1QAAAAAAA4HNAAAAAAAAwc0AAAAAAAKByQAAAAAAAgHJAAAAAAAAAc0AAAAAAAJBzQAAAAAAAgHRAAAAAAACgdUAAAAAAAFB1QAAAAAAA8HRAAAAAAABAdEAAAAAAAAB1QAAAAAAAUHVAAAAAAABQdUAAAAAAACB3QAAAAAAA4HlAAAAAAACge0AAAAAAAKB+QAAAAAAAQIBAAAAAAACggEAAAAAAACCBQAAAAAAAiIFAAAAAAAC4gUAAAAAAAEiCQAAAAAAAQIJAAAAAAABwgUAAAAAAAHiAQAAAAAAAEH5AAAAAAACAekAAAAAAACB3QAAAAAAA0HRAAAAAAACAc0AAAAAAANByQAAAAAAAMHNAAAAAAACgc0AAAAAAAEB1QAAAAAAAsHdAAAAAAACwekAAAAAAADB9QAAAAAAAuIBAAAAAAABAgkAAAAAAANCCQAAAAAAAIIJAAAAAAACggEAAAAAAABB+QAAAAAAAoHpAAAAAAACwd0AAAAAAAJB0QAAAAAAA8HJAAAAAAAAAckAAAAAAAPBwQAAAAAAA0HBAAAAAAACwcEAAAAAAAHBwQAAAAAAAsHBAAAAAAABAcEAAAAAAAEBwQAAAAAAAcHBAAAAAAABwcEAAAAAAAOBwQAAAAAAAYHFAAAAAAABQckAAAAAAAOBzQAAAAAAAwHZAAAAAAACAekAAAAAAAACAQAAAAAAAGIRAAAAAAACIiUAAAAAAALCOQAAAAAAALJJAAAAAAAAklEAAAAAAAHSVQAAAAAAAxJVAAAAAAAAQlUAAAAAAAHCTQAAAAAAAFJJAAAAAAADUkEAAAAAAAOCPQAAAAAAAKI5AAAAAAABYjEAAAAAAANCKQAAAAAAAGIhAAAAAAAA4hEAAAAAAAFiBQAAAAAAAQH1AAAAAAABQeUAAAAAAAMB1QAAAAAAAwHNAAAAAAAAwckAAAAAAAFBxQAAAAAAAYHFAAAAAAADgcEAAAAAAAGBwQAAAAAAAwHBAAAAAAADgcEAAAAAAAHBxQAAAAAAA8HFAAAAAAADAckAAAAAAAPBzQAAAAAAAsHVAAAAAAACgd0AAAAAAAEB6QAAAAAAAUH1AAAAAAADAgEAAAAAAACiEQAAAAAAAKIhAAAAAAADojEAAAAAAAGyRQAAAAAAAmJNAAAAAAABclUAAAAAAAOCVQAAAAAAAvJRAAAAAAACQkkAAAAAAADiQQAAAAAAAeItAAAAAAAAQh0AAAAAAACCEQAAAAAAAkIJAAAAAAADIgkAAAAAAABiEQAAAAAAAyIVAAAAAAACQiEAAAAAAAFCKQAAAAAAAeIpAAAAAAAC4iEAAAAAAAPCFQAAAAAAAgIJAAAAAAADAf0AAAAAAACB6QAAAAAAAoHZAAAAAAACAdEAAAAAAALByQAAAAAAAcHFAAAAAAADgcEAAAAAAABBwQAAAAAAAoG9AAAAAAAAgcEAAAAAAABBwQAAAAAAAIG9AAAAAAACgbkAAAAAAABBwQAAAAAAAQHBAAAAAAADAcUAAAAAAAIByQAAAAAAAIHRAAAAAAABwdUAAAAAAAOB3QAAAAAAAUHlAAAAAAACweUAAAAAAAAB6QAAAAAAAYHlAAAAAAABAd0AAAAAAABB2QAAAAAAAoHRAAAAAAADQc0AAAAAAAJBzQAAAAAAAgHNAAAAAAABQc0AAAAAAAPByQAAAAAAAAHJAAAAAAABAcUAAAAAAAIBwQAAAAAAAwG5AAAAAAAAgb0AAAAAAACBuQAAAAAAAYG9AAAAAAABgbkAAAAAAAMBuQAAAAAAAwG5AAAAAAAAgb0AAAAAAAIBuQAAAAAAAgG9AAAAAAACAb0AAAAAAACBwQAAAAAAAkHBAAAAAAABwcEAAAAAAAMBxQAAAAAAAsHJAAAAAAAAAdEAAAAAAAIB1QAAAAAAAsHZAAAAAAABAd0AAAAAAAGB2QAAAAAAA8HVAAAAAAAAgdkAAAAAAAKB0QAAAAAAAIHRAAAAAAADgdEAAAAAAADB1QAAAAAAAkHVAAAAAAABQdkAAAAAAAIB2QAAAAAAAYHZAAAAAAABAd0AAAAAAAJB6QAAAAAAA8H9AAAAAAACQg0AAAAAAABCIQAAAAAAAkI1AAAAAAAB4kUAAAAAAANSSQAAAAAAALJNAAAAAAAAUkkAAAAAAAESQQAAAAAAASItAAAAAAABYhkAAAAAAAJCBQAAAAAAA4HtAAAAAAACQd0AAAAAAAMB0QAAAAAAAkHJAAAAAAACgcUAAAAAAAEBxQAAAAAAAgHBAAAAAAABQcEAAAAAAAKBwQAAAAAAAUHBAAAAAAACgb0AAAAAAACBwQAAAAAAAYHBAAAAAAABAcEAAAAAAALBxQAAAAAAAMHNAAAAAAACAdUAAAAAAACB5QAAAAAAAUHxAAAAAAACIgEAAAAAAAOCCQAAAAAAAqIRAAAAAAAAAhUAAAAAAAKiDQAAAAAAAYIJAAAAAAADgf0AAAAAAAIB7QAAAAAAAkHdAAAAAAACgdEAAAAAAANByQAAAAAAAgHFAAAAAAADQcEAAAAAAACBwQAAAAAAAgG9AAAAAAABgb0AAAAAAAIBvQAAAAAAAAHBAAAAAAACgb0AAAAAAAKBvQAAAAAAAoG9AAAAAAABgcEAAAAAAAJBwQAAAAAAAwHFAAAAAAAAwckAAAAAAADB0QAAAAAAAYHdAAAAAAADwekAAAAAAAPB/QAAAAAAA0IJAAAAAAAAwhUAAAAAAADiHQAAAAAAAoIdAAAAAAABohkAAAAAAAIiEQAAAAAAAKIJAAAAAAACgfkAAAAAAACB6QAAAAAAAwHZAAAAAAADwdEAAAAAAACBzQAAAAAAAIHJAAAAAAADgcUAAAAAAALBxQAAAAAAAsHFAAAAAAAAgcUAAAAAAAGBwQAAAAAAAoHBAAAAAAABQcEAAAAAAAFBwQAAAAAAAgHBAAAAAAADQcEAAAAAAAGBxQAAAAAAAAHJAAAAAAAAgc0AAAAAAAPBzQAAAAAAAoHRAAAAAAABwdUAAAAAAAFB1QAAAAAAAUHRAAAAAAADgc0AAAAAAAKByQAAAAAAAsHJAAAAAAAAAckAAAAAAAFBzQAAAAAAAgHVAAAAAAADgd0AAAAAAAGB6QAAAAAAAYH1AAAAAAAAAgEAAAAAAABCAQAAAAAAAGIBAAAAAAACAfkAAAAAAAIB7QAAAAAAAwHhAAAAAAADgdkAAAAAAAMB0QAAAAAAAcHNAAAAAAAAQc0AAAAAAAMByQAAAAAAAUHJAAAAAAADgcUAAAAAAACBzQAAAAAAAkHNAAAAAAADQc0AAAAAAAHB0QAAAAAAAcHVAAAAAAACgdEAAAAAAAAB0QAAAAAAAMHNAAAAAAACgckAAAAAAAKBxQAAAAAAAIHFAAAAAAACgcEAAAAAAACBxQAAAAAAA8HBAAAAAAAAgcUAAAAAAACByQAAAAAAA4HJAAAAAAAAQdEAAAAAAAOB1QAAAAAAA8HZAAAAAAAAgeEAAAAAAAKB4QAAAAAAAIHdAAAAAAABAdkAAAAAAAMB0QAAAAAAAYHNAAAAAAAAAckAAAAAAAHBxQAAAAAAAkHFAAAAAAAAgcUAAAAAAAMBxQAAAAAAAgHFAAAAAAADgcEAAAAAAAGBxQAAAAAAA0HBAAAAAAAAQcUAAAAAAAMBwQAAAAAAAsHBAAAAAAACQcEAAAAAAABBwQAAAAAAAIHBAAAAAAACwcEAAAAAAALBwQAAAAAAAUHFAAAAAAADwcUAAAAAAAOByQAAAAAAAwHRAAAAAAACAdkAAAAAAALB5QAAAAAAAkHxAAAAAAABggEAAAAAAAACDQAAAAAAA2IVAAAAAAADoikAAAAAAACCRQAAAAAAAhJVAAAAAAABUmkAAAAAAALSdQAAAAAAAKqBAAAAAAACAn0AAAAAAACCcQAAAAAAAcJdAAAAAAAB0kkAAAAAAAEiNQAAAAAAAwIZAAAAAAACog0AAAAAAAACCQAAAAAAAYIFAAAAAAAC4gEAAAAAAADiAQAAAAAAAYH5AAAAAAAAQfUAAAAAAANB6QAAAAAAAEHhAAAAAAACQdkAAAAAAAGB1QAAAAAAAgHNAAAAAAABQckAAAAAAAHBxQAAAAAAAUHFAAAAAAACQcEAAAAAAABBwQAAAAAAAAHBAAAAAAABAb0AAAAAAAEBwQAAAAAAAUHBAAAAAAAAgcEAAAAAAAHBwQAAAAAAAwHBAAAAAAADAcUAAAAAAACBzQAAAAAAAUHRAAAAAAAAQdUAAAAAAABB1QAAAAAAAgHVAAAAAAABAdUAAAAAAABB1QAAAAAAAgHRAAAAAAAAQdEAAAAAAACBzQAAAAAAAcHJAAAAAAAAQckAAAAAAAJBxQAAAAAAAsHBAAAAAAACgcEAAAAAAAOBwQAAAAAAAcHBAAAAAAAAAcEAAAAAAAKBwQAAAAAAAgHBAAAAAAAAwcEAAAAAAAFBwQAAAAAAAUHBAAAAAAAAgcEAAAAAAAKBvQAAAAAAAAG9AAAAAAACAbkAAAAAAACBvQAAAAAAAYG9AAAAAAACgbkAAAAAAAKBuQAAAAAAA4G5AAAAAAADgbkAAAAAAAMBvQAAAAAAAMHBAAAAAAABAb0AAAAAAAGBvQAAAAAAAIHBAAAAAAACAb0AAAAAAAOBvQAAAAAAAMHBAAAAAAAAAcEAAAAAAAIBwQAAAAAAAwHBAAAAAAACQcUAAAAAAAPByQAAAAAAAsHRAAAAAAAAwd0AAAAAAAEB6QAAAAAAAQH5AAAAAAACggEAAAAAAAACCQAAAAAAAMIJAAAAAAACYgUAAAAAAAHiAQAAAAAAAoH5AAAAAAAAQfUAAAAAAADB9QAAAAAAAEHxAAAAAAAAAekAAAAAAAJB4QAAAAAAA4HZAAAAAAACwdEAAAAAAAMBzQAAAAAAAkHJAAAAAAABgckAAAAAAAEByQAAAAAAA4HFAAAAAAABwckAAAAAAACBzQAAAAAAAsHNAAAAAAADgdEAAAAAAAFB3QAAAAAAAYHlAAAAAAADwe0AAAAAAADB/QAAAAAAAsH9AAAAAAACgf0AAAAAAAIB+QAAAAAAAAHtAAAAAAABweEAAAAAAAGB1QAAAAAAAsHNAAAAAAABAckAAAAAAADBxQAAAAAAAIHFAAAAAAAAwcEAAAAAAAEBvQAAAAAAAIHBAAAAAAACAb0AAAAAAAOBvQAAAAAAAwG9AAAAAAACgb0AAAAAAAMBvQAAAAAAAgG9AAAAAAAAQcEAAAAAAAEBvQAAAAAAA4G9AAAAAAABgb0AAAAAAAMBvQAAAAAAAQHBAAAAAAAAgb0AAAAAAAKBvQAAAAAAAwG9AAAAAAAAwcEAAAAAAAMBwQAAAAAAA4HBAAAAAAADAcUAAAAAAABBzQAAAAAAAIHRAAAAAAADAdkAAAAAAABB6QAAAAAAAYH1AAAAAAADogUAAAAAAADCFQAAAAAAAGIhAAAAAAAB4ikAAAAAAALCKQAAAAAAA0IhAAAAAAACAhkAAAAAAABiDQAAAAAAAQIBAAAAAAADwfEAAAAAAAMB5QAAAAAAA8HhAAAAAAAAAekAAAAAAAMB6QAAAAAAAAHtAAAAAAABAekAAAAAAACB5QAAAAAAAwHZAAAAAAADAdUAAAAAAAOB0QAAAAAAAEHRAAAAAAACgdEAAAAAAAGB1QAAAAAAAwHdAAAAAAAAQeEAAAAAAAEB6QAAAAAAAkHtAAAAAAAAQfUAAAAAAAMB7QAAAAAAAYHlAAAAAAADwd0AAAAAAAJB1QAAAAAAAwHRAAAAAAAAQdEAAAAAAAEBzQAAAAAAAQHJAAAAAAADwckAAAAAAAKBzQAAAAAAA0HRAAAAAAACwd0AAAAAAAGB7QAAAAAAAkH9AAAAAAACQgkAAAAAAAJiEQAAAAAAAaIZAAAAAAAAQh0AAAAAAADCGQAAAAAAAEIRAAAAAAAAYgUAAAAAAAMB+QAAAAAAAUHpAAAAAAAAgeEAAAAAAAIB1QAAAAAAAEHVAAAAAAADgdUAAAAAAAMB2QAAAAAAA8HlAAAAAAACgf0AAAAAAAFCCQAAAAAAAEIVAAAAAAABwh0AAAAAAAJiIQAAAAAAAiIdAAAAAAABQhUAAAAAAAKiCQAAAAAAAMH9AAAAAAAAQekAAAAAAAKB2QAAAAAAAQHVAAAAAAADgckAAAAAAAOBxQAAAAAAAgHFAAAAAAACwcUAAAAAAAEBxQAAAAAAAoHFAAAAAAADAcUAAAAAAAHByQAAAAAAAYHNAAAAAAADwc0AAAAAAABB0QAAAAAAAAHNAAAAAAACgckAAAAAAAFByQAAAAAAAsHFAAAAAAABQcUAAAAAAANBwQAAAAAAAkHBAAAAAAABQcUAAAAAAALBxQAAAAAAAsHFAAAAAAABQckAAAAAAAPByQAAAAAAAAHRAAAAAAADAc0AAAAAAALB0QAAAAAAAoHVAAAAAAABwdEAAAAAAAIB0QAAAAAAAIHNAAAAAAAAwckAAAAAAAOBxQAAAAAAAYHFAAAAAAAAQcUAAAAAAALBwQAAAAAAAAHFAAAAAAAAQcEAAAAAAAEBwQAAAAAAAkHBAAAAAAACAcEAAAAAAAABxQAAAAAAA4HBAAAAAAADAcEAAAAAAANBwQAAAAAAA8HFAAAAAAABAckAAAAAAAHByQAAAAAAA0HNAAAAAAADwdEAAAAAAAMB2QAAAAAAAoHlAAAAAAADQfUAAAAAAAGCBQAAAAAAAEIRAAAAAAACYh0AAAAAAAACLQAAAAAAAkI1AAAAAAABQjkAAAAAAAGiNQAAAAAAAMItAAAAAAAC4h0AAAAAAADiEQAAAAAAA4IBAAAAAAABAfUAAAAAAACB6QAAAAAAAsHdAAAAAAADQd0AAAAAAAFB5QAAAAAAA4HtAAAAAAADAfUAAAAAAAFiAQAAAAAAAiIFAAAAAAABYgUAAAAAAAIiAQAAAAAAAUH5AAAAAAABAe0AAAAAAAOB4QAAAAAAAMHZAAAAAAAAgdEAAAAAAAABzQAAAAAAA0HFAAAAAAADgcEAAAAAAAGBxQAAAAAAAQHBAAAAAAADAcEAAAAAAAIBwQAAAAAAAkHBAAAAAAABwcEAAAAAAALBwQAAAAAAA4HFAAAAAAABQckAAAAAAADByQAAAAAAA8HNAAAAAAADgdkAAAAAAALB5QAAAAAAA0HxAAAAAAACQfkAAAAAAAEiAQAAAAAAAWIFAAAAAAAAwgUAAAAAAAPB/QAAAAAAAYH5AAAAAAABAe0AAAAAAAIB4QAAAAAAAAHdAAAAAAACgdEAAAAAAAIB0QAAAAAAAcHVAAAAAAAAwd0AAAAAAAKB4QAAAAAAAkHtAAAAAAABAfUAAAAAAAFB9QAAAAAAAgHxAAAAAAAAAekAAAAAAAKB4QAAAAAAAkHZAAAAAAACgdEAAAAAAAIBzQAAAAAAAUHJAAAAAAADQcUAAAAAAAOBxQAAAAAAAMHFAAAAAAAAgcUAAAAAAAJBxQAAAAAAAcHFAAAAAAACgckAAAAAAAIBzQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1681\"},\"selection_policy\":{\"id\":\"1680\"}},\"id\":\"1666\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1670\"}]},\"id\":\"1684\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1702\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1658\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1666\"},\"glyph\":{\"id\":\"1667\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1669\"},\"nonselection_glyph\":{\"id\":\"1668\"},\"view\":{\"id\":\"1671\"}},\"id\":\"1670\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"overlay\":{\"id\":\"1658\"}},\"id\":\"1654\",\"type\":\"BoxZoomTool\"}],\"root_ids\":[\"1635\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"58f9e23c-3587-44be-a3b2-7b9318ecce20\",\"root_ids\":[\"1635\"],\"roots\":{\"1635\":\"3fc1f776-bc02-4ddc-a7bb-61a2de505609\"}}];\n", + " const docs_json = {\"0625d81c-5c9e-4b0c-9d1e-dafe216b9826\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1644\"}],\"center\":[{\"id\":\"1647\"},{\"id\":\"1651\"},{\"id\":\"1683\"}],\"height\":300,\"left\":[{\"id\":\"1648\"}],\"renderers\":[{\"id\":\"1670\"},{\"id\":\"1689\"}],\"title\":{\"id\":\"1672\"},\"toolbar\":{\"id\":\"1659\"},\"width\":990,\"x_range\":{\"id\":\"1636\"},\"x_scale\":{\"id\":\"1640\"},\"y_range\":{\"id\":\"1638\"},\"y_scale\":{\"id\":\"1642\"}},\"id\":\"1635\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1688\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1638\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1656\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1685\"},\"glyph\":{\"id\":\"1686\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1688\"},\"nonselection_glyph\":{\"id\":\"1687\"},\"view\":{\"id\":\"1690\"}},\"id\":\"1689\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1653\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1676\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1680\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1668\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1667\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1649\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1678\"},\"group\":null,\"major_label_policy\":{\"id\":\"1679\"},\"ticker\":{\"id\":\"1645\"}},\"id\":\"1644\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1642\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1679\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1640\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1655\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1645\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1644\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1647\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1657\",\"type\":\"HelpTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAAAAaUDpoosuugBpQNFFF110AWlAuuiiiy4CaUCjiy666AJpQIwuuuiiA2lAdNFFF10EaUBddNFFFwVpQEYXXXTRBWlAL7rooosGaUAXXXTRRQdpQAAAAAAACGlA6aKLLroIaUDRRRdddAlpQLrooosuCmlAo4suuugKaUCMLrroogtpQHTRRRddDGlAXXTRRRcNaUBGF1100Q1pQC+66KKLDmlAF1100UUPaUAAAAAAABBpQOmiiy66EGlA0UUXXXQRaUC66KKLLhJpQKOLLrroEmlAjC666KITaUB00UUXXRRpQF100UUXFWlARhdddNEVaUAvuuiiixZpQBdddNFFF2lAAAAAAAAYaUDpoosuuhhpQNFFF110GWlAuuiiiy4aaUCjiy666BppQIwuuuiiG2lAdNFFF10caUBddNFFFx1pQEYXXXTRHWlAL7roooseaUAXXXTRRR9pQAAAAAAAIGlA6aKLLrogaUDRRRdddCFpQLrooosuImlAo4suuugiaUCMLrrooiNpQHTRRRddJGlAXXTRRRclaUBGF1100SVpQC+66KKLJmlAF1100UUnaUAAAAAAAChpQOmiiy66KGlA0UUXXXQpaUC66KKLLippQKOLLrroKmlAjC666KIraUB00UUXXSxpQF100UUXLWlARhdddNEtaUAvuuiiiy5pQBdddNFFL2lAAAAAAAAwaUDpoosuujBpQNFFF110MWlAuuiiiy4yaUCjiy666DJpQIwuuuiiM2lAdNFFF100aUBddNFFFzVpQEYXXXTRNWlAL7rooos2aUAXXXTRRTdpQAAAAAAAOGlA6aKLLro4aUDRRRdddDlpQLrooosuOmlAo4suuug6aUCMLrroojtpQHTRRRddPGlAXXTRRRc9aUBGF1100T1pQC+66KKLPmlAF1100UU/aUAAAAAAAEBpQOmiiy66QGlA0UUXXXRBaUC66KKLLkJpQKOLLrroQmlAjC666KJDaUB00UUXXURpQF100UUXRWlARhdddNFFaUAvuuiii0ZpQBdddNFFR2lAAAAAAABIaUDpoosuukhpQNFFF110SWlAuuiiiy5KaUCjiy666EppQIwuuuiiS2lAdNFFF11MaUBddNFFF01pQEYXXXTRTWlAL7roootOaUAXXXTRRU9pQAAAAAAAUGlA6aKLLrpQaUDRRRdddFFpQLrooosuUmlAo4suuuhSaUCMLrroolNpQHTRRRddVGlAXXTRRRdVaUBGF1100VVpQC+66KKLVmlAF1100UVXaUAAAAAAAFhpQOmiiy66WGlA0UUXXXRZaUC66KKLLlppQKOLLrroWmlAjC666KJbaUB00UUXXVxpQF100UUXXWlARhdddNFdaUAvuuiii15pQBdddNFFX2lAAAAAAABgaUDpoosuumBpQNFFF110YWlAuuiiiy5iaUCjiy666GJpQIwuuuiiY2lAdNFFF11kaUBddNFFF2VpQEYXXXTRZWlAL7roootmaUAXXXTRRWdpQAAAAAAAaGlA6aKLLrpoaUDRRRdddGlpQLrooosuamlAo4suuuhqaUCMLrroomtpQHTRRRddbGlAXXTRRRdtaUBGF1100W1pQC+66KKLbmlAF1100UVvaUAAAAAAAHBpQOmiiy66cGlA0UUXXXRxaUC66KKLLnJpQKOLLrrocmlAjC666KJzaUB00UUXXXRpQF100UUXdWlARhdddNF1aUAvuuiii3ZpQBdddNFFd2lAAAAAAAB4aUDpoosuunhpQNFFF110eWlAuuiiiy56aUCjiy666HppQIwuuuiie2lAdNFFF118aUBddNFFF31pQEYXXXTRfWlAL7rooot+aUAXXXTRRX9pQAAAAAAAgGlA6aKLLrqAaUDRRRdddIFpQLrooosugmlAo4suuuiCaUCMLrroooNpQHTRRRddhGlAXXTRRReFaUBGF1100YVpQC+66KKLhmlAF1100UWHaUAAAAAAAIhpQOmiiy66iGlA0UUXXXSJaUC66KKLLoppQKOLLrroimlAjC666KKLaUB00UUXXYxpQF100UUXjWlARhdddNGNaUAvuuiii45pQBdddNFFj2lAAAAAAACQaUDpoosuupBpQNFFF110kWlAuuiiiy6SaUCjiy666JJpQIwuuuiik2lAdNFFF12UaUBddNFFF5VpQEYXXXTRlWlAE6qQIxvWaUDIwCeWwxVsQHu/g+JBu3BAWqpcXYiycEABO5h40QZsQNwFbBjt1mlAo4suuuiaaUCMLrrooptpQHTRRRddnGlAXXTRRRedaUBGF1100Z1pQC+66KKLnmlAF1100UWfaUAAAAAAAKBpQOmiiy66oGlA0UUXXXShaUC66KKLLqJpQKOLLrroomlAjC666KKjaUB00UUXXaRpQF100UUXpWlARhdddNGlaUAvuuiii6ZpQBdddNFFp2lAAAAAAACoaUDpoosuuqhpQNFFF110qWlAuuiiiy6qaUCjiy666KppQIwuuuiiq2lAdNFFF12saUBddNFFF61pQEYXXXTRrWlAL7rooouuaUAXXXTRRa9pQAAAAAAAsGlA6aKLLrqwaUDRRRdddLFpQLrooosusmlAo4suuuiyaUCMLrroorNpQHTRRRddtGlAXXTRRRe1aUBGF1100bVpQC+66KKLtmlAF1100UW3aUAAAAAAALhpQOmiiy66uGlA0UUXXXS5aUC66KKLLrppQKOLLrroumlAjC666KK7aUB00UUXXbxpQF100UUXvWlARhdddNG9aUAvuuiii75pQBdddNFFv2lAAAAAAADAaUDpoosuusBpQNFFF110wWlAuuiiiy7CaUCjiy666MJpQIwuuuiiw2lAdNFFF13EaUBddNFFF8VpQEYXXXTRxWlALrrooovGaUAXXXTRRcdpQAAAAAAAyGlA6aKLLrrIaUDRRRdddMlpQLrooosuymlAo4suuujKaUCMLrroostpQHTRRRddzGlAXXTRRRfNaUBGF1100c1pQC+66KKLzmlAF1100UXPaUAAAAAAANBpQOmiiy660GlA0UUXXXTRaUC66KKLLtJpQKOLLrro0mlAjC666KLTaUB00UUXXdRpQF100UUX1WlARhdddNHVaUAvuuiii9ZpQBdddNFF12lAAAAAAADYaUDpoosuuthpQNFFF1102WlAuuiiiy7aaUCjiy666NppQIwuuuii22lAdNFFF13caUBddNFFF91pQEYXXXTR3WlAL7roooveaUAXXXTRRd9pQAAAAAAA4GlA6aKLLrrgaUDRRRdddOFpQLrooosu4mlAo4suuujiaUCMLrroouNpQHTRRRdd5GlAXXTRRRflaUCJeNNL3gtqQHNfdjiy3GpArsabnCHba0DEAvhYyCtrQI0aY5BQTmpA3w22+btEakD34y1DYylqQCXZKCZH+WlAxblQZ6nsaUB00UUXXexpQF100UUX7WlARhdddNHtaUAuuuiii+5pQBdddNFF72lAAAAAAADwaUDpoosuuvBpQNFFF1108WlAuuiiiy7yaUCjiy666PJpQIwuuuii82lAdNFFF130aUBddNFFF/VpQEYXXXTR9WlAL7rooov2aUAXXXTRRfdpQAAAAAAA+GlA6aKLLrr4aUDRRRdddPlpQLrooosu+mlAo4suuuj6aUCMLrroovtpQHTRRRdd/GlAXXTRRRf9aUBGF1100f1pQC+66KKL/mlAF1100UX/aUAAAAAAAABqQOmiiy66AGpA0UUXXXQBakC66KKLLgJqQKOLLrroAmpAjC666KIDakB00UUXXQRqQF100UUXBWpARhdddNEFakAvuuiiiwZqQBdddNFFB2pAAAAAAAAIakDpoosuughqQNFFF110CWpAuuiiiy4KakCjiy666ApqQIwuuuiiC2pAdNFFF10MakBddNFFFw1qQEYXXXTRDWpAL7rooosOakAXXXTRRQ9qQAAAAAAAEGpA6aKLLroQakDRRRdddBFqQLrooosuEmpAo4suuugSakCiLWwtNnhqQEWxQTLhA21AzQRADqh7cEC8WcsEkyZvQAp+nBAAQmtAW6GCRfksakAAAAAAABhqQOmiiy66GGpA0UUXXXQZakC66KKLLhpqQKOLLrroGmpAjC666KIbakB00UUXXRxqQF100UUXHWpARhdddNEdakAuuuiiix5qQBdddNFFH2pAAAAAAAAgakDpoosuuiBqQNFFF110IWpAuuiiiy4iakCjiy666CJqQIwuuuiiI2pAdNFFF10kakBddNFFFyVqQEYXXXTRJWpAL7rooosmakAXXXTRRSdqQAAAAAAAKGpA6aKLLrooakDRRRdddClqQG97P4M3qmpA99ZpL/acbkBIXDbH10hzQMqflx8Gg3JA3p+GudEnbUAv7ZvjiG9qQC+66KKLLmpAF1100UUvakAAAAAAADBqQOmiiy66MGpA0UUXXXQxakC66KKLLjJqQKOLLrroMmpAjC666KIzakB00UUXXTRqQF100UUXNWpARhdddNE1akAvuuiiizZqQBdddNFFN2pAAAAAAAA4akDpoosuujhqQNFFF110OWpAuuiiiy46akCjiy666DpqQIwuuuiiO2pAdNFFF108akDZLnrOgeBtQGNjjK4iQHdAoucUr7XRfkAtCqOj19J2QNE3X1sPlm1A6aKLLrpAakDRRRdddEFqQLrooosuQmpAo4suuuhCakCMLrrookNqQHTRRRddRGpAXXTRRRdFakBGF1100UVqQC+66KKLRmpAF1100UVHakAAAAAAAEhqQOmiiy66SGpA0UUXXXRJakC66KKLLkpqQKOLLrroSmpAjC666KJLakB00UUXXUxqQF100UUXTWpARhdddNFNakAvuuiii05qQBdddNFFT2pAAAAAAABQakDpoosuulBqQIEGOhucn2xAWPVf67kceEAWIicVDueGQHd1yQHf14VAjVfbeUUedkD4zbTK7vprQEYXXXTRVWpALrroootWakAXXXTRRVdqQAAAAAAAWGpA6aKLLrpYakDRRRdddFlqQLrooosuWmpAo4suuuhaakCMLrrooltqQHTRRRddXGpAXXTRRRddakBGF1100V1qQC+66KKLXmpAF1100UVfakAAAAAAAGBqQOmiiy66YGpA0UUXXXRhakC66KKLLmJqQKOLLrroYmpAac72t2VPa0Cfxi+Yz0hwQBLyDAzssXNALA84daN8cUCfJ48XBy1sQIdVt9XIhGpAAAAAAABoakDpoosuumhqQNFFF110aWpAuuiiiy5qakCjiy666GpqQIwuuuiia2pAdNFFF11sakBddNFFF21qQEYXXXTRbWpAL7roootuakAXXXTRRW9qQAAAAAAAcGpA6aKLLrpwakDRRRdddHFqQLrooosucmpAo4suuuhyakCMLrroonNqQHTRRRdddGpAXXTRRRd1akBGF1100XVqQC+66KKLdmpAF1100UV3akAAAAAAAHhqQOmiiy66eGpA0kUXXXR5akC66KKLLnpqQKOLLrroempAjC666KJ7akB00UUXXXxqQF100UUXfWpARhdddNF9akAuuuiii35qQBdddNFFf2pAAAAAAACAakDpoosuuoBqQNFFF110gWpAuuiiiy6CakCjiy666IJqQIwuuuiig2pAdNFFF12EakBddNFFF4VqQEYXXXTRhWpAL7rooouGakAXXXTRRYdqQLQ6C5TJO21ABu9dCw42e0CE/3JXXzONQOQGT+Hkio1A2psX3ILbe0CZnHWzUnVtQHTRRRddjGpAXXTRRReNakBGF1100Y1qQC666KKLjmpAF1100UWPakAAAAAAAJBqQOmiiy66kGpA0UUXXXSRakC66KKLLpJqQKOLLrrokmpAjC666KKTakB00UUXXZRqQF100UUXlWpARhdddNGVakAvuuiii5ZqQBdddNFFl2pAAAAAAACYakDpoosuuphqQNFFF110mWpAuuiiiy6aakCjiy666JpqQIwuuuiim2pAdNFFF12cakBddNFFF51qQEYXXXTRnWpALrroooueakAXXXTRRZ9qQAAAAAAAoGpA6aKLLrqgakDSRRdddKFqQLrooosuompAo4suuuiiakCMLrrooqNqQHTRRRddpGpAXXTRRRelakBGF1100aVqQC666KKLpmpAF1100UWnakAAAAAAAKhqQOmiiy66qGpA0UUXXXSpakC66KKLLqpqQKOLLrroqmpAjC666KKrakB00UUXXaxqQF100UUXrWpARhdddNGtakAvuuiii65qQBdddNFFr2pAAAAAAACwakDpoosuurBqQNFFF110sWpAuuiiiy6yakCjiy666LJqQIwuuuiis2pAdNFFF120akBddNFFF7VqQEYXXXTRtWpALrrooou2akAXXXTRRbdqQAAAAAAAuGpA6aKLLrq4akCy1ijFj0twQEWr7Z8b2IFAGLlfwY2pkEB1AQElZ5+KQI8mG+AFunZA+svlbLMdbEBGF1100b1qQC+66KKLvmpAF1100UW/akAAAAAAAMBqQOmiiy66wGpA0UUXXXTBakC66KKLLsJqQKOLLrrowmpAjC666KLDakB00UUXXcRqQF100UUXxWpARhdddNHFakAuuuiii8ZqQBdddNFFx2pAcCbiUa9Ja0CMwTm4Y/1wQAUzHuq1an1AEmZ1FiDqgUCQ3OttqBR4QO6eK0fp/HJAJYQ6RZfFc0AS1NildGZwQEcJgQJ9sGtALrrooovOakAXXXTRRc9qQAAAAAAA0GpA6aKLLrrQakDRRRdddNFqQLrooosu0mpAo4suuujSakCMLrrootNqQHTRRRdd1GpAXXTRRRfVakBGF1100dVqQC+66KKL1mpAF1100UXXakAAAAAAANhqQOmiiy662GpA0UUXXXTZakC66KKLLtpqQKOLLrro2mpA9KmH2FzmakDByPMHhUBrQMOqpHhOAmxA+k5tsPXqa0D3yfSAACxrQA9acARD5mpAAAAAAADgakDpoosuuuBqQNFFF1104WpAuuiiiy7iakCjiy666OJqQIwuuuii42pAdNFFF13kakBddNFFF+VqQEYXXXTR5WpAL7rooovmakAXXXTRRedqQAAAAAAA6GpA6aKLLrroakDRRRdddOlqQLrooosu6mpAo4suuujqakCMLrrooutqQHTRRRdd7GpAXXTRRRftakBGF1100e1qQC666KKL7mpAF1100UXvakAAAAAAAPBqQOmiiy668GpA0kUXXXTxakC66KKLLvJqQKOLLrro8mpAjC666KLzakB00UUXXfRqQF100UUX9WpARhdddNH1akAuuuiii/ZqQBdddNFF92pAAAAAAAD4akDpoosuuvhqQNFFF110+WpAuuiiiy76akCjiy666PpqQIwuuuii+2pAdNFFF138akBddNFFF/1qQEYXXXTR/WpAL7rooov+akAXXXTRRf9qQAAAAAAAAGtA6aKLLroAa0DRRRdddAFrQLrooosuAmtAo4suuugCa0CMLrroogNrQHTRRRddBGtAXXTRRRcFa0BGF1100QVrQC666KKLBmtAF1100UUHa0AAAAAAAAhrQOmiiy66CGtA0kUXXXQJa0C66KKLLgprQKOLLrroCmtAjC666KILa0B00UUXXQxrQF100UUXDWtARhdddNENa0Avuuiiiw5rQBdddNFFD2tAAAAAAAAQa0DpoosuuhBrQNFFF110EWtAuuiiiy4Sa0Cjiy666BJrQP7FSDIDqWtAB1WTw0sSckCjsNVjy82BQIbptD5E+YdArhPP4m/IgEBzGEui95d2QMRksUgBFHFACS/2/p1GbEDSRRdddBlrQLrooosuGmtAo4suuugaa0CMLrroohtrQHTRRRddHGtAXXTRRRcda0BGF1100R1rQC666KKLHmtAF1100UUfa0AAAAAAACBrQOmiiy66IGtA0UUXXXQha0C66KKLLiJrQKOLLrroImtAjC666KIja0B00UUXXSRrQMs/ONT6eWtAz0FPMrWLbkBWCch/eQhzQBzhIWakEnNADXHdfFSgbkDnRmXyooBrQNFFF110KWtAuuiiiy4qa0Cjiy666CprQIwuuuiiK2tAdNFFF10sa0BddNFFFy1rQEYXXXTRLWtALrrooosua0AXXXTRRS9rQAAAAAAAMGtA6aKLLrowa0DSRRdddDFrQLrooosuMmtAo4suuugya0CMLrroojNrQHTRRRddNGtAXXTRRRc1a0BGF1100TVrQC+66KKLNmtAF1100UU3a0AAAAAAADhrQOmiiy66OGtA0UUXXXQ5a0C66KKLLjprQKOLLrroOmtAjC666KI7a0B00UUXXTxrQF100UUXPWtARhdddNE9a0Auuuiiiz5rQIyjUv8+oW9AGPXNxslKe0BCt64RXiyEQDu7YgjlAH5AXWldh3XGcEBNe7cK6aNrQIwuuuiiQ2tAdNFFF11Ea0BddNFFF0VrQEYXXXTRRWtALrroootGa0AXXXTRRUdrQAAAAAAASGtA6aKLLrpIa0DRRRdddElrQLrooosuSmtAo4suuuhKa0CMLrrooktrQKzCarrZkmtAXJYyBRzbb0DtauoQF3Z5QGhT7hmwbIBADQFKjYdvd0A5jaKv2W9uQOmiiy66UGtA0UUXXXRRa0C66KKLLlJrQKOLLrroUmtAjC666KJTa0B00UUXXVRrQF100UUXVWtARhdddNFVa0Auuuiii1ZrQBdddNFFV2tAAAAAAABYa0DpoosuulhrQNJFF110WWtAuuiiiy5aa0Cjiy666FprQIwuuuiiW2tAXl3B1RGRbkA8j0KDCrB7QE5RMAqkBYpAeFPoxEdPh0DxiSC+s4x2QFr7XBHX3mxA6aKLLrpga0DRRRdddGFrQLrooosuYmtAo4suuuhia0CMLrroomNrQHTRRRddZGtAXXTRRRdla0BGF1100WVrQC666KKLZmtA0wNtYpqabUC2n0TJMSN8QD7jDCYSRJJAXP+plFGOlkBl2x3VJ1CGQH5mQBkDoHFAjC666KJra0B00UUXXWxrQF100UUXbWtARhdddNFta0Auuuiii25rQBdddNFFb2tAAAAAAABwa0DpoosuunBrQNFFF110cWtAuuiiiy5ya0Cjiy666HJrQIrO3MaNYWxAJG1ujXR5ckA6v8boQ8R9QBzPt3/AG4FA2uepMhYDeED8I2sMMVdvQDxpBv2vtWtABkILtcnsbEBCTun3g8RyQGSStbaAp3hA1+0omjAqdUAooA8fKqZuQKtvY/aIsmtAXXTRRRd9a0BGF1100X1rQC666KKLfmtAF1100UV/a0AAAAAAAIBrQOmiiy66gGtA0kUXXXSBa0C66KKLLoJrQKOLLrrogmtAjC666KKDa0B00UUXXYRrQF100UUXhWtARhdddNGFa0Avuuiii4ZrQBdddNFFh2tAAAAAAACIa0DpoosuuohrQNFFF110iWtAuuiiiy6Ka0Cjiy666IprQIwuuuiii2tAdNFFF12Ma0BddNFFF41rQBzyJGkMhm9ABsvSp4cSgUBy7zKfQ62UQB0HLFjS8plAW7/+Hqp3jUAmFM3SfOx1QDC3fTNQhmxAo4suuuiSa0CMLrroopNrQHTRRRddlGtAXXTRRReVa0BGF1100ZVrQC666KKLlmtAF1100UWXa0AAAAAAAJhrQOmiiy66mGtA0UUXXXSZa0C66KKLLpprQKOLLrrommtA2cU9Q9O9a0C15U9oDNFtQA7g3jat9XRAzn+rHKnQgUBitipDzWKKQNC20GFBzYdAKUiMmL30hUBD573qLOaLQFfB8vgH8IJAd6ObBzY1ckCjiy666KJrQIwuuuiio2tAdNFFF12ka0BddNFFF6VrQEYXXXTRpWtALrrooouma0AXXXTRRadrQAAAAAAAqGtA6aKLLrqoa0DSRRdddKlrQLrooosuqmtAo4suuuiqa0CMLrrooqtrQHTRRRddrGtAXXTRRReta0BGF1100a1rQC+66KKLrmtAF1100UWva0AAAAAAALBrQOmiiy66sGtA0UUXXXSxa0C66KKLLrJrQKOLLrrosmtAjC666KKza0B00UUXXbRrQF100UUXtWtARhdddNG1a0Auuuiii7ZrQBdddNFFt2tAB6mUOfBBcEATGd8vSZF9QDAFIeQKDodAVkR7IiRPgUC0Yx3FbQ1yQNH3lPA7Q2xAdNFFF128a0BddNFFF71rQEYXXXTRvWtALrrooou+a0AXXXTRRb9rQAAAAAAAwGtA6aKLLrrAa0DRRRdddMFrQLrooosuwmtAo4suuujCa0CMLrroosNrQHTRRRddxGtAXXTRRRfFa0BGF1100cVrQC666KKLxmtAF1100UXHa0AAAAAAAMhrQOmiiy66yGtA0UUXXXTJa0C66KKLLsprQKOLLrroymtAjC666KLLa0B00UUXXcxrQF100UUXzWtARhdddNHNa0Auuuiii85rQBdddNFFz2tAAAAAAADQa0DpoosuutBrQNJFF1100WtAuuiiiy7Sa0Cjiy666NJrQIwuuuii02tAdNFFF13Ua0BddNFFF9VrQEYXXXTR1WtAL7rooovWa0AXXXTRRddrQAAAAAAA2GtA0LJte0bsa0AfLkLs7fhsQOJ5ObBQjnBA4yizJrwSckCChsZoPENwQDfokmKTFG1AwVLCEF83bkAIvR1oQoVxQIwcSuFKdXFA+iC95ckKbkC549O1oBVsQOmiiy664GtA0kUXXXTha0C66KKLLuJrQKOLLrro4mtAjC666KLja0B00UUXXeRrQF100UUX5WtARhdddNHla0DZ+4yH6RhsQFeP13D19mxAuirr+3SzbUC6UqmzU9xsQPf8cSryEWxAuuiiiy7qa0Cjiy666OprQIwuuuii62tAdNFFF13sa0BddNFFF+1rQEYXXXTR7WtALrrooovua0AXXXTRRe9rQAAAAAAA8GtA6aKLLrrwa0DRRRdddPFrQLrooosu8mtAo4suuujya0CMLrroovNrQHTRRRdd9GtAXXTRRRf1a0BGF1100fVrQC666KKL9mtAF1100UX3a0AAAAAAAPhrQOmiiy66+GtA0kUXXXT5a0C66KKLLvprQKOLLrro+mtAjC666KL7a0B00UUXXfxrQF100UUX/WtARhdddNH9a0Avuuiii/5rQBdddNFF/2tAAAAAAAAAbEDpoosuugBsQNFFF110AWxAuuiiiy4CbECjiy666AJsQIwuuuiiA2xAdNFFF10EbEBddNFFFwVsQEYXXXTRBWxALrrooosGbEAXXXTRRQdsQAAAAAAACGxA6aKLLroIbEDSRRdddAlsQLrooosuCmxAo4suuugKbECMLrroogtsQO6q8dW2NmxAVIbGrmsBbUAV2TyIzMdtQK4nmsc8CW1ANXP8its7bEAAAAAAABBsQOmiiy66EGxA0UUXXXQRbEC66KKLLhJsQKOLLrroEmxAjC666KITbEB00UUXXRRsQF100UUXFWxAWVO1XFeHbEBEQlAcXVZxQD+SWhRKYn1Aeaw7y0Q5gkAklz9vaE54QJ4dW1KdC29Auuiiiy4abECjiy666BpsQIwuuuiiG2xAdNFFF10cbEBddNFFFx1sQEYXXXTRHWxAL7rooosebEAXXXTRRR9sQAAAAAAAIGxA6aKLLrogbEDRRRdddCFsQLrooosuImxAo4suuugibECMLrrooiNsQHTRRRddJGxAXXTRRRclbEBGF1100SVsQC666KKLJmxAF1100UUnbEAAAAAAAChsQOmiiy66KGxA0kUXXXQpbEC66KKLLipsQKOLLrroKmxAjC666KIrbEB00UUXXSxsQF100UUXLWxARhdddNEtbEAuuuiiiy5sQBdddNFFL2xAAAAAAAAwbEDpoosuujBsQNJFF110MWxAuuiiiy4ybECjiy666DJsQIwuuuiiM2xAdNFFF100bEAEjzSnkIZsQPy8GZMA7W5ANgw6Y+zFcUD+zfoiloJxQF8TVOz6FXBARUjoKW3NbkBwz/kXbAZtQP9mH88zT2xAo4suuug6bECMLrroojtsQHTRRRddPGxAXXTRRRc9bEBGF1100T1sQC666KKLPmxAF1100UU/bEAAAAAAAEBsQOmiiy66QGxApIoSjCTLbEBU26KWAvxwQKK1vRZMo3dAAhsgdZYPeEDwoNt2tmJxQBvR43xcBG1Am/NzmfeGbUBU7A8MB0NxQOxjtxrwBHNAe0gtWxSIcEDTYxn51QRtQNFFF110SWxAuuiiiy5KbECjiy666EpsQGpP1OzcS2xAt6QmGxJQbEBClGhVHGBsQGOKYut7bGxAMztft61ebECYRZ+mMqlsQJe4A09C8G5A4P1pQNBicUD6u1pYH6pwQD/rT9s/i21APKGVjOJqbECMLrroolNsQHTRRRddVGxAXXTRRRdVbEBGF1100VVsQC666KKLVmxAF1100UVXbEAAAAAAAFhsQOmiiy66WGxA0kUXXXRZbEC66KKLLlpsQKOLLrroWmxAjC666KJbbEB00UUXXVxsQF100UUXXWxARhdddNFdbEAuuuiii15sQBdddNFFX2xAAAAAAABgbEDpoosuumBsQNFFF110YWxAuuiiiy5ibECjiy666GJsQIwuuuiiY2xAdNFFF11kbEBddNFFF2VsQEYXXXTRZWxAeK9/gFhnbEBNjwWrBnBsQPUpICUJhmxADQokBw+JbEC8KPhOX3RsQK6pFJ9Wa2xAo4suuuhqbECMLrroomtsQHTRRRddbGxAXXTRRRdtbEBGF1100W1sQEPKbF85lWxAD8WeC+ldbUCeM91T5z1uQECZAjY2iW1AlbNqROOmbEAOj+8QYHVsQKOLLrrocmxAjC666KJzbECDiDy8cXZsQLHa4GsZi2xA5AWb99q+bEA7lHLblsJsQCX119AckGxAkKpyr4t6bEDpoosuunhsQNJFF110eWxAuuiiiy56bECjiy666HpsQIwuuuiie2xAdNFFF118bEBddNFFF31sQEYXXXTRfWxALrrooot+bEAXXXTRRX9sQAAAAAAAgGxA6aKLLrqAbEDSRRdddIFsQLrooosugmxAo4suuuiCbECMLrroooNsQHTRRRddhGxAVljLtl+ObECFRieEbPdsQMgyCkMePm5ANI7BhnOgbkCUpLQ622dtQJIOIFsyJ21ARJ03v7HWbUBlrkzfmY9tQCKNkldCy2xACJWZVJuQbEB00UUXXYxsQF100UUXjWxARhdddNGNbEAuuuiii45sQMhV7PnXw2xA0GRZjCEQb0ByRWoPeg9zQJV2p5vxBHRAK6XyU5B4cEDVZluQ/CltQMSuCLVtnGxAUc4J94eVbEBddNFFF5VsQEYXXXTRlWxAL7rooouWbEAXXXTRRZdsQAAAAAAAmGxA6aKLLrqYbEDRRRdddJlsQLrooosummxAo4suuuiabECMLrrooptsQHTRRRddnGxAXXTRRRedbEBGF1100Z1sQC666KKLnmxAF1100UWfbEAAAAAAAKBsQOmiiy66oGxA0kUXXXShbEC66KKLLqJsQKOLLrroomxAjC666KKjbEB00UUXXaRsQF100UUXpWxARhdddNGlbEAuuuiii6ZsQBdddNFFp2xAAAAAAACobEDpoosuuqhsQNJFF110qWxAuuiiiy6qbEAL8iSqK61sQK+Oev3ry2xAZYwUmgk9bUCjkxxmlHhtQFv7ReKnB21A9u9Mpf66bEAspTgHEn1tQLW3HZYfJHRANuKu8cNLhECA+1TyvdKJQNjY3CWl/H5ArLhmO+WtcECMLrroorNsQMpeRx04d25A7O8A4mNzdUBIp7RHvieAQJMOenPRnXxAZQaejbvpcUC/2XNuckZtQOmiiy66uGxA0UUXXXS5bEC66KKLLrpsQKOLLrroumxAjC666KK7bEB00UUXXbxsQF100UUXvWxARhdddNG9bEAvuuiii75sQBdddNFFv2xAAAAAAADAbEDpoosuusBsQNFFF110wWxAuuiiiy7CbECjiy666MJsQIwuuuiiw2xAdNFFF13EbEBddNFFF8VsQEYXXXTRxWxALrrooovGbECBGDoAOf9sQARkwdUbf25AYYFkPmCBcECJzYVJSwdwQAb8rz6IlW1A/s5ZEWvabECMLrroostsQHTRRRddzGxAXXTRRRfNbEBGF1100c1sQC666KKLzmxAF1100UXPbEAAAAAAANBsQOmiiy660GxA0kUXXXTRbEC66KKLLtJsQKOLLrro0mxAjC666KLTbEB00UUXXdRsQF100UUX1WxARhdddNHVbEBg7l1YLyRtQFqNlnB5sm9AOqjEVEKlckBtwrh1kFhyQAznKlczI29AeONG49MPbUCjiy666NpsQIwuuuii22xAdNFFF13cbEBddNFFF91sQEYXXXTR3WxALrrooovebEAXXXTRRd9sQAAAAAAA4GxA6aKLLrrgbEDRRRdddOFsQLrooosu4mxAo4suuujibECMLrroouNsQHTRRRdd5GxAXXTRRRflbEBGF1100eVsQC+66KKL5mxAF1100UXnbEAAAAAAAOhsQOmiiy666GxAwNpimFuPbUA4f2xBpYpxQLdVDJTIwXdA4wpQn1EkeEBJSj52ahdyQFXUZtDD621ARhdddNHtbEAuuuiii+5sQBdddNFF72xAAAAAAADwbEB8CnytHfRsQGVQQi70EG1Afm/i0ShObUD4dE73botxQDDXjwJ3Ln9AtcQ97vs9hkAo7NYfKnR/QCDACf9Ff3FALrrooov2bEAXXXTRRfdsQAAAAAAA+GxA6aKLLrr4bEDSRRdddPlsQLrooosu+mxAo4suuuj6bECMLrroovtsQM/28LdzAG1Aj4QSfpUnbUBKt0uXZMBtQJN03rgp6m9AxWUOuaCdckDw15yk+NFyQJzj/nYO529AckMSEeRPbUC66KKLLgJtQKOLLrroAm1AjC666KIDbUB00UUXXQRtQF100UUXBW1ARhdddNEFbUAuuuiiiwZtQBdddNFFB21AAAAAAAAIbUDpoosuughtQNFFF110CW1Auuiiiy4KbUCjiy666AptQI8hWF4mPG1AF7eAHR8Zb0BJMHarZgJyQJKz3uGMP3JAjUg3SBSOb0A1DcAzu1JtQAAAAAAAEG1AxxnbXNO5bUANulaG5hFxQA+WCUmGp3RA5HtmY08tc0CTiXv5zUlvQB/QnkjEPm1AXXTRRRcVbUBGF1100RVtQC666KKLFm1AF1100UUXbUAAAAAAABhtQOiiiy66GG1A0kUXXXQZbUC66KKLLhptQKOLLrroGm1AjC666KIbbUB00UUXXRxtQF100UUXHW1ARhdddNEdbUAuuuiiix5tQBdddNFFH21AAAAAAAAgbUDpoosuuiBtQNJFF110IW1Auuiiiy4ibUCjiy666CJtQIwuuuiiI21AdNFFF10kbUBddNFFFyVtQEKtlmps7m1A3tZhj5FHc0ANEM/d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luxtQIwuuuiiy21AdNFFF13MbUBddNFFF81tQEYXXXTRzW1ALrrooovObUAXXXTRRc9tQCAo3cAacXFA+tFxX5Erf0CE9QSLWemHQEJkye8494FA/o7dgvwlc0DiFi+HlF1uQHTRRRdd1G1AXXTRRRfVbUBGF1100dVtQC666KKL1m1AF1100UXXbUAAAAAAANhtQOmiiy662G1A0UUXXXTZbUC66KKLLtptQKOLLrro2m1AjC666KLbbUB00UUXXdxtQF100UUX3W1ARhdddNHdbUAuuuiii95tQBdddNFF321AAAAAAADgbUDooosuuuBtQNJFF1104W1AWRRhD1LwbUAJjsddbS9uQB65k4diZm5Ag1nnMTCPb0A2pTuhkrV0QCA2TSX5431AhEbVLyM8e0Aju282ECRyQACFFFLZbW5A6aKLLrrobUDSRRdddOltQLrooosu6m1Ao4suuujqbUCMLrroouttQHTRRRdd7G1AXXTRRRftbUBGF1100e1tQC666KKL7m1AF1100UXvbUCqVcx0CvBtQHAOny4i8W1A1KwwHLvybUCW2VvQcvNtQON7F2FO821AGbiM+azzbUB00UUXXfRtQF100UUX9W1A8LDE6oMCbkCezOJcAkFuQAS8x+c9gW5AnByeeMNIbkAX+ZbmqQduQF4uSrcgaHBAFKzyDf0yd0BBJhby1v59QHSuTpwWqHdANcXOm++ScEBddNFFF/1tQEYXXXTR/W1ALrrooov+bUAXXXTRRf9tQAAAAAAAAG5A6aKLLroAbkCRn//nTwZuQO6KZVjeNm5AzfEqn4a3bkAAJk8wVsduQCA11xdiR25A5wFAV1gMbkBGF1100QVuQC666KKLBm5AF1100UUHbkAAAAAAAAhuQOiiiy66CG5A0kUXXXQJbkC66KKLLgpuQKOLLrroCm5AyEySg7+7bkAcpTPFSvZwQJYd9uZJenJAEXpcAab4cECSs5vS0L9uQBdddNFFD25AAAAAAAAQbkDpoosuuhBuQNJFF110EW5Auuiiiy4SbkCjiy666BJuQIwuuuiiE25AdNFFF10UbkAl/Csb0VBwQHBGnvdKHXdANCtrCos2f0BSm3DiJUp5QHpS7eyFGXFACTnj0VdbbkDSRRdddBluQL1PWhfiJW5A96lWM0rHbkC9UfiogJ9wQPB6hWBnXnFA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LhJvQKOLLrroEm9AjC666KITb0B00UUXXRRvQF100UUXFW9ARhdddNEVb0AuuuiiixZvQFvx2/bsQG9AO1/yy6WncEBReRLpLWh0QEaxSjnegXZATIfkodJGc0A1S55j3vZwQIqaQlClBHBARHrCRiFBb0BddNFFFx1vQEYXXXTRHW9ALrroooseb0AXXXTRRR9vQAAAAAAAIG9A6KKLLrogb0DSRRdddCFvQLrooosuIm9Ao4suuugib0CMLrrooiNvQHTRRRddJG9AXXTRRRclb0BGF1100SVvQC666KKLJm9AF1100UUnb0AAAAAAAChvQOmiiy66KG9A0kUXXXQpb0C66KKLLipvQNAKNcx0XXBAZ0hyqB9HdUCze4dewvB8QG53VqpRrHlAXtQ2FqIKckD+f7wf0ZBvQBdddNFFL29AAAAAAAAwb0DpoosuujBvQNJFF110MW9Auuiiiy4yb0Cjiy666DJvQIwuuuiiM29AdNFFF100b0B9iMOBo8dvQFfgn5kKK3JAAAReVNAAd0DbPVw+zHx2QGwljHrqq3FAIJMgQ7qeb0DRRRdddDlvQLrooosuOm9Ao4suuug6b0CMLrroojtvQHTRRRddPG9AXXTRRRc9b0BGF1100T1vQC666KKLPm9AF1100UU/b0AAAAAAAEBvQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1702\"},\"selection_policy\":{\"id\":\"1701\"}},\"id\":\"1685\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"1648\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1651\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1689\"}]},\"id\":\"1704\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1701\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1658\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1675\"},\"group\":null,\"major_label_policy\":{\"id\":\"1676\"},\"ticker\":{\"id\":\"1649\"}},\"id\":\"1648\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1636\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1678\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1666\"},\"glyph\":{\"id\":\"1667\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1669\"},\"nonselection_glyph\":{\"id\":\"1668\"},\"view\":{\"id\":\"1671\"}},\"id\":\"1670\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1669\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1687\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1670\"}]},\"id\":\"1684\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1702\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1685\"}},\"id\":\"1690\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1675\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1666\"}},\"id\":\"1671\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1652\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1658\"}},\"id\":\"1654\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1672\",\"type\":\"Title\"},{\"attributes\":{\"tools\":[{\"id\":\"1652\"},{\"id\":\"1653\"},{\"id\":\"1654\"},{\"id\":\"1655\"},{\"id\":\"1656\"},{\"id\":\"1657\"}]},\"id\":\"1659\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1686\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1681\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1684\"},{\"id\":\"1704\"}]},\"id\":\"1683\",\"type\":\"Legend\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1681\"},\"selection_policy\":{\"id\":\"1680\"}},\"id\":\"1666\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"1635\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"0625d81c-5c9e-4b0c-9d1e-dafe216b9826\",\"root_ids\":[\"1635\"],\"roots\":{\"1635\":\"5fd82094-1f78-46fd-9933-e453cca27095\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -1209,14 +1209,14 @@ "output_type": "stream", "text": [ "The fit has been successful: True\n", - "The gooodness of fit (chi2) is: 31.613447982827537\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "The gooodness of fit (chi2) is: 31.613447982842985\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] } ], @@ -1247,7 +1247,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -1259,8 +1259,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"5ba8e780-a97d-4cf3-9566-eafdb3d18e2c\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1842\"}],\"center\":[{\"id\":\"1845\"},{\"id\":\"1849\"},{\"id\":\"1881\"}],\"height\":300,\"left\":[{\"id\":\"1846\"}],\"renderers\":[{\"id\":\"1868\"},{\"id\":\"1887\"},{\"id\":\"1907\"}],\"title\":{\"id\":\"1870\"},\"toolbar\":{\"id\":\"1857\"},\"width\":990,\"x_range\":{\"id\":\"1834\"},\"x_scale\":{\"id\":\"1838\"},\"y_range\":{\"id\":\"1836\"},\"y_scale\":{\"id\":\"1840\"}},\"id\":\"1833\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1864\"}},\"id\":\"1869\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1865\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1900\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1921\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"tools\":[{\"id\":\"1850\"},{\"id\":\"1851\"},{\"id\":\"1852\"},{\"id\":\"1853\"},{\"id\":\"1854\"},{\"id\":\"1855\"}]},\"id\":\"1857\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1899\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1922\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1838\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1903\"}},\"id\":\"1908\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1873\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1883\"},\"glyph\":{\"id\":\"1884\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1886\"},\"nonselection_glyph\":{\"id\":\"1885\"},\"view\":{\"id\":\"1888\"}},\"id\":\"1887\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1874\",\"type\":\"AllLabels\"},{\"attributes\":{\"label\":{\"value\":\"Imeas - Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1907\"}]},\"id\":\"1924\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1887\"}]},\"id\":\"1902\",\"type\":\"LegendItem\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1856\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1870\",\"type\":\"Title\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1884\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1882\"},{\"id\":\"1902\"},{\"id\":\"1924\"}]},\"id\":\"1881\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1876\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1879\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1905\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1850\",\"type\":\"PanTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1885\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1868\"}]},\"id\":\"1882\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1834\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1879\"},\"selection_policy\":{\"id\":\"1878\"}},\"id\":\"1864\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1878\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1864\"},\"glyph\":{\"id\":\"1865\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1867\"},\"nonselection_glyph\":{\"id\":\"1866\"},\"view\":{\"id\":\"1869\"}},\"id\":\"1868\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1842\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1845\",\"type\":\"Grid\"},{\"attributes\":{\"axis\":{\"id\":\"1846\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1849\",\"type\":\"Grid\"},{\"attributes\":{\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1904\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1873\"},\"group\":null,\"major_label_policy\":{\"id\":\"1874\"},\"ticker\":{\"id\":\"1847\"}},\"id\":\"1846\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1847\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1903\"},\"glyph\":{\"id\":\"1904\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1906\"},\"nonselection_glyph\":{\"id\":\"1905\"},\"view\":{\"id\":\"1908\"}},\"id\":\"1907\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1900\"},\"selection_policy\":{\"id\":\"1899\"}},\"id\":\"1883\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1883\"}},\"id\":\"1888\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1866\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1843\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1840\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1867\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1906\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1836\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1886\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1854\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1876\"},\"group\":null,\"major_label_policy\":{\"id\":\"1877\"},\"ticker\":{\"id\":\"1843\"}},\"id\":\"1842\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1851\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1877\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1853\",\"type\":\"SaveTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1856\"}},\"id\":\"1852\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1855\",\"type\":\"HelpTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1922\"},\"selection_policy\":{\"id\":\"1921\"}},\"id\":\"1903\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"1833\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"5ba8e780-a97d-4cf3-9566-eafdb3d18e2c\",\"root_ids\":[\"1833\"],\"roots\":{\"1833\":\"31641284-fee6-4b59-b2d9-fbb063243010\"}}];\n", + " const docs_json = {\"f55c1a10-114f-4738-b2d2-694f1cec9eb3\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1842\"}],\"center\":[{\"id\":\"1845\"},{\"id\":\"1849\"},{\"id\":\"1881\"}],\"height\":300,\"left\":[{\"id\":\"1846\"}],\"renderers\":[{\"id\":\"1868\"},{\"id\":\"1887\"},{\"id\":\"1907\"}],\"title\":{\"id\":\"1870\"},\"toolbar\":{\"id\":\"1857\"},\"width\":990,\"x_range\":{\"id\":\"1834\"},\"x_scale\":{\"id\":\"1838\"},\"y_range\":{\"id\":\"1836\"},\"y_scale\":{\"id\":\"1840\"}},\"id\":\"1833\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1864\"},\"glyph\":{\"id\":\"1865\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1867\"},\"nonselection_glyph\":{\"id\":\"1866\"},\"view\":{\"id\":\"1869\"}},\"id\":\"1868\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1846\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1849\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1883\"}},\"id\":\"1888\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1853\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1843\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1876\"},\"group\":null,\"major_label_policy\":{\"id\":\"1877\"},\"ticker\":{\"id\":\"1843\"}},\"id\":\"1842\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1900\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1866\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1856\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1886\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1905\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1850\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1847\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1879\"},\"selection_policy\":{\"id\":\"1878\"}},\"id\":\"1864\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1864\"}},\"id\":\"1869\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1867\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1922\"},\"selection_policy\":{\"id\":\"1921\"}},\"id\":\"1903\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1906\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1834\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1903\"},\"glyph\":{\"id\":\"1904\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1906\"},\"nonselection_glyph\":{\"id\":\"1905\"},\"view\":{\"id\":\"1908\"}},\"id\":\"1907\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"tools\":[{\"id\":\"1850\"},{\"id\":\"1851\"},{\"id\":\"1852\"},{\"id\":\"1853\"},{\"id\":\"1854\"},{\"id\":\"1855\"}]},\"id\":\"1857\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1840\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1900\"},\"selection_policy\":{\"id\":\"1899\"}},\"id\":\"1883\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1855\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1877\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1904\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1876\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1873\"},\"group\":null,\"major_label_policy\":{\"id\":\"1874\"},\"ticker\":{\"id\":\"1847\"}},\"id\":\"1846\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1884\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1899\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1921\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"1903\"}},\"id\":\"1908\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1851\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"Imeas - Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1907\"}]},\"id\":\"1924\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"1842\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1845\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1868\"}]},\"id\":\"1882\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1882\"},{\"id\":\"1902\"},{\"id\":\"1924\"}]},\"id\":\"1881\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1874\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1922\",\"type\":\"Selection\"},{\"attributes\":{\"overlay\":{\"id\":\"1856\"}},\"id\":\"1852\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1838\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1854\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1873\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1887\"}]},\"id\":\"1902\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1879\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1883\"},\"glyph\":{\"id\":\"1884\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1886\"},\"nonselection_glyph\":{\"id\":\"1885\"},\"view\":{\"id\":\"1888\"}},\"id\":\"1887\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1865\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1885\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1878\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1870\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1836\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"1833\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"f55c1a10-114f-4738-b2d2-694f1cec9eb3\",\"root_ids\":[\"1833\"],\"roots\":{\"1833\":\"5953964f-8f9e-4ff2-bd6f-0b6b78953bba\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -1376,7 +1376,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -1388,8 +1388,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"c5199493-7411-4c87-9017-6491e687ade1\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2087\"}],\"center\":[{\"id\":\"2090\"},{\"id\":\"2094\"},{\"id\":\"2126\"}],\"height\":300,\"left\":[{\"id\":\"2091\"}],\"renderers\":[{\"id\":\"2113\"},{\"id\":\"2132\"},{\"id\":\"2152\"}],\"title\":{\"id\":\"2115\"},\"toolbar\":{\"id\":\"2102\"},\"width\":990,\"x_range\":{\"id\":\"2079\"},\"x_scale\":{\"id\":\"2083\"},\"y_range\":{\"id\":\"2081\"},\"y_scale\":{\"id\":\"2085\"}},\"id\":\"2078\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"2101\"}},\"id\":\"2097\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2127\"},{\"id\":\"2147\"},{\"id\":\"2169\"}]},\"id\":\"2126\",\"type\":\"Legend\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2115\",\"type\":\"Title\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2131\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2129\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2149\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2148\"},\"glyph\":{\"id\":\"2149\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2151\"},\"nonselection_glyph\":{\"id\":\"2150\"},\"view\":{\"id\":\"2153\"}},\"id\":\"2152\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"2113\"}]},\"id\":\"2127\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"2109\"}},\"id\":\"2114\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"2148\"}},\"id\":\"2153\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2151\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2099\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2085\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2088\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2145\"},\"selection_policy\":{\"id\":\"2144\"}},\"id\":\"2128\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2118\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2083\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2119\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"2095\"},{\"id\":\"2096\"},{\"id\":\"2097\"},{\"id\":\"2098\"},{\"id\":\"2099\"},{\"id\":\"2100\"}]},\"id\":\"2102\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2166\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2098\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis\":{\"id\":\"2091\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2094\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2124\"},\"selection_policy\":{\"id\":\"2123\"}},\"id\":\"2109\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2081\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2121\"},\"group\":null,\"major_label_policy\":{\"id\":\"2122\"},\"ticker\":{\"id\":\"2088\"}},\"id\":\"2087\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2130\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2109\"},\"glyph\":{\"id\":\"2110\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2112\"},\"nonselection_glyph\":{\"id\":\"2111\"},\"view\":{\"id\":\"2114\"}},\"id\":\"2113\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"2132\"}]},\"id\":\"2147\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2128\"},\"glyph\":{\"id\":\"2129\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2131\"},\"nonselection_glyph\":{\"id\":\"2130\"},\"view\":{\"id\":\"2133\"}},\"id\":\"2132\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2092\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2095\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2145\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2150\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2121\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2096\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2167\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2101\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2112\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2152\"}]},\"id\":\"2169\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2118\"},\"group\":null,\"major_label_policy\":{\"id\":\"2119\"},\"ticker\":{\"id\":\"2092\"}},\"id\":\"2091\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"2128\"}},\"id\":\"2133\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2167\"},\"selection_policy\":{\"id\":\"2166\"}},\"id\":\"2148\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2122\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2123\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2144\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2111\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2100\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2124\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2079\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2110\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"2087\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2090\",\"type\":\"Grid\"}],\"root_ids\":[\"2078\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"c5199493-7411-4c87-9017-6491e687ade1\",\"root_ids\":[\"2078\"],\"roots\":{\"2078\":\"87255524-ac13-4917-8084-4df6f2666f9b\"}}];\n", + " const docs_json = {\"6b4e4b0a-67b3-4fd2-b049-26ed972d91a0\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2087\"}],\"center\":[{\"id\":\"2090\"},{\"id\":\"2094\"},{\"id\":\"2126\"}],\"height\":300,\"left\":[{\"id\":\"2091\"}],\"renderers\":[{\"id\":\"2113\"},{\"id\":\"2132\"},{\"id\":\"2152\"}],\"title\":{\"id\":\"2115\"},\"toolbar\":{\"id\":\"2102\"},\"width\":990,\"x_range\":{\"id\":\"2079\"},\"x_scale\":{\"id\":\"2083\"},\"y_range\":{\"id\":\"2081\"},\"y_scale\":{\"id\":\"2085\"}},\"id\":\"2078\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2121\"},\"group\":null,\"major_label_policy\":{\"id\":\"2122\"},\"ticker\":{\"id\":\"2088\"}},\"id\":\"2087\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2111\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"2109\"}},\"id\":\"2114\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"2148\"}},\"id\":\"2153\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2109\"},\"glyph\":{\"id\":\"2110\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2112\"},\"nonselection_glyph\":{\"id\":\"2111\"},\"view\":{\"id\":\"2114\"}},\"id\":\"2113\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2098\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2118\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2118\"},\"group\":null,\"major_label_policy\":{\"id\":\"2119\"},\"ticker\":{\"id\":\"2092\"}},\"id\":\"2091\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2112\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2092\",\"type\":\"BasicTicker\"},{\"attributes\":{\"tools\":[{\"id\":\"2095\"},{\"id\":\"2096\"},{\"id\":\"2097\"},{\"id\":\"2098\"},{\"id\":\"2099\"},{\"id\":\"2100\"}]},\"id\":\"2102\",\"type\":\"Toolbar\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2152\"}]},\"id\":\"2169\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2123\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2124\"},\"selection_policy\":{\"id\":\"2123\"}},\"id\":\"2109\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2095\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2085\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2129\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2148\"},\"glyph\":{\"id\":\"2149\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2151\"},\"nonselection_glyph\":{\"id\":\"2150\"},\"view\":{\"id\":\"2153\"}},\"id\":\"2152\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2083\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2110\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2096\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2119\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2145\"},\"selection_policy\":{\"id\":\"2144\"}},\"id\":\"2128\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2150\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2151\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2079\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2099\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2115\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2166\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2167\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2101\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2128\"},\"glyph\":{\"id\":\"2129\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2131\"},\"nonselection_glyph\":{\"id\":\"2130\"},\"view\":{\"id\":\"2133\"}},\"id\":\"2132\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2145\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2127\"},{\"id\":\"2147\"},{\"id\":\"2169\"}]},\"id\":\"2126\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"2087\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2090\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"2128\"}},\"id\":\"2133\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2149\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2088\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2122\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2167\"},\"selection_policy\":{\"id\":\"2166\"}},\"id\":\"2148\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2131\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2130\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2121\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"2132\"}]},\"id\":\"2147\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2081\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"2101\"}},\"id\":\"2097\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"2113\"}]},\"id\":\"2127\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2144\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2100\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2124\",\"type\":\"Selection\"},{\"attributes\":{\"axis\":{\"id\":\"2091\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2094\",\"type\":\"Grid\"}],\"root_ids\":[\"2078\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"6b4e4b0a-67b3-4fd2-b049-26ed972d91a0\",\"root_ids\":[\"2078\"],\"roots\":{\"2078\":\"afa610e1-1713-4b05-a406-ad002197e155\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -1459,14 +1459,14 @@ "output_type": "stream", "text": [ "The fit has been successful: True\n", - "The gooodness of fit (chi2) is: 31.740148464580013\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "The gooodness of fit (chi2) is: 31.728826801731252\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] } ], @@ -1492,7 +1492,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1504,7 +1504,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -1516,8 +1516,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"f69ec89d-0b35-4726-befc-b9527bb9e6d6\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2347\"}],\"center\":[{\"id\":\"2350\"},{\"id\":\"2354\"},{\"id\":\"2386\"}],\"height\":300,\"left\":[{\"id\":\"2351\"}],\"renderers\":[{\"id\":\"2373\"},{\"id\":\"2392\"},{\"id\":\"2412\"},{\"id\":\"2434\"}],\"title\":{\"id\":\"2375\"},\"toolbar\":{\"id\":\"2362\"},\"width\":990,\"x_range\":{\"id\":\"2339\"},\"x_scale\":{\"id\":\"2343\"},\"y_range\":{\"id\":\"2341\"},\"y_scale\":{\"id\":\"2345\"}},\"id\":\"2338\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2381\"},\"group\":null,\"major_label_policy\":{\"id\":\"2382\"},\"ticker\":{\"id\":\"2348\"}},\"id\":\"2347\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2426\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2410\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2355\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2358\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2341\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2391\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"2355\"},{\"id\":\"2356\"},{\"id\":\"2357\"},{\"id\":\"2358\"},{\"id\":\"2359\"},{\"id\":\"2360\"}]},\"id\":\"2362\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"2430\"}},\"id\":\"2435\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2381\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"2373\"}]},\"id\":\"2387\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2387\"},{\"id\":\"2407\"},{\"id\":\"2429\"},{\"id\":\"2453\"}]},\"id\":\"2386\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2389\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"2392\"}]},\"id\":\"2407\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2378\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2375\",\"type\":\"Title\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2427\"},\"selection_policy\":{\"id\":\"2426\"}},\"id\":\"2408\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2343\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"2369\"}},\"id\":\"2374\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2370\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2356\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2390\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2409\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2427\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2431\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2433\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2361\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2360\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2359\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2408\"},\"glyph\":{\"id\":\"2409\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2411\"},\"nonselection_glyph\":{\"id\":\"2410\"},\"view\":{\"id\":\"2413\"}},\"id\":\"2412\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2450\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2430\"},\"glyph\":{\"id\":\"2431\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2433\"},\"nonselection_glyph\":{\"id\":\"2432\"},\"view\":{\"id\":\"2435\"}},\"id\":\"2434\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2372\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2378\"},\"group\":null,\"major_label_policy\":{\"id\":\"2379\"},\"ticker\":{\"id\":\"2352\"}},\"id\":\"2351\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"2408\"}},\"id\":\"2413\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2405\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2369\"},\"glyph\":{\"id\":\"2370\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2372\"},\"nonselection_glyph\":{\"id\":\"2371\"},\"view\":{\"id\":\"2374\"}},\"id\":\"2373\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2371\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"2388\"}},\"id\":\"2393\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2352\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2451\"},\"selection_policy\":{\"id\":\"2450\"}},\"id\":\"2430\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy) - Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2434\"}]},\"id\":\"2453\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2388\"},\"glyph\":{\"id\":\"2389\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2391\"},\"nonselection_glyph\":{\"id\":\"2390\"},\"view\":{\"id\":\"2393\"}},\"id\":\"2392\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2405\"},\"selection_policy\":{\"id\":\"2404\"}},\"id\":\"2388\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2451\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2411\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2412\"}]},\"id\":\"2429\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2384\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2345\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2382\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2404\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2339\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAAAKBpQAAAAAAAwGhAAAAAAAAAaUAAAAAAAOBoQAAAAAAAgGZAAAAAAABgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAACgaEAAAAAAAIBoQAAAAAAAQGhAAAAAAACgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAABgZ0AAAAAAAOBnQAAAAAAAoGlAAAAAAAAAaUAAAAAAAMBoQAAAAAAAAGlAAAAAAACAaUAAAAAAAIBoQAAAAAAAYGhAAAAAAABAaEAAAAAAAABpQAAAAAAAwGhAAAAAAAAgaUAAAAAAAABqQAAAAAAAoGlAAAAAAABgakAAAAAAAGBqQAAAAAAAgGtAAAAAAACAa0AAAAAAAIBqQAAAAAAAAGpAAAAAAADAakAAAAAAAEBsQAAAAAAAYG1AAAAAAAAgbUAAAAAAAKBtQAAAAAAAQG5AAAAAAABAbkAAAAAAAKBuQAAAAAAA4G1AAAAAAABAbEAAAAAAAABtQAAAAAAAwG1AAAAAAABAbEAAAAAAAEBrQAAAAAAAQGtAAAAAAADAakAAAAAAAKBpQAAAAAAAAGlAAAAAAAAgaEAAAAAAAGBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAOBpQAAAAAAA4GpAAAAAAADgaUAAAAAAAEBrQAAAAAAAQGtAAAAAAACAa0AAAAAAAIBrQAAAAAAAoGxAAAAAAACAbUAAAAAAAMBvQAAAAAAAgHBAAAAAAACAcUAAAAAAABByQAAAAAAAEHJAAAAAAADwckAAAAAAAOByQAAAAAAAkHJAAAAAAACQcUAAAAAAAGBxQAAAAAAAgHFAAAAAAACQcEAAAAAAACBwQAAAAAAAYG5AAAAAAAAAbkAAAAAAAABtQAAAAAAA4GxAAAAAAAAgbUAAAAAAAMBuQAAAAAAAAG9AAAAAAAAgb0AAAAAAAABwQAAAAAAAAHFAAAAAAAAQckAAAAAAAHBzQAAAAAAAQHVAAAAAAACwdkAAAAAAAJB4QAAAAAAAgHtAAAAAAACgfUAAAAAAACB+QAAAAAAAwH5AAAAAAADAf0AAAAAAAOB+QAAAAAAAsH1AAAAAAABwe0AAAAAAANB5QAAAAAAAAHdAAAAAAACwdEAAAAAAALByQAAAAAAA4HFAAAAAAABgcEAAAAAAACBuQAAAAAAAwG1AAAAAAACAb0AAAAAAALBwQAAAAAAAQHFAAAAAAABgcUAAAAAAAMByQAAAAAAAUHRAAAAAAAAAdUAAAAAAAHB2QAAAAAAAUHlAAAAAAACgfEAAAAAAAFB/QAAAAAAAoIFAAAAAAAAAhEAAAAAAAHiGQAAAAAAAeIhAAAAAAAAoikAAAAAAAJiKQAAAAAAAEItAAAAAAADgiUAAAAAAANiHQAAAAAAAyIVAAAAAAADQg0AAAAAAAOiAQAAAAAAAEH1AAAAAAABweEAAAAAAAPB1QAAAAAAA0HJAAAAAAADAcUAAAAAAAEBwQAAAAAAAAG9AAAAAAAAQcEAAAAAAAEBuQAAAAAAAwG5AAAAAAABwcEAAAAAAAPBwQAAAAAAAkHFAAAAAAADgckAAAAAAAFBzQAAAAAAA8HRAAAAAAABgdUAAAAAAAJB1QAAAAAAAQHZAAAAAAADwdUAAAAAAAFB1QAAAAAAA4HRAAAAAAAAQdEAAAAAAAOBxQAAAAAAAwHBAAAAAAAAAcEAAAAAAAMBtQAAAAAAAoGxAAAAAAABAa0AAAAAAAOBrQAAAAAAAAGtAAAAAAABgaUAAAAAAAGBpQAAAAAAAQGhAAAAAAACgaUAAAAAAAIBoQAAAAAAAIGhAAAAAAADAaUAAAAAAACBpQAAAAAAAIGlAAAAAAAAgaUAAAAAAAABpQAAAAAAAQGhAAAAAAACAaEAAAAAAAGBpQAAAAAAAYGhAAAAAAACAaEAAAAAAAGBqQAAAAAAAAGtAAAAAAADgaUAAAAAAAOBqQAAAAAAAoGtAAAAAAACgbUAAAAAAAABvQAAAAAAAUHBAAAAAAABwcUAAAAAAAPBzQAAAAAAAEHVAAAAAAADAdkAAAAAAAHB6QAAAAAAAkH5AAAAAAABogUAAAAAAALCDQAAAAAAAyIZAAAAAAACwiUAAAAAAAHiNQAAAAAAAjJBAAAAAAACwkkAAAAAAAEyTQAAAAAAAEJNAAAAAAADkkkAAAAAAAKCRQAAAAAAASI9AAAAAAAAAi0AAAAAAAMiGQAAAAAAAyIJAAAAAAAAAf0AAAAAAACB6QAAAAAAAMHZAAAAAAACQc0AAAAAAAHBwQAAAAAAAwG5AAAAAAABAbEAAAAAAAMBqQAAAAAAAwGtAAAAAAADAa0AAAAAAAGBqQAAAAAAAYGpAAAAAAABAaUAAAAAAAMBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBoQAAAAAAAIGlAAAAAAABgaUAAAAAAAGBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAIBoQAAAAAAAwGlAAAAAAABAakAAAAAAAKBoQAAAAAAAgGlAAAAAAAAAaUAAAAAAAKBpQAAAAAAAgGhAAAAAAABgaEAAAAAAAKBpQAAAAAAAgGlAAAAAAAAAaUAAAAAAAGBpQAAAAAAAAGpAAAAAAADgaUAAAAAAAEBpQAAAAAAAYGlAAAAAAADAaEAAAAAAAIBpQAAAAAAAQGpAAAAAAAAAa0AAAAAAAEBqQAAAAAAAoGxAAAAAAADgbUAAAAAAAOBuQAAAAAAAYHFAAAAAAADgckAAAAAAAEB0QAAAAAAAMHdAAAAAAABAekAAAAAAABB9QAAAAAAA0IBAAAAAAACwg0AAAAAAABiHQAAAAAAAmIpAAAAAAACAjkAAAAAAANCQQAAAAAAAJJJAAAAAAAAYk0AAAAAAACyTQAAAAAAAjJJAAAAAAAAgkUAAAAAAACCOQAAAAAAACIpAAAAAAAAghkAAAAAAAFiCQAAAAAAAAIBAAAAAAABAe0AAAAAAAHB4QAAAAAAAAHhAAAAAAAAgd0AAAAAAAHB4QAAAAAAAMHpAAAAAAAAAfEAAAAAAAKB+QAAAAAAAuIFAAAAAAACQg0AAAAAAAHiFQAAAAAAA+IZAAAAAAABgiEAAAAAAAHCIQAAAAAAASIdAAAAAAACIhkAAAAAAALCEQAAAAAAAmIJAAAAAAAB4gEAAAAAAAOB7QAAAAAAAkHhAAAAAAADwdEAAAAAAANByQAAAAAAAQHFAAAAAAABgb0AAAAAAAEBuQAAAAAAAoGxAAAAAAAAgakAAAAAAAOBqQAAAAAAAQGtAAAAAAADAakAAAAAAACBqQAAAAAAAAGpAAAAAAACAakAAAAAAAEBqQAAAAAAAIGpAAAAAAABAakAAAAAAAKBpQAAAAAAAIGpAAAAAAABgakAAAAAAAGBqQAAAAAAAAGtAAAAAAACgaUAAAAAAAIBpQAAAAAAAQGlAAAAAAAAgaUAAAAAAAABpQAAAAAAA4GlAAAAAAACgaUAAAAAAAEBpQAAAAAAAIGpAAAAAAABAaUAAAAAAAGBpQAAAAAAAwGlAAAAAAADAaUAAAAAAAABpQAAAAAAAQGhAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGlAAAAAAABAakAAAAAAAOBpQAAAAAAAoGlAAAAAAABAakAAAAAAAIBpQAAAAAAAYGlAAAAAAABAaUAAAAAAAKBpQAAAAAAAIGlAAAAAAAAgaUAAAAAAAOBpQAAAAAAAoGhAAAAAAADAaEAAAAAAAGBpQAAAAAAAIGpAAAAAAAAgakAAAAAAAABqQAAAAAAAgGlAAAAAAAAgakAAAAAAAOBoQAAAAAAAgGlAAAAAAADAaUAAAAAAACBpQAAAAAAAoGlAAAAAAABAaUAAAAAAAIBpQAAAAAAAwGhAAAAAAADAaEAAAAAAAKBqQAAAAAAAQGpAAAAAAACAakAAAAAAAMBqQAAAAAAA4GpAAAAAAAAga0AAAAAAAEBqQAAAAAAAwGpAAAAAAADgakAAAAAAAOBqQAAAAAAA4GpAAAAAAAAga0AAAAAAAMBrQAAAAAAA4GxAAAAAAADgbkAAAAAAAIBvQAAAAAAAEHFAAAAAAAAAc0AAAAAAAMB0QAAAAAAA4HZAAAAAAACAeUAAAAAAAPB8QAAAAAAAoIBAAAAAAABYg0AAAAAAAPCGQAAAAAAA4IlAAAAAAACAjUAAAAAAAFiPQAAAAAAAfJBAAAAAAAC4kEAAAAAAANCPQAAAAAAAgI1AAAAAAAAIikAAAAAAAKiGQAAAAAAAyINAAAAAAACwf0AAAAAAANB7QAAAAAAAsHdAAAAAAACwdUAAAAAAAMBzQAAAAAAAoHFAAAAAAACwcEAAAAAAANBwQAAAAAAAkHFAAAAAAAAAckAAAAAAAMByQAAAAAAAcHRAAAAAAACgdUAAAAAAAMB3QAAAAAAAAHlAAAAAAADgekAAAAAAAFB8QAAAAAAAsHxAAAAAAAAwfEAAAAAAALB6QAAAAAAAIHlAAAAAAABwd0AAAAAAAIB1QAAAAAAAUHNAAAAAAABQcUAAAAAAAJBwQAAAAAAAwG5AAAAAAADAbkAAAAAAAMBsQAAAAAAA4GtAAAAAAABgbEAAAAAAACBsQAAAAAAAIGtAAAAAAAAga0AAAAAAAOBrQAAAAAAA4GtAAAAAAACAa0AAAAAAAOBrQAAAAAAAQGxAAAAAAAAAb0AAAAAAACBwQAAAAAAAIHFAAAAAAACQckAAAAAAAEB0QAAAAAAAMHZAAAAAAACQeEAAAAAAAKB8QAAAAAAAgIBAAAAAAABogkAAAAAAAICFQAAAAAAAaIhAAAAAAABAikAAAAAAAGCLQAAAAAAAUItAAAAAAAAAikAAAAAAAOiHQAAAAAAAUIVAAAAAAAAog0AAAAAAAGCAQAAAAAAAcHxAAAAAAACAeUAAAAAAAAB4QAAAAAAA4HZAAAAAAABwd0AAAAAAAIB4QAAAAAAAoHpAAAAAAABgfUAAAAAAADiAQAAAAAAAYIJAAAAAAAD4g0AAAAAAAEiFQAAAAAAAAIZAAAAAAACohUAAAAAAAFCEQAAAAAAAwIJAAAAAAADggEAAAAAAAOB9QAAAAAAAwHlAAAAAAACAd0AAAAAAAJB1QAAAAAAAoHRAAAAAAAAQdUAAAAAAAOB1QAAAAAAA8HdAAAAAAACgekAAAAAAANB+QAAAAAAA2IFAAAAAAAAghUAAAAAAABiJQAAAAAAAwIxAAAAAAAC8kEAAAAAAAHySQAAAAAAAfJNAAAAAAACck0AAAAAAAIyTQAAAAAAAfJJAAAAAAACwkEAAAAAAAIiNQAAAAAAA6IpAAAAAAABYiUAAAAAAAGiJQAAAAAAAQItAAAAAAABIjkAAAAAAAICRQAAAAAAAdJRAAAAAAADcl0AAAAAAAKiaQAAAAAAAAJ1AAAAAAACAnUAAAAAAALScQAAAAAAAxJpAAAAAAABwl0AAAAAAACSUQAAAAAAAPJFAAAAAAABAjEAAAAAAAGiHQAAAAAAAmINAAAAAAADAgUAAAAAAADiBQAAAAAAAgIFAAAAAAABQgkAAAAAAANCDQAAAAAAAmIVAAAAAAAB4h0AAAAAAAPiIQAAAAAAAwIhAAAAAAACgiUAAAAAAADCIQAAAAAAAAIdAAAAAAABAhUAAAAAAAJiDQAAAAAAAkIFAAAAAAAAQgEAAAAAAALB8QAAAAAAAgHpAAAAAAACgdkAAAAAAANB0QAAAAAAA4HNAAAAAAADAckAAAAAAAPBxQAAAAAAAkHBAAAAAAACgcEAAAAAAAGBwQAAAAAAAcHBAAAAAAADgb0AAAAAAAOBwQAAAAAAAYHFAAAAAAAAQckAAAAAAANBzQAAAAAAAcHVAAAAAAAAAeUAAAAAAAEB9QAAAAAAAiIFAAAAAAAC4hUAAAAAAAEiLQAAAAAAAMJFAAAAAAABwlUAAAAAAAPCZQAAAAAAAiJ5AAAAAAABgoUAAAAAAAMCiQAAAAAAANqNAAAAAAAAGo0AAAAAAAIqhQAAAAAAACJ9AAAAAAAAcmkAAAAAAADiVQAAAAAAA+JBAAAAAAAAgi0AAAAAAAFCFQAAAAAAAEIJAAAAAAABIgEAAAAAAAACAQAAAAAAAyIBAAAAAAADAgkAAAAAAAACGQAAAAAAAuIpAAAAAAAAgkEAAAAAAAECTQAAAAAAA6JZAAAAAAAB0mkAAAAAAACidQAAAAAAAuJ5AAAAAAACgn0AAAAAAAICfQAAAAAAA2JxAAAAAAAAMmkAAAAAAAFSWQAAAAAAAbJJAAAAAAACwjUAAAAAAANiHQAAAAAAAuIJAAAAAAABAfkAAAAAAAEB5QAAAAAAA8HVAAAAAAAAAc0AAAAAAAMBxQAAAAAAAEHFAAAAAAAAwcEAAAAAAAGBvQAAAAAAAYG9AAAAAAACAb0AAAAAAAKBuQAAAAAAAMHBAAAAAAABAb0AAAAAAAKBvQAAAAAAAAHBAAAAAAACAcEAAAAAAANBxQAAAAAAA0HJAAAAAAACgdUAAAAAAAGB4QAAAAAAAoHxAAAAAAACAgEAAAAAAAICDQAAAAAAA6IZAAAAAAADoiUAAAAAAAKCMQAAAAAAA4I5AAAAAAAAQj0AAAAAAAAiNQAAAAAAAWIpAAAAAAAAwh0AAAAAAAPCDQAAAAAAAeIBAAAAAAAAge0AAAAAAAJB3QAAAAAAAAHRAAAAAAACgcUAAAAAAABBxQAAAAAAAAHBAAAAAAABgbkAAAAAAAABuQAAAAAAAAG5AAAAAAADAbEAAAAAAAIBrQAAAAAAAwGxAAAAAAABgbEAAAAAAAABsQAAAAAAAYGtAAAAAAABgbEAAAAAAAGBsQAAAAAAAAGxAAAAAAADAa0AAAAAAAOBrQAAAAAAAIGtAAAAAAACgakAAAAAAAABrQAAAAAAAYGtAAAAAAABga0AAAAAAAEBrQAAAAAAAgGtAAAAAAACAa0AAAAAAAIBrQAAAAAAA4GtAAAAAAAAgbUAAAAAAAKBtQAAAAAAAIG9AAAAAAAAgcEAAAAAAAFBwQAAAAAAAsHFAAAAAAAAAc0AAAAAAAEB0QAAAAAAAsHVAAAAAAAAQdkAAAAAAAHB2QAAAAAAAsHZAAAAAAAAAdkAAAAAAAFB1QAAAAAAAoHRAAAAAAABAc0AAAAAAADByQAAAAAAA8HBAAAAAAADAb0AAAAAAAKBuQAAAAAAAoG5AAAAAAADgbUAAAAAAAIBsQAAAAAAAIGtAAAAAAAAga0AAAAAAAEBrQAAAAAAA4GtAAAAAAADgaUAAAAAAAEBrQAAAAAAAwGtAAAAAAADgakAAAAAAAEBqQAAAAAAAAGtAAAAAAACgakAAAAAAAIBqQAAAAAAA4GpAAAAAAACAakAAAAAAAMBqQAAAAAAAYGpAAAAAAADAakAAAAAAACBrQAAAAAAAoGlAAAAAAADgaUAAAAAAAKBqQAAAAAAAAGpAAAAAAABgakAAAAAAAKBpQAAAAAAAwGpAAAAAAACgakAAAAAAAIBqQAAAAAAAgGpAAAAAAACgakAAAAAAAOBpQAAAAAAAYGlAAAAAAABgakAAAAAAAGBqQAAAAAAAwGpAAAAAAADAakAAAAAAAOBpQAAAAAAAYGlAAAAAAACAakAAAAAAAIBqQAAAAAAAwGpAAAAAAACgakAAAAAAAEBpQAAAAAAAQGpAAAAAAABgakAAAAAAAGBqQAAAAAAAwGpAAAAAAACga0AAAAAAACBrQAAAAAAAgGpAAAAAAADAakAAAAAAAGBrQAAAAAAA4GtAAAAAAAAgbEAAAAAAAGBsQAAAAAAAYG1AAAAAAAAAbkAAAAAAAGBuQAAAAAAAgG9AAAAAAAAgb0AAAAAAACBvQAAAAAAA4G9AAAAAAABgcEAAAAAAAKBxQAAAAAAAQHNAAAAAAADwdUAAAAAAAOB4QAAAAAAAYH1AAAAAAABogEAAAAAAAKCCQAAAAAAAMIRAAAAAAABIhUAAAAAAAMiEQAAAAAAAOINAAAAAAACYgUAAAAAAAEB+QAAAAAAAUHpAAAAAAADAdkAAAAAAANBzQAAAAAAAEHJAAAAAAABQcEAAAAAAAKBuQAAAAAAAIG1AAAAAAACAbEAAAAAAAGBrQAAAAAAAYGtAAAAAAAAga0AAAAAAAABrQAAAAAAAoGtAAAAAAADgakAAAAAAAOBqQAAAAAAAQGpAAAAAAACAakAAAAAAAIBqQAAAAAAAgGlAAAAAAAAgakAAAAAAAMBpQAAAAAAAAGtAAAAAAADgaUAAAAAAAMBqQAAAAAAA4GlAAAAAAAAgakAAAAAAAEBrQAAAAAAA4GpAAAAAAADAa0AAAAAAAEBsQAAAAAAAwGxAAAAAAADgbUAAAAAAACBvQAAAAAAAcHBAAAAAAAAwcUAAAAAAAEByQAAAAAAA0HNAAAAAAAAwdEAAAAAAAFB1QAAAAAAA4HVAAAAAAACgdEAAAAAAAAB0QAAAAAAAMHNAAAAAAADAcUAAAAAAADBxQAAAAAAAkHBAAAAAAADQcEAAAAAAADBxQAAAAAAAQHJAAAAAAABwc0AAAAAAACB1QAAAAAAAMHhAAAAAAADQeUAAAAAAAPB8QAAAAAAA4H9AAAAAAACwgEAAAAAAAHiBQAAAAAAA2IBAAAAAAACogEAAAAAAAEB/QAAAAAAAcH1AAAAAAABwfEAAAAAAAKB5QAAAAAAAUHdAAAAAAABgdUAAAAAAADBzQAAAAAAAAHJAAAAAAADgcUAAAAAAAJBxQAAAAAAAQHJAAAAAAAAwckAAAAAAAIBzQAAAAAAAYHRAAAAAAAAAdUAAAAAAAKB1QAAAAAAAUHVAAAAAAABwdEAAAAAAABBzQAAAAAAAUHFAAAAAAACwcEAAAAAAACBvQAAAAAAAoGxAAAAAAACga0AAAAAAAIBrQAAAAAAAIGtAAAAAAABgakAAAAAAAIBpQAAAAAAAYGlAAAAAAACAa0AAAAAAACBrQAAAAAAAIGtAAAAAAADAakAAAAAAAKBpQAAAAAAAoGlAAAAAAABgakAAAAAAAMBpQAAAAAAAAGpAAAAAAAAgaUAAAAAAAABqQAAAAAAAwGpAAAAAAACAakAAAAAAAMBpQAAAAAAAAGtAAAAAAABga0AAAAAAAOBqQAAAAAAAIGtAAAAAAABgakAAAAAAAMBqQAAAAAAA4GpAAAAAAAAAbEAAAAAAACBrQAAAAAAA4GpAAAAAAABAa0AAAAAAAEBrQAAAAAAAgGxAAAAAAABgbEAAAAAAAIBsQAAAAAAAIGxAAAAAAABga0AAAAAAAABrQAAAAAAAYGtAAAAAAABAa0AAAAAAAMBqQAAAAAAAgGpAAAAAAACga0AAAAAAAMBqQAAAAAAAAGpAAAAAAACAaUAAAAAAACBqQAAAAAAAIGpAAAAAAAAAakAAAAAAAIBqQAAAAAAAoGpAAAAAAABAa0AAAAAAAIBqQAAAAAAAoGlAAAAAAADgaUAAAAAAAIBpQAAAAAAAwGlAAAAAAABgakAAAAAAAABrQAAAAAAAwGpAAAAAAABAakAAAAAAAGBrQAAAAAAAwGtAAAAAAAAAbEAAAAAAAOBsQAAAAAAAYGxAAAAAAACgbUAAAAAAAGBtQAAAAAAAwG1AAAAAAACgbkAAAAAAAEBuQAAAAAAAAG9AAAAAAADAbkAAAAAAAGBuQAAAAAAAoG9AAAAAAAAwcEAAAAAAAGBxQAAAAAAAkHFAAAAAAACQckAAAAAAAGBzQAAAAAAAQHRAAAAAAAAgdEAAAAAAAHBzQAAAAAAAcHJAAAAAAACQcUAAAAAAADBwQAAAAAAAQG9AAAAAAADgbUAAAAAAACBtQAAAAAAAYGxAAAAAAABAbEAAAAAAAOBrQAAAAAAAYGpAAAAAAAAgakAAAAAAACBrQAAAAAAAwGpAAAAAAACgakAAAAAAACBrQAAAAAAAgGtAAAAAAABAakAAAAAAACBqQAAAAAAA4GpAAAAAAABAa0AAAAAAAOBqQAAAAAAAIGtAAAAAAACga0AAAAAAACBrQAAAAAAAYGtAAAAAAACAa0AAAAAAAIBsQAAAAAAAoGxAAAAAAADAbEAAAAAAAEBtQAAAAAAAYG9AAAAAAABQcEAAAAAAAAByQAAAAAAAkHNAAAAAAACgdkAAAAAAAIB6QAAAAAAAYIBAAAAAAAAwhEAAAAAAAGiIQAAAAAAAwIxAAAAAAAAAkEAAAAAAAICRQAAAAAAAjJJAAAAAAACMkkAAAAAAADiSQAAAAAAAaJFAAAAAAABQkEAAAAAAAPiOQAAAAAAA+IxAAAAAAAC4iUAAAAAAAGiGQAAAAAAAWINAAAAAAABAgEAAAAAAAFB6QAAAAAAAEHZAAAAAAABAc0AAAAAAABBxQAAAAAAAAHBAAAAAAACgbkAAAAAAAEBtQAAAAAAAwGxAAAAAAAAAbEAAAAAAAABtQAAAAAAAQGxAAAAAAADAa0AAAAAAAMBrQAAAAAAAYGxAAAAAAAAgbEAAAAAAAEBsQAAAAAAAYGxAAAAAAACgbEAAAAAAAGBtQAAAAAAAIG1AAAAAAABgbkAAAAAAAMBtQAAAAAAAoG1AAAAAAACAbUAAAAAAAABtQAAAAAAA4GxAAAAAAABgbEAAAAAAACBsQAAAAAAAgGtAAAAAAABAa0AAAAAAAOBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAACBsQAAAAAAAwGtAAAAAAADgbEAAAAAAAGBuQAAAAAAAQG9AAAAAAADQcEAAAAAAAOBxQAAAAAAAYHNAAAAAAABQdEAAAAAAAMB0QAAAAAAAEHVAAAAAAACQdEAAAAAAAPByQAAAAAAAYHFAAAAAAADAcEAAAAAAAIBvQAAAAAAAgG1AAAAAAACAbEAAAAAAAGBrQAAAAAAAIGxAAAAAAADAa0AAAAAAAMBqQAAAAAAAgGxAAAAAAACga0AAAAAAACBrQAAAAAAAoGtAAAAAAADAa0AAAAAAAEBsQAAAAAAAoG1AAAAAAADAbkAAAAAAAOBvQAAAAAAA0HBAAAAAAADAcUAAAAAAAOByQAAAAAAAkHNAAAAAAABwdEAAAAAAABB0QAAAAAAA0HRAAAAAAACwdEAAAAAAAMB0QAAAAAAAYHZAAAAAAAAgeUAAAAAAAMB8QAAAAAAAaIFAAAAAAACghEAAAAAAAAiIQAAAAAAA2IpAAAAAAAAwjUAAAAAAANiNQAAAAAAAyIxAAAAAAADAiUAAAAAAALCFQAAAAAAAEIJAAAAAAACgfUAAAAAAACB5QAAAAAAAgHVAAAAAAAAgc0AAAAAAAMByQAAAAAAAQHJAAAAAAABAckAAAAAAAOByQAAAAAAAAHNAAAAAAAAgc0AAAAAAABBzQAAAAAAA8HJAAAAAAACwckAAAAAAAGBxQAAAAAAAMHBAAAAAAAAQcEAAAAAAAKBuQAAAAAAAoG1AAAAAAAAAbkAAAAAAACBtQAAAAAAAAG1AAAAAAABgbUAAAAAAACBuQAAAAAAAEHBAAAAAAAAgcUAAAAAAAEByQAAAAAAAUHNAAAAAAADQdEAAAAAAAIB2QAAAAAAA0HdAAAAAAAAweEAAAAAAADB4QAAAAAAAIHhAAAAAAADgd0AAAAAAAAB3QAAAAAAAsHZAAAAAAAAAdkAAAAAAABB1QAAAAAAAEHRAAAAAAACQckAAAAAAAJBxQAAAAAAAkHBAAAAAAADgb0AAAAAAAGBvQAAAAAAAoG1AAAAAAADAbUAAAAAAAKBtQAAAAAAAgGxAAAAAAAAAbkAAAAAAAEBtQAAAAAAAQGxAAAAAAACgbEAAAAAAAIBsQAAAAAAAIG1AAAAAAABgbkAAAAAAACBuQAAAAAAAEHBAAAAAAABwcUAAAAAAABBzQAAAAAAAkHVAAAAAAACgeUAAAAAAAHB8QAAAAAAACIFAAAAAAABwg0AAAAAAAAiFQAAAAAAAqIZAAAAAAABohkAAAAAAAKiEQAAAAAAAgIJAAAAAAAAwgEAAAAAAALB7QAAAAAAAMHdAAAAAAAAAdUAAAAAAACByQAAAAAAAkHBAAAAAAACAb0AAAAAAAEBvQAAAAAAAgG5AAAAAAABAbkAAAAAAACBuQAAAAAAAYG5AAAAAAAAAb0AAAAAAAKBvQAAAAAAAgG9AAAAAAACAcEAAAAAAAKBwQAAAAAAAoHFAAAAAAAAwckAAAAAAAJBzQAAAAAAAoHVAAAAAAABgd0AAAAAAAPB5QAAAAAAA4HpAAAAAAAAQe0AAAAAAAOB6QAAAAAAAYHlAAAAAAAAAeEAAAAAAANB1QAAAAAAA4HNAAAAAAAAwc0AAAAAAAKByQAAAAAAAgHJAAAAAAAAAc0AAAAAAAJBzQAAAAAAAgHRAAAAAAACgdUAAAAAAAFB1QAAAAAAA8HRAAAAAAABAdEAAAAAAAAB1QAAAAAAAUHVAAAAAAABQdUAAAAAAACB3QAAAAAAA4HlAAAAAAACge0AAAAAAAKB+QAAAAAAAQIBAAAAAAACggEAAAAAAACCBQAAAAAAAiIFAAAAAAAC4gUAAAAAAAEiCQAAAAAAAQIJAAAAAAABwgUAAAAAAAHiAQAAAAAAAEH5AAAAAAACAekAAAAAAACB3QAAAAAAA0HRAAAAAAACAc0AAAAAAANByQAAAAAAAMHNAAAAAAACgc0AAAAAAAEB1QAAAAAAAsHdAAAAAAACwekAAAAAAADB9QAAAAAAAuIBAAAAAAABAgkAAAAAAANCCQAAAAAAAIIJAAAAAAACggEAAAAAAABB+QAAAAAAAoHpAAAAAAACwd0AAAAAAAJB0QAAAAAAA8HJAAAAAAAAAckAAAAAAAPBwQAAAAAAA0HBAAAAAAACwcEAAAAAAAHBwQAAAAAAAsHBAAAAAAABAcEAAAAAAAEBwQAAAAAAAcHBAAAAAAABwcEAAAAAAAOBwQAAAAAAAYHFAAAAAAABQckAAAAAAAOBzQAAAAAAAwHZAAAAAAACAekAAAAAAAACAQAAAAAAAGIRAAAAAAACIiUAAAAAAALCOQAAAAAAALJJAAAAAAAAklEAAAAAAAHSVQAAAAAAAxJVAAAAAAAAQlUAAAAAAAHCTQAAAAAAAFJJAAAAAAADUkEAAAAAAAOCPQAAAAAAAKI5AAAAAAABYjEAAAAAAANCKQAAAAAAAGIhAAAAAAAA4hEAAAAAAAFiBQAAAAAAAQH1AAAAAAABQeUAAAAAAAMB1QAAAAAAAwHNAAAAAAAAwckAAAAAAAFBxQAAAAAAAYHFAAAAAAADgcEAAAAAAAGBwQAAAAAAAwHBAAAAAAADgcEAAAAAAAHBxQAAAAAAA8HFAAAAAAADAckAAAAAAAPBzQAAAAAAAsHVAAAAAAACgd0AAAAAAAEB6QAAAAAAAUH1AAAAAAADAgEAAAAAAACiEQAAAAAAAKIhAAAAAAADojEAAAAAAAGyRQAAAAAAAmJNAAAAAAABclUAAAAAAAOCVQAAAAAAAvJRAAAAAAACQkkAAAAAAADiQQAAAAAAAeItAAAAAAAAQh0AAAAAAACCEQAAAAAAAkIJAAAAAAADIgkAAAAAAABiEQAAAAAAAyIVAAAAAAACQiEAAAAAAAFCKQAAAAAAAeIpAAAAAAAC4iEAAAAAAAPCFQAAAAAAAgIJAAAAAAADAf0AAAAAAACB6QAAAAAAAoHZAAAAAAACAdEAAAAAAALByQAAAAAAAcHFAAAAAAADgcEAAAAAAABBwQAAAAAAAoG9AAAAAAAAgcEAAAAAAABBwQAAAAAAAIG9AAAAAAACgbkAAAAAAABBwQAAAAAAAQHBAAAAAAADAcUAAAAAAAIByQAAAAAAAIHRAAAAAAABwdUAAAAAAAOB3QAAAAAAAUHlAAAAAAACweUAAAAAAAAB6QAAAAAAAYHlAAAAAAABAd0AAAAAAABB2QAAAAAAAoHRAAAAAAADQc0AAAAAAAJBzQAAAAAAAgHNAAAAAAABQc0AAAAAAAPByQAAAAAAAAHJAAAAAAABAcUAAAAAAAIBwQAAAAAAAwG5AAAAAAAAgb0AAAAAAACBuQAAAAAAAYG9AAAAAAABgbkAAAAAAAMBuQAAAAAAAwG5AAAAAAAAgb0AAAAAAAIBuQAAAAAAAgG9AAAAAAACAb0AAAAAAACBwQAAAAAAAkHBAAAAAAABwcEAAAAAAAMBxQAAAAAAAsHJAAAAAAAAAdEAAAAAAAIB1QAAAAAAAsHZAAAAAAABAd0AAAAAAAGB2QAAAAAAA8HVAAAAAAAAgdkAAAAAAAKB0QAAAAAAAIHRAAAAAAADgdEAAAAAAADB1QAAAAAAAkHVAAAAAAABQdkAAAAAAAIB2QAAAAAAAYHZAAAAAAABAd0AAAAAAAJB6QAAAAAAA8H9AAAAAAACQg0AAAAAAABCIQAAAAAAAkI1AAAAAAAB4kUAAAAAAANSSQAAAAAAALJNAAAAAAAAUkkAAAAAAAESQQAAAAAAASItAAAAAAABYhkAAAAAAAJCBQAAAAAAA4HtAAAAAAACQd0AAAAAAAMB0QAAAAAAAkHJAAAAAAACgcUAAAAAAAEBxQAAAAAAAgHBAAAAAAABQcEAAAAAAAKBwQAAAAAAAUHBAAAAAAACgb0AAAAAAACBwQAAAAAAAYHBAAAAAAABAcEAAAAAAALBxQAAAAAAAMHNAAAAAAACAdUAAAAAAACB5QAAAAAAAUHxAAAAAAACIgEAAAAAAAOCCQAAAAAAAqIRAAAAAAAAAhUAAAAAAAKiDQAAAAAAAYIJAAAAAAADgf0AAAAAAAIB7QAAAAAAAkHdAAAAAAACgdEAAAAAAANByQAAAAAAAgHFAAAAAAADQcEAAAAAAACBwQAAAAAAAgG9AAAAAAABgb0AAAAAAAIBvQAAAAAAAAHBAAAAAAACgb0AAAAAAAKBvQAAAAAAAoG9AAAAAAABgcEAAAAAAAJBwQAAAAAAAwHFAAAAAAAAwckAAAAAAADB0QAAAAAAAYHdAAAAAAADwekAAAAAAAPB/QAAAAAAA0IJAAAAAAAAwhUAAAAAAADiHQAAAAAAAoIdAAAAAAABohkAAAAAAAIiEQAAAAAAAKIJAAAAAAACgfkAAAAAAACB6QAAAAAAAwHZAAAAAAADwdEAAAAAAACBzQAAAAAAAIHJAAAAAAADgcUAAAAAAALBxQAAAAAAAsHFAAAAAAAAgcUAAAAAAAGBwQAAAAAAAoHBAAAAAAABQcEAAAAAAAFBwQAAAAAAAgHBAAAAAAADQcEAAAAAAAGBxQAAAAAAAAHJAAAAAAAAgc0AAAAAAAPBzQAAAAAAAoHRAAAAAAABwdUAAAAAAAFB1QAAAAAAAUHRAAAAAAADgc0AAAAAAAKByQAAAAAAAsHJAAAAAAAAAckAAAAAAAFBzQAAAAAAAgHVAAAAAAADgd0AAAAAAAGB6QAAAAAAAYH1AAAAAAAAAgEAAAAAAABCAQAAAAAAAGIBAAAAAAACAfkAAAAAAAIB7QAAAAAAAwHhAAAAAAADgdkAAAAAAAMB0QAAAAAAAcHNAAAAAAAAQc0AAAAAAAMByQAAAAAAAUHJAAAAAAADgcUAAAAAAACBzQAAAAAAAkHNAAAAAAADQc0AAAAAAAHB0QAAAAAAAcHVAAAAAAACgdEAAAAAAAAB0QAAAAAAAMHNAAAAAAACgckAAAAAAAKBxQAAAAAAAIHFAAAAAAACgcEAAAAAAACBxQAAAAAAA8HBAAAAAAAAgcUAAAAAAACByQAAAAAAA4HJAAAAAAAAQdEAAAAAAAOB1QAAAAAAA8HZAAAAAAAAgeEAAAAAAAKB4QAAAAAAAIHdAAAAAAABAdkAAAAAAAMB0QAAAAAAAYHNAAAAAAAAAckAAAAAAAHBxQAAAAAAAkHFAAAAAAAAgcUAAAAAAAMBxQAAAAAAAgHFAAAAAAADgcEAAAAAAAGBxQAAAAAAA0HBAAAAAAAAQcUAAAAAAAMBwQAAAAAAAsHBAAAAAAACQcEAAAAAAABBwQAAAAAAAIHBAAAAAAACwcEAAAAAAALBwQAAAAAAAUHFAAAAAAADwcUAAAAAAAOByQAAAAAAAwHRAAAAAAACAdkAAAAAAALB5QAAAAAAAkHxAAAAAAABggEAAAAAAAACDQAAAAAAA2IVAAAAAAADoikAAAAAAACCRQAAAAAAAhJVAAAAAAABUmkAAAAAAALSdQAAAAAAAKqBAAAAAAACAn0AAAAAAACCcQAAAAAAAcJdAAAAAAAB0kkAAAAAAAEiNQAAAAAAAwIZAAAAAAACog0AAAAAAAACCQAAAAAAAYIFAAAAAAAC4gEAAAAAAADiAQAAAAAAAYH5AAAAAAAAQfUAAAAAAANB6QAAAAAAAEHhAAAAAAACQdkAAAAAAAGB1QAAAAAAAgHNAAAAAAABQckAAAAAAAHBxQAAAAAAAUHFAAAAAAACQcEAAAAAAABBwQAAAAAAAAHBAAAAAAABAb0AAAAAAAEBwQAAAAAAAUHBAAAAAAAAgcEAAAAAAAHBwQAAAAAAAwHBAAAAAAADAcUAAAAAAACBzQAAAAAAAUHRAAAAAAAAQdUAAAAAAABB1QAAAAAAAgHVAAAAAAABAdUAAAAAAABB1QAAAAAAAgHRAAAAAAAAQdEAAAAAAACBzQAAAAAAAcHJAAAAAAAAQckAAAAAAAJBxQAAAAAAAsHBAAAAAAACgcEAAAAAAAOBwQAAAAAAAcHBAAAAAAAAAcEAAAAAAAKBwQAAAAAAAgHBAAAAAAAAwcEAAAAAAAFBwQAAAAAAAUHBAAAAAAAAgcEAAAAAAAKBvQAAAAAAAAG9AAAAAAACAbkAAAAAAACBvQAAAAAAAYG9AAAAAAACgbkAAAAAAAKBuQAAAAAAA4G5AAAAAAADgbkAAAAAAAMBvQAAAAAAAMHBAAAAAAABAb0AAAAAAAGBvQAAAAAAAIHBAAAAAAACAb0AAAAAAAOBvQAAAAAAAMHBAAAAAAAAAcEAAAAAAAIBwQAAAAAAAwHBAAAAAAACQcUAAAAAAAPByQAAAAAAAsHRAAAAAAAAwd0AAAAAAAEB6QAAAAAAAQH5AAAAAAACggEAAAAAAAACCQAAAAAAAMIJAAAAAAACYgUAAAAAAAHiAQAAAAAAAoH5AAAAAAAAQfUAAAAAAADB9QAAAAAAAEHxAAAAAAAAAekAAAAAAAJB4QAAAAAAA4HZAAAAAAACwdEAAAAAAAMBzQAAAAAAAkHJAAAAAAABgckAAAAAAAEByQAAAAAAA4HFAAAAAAABwckAAAAAAACBzQAAAAAAAsHNAAAAAAADgdEAAAAAAAFB3QAAAAAAAYHlAAAAAAADwe0AAAAAAADB/QAAAAAAAsH9AAAAAAACgf0AAAAAAAIB+QAAAAAAAAHtAAAAAAABweEAAAAAAAGB1QAAAAAAAsHNAAAAAAABAckAAAAAAADBxQAAAAAAAIHFAAAAAAAAwcEAAAAAAAEBvQAAAAAAAIHBAAAAAAACAb0AAAAAAAOBvQAAAAAAAwG9AAAAAAACgb0AAAAAAAMBvQAAAAAAAgG9AAAAAAAAQcEAAAAAAAEBvQAAAAAAA4G9AAAAAAABgb0AAAAAAAMBvQAAAAAAAQHBAAAAAAAAgb0AAAAAAAKBvQAAAAAAAwG9AAAAAAAAwcEAAAAAAAMBwQAAAAAAA4HBAAAAAAADAcUAAAAAAABBzQAAAAAAAIHRAAAAAAADAdkAAAAAAABB6QAAAAAAAYH1AAAAAAADogUAAAAAAADCFQAAAAAAAGIhAAAAAAAB4ikAAAAAAALCKQAAAAAAA0IhAAAAAAACAhkAAAAAAABiDQAAAAAAAQIBAAAAAAADwfEAAAAAAAMB5QAAAAAAA8HhAAAAAAAAAekAAAAAAAMB6QAAAAAAAAHtAAAAAAABAekAAAAAAACB5QAAAAAAAwHZAAAAAAADAdUAAAAAAAOB0QAAAAAAAEHRAAAAAAACgdEAAAAAAAGB1QAAAAAAAwHdAAAAAAAAQeEAAAAAAAEB6QAAAAAAAkHtAAAAAAAAQfUAAAAAAAMB7QAAAAAAAYHlAAAAAAADwd0AAAAAAAJB1QAAAAAAAwHRAAAAAAAAQdEAAAAAAAEBzQAAAAAAAQHJAAAAAAADwckAAAAAAAKBzQAAAAAAA0HRAAAAAAACwd0AAAAAAAGB7QAAAAAAAkH9AAAAAAACQgkAAAAAAAJiEQAAAAAAAaIZAAAAAAAAQh0AAAAAAADCGQAAAAAAAEIRAAAAAAAAYgUAAAAAAAMB+QAAAAAAAUHpAAAAAAAAgeEAAAAAAAIB1QAAAAAAAEHVAAAAAAADgdUAAAAAAAMB2QAAAAAAA8HlAAAAAAACgf0AAAAAAAFCCQAAAAAAAEIVAAAAAAABwh0AAAAAAAJiIQAAAAAAAiIdAAAAAAABQhUAAAAAAAKiCQAAAAAAAMH9AAAAAAAAQekAAAAAAAKB2QAAAAAAAQHVAAAAAAADgckAAAAAAAOBxQAAAAAAAgHFAAAAAAACwcUAAAAAAAEBxQAAAAAAAoHFAAAAAAADAcUAAAAAAAHByQAAAAAAAYHNAAAAAAADwc0AAAAAAABB0QAAAAAAAAHNAAAAAAACgckAAAAAAAFByQAAAAAAAsHFAAAAAAABQcUAAAAAAANBwQAAAAAAAkHBAAAAAAABQcUAAAAAAALBxQAAAAAAAsHFAAAAAAABQckAAAAAAAPByQAAAAAAAAHRAAAAAAADAc0AAAAAAALB0QAAAAAAAoHVAAAAAAABwdEAAAAAAAIB0QAAAAAAAIHNAAAAAAAAwckAAAAAAAOBxQAAAAAAAYHFAAAAAAAAQcUAAAAAAALBwQAAAAAAAAHFAAAAAAAAQcEAAAAAAAEBwQAAAAAAAkHBAAAAAAACAcEAAAAAAAABxQAAAAAAA4HBAAAAAAADAcEAAAAAAANBwQAAAAAAA8HFAAAAAAABAckAAAAAAAHByQAAAAAAA0HNAAAAAAADwdEAAAAAAAMB2QAAAAAAAoHlAAAAAAADQfUAAAAAAAGCBQAAAAAAAEIRAAAAAAACYh0AAAAAAAACLQAAAAAAAkI1AAAAAAABQjkAAAAAAAGiNQAAAAAAAMItAAAAAAAC4h0AAAAAAADiEQAAAAAAA4IBAAAAAAABAfUAAAAAAACB6QAAAAAAAsHdAAAAAAADQd0AAAAAAAFB5QAAAAAAA4HtAAAAAAADAfUAAAAAAAFiAQAAAAAAAiIFAAAAAAABYgUAAAAAAAIiAQAAAAAAAUH5AAAAAAABAe0AAAAAAAOB4QAAAAAAAMHZAAAAAAAAgdEAAAAAAAABzQAAAAAAA0HFAAAAAAADgcEAAAAAAAGBxQAAAAAAAQHBAAAAAAADAcEAAAAAAAIBwQAAAAAAAkHBAAAAAAABwcEAAAAAAALBwQAAAAAAA4HFAAAAAAABQckAAAAAAADByQAAAAAAA8HNAAAAAAADgdkAAAAAAALB5QAAAAAAA0HxAAAAAAACQfkAAAAAAAEiAQAAAAAAAWIFAAAAAAAAwgUAAAAAAAPB/QAAAAAAAYH5AAAAAAABAe0AAAAAAAIB4QAAAAAAAAHdAAAAAAACgdEAAAAAAAIB0QAAAAAAAcHVAAAAAAAAwd0AAAAAAAKB4QAAAAAAAkHtAAAAAAABAfUAAAAAAAFB9QAAAAAAAgHxAAAAAAAAAekAAAAAAAKB4QAAAAAAAkHZAAAAAAACgdEAAAAAAAIBzQAAAAAAAUHJAAAAAAADQcUAAAAAAAOBxQAAAAAAAMHFAAAAAAAAgcUAAAAAAAJBxQAAAAAAAcHFAAAAAAACgckAAAAAAAIBzQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2384\"},\"selection_policy\":{\"id\":\"2383\"}},\"id\":\"2369\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2432\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"2361\"}},\"id\":\"2357\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"2351\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2354\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2348\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2383\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis\":{\"id\":\"2347\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2350\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2379\",\"type\":\"AllLabels\"}],\"root_ids\":[\"2338\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"f69ec89d-0b35-4726-befc-b9527bb9e6d6\",\"root_ids\":[\"2338\"],\"roots\":{\"2338\":\"2b1aad70-fb78-4efb-b103-4448ccd43aaf\"}}];\n", + " const docs_json = {\"28d486e5-03ce-43c5-9d67-cb62992e0200\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2658\"}],\"center\":[{\"id\":\"2661\"},{\"id\":\"2665\"},{\"id\":\"2697\"}],\"height\":300,\"left\":[{\"id\":\"2662\"}],\"renderers\":[{\"id\":\"2684\"},{\"id\":\"2703\"},{\"id\":\"2723\"},{\"id\":\"2745\"}],\"title\":{\"id\":\"2686\"},\"toolbar\":{\"id\":\"2673\"},\"width\":990,\"x_range\":{\"id\":\"2650\"},\"x_scale\":{\"id\":\"2654\"},\"y_range\":{\"id\":\"2652\"},\"y_scale\":{\"id\":\"2656\"}},\"id\":\"2649\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2683\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2742\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2652\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy) - Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2745\"}]},\"id\":\"2764\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"2658\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2661\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2702\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2666\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2663\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2650\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2682\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"APhoHJp42z8AYOURqnTbPwDyXwe6cNs/AKLY/Mls2z8AaE/y2WjbPwA6xOfpZNs/ABA33flg2z8A3KfSCV3bPwCYFsgZWds/ADaDvSlV2z8AfASuOVHbPwB6ZKNJTds/ACjCmFlJ2z8Ajj2NaUXbPwD2lIJ5Qds/AN7pd4k92z8AQDxtmTnbPwAIjGKpNds/ACzZV7kx2z8AniNNyS3bPwBMa0LZKds/ACiwN+kl2z8AJPIs+SHbPwAyMSIJHts/AEBtFxka2z8APKYMKRbbPwAS3AE5Ets/ALoO90gO2z8AGD7sWArbPwAiauFoBts/AL6S1ngC2z8A2rfLiP7aPwBk2cCY+to/AEj3taj22j8AbBGruPLaPwDAJ6DI7to/ACY6ldjq2j8AjEiK6ObaPwDaUn/44to/APZYdAjf2j8AyFppGNvaPwAyWF4o19o/AB5RUzjT2j8AbkVISM/aPwAGNT1Yy9o/AMYfMmjH2j8AkgUneMPaPwBM5huIv9o/ANLBEJi72j8AApgFqLfaPwC8aPq3s9o/ANgz78ev2j8ANvnj16vaPwCuuNjnp9o/ABpyzfej2j8AVCXCB6DaPwAs0rYXnNo/AHx4qyeY2j8AGBigN5TaPwDOsJRHkNo/AHZCiVeM2j8A1Mx9Z4jaPwC+T3J3hNo/AP7KZoeA2j8AXj5bl3zaPwCkqU+neNo/AJIMRLd02j8A+GY4x3DaPwCKuCzXbNo/ABABIedo2j8AQkAV92TaPwDcdQkHYdo/AJyh/RZd2j8AMMPxJlnaPwBO2uU2Vdo/AKTm2UZR2j8A3ufNVk3aPwDo669mSdo/AFC3o3ZF2j8ARHaXhkHaPwBeKIuWPdo/ADzNfqY52j8AbGRytjXaPwCM7WXGMdo/ABpoWdYt2j8ArNNM5inaPwDCL0D2Jdo/ANx7MwYi2j8AcrcmFh7aPwDw4RkmGto/ANL6DDYW2j8AeAEARhLaPwBE9fJVDto/AJTV5WUK2j8AsKHYdQbaPwD0WMuFAto/AJT6vZX+2T8A1IWwpfrZPwDm+aK19tk/AOhVlcXy2T8ABpmH1e7ZPwBMwnnl6tk/AMjQa/Xm2T8AdMNdBePZPwA6mU8V39k/ABBRQSXb2T8AuOkyNdfZPwACYiRF09k/AKy4FVXP2T8ARuwGZcvZPwBatNV0x9k/ANpixoTD2T8ATOm2lL/ZPwAGRqeku9k/ADZ3l7S32T8AInuHxLPZPwDET3fUr9k/ABjzZuSr2T8A+GJW9KfZPwAGnUUEpNk/APyeNBSg2T8AJGYjJJzZPwD67xE0mNk/AIY5AESU2T8Atj/uU5DZPwB2/9tjjNk/ADp1yXOI2T8Ajp22g4TZPwB+dKOTgNk/AOb1j6N82T8AoB18s3jZPwDS5mfDdNk/AMpMU9Nw2T8AHEo+42zZPwAa2SjzaNk/AAD0EgNl2T8AHJT8EmHZPwDWsuUiXdk/ABiOczJZ2T8ALPZaQlXZPwCaw0FSUdk/AOLsJ2JN2T8AlGgNcknZPwDeK/KBRdk/AEIr1pFB2T8AyFq5oT3ZPwDArJuxOdk/ADITfcE12T8AUH5d0THZPwAM3TzhLdk/AHodG/Ep2T8AKCv4ACbZPwDk8NMQItk/AL5WriAe2T8AdkKHMBrZPwBgmF5AFtk/AOI4NFAS2T8AfgIIYA7ZPwB8z9lvCtk/ADh2qX8G2T8ABsp2jwLZPwCcl0Gf/tg/AECoCa/62D8Alr3OvvbYPwCSkpDO8tg/ANDZTt7u2D8A3jwJ7urYPwDCV7/95tg/AFiZtAzj2D8AZCdfHN/YPwAyvAIs29g/APiGmzvX2D8ABAgeS9PYPwAiaWZaz9g/AL5dBmnL2D8APA20dcfYPwCKHbd8w9g/ADa0tnO/2D8AZEv+PrvYPwAQZDKXttg/AD5Tksuw2D8AbHphN6jYPwCY3YgYmdg/AMZYCC572D8A8lO3Ej3YPwAgzwycu9c/AE7KLK+y1j8AesVMC6TUPwCowPLUr9A/AKh34V22wj8A8EfKmuitvwBmWRT3eNw/AHBmfeLX3j8A7jC2wSHhPwBzYdkieuM/AF3BkWeF5j8AknBxpj/qPwA+5T9zhu4/ALBsnDCH8T8AbQ+1TbLzPwAEFeS9efU/gIBT/CSO9j8AoSCbcKf2PwCm+wdFkfU/AIcOaMU88z8A8kbgEY7vPwCEiZh99+Y/AGj9hTgf2z8A6CBzvT3BPwBAqIUKvr6/ABDE6iRJ1L8AUHa+hk/cvwA0cDuGmt+/ADJlUhCb3r8AWMwNRzzavwD2mF2ModO/AAy9hF/zx78AoGfZTxSxvwDQqHNnSKY/AAwfwweKwT8AIFaYiw/LPwBQKlthGdE/AGZEV/ih0z8Aam6HMFjVPwD4sze+trq/ALg4oGuxvT8AuBJcvLDOPwCIBHwSoNM/ALb/VSXZ1T8A5PpyxvTWPwAQdjbce9c/AD4xtay41z8AasyzzNHXPwCYp2tv2tc/AMZa273b1z8A8qHQ6dnXPwAgZWLL1tc/AEz4/SnT1z8AGvuYVs/XPwCoGMxwy9c/AKRTdITH1z8AsgvblcPXPwD+RH6mv9c/AIxW3ra71z8AOhIlx7fXPwA241/Xs9c/ALQwk+ev1z8A4JrA96vXPwDOL9YGqNc/ANz69xak1z8AqIcVJ6DXPwC2Ki83nNc/ADIuRUeY1z8AkNRXV5TXPwA+WGdnkNc/AGrtc3eM1z8ASMJ9h4jXPwBU/4SXhNc/AELJiaeA1z8AAECMt3zXPwDcf4zHeNc/ADqhitd01z8ARrmG53DXPwCU2oD3bNc/ADAUeQdp1z8ALnNvF2XXPwAKAWQnYdc/AJbFVjdd1z8A5MVHR1nXPwCCBDdXVdc/AD6BJGdR1z8A/DkQd03XPwCoKfqGSdc/AIZI4pZF1z8AxIvIpkHXPwBg5ay2Pdc/AP5Dj8Y51z8AKpFv1jXXPwCYrE3mMdc/APZcKfYt1z8AshkCBirXPwBQUtYVJtc/AL4OoSUi1z8AenBSNR7XPwBYArlEGtc/AETSP1MW1z8AYiw3XxLXPwAAmOxjDtc/AEzOzlQK1z8AevaWEQbXPwCm8LZKAdc/ANT/JkT71j8AAmvnU/LWPwAuhhnd4tY/AFwBal3F1j8AiDyT5YrWPwC2t/gTF9Y/AOSyxmw21T8AEK5A4o/TPwA+qdLrkNA/AMrDQdEz1z8AMjTa1k7XPwACFnGDXtc/AHj3TiZA2T8AkFlwkE7aPwBKFKcKnts/AB6ZjUoj3T8AdGEWZ8XePwA4XxGQLeA/AHkSs67X4D8AXyWFDEPhPwApqsI8VeE/AIYTv9/74D8AjNS+TDDgPwDgUUJr+d0/AMKWsSD22j8AbkqFQKXXPwDAMwh6X9Q/AByJAal50T8AyAoOpW7OPwDIoJNpgss/AEyU0tQ8yj8AYE4yEnLKPwD4kO+R08s/AOw2hgP+zT8ABCl6a0PQPwCGvBi8jdE/AB5nMb+80j8AvOSFy77TPwCU/1fgjNQ/AOLu7n4n1T8AwvZ/mZXVPwCqGEKa39U/AN5XpBAN0j8Acpc42BnUPwAgxywcM9U/AMT2ZSkA1T8A8vEdNqTVPwAe7bRX9tU/AEyoDPEc1j8AeuMBSC3WPwCmVkGrMtY/ANS9J94y1j8AAMuosjDWPwAuLWp9LdY/AFx8cNcp1j8AiAo3AybWPwA2JYUcItY/AALpRC0e1j8A0HRNNhrWPwC+ISIvFtY/AGq4UPwR1j8AmFmCUw3WPwDETLZ2B9Y/APK/k5X+1T8AIJslcu7VPwBM1vmMzdU/AHqRd5KH1T8Apoyz7fLUPwDUh5lpvtM/AAKDJ+JS0T8AXPxqskjJPwDgylsmfa8/AN5TxY5y1z8AZtUjfXbYPwCy43Y0+9k/AAJsXDEg3D8ArNV9Cv7ePwAmxV+DS+E/AF6VJo9l4z8AUuNyLavlPwAaawst3+c/AGU9Op236T8A4tDxRN3qPwBf09TW/uo/APrGNOzq6T8A3D/CEJDnPwDmvnkrFuQ/ANwYNISe3z8AiBmsIWXWPwAo/WZOFss/AEBU5QsZuD8AgAi9TYmAPwAA/gfREaW/AICKR8qTq78AkKOT/JOivwAAC4qr0Gk/AMCIculeqz8A2MAGoay6PwAAFzMMhsI/ANRtB7fLxD8ADPa6gwDCPwAgnF6Xfao/AIhdWPgtw78A3gbO0XTWPwB0wAXCnNg/ANQT1Lt/yz8AELOLKCLYPwCjqkWoQeA/AG7KaKIy5D8AtPGhkUDoPwCve3gmbew/gCigLeM+8D+A1JD1d/7xPwDPkNdXK/M/AJUPqKWC8z8AOwiQLMvyPwBs5/6d9fA/AAA/3c4u7D8AbDVSZeXkPwDEc8jXuNk/AICgr5rjwz8AYEIZky+vvwDQb9xTVs2/AFA2htEH1r8ABAC77NravwBgL5BnRt+/AFvANYCw478ALmfC99vsvwB8CYgsJ/i/AKQndxXFwT8ALEl7EK/SPwDekY7+r90/AKhDibY45T8ASMmEQLfsPwDgemGSuPI/AKT+M3qX9z8A1uzICA32PwAoObkdMP4/AJTTRlvqAUAA0GFaaX8DQACtrjfLsgNAgFBRUityAkAAVGpWXYj/PwAkJuJHwfc/AAy9iObQ7D8A6JurITnSPwC44eJWpNK/AOY6ccCB6L8AsD9osoPxvwB+SC/kU/S/AKJrKru59L8A2GZoQ2/zvwDxG5ACVPG/AKxvmm08778AvXVRLRnwvwBPpaWhKPW/AFqklFdiAcBAw2wmn4gPwAD4YOlI2Ng/AP1aiPT24z8A4Mfc7RjtPwDW7PS4EtC/AL4avlPY7T8A9PGYe679PwC5fvh7NQVAgKaHNKbJCkAA5KoI7HsPQIALpsYfZBFAgBS9hn0FEkCAs9O7RnURQADPurIj/w5AADGK8UKYCEAA9JFdg0AAQADQAgEpk+s/AFjpxBYa078AGAjEIgT1vwBQ4J5QtgDAAJrBAnqQBMAAkW5ebAoGwAD+LhxnuAXAAAs/mwcwBMAA72YdFJkCwADp7rxcsPa/AHw8PQnQ7r8AaNwdAebhvwC4WLNTNcu/AEAtUtipsj8A5n2+b7/TPwD74S19L+A/AIJjnKpZCsAAVHoVt+vzvwAg0OcTcrq/AEokf0UO4D8AXu3cizDpPwBUp0FIHuw/AGrgObTp6j8AQDE3MQvnPwCi2Av7huE/AMTVsNqg1j8A4O2nYxLFPwAAR+g4k3Q/AABpeRBQvL8AsN66DFnGvwAwj/fY/Me/AJidp6yXxL8A4GyG9X66vwDA5FLRWqC/AOAVZ77rpT8AYNXAAMa8PwD0HnslzMU/AOgtmwGqyz8AfCsGgezPPwCevzEAbdE/AEBQ5aJg0j8AaDhtfrHQvwBgLIxib5I/AOR7PRM1xT8AQHKJxcnOPwBMtGQ5t9E/AHqvccvJ0j8AqKq5dEHTPwDU5d3tb9M/AAKhSFp50z8ALpxcGWbTPwBcl9cPJdM/AIqSump80j8Ato1uPt/QPwDIESGqJMo/AEAQ2oTpsT8AhAGHr0rMvwDKwgZ8aOq/AE3xAiU1AMCg8xgCWzwRwADYs3H+aeE/ABKJw2685j8ACnnLLa7uP4CxpZbn/vQ/AOPDMyCN/D+AFFgLo/cCQACtbRFceAhAAPgeCNE3DkAAGRETs9URQAD4vMkl+RNAAEXxtJYMFUCAKxueFc0UQABP4oDM4xJAAAbQzZnrDkAAkHmCa48FQACo4wATgvU/AACMJJm1l78ARMmrddjzvwCJYYNZfAHAAAyFsZlBBsAAo0nz5xEIwAAHXrlvfQfAAHKRlpDjBMAAMsSQAT0BwACGZP0dYPq/AKggL0iJ8r8AqvY2c7jnvwA8s6sTzdm/AHwhrcCww78AYPHoVJiUPwAgGQ4xRcE/YJkitsmBE8AAzYXtcq8CwACeGXvQp++/AA44QKGh078AADJc29qYPwCYfBeyw8Y/APRyK3J9zz8AprT9D5jRPwDUL/bVVtI/AALrZQOf0j8ALqa4lrfSPwBcCfHlvdI/AIgU6n690j8AtmuVu7rSPwDkK2Qst9I/ABBH9Fqz0j8APpCEdK/SPwBqqUqHq9I/AJjPgZen0j8AxokwpqPSPwDyjuWyn9I/ACB357qb0j8ATj7IspfSPwB6FyJ+k9I/AKjifraO0j8A1NWwLIjSPwACyVp4fNI/ADAUCUFi0j8AXE93EiHSPwCKSmnte9E/AGyLahnEzz8AyIG+zBfIPwCQ4Gl8z6k/AMLIbHUw0L8AymabFonsvwBNGliPagHAoHOtjC+YEsAAXk1Gjk7fPwB7KGVVOeQ/AA1q0xof6z8AmLWIeIzyPwCT4PDRLvk/gKRc4qXHAECAjlktdacFQAAxAQ39xQpAAPFw8Ge0D0AAzv0UELkRQIBuEGCrsxJAAKr7O8htEkAAw7kkX7MQQAB01wHaUAtAAEYjwtDvAkAADKpcYJDyPwBA6sTq5La/AGiNJNmF9L8AwFl1gmUDwABsBVdjygzAAFsh8kR7FMAAM/SGHtICwADrPDLDbQHAgAsECeJsAMAAkpLDdzLovwB4i0T28MW/ADhzsHq92T8A+HMdYB/uPwAocyXF4fY/AJDAP99q/T8Ar+0v9ioBQADuKumMHfi/AGijBqmm3D8ALO1C1KL0PwCETvH+Q/c/ANzoR5TD8z8AKBJjBxXqPwBQ/5KO29Q/AEC3llpAwr8AYN/NpovgvwDc+9xQq+i/AJyBbzyN7L8AhD0gR3rsvwBqr/ojy+m/AOLN5ukS5b8ANF2Sf7bfvwD0r9amC9a/AMBpnlsDwr8AgEQt8duKvwBIPSO1abY/AFylRvedxD8AuIdHS5P/vwDAOSJH/uq/AChHoPHyz78AqDits7zivwAQpPqj9r6/AKjXssNGvT8A/IqhBjTNPwDyyhW15dE/AFCaBV0i0z8AAi1nS1DTPwBSsrv/8dI/AFhStSpM0j8AMKPD9I7RPwA4OkqK3dA/AHi0y11P0D8ArBTWgNvPPwAQpy3FhM8/APAfaPaAzz8ADDLid8fPPwC4aIt6GtA/ADK3zdtV0D8A7JO0nJDQPwB21uokwdA/AKRV6Grn0D8AuBG+JwLRPwDIYobREtE/APJqoFAc0T8AcFfzF5PMPwDITYcLfs8/ABKiIot60D8APh2GS9PQPwBsGNE2+tA/AJpzHTIJ0T8AxJ5hPQ3RPwD0kfKEDNE/AB7LPdIJ0T8ATkYsVwbRPwB6G1uQAtE/AKbEPq7+0D8A1KeQwvrQPwAAU63T9tA/AK7qsOPy0D8A3MRH8+7QPwCI0qUC69A/ALZm2RHn0D8AZHvlIOPQPwCQeskv39A/AL7Kgz7b0D8AahASTdfQPwAYoXFb09A/AMZen2nP0D8A8neXd8vQPwCgdZiEx9A/AExJFpLD0D8AerJOn7/QPwCoyzesu9A/AFT1uri30D8AgoiTxLPQPwAubs3Or9A/AFw2/dOr0D8AiukyyKfQPwC2g3SDo9A/AORCLYae0D8AEM4DTJfQPwA+6ZtwidA/AGy0oNxo0D8AmG8Z4RXQPwCM1d12g84/AOTL3Xlkyj8AQMIxyYzAPwCQHYmds6e/AIYoWyd3278AVkspuJnzv4BF5hWLawbAABipD2CssD8AbH7JyVbEvwAclh9c9t0/AO0Gi0os4z8APiZsjPXoPwCp2EZDRPA/AJJxJpcB9T8A3mF80TL6PwCCqw4npP8/AM1UHmwhAkAAR1FyR7cDQABo5NjlUwRAAG8NPJZ7A0AAisGqo1QBQAD0r1X7y/s/AHAXPyxj8z8ANCFnxdTkPwAAiJak2cA/AOhNoIWJ078AaEAVoWjjvwBATFzQKOm/AICbJKG47L8AvGwAxpbvvwBDmWEhGvO/ACyr6Dmk1r8ASJfPb6XHvwDAEJyIS6K/AMChxcl2uD8A2HVjEjfKPwB0wJ0OHdM/wKZR+GdMAsAAdKhwiMHqvwCKvzZXS+S/AEAgqQgLnz8A+Ke+wnbWPwCsbiB4H98/AMKjzGyi4D8ASJ7KjnHfPwC4UDt7cNs/AEQyYdle1j8A1H6Foz3RPwA4cKi5U8k/AJgvMU26wj8AkOiRBC69PwAQ1w01zro/AABDhZGlvD8AHEoKamjAPwBkgHQGYMM/AEwAqBBCxj8A4HmJF+nIPwCgkBWw8so/ABg3E/IxzD8AOM3kV37MPwBSG2YRo+C/AOx2rKqjx78AKAGBuX21vwA4itT5J8m/APgkGvMU47+AsJNf/bX3v4ByCuHl1gnAABhIOax70j8AqHTvcPzUPwDe+XpZvNg/AEq3IW9i3j8AcO9OE/ziPwA0TRAr1Oc/AAp3EUnG7T8AH6GUhPvxPwAajm+nFvU/AKwI03Nw9z8AaAAoJrP4PwBGsJdfnPg/AKhIECOk9j8AzmlQ8PDyPwAIQCzk0Oo/ALifcxPe1z8A0BUKaFrRvwACsze4efO/AADgBMqMs78AELhRAsfEvwAwx/AzLcW/AFBMaTvWur8AQBhLJs2RPwCg0eoNVsY/AMD/27XZ1j8AhC29HojhPwAWiL7EpOc/AOLcf+X97D8A7Fl1fa7wPwAo/U4Mv++/AABAH17vvT8AUFds1T7jPwAYnJ3gFOc/AMy/TNN05D8AkDHeDVrcPwBg7ao1XcU/AAiO+uS7zL8ADMUqScvqvwDg9RtyMv+/AF4OqqgrEMAAAHDyT5lqvwCwc/WyK7E/AIDna3Awxj8APBCYoe3TPwDcLuoe7d4/AIxB5Qgi5j8A6AkRDEPuPwBIvHzBePM/ANDGDsoayz8AhOOh9bTxPwBSZTb2L/g/AAQrE4OL9z8AaMbeEeXpPwD4jTftbuq/gCkLzaewEMAAAP3Pc6vzPwAQBRD9JOs/AEjH19YV4T8A6IfA20rVPwBQhc7w5NM/AFgvEO+E3j8A5Guzw4rqPwBc0MY4UfU/AHJOtNQl/z8Aurj+aXoEQABw/GLyvQhAAM6VSr3TC0AA6LvCFZsMQABO4CQz5ApAAFA2j11U7L8AAB2uqTCYvwDwT4ISGOa/AMDmHJvo3L8AgPiB4j7APwCQph4oh9K/ALA36nbM4r8AANWg+OHpvwBIQcK//u+/ANzBAEIg9r8AgOePyWyWPwAU9yKPH9U/ADLAJM045D8AGLHurqHsPwDUQUMKuvE/gGQjC1u7HcAABzLiMg4HwABgZqE2TeS/AAjXHRpK1z8AvEryK1LnPwBIdYkSUuk/AHQNYrY15z8AyAV9eXvjPwD4fq8kfd8/ANCq4BIa2D8AYHvdrSTSPwCYGMcbcso/ADAO0urhwT8AAPDnGXm5PwAAcpjza7I/ABAkRs4rsT8AIFepjE6yPwAMGWzDZ+6/gJGoW6pt878A8PrmLKDkvwAMINrh0+O/AM8qOGQt87+Av7SJEwsGwAALBMDSfhjA4C+ICLEzGMAAWBP8jiPAvwAw4NjhGLs/AExgXE5U0T8A7JVqdOHbPwAMJATWl+U/ADCNSFj27z8AQJvo2QT3PwA4mc2LMwBAACovGslBBUAAJEz4268KQAD+WC+oEg9AALCCGdP2EEAAzAmKbV0RQAAY4T51WxBAACRQ46cRDEAABMRm6x8FQADcDvRpO/g/AAA3oFFHmj8ADtiDYh0AwADij7WpXArAAALf+KW5878AJy0sPAoDwIDUIoI78xHAAPRhsrse1b8A4PHZP/TAvwDA166CRL4/AMjNY21+2j8AGJta6BXpPwDhTBf3WiLAAD4Q0zjfCcAAADd7wiuYvwAEA8BO1fs/ACDi0Zj4BUAArLd/f/sJQADo3M5xXwtAAOaFaAtgCkAAXvLdJZMHQABI6TBXVANAAGQ8oVML/T8AKLBKCfXyPwAgW/x2AOU/AFC9DHfXzz8AAEvRtkeovwAA3uiaZ8e/AIgQ/I++zb8AmI5klZ3IvwBgJeD3Qb6/AFPjhaFD8L8AmsDRBVzbv0Bo2dgXgwXAgPHo0u9Z8r+gwlVFcFkUwMAf7Mv/1wLAAHRZWjkZ8r8AUbV5Vz/qv4DdW98B8vO/AInu8MS+BMAA2GzgJT7EPwCo7qabd8U/AJDx74GaxT8AhMwL0t3FPwAYZ/wPzsc/ABjfge7QzT8AdG9sThbUPwC8UXA3D90/AKjXEola5D8AWMvvB3rrPwBqb6OLx/E/ABwfX0BJ9T8AcILJC/j3PwCyYqSy+fg/ALxZ+8k5+D8ATBEK97X1PwDGRNux/vE/ANAHJwoC6z8AHHlOsJviPwDIRP5cHtc/ALB+7ShfyD8AoDvf3uK4PwBg99+IPKo/AIAadLcXqz8AgC51yVezPwCgFLTBbLo/ALjOHV71wD8ACFtBatbDP4AFQJV9YAvAgD8BjQQr+L8A6QRf/jjivwBIHdDiu8C/ACiyt7wZsD8AbM9nvWjCPwDIxX9EgMY/ACC8bzcFyD8AfDJW74nIPwDYSEwZrsg/ADB/W2WpyD8AjFXWlILIPwDkix4LGsg/AECC6yQTxz8AnHirLpXEPwDo3d6vl70/AIAqW5ookD8AWKRohLvIvwCgFpUcm6w/AIzESqYewj8AsAXHKWa0PwCAzEZyoKm/AEhilovR078AULtVENTFPwBU8AJNb8Y/AOwnrzPXxz8AWOiBjHDKPwCgJ/FUrc4/AMxEQDPm0T8APNzf3wjVPwDskpkwEtg/AJBClTXP2j8AYDN66u3cPwBgZH78wN0/APSwSa3j3D8AUBmFipvZPwC051phcNw/ADSbvq/G2T8AnM4tvcbWPwAk6ZAwftM/AFTVVZSe0D8AcC3ntYPMPwDwERkA68g/AKBGCd4Pxz8A+HbtWG7GPwB4S3N5/sY/AHgPka/fsb8AIFWXL5eSPwBEVOkT0MA/AICvklK9xz8AnCCPTjDUvwBgzZjyyJ+/AHBamKBxuj8AQI0USI7EPwCwkcd8G8c/AMC6Mtqtxz8AeEC/aonHPwCYi0D6Occ/AMSRgGUHxz8AlExcQezGPwAYfqJq68Y/AFxo2jz0xj8AeJvhqP3GPwCwu9LCBcc/AIAsU1D8uj8AmIxFOLHCPwD0gtmBJcU/AFB501c7xj8AqG873qzGPwAEBpjI1cY/AFysWXngxj8AuHIuSd/GPwAU1QOx2cY/AGwalo3Sxj8AyJj05srGPwAk7KQWw8Y/AHxUGTi7xj8A2NkQT7PGPwAw499Mq8Y/AIzbdvqixj8A6N9FrZnGPwBA+jl5jcY/AJyItSh5xj8A9J4Jc0/GPwBQ1Saa8MU/AKzLnmkVxT8ABMKkqCjDPwDAcLlTDb4/AOC64gJxqj8A6MWsagzGPwA0jBFr2cU/AEii2imaxT8A4IeRb1fFPwBArXMyE8U/ANi5kZvZxD8AQLoSy33EPwBktUKIgMM/APwqFxNuwD8A4G7kZN6tPwBAPVK2Nb+/ABwiPxCI4b+AqiXjsqv3vwCw9lpBcMY/ADQ82JC2wj8AwHQNRTy6PwBAUrgyRac/AMCIMlKikL8AsE6w6DawvwAgjSIxEbW/AKDwoiQHpL8AUFo2XgGyPwCkJ9AyitA/APRRXkGz4D8ArPlkWc3pPwCu9rZOQ/E/ADBiIHto9D8A7PSu0NL0PwCs9ghM3PQ/AN494+ry8j8AiHQVEjjvPwBm5Chp5Oc/AIT/H9UC4T8AOLaOH23WPwDw2mmDqM0/AJBugug9xD8A8CcrxnXAPwA4h3gVdL8/ALwl/sxcwD8A6Ej5MrDBPwDNzTYZhgfAgM4c0N1z9L8ADnjKdR7evwCA89Gjvrm/AGDyS8lorj8A6OV9E+O/PwBQ6X6gI8M/AKjfV/JFxD8ABBYG2pvEPwBcjBhul8Q/ALjC0sZCxD8AFLlSQVHDPwBsr2LF68A/AJBLPS5Utj8AAD5WfuGOvwCEbZkuDs6/AMgNa1qbuT8AYDSmeLGdPwDk9Rqjs8A/AECciNWqvT8AcN2koLa5PwAAPEdeE7Y/AGCT2/gntD8AOIBMnu61PwBwsQZl0rs/ABAuzWanwz8AyDcy1zDLPwAYH/uKxdE/AJgzLiRQ1T8AUBsfSkLWPwAMWUPS5NE/AMAcvMDRqj8A3L+eQTPevwBIBAvm0NU/AOCJeVtR0D8A+IJJOvjBPwAAzxhZvI+/AMy+afFV0L8A2PdeORPlvwDAfrQBgbG/AJB30ma7sL8AgG3kFtaTvwAQUo4+fbM/AOCPiP7Vu78A8NCv1JzOPwDgMSrn9tY/ABLodCh64z8A2DPkUfbnPwBsd6N86+k/AISRkzP96D8ADjtl1w3lPwAsVMFF4No/AE5B9IBQ5D8A4KHL+AjhPwCc7fF1q9s/AKA6IjY+1T8AcLyshnDPPwDQ6ilJd8Y/AFCJD7AzwD8AYI+66Ce7PwDulqE+B+6/AAAN7d2d1L8AAABnU588vwBQcrO0ocY/ALiJ67HR0T8AtEKXOJrQvwBQBj7RMLY/ACgPodf0zT8AbFKqgYvRPwBwhrb76dA/ANj7P6nUzT8AAIvy4rrJPwDA6bfrYcY/AFRVUEsFxD8A0FQPRtvBPwB4MAFyy8E/ABwOEXLrwT8A7BsSLCHCPwA8iv05+ME/ANit9x8aur8AsH3A/RWjPwCQK+hRnLk/ACQMLCgZwD8AfAJcYh/BPwDY+C2K5cA/AADa0+VZwj8AYFAgB1vCPwCwJSJATcI/AEi0x2k2wj8AgG4SpxLCPwC0gDG60sE/AJQ6RbpIwT8AwDrPlwrAPwB4JdfOZ7o/ACBhRuD3qz8ADObwdgPCPwDE0P9Z2ME/APz2nBaDwT8AoFTVxgHBPwDIKGCGV8A/AKD5Tq9Fvz8AcBbCy929PwDww2o+e7w/AGiTEFGruj8ADCa1ksXBPwAk7372sMM/ALwMHHu5xT8A9LcI/4LHPwAM97IOrsg/ABCXauQCyT8AMKwMK4LIPwDs+LkatcY/AFAJ33LZxT8ANEx5NMzEPwAsTo/Z9sM/ALBR42xjwz8AlHhs7RfDPwAgD6Pl7cI/AJCpiKHDwj8ArOmiu4/CPwAgkGZgQsI/AOC1IS23nj8AwDvucgW2PwCY881OKLs/ALCbcDH4uT8A8K65bsGxPwCAARuFp3+/AOAA8Qunvj8AeCtRe2y6PwAII/RhrLE/APD/NEczuT8AKMG6v/i4PwD4Nrb7zLc/ALjSB2jbtj8AeP6CuKK2PwDA7hlNj7c/AJDIwrE6uD8AqKCLoGO1PwAgaY3xJ50/AAScGIZBwb8AtAWV4r3gvwDQnAsOsMk/ADiK8uSIxz8A6FiwRwPEPwDQMk2LFLw/AGA+EeQErT8AgOqydUqCPwAAb9WAnZK/AAAg0/shgL8AAAsrYMamPwDoaOXhLMI/ADxZV5gC0T8ANEHlVkzZPwBc+vgHato/ALpRo9Ts4D8AuGupYfPhPwD0AlJDMNw/ALDP6JfT2j8ADAnDKHfWPwBUhksQqNE/ABDAXMm1yj8A4PZARM3EPwCk10ryRME/ALhdyNL2vj8AYKcmYvK9PwCgW0iO/70/AOB47vKDvj8AcNUa46PWvwCYl9iopLS/AGATY9lioz8AaHY5nEa3PwAYY1mXnbw/ANBP/2KMvj8AgLxi4iG/PwA4qVUdIb8/APAVNQipvj8AoALlCl29PwBY77ghLLo/AAjcyCugsj8A6AEmZSy3PwBAVF3c6J8/AMR+yjhAwL8A4iOwNcfgvwD8t0PEbfe/AHbcELdpDMAA4HAF0+CyvwBIt/dCJsy/ANzYAZK63L8AlOS6qdXpvwD0py3d5/W/gA04+2A8AsCAVUh8oQ4PwAAQbTg8lvO/AAxLVDUS7r8AYG1pmsjZvwAwgOTSz9U/AIAqGYUE8j8AlMLC9WT9PwCAo7MlrQJAADxgbsK0BEAAojCfZ/wEQABcy2uwPQRAAOrhu2EDA0AAeJP3Yd4BQAAYoDDwuwBAAEraIZsK/j8A6i9YXMv6PwDeCxcAP/Y/AIz6QIFP8T8A6JRXet7oPwDEsDAvNuA/AIQIswwwBcAAiQhWHiXxvwBs8mpV3ti/ADA9TvfYvb8AYKZ2ZHyhvwCwe3n6ka+/gKOQhtYAA8AAlqT5ElrrvwBKIymYV9O/ADjy4Wx+s78AADMxNtplPwBAr4ww9ZU/AGCG8KUClT8AoKVWTIiVPwBQrQsHFqI/ANDGHo37sD8AMM9jbnS9PwAAhJA1EcY/AEAaFPBDzT8A4K0FtGnRPwBYJov0zNI/AJigDTiR0j8AjCTU2vLQPwDY/5XyYMw/AHQCc7B3xD8AoFpjroaxPwCgJugCOLi/ABAIXOyN2r8AyJ2vO/W0PwCwAioFjq0/ACBrf3mKnD8AwFNSARmAvwBwAz7s5tG/ANDUxwTqxr8AaDX7A7bAvwAQ74hL+LW/AIBsdMq7ir8AADdlzB+3PwAQqpyKwcs/AKh7fyEf1j8AWPa0vavcPwDS+qkUI+A/AKK5ZsM94D8ANOJyV6/dPwBAYIm3ydg/ABiTXm5n0z8AQNo9GLDMPwA4Snm19MQ/AGAMxkudvj8AGIsFMbq0PwBgzDZniJo/AJA+W+R+uL8AKBNiRn3Yv4D02UL0FPm/ADu2eub75L8A8Ofnvby6vwAIn96kz72/AMTbj8HFx78A+JW9fPrRvwDAZ99jmde/AFjQ04QZ278A1KYwKWnavwBACZkFm9a/ACC0EuhB1L8A+MeHC13dvwCn7beTJfS/ACKG1QGrC8AAMC+cAGzrPwCQOteYLOc/AFDZSfbE2T8AYHI79L2ovwDa/ES5B+G/AFrcM86u7b8AVnPmmsPxvwCsPZ5wG++/ADx2eQIs4L8AuEj6e2XQPwBGvpKJPvI/AMSoo1Ve/z8A1v5oAgn7PwB3ViIwswBAAKLa7KOIAEAAgXr1xcIBQAAOESw9Q/s/ACLamEnP8T8AwI0Z9kfjPwAorw/+3Mo/AEAfFR+3ob8AuBmRH9nDvwDQ+6TVsci/AIDKWu6Cvb8AACxA4VWSPwBZwxzzzf+/AFj111aD4b8AEMh9tQ3BPwBwqMxQaNs/ALTpGMt+4D8AQEE7dO/ePwCgkF9Uvdc/ADCQ+EpIxz8AYJ9wxhu+vwDQFG07XMI/ALgV/cRYsz8AwFluglKJPwBIIe4CQbC/ADTmK1WJy78AuPvinSbav4CKXEZAqPW/ALSfoWfO2L8AsHIGU2TNvwDASIKkLsC/AKBqIgEKo78AIKa1tF6jPwDgbDwT7Lg/AEBlEGaGwj8AyIu8wBXIPwCQNG7S/M8/AIgBikPL1T8AvFarZ2fdPwAUziZHuOI/AEyClE7s5T8A3r5bOUvnPwBW1uH+ieY/APZ1my3X4z8ATNpdAKzfPwBwwS/iZtc/AOhpst5SyL8AQAnJ0z6SvwCgZpNUYKU/AGAg+gsjrj8AoMzORF6wPwAAhI0yhK8/AHCJf93+pj8A2XSWxNfgvwCG7hbwi9i/AKx54DFG5b8AC76yi2f5vwCg9/gNEKe/AMAspTmpwb8A6BLRD2zSvwCc2fwR1N+/ALyHhVrJ578ANnaVv5fvvwDN+rpGbfK/AAO0sFAv8r8AxBCvKnjsvwCAIk+Cpte/AEDe0zfg1T8A6BynlwbyPwAWjUaQGf0/AFb9NeIZAkAA+LzEjQcDQABYHX++jgFAAOKjFjfB/D8AYbchssH0PwCARiUiP+s/AOigAzoM3z8AIP5kZLDPPwAQ6TwuHr0/APCJxXPDqD8AoB9frJaTPwAA+qPjV5K/QDz4aBTmA8AASzv84sP1vwBYwGn++/W/ACRu186wwb8AcE7rjda5vwCgpz86xcO/AOzpRQag0L8AjL0CNb/YvwDwJJ7lJ+C/ANxcIRQH4r8AcgoBBc7gvwBMhQaB7Na/ACBAlDjJsL8AwH5Jn/3RPwAAMB0zleI/ANAFmwCr8D8AvtdgdSrzPwCcPuMOmvI/ALFrRYwQ8D8ArJ7JRN7nPwCE8FheCt4/AJDnN0BMzD8AgCTCaL6NPwAI+86xc8e/ALDFBmXF378AHVvrb83yvwBwH1A4O7M/ANAEhs7fsT8A/J6Ao2rpvwAW/PwK4uG/AP540+I86r8AI/GBBc75vwDclvcMs+K/AADRbP0p5L8AsGKEJiTivwAQEt0Tr9q/AMDvxajXy78AAKcYGiyNvwAQmbb8G8M/AJjuePHw0j8AkCpV0YjQPwDAva1GwuM/AKT8nX/F7z8AaIpiavL1PwBYs/Apv/o/AGaH40iR/D8A4pUg73v5PwBIElG2/O0/AKi7LMV9278Adh+ucDPpPwBuPwwN4fC/AC5ajkwU5b8A4DjptPzlvwCoaYYHK+y/AIy6g+1h8b8A26RvhDnzvwDvzCIRF/K/AKhlL2DDAMAAcOO3UhnpvwC47CodZ9U/ANqDPVU78z8ADGGe+lD9PwC+J83pIwFAAPiLwaczAUAAxkCJKc/9PwDinrUe7PY/ALCsQ4k77z8AKCd7DJviPwD088o99tM/ALBOe9m4wz8AIJV1KKC2PwDgiqN7i7I/ALj6q6Jdsj9Arev8Me4FwICU4aN2BPO/AE3wUj8Y5r8AuPKnQczuv0CcgnYMpwHAAJgmkVIs9r8A8slEc3kLwAAu7Yy+G+K/AHaBnVCE778A5ln5ccT4vwBnJPddggLAAKFN2N3SCMAAOor0tEIKwAAwDbTeHg7AgEifz9/TEcAAhGDPK+TxvwDw5qbAQto/ALC97V69/z8AKgrugU4KQACmArrTORBAAE76tpfNEEAA/i6VzZwOQACYRZwLvQlAACQtH1wXBUAAgfEDVv0BQACzkZHQ6gBAAMu/SvziAEAAsMswPO4AQAAUOE9LCgBAABC8/R380z8Arsze7A3pPwD4qeOq/QvAAIVK54W2878AgOGKRsHYvwA4ShgVAcK/AETKX0r+wL8AhgeuK0ngvwBYI5pqD7q/AOibzzVlsL+AX3i1atX0vwAcx2Qzxea/AL1mnBtr6L8A51PMTSH4v8CfFqs76gvAAKzLtk6z4L8A2GQogqLrvwB+6URXjfi/gG65L5/HBsAAm4ZncU/+vwC7xSJOvQPAAD5lL/ZcB8AAHIvNp/oHwACrsq6AbwTAAGwZpsm29r8AANZ5/WjGPwB0bcBSnP0/AHgZ862KCEAAuBQvfZQIQACvcydHvxVAAAJlAopdFEAAnFBy6q8QQAB7YUsEZQRAABIzVBzy9j8AaNh5IDrYPwCo3uIUSti/AHxbGzkL5r8ADPjZDfDgvwAAKpT44Y0/ANXYiZbpEsAAqLB+eDXnvwBOu3lHffM/AJLCgQrS/z8AKMq8++DzPwBmk/LrQfc/AMRTS6UJ8z8A6hYEedHpPwC0QPS1rto/AHi2Fw32yT8AAFRH5mKzPwCAu7n1VXs/AHANYSC/pr8ABPrQ+lPCv0AM5/aJowDAAAXL3SJf+r8AEHooW7nSvwAY9U7TWsi/ABjXmvhXzL8ASqxwkl7UvwAwAcwUNty/AA5naWK94b8AeDvSz6XkvwAcOGzgPOe/AGhHLwyf0L8AQMWEu7CbPwC4t1vV99U/ANp1azhB4z8AcqOzuafnPwDuhRbibec/AMJz8IyE4z8AJH6RVv/bPwB06fC769I/AJhPTLHEzT8A5Kq7jbbQPwDY4bDUYNY/ALANICyR3D8AABGvpTfgPwBCFzZlHeA/AEbA+DBP6b8A+E2AX//EvwCgTU6naqY/APj+FNY2tD8AsChy5yirPwCAsTRVOHk/AJBAPNcatL8AwAN7MkfRvwDI2ESRBee/ALC7pCwc5L8A1PL9fAfSvwC8iELyns+/AGq1bgMb1L8AqoOsKbzbvwAqFWXFBuK/ABgCewvh5b8A8OwOWKDpvwBWPmwP3++/AOAymNMzv78A4OwaNITKPwBkwmXUPeA/AJIzBv+N5j8AFqa/BR7oPwBycpYFP+U/AGioWLDB3j8AgK6T8inQPwCAba76mqu/AEZMDQK85L+AdzEGqH4AwAAgn10Nqs8/AGATLh1Luz8AmFMdZoDLvwA6C8+vKue/AHn3iHx4/r8AurXgsTACwABquqFGFwTAADO+DuOTA8AAMCPPJZb9vwDcWDqJNue/AAQ/J8sa6T8As0is5pcCQACMqiuKPwhAAJZkFiG/D0AA8XkJekcQQADOXRHNQAxAAFBAlEl2BUAA1FlnOov8PwDw6SBDQPA/AKB6lJJn3z8AgFYCdrLGPwBAw90VtqA/AEBbaK2UlL8AQJl+keqjv4Auu42hdQvAgAQD0JJG978AlYgzHK7qvwCqFDVyU/G/AMNLh6iAAsAA9DFhr6rIvwAYr2RY9NS/AIfcEz0N4b8AYF0AEEHpvwAVZL9Yt/C/AEOhqKGt878AhJqphsfzvwAqk/4UA/C/AHCoPjKy378AMIBuynXMPwDATG2br+8/ACQDB7w4+j8AkIrJiCcAQABtB3/AmQBAAHgP8FRg/T8ANasyweT2PwCMHUUBJO8/AEyKWWSd4j8AqON59wnTPwBwe2p4wb4/AACtFO8RhD8AAJBuj+WQvwAQ3JSrn6C/AGLGN26z/r8A/njG/vjpvwA4AyGv89u/AKOEbpQB4b8Aky5sF47yvwBwV5CWrr+/AFylxkLJy78AjPAoP6HXvwDu2eLNc+K/AAx4Qo9Y6r8AGaPyGezwvwC2GQ1iE/O/AC8ZCZhj8r8AwgHLey7rvwBQJrue+9O/APjs92J52D8AAvGG4TLxPwD60uY42Po/AIaVQdI1/z8A9gbHD6b+PwCB4+B/Gvo/AFHGY8FN8z8AvO0FX/voPwBk+n4OPds/AOhrHo5CxT8AoIYj4D6qPwAAgEgKpBE/ACDUvdBBl78AsLMs7tixvwAp+nrJo/i/AG6IOa0e378AMIyDKiDHvwD4VSDt4rm/ANgPuHuhvr8AnPCTk6zGvwBA+JHQvM6/ABhf4ur40b8AqMooROjRvwAQ1VwNmsy/AIBd56zgwL8AuOB98zTAvwDYW6BHksi/AIbrBJBC57+A9BfYeuwBwACAaZQ2aM4/AIA8Qem+hj8AGGlsoj7UvwDc9ZjDdOa/AIhiSgY98b8AlpmNIvX1vwDyjMxNYPi/AHPJLFUI8b8ARGuYCJ7gvwCAMocgkc0/AARTl4Od5j8A7kZAHvL3PwDA/IXm9v0/AKj1Bz6u/T8Awu5f/P33PwBIyzk5mew/ACS+VRGy6z8A4Diig9HhPwCc0V/Gn9Y/AFDkiejJyz8AUKCXYH+9PwAAFHR1IZg/AIBSY8c4qr8AzDwk1Y35vwCkh813nuS/ACDtx2BPxr8AECFMIBy6PwDUgTpSNdI/AGgJ4c+52D8AtE6TVvnYPwDIR2BVZ9E/AAhEXUS9yL8AUE555qzBPwBgc8KbJq8/AMDFNNltpL8AZNLnjkPCvwDEYFtZrc6/AIygpTtY1L8AoKpp7BHXvwCuWzgxo+m/ALxsOYIH3L8ASKh7CyTFvwCgzNUqqbM/AHzBDw+i0T8A7NnYxWPdPwDWfslg7uA/AEQN4B5g4D8AYLL/+TXbPwAU171KudM/ALDNv4hRyD8ACBYO8/O4PwBwTUYWBaM/AIAj3fIMeT8AAPtAX45mvwAAsJS7cy6/AAA04o5SeD8AWkcHx9vRvwCYmEEt47m/AHBAcmvHo78A8L0UtFuivwAw8EN1grW/APwlGzodzL8AaIudplvhvwBAlae+tbG/AJQwL134wb8A6PCqFGXTvwArsu60Rea/gLp8xdL0+r/AlfIiCy8QwIDDBdftJCPAAN0fh1nq8b8ATGLtLVf6vwBOXh9CUAPAAP+GvAadC8CACtPItGsSwICg51Z5cRbAAAGpLg0GGMAAOdYRoz0VwADu6Ox7UgvAAKgUwZ+K4L8ASuAMoeUDQACMSEAn1htAADbiEP5SIkAADd3Y+5gjQAAUwmpExSFAAAsNqi/fG0AAg/uOuuUQQACeoqKn8ANAALx6CrkX8z8AAE0SqnbePwBgE804kNM/ABj27vH43T8AwDuXJ8TnPwBaH7ylQyHAAFkOMs5nBsAACLIC+VzdvwCkb8G3RtM/AOxVNpaq2j8AxNKlVOLUPwDgYq/VVsk/AOAov6Dztz8AwKzA/O6EPwAAQlppzLS/AEyZPOQbzr+AeWsnOkHxvwAojln4S+i/ANiBMUGezL8A3BLLm4nHvwCY3fFtgcu/AHKtY7Jj1L8AfPe0KezZvwCmZ5GiI+K/ABRhCC170r8AwAfi+yfMvwCQUS4E67y/AAD2YNg/ej8AgOP5wMC8PwD4Lo0AZ8c/AIjnGwrYyj8AAARA4JnJPwBo2gpeGMU/ANARW5lCuT8A0BmhfqLMPwDIJ3OY484/AJBCGDdDzz8AgI3+OlXMPwBg2XtCucU/ACCl8d2NpL8AQCBrqUiZvwCAGtm8VM+/AMD+ozuiv78AAEw7JRyrvwAAC3iGa3U/AABeI0r0rD8AsAS6HQy4PwAAzyZBU8O/AABEoBnyY78AEEqd06SoPwDgQZhhjKY/AOCUm23Tlj8AAGhGf9o2vwCgXeaTtpK/ACBG95oWn78AMCSykv2ivwBQsiq8b6S/AAQxmLWZyr8AmG2bf3i7vwDgQlzGurC/AAAF/VFdrr8AkDwn8JS4vwCoc4GCtcy/AE/tjVpS4r8AnPiv4c/2vwAsfPUPCcO/AIwXa73W0L8AmPigBn/cvwAc4+75rua/AIRMxtHi8L8ArdDFK/T3v4DyxT7ghgDAAPi+J7OL978AyKyfUwv0vwAg6HNzR+i/AABiNBsavL8A8Cg+HwziPwDukHGaivE/APCoyk9E9j8AkO8UYd32PwCO/LZGR/Q/AHAzEDtn7j8AGJ7SR8zcPwCOz7zVePA/AHg5p6FE7z8AQDbs5UDsPwB0y8g14+U/AGAQnxLj1j8AKNTUL3bBv4A+7khhVwLAAHyj1/h16L8A9EQoDa/evwAwDcngdtS/AICaD5Upyb8AoHnVNv+6vwDQCmYAArC/AFzIZtEI5b8A4Cx71p7RvwDA1zfItau/AOilLBrCxD8A9CVWap7aPwBSyVRAtOU/APADQ+Jn7D8AnCN17avvPwBaiJemte4/AKi4AlBz6j8AQJJfUzm6vwBASSVzLcA/ADDEsp2GwT8AAEqbn2a0PwBgiRJl2Zg/AID2pThSjL8AkMpPyUuhvwDA4cbi46W/AI2BEzP64r8A8AcBTpDQvwAAM8xxrL+/AFBG9FvFsr8AMLN4zeesvwDQ2VxBGqu/AGAAcTqHrb8AgJNk92qzvwBgU15SOcC/AIYuweVz0L8Aq5nFfyTivwDYK4qrE7u/AKB2ZY60xr8ADvGx+Z3VvwDPnrCsTOa/gKasxAHa978AzRhN55wJwABut8rpAuW/ACqQlj3s6b8AzlCgyLvuvwDSyqpiffG/AIypSFVJ878A+6WUDA/0vwC63wQwVvO/AI5mrNlS8L8AbLY8a+7lvwAA8s4LWdW/ALgYTtd/7D8AWMk/Mkn5PwB9JMtlhABAADDVgLLTAUAAkmdtX5EAQAA6FSCndvo/AFoZmbQe8j8AFJUxdVvkPwCoCpP1/sm/AKBhYJE0xr8AfJAl26jRvwBY8yRn9OS/AGinnWP71z+AS2WpVfsDwADIyu081eq/AET/CbQY0L8A8Oa4/+PIvwDYkKIgrda/AEYNaatS4b8AgDGowpDkvwA+YZJP2eK/ANS7AFz3178AoMhepgKgvwBs4DEeXtc/ALiFUf/FwT8AZGsahA7mPwAs32lOe+o/AHDcsywh4j8AIMwoiPHNvwBxBmOeXv+/ADi5Txlhxz8AYKO1xWa6vwCk0Dtu/N2/ADiNlhMT7L8AkF51RSL1vwDIv1bJxvu/ALVOdm08CMAAKVOnegkEwADgeHZeVP+/AJiRF2o5878AYNy+o6vJvwBUy+ryBew/ABz/Qri1/D8ARxk7YQ4CQADAPZvvGP8/AEixkSU92D8A10RmERcCQAA9GKwUF/k/AGaaFxUt6D8AwKK+xWiwvwBSa4YA6uq/APl1paBE+L8AVUQdORsAwADmXFVatAHAgO+FuFafE8AAFEMCyvcEwAAIvwxGYu+/AAggU+iN3z8AymQZDM37PwBeUgezEAVAAD2Ps0VqCEAAhxMIfKQHQACUe6uTnQJAAJZAGoapAUAAoakDVfb4PwCiKTYOJ+4/ACTnuvmL2z8AYKINrdOiPwBo0gYkotC/AGQAcEeo3b9AnQkrUxQTwIByd0/x7QLAAE9Q9LQ6878ALPnKe5jhvwAgGh7RL7y/AFjwQcHlzT8AiME+5RffPwDkyvsYsOM/AEBgtc1m4j8AdDlam0TUPwBc5r3mh+E/AIz3hkZ+2D8AEPl61I7KPwBAkzvhTqU/AIDFgb7Rub8AqDyRd4rLvwAoHA+y59K/AITpHIlU1b8AMkzJJt7uvwDmAuCEleC/ABDDgILPzr8AAAXwnUGivwDgZse37b8/ABjBoR6azz8AFLfhVTLUPwCUYfo079Q/AByT7vjL0j8AiGLX2XvNPwAwLr7sucM/AJhHHN9HtT8AABooekyYPwBAAFWJBpW/AFDIA3U2rL8A+LvLsH+3vwB0vvREyMO/AOi/6E2m4b8AUcINZxLnvwB23owNCdS/ALf1Wtj54r+AtyAjhtb0v0BF6XllIgfAAOyvSOiE3b8AFlkkXa/lvwCsMFBJqu6/AHIC+//J9L8Abu3Ehn76vwDEpKFQv/+/ABBNhZyPAcAAbU3vAHQBwABg7gKSU/6/ABi7DhB+9L8AsIqFJF/avwDgkwDz1+I/AOjdzdP39z8Ajq3oEzUAQABbog9X1AhAAPVSbUqLCUAAgJSzIjkIQAA98VIT6ANAAL2I8SX2/D8AUFZripXxPwDg1eonWd4/AIo8zq/F578ARg7lBwTkvwCwngchq+G/AJhiu9iH2r8A3gQhSbUJwABPRjt/O/O/ABggl3dFwr8A6MDT2LraPwDus/kAE+Y/ALyEBHv26D8ACNHe7tXnPwBg/LGuEuQ/AMTA5b163j8AAEKCv0fUPwDIf9hP2sU/AACEgbN/nj8ATO6ety/CvwBmKjwEc9u/gEBIiGoU8L8ATHfMh3DjvwDkI7x+I9i/ANjv0AzY2b8ALKobrz7bvwDaAMt8R+G/AMz0HvHK5r8AvtVwePPsvwAJNKZbDvG/AG45ipB18r8Ani7ULLjxvwAEkAOfXO2/AGA/Mpg3478AIO2d5DnPvwAAsjSa8Zu/AEAC1abIy78AMFmRrgn0PwDS1DYm3PU/AKANt8Rk9D8AyIXThWbwPwBmewlmYOU/ABhcDgcW0j8AMDYaLfixvwAsIoEEYNW/AAR+a5BT3r8AyNs5aw/evwDQOkoNdtW/ABql8HPM+78AiK+oDfLgvwCAFGOFi8U/AOgG+tnr4T8ALrOAiufnPwAezgv12+g/AFCTPcqn5T8A5KYsNTLePwA4gimFXsI/ACAF7BSbtD8ATB7xG6LVv4Citcn7BfG/AFiPadIpt78A7J24z4DIvwCg//B0RdO/ACRj38dn778ALDgGCO/pvw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2762\"},\"selection_policy\":{\"id\":\"2761\"}},\"id\":\"2741\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2722\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2723\"}]},\"id\":\"2740\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2737\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2720\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2694\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2672\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2762\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2719\"},\"glyph\":{\"id\":\"2720\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2722\"},\"nonselection_glyph\":{\"id\":\"2721\"},\"view\":{\"id\":\"2724\"}},\"id\":\"2723\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"2699\"}},\"id\":\"2704\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2700\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2738\",\"type\":\"Selection\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"2703\"}]},\"id\":\"2718\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2695\",\"type\":\"Selection\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"2684\"}]},\"id\":\"2698\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2686\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2698\"},{\"id\":\"2718\"},{\"id\":\"2740\"},{\"id\":\"2764\"}]},\"id\":\"2697\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2681\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2692\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2699\"},\"glyph\":{\"id\":\"2700\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2702\"},\"nonselection_glyph\":{\"id\":\"2701\"},\"view\":{\"id\":\"2704\"}},\"id\":\"2703\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2716\"},\"selection_policy\":{\"id\":\"2715\"}},\"id\":\"2699\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2738\"},\"selection_policy\":{\"id\":\"2737\"}},\"id\":\"2719\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2744\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2690\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2716\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2721\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"2741\"}},\"id\":\"2746\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2689\"},\"group\":null,\"major_label_policy\":{\"id\":\"2690\"},\"ticker\":{\"id\":\"2663\"}},\"id\":\"2662\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"2719\"}},\"id\":\"2724\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2693\",\"type\":\"AllLabels\"},{\"attributes\":{\"source\":{\"id\":\"2680\"}},\"id\":\"2685\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2654\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2701\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAAAKBpQAAAAAAAwGhAAAAAAAAAaUAAAAAAAOBoQAAAAAAAgGZAAAAAAABgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAACgaEAAAAAAAIBoQAAAAAAAQGhAAAAAAACgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAABgZ0AAAAAAAOBnQAAAAAAAoGlAAAAAAAAAaUAAAAAAAMBoQAAAAAAAAGlAAAAAAACAaUAAAAAAAIBoQAAAAAAAYGhAAAAAAABAaEAAAAAAAABpQAAAAAAAwGhAAAAAAAAgaUAAAAAAAABqQAAAAAAAoGlAAAAAAABgakAAAAAAAGBqQAAAAAAAgGtAAAAAAACAa0AAAAAAAIBqQAAAAAAAAGpAAAAAAADAakAAAAAAAEBsQAAAAAAAYG1AAAAAAAAgbUAAAAAAAKBtQAAAAAAAQG5AAAAAAABAbkAAAAAAAKBuQAAAAAAA4G1AAAAAAABAbEAAAAAAAABtQAAAAAAAwG1AAAAAAABAbEAAAAAAAEBrQAAAAAAAQGtAAAAAAADAakAAAAAAAKBpQAAAAAAAAGlAAAAAAAAgaEAAAAAAAGBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAOBpQAAAAAAA4GpAAAAAAADgaUAAAAAAAEBrQAAAAAAAQGtAAAAAAACAa0AAAAAAAIBrQAAAAAAAoGxAAAAAAACAbUAAAAAAAMBvQAAAAAAAgHBAAAAAAACAcUAAAAAAABByQAAAAAAAEHJAAAAAAADwckAAAAAAAOByQAAAAAAAkHJAAAAAAACQcUAAAAAAAGBxQAAAAAAAgHFAAAAAAACQcEAAAAAAACBwQAAAAAAAYG5AAAAAAAAAbkAAAAAAAABtQAAAAAAA4GxAAAAAAAAgbUAAAAAAAMBuQAAAAAAAAG9AAAAAAAAgb0AAAAAAAABwQAAAAAAAAHFAAAAAAAAQckAAAAAAAHBzQAAAAAAAQHVAAAAAAACwdkAAAAAAAJB4QAAAAAAAgHtAAAAAAACgfUAAAAAAACB+QAAAAAAAwH5AAAAAAADAf0AAAAAAAOB+QAAAAAAAsH1AAAAAAABwe0AAAAAAANB5QAAAAAAAAHdAAAAAAACwdEAAAAAAALByQAAAAAAA4HFAAAAAAABgcEAAAAAAACBuQAAAAAAAwG1AAAAAAACAb0AAAAAAALBwQAAAAAAAQHFAAAAAAABgcUAAAAAAAMByQAAAAAAAUHRAAAAAAAAAdUAAAAAAAHB2QAAAAAAAUHlAAAAAAACgfEAAAAAAAFB/QAAAAAAAoIFAAAAAAAAAhEAAAAAAAHiGQAAAAAAAeIhAAAAAAAAoikAAAAAAAJiKQAAAAAAAEItAAAAAAADgiUAAAAAAANiHQAAAAAAAyIVAAAAAAADQg0AAAAAAAOiAQAAAAAAAEH1AAAAAAABweEAAAAAAAPB1QAAAAAAA0HJAAAAAAADAcUAAAAAAAEBwQAAAAAAAAG9AAAAAAAAQcEAAAAAAAEBuQAAAAAAAwG5AAAAAAABwcEAAAAAAAPBwQAAAAAAAkHFAAAAAAADgckAAAAAAAFBzQAAAAAAA8HRAAAAAAABgdUAAAAAAAJB1QAAAAAAAQHZAAAAAAADwdUAAAAAAAFB1QAAAAAAA4HRAAAAAAAAQdEAAAAAAAOBxQAAAAAAAwHBAAAAAAAAAcEAAAAAAAMBtQAAAAAAAoGxAAAAAAABAa0AAAAAAAOBrQAAAAAAAAGtAAAAAAABgaUAAAAAAAGBpQAAAAAAAQGhAAAAAAACgaUAAAAAAAIBoQAAAAAAAIGhAAAAAAADAaUAAAAAAACBpQAAAAAAAIGlAAAAAAAAgaUAAAAAAAABpQAAAAAAAQGhAAAAAAACAaEAAAAAAAGBpQAAAAAAAYGhAAAAAAACAaEAAAAAAAGBqQAAAAAAAAGtAAAAAAADgaUAAAAAAAOBqQAAAAAAAoGtAAAAAAACgbUAAAAAAAABvQAAAAAAAUHBAAAAAAABwcUAAAAAAAPBzQAAAAAAAEHVAAAAAAADAdkAAAAAAAHB6QAAAAAAAkH5AAAAAAABogUAAAAAAALCDQAAAAAAAyIZAAAAAAACwiUAAAAAAAHiNQAAAAAAAjJBAAAAAAACwkkAAAAAAAEyTQAAAAAAAEJNAAAAAAADkkkAAAAAAAKCRQAAAAAAASI9AAAAAAAAAi0AAAAAAAMiGQAAAAAAAyIJAAAAAAAAAf0AAAAAAACB6QAAAAAAAMHZAAAAAAACQc0AAAAAAAHBwQAAAAAAAwG5AAAAAAABAbEAAAAAAAMBqQAAAAAAAwGtAAAAAAADAa0AAAAAAAGBqQAAAAAAAYGpAAAAAAABAaUAAAAAAAMBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBoQAAAAAAAIGlAAAAAAABgaUAAAAAAAGBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAIBoQAAAAAAAwGlAAAAAAABAakAAAAAAAKBoQAAAAAAAgGlAAAAAAAAAaUAAAAAAAKBpQAAAAAAAgGhAAAAAAABgaEAAAAAAAKBpQAAAAAAAgGlAAAAAAAAAaUAAAAAAAGBpQAAAAAAAAGpAAAAAAADgaUAAAAAAAEBpQAAAAAAAYGlAAAAAAADAaEAAAAAAAIBpQAAAAAAAQGpAAAAAAAAAa0AAAAAAAEBqQAAAAAAAoGxAAAAAAADgbUAAAAAAAOBuQAAAAAAAYHFAAAAAAADgckAAAAAAAEB0QAAAAAAAMHdAAAAAAABAekAAAAAAABB9QAAAAAAA0IBAAAAAAACwg0AAAAAAABiHQAAAAAAAmIpAAAAAAACAjkAAAAAAANCQQAAAAAAAJJJAAAAAAAAYk0AAAAAAACyTQAAAAAAAjJJAAAAAAAAgkUAAAAAAACCOQAAAAAAACIpAAAAAAAAghkAAAAAAAFiCQAAAAAAAAIBAAAAAAABAe0AAAAAAAHB4QAAAAAAAAHhAAAAAAAAgd0AAAAAAAHB4QAAAAAAAMHpAAAAAAAAAfEAAAAAAAKB+QAAAAAAAuIFAAAAAAACQg0AAAAAAAHiFQAAAAAAA+IZAAAAAAABgiEAAAAAAAHCIQAAAAAAASIdAAAAAAACIhkAAAAAAALCEQAAAAAAAmIJAAAAAAAB4gEAAAAAAAOB7QAAAAAAAkHhAAAAAAADwdEAAAAAAANByQAAAAAAAQHFAAAAAAABgb0AAAAAAAEBuQAAAAAAAoGxAAAAAAAAgakAAAAAAAOBqQAAAAAAAQGtAAAAAAADAakAAAAAAACBqQAAAAAAAAGpAAAAAAACAakAAAAAAAEBqQAAAAAAAIGpAAAAAAABAakAAAAAAAKBpQAAAAAAAIGpAAAAAAABgakAAAAAAAGBqQAAAAAAAAGtAAAAAAACgaUAAAAAAAIBpQAAAAAAAQGlAAAAAAAAgaUAAAAAAAABpQAAAAAAA4GlAAAAAAACgaUAAAAAAAEBpQAAAAAAAIGpAAAAAAABAaUAAAAAAAGBpQAAAAAAAwGlAAAAAAADAaUAAAAAAAABpQAAAAAAAQGhAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGlAAAAAAABAakAAAAAAAOBpQAAAAAAAoGlAAAAAAABAakAAAAAAAIBpQAAAAAAAYGlAAAAAAABAaUAAAAAAAKBpQAAAAAAAIGlAAAAAAAAgaUAAAAAAAOBpQAAAAAAAoGhAAAAAAADAaEAAAAAAAGBpQAAAAAAAIGpAAAAAAAAgakAAAAAAAABqQAAAAAAAgGlAAAAAAAAgakAAAAAAAOBoQAAAAAAAgGlAAAAAAADAaUAAAAAAACBpQAAAAAAAoGlAAAAAAABAaUAAAAAAAIBpQAAAAAAAwGhAAAAAAADAaEAAAAAAAKBqQAAAAAAAQGpAAAAAAACAakAAAAAAAMBqQAAAAAAA4GpAAAAAAAAga0AAAAAAAEBqQAAAAAAAwGpAAAAAAADgakAAAAAAAOBqQAAAAAAA4GpAAAAAAAAga0AAAAAAAMBrQAAAAAAA4GxAAAAAAADgbkAAAAAAAIBvQAAAAAAAEHFAAAAAAAAAc0AAAAAAAMB0QAAAAAAA4HZAAAAAAACAeUAAAAAAAPB8QAAAAAAAoIBAAAAAAABYg0AAAAAAAPCGQAAAAAAA4IlAAAAAAACAjUAAAAAAAFiPQAAAAAAAfJBAAAAAAAC4kEAAAAAAANCPQAAAAAAAgI1AAAAAAAAIikAAAAAAAKiGQAAAAAAAyINAAAAAAACwf0AAAAAAANB7QAAAAAAAsHdAAAAAAACwdUAAAAAAAMBzQAAAAAAAoHFAAAAAAACwcEAAAAAAANBwQAAAAAAAkHFAAAAAAAAAckAAAAAAAMByQAAAAAAAcHRAAAAAAACgdUAAAAAAAMB3QAAAAAAAAHlAAAAAAADgekAAAAAAAFB8QAAAAAAAsHxAAAAAAAAwfEAAAAAAALB6QAAAAAAAIHlAAAAAAABwd0AAAAAAAIB1QAAAAAAAUHNAAAAAAABQcUAAAAAAAJBwQAAAAAAAwG5AAAAAAADAbkAAAAAAAMBsQAAAAAAA4GtAAAAAAABgbEAAAAAAACBsQAAAAAAAIGtAAAAAAAAga0AAAAAAAOBrQAAAAAAA4GtAAAAAAACAa0AAAAAAAOBrQAAAAAAAQGxAAAAAAAAAb0AAAAAAACBwQAAAAAAAIHFAAAAAAACQckAAAAAAAEB0QAAAAAAAMHZAAAAAAACQeEAAAAAAAKB8QAAAAAAAgIBAAAAAAABogkAAAAAAAICFQAAAAAAAaIhAAAAAAABAikAAAAAAAGCLQAAAAAAAUItAAAAAAAAAikAAAAAAAOiHQAAAAAAAUIVAAAAAAAAog0AAAAAAAGCAQAAAAAAAcHxAAAAAAACAeUAAAAAAAAB4QAAAAAAA4HZAAAAAAABwd0AAAAAAAIB4QAAAAAAAoHpAAAAAAABgfUAAAAAAADiAQAAAAAAAYIJAAAAAAAD4g0AAAAAAAEiFQAAAAAAAAIZAAAAAAACohUAAAAAAAFCEQAAAAAAAwIJAAAAAAADggEAAAAAAAOB9QAAAAAAAwHlAAAAAAACAd0AAAAAAAJB1QAAAAAAAoHRAAAAAAAAQdUAAAAAAAOB1QAAAAAAA8HdAAAAAAACgekAAAAAAANB+QAAAAAAA2IFAAAAAAAAghUAAAAAAABiJQAAAAAAAwIxAAAAAAAC8kEAAAAAAAHySQAAAAAAAfJNAAAAAAACck0AAAAAAAIyTQAAAAAAAfJJAAAAAAACwkEAAAAAAAIiNQAAAAAAA6IpAAAAAAABYiUAAAAAAAGiJQAAAAAAAQItAAAAAAABIjkAAAAAAAICRQAAAAAAAdJRAAAAAAADcl0AAAAAAAKiaQAAAAAAAAJ1AAAAAAACAnUAAAAAAALScQAAAAAAAxJpAAAAAAABwl0AAAAAAACSUQAAAAAAAPJFAAAAAAABAjEAAAAAAAGiHQAAAAAAAmINAAAAAAADAgUAAAAAAADiBQAAAAAAAgIFAAAAAAABQgkAAAAAAANCDQAAAAAAAmIVAAAAAAAB4h0AAAAAAAPiIQAAAAAAAwIhAAAAAAACgiUAAAAAAADCIQAAAAAAAAIdAAAAAAABAhUAAAAAAAJiDQAAAAAAAkIFAAAAAAAAQgEAAAAAAALB8QAAAAAAAgHpAAAAAAACgdkAAAAAAANB0QAAAAAAA4HNAAAAAAADAckAAAAAAAPBxQAAAAAAAkHBAAAAAAACgcEAAAAAAAGBwQAAAAAAAcHBAAAAAAADgb0AAAAAAAOBwQAAAAAAAYHFAAAAAAAAQckAAAAAAANBzQAAAAAAAcHVAAAAAAAAAeUAAAAAAAEB9QAAAAAAAiIFAAAAAAAC4hUAAAAAAAEiLQAAAAAAAMJFAAAAAAABwlUAAAAAAAPCZQAAAAAAAiJ5AAAAAAABgoUAAAAAAAMCiQAAAAAAANqNAAAAAAAAGo0AAAAAAAIqhQAAAAAAACJ9AAAAAAAAcmkAAAAAAADiVQAAAAAAA+JBAAAAAAAAgi0AAAAAAAFCFQAAAAAAAEIJAAAAAAABIgEAAAAAAAACAQAAAAAAAyIBAAAAAAADAgkAAAAAAAACGQAAAAAAAuIpAAAAAAAAgkEAAAAAAAECTQAAAAAAA6JZAAAAAAAB0mkAAAAAAACidQAAAAAAAuJ5AAAAAAACgn0AAAAAAAICfQAAAAAAA2JxAAAAAAAAMmkAAAAAAAFSWQAAAAAAAbJJAAAAAAACwjUAAAAAAANiHQAAAAAAAuIJAAAAAAABAfkAAAAAAAEB5QAAAAAAA8HVAAAAAAAAAc0AAAAAAAMBxQAAAAAAAEHFAAAAAAAAwcEAAAAAAAGBvQAAAAAAAYG9AAAAAAACAb0AAAAAAAKBuQAAAAAAAMHBAAAAAAABAb0AAAAAAAKBvQAAAAAAAAHBAAAAAAACAcEAAAAAAANBxQAAAAAAA0HJAAAAAAACgdUAAAAAAAGB4QAAAAAAAoHxAAAAAAACAgEAAAAAAAICDQAAAAAAA6IZAAAAAAADoiUAAAAAAAKCMQAAAAAAA4I5AAAAAAAAQj0AAAAAAAAiNQAAAAAAAWIpAAAAAAAAwh0AAAAAAAPCDQAAAAAAAeIBAAAAAAAAge0AAAAAAAJB3QAAAAAAAAHRAAAAAAACgcUAAAAAAABBxQAAAAAAAAHBAAAAAAABgbkAAAAAAAABuQAAAAAAAAG5AAAAAAADAbEAAAAAAAIBrQAAAAAAAwGxAAAAAAABgbEAAAAAAAABsQAAAAAAAYGtAAAAAAABgbEAAAAAAAGBsQAAAAAAAAGxAAAAAAADAa0AAAAAAAOBrQAAAAAAAIGtAAAAAAACgakAAAAAAAABrQAAAAAAAYGtAAAAAAABga0AAAAAAAEBrQAAAAAAAgGtAAAAAAACAa0AAAAAAAIBrQAAAAAAA4GtAAAAAAAAgbUAAAAAAAKBtQAAAAAAAIG9AAAAAAAAgcEAAAAAAAFBwQAAAAAAAsHFAAAAAAAAAc0AAAAAAAEB0QAAAAAAAsHVAAAAAAAAQdkAAAAAAAHB2QAAAAAAAsHZAAAAAAAAAdkAAAAAAAFB1QAAAAAAAoHRAAAAAAABAc0AAAAAAADByQAAAAAAA8HBAAAAAAADAb0AAAAAAAKBuQAAAAAAAoG5AAAAAAADgbUAAAAAAAIBsQAAAAAAAIGtAAAAAAAAga0AAAAAAAEBrQAAAAAAA4GtAAAAAAADgaUAAAAAAAEBrQAAAAAAAwGtAAAAAAADgakAAAAAAAEBqQAAAAAAAAGtAAAAAAACgakAAAAAAAIBqQAAAAAAA4GpAAAAAAACAakAAAAAAAMBqQAAAAAAAYGpAAAAAAADAakAAAAAAACBrQAAAAAAAoGlAAAAAAADgaUAAAAAAAKBqQAAAAAAAAGpAAAAAAABgakAAAAAAAKBpQAAAAAAAwGpAAAAAAACgakAAAAAAAIBqQAAAAAAAgGpAAAAAAACgakAAAAAAAOBpQAAAAAAAYGlAAAAAAABgakAAAAAAAGBqQAAAAAAAwGpAAAAAAADAakAAAAAAAOBpQAAAAAAAYGlAAAAAAACAakAAAAAAAIBqQAAAAAAAwGpAAAAAAACgakAAAAAAAEBpQAAAAAAAQGpAAAAAAABgakAAAAAAAGBqQAAAAAAAwGpAAAAAAACga0AAAAAAACBrQAAAAAAAgGpAAAAAAADAakAAAAAAAGBrQAAAAAAA4GtAAAAAAAAgbEAAAAAAAGBsQAAAAAAAYG1AAAAAAAAAbkAAAAAAAGBuQAAAAAAAgG9AAAAAAAAgb0AAAAAAACBvQAAAAAAA4G9AAAAAAABgcEAAAAAAAKBxQAAAAAAAQHNAAAAAAADwdUAAAAAAAOB4QAAAAAAAYH1AAAAAAABogEAAAAAAAKCCQAAAAAAAMIRAAAAAAABIhUAAAAAAAMiEQAAAAAAAOINAAAAAAACYgUAAAAAAAEB+QAAAAAAAUHpAAAAAAADAdkAAAAAAANBzQAAAAAAAEHJAAAAAAABQcEAAAAAAAKBuQAAAAAAAIG1AAAAAAACAbEAAAAAAAGBrQAAAAAAAYGtAAAAAAAAga0AAAAAAAABrQAAAAAAAoGtAAAAAAADgakAAAAAAAOBqQAAAAAAAQGpAAAAAAACAakAAAAAAAIBqQAAAAAAAgGlAAAAAAAAgakAAAAAAAMBpQAAAAAAAAGtAAAAAAADgaUAAAAAAAMBqQAAAAAAA4GlAAAAAAAAgakAAAAAAAEBrQAAAAAAA4GpAAAAAAADAa0AAAAAAAEBsQAAAAAAAwGxAAAAAAADgbUAAAAAAACBvQAAAAAAAcHBAAAAAAAAwcUAAAAAAAEByQAAAAAAA0HNAAAAAAAAwdEAAAAAAAFB1QAAAAAAA4HVAAAAAAACgdEAAAAAAAAB0QAAAAAAAMHNAAAAAAADAcUAAAAAAADBxQAAAAAAAkHBAAAAAAADQcEAAAAAAADBxQAAAAAAAQHJAAAAAAABwc0AAAAAAACB1QAAAAAAAMHhAAAAAAADQeUAAAAAAAPB8QAAAAAAA4H9AAAAAAACwgEAAAAAAAHiBQAAAAAAA2IBAAAAAAACogEAAAAAAAEB/QAAAAAAAcH1AAAAAAABwfEAAAAAAAKB5QAAAAAAAUHdAAAAAAABgdUAAAAAAADBzQAAAAAAAAHJAAAAAAADgcUAAAAAAAJBxQAAAAAAAQHJAAAAAAAAwckAAAAAAAIBzQAAAAAAAYHRAAAAAAAAAdUAAAAAAAKB1QAAAAAAAUHVAAAAAAABwdEAAAAAAABBzQAAAAAAAUHFAAAAAAACwcEAAAAAAACBvQAAAAAAAoGxAAAAAAACga0AAAAAAAIBrQAAAAAAAIGtAAAAAAABgakAAAAAAAIBpQAAAAAAAYGlAAAAAAACAa0AAAAAAACBrQAAAAAAAIGtAAAAAAADAakAAAAAAAKBpQAAAAAAAoGlAAAAAAABgakAAAAAAAMBpQAAAAAAAAGpAAAAAAAAgaUAAAAAAAABqQAAAAAAAwGpAAAAAAACAakAAAAAAAMBpQAAAAAAAAGtAAAAAAABga0AAAAAAAOBqQAAAAAAAIGtAAAAAAABgakAAAAAAAMBqQAAAAAAA4GpAAAAAAAAAbEAAAAAAACBrQAAAAAAA4GpAAAAAAABAa0AAAAAAAEBrQAAAAAAAgGxAAAAAAABgbEAAAAAAAIBsQAAAAAAAIGxAAAAAAABga0AAAAAAAABrQAAAAAAAYGtAAAAAAABAa0AAAAAAAMBqQAAAAAAAgGpAAAAAAACga0AAAAAAAMBqQAAAAAAAAGpAAAAAAACAaUAAAAAAACBqQAAAAAAAIGpAAAAAAAAAakAAAAAAAIBqQAAAAAAAoGpAAAAAAABAa0AAAAAAAIBqQAAAAAAAoGlAAAAAAADgaUAAAAAAAIBpQAAAAAAAwGlAAAAAAABgakAAAAAAAABrQAAAAAAAwGpAAAAAAABAakAAAAAAAGBrQAAAAAAAwGtAAAAAAAAAbEAAAAAAAOBsQAAAAAAAYGxAAAAAAACgbUAAAAAAAGBtQAAAAAAAwG1AAAAAAACgbkAAAAAAAEBuQAAAAAAAAG9AAAAAAADAbkAAAAAAAGBuQAAAAAAAoG9AAAAAAAAwcEAAAAAAAGBxQAAAAAAAkHFAAAAAAACQckAAAAAAAGBzQAAAAAAAQHRAAAAAAAAgdEAAAAAAAHBzQAAAAAAAcHJAAAAAAACQcUAAAAAAADBwQAAAAAAAQG9AAAAAAADgbUAAAAAAACBtQAAAAAAAYGxAAAAAAABAbEAAAAAAAOBrQAAAAAAAYGpAAAAAAAAgakAAAAAAACBrQAAAAAAAwGpAAAAAAACgakAAAAAAACBrQAAAAAAAgGtAAAAAAABAakAAAAAAACBqQAAAAAAA4GpAAAAAAABAa0AAAAAAAOBqQAAAAAAAIGtAAAAAAACga0AAAAAAACBrQAAAAAAAYGtAAAAAAACAa0AAAAAAAIBsQAAAAAAAoGxAAAAAAADAbEAAAAAAAEBtQAAAAAAAYG9AAAAAAABQcEAAAAAAAAByQAAAAAAAkHNAAAAAAACgdkAAAAAAAIB6QAAAAAAAYIBAAAAAAAAwhEAAAAAAAGiIQAAAAAAAwIxAAAAAAAAAkEAAAAAAAICRQAAAAAAAjJJAAAAAAACMkkAAAAAAADiSQAAAAAAAaJFAAAAAAABQkEAAAAAAAPiOQAAAAAAA+IxAAAAAAAC4iUAAAAAAAGiGQAAAAAAAWINAAAAAAABAgEAAAAAAAFB6QAAAAAAAEHZAAAAAAABAc0AAAAAAABBxQAAAAAAAAHBAAAAAAACgbkAAAAAAAEBtQAAAAAAAwGxAAAAAAAAAbEAAAAAAAABtQAAAAAAAQGxAAAAAAADAa0AAAAAAAMBrQAAAAAAAYGxAAAAAAAAgbEAAAAAAAEBsQAAAAAAAYGxAAAAAAACgbEAAAAAAAGBtQAAAAAAAIG1AAAAAAABgbkAAAAAAAMBtQAAAAAAAoG1AAAAAAACAbUAAAAAAAABtQAAAAAAA4GxAAAAAAABgbEAAAAAAACBsQAAAAAAAgGtAAAAAAABAa0AAAAAAAOBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAACBsQAAAAAAAwGtAAAAAAADgbEAAAAAAAGBuQAAAAAAAQG9AAAAAAADQcEAAAAAAAOBxQAAAAAAAYHNAAAAAAABQdEAAAAAAAMB0QAAAAAAAEHVAAAAAAACQdEAAAAAAAPByQAAAAAAAYHFAAAAAAADAcEAAAAAAAIBvQAAAAAAAgG1AAAAAAACAbEAAAAAAAGBrQAAAAAAAIGxAAAAAAADAa0AAAAAAAMBqQAAAAAAAgGxAAAAAAACga0AAAAAAACBrQAAAAAAAoGtAAAAAAADAa0AAAAAAAEBsQAAAAAAAoG1AAAAAAADAbkAAAAAAAOBvQAAAAAAA0HBAAAAAAADAcUAAAAAAAOByQAAAAAAAkHNAAAAAAABwdEAAAAAAABB0QAAAAAAA0HRAAAAAAACwdEAAAAAAAMB0QAAAAAAAYHZAAAAAAAAgeUAAAAAAAMB8QAAAAAAAaIFAAAAAAACghEAAAAAAAAiIQAAAAAAA2IpAAAAAAAAwjUAAAAAAANiNQAAAAAAAyIxAAAAAAADAiUAAAAAAALCFQAAAAAAAEIJAAAAAAACgfUAAAAAAACB5QAAAAAAAgHVAAAAAAAAgc0AAAAAAAMByQAAAAAAAQHJAAAAAAABAckAAAAAAAOByQAAAAAAAAHNAAAAAAAAgc0AAAAAAABBzQAAAAAAA8HJAAAAAAACwckAAAAAAAGBxQAAAAAAAMHBAAAAAAAAQcEAAAAAAAKBuQAAAAAAAoG1AAAAAAAAAbkAAAAAAACBtQAAAAAAAAG1AAAAAAABgbUAAAAAAACBuQAAAAAAAEHBAAAAAAAAgcUAAAAAAAEByQAAAAAAAUHNAAAAAAADQdEAAAAAAAIB2QAAAAAAA0HdAAAAAAAAweEAAAAAAADB4QAAAAAAAIHhAAAAAAADgd0AAAAAAAAB3QAAAAAAAsHZAAAAAAAAAdkAAAAAAABB1QAAAAAAAEHRAAAAAAACQckAAAAAAAJBxQAAAAAAAkHBAAAAAAADgb0AAAAAAAGBvQAAAAAAAoG1AAAAAAADAbUAAAAAAAKBtQAAAAAAAgGxAAAAAAAAAbkAAAAAAAEBtQAAAAAAAQGxAAAAAAACgbEAAAAAAAIBsQAAAAAAAIG1AAAAAAABgbkAAAAAAACBuQAAAAAAAEHBAAAAAAABwcUAAAAAAABBzQAAAAAAAkHVAAAAAAACgeUAAAAAAAHB8QAAAAAAACIFAAAAAAABwg0AAAAAAAAiFQAAAAAAAqIZAAAAAAABohkAAAAAAAKiEQAAAAAAAgIJAAAAAAAAwgEAAAAAAALB7QAAAAAAAMHdAAAAAAAAAdUAAAAAAACByQAAAAAAAkHBAAAAAAACAb0AAAAAAAEBvQAAAAAAAgG5AAAAAAABAbkAAAAAAACBuQAAAAAAAYG5AAAAAAAAAb0AAAAAAAKBvQAAAAAAAgG9AAAAAAACAcEAAAAAAAKBwQAAAAAAAoHFAAAAAAAAwckAAAAAAAJBzQAAAAAAAoHVAAAAAAABgd0AAAAAAAPB5QAAAAAAA4HpAAAAAAAAQe0AAAAAAAOB6QAAAAAAAYHlAAAAAAAAAeEAAAAAAANB1QAAAAAAA4HNAAAAAAAAwc0AAAAAAAKByQAAAAAAAgHJAAAAAAAAAc0AAAAAAAJBzQAAAAAAAgHRAAAAAAACgdUAAAAAAAFB1QAAAAAAA8HRAAAAAAABAdEAAAAAAAAB1QAAAAAAAUHVAAAAAAABQdUAAAAAAACB3QAAAAAAA4HlAAAAAAACge0AAAAAAAKB+QAAAAAAAQIBAAAAAAACggEAAAAAAACCBQAAAAAAAiIFAAAAAAAC4gUAAAAAAAEiCQAAAAAAAQIJAAAAAAABwgUAAAAAAAHiAQAAAAAAAEH5AAAAAAACAekAAAAAAACB3QAAAAAAA0HRAAAAAAACAc0AAAAAAANByQAAAAAAAMHNAAAAAAACgc0AAAAAAAEB1QAAAAAAAsHdAAAAAAACwekAAAAAAADB9QAAAAAAAuIBAAAAAAABAgkAAAAAAANCCQAAAAAAAIIJAAAAAAACggEAAAAAAABB+QAAAAAAAoHpAAAAAAACwd0AAAAAAAJB0QAAAAAAA8HJAAAAAAAAAckAAAAAAAPBwQAAAAAAA0HBAAAAAAACwcEAAAAAAAHBwQAAAAAAAsHBAAAAAAABAcEAAAAAAAEBwQAAAAAAAcHBAAAAAAABwcEAAAAAAAOBwQAAAAAAAYHFAAAAAAABQckAAAAAAAOBzQAAAAAAAwHZAAAAAAACAekAAAAAAAACAQAAAAAAAGIRAAAAAAACIiUAAAAAAALCOQAAAAAAALJJAAAAAAAAklEAAAAAAAHSVQAAAAAAAxJVAAAAAAAAQlUAAAAAAAHCTQAAAAAAAFJJAAAAAAADUkEAAAAAAAOCPQAAAAAAAKI5AAAAAAABYjEAAAAAAANCKQAAAAAAAGIhAAAAAAAA4hEAAAAAAAFiBQAAAAAAAQH1AAAAAAABQeUAAAAAAAMB1QAAAAAAAwHNAAAAAAAAwckAAAAAAAFBxQAAAAAAAYHFAAAAAAADgcEAAAAAAAGBwQAAAAAAAwHBAAAAAAADgcEAAAAAAAHBxQAAAAAAA8HFAAAAAAADAckAAAAAAAPBzQAAAAAAAsHVAAAAAAACgd0AAAAAAAEB6QAAAAAAAUH1AAAAAAADAgEAAAAAAACiEQAAAAAAAKIhAAAAAAADojEAAAAAAAGyRQAAAAAAAmJNAAAAAAABclUAAAAAAAOCVQAAAAAAAvJRAAAAAAACQkkAAAAAAADiQQAAAAAAAeItAAAAAAAAQh0AAAAAAACCEQAAAAAAAkIJAAAAAAADIgkAAAAAAABiEQAAAAAAAyIVAAAAAAACQiEAAAAAAAFCKQAAAAAAAeIpAAAAAAAC4iEAAAAAAAPCFQAAAAAAAgIJAAAAAAADAf0AAAAAAACB6QAAAAAAAoHZAAAAAAACAdEAAAAAAALByQAAAAAAAcHFAAAAAAADgcEAAAAAAABBwQAAAAAAAoG9AAAAAAAAgcEAAAAAAABBwQAAAAAAAIG9AAAAAAACgbkAAAAAAABBwQAAAAAAAQHBAAAAAAADAcUAAAAAAAIByQAAAAAAAIHRAAAAAAABwdUAAAAAAAOB3QAAAAAAAUHlAAAAAAACweUAAAAAAAAB6QAAAAAAAYHlAAAAAAABAd0AAAAAAABB2QAAAAAAAoHRAAAAAAADQc0AAAAAAAJBzQAAAAAAAgHNAAAAAAABQc0AAAAAAAPByQAAAAAAAAHJAAAAAAABAcUAAAAAAAIBwQAAAAAAAwG5AAAAAAAAgb0AAAAAAACBuQAAAAAAAYG9AAAAAAABgbkAAAAAAAMBuQAAAAAAAwG5AAAAAAAAgb0AAAAAAAIBuQAAAAAAAgG9AAAAAAACAb0AAAAAAACBwQAAAAAAAkHBAAAAAAABwcEAAAAAAAMBxQAAAAAAAsHJAAAAAAAAAdEAAAAAAAIB1QAAAAAAAsHZAAAAAAABAd0AAAAAAAGB2QAAAAAAA8HVAAAAAAAAgdkAAAAAAAKB0QAAAAAAAIHRAAAAAAADgdEAAAAAAADB1QAAAAAAAkHVAAAAAAABQdkAAAAAAAIB2QAAAAAAAYHZAAAAAAABAd0AAAAAAAJB6QAAAAAAA8H9AAAAAAACQg0AAAAAAABCIQAAAAAAAkI1AAAAAAAB4kUAAAAAAANSSQAAAAAAALJNAAAAAAAAUkkAAAAAAAESQQAAAAAAASItAAAAAAABYhkAAAAAAAJCBQAAAAAAA4HtAAAAAAACQd0AAAAAAAMB0QAAAAAAAkHJAAAAAAACgcUAAAAAAAEBxQAAAAAAAgHBAAAAAAABQcEAAAAAAAKBwQAAAAAAAUHBAAAAAAACgb0AAAAAAACBwQAAAAAAAYHBAAAAAAABAcEAAAAAAALBxQAAAAAAAMHNAAAAAAACAdUAAAAAAACB5QAAAAAAAUHxAAAAAAACIgEAAAAAAAOCCQAAAAAAAqIRAAAAAAAAAhUAAAAAAAKiDQAAAAAAAYIJAAAAAAADgf0AAAAAAAIB7QAAAAAAAkHdAAAAAAACgdEAAAAAAANByQAAAAAAAgHFAAAAAAADQcEAAAAAAACBwQAAAAAAAgG9AAAAAAABgb0AAAAAAAIBvQAAAAAAAAHBAAAAAAACgb0AAAAAAAKBvQAAAAAAAoG9AAAAAAABgcEAAAAAAAJBwQAAAAAAAwHFAAAAAAAAwckAAAAAAADB0QAAAAAAAYHdAAAAAAADwekAAAAAAAPB/QAAAAAAA0IJAAAAAAAAwhUAAAAAAADiHQAAAAAAAoIdAAAAAAABohkAAAAAAAIiEQAAAAAAAKIJAAAAAAACgfkAAAAAAACB6QAAAAAAAwHZAAAAAAADwdEAAAAAAACBzQAAAAAAAIHJAAAAAAADgcUAAAAAAALBxQAAAAAAAsHFAAAAAAAAgcUAAAAAAAGBwQAAAAAAAoHBAAAAAAABQcEAAAAAAAFBwQAAAAAAAgHBAAAAAAADQcEAAAAAAAGBxQAAAAAAAAHJAAAAAAAAgc0AAAAAAAPBzQAAAAAAAoHRAAAAAAABwdUAAAAAAAFB1QAAAAAAAUHRAAAAAAADgc0AAAAAAAKByQAAAAAAAsHJAAAAAAAAAckAAAAAAAFBzQAAAAAAAgHVAAAAAAADgd0AAAAAAAGB6QAAAAAAAYH1AAAAAAAAAgEAAAAAAABCAQAAAAAAAGIBAAAAAAACAfkAAAAAAAIB7QAAAAAAAwHhAAAAAAADgdkAAAAAAAMB0QAAAAAAAcHNAAAAAAAAQc0AAAAAAAMByQAAAAAAAUHJAAAAAAADgcUAAAAAAACBzQAAAAAAAkHNAAAAAAADQc0AAAAAAAHB0QAAAAAAAcHVAAAAAAACgdEAAAAAAAAB0QAAAAAAAMHNAAAAAAACgckAAAAAAAKBxQAAAAAAAIHFAAAAAAACgcEAAAAAAACBxQAAAAAAA8HBAAAAAAAAgcUAAAAAAACByQAAAAAAA4HJAAAAAAAAQdEAAAAAAAOB1QAAAAAAA8HZAAAAAAAAgeEAAAAAAAKB4QAAAAAAAIHdAAAAAAABAdkAAAAAAAMB0QAAAAAAAYHNAAAAAAAAAckAAAAAAAHBxQAAAAAAAkHFAAAAAAAAgcUAAAAAAAMBxQAAAAAAAgHFAAAAAAADgcEAAAAAAAGBxQAAAAAAA0HBAAAAAAAAQcUAAAAAAAMBwQAAAAAAAsHBAAAAAAACQcEAAAAAAABBwQAAAAAAAIHBAAAAAAACwcEAAAAAAALBwQAAAAAAAUHFAAAAAAADwcUAAAAAAAOByQAAAAAAAwHRAAAAAAACAdkAAAAAAALB5QAAAAAAAkHxAAAAAAABggEAAAAAAAACDQAAAAAAA2IVAAAAAAADoikAAAAAAACCRQAAAAAAAhJVAAAAAAABUmkAAAAAAALSdQAAAAAAAKqBAAAAAAACAn0AAAAAAACCcQAAAAAAAcJdAAAAAAAB0kkAAAAAAAEiNQAAAAAAAwIZAAAAAAACog0AAAAAAAACCQAAAAAAAYIFAAAAAAAC4gEAAAAAAADiAQAAAAAAAYH5AAAAAAAAQfUAAAAAAANB6QAAAAAAAEHhAAAAAAACQdkAAAAAAAGB1QAAAAAAAgHNAAAAAAABQckAAAAAAAHBxQAAAAAAAUHFAAAAAAACQcEAAAAAAABBwQAAAAAAAAHBAAAAAAABAb0AAAAAAAEBwQAAAAAAAUHBAAAAAAAAgcEAAAAAAAHBwQAAAAAAAwHBAAAAAAADAcUAAAAAAACBzQAAAAAAAUHRAAAAAAAAQdUAAAAAAABB1QAAAAAAAgHVAAAAAAABAdUAAAAAAABB1QAAAAAAAgHRAAAAAAAAQdEAAAAAAACBzQAAAAAAAcHJAAAAAAAAQckAAAAAAAJBxQAAAAAAAsHBAAAAAAACgcEAAAAAAAOBwQAAAAAAAcHBAAAAAAAAAcEAAAAAAAKBwQAAAAAAAgHBAAAAAAAAwcEAAAAAAAFBwQAAAAAAAUHBAAAAAAAAgcEAAAAAAAKBvQAAAAAAAAG9AAAAAAACAbkAAAAAAACBvQAAAAAAAYG9AAAAAAACgbkAAAAAAAKBuQAAAAAAA4G5AAAAAAADgbkAAAAAAAMBvQAAAAAAAMHBAAAAAAABAb0AAAAAAAGBvQAAAAAAAIHBAAAAAAACAb0AAAAAAAOBvQAAAAAAAMHBAAAAAAAAAcEAAAAAAAIBwQAAAAAAAwHBAAAAAAACQcUAAAAAAAPByQAAAAAAAsHRAAAAAAAAwd0AAAAAAAEB6QAAAAAAAQH5AAAAAAACggEAAAAAAAACCQAAAAAAAMIJAAAAAAACYgUAAAAAAAHiAQAAAAAAAoH5AAAAAAAAQfUAAAAAAADB9QAAAAAAAEHxAAAAAAAAAekAAAAAAAJB4QAAAAAAA4HZAAAAAAACwdEAAAAAAAMBzQAAAAAAAkHJAAAAAAABgckAAAAAAAEByQAAAAAAA4HFAAAAAAABwckAAAAAAACBzQAAAAAAAsHNAAAAAAADgdEAAAAAAAFB3QAAAAAAAYHlAAAAAAADwe0AAAAAAADB/QAAAAAAAsH9AAAAAAACgf0AAAAAAAIB+QAAAAAAAAHtAAAAAAABweEAAAAAAAGB1QAAAAAAAsHNAAAAAAABAckAAAAAAADBxQAAAAAAAIHFAAAAAAAAwcEAAAAAAAEBvQAAAAAAAIHBAAAAAAACAb0AAAAAAAOBvQAAAAAAAwG9AAAAAAACgb0AAAAAAAMBvQAAAAAAAgG9AAAAAAAAQcEAAAAAAAEBvQAAAAAAA4G9AAAAAAABgb0AAAAAAAMBvQAAAAAAAQHBAAAAAAAAgb0AAAAAAAKBvQAAAAAAAwG9AAAAAAAAwcEAAAAAAAMBwQAAAAAAA4HBAAAAAAADAcUAAAAAAABBzQAAAAAAAIHRAAAAAAADAdkAAAAAAABB6QAAAAAAAYH1AAAAAAADogUAAAAAAADCFQAAAAAAAGIhAAAAAAAB4ikAAAAAAALCKQAAAAAAA0IhAAAAAAACAhkAAAAAAABiDQAAAAAAAQIBAAAAAAADwfEAAAAAAAMB5QAAAAAAA8HhAAAAAAAAAekAAAAAAAMB6QAAAAAAAAHtAAAAAAABAekAAAAAAACB5QAAAAAAAwHZAAAAAAADAdUAAAAAAAOB0QAAAAAAAEHRAAAAAAACgdEAAAAAAAGB1QAAAAAAAwHdAAAAAAAAQeEAAAAAAAEB6QAAAAAAAkHtAAAAAAAAQfUAAAAAAAMB7QAAAAAAAYHlAAAAAAADwd0AAAAAAAJB1QAAAAAAAwHRAAAAAAAAQdEAAAAAAAEBzQAAAAAAAQHJAAAAAAADwckAAAAAAAKBzQAAAAAAA0HRAAAAAAACwd0AAAAAAAGB7QAAAAAAAkH9AAAAAAACQgkAAAAAAAJiEQAAAAAAAaIZAAAAAAAAQh0AAAAAAADCGQAAAAAAAEIRAAAAAAAAYgUAAAAAAAMB+QAAAAAAAUHpAAAAAAAAgeEAAAAAAAIB1QAAAAAAAEHVAAAAAAADgdUAAAAAAAMB2QAAAAAAA8HlAAAAAAACgf0AAAAAAAFCCQAAAAAAAEIVAAAAAAABwh0AAAAAAAJiIQAAAAAAAiIdAAAAAAABQhUAAAAAAAKiCQAAAAAAAMH9AAAAAAAAQekAAAAAAAKB2QAAAAAAAQHVAAAAAAADgckAAAAAAAOBxQAAAAAAAgHFAAAAAAACwcUAAAAAAAEBxQAAAAAAAoHFAAAAAAADAcUAAAAAAAHByQAAAAAAAYHNAAAAAAADwc0AAAAAAABB0QAAAAAAAAHNAAAAAAACgckAAAAAAAFByQAAAAAAAsHFAAAAAAABQcUAAAAAAANBwQAAAAAAAkHBAAAAAAABQcUAAAAAAALBxQAAAAAAAsHFAAAAAAABQckAAAAAAAPByQAAAAAAAAHRAAAAAAADAc0AAAAAAALB0QAAAAAAAoHVAAAAAAABwdEAAAAAAAIB0QAAAAAAAIHNAAAAAAAAwckAAAAAAAOBxQAAAAAAAYHFAAAAAAAAQcUAAAAAAALBwQAAAAAAAAHFAAAAAAAAQcEAAAAAAAEBwQAAAAAAAkHBAAAAAAACAcEAAAAAAAABxQAAAAAAA4HBAAAAAAADAcEAAAAAAANBwQAAAAAAA8HFAAAAAAABAckAAAAAAAHByQAAAAAAA0HNAAAAAAADwdEAAAAAAAMB2QAAAAAAAoHlAAAAAAADQfUAAAAAAAGCBQAAAAAAAEIRAAAAAAACYh0AAAAAAAACLQAAAAAAAkI1AAAAAAABQjkAAAAAAAGiNQAAAAAAAMItAAAAAAAC4h0AAAAAAADiEQAAAAAAA4IBAAAAAAABAfUAAAAAAACB6QAAAAAAAsHdAAAAAAADQd0AAAAAAAFB5QAAAAAAA4HtAAAAAAADAfUAAAAAAAFiAQAAAAAAAiIFAAAAAAABYgUAAAAAAAIiAQAAAAAAAUH5AAAAAAABAe0AAAAAAAOB4QAAAAAAAMHZAAAAAAAAgdEAAAAAAAABzQAAAAAAA0HFAAAAAAADgcEAAAAAAAGBxQAAAAAAAQHBAAAAAAADAcEAAAAAAAIBwQAAAAAAAkHBAAAAAAABwcEAAAAAAALBwQAAAAAAA4HFAAAAAAABQckAAAAAAADByQAAAAAAA8HNAAAAAAADgdkAAAAAAALB5QAAAAAAA0HxAAAAAAACQfkAAAAAAAEiAQAAAAAAAWIFAAAAAAAAwgUAAAAAAAPB/QAAAAAAAYH5AAAAAAABAe0AAAAAAAIB4QAAAAAAAAHdAAAAAAACgdEAAAAAAAIB0QAAAAAAAcHVAAAAAAAAwd0AAAAAAAKB4QAAAAAAAkHtAAAAAAABAfUAAAAAAAFB9QAAAAAAAgHxAAAAAAAAAekAAAAAAAKB4QAAAAAAAkHZAAAAAAACgdEAAAAAAAIBzQAAAAAAAUHJAAAAAAADQcUAAAAAAAOBxQAAAAAAAMHFAAAAAAAAgcUAAAAAAAJBxQAAAAAAAcHFAAAAAAACgckAAAAAAAIBzQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2695\"},\"selection_policy\":{\"id\":\"2694\"}},\"id\":\"2680\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"overlay\":{\"id\":\"2672\"}},\"id\":\"2668\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"2662\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2665\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2680\"},\"glyph\":{\"id\":\"2681\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2683\"},\"nonselection_glyph\":{\"id\":\"2682\"},\"view\":{\"id\":\"2685\"}},\"id\":\"2684\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2670\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2667\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2669\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2659\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2761\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2656\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2743\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2692\"},\"group\":null,\"major_label_policy\":{\"id\":\"2693\"},\"ticker\":{\"id\":\"2659\"}},\"id\":\"2658\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2715\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2741\"},\"glyph\":{\"id\":\"2742\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2744\"},\"nonselection_glyph\":{\"id\":\"2743\"},\"view\":{\"id\":\"2746\"}},\"id\":\"2745\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"tools\":[{\"id\":\"2666\"},{\"id\":\"2667\"},{\"id\":\"2668\"},{\"id\":\"2669\"},{\"id\":\"2670\"},{\"id\":\"2671\"}]},\"id\":\"2673\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2671\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2689\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"2649\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"28d486e5-03ce-43c5-9d67-cb62992e0200\",\"root_ids\":[\"2649\"],\"roots\":{\"2649\":\"8f07945b-5987-4327-a19d-e008fb7e5d85\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -1544,7 +1544,7 @@ }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { - "id": "2338" + "id": "2649" } }, "output_type": "display_data" @@ -1570,7 +1570,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1582,7 +1582,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -1594,8 +1594,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"edf7ba91-84a6-4ac2-93ce-2ee849c5c4ef\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2658\"}],\"center\":[{\"id\":\"2661\"},{\"id\":\"2665\"},{\"id\":\"2697\"}],\"height\":300,\"left\":[{\"id\":\"2662\"}],\"renderers\":[{\"id\":\"2684\"}],\"title\":{\"id\":\"2686\"},\"toolbar\":{\"id\":\"2673\"},\"width\":990,\"x_range\":{\"id\":\"2650\"},\"x_scale\":{\"id\":\"2654\"},\"y_range\":{\"id\":\"2652\"},\"y_scale\":{\"id\":\"2656\"}},\"id\":\"2649\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2698\"}]},\"id\":\"2697\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"2692\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2672\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2689\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2681\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2689\"},\"group\":null,\"major_label_policy\":{\"id\":\"2690\"},\"ticker\":{\"id\":\"2663\"}},\"id\":\"2662\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2666\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2654\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2663\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2692\"},\"group\":null,\"major_label_policy\":{\"id\":\"2693\"},\"ticker\":{\"id\":\"2659\"}},\"id\":\"2658\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2682\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2693\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2695\",\"type\":\"Selection\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy) - Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2684\"}]},\"id\":\"2698\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2656\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"2662\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2665\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2686\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2680\"},\"glyph\":{\"id\":\"2681\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2683\"},\"nonselection_glyph\":{\"id\":\"2682\"},\"view\":{\"id\":\"2685\"}},\"id\":\"2684\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2695\"},\"selection_policy\":{\"id\":\"2694\"}},\"id\":\"2680\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2671\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2650\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2659\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2694\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2667\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2669\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"2680\"}},\"id\":\"2685\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"2672\"}},\"id\":\"2668\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2670\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis\":{\"id\":\"2658\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2661\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2690\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"2666\"},{\"id\":\"2667\"},{\"id\":\"2668\"},{\"id\":\"2669\"},{\"id\":\"2670\"},{\"id\":\"2671\"}]},\"id\":\"2673\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2652\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2683\",\"type\":\"Line\"}],\"root_ids\":[\"2649\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"edf7ba91-84a6-4ac2-93ce-2ee849c5c4ef\",\"root_ids\":[\"2649\"],\"roots\":{\"2649\":\"4cec7f7b-4cc4-49ce-ac47-cf33430f0eee\"}}];\n", + " const docs_json = {\"3506346e-92a4-4592-875e-d4f4790951f7\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2986\"}],\"center\":[{\"id\":\"2989\"},{\"id\":\"2993\"},{\"id\":\"3025\"}],\"height\":300,\"left\":[{\"id\":\"2990\"}],\"renderers\":[{\"id\":\"3012\"}],\"title\":{\"id\":\"3014\"},\"toolbar\":{\"id\":\"3001\"},\"width\":990,\"x_range\":{\"id\":\"2978\"},\"x_scale\":{\"id\":\"2982\"},\"y_range\":{\"id\":\"2980\"},\"y_scale\":{\"id\":\"2984\"}},\"id\":\"2977\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"3026\"}]},\"id\":\"3025\",\"type\":\"Legend\"},{\"attributes\":{\"tools\":[{\"id\":\"2994\"},{\"id\":\"2995\"},{\"id\":\"2996\"},{\"id\":\"2997\"},{\"id\":\"2998\"},{\"id\":\"2999\"}]},\"id\":\"3001\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3011\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3023\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"3014\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"3018\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3020\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2998\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2999\",\"type\":\"HelpTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"3000\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2997\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"3021\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3009\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2995\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2980\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2982\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"2986\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2989\",\"type\":\"Grid\"},{\"attributes\":{\"overlay\":{\"id\":\"3000\"}},\"id\":\"2996\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2978\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2994\",\"type\":\"PanTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"3023\"},\"selection_policy\":{\"id\":\"3022\"}},\"id\":\"3008\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2991\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2984\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3010\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy) - Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"3012\"}]},\"id\":\"3026\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"2990\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2993\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2987\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"3020\"},\"group\":null,\"major_label_policy\":{\"id\":\"3021\"},\"ticker\":{\"id\":\"2987\"}},\"id\":\"2986\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3022\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"3017\"},\"group\":null,\"major_label_policy\":{\"id\":\"3018\"},\"ticker\":{\"id\":\"2991\"}},\"id\":\"2990\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3017\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"3008\"},\"glyph\":{\"id\":\"3009\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"3011\"},\"nonselection_glyph\":{\"id\":\"3010\"},\"view\":{\"id\":\"3013\"}},\"id\":\"3012\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"3008\"}},\"id\":\"3013\",\"type\":\"CDSView\"}],\"root_ids\":[\"2977\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"3506346e-92a4-4592-875e-d4f4790951f7\",\"root_ids\":[\"2977\"],\"roots\":{\"2977\":\"2f390cb0-35d6-4295-96b3-27843ef4c941\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -1622,7 +1622,7 @@ }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { - "id": "2649" + "id": "2977" } }, "output_type": "display_data" diff --git a/examples/Simulation.ipynb b/examples/Simulation.ipynb index f153d4fc..e24e8b4e 100644 --- a/examples/Simulation.ipynb +++ b/examples/Simulation.ipynb @@ -19,7 +19,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /Users/asazonov/Developing/CrossPlatform/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", + "GSAS-II binary directory: /srv/conda/envs/notebook/lib/python3.7/site-packages/GSASII/bindist\n", "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" ] } @@ -380,7 +380,7 @@ "id": "283767f9", "metadata": {}, "source": [ - "## --- Sample ---" + "## Sample" ] }, { @@ -461,10 +461,10 @@ "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + "

\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] @@ -511,7 +511,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -552,7 +552,7 @@ "id": "07db27b5", "metadata": {}, "source": [ - "## --- Experiment ---" + "## Experiment" ] }, { @@ -647,7 +647,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" + "Temp CIF: /tmp/easydiffraction_temp.cif\n" ] } ], @@ -680,7 +680,7 @@ "id": "eb234f76", "metadata": {}, "source": [ - "## --- Analysis ---" + "## Analysis" ] }, { @@ -707,7 +707,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -719,8 +719,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"1602a6ca-fbcf-4e1b-9eac-82bf074cba5b\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1051\"}],\"height\":300,\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"width\":990,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1052\"}]},\"id\":\"1051\",\"type\":\"Legend\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{\"label\":{\"value\":\"CW Simulation\"},\"renderers\":[{\"id\":\"1038\"}]},\"id\":\"1052\",\"type\":\"LegendItem\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4PXGYM2z2T8fcJdvRej9PxPMl6nq4+k/1HNfWKmsoD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdLadmZyL0T+2feDjKELzP7rkpnDKIdY/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGehThclepk/56Q1M4Fo+T+JQdIURT7kPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7oh5wy490z/4UlnFhUERQBLNKX//trg/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/7g/f1A5c/Udv0pISm8D8Zh/gpKHTcPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"1602a6ca-fbcf-4e1b-9eac-82bf074cba5b\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"02da6718-2af4-4a8b-ad84-a7bf5ba675c9\"}}];\n", + " const docs_json = {\"433fbef6-81c9-4ad4-8093-f719ffca8124\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1051\"}],\"height\":300,\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"width\":990,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"label\":{\"value\":\"CW Simulation\"},\"renderers\":[{\"id\":\"1038\"}]},\"id\":\"1052\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4fXGYM2z2T8ecJdvRej9PxPMl6nq4+k/1HNfWKmsoD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdLadmZyL0T+2feDjKELzP7rkpnDKIdY/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGehThclepk/56Q1M4Fo+T+JQdIURT7kPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7Yh5wy490z/3UlnFhUERQBLNKX//trg/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/7g/f1A5c/Utv0pISm8D8Zh/gpKHTcPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1052\"}]},\"id\":\"1051\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"433fbef6-81c9-4ad4-8093-f719ffca8124\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"af392316-45f0-48d4-a6c6-0da4edf3ccd6\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -767,7 +767,7 @@ "id": "0f2cb72f", "metadata": {}, "source": [ - "## --- Experiment ---" + "## Experiment" ] }, { @@ -811,7 +811,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" + "Temp CIF: /tmp/easydiffraction_temp.cif\n" ] } ], @@ -844,7 +844,7 @@ "id": "2245224b", "metadata": {}, "source": [ - "## --- Analysis ---" + "## Analysis" ] }, { @@ -870,7 +870,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -882,8 +882,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"c95b6522-7314-4ce1-953e-ca36bebac9b2\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1128\"}],\"center\":[{\"id\":\"1131\"},{\"id\":\"1135\"},{\"id\":\"1167\"}],\"height\":300,\"left\":[{\"id\":\"1132\"}],\"renderers\":[{\"id\":\"1154\"}],\"title\":{\"id\":\"1156\"},\"toolbar\":{\"id\":\"1143\"},\"width\":990,\"x_range\":{\"id\":\"1120\"},\"x_scale\":{\"id\":\"1124\"},\"y_range\":{\"id\":\"1122\"},\"y_scale\":{\"id\":\"1126\"}},\"id\":\"1119\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1159\"},\"group\":null,\"major_label_policy\":{\"id\":\"1160\"},\"ticker\":{\"id\":\"1133\"}},\"id\":\"1132\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1162\"},\"group\":null,\"major_label_policy\":{\"id\":\"1163\"},\"ticker\":{\"id\":\"1129\"}},\"id\":\"1128\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"1150\"}},\"id\":\"1155\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1165\"},\"selection_policy\":{\"id\":\"1164\"}},\"id\":\"1150\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1152\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"tools\":[{\"id\":\"1136\"},{\"id\":\"1137\"},{\"id\":\"1138\"},{\"id\":\"1139\"},{\"id\":\"1140\"},{\"id\":\"1141\"}]},\"id\":\"1143\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1151\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1153\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1156\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1150\"},\"glyph\":{\"id\":\"1151\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1153\"},\"nonselection_glyph\":{\"id\":\"1152\"},\"view\":{\"id\":\"1155\"}},\"id\":\"1154\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1132\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1135\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1137\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1168\"}]},\"id\":\"1167\",\"type\":\"Legend\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1142\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"overlay\":{\"id\":\"1142\"}},\"id\":\"1138\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1140\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1133\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"HelpTool\"},{\"attributes\":{\"label\":{\"value\":\"TOF Simulation\"},\"renderers\":[{\"id\":\"1154\"}]},\"id\":\"1168\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1136\",\"type\":\"PanTool\"},{\"attributes\":{\"axis\":{\"id\":\"1128\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1131\",\"type\":\"Grid\"}],\"root_ids\":[\"1119\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"c95b6522-7314-4ce1-953e-ca36bebac9b2\",\"root_ids\":[\"1119\"],\"roots\":{\"1119\":\"b4397b78-27fa-49d6-aeb6-944a02c96c0e\"}}];\n", + " const docs_json = {\"b138faf3-0b10-497f-98c3-d563b93a7e0f\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1128\"}],\"center\":[{\"id\":\"1131\"},{\"id\":\"1135\"},{\"id\":\"1167\"}],\"height\":300,\"left\":[{\"id\":\"1132\"}],\"renderers\":[{\"id\":\"1154\"}],\"title\":{\"id\":\"1156\"},\"toolbar\":{\"id\":\"1143\"},\"width\":990,\"x_range\":{\"id\":\"1120\"},\"x_scale\":{\"id\":\"1124\"},\"y_range\":{\"id\":\"1122\"},\"y_scale\":{\"id\":\"1126\"}},\"id\":\"1119\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1140\",\"type\":\"ResetTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1142\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis\":{\"id\":\"1132\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1135\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"Selection\"},{\"attributes\":{\"tools\":[{\"id\":\"1136\"},{\"id\":\"1137\"},{\"id\":\"1138\"},{\"id\":\"1139\"},{\"id\":\"1140\"},{\"id\":\"1141\"}]},\"id\":\"1143\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"1150\"}},\"id\":\"1155\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1152\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1136\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1153\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1133\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1128\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1131\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"TOF Simulation\"},\"renderers\":[{\"id\":\"1154\"}]},\"id\":\"1168\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1165\"},\"selection_policy\":{\"id\":\"1164\"}},\"id\":\"1150\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1150\"},\"glyph\":{\"id\":\"1151\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1153\"},\"nonselection_glyph\":{\"id\":\"1152\"},\"view\":{\"id\":\"1155\"}},\"id\":\"1154\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1156\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1162\"},\"group\":null,\"major_label_policy\":{\"id\":\"1163\"},\"ticker\":{\"id\":\"1129\"}},\"id\":\"1128\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1168\"}]},\"id\":\"1167\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1151\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1159\"},\"group\":null,\"major_label_policy\":{\"id\":\"1160\"},\"ticker\":{\"id\":\"1133\"}},\"id\":\"1132\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1137\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1142\"}},\"id\":\"1138\",\"type\":\"BoxZoomTool\"}],\"root_ids\":[\"1119\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"b138faf3-0b10-497f-98c3-d563b93a7e0f\",\"root_ids\":[\"1119\"],\"roots\":{\"1119\":\"fa6121f2-f53e-42f7-bf72-2203633dad30\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", From b12a6cc0bcbed05d316ab638a6065b56f95fb7bb Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 7 Oct 2021 09:53:18 +0200 Subject: [PATCH 228/312] Update notebook --- examples/Simulation.ipynb | 48 +++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/examples/Simulation.ipynb b/examples/Simulation.ipynb index e24e8b4e..8a26b8a9 100644 --- a/examples/Simulation.ipynb +++ b/examples/Simulation.ipynb @@ -19,7 +19,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /srv/conda/envs/notebook/lib/python3.7/site-packages/GSASII/bindist\n", + "GSAS-II binary directory: /Users/asazonov/Developing/CrossPlatform/easyScience/easyDiffraction/.venv/lib/python3.7/site-packages/GSASII/bindist\n", "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" ] } @@ -461,10 +461,10 @@ "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + "

\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", " jupyter labextension install jupyterlab_3dmol

\n", "
\n", "" ] @@ -511,7 +511,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -572,7 +572,6 @@ "source": [ "parameters = CWParams.default()\n", "\n", - "parameters.length_a = 5.6402\n", "parameters.resolution_u = 0.1447\n", "parameters.resolution_v = -0.4252\n", "parameters.resolution_w = 0.3864\n", @@ -647,7 +646,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Temp CIF: /tmp/easydiffraction_temp.cif\n" + "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" ] } ], @@ -707,7 +706,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -719,8 +718,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"433fbef6-81c9-4ad4-8093-f719ffca8124\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1051\"}],\"height\":300,\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"width\":990,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"label\":{\"value\":\"CW Simulation\"},\"renderers\":[{\"id\":\"1038\"}]},\"id\":\"1052\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4fXGYM2z2T8ecJdvRej9PxPMl6nq4+k/1HNfWKmsoD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdLadmZyL0T+2feDjKELzP7rkpnDKIdY/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGehThclepk/56Q1M4Fo+T+JQdIURT7kPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7Yh5wy490z/3UlnFhUERQBLNKX//trg/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/7g/f1A5c/Utv0pISm8D8Zh/gpKHTcPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1052\"}]},\"id\":\"1051\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"433fbef6-81c9-4ad4-8093-f719ffca8124\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"af392316-45f0-48d4-a6c6-0da4edf3ccd6\"}}];\n", + " const docs_json = {\"83cbabd3-e48f-44be-8746-1e3b42c9584d\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1051\"}],\"height\":300,\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"width\":990,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4PXGYM2z2T8fcJdvRej9PxPMl6nq4+k/1HNfWKmsoD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdLadmZyL0T+2feDjKELzP7rkpnDKIdY/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGehThclepk/56Q1M4Fo+T+JQdIURT7kPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7oh5wy490z/4UlnFhUERQBLNKX//trg/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/7g/f1A5c/Udv0pISm8D8Zh/gpKHTcPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"CW Simulation\"},\"renderers\":[{\"id\":\"1038\"}]},\"id\":\"1052\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1052\"}]},\"id\":\"1051\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"83cbabd3-e48f-44be-8746-1e3b42c9584d\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"f513bb61-7505-4314-b09f-89e47c08d8b1\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", @@ -787,7 +786,6 @@ "source": [ "parameters = TOFParams.default()\n", "\n", - "parameters.length_a = 5.6402\n", "parameters.dtt1 = 6167.24700\n", "parameters.dtt2 = -2.28000\n", "parameters.ttheta_bank = 145.00" @@ -811,7 +809,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Temp CIF: /tmp/easydiffraction_temp.cif\n" + "Temp CIF: /var/folders/5q/6x3b8ryn5cn9hkg4lmlcpjyh0000gn/T/easydiffraction_temp.cif\n" ] } ], @@ -870,7 +868,7 @@ "\n", "\n", "\n", - "
\n" + "
\n" ] }, "metadata": {}, @@ -882,8 +880,8 @@ "(function(root) {\n", " function embed_document(root) {\n", " \n", - " const docs_json = {\"b138faf3-0b10-497f-98c3-d563b93a7e0f\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1128\"}],\"center\":[{\"id\":\"1131\"},{\"id\":\"1135\"},{\"id\":\"1167\"}],\"height\":300,\"left\":[{\"id\":\"1132\"}],\"renderers\":[{\"id\":\"1154\"}],\"title\":{\"id\":\"1156\"},\"toolbar\":{\"id\":\"1143\"},\"width\":990,\"x_range\":{\"id\":\"1120\"},\"x_scale\":{\"id\":\"1124\"},\"y_range\":{\"id\":\"1122\"},\"y_scale\":{\"id\":\"1126\"}},\"id\":\"1119\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1140\",\"type\":\"ResetTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1142\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis\":{\"id\":\"1132\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1135\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"Selection\"},{\"attributes\":{\"tools\":[{\"id\":\"1136\"},{\"id\":\"1137\"},{\"id\":\"1138\"},{\"id\":\"1139\"},{\"id\":\"1140\"},{\"id\":\"1141\"}]},\"id\":\"1143\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"1150\"}},\"id\":\"1155\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1152\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1136\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1153\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1133\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1128\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1131\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"TOF Simulation\"},\"renderers\":[{\"id\":\"1154\"}]},\"id\":\"1168\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"SoXpFd+zgDsOLuKoM8/YPP154VmtGy0+Ns8uZraJbT9zBfRLlE6pP4mEJrOZMaQ/x0Tuix2grz/HpM2oXXmFP6JMxjI+hl4/ZtnO8AOnNj/36XB+MIoRP+NbqB0kiIk/ci+ezLaQkT/iR3+8SwNrP2C7vJl4i0U/+GxoaF7KIT9NeRr421z+PsuMzGW2uto+WIES0EM8uD6jRlyT5piWPgVqR129onU+frEY6JA+VT4STHK+q4anPoS/seugcKE/iuXk0flAsj9QRD6szNOQPzaznIsIxW8/y0H6VZawTj+bxHGo200uP3pHLHnsjQ4/6uBo+rZs7z6az6A4qanYPhiCn55+E6M/ZDlvX53SsD9crmy+4RKRPzGY36ZSonE/f1I+nNeHUj+WCGqg/sszP9evFLU8fBU/MjwGIbqr9z5JuDXZkHTaPqWyYR2W+b0+CgdJGGs0oT7DxLFSff+DPuM6wqT1hWc+Iv66xdJvTD7BKRgTveHmPmHrzeCSX64/rp9KTiKctz8S9Dp8E8maP8sEhiZEtH4/Soyp/pXbdT/5GrngPX7EP4XslcPCH6s/teb1YvWsjz/Wvxq8U65yP27fotoRP1Y/Om8FUIi8Oj8OxzYyWjUgP/Boh2uO0QM/PKS5Ngtu6D42GFwzUFnOPpTWWAj0/bI+bDzDucjwlz5s0Ry15GJ+PtKebt+KcGM+GxEeBLwurj6FMeKR0nt2P2Ip2rPgr6g/OJg30t8RkD+vxqLoSQp0P3m8apaTJ1k/fUvuIr/FPz9OEv5o1y8kP32i4SYGzQk/1gNq9oyU8D4abU7RqmzVPpPgEZrR07s+OWq1WX4poj6i+elyStKHPv5ZXTeAY28+MHQC8ZnFVD5wJAfZI5w7Pr+TjYHabCI+vUzGKYCwCD6h0sCA4ZrwPUcaXnX3atY9f/OjPXpfvj1Xtx3uVaWkPflMoaEDKYw9Ljie1AREcz2IrjYwEXFaPVgqDmfeMkI95qgiiGPGKT15sA/nYgWaPX+8sfGH0V0++HHQdW+5Hj/d4HmFVsGqP46O+pIhCLY/xNtIysy7nT9ZXfNS5eGDP9I2NuzCrGo/1i4sCvTyUT/hUYVPJzo4PwLxDrbTZSA/RgpRypKVBj8B9uE4t9tbP+GTUvyQ29A/M8hk6VEg0T+UwPZ/bE63P9avjPW9n58/LgEcKo+ChT/pbIaye1VtP3yZ+s7FDFQ/xvFoqeJ4Oz/iCoViEN0iPxpcZrgk9gk/u9851Cbn8T4fkWV9/73YPp+zbmqKIcE+NZhflJ3Epz4dswUJ2YSQPgiZdfzFAHc+B1gc6k4LYD5fiP3YQmtGPu4uYdfSYC8+Hb4G2G/+FT5HT5FeQ+H+PUvtP0vlteU9ksCKG3GSzj3LqTo8OI61PaVGFY8ecJ49Zr/f/8mEhT1XnshPE3duPYotYFijl1U9Lsq4e+6kPj0sHu5KWMUlPY2creED+A49sV6Ik/IM9jyuKsJcQW/fPNrBluPrbcY8gyrbfhJosDzpN4LGr337PBrIqM0YOJw9pKQko0PdOz63gmUOoyHaPmhVladCwXI/Br4XZ+CZzj+K0l5KAR/QP53Me8J/CLc/rhJJfpgvoD9glySjZcaGPwYx2/6bCnA/8ymHuFmfVj8zBMjKEfA/P/4KQDNvkSY/5qE6OFTtDz+GxMjyJZv2PocZdIeSBeA+3dCnvVu7xj4m83h+EiSwPt4U8wk/8ZY+ONSsf69RgD7MN7qVRDxnPnhP3KsdjlA+oYjHPR+cNz7oHJ6sOtkgPv1goKG5EAg+eDNNwAkz8T1jBkM+MZrYPW28vbWwm8E9d4QNvNI4qT1ngoCtdROSPa1c1TsX7Xk9r2YrgL2aYj2TvBV6ordKPXKKQbAKMjM9dwrDqEGZGz3B4wfU/NkDPSMNWOfqkuw8phfzZ1CT1DxI4NpFvaW9PJLJB/7eXqU8syDIRAHTjjxAwnDBnz12PC+5U+MUDmA8sntAR6gwRzw5YuS1asEwPAbVT6gtORg8DR0jKWiEATyrRIbghVjpO4agjBsLWNI7oIUGcimQujvxQyx7aj2jO+lJaUu14Ys7Hxwqtbc1dDv+xkjx7E5dO4FvQ1VAQkU7gp887LzZLjv1jEDWb2QWO6LLfb4eQgA7IvPipNGd5zotqNHMWijROtQKi1cT8Lg6ratgG88gojp04vEcB12KOjwsQvDSLHM6vXPoZKbmWzqMLTpU2k1EOqKPvcYUjy06PlVhNniFFTpVGdIoo1j/OQ5nWL9g1eY5jdTtlumi0DmKTJTXaz+4OQQ8UXatrKE50YLZ45fFiTl9lYR7FMtyOcCSCrwMals5WjpMW7T/Qznyg2TgHi8tOegZSJJDTBU5rqbK8VIX/ziievTxm7LmONEG+riwktA4VZegYr00uDhdcqdoHa6hOE4ZG97Q1Ik4kvLj54XfcjjYd1+nK5VbOH03wBuhKEQ4OHAdxFJ4LTjyfdz7SIsVON/a+rz+gP83wKTRU30J5zdMwOnUD9nQN9h5kbxmpbg3H+v5yHAHojeZbg9/XGGKNxCzay2vUXM3XSZeTi/0ZDcdIdToIvfENze2+/o5Bz84PtEiTGpmtjh2O02xeXAvOfHgGMuzc6U5tENLJlR4HDqsxAn1gWCSOnxgadocFQc7UnLD3gA3fDt1ymQQAMnwOyWvZDSVcWM8XDDHz97u1Tx5cWF0FRlIPQQqM1cpy7k9u5wPzOPmKj6ga4wsZlibPmWfBiAEDgs/tiLAnUeHdj8jSCj30jfGP2fhfjI9VOI/hQNpqEX91D9yKzrwNuK+P8PqK15DX6Y//LazV5Q1kD9VVCkrPn53P34CEwRLB2E/B1rvo7ywSD8w8932QecxP3xorT4M+Bk/jFImgW3WAj/1YrT4klXrPgcF9eXT1dM+MBwEEdHKvD55SFKejuakPh/gAuRiWY4+poUstssJdj6+AH91gQFgPrlvg0PPQEc+1N1O8cXkMD6WXPz59IwYPnrzQY191wE+/kK33LHv6T2cur94udrSPZGwkBCWars9oL+HwJ7voz0ZmjzRTv+MPfj4FL5nF3U95JDJi6ivXj1QfSOiZVNGPQf6hJDIPjA96IXHHAKlFz3TpoQpjTUBPXgOxCTBDek8hchJMD490jz1ZtbgQo+6PHdfGWkMV6M8jQQDtUUrjDx7XCG+PoR0PJ/D+3ao4108cGoA3TPGRTy+2DHMbLovPN9x6PJjHhc8eTRw2tzYADy1EmmyYo7oO7XvoXIJ5tE7Sm1kEQo5uju0gcUF9r+zO+ASlJta5Ag8oFoulV1mbTwwJmGI1RfRPMoS9wiafDM9zN/jJnjIlT1NdPwAF+H3PZYz1wmprFk+MtXgPfsTuz6tjLTemPsbPzLy+/lDFXo/iYCwwgk/xz8XmSKm5HXwP4yUVXYXMPE/Yhw91U8f3T8Hn+9YVUXFP3C+WU049a4/vT1qc8mHlj8bzAolFmaAP3/2xY3F32c/LptEYldhUT/m9jcY1E45Pz4B/SJ3bSI/altH0o3WCj/SbeOJoIvzPtB2x5KoeNw+3Z2XBRS9xD5pZipf+TauPuoTwtgoA5Y+m+TVVLsJgD7Am4q+Tl9nPjpWn1wdCFE+vD/IrQ/TOD7sEUIfwxciPpww37wRYAo+SKgujOE58z2TR+UoGQjcPaFxOabDb8Q9+3yAggrNrT2aIHMbzLqVPTulbAPtsH89s+Cu+nYcZz2xep6H9tpQPQCV+4hbljg9JwuDcS/vIT2okxg5LioKPTgVfbtgFvM8oy7Ix8LZ2zy/d+LK4FHEPInzan8Op608Bj3Mlh6jlTzdOsGlKpR/PFEpdG+jC2c8L0yRi6vRUDzVpP3mFI04PKV0I4l+6yE8JNaF3TYpCjxnEBMc2RjzOx7Bx7Pt4ds7M2oH4h1bxDtFgImmQLmtO/RL0P/Is5U7moIiVlyxfzvfYLL7cSRnO/Keq75K5lA7TxVMus2uODuLBGHttQYiO6LznqCwVAo7ak9kqEY78zoxqu/dEBjcOkIe5J9shcQ6pJeM4Aj7rTrAA6EPsuaVOkH2QfjZ/386/jb9rL1gZzrdPyiVdxRROtvsPrlU9Tg6PdIUHXA8IjpUM306XaYKOoiMfnU6efM5CIcjXuB13Dn84Qw/VMzEOQicSAgNZq45yw5fuVY3ljlyPT5JnTyAOUxHGsb4u2c5YMxI3/VYUTl1438REVw5OQLV/O9oiSI5MdCWY5gZCzllG3AgaM/zOIHikxys9tw4F7g/438sxTh/ZOffkPWuOFjO6WxZopY4VtKcuFqMgDgtwbvMvDJoOCa7lONasVE4KCAiLZPfOThdfr8rL+siOD3EDz7pqgs4nriT0Fc79DeQlK7M8ZbdN+HhXPxwo8U3m0aniwimrzeP0PHNNCWXNyWC4oda7YA3bXbaiH3CaDfhuSAC1xtSN/AKPu5HfTo3Ipi+Te5fIzdOQ/jBtVcMN+sh/R8wu/Q2iwn7fhBU3jYp4GtFSS/GNtJ3MR9mOrA2aFQvwgW+lzYXSnlqRV6BNjQSUhpTaWk2ePGGlQ+XUjY7H8jEQjM7Nq34y2lI5iM2QiV+zAweDTYb7unyj031NZAwvaISLN81/IUIkKTOxjWpr0MT8a+wNQOYuStla5g1puBochzegTW4ELGd0yVqNXaL6MoDIlM1Hmk7ORcAPDXEsdHtOn0kNeCggYt//A01ChfWI3Px9TS7/8mmww7gNJw4flV9gMc0mPLHxusysTQ2ahNcTCyZNIJdqoklbII0rFoCfvf2ajTf93MC+btTNC15wRm94jw05SaW5wokJTTzR0ODBfIONCRXKqwepvYz6vlbC7OT4DOHw2PAGETIM9m7xULSwrEzGWSR/AAAmjPoGI8w3QeDM16UeTkF3GszA0wVdGxkVDPiUV4ZfNo9M2tA5o022iUzYJiSBej9DzMs8XYQEmv3MgcHEzJ9JOEyf8I1+vcYyTKhNguFS1+yMvf6uTsG5poyp44B9+uwgzJciY1tgtRsMt9jXJAIG1UyS6K6uNzmPjIlWyiIap8mMrg6F3vZjxAyASiujfw/+DEkT3EE6sDhMRahMj3N/skxfmyFuyEIszExEcLCEd6bMYTzcaMeZ4QxVMC/rijgbTEsNx4Snd9VMT6Sw3/OA0Ax3C0M6nlzJzFsjjSylCsRMfcLC/60JPkw3QDu3t1o4jAaW8Chc/XKMIxz1G88vbMw1eOXagPonDD9XeNMYCqFMEdZriTd/m4wFLqqBhmyVjB6EHH/U55AMB7vYylYVigwLMKbeR7SETD4Hfi7Mxn6L8ibgTdVHOMvDCTu7ej8yy/1HfsfnH60Lw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1165\"},\"selection_policy\":{\"id\":\"1164\"}},\"id\":\"1150\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1150\"},\"glyph\":{\"id\":\"1151\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1153\"},\"nonselection_glyph\":{\"id\":\"1152\"},\"view\":{\"id\":\"1155\"}},\"id\":\"1154\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1156\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1162\"},\"group\":null,\"major_label_policy\":{\"id\":\"1163\"},\"ticker\":{\"id\":\"1129\"}},\"id\":\"1128\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1168\"}]},\"id\":\"1167\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1151\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1159\"},\"group\":null,\"major_label_policy\":{\"id\":\"1160\"},\"ticker\":{\"id\":\"1133\"}},\"id\":\"1132\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1137\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1142\"}},\"id\":\"1138\",\"type\":\"BoxZoomTool\"}],\"root_ids\":[\"1119\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"b138faf3-0b10-497f-98c3-d563b93a7e0f\",\"root_ids\":[\"1119\"],\"roots\":{\"1119\":\"fa6121f2-f53e-42f7-bf72-2203633dad30\"}}];\n", + " const docs_json = {\"c9f6111c-7da2-44da-98fe-a9f91823dc2f\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1128\"}],\"center\":[{\"id\":\"1131\"},{\"id\":\"1135\"},{\"id\":\"1167\"}],\"height\":300,\"left\":[{\"id\":\"1132\"}],\"renderers\":[{\"id\":\"1154\"}],\"title\":{\"id\":\"1156\"},\"toolbar\":{\"id\":\"1143\"},\"width\":990,\"x_range\":{\"id\":\"1120\"},\"x_scale\":{\"id\":\"1124\"},\"y_range\":{\"id\":\"1122\"},\"y_scale\":{\"id\":\"1126\"}},\"id\":\"1119\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1162\"},\"group\":null,\"major_label_policy\":{\"id\":\"1163\"},\"ticker\":{\"id\":\"1129\"}},\"id\":\"1128\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1159\"},\"group\":null,\"major_label_policy\":{\"id\":\"1160\"},\"ticker\":{\"id\":\"1133\"}},\"id\":\"1132\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"1132\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1135\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1152\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1168\"}]},\"id\":\"1167\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1136\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1142\"}},\"id\":\"1138\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"1128\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1131\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"AllLabels\"},{\"attributes\":{\"label\":{\"value\":\"TOF Simulation\"},\"renderers\":[{\"id\":\"1154\"}]},\"id\":\"1168\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"DataRange1d\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1142\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1156\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1150\"}},\"id\":\"1155\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1151\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1137\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1133\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1153\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1150\"},\"glyph\":{\"id\":\"1151\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1153\"},\"nonselection_glyph\":{\"id\":\"1152\"},\"view\":{\"id\":\"1155\"}},\"id\":\"1154\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAABwp0C2ahCgGKCnQGvVIEAx0KdAIUAx4EkAqEDWqkGAYjCoQIwVUiB7YKhAQoBiwJOQqED36nJgrMCoQK1VgwDF8KhAYsCToN0gqUAYK6RA9lCpQM6VtOAOgalAgwDFgCexqUA5a9UgQOGpQO7V5cBYEapApED2YHFBqkBaqwYBinGqQA8WF6GioapAxYAnQbvRqkB76zfh0wGrQDBWSIHsMatA5sBYIQViq0CcK2nBHZKrQFGWeWE2wqtABgGKAU/yq0C8a5qhZyKsQHLWqkGAUqxAKEG74ZiCrEDdq8uBsbKsQJMW3CHK4qxASIHsweISrUD+6/xh+0KtQLRWDQIUc61AacEdoiyjrUAfLC5CRdOtQNSWPuJdA65AigFPgnYzrkBAbF8ij2OuQPXWb8Knk65Aq0GAYsDDrkBgrJAC2fOuQBYXoaLxI69AzIGxQgpUr0CB7MHiIoSvQDdX0oI7tK9A7MHiIlTkr0BRlnlhNgqwQKzLgbFCIrBABgGKAU86sEBiNpJRW1KwQLxrmqFnarBAF6Gi8XOCsEBy1qpBgJqwQM0Ls5GMsrBAKEG74ZjKsECCdsMxpeKwQN2ry4Gx+rBAOOHT0b0SsUCTFtwhyiqxQO5L5HHWQrFASIHsweJasUCjtvQR73KxQP7r/GH7irFAWSEFsgejsUC0Vg0CFLuxQA6MFVIg07FAacEdoizrsUDE9iXyOAOyQB8sLkJFG7JAemE2klEzskDUlj7iXUuyQC/MRjJqY7JAigFPgnZ7skDlNlfSgpOyQEBsXyKPq7JAmqFncpvDskD11m/Cp9uyQFAMeBK087JAq0GAYsALs0AGd4iyzCOzQGCskALZO7NAu+GYUuVTs0AWF6Gi8WuzQHFMqfL9g7NAzIGxQgqcs0Amt7mSFrSzQIHsweIizLNA3CHKMi/ks0A3V9KCO/yzQJKM2tJHFLRA7MHiIlQstEBH9+pyYES0QKIs88JsXLRA/WH7Enl0tEBYlwNjhYy0QLLMC7ORpLRADQIUA568tEBoNxxTqtS0QMNsJKO27LRAHqIs88IEtUB41zRDzxy1QNQMPZPbNLVALkJF4+dMtUCJd00z9GS1QOSsVYMAfbVAPuJd0wyVtUCaF2YjGa21QPRMbnMlxbVAT4J2wzHdtUCqt34TPvW1QATthmNKDbZAYCKPs1YltkC6V5cDYz22QBWNn1NvVbZAcMKno3tttkDK96/zh4W2QCYtuEOUnbZAgGLAk6C1tkDbl8jjrM22QDbN0DO55bZAkALZg8X9tkDsN+HT0RW3QEZt6SPeLbdAoaLxc+pFt0D81/nD9l23QFYNAhQDdrdAskIKZA+Ot0AMeBK0G6a3QGetGgQovrdAwuIiVDTWt0AcGCukQO63QHhNM/RMBrhA0oI7RFkeuEAtuEOUZTa4QIjtS+RxTrhA4iJUNH5muEA+WFyEin64QJiNZNSWlrhA88JsJKOuuEBO+HR0r8a4QKgtfcS73rhABGOFFMj2uEBemI1k1A65QLnNlbTgJrlAFAOeBO0+uUBuOKZU+Va5QMptrqQFb7lAJKO29BGHuUB/2L5EHp+5QNoNx5Qqt7lANEPP5DbPuUCQeNc0Q+e5QOqt34RP/7lARePn1FsXukCgGPAkaC+6QPpN+HR0R7pAVoMAxYBfukCwuAgVjXe6QAvuEGWZj7pAZiMZtaWnukDBWCEFsr+6QByOKVW+17pAdsMxpcrvukDR+Dn11ge7QCwuQkXjH7tAh2NKle83u0DimFLl+0+7QDzOWjUIaLtAlwNjhRSAu0DyOGvVIJi7QE1ucyUtsLtAqKN7dTnIu0AC2YPFReC7QF0OjBVS+LtAuEOUZV4QvEATeZy1aii8QG6upAV3QLxAyOOsVYNYvEAjGbWlj3C8QH5OvfWbiLxA2YPFRaigvEA0uc2VtLi8QI7u1eXA0LxA6SPeNc3ovEBEWeaF2QC9QJ+O7tXlGL1A+sP2JfIwvUBU+f51/ki9QK8uB8YKYb1ACmQPFhd5vUBlmRdmI5G9QMDOH7Yvqb1AGgQoBjzBvUB1OTBWSNm9QNBuOKZU8b1AK6RA9mAJvkCG2UhGbSG+QOEOUZZ5Ob5AO0RZ5oVRvkCWeWE2kmm+QPGuaYaegb5ATORx1qqZvkCnGXomt7G+QAFPgnbDyb5AXISKxs/hvkC3uZIW3Pm+QBLvmmboEb9AbSSjtvQpv0DHWasGAUK/QCKPs1YNWr9AfcS7phlyv0DY+cP2JYq/QDMvzEYyor9AjWTUlj66v0DomdzmStK/QEPP5DZX6r9AT4J2wzEBwED8nHrrNw3AQKq3fhM+GcBAV9KCO0QlwEAE7YZjSjHAQLIHi4tQPcBAYCKPs1ZJwEAMPZPbXFXAQLpXlwNjYcBAaHKbK2ltwEAVjZ9Tb3nAQMKno3t1hcBAcMKno3uRwEAd3avLgZ3AQMr3r/OHqcBAeBK0G461wEAmLbhDlMHAQNJHvGuazcBAgGLAk6DZwEAufcS7puXAQNuXyOOs8cBAiLLMC7P9wEA2zdAzuQnBQOPn1Fu/FcFAkALZg8UhwUA+Hd2ryy3BQOw34dPROcFAmVLl+9dFwUBGbekj3lHBQPSH7UvkXcFAoaLxc+ppwUBOvfWb8HXBQPzX+cP2gcFAqfL96/yNwUBWDQIUA5rBQAQoBjwJpsFAskIKZA+ywUBfXQ6MFb7BQAx4ErQbysFAupIW3CHWwUBnrRoEKOLBQBTIHiwu7sFAwuIiVDT6wUBv/SZ8OgbCQBwYK6RAEsJAyjIvzEYewkB4TTP0TCrCQCVoNxxTNsJA0oI7RFlCwkCAnT9sX07CQC24Q5RlWsJA2tJHvGtmwkCI7UvkcXLCQDUIUAx4fsJA4iJUNH6KwkCQPVhchJbCQD5YXISKosJA63JgrJCuwkCYjWTUlrrCQEaoaPycxsJA88JsJKPSwkCg3XBMqd7CQE74dHSv6sJA/BJ5nLX2wkCoLX3EuwLDQFZIgezBDsNABGOFFMgaw0CxfYk8zibDQF6YjWTUMsNADLORjNo+w0C5zZW04ErDQGbomdzmVsNAFAOeBO1iw0DCHaIs827DQG44plT5esNAHFOqfP+Gw0DKba6kBZPDQHeIsswLn8NAJKO29BGrw0DSvbocGLfDQH/YvkQew8NALPPCbCTPw0DaDceUKtvDQIgoy7ww58NANEPP5Dbzw0DiXdMMPf/DQJB41zRDC8RAPZPbXEkXxEDqrd+ETyPEQJjI46xVL8RARePn1Fs7xEDy/ev8YUfEQKAY8CRoU8RATjP0TG5fxED6Tfh0dGvEQKho/Jx6d8RAVoMAxYCDxEADngTtho/EQLC4CBWNm8RAXtMMPZOnxEAL7hBlmbPEQLgIFY2fv8RAZiMZtaXLxEAUPh3dq9fEQMFYIQWy48RAbnMlLbjvxEAcjilVvvvEQMmoLX3EB8VAdsMxpcoTxUAk3jXN0B/FQNH4OfXWK8VAfhM+Hd03xUAsLkJF40PFQNpIRm3pT8VAh2NKle9bxUA0fk699WfFQOKYUuX7c8VAj7NWDQKAxUA8zlo1CIzFQOroXl0OmMVAlwNjhRSkxUBEHmetGrDFQPI4a9UgvMVAoFNv/SbIxUBNbnMlLdTFQPqId00z4MVAqKN7dTnsxUBVvn+dP/jFQALZg8VFBMZAsPOH7UsQxkBdDowVUhzGQAspkD1YKMZAuEOUZV40xkBlXpiNZEDGQBN5nLVqTMZAwJOg3XBYxkBurqQFd2TGQBvJqC19cMZAyOOsVYN8xkB2/rB9iYjGQCMZtaWPlMZA0TO5zZWgxkB+Tr31m6zGQCtpwR2iuMZA2YPFRajExkCGnsltrtDGQDS5zZW03MZA4dPRvbroxkCO7tXlwPTGQDwJ2g3HAMdA6SPeNc0Mx0CXPuJd0xjHQERZ5oXZJMdA8XPqrd8wx0Cfju7V5TzHQEyp8v3rSMdA+sP2JfJUx0Cn3vpN+GDHQFT5/nX+bMdAAhQDngR5x0CvLgfGCoXHQF1JC+4QkcdACmQPFhedx0C3fhM+HanHQGWZF2YjtcdAErQbjinBx0DAzh+2L83HQG3pI9412cdAGgQoBjzlx0DIHiwuQvHHQHU5MFZI/cdAI1Q0fk4JyEDQbjimVBXIQH6JPM5aIchAK6RA9mAtyEDYvkQeZznIQIbZSEZtRchAM/RMbnNRyEDhDlGWeV3IQI4pVb5/achAO0RZ5oV1yEDpXl0OjIHIQJZ5YTaSjchARJRlXpiZyEDxrmmGnqXIQJ7Jba6kschATORx1qq9yED5/nX+sMnIQKcZeia31chAVDR+Tr3hyEABT4J2w+3IQK9php7J+chAXISKxs8FyUAKn47u1RHJQLe5khbcHclAZNSWPuIpyUAS75pm6DXJQL8Jn47uQclAbSSjtvRNyUAaP6fe+lnJQMdZqwYBZslAdXSvLgdyyUAij7NWDX7JQNCpt34TislAfcS7phmWyUAq37/OH6LJQNj5w/YlrslAhRTIHiy6yUAzL8xGMsbJQOBJ0G440slAjWTUlj7eyUA7f9i+ROrJQOiZ3OZK9slAlrTgDlECykBDz+Q2Vw7KQPDp6F5dGspAngTthmMmykBLH/GuaTLKQPk59dZvPspAplT5/nVKykBTb/0mfFbKQAGKAU+CYspArqQFd4huykBcvwmfjnrKQAnaDceUhspAtvQR75qSykBkDxYXoZ7KQBEqGj+nqspAv0QeZ622ykBsXyKPs8LKQBl6Jre5zspAx5Qq37/aykB0ry4HxubKQCLKMi/M8spAz+Q2V9L+ykB8/zp/2ArLQCoaP6feFstA1zRDz+Qiy0CFT0f36i7LQDJqSx/xOstA34RPR/dGy0CNn1Nv/VLLQDq6V5cDX8tA6NRbvwlry0CV71/nD3fLQEIKZA8Wg8tA8CRoNxyPy0CdP2xfIpvLQEtacIcop8tA+HR0ry6zy0Clj3jXNL/LQFOqfP86y8tAAMWAJ0HXy0Cu34RPR+PLQFv6iHdN78tACRWNn1P7y0C2L5HHWQfMQGNKle9fE8xAEWWZF2YfzEC+f50/bCvMQGyaoWdyN8xAGbWlj3hDzEDGz6m3fk/MQHTqrd+EW8xAIQWyB4tnzEDPH7YvkXPMQHw6uleXf8xAKVW+f52LzEDXb8Kno5fMQISKxs+po8xAMqXK96+vzEDfv84ftrvMQIza0ke8x8xAOvXWb8LTzEDnD9uXyN/MQJUq37/O68xAQkXj59T3zEDvX+cP2wPNQJ166zfhD81ASpXvX+cbzUD4r/OH7SfNQKXK96/zM81AUuX71/k/zUAAAAAAAEzNQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[500]}},\"selected\":{\"id\":\"1165\"},\"selection_policy\":{\"id\":\"1164\"}},\"id\":\"1150\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"tools\":[{\"id\":\"1136\"},{\"id\":\"1137\"},{\"id\":\"1138\"},{\"id\":\"1139\"},{\"id\":\"1140\"},{\"id\":\"1141\"}]},\"id\":\"1143\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1140\",\"type\":\"ResetTool\"}],\"root_ids\":[\"1119\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", + " const render_items = [{\"docid\":\"c9f6111c-7da2-44da-98fe-a9f91823dc2f\",\"root_ids\":[\"1119\"],\"roots\":{\"1119\":\"61ac9981-dcb7-4887-b768-4ecec10bc3f8\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", "\n", " }\n", From 491bdd9f470b666ee65890414511894134ddb91b Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 11 Oct 2021 11:52:25 +0200 Subject: [PATCH 229/312] Update postBuild --- binder/postBuild | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/binder/postBuild b/binder/postBuild index 1b275d62..89eac693 100644 --- a/binder/postBuild +++ b/binder/postBuild @@ -1,4 +1,5 @@ #!/bin/bash pip install --extra-index-url https://easyscience.github.io/pypi -r requirements.txt -pip install -r requirements-dev.txt \ No newline at end of file +pip install -r requirements-dev.txt +pip install --no-deps . From bcf107f7f0d675621404547731c579182567068a Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 11 Oct 2021 12:00:56 +0200 Subject: [PATCH 230/312] Update Simulation.ipynb --- examples/Simulation.ipynb | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/examples/Simulation.ipynb b/examples/Simulation.ipynb index 8a26b8a9..fb9d5a4d 100644 --- a/examples/Simulation.ipynb +++ b/examples/Simulation.ipynb @@ -28,14 +28,7 @@ "# esyScience, technique-independent\n", "from easyCore import np\n", "from easyCore.Fitting.Fitting import Fitter\n", - "\n", - "# esyScience, diffraction\n", - "try:\n", - " from easyDiffractionLib import Phase\n", - "except ImportError:\n", - " import sys, os\n", - " sys.path.append(os.path.abspath('..'))\n", - " \n", + "from easyDiffractionLib import Site, Phase, Phases\n", "from easyDiffractionLib.sample import Sample as Job\n", "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", From 3e998256cfcdcf228f78173c2c41c9124556285c Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 11 Oct 2021 12:02:59 +0200 Subject: [PATCH 231/312] Update notebooks --- examples/Fitting.ipynb | 8 +------- examples/Simulation.ipynb | 4 ++-- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/examples/Fitting.ipynb b/examples/Fitting.ipynb index b6872c24..edd404e2 100644 --- a/examples/Fitting.ipynb +++ b/examples/Fitting.ipynb @@ -41,12 +41,6 @@ "from easyCore.Fitting.Fitting import Fitter\n", "\n", "# esyScience, diffraction\n", - "try:\n", - " from easyDiffractionLib import Phase\n", - "except ImportError:\n", - " import sys, os\n", - " sys.path.append(os.path.abspath('..'))\n", - " \n", "from easyDiffractionLib import Phases\n", "from easyDiffractionLib.sample import Sample as Job\n", "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", @@ -1663,4 +1657,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/examples/Simulation.ipynb b/examples/Simulation.ipynb index fb9d5a4d..c9dc12c6 100644 --- a/examples/Simulation.ipynb +++ b/examples/Simulation.ipynb @@ -28,7 +28,7 @@ "# esyScience, technique-independent\n", "from easyCore import np\n", "from easyCore.Fitting.Fitting import Fitter\n", - + "# esyScience, diffraction\n", "from easyDiffractionLib import Site, Phase, Phases\n", "from easyDiffractionLib.sample import Sample as Job\n", "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", @@ -946,4 +946,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file From 792089a2219e3ee730232c2f7d1c988f7eddf856 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 11 Oct 2021 14:26:38 +0200 Subject: [PATCH 232/312] Add patch to autobuild (fix pypi arguments) --- .github/workflows/self_publish_alpha.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 6fc5fea7..56ee842b 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -20,7 +20,7 @@ jobs: - uses: Gr1N/setup-poetry@v4 - name: Install and build run: | - poetry version prerelease + poetry version patch poetry build - name: Set name variable From 966ec09c5370dc1faaba3730fefafdb99168463c Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 11 Oct 2021 16:50:42 +0200 Subject: [PATCH 233/312] Create pypi_publish.yml --- .github/workflows/pypi_publish.yml | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/pypi_publish.yml diff --git a/.github/workflows/pypi_publish.yml b/.github/workflows/pypi_publish.yml new file mode 100644 index 00000000..81ac43ae --- /dev/null +++ b/.github/workflows/pypi_publish.yml @@ -0,0 +1,32 @@ +# This workflows will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + +name: Upload Python Package + +on: + push: + branches: [ master ] + +jobs: + deploy: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.8' + - uses: Gr1N/setup-poetry@v4 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + poetry update + - name: Build + run: | + poetry build + - name: Publish distribution 📦 to PyPI + uses: pypa/gh-action-pypi-publish@master + with: + password: ${{ secrets.PYPI_PASSWORD }} From c8ba665aacc9782c10649e19af77f27377a1ec18 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Thu, 11 Nov 2021 15:05:12 +0100 Subject: [PATCH 234/312] Modified mp_mc branch with pathos multiprocessing commented out --- easyDiffractionLib/Calculators/cryspy.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 720f2f55..e7c87781 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -6,7 +6,7 @@ import cryspy import warnings from easyCore import np, borg -from pathos import multiprocessing as mp +# from pathos import multiprocessing as mp import functools warnings.filterwarnings('ignore') @@ -326,17 +326,23 @@ def do_calc_setup(self, scale, this_x_array): crystals = [self.storage[key] for key in self.current_crystal.keys()] phase_scales = [self.storage[str(key) + '_scale'] for key in self.current_crystal.keys()] phase_lists = [] + profiles = [] + peak_dat = [] for crystal in crystals: phasesL = cryspy.PhaseL() idx = [idx for idx, item in enumerate(self.phases.items) if item.label == crystal.data_name][0] phasesL.items.append(self.phases.items[idx]) phase_lists.append(phasesL) - pool = mp.ProcessPool(num_crys) - result = pool.amap(functools.partial(_do_run, self.model, self.polarized, this_x_array), crystals, phase_lists) - while not result.ready(): - time.sleep(0.01) - obtained = result.get() - profiles, peak_dat = zip(*obtained) + profile, peak = _do_run(self.model, self.polarized, this_x_array, crystal, phasesL) + profiles.append(profile) + peak_dat.append(peak) + # pool = mp.ProcessPool(num_crys) + # print("\n\nPOOL = " + str(pool)) + # result = pool.amap(functools.partial(_do_run, self.model, self.polarized, this_x_array), crystals, phase_lists) + # while not result.ready(): + # time.sleep(0.01) + # obtained = result.get() + # profiles, peak_dat = zip(*obtained) # else: # raise ArithmeticError @@ -358,6 +364,7 @@ def do_calc_setup(self, scale, this_x_array): self.additional_data['phase_names'] = list(additional_data.keys()) self.additional_data['type'] = self.type + # just the sum of all phases dependent_output = scale * np.sum(dependents, axis=0) + bg if borg.debug: From be26f0256ffa59ae058ea7951eb879f622097364 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Thu, 18 Nov 2021 12:24:36 +0100 Subject: [PATCH 235/312] Added convencience methods for single phase profiles --- easyDiffractionLib/Calculators/cryspy.py | 20 +++++++++++++++++++ easyDiffractionLib/Interfaces/cryspy.py | 6 ++++++ .../Interfaces/interfaceTemplate.py | 9 ++++++++- easyDiffractionLib/interface.py | 6 ++++++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 12cbbd1b..b561e13e 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -368,9 +368,12 @@ def do_calc_setup(self, scale, this_x_array): # just the sum of all phases dependent_output = scale * np.sum(dependents, axis=0) + bg + # returned_deps = [scale*dep+bg for dep in dependents] + if borg.debug: print(f"y_calc: {dependent_output}") return dependent_output + # return returned_deps def calculate(self, x_array: np.ndarray) -> np.ndarray: """ @@ -388,6 +391,23 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: return self.powder_1d_tof_calculate(x_array) return res + def get_calculated_y_for_phase(self, phase_idx: int) -> list: + """ + For a given phase index, return the calculated y + :param phase_name: name of the phase + :type phase_idx: int + :return: calculated y + :rtype: np.ndarray + """ + if phase_idx > len(self.additional_data['components']): + raise KeyError(f"{phase_name} not in phase_names") + return self.additional_data['components'][phase_idx] + + def get_total_y_for_phases(self) -> list: + x_values = self.additional_data['ivar_run'] + y_values = np.sum([s for s in self.additional_data['components']], axis=0) + return x_values, y_values + def get_hkl(self, x_array: np.ndarray = None, idx: int = 0, phase_name=None) -> dict: # Do we need to re-run a calculation to get the HKL's diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 296fc80a..c564db92 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -213,6 +213,12 @@ def get_phase_components(self, phase_name): def __createModel(self, model, model_type): self.calculator.createModel(model, model_type) + def get_calculated_y_for_phase(self, phase_idx: int) -> list: + return self.calculator.get_calculated_y_for_phase(phase_idx) + + def get_total_y_for_phases(self) -> list: + return self.calculator.get_total_y_for_phases() + @staticmethod def __identify(obj): return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/interfaceTemplate.py b/easyDiffractionLib/Interfaces/interfaceTemplate.py index 4ce4fed8..b640b0e9 100644 --- a/easyDiffractionLib/Interfaces/interfaceTemplate.py +++ b/easyDiffractionLib/Interfaces/interfaceTemplate.py @@ -128,4 +128,11 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: @abstractmethod def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: pass - \ No newline at end of file + + @abstractmethod + def get_calculated_y_for_phase(self, idx=None) -> list: + pass + + @abstractmethod + def get_total_y_for_phases(self) -> list: + pass diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 07e636b3..94289256 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -14,6 +14,12 @@ def __init__(self, *args, **kwargs): def get_hkl(self, x_array=None, idx=None, phase_name=None) -> dict: return self().get_hkl(x_array, idx=idx, phase_name=phase_name) + def get_total_y_for_phases(self) -> list: + return self().get_total_y_for_phases() + + def get_calculated_y_for_phase(self, idx=None) -> list: + return self().get_calculated_y_for_phase(idx) + def get_phase_components(self, phase_name): return self().get_phase_components(phase_name) From 2644faee802c1ef5c49e4ea6aaae7ef66894c989 Mon Sep 17 00:00:00 2001 From: Piotr R Date: Fri, 19 Nov 2021 18:33:34 +0100 Subject: [PATCH 236/312] Redefine additional_data['components'] with scaled values --- easyDiffractionLib/Calculators/cryspy.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index b561e13e..445a888e 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -361,14 +361,14 @@ def do_calc_setup(self, scale, this_x_array): self.additional_data['global_scale'] = scale self.additional_data['background'] = bg self.additional_data['ivar_run'] = this_x_array - self.additional_data['components'] = dependents self.additional_data['phase_names'] = list(additional_data.keys()) self.additional_data['type'] = self.type # just the sum of all phases dependent_output = scale * np.sum(dependents, axis=0) + bg - # returned_deps = [scale*dep+bg for dep in dependents] + scaled_dependents = [scale*dep+bg for dep in dependents] + self.additional_data['components'] = scaled_dependents if borg.debug: print(f"y_calc: {dependent_output}") @@ -394,13 +394,13 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: def get_calculated_y_for_phase(self, phase_idx: int) -> list: """ For a given phase index, return the calculated y - :param phase_name: name of the phase + :param phase_idx: index of the phase :type phase_idx: int :return: calculated y :rtype: np.ndarray """ if phase_idx > len(self.additional_data['components']): - raise KeyError(f"{phase_name} not in phase_names") + raise KeyError(f"phase_index incorrect: {phase_idx}") return self.additional_data['components'][phase_idx] def get_total_y_for_phases(self) -> list: From c7a6fc593927ed8e1c521b0aff7696ac52c22d30 Mon Sep 17 00:00:00 2001 From: Piotr R Date: Sat, 20 Nov 2021 10:40:40 +0100 Subject: [PATCH 237/312] typo in toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c161dfa9..e0602490 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.9" -easyScienceCore = '>=0.1.1a0' +# easyScienceCore = '>=0.1.1a0' cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } CFML = '^0.0.1' GSASII = '^0.0.1' From d28e7d268e351249a0b6788446b94067d35224e5 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 26 Nov 2021 13:35:37 +0100 Subject: [PATCH 238/312] Implement multiphase with CFML --- easyDiffractionLib/Calculators/CFML.py | 301 ++++++---- easyDiffractionLib/Calculators/cryspy.py | 310 +++++----- easyDiffractionLib/Interfaces/CFML.py | 129 ++-- easyDiffractionLib/Interfaces/cryspy.py | 218 ++++--- easyDiffractionLib/Profiles/P1D.py | 713 +++++++++++++---------- pyproject.toml | 4 - 6 files changed, 945 insertions(+), 730 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 0f5e2395..1fe2aebe 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -1,7 +1,8 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" -import os, pathlib +import os, pathlib, re +from typing import Tuple import CFML_api import timeit @@ -16,28 +17,29 @@ def __init__(self, filename: str = None): self.background = None self.pattern = None self.hkl_dict = { - 'ttheta': np.empty(0), - 'h': np.empty(0), - 'k': np.empty(0), - 'l': np.empty(0) + "ttheta": np.empty(0), + "h": np.empty(0), + "k": np.empty(0), + "l": np.empty(0), } self.known_phases = {} self.additional_data = {} + self.storage = {} - def createConditions(self, job_type='N'): + def createConditions(self, job_type="N"): self.conditions = { - 'lamb': 1.54, - 'u_resolution': 0.01, - 'v_resolution': 0.0, - 'w_resolution': 0.0, - 'x_resolution': 0.0, - 'y_resolution': 0.0, - 'z_resolution': 0.0 + "lamb": 1.54, + "u_resolution": 0.01, + "v_resolution": 0.0, + "w_resolution": 0.0, + "x_resolution": 0.0, + "y_resolution": 0.0, + "z_resolution": 0.0, } def conditionsUpdate(self, _, **kwargs): for key, value in kwargs.items(): - self.conditions[key]= value + self.conditions[key] = value def conditionsReturn(self, _, name): return self.conditions.get(name) @@ -53,7 +55,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if self.filename is None: raise AttributeError - #print("\n\n\n") + # print("\n\n\n") start_time = timeit.default_timer() if self.pattern is None: @@ -64,129 +66,139 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: offset = self.pattern.zero_shift.raw_value end_time = timeit.default_timer() - #print("+ calculate A: {0:.4f} s".format(end_time - start_time)) + # print("+ calculate A: {0:.4f} s".format(end_time - start_time)) start_time = timeit.default_timer() this_x_array = x_array + offset - # Sample parameters - cif_file = CFML_api.CIFFile(self.filename) - cell = cif_file.cell - space_group = cif_file.space_group - atom_list = cif_file.atom_list - job_info = cif_file.job_info - - end_time = timeit.default_timer() - #print("+ calculate B: {0:.4f} s".format(end_time - start_time)) - - start_time = timeit.default_timer() - - #cell.print_description() - #space_group.print_description() - #atom_list.print_description() - #job_info.print_description() - # Experiment/Instrument/Simulation parameters x_min = this_x_array[0] x_max = this_x_array[-1] num_points = np.prod(x_array.shape) x_step = (x_max - x_min) / (num_points - 1) - job_info.range_2theta = (x_min, x_max) - job_info.theta_step = x_step - job_info.u_resolution = self.conditions['u_resolution'] - job_info.v_resolution = self.conditions['v_resolution'] - job_info.w_resolution = self.conditions['w_resolution'] - job_info.x_resolution = self.conditions['x_resolution'] - job_info.y_resolution = self.conditions['y_resolution'] - job_info.lambdas = (self.conditions['lamb'], self.conditions['lamb']) - job_info.bkg = 0.0 - - end_time = timeit.default_timer() - #print("+ calculate C: {0:.4f} s".format(end_time - start_time)) - # Calculations - try: - start_time = timeit.default_timer() - reflection_list = CFML_api.ReflectionList(cell, - space_group, - True, - job_info) - end_time = timeit.default_timer() - #print("+ reflection_list = CFML_api.ReflectionList: {0:.4f} s".format(end_time - start_time)) - - start_time = timeit.default_timer() - reflection_list.compute_structure_factors(space_group, - atom_list, - job_info) - end_time = timeit.default_timer() - #print("+ reflection_list.compute_structure_factors: {0:.4f} s".format(end_time - start_time)) + if len(self.pattern.backgrounds) == 0: + bg = np.zeros_like(this_x_array) + else: + bg = self.pattern.backgrounds[0].calculate(this_x_array) - start_time = timeit.default_timer() + dependents = [] - end_time = timeit.default_timer() - #print("+ set reflection_list: {0:.4f} s".format(end_time - start_time)) + # Sample parameters + # We assume that the phases items has the same indexing as the knownphases item + for idx, file in enumerate(self.grab_cifs()[::-1]): + cif_file = CFML_api.CIFFile(file) + cell = cif_file.cell + space_group = cif_file.space_group + atom_list = cif_file.atom_list + job_info = cif_file.job_info - start_time = timeit.default_timer() - diffraction_pattern = CFML_api.DiffractionPattern(job_info, - reflection_list, - cell.reciprocal_cell_vol) end_time = timeit.default_timer() - #print("+ diffraction_pattern = CFML_api.DiffractionPattern: {0:.4f} s".format(end_time - start_time)) - - except: - raise ArithmeticError - finally: + # print("+ calculate B: {0:.4f} s".format(end_time - start_time)) start_time = timeit.default_timer() - # Clean up - for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): - if os.path.basename(p) != "easydiffraction_temp.cif": - p.unlink() + # cell.print_description() + # space_group.print_description() + # atom_list.print_description() + # job_info.print_description() + + job_info.range_2theta = (x_min, x_max) + job_info.theta_step = x_step + job_info.u_resolution = self.conditions["u_resolution"] + job_info.v_resolution = self.conditions["v_resolution"] + job_info.w_resolution = self.conditions["w_resolution"] + job_info.x_resolution = self.conditions["x_resolution"] + job_info.y_resolution = self.conditions["y_resolution"] + job_info.lambdas = (self.conditions["lamb"], self.conditions["lamb"]) + job_info.bkg = 0.0 end_time = timeit.default_timer() - #print("+ calculate D: {0:.4f} s".format(end_time - start_time)) - - start_time = timeit.default_timer() - - if len(self.pattern.backgrounds) == 0: - bg = np.zeros_like(this_x_array) - else: - bg = self.pattern.backgrounds[0].calculate(this_x_array) + # print("+ calculate C: {0:.4f} s".format(end_time - start_time)) + + # Calculations + try: + start_time = timeit.default_timer() + reflection_list = CFML_api.ReflectionList( + cell, space_group, True, job_info + ) + end_time = timeit.default_timer() + # print("+ reflection_list = CFML_api.ReflectionList: {0:.4f} s".format(end_time - start_time)) + + start_time = timeit.default_timer() + reflection_list.compute_structure_factors( + space_group, atom_list, job_info + ) + end_time = timeit.default_timer() + # print("+ reflection_list.compute_structure_factors: {0:.4f} s".format(end_time - start_time)) + + start_time = timeit.default_timer() + + end_time = timeit.default_timer() + # print("+ set reflection_list: {0:.4f} s".format(end_time - start_time)) + + start_time = timeit.default_timer() + diffraction_pattern = CFML_api.DiffractionPattern( + job_info, reflection_list, cell.reciprocal_cell_vol + ) + end_time = timeit.default_timer() + # print("+ diffraction_pattern = CFML_api.DiffractionPattern: {0:.4f} s".format(end_time - start_time)) + + except: + raise ArithmeticError + finally: + + start_time = timeit.default_timer() + + # Clean up + # for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): + # if os.path.basename(p) != "easydiffraction_temp.cif": + # p.unlink() + + end_time = timeit.default_timer() + # print("+ calculate D: {0:.4f} s".format(end_time - start_time)) - dependent, additional_data = self.nonPolarized_update(list(self.known_phases.items())[0], diffraction_pattern, - reflection_list, job_info, scales=1) - self.additional_data.update(additional_data) - self.additional_data['global_scale'] = scale - self.additional_data['background'] = bg - self.additional_data['ivar_run'] = this_x_array - self.additional_data['ivar'] = x_array - self.additional_data['components'] = diffraction_pattern.ycalc - self.additional_data['phase_names'] = list(self.known_phases.items()) - self.additional_data['type'] = 'powder1DCW' + start_time = timeit.default_timer() - res = scale * dependent + bg + item = list(self.known_phases.items())[idx] + key = list(self.known_phases.keys())[idx] + phase_scale = self.getPhaseScale(key) + + dependent, additional_data = self.nonPolarized_update( + item, diffraction_pattern, reflection_list, job_info, scales=phase_scale + ) + dependents.append(dependent) + self.additional_data.update(additional_data) + self.additional_data["global_scale"] = scale + self.additional_data["background"] = bg + self.additional_data["ivar_run"] = this_x_array + self.additional_data["ivar"] = x_array + self.additional_data["components"] = [scale * dep + bg for dep in dependents] + self.additional_data["phase_names"] = list(self.known_phases.items()) + self.additional_data["type"] = "powder1DCW" + + dependent_output = scale * np.sum(dependents, axis=0) + bg end_time = timeit.default_timer() - #print("+ calculate E: {0:.4f} s".format(end_time - start_time)) + # print("+ calculate E: {0:.4f} s".format(end_time - start_time)) start_time = timeit.default_timer() np.set_printoptions(precision=3) if borg.debug: - print(f"y_calc: {res}") + print(f"y_calc: {dependent_output}") end_time = timeit.default_timer() - #print("+ calculate F: {0:.4f} s".format(end_time - start_time)) + # print("+ calculate F: {0:.4f} s".format(end_time - start_time)) - return res + return dependent_output def get_hkl(self, x_array: np.ndarray = None, idx=0, phase_name=None) -> dict: # Do we need to re-run a calculation to get the HKL's do_run = False - old_x = self.additional_data.get('ivar', np.array(())) + old_x = self.additional_data.get("ivar", np.array(())) if not np.array_equal(old_x, x_array): do_run = True if do_run and x_array is not None: @@ -197,35 +209,44 @@ def get_hkl(self, x_array: np.ndarray = None, idx=0, phase_name=None) -> dict: known_phases = list(self.known_phases.values()) phase_name = known_phases[idx] phase_data = self.additional_data.get(phase_name, {}) - return phase_data.get('hkl', { - 'ttheta': np.array([]), - 'h': np.array([]), - 'k': np.array([]), - 'l': np.array([]) - }) + return phase_data.get( + "hkl", + { + "ttheta": np.array([]), + "h": np.array([]), + "k": np.array([]), + "l": np.array([]), + }, + ) @staticmethod - def nonPolarized_update(crystal_name, diffraction_pattern, reflection_list, job_info, scales=1): + def nonPolarized_update( + crystal_name, diffraction_pattern, reflection_list, job_info, scales=1 + ): # dependent = np.array([diffraction_pattern.ycalc for diffraction_pattern in profiles]) dependent = diffraction_pattern.ycalc - hkltth = np.array([[*reflection_list[i].hkl, reflection_list[i].stl] for i in range(reflection_list.nref)]) + hkltth = np.array( + [ + [*reflection_list[i].hkl, reflection_list[i].stl] + for i in range(reflection_list.nref) + ] + ) output = { - crystal_name: { - 'hkl': { - 'ttheta': np.rad2deg(np.arcsin(hkltth[:, 3] * job_info.lambdas[0])) * 2, - 'h': hkltth[:, 0], - 'k': hkltth[:, 1], - 'l': hkltth[:, 2], - }, - 'profile': scales * dependent, - 'components': { - 'total': dependent - }, - 'profile_scale': scales, - } + crystal_name: { + "hkl": { + "ttheta": np.rad2deg(np.arcsin(hkltth[:, 3] * job_info.lambdas[0])) + * 2, + "h": hkltth[:, 0], + "k": hkltth[:, 1], + "l": hkltth[:, 2], + }, + "profile": scales * dependent, + "components": {"total": dependent}, + "profile_scale": scales, } + } return dependent, output def add_phase(self, phase_id, phase_name): @@ -237,6 +258,40 @@ def remove_phase(self, phases_id): def get_phase_components(self, phase_name): data = None - if phase_name in self.additional_data['phase_names']: + if phase_name in self.additional_data["phase_names"]: data = self.additional_data[phase_name].copy() return data + + def get_calculated_y_for_phase(self, phase_idx: int) -> list: + """ + For a given phase index, return the calculated y + :param phase_idx: index of the phase + :type phase_idx: int + :return: calculated y + :rtype: np.ndarray + """ + if phase_idx > len(self.additional_data["components"]): + raise KeyError(f"phase_index incorrect: {phase_idx}") + return self.additional_data["components"][phase_idx] + + def get_total_y_for_phases(self) -> Tuple[np.ndarray, np.ndarray]: + x_values = self.additional_data["ivar_run"] + y_values = np.sum([s for s in self.additional_data["components"]], axis=0) + return x_values, y_values + + def setPhaseScale(self, model_name, scale=1): + self.storage[str(model_name) + "_scale"] = scale + + def getPhaseScale(self, model_name, *args, **kwargs): + return self.storage.get(str(model_name) + "_scale", 1) + + def grab_cifs(self): + base, file = os.path.split(self.filename) + ext = file[-3:] + file = file[:-4] + files = [ + os.path.join(base, f) + for f in os.listdir(base) + if re.match(rf"{file}_[0-9]+.*\.{ext}", f) + ] + return files diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 445a888e..f7e460f2 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -2,52 +2,48 @@ __version__ = "0.0.2" import time +from typing import Tuple import cryspy import warnings from easyCore import np, borg + # from pathos import multiprocessing as mp import functools -warnings.filterwarnings('ignore') +warnings.filterwarnings("ignore") class Cryspy: def __init__(self): self.pattern = None self.conditions = { - 'wavelength': 1.25, - 'resolution': { - 'u': 0.001, - 'v': 0.001, - 'w': 0.001, - 'x': 0.000, - 'y': 0.000 - } - + "wavelength": 1.25, + "resolution": {"u": 0.001, "v": 0.001, "w": 0.001, "x": 0.000, "y": 0.000}, } self.conditions_TOF = { - 'ttheta_bank': 0, - 'dtt1': 0.1, - 'dtt2': 0, - 'resolution': { - 'sigma0': 0, - 'sigma1': 0, - 'sigma2': 0, - 'gamma0': 0, - 'gamma1': 0, - 'gamma2': 0, - 'alpha0': 0, - 'alpha1': 0, - 'beta0': 0, - 'beta1': 0} + "ttheta_bank": 0, + "dtt1": 0.1, + "dtt2": 0, + "resolution": { + "sigma0": 0, + "sigma1": 0, + "sigma2": 0, + "gamma0": 0, + "gamma1": 0, + "gamma2": 0, + "alpha0": 0, + "alpha1": 0, + "beta0": 0, + "beta1": 0, + }, } self.background = None self.storage = {} self.current_crystal = {} self.model = None self.phases = cryspy.PhaseL() - self.type = 'powder1DCW' + self.type = "powder1DCW" self.additional_data = {} self.polarized = False @@ -60,25 +56,22 @@ def cif_str(self): def cif_str(self, value): self.createCrystal_fromCifStr(value) - def createModel(self, model_id, model_type='powder1DCW'): - model = { - 'background': cryspy.PdBackgroundL(), - 'phase': self.phases - } + def createModel(self, model_id, model_type="powder1DCW"): + model = {"background": cryspy.PdBackgroundL(), "phase": self.phases} self.polarized = False - if model_type.endswith('Pol'): + if model_type.endswith("Pol"): self.polarized = True - model_type = model_type.split('Pol')[0] + model_type = model_type.split("Pol")[0] cls = cryspy.Pd - if model_type == 'powder1DTOF': + if model_type == "powder1DTOF": cls = cryspy.TOF - model['background'] = cryspy.TOFBackground() + model["background"] = cryspy.TOFBackground() self.type = model_type self.model = cls(**model) - def createPhase(self, crystal_name, key='phase'): + def createPhase(self, crystal_name, key="phase"): phase = cryspy.Phase(label=crystal_name, scale=1, igsize=0) self.storage[key] = phase return key @@ -90,15 +83,15 @@ def assignPhase(self, model_name, phase_name): def removePhase(self, model_name, phase_name): phase = self.storage[phase_name] del self.storage[phase_name] - del self.storage[str(model_name) + '_scale'] + del self.storage[phase_name.split("_")[0] + "_scale"] self.phases.items.pop(self.phases.items.index(phase)) - self.current_crystal.pop(int(phase_name.split('_')[0])) + self.current_crystal.pop(int(phase_name.split("_")[0])) def setPhaseScale(self, model_name, scale=1): - self.storage[str(model_name) + '_scale'] = scale + self.storage[str(model_name) + "_scale"] = scale def getPhaseScale(self, model_name, *args, **kwargs): - return self.storage.get(str(model_name) + '_scale', 1) + return self.storage.get(str(model_name) + "_scale", 1) def createCrystal_fromCifStr(self, cif_str: str): crystal = cryspy.Crystal.from_cif(cif_str) @@ -113,11 +106,11 @@ def createEmptyCrystal(self, crystal_name, key=None): if key is None: key = crystal_name self.storage[key] = crystal - self.createPhase(crystal_name, key=str(key) + '_phase') + self.createPhase(crystal_name, key=str(key) + "_phase") self.current_crystal[key] = crystal_name return key - def createCell(self, key='cell'): + def createCell(self, key="cell"): cell = cryspy.Cell() self.storage[key] = cell return key @@ -127,9 +120,9 @@ def assignCell_toCrystal(self, cell_name, crystal_name): cell = self.storage[cell_name] crystal.cell = cell - def createSpaceGroup(self, key='spacegroup', name_hm_alt='P 1'): - sg_split = name_hm_alt.split(':') - opts = {'name_hm_alt': sg_split[0]} + def createSpaceGroup(self, key="spacegroup", name_hm_alt="P 1"): + sg_split = name_hm_alt.split(":") + opts = {"name_hm_alt": sg_split[0]} # if len(sg_split) > 1: # opts['it_coordinate_system_code'] = sg_split[1] # try: @@ -142,10 +135,10 @@ def createSpaceGroup(self, key='spacegroup', name_hm_alt='P 1'): def getSpaceGroupSymbol(self, spacegroup_name: str, *args, **kwargs): sg = self.storage[spacegroup_name] - hm_alt = getattr(sg, 'name_hm_alt') - setting = getattr(sg, 'it_coordinate_system_code') + hm_alt = getattr(sg, "name_hm_alt") + setting = getattr(sg, "it_coordinate_system_code") if setting: - hm_alt += ':' + setting + hm_alt += ":" + setting return hm_alt def assignSpaceGroup_toCrystal(self, spacegroup_name, crystal_name): @@ -153,7 +146,7 @@ def assignSpaceGroup_toCrystal(self, spacegroup_name, crystal_name): return crystal = self.storage[crystal_name] space_group: cryspy.SpaceGroup = self.storage[spacegroup_name] - setattr(crystal, 'space_group', space_group) + setattr(crystal, "space_group", space_group) for atom in crystal.atom_site.items: atom.define_space_group_wyckoff(space_group.space_group_wyckoff) atom.form_object() @@ -165,7 +158,7 @@ def updateSpacegroup(self, sg_key, **kwargs): if len(key) > 0: key = key[0] else: - key = '' + key = "" self.assignSpaceGroup_toCrystal(sg_key, key) def createAtom(self, atom_name, **kwargs): @@ -194,25 +187,31 @@ def removeAtom_fromCrystal(self, atom_label, crystal_name): del item.items[idx] def createBackground(self, background_obj): - key = 'background' + key = "background" self.storage[key] = background_obj return key - def createSetup(self, key='setup', cls_type=None): + def createSetup(self, key="setup", cls_type=None): if cls_type is None: cls_type = self.type - if cls_type == 'powder1DCW': - setup = cryspy.Setup(wavelength=self.conditions['wavelength'], offset_ttheta=0) - elif cls_type == 'powder1DTOF': - setup = cryspy.TOFParameters(zero=0, dtt1=self.conditions_TOF['dtt1'], dtt2=self.conditions_TOF['dtt2'], - ttheta_bank=self.conditions_TOF['ttheta_bank']) + if cls_type == "powder1DCW": + setup = cryspy.Setup( + wavelength=self.conditions["wavelength"], offset_ttheta=0 + ) + elif cls_type == "powder1DTOF": + setup = cryspy.TOFParameters( + zero=0, + dtt1=self.conditions_TOF["dtt1"], + dtt2=self.conditions_TOF["dtt2"], + ttheta_bank=self.conditions_TOF["ttheta_bank"], + ) else: - raise AttributeError('The experiment is of an unknown type') + raise AttributeError("The experiment is of an unknown type") self.storage[key] = setup if self.model is not None: - setattr(self.model, 'setup', setup) + setattr(self.model, "setup", setup) return key def genericUpdate(self, item_key, **kwargs): @@ -230,15 +229,15 @@ def createResolution(self, cls_type=None): if cls_type is None: cls_type = self.type - if cls_type == 'powder1DCW': - key = 'pd_instr_resolution' - resolution = cryspy.PdInstrResolution(**self.conditions['resolution']) - elif cls_type == 'powder1DTOF': - key = 'tof_profile' - resolution = cryspy.TOFProfile(**self.conditions_TOF['resolution']) - resolution.peak_shape = 'Gauss' + if cls_type == "powder1DCW": + key = "pd_instr_resolution" + resolution = cryspy.PdInstrResolution(**self.conditions["resolution"]) + elif cls_type == "powder1DTOF": + key = "tof_profile" + resolution = cryspy.TOFProfile(**self.conditions_TOF["resolution"]) + resolution.peak_shape = "Gauss" else: - raise AttributeError('The experiment is of an unknown type') + raise AttributeError("The experiment is of an unknown type") self.storage[key] = resolution if self.model is not None: setattr(self.model, key, resolution) @@ -258,7 +257,7 @@ def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: :rtype: np.ndarray """ - for key_inner in ['pd_instr_resolution', 'setup']: + for key_inner in ["pd_instr_resolution", "setup"]: if not hasattr(self.model, key_inner): setattr(self.model, key_inner, self.storage[key_inner]) @@ -272,7 +271,7 @@ def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: this_x_array = x_array + offset if borg.debug: - print('CALLING FROM Cryspy\n----------------------') + print("CALLING FROM Cryspy\n----------------------") return self.do_calc_setup(scale, this_x_array) @@ -286,7 +285,7 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: setup, tof_profile, phase, tof_background, tof_meas """ - for key_inner in ['tof_profile', 'setup']: + for key_inner in ["tof_profile", "setup"]: if not hasattr(self.model, key_inner): try: setattr(self.model, key_inner, self.storage[key_inner]) @@ -306,11 +305,11 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: scale = self.pattern.scale.raw_value / 500.0 offset = self.pattern.zero_shift.raw_value - self.model['tof_parameters'].zero = offset + self.model["tof_parameters"].zero = offset this_x_array = x_array if borg.debug: - print('CALLING FROM Cryspy\n----------------------') + print("CALLING FROM Cryspy\n----------------------") return self.do_calc_setup(scale, this_x_array) def do_calc_setup(self, scale, this_x_array): @@ -325,16 +324,24 @@ def do_calc_setup(self, scale, this_x_array): return bg crystals = [self.storage[key] for key in self.current_crystal.keys()] - phase_scales = [self.storage[str(key) + '_scale'] for key in self.current_crystal.keys()] + phase_scales = [ + self.storage[str(key) + "_scale"] for key in self.current_crystal.keys() + ] phase_lists = [] profiles = [] peak_dat = [] for crystal in crystals: phasesL = cryspy.PhaseL() - idx = [idx for idx, item in enumerate(self.phases.items) if item.label == crystal.data_name][0] + idx = [ + idx + for idx, item in enumerate(self.phases.items) + if item.label == crystal.data_name + ][0] phasesL.items.append(self.phases.items[idx]) phase_lists.append(phasesL) - profile, peak = _do_run(self.model, self.polarized, this_x_array, crystal, phasesL) + profile, peak = _do_run( + self.model, self.polarized, this_x_array, crystal, phasesL + ) profiles.append(profile) peak_dat.append(peak) # pool = mp.ProcessPool(num_crys) @@ -348,27 +355,35 @@ def do_calc_setup(self, scale, this_x_array): # raise ArithmeticError # Do this for now - x_str = 'ttheta' - if self.type == 'powder1DTOF': - x_str = 'time' + x_str = "ttheta" + if self.type == "powder1DTOF": + x_str = "time" if self.polarized: # TODO *REPLACE PLACEHOLDER FN* - dependents, additional_data = self.polarized_update(lambda up, down: up + down, crystals, profiles, - peak_dat, phase_scales, x_str) + dependents, additional_data = self.polarized_update( + lambda up, down: up + down, + crystals, + profiles, + peak_dat, + phase_scales, + x_str, + ) else: - dependents, additional_data = self.nonPolarized_update(crystals, profiles, peak_dat, phase_scales, x_str) + dependents, additional_data = self.nonPolarized_update( + crystals, profiles, peak_dat, phase_scales, x_str + ) self.additional_data.update(additional_data) - self.additional_data['global_scale'] = scale - self.additional_data['background'] = bg - self.additional_data['ivar_run'] = this_x_array - self.additional_data['phase_names'] = list(additional_data.keys()) - self.additional_data['type'] = self.type + self.additional_data["global_scale"] = scale + self.additional_data["background"] = bg + self.additional_data["ivar_run"] = this_x_array + self.additional_data["phase_names"] = list(additional_data.keys()) + self.additional_data["type"] = self.type # just the sum of all phases dependent_output = scale * np.sum(dependents, axis=0) + bg - scaled_dependents = [scale*dep+bg for dep in dependents] - self.additional_data['components'] = scaled_dependents + scaled_dependents = [scale * dep + bg for dep in dependents] + self.additional_data["components"] = scaled_dependents if borg.debug: print(f"y_calc: {dependent_output}") @@ -384,10 +399,10 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: :rtype: np.ndarray """ res = np.zeros_like(x_array) - self.additional_data['ivar'] = res - if self.type == 'powder1DCW': + self.additional_data["ivar"] = res + if self.type == "powder1DCW": return self.powder_1d_calculate(x_array) - if self.type == 'powder1DTOF': + if self.type == "powder1DTOF": return self.powder_1d_tof_calculate(x_array) return res @@ -399,20 +414,22 @@ def get_calculated_y_for_phase(self, phase_idx: int) -> list: :return: calculated y :rtype: np.ndarray """ - if phase_idx > len(self.additional_data['components']): + if phase_idx > len(self.additional_data["components"]): raise KeyError(f"phase_index incorrect: {phase_idx}") - return self.additional_data['components'][phase_idx] + return self.additional_data["components"][phase_idx] - def get_total_y_for_phases(self) -> list: - x_values = self.additional_data['ivar_run'] - y_values = np.sum([s for s in self.additional_data['components']], axis=0) + def get_total_y_for_phases(self) -> Tuple[np.ndarray, np.ndarray]: + x_values = self.additional_data["ivar_run"] + y_values = np.sum([s for s in self.additional_data["components"]], axis=0) return x_values, y_values - def get_hkl(self, x_array: np.ndarray = None, idx: int = 0, phase_name=None) -> dict: + def get_hkl( + self, x_array: np.ndarray = None, idx: int = 0, phase_name=None + ) -> dict: # Do we need to re-run a calculation to get the HKL's do_run = False - old_x = self.additional_data.get('ivar', np.array(())) + old_x = self.additional_data.get("ivar", np.array(())) if not np.array_equal(old_x, x_array): do_run = True if do_run and x_array is not None: @@ -423,12 +440,15 @@ def get_hkl(self, x_array: np.ndarray = None, idx: int = 0, phase_name=None) -> known_phases = list(self.current_crystal.values()) phase_name = known_phases[idx] phase_data = self.additional_data.get(phase_name, {}) - return phase_data.get('hkl', { - 'ttheta': np.array([]), - 'h': np.array([]), - 'k': np.array([]), - 'l': np.array([]) - }) + return phase_data.get( + "hkl", + { + "ttheta": np.array([]), + "h": np.array([]), + "k": np.array([]), + "l": np.array([]), + }, + ) @staticmethod def nonPolarized_update(crystals, profiles, peak_dat, scales, x_str): @@ -436,21 +456,21 @@ def nonPolarized_update(crystals, profiles, peak_dat, scales, x_str): output = {} for idx, profile in enumerate(profiles): - output.update({ - crystals[idx].data_name: { - 'hkl': { - x_str: getattr(peak_dat[idx], 'numpy_' + x_str), - 'h': peak_dat[idx].numpy_index_h, - 'k': peak_dat[idx].numpy_index_k, - 'l': peak_dat[idx].numpy_index_l, - }, - 'profile': scales[idx] * dependent[idx, :], - 'components': { - 'total': dependent[idx, :] - }, - 'profile_scale': scales[idx], + output.update( + { + crystals[idx].data_name: { + "hkl": { + x_str: getattr(peak_dat[idx], "numpy_" + x_str), + "h": peak_dat[idx].numpy_index_h, + "k": peak_dat[idx].numpy_index_k, + "l": peak_dat[idx].numpy_index_l, + }, + "profile": scales[idx] * dependent[idx, :], + "components": {"total": dependent[idx, :]}, + "profile_scale": scales[idx], + } } - }) + ) return dependent, output @staticmethod @@ -461,36 +481,48 @@ def polarized_update(func, crystals, profiles, peak_dat, scales, x_str): output = {} for idx, profile in enumerate(profiles): - output.update({ - crystals[idx].data_name: { - 'hkl': { - x_str: getattr(peak_dat[idx], 'numpy_' + x_str), - 'h': peak_dat[idx].numpy_index_h, - 'k': peak_dat[idx].numpy_index_k, - 'l': peak_dat[idx].numpy_index_l, - }, - 'profile': scales[idx] * dependent[idx, :], - 'components': { - 'total': dependent[idx, :], - 'up': up[idx, :], - 'down': down[idx, :] - }, - 'profile_scale': scales[idx], - 'func': func + output.update( + { + crystals[idx].data_name: { + "hkl": { + x_str: getattr(peak_dat[idx], "numpy_" + x_str), + "h": peak_dat[idx].numpy_index_h, + "k": peak_dat[idx].numpy_index_k, + "l": peak_dat[idx].numpy_index_l, + }, + "profile": scales[idx] * dependent[idx, :], + "components": { + "total": dependent[idx, :], + "up": up[idx, :], + "down": down[idx, :], + }, + "profile_scale": scales[idx], + "func": func, + } } - }) + ) return dependent, output def get_phase_components(self, phase_name): data = None - if phase_name in self.additional_data['phase_names']: + if phase_name in self.additional_data["phase_names"]: data = self.additional_data[phase_name].copy() return data -def _do_run(model, polarized, x_array, crystals, phase_list, ): - idx = [idx for idx, item in enumerate(model.items) if isinstance(item, cryspy.PhaseL)][0] +def _do_run( + model, + polarized, + x_array, + crystals, + phase_list, +): + idx = [ + idx for idx, item in enumerate(model.items) if isinstance(item, cryspy.PhaseL) + ][0] model.items[idx] = phase_list - result1 = model.calc_profile(x_array, [crystals], flag_internal=True, flag_polarized=polarized) - result2 = model.d_internal_val['peak_' + crystals.data_name] + result1 = model.calc_profile( + x_array, [crystals], flag_internal=True, flag_polarized=polarized + ) + result2 = model.d_internal_val["peak_" + crystals.data_name] return result1, result2 diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 8177ac2b..6ec24cd7 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -1,11 +1,11 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.2" +import os from easyCore import borg, np from easyCore.Objects.Inferface import ItemContainer from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases, Phase -from easyDiffractionLib.sample import Sample from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters @@ -17,8 +17,7 @@ class CFML(InterfaceTemplate): A simple FILE interface using CrysFML """ - _sample_link = { - 'filename': 'filename'} + _sample_link = {"filename": "filename"} _crystal_link = { "length_a": "length_a", @@ -30,37 +29,32 @@ class CFML(InterfaceTemplate): } _instrument_link = { - 'resolution_u': 'u_resolution', - 'resolution_v': 'v_resolution', - 'resolution_w': 'w_resolution', - 'resolution_x': 'x_resolution', - 'resolution_y': 'y_resolution', - 'wavelength': 'lamb' + "resolution_u": "u_resolution", + "resolution_v": "v_resolution", + "resolution_w": "w_resolution", + "resolution_x": "x_resolution", + "resolution_y": "y_resolution", + "wavelength": "lamb", } _atom_link = { - 'label': 'label', - 'specie': 'specie', - 'fract_x': 'fract_x', - 'fract_y': 'fract_y', - 'fract_z': 'fract_z', - 'occupancy': 'occupancy', - 'adp_type': 'adp_type', - 'Uiso': 'Uiso', - 'Biso': 'Biso', - 'Uani': 'Uani', - 'Bani': 'Bani' - } - _pattern_link = { - 'scale': 'scale', - 'x_offset': 'x_offset' + "label": "label", + "specie": "specie", + "fract_x": "fract_x", + "fract_y": "fract_y", + "fract_z": "fract_z", + "occupancy": "occupancy", + "adp_type": "adp_type", + "Uiso": "Uiso", + "Biso": "Biso", + "Uani": "Uani", + "Bani": "Bani", } + _pattern_link = {"scale": "scale", "x_offset": "x_offset"} - feature_available = { - 'Npowder1DCW': True - } + feature_available = {"Npowder1DCW": True} - name = 'CrysFML' + name = "CrysFML" def __init__(self): self.calculator = CFML_calc() @@ -68,54 +62,67 @@ def __init__(self): self._filename = None @staticmethod - def feature_checker(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None): - return InterfaceTemplate.features(radiation=radiation, exp_type=exp_type, sample_type=sample_type, - dimensionality=dimensionality, test_str=test_str, - FEATURES=CFML.feature_available) + def feature_checker( + radiation="N", + exp_type="CW", + sample_type="powder", + dimensionality="1D", + test_str=None, + ): + return InterfaceTemplate.features( + radiation=radiation, + exp_type=exp_type, + sample_type=sample_type, + dimensionality=dimensionality, + test_str=test_str, + FEATURES=CFML.feature_available, + ) def create(self, model): from easyDiffractionLib.sample import Sample + r_list = [] t_ = type(model) model_key = self.__identify(model) if issubclass(t_, Instrument1DCWParameters): # These parameters are linked to the Resolution and Setup CFML objects. Note that we can set the job type! - self.calculator.createConditions(job_type='N') + self.calculator.createConditions(job_type="N") keys = self._instrument_link.copy() r_list.append( - ItemContainer(model_key, keys, - self.calculator.conditionsReturn, - self.calculator.conditionsUpdate) + ItemContainer( + model_key, + keys, + self.calculator.conditionsReturn, + self.calculator.conditionsUpdate, + ) ) elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to CFML objects. self.calculator.pattern = model elif issubclass(t_, Lattice): keys = self._crystal_link.copy() - r_list.append( - ItemContainer(model_key, keys, - self.get_value, - self.dump_cif) - ) + r_list.append(ItemContainer(model_key, keys, self.get_value, self.dump_cif)) elif issubclass(t_, SpaceGroup): - keys = {'_space_group_HM_name': '_space_group_HM_name'} - r_list.append( - ItemContainer(model_key, keys, - self.get_value, - self.dump_cif) - ) + keys = {"_space_group_HM_name": "_space_group_HM_name"} + r_list.append(ItemContainer(model_key, keys, self.get_value, self.dump_cif)) elif issubclass(t_, Site): keys = self._atom_link.copy() - r_list.append(ItemContainer(model_key, keys, - self.get_value, - self.dump_cif)) + r_list.append(ItemContainer(model_key, keys, self.get_value, self.dump_cif)) elif issubclass(t_, Phases): self._phase = model elif issubclass(t_, Phase): + r_list.append( + ItemContainer( + model_key, + {"scale": "scale"}, + self.calculator.getPhaseScale, + self.calculator.setPhaseScale, + ) + ) self.calculator.add_phase(str(model_key), model.name) elif issubclass(t_, Sample): self.__createModel(model) - elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW']: + elif t_.__name__ in ["Powder1DCW", "powder1DCW", "Npowder1DCW"]: self.__createModel(model) else: if self._borg.debug: @@ -148,12 +155,18 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: return self.calculator.get_hkl(x_array) - + def dump_cif(self, *args, **kwargs): if self._filename is None: return - with open(self._filename, 'w') as fid: + with open(self._filename, "w") as fid: fid.write(str(self._phase.cif)) + base, file = os.path.split(self._filename) + ext = file[-3:] + file = file[:-4] + for idx, phase in enumerate(self._phase): + with open(f"{os.path.join(base, file)}_{idx}.{ext}", "w") as fid: + fid.write(str(phase.cif)) def __createModel(self, model): self._filename = model.filename @@ -162,13 +175,19 @@ def __createModel(self, model): def get_value(self, key, item_key): item = borg.map.get_item_by_key(key) - if item_key in ['Uiso', 'Uani', 'Biso', 'Bani']: - return getattr(getattr(item, 'adp'), item_key).raw_value + if item_key in ["Uiso", "Uani", "Biso", "Bani"]: + return getattr(getattr(item, "adp"), item_key).raw_value return getattr(item, item_key).raw_value def get_phase_components(self, phase_name): return None + def get_calculated_y_for_phase(self, phase_idx: int) -> list: + return self.calculator.get_calculated_y_for_phase(phase_idx) + + def get_total_y_for_phases(self) -> list: + return self.calculator.get_total_y_for_phases() + @staticmethod def __identify(obj): return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index c564db92..5f00b9a6 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -5,7 +5,11 @@ from easyCore import borg, np from easyCore.Objects.Inferface import ItemContainer from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases -from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters, Powder1DParameters +from easyDiffractionLib.Profiles.P1D import ( + Instrument1DCWParameters, + Instrument1DTOFParameters, + Powder1DParameters, +) from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc @@ -15,8 +19,7 @@ class Cryspy(InterfaceTemplate): A simple example interface using Cryspy """ - _sample_link = { - 'cif_str': 'cif_str'} + _sample_link = {"cif_str": "cif_str"} _crystal_link = { "length_a": "length_a", @@ -28,91 +31,118 @@ class Cryspy(InterfaceTemplate): } _atom_link = { - 'label': 'label', - 'specie': 'type_symbol', - 'fract_x': 'fract_x', - 'fract_y': 'fract_y', - 'fract_z': 'fract_z', - 'occupancy': 'occupancy', - 'adp_type': 'adp_type', - 'Uiso': 'u_iso_or_equiv', - 'Biso': 'b_iso_or_equiv', - 'Uani': 'u_iso_or_equiv', - 'Bani': 'b_iso_or_equiv' + "label": "label", + "specie": "type_symbol", + "fract_x": "fract_x", + "fract_y": "fract_y", + "fract_z": "fract_z", + "occupancy": "occupancy", + "adp_type": "adp_type", + "Uiso": "u_iso_or_equiv", + "Biso": "b_iso_or_equiv", + "Uani": "u_iso_or_equiv", + "Bani": "b_iso_or_equiv", } _instrument_link = { - 'resolution_u': 'u', - 'resolution_v': 'v', - 'resolution_w': 'w', - 'resolution_x': 'x', - 'resolution_y': 'y', - 'wavelength': 'wavelength' + "resolution_u": "u", + "resolution_v": "v", + "resolution_w": "w", + "resolution_x": "x", + "resolution_y": "y", + "wavelength": "wavelength", } - _instrument_tof_link = {k:k for k in Instrument1DTOFParameters._defaults.keys()} + _instrument_tof_link = {k: k for k in Instrument1DTOFParameters._defaults.keys()} - name = 'CrysPy' + name = "CrysPy" - feature_available = { - 'Npowder1DCW': True, - 'Npowder1DTOF': True - } + feature_available = {"Npowder1DCW": True, "Npowder1DTOF": True} def __init__(self): self.calculator = Cryspy_calc() @staticmethod - def feature_checker(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None): - return InterfaceTemplate.features(radiation=radiation, exp_type=exp_type, sample_type=sample_type, - dimensionality=dimensionality, test_str=test_str, - FEATURES=Cryspy.feature_available) + def feature_checker( + radiation="N", + exp_type="CW", + sample_type="powder", + dimensionality="1D", + test_str=None, + ): + return InterfaceTemplate.features( + radiation=radiation, + exp_type=exp_type, + sample_type=sample_type, + dimensionality=dimensionality, + test_str=test_str, + FEATURES=Cryspy.feature_available, + ) def create(self, model): r_list = [] t_ = type(model) model_key = self.__identify(model) if issubclass(t_, Instrument1DCWParameters): - self.calculator.createModel(model_key, 'powder1DCW') + self.calculator.createModel(model_key, "powder1DCW") # These parameters are linked to the Resolution and Setup cryspy objects res_key = self.calculator.createResolution() setup_key = self.calculator.createSetup() keys = self._instrument_link.copy() - keys.pop('wavelength') + keys.pop("wavelength") r_list.append( - ItemContainer(res_key, keys, - self.calculator.genericReturn, - self.calculator.genericUpdate) + ItemContainer( + res_key, + keys, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) ) r_list.append( - ItemContainer(setup_key, {'wavelength': self._instrument_link['wavelength']}, - self.calculator.genericReturn, - self.calculator.genericUpdate) + ItemContainer( + setup_key, + {"wavelength": self._instrument_link["wavelength"]}, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) ) if issubclass(t_, Instrument1DTOFParameters): - self.calculator.createModel(model_key, 'powder1DTOF') + self.calculator.createModel(model_key, "powder1DTOF") # These parameters are linked to the Resolution and Setup cryspy objects - res_key = self.calculator.createResolution(cls_type='powder1DTOF') - setup_key = self.calculator.createSetup(cls_type='powder1DTOF') + res_key = self.calculator.createResolution(cls_type="powder1DTOF") + setup_key = self.calculator.createSetup(cls_type="powder1DTOF") keys = self._instrument_tof_link.copy() - setup_keys = { - k: keys[k] for k in ['ttheta_bank', 'dtt1', 'dtt2'] - } + setup_keys = {k: keys[k] for k in ["ttheta_bank", "dtt1", "dtt2"]} res_keys = { - k: keys[k] for k in ['sigma0', 'sigma1', 'sigma2', - 'gamma0', 'gamma1', 'gamma2', - 'alpha0', 'alpha1', - 'beta0', 'beta1'] + k: keys[k] + for k in [ + "sigma0", + "sigma1", + "sigma2", + "gamma0", + "gamma1", + "gamma2", + "alpha0", + "alpha1", + "beta0", + "beta1", + ] } r_list.append( - ItemContainer(res_key, res_keys, - self.calculator.genericReturn, - self.calculator.genericUpdate) + ItemContainer( + res_key, + res_keys, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) ) r_list.append( - ItemContainer(setup_key, setup_keys, - self.calculator.genericReturn, - self.calculator.genericUpdate) + ItemContainer( + setup_key, + setup_keys, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) ) elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to cryspy objects. @@ -121,56 +151,72 @@ def create(self, model): l_key = self.calculator.createCell(model_key) keys = self._crystal_link.copy() r_list.append( - ItemContainer(l_key, keys, - self.calculator.genericReturn, - self.calculator.genericUpdate) + ItemContainer( + l_key, + keys, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) ) elif issubclass(t_, SpaceGroup): - s_key = self.calculator.createSpaceGroup(key=model_key, name_hm_alt='P 1') - keys = {'_space_group_HM_name': 'name_hm_alt'} + s_key = self.calculator.createSpaceGroup(key=model_key, name_hm_alt="P 1") + keys = {"_space_group_HM_name": "name_hm_alt"} r_list.append( - ItemContainer(s_key, keys, - self.calculator.getSpaceGroupSymbol, - self.calculator.updateSpacegroup) + ItemContainer( + s_key, + keys, + self.calculator.getSpaceGroupSymbol, + self.calculator.updateSpacegroup, + ) ) elif issubclass(t_, Site): a_key = self.calculator.createAtom(model_key) keys = self._atom_link.copy() - r_list.append(ItemContainer(a_key, keys, - lambda x, y: self.calculator.genericReturn(a_key, y), - lambda x, **y: self.calculator.genericUpdate(a_key, **y))) + r_list.append( + ItemContainer( + a_key, + keys, + lambda x, y: self.calculator.genericReturn(a_key, y), + lambda x, **y: self.calculator.genericUpdate(a_key, **y), + ) + ) elif issubclass(t_, Phase): - ident = str(model_key) + '_phase' + ident = str(model_key) + "_phase" self.calculator.createPhase(ident) crystal_name = self.calculator.createEmptyCrystal(model.name, key=model_key) self.calculator.assignCell_toCrystal(self.__identify(model.cell), model_key) - self.calculator.assignSpaceGroup_toCrystal(self.__identify(model._spacegroup), model_key) - self.calculator.setPhaseScale(model_key, scale=model.scale.raw_value) + self.calculator.assignSpaceGroup_toCrystal( + self.__identify(model._spacegroup), model_key + ) + self.calculator.setPhaseScale(str(model_key), scale=model.scale.raw_value) r_list.append( - ItemContainer(model_key, {'scale': 'scale'}, - self.calculator.getPhaseScale, - self.calculator.setPhaseScale) + ItemContainer( + model_key, + {"scale": "scale"}, + self.calculator.getPhaseScale, + self.calculator.setPhaseScale, + ) ) for atom in model.atoms: self.calculator.assignAtom_toCrystal(self.__identify(atom), model_key) elif issubclass(t_, Phases): # self.calculator.createModel(model_key, 'powder1D') for phase in model: - ident = str(self.__identify(phase)) + '_phase' + ident = str(self.__identify(phase)) + "_phase" self.calculator.assignPhase(model_key, ident) - elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW']: - # #TODO Check to see if parameters and pattern should be initialized here. - self.__createModel(model_key, 'powder1DCW') - elif t_.__name__ in ['Powder1DTOF', 'powder1DTOF', 'Npowder1DTOF']: - # #TODO Check to see if parameters and pattern should be initialized here. - self.__createModel(model_key, 'powder1DTOF') - elif t_.__name__ == 'Sample': # This is legacy mode. Boo + elif t_.__name__ in ["Powder1DCW", "powder1DCW", "Npowder1DCW"]: + # #TODO Check to see if parameters and pattern should be initialized here. + self.__createModel(model_key, "powder1DCW") + elif t_.__name__ in ["Powder1DTOF", "powder1DTOF", "Npowder1DTOF"]: + # #TODO Check to see if parameters and pattern should be initialized here. + self.__createModel(model_key, "powder1DTOF") + elif t_.__name__ == "Sample": # This is legacy mode. Boo if issubclass(type(model.parameters), Instrument1DCWParameters): - self.__createModel(model_key, 'powder1DCW') + self.__createModel(model_key, "powder1DCW") elif issubclass(type(model.parameters), Instrument1DTOFParameters): - self.__createModel(model_key, 'powder1DTOF') + self.__createModel(model_key, "powder1DTOF") else: - raise AttributeError('Unknown EXP type') + raise AttributeError("Unknown EXP type") else: if self._borg.debug: print(f"I'm a: {type(model)}") @@ -185,11 +231,14 @@ def remove_atom(self, crystal_obj, atom): self.calculator.removeAtom_fromCrystal(self.__identify(atom), crystal_name) def add_phase(self, phases_obj, phase_obj): - ident = str(self.__identify(phase_obj)) + '_phase' + ident = str(self.__identify(phase_obj)) + "_phase" self.calculator.assignPhase(self.__identify(phases_obj), ident) + self.calculator.setPhaseScale( + self.__identify(phase_obj), scale=phase_obj.scale.raw_value + ) def remove_phase(self, phases_obj, phase_obj): - ident = str(self.__identify(phase_obj)) + '_phase' + ident = str(self.__identify(phase_obj)) + "_phase" self.calculator.removePhase(self.__identify(phases_obj), ident) def fit_func(self, x_array: np.ndarray) -> np.ndarray: @@ -202,7 +251,6 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: return self.calculator.get_hkl(x_array) diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index 29a72254..59117fb6 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -1,5 +1,5 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.0.1' +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" from typing import TypeVar, List @@ -11,14 +11,14 @@ from easyDiffractionLib.Profiles.common import JobSetup, _DataClassBase _decoder = MontyDecoder() -T = TypeVar('T') +T = TypeVar("T") class Powder1DSim(_DataClassBase): def __init__(self, dataset): super(Powder1DSim, self).__init__(dataset) - self._simulation_prefix = 'sim_' - self.name = '' + self._simulation_prefix = "sim_" + self.name = "" def add_simulation(self, simulation_name, simulation): self._dataset[self._simulation_prefix + simulation_name] = simulation @@ -50,9 +50,11 @@ def experiments(self) -> xr.Dataset: @property def experiment_names(self) -> List[str]: - exps = [a for a in self._dataset.variables.keys() - if not a.startswith(self.simulation_prefix) and - not a in self._dataset.dims] + exps = [ + a + for a in self._dataset.variables.keys() + if not a.startswith(self.simulation_prefix) and not a in self._dataset.dims + ] return exps @@ -67,61 +69,69 @@ def __init__(self, dataset, simulation_prefix): class Powder1DParameters(BaseObj): - _name = '1DPowderProfile' + _name = "1DPowderProfile" _defaults = { - 'zero_shift': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'zero_shift', - 'units': 'degree', - 'value': 0.0, - 'fixed': True + "zero_shift": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "zero_shift", + "units": "degree", + "value": 0.0, + "fixed": True, }, - 'scale': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'scale', - 'value': 1, - 'fixed': True + "scale": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "scale", + "value": 1, + "fixed": True, + "enabled": False, + }, + "backgrounds": { + "@module": "easyDiffractionLib.Elements.Backgrounds.Background", + "@class": "BackgroundContainer", + "@version": "0.0.1", + "data": [], }, - 'backgrounds': { - '@module': 'easyDiffractionLib.Elements.Backgrounds.Background', - '@class': 'BackgroundContainer', - '@version': '0.0.1', - 'data': [], - } } - def __init__(self, - zero_shift: Parameter, scale: Parameter, - backgrounds: BackgroundContainer, - interface=None): - super().__init__(self.__class__.__name__, - zero_shift=zero_shift, scale=scale, - backgrounds=backgrounds) + def __init__( + self, + zero_shift: Parameter, + scale: Parameter, + backgrounds: BackgroundContainer, + interface=None, + ): + super().__init__( + self.__class__.__name__, + zero_shift=zero_shift, + scale=scale, + backgrounds=backgrounds, + ) self.name = self._name self.interface = interface @classmethod - def from_pars(cls, - zero_shift: float = _defaults['zero_shift']['value'], - scale: float = _defaults['scale']['value'] - ): + def from_pars( + cls, + zero_shift: float = _defaults["zero_shift"]["value"], + scale: float = _defaults["scale"]["value"], + ): defaults = deepcopy(cls._defaults) - defaults['zero_shift']['value'] = zero_shift - zero_shift = _decoder.process_decoded(defaults['zero_shift']) - defaults['scale']['value'] = scale - scale = _decoder.process_decoded(defaults['scale']) + defaults["zero_shift"]["value"] = zero_shift + zero_shift = _decoder.process_decoded(defaults["zero_shift"]) + defaults["scale"]["value"] = scale + scale = _decoder.process_decoded(defaults["scale"]) backgrounds = BackgroundContainer() return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) @classmethod def default(cls): defaults = deepcopy(cls._defaults) - zero_shift = _decoder.process_decoded(defaults['zero_shift']) - scale = _decoder.process_decoded(defaults['scale']) + zero_shift = _decoder.process_decoded(defaults["zero_shift"]) + scale = _decoder.process_decoded(defaults["scale"]) backgrounds = BackgroundContainer() return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) @@ -132,331 +142,386 @@ class PolPowder1DParameters(Powder1DParameters): class Instrument1DCWParameters(BaseObj): - _name = 'InstrumentalParameters' + _name = "InstrumentalParameters" _defaults = { - 'wavelength': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'wavelength', - 'units': 'angstrom', - 'value': 1.54056, - 'fixed': True + "wavelength": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "wavelength", + "units": "angstrom", + "value": 1.54056, + "fixed": True, }, - 'resolution_u': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'resolution_u', - 'value': 0.0002, - 'fixed': True + "resolution_u": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "resolution_u", + "value": 0.0002, + "fixed": True, }, - 'resolution_v': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'resolution_v', - 'value': -0.0002, - 'fixed': True - + "resolution_v": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "resolution_v", + "value": -0.0002, + "fixed": True, }, - 'resolution_w': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'resolution_w', - 'value': 0.012, - 'fixed': True - + "resolution_w": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "resolution_w", + "value": 0.012, + "fixed": True, }, - 'resolution_x': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'resolution_x', - 'value': 0.0, - 'fixed': True + "resolution_x": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "resolution_x", + "value": 0.0, + "fixed": True, + }, + "resolution_y": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "resolution_y", + "value": 0.0, + "fixed": True, }, - 'resolution_y': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'resolution_y', - 'value': 0.0, - 'fixed': True - } } - def __init__(self, - wavelength: Parameter, - resolution_u: Parameter, resolution_v: Parameter, resolution_w: Parameter, - resolution_x: Parameter, resolution_y: Parameter, - interface=None): - super().__init__(self.__class__.__name__, - wavelength=wavelength, - resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, - resolution_x=resolution_x, resolution_y=resolution_y) + def __init__( + self, + wavelength: Parameter, + resolution_u: Parameter, + resolution_v: Parameter, + resolution_w: Parameter, + resolution_x: Parameter, + resolution_y: Parameter, + interface=None, + ): + super().__init__( + self.__class__.__name__, + wavelength=wavelength, + resolution_u=resolution_u, + resolution_v=resolution_v, + resolution_w=resolution_w, + resolution_x=resolution_x, + resolution_y=resolution_y, + ) self.name = self._name self.interface = interface @classmethod - def from_pars(cls, - wavelength: float = _defaults['wavelength']['value'], - resolution_u: float = _defaults['resolution_u']['value'], - resolution_v: float = _defaults['resolution_v']['value'], - resolution_w: float = _defaults['resolution_w']['value'], - resolution_x: float = _defaults['resolution_x']['value'], - resolution_y: float = _defaults['resolution_y']['value'] - ): + def from_pars( + cls, + wavelength: float = _defaults["wavelength"]["value"], + resolution_u: float = _defaults["resolution_u"]["value"], + resolution_v: float = _defaults["resolution_v"]["value"], + resolution_w: float = _defaults["resolution_w"]["value"], + resolution_x: float = _defaults["resolution_x"]["value"], + resolution_y: float = _defaults["resolution_y"]["value"], + ): defaults = deepcopy(cls._defaults) - defaults['wavelength']['value'] = wavelength - wavelength = _decoder.process_decoded(defaults['wavelength']) - defaults['resolution_u']['value'] = resolution_u - resolution_u = _decoder.process_decoded(defaults['resolution_u']) - defaults['resolution_v']['value'] = resolution_v - resolution_v = _decoder.process_decoded(defaults['resolution_v']) - defaults['resolution_w']['value'] = resolution_w - resolution_w = _decoder.process_decoded(defaults['resolution_w']) - defaults['resolution_x']['value'] = resolution_x - resolution_x = _decoder.process_decoded(defaults['resolution_x']) - defaults['resolution_y']['value'] = resolution_y - resolution_y = _decoder.process_decoded(defaults['resolution_y']) - return cls(wavelength=wavelength, - resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, - resolution_x=resolution_x, resolution_y=resolution_y) + defaults["wavelength"]["value"] = wavelength + wavelength = _decoder.process_decoded(defaults["wavelength"]) + defaults["resolution_u"]["value"] = resolution_u + resolution_u = _decoder.process_decoded(defaults["resolution_u"]) + defaults["resolution_v"]["value"] = resolution_v + resolution_v = _decoder.process_decoded(defaults["resolution_v"]) + defaults["resolution_w"]["value"] = resolution_w + resolution_w = _decoder.process_decoded(defaults["resolution_w"]) + defaults["resolution_x"]["value"] = resolution_x + resolution_x = _decoder.process_decoded(defaults["resolution_x"]) + defaults["resolution_y"]["value"] = resolution_y + resolution_y = _decoder.process_decoded(defaults["resolution_y"]) + return cls( + wavelength=wavelength, + resolution_u=resolution_u, + resolution_v=resolution_v, + resolution_w=resolution_w, + resolution_x=resolution_x, + resolution_y=resolution_y, + ) @classmethod def default(cls): defaults = deepcopy(cls._defaults) - wavelength = _decoder.process_decoded(defaults['wavelength']) - resolution_u = _decoder.process_decoded(defaults['resolution_u']) - resolution_v = _decoder.process_decoded(defaults['resolution_v']) - resolution_w = _decoder.process_decoded(defaults['resolution_w']) - resolution_x = _decoder.process_decoded(defaults['resolution_x']) - resolution_y = _decoder.process_decoded(defaults['resolution_y']) - return cls(wavelength=wavelength, - resolution_u=resolution_u, resolution_v=resolution_v, resolution_w=resolution_w, - resolution_x=resolution_x, resolution_y=resolution_y) + wavelength = _decoder.process_decoded(defaults["wavelength"]) + resolution_u = _decoder.process_decoded(defaults["resolution_u"]) + resolution_v = _decoder.process_decoded(defaults["resolution_v"]) + resolution_w = _decoder.process_decoded(defaults["resolution_w"]) + resolution_x = _decoder.process_decoded(defaults["resolution_x"]) + resolution_y = _decoder.process_decoded(defaults["resolution_y"]) + return cls( + wavelength=wavelength, + resolution_u=resolution_u, + resolution_v=resolution_v, + resolution_w=resolution_w, + resolution_x=resolution_x, + resolution_y=resolution_y, + ) class Instrument1DTOFParameters(BaseObj): - _name = 'InstrumentalParameters' + _name = "InstrumentalParameters" _defaults = { - 'ttheta_bank': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'ttheta_bank', - 'units': 'deg', - 'value': 145.00, - 'fixed': True + "ttheta_bank": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "ttheta_bank", + "units": "deg", + "value": 145.00, + "fixed": True, }, - 'dtt1': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'dtt1', - 'units': 'deg', - 'value': 6167.24700, - 'fixed': True + "dtt1": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "dtt1", + "units": "deg", + "value": 6167.24700, + "fixed": True, }, - 'dtt2': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'dtt2', - 'units': 'deg', - 'value': -2.28000, - 'fixed': True + "dtt2": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "dtt2", + "units": "deg", + "value": -2.28000, + "fixed": True, }, - 'sigma0': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'sigma0', - 'value': 0.409, - 'fixed': True + "sigma0": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "sigma0", + "value": 0.409, + "fixed": True, }, - 'sigma1': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'sigma1', - 'value': 8.118, - 'fixed': True - + "sigma1": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "sigma1", + "value": 8.118, + "fixed": True, + }, + "sigma2": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "sigma2", + "value": 0.0, + "fixed": True, + "enabled": False, }, - 'sigma2': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'sigma2', - 'value': 0.0, - 'fixed': True, - 'enabled': False + "gamma0": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "gamma0", + "value": 0.0, + "fixed": True, + "enabled": False, }, - 'gamma0': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'gamma0', - 'value': 0.0, - 'fixed': True, - 'enabled': False + "gamma1": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "gamma1", + "value": 0.0, + "fixed": True, + "enabled": False, }, - 'gamma1': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'gamma1', - 'value': 0.0, - 'fixed': True, - 'enabled': False + "gamma2": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "gamma2", + "value": 0.0, + "fixed": True, + "enabled": False, }, - 'gamma2': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'gamma2', - 'value': 0.0, - 'fixed': True, - 'enabled': False + "alpha0": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "alpha0", + "value": 0.0, + "fixed": True, }, - 'alpha0': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'alpha0', - 'value': 0.0, - 'fixed': True + "alpha1": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "alpha1", + "value": 0.29710, + "fixed": True, }, - 'alpha1': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'alpha1', - 'value': 0.29710, - 'fixed': True + "beta0": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "beta0", + "value": 0.04182, + "fixed": True, }, - 'beta0': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'beta0', - 'value': 0.04182, - 'fixed': True + "beta1": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "beta1", + "value": 0.00224, + "fixed": True, }, - 'beta1': { - '@module': 'easyCore.Objects.Base', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'beta1', - 'value': 0.00224, - 'fixed': True - } } - def __init__(self, - ttheta_bank: Parameter, - dtt1: Parameter, dtt2: Parameter, - sigma0: Parameter, sigma1: Parameter, sigma2: Parameter, - gamma0: Parameter, gamma1: Parameter, gamma2: Parameter, - alpha0: Parameter, alpha1: Parameter, - beta0: Parameter, beta1: Parameter, - interface=None): - super().__init__(self.__class__.__name__, - ttheta_bank=ttheta_bank, - dtt1=dtt1, dtt2=dtt2, - sigma0=sigma0, sigma1=sigma1, sigma2=sigma2, - gamma0=gamma0, gamma1=gamma1, gamma2=gamma2, - alpha0=alpha0, alpha1=alpha1, - beta0=beta0, beta1=beta1) + def __init__( + self, + ttheta_bank: Parameter, + dtt1: Parameter, + dtt2: Parameter, + sigma0: Parameter, + sigma1: Parameter, + sigma2: Parameter, + gamma0: Parameter, + gamma1: Parameter, + gamma2: Parameter, + alpha0: Parameter, + alpha1: Parameter, + beta0: Parameter, + beta1: Parameter, + interface=None, + ): + super().__init__( + self.__class__.__name__, + ttheta_bank=ttheta_bank, + dtt1=dtt1, + dtt2=dtt2, + sigma0=sigma0, + sigma1=sigma1, + sigma2=sigma2, + gamma0=gamma0, + gamma1=gamma1, + gamma2=gamma2, + alpha0=alpha0, + alpha1=alpha1, + beta0=beta0, + beta1=beta1, + ) self.name = self._name self.interface = interface @classmethod - def from_pars(cls, - ttheta_bank: float = _defaults['ttheta_bank']['value'], - dtt1: float = _defaults['dtt1']['value'], - dtt2: float = _defaults['dtt2']['value'], - sigma0: float = _defaults['sigma0']['value'], - sigma1: float = _defaults['sigma1']['value'], - sigma2: float = _defaults['sigma2']['value'], - gamma0: float = _defaults['gamma0']['value'], - gamma1: float = _defaults['gamma1']['value'], - gamma2: float = _defaults['gamma2']['value'], - alpha0: float = _defaults['alpha0']['value'], - alpha1: float = _defaults['alpha1']['value'], - beta0: float = _defaults['beta0']['value'], - beta1: float = _defaults['beta1']['value'], - ): + def from_pars( + cls, + ttheta_bank: float = _defaults["ttheta_bank"]["value"], + dtt1: float = _defaults["dtt1"]["value"], + dtt2: float = _defaults["dtt2"]["value"], + sigma0: float = _defaults["sigma0"]["value"], + sigma1: float = _defaults["sigma1"]["value"], + sigma2: float = _defaults["sigma2"]["value"], + gamma0: float = _defaults["gamma0"]["value"], + gamma1: float = _defaults["gamma1"]["value"], + gamma2: float = _defaults["gamma2"]["value"], + alpha0: float = _defaults["alpha0"]["value"], + alpha1: float = _defaults["alpha1"]["value"], + beta0: float = _defaults["beta0"]["value"], + beta1: float = _defaults["beta1"]["value"], + ): defaults = deepcopy(cls._defaults) - defaults['ttheta_bank']['value'] = ttheta_bank - ttheta_bank = _decoder.process_decoded(defaults['ttheta_bank']) - defaults['dtt1']['value'] = dtt1 - dtt1 = _decoder.process_decoded(defaults['dtt1']) - defaults['dtt2']['value'] = dtt2 - dtt2 = _decoder.process_decoded(defaults['dtt2']) - defaults['sigma0']['value'] = sigma0 - sigma0 = _decoder.process_decoded(defaults['sigma0']) - defaults['sigma1']['value'] = sigma1 - sigma1 = _decoder.process_decoded(defaults['sigma1']) - defaults['sigma2']['value'] = sigma2 - sigma2 = _decoder.process_decoded(defaults['sigma2']) - defaults['gamma0']['value'] = gamma0 - gamma0 = _decoder.process_decoded(defaults['gamma0']) - defaults['gamma1']['value'] = gamma1 - gamma1 = _decoder.process_decoded(defaults['gamma1']) - defaults['gamma2']['value'] = gamma2 - gamma2 = _decoder.process_decoded(defaults['gamma2']) - defaults['alpha0']['value'] = alpha0 - alpha0 = _decoder.process_decoded(defaults['alpha0']) - defaults['alpha1']['value'] = alpha1 - alpha1 = _decoder.process_decoded(defaults['alpha1']) - defaults['beta0']['value'] = beta0 - beta0 = _decoder.process_decoded(defaults['beta0']) - defaults['beta1']['value'] = beta1 - beta1 = _decoder.process_decoded(defaults['beta1']) - - return cls(ttheta_bank=ttheta_bank, - dtt1=dtt1, dtt2=dtt2, - sigma0=sigma0, sigma1=sigma1, sigma2=sigma2, - gamma0=gamma0, gamma1=gamma1, gamma2=gamma2, - alpha0=alpha0, alpha1=alpha1, - beta0=beta0, beta1=beta1) + defaults["ttheta_bank"]["value"] = ttheta_bank + ttheta_bank = _decoder.process_decoded(defaults["ttheta_bank"]) + defaults["dtt1"]["value"] = dtt1 + dtt1 = _decoder.process_decoded(defaults["dtt1"]) + defaults["dtt2"]["value"] = dtt2 + dtt2 = _decoder.process_decoded(defaults["dtt2"]) + defaults["sigma0"]["value"] = sigma0 + sigma0 = _decoder.process_decoded(defaults["sigma0"]) + defaults["sigma1"]["value"] = sigma1 + sigma1 = _decoder.process_decoded(defaults["sigma1"]) + defaults["sigma2"]["value"] = sigma2 + sigma2 = _decoder.process_decoded(defaults["sigma2"]) + defaults["gamma0"]["value"] = gamma0 + gamma0 = _decoder.process_decoded(defaults["gamma0"]) + defaults["gamma1"]["value"] = gamma1 + gamma1 = _decoder.process_decoded(defaults["gamma1"]) + defaults["gamma2"]["value"] = gamma2 + gamma2 = _decoder.process_decoded(defaults["gamma2"]) + defaults["alpha0"]["value"] = alpha0 + alpha0 = _decoder.process_decoded(defaults["alpha0"]) + defaults["alpha1"]["value"] = alpha1 + alpha1 = _decoder.process_decoded(defaults["alpha1"]) + defaults["beta0"]["value"] = beta0 + beta0 = _decoder.process_decoded(defaults["beta0"]) + defaults["beta1"]["value"] = beta1 + beta1 = _decoder.process_decoded(defaults["beta1"]) + + return cls( + ttheta_bank=ttheta_bank, + dtt1=dtt1, + dtt2=dtt2, + sigma0=sigma0, + sigma1=sigma1, + sigma2=sigma2, + gamma0=gamma0, + gamma1=gamma1, + gamma2=gamma2, + alpha0=alpha0, + alpha1=alpha1, + beta0=beta0, + beta1=beta1, + ) @classmethod def default(cls): defaults = deepcopy(cls._defaults) - ttheta_bank = _decoder.process_decoded(defaults['ttheta_bank']) - dtt1 = _decoder.process_decoded(defaults['dtt1']) - dtt2 = _decoder.process_decoded(defaults['dtt2']) - sigma0 = _decoder.process_decoded(defaults['sigma0']) - sigma1 = _decoder.process_decoded(defaults['sigma1']) - sigma2 = _decoder.process_decoded(defaults['sigma2']) - gamma0 = _decoder.process_decoded(defaults['gamma0']) - gamma1 = _decoder.process_decoded(defaults['gamma1']) - gamma2 = _decoder.process_decoded(defaults['gamma2']) - alpha0 = _decoder.process_decoded(defaults['alpha0']) - alpha1 = _decoder.process_decoded(defaults['alpha1']) - beta0 = _decoder.process_decoded(defaults['beta0']) - beta1 = _decoder.process_decoded(defaults['beta1']) - return cls(ttheta_bank=ttheta_bank, - dtt1=dtt1, dtt2=dtt2, - sigma0=sigma0, sigma1=sigma1, sigma2=sigma2, - gamma0=gamma0, gamma1=gamma1, gamma2=gamma2, - alpha0=alpha0, alpha1=alpha1, - beta0=beta0, beta1=beta1) + ttheta_bank = _decoder.process_decoded(defaults["ttheta_bank"]) + dtt1 = _decoder.process_decoded(defaults["dtt1"]) + dtt2 = _decoder.process_decoded(defaults["dtt2"]) + sigma0 = _decoder.process_decoded(defaults["sigma0"]) + sigma1 = _decoder.process_decoded(defaults["sigma1"]) + sigma2 = _decoder.process_decoded(defaults["sigma2"]) + gamma0 = _decoder.process_decoded(defaults["gamma0"]) + gamma1 = _decoder.process_decoded(defaults["gamma1"]) + gamma2 = _decoder.process_decoded(defaults["gamma2"]) + alpha0 = _decoder.process_decoded(defaults["alpha0"]) + alpha1 = _decoder.process_decoded(defaults["alpha1"]) + beta0 = _decoder.process_decoded(defaults["beta0"]) + beta1 = _decoder.process_decoded(defaults["beta1"]) + return cls( + ttheta_bank=ttheta_bank, + dtt1=dtt1, + dtt2=dtt2, + sigma0=sigma0, + sigma1=sigma1, + sigma2=sigma2, + gamma0=gamma0, + gamma1=gamma1, + gamma2=gamma2, + alpha0=alpha0, + alpha1=alpha1, + beta0=beta0, + beta1=beta1, + ) class Instrument1DCWPolParameters(Instrument1DCWParameters): pass -Unpolarized1DClasses = JobSetup([Powder1DSim, Powder1DExp], - Powder1DParameters, - Instrument1DCWParameters) +Unpolarized1DClasses = JobSetup( + [Powder1DSim, Powder1DExp], Powder1DParameters, Instrument1DCWParameters +) -Unpolarized1DTOFClasses = JobSetup([Powder1DSim, Powder1DExp], - Powder1DParameters, - Instrument1DTOFParameters) \ No newline at end of file +Unpolarized1DTOFClasses = JobSetup( + [Powder1DSim, Powder1DExp], Powder1DParameters, Instrument1DTOFParameters +) diff --git a/pyproject.toml b/pyproject.toml index e0602490..fb26ae0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,14 +32,10 @@ packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] python = "^3.7, <3.9" -# easyScienceCore = '>=0.1.1a0' cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } CFML = '^0.0.1' GSASII = '^0.0.1' - easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } -pathos = "^0.2.8" - [tool.poetry.dev-dependencies] pytest = "^5.2" From 5ff10acb82ed2843a68a60beef18604078250f35 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 29 Nov 2021 14:59:34 +0100 Subject: [PATCH 239/312] More CFML multiphase changes Now phases are in the correct order and no memloc errors --- easyDiffractionLib/Calculators/CFML.py | 114 ++++++------------ easyDiffractionLib/Calculators/cryspy.py | 46 +++++-- .../integration_tests/FittingData_CFML.ipynb | 69 ++++++----- 3 files changed, 102 insertions(+), 127 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 1fe2aebe..42b20f48 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -1,12 +1,11 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" -import os, pathlib, re -from typing import Tuple - import CFML_api -import timeit +import os +import re +from typing import Tuple from easyCore import np, borg @@ -16,14 +15,8 @@ def __init__(self, filename: str = None): self.conditions = None self.background = None self.pattern = None - self.hkl_dict = { - "ttheta": np.empty(0), - "h": np.empty(0), - "k": np.empty(0), - "l": np.empty(0), - } self.known_phases = {} - self.additional_data = {} + self.additional_data = {"phases": {}} self.storage = {} def createConditions(self, job_type="N"): @@ -55,9 +48,6 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: if self.filename is None: raise AttributeError - # print("\n\n\n") - start_time = timeit.default_timer() - if self.pattern is None: scale = 1.0 offset = 0 @@ -65,11 +55,6 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: scale = self.pattern.scale.raw_value offset = self.pattern.zero_shift.raw_value - end_time = timeit.default_timer() - # print("+ calculate A: {0:.4f} s".format(end_time - start_time)) - - start_time = timeit.default_timer() - this_x_array = x_array + offset # Experiment/Instrument/Simulation parameters @@ -87,23 +72,19 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: # Sample parameters # We assume that the phases items has the same indexing as the knownphases item - for idx, file in enumerate(self.grab_cifs()[::-1]): + cifs = self.grab_cifs() + if len(cifs) == 0: + raise ValueError("No phases found for calculation") + # Reset the phases dict + self.additional_data["phases"] = dict() + + for idx, file in enumerate(cifs): cif_file = CFML_api.CIFFile(file) cell = cif_file.cell space_group = cif_file.space_group atom_list = cif_file.atom_list job_info = cif_file.job_info - end_time = timeit.default_timer() - # print("+ calculate B: {0:.4f} s".format(end_time - start_time)) - - start_time = timeit.default_timer() - - # cell.print_description() - # space_group.print_description() - # atom_list.print_description() - # job_info.print_description() - job_info.range_2theta = (x_min, x_max) job_info.theta_step = x_step job_info.u_resolution = self.conditions["u_resolution"] @@ -114,52 +95,23 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: job_info.lambdas = (self.conditions["lamb"], self.conditions["lamb"]) job_info.bkg = 0.0 - end_time = timeit.default_timer() - # print("+ calculate C: {0:.4f} s".format(end_time - start_time)) - # Calculations try: - start_time = timeit.default_timer() reflection_list = CFML_api.ReflectionList( cell, space_group, True, job_info ) - end_time = timeit.default_timer() - # print("+ reflection_list = CFML_api.ReflectionList: {0:.4f} s".format(end_time - start_time)) - start_time = timeit.default_timer() reflection_list.compute_structure_factors( space_group, atom_list, job_info ) - end_time = timeit.default_timer() - # print("+ reflection_list.compute_structure_factors: {0:.4f} s".format(end_time - start_time)) - - start_time = timeit.default_timer() - - end_time = timeit.default_timer() - # print("+ set reflection_list: {0:.4f} s".format(end_time - start_time)) - start_time = timeit.default_timer() diffraction_pattern = CFML_api.DiffractionPattern( job_info, reflection_list, cell.reciprocal_cell_vol ) - end_time = timeit.default_timer() - # print("+ diffraction_pattern = CFML_api.DiffractionPattern: {0:.4f} s".format(end_time - start_time)) - - except: + except Exception as e: + for cif in cifs: + os.remove(cif) raise ArithmeticError - finally: - - start_time = timeit.default_timer() - - # Clean up - # for p in pathlib.Path(os.path.dirname(self.filename)).glob("easydiffraction_temp*"): - # if os.path.basename(p) != "easydiffraction_temp.cif": - # p.unlink() - - end_time = timeit.default_timer() - # print("+ calculate D: {0:.4f} s".format(end_time - start_time)) - - start_time = timeit.default_timer() item = list(self.known_phases.items())[idx] key = list(self.known_phases.keys())[idx] @@ -169,7 +121,9 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: item, diffraction_pattern, reflection_list, job_info, scales=phase_scale ) dependents.append(dependent) - self.additional_data.update(additional_data) + self.additional_data["phases"].update(additional_data) + for cif in cifs: + os.remove(cif) self.additional_data["global_scale"] = scale self.additional_data["background"] = bg self.additional_data["ivar_run"] = this_x_array @@ -180,19 +134,14 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: dependent_output = scale * np.sum(dependents, axis=0) + bg - end_time = timeit.default_timer() - # print("+ calculate E: {0:.4f} s".format(end_time - start_time)) - - start_time = timeit.default_timer() - - np.set_printoptions(precision=3) if borg.debug: print(f"y_calc: {dependent_output}") - - end_time = timeit.default_timer() - # print("+ calculate F: {0:.4f} s".format(end_time - start_time)) - - return dependent_output + return ( + np.sum( + [s["profile"] for s in self.additional_data["phases"].values()], axis=0 + ) + + self.additional_data["background"] + ) def get_hkl(self, x_array: np.ndarray = None, idx=0, phase_name=None) -> dict: @@ -223,7 +172,6 @@ def get_hkl(self, x_array: np.ndarray = None, idx=0, phase_name=None) -> dict: def nonPolarized_update( crystal_name, diffraction_pattern, reflection_list, job_info, scales=1 ): - # dependent = np.array([diffraction_pattern.ycalc for diffraction_pattern in profiles]) dependent = diffraction_pattern.ycalc hkltth = np.array( @@ -259,7 +207,7 @@ def remove_phase(self, phases_id): def get_phase_components(self, phase_name): data = None if phase_name in self.additional_data["phase_names"]: - data = self.additional_data[phase_name].copy() + data = self.additional_data["phases"][phase_name].copy() return data def get_calculated_y_for_phase(self, phase_idx: int) -> list: @@ -272,11 +220,16 @@ def get_calculated_y_for_phase(self, phase_idx: int) -> list: """ if phase_idx > len(self.additional_data["components"]): raise KeyError(f"phase_index incorrect: {phase_idx}") - return self.additional_data["components"][phase_idx] + return list(self.additional_data["phases"].values())[phase_idx]["profile"] def get_total_y_for_phases(self) -> Tuple[np.ndarray, np.ndarray]: x_values = self.additional_data["ivar_run"] - y_values = np.sum([s for s in self.additional_data["components"]], axis=0) + y_values = ( + np.sum( + [s["profile"] for s in self.additional_data["phases"].values()], axis=0 + ) + + self.additional_data["background"] + ) return x_values, y_values def setPhaseScale(self, model_name, scale=1): @@ -290,8 +243,9 @@ def grab_cifs(self): ext = file[-3:] file = file[:-4] files = [ - os.path.join(base, f) + base + os.path.sep + f for f in os.listdir(base) if re.match(rf"{file}_[0-9]+.*\.{ext}", f) ] - return files + inds = np.argsort([int(s.split("_")[2][:-4]) for s in files]) + return [files[i] for i in inds] diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index f7e460f2..e617d664 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -13,6 +13,8 @@ warnings.filterwarnings("ignore") +normalization = 500.0 + class Cryspy: def __init__(self): @@ -44,7 +46,7 @@ def __init__(self): self.model = None self.phases = cryspy.PhaseL() self.type = "powder1DCW" - self.additional_data = {} + self.additional_data = {"phases": {}} self.polarized = False @property @@ -85,7 +87,9 @@ def removePhase(self, model_name, phase_name): del self.storage[phase_name] del self.storage[phase_name.split("_")[0] + "_scale"] self.phases.items.pop(self.phases.items.index(phase)) - self.current_crystal.pop(int(phase_name.split("_")[0])) + name = self.current_crystal.pop(int(phase_name.split("_")[0])) + if name in self.additional_data["phases"].keys(): + del self.additional_data["phases"][name] def setPhaseScale(self, model_name, scale=1): self.storage[str(model_name) + "_scale"] = scale @@ -265,7 +269,7 @@ def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: scale = 1.0 offset = 0 else: - scale = self.pattern.scale.raw_value / 500.0 + scale = self.pattern.scale.raw_value / normalization offset = self.pattern.zero_shift.raw_value this_x_array = x_array + offset @@ -302,7 +306,7 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: scale = 1.0 offset = 0 else: - scale = self.pattern.scale.raw_value / 500.0 + scale = self.pattern.scale.raw_value / normalization offset = self.pattern.zero_shift.raw_value self.model["tof_parameters"].zero = offset @@ -346,7 +350,8 @@ def do_calc_setup(self, scale, this_x_array): peak_dat.append(peak) # pool = mp.ProcessPool(num_crys) # print("\n\nPOOL = " + str(pool)) - # result = pool.amap(functools.partial(_do_run, self.model, self.polarized, this_x_array), crystals, phase_lists) + # result = pool.amap(functools.partial(_do_run, self.model, self.polarized, this_x_array), crystals, + # phase_lists) # while not result.ready(): # time.sleep(0.01) # obtained = result.get() @@ -372,7 +377,7 @@ def do_calc_setup(self, scale, this_x_array): dependents, additional_data = self.nonPolarized_update( crystals, profiles, peak_dat, phase_scales, x_str ) - self.additional_data.update(additional_data) + self.additional_data["phases"].update(additional_data) self.additional_data["global_scale"] = scale self.additional_data["background"] = bg self.additional_data["ivar_run"] = this_x_array @@ -382,12 +387,18 @@ def do_calc_setup(self, scale, this_x_array): # just the sum of all phases dependent_output = scale * np.sum(dependents, axis=0) + bg - scaled_dependents = [scale * dep + bg for dep in dependents] + scaled_dependents = [scale * dep for dep in dependents] + self.additional_data["components"] = scaled_dependents self.additional_data["components"] = scaled_dependents if borg.debug: print(f"y_calc: {dependent_output}") - return dependent_output + return ( + np.sum( + [s["profile"] for s in self.additional_data["phases"].values()], axis=0 + ) + + self.additional_data["background"] + ) # return returned_deps def calculate(self, x_array: np.ndarray) -> np.ndarray: @@ -406,6 +417,12 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: return self.powder_1d_tof_calculate(x_array) return res + def get_phase_components(self, phase_name): + data = None + if phase_name in self.additional_data["phase_names"]: + data = self.additional_data["phases"][phase_name].copy() + return data + def get_calculated_y_for_phase(self, phase_idx: int) -> list: """ For a given phase index, return the calculated y @@ -416,11 +433,16 @@ def get_calculated_y_for_phase(self, phase_idx: int) -> list: """ if phase_idx > len(self.additional_data["components"]): raise KeyError(f"phase_index incorrect: {phase_idx}") - return self.additional_data["components"][phase_idx] + return list(self.additional_data["phases"].values())[phase_idx]["profile"] def get_total_y_for_phases(self) -> Tuple[np.ndarray, np.ndarray]: x_values = self.additional_data["ivar_run"] - y_values = np.sum([s for s in self.additional_data["components"]], axis=0) + y_values = ( + np.sum( + [s["profile"] for s in self.additional_data["phases"].values()], axis=0 + ) + + self.additional_data["background"] + ) return x_values, y_values def get_hkl( @@ -465,7 +487,7 @@ def nonPolarized_update(crystals, profiles, peak_dat, scales, x_str): "k": peak_dat[idx].numpy_index_k, "l": peak_dat[idx].numpy_index_l, }, - "profile": scales[idx] * dependent[idx, :], + "profile": scales[idx] * dependent[idx, :] / normalization, "components": {"total": dependent[idx, :]}, "profile_scale": scales[idx], } @@ -490,7 +512,7 @@ def polarized_update(func, crystals, profiles, peak_dat, scales, x_str): "k": peak_dat[idx].numpy_index_k, "l": peak_dat[idx].numpy_index_l, }, - "profile": scales[idx] * dependent[idx, :], + "profile": scales[idx] * dependent[idx, :] / normalization, "components": { "total": dependent[idx, :], "up": up[idx, :], diff --git a/tests/integration_tests/FittingData_CFML.ipynb b/tests/integration_tests/FittingData_CFML.ipynb index 9435a430..9380f60c 100644 --- a/tests/integration_tests/FittingData_CFML.ipynb +++ b/tests/integration_tests/FittingData_CFML.ipynb @@ -27,13 +27,23 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 1, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Warning: CrysFML is not installed\n", + "GSAS-II binary directory: /home/simonward/.cache/pypoetry/virtualenvs/easydiffractionlib-jQmFKVli-py3.7/lib/python3.7/site-packages/GSASII/bindist\n", + "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" + ] + } + ], "source": [ "# Import all the packages\n", "from easyCore import np\n", @@ -72,7 +82,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 2, "metadata": { "pycharm": { "name": "#%%\n" @@ -80,18 +90,10 @@ }, "outputs": [ { - "ename": "AttributeError", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_7764/985772624.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mcalculator\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mCalculator\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mPhases\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfrom_cif_file\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'PbSO4.cif'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mS\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSample\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mphases\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mInstrument1DCWParameters\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdefault\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcalculator\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcalculator\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\projects\\easyscience\\easyCore\\easyCore\\Elements\\HigherLevel\\Phase.py\u001b[0m in \u001b[0;36mfrom_cif_file\u001b[1;34m(cls, file_path)\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mclassmethod\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 361\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mfrom_cif_file\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcls\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfile_path\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mPath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 362\u001b[1;33m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcrystals\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_from_external\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mCifIO\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfrom_file\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfile_path\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 363\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Phases\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0mcrystals\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 364\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\projects\\easyscience\\easyCore\\easyCore\\Elements\\HigherLevel\\Phase.py\u001b[0m in \u001b[0;36m_from_external\u001b[1;34m(constructor, *args)\u001b[0m\n\u001b[0;32m 369\u001b[0m \u001b[0mcrystals\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 370\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mcif_index\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcif\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parser\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnumber_of_cifs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 371\u001b[1;33m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcif\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_crystal_form\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 372\u001b[0m \u001b[0mcrystals\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mPhase\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 373\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcrystals\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\projects\\easyscience\\easyCore\\easyCore\\Utils\\io\\cif.py\u001b[0m in \u001b[0;36mto_crystal_form\u001b[1;34m(self, cif_index)\u001b[0m\n\u001b[0;32m 89\u001b[0m \u001b[1;34m'cell'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parser\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_lattice\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 90\u001b[0m \u001b[1;34m'spacegroup'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parser\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_symmetry\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 91\u001b[1;33m \u001b[1;34m'atoms'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parser\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_atoms\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcif_index\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 92\u001b[0m }\n\u001b[0;32m 93\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\projects\\easyscience\\easyCore\\easyCore\\Utils\\io\\cif.py\u001b[0m in \u001b[0;36mget_atoms\u001b[1;34m(self, cif_index)\u001b[0m\n\u001b[0;32m 448\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 449\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mfound\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 450\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 451\u001b[0m \u001b[1;31m# Now look for atomic displacement\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 452\u001b[0m fields = ['atom_site_U_iso_or_equiv', 'atom_site_aniso_U_11',\n", - "\u001b[1;31mAttributeError\u001b[0m: " + "name": "stdout", + "output_type": "stream", + "text": [ + "Temp CIF: /tmp/easydiffraction_temp.cif\n" ] } ], @@ -114,28 +116,13 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 3, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "ename": "OSError", - "evalue": "PbSO4_xrays_short.xye not found.", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mOSError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_7764/2085124697.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdata_x\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata_y\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata_e\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloadtxt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'PbSO4_xrays_short.xye'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0munpack\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mdata_y\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdata_y\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m100.0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\anaconda3\\envs\\easy\\lib\\site-packages\\numpy\\lib\\npyio.py\u001b[0m in \u001b[0;36mloadtxt\u001b[1;34m(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin, encoding, max_rows, like)\u001b[0m\n\u001b[0;32m 1065\u001b[0m \u001b[0mfname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mos_fspath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1066\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0m_is_string_like\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1067\u001b[1;33m \u001b[0mfh\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_datasource\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'rt'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencoding\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1068\u001b[0m \u001b[0mfencoding\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfh\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'encoding'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'latin1'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1069\u001b[0m \u001b[0mfh\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0miter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfh\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\anaconda3\\envs\\easy\\lib\\site-packages\\numpy\\lib\\_datasource.py\u001b[0m in \u001b[0;36mopen\u001b[1;34m(path, mode, destpath, encoding, newline)\u001b[0m\n\u001b[0;32m 191\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 192\u001b[0m \u001b[0mds\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mDataSource\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdestpath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 193\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mds\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencoding\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnewline\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mnewline\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 194\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 195\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\anaconda3\\envs\\easy\\lib\\site-packages\\numpy\\lib\\_datasource.py\u001b[0m in \u001b[0;36mopen\u001b[1;34m(self, path, mode, encoding, newline)\u001b[0m\n\u001b[0;32m 531\u001b[0m encoding=encoding, newline=newline)\n\u001b[0;32m 532\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 533\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mIOError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"%s not found.\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mpath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 534\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 535\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mOSError\u001b[0m: PbSO4_xrays_short.xye not found." - ] - } - ], + "outputs": [], "source": [ "data_x, data_y, data_e = np.loadtxt('PbSO4_xrays_short.xye', unpack=True)\n", "data_y = data_y/100.0" @@ -150,13 +137,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'interface' is not defined", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)", + "\u001B[0;32m/tmp/ipykernel_1919065/4195641480.py\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[0;32m----> 1\u001B[0;31m \u001B[0msim_y_data\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0minterface\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mfit_func\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mdata_x\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 2\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;31mNameError\u001B[0m: name 'interface' is not defined" + ] + } + ], "source": [ "sim_y_data = interface.fit_func(data_x)" ] @@ -447,4 +446,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file From 717a759cbad679af4f407f1c44188d752a49ce06 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 29 Nov 2021 15:36:08 +0100 Subject: [PATCH 240/312] Fix memory issues again --- easyDiffractionLib/Calculators/CFML.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 42b20f48..8838b60e 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -220,7 +220,9 @@ def get_calculated_y_for_phase(self, phase_idx: int) -> list: """ if phase_idx > len(self.additional_data["components"]): raise KeyError(f"phase_index incorrect: {phase_idx}") - return list(self.additional_data["phases"].values())[phase_idx]["profile"] + return self.additional_data["phases"][ + self.additional_data["phase_names"][phase_idx] + ]["profile"] def get_total_y_for_phases(self) -> Tuple[np.ndarray, np.ndarray]: x_values = self.additional_data["ivar_run"] @@ -247,5 +249,4 @@ def grab_cifs(self): for f in os.listdir(base) if re.match(rf"{file}_[0-9]+.*\.{ext}", f) ] - inds = np.argsort([int(s.split("_")[2][:-4]) for s in files]) - return [files[i] for i in inds] + return files From eefe8211aed238fb6b2785b94c03bfa7b77ea1b1 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Thu, 2 Dec 2021 14:16:24 +0100 Subject: [PATCH 241/312] Fix spacegroup errors for multiphase --- easyDiffractionLib/Calculators/CFML.py | 8 +++++--- easyDiffractionLib/Calculators/cryspy.py | 15 +++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 8838b60e..1ef99835 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -75,8 +75,6 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: cifs = self.grab_cifs() if len(cifs) == 0: raise ValueError("No phases found for calculation") - # Reset the phases dict - self.additional_data["phases"] = dict() for idx, file in enumerate(cifs): cif_file = CFML_api.CIFFile(file) @@ -202,7 +200,11 @@ def add_phase(self, phase_id, phase_name): def remove_phase(self, phases_id): if phases_id in self.known_phases: - del self.known_phases[phases_id] + name = self.known_phases.pop(phases_id) + if name in self.additional_data["phase_names"]: + del self.additional_data["phase_names"][name] + if name in self.additional_data["phases"].keys(): + del self.additional_data["phases"][name] def get_phase_components(self, phase_name): data = None diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index e617d664..01602652 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -157,13 +157,16 @@ def assignSpaceGroup_toCrystal(self, spacegroup_name, crystal_name): def updateSpacegroup(self, sg_key, **kwargs): # This has to be done as sg.name_hm_alt = 'blah' doesn't work :-( + keys = list(self.current_crystal.keys()) + previous_key = "" + for key in keys: + if key in self.storage.keys(): + previous_sg = getattr(self.storage[key], "space_group", None) + if previous_sg == self.storage[sg_key]: + previous_key = key + break sg_key = self.createSpaceGroup(key=sg_key, **kwargs) - key = list(self.current_crystal.keys()) - if len(key) > 0: - key = key[0] - else: - key = "" - self.assignSpaceGroup_toCrystal(sg_key, key) + self.assignSpaceGroup_toCrystal(sg_key, previous_key) def createAtom(self, atom_name, **kwargs): atom = cryspy.AtomSite(**kwargs) From 9d5801059b51bc7938b7672273a6758cf13d69fe Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 10 Dec 2021 09:28:04 +0100 Subject: [PATCH 242/312] Add support for the multiple HKL sets --- easyDiffractionLib/Calculators/cryspy.py | 17 +++-------------- easyDiffractionLib/Interfaces/cryspy.py | 2 +- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index 01602652..da5c04f1 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -448,15 +448,13 @@ def get_total_y_for_phases(self) -> Tuple[np.ndarray, np.ndarray]: ) return x_values, y_values - def get_hkl( - self, x_array: np.ndarray = None, idx: int = 0, phase_name=None - ) -> dict: - + def get_hkl(self, x_array: np.ndarray = None, idx: int = 0, phase_name=None) -> dict: # Do we need to re-run a calculation to get the HKL's do_run = False old_x = self.additional_data.get("ivar", np.array(())) if not np.array_equal(old_x, x_array): do_run = True + if do_run and x_array is not None: _ = self.calculate(x_array) @@ -464,16 +462,7 @@ def get_hkl( if phase_name is None: known_phases = list(self.current_crystal.values()) phase_name = known_phases[idx] - phase_data = self.additional_data.get(phase_name, {}) - return phase_data.get( - "hkl", - { - "ttheta": np.array([]), - "h": np.array([]), - "k": np.array([]), - "l": np.array([]), - }, - ) + return self.additional_data['phases'][phase_name]['hkl'] @staticmethod def nonPolarized_update(crystals, profiles, peak_dat, scales, x_str): diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 5f00b9a6..6c797546 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -252,7 +252,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: return self.calculator.calculate(x_array) def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: - return self.calculator.get_hkl(x_array) + return self.calculator.get_hkl(x_array, idx, phase_name) def get_phase_components(self, phase_name): data = self.calculator.get_phase_components(phase_name) From ce2c8335d7e1abd1b5e0461478c153d5369e6e6b Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Mon, 13 Dec 2021 14:38:06 +0100 Subject: [PATCH 243/312] x_array is unnecessary for cryspy - hkl has already been calculated in the profile run --- easyDiffractionLib/Calculators/cryspy.py | 11 +---------- easyDiffractionLib/Interfaces/cryspy.py | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index da5c04f1..c81b690d 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -448,16 +448,7 @@ def get_total_y_for_phases(self) -> Tuple[np.ndarray, np.ndarray]: ) return x_values, y_values - def get_hkl(self, x_array: np.ndarray = None, idx: int = 0, phase_name=None) -> dict: - # Do we need to re-run a calculation to get the HKL's - do_run = False - old_x = self.additional_data.get("ivar", np.array(())) - if not np.array_equal(old_x, x_array): - do_run = True - - if do_run and x_array is not None: - _ = self.calculate(x_array) - + def get_hkl(self, idx: int = 0, phase_name=None) -> dict: # Collate and return if phase_name is None: known_phases = list(self.current_crystal.values()) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 6c797546..a3446b3b 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -252,7 +252,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: return self.calculator.calculate(x_array) def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: - return self.calculator.get_hkl(x_array, idx, phase_name) + return self.calculator.get_hkl(idx, phase_name) def get_phase_components(self, phase_name): data = self.calculator.get_phase_components(phase_name) From 97a8a31cdf798982b58a4f0c00151e244d27215a Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 19 Jan 2022 13:05:24 +0100 Subject: [PATCH 244/312] Fix for getting HKL's --- easyDiffractionLib/Calculators/CFML.py | 2 +- easyDiffractionLib/Calculators/GSASII.py | 4 ++-- easyDiffractionLib/Calculators/cryspy.py | 15 +++++++++++---- easyDiffractionLib/Interfaces/cryspy.py | 4 ++-- easyDiffractionLib/interface.py | 4 ++-- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/Calculators/CFML.py index 1ef99835..257abfca 100644 --- a/easyDiffractionLib/Calculators/CFML.py +++ b/easyDiffractionLib/Calculators/CFML.py @@ -141,7 +141,7 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: + self.additional_data["background"] ) - def get_hkl(self, x_array: np.ndarray = None, idx=0, phase_name=None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=0, phase_name=None, encoded_name=False) -> dict: # Do we need to re-run a calculation to get the HKL's do_run = False diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/Calculators/GSASII.py index d86ea02f..38417eaf 100644 --- a/easyDiffractionLib/Calculators/GSASII.py +++ b/easyDiffractionLib/Calculators/GSASII.py @@ -157,8 +157,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: return res - def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False) -> dict: hkl_dict = self.hkl_dict - if tth is not None: + if x_array is not None: pass return hkl_dict diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/Calculators/cryspy.py index c81b690d..b9240aac 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/Calculators/cryspy.py @@ -448,11 +448,18 @@ def get_total_y_for_phases(self) -> Tuple[np.ndarray, np.ndarray]: ) return x_values, y_values - def get_hkl(self, idx: int = 0, phase_name=None) -> dict: + def get_hkl(self, idx: int = 0, phase_name=None, encoded_name=False) -> dict: # Collate and return - if phase_name is None: - known_phases = list(self.current_crystal.values()) - phase_name = known_phases[idx] + if phase_name is not None: + if encoded_name: + known_phases = [str(key) for key in self.current_crystal.keys()] + idx = known_phases.index(phase_name) + phase_name = list(self.current_crystal.values())[idx] + else: + known_phases = list(self.current_crystal.values()) + phase_name = known_phases[idx] + else: + phase_name = list(self.current_crystal.values())[idx] return self.additional_data['phases'][phase_name]['hkl'] @staticmethod diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index a3446b3b..19db19c5 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -251,8 +251,8 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: - return self.calculator.get_hkl(idx, phase_name) + def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False) -> dict: + return self.calculator.get_hkl(idx, phase_name, encoded_name) def get_phase_components(self, phase_name): data = self.calculator.get_phase_components(phase_name) diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index 94289256..c860048c 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -11,8 +11,8 @@ class InterfaceFactory(InterfaceFactoryTemplate): def __init__(self, *args, **kwargs): super(InterfaceFactory, self).__init__(InterfaceTemplate._interfaces, *args, **kwargs) - def get_hkl(self, x_array=None, idx=None, phase_name=None) -> dict: - return self().get_hkl(x_array, idx=idx, phase_name=phase_name) + def get_hkl(self, x_array=None, idx=None, phase_name=None, encoded_name=False) -> dict: + return self().get_hkl(x_array, idx=idx, phase_name=phase_name, encoded_name=encoded_name) def get_total_y_for_phases(self) -> list: return self().get_total_y_for_phases() From 9dfd6b89be112cff7bd6a20c87edfb4583292848 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 19 Jan 2022 13:24:05 +0100 Subject: [PATCH 245/312] Use easyCrystallography --- easyDiffractionLib/__init__.py | 2 +- pyproject.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/easyDiffractionLib/__init__.py b/easyDiffractionLib/__init__.py index b22bddec..55124598 100644 --- a/easyDiffractionLib/__init__.py +++ b/easyDiffractionLib/__init__.py @@ -2,7 +2,7 @@ __version__ = '0.0.1' -from easyCore.Elements.HigherLevel.Phase import Phases, Atoms, Site, SpaceGroup, Lattice, Phase +from easyCrystallography.Structures.Phase import Phases, Atoms, Site, SpaceGroup, Lattice, Phase """ This is a horrendous monkey patch of the Phase and Phases class so that adding and removing communicates diff --git a/pyproject.toml b/pyproject.toml index fb26ae0b..83ff6f45 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,7 @@ cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fi CFML = '^0.0.1' GSASII = '^0.0.1' easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } +easyCrystallography = { git = 'https://github.com/easyScience/easyCore.git', rev = 'easyCrystallography_Split' } [tool.poetry.dev-dependencies] pytest = "^5.2" From 50b87793c9706d561d60f4acf3baafd4d34e08b6 Mon Sep 17 00:00:00 2001 From: Piotr R Date: Wed, 19 Jan 2022 14:04:29 +0100 Subject: [PATCH 246/312] Added a multiphase fitting example --- examples/3T2@LLB.xye | 2401 +++++++++++++++++++++++++++++ examples/Fitting_multiphase.ipynb | 526 +++++++ examples/multiphase.cif | 53 + 3 files changed, 2980 insertions(+) create mode 100644 examples/3T2@LLB.xye create mode 100644 examples/Fitting_multiphase.ipynb create mode 100644 examples/multiphase.cif diff --git a/examples/3T2@LLB.xye b/examples/3T2@LLB.xye new file mode 100644 index 00000000..923d1b7f --- /dev/null +++ b/examples/3T2@LLB.xye @@ -0,0 +1,2401 @@ + 5.00000 193.0000 13.8924 + 5.05000 207.0000 14.3875 + 5.10000 180.0000 13.4164 + 5.15000 189.0000 13.7477 + 5.20000 202.0000 14.2127 + 5.25000 192.0000 13.8564 + 5.30000 190.0000 13.7840 + 5.35000 182.0000 13.4907 + 5.40000 196.0000 14.0000 + 5.45000 192.0000 13.8564 + 5.50000 180.0000 13.4164 + 5.55000 188.0000 13.7113 + 5.60000 192.0000 13.8564 + 5.65000 200.0000 14.1421 + 5.70000 185.0000 13.6015 + 5.75000 173.0000 13.1529 + 5.80000 177.0000 13.3041 + 5.85000 180.0000 13.4164 + 5.90000 173.0000 13.1529 + 5.95000 175.0000 13.2288 + 6.00000 169.0000 13.0000 + 6.05000 182.0000 13.4907 + 6.10000 189.0000 13.7477 + 6.15000 178.0000 13.3417 + 6.20000 188.0000 13.7113 + 6.25000 172.0000 13.1149 + 6.30000 171.0000 13.0767 + 6.35000 173.0000 13.1529 + 6.40000 185.0000 13.6015 + 6.45000 175.0000 13.2288 + 6.50000 192.0000 13.8564 + 6.55000 187.0000 13.6748 + 6.60000 172.0000 13.1149 + 6.65000 180.0000 13.4164 + 6.70000 185.0000 13.6015 + 6.75000 160.0000 12.6491 + 6.80000 171.0000 13.0767 + 6.85000 183.0000 13.5277 + 6.90000 168.0000 12.9615 + 6.95000 181.0000 13.4536 + 7.00000 173.0000 13.1529 + 7.05000 163.0000 12.7671 + 7.10000 168.0000 12.9615 + 7.15000 179.0000 13.3791 + 7.20000 163.0000 12.7671 + 7.25000 157.0000 12.5300 + 7.30000 165.0000 12.8452 + 7.35000 166.0000 12.8841 + 7.40000 165.0000 12.8452 + 7.45000 181.0000 13.4536 + 7.50000 157.0000 12.5300 + 7.55000 167.0000 12.9228 + 7.60000 174.0000 13.1909 + 7.65000 170.0000 13.0384 + 7.70000 166.0000 12.8841 + 7.75000 168.0000 12.9615 + 7.80000 174.0000 13.1909 + 7.85000 166.0000 12.8841 + 7.90000 176.0000 13.2665 + 7.95000 173.0000 13.1529 + 8.00000 156.0000 12.4900 + 8.05000 176.0000 13.2665 + 8.10000 182.0000 13.4907 + 8.15000 169.0000 13.0000 + 8.20000 159.0000 12.6095 + 8.25000 162.0000 12.7279 + 8.30000 156.0000 12.4900 + 8.35000 158.0000 12.5698 + 8.40000 172.0000 13.1149 + 8.45000 160.0000 12.6491 + 8.50000 160.0000 12.6491 + 8.55000 153.0000 12.3693 + 8.60000 165.0000 12.8452 + 8.65000 162.0000 12.7279 + 8.70000 165.0000 12.8452 + 8.75000 161.0000 12.6886 + 8.80000 162.0000 12.7279 + 8.85000 146.0000 12.0830 + 8.90000 162.0000 12.7279 + 8.95000 161.0000 12.6886 + 9.00000 161.0000 12.6886 + 9.05000 152.0000 12.3288 + 9.10000 160.0000 12.6491 + 9.15000 160.0000 12.6491 + 9.20000 147.0000 12.1244 + 9.25000 154.0000 12.4097 + 9.30000 148.0000 12.1655 + 9.35000 154.0000 12.4097 + 9.40000 166.0000 12.8841 + 9.45000 165.0000 12.8452 + 9.50000 160.0000 12.6491 + 9.55000 164.0000 12.8062 + 9.60000 156.0000 12.4900 + 9.65000 160.0000 12.6491 + 9.70000 163.0000 12.7671 + 9.75000 169.0000 13.0000 + 9.80000 176.0000 13.2665 + 9.85000 176.0000 13.2665 + 9.90000 178.0000 13.3417 + 9.95000 176.0000 13.2665 +10.00000 182.0000 13.4907 +10.05000 179.0000 13.3791 +10.10000 187.0000 13.6748 +10.15000 203.0000 14.2478 +10.20000 200.0000 14.1421 +10.25000 216.0000 14.6969 +10.30000 213.0000 14.5945 +10.35000 241.0000 15.5242 +10.40000 252.0000 15.8745 +10.45000 253.0000 15.9060 +10.50000 240.0000 15.4919 +10.55000 229.0000 15.1327 +10.60000 228.0000 15.0997 +10.65000 214.0000 14.6287 +10.70000 209.0000 14.4568 +10.75000 196.0000 14.0000 +10.80000 175.0000 13.2288 +10.85000 175.0000 13.2288 +10.90000 168.0000 12.9615 +10.95000 162.0000 12.7279 +11.00000 161.0000 12.6886 +11.05000 158.0000 12.5698 +11.10000 148.0000 12.1655 +11.15000 160.0000 12.6491 +11.20000 154.0000 12.4097 +11.25000 150.0000 12.2474 +11.30000 146.0000 12.0830 +11.35000 149.0000 12.2066 +11.40000 152.0000 12.3288 +11.45000 145.0000 12.0416 +11.50000 160.0000 12.6491 +11.55000 149.0000 12.2066 +11.60000 152.0000 12.3288 +11.65000 156.0000 12.4900 +11.70000 149.0000 12.2066 +11.75000 154.0000 12.4097 +11.80000 160.0000 12.6491 +11.85000 153.0000 12.3693 +11.90000 156.0000 12.4900 +11.95000 160.0000 12.6491 +12.00000 154.0000 12.4097 +12.05000 145.0000 12.0416 +12.10000 148.0000 12.1655 +12.15000 156.0000 12.4900 +12.20000 154.0000 12.4097 +12.25000 158.0000 12.5698 +12.30000 150.0000 12.2474 +12.35000 153.0000 12.3693 +12.40000 154.0000 12.4097 +12.45000 146.0000 12.0830 +12.50000 152.0000 12.3288 +12.55000 149.0000 12.2066 +12.60000 142.0000 11.9164 +12.65000 161.0000 12.6886 +12.70000 153.0000 12.3693 +12.75000 145.0000 12.0416 +12.80000 150.0000 12.2474 +12.85000 154.0000 12.4097 +12.90000 146.0000 12.0830 +12.95000 144.0000 12.0000 +13.00000 144.0000 12.0000 +13.05000 144.0000 12.0000 +13.10000 143.0000 11.9583 +13.15000 142.0000 11.9164 +13.20000 145.0000 12.0416 +13.25000 147.0000 12.1244 +13.30000 146.0000 12.0830 +13.35000 157.0000 12.5300 +13.40000 145.0000 12.0416 +13.45000 154.0000 12.4097 +13.50000 158.0000 12.5698 +13.55000 150.0000 12.2474 +13.60000 147.0000 12.1244 +13.65000 159.0000 12.6095 +13.70000 152.0000 12.3288 +13.75000 155.0000 12.4499 +13.80000 147.0000 12.1244 +13.85000 144.0000 12.0000 +13.90000 155.0000 12.4499 +13.95000 148.0000 12.1655 +14.00000 157.0000 12.5300 +14.05000 145.0000 12.0416 +14.10000 151.0000 12.2882 +14.15000 153.0000 12.3693 +14.20000 145.0000 12.0416 +14.25000 153.0000 12.3693 +14.30000 144.0000 12.0000 +14.35000 148.0000 12.1655 +14.40000 148.0000 12.1655 +14.45000 152.0000 12.3288 +14.50000 147.0000 12.1244 +14.55000 157.0000 12.5300 +14.60000 152.0000 12.3288 +14.65000 152.0000 12.3288 +14.70000 156.0000 12.4900 +14.75000 153.0000 12.3693 +14.80000 147.0000 12.1244 +14.85000 146.0000 12.0830 +14.90000 152.0000 12.3288 +14.95000 152.0000 12.3288 +15.00000 137.0000 11.7047 +15.05000 146.0000 12.0830 +15.10000 149.0000 12.2066 +15.15000 147.0000 12.1244 +15.20000 154.0000 12.4097 +15.25000 153.0000 12.3693 +15.30000 153.0000 12.3693 +15.35000 157.0000 12.5300 +15.40000 156.0000 12.4900 +15.45000 157.0000 12.5300 +15.50000 153.0000 12.3693 +15.55000 160.0000 12.6491 +15.60000 176.0000 13.2665 +15.65000 173.0000 13.1529 +15.70000 184.0000 13.5647 +15.75000 192.0000 13.8564 +15.80000 205.0000 14.3178 +15.85000 222.0000 14.8997 +15.90000 242.0000 15.5563 +15.95000 285.0000 16.8819 +16.00000 313.0000 17.6918 +16.05000 368.0000 19.1833 +16.10000 428.0000 20.6882 +16.15000 508.0000 22.5389 +16.20000 568.0000 23.8328 +16.25000 615.0000 24.7992 +16.30000 640.0000 25.2982 +16.35000 644.0000 25.3772 +16.40000 616.0000 24.8193 +16.45000 565.0000 23.7697 +16.50000 481.0000 21.9317 +16.55000 397.0000 19.9249 +16.60000 320.0000 17.8885 +16.65000 268.0000 16.3707 +16.70000 222.0000 14.8997 +16.75000 189.0000 13.7477 +16.80000 166.0000 12.8841 +16.85000 165.0000 12.8452 +16.90000 163.0000 12.7671 +16.95000 158.0000 12.5698 +17.00000 152.0000 12.3288 +17.05000 146.0000 12.0830 +17.10000 153.0000 12.3693 +17.15000 155.0000 12.4499 +17.20000 154.0000 12.4097 +17.25000 146.0000 12.0830 +17.30000 146.0000 12.0830 +17.35000 154.0000 12.4097 +17.40000 153.0000 12.3693 +17.45000 148.0000 12.1655 +17.50000 152.0000 12.3288 +17.55000 156.0000 12.4900 +17.60000 168.0000 12.9615 +17.65000 171.0000 13.0767 +17.70000 170.0000 13.0384 +17.75000 186.0000 13.6382 +17.80000 206.0000 14.3527 +17.85000 215.0000 14.6629 +17.90000 251.0000 15.8430 +17.95000 286.0000 16.9115 +18.00000 324.0000 18.0000 +18.05000 340.0000 18.4391 +18.10000 382.0000 19.5448 +18.15000 382.0000 19.5448 +18.20000 385.0000 19.6214 +18.25000 366.0000 19.1311 +18.30000 344.0000 18.5472 +18.35000 319.0000 17.8606 +18.40000 275.0000 16.5831 +18.45000 234.0000 15.2971 +18.50000 216.0000 14.6969 +18.55000 199.0000 14.1067 +18.60000 188.0000 13.7113 +18.65000 171.0000 13.0767 +18.70000 163.0000 12.7671 +18.75000 157.0000 12.5300 +18.80000 154.0000 12.4097 +18.85000 157.0000 12.5300 +18.90000 152.0000 12.3288 +18.95000 143.0000 11.9583 +19.00000 150.0000 12.2474 +19.05000 153.0000 12.3693 +19.10000 141.0000 11.8743 +19.15000 150.0000 12.2474 +19.20000 143.0000 11.9583 +19.25000 144.0000 12.0000 +19.30000 144.0000 12.0000 +19.35000 148.0000 12.1655 +19.40000 135.0000 11.6190 +19.45000 145.0000 12.0416 +19.50000 142.0000 11.9164 +19.55000 141.0000 11.8743 +19.60000 146.0000 12.0830 +19.65000 146.0000 12.0830 +19.70000 140.0000 11.8322 +19.75000 146.0000 12.0830 +19.80000 146.0000 12.0830 +19.85000 156.0000 12.4900 +19.90000 153.0000 12.3693 +19.95000 139.0000 11.7898 +20.00000 135.0000 11.6190 +20.05000 141.0000 11.8743 +20.10000 146.0000 12.0830 +20.15000 142.0000 11.9164 +20.20000 144.0000 12.0000 +20.25000 151.0000 12.2882 +20.30000 151.0000 12.2882 +20.35000 150.0000 12.2474 +20.40000 139.0000 11.7898 +20.45000 150.0000 12.2474 +20.50000 164.0000 12.8062 +20.55000 168.0000 12.9615 +20.60000 175.0000 13.2288 +20.65000 180.0000 13.4164 +20.70000 198.0000 14.0712 +20.75000 222.0000 14.8997 +20.80000 250.0000 15.8114 +20.85000 280.0000 16.7332 +20.90000 303.0000 17.4069 +20.95000 333.0000 18.2483 +21.00000 344.0000 18.5472 +21.05000 339.0000 18.4120 +21.10000 330.0000 18.1659 +21.15000 323.0000 17.9722 +21.20000 306.0000 17.4929 +21.25000 266.0000 16.3095 +21.30000 259.0000 16.0935 +21.35000 257.0000 16.0312 +21.40000 237.0000 15.3948 +21.45000 234.0000 15.2971 +21.50000 226.0000 15.0333 +21.55000 201.0000 14.1774 +21.60000 197.0000 14.0357 +21.65000 180.0000 13.4164 +21.70000 169.0000 13.0000 +21.75000 166.0000 12.8841 +21.80000 151.0000 12.2882 +21.85000 150.0000 12.2474 +21.90000 150.0000 12.2474 +21.95000 142.0000 11.9164 +22.00000 147.0000 12.1244 +22.05000 141.0000 11.8743 +22.10000 139.0000 11.7898 +22.15000 149.0000 12.2066 +22.20000 138.0000 11.7473 +22.25000 142.0000 11.9164 +22.30000 141.0000 11.8743 +22.35000 143.0000 11.9583 +22.40000 146.0000 12.0830 +22.45000 148.0000 12.1655 +22.50000 149.0000 12.2066 +22.55000 144.0000 12.0000 +22.60000 145.0000 12.0416 +22.65000 139.0000 11.7898 +22.70000 149.0000 12.2066 +22.75000 146.0000 12.0830 +22.80000 141.0000 11.8743 +22.85000 146.0000 12.0830 +22.90000 137.0000 11.7047 +22.95000 141.0000 11.8743 +23.00000 147.0000 12.1244 +23.05000 141.0000 11.8743 +23.10000 140.0000 11.8322 +23.15000 145.0000 12.0416 +23.20000 149.0000 12.2066 +23.25000 140.0000 11.8322 +23.30000 135.0000 11.6190 +23.35000 142.0000 11.9164 +23.40000 140.0000 11.8322 +23.45000 135.0000 11.6190 +23.50000 147.0000 12.1244 +23.55000 145.0000 12.0416 +23.60000 139.0000 11.7898 +23.65000 143.0000 11.9583 +23.70000 147.0000 12.1244 +23.75000 145.0000 12.0416 +23.80000 154.0000 12.4097 +23.85000 154.0000 12.4097 +23.90000 151.0000 12.2882 +23.95000 160.0000 12.6491 +24.00000 175.0000 13.2288 +24.05000 190.0000 13.7840 +24.10000 207.0000 14.3875 +24.15000 242.0000 15.5563 +24.20000 293.0000 17.1172 +24.25000 354.0000 18.8149 +24.30000 417.0000 20.4206 +24.35000 525.0000 22.9129 +24.40000 621.0000 24.9199 +24.45000 718.0000 26.7955 +24.50000 800.0000 28.2843 +24.55000 813.0000 28.5132 +24.60000 767.0000 27.6948 +24.65000 699.0000 26.4386 +24.70000 584.0000 24.1661 +24.75000 465.0000 21.5639 +24.80000 356.0000 18.8680 +24.85000 286.0000 16.9115 +24.90000 232.0000 15.2315 +24.95000 216.0000 14.6969 +25.00000 196.0000 14.0000 +25.05000 192.0000 13.8564 +25.10000 198.0000 14.0712 +25.15000 187.0000 13.6748 +25.20000 199.0000 14.1067 +25.25000 193.0000 13.8924 +25.30000 176.0000 13.2665 +25.35000 176.0000 13.2665 +25.40000 163.0000 12.7671 +25.45000 155.0000 12.4499 +25.50000 154.0000 12.4097 +25.55000 160.0000 12.6491 +25.60000 146.0000 12.0830 +25.65000 149.0000 12.2066 +25.70000 151.0000 12.2882 +25.75000 146.0000 12.0830 +25.80000 148.0000 12.1655 +25.85000 150.0000 12.2474 +25.90000 139.0000 11.7898 +25.95000 152.0000 12.3288 +26.00000 148.0000 12.1655 +26.05000 146.0000 12.0830 +26.10000 142.0000 11.9164 +26.15000 153.0000 12.3693 +26.20000 156.0000 12.4900 +26.25000 155.0000 12.4499 +26.30000 160.0000 12.6491 +26.35000 167.0000 12.9228 +26.40000 175.0000 13.2288 +26.45000 187.0000 13.6748 +26.50000 203.0000 14.2478 +26.55000 206.0000 14.3527 +26.60000 214.0000 14.6287 +26.65000 224.0000 14.9666 +26.70000 210.0000 14.4914 +26.75000 211.0000 14.5258 +26.80000 204.0000 14.2829 +26.85000 200.0000 14.1421 +26.90000 195.0000 13.9642 +26.95000 219.0000 14.7986 +27.00000 240.0000 15.4919 +27.05000 261.0000 16.1555 +27.10000 316.0000 17.7764 +27.15000 385.0000 19.6214 +27.20000 456.0000 21.3542 +27.25000 529.0000 23.0000 +27.30000 570.0000 23.8747 +27.35000 569.0000 23.8537 +27.40000 556.0000 23.5797 +27.45000 506.0000 22.4944 +27.50000 453.0000 21.2838 +27.55000 416.0000 20.3961 +27.60000 390.0000 19.7484 +27.65000 408.0000 20.1990 +27.70000 447.0000 21.1424 +27.75000 529.0000 23.0000 +27.80000 612.0000 24.7386 +27.85000 719.0000 26.8142 +27.90000 777.0000 27.8747 +27.95000 793.0000 28.1603 +28.00000 747.0000 27.3313 +28.05000 655.0000 25.5930 +28.10000 546.0000 23.3666 +28.15000 439.0000 20.9523 +28.20000 353.0000 18.7883 +28.25000 289.0000 17.0000 +28.30000 244.0000 15.6205 +28.35000 223.0000 14.9332 +28.40000 215.0000 14.6629 +28.45000 219.0000 14.7986 +28.50000 205.0000 14.3178 +28.55000 200.0000 14.1421 +28.60000 191.0000 13.8203 +28.65000 172.0000 13.1149 +28.70000 173.0000 13.1529 +28.75000 165.0000 12.8452 +28.80000 152.0000 12.3288 +28.85000 151.0000 12.2882 +28.90000 147.0000 12.1244 +28.95000 150.0000 12.2474 +29.00000 156.0000 12.4900 +29.05000 145.0000 12.0416 +29.10000 149.0000 12.2066 +29.15000 149.0000 12.2066 +29.20000 146.0000 12.0830 +29.25000 146.0000 12.0830 +29.30000 141.0000 11.8743 +29.35000 145.0000 12.0416 +29.40000 149.0000 12.2066 +29.45000 146.0000 12.0830 +29.50000 151.0000 12.2882 +29.55000 149.0000 12.2066 +29.60000 153.0000 12.3693 +29.65000 149.0000 12.2066 +29.70000 144.0000 12.0000 +29.75000 156.0000 12.4900 +29.80000 150.0000 12.2474 +29.85000 152.0000 12.3288 +29.90000 157.0000 12.5300 +29.95000 154.0000 12.4097 +30.00000 145.0000 12.0416 +30.05000 158.0000 12.5698 +30.10000 162.0000 12.7279 +30.15000 158.0000 12.5698 +30.20000 168.0000 12.9615 +30.25000 176.0000 13.2665 +30.30000 193.0000 13.8924 +30.35000 212.0000 14.5602 +30.40000 234.0000 15.2971 +30.45000 275.0000 16.5831 +30.50000 331.0000 18.1934 +30.55000 389.0000 19.7231 +30.60000 478.0000 21.8632 +30.65000 544.0000 23.3238 +30.70000 608.0000 24.6577 +30.75000 650.0000 25.4951 +30.80000 692.0000 26.3059 +30.85000 719.0000 26.8142 +30.90000 793.0000 28.1603 +30.95000 921.0000 30.3480 +31.00000 1123.0000 33.5112 +31.05000 1432.0000 37.8418 +31.10000 1784.0000 42.2374 +31.15000 2178.0000 46.6690 +31.20000 2444.0000 49.4368 +31.25000 2521.0000 50.2096 +31.30000 2409.0000 49.0816 +31.35000 2143.0000 46.2925 +31.40000 1833.0000 42.8135 +31.45000 1537.0000 39.2046 +31.50000 1388.0000 37.2559 +31.55000 1417.0000 37.6431 +31.60000 1566.0000 39.5727 +31.65000 1826.0000 42.7317 +31.70000 2096.0000 45.7821 +31.75000 2267.0000 47.6130 +31.80000 2263.0000 47.5710 +31.85000 2046.0000 45.2327 +31.90000 1716.0000 41.4246 +31.95000 1329.0000 36.4555 +32.00000 964.0000 31.0483 +32.05000 687.0000 26.2107 +32.10000 510.0000 22.5832 +32.15000 394.0000 19.8494 +32.20000 352.0000 18.7617 +32.25000 345.0000 18.5742 +32.30000 367.0000 19.1572 +32.35000 363.0000 19.0526 +32.40000 355.0000 18.8414 +32.45000 353.0000 18.7883 +32.50000 327.0000 18.0831 +32.55000 303.0000 17.4069 +32.60000 269.0000 16.4012 +32.65000 239.0000 15.4596 +32.70000 224.0000 14.9666 +32.75000 214.0000 14.6287 +32.80000 205.0000 14.3178 +32.85000 206.0000 14.3527 +32.90000 218.0000 14.7648 +32.95000 217.0000 14.7309 +33.00000 224.0000 14.9666 +33.05000 235.0000 15.3297 +33.10000 222.0000 14.8997 +33.15000 217.0000 14.7309 +33.20000 205.0000 14.3178 +33.25000 192.0000 13.8564 +33.30000 180.0000 13.4164 +33.35000 174.0000 13.1909 +33.40000 164.0000 12.8062 +33.45000 155.0000 12.4499 +33.50000 151.0000 12.2882 +33.55000 153.0000 12.3693 +33.60000 154.0000 12.4097 +33.65000 150.0000 12.2474 +33.70000 147.0000 12.1244 +33.75000 154.0000 12.4097 +33.80000 155.0000 12.4499 +33.85000 164.0000 12.8062 +33.90000 166.0000 12.8841 +33.95000 167.0000 12.9228 +34.00000 186.0000 13.6382 +34.05000 200.0000 14.1421 +34.10000 223.0000 14.9332 +34.15000 248.0000 15.7480 +34.20000 271.0000 16.4621 +34.25000 281.0000 16.7631 +34.30000 273.0000 16.5227 +34.35000 267.0000 16.3401 +34.40000 242.0000 15.5563 +34.45000 226.0000 15.0333 +34.50000 196.0000 14.0000 +34.55000 172.0000 13.1149 +34.60000 156.0000 12.4900 +34.65000 150.0000 12.2474 +34.70000 157.0000 12.5300 +34.75000 144.0000 12.0000 +34.80000 142.0000 11.9164 +34.85000 149.0000 12.2066 +34.90000 149.0000 12.2066 +34.95000 147.0000 12.1244 +35.00000 141.0000 11.8743 +35.05000 140.0000 11.8322 +35.10000 140.0000 11.8322 +35.15000 143.0000 11.9583 +35.20000 140.0000 11.8322 +35.25000 143.0000 11.9583 +35.30000 138.0000 11.7473 +35.35000 136.0000 11.6619 +35.40000 137.0000 11.7047 +35.45000 139.0000 11.7898 +35.50000 139.0000 11.7898 +35.55000 137.0000 11.7047 +35.60000 146.0000 12.0830 +35.65000 139.0000 11.7898 +35.70000 135.0000 11.6190 +35.75000 139.0000 11.7898 +35.80000 134.0000 11.5758 +35.85000 139.0000 11.7898 +35.90000 142.0000 11.9164 +35.95000 139.0000 11.7898 +36.00000 142.0000 11.9164 +36.05000 135.0000 11.6190 +36.10000 140.0000 11.8322 +36.15000 141.0000 11.8743 +36.20000 140.0000 11.8322 +36.25000 145.0000 12.0416 +36.30000 143.0000 11.9583 +36.35000 138.0000 11.7473 +36.40000 143.0000 11.9583 +36.45000 142.0000 11.9164 +36.50000 144.0000 12.0000 +36.55000 147.0000 12.1244 +36.60000 148.0000 12.1655 +36.65000 158.0000 12.5698 +36.70000 168.0000 12.9615 +36.75000 173.0000 13.1529 +36.80000 178.0000 13.3417 +36.85000 174.0000 13.1909 +36.90000 172.0000 13.1149 +36.95000 168.0000 12.9615 +37.00000 168.0000 12.9615 +37.05000 163.0000 12.7671 +37.10000 153.0000 12.3693 +37.15000 154.0000 12.4097 +37.20000 153.0000 12.3693 +37.25000 149.0000 12.2066 +37.30000 149.0000 12.2066 +37.35000 152.0000 12.3288 +37.40000 159.0000 12.6095 +37.45000 165.0000 12.8452 +37.50000 172.0000 13.1149 +37.55000 187.0000 13.6748 +37.60000 209.0000 14.4568 +37.65000 237.0000 15.3948 +37.70000 279.0000 16.7033 +37.75000 343.0000 18.5203 +37.80000 406.0000 20.1494 +37.85000 463.0000 21.5174 +37.90000 537.0000 23.1733 +37.95000 579.0000 24.0624 +38.00000 568.0000 23.8328 +38.05000 525.0000 22.9129 +38.10000 465.0000 21.5639 +38.15000 391.0000 19.7737 +38.20000 332.0000 18.2209 +38.25000 310.0000 17.6068 +38.30000 303.0000 17.4069 +38.35000 326.0000 18.0555 +38.40000 324.0000 18.0000 +38.45000 318.0000 17.8326 +38.50000 297.0000 17.2337 +38.55000 262.0000 16.1864 +38.60000 232.0000 15.2315 +38.65000 202.0000 14.2127 +38.70000 185.0000 13.6015 +38.75000 164.0000 12.8062 +38.80000 162.0000 12.7279 +38.85000 160.0000 12.6491 +38.90000 159.0000 12.6095 +38.95000 157.0000 12.5300 +39.00000 166.0000 12.8841 +39.05000 174.0000 13.1909 +39.10000 171.0000 13.0767 +39.15000 184.0000 13.5647 +39.20000 181.0000 13.4536 +39.25000 187.0000 13.6748 +39.30000 192.0000 13.8564 +39.35000 192.0000 13.8564 +39.40000 199.0000 14.1067 +39.45000 218.0000 14.7648 +39.50000 249.0000 15.7797 +39.55000 283.0000 16.8226 +39.60000 339.0000 18.4120 +39.65000 372.0000 19.2873 +39.70000 379.0000 19.4679 +39.75000 372.0000 19.2873 +39.80000 338.0000 18.3848 +39.85000 287.0000 16.9411 +39.90000 239.0000 15.4596 +39.95000 203.0000 14.2478 +40.00000 185.0000 13.6015 +40.05000 164.0000 12.8062 +40.10000 170.0000 13.0384 +40.15000 171.0000 13.0767 +40.20000 172.0000 13.1149 +40.25000 184.0000 13.5647 +40.30000 196.0000 14.0000 +40.35000 224.0000 14.9666 +40.40000 264.0000 16.2481 +40.45000 295.0000 17.1756 +40.50000 329.0000 18.1384 +40.55000 351.0000 18.7350 +40.60000 344.0000 18.5472 +40.65000 323.0000 17.9722 +40.70000 285.0000 16.8819 +40.75000 247.0000 15.7162 +40.80000 227.0000 15.0665 +40.85000 198.0000 14.0712 +40.90000 187.0000 13.6748 +40.95000 187.0000 13.6748 +41.00000 174.0000 13.1909 +41.05000 174.0000 13.1909 +41.10000 161.0000 12.6886 +41.15000 149.0000 12.2066 +41.20000 150.0000 12.2474 +41.25000 152.0000 12.3288 +41.30000 150.0000 12.2474 +41.35000 145.0000 12.0416 +41.40000 144.0000 12.0000 +41.45000 146.0000 12.0830 +41.50000 141.0000 11.8743 +41.55000 145.0000 12.0416 +41.60000 140.0000 11.8322 +41.65000 137.0000 11.7047 +41.70000 134.0000 11.5758 +41.75000 138.0000 11.7473 +41.80000 140.0000 11.8322 +41.85000 142.0000 11.9164 +41.90000 141.0000 11.8743 +41.95000 139.0000 11.7898 +42.00000 140.0000 11.8322 +42.05000 139.0000 11.7898 +42.10000 138.0000 11.7473 +42.15000 136.0000 11.6619 +42.20000 135.0000 11.6190 +42.25000 134.0000 11.5758 +42.30000 139.0000 11.7898 +42.35000 140.0000 11.8322 +42.40000 145.0000 12.0416 +42.45000 144.0000 12.0000 +42.50000 146.0000 12.0830 +42.55000 141.0000 11.8743 +42.60000 139.0000 11.7898 +42.65000 140.0000 11.8322 +42.70000 141.0000 11.8743 +42.75000 142.0000 11.9164 +42.80000 145.0000 12.0416 +42.85000 145.0000 12.0416 +42.90000 138.0000 11.7473 +42.95000 139.0000 11.7898 +43.00000 135.0000 11.6190 +43.05000 143.0000 11.9583 +43.10000 141.0000 11.8743 +43.15000 135.0000 11.6190 +43.20000 136.0000 11.6619 +43.25000 138.0000 11.7473 +43.30000 137.0000 11.7047 +43.35000 137.0000 11.7047 +43.40000 135.0000 11.6190 +43.45000 143.0000 11.9583 +43.50000 138.0000 11.7473 +43.55000 139.0000 11.7898 +43.60000 145.0000 12.0416 +43.65000 147.0000 12.1244 +43.70000 146.0000 12.0830 +43.75000 149.0000 12.2066 +43.80000 153.0000 12.3693 +43.85000 157.0000 12.5300 +43.90000 165.0000 12.8452 +43.95000 168.0000 12.9615 +44.00000 162.0000 12.7279 +44.05000 165.0000 12.8452 +44.10000 165.0000 12.8452 +44.15000 155.0000 12.4499 +44.20000 161.0000 12.6886 +44.25000 163.0000 12.7671 +44.30000 160.0000 12.6491 +44.35000 161.0000 12.6886 +44.40000 167.0000 12.9228 +44.45000 180.0000 13.4164 +44.50000 200.0000 14.1421 +44.55000 220.0000 14.8324 +44.60000 260.0000 16.1245 +44.65000 305.0000 17.4642 +44.70000 351.0000 18.7350 +44.75000 405.0000 20.1246 +44.80000 449.0000 21.1896 +44.85000 514.0000 22.6716 +44.90000 612.0000 24.7386 +44.95000 756.0000 27.4955 +45.00000 986.0000 31.4006 +45.05000 1269.0000 35.6230 +45.10000 1548.0000 39.3446 +45.15000 1704.0000 41.2795 +45.20000 1696.0000 41.1825 +45.25000 1544.0000 39.2938 +45.30000 1252.0000 35.3836 +45.35000 934.0000 30.5614 +45.40000 668.0000 25.8457 +45.45000 476.0000 21.8174 +45.50000 360.0000 18.9737 +45.55000 285.0000 16.8819 +45.60000 240.0000 15.4919 +45.65000 216.0000 14.6969 +45.70000 198.0000 14.0712 +45.75000 187.0000 13.6748 +45.80000 172.0000 13.1149 +45.85000 168.0000 12.9615 +45.90000 161.0000 12.6886 +45.95000 163.0000 12.7671 +46.00000 160.0000 12.6491 +46.05000 153.0000 12.3693 +46.10000 155.0000 12.4499 +46.15000 155.0000 12.4499 +46.20000 153.0000 12.3693 +46.25000 153.0000 12.3693 +46.30000 154.0000 12.4097 +46.35000 149.0000 12.2066 +46.40000 155.0000 12.4499 +46.45000 155.0000 12.4499 +46.50000 160.0000 12.6491 +46.55000 169.0000 13.0000 +46.60000 175.0000 13.2288 +46.65000 193.0000 13.8924 +46.70000 217.0000 14.7309 +46.75000 250.0000 15.8114 +46.80000 288.0000 16.9706 +46.85000 305.0000 17.4642 +46.90000 304.0000 17.4356 +46.95000 288.0000 16.9706 +47.00000 262.0000 16.1864 +47.05000 226.0000 15.0333 +47.10000 197.0000 14.0357 +47.15000 177.0000 13.3041 +47.20000 161.0000 12.6886 +47.25000 157.0000 12.5300 +47.30000 156.0000 12.4900 +47.35000 157.0000 12.5300 +47.40000 153.0000 12.3693 +47.45000 160.0000 12.6491 +47.50000 160.0000 12.6491 +47.55000 169.0000 13.0000 +47.60000 181.0000 13.4536 +47.65000 195.0000 13.9642 +47.70000 224.0000 14.9666 +47.75000 259.0000 16.0935 +47.80000 294.0000 17.1464 +47.85000 323.0000 17.9722 +47.90000 362.0000 19.0263 +47.95000 377.0000 19.4165 +48.00000 364.0000 19.0788 +48.05000 331.0000 18.1934 +48.10000 293.0000 17.1172 +48.15000 256.0000 16.0000 +48.20000 222.0000 14.8997 +48.25000 212.0000 14.5602 +48.30000 211.0000 14.5258 +48.35000 232.0000 15.2315 +48.40000 262.0000 16.1864 +48.45000 333.0000 18.2483 +48.50000 448.0000 21.1660 +48.55000 600.0000 24.4949 +48.60000 788.0000 28.0713 +48.65000 975.0000 31.2250 +48.70000 1085.0000 32.9393 +48.75000 1073.0000 32.7567 +48.80000 971.0000 31.1609 +48.85000 775.0000 27.8388 +48.90000 570.0000 23.8747 +48.95000 406.0000 20.1494 +49.00000 304.0000 17.4356 +49.05000 252.0000 15.8745 +49.10000 214.0000 14.6287 +49.15000 196.0000 14.0000 +49.20000 198.0000 14.0712 +49.25000 204.0000 14.2829 +49.30000 220.0000 14.8324 +49.35000 232.0000 15.2315 +49.40000 244.0000 15.6205 +49.45000 256.0000 16.0000 +49.50000 249.0000 15.7797 +49.55000 241.0000 15.5242 +49.60000 219.0000 14.7986 +49.65000 213.0000 14.5945 +49.70000 215.0000 14.6629 +49.75000 223.0000 14.9332 +49.80000 233.0000 15.2643 +49.85000 230.0000 15.1658 +49.90000 228.0000 15.0997 +49.95000 217.0000 14.7309 +50.00000 206.0000 14.3527 +50.05000 199.0000 14.1067 +50.10000 200.0000 14.1421 +50.15000 201.0000 14.1774 +50.20000 219.0000 14.7986 +50.25000 236.0000 15.3623 +50.30000 260.0000 16.1245 +50.35000 290.0000 17.0294 +50.40000 327.0000 18.0831 +50.45000 349.0000 18.6815 +50.50000 342.0000 18.4932 +50.55000 325.0000 18.0278 +50.60000 294.0000 17.1464 +50.65000 253.0000 15.9060 +50.70000 214.0000 14.6287 +50.75000 186.0000 13.6382 +50.80000 175.0000 13.2288 +50.85000 171.0000 13.0767 +50.90000 173.0000 13.1529 +50.95000 182.0000 13.4907 +51.00000 206.0000 14.3527 +51.05000 230.0000 15.1658 +51.10000 257.0000 16.0312 +51.15000 285.0000 16.8819 +51.20000 300.0000 17.3205 +51.25000 297.0000 17.2337 +51.30000 290.0000 17.0294 +51.35000 276.0000 16.6132 +51.40000 280.0000 16.7332 +51.45000 301.0000 17.3494 +51.50000 366.0000 19.1311 +51.55000 472.0000 21.7256 +51.60000 610.0000 24.6982 +51.65000 712.0000 26.6833 +51.70000 783.0000 27.9821 +51.75000 764.0000 27.6405 +51.80000 664.0000 25.7682 +51.85000 526.0000 22.9347 +51.90000 394.0000 19.8494 +51.95000 297.0000 17.2337 +52.00000 239.0000 15.4596 +52.05000 203.0000 14.2478 +52.10000 188.0000 13.7113 +52.15000 173.0000 13.1529 +52.20000 173.0000 13.1529 +52.25000 166.0000 12.8841 +52.30000 165.0000 12.8452 +52.35000 164.0000 12.8062 +52.40000 164.0000 12.8062 +52.45000 156.0000 12.4900 +52.50000 162.0000 12.7279 +52.55000 164.0000 12.8062 +52.60000 167.0000 12.9228 +52.65000 180.0000 13.4164 +52.70000 196.0000 14.0000 +52.75000 225.0000 15.0000 +52.80000 255.0000 15.9687 +52.85000 294.0000 17.1464 +52.90000 321.0000 17.9165 +52.95000 314.0000 17.7200 +53.00000 292.0000 17.0880 +53.05000 260.0000 16.1245 +53.10000 228.0000 15.0997 +53.15000 201.0000 14.1774 +53.20000 187.0000 13.6748 +53.25000 179.0000 13.3791 +53.30000 177.0000 13.3041 +53.35000 186.0000 13.6382 +53.40000 186.0000 13.6382 +53.45000 198.0000 14.0712 +53.50000 216.0000 14.6969 +53.55000 239.0000 15.4596 +53.60000 276.0000 16.6132 +53.65000 345.0000 18.5742 +53.70000 450.0000 21.2132 +53.75000 622.0000 24.9399 +53.80000 880.0000 29.6648 +53.85000 1192.0000 34.5254 +53.90000 1461.0000 38.2230 +53.95000 1567.0000 39.5854 +54.00000 1503.0000 38.7685 +54.05000 1304.0000 36.1109 +54.10000 1008.0000 31.7490 +54.15000 742.0000 27.2397 +54.20000 573.0000 23.9374 +54.25000 473.0000 21.7486 +54.30000 438.0000 20.9284 +54.35000 415.0000 20.3715 +54.40000 408.0000 20.1990 +54.45000 377.0000 19.4165 +54.50000 349.0000 18.6815 +54.55000 307.0000 17.5214 +54.60000 271.0000 16.4621 +54.65000 257.0000 16.0312 +54.70000 247.0000 15.7162 +54.75000 228.0000 15.0997 +54.80000 236.0000 15.3623 +54.85000 237.0000 15.3948 +54.90000 245.0000 15.6525 +54.95000 268.0000 16.3707 +55.00000 310.0000 17.6068 +55.05000 364.0000 19.0788 +55.10000 461.0000 21.4709 +55.15000 605.0000 24.5967 +55.20000 755.0000 27.4773 +55.25000 833.0000 28.8617 +55.30000 853.0000 29.2062 +55.35000 769.0000 27.7308 +55.40000 634.0000 25.1794 +55.45000 488.0000 22.0907 +55.50000 379.0000 19.4679 +55.55000 306.0000 17.4929 +55.60000 267.0000 16.3401 +55.65000 245.0000 15.6525 +55.70000 246.0000 15.6844 +55.75000 247.0000 15.7162 +55.80000 261.0000 16.1555 +55.85000 281.0000 16.7631 +55.90000 321.0000 17.9165 +55.95000 392.0000 19.7990 +56.00000 497.0000 22.2935 +56.05000 690.0000 26.2679 +56.10000 995.0000 31.5436 +56.15000 1420.0000 37.6829 +56.20000 1870.0000 43.2435 +56.25000 2199.0000 46.8935 +56.30000 2331.0000 48.2804 +56.35000 2212.0000 47.0319 +56.40000 1957.0000 44.2380 +56.45000 1687.0000 41.0731 +56.50000 1546.0000 39.3192 +56.55000 1512.0000 38.8844 +56.60000 1474.0000 38.3927 +56.65000 1394.0000 37.3363 +56.70000 1194.0000 34.5543 +56.75000 958.0000 30.9516 +56.80000 749.0000 27.3679 +56.85000 552.0000 23.4947 +56.90000 444.0000 21.0713 +56.95000 359.0000 18.9473 +57.00000 301.0000 17.3494 +57.05000 267.0000 16.3401 +57.10000 236.0000 15.3623 +57.15000 214.0000 14.6287 +57.20000 207.0000 14.3875 +57.25000 194.0000 13.9284 +57.30000 193.0000 13.8924 +57.35000 187.0000 13.6748 +57.40000 184.0000 13.5647 +57.45000 185.0000 13.6015 +57.50000 191.0000 13.8203 +57.55000 198.0000 14.0712 +57.60000 206.0000 14.3527 +57.65000 224.0000 14.9666 +57.70000 257.0000 16.0312 +57.75000 264.0000 16.2481 +57.80000 275.0000 16.5831 +57.85000 268.0000 16.3707 +57.90000 251.0000 15.8430 +57.95000 224.0000 14.9666 +58.00000 202.0000 14.2127 +58.05000 193.0000 13.8924 +58.10000 178.0000 13.3417 +58.15000 181.0000 13.4536 +58.20000 179.0000 13.3791 +58.25000 185.0000 13.6015 +58.30000 192.0000 13.8564 +58.35000 201.0000 14.1774 +58.40000 220.0000 14.8324 +58.45000 248.0000 15.7480 +58.50000 278.0000 16.6733 +58.55000 325.0000 18.0278 +58.60000 391.0000 19.7737 +58.65000 440.0000 20.9762 +58.70000 471.0000 21.7025 +58.75000 447.0000 21.1424 +58.80000 396.0000 19.8997 +58.85000 337.0000 18.3576 +58.90000 278.0000 16.6733 +58.95000 251.0000 15.8430 +59.00000 232.0000 15.2315 +59.05000 230.0000 15.1658 +59.10000 251.0000 15.8430 +59.15000 294.0000 17.1464 +59.20000 347.0000 18.6279 +59.25000 413.0000 20.3224 +59.30000 472.0000 21.7256 +59.35000 496.0000 22.2711 +59.40000 492.0000 22.1811 +59.45000 438.0000 20.9284 +59.50000 381.0000 19.5192 +59.55000 351.0000 18.7350 +59.60000 357.0000 18.8944 +59.65000 406.0000 20.1494 +59.70000 476.0000 21.8174 +59.75000 546.0000 23.3666 +59.80000 572.0000 23.9165 +59.85000 548.0000 23.4094 +59.90000 469.0000 21.6564 +59.95000 374.0000 19.3391 +60.00000 297.0000 17.2337 +60.05000 241.0000 15.5242 +60.10000 214.0000 14.6287 +60.15000 206.0000 14.3527 +60.20000 195.0000 13.9642 +60.25000 197.0000 14.0357 +60.30000 200.0000 14.1421 +60.35000 202.0000 14.2127 +60.40000 219.0000 14.7986 +60.45000 240.0000 15.4919 +60.50000 276.0000 16.6132 +60.55000 338.0000 18.3848 +60.60000 422.0000 20.5426 +60.65000 528.0000 22.9783 +60.70000 621.0000 24.9199 +60.75000 673.0000 25.9422 +60.80000 648.0000 25.4558 +60.85000 580.0000 24.0832 +60.90000 500.0000 22.3607 +60.95000 427.0000 20.6640 +61.00000 387.0000 19.6723 +61.05000 374.0000 19.3391 +61.10000 354.0000 18.8149 +61.15000 325.0000 18.0278 +61.20000 299.0000 17.2916 +61.25000 278.0000 16.6733 +61.30000 270.0000 16.4317 +61.35000 259.0000 16.0935 +61.40000 267.0000 16.3401 +61.45000 271.0000 16.4621 +61.50000 267.0000 16.3401 +61.55000 265.0000 16.2788 +61.60000 274.0000 16.5529 +61.65000 300.0000 17.3205 +61.70000 349.0000 18.6815 +61.75000 433.0000 20.8087 +61.80000 599.0000 24.4745 +61.85000 823.0000 28.6880 +61.90000 1079.0000 32.8481 +61.95000 1265.0000 35.5668 +62.00000 1312.0000 36.2215 +62.05000 1217.0000 34.8855 +62.10000 983.0000 31.3528 +62.15000 721.0000 26.8514 +62.20000 521.0000 22.8254 +62.25000 401.0000 20.0250 +62.30000 351.0000 18.7350 +62.35000 348.0000 18.6548 +62.40000 393.0000 19.8242 +62.45000 476.0000 21.8174 +62.50000 598.0000 24.4540 +62.55000 725.0000 26.9258 +62.60000 798.0000 28.2489 +62.65000 811.0000 28.4781 +62.70000 727.0000 26.9629 +62.75000 606.0000 24.6171 +62.80000 505.0000 22.4722 +62.85000 444.0000 21.0713 +62.90000 404.0000 20.0998 +62.95000 375.0000 19.3649 +63.00000 346.0000 18.6011 +63.05000 290.0000 17.0294 +63.10000 244.0000 15.6205 +63.15000 214.0000 14.6287 +63.20000 195.0000 13.9642 +63.25000 183.0000 13.5277 +63.30000 180.0000 13.4164 +63.35000 174.0000 13.1909 +63.40000 170.0000 13.0384 +63.45000 175.0000 13.2288 +63.50000 170.0000 13.0384 +63.55000 164.0000 12.8062 +63.60000 169.0000 13.0000 +63.65000 177.0000 13.3041 +63.70000 179.0000 13.3791 +63.75000 199.0000 14.1067 +63.80000 232.0000 15.2315 +63.85000 276.0000 16.6132 +63.90000 325.0000 18.0278 +63.95000 367.0000 19.1572 +64.00000 396.0000 19.8997 +64.05000 397.0000 19.9249 +64.10000 364.0000 19.0788 +64.15000 325.0000 18.0278 +64.20000 278.0000 16.6733 +64.25000 242.0000 15.5563 +64.30000 205.0000 14.3178 +64.35000 191.0000 13.8203 +64.40000 181.0000 13.4536 +64.45000 178.0000 13.3417 +64.50000 174.0000 13.1909 +64.55000 176.0000 13.2665 +64.60000 175.0000 13.2288 +64.65000 180.0000 13.4164 +64.70000 182.0000 13.4907 +64.75000 186.0000 13.6382 +64.80000 191.0000 13.8203 +64.85000 192.0000 13.8564 +64.90000 199.0000 14.1067 +64.95000 203.0000 14.2478 +65.00000 225.0000 15.0000 +65.05000 255.0000 15.9687 +65.10000 281.0000 16.7631 +65.15000 313.0000 17.6918 +65.20000 309.0000 17.5784 +65.25000 293.0000 17.1172 +65.30000 258.0000 16.0624 +65.35000 222.0000 14.8997 +65.40000 191.0000 13.8203 +65.45000 180.0000 13.4164 +65.50000 170.0000 13.0384 +65.55000 172.0000 13.1149 +65.60000 161.0000 12.6886 +65.65000 161.0000 12.6886 +65.70000 162.0000 12.7279 +65.75000 164.0000 12.8062 +65.80000 169.0000 13.0000 +65.85000 173.0000 13.1529 +65.90000 183.0000 13.5277 +65.95000 197.0000 14.0357 +66.00000 222.0000 14.8997 +66.05000 269.0000 16.4012 +66.10000 333.0000 18.2483 +66.15000 404.0000 20.0998 +66.20000 471.0000 21.7025 +66.25000 532.0000 23.0651 +66.30000 566.0000 23.7908 +66.35000 565.0000 23.7697 +66.40000 530.0000 23.0217 +66.45000 467.0000 21.6102 +66.50000 389.0000 19.7231 +66.55000 315.0000 17.7482 +66.60000 251.0000 15.8430 +66.65000 211.0000 14.5258 +66.70000 193.0000 13.8924 +66.75000 183.0000 13.5277 +66.80000 180.0000 13.4164 +66.85000 180.0000 13.4164 +66.90000 191.0000 13.8203 +66.95000 207.0000 14.3875 +67.00000 239.0000 15.4596 +67.05000 275.0000 16.5831 +67.10000 299.0000 17.2916 +67.15000 292.0000 17.0880 +67.20000 271.0000 16.4621 +67.25000 249.0000 15.7797 +67.30000 212.0000 14.5602 +67.35000 190.0000 13.7840 +67.40000 171.0000 13.0767 +67.45000 163.0000 12.7671 +67.50000 160.0000 12.6491 +67.55000 161.0000 12.6886 +67.60000 165.0000 12.8452 +67.65000 163.0000 12.7671 +67.70000 173.0000 13.1529 +67.75000 183.0000 13.5277 +67.80000 188.0000 13.7113 +67.85000 193.0000 13.8924 +67.90000 199.0000 14.1067 +67.95000 191.0000 13.8203 +68.00000 185.0000 13.6015 +68.05000 177.0000 13.3041 +68.10000 170.0000 13.0384 +68.15000 176.0000 13.2665 +68.20000 183.0000 13.5277 +68.25000 183.0000 13.5277 +68.30000 191.0000 13.8203 +68.35000 187.0000 13.6748 +68.40000 179.0000 13.3791 +68.45000 173.0000 13.1529 +68.50000 170.0000 13.0384 +68.55000 172.0000 13.1149 +68.60000 174.0000 13.1909 +68.65000 190.0000 13.7840 +68.70000 208.0000 14.4222 +68.75000 243.0000 15.5885 +68.80000 284.0000 16.8523 +68.85000 319.0000 17.8606 +68.90000 340.0000 18.4391 +68.95000 336.0000 18.3303 +69.00000 298.0000 17.2627 +69.05000 257.0000 16.0312 +69.10000 230.0000 15.1658 +69.15000 218.0000 14.7648 +69.20000 228.0000 15.0997 +69.25000 253.0000 15.9060 +69.30000 279.0000 16.7033 +69.35000 314.0000 17.7200 +69.40000 353.0000 18.7883 +69.45000 371.0000 19.2614 +69.50000 371.0000 19.2614 +69.55000 341.0000 18.4662 +69.60000 293.0000 17.1172 +69.65000 243.0000 15.5885 +69.70000 207.0000 14.3875 +69.75000 184.0000 13.5647 +69.80000 175.0000 13.2288 +69.85000 167.0000 12.9228 +69.90000 169.0000 13.0000 +69.95000 180.0000 13.4164 +70.00000 190.0000 13.7840 +70.05000 217.0000 14.7309 +70.10000 237.0000 15.3948 +70.15000 250.0000 15.8114 +70.20000 249.0000 15.7797 +70.25000 237.0000 15.3948 +70.30000 216.0000 14.6969 +70.35000 192.0000 13.8564 +70.40000 174.0000 13.1909 +70.45000 165.0000 12.8452 +70.50000 155.0000 12.4499 +70.55000 151.0000 12.2882 +70.60000 154.0000 12.4097 +70.65000 152.0000 12.3288 +70.70000 151.0000 12.2882 +70.75000 156.0000 12.4900 +70.80000 157.0000 12.5300 +70.85000 166.0000 12.8841 +70.90000 168.0000 12.9615 +70.95000 172.0000 13.1149 +71.00000 171.0000 13.0767 +71.05000 174.0000 13.1909 +71.10000 191.0000 13.8203 +71.15000 204.0000 14.2829 +71.20000 232.0000 15.2315 +71.25000 278.0000 16.6733 +71.30000 311.0000 17.6352 +71.35000 328.0000 18.1108 +71.40000 328.0000 18.1108 +71.45000 307.0000 17.5214 +71.50000 273.0000 16.5227 +71.55000 243.0000 15.5885 +71.60000 221.0000 14.8661 +71.65000 207.0000 14.3875 +71.70000 200.0000 14.1421 +71.75000 190.0000 13.7840 +71.80000 186.0000 13.6382 +71.85000 184.0000 13.5647 +71.90000 184.0000 13.5647 +71.95000 197.0000 14.0357 +72.00000 210.0000 14.4914 +72.05000 239.0000 15.4596 +72.10000 280.0000 16.7332 +72.15000 353.0000 18.7883 +72.20000 432.0000 20.7846 +72.25000 499.0000 22.3383 +72.30000 564.0000 23.7487 +72.35000 563.0000 23.7276 +72.40000 512.0000 22.6274 +72.45000 433.0000 20.8087 +72.50000 349.0000 18.6815 +72.55000 274.0000 16.5529 +72.60000 227.0000 15.0665 +72.65000 203.0000 14.2478 +72.70000 190.0000 13.7840 +72.75000 186.0000 13.6382 +72.80000 185.0000 13.6015 +72.85000 183.0000 13.5277 +72.90000 186.0000 13.6382 +72.95000 203.0000 14.2478 +73.00000 236.0000 15.3623 +73.05000 274.0000 16.5529 +73.10000 335.0000 18.3030 +73.15000 395.0000 19.8746 +73.20000 411.0000 20.2731 +73.25000 405.0000 20.1246 +73.30000 376.0000 19.3907 +73.35000 333.0000 18.2483 +73.40000 313.0000 17.6918 +73.45000 310.0000 17.6068 +73.50000 306.0000 17.4929 +73.55000 281.0000 16.7631 +73.60000 262.0000 16.1864 +73.65000 237.0000 15.3948 +73.70000 207.0000 14.3875 +73.75000 188.0000 13.7113 +73.80000 180.0000 13.4164 +73.85000 176.0000 13.2665 +73.90000 178.0000 13.3417 +73.95000 181.0000 13.4536 +74.00000 185.0000 13.6015 +74.05000 201.0000 14.1774 +74.10000 220.0000 14.8324 +74.15000 269.0000 16.4012 +74.20000 327.0000 18.0831 +74.25000 403.0000 20.0749 +74.30000 465.0000 21.5639 +74.35000 483.0000 21.9773 +74.40000 459.0000 21.4243 +74.45000 397.0000 19.9249 +74.50000 321.0000 17.9165 +74.55000 258.0000 16.0624 +74.60000 224.0000 14.9666 +74.65000 208.0000 14.4222 +74.70000 202.0000 14.2127 +74.75000 210.0000 14.4914 +74.80000 221.0000 14.8661 +74.85000 247.0000 15.7162 +74.90000 264.0000 16.2481 +74.95000 280.0000 16.7332 +75.00000 303.0000 17.4069 +75.05000 333.0000 18.2483 +75.10000 371.0000 19.2614 +75.15000 400.0000 20.0000 +75.20000 415.0000 20.3715 +75.25000 395.0000 19.8746 +75.30000 351.0000 18.7350 +75.35000 289.0000 17.0000 +75.40000 237.0000 15.3948 +75.45000 206.0000 14.3527 +75.50000 186.0000 13.6382 +75.55000 174.0000 13.1909 +75.60000 168.0000 12.9615 +75.65000 166.0000 12.8841 +75.70000 159.0000 12.6095 +75.75000 151.0000 12.2882 +75.80000 153.0000 12.3693 +75.85000 153.0000 12.3693 +75.90000 151.0000 12.2882 +75.95000 156.0000 12.4900 +76.00000 155.0000 12.4499 +76.05000 153.0000 12.3693 +76.10000 156.0000 12.4900 +76.15000 153.0000 12.3693 +76.20000 154.0000 12.4097 +76.25000 159.0000 12.6095 +76.30000 161.0000 12.6886 +76.35000 161.0000 12.6886 +76.40000 162.0000 12.7279 +76.45000 154.0000 12.4097 +76.50000 152.0000 12.3288 +76.55000 155.0000 12.4499 +76.60000 147.0000 12.1244 +76.65000 149.0000 12.2066 +76.70000 144.0000 12.0000 +76.75000 142.0000 11.9164 +76.80000 143.0000 11.9583 +76.85000 145.0000 12.0416 +76.90000 144.0000 12.0000 +76.95000 142.0000 11.9164 +77.00000 140.0000 11.8322 +77.05000 146.0000 12.0830 +77.10000 141.0000 11.8743 +77.15000 139.0000 11.7898 +77.20000 143.0000 11.9583 +77.25000 139.0000 11.7898 +77.30000 143.0000 11.9583 +77.35000 143.0000 11.9583 +77.40000 143.0000 11.9583 +77.45000 144.0000 12.0000 +77.50000 141.0000 11.8743 +77.55000 140.0000 11.8322 +77.60000 137.0000 11.7047 +77.65000 140.0000 11.8322 +77.70000 144.0000 12.0000 +77.75000 145.0000 12.0416 +77.80000 142.0000 11.9164 +77.85000 141.0000 11.8743 +77.90000 147.0000 12.1244 +77.95000 144.0000 12.0000 +78.00000 149.0000 12.2066 +78.05000 159.0000 12.6095 +78.10000 156.0000 12.4900 +78.15000 171.0000 13.0767 +78.20000 178.0000 13.3417 +78.25000 187.0000 13.6748 +78.30000 198.0000 14.0712 +78.35000 211.0000 14.5258 +78.40000 215.0000 14.6629 +78.45000 206.0000 14.3527 +78.50000 196.0000 14.0000 +78.55000 184.0000 13.5647 +78.60000 170.0000 13.0384 +78.65000 158.0000 12.5698 +78.70000 153.0000 12.3693 +78.75000 153.0000 12.3693 +78.80000 156.0000 12.4900 +78.85000 156.0000 12.4900 +78.90000 156.0000 12.4900 +78.95000 160.0000 12.6491 +79.00000 171.0000 13.0767 +79.05000 176.0000 13.2665 +79.10000 179.0000 13.3791 +79.15000 184.0000 13.5647 +79.20000 186.0000 13.6382 +79.25000 189.0000 13.7477 +79.30000 195.0000 13.9642 +79.35000 199.0000 14.1067 +79.40000 203.0000 14.2478 +79.45000 206.0000 14.3527 +79.50000 216.0000 14.6969 +79.55000 220.0000 14.8324 +79.60000 229.0000 15.1327 +79.65000 235.0000 15.3297 +79.70000 253.0000 15.9060 +79.75000 269.0000 16.4012 +79.80000 284.0000 16.8523 +79.85000 295.0000 17.1756 +79.90000 320.0000 17.8885 +79.95000 364.0000 19.0788 +80.00000 451.0000 21.2368 +80.05000 588.0000 24.2487 +80.10000 775.0000 27.8388 +80.15000 965.0000 31.0644 +80.20000 1079.0000 32.8481 +80.25000 1059.0000 32.5423 +80.30000 928.0000 30.4631 +80.35000 741.0000 27.2213 +80.40000 568.0000 23.8328 +80.45000 440.0000 20.9762 +80.50000 382.0000 19.5448 +80.55000 363.0000 19.0526 +80.60000 370.0000 19.2354 +80.65000 404.0000 20.0998 +80.70000 467.0000 21.6102 +80.75000 518.0000 22.7596 +80.80000 529.0000 23.0000 +80.85000 487.0000 22.0681 +80.90000 429.0000 20.7123 +80.95000 375.0000 19.3649 +81.00000 336.0000 18.3303 +81.05000 333.0000 18.2483 +81.10000 339.0000 18.4120 +81.15000 361.0000 19.0000 +81.20000 364.0000 19.0788 +81.25000 351.0000 18.7350 +81.30000 314.0000 17.7200 +81.35000 285.0000 16.8819 +81.40000 254.0000 15.9374 +81.45000 240.0000 15.4919 +81.50000 227.0000 15.0665 +81.55000 215.0000 14.6629 +81.60000 208.0000 14.4222 +81.65000 213.0000 14.5945 +81.70000 208.0000 14.4222 +81.75000 205.0000 14.3178 +81.80000 216.0000 14.6969 +81.85000 218.0000 14.7648 +81.90000 226.0000 15.0333 +81.95000 244.0000 15.6205 +82.00000 254.0000 15.9374 +82.05000 273.0000 16.5227 +82.10000 280.0000 16.7332 +82.15000 308.0000 17.5499 +82.20000 344.0000 18.5472 +82.25000 368.0000 19.1833 +82.30000 379.0000 19.4679 +82.35000 373.0000 19.3132 +82.40000 331.0000 18.1934 +82.45000 281.0000 16.7631 +82.50000 240.0000 15.4919 +82.55000 207.0000 14.3875 +82.60000 198.0000 14.0712 +82.65000 190.0000 13.7840 +82.70000 180.0000 13.4164 +82.75000 173.0000 13.1529 +82.80000 170.0000 13.0384 +82.85000 165.0000 12.8452 +82.90000 161.0000 12.6886 +82.95000 158.0000 12.5698 +83.00000 160.0000 12.6491 +83.05000 160.0000 12.6491 +83.10000 157.0000 12.5300 +83.15000 157.0000 12.5300 +83.20000 165.0000 12.8452 +83.25000 161.0000 12.6886 +83.30000 166.0000 12.8841 +83.35000 173.0000 13.1529 +83.40000 183.0000 13.5277 +83.45000 196.0000 14.0000 +83.50000 223.0000 14.9332 +83.55000 252.0000 15.8745 +83.60000 283.0000 16.8226 +83.65000 309.0000 17.5784 +83.70000 338.0000 18.3848 +83.75000 359.0000 18.9473 +83.80000 379.0000 19.4679 +83.85000 420.0000 20.4939 +83.90000 478.0000 21.8632 +83.95000 519.0000 22.7816 +84.00000 539.0000 23.2164 +84.05000 525.0000 22.9129 +84.10000 481.0000 21.9317 +84.15000 425.0000 20.6155 +84.20000 371.0000 19.2614 +84.25000 344.0000 18.5472 +84.30000 323.0000 17.9722 +84.35000 352.0000 18.7617 +84.40000 412.0000 20.2978 +84.45000 503.0000 22.4277 +84.50000 602.0000 24.5357 +84.55000 697.0000 26.4008 +84.60000 750.0000 27.3861 +84.65000 742.0000 27.2397 +84.70000 732.0000 27.0555 +84.75000 722.0000 26.8701 +84.80000 737.0000 27.1477 +84.85000 749.0000 27.3679 +84.90000 740.0000 27.2029 +84.95000 681.0000 26.0960 +85.00000 567.0000 23.8118 +85.05000 450.0000 21.2132 +85.10000 347.0000 18.6279 +85.15000 283.0000 16.8226 +85.20000 248.0000 15.7480 +85.25000 228.0000 15.0997 +85.30000 221.0000 14.8661 +85.35000 210.0000 14.4914 +85.40000 206.0000 14.3527 +85.45000 218.0000 14.7648 +85.50000 215.0000 14.6629 +85.55000 208.0000 14.4222 +85.60000 208.0000 14.4222 +85.65000 199.0000 14.1067 +85.70000 188.0000 13.7113 +85.75000 185.0000 13.6015 +85.80000 191.0000 13.8203 +85.85000 191.0000 13.8203 +85.90000 200.0000 14.1421 +85.95000 208.0000 14.4222 +86.00000 206.0000 14.3527 +86.05000 209.0000 14.4568 +86.10000 206.0000 14.3527 +86.15000 208.0000 14.4222 +86.20000 203.0000 14.2478 +86.25000 205.0000 14.3178 +86.30000 206.0000 14.3527 +86.35000 210.0000 14.4914 +86.40000 212.0000 14.5602 +86.45000 210.0000 14.4914 +86.50000 204.0000 14.2829 +86.55000 206.0000 14.3527 +86.60000 214.0000 14.6287 +86.65000 228.0000 15.0997 +86.70000 236.0000 15.3623 +86.75000 245.0000 15.6525 +86.80000 259.0000 16.0935 +86.85000 272.0000 16.4924 +86.90000 294.0000 17.1464 +86.95000 319.0000 17.8606 +87.00000 350.0000 18.7083 +87.05000 368.0000 19.1833 +87.10000 385.0000 19.6214 +87.15000 379.0000 19.4679 +87.20000 347.0000 18.6279 +87.25000 305.0000 17.4642 +87.30000 265.0000 16.2788 +87.35000 246.0000 15.6844 +87.40000 246.0000 15.6844 +87.45000 253.0000 15.9060 +87.50000 290.0000 17.0294 +87.55000 351.0000 18.7350 +87.60000 444.0000 21.0713 +87.65000 552.0000 23.4947 +87.70000 654.0000 25.5734 +87.75000 713.0000 26.7021 +87.80000 717.0000 26.7769 +87.85000 633.0000 25.1595 +87.90000 522.0000 22.8473 +87.95000 422.0000 20.5426 +88.00000 338.0000 18.3848 +88.05000 282.0000 16.7929 +88.10000 247.0000 15.7162 +88.15000 239.0000 15.4596 +88.20000 243.0000 15.5885 +88.25000 257.0000 16.0312 +88.30000 285.0000 16.8819 +88.35000 321.0000 17.9165 +88.40000 347.0000 18.6279 +88.45000 362.0000 19.0263 +88.50000 361.0000 19.0000 +88.55000 338.0000 18.3848 +88.60000 307.0000 17.5214 +88.65000 297.0000 17.2337 +88.70000 295.0000 17.1756 +88.75000 299.0000 17.2916 +88.80000 315.0000 17.7482 +88.85000 309.0000 17.5784 +88.90000 308.0000 17.5499 +88.95000 285.0000 16.8819 +89.00000 252.0000 15.8745 +89.05000 235.0000 15.3297 +89.10000 230.0000 15.1658 +89.15000 215.0000 14.6629 +89.20000 216.0000 14.6969 +89.25000 220.0000 14.8324 +89.30000 215.0000 14.6629 +89.35000 219.0000 14.7986 +89.40000 213.0000 14.5945 +89.45000 213.0000 14.5945 +89.50000 213.0000 14.5945 +89.55000 210.0000 14.4914 +89.60000 211.0000 14.5258 +89.65000 223.0000 14.9332 +89.70000 228.0000 15.0997 +89.75000 241.0000 15.5242 +89.80000 240.0000 15.4919 +89.85000 230.0000 15.1658 +89.90000 225.0000 15.0000 +89.95000 215.0000 14.6629 +90.00000 207.0000 14.3875 +90.05000 207.0000 14.3875 +90.10000 215.0000 14.6629 +90.15000 221.0000 14.8661 +90.20000 243.0000 15.5885 +90.25000 259.0000 16.0935 +90.30000 287.0000 16.9411 +90.35000 295.0000 17.1756 +90.40000 288.0000 16.9706 +90.45000 285.0000 16.8819 +90.50000 284.0000 16.8523 +90.55000 277.0000 16.6433 +90.60000 274.0000 16.5529 +90.65000 284.0000 16.8523 +90.70000 294.0000 17.1464 +90.75000 310.0000 17.6068 +90.80000 324.0000 18.0000 +90.85000 348.0000 18.6548 +90.90000 360.0000 18.9737 +90.95000 348.0000 18.6548 +91.00000 328.0000 18.1108 +91.05000 300.0000 17.3205 +91.10000 265.0000 16.2788 +91.15000 243.0000 15.5885 +91.20000 236.0000 15.3623 +91.25000 234.0000 15.2971 +91.30000 242.0000 15.5563 +91.35000 262.0000 16.1864 +91.40000 301.0000 17.3494 +91.45000 366.0000 19.1311 +91.50000 454.0000 21.3073 +91.55000 575.0000 23.9792 +91.60000 722.0000 26.8701 +91.65000 846.0000 29.0861 +91.70000 914.0000 30.2324 +91.75000 903.0000 30.0500 +91.80000 805.0000 28.3725 +91.85000 687.0000 26.2107 +91.90000 543.0000 23.3024 +91.95000 443.0000 21.0476 +92.00000 377.0000 19.4165 +92.05000 349.0000 18.6815 +92.10000 358.0000 18.9209 +92.15000 387.0000 19.6723 +92.20000 430.0000 20.7364 +92.25000 471.0000 21.7025 +92.30000 505.0000 22.4722 +92.35000 562.0000 23.7065 +92.40000 623.0000 24.9600 +92.45000 681.0000 26.0960 +92.50000 732.0000 27.0555 +92.55000 773.0000 27.8029 +92.60000 776.0000 27.8568 +92.65000 757.0000 27.5136 +92.70000 735.0000 27.1109 +92.75000 727.0000 26.9629 +92.80000 686.0000 26.1916 +92.85000 665.0000 25.7876 +92.90000 639.0000 25.2784 +92.95000 613.0000 24.7588 +93.00000 608.0000 24.6577 +93.05000 624.0000 24.9800 +93.10000 669.0000 25.8650 +93.15000 703.0000 26.5141 +93.20000 697.0000 26.4008 +93.25000 668.0000 25.8457 +93.30000 599.0000 24.4745 +93.35000 529.0000 23.0000 +93.40000 465.0000 21.5639 +93.45000 416.0000 20.3961 +93.50000 378.0000 19.4422 +93.55000 339.0000 18.4120 +93.60000 307.0000 17.5214 +93.65000 275.0000 16.5831 +93.70000 244.0000 15.6205 +93.75000 227.0000 15.0665 +93.80000 216.0000 14.6969 +93.85000 212.0000 14.5602 +93.90000 216.0000 14.6969 +93.95000 217.0000 14.7309 +94.00000 219.0000 14.7986 +94.05000 235.0000 15.3297 +94.10000 242.0000 15.5563 +94.15000 237.0000 15.3948 +94.20000 235.0000 15.3297 +94.25000 237.0000 15.3948 +94.30000 224.0000 14.9666 +94.35000 218.0000 14.7648 +94.40000 224.0000 14.9666 +94.45000 229.0000 15.1327 +94.50000 239.0000 15.4596 +94.55000 243.0000 15.5885 +94.60000 250.0000 15.8114 +94.65000 236.0000 15.3623 +94.70000 223.0000 14.9332 +94.75000 210.0000 14.4914 +94.80000 207.0000 14.3875 +94.85000 196.0000 14.0000 +94.90000 192.0000 13.8564 +94.95000 194.0000 13.9284 +95.00000 206.0000 14.3527 +95.05000 213.0000 14.5945 +95.10000 212.0000 14.5602 +95.15000 229.0000 15.1327 +95.20000 234.0000 15.2971 +95.25000 243.0000 15.5885 +95.30000 267.0000 16.3401 +95.35000 291.0000 17.0587 +95.40000 313.0000 17.6918 +95.45000 350.0000 18.7083 +95.50000 384.0000 19.5959 +95.55000 381.0000 19.5192 +95.60000 368.0000 19.1833 +95.65000 336.0000 18.3303 +95.70000 317.0000 17.8045 +95.75000 282.0000 16.7929 +95.80000 256.0000 16.0000 +95.85000 243.0000 15.5885 +95.90000 242.0000 15.5563 +95.95000 236.0000 15.3623 +96.00000 250.0000 15.8114 +96.05000 270.0000 16.4317 +96.10000 298.0000 17.2627 +96.15000 345.0000 18.5742 +96.20000 402.0000 20.0499 +96.25000 470.0000 21.6795 +96.30000 513.0000 22.6495 +96.35000 522.0000 22.8473 +96.40000 506.0000 22.4944 +96.45000 474.0000 21.7715 +96.50000 430.0000 20.7364 +96.55000 378.0000 19.4422 +96.60000 321.0000 17.9165 +96.65000 305.0000 17.4642 +96.70000 284.0000 16.8523 +96.75000 264.0000 16.2481 +96.80000 253.0000 15.9060 +96.85000 245.0000 15.6525 +96.90000 242.0000 15.5563 +96.95000 249.0000 15.7797 +97.00000 245.0000 15.6525 +97.05000 238.0000 15.4272 +97.10000 244.0000 15.6205 +97.15000 244.0000 15.6205 +97.20000 233.0000 15.2643 +97.25000 228.0000 15.0997 +97.30000 229.0000 15.1327 +97.35000 231.0000 15.1987 +97.40000 226.0000 15.0333 +97.45000 218.0000 14.7648 +97.50000 214.0000 14.6287 +97.55000 210.0000 14.4914 +97.60000 212.0000 14.5602 +97.65000 215.0000 14.6629 +97.70000 215.0000 14.6629 +97.75000 233.0000 15.2643 +97.80000 255.0000 15.9687 +97.85000 276.0000 16.6132 +97.90000 316.0000 17.7764 +97.95000 354.0000 18.8149 +98.00000 382.0000 19.5448 +98.05000 390.0000 19.7484 +98.10000 423.0000 20.5670 +98.15000 436.0000 20.8806 +98.20000 437.0000 20.9045 +98.25000 437.0000 20.9045 +98.30000 421.0000 20.5183 +98.35000 390.0000 19.7484 +98.40000 370.0000 19.2354 +98.45000 325.0000 18.0278 +98.50000 271.0000 16.4621 +98.55000 253.0000 15.9060 +98.60000 231.0000 15.1987 +98.65000 216.0000 14.6969 +98.70000 202.0000 14.2127 +98.75000 201.0000 14.1774 +98.80000 206.0000 14.3527 +98.85000 206.0000 14.3527 +98.90000 210.0000 14.4914 +98.95000 223.0000 14.9332 +99.00000 241.0000 15.5242 +99.05000 261.0000 16.1555 +99.10000 283.0000 16.8226 +99.15000 327.0000 18.0831 +99.20000 340.0000 18.4391 +99.25000 367.0000 19.1572 +99.30000 376.0000 19.3907 +99.35000 359.0000 18.9473 +99.40000 362.0000 19.0263 +99.45000 329.0000 18.1384 +99.50000 304.0000 17.4356 +99.55000 305.0000 17.4642 +99.60000 289.0000 17.0000 +99.65000 291.0000 17.0587 +99.70000 308.0000 17.5499 +99.75000 335.0000 18.3030 +99.80000 378.0000 19.4422 +99.85000 402.0000 20.0499 +99.90000 412.0000 20.2978 +99.95000 409.0000 20.2237 +100.00000 388.0000 19.6977 +100.05000 357.0000 18.8944 +100.10000 335.0000 18.3030 +100.15000 324.0000 18.0000 +100.20000 311.0000 17.6352 +100.25000 318.0000 17.8326 +100.30000 322.0000 17.9444 +100.35000 328.0000 18.1108 +100.40000 314.0000 17.7200 +100.45000 299.0000 17.2916 +100.50000 277.0000 16.6433 +100.55000 243.0000 15.5885 +100.60000 239.0000 15.4596 +100.65000 224.0000 14.9666 +100.70000 220.0000 14.8324 +100.75000 214.0000 14.6287 +100.80000 204.0000 14.2829 +100.85000 211.0000 14.5258 +100.90000 220.0000 14.8324 +100.95000 228.0000 15.0997 +101.00000 241.0000 15.5242 +101.05000 254.0000 15.9374 +101.10000 269.0000 16.4012 +101.15000 300.0000 17.3205 +101.20000 323.0000 17.9722 +101.25000 344.0000 18.5472 +101.30000 363.0000 19.0526 +101.35000 379.0000 19.4679 +101.40000 388.0000 19.6977 +101.45000 400.0000 20.0000 +101.50000 413.0000 20.3224 +101.55000 462.0000 21.4942 +101.60000 524.0000 22.8910 +101.65000 606.0000 24.6171 +101.70000 736.0000 27.1293 +101.75000 832.0000 28.8444 +101.80000 891.0000 29.8496 +101.85000 940.0000 30.6594 +101.90000 927.0000 30.4467 +101.95000 888.0000 29.7993 +102.00000 813.0000 28.5132 +102.05000 730.0000 27.0185 +102.10000 670.0000 25.8844 +102.15000 614.0000 24.7790 +102.20000 548.0000 23.4094 +102.25000 504.0000 22.4499 +102.30000 458.0000 21.4009 +102.35000 416.0000 20.3961 +102.40000 379.0000 19.4679 +102.45000 351.0000 18.7350 +102.50000 328.0000 18.1108 +102.55000 302.0000 17.3781 +102.60000 283.0000 16.8226 +102.65000 255.0000 15.9687 +102.70000 240.0000 15.4919 +102.75000 233.0000 15.2643 +102.80000 215.0000 14.6629 +102.85000 219.0000 14.7986 +102.90000 214.0000 14.6287 +102.95000 211.0000 14.5258 +103.00000 218.0000 14.7648 +103.05000 226.0000 15.0333 +103.10000 246.0000 15.6844 +103.15000 254.0000 15.9374 +103.20000 275.0000 16.5831 +103.25000 288.0000 16.9706 +103.30000 293.0000 17.1172 +103.35000 301.0000 17.3494 +103.40000 308.0000 17.5499 +103.45000 301.0000 17.3494 +103.50000 304.0000 17.4356 +103.55000 317.0000 17.8045 +103.60000 339.0000 18.4120 +103.65000 356.0000 18.8680 +103.70000 398.0000 19.9499 +103.75000 414.0000 20.3470 +103.80000 446.0000 21.1187 +103.85000 475.0000 21.7945 +103.90000 478.0000 21.8632 +103.95000 480.0000 21.9089 +104.00000 492.0000 22.1811 +104.05000 475.0000 21.7945 +104.10000 471.0000 21.7025 +104.15000 511.0000 22.6053 +104.20000 527.0000 22.9565 +104.25000 532.0000 23.0651 +104.30000 537.0000 23.1733 +104.35000 520.0000 22.8035 +104.40000 477.0000 21.8403 +104.45000 429.0000 20.7123 +104.50000 382.0000 19.5448 +104.55000 334.0000 18.2757 +104.60000 302.0000 17.3781 +104.65000 276.0000 16.6132 +104.70000 251.0000 15.8430 +104.75000 230.0000 15.1658 +104.80000 223.0000 14.9332 +104.85000 203.0000 14.2478 +104.90000 208.0000 14.4222 +104.95000 207.0000 14.3875 +105.00000 204.0000 14.2829 +105.05000 211.0000 14.5258 +105.10000 229.0000 15.1327 +105.15000 235.0000 15.3297 +105.20000 244.0000 15.6205 +105.25000 261.0000 16.1555 +105.30000 273.0000 16.5227 +105.35000 276.0000 16.6132 +105.40000 282.0000 16.7929 +105.45000 289.0000 17.0000 +105.50000 278.0000 16.6733 +105.55000 272.0000 16.4924 +105.60000 273.0000 16.5227 +105.65000 264.0000 16.2481 +105.70000 251.0000 15.8430 +105.75000 250.0000 15.8114 +105.80000 251.0000 15.8430 +105.85000 240.0000 15.4919 +105.90000 239.0000 15.4596 +105.95000 238.0000 15.4272 +106.00000 246.0000 15.6844 +106.05000 250.0000 15.8114 +106.10000 262.0000 16.1864 +106.15000 278.0000 16.6733 +106.20000 295.0000 17.1756 +106.25000 302.0000 17.3781 +106.30000 311.0000 17.6352 +106.35000 306.0000 17.4929 +106.40000 298.0000 17.2627 +106.45000 291.0000 17.0587 +106.50000 286.0000 16.9115 +106.55000 276.0000 16.6132 +106.60000 273.0000 16.5227 +106.65000 275.0000 16.5831 +106.70000 278.0000 16.6733 +106.75000 288.0000 16.9706 +106.80000 294.0000 17.1464 +106.85000 286.0000 16.9115 +106.90000 276.0000 16.6132 +106.95000 259.0000 16.0935 +107.00000 250.0000 15.8114 +107.05000 227.0000 15.0665 +107.10000 216.0000 14.6969 +107.15000 207.0000 14.3875 +107.20000 196.0000 14.0000 +107.25000 184.0000 13.5647 +107.30000 187.0000 13.6748 +107.35000 187.0000 13.6748 +107.40000 183.0000 13.5277 +107.45000 185.0000 13.6015 +107.50000 183.0000 13.5277 +107.55000 192.0000 13.8564 +107.60000 198.0000 14.0712 +107.65000 206.0000 14.3527 +107.70000 209.0000 14.4568 +107.75000 228.0000 15.0997 +107.80000 246.0000 15.6844 +107.85000 264.0000 16.2481 +107.90000 297.0000 17.2337 +107.95000 315.0000 17.7482 +108.00000 344.0000 18.5472 +108.05000 371.0000 19.2614 +108.10000 386.0000 19.6469 +108.15000 391.0000 19.7737 +108.20000 405.0000 20.1246 +108.25000 392.0000 19.7990 +108.30000 380.0000 19.4936 +108.35000 386.0000 19.6469 +108.40000 365.0000 19.1050 +108.45000 339.0000 18.4120 +108.50000 320.0000 17.8885 +108.55000 303.0000 17.4069 +108.60000 288.0000 16.9706 +108.65000 283.0000 16.8226 +108.70000 274.0000 16.5529 +108.75000 263.0000 16.2173 +108.80000 265.0000 16.2788 +108.85000 276.0000 16.6132 +108.90000 281.0000 16.7631 +108.95000 286.0000 16.9115 +109.00000 303.0000 17.4069 +109.05000 316.0000 17.7764 +109.10000 332.0000 18.2209 +109.15000 341.0000 18.4662 +109.20000 355.0000 18.8414 +109.25000 358.0000 18.9209 +109.30000 345.0000 18.5742 +109.35000 326.0000 18.0555 +109.40000 323.0000 17.9722 +109.45000 289.0000 17.0000 +109.50000 274.0000 16.5529 +109.55000 275.0000 16.5831 +109.60000 253.0000 15.9060 +109.65000 250.0000 15.8114 +109.70000 261.0000 16.1555 +109.75000 257.0000 16.0312 +109.80000 263.0000 16.2173 +109.85000 253.0000 15.9060 +109.90000 251.0000 15.8430 +109.95000 257.0000 16.0312 +110.00000 251.0000 15.8430 +110.05000 251.0000 15.8430 +110.10000 245.0000 15.6525 +110.15000 237.0000 15.3948 +110.20000 239.0000 15.4596 +110.25000 232.0000 15.2315 +110.30000 232.0000 15.2315 +110.35000 226.0000 15.0333 +110.40000 221.0000 14.8661 +110.45000 227.0000 15.0665 +110.50000 220.0000 14.8324 +110.55000 216.0000 14.6969 +110.60000 205.0000 14.3178 +110.65000 205.0000 14.3178 +110.70000 195.0000 13.9642 +110.75000 190.0000 13.7840 +110.80000 187.0000 13.6748 +110.85000 181.0000 13.4536 +110.90000 195.0000 13.9642 +110.95000 194.0000 13.9284 +111.00000 193.0000 13.8924 +111.05000 195.0000 13.9642 +111.10000 191.0000 13.8203 +111.15000 197.0000 14.0357 +111.20000 200.0000 14.1421 +111.25000 202.0000 14.2127 +111.30000 191.0000 13.8203 +111.35000 189.0000 13.7477 +111.40000 192.0000 13.8564 +111.45000 182.0000 13.4907 +111.50000 187.0000 13.6748 +111.55000 198.0000 14.0712 +111.60000 215.0000 14.6629 +111.65000 217.0000 14.7309 +111.70000 218.0000 14.7648 +111.75000 220.0000 14.8324 +111.80000 222.0000 14.8997 +111.85000 218.0000 14.7648 +111.90000 214.0000 14.6287 +111.95000 215.0000 14.6629 +112.00000 214.0000 14.6287 +112.05000 205.0000 14.3178 +112.10000 199.0000 14.1067 +112.15000 204.0000 14.2829 +112.20000 201.0000 14.1774 +112.25000 189.0000 13.7477 +112.30000 195.0000 13.9642 +112.35000 203.0000 14.2478 +112.40000 204.0000 14.2829 +112.45000 204.0000 14.2829 +112.50000 210.0000 14.4914 +112.55000 204.0000 14.2829 +112.60000 197.0000 14.0357 +112.65000 192.0000 13.8564 +112.70000 200.0000 14.1421 +112.75000 205.0000 14.3178 +112.80000 203.0000 14.2478 +112.85000 213.0000 14.5945 +112.90000 226.0000 15.0333 +112.95000 235.0000 15.3297 +113.00000 250.0000 15.8114 +113.05000 267.0000 16.3401 +113.10000 295.0000 17.1756 +113.15000 338.0000 18.3848 +113.20000 370.0000 19.2354 +113.25000 410.0000 20.2485 +113.30000 427.0000 20.6640 +113.35000 433.0000 20.8087 +113.40000 449.0000 21.1896 +113.45000 431.0000 20.7605 +113.50000 415.0000 20.3715 +113.55000 402.0000 20.0499 +113.60000 376.0000 19.3907 +113.65000 340.0000 18.4391 +113.70000 316.0000 17.7764 +113.75000 289.0000 17.0000 +113.80000 283.0000 16.8226 +113.85000 299.0000 17.2916 +113.90000 300.0000 17.3205 +113.95000 301.0000 17.3494 +114.00000 310.0000 17.6068 +114.05000 329.0000 18.1384 +114.10000 342.0000 18.4932 +114.15000 354.0000 18.8149 +114.20000 360.0000 18.9737 +114.25000 359.0000 18.9473 +114.30000 355.0000 18.8414 +114.35000 333.0000 18.2483 +114.40000 322.0000 17.9444 +114.45000 294.0000 17.1464 +114.50000 264.0000 16.2481 +114.55000 270.0000 16.4317 +114.60000 259.0000 16.0935 +114.65000 244.0000 15.6205 +114.70000 242.0000 15.5563 +114.75000 229.0000 15.1327 +114.80000 234.0000 15.2971 +114.85000 250.0000 15.8114 +114.90000 261.0000 16.1555 +114.95000 263.0000 16.2173 +115.00000 283.0000 16.8226 +115.05000 307.0000 17.5214 +115.10000 339.0000 18.4120 +115.15000 360.0000 18.9737 +115.20000 387.0000 19.6723 +115.25000 437.0000 20.9045 +115.30000 449.0000 21.1896 +115.35000 472.0000 21.7256 +115.40000 477.0000 21.8403 +115.45000 472.0000 21.7256 +115.50000 463.0000 21.5174 +115.55000 452.0000 21.2603 +115.60000 433.0000 20.8087 +115.65000 402.0000 20.0499 +115.70000 364.0000 19.0788 +115.75000 313.0000 17.6918 +115.80000 308.0000 17.5499 +115.85000 285.0000 16.8819 +115.90000 264.0000 16.2481 +115.95000 253.0000 15.9060 +116.00000 253.0000 15.9060 +116.05000 264.0000 16.2481 +116.10000 264.0000 16.2481 +116.15000 265.0000 16.2788 +116.20000 263.0000 16.2173 +116.25000 269.0000 16.4012 +116.30000 284.0000 16.8523 +116.35000 284.0000 16.8523 +116.40000 288.0000 16.9706 +116.45000 275.0000 16.5831 +116.50000 273.0000 16.5227 +116.55000 266.0000 16.3095 +116.60000 252.0000 15.8745 +116.65000 249.0000 15.7797 +116.70000 234.0000 15.2971 +116.75000 232.0000 15.2315 +116.80000 218.0000 14.7648 +116.85000 224.0000 14.9666 +116.90000 244.0000 15.6205 +116.95000 240.0000 15.4919 +117.00000 233.0000 15.2643 +117.05000 244.0000 15.6205 +117.10000 250.0000 15.8114 +117.15000 270.0000 16.4317 +117.20000 270.0000 16.4317 +117.25000 274.0000 16.5529 +117.30000 291.0000 17.0587 +117.35000 274.0000 16.5529 +117.40000 268.0000 16.3707 +117.45000 259.0000 16.0935 +117.50000 271.0000 16.4621 +117.55000 268.0000 16.3707 +117.60000 264.0000 16.2481 +117.65000 261.0000 16.1555 +117.70000 258.0000 16.0624 +117.75000 249.0000 15.7797 +117.80000 250.0000 15.8114 +117.85000 255.0000 15.9687 +117.90000 268.0000 16.3707 +117.95000 284.0000 16.8523 +118.00000 283.0000 16.8226 +118.05000 275.0000 16.5831 +118.10000 297.0000 17.2337 +118.15000 313.0000 17.6918 +118.20000 334.0000 18.2757 +118.25000 339.0000 18.4120 +118.30000 338.0000 18.3848 +118.35000 353.0000 18.7883 +118.40000 377.0000 19.4165 +118.45000 405.0000 20.1246 +118.50000 412.0000 20.2978 +118.55000 427.0000 20.6640 +118.60000 439.0000 20.9523 +118.65000 435.0000 20.8567 +118.70000 447.0000 21.1424 +118.75000 429.0000 20.7123 +118.80000 414.0000 20.3470 +118.85000 381.0000 19.5192 +118.90000 364.0000 19.0788 +118.95000 345.0000 18.5742 +119.00000 335.0000 18.3030 +119.05000 305.0000 17.4642 +119.10000 298.0000 17.2627 +119.15000 292.0000 17.0880 +119.20000 286.0000 16.9115 +119.25000 276.0000 16.6132 +119.30000 301.0000 17.3494 +119.35000 309.0000 17.5784 +119.40000 328.0000 18.1108 +119.45000 347.0000 18.6279 +119.50000 358.0000 18.9209 +119.55000 364.0000 19.0788 +119.60000 383.0000 19.5704 +119.65000 373.0000 19.3132 +119.70000 396.0000 19.8997 +119.75000 385.0000 19.6214 +119.80000 387.0000 19.6723 +119.85000 370.0000 19.2354 +119.90000 376.0000 19.3907 +119.95000 354.0000 18.8149 +120.00000 340.0000 18.4391 +120.05000 338.0000 18.3848 +120.10000 349.0000 18.6815 +120.15000 354.0000 18.8149 +120.20000 338.0000 18.3848 +120.25000 334.0000 18.2757 +120.30000 329.0000 18.1384 +120.35000 331.0000 18.1934 +120.40000 338.0000 18.3848 +120.45000 335.0000 18.3030 +120.50000 318.0000 17.8326 +120.55000 315.0000 17.7482 +120.60000 314.0000 17.7200 +120.65000 288.0000 16.9706 +120.70000 294.0000 17.1464 +120.75000 270.0000 16.4317 +120.80000 252.0000 15.8745 +120.85000 271.0000 16.4621 +120.90000 277.0000 16.6433 +120.95000 282.0000 16.7929 +121.00000 285.0000 16.8819 +121.05000 292.0000 17.0880 +121.10000 308.0000 17.5499 +121.15000 299.0000 17.2916 +121.20000 294.0000 17.1464 +121.25000 293.0000 17.1172 +121.30000 296.0000 17.2047 +121.35000 308.0000 17.5499 +121.40000 287.0000 16.9411 +121.45000 295.0000 17.1756 +121.50000 312.0000 17.6635 +121.55000 304.0000 17.4356 +121.60000 313.0000 17.6918 +121.65000 314.0000 17.7200 +121.70000 309.0000 17.5784 +121.75000 320.0000 17.8885 +121.80000 312.0000 17.6635 +121.85000 322.0000 17.9444 +121.90000 340.0000 18.4391 +121.95000 340.0000 18.4391 +122.00000 329.0000 18.1384 +122.05000 333.0000 18.2483 +122.10000 341.0000 18.4662 +122.15000 345.0000 18.5742 +122.20000 340.0000 18.4391 +122.25000 351.0000 18.7350 +122.30000 355.0000 18.8414 +122.35000 364.0000 19.0788 +122.40000 374.0000 19.3391 +122.45000 380.0000 19.4936 +122.50000 401.0000 20.0250 +122.55000 407.0000 20.1742 +122.60000 429.0000 20.7123 +122.65000 438.0000 20.9284 +122.70000 458.0000 21.4009 +122.75000 455.0000 21.3307 +122.80000 450.0000 21.2132 +122.85000 448.0000 21.1660 +122.90000 456.0000 21.3542 +122.95000 450.0000 21.2132 +123.00000 432.0000 20.7846 +123.05000 436.0000 20.8806 +123.10000 439.0000 20.9523 +123.15000 443.0000 21.0476 +123.20000 389.0000 19.7231 +123.25000 408.0000 20.1990 +123.30000 369.0000 19.2094 +123.35000 372.0000 19.2873 +123.40000 354.0000 18.8149 +123.45000 332.0000 18.2209 +123.50000 314.0000 17.7200 +123.55000 278.0000 16.6733 +123.60000 274.0000 16.5529 +123.65000 256.0000 16.0000 +123.70000 237.0000 15.3948 +123.75000 236.0000 15.3623 +123.80000 206.0000 14.3527 +123.85000 204.0000 14.2829 +123.90000 207.0000 14.3875 +123.95000 202.0000 14.2127 +124.00000 199.0000 14.1067 +124.05000 214.0000 14.6287 +124.10000 224.0000 14.9666 +124.15000 206.0000 14.3527 +124.20000 237.0000 15.3948 +124.25000 221.0000 14.8661 +124.30000 216.0000 14.6969 +124.35000 254.0000 15.9374 +124.40000 240.0000 15.4919 +124.45000 279.0000 16.7033 +124.50000 281.0000 16.7631 +124.55000 291.0000 17.0587 +124.60000 314.0000 17.7200 +124.65000 313.0000 17.6918 +124.70000 319.0000 17.8606 +124.75000 335.0000 18.3030 +124.80000 333.0000 18.2483 +124.85000 337.0000 18.3576 +124.90000 351.0000 18.7350 +124.95000 349.0000 18.6815 +125.00000 329.0000 18.1384 diff --git a/examples/Fitting_multiphase.ipynb b/examples/Fitting_multiphase.ipynb new file mode 100644 index 00000000..0de056a9 --- /dev/null +++ b/examples/Fitting_multiphase.ipynb @@ -0,0 +1,526 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Working with multiple phases" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook will explain how to load, access and fit multiple phases" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Import Python packages" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# esyScience, technique-independent\n", + "from easyCore import np\n", + "from easyCore.Fitting.Fitting import Fitter\n", + "\n", + "# esyScience, diffraction\n", + "from easyDiffractionLib import Phases\n", + "from easyDiffractionLib.sample import Sample as Job\n", + "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", + "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", + "\n", + "# Vizualization\n", + "import py3Dmol\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Sample ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Show a CIF file content" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cif_fname = 'multiphase.cif'\n", + "\n", + "with open(cif_fname, 'r') as f:\n", + " content = f.read()\n", + " \n", + "print(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " This cif file contains two phases of Si3N4: `alpha` and `beta`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load structure from a CIF file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "phases = Phases.from_cif_file(cif_fname)\n", + "phase_alpha = phases[0]\n", + "phase_beta = phases[1]\n", + "\n", + "print(phases)\n", + "print(phase_alpha)\n", + "print(phase_beta)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualise the first phase" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "structure = py3Dmol.view()\n", + "structure.addModel(phase_alpha.to_cif_str(), 'cif')\n", + "structure.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol','radius': 0.1}})\n", + "structure.addUnitCell()\n", + "structure.replicateUnitCell(2,2,1)\n", + "structure.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualise the second phase" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "structure_2 = py3Dmol.view()\n", + "structure_2.addModel(phase_beta.to_cif_str(), 'cif')\n", + "structure_2.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol','radius': 0.1}})\n", + "structure_2.addUnitCell()\n", + "structure_2.replicateUnitCell(2,2,1)\n", + "structure_2.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Experiment ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load the measured data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "meas_fname = '3T2@LLB.xye'\n", + "meas_x, meas_y, meas_e = np.loadtxt(meas_fname, unpack=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualize the measured data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## --- Analysis ---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Create job with default parameters for the 1D powder neutron diffraction experiment with constant wavelength " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calculator = Calculator(interface_name='CrysPy')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"Current calculator engine: {calculator.current_interface_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job = Job(phases=phases, parameters=CWParams.default(), calculator=calculator)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Generate the calculated data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note**: *Calculated data corresponds to the sum of all phases*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualize both the measured and calculated data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### We can also view separate phases contributions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "y_phase_1 = calculator.get_calculated_y_for_phase(0)\n", + "y_phase_2 = calculator.get_calculated_y_for_phase(1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib widget\n", + "plt.plot(meas_x, y_phase_1, label='Si3N4 alpha')\n", + "plt.plot(meas_x, y_phase_2, label='Si3N4 beta')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set scale manually, for each phase separately" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "phases[0].scale = 92.\n", + "phases[1].scale = 28.6" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set wavelength manually" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job.parameters.wavelength = 1.2251" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "calc_y_cryspy = calculator.get_total_y_for_phases()[1]\n", + "calc_y_cryspy = calculator.get_calculated_y_for_phase(1)\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set background points manually" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bkg = PointBackground(linked_experiment='PbSO4')\n", + "\n", + "bkg.append(BackgroundPoint.from_pars(meas_x[0], 200))\n", + "bkg.append(BackgroundPoint.from_pars(meas_x[-1], 250))\n", + "\n", + "job.set_background(bkg)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Define parameters to optimize" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "job.phases[0].scale.fixed = False\n", + "job.phases[1].scale.fixed = False\n", + "job.pattern.zero_shift.fixed = False\n", + "job.parameters.resolution_u.fixed = False\n", + "job.parameters.resolution_v.fixed = False\n", + "job.parameters.resolution_w.fixed = False\n", + "job.backgrounds[0][0].y.fixed = False\n", + "job.backgrounds[0][1].y.fixed = False" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(job.phases[0].scale)\n", + "print(job.phases[1].scale)\n", + "print(job.pattern.zero_shift)\n", + "print(job.parameters.resolution_u)\n", + "print(job.parameters.resolution_v)\n", + "print(job.parameters.resolution_w)\n", + "print(job.backgrounds[0][0])\n", + "print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Initalize the fitting engine and perform the fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fitter = Fitter(job, calculator.fit_func)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"Available minimizers: {fitter.available_engines}\")\n", + "print(f\"Current minimizer: {fitter.current_engine.name}\")\n", + "print(f\"Available methods of current minimizers: {fitter.available_methods()}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, \n", + " method='least_squares', minimizer_kwargs={'diff_step': 1e-5})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"The fit has been successful: {}\".format(result.success))\n", + "if result.success: \n", + " print(\"The gooodness of fit (chi2) is: {}\".format(result.reduced_chi))\n", + " print(job.pattern.scale)\n", + " print(job.pattern.zero_shift)\n", + " print(job.parameters.resolution_u)\n", + " print(job.parameters.resolution_v)\n", + " print(job.parameters.resolution_w)\n", + " print(job.backgrounds[0][0])\n", + " print(job.backgrounds[0][1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_y_cryspy = calculator.fit_func(meas_x)\n", + "\n", + "%matplotlib widget\n", + "plt.plot(meas_x, meas_y, label='Imeas')\n", + "plt.plot(meas_x, calc_y_cryspy, label='Icalc (CrysPy)')\n", + "plt.plot(meas_x, meas_y-calc_y_cryspy, label='Imeas - Icalc (CrysPy)')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/multiphase.cif b/examples/multiphase.cif new file mode 100644 index 00000000..72e2f82a --- /dev/null +++ b/examples/multiphase.cif @@ -0,0 +1,53 @@ +data_Si3N4_alpha + +_space_group_name_H-M_alt 'P 3 1 c' + +_cell_length_a 7.751856 +_cell_length_b 7.751856 +_cell_length_c 5.619506 +_cell_angle_alpha 90.0 +_cell_angle_beta 90.0 +_cell_angle_gamma 120.0 + +loop_ + _atom_site_label + _atom_site_type_symbol + _atom_site_occupancy + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_adp_type + _atom_site_U_iso_or_equiv + Si1 Si 1.0 0.08185 0.51180 0.65958 Uiso 0.01 + Si2 Si 1.0 0.25323 0.16763 0.45090 Uiso 0.01 + N1 N 1.0 0.65512 0.61058 0.43269 Uiso 0.01 + N2 N 1.0 0.31514 0.31865 0.69801 Uiso 0.01 + N3 N 1.0 0.33333 0.66667 0.60394 Uiso 0.01 + N4 N 1.0 0.00000 0.00000 0.45292 Uiso 0.01 + +data_Si3N4_beta + +_space_group_name_H-M_alt 'P 63/m' + +_cell_length_a 7.605376 +_cell_length_b 7.605376 +_cell_length_c 2.907065 +_cell_angle_alpha 90.0 +_cell_angle_beta 90.0 +_cell_angle_gamma 120.0 + +loop_ + _atom_site_label + _atom_site_type_symbol + _atom_site_occupancy + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_adp_type + _atom_site_U_iso_or_equiv + Si Si 1.0 0.17522 0.76977 0.25000 Uiso 0.01 + N1 N 1.0 0.33131 0.03120 0.25000 Uiso 0.01 + N2 N 1.0 0.33333 0.66667 0.25000 Uiso 0.01 + + + From 4b0f77a1b2f6ae16b3f511171657f400f381a693 Mon Sep 17 00:00:00 2001 From: Piotr R Date: Fri, 21 Jan 2022 12:14:52 +0100 Subject: [PATCH 247/312] fix a "typo". --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 83ff6f45..d17caff6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,8 +35,8 @@ python = "^3.7, <3.9" cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } CFML = '^0.0.1' GSASII = '^0.0.1' -easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'develop' } -easyCrystallography = { git = 'https://github.com/easyScience/easyCore.git', rev = 'easyCrystallography_Split' } +easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'easyCrystallography_Split' } +easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'develop' } [tool.poetry.dev-dependencies] pytest = "^5.2" From 70a478e3aef1a1238e436923a36ebc7e4b6f40e8 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 26 Jan 2022 16:06:02 +0100 Subject: [PATCH 248/312] fixed method signatures. --- easyDiffractionLib/Interfaces/CFML.py | 2 +- easyDiffractionLib/Interfaces/GSASII.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 6ec24cd7..b592e3cd 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -153,7 +153,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False) -> dict: return self.calculator.get_hkl(x_array) def dump_cif(self, *args, **kwargs): diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 41a2fa54..2ed6d3a5 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -141,7 +141,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False) -> dict: return self.calculator.get_hkl(x_array) def dump_cif(self, *args, **kwargs): From ee44d4a3414ec2a13ccad81453d42b875fd724e2 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Tue, 1 Feb 2022 11:26:06 +0100 Subject: [PATCH 249/312] Update requirements --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 365b5513..3df56d3c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ cryspy @ git+https://github.com/ikibalin/cryspy.git@bravis_type_fix --extra-index-url https://easyscience.github.io/pypi -easysciencecore>=0.1.1a0 +easysciencecore @ git+https://github.com/easyScience/easyCore.git@easyCrystallography_Split +easycrystallography @ git+https://github.com/easyScience/easyCrystallography.git@develop cfml==0.0.1 gsasii==0.0.1 From da41bb9fa050e967707eaa0f38476b39d14593cc Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Tue, 1 Feb 2022 13:20:25 +0100 Subject: [PATCH 250/312] Test pre-release branch of easyCore --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c43abd8e..9847ef6d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,7 @@ python = "^3.7, <3.9" cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } CFML = '^0.0.1' GSASII = '^0.0.1' -easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'easyCrystallography_Split' } +easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'pre-release' } easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'develop' } [tool.poetry.dev-dependencies] From b6ae64e9eed36b1eb00e6bfaf5937919a0183167 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 2 Feb 2022 13:10:23 +0100 Subject: [PATCH 251/312] Updated copyright year --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index c0f7977a..111a1bb3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2021, European Spallation Source +Copyright (c) 2021-2022, European Spallation Source All rights reserved. Redistribution and use in source and binary forms, with or without From 38b59849589a500f24547738221f66a9a752c2c2 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 2 Feb 2022 14:35:54 +0100 Subject: [PATCH 252/312] Try to use the release version of easyCore --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9847ef6d..b7fd6ab4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ repo = 'easyDiffractionLib' [tool.poetry] name = "easyDiffraction" -version = "0.0.2" +version = "0.0.3" description = 'Making diffraction data analysis and modelling easy.' license = "BSD-3-Clause" authors = ["Simon Ward", "Andrew Sazonov"] @@ -35,7 +35,7 @@ python = "^3.7, <3.9" cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } CFML = '^0.0.1' GSASII = '^0.0.1' -easyScienceCore = { git = 'https://github.com/easyScience/easyCore.git', rev = 'pre-release' } +easyScienceCore = '>=0.2.0' easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'develop' } [tool.poetry.dev-dependencies] From 1eb672612bf4ac392446805f11e04a1383c8f2ff Mon Sep 17 00:00:00 2001 From: Piotr R Date: Fri, 4 Feb 2022 14:29:45 +0100 Subject: [PATCH 253/312] update poetry force rebuild for testing easyCrystallography branch --- .github/workflows/pypi_publish.yml | 2 +- .github/workflows/self_publish_alpha.yml | 2 +- .github/workflows/unit_test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pypi_publish.yml b/.github/workflows/pypi_publish.yml index 81ac43ae..30933806 100644 --- a/.github/workflows/pypi_publish.yml +++ b/.github/workflows/pypi_publish.yml @@ -18,7 +18,7 @@ jobs: uses: actions/setup-python@v2 with: python-version: '3.8' - - uses: Gr1N/setup-poetry@v4 + - uses: Gr1N/setup-poetry@v7 - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/self_publish_alpha.yml b/.github/workflows/self_publish_alpha.yml index 56ee842b..75386634 100644 --- a/.github/workflows/self_publish_alpha.yml +++ b/.github/workflows/self_publish_alpha.yml @@ -17,7 +17,7 @@ jobs: with: python-version: 3.8 - - uses: Gr1N/setup-poetry@v4 + - uses: Gr1N/setup-poetry@v7 - name: Install and build run: | poetry version patch diff --git a/.github/workflows/unit_test.yml b/.github/workflows/unit_test.yml index e10c30a0..7e594801 100644 --- a/.github/workflows/unit_test.yml +++ b/.github/workflows/unit_test.yml @@ -47,7 +47,7 @@ jobs: echo "pythonLocation: $pythonLocation" - name: Set up python packages manager - uses: Gr1N/setup-poetry@v4 + uses: Gr1N/setup-poetry@v7 - name: Create venv and install dependences run: poetry update From 079474232e10badb3da2e8ceb4470df6a9b298b9 Mon Sep 17 00:00:00 2001 From: Piotr R Date: Fri, 4 Feb 2022 20:41:18 +0100 Subject: [PATCH 254/312] Fetch easyCrystallography from pypi --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index b7fd6ab4..419712d7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fi CFML = '^0.0.1' GSASII = '^0.0.1' easyScienceCore = '>=0.2.0' -easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'develop' } +easyCrystallography = '>=0.1.0' [tool.poetry.dev-dependencies] pytest = "^5.2" From 7c46415d696db02f6a952d11dbc975b8cbb0a649 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 16 Mar 2022 14:02:20 +0100 Subject: [PATCH 255/312] Remove multiphase temp files on CFML calculator initialize #190 (#36) --- easyDiffractionLib/Interfaces/CFML.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index b592e3cd..cff1ec37 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -2,6 +2,7 @@ __version__ = "0.0.2" import os +import glob from easyCore import borg, np from easyCore.Objects.Inferface import ItemContainer @@ -159,6 +160,8 @@ def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded def dump_cif(self, *args, **kwargs): if self._filename is None: return + # delete preexising cif files + self.remove_cif() with open(self._filename, "w") as fid: fid.write(str(self._phase.cif)) base, file = os.path.split(self._filename) @@ -168,6 +171,20 @@ def dump_cif(self, *args, **kwargs): with open(f"{os.path.join(base, file)}_{idx}.{ext}", "w") as fid: fid.write(str(phase.cif)) + def remove_cif(self): + if self._filename is None: + return + base, file = os.path.split(self._filename) + ext = file[-3:] + file = file[:-4] + file_wildcarded = os.path.join(base, file) + '_*.' + ext + fileList = glob.glob(file_wildcarded) + for f in fileList: + try: + os.remove(f) + except OSError: + pass + def __createModel(self, model): self._filename = model.filename self.calculator.filename = model.filename From 312646c8789c6605d3eec4214ffb82bf54dbac1a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Mar 2022 14:02:39 +0100 Subject: [PATCH 256/312] Update pytest requirement from ^5.2 to ^7.1 (#37) Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.0...7.1.0) --- updated-dependencies: - dependency-name: pytest dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 419712d7..9ace905d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ easyScienceCore = '>=0.2.0' easyCrystallography = '>=0.1.0' [tool.poetry.dev-dependencies] -pytest = "^5.2" +pytest = "^7.1" toml = "^0.10" requests = '^2.24' py3Dmol = "^1.7.0" From dd971003a1c1c6ffbf02bf827f27680896a42dbe Mon Sep 17 00:00:00 2001 From: Andrew McCluskey Date: Wed, 16 Mar 2022 14:04:34 +0100 Subject: [PATCH 257/312] Update pyproject.toml (#38) Change classifier to reflect BSD --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 9ace905d..237c78dd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", # Define that your audience are developers "Topic :: Scientific/Engineering :: Physics", - "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", # Again, pick a license + "License :: OSI Approved :: BSD License", # Again, pick a license "Programming Language :: Python :: 3 :: Only", ] include = ["CHANGELOG.md"] From 28e2ec2ef108fb5288ea65e410d324f784207e3d Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Thu, 17 Mar 2022 09:51:04 +0100 Subject: [PATCH 258/312] added polarization and efficiency to instrument parameters --- easyDiffractionLib/Profiles/P1D.py | 65 ++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index 59117fb6..f5710c7d 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -193,6 +193,22 @@ class Instrument1DCWParameters(BaseObj): "value": 0.0, "fixed": True, }, + "polarization": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "polarization", + "value": 0.0, + "fixed": True, + }, + "polarizing_efficiency": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "polarizing_efficiency", + "value": 100, + "fixed": True, + }, } def __init__( @@ -203,6 +219,8 @@ def __init__( resolution_w: Parameter, resolution_x: Parameter, resolution_y: Parameter, + polarization: Parameter, + polarizing_efficiency: Parameter, interface=None, ): super().__init__( @@ -213,6 +231,8 @@ def __init__( resolution_w=resolution_w, resolution_x=resolution_x, resolution_y=resolution_y, + polarization=polarization, + polarizing_efficiency=polarizing_efficiency, ) self.name = self._name self.interface = interface @@ -226,6 +246,8 @@ def from_pars( resolution_w: float = _defaults["resolution_w"]["value"], resolution_x: float = _defaults["resolution_x"]["value"], resolution_y: float = _defaults["resolution_y"]["value"], + polarization: float = _defaults["polarization"]["value"], + polarizing_efficiency: float = _defaults["polarizing_efficiency"]["value"], ): defaults = deepcopy(cls._defaults) defaults["wavelength"]["value"] = wavelength @@ -240,6 +262,10 @@ def from_pars( resolution_x = _decoder.process_decoded(defaults["resolution_x"]) defaults["resolution_y"]["value"] = resolution_y resolution_y = _decoder.process_decoded(defaults["resolution_y"]) + defaults["polarization"]["value"] = polarization + polarization = _decoder.process_decoded(defaults["polarization"]) + defaults["polarizing_efficiency"]["value"] = polarizing_efficiency + polarizing_efficiency = _decoder.process_decoded(defaults["polarizing_efficiency"]) return cls( wavelength=wavelength, resolution_u=resolution_u, @@ -247,6 +273,8 @@ def from_pars( resolution_w=resolution_w, resolution_x=resolution_x, resolution_y=resolution_y, + polarization=polarization, + polarizing_efficiency=polarizing_efficiency, ) @classmethod @@ -258,6 +286,8 @@ def default(cls): resolution_w = _decoder.process_decoded(defaults["resolution_w"]) resolution_x = _decoder.process_decoded(defaults["resolution_x"]) resolution_y = _decoder.process_decoded(defaults["resolution_y"]) + polarization = _decoder.process_decoded(defaults["polarization"]) + polarizing_efficiency = _decoder.process_decoded(defaults["polarizing_efficiency"]) return cls( wavelength=wavelength, resolution_u=resolution_u, @@ -265,6 +295,8 @@ def default(cls): resolution_w=resolution_w, resolution_x=resolution_x, resolution_y=resolution_y, + polarization=polarization, + polarizing_efficiency=polarizing_efficiency, ) @@ -382,6 +414,22 @@ class Instrument1DTOFParameters(BaseObj): "value": 0.00224, "fixed": True, }, + "polarization": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "polarization", + "value": 0.0, + "fixed": True, + }, + "polarizing_efficiency": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", + "@version": "0.0.1", + "name": "polarizing_efficiency", + "value": 100, + "fixed": True, + }, } def __init__( @@ -399,6 +447,8 @@ def __init__( alpha1: Parameter, beta0: Parameter, beta1: Parameter, + polarization: Parameter, + polarizing_efficiency: Parameter, interface=None, ): super().__init__( @@ -416,6 +466,8 @@ def __init__( alpha1=alpha1, beta0=beta0, beta1=beta1, + polarization=polarization, + polarizing_efficiency=polarizing_efficiency, ) self.name = self._name self.interface = interface @@ -436,6 +488,8 @@ def from_pars( alpha1: float = _defaults["alpha1"]["value"], beta0: float = _defaults["beta0"]["value"], beta1: float = _defaults["beta1"]["value"], + polarization: float = _defaults["polarization"]["value"], + polarizing_efficiency: float = _defaults["polarizing_efficiency"]["value"], ): defaults = deepcopy(cls._defaults) defaults["ttheta_bank"]["value"] = ttheta_bank @@ -464,6 +518,10 @@ def from_pars( beta0 = _decoder.process_decoded(defaults["beta0"]) defaults["beta1"]["value"] = beta1 beta1 = _decoder.process_decoded(defaults["beta1"]) + defaults["polarization"]["value"] = polarization + polarization = _decoder.process_decoded(defaults["polarization"]) + defaults["polarizing_efficiency"]["value"] = polarizing_efficiency + polarizing_efficiency = _decoder.process_decoded(defaults["polarizing_efficiency"]) return cls( ttheta_bank=ttheta_bank, @@ -479,6 +537,8 @@ def from_pars( alpha1=alpha1, beta0=beta0, beta1=beta1, + polarization=polarization, + polarizing_efficiency=polarizing_efficiency, ) @classmethod @@ -497,6 +557,9 @@ def default(cls): alpha1 = _decoder.process_decoded(defaults["alpha1"]) beta0 = _decoder.process_decoded(defaults["beta0"]) beta1 = _decoder.process_decoded(defaults["beta1"]) + polarization = _decoder.process_decoded(defaults["polarization"]) + polarizing_efficiency = _decoder.process_decoded(defaults["polarizing_efficiency"]) + return cls( ttheta_bank=ttheta_bank, dtt1=dtt1, @@ -511,6 +574,8 @@ def default(cls): alpha1=alpha1, beta0=beta0, beta1=beta1, + polarization=polarization, + polarizing_efficiency=polarizing_efficiency, ) From 47316dc4e6ca5ee55ff3692481f5665cabd8342b Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 22 Mar 2022 16:07:07 +0100 Subject: [PATCH 259/312] More polarization work and re-write of interface --- easyDiffractionLib/Interfaces/CFML.py | 2 +- easyDiffractionLib/Interfaces/GSASII.py | 2 +- easyDiffractionLib/Interfaces/__init__.py | 7 + easyDiffractionLib/Interfaces/cryspy.py | 35 +- easyDiffractionLib/Interfaces/cryspyV2.py | 445 +++++++++++++++ .../Interfaces/interfaceTemplate.py | 17 +- easyDiffractionLib/Jobs.py | 6 + easyDiffractionLib/Profiles/P1D.py | 506 +++++++++--------- .../{Calculators => calculators}/CFML.py | 0 .../{Calculators => calculators}/GSASII.py | 0 .../{Calculators => calculators}/__init__.py | 0 .../{Calculators => calculators}/cryspy.py | 5 + .../Backgrounds => components}/__init__.py | 0 easyDiffractionLib/components/polarization.py | 15 + .../Backgrounds/Background.py | 0 .../Backgrounds/Factorial.py | 0 .../Backgrounds/Point.py | 0 .../Backgrounds}/__init__.py | 0 .../Experiments/Experiment.py | 0 .../Experiments/Pattern.py | 4 +- .../Experiments}/__init__.py | 0 easyDiffractionLib/elements/__init__.py | 2 + easyDiffractionLib/sample.py | 10 +- tests/integration_tests/fit_script.py | 6 +- 24 files changed, 797 insertions(+), 265 deletions(-) create mode 100644 easyDiffractionLib/Interfaces/cryspyV2.py rename easyDiffractionLib/{Calculators => calculators}/CFML.py (100%) rename easyDiffractionLib/{Calculators => calculators}/GSASII.py (100%) rename easyDiffractionLib/{Calculators => calculators}/__init__.py (100%) rename easyDiffractionLib/{Calculators => calculators}/cryspy.py (99%) rename easyDiffractionLib/{Elements/Backgrounds => components}/__init__.py (100%) create mode 100644 easyDiffractionLib/components/polarization.py rename easyDiffractionLib/{Elements => elements}/Backgrounds/Background.py (100%) rename easyDiffractionLib/{Elements => elements}/Backgrounds/Factorial.py (100%) rename easyDiffractionLib/{Elements => elements}/Backgrounds/Point.py (100%) rename easyDiffractionLib/{Elements/Experiments => elements/Backgrounds}/__init__.py (100%) rename easyDiffractionLib/{Elements => elements}/Experiments/Experiment.py (100%) rename easyDiffractionLib/{Elements => elements}/Experiments/Pattern.py (94%) rename easyDiffractionLib/{Elements => elements/Experiments}/__init__.py (100%) create mode 100644 easyDiffractionLib/elements/__init__.py diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index cff1ec37..5ad02cc6 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -10,7 +10,7 @@ from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters -from easyDiffractionLib.Calculators.CFML import CFML as CFML_calc +from easyDiffractionLib.calculators.CFML import CFML as CFML_calc class CFML(InterfaceTemplate): diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 2ed6d3a5..b0819147 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -4,7 +4,7 @@ from easyCore import borg, np from ..Interfaces.interfaceTemplate import InterfaceTemplate from easyCore.Objects.Inferface import ItemContainer -from ..Calculators.GSASII import GSASII as GSAS_calc +from ..calculators.GSASII import GSASII as GSAS_calc from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Powder1DParameters from easyDiffractionLib import Lattice, SpaceGroup, Site, Phases diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index 88400b7c..71c2ee1f 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -12,6 +12,13 @@ # TODO make this a proper message (use logging?) print('Warning: CrysPy is not installed') + +try: + from easyDiffractionLib.Interfaces.cryspyV2 import CryspyBase # noqa: F401 +except ImportError: + # TODO make this a proper message (use logging?) + print('Warning: CrysPy is not installed') + try: from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 except ImportError: diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 19db19c5..814788ed 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -8,10 +8,12 @@ from easyDiffractionLib.Profiles.P1D import ( Instrument1DCWParameters, Instrument1DTOFParameters, + Instrument1DCWPolParameters, Powder1DParameters, ) +from easyDiffractionLib.components.polarization import PolarizedBeam from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate -from easyDiffractionLib.Calculators.cryspy import Cryspy as Cryspy_calc +from easyDiffractionLib.calculators.cryspy import Cryspy as Cryspy_calc class Cryspy(InterfaceTemplate): @@ -51,12 +53,16 @@ class Cryspy(InterfaceTemplate): "resolution_y": "y", "wavelength": "wavelength", } + _polarization_link = { + "polarization": "polarization", + "efficiency": "efficiency", + } _instrument_tof_link = {k: k for k in Instrument1DTOFParameters._defaults.keys()} name = "CrysPy" - feature_available = {"Npowder1DCW": True, "Npowder1DTOF": True} + feature_available = {"Npowder1DCWunp": True, "Npowder1DTOFunp": True, "Npowder1DCWpol": True} def __init__(self): self.calculator = Cryspy_calc() @@ -67,6 +73,7 @@ def feature_checker( exp_type="CW", sample_type="powder", dimensionality="1D", + polarization='unp', test_str=None, ): return InterfaceTemplate.features( @@ -74,6 +81,7 @@ def feature_checker( exp_type=exp_type, sample_type=sample_type, dimensionality=dimensionality, + polarization=polarization, test_str=test_str, FEATURES=Cryspy.feature_available, ) @@ -147,6 +155,16 @@ def create(self, model): elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to cryspy objects. self.calculator.pattern = model + elif issubclass(t_, PolarizedBeam): + p_key = self.calculator.createPolarization() + r_list.append( + ItemContainer( + p_key, + self._polarization_link, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) elif issubclass(t_, Lattice): l_key = self.calculator.createCell(model_key) keys = self._crystal_link.copy() @@ -211,12 +229,17 @@ def create(self, model): # #TODO Check to see if parameters and pattern should be initialized here. self.__createModel(model_key, "powder1DTOF") elif t_.__name__ == "Sample": # This is legacy mode. Boo - if issubclass(type(model.parameters), Instrument1DCWParameters): - self.__createModel(model_key, "powder1DCW") - elif issubclass(type(model.parameters), Instrument1DTOFParameters): - self.__createModel(model_key, "powder1DTOF") + tt_ = type(model.parameters) + base = 'powder1D' + if issubclass(tt_, Instrument1DCWParameters): + base += "CW" + elif issubclass(tt_, Instrument1DTOFParameters): + base += "TOF" + elif issubclass(tt_, Instrument1DCWPolParameters): + base += "pol" else: raise AttributeError("Unknown EXP type") + self.__createModel(model_key, base) else: if self._borg.debug: print(f"I'm a: {type(model)}") diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py new file mode 100644 index 00000000..0557bd4c --- /dev/null +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -0,0 +1,445 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.2" + +from abc import ABCMeta +from easyCore import borg, np +from easyCore.Objects.Inferface import ItemContainer +from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases +from easyDiffractionLib.Profiles.P1D import ( + Instrument1DCWParameters, + Instrument1DTOFParameters, + Instrument1DCWPolParameters, + Powder1DParameters, +) +from easyDiffractionLib.components.polarization import PolarizedBeam +from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate +from easyDiffractionLib.calculators.cryspy import Cryspy as Cryspy_calc + + +class MetaCryspy: + + _borg = borg + + def create(self, model): + cls = self.__class__ + cls_s = cls.__mro__[0:cls.__mro__.index(MetaCryspy)] + r_list = [] + for cls_ in cls_s: + if hasattr(cls_, "create"): + r = cls_.create(self, model, master=True) + if r is not None and isinstance(r, list): + r_list += r + return r_list + + @staticmethod + def _identify(obj): + return borg.map.convert_id_to_key(obj) + + +class CryspyBase(MetaCryspy, metaclass=ABCMeta): + """ + A simple example interface using Cryspy + """ + + _sample_link = {"cif_str": "cif_str"} + + _crystal_link = { + "length_a": "length_a", + "length_b": "length_b", + "length_c": "length_c", + "angle_alpha": "angle_alpha", + "angle_beta": "angle_beta", + "angle_gamma": "angle_gamma", + } + + _atom_link = { + "label": "label", + "specie": "type_symbol", + "fract_x": "fract_x", + "fract_y": "fract_y", + "fract_z": "fract_z", + "occupancy": "occupancy", + "adp_type": "adp_type", + "Uiso": "u_iso_or_equiv", + "Biso": "b_iso_or_equiv", + "Uani": "u_iso_or_equiv", + "Bani": "b_iso_or_equiv", + } + _subsets = [] + + def __init__(self, calculator=None, **kwargs): + self.calculator = calculator + + def __init_subclass__(cls, is_abstract: bool = False, **kwargs): + """ + Initialise all subclasses so that they can be created in the factory + + :param is_abstract: Is this a subclass which shouldn't be dded + :type is_abstract: bool + :param kwargs: key word arguments + :type kwargs: dict + :return: None + :rtype: noneType + """ + super().__init_subclass__(**kwargs) + if not is_abstract: + cls._subsets.append(cls) + + def create(self, model, master=False): + if not master: + return MetaCryspy.create(self, model) + r_list = [] + t_ = type(model) + model_key = self._identify(model) + if issubclass(t_, Lattice): + l_key = self.calculator.createCell(model_key) + keys = self._crystal_link.copy() + r_list.append( + ItemContainer( + l_key, + keys, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) + elif issubclass(t_, SpaceGroup): + s_key = self.calculator.createSpaceGroup(key=model_key, name_hm_alt="P 1") + keys = {"_space_group_HM_name": "name_hm_alt"} + r_list.append( + ItemContainer( + s_key, + keys, + self.calculator.getSpaceGroupSymbol, + self.calculator.updateSpacegroup, + ) + ) + elif issubclass(t_, Site): + a_key = self.calculator.createAtom(model_key) + keys = self._atom_link.copy() + r_list.append( + ItemContainer( + a_key, + keys, + lambda x, y: self.calculator.genericReturn(a_key, y), + lambda x, **y: self.calculator.genericUpdate(a_key, **y), + ) + ) + elif issubclass(t_, Phase): + ident = str(model_key) + "_phase" + self.calculator.createPhase(ident) + crystal_name = self.calculator.createEmptyCrystal(model.name, key=model_key) + self.calculator.assignCell_toCrystal(self.__identify(model.cell), model_key) + self.calculator.assignSpaceGroup_toCrystal( + self.__identify(model._spacegroup), model_key + ) + self.calculator.setPhaseScale(str(model_key), scale=model.scale.raw_value) + r_list.append( + ItemContainer( + model_key, + {"scale": "scale"}, + self.calculator.getPhaseScale, + self.calculator.setPhaseScale, + ) + ) + for atom in model.atoms: + self.calculator.assignAtom_toCrystal(self.__identify(atom), model_key) + elif issubclass(t_, Phases): + # self.calculator.createModel(model_key, 'powder1D') + for phase in model: + ident = str(self.__identify(phase)) + "_phase" + self.calculator.assignPhase(model_key, ident) + else: + if self._borg.debug: + print(f"I'm a: {type(model)}") + return r_list + + def link_atom(self, crystal_obj, atom): + crystal_name = self.__identify(crystal_obj) + self.calculator.assignAtom_toCrystal(self.__identify(atom), crystal_name) + + def remove_atom(self, crystal_obj, atom): + crystal_name = self.__identify(crystal_obj) + self.calculator.removeAtom_fromCrystal(self.__identify(atom), crystal_name) + + def add_phase(self, phases_obj, phase_obj): + ident = str(self.__identify(phase_obj)) + "_phase" + self.calculator.assignPhase(self.__identify(phases_obj), ident) + self.calculator.setPhaseScale( + self.__identify(phase_obj), scale=phase_obj.scale.raw_value + ) + + def remove_phase(self, phases_obj, phase_obj): + ident = str(self.__identify(phase_obj)) + "_phase" + self.calculator.removePhase(self.__identify(phases_obj), ident) + + def fit_func(self, x_array: np.ndarray) -> np.ndarray: + """ + Function to perform a fit + :param x_array: points to be calculated at + :type x_array: np.ndarray + :return: calculated points + :rtype: np.ndarray + """ + return self.calculator.calculate(x_array) + + def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False) -> dict: + return self.calculator.get_hkl(idx, phase_name, encoded_name) + + def get_phase_components(self, phase_name): + data = self.calculator.get_phase_components(phase_name) + return data + + def _createModel(self, model, model_type): + self.calculator.createModel(model, model_type) + + def get_calculated_y_for_phase(self, phase_idx: int) -> list: + return self.calculator.get_calculated_y_for_phase(phase_idx) + + def get_total_y_for_phases(self) -> list: + return self.calculator.get_total_y_for_phases() + + +class Powder: + def create(self, model, master=False): + if not master: + return MetaCryspy.create(self, model) + r_list = [] + t_ = type(model) + model_key = self.__identify(model) + if issubclass(t_, Powder1DParameters): + # These parameters do not link directly to cryspy objects. + self.calculator.pattern = model + return r_list + + +class SingleCrystal: + pass + + +class CW: + _instrument_link = { + "resolution_u": "u", + "resolution_v": "v", + "resolution_w": "w", + "resolution_x": "x", + "resolution_y": "y", + "wavelength": "wavelength", + } + + def create(self, model, master=False): + if not master: + return MetaCryspy.create(self, model) + r_list = [] + t_ = type(model) + model_key = self.__identify(model) + if issubclass(t_, Instrument1DCWParameters): + self.calculator.createModel(model_key, "powder1DCW") + # These parameters are linked to the Resolution and Setup cryspy objects + res_key = self.calculator.createResolution() + setup_key = self.calculator.createSetup() + keys = self._instrument_link.copy() + keys.pop("wavelength") + r_list.append( + ItemContainer( + res_key, + keys, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) + r_list.append( + ItemContainer( + setup_key, + {"wavelength": self._instrument_link["wavelength"]}, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) + return r_list + + +class TOF: + _instrument_tof_link = {k: k for k in Instrument1DTOFParameters._defaults.keys()} + + def create(self, model, master=False): + if not master: + return MetaCryspy.create(self, model) + r_list = [] + t_ = type(model) + model_key = self.__identify(model) + if issubclass(t_, Instrument1DTOFParameters): + self.calculator.createModel(model_key, "powder1DTOF") + # These parameters are linked to the Resolution and Setup cryspy objects + res_key = self.calculator.createResolution(cls_type="powder1DTOF") + setup_key = self.calculator.createSetup(cls_type="powder1DTOF") + keys = self._instrument_tof_link.copy() + + setup_keys = {k: keys[k] for k in ["ttheta_bank", "dtt1", "dtt2"]} + res_keys = { + k: keys[k] + for k in [ + "sigma0", + "sigma1", + "sigma2", + "gamma0", + "gamma1", + "gamma2", + "alpha0", + "alpha1", + "beta0", + "beta1", + ] + } + r_list.append( + ItemContainer( + res_key, + res_keys, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) + r_list.append( + ItemContainer( + setup_key, + setup_keys, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) + return r_list + + +class POL: + _polarization_link = { + "polarization": "polarization", + "efficiency": "efficiency", + } + + def create(self, model, master=False): + if not master: + return MetaCryspy.create(self, model) + r_list = [] + t_ = type(model) + model_key = self.__identify(model) + if issubclass(t_, PolarizedBeam): + p_key = self.calculator.createPolarization() + r_list.append( + ItemContainer( + p_key, + self._polarization_link, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) + return r_list + + +class CryspyCW(CryspyBase, CW, Powder): + def create(self, model, master=False): + if not master: + return MetaCryspy.create(self, model) + r_list = [] + t_ = type(model) + model_key = self._identify(model) + base = 'powder1DCW' + if t_.__name__ == "Sample" or t_.__name__ in ["Powder1DCW", "powder1DCW", "Npowder1DCW"]: + self._createModel(model_key, base) + return r_list + + +class CryspyTOF(CryspyBase, TOF, Powder): + def create(self, model, master=False): + if not master: + return MetaCryspy.create(self, model) + r_list = [] + t_ = type(model) + model_key = self._identify(model) + base = 'powder1DTOF' + if t_.__name__ == "Sample" or t_.__name__ in ["Powder1DTOF", "powder1DTOF", "Npowder1DTOF"]: + self._createModel(model_key, base) + return r_list + + +class CryspyCWPol(CryspyCW, POL, CW, Powder): + def create(self, model, master=False): + if not master: + return MetaCryspy.create(self, model) + r_list = [] + t_ = type(model) + model_key = self._identify(model) + base = 'powder1DCWpol' + if t_.__name__ == "Sample" or t_.__name__ in ["Powder1DCWpol", "powder1DCWpol", "Npowder1DCWpol"]: + self._createModel(model_key, base) + return r_list + + +class CryspyTOFPol(CryspyTOF, POL, TOF, Powder): + def create(self, model, master=False): + if not master: + return MetaCryspy.create(self, model) + r_list = [] + t_ = type(model) + model_key = self._identify(model) + base = 'powder1DTOFpol' + if t_.__name__ == "Sample" or t_.__name__ in ["Powder1DTOFpol", "powder1DTOFpol", "Npowder1DTOFpol"]: + self._createModel(model_key, base) + return r_list + + +class CryspyV2(InterfaceTemplate): + + name = "CrysPyV2" + + feature_available = {"Npowder1DCWunp": True, "Npowder1DTOFunp": True, "Npowder1DCWpol": True} + + def __init__(self): + self.calculator = Cryspy_calc() + self._internal = None + + @staticmethod + def feature_checker( + radiation="N", + exp_type="CW", + sample_type="powder", + dimensionality="1D", + polarization='unp', + test_str=None, + ): + return InterfaceTemplate.features( + radiation=radiation, + exp_type=exp_type, + sample_type=sample_type, + dimensionality=dimensionality, + polarization=polarization, + test_str=test_str, + FEATURES=CryspyV2.feature_available, + ) + + def create(self, model): + cls = CryspyBase._subsets[0] + self._internal = cls(calculator=self.calculator) + return self._internal.create(model) + + def link_atom(self, model_name: str, atom): + if self._internal is not None: + self._internal.link_atom(model_name, atom) + + def remove_atom(self, model_name: str, atom: str): + if self._internal is not None: + self._internal.remove_atom(model_name, atom) + + def fit_func(self, x_array: np.ndarray) -> np.ndarray: + if self._internal is not None: + return self._internal.fit_func(x_array) + + def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: + if self._internal is not None: + return self._internal.get_hkl(x_array, idx) + + def get_calculated_y_for_phase(self, idx=None) -> list: + if self._internal is not None: + return self._internal.get_calculated_y_for_phase(idx) + + def get_total_y_for_phases(self) -> list: + if self._internal is not None: + return self._internal.get_total_y_for_phases() \ No newline at end of file diff --git a/easyDiffractionLib/Interfaces/interfaceTemplate.py b/easyDiffractionLib/Interfaces/interfaceTemplate.py index b640b0e9..3752494f 100644 --- a/easyDiffractionLib/Interfaces/interfaceTemplate.py +++ b/easyDiffractionLib/Interfaces/interfaceTemplate.py @@ -10,7 +10,8 @@ 'radiation_options': ['N', 'X'], 'exp_type_options': ['CW', 'TOF'], 'dimensional_options': ['1D', '2D'], - 'sample_options': ['powder', 'single'] + 'sample_options': ['powder', 'single'], + 'polarization_options': ['unp', 'pol'] } @@ -23,12 +24,14 @@ class InterfaceTemplate(MSONable, metaclass=ABCMeta): _link = {} @staticmethod - def features(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', test_str=None, FEATURES=None): + def features(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', polarization='unp', + test_str=None, FEATURES=None): if FEATURES is None: raise AttributeError feature_dict = InterfaceTemplate._feature_generator(radiation=radiation, exp_type=exp_type, - sample_type=sample_type, dimensionality=dimensionality) + sample_type=sample_type, dimensionality=dimensionality, + polarization=polarization) for key in FEATURES.keys(): feature_dict[key] = FEATURES[key] @@ -38,7 +41,7 @@ def features(radiation='N', exp_type='CW', sample_type='powder', dimensionality= return feature_dict[test_str] @staticmethod - def _feature_generator(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D'): + def _feature_generator(radiation='N', exp_type='CW', sample_type='powder', dimensionality='1D', polarization='unp'): radiation_options = exp_type_strings['radiation_options'] if radiation not in radiation_options: raise AttributeError(f'"{radiation}" is not supported, only: {radiation_options}') @@ -51,11 +54,15 @@ def _feature_generator(radiation='N', exp_type='CW', sample_type='powder', dimen sample_options = exp_type_strings['sample_options'] if sample_type not in sample_options: raise AttributeError(f'"{sample_type}" is not supported, only: {sample_options}') + polarization_options = exp_type_strings['polarization_options'] + if polarization not in polarization_options: + raise AttributeError(f'"{polarization}" is not supported, only: {polarization_options}') features = [''.join(item) for item in np.array(np.meshgrid(radiation_options, sample_options, dimensional_options, - exp_type_options)).T.reshape(-1, + exp_type_options, + polarization_options)).T.reshape(-1, len(exp_type_strings)).tolist()] feature_dict = dict.fromkeys(features, False) return feature_dict diff --git a/easyDiffractionLib/Jobs.py b/easyDiffractionLib/Jobs.py index 620494e1..f83675a6 100644 --- a/easyDiffractionLib/Jobs.py +++ b/easyDiffractionLib/Jobs.py @@ -79,6 +79,12 @@ def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=Non self._x_axis_name = 'tth' +class PolPowder1DCW(JobBase_1D): + def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): + from easyDiffractionLib.Profiles.P1D import Polarized1DClasses + super(PolPowder1DCW, self).__init__(name, Polarized1DClasses, datastore, phases, parameters, pattern) + self._x_axis_name = 'tth' + class Powder1DTOF(JobBase_1D): def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index f5710c7d..723418fd 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -1,14 +1,15 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" +from copy import deepcopy from typing import TypeVar, List from easyCore.Datasets.xarray import xr from easyCore.Objects.Base import BaseObj, Parameter -from copy import deepcopy from easyCore.Utils.json import MontyDecoder -from easyDiffractionLib.Elements.Backgrounds.Background import BackgroundContainer from easyDiffractionLib.Profiles.common import JobSetup, _DataClassBase +from easyDiffractionLib.components.polarization import PolarizedBeam +from easyDiffractionLib.elements.Backgrounds.Background import BackgroundContainer _decoder = MontyDecoder() T = TypeVar("T") @@ -71,60 +72,69 @@ def __init__(self, dataset, simulation_prefix): class Powder1DParameters(BaseObj): _name = "1DPowderProfile" _defaults = { - "zero_shift": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "zero_shift": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "zero_shift", - "units": "degree", - "value": 0.0, - "fixed": True, + "name": "zero_shift", + "units": "degree", + "value": 0.0, + "fixed": True, }, - "scale": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "scale": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "scale", - "value": 1, - "fixed": True, - "enabled": False, + "name": "scale", + "value": 1, + "fixed": True, + "enabled": False, }, "backgrounds": { - "@module": "easyDiffractionLib.Elements.Backgrounds.Background", - "@class": "BackgroundContainer", + "@module": "easyDiffractionLib.elements.Backgrounds.Background", + "@class": "BackgroundContainer", "@version": "0.0.1", - "data": [], + "data": [], }, } def __init__( - self, - zero_shift: Parameter, - scale: Parameter, - backgrounds: BackgroundContainer, - interface=None, + self, + zero_shift: Parameter, + scale: Parameter, + backgrounds: BackgroundContainer, + interface=None, + **kwargs ): super().__init__( self.__class__.__name__, zero_shift=zero_shift, scale=scale, backgrounds=backgrounds, + **kwargs ) self.name = self._name self.interface = interface - @classmethod - def from_pars( - cls, - zero_shift: float = _defaults["zero_shift"]["value"], - scale: float = _defaults["scale"]["value"], - ): - defaults = deepcopy(cls._defaults) + @staticmethod + def _generate_defaults(zero_shift: float = _defaults["zero_shift"]["value"], + scale: float = _defaults["scale"]["value"] + ): + defaults = deepcopy(Powder1DParameters._defaults) defaults["zero_shift"]["value"] = zero_shift zero_shift = _decoder.process_decoded(defaults["zero_shift"]) defaults["scale"]["value"] = scale scale = _decoder.process_decoded(defaults["scale"]) backgrounds = BackgroundContainer() + return zero_shift, scale, backgrounds + + @classmethod + def from_pars( + cls, + zero_shift: float = _defaults["zero_shift"]["value"], + scale: float = _defaults["scale"]["value"], + ): + zero_shift, scale, backgrounds = cls._generate_defaults(zero_shift, scale) return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) @classmethod @@ -138,90 +148,100 @@ def default(cls): class PolPowder1DParameters(Powder1DParameters): - pass + _defaults = { + 'beam': { + 'efficiency': 1.0, + 'polarization': 0.0, + }, + } + + def __init__(self, + zero_shift: Parameter, + scale: Parameter, + backgrounds: BackgroundContainer, + beam: PolarizedBeam, + interface=None, + **kwargs + ): + super().__init__( + zero_shift=zero_shift, + scale=scale, + backgrounds=backgrounds, + interface=interface, + beam=beam, + **kwargs + ) + + @classmethod + def from_pars(cls, zero_shift: float, scale: float, polarization: float, efficiency: float, interface=None): + zero_shift, scale, backgrounds = cls._generate_defaults(zero_shift, scale) + beam = PolarizedBeam.from_pars(polarization, efficiency) + return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds, beam=beam, interface=interface) class Instrument1DCWParameters(BaseObj): _name = "InstrumentalParameters" _defaults = { - "wavelength": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "wavelength": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "wavelength", - "units": "angstrom", - "value": 1.54056, - "fixed": True, + "name": "wavelength", + "units": "angstrom", + "value": 1.54056, + "fixed": True, }, - "resolution_u": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "resolution_u": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "resolution_u", - "value": 0.0002, - "fixed": True, + "name": "resolution_u", + "value": 0.0002, + "fixed": True, }, - "resolution_v": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "resolution_v": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "resolution_v", - "value": -0.0002, - "fixed": True, + "name": "resolution_v", + "value": -0.0002, + "fixed": True, }, - "resolution_w": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "resolution_w": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "resolution_w", - "value": 0.012, - "fixed": True, + "name": "resolution_w", + "value": 0.012, + "fixed": True, }, - "resolution_x": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "resolution_x": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "resolution_x", - "value": 0.0, - "fixed": True, + "name": "resolution_x", + "value": 0.0, + "fixed": True, }, - "resolution_y": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "resolution_y": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "resolution_y", - "value": 0.0, - "fixed": True, - }, - "polarization": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", - "@version": "0.0.1", - "name": "polarization", - "value": 0.0, - "fixed": True, - }, - "polarizing_efficiency": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", - "@version": "0.0.1", - "name": "polarizing_efficiency", - "value": 100, - "fixed": True, + "name": "resolution_y", + "value": 0.0, + "fixed": True, }, } def __init__( - self, - wavelength: Parameter, - resolution_u: Parameter, - resolution_v: Parameter, - resolution_w: Parameter, - resolution_x: Parameter, - resolution_y: Parameter, - polarization: Parameter, - polarizing_efficiency: Parameter, - interface=None, + self, + wavelength: Parameter, + resolution_u: Parameter, + resolution_v: Parameter, + resolution_w: Parameter, + resolution_x: Parameter, + resolution_y: Parameter, + interface=None, ): super().__init__( self.__class__.__name__, @@ -230,24 +250,20 @@ def __init__( resolution_v=resolution_v, resolution_w=resolution_w, resolution_x=resolution_x, - resolution_y=resolution_y, - polarization=polarization, - polarizing_efficiency=polarizing_efficiency, + resolution_y=resolution_y ) self.name = self._name self.interface = interface @classmethod def from_pars( - cls, - wavelength: float = _defaults["wavelength"]["value"], - resolution_u: float = _defaults["resolution_u"]["value"], - resolution_v: float = _defaults["resolution_v"]["value"], - resolution_w: float = _defaults["resolution_w"]["value"], - resolution_x: float = _defaults["resolution_x"]["value"], - resolution_y: float = _defaults["resolution_y"]["value"], - polarization: float = _defaults["polarization"]["value"], - polarizing_efficiency: float = _defaults["polarizing_efficiency"]["value"], + cls, + wavelength: float = _defaults["wavelength"]["value"], + resolution_u: float = _defaults["resolution_u"]["value"], + resolution_v: float = _defaults["resolution_v"]["value"], + resolution_w: float = _defaults["resolution_w"]["value"], + resolution_x: float = _defaults["resolution_x"]["value"], + resolution_y: float = _defaults["resolution_y"]["value"] ): defaults = deepcopy(cls._defaults) defaults["wavelength"]["value"] = wavelength @@ -262,10 +278,6 @@ def from_pars( resolution_x = _decoder.process_decoded(defaults["resolution_x"]) defaults["resolution_y"]["value"] = resolution_y resolution_y = _decoder.process_decoded(defaults["resolution_y"]) - defaults["polarization"]["value"] = polarization - polarization = _decoder.process_decoded(defaults["polarization"]) - defaults["polarizing_efficiency"]["value"] = polarizing_efficiency - polarizing_efficiency = _decoder.process_decoded(defaults["polarizing_efficiency"]) return cls( wavelength=wavelength, resolution_u=resolution_u, @@ -273,8 +285,6 @@ def from_pars( resolution_w=resolution_w, resolution_x=resolution_x, resolution_y=resolution_y, - polarization=polarization, - polarizing_efficiency=polarizing_efficiency, ) @classmethod @@ -286,8 +296,6 @@ def default(cls): resolution_w = _decoder.process_decoded(defaults["resolution_w"]) resolution_x = _decoder.process_decoded(defaults["resolution_x"]) resolution_y = _decoder.process_decoded(defaults["resolution_y"]) - polarization = _decoder.process_decoded(defaults["polarization"]) - polarizing_efficiency = _decoder.process_decoded(defaults["polarizing_efficiency"]) return cls( wavelength=wavelength, resolution_u=resolution_u, @@ -295,161 +303,159 @@ def default(cls): resolution_w=resolution_w, resolution_x=resolution_x, resolution_y=resolution_y, - polarization=polarization, - polarizing_efficiency=polarizing_efficiency, ) class Instrument1DTOFParameters(BaseObj): _name = "InstrumentalParameters" _defaults = { - "ttheta_bank": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "ttheta_bank": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "ttheta_bank", - "units": "deg", - "value": 145.00, - "fixed": True, + "name": "ttheta_bank", + "units": "deg", + "value": 145.00, + "fixed": True, }, - "dtt1": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "dtt1": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "dtt1", - "units": "deg", - "value": 6167.24700, - "fixed": True, + "name": "dtt1", + "units": "deg", + "value": 6167.24700, + "fixed": True, }, - "dtt2": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "dtt2": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "dtt2", - "units": "deg", - "value": -2.28000, - "fixed": True, + "name": "dtt2", + "units": "deg", + "value": -2.28000, + "fixed": True, }, - "sigma0": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "sigma0": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "sigma0", - "value": 0.409, - "fixed": True, + "name": "sigma0", + "value": 0.409, + "fixed": True, }, - "sigma1": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "sigma1": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "sigma1", - "value": 8.118, - "fixed": True, + "name": "sigma1", + "value": 8.118, + "fixed": True, }, - "sigma2": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "sigma2": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "sigma2", - "value": 0.0, - "fixed": True, - "enabled": False, + "name": "sigma2", + "value": 0.0, + "fixed": True, + "enabled": False, }, - "gamma0": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "gamma0": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "gamma0", - "value": 0.0, - "fixed": True, - "enabled": False, + "name": "gamma0", + "value": 0.0, + "fixed": True, + "enabled": False, }, - "gamma1": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "gamma1": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "gamma1", - "value": 0.0, - "fixed": True, - "enabled": False, + "name": "gamma1", + "value": 0.0, + "fixed": True, + "enabled": False, }, - "gamma2": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "gamma2": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "gamma2", - "value": 0.0, - "fixed": True, - "enabled": False, + "name": "gamma2", + "value": 0.0, + "fixed": True, + "enabled": False, }, - "alpha0": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "alpha0": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "alpha0", - "value": 0.0, - "fixed": True, + "name": "alpha0", + "value": 0.0, + "fixed": True, }, - "alpha1": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "alpha1": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "alpha1", - "value": 0.29710, - "fixed": True, + "name": "alpha1", + "value": 0.29710, + "fixed": True, }, - "beta0": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "beta0": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "beta0", - "value": 0.04182, - "fixed": True, + "name": "beta0", + "value": 0.04182, + "fixed": True, }, - "beta1": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "beta1": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "beta1", - "value": 0.00224, - "fixed": True, + "name": "beta1", + "value": 0.00224, + "fixed": True, }, - "polarization": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "polarization": { + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "polarization", - "value": 0.0, - "fixed": True, + "name": "polarization", + "value": 0.0, + "fixed": True, }, "polarizing_efficiency": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "@module": "easyCore.Objects.Base", + "@class": "Parameter", "@version": "0.0.1", - "name": "polarizing_efficiency", - "value": 100, - "fixed": True, + "name": "polarizing_efficiency", + "value": 100, + "fixed": True, }, } def __init__( - self, - ttheta_bank: Parameter, - dtt1: Parameter, - dtt2: Parameter, - sigma0: Parameter, - sigma1: Parameter, - sigma2: Parameter, - gamma0: Parameter, - gamma1: Parameter, - gamma2: Parameter, - alpha0: Parameter, - alpha1: Parameter, - beta0: Parameter, - beta1: Parameter, - polarization: Parameter, - polarizing_efficiency: Parameter, - interface=None, + self, + ttheta_bank: Parameter, + dtt1: Parameter, + dtt2: Parameter, + sigma0: Parameter, + sigma1: Parameter, + sigma2: Parameter, + gamma0: Parameter, + gamma1: Parameter, + gamma2: Parameter, + alpha0: Parameter, + alpha1: Parameter, + beta0: Parameter, + beta1: Parameter, + polarization: Parameter, + polarizing_efficiency: Parameter, + interface=None, ): super().__init__( self.__class__.__name__, @@ -474,22 +480,22 @@ def __init__( @classmethod def from_pars( - cls, - ttheta_bank: float = _defaults["ttheta_bank"]["value"], - dtt1: float = _defaults["dtt1"]["value"], - dtt2: float = _defaults["dtt2"]["value"], - sigma0: float = _defaults["sigma0"]["value"], - sigma1: float = _defaults["sigma1"]["value"], - sigma2: float = _defaults["sigma2"]["value"], - gamma0: float = _defaults["gamma0"]["value"], - gamma1: float = _defaults["gamma1"]["value"], - gamma2: float = _defaults["gamma2"]["value"], - alpha0: float = _defaults["alpha0"]["value"], - alpha1: float = _defaults["alpha1"]["value"], - beta0: float = _defaults["beta0"]["value"], - beta1: float = _defaults["beta1"]["value"], - polarization: float = _defaults["polarization"]["value"], - polarizing_efficiency: float = _defaults["polarizing_efficiency"]["value"], + cls, + ttheta_bank: float = _defaults["ttheta_bank"]["value"], + dtt1: float = _defaults["dtt1"]["value"], + dtt2: float = _defaults["dtt2"]["value"], + sigma0: float = _defaults["sigma0"]["value"], + sigma1: float = _defaults["sigma1"]["value"], + sigma2: float = _defaults["sigma2"]["value"], + gamma0: float = _defaults["gamma0"]["value"], + gamma1: float = _defaults["gamma1"]["value"], + gamma2: float = _defaults["gamma2"]["value"], + alpha0: float = _defaults["alpha0"]["value"], + alpha1: float = _defaults["alpha1"]["value"], + beta0: float = _defaults["beta0"]["value"], + beta1: float = _defaults["beta1"]["value"], + polarization: float = _defaults["polarization"]["value"], + polarizing_efficiency: float = _defaults["polarizing_efficiency"]["value"], ): defaults = deepcopy(cls._defaults) defaults["ttheta_bank"]["value"] = ttheta_bank @@ -590,3 +596,11 @@ class Instrument1DCWPolParameters(Instrument1DCWParameters): Unpolarized1DTOFClasses = JobSetup( [Powder1DSim, Powder1DExp], Powder1DParameters, Instrument1DTOFParameters ) + +Polarized1DClasses = JobSetup( + [Powder1DSim, Powder1DExp], PolPowder1DParameters, Instrument1DCWParameters +) + +Polarized1DTOFClasses = JobSetup( + [Powder1DSim, Powder1DExp], PolPowder1DParameters, Instrument1DTOFParameters +) diff --git a/easyDiffractionLib/Calculators/CFML.py b/easyDiffractionLib/calculators/CFML.py similarity index 100% rename from easyDiffractionLib/Calculators/CFML.py rename to easyDiffractionLib/calculators/CFML.py diff --git a/easyDiffractionLib/Calculators/GSASII.py b/easyDiffractionLib/calculators/GSASII.py similarity index 100% rename from easyDiffractionLib/Calculators/GSASII.py rename to easyDiffractionLib/calculators/GSASII.py diff --git a/easyDiffractionLib/Calculators/__init__.py b/easyDiffractionLib/calculators/__init__.py similarity index 100% rename from easyDiffractionLib/Calculators/__init__.py rename to easyDiffractionLib/calculators/__init__.py diff --git a/easyDiffractionLib/Calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py similarity index 99% rename from easyDiffractionLib/Calculators/cryspy.py rename to easyDiffractionLib/calculators/cryspy.py index b9240aac..1b327fc1 100644 --- a/easyDiffractionLib/Calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -231,6 +231,11 @@ def genericReturn(self, item_key, value_key): value = getattr(item, value_key) return value + def createPolarization(self, key='pol_beam'): + item = cryspy.DiffrnRadiation() + self.storage[key] = item + return key + def createResolution(self, cls_type=None): if cls_type is None: diff --git a/easyDiffractionLib/Elements/Backgrounds/__init__.py b/easyDiffractionLib/components/__init__.py similarity index 100% rename from easyDiffractionLib/Elements/Backgrounds/__init__.py rename to easyDiffractionLib/components/__init__.py diff --git a/easyDiffractionLib/components/polarization.py b/easyDiffractionLib/components/polarization.py new file mode 100644 index 00000000..2c560627 --- /dev/null +++ b/easyDiffractionLib/components/polarization.py @@ -0,0 +1,15 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCore.Objects.ObjectClasses import BaseObj, Parameter + + +class PolarizedBeam(BaseObj): + def __init__(self, polarization: Parameter, efficiency: Parameter, interface=None): + super().__init__('polarized_beam', polarization=polarization, efficiency=efficiency, interface=interface) + + @classmethod + def from_pars(cls, polarization: float = 1.0, efficiency: float = 1.0): + return cls(polarization=Parameter('polarization', polarization, min=0., max=1.), + efficiency=Parameter('efficency', efficiency, min=0., max=1.) + ) diff --git a/easyDiffractionLib/Elements/Backgrounds/Background.py b/easyDiffractionLib/elements/Backgrounds/Background.py similarity index 100% rename from easyDiffractionLib/Elements/Backgrounds/Background.py rename to easyDiffractionLib/elements/Backgrounds/Background.py diff --git a/easyDiffractionLib/Elements/Backgrounds/Factorial.py b/easyDiffractionLib/elements/Backgrounds/Factorial.py similarity index 100% rename from easyDiffractionLib/Elements/Backgrounds/Factorial.py rename to easyDiffractionLib/elements/Backgrounds/Factorial.py diff --git a/easyDiffractionLib/Elements/Backgrounds/Point.py b/easyDiffractionLib/elements/Backgrounds/Point.py similarity index 100% rename from easyDiffractionLib/Elements/Backgrounds/Point.py rename to easyDiffractionLib/elements/Backgrounds/Point.py diff --git a/easyDiffractionLib/Elements/Experiments/__init__.py b/easyDiffractionLib/elements/Backgrounds/__init__.py similarity index 100% rename from easyDiffractionLib/Elements/Experiments/__init__.py rename to easyDiffractionLib/elements/Backgrounds/__init__.py diff --git a/easyDiffractionLib/Elements/Experiments/Experiment.py b/easyDiffractionLib/elements/Experiments/Experiment.py similarity index 100% rename from easyDiffractionLib/Elements/Experiments/Experiment.py rename to easyDiffractionLib/elements/Experiments/Experiment.py diff --git a/easyDiffractionLib/Elements/Experiments/Pattern.py b/easyDiffractionLib/elements/Experiments/Pattern.py similarity index 94% rename from easyDiffractionLib/Elements/Experiments/Pattern.py rename to easyDiffractionLib/elements/Experiments/Pattern.py index 73e5d543..488f9555 100644 --- a/easyDiffractionLib/Elements/Experiments/Pattern.py +++ b/easyDiffractionLib/elements/Experiments/Pattern.py @@ -4,7 +4,7 @@ from easyCore.Objects.Base import BaseObj, Parameter from copy import deepcopy from easyCore.Utils.json import MontyDecoder -from easyDiffractionLib.Elements.Backgrounds.Background import BackgroundContainer +from easyDiffractionLib.elements.Backgrounds.Background import BackgroundContainer _decoder = MontyDecoder() @@ -29,7 +29,7 @@ class Pattern1D(BaseObj): 'fixed': True }, 'backgrounds': { - '@module': 'easyDiffractionLib.Elements.Backgrounds.Background', + '@module': 'easyDiffractionLib.elements.Backgrounds.Background', '@class': 'BackgroundContainer', '@version': '0.0.1', 'data': [], diff --git a/easyDiffractionLib/Elements/__init__.py b/easyDiffractionLib/elements/Experiments/__init__.py similarity index 100% rename from easyDiffractionLib/Elements/__init__.py rename to easyDiffractionLib/elements/Experiments/__init__.py diff --git a/easyDiffractionLib/elements/__init__.py b/easyDiffractionLib/elements/__init__.py new file mode 100644 index 00000000..19c79bc2 --- /dev/null +++ b/easyDiffractionLib/elements/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 84ab2d29..97a2a7a0 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -2,7 +2,7 @@ __version__ = '0.0.1' import os, tempfile -from typing import Union +from typing import Union, ClassVar from easyCore.Objects.Base import BaseObj from easyCore.Utils.UndoRedo import property_stack_deco @@ -11,9 +11,15 @@ from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters from easyDiffractionLib.interface import InterfaceFactory from easyDiffractionLib.Profiles.P1D import Powder1DParameters as Pattern1D +from easyDiffractionLib.Profiles.P1D import PolPowder1DParameters as Pattern1D_Pol class Sample(BaseObj): + + _phases: ClassVar[Phases] + _parameters: ClassVar + _pattern: ClassVar + def __init__(self, phases: Union[Phase, Phases] = None, parameters=None, pattern=None, calculator=None, interface=None, name: str = 'easySample'): @@ -109,6 +115,8 @@ def as_dict(self, skip: list = None) -> dict: @property def exp_type_str(self) -> str: type_str = 'Npowder1D' + if isinstance(self._pattern, Pattern1D_Pol): + type_str = 'Pol' + type_str if isinstance(self._parameters, Instrument1DCWParameters): type_str += 'CW' elif isinstance(self._parameters, Instrument1DTOFParameters): diff --git a/tests/integration_tests/fit_script.py b/tests/integration_tests/fit_script.py index 8e9bb53a..c82f7988 100644 --- a/tests/integration_tests/fit_script.py +++ b/tests/integration_tests/fit_script.py @@ -5,9 +5,9 @@ from easyDiffractionLib.sample import Sample from easyDiffractionLib import Phases from easyDiffractionLib.interface import InterfaceFactory -from easyDiffractionLib.Elements.Experiments.Experiment import Pars1D -from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D -from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint +from easyDiffractionLib.elements.Experiments.Experiment import Pars1D +from easyDiffractionLib.elements.Experiments.Pattern import Pattern1D +from easyDiffractionLib.elements.Backgrounds.Point import PointBackground, BackgroundPoint from easyCore.Fitting.Fitting import Fitter from easyCore.Datasets.xarray import xr From 1c2bf9faace64ca46ca45e891e0ff093ff5866b4 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Thu, 24 Mar 2022 16:43:03 +0100 Subject: [PATCH 260/312] Cryspy V2 --- easyDiffractionLib/Interfaces/cryspyV2.py | 39 +++++++---- .../Interfaces/interfaceTemplate.py | 11 ++++ easyDiffractionLib/Interfaces/types.py | 38 +++++++++++ easyDiffractionLib/sample.py | 66 +++++++++++++++++-- 4 files changed, 134 insertions(+), 20 deletions(-) create mode 100644 easyDiffractionLib/Interfaces/types.py diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 0557bd4c..847dd8b4 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -15,6 +15,8 @@ from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyDiffractionLib.calculators.cryspy import Cryspy as Cryspy_calc +from easyDiffractionLib.Interfaces.types import Powder as Powder_type, SingleCrystal as SingleCrystal_type, \ + CW as CW_type, TOF as TOF_type, Pol as Pol_type, UPol as UPol_type, Neutron as Neutron_type class MetaCryspy: @@ -36,7 +38,7 @@ def _identify(obj): return borg.map.convert_id_to_key(obj) -class CryspyBase(MetaCryspy, metaclass=ABCMeta): +class CryspyBase(MetaCryspy, Neutron_type, metaclass=ABCMeta): """ A simple example interface using Cryspy """ @@ -199,7 +201,7 @@ def get_total_y_for_phases(self) -> list: return self.calculator.get_total_y_for_phases() -class Powder: +class Powder(Powder_type): def create(self, model, master=False): if not master: return MetaCryspy.create(self, model) @@ -212,11 +214,11 @@ def create(self, model, master=False): return r_list -class SingleCrystal: +class SingleCrystal(SingleCrystal_type): pass -class CW: +class CW(CW_type): _instrument_link = { "resolution_u": "u", "resolution_v": "v", @@ -258,7 +260,7 @@ def create(self, model, master=False): return r_list -class TOF: +class TOF(TOF_type): _instrument_tof_link = {k: k for k in Instrument1DTOFParameters._defaults.keys()} def create(self, model, master=False): @@ -309,7 +311,7 @@ def create(self, model, master=False): return r_list -class POL: +class POL(Pol_type): _polarization_link = { "polarization": "polarization", "efficiency": "efficiency", @@ -334,7 +336,15 @@ def create(self, model, master=False): return r_list -class CryspyCW(CryspyBase, CW, Powder): +class UPol(UPol_type): + def model(self, model, master=False): + if not master: + return MetaCryspy.model(self, model) + r_list = [] + return r_list + + +class CryspyCW(CryspyBase, CW, Powder, UPol): def create(self, model, master=False): if not master: return MetaCryspy.create(self, model) @@ -347,7 +357,7 @@ def create(self, model, master=False): return r_list -class CryspyTOF(CryspyBase, TOF, Powder): +class CryspyTOF(CryspyBase, TOF, Powder, UPol): def create(self, model, master=False): if not master: return MetaCryspy.create(self, model) @@ -360,7 +370,7 @@ def create(self, model, master=False): return r_list -class CryspyCWPol(CryspyCW, POL, CW, Powder): +class CryspyCWPol(CryspyBase, CW, Powder, POL): def create(self, model, master=False): if not master: return MetaCryspy.create(self, model) @@ -373,7 +383,7 @@ def create(self, model, master=False): return r_list -class CryspyTOFPol(CryspyTOF, POL, TOF, Powder): +class CryspyTOFPol(CryspyBase, TOF, Powder, POL): def create(self, model, master=False): if not master: return MetaCryspy.create(self, model) @@ -416,9 +426,12 @@ def feature_checker( ) def create(self, model): - cls = CryspyBase._subsets[0] - self._internal = cls(calculator=self.calculator) - return self._internal.create(model) + cls = self._get_constructor(CryspyBase._subsets, model) + if cls is not None and cls is not self._internal.__class__: + self._internal = cls(calculator=self.calculator) + return self._internal.create(model, master=True) + + def link_atom(self, model_name: str, atom): if self._internal is not None: diff --git a/easyDiffractionLib/Interfaces/interfaceTemplate.py b/easyDiffractionLib/Interfaces/interfaceTemplate.py index 3752494f..e20e4d07 100644 --- a/easyDiffractionLib/Interfaces/interfaceTemplate.py +++ b/easyDiffractionLib/Interfaces/interfaceTemplate.py @@ -143,3 +143,14 @@ def get_calculated_y_for_phase(self, idx=None) -> list: @abstractmethod def get_total_y_for_phases(self) -> list: pass + + @staticmethod + def _get_constructor(known_components, sample_object): + all_bases = set([base for base in sample_object.__class__.__bases__ if hasattr(base, '_internal_type')]) + if len(all_bases) == 0: + return None + all_components = [set([base for base in component.__mro__ if hasattr(base, '_internal_type')]) for component in known_components] + for idx, component in enumerate(all_components): + test = all_bases-component + if len(test) == 0: + return known_components[idx] \ No newline at end of file diff --git a/easyDiffractionLib/Interfaces/types.py b/easyDiffractionLib/Interfaces/types.py new file mode 100644 index 00000000..0231cd5a --- /dev/null +++ b/easyDiffractionLib/Interfaces/types.py @@ -0,0 +1,38 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + + +class _Type: + _internal_type = True + + +class Neutron(_Type): + pass + + +class XRay(_Type): + pass + + +class Powder(_Type): + pass + + +class SingleCrystal(_Type): + pass + + +class CW(_Type): + pass + + +class TOF(_Type): + pass + + +class Pol(_Type): + pass + + +class UPol(_Type): + pass diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 97a2a7a0..a06ebfe8 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -10,6 +10,7 @@ from easyDiffractionLib import Phase, Phases from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters from easyDiffractionLib.interface import InterfaceFactory +from easyDiffractionLib.Interfaces.types import Powder, Neutron from easyDiffractionLib.Profiles.P1D import Powder1DParameters as Pattern1D from easyDiffractionLib.Profiles.P1D import PolPowder1DParameters as Pattern1D_Pol @@ -39,6 +40,24 @@ def __init__(self, phases: Union[Phase, Phases] = None, super(Sample, self).__init__(name, _phases=phases, _parameters=parameters, _pattern=pattern) + # Set bases for easy identification + self._update_bases(Powder) + self._update_bases(Neutron) + + if isinstance(pattern, Pattern1D): + from easyDiffractionLib.Interfaces.types import UPol + self._update_bases(UPol) + elif isinstance(pattern, Pattern1D_Pol): + from easyDiffractionLib.Interfaces.types import Pol + self._update_bases(Pol) + + if isinstance(parameters, Instrument1DCWParameters): + from easyDiffractionLib.Interfaces.types import CW + self._update_bases(CW) + elif isinstance(parameters, Instrument1DTOFParameters): + from easyDiffractionLib.Interfaces.types import TOF + self._update_bases(TOF) + self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') print(f"Temp CIF: {self.filename}") self.output_index = None @@ -49,6 +68,18 @@ def __init__(self, phases: Union[Phase, Phases] = None, else: self.interface = InterfaceFactory() + @property + def interface(self): + return self._interface + + @interface.setter + def interface(self, value): + self._interface = value + # This is required so that the type is correctly passes. + if value is not None: + self.interface.generate_bindings(self) + self.generate_bindings() + def get_phase(self, phase_index): return self._phases[phase_index] @@ -114,13 +145,34 @@ def as_dict(self, skip: list = None) -> dict: @property def exp_type_str(self) -> str: - type_str = 'Npowder1D' - if isinstance(self._pattern, Pattern1D_Pol): - type_str = 'Pol' + type_str - if isinstance(self._parameters, Instrument1DCWParameters): + from easyDiffractionLib.Interfaces.types import Neutron, XRay, Powder, SingleCrystal, Pol, UPol, CW, TOF + type_str = '' + if issubclass(self, Neutron): + type_str += 'N' + elif issubclass(self, XRay): + type_str += 'X' + + if issubclass(self, Powder): + type_str += 'powder' + elif issubclass(self, SingleCrystal): + type_str += 'single' + + type_str += '1D' + + if issubclass(self, CW): type_str += 'CW' - elif isinstance(self._parameters, Instrument1DTOFParameters): + elif issubclass(self, TOF): type_str += 'TOF' - else: - raise TypeError(f'Experiment is of unknown type: {type(self._parameters)}') + + if issubclass(self, Pol): + type_str += 'pol' + elif issubclass(self, UPol): + type_str += 'upol' + return type_str + + def _update_bases(self, new_base): + base_class = getattr(self, '__old_class__', self.__class__) + old_bases = set(self.__class__.__bases__) + old_bases = old_bases - {base_class, *new_base.__mro__} # This should fix multiple inheritance + self.__class__.__bases__ = (new_base, *old_bases, base_class) \ No newline at end of file From c15da1dee0e32d5bf5aec217c461b2a3c8f8c5ce Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Thu, 24 Mar 2022 18:22:12 +0100 Subject: [PATCH 261/312] removed some old polarized code from ToF fixed strings in experiment type assignment --- easyDiffractionLib/Profiles/P1D.py | 32 ------------------------------ easyDiffractionLib/sample.py | 18 ++++++++--------- 2 files changed, 9 insertions(+), 41 deletions(-) diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index 723418fd..f2fbe59b 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -420,22 +420,6 @@ class Instrument1DTOFParameters(BaseObj): "value": 0.00224, "fixed": True, }, - "polarization": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", - "@version": "0.0.1", - "name": "polarization", - "value": 0.0, - "fixed": True, - }, - "polarizing_efficiency": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", - "@version": "0.0.1", - "name": "polarizing_efficiency", - "value": 100, - "fixed": True, - }, } def __init__( @@ -453,8 +437,6 @@ def __init__( alpha1: Parameter, beta0: Parameter, beta1: Parameter, - polarization: Parameter, - polarizing_efficiency: Parameter, interface=None, ): super().__init__( @@ -472,8 +454,6 @@ def __init__( alpha1=alpha1, beta0=beta0, beta1=beta1, - polarization=polarization, - polarizing_efficiency=polarizing_efficiency, ) self.name = self._name self.interface = interface @@ -494,8 +474,6 @@ def from_pars( alpha1: float = _defaults["alpha1"]["value"], beta0: float = _defaults["beta0"]["value"], beta1: float = _defaults["beta1"]["value"], - polarization: float = _defaults["polarization"]["value"], - polarizing_efficiency: float = _defaults["polarizing_efficiency"]["value"], ): defaults = deepcopy(cls._defaults) defaults["ttheta_bank"]["value"] = ttheta_bank @@ -524,10 +502,6 @@ def from_pars( beta0 = _decoder.process_decoded(defaults["beta0"]) defaults["beta1"]["value"] = beta1 beta1 = _decoder.process_decoded(defaults["beta1"]) - defaults["polarization"]["value"] = polarization - polarization = _decoder.process_decoded(defaults["polarization"]) - defaults["polarizing_efficiency"]["value"] = polarizing_efficiency - polarizing_efficiency = _decoder.process_decoded(defaults["polarizing_efficiency"]) return cls( ttheta_bank=ttheta_bank, @@ -543,8 +517,6 @@ def from_pars( alpha1=alpha1, beta0=beta0, beta1=beta1, - polarization=polarization, - polarizing_efficiency=polarizing_efficiency, ) @classmethod @@ -563,8 +535,6 @@ def default(cls): alpha1 = _decoder.process_decoded(defaults["alpha1"]) beta0 = _decoder.process_decoded(defaults["beta0"]) beta1 = _decoder.process_decoded(defaults["beta1"]) - polarization = _decoder.process_decoded(defaults["polarization"]) - polarizing_efficiency = _decoder.process_decoded(defaults["polarizing_efficiency"]) return cls( ttheta_bank=ttheta_bank, @@ -580,8 +550,6 @@ def default(cls): alpha1=alpha1, beta0=beta0, beta1=beta1, - polarization=polarization, - polarizing_efficiency=polarizing_efficiency, ) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index a06ebfe8..6348f4a9 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -147,27 +147,27 @@ def as_dict(self, skip: list = None) -> dict: def exp_type_str(self) -> str: from easyDiffractionLib.Interfaces.types import Neutron, XRay, Powder, SingleCrystal, Pol, UPol, CW, TOF type_str = '' - if issubclass(self, Neutron): + if issubclass(type(self), Neutron): type_str += 'N' - elif issubclass(self, XRay): + elif issubclass(type(self), XRay): type_str += 'X' - if issubclass(self, Powder): + if issubclass(type(self), Powder): type_str += 'powder' - elif issubclass(self, SingleCrystal): + elif issubclass(type(self), SingleCrystal): type_str += 'single' type_str += '1D' - if issubclass(self, CW): + if issubclass(type(self), CW): type_str += 'CW' - elif issubclass(self, TOF): + elif issubclass(type(self), TOF): type_str += 'TOF' - if issubclass(self, Pol): + if issubclass(type(self), Pol): type_str += 'pol' - elif issubclass(self, UPol): - type_str += 'upol' + elif issubclass(type(self), UPol): + type_str += 'unp' return type_str From 60d8b9a986b9c371b12eb52d80cadaecd0cad445 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 25 Mar 2022 09:48:26 +0100 Subject: [PATCH 262/312] More v2 work --- easyDiffractionLib/Interfaces/cryspyV2.py | 5 ++--- easyDiffractionLib/sample.py | 17 +++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 847dd8b4..e99188e5 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -18,6 +18,7 @@ from easyDiffractionLib.Interfaces.types import Powder as Powder_type, SingleCrystal as SingleCrystal_type, \ CW as CW_type, TOF as TOF_type, Pol as Pol_type, UPol as UPol_type, Neutron as Neutron_type + class MetaCryspy: _borg = borg @@ -339,7 +340,7 @@ def create(self, model, master=False): class UPol(UPol_type): def model(self, model, master=False): if not master: - return MetaCryspy.model(self, model) + return MetaCryspy.create(self, model) r_list = [] return r_list @@ -431,8 +432,6 @@ def create(self, model): self._internal = cls(calculator=self.calculator) return self._internal.create(model, master=True) - - def link_atom(self, model_name: str, atom): if self._internal is not None: self._internal.link_atom(model_name, atom) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 6348f4a9..ce3cbbc4 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -147,26 +147,27 @@ def as_dict(self, skip: list = None) -> dict: def exp_type_str(self) -> str: from easyDiffractionLib.Interfaces.types import Neutron, XRay, Powder, SingleCrystal, Pol, UPol, CW, TOF type_str = '' - if issubclass(type(self), Neutron): + self_type = type(self) + if issubclass(self_type, Neutron): type_str += 'N' - elif issubclass(type(self), XRay): + elif issubclass(self_type, XRay): type_str += 'X' - if issubclass(type(self), Powder): + if issubclass(self_type, Powder): type_str += 'powder' - elif issubclass(type(self), SingleCrystal): + elif issubclass(self_type, SingleCrystal): type_str += 'single' type_str += '1D' - if issubclass(type(self), CW): + if issubclass(self_type, CW): type_str += 'CW' - elif issubclass(type(self), TOF): + elif issubclass(self_type, TOF): type_str += 'TOF' - if issubclass(type(self), Pol): + if issubclass(self_type, Pol): type_str += 'pol' - elif issubclass(type(self), UPol): + elif issubclass(self_type, UPol): type_str += 'unp' return type_str From 527df8314b36628cafad27b27fc931edaa000840 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 25 Mar 2022 09:57:58 +0100 Subject: [PATCH 263/312] Touch up polarisation class --- easyDiffractionLib/components/polarization.py | 46 +++++++++++++++++-- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/easyDiffractionLib/components/polarization.py b/easyDiffractionLib/components/polarization.py index 2c560627..0af7d09f 100644 --- a/easyDiffractionLib/components/polarization.py +++ b/easyDiffractionLib/components/polarization.py @@ -2,14 +2,50 @@ __version__ = '0.0.1' from easyCore.Objects.ObjectClasses import BaseObj, Parameter +from copy import deepcopy +from easyCore.Utils.json import MontyDecoder +_decoder = MontyDecoder() class PolarizedBeam(BaseObj): + _name = 'polarized_beam' + _defaults = { + 'polarization': { + '@module': 'easyCore.Objects.Variable', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'polarization', + 'value': 1.0, + 'min': 0.0, + 'max': 1.0, + }, + 'efficiency': { + '@module': 'easyCore.Objects.Variable', + '@class': 'Parameter', + '@version': '0.0.1', + 'name': 'efficiency', + 'value': 1.0, + 'min': 0.0, + 'max': 1.0, + }, + } + def __init__(self, polarization: Parameter, efficiency: Parameter, interface=None): - super().__init__('polarized_beam', polarization=polarization, efficiency=efficiency, interface=interface) + super().__init__(self._name, polarization=polarization, efficiency=efficiency) + self.interface = interface + + @classmethod + def from_pars(cls, + polarization: float = _defaults['polarization']['value'], + efficiency: float = _defaults['efficiency']['value'], + interface=None): + defaults = deepcopy(cls._defaults) + defaults['polarization']['value'] = polarization + polarization = _decoder.process_decoded(defaults['polarization']) + defaults['efficiency']['value'] = efficiency + efficiency = _decoder.process_decoded(defaults['efficiency']) + return cls(polarization=polarization, efficiency=efficiency, interface=interface) @classmethod - def from_pars(cls, polarization: float = 1.0, efficiency: float = 1.0): - return cls(polarization=Parameter('polarization', polarization, min=0., max=1.), - efficiency=Parameter('efficency', efficiency, min=0., max=1.) - ) + def default(cls, interface=None): + return cls.from_pars(interface=interface) From dde0a5ce729b2c5124858fc9bc85edeee904a61a Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 28 Mar 2022 12:32:29 +0200 Subject: [PATCH 264/312] Cleanup and refactor --- easyDiffractionLib/Interfaces/cryspyV2.py | 9 + easyDiffractionLib/__init__.py | 45 +- easyDiffractionLib/calculators/cryspy.py | 89 +- easyDiffractionLib/components/phase.py | 39 + easyDiffractionLib/components/site.py | 99 ++ .../elements/Experiments/Pattern.py | 3 +- easyDiffractionLib/sample.py | 6 +- examples/Fitting.ipynb | 862 +++--------------- pyproject.toml | 2 +- 9 files changed, 308 insertions(+), 846 deletions(-) create mode 100644 easyDiffractionLib/components/phase.py create mode 100644 easyDiffractionLib/components/site.py diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index e99188e5..7baa0245 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -383,6 +383,15 @@ def create(self, model, master=False): self._createModel(model_key, base) return r_list + def fit_func(self, x_array: np.ndarray, method = lambda up, down: up+down) -> np.ndarray: + """ + Function to perform a fit + :param x_array: points to be calculated at + :type x_array: np.ndarray + :return: calculated points + :rtype: np.ndarray + """ + return self.calculator.calculate(x_array, method) class CryspyTOFPol(CryspyBase, TOF, Powder, POL): def create(self, model, master=False): diff --git a/easyDiffractionLib/__init__.py b/easyDiffractionLib/__init__.py index 55124598..d9b0a6a2 100644 --- a/easyDiffractionLib/__init__.py +++ b/easyDiffractionLib/__init__.py @@ -2,45 +2,6 @@ __version__ = '0.0.1' -from easyCrystallography.Structures.Phase import Phases, Atoms, Site, SpaceGroup, Lattice, Phase - -""" -This is a horrendous monkey patch of the Phase and Phases class so that adding and removing communicates -with the interface. If you are shaking your head in disbelief, I'm sorry........ -""" - -_a_atom = getattr(Phase, "add_atom") -_rm_atom = getattr(Phase, "remove_atom") -_d_item = getattr(Phases, "__delitem__") -_a_item = getattr(Phases, "append") - -def _add_atom(self, *args, **kwargs): - _a_atom(self, *args, **kwargs) - if self.interface is not None: - self.interface().link_atom(self, self.atoms[-1]) - - -def _remove_atom(self, key): - item = self.atoms[key] - _rm_atom(self, key) - if self.interface is not None: - self.interface().remove_atom(self, item) - - -def _p_append(self, item: Phase): - _a_item(self, item) - if self.interface is not None: - self.interface().add_phase(self, item) - - -def _p__delitem__(self, key): - item = self[key] - if self.interface is not None: - self.interface().remove_phase(self, item) - return _d_item(self, key) - -setattr(Phase, "add_atom", _add_atom) -setattr(Phase, "remove_atom", _remove_atom) -setattr(Phases, "__delitem__", _p__delitem__) -setattr(Phases, "append", _p_append) - +from .components.phase import Phase, Phases +from easyCrystallography.Structures.Phase import SpaceGroup, Lattice +from .components.site import Site, Atoms diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index 1b327fc1..ab633c7b 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -1,8 +1,8 @@ __author__ = "github.com/wardsimon" -__version__ = "0.0.2" +__version__ = "0.0.3" import time -from typing import Tuple +from typing import Tuple, Optional, Any, Callable, List import cryspy import warnings @@ -50,22 +50,20 @@ def __init__(self): self.polarized = False @property - def cif_str(self): + def cif_str(self) -> str: key = list(self.current_crystal.keys())[0] return self.storage[key].to_cif() @cif_str.setter - def cif_str(self, value): + def cif_str(self, value: str): self.createCrystal_fromCifStr(value) - def createModel(self, model_id, model_type="powder1DCW"): + def createModel(self, model_id: str, model_type: str = "powder1DCW"): model = {"background": cryspy.PdBackgroundL(), "phase": self.phases} - self.polarized = False if model_type.endswith("Pol"): self.polarized = True model_type = model_type.split("Pol")[0] - cls = cryspy.Pd if model_type == "powder1DTOF": cls = cryspy.TOF @@ -73,16 +71,16 @@ def createModel(self, model_id, model_type="powder1DCW"): self.type = model_type self.model = cls(**model) - def createPhase(self, crystal_name, key="phase"): + def createPhase(self, crystal_name: str, key: str ="phase") -> str: phase = cryspy.Phase(label=crystal_name, scale=1, igsize=0) self.storage[key] = phase return key - def assignPhase(self, model_name, phase_name): + def assignPhase(self, model_name: str, phase_name: str): phase = self.storage[phase_name] self.phases.items.append(phase) - def removePhase(self, model_name, phase_name): + def removePhase(self, model_name: str, phase_name: str): phase = self.storage[phase_name] del self.storage[phase_name] del self.storage[phase_name.split("_")[0] + "_scale"] @@ -91,13 +89,13 @@ def removePhase(self, model_name, phase_name): if name in self.additional_data["phases"].keys(): del self.additional_data["phases"][name] - def setPhaseScale(self, model_name, scale=1): + def setPhaseScale(self, model_name: str, scale: float = 1.): self.storage[str(model_name) + "_scale"] = scale - def getPhaseScale(self, model_name, *args, **kwargs): - return self.storage.get(str(model_name) + "_scale", 1) + def getPhaseScale(self, model_name: str, *args, **kwargs) -> float: + return self.storage.get(str(model_name) + "_scale", 1.) - def createCrystal_fromCifStr(self, cif_str: str): + def createCrystal_fromCifStr(self, cif_str: str) -> str: crystal = cryspy.Crystal.from_cif(cif_str) key = crystal.data_name self.storage[key] = crystal @@ -105,7 +103,7 @@ def createCrystal_fromCifStr(self, cif_str: str): self.createPhase(key) return key - def createEmptyCrystal(self, crystal_name, key=None): + def createEmptyCrystal(self, crystal_name: str, key: Optional[str] = None) -> str: crystal = cryspy.Crystal(crystal_name, atom_site=cryspy.AtomSiteL()) if key is None: key = crystal_name @@ -114,17 +112,17 @@ def createEmptyCrystal(self, crystal_name, key=None): self.current_crystal[key] = crystal_name return key - def createCell(self, key="cell"): + def createCell(self, key: str = "cell") -> str: cell = cryspy.Cell() self.storage[key] = cell return key - def assignCell_toCrystal(self, cell_name, crystal_name): + def assignCell_toCrystal(self, cell_name: str, crystal_name: str): crystal = self.storage[crystal_name] cell = self.storage[cell_name] crystal.cell = cell - def createSpaceGroup(self, key="spacegroup", name_hm_alt="P 1"): + def createSpaceGroup(self, key: str = "spacegroup", name_hm_alt: str = "P 1") -> str: sg_split = name_hm_alt.split(":") opts = {"name_hm_alt": sg_split[0]} # if len(sg_split) > 1: @@ -137,7 +135,7 @@ def createSpaceGroup(self, key="spacegroup", name_hm_alt="P 1"): self.storage[key] = sg return key - def getSpaceGroupSymbol(self, spacegroup_name: str, *args, **kwargs): + def getSpaceGroupSymbol(self, spacegroup_name: str, *args, **kwargs) -> str: sg = self.storage[spacegroup_name] hm_alt = getattr(sg, "name_hm_alt") setting = getattr(sg, "it_coordinate_system_code") @@ -145,7 +143,7 @@ def getSpaceGroupSymbol(self, spacegroup_name: str, *args, **kwargs): hm_alt += ":" + setting return hm_alt - def assignSpaceGroup_toCrystal(self, spacegroup_name, crystal_name): + def assignSpaceGroup_toCrystal(self, spacegroup_name: str, crystal_name: str): if not crystal_name: return crystal = self.storage[crystal_name] @@ -155,7 +153,7 @@ def assignSpaceGroup_toCrystal(self, spacegroup_name, crystal_name): atom.define_space_group_wyckoff(space_group.space_group_wyckoff) atom.form_object() - def updateSpacegroup(self, sg_key, **kwargs): + def updateSpacegroup(self, sg_key: str, **kwargs): # This has to be done as sg.name_hm_alt = 'blah' doesn't work :-( keys = list(self.current_crystal.keys()) previous_key = "" @@ -168,12 +166,12 @@ def updateSpacegroup(self, sg_key, **kwargs): sg_key = self.createSpaceGroup(key=sg_key, **kwargs) self.assignSpaceGroup_toCrystal(sg_key, previous_key) - def createAtom(self, atom_name, **kwargs): + def createAtom(self, atom_name: str, **kwargs) -> str: atom = cryspy.AtomSite(**kwargs) self.storage[atom_name] = atom return atom_name - def assignAtom_toCrystal(self, atom_label, crystal_name): + def assignAtom_toCrystal(self, atom_label: str, crystal_name: str): crystal = self.storage[crystal_name] atom = self.storage[atom_label] wyckoff = crystal.space_group.space_group_wyckoff @@ -184,7 +182,7 @@ def assignAtom_toCrystal(self, atom_label, crystal_name): continue item.items.append(atom) - def removeAtom_fromCrystal(self, atom_label, crystal_name): + def removeAtom_fromCrystal(self, atom_label: str, crystal_name: str): crystal = self.storage[crystal_name] atom = self.storage[atom_label] for item in crystal.items: @@ -193,12 +191,12 @@ def removeAtom_fromCrystal(self, atom_label, crystal_name): idx = item.items.index(atom) del item.items[idx] - def createBackground(self, background_obj): + def createBackground(self, background_obj) -> str: key = "background" self.storage[key] = background_obj return key - def createSetup(self, key="setup", cls_type=None): + def createSetup(self, key: str = "setup", cls_type: Optional[str] =None): if cls_type is None: cls_type = self.type @@ -221,22 +219,22 @@ def createSetup(self, key="setup", cls_type=None): setattr(self.model, "setup", setup) return key - def genericUpdate(self, item_key, **kwargs): + def genericUpdate(self, item_key: str, **kwargs): item = self.storage[item_key] for key, value in kwargs.items(): setattr(item, key, kwargs[key]) - def genericReturn(self, item_key, value_key): + def genericReturn(self, item_key: str, value_key: str) -> Any: item = self.storage[item_key] value = getattr(item, value_key) return value - def createPolarization(self, key='pol_beam'): + def createPolarization(self, key: str = 'pol_beam') -> str: item = cryspy.DiffrnRadiation() self.storage[key] = item return key - def createResolution(self, cls_type=None): + def createResolution(self, cls_type: Optional[str] = None) -> str: if cls_type is None: cls_type = self.type @@ -255,12 +253,12 @@ def createResolution(self, cls_type=None): setattr(self.model, key, resolution) return key - def updateResolution(self, key, **kwargs): + def updateResolution(self, key: str, **kwargs): resolution = self.storage[key] for r_key in kwargs.keys(): setattr(resolution, r_key, kwargs[key]) - def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: + def powder_1d_calculate(self, x_array: np.ndarray, pol_fn: Optional[Callable] = None) -> np.ndarray: """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated @@ -285,9 +283,9 @@ def powder_1d_calculate(self, x_array: np.ndarray) -> np.ndarray: if borg.debug: print("CALLING FROM Cryspy\n----------------------") - return self.do_calc_setup(scale, this_x_array) + return self.do_calc_setup(scale, this_x_array, pol_fn) - def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: + def powder_1d_tof_calculate(self, x_array: np.ndarray, pol_fn) -> np.ndarray: """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated @@ -322,9 +320,9 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray) -> np.ndarray: if borg.debug: print("CALLING FROM Cryspy\n----------------------") - return self.do_calc_setup(scale, this_x_array) + return self.do_calc_setup(scale, this_x_array, pol_fn) - def do_calc_setup(self, scale, this_x_array): + def do_calc_setup(self, scale: float, this_x_array: np.ndarray, pol_fn: Callable) -> np.ndarray: if len(self.pattern.backgrounds) == 0: bg = np.zeros_like(this_x_array) else: @@ -374,7 +372,7 @@ def do_calc_setup(self, scale, this_x_array): if self.polarized: # TODO *REPLACE PLACEHOLDER FN* dependents, additional_data = self.polarized_update( - lambda up, down: up + down, + pol_fn, crystals, profiles, peak_dat, @@ -409,7 +407,7 @@ def do_calc_setup(self, scale, this_x_array): ) # return returned_deps - def calculate(self, x_array: np.ndarray) -> np.ndarray: + def calculate(self, x_array: np.ndarray, pol_fn: Optional[Callable] = None) -> np.ndarray: """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated @@ -419,19 +417,22 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: """ res = np.zeros_like(x_array) self.additional_data["ivar"] = res + args = [x_array] + if pol_fn is not None: + args.append(pol_fn) if self.type == "powder1DCW": - return self.powder_1d_calculate(x_array) + return self.powder_1d_calculate(*args) if self.type == "powder1DTOF": - return self.powder_1d_tof_calculate(x_array) + return self.powder_1d_tof_calculate(*args) return res - def get_phase_components(self, phase_name): + def get_phase_components(self, phase_name: str) -> List[np.ndarray]: data = None if phase_name in self.additional_data["phase_names"]: data = self.additional_data["phases"][phase_name].copy() return data - def get_calculated_y_for_phase(self, phase_idx: int) -> list: + def get_calculated_y_for_phase(self, phase_idx: int) -> List[np.ndarray]: """ For a given phase index, return the calculated y :param phase_idx: index of the phase @@ -453,7 +454,7 @@ def get_total_y_for_phases(self) -> Tuple[np.ndarray, np.ndarray]: ) return x_values, y_values - def get_hkl(self, idx: int = 0, phase_name=None, encoded_name=False) -> dict: + def get_hkl(self, idx: int = 0, phase_name: Optional[str] = None, encoded_name: bool = False) -> dict: # Collate and return if phase_name is not None: if encoded_name: @@ -520,7 +521,7 @@ def polarized_update(func, crystals, profiles, peak_dat, scales, x_str): ) return dependent, output - def get_phase_components(self, phase_name): + def get_phase_components(self, phase_name: str) -> Optional[dict]: data = None if phase_name in self.additional_data["phase_names"]: data = self.additional_data[phase_name].copy() diff --git a/easyDiffractionLib/components/phase.py b/easyDiffractionLib/components/phase.py new file mode 100644 index 00000000..eba8ece1 --- /dev/null +++ b/easyDiffractionLib/components/phase.py @@ -0,0 +1,39 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from easyCrystallography.Structures.Phase import Phase as ecPhase, Phases as ecPhases +from .site import Site, Atoms + +class Phase(ecPhase): + + _SITE_CLASS = Site + _ATOM_CLASS = Atoms + + def add_atom(self, *args, **kwargs): + super(Phase, self).add_atom(*args, **kwargs) + if self.interface is not None: + self.interface().link_atom(self, self.atoms[-1]) + + def remove_atom(self, key): + item = self.atoms[key] + super(Phase, self).remove_atom(key) + if self.interface is not None: + self.interface().remove_atom(self, item) + + +class Phases(ecPhases): + + _SITE_CLASS = Site + _ATOM_CLASS = Atoms + _PHASE_CLASS = Phase + + def append(self, item: Phase): + super(Phases, self).append(item) + if self.interface is not None: + self.interface().add_phase(self, item) + + def __delitem__(self, key): + item = self[key] + if self.interface is not None: + self.interface().remove_phase(self, item) + super(Phases, self).__delitem__(key) \ No newline at end of file diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py new file mode 100644 index 00000000..5a60b491 --- /dev/null +++ b/easyDiffractionLib/components/site.py @@ -0,0 +1,99 @@ +# SPDX-FileCopyrightText: 2022 easyCrystallography contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2022 Contributors to the easyCore project +# + +__author__ = 'github.com/wardsimon' +__version__ = '0.2.0' + +from typing import List, Union, ClassVar, TypeVar, Optional + +from easyCore import np +from easyCore.Objects.Base import Descriptor, Parameter, BaseObj +from easyCore.Objects.Groups import BaseCollection +from easyCore.Utils.io.star import StarLoop + +from easyCrystallography.Components.Site import Site as ecSite, \ + PeriodicSite as ecPeriodicSite, \ + Atoms as ecAtoms, \ + PeriodicAtoms as ecPeriodicAtoms +from easyCrystallography.Components.Lattice import PeriodicLattice +from easyCrystallography.Components.Specie import Specie +from easyCrystallography.Components.AtomicDisplacement import AtomicDisplacement + + +class Site(ecSite): + + def __init__( + self, + label: Optional[Union[str, Descriptor]] = None, + specie: Optional[Union[str, Specie]] = None, + occupancy: Optional[Union[float, Parameter]] = None, + fract_x: Optional[Union[float, Parameter]] = None, + fract_y: Optional[Union[float, Parameter]] = None, + fract_z: Optional[Union[float, Parameter]] = None, + adp: Optional[Union[str, AtomicDisplacement]] = None, + interface: Optional = None, + **kwargs, + ): + super(Site, self).__init__( + label=label, + specie=specie, + occupancy=occupancy, + fract_x=fract_x, + fract_y=fract_y, + fract_z=fract_z, + adp=AtomicDisplacement.default(), + ) + self.interface = interface + if adp is not None: + if isinstance(adp, str): + adp = AtomicDisplacement.from_pars( + adp, interface=self.interface, **kwargs + ) + self.adp = adp + + +class PeriodicSite(ecPeriodicSite): + + @classmethod + def from_site(cls, lattice: PeriodicLattice, site: Site): + kwargs = ecPeriodicSite._from_site_kwargs(lattice, site) + if hasattr(site, "adp"): + kwargs["adp"] = site.adp + return cls(**kwargs) + + +class Atoms(ecAtoms): + + _SITE_CLASS = Site + + def to_star(self) -> List[StarLoop]: + main_loop = super(Atoms, self).to_star()[0] + adps = [hasattr(item, "adp") for item in self] + has_adp = any(adps) + if not has_adp: + return [main_loop] + add_loops = [] + adp_types = [item.adp.adp_type.raw_value for item in self] + if all(adp_types): + if adp_types[0] in ["Uiso", "Biso"]: + main_loop = main_loop.join( + StarLoop.from_StarSections( + [getattr(item, "adp").to_star(item.label) for item in self] + ), + "label", + ) + else: + entries = [] + for item in self: + entries.append(item.adp.to_star(item.label)) + add_loops.append(StarLoop.from_StarSections(entries)) + else: + raise NotImplementedError("Multiple types of ADP are not supported") + loops = [main_loop, *add_loops] + return loops + + +class PeriodicAtoms(ecPeriodicAtoms): + _SITE_CLASS = PeriodicSite \ No newline at end of file diff --git a/easyDiffractionLib/elements/Experiments/Pattern.py b/easyDiffractionLib/elements/Experiments/Pattern.py index 488f9555..7c3ee81e 100644 --- a/easyDiffractionLib/elements/Experiments/Pattern.py +++ b/easyDiffractionLib/elements/Experiments/Pattern.py @@ -37,7 +37,8 @@ class Pattern1D(BaseObj): } def __init__(self, - zero_shift: Parameter, scale: Parameter, + zero_shift: Parameter, + scale: Parameter, backgrounds: BackgroundContainer, interface=None): super().__init__(self.__class__.__name__, diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index ce3cbbc4..4234a51f 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -22,7 +22,7 @@ class Sample(BaseObj): _pattern: ClassVar def __init__(self, phases: Union[Phase, Phases] = None, - parameters=None, pattern=None, calculator=None, + parameters=None, pattern=None, interface=None, name: str = 'easySample'): if isinstance(phases, Phase): phases = Phases('Phases', phases) @@ -61,9 +61,7 @@ def __init__(self, phases: Union[Phase, Phases] = None, self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') print(f"Temp CIF: {self.filename}") self.output_index = None - if calculator is not None: - self.interface = calculator - elif interface is not None: + if interface is not None: self.interface = interface else: self.interface = InterfaceFactory() diff --git a/examples/Fitting.ipynb b/examples/Fitting.ipynb index edd404e2..1c0547d6 100644 --- a/examples/Fitting.ipynb +++ b/examples/Fitting.ipynb @@ -30,7 +30,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GSAS-II binary directory: /srv/conda/envs/notebook/lib/python3.7/site-packages/GSASII/bindist\n", + "GSAS-II binary directory: /Users/simonward/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-aaz-ZByB-py3.7/lib/python3.7/site-packages/GSASII/bindist\n", "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" ] } @@ -44,8 +44,8 @@ "from easyDiffractionLib import Phases\n", "from easyDiffractionLib.sample import Sample as Job\n", "from easyDiffractionLib.interface import InterfaceFactory as Calculator\n", - "from easyDiffractionLib.Elements.Experiments.Pattern import Pattern1D\n", - "from easyDiffractionLib.Elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", + "from easyDiffractionLib.elements.Experiments.Pattern import Pattern1D\n", + "from easyDiffractionLib.elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", "from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams\n", "\n", "# Vizualization\n", @@ -81,23 +81,23 @@ " return new Date();\n", " }\n", "\n", - " const force = true;\n", + " var force = true;\n", "\n", " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", - " const JS_MIME_TYPE = 'application/javascript';\n", - " const HTML_MIME_TYPE = 'text/html';\n", - " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", - " const CLASS_NAME = 'output_bokeh rendered_html';\n", + " var JS_MIME_TYPE = 'application/javascript';\n", + " var HTML_MIME_TYPE = 'text/html';\n", + " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " var CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", - " const script = document.createElement(\"script\");\n", + " var script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", @@ -105,10 +105,10 @@ " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", - " const cell = handle.cell;\n", + " var cell = handle.cell;\n", "\n", - " const id = cell.output_area._bokeh_element_id;\n", - " const server_id = cell.output_area._bokeh_server_id;\n", + " var id = cell.output_area._bokeh_element_id;\n", + " var server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id != null && id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", @@ -117,11 +117,11 @@ "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", - " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", - " cell.notebook.kernel.execute(cmd_clean, {\n", + " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd, {\n", " iopub: {\n", " output: function(msg) {\n", - " const id = msg.content.text.trim();\n", + " var id = msg.content.text.trim();\n", " if (id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", @@ -130,8 +130,8 @@ " }\n", " });\n", " // Destroy server and session\n", - " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", - " cell.notebook.kernel.execute(cmd_destroy);\n", + " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd);\n", " }\n", " }\n", "\n", @@ -139,15 +139,15 @@ " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", - " const output_area = handle.output_area;\n", - " const output = handle.output;\n", + " var output_area = handle.output_area;\n", + " var output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", - " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", @@ -155,10 +155,10 @@ " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", - " const bk_div = document.createElement(\"div\");\n", + " var bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", - " const script_attrs = bk_div.children[0].attributes;\n", - " for (let i = 0; i < script_attrs.length; i++) {\n", + " var script_attrs = bk_div.children[0].attributes;\n", + " for (var i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", " }\n", @@ -171,14 +171,14 @@ "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", - " const toinsert = this.create_output_subarea(\n", + " var toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", - " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[toinsert.length - 1]);\n", " element.append(toinsert);\n", " return toinsert\n", @@ -204,8 +204,8 @@ "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", - " const events = require('base/js/events');\n", - " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", + " var events = require('base/js/events');\n", + " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", @@ -218,7 +218,7 @@ " root._bokeh_failed_load = false;\n", " }\n", "\n", - " const NB_LOAD_WARNING = {'data': {'text/html':\n", + " var NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

\\n\"+\n", " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", @@ -235,7 +235,7 @@ " \"

\"}};\n", "\n", " function display_loaded() {\n", - " const el = document.getElementById(\"1002\");\n", + " var el = document.getElementById(\"1002\");\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", @@ -301,6 +301,8 @@ " document.body.appendChild(element);\n", " }\n", "\n", + " const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.2.min.js\": \"XypntL49z55iwGVUW4qsEu83zKL3XEcz0MjuGOQ9SlaaQ68X/g+k1FcioZi7oQAc\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.2.min.js\": \"bEsM86IHGDTLCS0Zod8a8WM6Y4+lafAL/eSiyQcuPzinmWNgNO2/olUF0Z2Dkn5i\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.2.min.js\": \"TX0gSQTdXTTeScqxj6PVQxTiRW8DOoGVwinyi1D3kxv7wuxQ02XkOxv0xwiypcAH\"};\n", + "\n", " for (let i = 0; i < js_urls.length; i++) {\n", " const url = js_urls[i];\n", " const element = document.createElement('script');\n", @@ -308,6 +310,10 @@ " element.onerror = on_error.bind(null, url);\n", " element.async = false;\n", " element.src = url;\n", + " if (url in hashes) {\n", + " element.crossOrigin = \"anonymous\";\n", + " element.integrity = \"sha384-\" + hashes[url];\n", + " }\n", " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.head.appendChild(element);\n", " }\n", @@ -320,11 +326,11 @@ " }\n", "\n", " \n", - " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.0.min.js\"];\n", - " const css_urls = [];\n", + " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.2.min.js\"];\n", + " var css_urls = [];\n", " \n", "\n", - " const inline_js = [\n", + " var inline_js = [\n", " function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", @@ -338,7 +344,7 @@ " \n", " if (root.Bokeh !== undefined || force === true) {\n", " \n", - " for (let i = 0; i < inline_js.length; i++) {\n", + " for (var i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\n", " }\n", " if (force === true) {\n", @@ -349,7 +355,7 @@ " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", " root._bokeh_failed_load = true;\n", " } else if (force !== true) {\n", - " const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n", + " var cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n", " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", " }\n", "\n", @@ -366,7 +372,7 @@ " }\n", "}(window));" ], - "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.0.min.js\"];\n const css_urls = [];\n \n\n const inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.2.min.js\": \"XypntL49z55iwGVUW4qsEu83zKL3XEcz0MjuGOQ9SlaaQ68X/g+k1FcioZi7oQAc\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.2.min.js\": \"bEsM86IHGDTLCS0Zod8a8WM6Y4+lafAL/eSiyQcuPzinmWNgNO2/olUF0Z2Dkn5i\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.2.min.js\": \"TX0gSQTdXTTeScqxj6PVQxTiRW8DOoGVwinyi1D3kxv7wuxQ02XkOxv0xwiypcAH\"};\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n if (url in hashes) {\n element.crossOrigin = \"anonymous\";\n element.integrity = \"sha384-\" + hashes[url];\n }\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.2.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" }, "metadata": {}, "output_type": "display_data" @@ -448,15 +454,25 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collection of 1 phases.\n", - "Phase `PbSO4`\n" + "ename": "TypeError", + "evalue": "__init__() got multiple values for argument 'label'", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mTypeError\u001B[0m Traceback (most recent call last)", + "\u001B[0;32m\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[0;32m----> 1\u001B[0;31m \u001B[0mphases\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mPhases\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mfrom_cif_file\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif_fname\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 2\u001B[0m \u001B[0mphase\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mphases\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m0\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 3\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 4\u001B[0m \u001B[0mprint\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mphases\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 5\u001B[0m \u001B[0mprint\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mphase\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m~/PycharmProjects/easyScience/easyCrystallography/easyCrystallography/Structures/Phase.py\u001B[0m in \u001B[0;36mfrom_cif_file\u001B[0;34m(cls, file_path)\u001B[0m\n\u001B[1;32m 374\u001B[0m \u001B[0;34m@\u001B[0m\u001B[0mclassmethod\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 375\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mfrom_cif_file\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcls\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mfile_path\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mPath\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 376\u001B[0;31m \u001B[0m_\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mcrystals\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcls\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_from_external\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcls\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mCifIO\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mfrom_file\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mfile_path\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 377\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0mcls\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m\"Phases\"\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0;34m*\u001B[0m\u001B[0mcrystals\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 378\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m~/PycharmProjects/easyScience/easyCrystallography/easyCrystallography/Structures/Phase.py\u001B[0m in \u001B[0;36m_from_external\u001B[0;34m(cls, constructor, *args)\u001B[0m\n\u001B[1;32m 383\u001B[0m \u001B[0mcrystals\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 384\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mcif_index\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mrange\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_parser\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mnumber_of_cifs\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 385\u001B[0;31m \u001B[0mname\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mkwargs\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcif\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mto_crystal_form\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0matoms_class\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mcls\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_ATOM_CLASS\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 386\u001B[0m \u001B[0mcrystals\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mappend\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcls\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_PHASE_CLASS\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mname\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0;34m**\u001B[0m\u001B[0mkwargs\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 387\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0mname\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mcrystals\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m~/PycharmProjects/easyScience/easyCrystallography/easyCrystallography/io/cif.py\u001B[0m in \u001B[0;36mto_crystal_form\u001B[0;34m(self, cif_index, atoms_class)\u001B[0m\n\u001B[1;32m 89\u001B[0m \u001B[0;34m'cell'\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_parser\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mget_lattice\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 90\u001B[0m \u001B[0;34m'spacegroup'\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_parser\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mget_symmetry\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 91\u001B[0;31m \u001B[0;34m'atoms'\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_parser\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mget_atoms\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0matoms_class\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0matoms_class\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 92\u001B[0m }\n\u001B[1;32m 93\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m~/PycharmProjects/easyScience/easyCrystallography/easyCrystallography/io/cif.py\u001B[0m in \u001B[0;36mget_atoms\u001B[0;34m(self, cif_index, atoms_class)\u001B[0m\n\u001B[1;32m 437\u001B[0m \u001B[0mthis_loop\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0midx\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_kwargs\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mkey\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mloop\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0midx\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_kwargs\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mkey\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 438\u001B[0m atoms = this_loop.to_class(Atoms, Site,\n\u001B[0;32m--> 439\u001B[0;31m [[k1, k2] for k1, k2 in zip(our_fields, required_fields)])\n\u001B[0m\u001B[1;32m 440\u001B[0m \u001B[0matoms\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mname\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0matoms_obj_name\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 441\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0midx0\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0matom\u001B[0m \u001B[0;32min\u001B[0m \u001B[0menumerate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0matoms\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m~/PycharmProjects/easyScience/easyCore/easyCore/Utils/io/star.py\u001B[0m in \u001B[0;36mto_class\u001B[0;34m(self, cls_outer, cls_inner, name_conversions)\u001B[0m\n\u001B[1;32m 514\u001B[0m **{\n\u001B[1;32m 515\u001B[0m \u001B[0mk\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m0\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0midx\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_kwargs\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mk\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m1\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mraw_value\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 516\u001B[0;31m \u001B[0;32mfor\u001B[0m \u001B[0mk\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mname_conversions\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 517\u001B[0m }\n\u001B[1;32m 518\u001B[0m )\n", + "\u001B[0;32m~/PycharmProjects/easyScience/easyCrystallography/easyCrystallography/Components/Site.py\u001B[0m in \u001B[0;36mfrom_pars\u001B[0;34m(cls, label, specie, occupancy, fract_x, fract_y, fract_z, interface)\u001B[0m\n\u001B[1;32m 120\u001B[0m \u001B[0mfract_y\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 121\u001B[0m \u001B[0mfract_z\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 122\u001B[0;31m \u001B[0minterface\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0minterface\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 123\u001B[0m )\n\u001B[1;32m 124\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m~/PycharmProjects/easyScience/easyDiffractionLib/easyDiffractionLib/components/site.py\u001B[0m in \u001B[0;36m__init__\u001B[0;34m(self, label, specie, occupancy, fract_x, fract_y, fract_z, adp, interface, **kwargs)\u001B[0m\n\u001B[1;32m 45\u001B[0m \u001B[0mfract_y\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mfract_y\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 46\u001B[0m \u001B[0mfract_z\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mfract_z\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 47\u001B[0;31m \u001B[0madp\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mAtomicDisplacement\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdefault\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 48\u001B[0m )\n\u001B[1;32m 49\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0minterface\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0minterface\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;31mTypeError\u001B[0m: __init__() got multiple values for argument 'label'" ] } ], @@ -477,69 +493,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "structure = py3Dmol.view()\n", "structure.addModel(phase.to_cif_str(), 'cif')\n", @@ -565,27 +521,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "# PbSO4 D1A(ILL)(Rietveld Refinement Round Robin, R.J. Hill, JApC 25, 589 (1992)\n", - " 10.0000 220.0000 14.8324\n", - " 10.0500 214.0000 14.6287\n", - " 10.1000 219.0000 14.7986\n", - " 10.1500 224.0000 14.9666\n", - " 10.2000 198.0000 14.0712\n", - " 10.2500 229.0000 15.1327\n", - " 10.3000 224.0000 14.9666\n", - " 10.3500 216.0000 14.6969\n", - " 10.4000 202.0000 14.2127\n", - " 10.4500 229.0000 15.1327\n" - ] - } - ], + "outputs": [], "source": [ "meas_fname = 'D1A@ILL.xye'\n", "\n", @@ -604,7 +542,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -620,66 +558,11 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "tags": [] }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function embed_document(root) {\n", - " \n", - " const docs_json = {\"5817d16a-7152-469c-acae-1957dc8829c4\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1051\"}],\"height\":300,\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"width\":990,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1038\"}]},\"id\":\"1052\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAAAKBpQAAAAAAAwGhAAAAAAAAAaUAAAAAAAOBoQAAAAAAAgGZAAAAAAABgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAACgaEAAAAAAAIBoQAAAAAAAQGhAAAAAAACgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAABgZ0AAAAAAAOBnQAAAAAAAoGlAAAAAAAAAaUAAAAAAAMBoQAAAAAAAAGlAAAAAAACAaUAAAAAAAIBoQAAAAAAAYGhAAAAAAABAaEAAAAAAAABpQAAAAAAAwGhAAAAAAAAgaUAAAAAAAABqQAAAAAAAoGlAAAAAAABgakAAAAAAAGBqQAAAAAAAgGtAAAAAAACAa0AAAAAAAIBqQAAAAAAAAGpAAAAAAADAakAAAAAAAEBsQAAAAAAAYG1AAAAAAAAgbUAAAAAAAKBtQAAAAAAAQG5AAAAAAABAbkAAAAAAAKBuQAAAAAAA4G1AAAAAAABAbEAAAAAAAABtQAAAAAAAwG1AAAAAAABAbEAAAAAAAEBrQAAAAAAAQGtAAAAAAADAakAAAAAAAKBpQAAAAAAAAGlAAAAAAAAgaEAAAAAAAGBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAOBpQAAAAAAA4GpAAAAAAADgaUAAAAAAAEBrQAAAAAAAQGtAAAAAAACAa0AAAAAAAIBrQAAAAAAAoGxAAAAAAACAbUAAAAAAAMBvQAAAAAAAgHBAAAAAAACAcUAAAAAAABByQAAAAAAAEHJAAAAAAADwckAAAAAAAOByQAAAAAAAkHJAAAAAAACQcUAAAAAAAGBxQAAAAAAAgHFAAAAAAACQcEAAAAAAACBwQAAAAAAAYG5AAAAAAAAAbkAAAAAAAABtQAAAAAAA4GxAAAAAAAAgbUAAAAAAAMBuQAAAAAAAAG9AAAAAAAAgb0AAAAAAAABwQAAAAAAAAHFAAAAAAAAQckAAAAAAAHBzQAAAAAAAQHVAAAAAAACwdkAAAAAAAJB4QAAAAAAAgHtAAAAAAACgfUAAAAAAACB+QAAAAAAAwH5AAAAAAADAf0AAAAAAAOB+QAAAAAAAsH1AAAAAAABwe0AAAAAAANB5QAAAAAAAAHdAAAAAAACwdEAAAAAAALByQAAAAAAA4HFAAAAAAABgcEAAAAAAACBuQAAAAAAAwG1AAAAAAACAb0AAAAAAALBwQAAAAAAAQHFAAAAAAABgcUAAAAAAAMByQAAAAAAAUHRAAAAAAAAAdUAAAAAAAHB2QAAAAAAAUHlAAAAAAACgfEAAAAAAAFB/QAAAAAAAoIFAAAAAAAAAhEAAAAAAAHiGQAAAAAAAeIhAAAAAAAAoikAAAAAAAJiKQAAAAAAAEItAAAAAAADgiUAAAAAAANiHQAAAAAAAyIVAAAAAAADQg0AAAAAAAOiAQAAAAAAAEH1AAAAAAABweEAAAAAAAPB1QAAAAAAA0HJAAAAAAADAcUAAAAAAAEBwQAAAAAAAAG9AAAAAAAAQcEAAAAAAAEBuQAAAAAAAwG5AAAAAAABwcEAAAAAAAPBwQAAAAAAAkHFAAAAAAADgckAAAAAAAFBzQAAAAAAA8HRAAAAAAABgdUAAAAAAAJB1QAAAAAAAQHZAAAAAAADwdUAAAAAAAFB1QAAAAAAA4HRAAAAAAAAQdEAAAAAAAOBxQAAAAAAAwHBAAAAAAAAAcEAAAAAAAMBtQAAAAAAAoGxAAAAAAABAa0AAAAAAAOBrQAAAAAAAAGtAAAAAAABgaUAAAAAAAGBpQAAAAAAAQGhAAAAAAACgaUAAAAAAAIBoQAAAAAAAIGhAAAAAAADAaUAAAAAAACBpQAAAAAAAIGlAAAAAAAAgaUAAAAAAAABpQAAAAAAAQGhAAAAAAACAaEAAAAAAAGBpQAAAAAAAYGhAAAAAAACAaEAAAAAAAGBqQAAAAAAAAGtAAAAAAADgaUAAAAAAAOBqQAAAAAAAoGtAAAAAAACgbUAAAAAAAABvQAAAAAAAUHBAAAAAAABwcUAAAAAAAPBzQAAAAAAAEHVAAAAAAADAdkAAAAAAAHB6QAAAAAAAkH5AAAAAAABogUAAAAAAALCDQAAAAAAAyIZAAAAAAACwiUAAAAAAAHiNQAAAAAAAjJBAAAAAAACwkkAAAAAAAEyTQAAAAAAAEJNAAAAAAADkkkAAAAAAAKCRQAAAAAAASI9AAAAAAAAAi0AAAAAAAMiGQAAAAAAAyIJAAAAAAAAAf0AAAAAAACB6QAAAAAAAMHZAAAAAAACQc0AAAAAAAHBwQAAAAAAAwG5AAAAAAABAbEAAAAAAAMBqQAAAAAAAwGtAAAAAAADAa0AAAAAAAGBqQAAAAAAAYGpAAAAAAABAaUAAAAAAAMBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBoQAAAAAAAIGlAAAAAAABgaUAAAAAAAGBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAIBoQAAAAAAAwGlAAAAAAABAakAAAAAAAKBoQAAAAAAAgGlAAAAAAAAAaUAAAAAAAKBpQAAAAAAAgGhAAAAAAABgaEAAAAAAAKBpQAAAAAAAgGlAAAAAAAAAaUAAAAAAAGBpQAAAAAAAAGpAAAAAAADgaUAAAAAAAEBpQAAAAAAAYGlAAAAAAADAaEAAAAAAAIBpQAAAAAAAQGpAAAAAAAAAa0AAAAAAAEBqQAAAAAAAoGxAAAAAAADgbUAAAAAAAOBuQAAAAAAAYHFAAAAAAADgckAAAAAAAEB0QAAAAAAAMHdAAAAAAABAekAAAAAAABB9QAAAAAAA0IBAAAAAAACwg0AAAAAAABiHQAAAAAAAmIpAAAAAAACAjkAAAAAAANCQQAAAAAAAJJJAAAAAAAAYk0AAAAAAACyTQAAAAAAAjJJAAAAAAAAgkUAAAAAAACCOQAAAAAAACIpAAAAAAAAghkAAAAAAAFiCQAAAAAAAAIBAAAAAAABAe0AAAAAAAHB4QAAAAAAAAHhAAAAAAAAgd0AAAAAAAHB4QAAAAAAAMHpAAAAAAAAAfEAAAAAAAKB+QAAAAAAAuIFAAAAAAACQg0AAAAAAAHiFQAAAAAAA+IZAAAAAAABgiEAAAAAAAHCIQAAAAAAASIdAAAAAAACIhkAAAAAAALCEQAAAAAAAmIJAAAAAAAB4gEAAAAAAAOB7QAAAAAAAkHhAAAAAAADwdEAAAAAAANByQAAAAAAAQHFAAAAAAABgb0AAAAAAAEBuQAAAAAAAoGxAAAAAAAAgakAAAAAAAOBqQAAAAAAAQGtAAAAAAADAakAAAAAAACBqQAAAAAAAAGpAAAAAAACAakAAAAAAAEBqQAAAAAAAIGpAAAAAAABAakAAAAAAAKBpQAAAAAAAIGpAAAAAAABgakAAAAAAAGBqQAAAAAAAAGtAAAAAAACgaUAAAAAAAIBpQAAAAAAAQGlAAAAAAAAgaUAAAAAAAABpQAAAAAAA4GlAAAAAAACgaUAAAAAAAEBpQAAAAAAAIGpAAAAAAABAaUAAAAAAAGBpQAAAAAAAwGlAAAAAAADAaUAAAAAAAABpQAAAAAAAQGhAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGlAAAAAAABAakAAAAAAAOBpQAAAAAAAoGlAAAAAAABAakAAAAAAAIBpQAAAAAAAYGlAAAAAAABAaUAAAAAAAKBpQAAAAAAAIGlAAAAAAAAgaUAAAAAAAOBpQAAAAAAAoGhAAAAAAADAaEAAAAAAAGBpQAAAAAAAIGpAAAAAAAAgakAAAAAAAABqQAAAAAAAgGlAAAAAAAAgakAAAAAAAOBoQAAAAAAAgGlAAAAAAADAaUAAAAAAACBpQAAAAAAAoGlAAAAAAABAaUAAAAAAAIBpQAAAAAAAwGhAAAAAAADAaEAAAAAAAKBqQAAAAAAAQGpAAAAAAACAakAAAAAAAMBqQAAAAAAA4GpAAAAAAAAga0AAAAAAAEBqQAAAAAAAwGpAAAAAAADgakAAAAAAAOBqQAAAAAAA4GpAAAAAAAAga0AAAAAAAMBrQAAAAAAA4GxAAAAAAADgbkAAAAAAAIBvQAAAAAAAEHFAAAAAAAAAc0AAAAAAAMB0QAAAAAAA4HZAAAAAAACAeUAAAAAAAPB8QAAAAAAAoIBAAAAAAABYg0AAAAAAAPCGQAAAAAAA4IlAAAAAAACAjUAAAAAAAFiPQAAAAAAAfJBAAAAAAAC4kEAAAAAAANCPQAAAAAAAgI1AAAAAAAAIikAAAAAAAKiGQAAAAAAAyINAAAAAAACwf0AAAAAAANB7QAAAAAAAsHdAAAAAAACwdUAAAAAAAMBzQAAAAAAAoHFAAAAAAACwcEAAAAAAANBwQAAAAAAAkHFAAAAAAAAAckAAAAAAAMByQAAAAAAAcHRAAAAAAACgdUAAAAAAAMB3QAAAAAAAAHlAAAAAAADgekAAAAAAAFB8QAAAAAAAsHxAAAAAAAAwfEAAAAAAALB6QAAAAAAAIHlAAAAAAABwd0AAAAAAAIB1QAAAAAAAUHNAAAAAAABQcUAAAAAAAJBwQAAAAAAAwG5AAAAAAADAbkAAAAAAAMBsQAAAAAAA4GtAAAAAAABgbEAAAAAAACBsQAAAAAAAIGtAAAAAAAAga0AAAAAAAOBrQAAAAAAA4GtAAAAAAACAa0AAAAAAAOBrQAAAAAAAQGxAAAAAAAAAb0AAAAAAACBwQAAAAAAAIHFAAAAAAACQckAAAAAAAEB0QAAAAAAAMHZAAAAAAACQeEAAAAAAAKB8QAAAAAAAgIBAAAAAAABogkAAAAAAAICFQAAAAAAAaIhAAAAAAABAikAAAAAAAGCLQAAAAAAAUItAAAAAAAAAikAAAAAAAOiHQAAAAAAAUIVAAAAAAAAog0AAAAAAAGCAQAAAAAAAcHxAAAAAAACAeUAAAAAAAAB4QAAAAAAA4HZAAAAAAABwd0AAAAAAAIB4QAAAAAAAoHpAAAAAAABgfUAAAAAAADiAQAAAAAAAYIJAAAAAAAD4g0AAAAAAAEiFQAAAAAAAAIZAAAAAAACohUAAAAAAAFCEQAAAAAAAwIJAAAAAAADggEAAAAAAAOB9QAAAAAAAwHlAAAAAAACAd0AAAAAAAJB1QAAAAAAAoHRAAAAAAAAQdUAAAAAAAOB1QAAAAAAA8HdAAAAAAACgekAAAAAAANB+QAAAAAAA2IFAAAAAAAAghUAAAAAAABiJQAAAAAAAwIxAAAAAAAC8kEAAAAAAAHySQAAAAAAAfJNAAAAAAACck0AAAAAAAIyTQAAAAAAAfJJAAAAAAACwkEAAAAAAAIiNQAAAAAAA6IpAAAAAAABYiUAAAAAAAGiJQAAAAAAAQItAAAAAAABIjkAAAAAAAICRQAAAAAAAdJRAAAAAAADcl0AAAAAAAKiaQAAAAAAAAJ1AAAAAAACAnUAAAAAAALScQAAAAAAAxJpAAAAAAABwl0AAAAAAACSUQAAAAAAAPJFAAAAAAABAjEAAAAAAAGiHQAAAAAAAmINAAAAAAADAgUAAAAAAADiBQAAAAAAAgIFAAAAAAABQgkAAAAAAANCDQAAAAAAAmIVAAAAAAAB4h0AAAAAAAPiIQAAAAAAAwIhAAAAAAACgiUAAAAAAADCIQAAAAAAAAIdAAAAAAABAhUAAAAAAAJiDQAAAAAAAkIFAAAAAAAAQgEAAAAAAALB8QAAAAAAAgHpAAAAAAACgdkAAAAAAANB0QAAAAAAA4HNAAAAAAADAckAAAAAAAPBxQAAAAAAAkHBAAAAAAACgcEAAAAAAAGBwQAAAAAAAcHBAAAAAAADgb0AAAAAAAOBwQAAAAAAAYHFAAAAAAAAQckAAAAAAANBzQAAAAAAAcHVAAAAAAAAAeUAAAAAAAEB9QAAAAAAAiIFAAAAAAAC4hUAAAAAAAEiLQAAAAAAAMJFAAAAAAABwlUAAAAAAAPCZQAAAAAAAiJ5AAAAAAABgoUAAAAAAAMCiQAAAAAAANqNAAAAAAAAGo0AAAAAAAIqhQAAAAAAACJ9AAAAAAAAcmkAAAAAAADiVQAAAAAAA+JBAAAAAAAAgi0AAAAAAAFCFQAAAAAAAEIJAAAAAAABIgEAAAAAAAACAQAAAAAAAyIBAAAAAAADAgkAAAAAAAACGQAAAAAAAuIpAAAAAAAAgkEAAAAAAAECTQAAAAAAA6JZAAAAAAAB0mkAAAAAAACidQAAAAAAAuJ5AAAAAAACgn0AAAAAAAICfQAAAAAAA2JxAAAAAAAAMmkAAAAAAAFSWQAAAAAAAbJJAAAAAAACwjUAAAAAAANiHQAAAAAAAuIJAAAAAAABAfkAAAAAAAEB5QAAAAAAA8HVAAAAAAAAAc0AAAAAAAMBxQAAAAAAAEHFAAAAAAAAwcEAAAAAAAGBvQAAAAAAAYG9AAAAAAACAb0AAAAAAAKBuQAAAAAAAMHBAAAAAAABAb0AAAAAAAKBvQAAAAAAAAHBAAAAAAACAcEAAAAAAANBxQAAAAAAA0HJAAAAAAACgdUAAAAAAAGB4QAAAAAAAoHxAAAAAAACAgEAAAAAAAICDQAAAAAAA6IZAAAAAAADoiUAAAAAAAKCMQAAAAAAA4I5AAAAAAAAQj0AAAAAAAAiNQAAAAAAAWIpAAAAAAAAwh0AAAAAAAPCDQAAAAAAAeIBAAAAAAAAge0AAAAAAAJB3QAAAAAAAAHRAAAAAAACgcUAAAAAAABBxQAAAAAAAAHBAAAAAAABgbkAAAAAAAABuQAAAAAAAAG5AAAAAAADAbEAAAAAAAIBrQAAAAAAAwGxAAAAAAABgbEAAAAAAAABsQAAAAAAAYGtAAAAAAABgbEAAAAAAAGBsQAAAAAAAAGxAAAAAAADAa0AAAAAAAOBrQAAAAAAAIGtAAAAAAACgakAAAAAAAABrQAAAAAAAYGtAAAAAAABga0AAAAAAAEBrQAAAAAAAgGtAAAAAAACAa0AAAAAAAIBrQAAAAAAA4GtAAAAAAAAgbUAAAAAAAKBtQAAAAAAAIG9AAAAAAAAgcEAAAAAAAFBwQAAAAAAAsHFAAAAAAAAAc0AAAAAAAEB0QAAAAAAAsHVAAAAAAAAQdkAAAAAAAHB2QAAAAAAAsHZAAAAAAAAAdkAAAAAAAFB1QAAAAAAAoHRAAAAAAABAc0AAAAAAADByQAAAAAAA8HBAAAAAAADAb0AAAAAAAKBuQAAAAAAAoG5AAAAAAADgbUAAAAAAAIBsQAAAAAAAIGtAAAAAAAAga0AAAAAAAEBrQAAAAAAA4GtAAAAAAADgaUAAAAAAAEBrQAAAAAAAwGtAAAAAAADgakAAAAAAAEBqQAAAAAAAAGtAAAAAAACgakAAAAAAAIBqQAAAAAAA4GpAAAAAAACAakAAAAAAAMBqQAAAAAAAYGpAAAAAAADAakAAAAAAACBrQAAAAAAAoGlAAAAAAADgaUAAAAAAAKBqQAAAAAAAAGpAAAAAAABgakAAAAAAAKBpQAAAAAAAwGpAAAAAAACgakAAAAAAAIBqQAAAAAAAgGpAAAAAAACgakAAAAAAAOBpQAAAAAAAYGlAAAAAAABgakAAAAAAAGBqQAAAAAAAwGpAAAAAAADAakAAAAAAAOBpQAAAAAAAYGlAAAAAAACAakAAAAAAAIBqQAAAAAAAwGpAAAAAAACgakAAAAAAAEBpQAAAAAAAQGpAAAAAAABgakAAAAAAAGBqQAAAAAAAwGpAAAAAAACga0AAAAAAACBrQAAAAAAAgGpAAAAAAADAakAAAAAAAGBrQAAAAAAA4GtAAAAAAAAgbEAAAAAAAGBsQAAAAAAAYG1AAAAAAAAAbkAAAAAAAGBuQAAAAAAAgG9AAAAAAAAgb0AAAAAAACBvQAAAAAAA4G9AAAAAAABgcEAAAAAAAKBxQAAAAAAAQHNAAAAAAADwdUAAAAAAAOB4QAAAAAAAYH1AAAAAAABogEAAAAAAAKCCQAAAAAAAMIRAAAAAAABIhUAAAAAAAMiEQAAAAAAAOINAAAAAAACYgUAAAAAAAEB+QAAAAAAAUHpAAAAAAADAdkAAAAAAANBzQAAAAAAAEHJAAAAAAABQcEAAAAAAAKBuQAAAAAAAIG1AAAAAAACAbEAAAAAAAGBrQAAAAAAAYGtAAAAAAAAga0AAAAAAAABrQAAAAAAAoGtAAAAAAADgakAAAAAAAOBqQAAAAAAAQGpAAAAAAACAakAAAAAAAIBqQAAAAAAAgGlAAAAAAAAgakAAAAAAAMBpQAAAAAAAAGtAAAAAAADgaUAAAAAAAMBqQAAAAAAA4GlAAAAAAAAgakAAAAAAAEBrQAAAAAAA4GpAAAAAAADAa0AAAAAAAEBsQAAAAAAAwGxAAAAAAADgbUAAAAAAACBvQAAAAAAAcHBAAAAAAAAwcUAAAAAAAEByQAAAAAAA0HNAAAAAAAAwdEAAAAAAAFB1QAAAAAAA4HVAAAAAAACgdEAAAAAAAAB0QAAAAAAAMHNAAAAAAADAcUAAAAAAADBxQAAAAAAAkHBAAAAAAADQcEAAAAAAADBxQAAAAAAAQHJAAAAAAABwc0AAAAAAACB1QAAAAAAAMHhAAAAAAADQeUAAAAAAAPB8QAAAAAAA4H9AAAAAAACwgEAAAAAAAHiBQAAAAAAA2IBAAAAAAACogEAAAAAAAEB/QAAAAAAAcH1AAAAAAABwfEAAAAAAAKB5QAAAAAAAUHdAAAAAAABgdUAAAAAAADBzQAAAAAAAAHJAAAAAAADgcUAAAAAAAJBxQAAAAAAAQHJAAAAAAAAwckAAAAAAAIBzQAAAAAAAYHRAAAAAAAAAdUAAAAAAAKB1QAAAAAAAUHVAAAAAAABwdEAAAAAAABBzQAAAAAAAUHFAAAAAAACwcEAAAAAAACBvQAAAAAAAoGxAAAAAAACga0AAAAAAAIBrQAAAAAAAIGtAAAAAAABgakAAAAAAAIBpQAAAAAAAYGlAAAAAAACAa0AAAAAAACBrQAAAAAAAIGtAAAAAAADAakAAAAAAAKBpQAAAAAAAoGlAAAAAAABgakAAAAAAAMBpQAAAAAAAAGpAAAAAAAAgaUAAAAAAAABqQAAAAAAAwGpAAAAAAACAakAAAAAAAMBpQAAAAAAAAGtAAAAAAABga0AAAAAAAOBqQAAAAAAAIGtAAAAAAABgakAAAAAAAMBqQAAAAAAA4GpAAAAAAAAAbEAAAAAAACBrQAAAAAAA4GpAAAAAAABAa0AAAAAAAEBrQAAAAAAAgGxAAAAAAABgbEAAAAAAAIBsQAAAAAAAIGxAAAAAAABga0AAAAAAAABrQAAAAAAAYGtAAAAAAABAa0AAAAAAAMBqQAAAAAAAgGpAAAAAAACga0AAAAAAAMBqQAAAAAAAAGpAAAAAAACAaUAAAAAAACBqQAAAAAAAIGpAAAAAAAAAakAAAAAAAIBqQAAAAAAAoGpAAAAAAABAa0AAAAAAAIBqQAAAAAAAoGlAAAAAAADgaUAAAAAAAIBpQAAAAAAAwGlAAAAAAABgakAAAAAAAABrQAAAAAAAwGpAAAAAAABAakAAAAAAAGBrQAAAAAAAwGtAAAAAAAAAbEAAAAAAAOBsQAAAAAAAYGxAAAAAAACgbUAAAAAAAGBtQAAAAAAAwG1AAAAAAACgbkAAAAAAAEBuQAAAAAAAAG9AAAAAAADAbkAAAAAAAGBuQAAAAAAAoG9AAAAAAAAwcEAAAAAAAGBxQAAAAAAAkHFAAAAAAACQckAAAAAAAGBzQAAAAAAAQHRAAAAAAAAgdEAAAAAAAHBzQAAAAAAAcHJAAAAAAACQcUAAAAAAADBwQAAAAAAAQG9AAAAAAADgbUAAAAAAACBtQAAAAAAAYGxAAAAAAABAbEAAAAAAAOBrQAAAAAAAYGpAAAAAAAAgakAAAAAAACBrQAAAAAAAwGpAAAAAAACgakAAAAAAACBrQAAAAAAAgGtAAAAAAABAakAAAAAAACBqQAAAAAAA4GpAAAAAAABAa0AAAAAAAOBqQAAAAAAAIGtAAAAAAACga0AAAAAAACBrQAAAAAAAYGtAAAAAAACAa0AAAAAAAIBsQAAAAAAAoGxAAAAAAADAbEAAAAAAAEBtQAAAAAAAYG9AAAAAAABQcEAAAAAAAAByQAAAAAAAkHNAAAAAAACgdkAAAAAAAIB6QAAAAAAAYIBAAAAAAAAwhEAAAAAAAGiIQAAAAAAAwIxAAAAAAAAAkEAAAAAAAICRQAAAAAAAjJJAAAAAAACMkkAAAAAAADiSQAAAAAAAaJFAAAAAAABQkEAAAAAAAPiOQAAAAAAA+IxAAAAAAAC4iUAAAAAAAGiGQAAAAAAAWINAAAAAAABAgEAAAAAAAFB6QAAAAAAAEHZAAAAAAABAc0AAAAAAABBxQAAAAAAAAHBAAAAAAACgbkAAAAAAAEBtQAAAAAAAwGxAAAAAAAAAbEAAAAAAAABtQAAAAAAAQGxAAAAAAADAa0AAAAAAAMBrQAAAAAAAYGxAAAAAAAAgbEAAAAAAAEBsQAAAAAAAYGxAAAAAAACgbEAAAAAAAGBtQAAAAAAAIG1AAAAAAABgbkAAAAAAAMBtQAAAAAAAoG1AAAAAAACAbUAAAAAAAABtQAAAAAAA4GxAAAAAAABgbEAAAAAAACBsQAAAAAAAgGtAAAAAAABAa0AAAAAAAOBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAACBsQAAAAAAAwGtAAAAAAADgbEAAAAAAAGBuQAAAAAAAQG9AAAAAAADQcEAAAAAAAOBxQAAAAAAAYHNAAAAAAABQdEAAAAAAAMB0QAAAAAAAEHVAAAAAAACQdEAAAAAAAPByQAAAAAAAYHFAAAAAAADAcEAAAAAAAIBvQAAAAAAAgG1AAAAAAACAbEAAAAAAAGBrQAAAAAAAIGxAAAAAAADAa0AAAAAAAMBqQAAAAAAAgGxAAAAAAACga0AAAAAAACBrQAAAAAAAoGtAAAAAAADAa0AAAAAAAEBsQAAAAAAAoG1AAAAAAADAbkAAAAAAAOBvQAAAAAAA0HBAAAAAAADAcUAAAAAAAOByQAAAAAAAkHNAAAAAAABwdEAAAAAAABB0QAAAAAAA0HRAAAAAAACwdEAAAAAAAMB0QAAAAAAAYHZAAAAAAAAgeUAAAAAAAMB8QAAAAAAAaIFAAAAAAACghEAAAAAAAAiIQAAAAAAA2IpAAAAAAAAwjUAAAAAAANiNQAAAAAAAyIxAAAAAAADAiUAAAAAAALCFQAAAAAAAEIJAAAAAAACgfUAAAAAAACB5QAAAAAAAgHVAAAAAAAAgc0AAAAAAAMByQAAAAAAAQHJAAAAAAABAckAAAAAAAOByQAAAAAAAAHNAAAAAAAAgc0AAAAAAABBzQAAAAAAA8HJAAAAAAACwckAAAAAAAGBxQAAAAAAAMHBAAAAAAAAQcEAAAAAAAKBuQAAAAAAAoG1AAAAAAAAAbkAAAAAAACBtQAAAAAAAAG1AAAAAAABgbUAAAAAAACBuQAAAAAAAEHBAAAAAAAAgcUAAAAAAAEByQAAAAAAAUHNAAAAAAADQdEAAAAAAAIB2QAAAAAAA0HdAAAAAAAAweEAAAAAAADB4QAAAAAAAIHhAAAAAAADgd0AAAAAAAAB3QAAAAAAAsHZAAAAAAAAAdkAAAAAAABB1QAAAAAAAEHRAAAAAAACQckAAAAAAAJBxQAAAAAAAkHBAAAAAAADgb0AAAAAAAGBvQAAAAAAAoG1AAAAAAADAbUAAAAAAAKBtQAAAAAAAgGxAAAAAAAAAbkAAAAAAAEBtQAAAAAAAQGxAAAAAAACgbEAAAAAAAIBsQAAAAAAAIG1AAAAAAABgbkAAAAAAACBuQAAAAAAAEHBAAAAAAABwcUAAAAAAABBzQAAAAAAAkHVAAAAAAACgeUAAAAAAAHB8QAAAAAAACIFAAAAAAABwg0AAAAAAAAiFQAAAAAAAqIZAAAAAAABohkAAAAAAAKiEQAAAAAAAgIJAAAAAAAAwgEAAAAAAALB7QAAAAAAAMHdAAAAAAAAAdUAAAAAAACByQAAAAAAAkHBAAAAAAACAb0AAAAAAAEBvQAAAAAAAgG5AAAAAAABAbkAAAAAAACBuQAAAAAAAYG5AAAAAAAAAb0AAAAAAAKBvQAAAAAAAgG9AAAAAAACAcEAAAAAAAKBwQAAAAAAAoHFAAAAAAAAwckAAAAAAAJBzQAAAAAAAoHVAAAAAAABgd0AAAAAAAPB5QAAAAAAA4HpAAAAAAAAQe0AAAAAAAOB6QAAAAAAAYHlAAAAAAAAAeEAAAAAAANB1QAAAAAAA4HNAAAAAAAAwc0AAAAAAAKByQAAAAAAAgHJAAAAAAAAAc0AAAAAAAJBzQAAAAAAAgHRAAAAAAACgdUAAAAAAAFB1QAAAAAAA8HRAAAAAAABAdEAAAAAAAAB1QAAAAAAAUHVAAAAAAABQdUAAAAAAACB3QAAAAAAA4HlAAAAAAACge0AAAAAAAKB+QAAAAAAAQIBAAAAAAACggEAAAAAAACCBQAAAAAAAiIFAAAAAAAC4gUAAAAAAAEiCQAAAAAAAQIJAAAAAAABwgUAAAAAAAHiAQAAAAAAAEH5AAAAAAACAekAAAAAAACB3QAAAAAAA0HRAAAAAAACAc0AAAAAAANByQAAAAAAAMHNAAAAAAACgc0AAAAAAAEB1QAAAAAAAsHdAAAAAAACwekAAAAAAADB9QAAAAAAAuIBAAAAAAABAgkAAAAAAANCCQAAAAAAAIIJAAAAAAACggEAAAAAAABB+QAAAAAAAoHpAAAAAAACwd0AAAAAAAJB0QAAAAAAA8HJAAAAAAAAAckAAAAAAAPBwQAAAAAAA0HBAAAAAAACwcEAAAAAAAHBwQAAAAAAAsHBAAAAAAABAcEAAAAAAAEBwQAAAAAAAcHBAAAAAAABwcEAAAAAAAOBwQAAAAAAAYHFAAAAAAABQckAAAAAAAOBzQAAAAAAAwHZAAAAAAACAekAAAAAAAACAQAAAAAAAGIRAAAAAAACIiUAAAAAAALCOQAAAAAAALJJAAAAAAAAklEAAAAAAAHSVQAAAAAAAxJVAAAAAAAAQlUAAAAAAAHCTQAAAAAAAFJJAAAAAAADUkEAAAAAAAOCPQAAAAAAAKI5AAAAAAABYjEAAAAAAANCKQAAAAAAAGIhAAAAAAAA4hEAAAAAAAFiBQAAAAAAAQH1AAAAAAABQeUAAAAAAAMB1QAAAAAAAwHNAAAAAAAAwckAAAAAAAFBxQAAAAAAAYHFAAAAAAADgcEAAAAAAAGBwQAAAAAAAwHBAAAAAAADgcEAAAAAAAHBxQAAAAAAA8HFAAAAAAADAckAAAAAAAPBzQAAAAAAAsHVAAAAAAACgd0AAAAAAAEB6QAAAAAAAUH1AAAAAAADAgEAAAAAAACiEQAAAAAAAKIhAAAAAAADojEAAAAAAAGyRQAAAAAAAmJNAAAAAAABclUAAAAAAAOCVQAAAAAAAvJRAAAAAAACQkkAAAAAAADiQQAAAAAAAeItAAAAAAAAQh0AAAAAAACCEQAAAAAAAkIJAAAAAAADIgkAAAAAAABiEQAAAAAAAyIVAAAAAAACQiEAAAAAAAFCKQAAAAAAAeIpAAAAAAAC4iEAAAAAAAPCFQAAAAAAAgIJAAAAAAADAf0AAAAAAACB6QAAAAAAAoHZAAAAAAACAdEAAAAAAALByQAAAAAAAcHFAAAAAAADgcEAAAAAAABBwQAAAAAAAoG9AAAAAAAAgcEAAAAAAABBwQAAAAAAAIG9AAAAAAACgbkAAAAAAABBwQAAAAAAAQHBAAAAAAADAcUAAAAAAAIByQAAAAAAAIHRAAAAAAABwdUAAAAAAAOB3QAAAAAAAUHlAAAAAAACweUAAAAAAAAB6QAAAAAAAYHlAAAAAAABAd0AAAAAAABB2QAAAAAAAoHRAAAAAAADQc0AAAAAAAJBzQAAAAAAAgHNAAAAAAABQc0AAAAAAAPByQAAAAAAAAHJAAAAAAABAcUAAAAAAAIBwQAAAAAAAwG5AAAAAAAAgb0AAAAAAACBuQAAAAAAAYG9AAAAAAABgbkAAAAAAAMBuQAAAAAAAwG5AAAAAAAAgb0AAAAAAAIBuQAAAAAAAgG9AAAAAAACAb0AAAAAAACBwQAAAAAAAkHBAAAAAAABwcEAAAAAAAMBxQAAAAAAAsHJAAAAAAAAAdEAAAAAAAIB1QAAAAAAAsHZAAAAAAABAd0AAAAAAAGB2QAAAAAAA8HVAAAAAAAAgdkAAAAAAAKB0QAAAAAAAIHRAAAAAAADgdEAAAAAAADB1QAAAAAAAkHVAAAAAAABQdkAAAAAAAIB2QAAAAAAAYHZAAAAAAABAd0AAAAAAAJB6QAAAAAAA8H9AAAAAAACQg0AAAAAAABCIQAAAAAAAkI1AAAAAAAB4kUAAAAAAANSSQAAAAAAALJNAAAAAAAAUkkAAAAAAAESQQAAAAAAASItAAAAAAABYhkAAAAAAAJCBQAAAAAAA4HtAAAAAAACQd0AAAAAAAMB0QAAAAAAAkHJAAAAAAACgcUAAAAAAAEBxQAAAAAAAgHBAAAAAAABQcEAAAAAAAKBwQAAAAAAAUHBAAAAAAACgb0AAAAAAACBwQAAAAAAAYHBAAAAAAABAcEAAAAAAALBxQAAAAAAAMHNAAAAAAACAdUAAAAAAACB5QAAAAAAAUHxAAAAAAACIgEAAAAAAAOCCQAAAAAAAqIRAAAAAAAAAhUAAAAAAAKiDQAAAAAAAYIJAAAAAAADgf0AAAAAAAIB7QAAAAAAAkHdAAAAAAACgdEAAAAAAANByQAAAAAAAgHFAAAAAAADQcEAAAAAAACBwQAAAAAAAgG9AAAAAAABgb0AAAAAAAIBvQAAAAAAAAHBAAAAAAACgb0AAAAAAAKBvQAAAAAAAoG9AAAAAAABgcEAAAAAAAJBwQAAAAAAAwHFAAAAAAAAwckAAAAAAADB0QAAAAAAAYHdAAAAAAADwekAAAAAAAPB/QAAAAAAA0IJAAAAAAAAwhUAAAAAAADiHQAAAAAAAoIdAAAAAAABohkAAAAAAAIiEQAAAAAAAKIJAAAAAAACgfkAAAAAAACB6QAAAAAAAwHZAAAAAAADwdEAAAAAAACBzQAAAAAAAIHJAAAAAAADgcUAAAAAAALBxQAAAAAAAsHFAAAAAAAAgcUAAAAAAAGBwQAAAAAAAoHBAAAAAAABQcEAAAAAAAFBwQAAAAAAAgHBAAAAAAADQcEAAAAAAAGBxQAAAAAAAAHJAAAAAAAAgc0AAAAAAAPBzQAAAAAAAoHRAAAAAAABwdUAAAAAAAFB1QAAAAAAAUHRAAAAAAADgc0AAAAAAAKByQAAAAAAAsHJAAAAAAAAAckAAAAAAAFBzQAAAAAAAgHVAAAAAAADgd0AAAAAAAGB6QAAAAAAAYH1AAAAAAAAAgEAAAAAAABCAQAAAAAAAGIBAAAAAAACAfkAAAAAAAIB7QAAAAAAAwHhAAAAAAADgdkAAAAAAAMB0QAAAAAAAcHNAAAAAAAAQc0AAAAAAAMByQAAAAAAAUHJAAAAAAADgcUAAAAAAACBzQAAAAAAAkHNAAAAAAADQc0AAAAAAAHB0QAAAAAAAcHVAAAAAAACgdEAAAAAAAAB0QAAAAAAAMHNAAAAAAACgckAAAAAAAKBxQAAAAAAAIHFAAAAAAACgcEAAAAAAACBxQAAAAAAA8HBAAAAAAAAgcUAAAAAAACByQAAAAAAA4HJAAAAAAAAQdEAAAAAAAOB1QAAAAAAA8HZAAAAAAAAgeEAAAAAAAKB4QAAAAAAAIHdAAAAAAABAdkAAAAAAAMB0QAAAAAAAYHNAAAAAAAAAckAAAAAAAHBxQAAAAAAAkHFAAAAAAAAgcUAAAAAAAMBxQAAAAAAAgHFAAAAAAADgcEAAAAAAAGBxQAAAAAAA0HBAAAAAAAAQcUAAAAAAAMBwQAAAAAAAsHBAAAAAAACQcEAAAAAAABBwQAAAAAAAIHBAAAAAAACwcEAAAAAAALBwQAAAAAAAUHFAAAAAAADwcUAAAAAAAOByQAAAAAAAwHRAAAAAAACAdkAAAAAAALB5QAAAAAAAkHxAAAAAAABggEAAAAAAAACDQAAAAAAA2IVAAAAAAADoikAAAAAAACCRQAAAAAAAhJVAAAAAAABUmkAAAAAAALSdQAAAAAAAKqBAAAAAAACAn0AAAAAAACCcQAAAAAAAcJdAAAAAAAB0kkAAAAAAAEiNQAAAAAAAwIZAAAAAAACog0AAAAAAAACCQAAAAAAAYIFAAAAAAAC4gEAAAAAAADiAQAAAAAAAYH5AAAAAAAAQfUAAAAAAANB6QAAAAAAAEHhAAAAAAACQdkAAAAAAAGB1QAAAAAAAgHNAAAAAAABQckAAAAAAAHBxQAAAAAAAUHFAAAAAAACQcEAAAAAAABBwQAAAAAAAAHBAAAAAAABAb0AAAAAAAEBwQAAAAAAAUHBAAAAAAAAgcEAAAAAAAHBwQAAAAAAAwHBAAAAAAADAcUAAAAAAACBzQAAAAAAAUHRAAAAAAAAQdUAAAAAAABB1QAAAAAAAgHVAAAAAAABAdUAAAAAAABB1QAAAAAAAgHRAAAAAAAAQdEAAAAAAACBzQAAAAAAAcHJAAAAAAAAQckAAAAAAAJBxQAAAAAAAsHBAAAAAAACgcEAAAAAAAOBwQAAAAAAAcHBAAAAAAAAAcEAAAAAAAKBwQAAAAAAAgHBAAAAAAAAwcEAAAAAAAFBwQAAAAAAAUHBAAAAAAAAgcEAAAAAAAKBvQAAAAAAAAG9AAAAAAACAbkAAAAAAACBvQAAAAAAAYG9AAAAAAACgbkAAAAAAAKBuQAAAAAAA4G5AAAAAAADgbkAAAAAAAMBvQAAAAAAAMHBAAAAAAABAb0AAAAAAAGBvQAAAAAAAIHBAAAAAAACAb0AAAAAAAOBvQAAAAAAAMHBAAAAAAAAAcEAAAAAAAIBwQAAAAAAAwHBAAAAAAACQcUAAAAAAAPByQAAAAAAAsHRAAAAAAAAwd0AAAAAAAEB6QAAAAAAAQH5AAAAAAACggEAAAAAAAACCQAAAAAAAMIJAAAAAAACYgUAAAAAAAHiAQAAAAAAAoH5AAAAAAAAQfUAAAAAAADB9QAAAAAAAEHxAAAAAAAAAekAAAAAAAJB4QAAAAAAA4HZAAAAAAACwdEAAAAAAAMBzQAAAAAAAkHJAAAAAAABgckAAAAAAAEByQAAAAAAA4HFAAAAAAABwckAAAAAAACBzQAAAAAAAsHNAAAAAAADgdEAAAAAAAFB3QAAAAAAAYHlAAAAAAADwe0AAAAAAADB/QAAAAAAAsH9AAAAAAACgf0AAAAAAAIB+QAAAAAAAAHtAAAAAAABweEAAAAAAAGB1QAAAAAAAsHNAAAAAAABAckAAAAAAADBxQAAAAAAAIHFAAAAAAAAwcEAAAAAAAEBvQAAAAAAAIHBAAAAAAACAb0AAAAAAAOBvQAAAAAAAwG9AAAAAAACgb0AAAAAAAMBvQAAAAAAAgG9AAAAAAAAQcEAAAAAAAEBvQAAAAAAA4G9AAAAAAABgb0AAAAAAAMBvQAAAAAAAQHBAAAAAAAAgb0AAAAAAAKBvQAAAAAAAwG9AAAAAAAAwcEAAAAAAAMBwQAAAAAAA4HBAAAAAAADAcUAAAAAAABBzQAAAAAAAIHRAAAAAAADAdkAAAAAAABB6QAAAAAAAYH1AAAAAAADogUAAAAAAADCFQAAAAAAAGIhAAAAAAAB4ikAAAAAAALCKQAAAAAAA0IhAAAAAAACAhkAAAAAAABiDQAAAAAAAQIBAAAAAAADwfEAAAAAAAMB5QAAAAAAA8HhAAAAAAAAAekAAAAAAAMB6QAAAAAAAAHtAAAAAAABAekAAAAAAACB5QAAAAAAAwHZAAAAAAADAdUAAAAAAAOB0QAAAAAAAEHRAAAAAAACgdEAAAAAAAGB1QAAAAAAAwHdAAAAAAAAQeEAAAAAAAEB6QAAAAAAAkHtAAAAAAAAQfUAAAAAAAMB7QAAAAAAAYHlAAAAAAADwd0AAAAAAAJB1QAAAAAAAwHRAAAAAAAAQdEAAAAAAAEBzQAAAAAAAQHJAAAAAAADwckAAAAAAAKBzQAAAAAAA0HRAAAAAAACwd0AAAAAAAGB7QAAAAAAAkH9AAAAAAACQgkAAAAAAAJiEQAAAAAAAaIZAAAAAAAAQh0AAAAAAADCGQAAAAAAAEIRAAAAAAAAYgUAAAAAAAMB+QAAAAAAAUHpAAAAAAAAgeEAAAAAAAIB1QAAAAAAAEHVAAAAAAADgdUAAAAAAAMB2QAAAAAAA8HlAAAAAAACgf0AAAAAAAFCCQAAAAAAAEIVAAAAAAABwh0AAAAAAAJiIQAAAAAAAiIdAAAAAAABQhUAAAAAAAKiCQAAAAAAAMH9AAAAAAAAQekAAAAAAAKB2QAAAAAAAQHVAAAAAAADgckAAAAAAAOBxQAAAAAAAgHFAAAAAAACwcUAAAAAAAEBxQAAAAAAAoHFAAAAAAADAcUAAAAAAAHByQAAAAAAAYHNAAAAAAADwc0AAAAAAABB0QAAAAAAAAHNAAAAAAACgckAAAAAAAFByQAAAAAAAsHFAAAAAAABQcUAAAAAAANBwQAAAAAAAkHBAAAAAAABQcUAAAAAAALBxQAAAAAAAsHFAAAAAAABQckAAAAAAAPByQAAAAAAAAHRAAAAAAADAc0AAAAAAALB0QAAAAAAAoHVAAAAAAABwdEAAAAAAAIB0QAAAAAAAIHNAAAAAAAAwckAAAAAAAOBxQAAAAAAAYHFAAAAAAAAQcUAAAAAAALBwQAAAAAAAAHFAAAAAAAAQcEAAAAAAAEBwQAAAAAAAkHBAAAAAAACAcEAAAAAAAABxQAAAAAAA4HBAAAAAAADAcEAAAAAAANBwQAAAAAAA8HFAAAAAAABAckAAAAAAAHByQAAAAAAA0HNAAAAAAADwdEAAAAAAAMB2QAAAAAAAoHlAAAAAAADQfUAAAAAAAGCBQAAAAAAAEIRAAAAAAACYh0AAAAAAAACLQAAAAAAAkI1AAAAAAABQjkAAAAAAAGiNQAAAAAAAMItAAAAAAAC4h0AAAAAAADiEQAAAAAAA4IBAAAAAAABAfUAAAAAAACB6QAAAAAAAsHdAAAAAAADQd0AAAAAAAFB5QAAAAAAA4HtAAAAAAADAfUAAAAAAAFiAQAAAAAAAiIFAAAAAAABYgUAAAAAAAIiAQAAAAAAAUH5AAAAAAABAe0AAAAAAAOB4QAAAAAAAMHZAAAAAAAAgdEAAAAAAAABzQAAAAAAA0HFAAAAAAADgcEAAAAAAAGBxQAAAAAAAQHBAAAAAAADAcEAAAAAAAIBwQAAAAAAAkHBAAAAAAABwcEAAAAAAALBwQAAAAAAA4HFAAAAAAABQckAAAAAAADByQAAAAAAA8HNAAAAAAADgdkAAAAAAALB5QAAAAAAA0HxAAAAAAACQfkAAAAAAAEiAQAAAAAAAWIFAAAAAAAAwgUAAAAAAAPB/QAAAAAAAYH5AAAAAAABAe0AAAAAAAIB4QAAAAAAAAHdAAAAAAACgdEAAAAAAAIB0QAAAAAAAcHVAAAAAAAAwd0AAAAAAAKB4QAAAAAAAkHtAAAAAAABAfUAAAAAAAFB9QAAAAAAAgHxAAAAAAAAAekAAAAAAAKB4QAAAAAAAkHZAAAAAAACgdEAAAAAAAIBzQAAAAAAAUHJAAAAAAADQcUAAAAAAAOBxQAAAAAAAMHFAAAAAAAAgcUAAAAAAAJBxQAAAAAAAcHFAAAAAAACgckAAAAAAAIBzQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1052\"}]},\"id\":\"1051\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"5817d16a-7152-469c-acae-1957dc8829c4\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"d1f4ee00-9780-4c1f-84c7-b8c1c6fb8190\"}}];\n", - " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", - "\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " let attempts = 0;\n", - " const timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " clearInterval(timer);\n", - " embed_document(root);\n", - " } else {\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " clearInterval(timer);\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " }\n", - " }\n", - " }, 10, root)\n", - " }\n", - "})(window);" - ], - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "1003" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", "fig.line(meas_x, meas_y, legend_label='Imeas', color='steelblue', line_width=2)\n", @@ -702,7 +585,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -711,34 +594,18 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Current calculator engine: CrysPy\n" - ] - } - ], + "outputs": [], "source": [ "print(f\"Current calculator engine: {calculator.current_interface_name}\")" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Temp CIF: /tmp/easydiffraction_temp.cif\n" - ] - } - ], + "outputs": [], "source": [ "job = Job(phases=phases, parameters=CWParams.default(), calculator=calculator)" ] @@ -752,7 +619,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -768,66 +635,11 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { "tags": [] }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function embed_document(root) {\n", - " \n", - " const docs_json = {\"345dd7ec-cb67-424a-8348-850ecf33badd\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1128\"}],\"center\":[{\"id\":\"1131\"},{\"id\":\"1135\"},{\"id\":\"1167\"}],\"height\":300,\"left\":[{\"id\":\"1132\"}],\"renderers\":[{\"id\":\"1154\"},{\"id\":\"1173\"}],\"title\":{\"id\":\"1156\"},\"toolbar\":{\"id\":\"1143\"},\"width\":990,\"x_range\":{\"id\":\"1120\"},\"x_scale\":{\"id\":\"1124\"},\"y_range\":{\"id\":\"1122\"},\"y_scale\":{\"id\":\"1126\"}},\"id\":\"1119\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1185\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1171\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1186\"},\"selection_policy\":{\"id\":\"1185\"}},\"id\":\"1169\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1136\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1137\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1142\"}},\"id\":\"1138\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1164\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1142\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1150\"},\"glyph\":{\"id\":\"1151\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1153\"},\"nonselection_glyph\":{\"id\":\"1152\"},\"view\":{\"id\":\"1155\"}},\"id\":\"1154\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1151\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1140\",\"type\":\"ResetTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1136\"},{\"id\":\"1137\"},{\"id\":\"1138\"},{\"id\":\"1139\"},{\"id\":\"1140\"},{\"id\":\"1141\"}]},\"id\":\"1143\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1172\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1133\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1162\"},\"group\":null,\"major_label_policy\":{\"id\":\"1163\"},\"ticker\":{\"id\":\"1129\"}},\"id\":\"1128\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1152\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1154\"}]},\"id\":\"1168\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1173\"}]},\"id\":\"1188\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1156\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1186\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1169\"}},\"id\":\"1174\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1153\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1165\"},\"selection_policy\":{\"id\":\"1164\"}},\"id\":\"1150\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"1128\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1131\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1150\"}},\"id\":\"1155\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"1132\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1135\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1159\"},\"group\":null,\"major_label_policy\":{\"id\":\"1160\"},\"ticker\":{\"id\":\"1133\"}},\"id\":\"1132\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1168\"},{\"id\":\"1188\"}]},\"id\":\"1167\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1170\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1169\"},\"glyph\":{\"id\":\"1170\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1172\"},\"nonselection_glyph\":{\"id\":\"1171\"},\"view\":{\"id\":\"1174\"}},\"id\":\"1173\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"1119\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"345dd7ec-cb67-424a-8348-850ecf33badd\",\"root_ids\":[\"1119\"],\"roots\":{\"1119\":\"7018e60b-dad4-49c1-81d5-b88b93f84faa\"}}];\n", - " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", - "\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " let attempts = 0;\n", - " const timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " clearInterval(timer);\n", - " embed_document(root);\n", - " } else {\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " clearInterval(timer);\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " }\n", - " }\n", - " }, 10, root)\n", - " }\n", - "})(window);" - ], - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "1119" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", "fig.line(meas_x, meas_y, legend_label='Imeas', color='steelblue', line_width=2)\n", @@ -844,7 +656,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -853,64 +665,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function embed_document(root) {\n", - " \n", - " const docs_json = {\"45cbca08-74d6-4cdf-93a8-2dc09c77db89\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1287\"}],\"center\":[{\"id\":\"1290\"},{\"id\":\"1294\"},{\"id\":\"1326\"}],\"height\":300,\"left\":[{\"id\":\"1291\"}],\"renderers\":[{\"id\":\"1313\"},{\"id\":\"1332\"}],\"title\":{\"id\":\"1315\"},\"toolbar\":{\"id\":\"1302\"},\"width\":990,\"x_range\":{\"id\":\"1279\"},\"x_scale\":{\"id\":\"1283\"},\"y_range\":{\"id\":\"1281\"},\"y_scale\":{\"id\":\"1285\"}},\"id\":\"1278\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1310\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1324\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1329\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1330\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1323\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1279\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1328\"},\"glyph\":{\"id\":\"1329\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1331\"},\"nonselection_glyph\":{\"id\":\"1330\"},\"view\":{\"id\":\"1333\"}},\"id\":\"1332\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"1309\"}},\"id\":\"1314\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1292\",\"type\":\"BasicTicker\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1301\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1300\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1281\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1309\"},\"glyph\":{\"id\":\"1310\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1312\"},\"nonselection_glyph\":{\"id\":\"1311\"},\"view\":{\"id\":\"1314\"}},\"id\":\"1313\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1313\"}]},\"id\":\"1327\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1344\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"tools\":[{\"id\":\"1295\"},{\"id\":\"1296\"},{\"id\":\"1297\"},{\"id\":\"1298\"},{\"id\":\"1299\"},{\"id\":\"1300\"}]},\"id\":\"1302\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"1328\"}},\"id\":\"1333\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAAAKBpQAAAAAAAwGhAAAAAAAAAaUAAAAAAAOBoQAAAAAAAgGZAAAAAAABgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAACgaEAAAAAAAIBoQAAAAAAAQGhAAAAAAACgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAABgZ0AAAAAAAOBnQAAAAAAAoGlAAAAAAAAAaUAAAAAAAMBoQAAAAAAAAGlAAAAAAACAaUAAAAAAAIBoQAAAAAAAYGhAAAAAAABAaEAAAAAAAABpQAAAAAAAwGhAAAAAAAAgaUAAAAAAAABqQAAAAAAAoGlAAAAAAABgakAAAAAAAGBqQAAAAAAAgGtAAAAAAACAa0AAAAAAAIBqQAAAAAAAAGpAAAAAAADAakAAAAAAAEBsQAAAAAAAYG1AAAAAAAAgbUAAAAAAAKBtQAAAAAAAQG5AAAAAAABAbkAAAAAAAKBuQAAAAAAA4G1AAAAAAABAbEAAAAAAAABtQAAAAAAAwG1AAAAAAABAbEAAAAAAAEBrQAAAAAAAQGtAAAAAAADAakAAAAAAAKBpQAAAAAAAAGlAAAAAAAAgaEAAAAAAAGBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAOBpQAAAAAAA4GpAAAAAAADgaUAAAAAAAEBrQAAAAAAAQGtAAAAAAACAa0AAAAAAAIBrQAAAAAAAoGxAAAAAAACAbUAAAAAAAMBvQAAAAAAAgHBAAAAAAACAcUAAAAAAABByQAAAAAAAEHJAAAAAAADwckAAAAAAAOByQAAAAAAAkHJAAAAAAACQcUAAAAAAAGBxQAAAAAAAgHFAAAAAAACQcEAAAAAAACBwQAAAAAAAYG5AAAAAAAAAbkAAAAAAAABtQAAAAAAA4GxAAAAAAAAgbUAAAAAAAMBuQAAAAAAAAG9AAAAAAAAgb0AAAAAAAABwQAAAAAAAAHFAAAAAAAAQckAAAAAAAHBzQAAAAAAAQHVAAAAAAACwdkAAAAAAAJB4QAAAAAAAgHtAAAAAAACgfUAAAAAAACB+QAAAAAAAwH5AAAAAAADAf0AAAAAAAOB+QAAAAAAAsH1AAAAAAABwe0AAAAAAANB5QAAAAAAAAHdAAAAAAACwdEAAAAAAALByQAAAAAAA4HFAAAAAAABgcEAAAAAAACBuQAAAAAAAwG1AAAAAAACAb0AAAAAAALBwQAAAAAAAQHFAAAAAAABgcUAAAAAAAMByQAAAAAAAUHRAAAAAAAAAdUAAAAAAAHB2QAAAAAAAUHlAAAAAAACgfEAAAAAAAFB/QAAAAAAAoIFAAAAAAAAAhEAAAAAAAHiGQAAAAAAAeIhAAAAAAAAoikAAAAAAAJiKQAAAAAAAEItAAAAAAADgiUAAAAAAANiHQAAAAAAAyIVAAAAAAADQg0AAAAAAAOiAQAAAAAAAEH1AAAAAAABweEAAAAAAAPB1QAAAAAAA0HJAAAAAAADAcUAAAAAAAEBwQAAAAAAAAG9AAAAAAAAQcEAAAAAAAEBuQAAAAAAAwG5AAAAAAABwcEAAAAAAAPBwQAAAAAAAkHFAAAAAAADgckAAAAAAAFBzQAAAAAAA8HRAAAAAAABgdUAAAAAAAJB1QAAAAAAAQHZAAAAAAADwdUAAAAAAAFB1QAAAAAAA4HRAAAAAAAAQdEAAAAAAAOBxQAAAAAAAwHBAAAAAAAAAcEAAAAAAAMBtQAAAAAAAoGxAAAAAAABAa0AAAAAAAOBrQAAAAAAAAGtAAAAAAABgaUAAAAAAAGBpQAAAAAAAQGhAAAAAAACgaUAAAAAAAIBoQAAAAAAAIGhAAAAAAADAaUAAAAAAACBpQAAAAAAAIGlAAAAAAAAgaUAAAAAAAABpQAAAAAAAQGhAAAAAAACAaEAAAAAAAGBpQAAAAAAAYGhAAAAAAACAaEAAAAAAAGBqQAAAAAAAAGtAAAAAAADgaUAAAAAAAOBqQAAAAAAAoGtAAAAAAACgbUAAAAAAAABvQAAAAAAAUHBAAAAAAABwcUAAAAAAAPBzQAAAAAAAEHVAAAAAAADAdkAAAAAAAHB6QAAAAAAAkH5AAAAAAABogUAAAAAAALCDQAAAAAAAyIZAAAAAAACwiUAAAAAAAHiNQAAAAAAAjJBAAAAAAACwkkAAAAAAAEyTQAAAAAAAEJNAAAAAAADkkkAAAAAAAKCRQAAAAAAASI9AAAAAAAAAi0AAAAAAAMiGQAAAAAAAyIJAAAAAAAAAf0AAAAAAACB6QAAAAAAAMHZAAAAAAACQc0AAAAAAAHBwQAAAAAAAwG5AAAAAAABAbEAAAAAAAMBqQAAAAAAAwGtAAAAAAADAa0AAAAAAAGBqQAAAAAAAYGpAAAAAAABAaUAAAAAAAMBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBoQAAAAAAAIGlAAAAAAABgaUAAAAAAAGBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAIBoQAAAAAAAwGlAAAAAAABAakAAAAAAAKBoQAAAAAAAgGlAAAAAAAAAaUAAAAAAAKBpQAAAAAAAgGhAAAAAAABgaEAAAAAAAKBpQAAAAAAAgGlAAAAAAAAAaUAAAAAAAGBpQAAAAAAAAGpAAAAAAADgaUAAAAAAAEBpQAAAAAAAYGlAAAAAAADAaEAAAAAAAIBpQAAAAAAAQGpAAAAAAAAAa0AAAAAAAEBqQAAAAAAAoGxAAAAAAADgbUAAAAAAAOBuQAAAAAAAYHFAAAAAAADgckAAAAAAAEB0QAAAAAAAMHdAAAAAAABAekAAAAAAABB9QAAAAAAA0IBAAAAAAACwg0AAAAAAABiHQAAAAAAAmIpAAAAAAACAjkAAAAAAANCQQAAAAAAAJJJAAAAAAAAYk0AAAAAAACyTQAAAAAAAjJJAAAAAAAAgkUAAAAAAACCOQAAAAAAACIpAAAAAAAAghkAAAAAAAFiCQAAAAAAAAIBAAAAAAABAe0AAAAAAAHB4QAAAAAAAAHhAAAAAAAAgd0AAAAAAAHB4QAAAAAAAMHpAAAAAAAAAfEAAAAAAAKB+QAAAAAAAuIFAAAAAAACQg0AAAAAAAHiFQAAAAAAA+IZAAAAAAABgiEAAAAAAAHCIQAAAAAAASIdAAAAAAACIhkAAAAAAALCEQAAAAAAAmIJAAAAAAAB4gEAAAAAAAOB7QAAAAAAAkHhAAAAAAADwdEAAAAAAANByQAAAAAAAQHFAAAAAAABgb0AAAAAAAEBuQAAAAAAAoGxAAAAAAAAgakAAAAAAAOBqQAAAAAAAQGtAAAAAAADAakAAAAAAACBqQAAAAAAAAGpAAAAAAACAakAAAAAAAEBqQAAAAAAAIGpAAAAAAABAakAAAAAAAKBpQAAAAAAAIGpAAAAAAABgakAAAAAAAGBqQAAAAAAAAGtAAAAAAACgaUAAAAAAAIBpQAAAAAAAQGlAAAAAAAAgaUAAAAAAAABpQAAAAAAA4GlAAAAAAACgaUAAAAAAAEBpQAAAAAAAIGpAAAAAAABAaUAAAAAAAGBpQAAAAAAAwGlAAAAAAADAaUAAAAAAAABpQAAAAAAAQGhAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGlAAAAAAABAakAAAAAAAOBpQAAAAAAAoGlAAAAAAABAakAAAAAAAIBpQAAAAAAAYGlAAAAAAABAaUAAAAAAAKBpQAAAAAAAIGlAAAAAAAAgaUAAAAAAAOBpQAAAAAAAoGhAAAAAAADAaEAAAAAAAGBpQAAAAAAAIGpAAAAAAAAgakAAAAAAAABqQAAAAAAAgGlAAAAAAAAgakAAAAAAAOBoQAAAAAAAgGlAAAAAAADAaUAAAAAAACBpQAAAAAAAoGlAAAAAAABAaUAAAAAAAIBpQAAAAAAAwGhAAAAAAADAaEAAAAAAAKBqQAAAAAAAQGpAAAAAAACAakAAAAAAAMBqQAAAAAAA4GpAAAAAAAAga0AAAAAAAEBqQAAAAAAAwGpAAAAAAADgakAAAAAAAOBqQAAAAAAA4GpAAAAAAAAga0AAAAAAAMBrQAAAAAAA4GxAAAAAAADgbkAAAAAAAIBvQAAAAAAAEHFAAAAAAAAAc0AAAAAAAMB0QAAAAAAA4HZAAAAAAACAeUAAAAAAAPB8QAAAAAAAoIBAAAAAAABYg0AAAAAAAPCGQAAAAAAA4IlAAAAAAACAjUAAAAAAAFiPQAAAAAAAfJBAAAAAAAC4kEAAAAAAANCPQAAAAAAAgI1AAAAAAAAIikAAAAAAAKiGQAAAAAAAyINAAAAAAACwf0AAAAAAANB7QAAAAAAAsHdAAAAAAACwdUAAAAAAAMBzQAAAAAAAoHFAAAAAAACwcEAAAAAAANBwQAAAAAAAkHFAAAAAAAAAckAAAAAAAMByQAAAAAAAcHRAAAAAAACgdUAAAAAAAMB3QAAAAAAAAHlAAAAAAADgekAAAAAAAFB8QAAAAAAAsHxAAAAAAAAwfEAAAAAAALB6QAAAAAAAIHlAAAAAAABwd0AAAAAAAIB1QAAAAAAAUHNAAAAAAABQcUAAAAAAAJBwQAAAAAAAwG5AAAAAAADAbkAAAAAAAMBsQAAAAAAA4GtAAAAAAABgbEAAAAAAACBsQAAAAAAAIGtAAAAAAAAga0AAAAAAAOBrQAAAAAAA4GtAAAAAAACAa0AAAAAAAOBrQAAAAAAAQGxAAAAAAAAAb0AAAAAAACBwQAAAAAAAIHFAAAAAAACQckAAAAAAAEB0QAAAAAAAMHZAAAAAAACQeEAAAAAAAKB8QAAAAAAAgIBAAAAAAABogkAAAAAAAICFQAAAAAAAaIhAAAAAAABAikAAAAAAAGCLQAAAAAAAUItAAAAAAAAAikAAAAAAAOiHQAAAAAAAUIVAAAAAAAAog0AAAAAAAGCAQAAAAAAAcHxAAAAAAACAeUAAAAAAAAB4QAAAAAAA4HZAAAAAAABwd0AAAAAAAIB4QAAAAAAAoHpAAAAAAABgfUAAAAAAADiAQAAAAAAAYIJAAAAAAAD4g0AAAAAAAEiFQAAAAAAAAIZAAAAAAACohUAAAAAAAFCEQAAAAAAAwIJAAAAAAADggEAAAAAAAOB9QAAAAAAAwHlAAAAAAACAd0AAAAAAAJB1QAAAAAAAoHRAAAAAAAAQdUAAAAAAAOB1QAAAAAAA8HdAAAAAAACgekAAAAAAANB+QAAAAAAA2IFAAAAAAAAghUAAAAAAABiJQAAAAAAAwIxAAAAAAAC8kEAAAAAAAHySQAAAAAAAfJNAAAAAAACck0AAAAAAAIyTQAAAAAAAfJJAAAAAAACwkEAAAAAAAIiNQAAAAAAA6IpAAAAAAABYiUAAAAAAAGiJQAAAAAAAQItAAAAAAABIjkAAAAAAAICRQAAAAAAAdJRAAAAAAADcl0AAAAAAAKiaQAAAAAAAAJ1AAAAAAACAnUAAAAAAALScQAAAAAAAxJpAAAAAAABwl0AAAAAAACSUQAAAAAAAPJFAAAAAAABAjEAAAAAAAGiHQAAAAAAAmINAAAAAAADAgUAAAAAAADiBQAAAAAAAgIFAAAAAAABQgkAAAAAAANCDQAAAAAAAmIVAAAAAAAB4h0AAAAAAAPiIQAAAAAAAwIhAAAAAAACgiUAAAAAAADCIQAAAAAAAAIdAAAAAAABAhUAAAAAAAJiDQAAAAAAAkIFAAAAAAAAQgEAAAAAAALB8QAAAAAAAgHpAAAAAAACgdkAAAAAAANB0QAAAAAAA4HNAAAAAAADAckAAAAAAAPBxQAAAAAAAkHBAAAAAAACgcEAAAAAAAGBwQAAAAAAAcHBAAAAAAADgb0AAAAAAAOBwQAAAAAAAYHFAAAAAAAAQckAAAAAAANBzQAAAAAAAcHVAAAAAAAAAeUAAAAAAAEB9QAAAAAAAiIFAAAAAAAC4hUAAAAAAAEiLQAAAAAAAMJFAAAAAAABwlUAAAAAAAPCZQAAAAAAAiJ5AAAAAAABgoUAAAAAAAMCiQAAAAAAANqNAAAAAAAAGo0AAAAAAAIqhQAAAAAAACJ9AAAAAAAAcmkAAAAAAADiVQAAAAAAA+JBAAAAAAAAgi0AAAAAAAFCFQAAAAAAAEIJAAAAAAABIgEAAAAAAAACAQAAAAAAAyIBAAAAAAADAgkAAAAAAAACGQAAAAAAAuIpAAAAAAAAgkEAAAAAAAECTQAAAAAAA6JZAAAAAAAB0mkAAAAAAACidQAAAAAAAuJ5AAAAAAACgn0AAAAAAAICfQAAAAAAA2JxAAAAAAAAMmkAAAAAAAFSWQAAAAAAAbJJAAAAAAACwjUAAAAAAANiHQAAAAAAAuIJAAAAAAABAfkAAAAAAAEB5QAAAAAAA8HVAAAAAAAAAc0AAAAAAAMBxQAAAAAAAEHFAAAAAAAAwcEAAAAAAAGBvQAAAAAAAYG9AAAAAAACAb0AAAAAAAKBuQAAAAAAAMHBAAAAAAABAb0AAAAAAAKBvQAAAAAAAAHBAAAAAAACAcEAAAAAAANBxQAAAAAAA0HJAAAAAAACgdUAAAAAAAGB4QAAAAAAAoHxAAAAAAACAgEAAAAAAAICDQAAAAAAA6IZAAAAAAADoiUAAAAAAAKCMQAAAAAAA4I5AAAAAAAAQj0AAAAAAAAiNQAAAAAAAWIpAAAAAAAAwh0AAAAAAAPCDQAAAAAAAeIBAAAAAAAAge0AAAAAAAJB3QAAAAAAAAHRAAAAAAACgcUAAAAAAABBxQAAAAAAAAHBAAAAAAABgbkAAAAAAAABuQAAAAAAAAG5AAAAAAADAbEAAAAAAAIBrQAAAAAAAwGxAAAAAAABgbEAAAAAAAABsQAAAAAAAYGtAAAAAAABgbEAAAAAAAGBsQAAAAAAAAGxAAAAAAADAa0AAAAAAAOBrQAAAAAAAIGtAAAAAAACgakAAAAAAAABrQAAAAAAAYGtAAAAAAABga0AAAAAAAEBrQAAAAAAAgGtAAAAAAACAa0AAAAAAAIBrQAAAAAAA4GtAAAAAAAAgbUAAAAAAAKBtQAAAAAAAIG9AAAAAAAAgcEAAAAAAAFBwQAAAAAAAsHFAAAAAAAAAc0AAAAAAAEB0QAAAAAAAsHVAAAAAAAAQdkAAAAAAAHB2QAAAAAAAsHZAAAAAAAAAdkAAAAAAAFB1QAAAAAAAoHRAAAAAAABAc0AAAAAAADByQAAAAAAA8HBAAAAAAADAb0AAAAAAAKBuQAAAAAAAoG5AAAAAAADgbUAAAAAAAIBsQAAAAAAAIGtAAAAAAAAga0AAAAAAAEBrQAAAAAAA4GtAAAAAAADgaUAAAAAAAEBrQAAAAAAAwGtAAAAAAADgakAAAAAAAEBqQAAAAAAAAGtAAAAAAACgakAAAAAAAIBqQAAAAAAA4GpAAAAAAACAakAAAAAAAMBqQAAAAAAAYGpAAAAAAADAakAAAAAAACBrQAAAAAAAoGlAAAAAAADgaUAAAAAAAKBqQAAAAAAAAGpAAAAAAABgakAAAAAAAKBpQAAAAAAAwGpAAAAAAACgakAAAAAAAIBqQAAAAAAAgGpAAAAAAACgakAAAAAAAOBpQAAAAAAAYGlAAAAAAABgakAAAAAAAGBqQAAAAAAAwGpAAAAAAADAakAAAAAAAOBpQAAAAAAAYGlAAAAAAACAakAAAAAAAIBqQAAAAAAAwGpAAAAAAACgakAAAAAAAEBpQAAAAAAAQGpAAAAAAABgakAAAAAAAGBqQAAAAAAAwGpAAAAAAACga0AAAAAAACBrQAAAAAAAgGpAAAAAAADAakAAAAAAAGBrQAAAAAAA4GtAAAAAAAAgbEAAAAAAAGBsQAAAAAAAYG1AAAAAAAAAbkAAAAAAAGBuQAAAAAAAgG9AAAAAAAAgb0AAAAAAACBvQAAAAAAA4G9AAAAAAABgcEAAAAAAAKBxQAAAAAAAQHNAAAAAAADwdUAAAAAAAOB4QAAAAAAAYH1AAAAAAABogEAAAAAAAKCCQAAAAAAAMIRAAAAAAABIhUAAAAAAAMiEQAAAAAAAOINAAAAAAACYgUAAAAAAAEB+QAAAAAAAUHpAAAAAAADAdkAAAAAAANBzQAAAAAAAEHJAAAAAAABQcEAAAAAAAKBuQAAAAAAAIG1AAAAAAACAbEAAAAAAAGBrQAAAAAAAYGtAAAAAAAAga0AAAAAAAABrQAAAAAAAoGtAAAAAAADgakAAAAAAAOBqQAAAAAAAQGpAAAAAAACAakAAAAAAAIBqQAAAAAAAgGlAAAAAAAAgakAAAAAAAMBpQAAAAAAAAGtAAAAAAADgaUAAAAAAAMBqQAAAAAAA4GlAAAAAAAAgakAAAAAAAEBrQAAAAAAA4GpAAAAAAADAa0AAAAAAAEBsQAAAAAAAwGxAAAAAAADgbUAAAAAAACBvQAAAAAAAcHBAAAAAAAAwcUAAAAAAAEByQAAAAAAA0HNAAAAAAAAwdEAAAAAAAFB1QAAAAAAA4HVAAAAAAACgdEAAAAAAAAB0QAAAAAAAMHNAAAAAAADAcUAAAAAAADBxQAAAAAAAkHBAAAAAAADQcEAAAAAAADBxQAAAAAAAQHJAAAAAAABwc0AAAAAAACB1QAAAAAAAMHhAAAAAAADQeUAAAAAAAPB8QAAAAAAA4H9AAAAAAACwgEAAAAAAAHiBQAAAAAAA2IBAAAAAAACogEAAAAAAAEB/QAAAAAAAcH1AAAAAAABwfEAAAAAAAKB5QAAAAAAAUHdAAAAAAABgdUAAAAAAADBzQAAAAAAAAHJAAAAAAADgcUAAAAAAAJBxQAAAAAAAQHJAAAAAAAAwckAAAAAAAIBzQAAAAAAAYHRAAAAAAAAAdUAAAAAAAKB1QAAAAAAAUHVAAAAAAABwdEAAAAAAABBzQAAAAAAAUHFAAAAAAACwcEAAAAAAACBvQAAAAAAAoGxAAAAAAACga0AAAAAAAIBrQAAAAAAAIGtAAAAAAABgakAAAAAAAIBpQAAAAAAAYGlAAAAAAACAa0AAAAAAACBrQAAAAAAAIGtAAAAAAADAakAAAAAAAKBpQAAAAAAAoGlAAAAAAABgakAAAAAAAMBpQAAAAAAAAGpAAAAAAAAgaUAAAAAAAABqQAAAAAAAwGpAAAAAAACAakAAAAAAAMBpQAAAAAAAAGtAAAAAAABga0AAAAAAAOBqQAAAAAAAIGtAAAAAAABgakAAAAAAAMBqQAAAAAAA4GpAAAAAAAAAbEAAAAAAACBrQAAAAAAA4GpAAAAAAABAa0AAAAAAAEBrQAAAAAAAgGxAAAAAAABgbEAAAAAAAIBsQAAAAAAAIGxAAAAAAABga0AAAAAAAABrQAAAAAAAYGtAAAAAAABAa0AAAAAAAMBqQAAAAAAAgGpAAAAAAACga0AAAAAAAMBqQAAAAAAAAGpAAAAAAACAaUAAAAAAACBqQAAAAAAAIGpAAAAAAAAAakAAAAAAAIBqQAAAAAAAoGpAAAAAAABAa0AAAAAAAIBqQAAAAAAAoGlAAAAAAADgaUAAAAAAAIBpQAAAAAAAwGlAAAAAAABgakAAAAAAAABrQAAAAAAAwGpAAAAAAABAakAAAAAAAGBrQAAAAAAAwGtAAAAAAAAAbEAAAAAAAOBsQAAAAAAAYGxAAAAAAACgbUAAAAAAAGBtQAAAAAAAwG1AAAAAAACgbkAAAAAAAEBuQAAAAAAAAG9AAAAAAADAbkAAAAAAAGBuQAAAAAAAoG9AAAAAAAAwcEAAAAAAAGBxQAAAAAAAkHFAAAAAAACQckAAAAAAAGBzQAAAAAAAQHRAAAAAAAAgdEAAAAAAAHBzQAAAAAAAcHJAAAAAAACQcUAAAAAAADBwQAAAAAAAQG9AAAAAAADgbUAAAAAAACBtQAAAAAAAYGxAAAAAAABAbEAAAAAAAOBrQAAAAAAAYGpAAAAAAAAgakAAAAAAACBrQAAAAAAAwGpAAAAAAACgakAAAAAAACBrQAAAAAAAgGtAAAAAAABAakAAAAAAACBqQAAAAAAA4GpAAAAAAABAa0AAAAAAAOBqQAAAAAAAIGtAAAAAAACga0AAAAAAACBrQAAAAAAAYGtAAAAAAACAa0AAAAAAAIBsQAAAAAAAoGxAAAAAAADAbEAAAAAAAEBtQAAAAAAAYG9AAAAAAABQcEAAAAAAAAByQAAAAAAAkHNAAAAAAACgdkAAAAAAAIB6QAAAAAAAYIBAAAAAAAAwhEAAAAAAAGiIQAAAAAAAwIxAAAAAAAAAkEAAAAAAAICRQAAAAAAAjJJAAAAAAACMkkAAAAAAADiSQAAAAAAAaJFAAAAAAABQkEAAAAAAAPiOQAAAAAAA+IxAAAAAAAC4iUAAAAAAAGiGQAAAAAAAWINAAAAAAABAgEAAAAAAAFB6QAAAAAAAEHZAAAAAAABAc0AAAAAAABBxQAAAAAAAAHBAAAAAAACgbkAAAAAAAEBtQAAAAAAAwGxAAAAAAAAAbEAAAAAAAABtQAAAAAAAQGxAAAAAAADAa0AAAAAAAMBrQAAAAAAAYGxAAAAAAAAgbEAAAAAAAEBsQAAAAAAAYGxAAAAAAACgbEAAAAAAAGBtQAAAAAAAIG1AAAAAAABgbkAAAAAAAMBtQAAAAAAAoG1AAAAAAACAbUAAAAAAAABtQAAAAAAA4GxAAAAAAABgbEAAAAAAACBsQAAAAAAAgGtAAAAAAABAa0AAAAAAAOBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAACBsQAAAAAAAwGtAAAAAAADgbEAAAAAAAGBuQAAAAAAAQG9AAAAAAADQcEAAAAAAAOBxQAAAAAAAYHNAAAAAAABQdEAAAAAAAMB0QAAAAAAAEHVAAAAAAACQdEAAAAAAAPByQAAAAAAAYHFAAAAAAADAcEAAAAAAAIBvQAAAAAAAgG1AAAAAAACAbEAAAAAAAGBrQAAAAAAAIGxAAAAAAADAa0AAAAAAAMBqQAAAAAAAgGxAAAAAAACga0AAAAAAACBrQAAAAAAAoGtAAAAAAADAa0AAAAAAAEBsQAAAAAAAoG1AAAAAAADAbkAAAAAAAOBvQAAAAAAA0HBAAAAAAADAcUAAAAAAAOByQAAAAAAAkHNAAAAAAABwdEAAAAAAABB0QAAAAAAA0HRAAAAAAACwdEAAAAAAAMB0QAAAAAAAYHZAAAAAAAAgeUAAAAAAAMB8QAAAAAAAaIFAAAAAAACghEAAAAAAAAiIQAAAAAAA2IpAAAAAAAAwjUAAAAAAANiNQAAAAAAAyIxAAAAAAADAiUAAAAAAALCFQAAAAAAAEIJAAAAAAACgfUAAAAAAACB5QAAAAAAAgHVAAAAAAAAgc0AAAAAAAMByQAAAAAAAQHJAAAAAAABAckAAAAAAAOByQAAAAAAAAHNAAAAAAAAgc0AAAAAAABBzQAAAAAAA8HJAAAAAAACwckAAAAAAAGBxQAAAAAAAMHBAAAAAAAAQcEAAAAAAAKBuQAAAAAAAoG1AAAAAAAAAbkAAAAAAACBtQAAAAAAAAG1AAAAAAABgbUAAAAAAACBuQAAAAAAAEHBAAAAAAAAgcUAAAAAAAEByQAAAAAAAUHNAAAAAAADQdEAAAAAAAIB2QAAAAAAA0HdAAAAAAAAweEAAAAAAADB4QAAAAAAAIHhAAAAAAADgd0AAAAAAAAB3QAAAAAAAsHZAAAAAAAAAdkAAAAAAABB1QAAAAAAAEHRAAAAAAACQckAAAAAAAJBxQAAAAAAAkHBAAAAAAADgb0AAAAAAAGBvQAAAAAAAoG1AAAAAAADAbUAAAAAAAKBtQAAAAAAAgGxAAAAAAAAAbkAAAAAAAEBtQAAAAAAAQGxAAAAAAACgbEAAAAAAAIBsQAAAAAAAIG1AAAAAAABgbkAAAAAAACBuQAAAAAAAEHBAAAAAAABwcUAAAAAAABBzQAAAAAAAkHVAAAAAAACgeUAAAAAAAHB8QAAAAAAACIFAAAAAAABwg0AAAAAAAAiFQAAAAAAAqIZAAAAAAABohkAAAAAAAKiEQAAAAAAAgIJAAAAAAAAwgEAAAAAAALB7QAAAAAAAMHdAAAAAAAAAdUAAAAAAACByQAAAAAAAkHBAAAAAAACAb0AAAAAAAEBvQAAAAAAAgG5AAAAAAABAbkAAAAAAACBuQAAAAAAAYG5AAAAAAAAAb0AAAAAAAKBvQAAAAAAAgG9AAAAAAACAcEAAAAAAAKBwQAAAAAAAoHFAAAAAAAAwckAAAAAAAJBzQAAAAAAAoHVAAAAAAABgd0AAAAAAAPB5QAAAAAAA4HpAAAAAAAAQe0AAAAAAAOB6QAAAAAAAYHlAAAAAAAAAeEAAAAAAANB1QAAAAAAA4HNAAAAAAAAwc0AAAAAAAKByQAAAAAAAgHJAAAAAAAAAc0AAAAAAAJBzQAAAAAAAgHRAAAAAAACgdUAAAAAAAFB1QAAAAAAA8HRAAAAAAABAdEAAAAAAAAB1QAAAAAAAUHVAAAAAAABQdUAAAAAAACB3QAAAAAAA4HlAAAAAAACge0AAAAAAAKB+QAAAAAAAQIBAAAAAAACggEAAAAAAACCBQAAAAAAAiIFAAAAAAAC4gUAAAAAAAEiCQAAAAAAAQIJAAAAAAABwgUAAAAAAAHiAQAAAAAAAEH5AAAAAAACAekAAAAAAACB3QAAAAAAA0HRAAAAAAACAc0AAAAAAANByQAAAAAAAMHNAAAAAAACgc0AAAAAAAEB1QAAAAAAAsHdAAAAAAACwekAAAAAAADB9QAAAAAAAuIBAAAAAAABAgkAAAAAAANCCQAAAAAAAIIJAAAAAAACggEAAAAAAABB+QAAAAAAAoHpAAAAAAACwd0AAAAAAAJB0QAAAAAAA8HJAAAAAAAAAckAAAAAAAPBwQAAAAAAA0HBAAAAAAACwcEAAAAAAAHBwQAAAAAAAsHBAAAAAAABAcEAAAAAAAEBwQAAAAAAAcHBAAAAAAABwcEAAAAAAAOBwQAAAAAAAYHFAAAAAAABQckAAAAAAAOBzQAAAAAAAwHZAAAAAAACAekAAAAAAAACAQAAAAAAAGIRAAAAAAACIiUAAAAAAALCOQAAAAAAALJJAAAAAAAAklEAAAAAAAHSVQAAAAAAAxJVAAAAAAAAQlUAAAAAAAHCTQAAAAAAAFJJAAAAAAADUkEAAAAAAAOCPQAAAAAAAKI5AAAAAAABYjEAAAAAAANCKQAAAAAAAGIhAAAAAAAA4hEAAAAAAAFiBQAAAAAAAQH1AAAAAAABQeUAAAAAAAMB1QAAAAAAAwHNAAAAAAAAwckAAAAAAAFBxQAAAAAAAYHFAAAAAAADgcEAAAAAAAGBwQAAAAAAAwHBAAAAAAADgcEAAAAAAAHBxQAAAAAAA8HFAAAAAAADAckAAAAAAAPBzQAAAAAAAsHVAAAAAAACgd0AAAAAAAEB6QAAAAAAAUH1AAAAAAADAgEAAAAAAACiEQAAAAAAAKIhAAAAAAADojEAAAAAAAGyRQAAAAAAAmJNAAAAAAABclUAAAAAAAOCVQAAAAAAAvJRAAAAAAACQkkAAAAAAADiQQAAAAAAAeItAAAAAAAAQh0AAAAAAACCEQAAAAAAAkIJAAAAAAADIgkAAAAAAABiEQAAAAAAAyIVAAAAAAACQiEAAAAAAAFCKQAAAAAAAeIpAAAAAAAC4iEAAAAAAAPCFQAAAAAAAgIJAAAAAAADAf0AAAAAAACB6QAAAAAAAoHZAAAAAAACAdEAAAAAAALByQAAAAAAAcHFAAAAAAADgcEAAAAAAABBwQAAAAAAAoG9AAAAAAAAgcEAAAAAAABBwQAAAAAAAIG9AAAAAAACgbkAAAAAAABBwQAAAAAAAQHBAAAAAAADAcUAAAAAAAIByQAAAAAAAIHRAAAAAAABwdUAAAAAAAOB3QAAAAAAAUHlAAAAAAACweUAAAAAAAAB6QAAAAAAAYHlAAAAAAABAd0AAAAAAABB2QAAAAAAAoHRAAAAAAADQc0AAAAAAAJBzQAAAAAAAgHNAAAAAAABQc0AAAAAAAPByQAAAAAAAAHJAAAAAAABAcUAAAAAAAIBwQAAAAAAAwG5AAAAAAAAgb0AAAAAAACBuQAAAAAAAYG9AAAAAAABgbkAAAAAAAMBuQAAAAAAAwG5AAAAAAAAgb0AAAAAAAIBuQAAAAAAAgG9AAAAAAACAb0AAAAAAACBwQAAAAAAAkHBAAAAAAABwcEAAAAAAAMBxQAAAAAAAsHJAAAAAAAAAdEAAAAAAAIB1QAAAAAAAsHZAAAAAAABAd0AAAAAAAGB2QAAAAAAA8HVAAAAAAAAgdkAAAAAAAKB0QAAAAAAAIHRAAAAAAADgdEAAAAAAADB1QAAAAAAAkHVAAAAAAABQdkAAAAAAAIB2QAAAAAAAYHZAAAAAAABAd0AAAAAAAJB6QAAAAAAA8H9AAAAAAACQg0AAAAAAABCIQAAAAAAAkI1AAAAAAAB4kUAAAAAAANSSQAAAAAAALJNAAAAAAAAUkkAAAAAAAESQQAAAAAAASItAAAAAAABYhkAAAAAAAJCBQAAAAAAA4HtAAAAAAACQd0AAAAAAAMB0QAAAAAAAkHJAAAAAAACgcUAAAAAAAEBxQAAAAAAAgHBAAAAAAABQcEAAAAAAAKBwQAAAAAAAUHBAAAAAAACgb0AAAAAAACBwQAAAAAAAYHBAAAAAAABAcEAAAAAAALBxQAAAAAAAMHNAAAAAAACAdUAAAAAAACB5QAAAAAAAUHxAAAAAAACIgEAAAAAAAOCCQAAAAAAAqIRAAAAAAAAAhUAAAAAAAKiDQAAAAAAAYIJAAAAAAADgf0AAAAAAAIB7QAAAAAAAkHdAAAAAAACgdEAAAAAAANByQAAAAAAAgHFAAAAAAADQcEAAAAAAACBwQAAAAAAAgG9AAAAAAABgb0AAAAAAAIBvQAAAAAAAAHBAAAAAAACgb0AAAAAAAKBvQAAAAAAAoG9AAAAAAABgcEAAAAAAAJBwQAAAAAAAwHFAAAAAAAAwckAAAAAAADB0QAAAAAAAYHdAAAAAAADwekAAAAAAAPB/QAAAAAAA0IJAAAAAAAAwhUAAAAAAADiHQAAAAAAAoIdAAAAAAABohkAAAAAAAIiEQAAAAAAAKIJAAAAAAACgfkAAAAAAACB6QAAAAAAAwHZAAAAAAADwdEAAAAAAACBzQAAAAAAAIHJAAAAAAADgcUAAAAAAALBxQAAAAAAAsHFAAAAAAAAgcUAAAAAAAGBwQAAAAAAAoHBAAAAAAABQcEAAAAAAAFBwQAAAAAAAgHBAAAAAAADQcEAAAAAAAGBxQAAAAAAAAHJAAAAAAAAgc0AAAAAAAPBzQAAAAAAAoHRAAAAAAABwdUAAAAAAAFB1QAAAAAAAUHRAAAAAAADgc0AAAAAAAKByQAAAAAAAsHJAAAAAAAAAckAAAAAAAFBzQAAAAAAAgHVAAAAAAADgd0AAAAAAAGB6QAAAAAAAYH1AAAAAAAAAgEAAAAAAABCAQAAAAAAAGIBAAAAAAACAfkAAAAAAAIB7QAAAAAAAwHhAAAAAAADgdkAAAAAAAMB0QAAAAAAAcHNAAAAAAAAQc0AAAAAAAMByQAAAAAAAUHJAAAAAAADgcUAAAAAAACBzQAAAAAAAkHNAAAAAAADQc0AAAAAAAHB0QAAAAAAAcHVAAAAAAACgdEAAAAAAAAB0QAAAAAAAMHNAAAAAAACgckAAAAAAAKBxQAAAAAAAIHFAAAAAAACgcEAAAAAAACBxQAAAAAAA8HBAAAAAAAAgcUAAAAAAACByQAAAAAAA4HJAAAAAAAAQdEAAAAAAAOB1QAAAAAAA8HZAAAAAAAAgeEAAAAAAAKB4QAAAAAAAIHdAAAAAAABAdkAAAAAAAMB0QAAAAAAAYHNAAAAAAAAAckAAAAAAAHBxQAAAAAAAkHFAAAAAAAAgcUAAAAAAAMBxQAAAAAAAgHFAAAAAAADgcEAAAAAAAGBxQAAAAAAA0HBAAAAAAAAQcUAAAAAAAMBwQAAAAAAAsHBAAAAAAACQcEAAAAAAABBwQAAAAAAAIHBAAAAAAACwcEAAAAAAALBwQAAAAAAAUHFAAAAAAADwcUAAAAAAAOByQAAAAAAAwHRAAAAAAACAdkAAAAAAALB5QAAAAAAAkHxAAAAAAABggEAAAAAAAACDQAAAAAAA2IVAAAAAAADoikAAAAAAACCRQAAAAAAAhJVAAAAAAABUmkAAAAAAALSdQAAAAAAAKqBAAAAAAACAn0AAAAAAACCcQAAAAAAAcJdAAAAAAAB0kkAAAAAAAEiNQAAAAAAAwIZAAAAAAACog0AAAAAAAACCQAAAAAAAYIFAAAAAAAC4gEAAAAAAADiAQAAAAAAAYH5AAAAAAAAQfUAAAAAAANB6QAAAAAAAEHhAAAAAAACQdkAAAAAAAGB1QAAAAAAAgHNAAAAAAABQckAAAAAAAHBxQAAAAAAAUHFAAAAAAACQcEAAAAAAABBwQAAAAAAAAHBAAAAAAABAb0AAAAAAAEBwQAAAAAAAUHBAAAAAAAAgcEAAAAAAAHBwQAAAAAAAwHBAAAAAAADAcUAAAAAAACBzQAAAAAAAUHRAAAAAAAAQdUAAAAAAABB1QAAAAAAAgHVAAAAAAABAdUAAAAAAABB1QAAAAAAAgHRAAAAAAAAQdEAAAAAAACBzQAAAAAAAcHJAAAAAAAAQckAAAAAAAJBxQAAAAAAAsHBAAAAAAACgcEAAAAAAAOBwQAAAAAAAcHBAAAAAAAAAcEAAAAAAAKBwQAAAAAAAgHBAAAAAAAAwcEAAAAAAAFBwQAAAAAAAUHBAAAAAAAAgcEAAAAAAAKBvQAAAAAAAAG9AAAAAAACAbkAAAAAAACBvQAAAAAAAYG9AAAAAAACgbkAAAAAAAKBuQAAAAAAA4G5AAAAAAADgbkAAAAAAAMBvQAAAAAAAMHBAAAAAAABAb0AAAAAAAGBvQAAAAAAAIHBAAAAAAACAb0AAAAAAAOBvQAAAAAAAMHBAAAAAAAAAcEAAAAAAAIBwQAAAAAAAwHBAAAAAAACQcUAAAAAAAPByQAAAAAAAsHRAAAAAAAAwd0AAAAAAAEB6QAAAAAAAQH5AAAAAAACggEAAAAAAAACCQAAAAAAAMIJAAAAAAACYgUAAAAAAAHiAQAAAAAAAoH5AAAAAAAAQfUAAAAAAADB9QAAAAAAAEHxAAAAAAAAAekAAAAAAAJB4QAAAAAAA4HZAAAAAAACwdEAAAAAAAMBzQAAAAAAAkHJAAAAAAABgckAAAAAAAEByQAAAAAAA4HFAAAAAAABwckAAAAAAACBzQAAAAAAAsHNAAAAAAADgdEAAAAAAAFB3QAAAAAAAYHlAAAAAAADwe0AAAAAAADB/QAAAAAAAsH9AAAAAAACgf0AAAAAAAIB+QAAAAAAAAHtAAAAAAABweEAAAAAAAGB1QAAAAAAAsHNAAAAAAABAckAAAAAAADBxQAAAAAAAIHFAAAAAAAAwcEAAAAAAAEBvQAAAAAAAIHBAAAAAAACAb0AAAAAAAOBvQAAAAAAAwG9AAAAAAACgb0AAAAAAAMBvQAAAAAAAgG9AAAAAAAAQcEAAAAAAAEBvQAAAAAAA4G9AAAAAAABgb0AAAAAAAMBvQAAAAAAAQHBAAAAAAAAgb0AAAAAAAKBvQAAAAAAAwG9AAAAAAAAwcEAAAAAAAMBwQAAAAAAA4HBAAAAAAADAcUAAAAAAABBzQAAAAAAAIHRAAAAAAADAdkAAAAAAABB6QAAAAAAAYH1AAAAAAADogUAAAAAAADCFQAAAAAAAGIhAAAAAAAB4ikAAAAAAALCKQAAAAAAA0IhAAAAAAACAhkAAAAAAABiDQAAAAAAAQIBAAAAAAADwfEAAAAAAAMB5QAAAAAAA8HhAAAAAAAAAekAAAAAAAMB6QAAAAAAAAHtAAAAAAABAekAAAAAAACB5QAAAAAAAwHZAAAAAAADAdUAAAAAAAOB0QAAAAAAAEHRAAAAAAACgdEAAAAAAAGB1QAAAAAAAwHdAAAAAAAAQeEAAAAAAAEB6QAAAAAAAkHtAAAAAAAAQfUAAAAAAAMB7QAAAAAAAYHlAAAAAAADwd0AAAAAAAJB1QAAAAAAAwHRAAAAAAAAQdEAAAAAAAEBzQAAAAAAAQHJAAAAAAADwckAAAAAAAKBzQAAAAAAA0HRAAAAAAACwd0AAAAAAAGB7QAAAAAAAkH9AAAAAAACQgkAAAAAAAJiEQAAAAAAAaIZAAAAAAAAQh0AAAAAAADCGQAAAAAAAEIRAAAAAAAAYgUAAAAAAAMB+QAAAAAAAUHpAAAAAAAAgeEAAAAAAAIB1QAAAAAAAEHVAAAAAAADgdUAAAAAAAMB2QAAAAAAA8HlAAAAAAACgf0AAAAAAAFCCQAAAAAAAEIVAAAAAAABwh0AAAAAAAJiIQAAAAAAAiIdAAAAAAABQhUAAAAAAAKiCQAAAAAAAMH9AAAAAAAAQekAAAAAAAKB2QAAAAAAAQHVAAAAAAADgckAAAAAAAOBxQAAAAAAAgHFAAAAAAACwcUAAAAAAAEBxQAAAAAAAoHFAAAAAAADAcUAAAAAAAHByQAAAAAAAYHNAAAAAAADwc0AAAAAAABB0QAAAAAAAAHNAAAAAAACgckAAAAAAAFByQAAAAAAAsHFAAAAAAABQcUAAAAAAANBwQAAAAAAAkHBAAAAAAABQcUAAAAAAALBxQAAAAAAAsHFAAAAAAABQckAAAAAAAPByQAAAAAAAAHRAAAAAAADAc0AAAAAAALB0QAAAAAAAoHVAAAAAAABwdEAAAAAAAIB0QAAAAAAAIHNAAAAAAAAwckAAAAAAAOBxQAAAAAAAYHFAAAAAAAAQcUAAAAAAALBwQAAAAAAAAHFAAAAAAAAQcEAAAAAAAEBwQAAAAAAAkHBAAAAAAACAcEAAAAAAAABxQAAAAAAA4HBAAAAAAADAcEAAAAAAANBwQAAAAAAA8HFAAAAAAABAckAAAAAAAHByQAAAAAAA0HNAAAAAAADwdEAAAAAAAMB2QAAAAAAAoHlAAAAAAADQfUAAAAAAAGCBQAAAAAAAEIRAAAAAAACYh0AAAAAAAACLQAAAAAAAkI1AAAAAAABQjkAAAAAAAGiNQAAAAAAAMItAAAAAAAC4h0AAAAAAADiEQAAAAAAA4IBAAAAAAABAfUAAAAAAACB6QAAAAAAAsHdAAAAAAADQd0AAAAAAAFB5QAAAAAAA4HtAAAAAAADAfUAAAAAAAFiAQAAAAAAAiIFAAAAAAABYgUAAAAAAAIiAQAAAAAAAUH5AAAAAAABAe0AAAAAAAOB4QAAAAAAAMHZAAAAAAAAgdEAAAAAAAABzQAAAAAAA0HFAAAAAAADgcEAAAAAAAGBxQAAAAAAAQHBAAAAAAADAcEAAAAAAAIBwQAAAAAAAkHBAAAAAAABwcEAAAAAAALBwQAAAAAAA4HFAAAAAAABQckAAAAAAADByQAAAAAAA8HNAAAAAAADgdkAAAAAAALB5QAAAAAAA0HxAAAAAAACQfkAAAAAAAEiAQAAAAAAAWIFAAAAAAAAwgUAAAAAAAPB/QAAAAAAAYH5AAAAAAABAe0AAAAAAAIB4QAAAAAAAAHdAAAAAAACgdEAAAAAAAIB0QAAAAAAAcHVAAAAAAAAwd0AAAAAAAKB4QAAAAAAAkHtAAAAAAABAfUAAAAAAAFB9QAAAAAAAgHxAAAAAAAAAekAAAAAAAKB4QAAAAAAAkHZAAAAAAACgdEAAAAAAAIBzQAAAAAAAUHJAAAAAAADQcUAAAAAAAOBxQAAAAAAAMHFAAAAAAAAgcUAAAAAAAJBxQAAAAAAAcHFAAAAAAACgckAAAAAAAIBzQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1324\"},\"selection_policy\":{\"id\":\"1323\"}},\"id\":\"1309\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1332\"}]},\"id\":\"1347\",\"type\":\"LegendItem\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1345\"},\"selection_policy\":{\"id\":\"1344\"}},\"id\":\"1328\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1345\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1327\"},{\"id\":\"1347\"}]},\"id\":\"1326\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1331\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1315\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1295\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1318\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"1301\"}},\"id\":\"1297\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1298\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1299\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1319\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1285\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1321\"},\"group\":null,\"major_label_policy\":{\"id\":\"1322\"},\"ticker\":{\"id\":\"1288\"}},\"id\":\"1287\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1311\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1312\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1318\"},\"group\":null,\"major_label_policy\":{\"id\":\"1319\"},\"ticker\":{\"id\":\"1292\"}},\"id\":\"1291\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1321\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1291\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1294\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1288\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1287\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1290\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1322\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1296\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1283\",\"type\":\"LinearScale\"}],\"root_ids\":[\"1278\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"45cbca08-74d6-4cdf-93a8-2dc09c77db89\",\"root_ids\":[\"1278\"],\"roots\":{\"1278\":\"d452d852-3db5-4ba0-a3a2-450328a7d527\"}}];\n", - " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", - "\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " let attempts = 0;\n", - " const timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " clearInterval(timer);\n", - " embed_document(root);\n", - " } else {\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " clearInterval(timer);\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " }\n", - " }\n", - " }, 10, root)\n", - " }\n", - "})(window);" - ], - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "1278" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", "\n", @@ -929,7 +686,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -938,64 +695,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function embed_document(root) {\n", - " \n", - " const docs_json = {\"93578f1f-8401-462d-9060-dfa65295b4f5\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1459\"}],\"center\":[{\"id\":\"1462\"},{\"id\":\"1466\"},{\"id\":\"1498\"}],\"height\":300,\"left\":[{\"id\":\"1463\"}],\"renderers\":[{\"id\":\"1485\"},{\"id\":\"1504\"}],\"title\":{\"id\":\"1487\"},\"toolbar\":{\"id\":\"1474\"},\"width\":990,\"x_range\":{\"id\":\"1451\"},\"x_scale\":{\"id\":\"1455\"},\"y_range\":{\"id\":\"1453\"},\"y_scale\":{\"id\":\"1457\"}},\"id\":\"1450\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1481\"}},\"id\":\"1486\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPSpCOVi2KM5OMLTaFRL5DmK3StpCBkKOgiv/EELGhU63Y/PUbV0BTp4iXg8GW/bOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzF89mkmKY5Svw1H3A/5jlFAgrJBYkLOgYmp85saxU6HrBduP3xBDpIQChHAL/ZOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJxrFW0RnRwzPPL3U8DH/z+FHZsl7vMzQNj7HRQPek9AKMe2MFoxT0CAqQfc6GozQACRjmRGX/4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3z5ZzFhcgjk9gKYbfRa/OaIXpA+ghuA5Omp8pJwQ5jn+JbZ8rX/SOSTghC4KeqM5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2oTC7awbzP42otLHSxB5Ab5l2srw9L0BCLICPhTwkQAjp3XWYZQlAkAOyJ+fRBkCFnn3FW5r/P4oEm/TXvNw/+5azaOlnoD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcxX8s0SQJQIn+3tcgfDdA9FS6WuOIS0DYCblBBkNEQLs9PNtGtyJANkREDnSz5T8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJhWkvMeARBAUC3t1DXIQUAGFGVLGcxYQD7c0k9es1VACFypndPVN0BeerXP220AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg00VFVBs9QICvu+hzQmRAi4qg3W+ycUBDt9F1aWZjQIq++dp6sDpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHcFFvE9cTJA9wEdS0XnZUAtf5vmU1KAQKjTNY/shX5Apt1w3C3oYUComTVOeF0qQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApPuT51l4HUAo72ZkCLVIQIzfkKSB/VlAJg4m7OomUUAP12ZKt2csQA9w+EIEg+0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJzVWaBMnjVAIjsw6GHja0AQLi1AApGGQLZMZj5Z6IZAEqwA/hwsbUBmcNtVfk03QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7wN76+Jl5TnEDCYhQuEUOjQuFBnmjik6Zm2PI0ifIzpnkIbC1OUCOgiyNW+q1MY5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA33IS2vipmzmNPG14pVXWOfph2DAwnvY5HbocDva6/DlOgl/iXOPmOcw1vgUU37Y5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLnum0rHZHQC3iCfofU3ZAR88zVGGkikDSddJqfvCDQKp78Kiut2JAzHlFccIJJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA981EPOo1EEDAgJ8HNchMQByQkrv7BXBAyFcZ5yhvdkB9LakhaF5lQKIeOktfXFZAq21e5qJ9WUAaz4AXSP9HQCJAfsRxVRxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtD2mt9z1T8p030r/AkJQGJmMy1zUyJAO3sDwUPSIEA68gODN10DQDXf8+/L9Ms/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACrhtYkxplAOeD9t9Q5t385C+Zgx1D/ojlyyRyTf4qsOTV2cfcd45o5osbh2tzDbzkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk1lEP5BhKOVY+kF+NB3Y5iXivsedRhzlPQC9fEPV+OTHwYpscE5Y5r+r683Mk0Tl5H4SDcP7xOZzP3Kbksfc5DKDZy3KQ4zmIsA3s20G0OQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEnu0jEJrBJANLHB33QgUkAXp8IkCxF2QLWjneHPM4FARcop9JkFdEDP0yFzqRhiQBwmi0UKQExAB8KoBj3eIkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGbbspnjOAVASFSR7x0vO0D9sE65ztRVQEDKnvUF/FVAZ4jr5qPCO0B8/2j2MPoFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm+htxIWxTlAG30gIL4AOi1B5xVSqyA6LhPrjlXPJDobpL+ipEkQOli/ZXJP+N85AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANIZebfkh0FAMOqbjZNVa0APnRcMX7h6QFIY19kqYHBAAKhfDPIqSUBm6jsiFEAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNOPMkonwFA/IeE/RI4QkCUvnetXJ5nQLhJaGIaMnNAA6UfScmPY0DIaRR9zf44QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUl/c86WlOUAcqrPA/QJsQHwLGa0vLoNA7CQu3KR3gEDLtsyqIbphQKS1zxVx7SdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4TXFh6SaMUBsP4mSY95sQMLddsD1rY1AohYHCSMhk0BtQmpkOOt+QGQFSeF1VE9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALT/U8RbvR1AqhEuBxj9UkALBd5FuAlwQJUSQUWYfHRAhxVrwqCPZEAkN7bXWf8+QMydNIP+1/4/y/H5Z/hAJ0BkrXYlJx9UQA48yOHS1GVAF6BG9PCyXUDgjKuyOVQ5QGgbz47vFfs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK/WPqbXwT9A9DgxfslddEDPYwTlWjuRQB0HLFjSgJZAodZbk3uThkB64oJIhUdgQLLOWfs0hB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaKbLQS0Y8T8JolCIeqUxQH2X2E+GnFxA+XMof2nSdUDXh3BaKnuDQIqfc+1v5YBAUpAYMXsZfkCJ/hpf/v2EQMXfWcNVD3hAZ7woB3uQUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN0ilzIEvQ0A9jzIx2GlvQLwz28ytH4BAThQl/zDBdECLdxig5b9QQKMoWfsg8xBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMVM0aKHkVI5JU1SoCWqeDkTW8CweoqEOVXmLQVlc3U57ezcvOEWTDkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMucP4kyM4z/ahK7ymPchQCwsQFPLCUVAR4xvJh+VUEDieUujV6tCQDNs0bRkgyNAIfOGVz7SMkAqi3lvzbJMQKj7rX4oMExAFB9GoiBcMUBg3PHpWtD6PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB71SBS8i75PwEkM/b5+iBAp6uyvk+3LEAt+rWjMHMeQBiTW63mPvQ/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAm97FXfLPU/1D6iHo2KHkDqHPw9sZ8rQPivLZYkVh9ACA8LxNxK9j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNK/fucIJeOf2blq9fB5o5R5bXPxLauzmObsTXlrDCOVLTHcnnda85vwQPFnphDEBsKd9WulhKQGfHQFdOrW5A8lh3lolmdkBfi/OvFoRkQGm+HqpHkTdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEt0fZ4EwfDmbP3ImUsjBOfAFkjAd9u45GnmJ+NPxBTr/T/NqgrgIOgS+M+WVEfQ5vK67f99LxTkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUqcZYWF4EQLIt5fV4uTVA93gtjjRVTUCV+wTSmTdLQPA1QcWunz9A4irl2pelNEDVM1Fc954ZQCpFfnxDBeU/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa5po3wU2EUC2N4uGWtdGQKLfTHOvA2NAeAeGAYrbY0CwwcVZPwRKQMKXS+Km6BdAT8VtUWISJEDhedzUCf5IQILV9Mc0hVNA20Nq2aIgQ0A9HbhReYMXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIbhANAn0/2haaBh+ovT/b5B+XDwXjP/UccwV3qu4/OAWBdhQi4D80ILpKNXsGQLrEHXgSAjVAWmMhSZnTSUCIyHhOKQtEQEso0PoUkSNAnJgVZ9L55z+RaXEzF4jwOVA4wE+PIgg6z8e3zKwaBjqwSZB8TmbpOUOy1E44T7I5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz0ep3rKbmT9Wa2Qis4HRP6L0KSAlCe4/zJEzTGwq8D8U1cXB49XVPz86Dxw3gaI/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4KCELeVvM/9f5MRWfUHUDYOdM9dd4sQGtlb3fAhyFALOK2qXO3+j+soDJlKoy5PwAAAAAAAAAAAAAAAAAAAAAVdbi1J6WwP+BTZg8mAuY/mad7z2BCAkBVg3YizgIDQLINmGP/1ug/MIFUlXtdtD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIvHH8+GQ0j/cz4vyw2YMQKCJFwIqeStA5ohpqm3JMECKkpRWZ/sbQBh1jZIFzxNAMncFItbTJECtWpw6tVYgQM5fAFlnFgBATvCZfa/hwz+IWGUd4svtOWDCOBINIdc5sFvkm+aIpjkAAAAAAAAAAGdY/DsUSfo/gybLYgwBNED2z5HgcxxTQLJOb7Td8FZAb4YJcch7QUAzZpvFeuISQN9vAJ2YldE/h8jNP/ytoj8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACiWB+M3uy7OQPWc6SNefI5fdgElcavDjow6rGNAf4POiQxy+VE7/Q5V5R2y1UywTkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2QTOzfxeyP6kRMGCKJPA/LF7XWZAVEkC66GMJpG8ZQCMFOXqbdQZAno9ryATm2D+sAom4hrkZQNXedlh+MFdA+PIXzCo/ekAMKg/bYKaCQHtkC+CNo3BA0JZ78oajQkAAAAAAAAAAAGfVGGCwLSxA9NZg/GBjXEDuwjrVk/RxQPhiC0QXhWxAz74eJ8VwTEDaN3vOTc4RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQtN1il/n7P0RAFly9cStAZX/1OBnoQEAHqqKvESk6QH5pomE2axlAIrWGVq4E3z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwDE1d7WgDQBuCEfmc2TZA6KASUwnlUEDFh5fzmmFPQNQJndD3TTJAEl/90avS+j8AAAAAAAAAAAAAAAAAAAAA+v+H3YvE6TldsoCsaZYfOpmUsAw0Ujg6svyMhxyGNzrSdpsR/ZQcOh1ObJL7z+U5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J1yaee8FEDUVtjcb6xIQMsf6m2omGJAOuflVQBdY0B1DNtU3wlNQA3/q1KR1R9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFmTyD9xu7P1KTCivRf+8/67Dhj5H+BkA0ebnR1I9IQOq/Mo6ltHBAsKDYUMkBfkD5Me58nvlwQOej2SbqIkhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIdtlayCWsA/CBmIIBw/9T98ANRdZFIYQCjTra/wXDdA59xQQfd3UEC/X3OS4kdRQJcFmkOiMjdA6me//uybA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHSB+c66Qfg/Gy3XMRBmMEDUsGtE2N5LQHw/gT0hxU1A+XJ0KkX8M0B7B+ySWN0AQAAAAAAAAAAAwNvuySUjFUAhuVi+YklEQMeG4Ay8eVhAStg8GWyPUkA32AqGWLExQLZVf6yYM/U/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHS/MsdeExlAGue19y7RUkCP8ePSqMFxQGLT7oPoEXVAgkG3hHdwX0D8HzoJ2X4tQAAAAAAAAAAAZfJVSeFLCTk3XgFGYZhAOVJHJbb3YVs5QEuNrw1pXDltyD924ohCOU/Q/v3JaQ45AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzMiG5nGLs/iS/m+GNE5j8zLyiTEwT3P6W/Agry6+0/5zNNg3t2yD/RxJs/oSeJPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARz20fmrlIkAs9mK2SOpRQJzyKY+cXWVAgGg057MGYEBdcfirJj4+QOOvUSWI8gFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgjk0HhH56T/+n65YzrAhQF0PYv6hUT5APfK8TuBXQEB+cW73zSomQGPeYPLT6fI/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANetoPCe1TFAJaQDjNsaWUBwHudjuDtmQOKx7NuOxlhAUA+dUKJeMUAAAAAAAAAAAFXNRugtdR1AVuoBl9owUkCcMJzZhUVsQKcFDC1cpWtAw2O9v3sCUUC8Gth441YaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdBUJRv3wszkZrN+Q5jgyQDsRWHzdiGBA6ir9YGPickD0AVVaqSVrQD50Jndlj0hArXFry6v3C0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKWPShJimtP1y5I7E/Iu4/3OqGA5WZE0Brq5iGYgwgQKb+FnC1ihBACDW03zLp6T9pYw7iZr/yP3WwRXVL4AhA3MpY3wnHBECZubhjB9nlP2z6soD566w/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKH+wx0xTwNA/BizW2t+QUDUipnlDfVjQNlV7w64MHFAyOFkiWQ2eECIzhGY28mBQEsf1LjEUnVAzVZG5fa1UEDkoFXSkzoqQH2UISvpN0FAaPCdC3BfR0DPCucosTJTQCzSw06Kd2pAKh/I7DpEbEDDshS01ixTQCtcZeTQYSBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaXa9nsphFAt8ZIT+U5OkDGwuqZkYtIQLgccOED8TxA8CqOERh/FUAAAAAAAAAAAAAAAAAAAAAARsJ6+ltXQ0As6EuFmdFxQKCH93E7r4RAtE3JiHKBfkAdfd60BnZjQEGvZeRBIGRAaZxp2mfZZEBXfePVUKpMQB+PpnDtshlA6KjuddyD+T87aUIvtNsQQGcss0FzhQxA73JjyZBz7j8CKMSVUk0IQCrf+sbl2EVAvPAGcD9saUAzG6d+aqRyQN2CIViEOmFACaODnRgRNEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/5WVuvd7s56D8nDxx27Tl6U08EHOsDOhbZRhoo+QE/RabKTZnMPD8MNKWzyRZdP5N5cfR1hWI/soPj5zK8TT/IFQUywxcePxCPBf7Ucm0//LPo61GZB0DC/SXqISY/QHiejb9ZEFpA34aI4tWRW0BX2XH0S2hCQAQXbJNe/w5A4Am23drZpDkQ72AikwWlOYw/YnW1uYo5Px2e+lWGDUCwmiMRROI6QOpBa1fv3k5AE6bEzkBaRkD6tPRIImkkQMAkQSD+gOc/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmGbxAQhPM/nsWC7HaEMUBbPhHikBRUQJQLT7Gjbl5ATe4/GxQ1UEB6WFLoiY0qQEosNPskxuk/AAAAAAAAAAAAAAAAAAAAACYVG+tWQAhAW3YxJF2mOEBts5h0BJ5PQJyTtdSAlklAna4MEtghKkBLDmBqzdbwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP5A6QbWSERAhgAsSDRDcEAQJL9z/HSAQChUwZlaBXVAsyQZlyDyUEC/Cp3OMz4RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdT5XfAdH3D+DmUDmKCEDQDxSMdvzVxBA7YAYqjGtKkAdrEv5GwxXQPpUPdYg4m1A2dLBvLqRaEC9ZKxtaoNJQPOfkEIquxBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA33VOrmOlUPzfa4doEAIo/SB1wlvFrpD+4vA2PS0SkP8TmDzy6aYk/EQUZE6UhVD8AAAAAAAAAAAAAAAAAAAAAIlMzz+xk2T/gm4R+rp0CQKrda8oCPxFA+yaHJ94wBEBfW6wWcN/dP1u36ItotjZAbW9CkMtrYEDfwP0pxQJuQFwu40+KVGFAtMe9AhFMOUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcAWehK27DP/QZUWHmV/o/R8WMn7yTFkB+7p7yaHYYQPfqWCRAwQBAHCg2ukUEzT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeMcDW5MDFkAoxguZwwE/QD0bayDynUtA3ObectQbP0B4LF/2pSgWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrHzSEV2Q0QJt133rEJGBAHc72OEUrcECM2WzzBX1kQMyTamcvbEBAAYjl1WinAEAQ/zLBcTU1OvAGzm4XZ9c/jsoDJS+MFUB1p7NJ8xo5QLSRFKfGgUJAU+PWU4tDMUAUjuV46mAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPToc9UVfPQ/byOb6SP/KkBAHDDSNIRGQNhhh84exUdA4FoEoebCL0APoICgt9v6PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQKd6wDaw5T/hwDXT4XwjQHJ2i9mPLEZAp+MEuDvzT0C4RMx1/iU9QKNkG/JY1hBAq2yWWzr90znGeO1gHULVOVtAuYhvhhI6v3WQmHJyNDqFGubruJU8OpzWMJCuTik6wLruKWU2zD9UiIpxkfj2P9SSnR9FsQdAtHJ+C4n0/j/1v7UB1Z3ZP3TP78552po/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgVDK+pfIBQLn1o+tY4TRAmoOelVTKTkCKN3R5c8ZMQIOmIngECzFAhbiNyuSW+T8AAAAAAAAAAFqa/tWS50JABlAx9v5WdkCqUZ8wELyQQF0VvuM0yY9AHbdReMgic0APKCuY+zU9QAAAAAAAAAAAQkE02DdNjTnlMT7hfODKOVcHhSA8Q+85ZhyYtJAO9zl/JD4FqocaQKT2I8Avn0lAMoB+RgNiX0CcFfVy6WBYQOHinrthFzhAhg1DU/7pAkD7Nma/YjEDQHQKZc+qmxRAv4mxVKImDUB4XqlZFD/qP3/xRmzn/K0/AAAAAAAAAABy2IkhtbGjOd6iyLdIWdI5gvTalqqw5TnDc1fyAkTgOcKfDg3h8745ji435+CugjkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALF+aYdUv7D911A1C/nEcQJ4if3rO1jRAYOz+KmGMP0DvMWVe695CQCO16qGLIDZA8ygT4aTOEUAz1frvjXPSP53YuoWr2/E/CZVjJtVbJEB6wJPcu3c9QISjP9WVEztAD6x44niWH0AoXsMlv2TnPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJUx6nDjE1D/U+J9sCssNQEqDfN+VUCtAEGTbtVH/L0CFEHF9G/AXQAHKX5aP3eY/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAzsDpPEW9PyxENEziRec/rG/yHjqE9z9Q4ldM7zLuP6TfjklnpMg/uO3ugeuNiT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkJx3GUMH+P333Q61X6D5AFDqTOdO/Y0Aiu+bZKwxwQMZEgTf4lGBAcfxOjuTJNUAAAAAAAAAAAHB2w3/A2O0/8Frny/MBLUC/ydg8Me5RQDzPaX9BMlxAJ+CEFFIzTEApAPxUOfAhQAAAAAAAAAAAAAAAAAAAAABrx/tHvI7IOUkcQlJnpPI5M23Hg64BAjpvA3hmUyYDQBIM+/EUEDdA78naLFqsUUAWToXbFjxRQEQR2O1mYzVA9iG+mI/jAEAAAAAAAAAAANPB6sJBbQFAtPDVtWmqOUA64f83kA9YQJQtTplrulxADk2wonjbRUCkGIulUDkVQIqv5djWlW8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4fMOUlSKzOYdtD8c4afA5AybeXUXxETooiM9mBjnnP8X7OiY+niVAP32Dz4GoSUBIxoKb6mlTQKshO71pukJAoYiGT+0IF0CuhD5WKt8iQK/uEnMzF1ZAFl6NNhN9cEBV9E37OGpvQFMn/7aKHFNAamlTgOq9HUDLU0VCA0F2PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV9yeNhOcIEAI7H8xbzdHQMcmdvAbtFRAoF8kwsWOR0ClNcv59RkhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnLUzHYODL0DIUwxGXvdUQN9RsFojz2FAECXhh0lQU0DvHcHhzL0qQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg2sJSS/dQ0Dtq+h6bjJrQAZG7zwh6HdANXya29GFa0C/Bfl0ppNGQO2JPbermwBApMMVTiTTxz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3FaT6bFg4QFlQV7fyJGZAeoZR+hTIeUCIZWz4DkFzQAYx42ZRllJAurxuKAjKF0Atu+WRxA+iPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/56ffgyfAkAd5a9gqhw5QGx+A3rMrVVA4m6ULxL2V0AX3Ux2sflAQDPBsQlcpBBAfNTwd35o6D9fw+d2p5HiP4zAOOcjF8I/ER7aC7iRhj8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3MeQWkRJ5TlO6wlrzrsQOkIblzp6FwtAy+sBSoObN0BUECA0GV1KQLSkGGil3UJACkPofjpNIUC8KsJmwlXkPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXdznb/4Pg/gC/HO0ZsMkCe1yklioNRQFSQd87iX1VAKZpebA7iRkC3IEsao7NeQCTGegLE/HZAkOIArc7idkCA4UCiLkJdQHYg/BQ1BChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgiyrOS0/Q/tPMlv1y6MUB0nzJHQ29TQHU5/CqQ1FtAfJeY4NrNTUA4VnBooJY2QOjQYPn2tB1A6WdUvhdi8j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANWfuOMNAClAhcRU0DjFVkDyJcmlJ7VqQIB62w6MK2RA2EVC4MqdQ0Dnc/E0X5EIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0g0J+h1ESQJ6livsOgURApZumCyqWXUA/PYhWpYRbQF4rYdRTf0BAsA08JQWACUAAAAAAAAAAAAAAAAAAAAAAGGH//EOadTmp1WLRaaGkOXYHuV0Xark5n5OpOjsxtDlbbSA207GUOUrBSFXSW1s5AAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1517\"},\"selection_policy\":{\"id\":\"1516\"}},\"id\":\"1500\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1503\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1484\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"1467\"},{\"id\":\"1468\"},{\"id\":\"1469\"},{\"id\":\"1470\"},{\"id\":\"1471\"},{\"id\":\"1472\"}]},\"id\":\"1474\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"1459\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1462\",\"type\":\"Grid\"},{\"attributes\":{\"axis\":{\"id\":\"1463\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1466\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1487\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1460\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1504\"}]},\"id\":\"1519\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"1500\"}},\"id\":\"1505\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1464\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1490\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1493\"},\"group\":null,\"major_label_policy\":{\"id\":\"1494\"},\"ticker\":{\"id\":\"1460\"}},\"id\":\"1459\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1482\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1499\"},{\"id\":\"1519\"}]},\"id\":\"1498\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1502\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1467\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1457\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1493\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1494\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1496\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1500\"},\"glyph\":{\"id\":\"1501\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1503\"},\"nonselection_glyph\":{\"id\":\"1502\"},\"view\":{\"id\":\"1505\"}},\"id\":\"1504\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1468\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1495\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1455\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1473\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1453\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1483\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"1473\"}},\"id\":\"1469\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1470\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1451\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1490\"},\"group\":null,\"major_label_policy\":{\"id\":\"1491\"},\"ticker\":{\"id\":\"1464\"}},\"id\":\"1463\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1481\"},\"glyph\":{\"id\":\"1482\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1484\"},\"nonselection_glyph\":{\"id\":\"1483\"},\"view\":{\"id\":\"1486\"}},\"id\":\"1485\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1472\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1491\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1496\"},\"selection_policy\":{\"id\":\"1495\"}},\"id\":\"1481\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1471\",\"type\":\"ResetTool\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1485\"}]},\"id\":\"1499\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1517\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1516\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1501\",\"type\":\"Line\"}],\"root_ids\":[\"1450\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"93578f1f-8401-462d-9060-dfa65295b4f5\",\"root_ids\":[\"1450\"],\"roots\":{\"1450\":\"e2611573-2902-40de-abe7-217e42e2da27\"}}];\n", - " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", - "\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " let attempts = 0;\n", - " const timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " clearInterval(timer);\n", - " embed_document(root);\n", - " } else {\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " clearInterval(timer);\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " }\n", - " }\n", - " }, 10, root)\n", - " }\n", - "})(window);" - ], - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "1450" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", "\n", @@ -1014,7 +716,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1028,64 +730,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function embed_document(root) {\n", - " \n", - " const docs_json = {\"0625d81c-5c9e-4b0c-9d1e-dafe216b9826\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1644\"}],\"center\":[{\"id\":\"1647\"},{\"id\":\"1651\"},{\"id\":\"1683\"}],\"height\":300,\"left\":[{\"id\":\"1648\"}],\"renderers\":[{\"id\":\"1670\"},{\"id\":\"1689\"}],\"title\":{\"id\":\"1672\"},\"toolbar\":{\"id\":\"1659\"},\"width\":990,\"x_range\":{\"id\":\"1636\"},\"x_scale\":{\"id\":\"1640\"},\"y_range\":{\"id\":\"1638\"},\"y_scale\":{\"id\":\"1642\"}},\"id\":\"1635\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1688\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1638\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1656\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1685\"},\"glyph\":{\"id\":\"1686\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1688\"},\"nonselection_glyph\":{\"id\":\"1687\"},\"view\":{\"id\":\"1690\"}},\"id\":\"1689\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1653\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1676\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1680\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1668\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1667\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1649\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1678\"},\"group\":null,\"major_label_policy\":{\"id\":\"1679\"},\"ticker\":{\"id\":\"1645\"}},\"id\":\"1644\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1642\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1679\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1640\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1655\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1645\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1644\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1647\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1657\",\"type\":\"HelpTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAAAAaUDpoosuugBpQNFFF110AWlAuuiiiy4CaUCjiy666AJpQIwuuuiiA2lAdNFFF10EaUBddNFFFwVpQEYXXXTRBWlAL7rooosGaUAXXXTRRQdpQAAAAAAACGlA6aKLLroIaUDRRRdddAlpQLrooosuCmlAo4suuugKaUCMLrroogtpQHTRRRddDGlAXXTRRRcNaUBGF1100Q1pQC+66KKLDmlAF1100UUPaUAAAAAAABBpQOmiiy66EGlA0UUXXXQRaUC66KKLLhJpQKOLLrroEmlAjC666KITaUB00UUXXRRpQF100UUXFWlARhdddNEVaUAvuuiiixZpQBdddNFFF2lAAAAAAAAYaUDpoosuuhhpQNFFF110GWlAuuiiiy4aaUCjiy666BppQIwuuuiiG2lAdNFFF10caUBddNFFFx1pQEYXXXTRHWlAL7roooseaUAXXXTRRR9pQAAAAAAAIGlA6aKLLrogaUDRRRdddCFpQLrooosuImlAo4suuugiaUCMLrrooiNpQHTRRRddJGlAXXTRRRclaUBGF1100SVpQC+66KKLJmlAF1100UUnaUAAAAAAAChpQOmiiy66KGlA0UUXXXQpaUC66KKLLippQKOLLrroKmlAjC666KIraUB00UUXXSxpQF100UUXLWlARhdddNEtaUAvuuiiiy5pQBdddNFFL2lAAAAAAAAwaUDpoosuujBpQNFFF110MWlAuuiiiy4yaUCjiy666DJpQIwuuuiiM2lAdNFFF100aUBddNFFFzVpQEYXXXTRNWlAL7rooos2aUAXXXTRRTdpQAAAAAAAOGlA6aKLLro4aUDRRRdddDlpQLrooosuOmlAo4suuug6aUCMLrroojtpQHTRRRddPGlAXXTRRRc9aUBGF1100T1pQC+66KKLPmlAF1100UU/aUAAAAAAAEBpQOmiiy66QGlA0UUXXXRBaUC66KKLLkJpQKOLLrroQmlAjC666KJDaUB00UUXXURpQF100UUXRWlARhdddNFFaUAvuuiii0ZpQBdddNFFR2lAAAAAAABIaUDpoosuukhpQNFFF110SWlAuuiiiy5KaUCjiy666EppQIwuuuiiS2lAdNFFF11MaUBddNFFF01pQEYXXXTRTWlAL7roootOaUAXXXTRRU9pQAAAAAAAUGlA6aKLLrpQaUDRRRdddFFpQLrooosuUmlAo4suuuhSaUCMLrroolNpQHTRRRddVGlAXXTRRRdVaUBGF1100VVpQC+66KKLVmlAF1100UVXaUAAAAAAAFhpQOmiiy66WGlA0UUXXXRZaUC66KKLLlppQKOLLrroWmlAjC666KJbaUB00UUXXVxpQF100UUXXWlARhdddNFdaUAvuuiii15pQBdddNFFX2lAAAAAAABgaUDpoosuumBpQNFFF110YWlAuuiiiy5iaUCjiy666GJpQIwuuuiiY2lAdNFFF11kaUBddNFFF2VpQEYXXXTRZWlAL7roootmaUAXXXTRRWdpQAAAAAAAaGlA6aKLLrpoaUDRRRdddGlpQLrooosuamlAo4suuuhqaUCMLrroomtpQHTRRRddbGlAXXTRRRdtaUBGF1100W1pQC+66KKLbmlAF1100UVvaUAAAAAAAHBpQOmiiy66cGlA0UUXXXRxaUC66KKLLnJpQKOLLrrocmlAjC666KJzaUB00UUXXXRpQF100UUXdWlARhdddNF1aUAvuuiii3ZpQBdddNFFd2lAAAAAAAB4aUDpoosuunhpQNFFF110eWlAuuiiiy56aUCjiy666HppQIwuuuiie2lAdNFFF118aUBddNFFF31pQEYXXXTRfWlAL7rooot+aUAXXXTRRX9pQAAAAAAAgGlA6aKLLrqAaUDRRRdddIFpQLrooosugmlAo4suuuiCaUCMLrroooNpQHTRRRddhGlAXXTRRReFaUBGF1100YVpQC+66KKLhmlAF1100UWHaUAAAAAAAIhpQOmiiy66iGlA0UUXXXSJaUC66KKLLoppQKOLLrroimlAjC666KKLaUB00UUXXYxpQF100UUXjWlARhdddNGNaUAvuuiii45pQBdddNFFj2lAAAAAAACQaUDpoosuupBpQNFFF110kWlAuuiiiy6SaUCjiy666JJpQIwuuuiik2lAdNFFF12UaUBddNFFF5VpQEYXXXTRlWlAE6qQIxvWaUDIwCeWwxVsQHu/g+JBu3BAWqpcXYiycEABO5h40QZsQNwFbBjt1mlAo4suuuiaaUCMLrrooptpQHTRRRddnGlAXXTRRRedaUBGF1100Z1pQC+66KKLnmlAF1100UWfaUAAAAAAAKBpQOmiiy66oGlA0UUXXXShaUC66KKLLqJpQKOLLrroomlAjC666KKjaUB00UUXXaRpQF100UUXpWlARhdddNGlaUAvuuiii6ZpQBdddNFFp2lAAAAAAACoaUDpoosuuqhpQNFFF110qWlAuuiiiy6qaUCjiy666KppQIwuuuiiq2lAdNFFF12saUBddNFFF61pQEYXXXTRrWlAL7rooouuaUAXXXTRRa9pQAAAAAAAsGlA6aKLLrqwaUDRRRdddLFpQLrooosusmlAo4suuuiyaUCMLrroorNpQHTRRRddtGlAXXTRRRe1aUBGF1100bVpQC+66KKLtmlAF1100UW3aUAAAAAAALhpQOmiiy66uGlA0UUXXXS5aUC66KKLLrppQKOLLrroumlAjC666KK7aUB00UUXXbxpQF100UUXvWlARhdddNG9aUAvuuiii75pQBdddNFFv2lAAAAAAADAaUDpoosuusBpQNFFF110wWlAuuiiiy7CaUCjiy666MJpQIwuuuiiw2lAdNFFF13EaUBddNFFF8VpQEYXXXTRxWlALrrooovGaUAXXXTRRcdpQAAAAAAAyGlA6aKLLrrIaUDRRRdddMlpQLrooosuymlAo4suuujKaUCMLrroostpQHTRRRddzGlAXXTRRRfNaUBGF1100c1pQC+66KKLzmlAF1100UXPaUAAAAAAANBpQOmiiy660GlA0UUXXXTRaUC66KKLLtJpQKOLLrro0mlAjC666KLTaUB00UUXXdRpQF100UUX1WlARhdddNHVaUAvuuiii9ZpQBdddNFF12lAAAAAAADYaUDpoosuuthpQNFFF1102WlAuuiiiy7aaUCjiy666NppQIwuuuii22lAdNFFF13caUBddNFFF91pQEYXXXTR3WlAL7roooveaUAXXXTRRd9pQAAAAAAA4GlA6aKLLrrgaUDRRRdddOFpQLrooosu4mlAo4suuujiaUCMLrroouNpQHTRRRdd5GlAXXTRRRflaUCJeNNL3gtqQHNfdjiy3GpArsabnCHba0DEAvhYyCtrQI0aY5BQTmpA3w22+btEakD34y1DYylqQCXZKCZH+WlAxblQZ6nsaUB00UUXXexpQF100UUX7WlARhdddNHtaUAuuuiii+5pQBdddNFF72lAAAAAAADwaUDpoosuuvBpQNFFF1108WlAuuiiiy7yaUCjiy666PJpQIwuuuii82lAdNFFF130aUBddNFFF/VpQEYXXXTR9WlAL7rooov2aUAXXXTRRfdpQAAAAAAA+GlA6aKLLrr4aUDRRRdddPlpQLrooosu+mlAo4suuuj6aUCMLrroovtpQHTRRRdd/GlAXXTRRRf9aUBGF1100f1pQC+66KKL/mlAF1100UX/aUAAAAAAAABqQOmiiy66AGpA0UUXXXQBakC66KKLLgJqQKOLLrroAmpAjC666KIDakB00UUXXQRqQF100UUXBWpARhdddNEFakAvuuiiiwZqQBdddNFFB2pAAAAAAAAIakDpoosuughqQNFFF110CWpAuuiiiy4KakCjiy666ApqQIwuuuiiC2pAdNFFF10MakBddNFFFw1qQEYXXXTRDWpAL7rooosOakAXXXTRRQ9qQAAAAAAAEGpA6aKLLroQakDRRRdddBFqQLrooosuEmpAo4suuugSakCiLWwtNnhqQEWxQTLhA21AzQRADqh7cEC8WcsEkyZvQAp+nBAAQmtAW6GCRfksakAAAAAAABhqQOmiiy66GGpA0UUXXXQZakC66KKLLhpqQKOLLrroGmpAjC666KIbakB00UUXXRxqQF100UUXHWpARhdddNEdakAuuuiiix5qQBdddNFFH2pAAAAAAAAgakDpoosuuiBqQNFFF110IWpAuuiiiy4iakCjiy666CJqQIwuuuiiI2pAdNFFF10kakBddNFFFyVqQEYXXXTRJWpAL7rooosmakAXXXTRRSdqQAAAAAAAKGpA6aKLLrooakDRRRdddClqQG97P4M3qmpA99ZpL/acbkBIXDbH10hzQMqflx8Gg3JA3p+GudEnbUAv7ZvjiG9qQC+66KKLLmpAF1100UUvakAAAAAAADBqQOmiiy66MGpA0UUXXXQxakC66KKLLjJqQKOLLrroMmpAjC666KIzakB00UUXXTRqQF100UUXNWpARhdddNE1akAvuuiiizZqQBdddNFFN2pAAAAAAAA4akDpoosuujhqQNFFF110OWpAuuiiiy46akCjiy666DpqQIwuuuiiO2pAdNFFF108akDZLnrOgeBtQGNjjK4iQHdAoucUr7XRfkAtCqOj19J2QNE3X1sPlm1A6aKLLrpAakDRRRdddEFqQLrooosuQmpAo4suuuhCakCMLrrookNqQHTRRRddRGpAXXTRRRdFakBGF1100UVqQC+66KKLRmpAF1100UVHakAAAAAAAEhqQOmiiy66SGpA0UUXXXRJakC66KKLLkpqQKOLLrroSmpAjC666KJLakB00UUXXUxqQF100UUXTWpARhdddNFNakAvuuiii05qQBdddNFFT2pAAAAAAABQakDpoosuulBqQIEGOhucn2xAWPVf67kceEAWIicVDueGQHd1yQHf14VAjVfbeUUedkD4zbTK7vprQEYXXXTRVWpALrroootWakAXXXTRRVdqQAAAAAAAWGpA6aKLLrpYakDRRRdddFlqQLrooosuWmpAo4suuuhaakCMLrrooltqQHTRRRddXGpAXXTRRRddakBGF1100V1qQC+66KKLXmpAF1100UVfakAAAAAAAGBqQOmiiy66YGpA0UUXXXRhakC66KKLLmJqQKOLLrroYmpAac72t2VPa0Cfxi+Yz0hwQBLyDAzssXNALA84daN8cUCfJ48XBy1sQIdVt9XIhGpAAAAAAABoakDpoosuumhqQNFFF110aWpAuuiiiy5qakCjiy666GpqQIwuuuiia2pAdNFFF11sakBddNFFF21qQEYXXXTRbWpAL7roootuakAXXXTRRW9qQAAAAAAAcGpA6aKLLrpwakDRRRdddHFqQLrooosucmpAo4suuuhyakCMLrroonNqQHTRRRdddGpAXXTRRRd1akBGF1100XVqQC+66KKLdmpAF1100UV3akAAAAAAAHhqQOmiiy66eGpA0kUXXXR5akC66KKLLnpqQKOLLrroempAjC666KJ7akB00UUXXXxqQF100UUXfWpARhdddNF9akAuuuiii35qQBdddNFFf2pAAAAAAACAakDpoosuuoBqQNFFF110gWpAuuiiiy6CakCjiy666IJqQIwuuuiig2pAdNFFF12EakBddNFFF4VqQEYXXXTRhWpAL7rooouGakAXXXTRRYdqQLQ6C5TJO21ABu9dCw42e0CE/3JXXzONQOQGT+Hkio1A2psX3ILbe0CZnHWzUnVtQHTRRRddjGpAXXTRRReNakBGF1100Y1qQC666KKLjmpAF1100UWPakAAAAAAAJBqQOmiiy66kGpA0UUXXXSRakC66KKLLpJqQKOLLrrokmpAjC666KKTakB00UUXXZRqQF100UUXlWpARhdddNGVakAvuuiii5ZqQBdddNFFl2pAAAAAAACYakDpoosuuphqQNFFF110mWpAuuiiiy6aakCjiy666JpqQIwuuuiim2pAdNFFF12cakBddNFFF51qQEYXXXTRnWpALrroooueakAXXXTRRZ9qQAAAAAAAoGpA6aKLLrqgakDSRRdddKFqQLrooosuompAo4suuuiiakCMLrrooqNqQHTRRRddpGpAXXTRRRelakBGF1100aVqQC666KKLpmpAF1100UWnakAAAAAAAKhqQOmiiy66qGpA0UUXXXSpakC66KKLLqpqQKOLLrroqmpAjC666KKrakB00UUXXaxqQF100UUXrWpARhdddNGtakAvuuiii65qQBdddNFFr2pAAAAAAACwakDpoosuurBqQNFFF110sWpAuuiiiy6yakCjiy666LJqQIwuuuiis2pAdNFFF120akBddNFFF7VqQEYXXXTRtWpALrrooou2akAXXXTRRbdqQAAAAAAAuGpA6aKLLrq4akCy1ijFj0twQEWr7Z8b2IFAGLlfwY2pkEB1AQElZ5+KQI8mG+AFunZA+svlbLMdbEBGF1100b1qQC+66KKLvmpAF1100UW/akAAAAAAAMBqQOmiiy66wGpA0UUXXXTBakC66KKLLsJqQKOLLrrowmpAjC666KLDakB00UUXXcRqQF100UUXxWpARhdddNHFakAuuuiii8ZqQBdddNFFx2pAcCbiUa9Ja0CMwTm4Y/1wQAUzHuq1an1AEmZ1FiDqgUCQ3OttqBR4QO6eK0fp/HJAJYQ6RZfFc0AS1NildGZwQEcJgQJ9sGtALrrooovOakAXXXTRRc9qQAAAAAAA0GpA6aKLLrrQakDRRRdddNFqQLrooosu0mpAo4suuujSakCMLrrootNqQHTRRRdd1GpAXXTRRRfVakBGF1100dVqQC+66KKL1mpAF1100UXXakAAAAAAANhqQOmiiy662GpA0UUXXXTZakC66KKLLtpqQKOLLrro2mpA9KmH2FzmakDByPMHhUBrQMOqpHhOAmxA+k5tsPXqa0D3yfSAACxrQA9acARD5mpAAAAAAADgakDpoosuuuBqQNFFF1104WpAuuiiiy7iakCjiy666OJqQIwuuuii42pAdNFFF13kakBddNFFF+VqQEYXXXTR5WpAL7rooovmakAXXXTRRedqQAAAAAAA6GpA6aKLLrroakDRRRdddOlqQLrooosu6mpAo4suuujqakCMLrrooutqQHTRRRdd7GpAXXTRRRftakBGF1100e1qQC666KKL7mpAF1100UXvakAAAAAAAPBqQOmiiy668GpA0kUXXXTxakC66KKLLvJqQKOLLrro8mpAjC666KLzakB00UUXXfRqQF100UUX9WpARhdddNH1akAuuuiii/ZqQBdddNFF92pAAAAAAAD4akDpoosuuvhqQNFFF110+WpAuuiiiy76akCjiy666PpqQIwuuuii+2pAdNFFF138akBddNFFF/1qQEYXXXTR/WpAL7rooov+akAXXXTRRf9qQAAAAAAAAGtA6aKLLroAa0DRRRdddAFrQLrooosuAmtAo4suuugCa0CMLrroogNrQHTRRRddBGtAXXTRRRcFa0BGF1100QVrQC666KKLBmtAF1100UUHa0AAAAAAAAhrQOmiiy66CGtA0kUXXXQJa0C66KKLLgprQKOLLrroCmtAjC666KILa0B00UUXXQxrQF100UUXDWtARhdddNENa0Avuuiiiw5rQBdddNFFD2tAAAAAAAAQa0DpoosuuhBrQNFFF110EWtAuuiiiy4Sa0Cjiy666BJrQP7FSDIDqWtAB1WTw0sSckCjsNVjy82BQIbptD5E+YdArhPP4m/IgEBzGEui95d2QMRksUgBFHFACS/2/p1GbEDSRRdddBlrQLrooosuGmtAo4suuugaa0CMLrroohtrQHTRRRddHGtAXXTRRRcda0BGF1100R1rQC666KKLHmtAF1100UUfa0AAAAAAACBrQOmiiy66IGtA0UUXXXQha0C66KKLLiJrQKOLLrroImtAjC666KIja0B00UUXXSRrQMs/ONT6eWtAz0FPMrWLbkBWCch/eQhzQBzhIWakEnNADXHdfFSgbkDnRmXyooBrQNFFF110KWtAuuiiiy4qa0Cjiy666CprQIwuuuiiK2tAdNFFF10sa0BddNFFFy1rQEYXXXTRLWtALrrooosua0AXXXTRRS9rQAAAAAAAMGtA6aKLLrowa0DSRRdddDFrQLrooosuMmtAo4suuugya0CMLrroojNrQHTRRRddNGtAXXTRRRc1a0BGF1100TVrQC+66KKLNmtAF1100UU3a0AAAAAAADhrQOmiiy66OGtA0UUXXXQ5a0C66KKLLjprQKOLLrroOmtAjC666KI7a0B00UUXXTxrQF100UUXPWtARhdddNE9a0Auuuiiiz5rQIyjUv8+oW9AGPXNxslKe0BCt64RXiyEQDu7YgjlAH5AXWldh3XGcEBNe7cK6aNrQIwuuuiiQ2tAdNFFF11Ea0BddNFFF0VrQEYXXXTRRWtALrroootGa0AXXXTRRUdrQAAAAAAASGtA6aKLLrpIa0DRRRdddElrQLrooosuSmtAo4suuuhKa0CMLrrooktrQKzCarrZkmtAXJYyBRzbb0DtauoQF3Z5QGhT7hmwbIBADQFKjYdvd0A5jaKv2W9uQOmiiy66UGtA0UUXXXRRa0C66KKLLlJrQKOLLrroUmtAjC666KJTa0B00UUXXVRrQF100UUXVWtARhdddNFVa0Auuuiii1ZrQBdddNFFV2tAAAAAAABYa0DpoosuulhrQNJFF110WWtAuuiiiy5aa0Cjiy666FprQIwuuuiiW2tAXl3B1RGRbkA8j0KDCrB7QE5RMAqkBYpAeFPoxEdPh0DxiSC+s4x2QFr7XBHX3mxA6aKLLrpga0DRRRdddGFrQLrooosuYmtAo4suuuhia0CMLrroomNrQHTRRRddZGtAXXTRRRdla0BGF1100WVrQC666KKLZmtA0wNtYpqabUC2n0TJMSN8QD7jDCYSRJJAXP+plFGOlkBl2x3VJ1CGQH5mQBkDoHFAjC666KJra0B00UUXXWxrQF100UUXbWtARhdddNFta0Auuuiii25rQBdddNFFb2tAAAAAAABwa0DpoosuunBrQNFFF110cWtAuuiiiy5ya0Cjiy666HJrQIrO3MaNYWxAJG1ujXR5ckA6v8boQ8R9QBzPt3/AG4FA2uepMhYDeED8I2sMMVdvQDxpBv2vtWtABkILtcnsbEBCTun3g8RyQGSStbaAp3hA1+0omjAqdUAooA8fKqZuQKtvY/aIsmtAXXTRRRd9a0BGF1100X1rQC666KKLfmtAF1100UV/a0AAAAAAAIBrQOmiiy66gGtA0kUXXXSBa0C66KKLLoJrQKOLLrrogmtAjC666KKDa0B00UUXXYRrQF100UUXhWtARhdddNGFa0Avuuiii4ZrQBdddNFFh2tAAAAAAACIa0DpoosuuohrQNFFF110iWtAuuiiiy6Ka0Cjiy666IprQIwuuuiii2tAdNFFF12Ma0BddNFFF41rQBzyJGkMhm9ABsvSp4cSgUBy7zKfQ62UQB0HLFjS8plAW7/+Hqp3jUAmFM3SfOx1QDC3fTNQhmxAo4suuuiSa0CMLrroopNrQHTRRRddlGtAXXTRRReVa0BGF1100ZVrQC666KKLlmtAF1100UWXa0AAAAAAAJhrQOmiiy66mGtA0UUXXXSZa0C66KKLLpprQKOLLrrommtA2cU9Q9O9a0C15U9oDNFtQA7g3jat9XRAzn+rHKnQgUBitipDzWKKQNC20GFBzYdAKUiMmL30hUBD573qLOaLQFfB8vgH8IJAd6ObBzY1ckCjiy666KJrQIwuuuiio2tAdNFFF12ka0BddNFFF6VrQEYXXXTRpWtALrrooouma0AXXXTRRadrQAAAAAAAqGtA6aKLLrqoa0DSRRdddKlrQLrooosuqmtAo4suuuiqa0CMLrrooqtrQHTRRRddrGtAXXTRRReta0BGF1100a1rQC+66KKLrmtAF1100UWva0AAAAAAALBrQOmiiy66sGtA0UUXXXSxa0C66KKLLrJrQKOLLrrosmtAjC666KKza0B00UUXXbRrQF100UUXtWtARhdddNG1a0Auuuiii7ZrQBdddNFFt2tAB6mUOfBBcEATGd8vSZF9QDAFIeQKDodAVkR7IiRPgUC0Yx3FbQ1yQNH3lPA7Q2xAdNFFF128a0BddNFFF71rQEYXXXTRvWtALrrooou+a0AXXXTRRb9rQAAAAAAAwGtA6aKLLrrAa0DRRRdddMFrQLrooosuwmtAo4suuujCa0CMLrroosNrQHTRRRddxGtAXXTRRRfFa0BGF1100cVrQC666KKLxmtAF1100UXHa0AAAAAAAMhrQOmiiy66yGtA0UUXXXTJa0C66KKLLsprQKOLLrroymtAjC666KLLa0B00UUXXcxrQF100UUXzWtARhdddNHNa0Auuuiii85rQBdddNFFz2tAAAAAAADQa0DpoosuutBrQNJFF1100WtAuuiiiy7Sa0Cjiy666NJrQIwuuuii02tAdNFFF13Ua0BddNFFF9VrQEYXXXTR1WtAL7rooovWa0AXXXTRRddrQAAAAAAA2GtA0LJte0bsa0AfLkLs7fhsQOJ5ObBQjnBA4yizJrwSckCChsZoPENwQDfokmKTFG1AwVLCEF83bkAIvR1oQoVxQIwcSuFKdXFA+iC95ckKbkC549O1oBVsQOmiiy664GtA0kUXXXTha0C66KKLLuJrQKOLLrro4mtAjC666KLja0B00UUXXeRrQF100UUX5WtARhdddNHla0DZ+4yH6RhsQFeP13D19mxAuirr+3SzbUC6UqmzU9xsQPf8cSryEWxAuuiiiy7qa0Cjiy666OprQIwuuuii62tAdNFFF13sa0BddNFFF+1rQEYXXXTR7WtALrrooovua0AXXXTRRe9rQAAAAAAA8GtA6aKLLrrwa0DRRRdddPFrQLrooosu8mtAo4suuujya0CMLrroovNrQHTRRRdd9GtAXXTRRRf1a0BGF1100fVrQC666KKL9mtAF1100UX3a0AAAAAAAPhrQOmiiy66+GtA0kUXXXT5a0C66KKLLvprQKOLLrro+mtAjC666KL7a0B00UUXXfxrQF100UUX/WtARhdddNH9a0Avuuiii/5rQBdddNFF/2tAAAAAAAAAbEDpoosuugBsQNFFF110AWxAuuiiiy4CbECjiy666AJsQIwuuuiiA2xAdNFFF10EbEBddNFFFwVsQEYXXXTRBWxALrrooosGbEAXXXTRRQdsQAAAAAAACGxA6aKLLroIbEDSRRdddAlsQLrooosuCmxAo4suuugKbECMLrroogtsQO6q8dW2NmxAVIbGrmsBbUAV2TyIzMdtQK4nmsc8CW1ANXP8its7bEAAAAAAABBsQOmiiy66EGxA0UUXXXQRbEC66KKLLhJsQKOLLrroEmxAjC666KITbEB00UUXXRRsQF100UUXFWxAWVO1XFeHbEBEQlAcXVZxQD+SWhRKYn1Aeaw7y0Q5gkAklz9vaE54QJ4dW1KdC29Auuiiiy4abECjiy666BpsQIwuuuiiG2xAdNFFF10cbEBddNFFFx1sQEYXXXTRHWxAL7rooosebEAXXXTRRR9sQAAAAAAAIGxA6aKLLrogbEDRRRdddCFsQLrooosuImxAo4suuugibECMLrrooiNsQHTRRRddJGxAXXTRRRclbEBGF1100SVsQC666KKLJmxAF1100UUnbEAAAAAAAChsQOmiiy66KGxA0kUXXXQpbEC66KKLLipsQKOLLrroKmxAjC666KIrbEB00UUXXSxsQF100UUXLWxARhdddNEtbEAuuuiiiy5sQBdddNFFL2xAAAAAAAAwbEDpoosuujBsQNJFF110MWxAuuiiiy4ybECjiy666DJsQIwuuuiiM2xAdNFFF100bEAEjzSnkIZsQPy8GZMA7W5ANgw6Y+zFcUD+zfoiloJxQF8TVOz6FXBARUjoKW3NbkBwz/kXbAZtQP9mH88zT2xAo4suuug6bECMLrroojtsQHTRRRddPGxAXXTRRRc9bEBGF1100T1sQC666KKLPmxAF1100UU/bEAAAAAAAEBsQOmiiy66QGxApIoSjCTLbEBU26KWAvxwQKK1vRZMo3dAAhsgdZYPeEDwoNt2tmJxQBvR43xcBG1Am/NzmfeGbUBU7A8MB0NxQOxjtxrwBHNAe0gtWxSIcEDTYxn51QRtQNFFF110SWxAuuiiiy5KbECjiy666EpsQGpP1OzcS2xAt6QmGxJQbEBClGhVHGBsQGOKYut7bGxAMztft61ebECYRZ+mMqlsQJe4A09C8G5A4P1pQNBicUD6u1pYH6pwQD/rT9s/i21APKGVjOJqbECMLrroolNsQHTRRRddVGxAXXTRRRdVbEBGF1100VVsQC666KKLVmxAF1100UVXbEAAAAAAAFhsQOmiiy66WGxA0kUXXXRZbEC66KKLLlpsQKOLLrroWmxAjC666KJbbEB00UUXXVxsQF100UUXXWxARhdddNFdbEAuuuiii15sQBdddNFFX2xAAAAAAABgbEDpoosuumBsQNFFF110YWxAuuiiiy5ibECjiy666GJsQIwuuuiiY2xAdNFFF11kbEBddNFFF2VsQEYXXXTRZWxAeK9/gFhnbEBNjwWrBnBsQPUpICUJhmxADQokBw+JbEC8KPhOX3RsQK6pFJ9Wa2xAo4suuuhqbECMLrroomtsQHTRRRddbGxAXXTRRRdtbEBGF1100W1sQEPKbF85lWxAD8WeC+ldbUCeM91T5z1uQECZAjY2iW1AlbNqROOmbEAOj+8QYHVsQKOLLrrocmxAjC666KJzbECDiDy8cXZsQLHa4GsZi2xA5AWb99q+bEA7lHLblsJsQCX119AckGxAkKpyr4t6bEDpoosuunhsQNJFF110eWxAuuiiiy56bECjiy666HpsQIwuuuiie2xAdNFFF118bEBddNFFF31sQEYXXXTRfWxALrrooot+bEAXXXTRRX9sQAAAAAAAgGxA6aKLLrqAbEDSRRdddIFsQLrooosugmxAo4suuuiCbECMLrroooNsQHTRRRddhGxAVljLtl+ObECFRieEbPdsQMgyCkMePm5ANI7BhnOgbkCUpLQ622dtQJIOIFsyJ21ARJ03v7HWbUBlrkzfmY9tQCKNkldCy2xACJWZVJuQbEB00UUXXYxsQF100UUXjWxARhdddNGNbEAuuuiii45sQMhV7PnXw2xA0GRZjCEQb0ByRWoPeg9zQJV2p5vxBHRAK6XyU5B4cEDVZluQ/CltQMSuCLVtnGxAUc4J94eVbEBddNFFF5VsQEYXXXTRlWxAL7rooouWbEAXXXTRRZdsQAAAAAAAmGxA6aKLLrqYbEDRRRdddJlsQLrooosummxAo4suuuiabECMLrrooptsQHTRRRddnGxAXXTRRRedbEBGF1100Z1sQC666KKLnmxAF1100UWfbEAAAAAAAKBsQOmiiy66oGxA0kUXXXShbEC66KKLLqJsQKOLLrroomxAjC666KKjbEB00UUXXaRsQF100UUXpWxARhdddNGlbEAuuuiii6ZsQBdddNFFp2xAAAAAAACobEDpoosuuqhsQNJFF110qWxAuuiiiy6qbEAL8iSqK61sQK+Oev3ry2xAZYwUmgk9bUCjkxxmlHhtQFv7ReKnB21A9u9Mpf66bEAspTgHEn1tQLW3HZYfJHRANuKu8cNLhECA+1TyvdKJQNjY3CWl/H5ArLhmO+WtcECMLrroorNsQMpeRx04d25A7O8A4mNzdUBIp7RHvieAQJMOenPRnXxAZQaejbvpcUC/2XNuckZtQOmiiy66uGxA0UUXXXS5bEC66KKLLrpsQKOLLrroumxAjC666KK7bEB00UUXXbxsQF100UUXvWxARhdddNG9bEAvuuiii75sQBdddNFFv2xAAAAAAADAbEDpoosuusBsQNFFF110wWxAuuiiiy7CbECjiy666MJsQIwuuuiiw2xAdNFFF13EbEBddNFFF8VsQEYXXXTRxWxALrrooovGbECBGDoAOf9sQARkwdUbf25AYYFkPmCBcECJzYVJSwdwQAb8rz6IlW1A/s5ZEWvabECMLrroostsQHTRRRddzGxAXXTRRRfNbEBGF1100c1sQC666KKLzmxAF1100UXPbEAAAAAAANBsQOmiiy660GxA0kUXXXTRbEC66KKLLtJsQKOLLrro0mxAjC666KLTbEB00UUXXdRsQF100UUX1WxARhdddNHVbEBg7l1YLyRtQFqNlnB5sm9AOqjEVEKlckBtwrh1kFhyQAznKlczI29AeONG49MPbUCjiy666NpsQIwuuuii22xAdNFFF13cbEBddNFFF91sQEYXXXTR3WxALrrooovebEAXXXTRRd9sQAAAAAAA4GxA6aKLLrrgbEDRRRdddOFsQLrooosu4mxAo4suuujibECMLrroouNsQHTRRRdd5GxAXXTRRRflbEBGF1100eVsQC+66KKL5mxAF1100UXnbEAAAAAAAOhsQOmiiy666GxAwNpimFuPbUA4f2xBpYpxQLdVDJTIwXdA4wpQn1EkeEBJSj52ahdyQFXUZtDD621ARhdddNHtbEAuuuiii+5sQBdddNFF72xAAAAAAADwbEB8CnytHfRsQGVQQi70EG1Afm/i0ShObUD4dE73botxQDDXjwJ3Ln9AtcQ97vs9hkAo7NYfKnR/QCDACf9Ff3FALrrooov2bEAXXXTRRfdsQAAAAAAA+GxA6aKLLrr4bEDSRRdddPlsQLrooosu+mxAo4suuuj6bECMLrroovtsQM/28LdzAG1Aj4QSfpUnbUBKt0uXZMBtQJN03rgp6m9AxWUOuaCdckDw15yk+NFyQJzj/nYO529AckMSEeRPbUC66KKLLgJtQKOLLrroAm1AjC666KIDbUB00UUXXQRtQF100UUXBW1ARhdddNEFbUAuuuiiiwZtQBdddNFFB21AAAAAAAAIbUDpoosuughtQNFFF110CW1Auuiiiy4KbUCjiy666AptQI8hWF4mPG1AF7eAHR8Zb0BJMHarZgJyQJKz3uGMP3JAjUg3SBSOb0A1DcAzu1JtQAAAAAAAEG1AxxnbXNO5bUANulaG5hFxQA+WCUmGp3RA5HtmY08tc0CTiXv5zUlvQB/QnkjEPm1AXXTRRRcVbUBGF1100RVtQC666KKLFm1AF1100UUXbUAAAAAAABhtQOiiiy66GG1A0kUXXXQZbUC66KKLLhptQKOLLrroGm1AjC666KIbbUB00UUXXRxtQF100UUXHW1ARhdddNEdbUAuuuiiix5tQBdddNFFH21AAAAAAAAgbUDpoosuuiBtQNJFF110IW1Auuiiiy4ibUCjiy666CJtQIwuuuiiI21AdNFFF10kbUBddNFFFyVtQEKtlmps7m1A3tZhj5FHc0ANEM/d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luxtQIwuuuiiy21AdNFFF13MbUBddNFFF81tQEYXXXTRzW1ALrrooovObUAXXXTRRc9tQCAo3cAacXFA+tFxX5Erf0CE9QSLWemHQEJkye8494FA/o7dgvwlc0DiFi+HlF1uQHTRRRdd1G1AXXTRRRfVbUBGF1100dVtQC666KKL1m1AF1100UXXbUAAAAAAANhtQOmiiy662G1A0UUXXXTZbUC66KKLLtptQKOLLrro2m1AjC666KLbbUB00UUXXdxtQF100UUX3W1ARhdddNHdbUAuuuiii95tQBdddNFF321AAAAAAADgbUDooosuuuBtQNJFF1104W1AWRRhD1LwbUAJjsddbS9uQB65k4diZm5Ag1nnMTCPb0A2pTuhkrV0QCA2TSX5431AhEbVLyM8e0Aju282ECRyQACFFFLZbW5A6aKLLrrobUDSRRdddOltQLrooosu6m1Ao4suuujqbUCMLrroouttQHTRRRdd7G1AXXTRRRftbUBGF1100e1tQC666KKL7m1AF1100UXvbUCqVcx0CvBtQHAOny4i8W1A1KwwHLvybUCW2VvQcvNtQON7F2FO821AGbiM+azzbUB00UUXXfRtQF100UUX9W1A8LDE6oMCbkCezOJcAkFuQAS8x+c9gW5AnByeeMNIbkAX+ZbmqQduQF4uSrcgaHBAFKzyDf0yd0BBJhby1v59QHSuTpwWqHdANcXOm++ScEBddNFFF/1tQEYXXXTR/W1ALrrooov+bUAXXXTRRf9tQAAAAAAAAG5A6aKLLroAbkCRn//nTwZuQO6KZVjeNm5AzfEqn4a3bkAAJk8wVsduQCA11xdiR25A5wFAV1gMbkBGF1100QVuQC666KKLBm5AF1100UUHbkAAAAAAAAhuQOiiiy66CG5A0kUXXXQJbkC66KKLLgpuQKOLLrroCm5AyEySg7+7bkAcpTPFSvZwQJYd9uZJenJAEXpcAab4cECSs5vS0L9uQBdddNFFD25AAAAAAAAQbkDpoosuuhBuQNJFF110EW5Auuiiiy4SbkCjiy666BJuQIwuuuiiE25AdNFFF10UbkAl/Csb0VBwQHBGnvdKHXdANCtrCos2f0BSm3DiJUp5QHpS7eyFGXFACTnj0VdbbkDSRRdddBluQL1PWhfiJW5A96lWM0rHbkC9UfiogJ9wQPB6hWBnXnFA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LhJvQKOLLrroEm9AjC666KITb0B00UUXXRRvQF100UUXFW9ARhdddNEVb0AuuuiiixZvQFvx2/bsQG9AO1/yy6WncEBReRLpLWh0QEaxSjnegXZATIfkodJGc0A1S55j3vZwQIqaQlClBHBARHrCRiFBb0BddNFFFx1vQEYXXXTRHW9ALrroooseb0AXXXTRRR9vQAAAAAAAIG9A6KKLLrogb0DSRRdddCFvQLrooosuIm9Ao4suuugib0CMLrrooiNvQHTRRRddJG9AXXTRRRclb0BGF1100SVvQC666KKLJm9AF1100UUnb0AAAAAAAChvQOmiiy66KG9A0kUXXXQpb0C66KKLLipvQNAKNcx0XXBAZ0hyqB9HdUCze4dewvB8QG53VqpRrHlAXtQ2FqIKckD+f7wf0ZBvQBdddNFFL29AAAAAAAAwb0DpoosuujBvQNJFF110MW9Auuiiiy4yb0Cjiy666DJvQIwuuuiiM29AdNFFF100b0B9iMOBo8dvQFfgn5kKK3JAAAReVNAAd0DbPVw+zHx2QGwljHrqq3FAIJMgQ7qeb0DRRRdddDlvQLrooosuOm9Ao4suuug6b0CMLrroojtvQHTRRRddPG9AXXTRRRc9b0BGF1100T1vQC666KKLPm9AF1100UU/b0AAAAAAAEBvQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1702\"},\"selection_policy\":{\"id\":\"1701\"}},\"id\":\"1685\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"1648\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1651\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1689\"}]},\"id\":\"1704\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1701\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1658\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1675\"},\"group\":null,\"major_label_policy\":{\"id\":\"1676\"},\"ticker\":{\"id\":\"1649\"}},\"id\":\"1648\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1636\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1678\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1666\"},\"glyph\":{\"id\":\"1667\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1669\"},\"nonselection_glyph\":{\"id\":\"1668\"},\"view\":{\"id\":\"1671\"}},\"id\":\"1670\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1669\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1687\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1670\"}]},\"id\":\"1684\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1702\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1685\"}},\"id\":\"1690\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1675\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1666\"}},\"id\":\"1671\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1652\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1658\"}},\"id\":\"1654\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1672\",\"type\":\"Title\"},{\"attributes\":{\"tools\":[{\"id\":\"1652\"},{\"id\":\"1653\"},{\"id\":\"1654\"},{\"id\":\"1655\"},{\"id\":\"1656\"},{\"id\":\"1657\"}]},\"id\":\"1659\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1686\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1681\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1684\"},{\"id\":\"1704\"}]},\"id\":\"1683\",\"type\":\"Legend\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1681\"},\"selection_policy\":{\"id\":\"1680\"}},\"id\":\"1666\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"1635\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"0625d81c-5c9e-4b0c-9d1e-dafe216b9826\",\"root_ids\":[\"1635\"],\"roots\":{\"1635\":\"5fd82094-1f78-46fd-9933-e453cca27095\"}}];\n", - " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", - "\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " let attempts = 0;\n", - " const timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " clearInterval(timer);\n", - " embed_document(root);\n", - " } else {\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " clearInterval(timer);\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " }\n", - " }\n", - " }, 10, root)\n", - " }\n", - "})(window);" - ], - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "1635" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", "\n", @@ -1104,7 +751,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1119,23 +766,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "print(job.pattern.scale)\n", "print(job.pattern.zero_shift)\n", @@ -1155,7 +788,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1164,19 +797,9 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Available minimizers: ['lmfit', 'bumps', 'DFO_LS']\n", - "Current minimizer: lmfit\n", - "Available methods of current minimizers: ['least_squares', 'leastsq', 'differential_evolution', 'basinhopping', 'ampgo', 'nelder', 'lbfgsb', 'powell', 'cg', 'newton', 'cobyla', 'bfgs']\n" - ] - } - ], + "outputs": [], "source": [ "print(f\"Available minimizers: {fitter.available_engines}\")\n", "print(f\"Current minimizer: {fitter.current_engine.name}\")\n", @@ -1185,7 +808,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1195,25 +818,9 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The fit has been successful: True\n", - "The gooodness of fit (chi2) is: 31.613447982842985\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "print(\"The fit has been successful: {}\".format(result.success))\n", "if result.success: \n", @@ -1229,64 +836,9 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function embed_document(root) {\n", - " \n", - " const docs_json = {\"f55c1a10-114f-4738-b2d2-694f1cec9eb3\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1842\"}],\"center\":[{\"id\":\"1845\"},{\"id\":\"1849\"},{\"id\":\"1881\"}],\"height\":300,\"left\":[{\"id\":\"1846\"}],\"renderers\":[{\"id\":\"1868\"},{\"id\":\"1887\"},{\"id\":\"1907\"}],\"title\":{\"id\":\"1870\"},\"toolbar\":{\"id\":\"1857\"},\"width\":990,\"x_range\":{\"id\":\"1834\"},\"x_scale\":{\"id\":\"1838\"},\"y_range\":{\"id\":\"1836\"},\"y_scale\":{\"id\":\"1840\"}},\"id\":\"1833\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1864\"},\"glyph\":{\"id\":\"1865\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1867\"},\"nonselection_glyph\":{\"id\":\"1866\"},\"view\":{\"id\":\"1869\"}},\"id\":\"1868\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1846\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1849\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1883\"}},\"id\":\"1888\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1853\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1843\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1876\"},\"group\":null,\"major_label_policy\":{\"id\":\"1877\"},\"ticker\":{\"id\":\"1843\"}},\"id\":\"1842\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1900\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1866\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1856\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1886\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1905\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1850\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1847\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1879\"},\"selection_policy\":{\"id\":\"1878\"}},\"id\":\"1864\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1864\"}},\"id\":\"1869\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1867\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1922\"},\"selection_policy\":{\"id\":\"1921\"}},\"id\":\"1903\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1906\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1834\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1903\"},\"glyph\":{\"id\":\"1904\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1906\"},\"nonselection_glyph\":{\"id\":\"1905\"},\"view\":{\"id\":\"1908\"}},\"id\":\"1907\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"tools\":[{\"id\":\"1850\"},{\"id\":\"1851\"},{\"id\":\"1852\"},{\"id\":\"1853\"},{\"id\":\"1854\"},{\"id\":\"1855\"}]},\"id\":\"1857\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1840\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"1900\"},\"selection_policy\":{\"id\":\"1899\"}},\"id\":\"1883\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1855\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1877\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_color\":\"olivedrab\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1904\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1876\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1873\"},\"group\":null,\"major_label_policy\":{\"id\":\"1874\"},\"ticker\":{\"id\":\"1847\"}},\"id\":\"1846\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1884\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1899\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1921\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"1903\"}},\"id\":\"1908\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1851\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"Imeas - Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1907\"}]},\"id\":\"1924\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"1842\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1845\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"1868\"}]},\"id\":\"1882\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1882\"},{\"id\":\"1902\"},{\"id\":\"1924\"}]},\"id\":\"1881\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1874\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1922\",\"type\":\"Selection\"},{\"attributes\":{\"overlay\":{\"id\":\"1856\"}},\"id\":\"1852\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1838\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1854\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1873\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"1887\"}]},\"id\":\"1902\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1879\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1883\"},\"glyph\":{\"id\":\"1884\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1886\"},\"nonselection_glyph\":{\"id\":\"1885\"},\"view\":{\"id\":\"1888\"}},\"id\":\"1887\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1865\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1885\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1878\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1870\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1836\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"1833\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"f55c1a10-114f-4738-b2d2-694f1cec9eb3\",\"root_ids\":[\"1833\"],\"roots\":{\"1833\":\"5953964f-8f9e-4ff2-bd6f-0b6b78953bba\"}}];\n", - " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", - "\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " let attempts = 0;\n", - " const timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " clearInterval(timer);\n", - " embed_document(root);\n", - " } else {\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " clearInterval(timer);\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " }\n", - " }\n", - " }, 10, root)\n", - " }\n", - "})(window);" - ], - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "1833" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", "\n", @@ -1306,24 +858,16 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Available calculator engines: ['CrysPy', 'CrysFML', 'GSASII']\n" - ] - } - ], + "outputs": [], "source": [ "print(f\"Available calculator engines: {calculator.available_interfaces}\")" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1332,18 +876,9 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Current calculator engine: CrysFML\n", - "Current minimizer: lmfit\n" - ] - } - ], + "outputs": [], "source": [ "print(f\"Current calculator engine: {job.interface.current_interface_name}\")\n", "print(f\"Current minimizer: {fitter.current_engine.name}\")" @@ -1358,64 +893,9 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function embed_document(root) {\n", - " \n", - " const docs_json = {\"6b4e4b0a-67b3-4fd2-b049-26ed972d91a0\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2087\"}],\"center\":[{\"id\":\"2090\"},{\"id\":\"2094\"},{\"id\":\"2126\"}],\"height\":300,\"left\":[{\"id\":\"2091\"}],\"renderers\":[{\"id\":\"2113\"},{\"id\":\"2132\"},{\"id\":\"2152\"}],\"title\":{\"id\":\"2115\"},\"toolbar\":{\"id\":\"2102\"},\"width\":990,\"x_range\":{\"id\":\"2079\"},\"x_scale\":{\"id\":\"2083\"},\"y_range\":{\"id\":\"2081\"},\"y_scale\":{\"id\":\"2085\"}},\"id\":\"2078\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2121\"},\"group\":null,\"major_label_policy\":{\"id\":\"2122\"},\"ticker\":{\"id\":\"2088\"}},\"id\":\"2087\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2111\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"2109\"}},\"id\":\"2114\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"2148\"}},\"id\":\"2153\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2109\"},\"glyph\":{\"id\":\"2110\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2112\"},\"nonselection_glyph\":{\"id\":\"2111\"},\"view\":{\"id\":\"2114\"}},\"id\":\"2113\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2098\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2118\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2118\"},\"group\":null,\"major_label_policy\":{\"id\":\"2119\"},\"ticker\":{\"id\":\"2092\"}},\"id\":\"2091\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2112\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2092\",\"type\":\"BasicTicker\"},{\"attributes\":{\"tools\":[{\"id\":\"2095\"},{\"id\":\"2096\"},{\"id\":\"2097\"},{\"id\":\"2098\"},{\"id\":\"2099\"},{\"id\":\"2100\"}]},\"id\":\"2102\",\"type\":\"Toolbar\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2152\"}]},\"id\":\"2169\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2123\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2124\"},\"selection_policy\":{\"id\":\"2123\"}},\"id\":\"2109\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2095\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2085\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2129\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2148\"},\"glyph\":{\"id\":\"2149\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2151\"},\"nonselection_glyph\":{\"id\":\"2150\"},\"view\":{\"id\":\"2153\"}},\"id\":\"2152\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2083\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2110\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2096\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2119\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2145\"},\"selection_policy\":{\"id\":\"2144\"}},\"id\":\"2128\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2150\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2151\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2079\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2099\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2115\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2166\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2167\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2101\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2128\"},\"glyph\":{\"id\":\"2129\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2131\"},\"nonselection_glyph\":{\"id\":\"2130\"},\"view\":{\"id\":\"2133\"}},\"id\":\"2132\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2145\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2127\"},{\"id\":\"2147\"},{\"id\":\"2169\"}]},\"id\":\"2126\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"2087\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2090\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"2128\"}},\"id\":\"2133\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2149\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2088\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2122\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2167\"},\"selection_policy\":{\"id\":\"2166\"}},\"id\":\"2148\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2131\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2130\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2121\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"2132\"}]},\"id\":\"2147\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2081\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"2101\"}},\"id\":\"2097\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"2113\"}]},\"id\":\"2127\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2144\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2100\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2124\",\"type\":\"Selection\"},{\"attributes\":{\"axis\":{\"id\":\"2091\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2094\",\"type\":\"Grid\"}],\"root_ids\":[\"2078\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"6b4e4b0a-67b3-4fd2-b049-26ed972d91a0\",\"root_ids\":[\"2078\"],\"roots\":{\"2078\":\"afa610e1-1713-4b05-a406-ad002197e155\"}}];\n", - " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", - "\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " let attempts = 0;\n", - " const timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " clearInterval(timer);\n", - " embed_document(root);\n", - " } else {\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " clearInterval(timer);\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " }\n", - " }\n", - " }, 10, root)\n", - " }\n", - "})(window);" - ], - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "2078" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "calc_y_crysfml = calculator.fit_func(meas_x)\n", "\n", @@ -1435,7 +915,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1445,25 +925,9 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The fit has been successful: True\n", - "The gooodness of fit (chi2) is: 31.728826801731252\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "print(\"The fit has been successful: {}\".format(result.success))\n", "if result.success: \n", @@ -1486,64 +950,9 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function embed_document(root) {\n", - " \n", - " const docs_json = {\"28d486e5-03ce-43c5-9d67-cb62992e0200\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2658\"}],\"center\":[{\"id\":\"2661\"},{\"id\":\"2665\"},{\"id\":\"2697\"}],\"height\":300,\"left\":[{\"id\":\"2662\"}],\"renderers\":[{\"id\":\"2684\"},{\"id\":\"2703\"},{\"id\":\"2723\"},{\"id\":\"2745\"}],\"title\":{\"id\":\"2686\"},\"toolbar\":{\"id\":\"2673\"},\"width\":990,\"x_range\":{\"id\":\"2650\"},\"x_scale\":{\"id\":\"2654\"},\"y_range\":{\"id\":\"2652\"},\"y_scale\":{\"id\":\"2656\"}},\"id\":\"2649\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2683\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2742\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2652\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy) - Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2745\"}]},\"id\":\"2764\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"2658\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2661\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2702\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2666\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2663\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2650\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2682\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2762\"},\"selection_policy\":{\"id\":\"2761\"}},\"id\":\"2741\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2722\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"2723\"}]},\"id\":\"2740\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2737\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2720\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2694\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2672\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2762\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2719\"},\"glyph\":{\"id\":\"2720\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2722\"},\"nonselection_glyph\":{\"id\":\"2721\"},\"view\":{\"id\":\"2724\"}},\"id\":\"2723\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"2699\"}},\"id\":\"2704\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2700\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2738\",\"type\":\"Selection\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy)\"},\"renderers\":[{\"id\":\"2703\"}]},\"id\":\"2718\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2695\",\"type\":\"Selection\"},{\"attributes\":{\"label\":{\"value\":\"Imeas\"},\"renderers\":[{\"id\":\"2684\"}]},\"id\":\"2698\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2686\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2698\"},{\"id\":\"2718\"},{\"id\":\"2740\"},{\"id\":\"2764\"}]},\"id\":\"2697\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"steelblue\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2681\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2692\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2699\"},\"glyph\":{\"id\":\"2700\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2702\"},\"nonselection_glyph\":{\"id\":\"2701\"},\"view\":{\"id\":\"2704\"}},\"id\":\"2703\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2716\"},\"selection_policy\":{\"id\":\"2715\"}},\"id\":\"2699\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAJECamZmZmRkkQDMzMzMzMyRAzczMzMxMJEBmZmZmZmYkQAAAAAAAgCRAmpmZmZmZJEAzMzMzM7MkQM3MzMzMzCRAZmZmZmbmJEAAAAAAAAAlQJqZmZmZGSVAMzMzMzMzJUDNzMzMzEwlQGZmZmZmZiVAAAAAAACAJUCamZmZmZklQDMzMzMzsyVAzczMzMzMJUBmZmZmZuYlQAAAAAAAACZAmpmZmZkZJkAzMzMzMzMmQM3MzMzMTCZAZmZmZmZmJkAAAAAAAIAmQJqZmZmZmSZAMzMzMzOzJkDNzMzMzMwmQGZmZmZm5iZAAAAAAAAAJ0CamZmZmRknQDMzMzMzMydAzczMzMxMJ0BmZmZmZmYnQAAAAAAAgCdAmpmZmZmZJ0AzMzMzM7MnQM3MzMzMzCdAZmZmZmbmJ0AAAAAAAAAoQJqZmZmZGShAMzMzMzMzKEDNzMzMzEwoQGZmZmZmZihAAAAAAACAKECamZmZmZkoQDMzMzMzsyhAzczMzMzMKEBmZmZmZuYoQAAAAAAAAClAmpmZmZkZKUAzMzMzMzMpQM3MzMzMTClAZmZmZmZmKUAAAAAAAIApQJqZmZmZmSlAMzMzMzOzKUDNzMzMzMwpQGZmZmZm5ilAAAAAAAAAKkCamZmZmRkqQDMzMzMzMypAzczMzMxMKkBmZmZmZmYqQAAAAAAAgCpAmpmZmZmZKkAzMzMzM7MqQM3MzMzMzCpAZmZmZmbmKkAAAAAAAAArQJqZmZmZGStAMzMzMzMzK0DNzMzMzEwrQGZmZmZmZitAAAAAAACAK0CamZmZmZkrQDMzMzMzsytAzczMzMzMK0BmZmZmZuYrQAAAAAAAACxAmpmZmZkZLEAzMzMzMzMsQM3MzMzMTCxAZmZmZmZmLEAAAAAAAIAsQJqZmZmZmSxAMzMzMzOzLEDNzMzMzMwsQGZmZmZm5ixAAAAAAAAALUCamZmZmRktQDMzMzMzMy1AzczMzMxMLUBmZmZmZmYtQAAAAAAAgC1AmpmZmZmZLUAzMzMzM7MtQM3MzMzMzC1AZmZmZmbmLUAAAAAAAAAuQJqZmZmZGS5AMzMzMzMzLkDNzMzMzEwuQGZmZmZmZi5AAAAAAACALkCamZmZmZkuQDMzMzMzsy5AzczMzMzMLkBmZmZmZuYuQAAAAAAAAC9AmpmZmZkZL0AzMzMzMzMvQM3MzMzMTC9AZmZmZmZmL0AAAAAAAIAvQJqZmZmZmS9AMzMzMzOzL0DNzMzMzMwvQGZmZmZm5i9AAAAAAAAAMEDNzMzMzAwwQJqZmZmZGTBAZmZmZmYmMEAzMzMzMzMwQAAAAAAAQDBAzczMzMxMMECamZmZmVkwQGZmZmZmZjBAMzMzMzNzMEAAAAAAAIAwQM3MzMzMjDBAmpmZmZmZMEBmZmZmZqYwQDMzMzMzszBAAAAAAADAMEDNzMzMzMwwQJqZmZmZ2TBAZmZmZmbmMEAzMzMzM/MwQAAAAAAAADFAzczMzMwMMUCamZmZmRkxQGZmZmZmJjFAMzMzMzMzMUAAAAAAAEAxQM3MzMzMTDFAmpmZmZlZMUBmZmZmZmYxQDMzMzMzczFAAAAAAACAMUDNzMzMzIwxQJqZmZmZmTFAZmZmZmamMUAzMzMzM7MxQAAAAAAAwDFAzczMzMzMMUCamZmZmdkxQGZmZmZm5jFAMzMzMzPzMUAAAAAAAAAyQM3MzMzMDDJAmpmZmZkZMkBmZmZmZiYyQDMzMzMzMzJAAAAAAABAMkDNzMzMzEwyQJqZmZmZWTJAZmZmZmZmMkAzMzMzM3MyQAAAAAAAgDJAzczMzMyMMkCamZmZmZkyQGZmZmZmpjJAMzMzMzOzMkAAAAAAAMAyQM3MzMzMzDJAmpmZmZnZMkBmZmZmZuYyQDMzMzMz8zJAAAAAAAAAM0DNzMzMzAwzQJqZmZmZGTNAZmZmZmYmM0AzMzMzMzMzQAAAAAAAQDNAzczMzMxMM0CamZmZmVkzQGZmZmZmZjNAMzMzMzNzM0AAAAAAAIAzQM3MzMzMjDNAmpmZmZmZM0BmZmZmZqYzQDMzMzMzszNAAAAAAADAM0DNzMzMzMwzQJqZmZmZ2TNAZmZmZmbmM0AzMzMzM/MzQAAAAAAAADRAzczMzMwMNECamZmZmRk0QGZmZmZmJjRAMzMzMzMzNEAAAAAAAEA0QM3MzMzMTDRAmpmZmZlZNEBmZmZmZmY0QDMzMzMzczRAAAAAAACANEDNzMzMzIw0QJqZmZmZmTRAZmZmZmamNEAzMzMzM7M0QAAAAAAAwDRAzczMzMzMNECamZmZmdk0QGZmZmZm5jRAMzMzMzPzNEAAAAAAAAA1QM3MzMzMDDVAmpmZmZkZNUBmZmZmZiY1QDMzMzMzMzVAAAAAAABANUDNzMzMzEw1QJqZmZmZWTVAZmZmZmZmNUAzMzMzM3M1QAAAAAAAgDVAzczMzMyMNUCamZmZmZk1QGZmZmZmpjVAMzMzMzOzNUAAAAAAAMA1QM3MzMzMzDVAmpmZmZnZNUBmZmZmZuY1QDMzMzMz8zVAAAAAAAAANkDNzMzMzAw2QJqZmZmZGTZAZmZmZmYmNkAzMzMzMzM2QAAAAAAAQDZAzczMzMxMNkCamZmZmVk2QGZmZmZmZjZAMzMzMzNzNkAAAAAAAIA2QM3MzMzMjDZAmpmZmZmZNkBmZmZmZqY2QDMzMzMzszZAAAAAAADANkDNzMzMzMw2QJqZmZmZ2TZAZmZmZmbmNkAzMzMzM/M2QAAAAAAAADdAzczMzMwMN0CamZmZmRk3QGZmZmZmJjdAMzMzMzMzN0AAAAAAAEA3QM3MzMzMTDdAmpmZmZlZN0BmZmZmZmY3QDMzMzMzczdAAAAAAACAN0DNzMzMzIw3QJqZmZmZmTdAZmZmZmamN0AzMzMzM7M3QAAAAAAAwDdAzczMzMzMN0CamZmZmdk3QGZmZmZm5jdAMzMzMzPzN0AAAAAAAAA4QM3MzMzMDDhAmpmZmZkZOEBmZmZmZiY4QDMzMzMzMzhAAAAAAABAOEDNzMzMzEw4QJqZmZmZWThAZmZmZmZmOEAzMzMzM3M4QAAAAAAAgDhAzczMzMyMOECamZmZmZk4QGZmZmZmpjhAMzMzMzOzOEAAAAAAAMA4QM3MzMzMzDhAmpmZmZnZOEBmZmZmZuY4QDMzMzMz8zhAAAAAAAAAOUDNzMzMzAw5QJqZmZmZGTlAZmZmZmYmOUAzMzMzMzM5QAAAAAAAQDlAzczMzMxMOUCamZmZmVk5QGZmZmZmZjlAMzMzMzNzOUAAAAAAAIA5QM3MzMzMjDlAmpmZmZmZOUBmZmZmZqY5QDMzMzMzszlAAAAAAADAOUDNzMzMzMw5QJqZmZmZ2TlAZmZmZmbmOUAzMzMzM/M5QAAAAAAAADpAzczMzMwMOkCamZmZmRk6QGZmZmZmJjpAMzMzMzMzOkAAAAAAAEA6QM3MzMzMTDpAmpmZmZlZOkBmZmZmZmY6QDMzMzMzczpAAAAAAACAOkDNzMzMzIw6QJqZmZmZmTpAZmZmZmamOkAzMzMzM7M6QAAAAAAAwDpAzczMzMzMOkCamZmZmdk6QGZmZmZm5jpAMzMzMzPzOkAAAAAAAAA7QM3MzMzMDDtAmpmZmZkZO0BmZmZmZiY7QDMzMzMzMztAAAAAAABAO0DNzMzMzEw7QJqZmZmZWTtAZmZmZmZmO0AzMzMzM3M7QAAAAAAAgDtAzczMzMyMO0CamZmZmZk7QGZmZmZmpjtAMzMzMzOzO0AAAAAAAMA7QM3MzMzMzDtAmpmZmZnZO0BmZmZmZuY7QDMzMzMz8ztAAAAAAAAAPEDNzMzMzAw8QJqZmZmZGTxAZmZmZmYmPEAzMzMzMzM8QAAAAAAAQDxAzczMzMxMPECamZmZmVk8QGZmZmZmZjxAMzMzMzNzPEAAAAAAAIA8QM3MzMzMjDxAmpmZmZmZPEBmZmZmZqY8QDMzMzMzszxAAAAAAADAPEDNzMzMzMw8QJqZmZmZ2TxAZmZmZmbmPEAzMzMzM/M8QAAAAAAAAD1AzczMzMwMPUCamZmZmRk9QGZmZmZmJj1AMzMzMzMzPUAAAAAAAEA9QM3MzMzMTD1AmpmZmZlZPUBmZmZmZmY9QDMzMzMzcz1AAAAAAACAPUDNzMzMzIw9QJqZmZmZmT1AZmZmZmamPUAzMzMzM7M9QAAAAAAAwD1AzczMzMzMPUCamZmZmdk9QGZmZmZm5j1AMzMzMzPzPUAAAAAAAAA+QM3MzMzMDD5AmpmZmZkZPkBmZmZmZiY+QDMzMzMzMz5AAAAAAABAPkDNzMzMzEw+QJqZmZmZWT5AZmZmZmZmPkAzMzMzM3M+QAAAAAAAgD5AzczMzMyMPkCamZmZmZk+QGZmZmZmpj5AMzMzMzOzPkAAAAAAAMA+QM3MzMzMzD5AmpmZmZnZPkBmZmZmZuY+QDMzMzMz8z5AAAAAAAAAP0DNzMzMzAw/QJqZmZmZGT9AZmZmZmYmP0AzMzMzMzM/QAAAAAAAQD9AzczMzMxMP0CamZmZmVk/QGZmZmZmZj9AMzMzMzNzP0AAAAAAAIA/QM3MzMzMjD9AmpmZmZmZP0BmZmZmZqY/QDMzMzMzsz9AAAAAAADAP0DNzMzMzMw/QJqZmZmZ2T9AZmZmZmbmP0AzMzMzM/M/QAAAAAAAAEBAZmZmZmYGQEDNzMzMzAxAQDMzMzMzE0BAmpmZmZkZQEAAAAAAACBAQGZmZmZmJkBAzczMzMwsQEAzMzMzMzNAQJqZmZmZOUBAAAAAAABAQEBmZmZmZkZAQM3MzMzMTEBAMzMzMzNTQECamZmZmVlAQAAAAAAAYEBAZmZmZmZmQEDNzMzMzGxAQDMzMzMzc0BAmpmZmZl5QEAAAAAAAIBAQGZmZmZmhkBAzczMzMyMQEAzMzMzM5NAQJqZmZmZmUBAAAAAAACgQEBmZmZmZqZAQM3MzMzMrEBAMzMzMzOzQECamZmZmblAQAAAAAAAwEBAZmZmZmbGQEDNzMzMzMxAQDMzMzMz00BAmpmZmZnZQEAAAAAAAOBAQGZmZmZm5kBAzczMzMzsQEAzMzMzM/NAQJqZmZmZ+UBAAAAAAAAAQUBmZmZmZgZBQM3MzMzMDEFAMzMzMzMTQUCamZmZmRlBQAAAAAAAIEFAZmZmZmYmQUDNzMzMzCxBQDMzMzMzM0FAmpmZmZk5QUAAAAAAAEBBQGZmZmZmRkFAzczMzMxMQUAzMzMzM1NBQJqZmZmZWUFAAAAAAABgQUBmZmZmZmZBQM3MzMzMbEFAMzMzMzNzQUCamZmZmXlBQAAAAAAAgEFAZmZmZmaGQUDNzMzMzIxBQDMzMzMzk0FAmpmZmZmZQUAAAAAAAKBBQGZmZmZmpkFAzczMzMysQUAzMzMzM7NBQJqZmZmZuUFAAAAAAADAQUBmZmZmZsZBQM3MzMzMzEFAMzMzMzPTQUCamZmZmdlBQAAAAAAA4EFAZmZmZmbmQUDNzMzMzOxBQDMzMzMz80FAmpmZmZn5QUAAAAAAAABCQGZmZmZmBkJAzczMzMwMQkAzMzMzMxNCQJqZmZmZGUJAAAAAAAAgQkBmZmZmZiZCQM3MzMzMLEJAMzMzMzMzQkCamZmZmTlCQAAAAAAAQEJAZmZmZmZGQkDNzMzMzExCQDMzMzMzU0JAmpmZmZlZQkAAAAAAAGBCQGZmZmZmZkJAzczMzMxsQkAzMzMzM3NCQJqZmZmZeUJAAAAAAACAQkBmZmZmZoZCQM3MzMzMjEJAMzMzMzOTQkCamZmZmZlCQAAAAAAAoEJAZmZmZmamQkDNzMzMzKxCQDMzMzMzs0JAmpmZmZm5QkAAAAAAAMBCQGZmZmZmxkJAzczMzMzMQkAzMzMzM9NCQJqZmZmZ2UJAAAAAAADgQkBmZmZmZuZCQM3MzMzM7EJAMzMzMzPzQkCamZmZmflCQAAAAAAAAENAZmZmZmYGQ0DNzMzMzAxDQDMzMzMzE0NAmpmZmZkZQ0AAAAAAACBDQGZmZmZmJkNAzczMzMwsQ0AzMzMzMzNDQJqZmZmZOUNAAAAAAABAQ0BmZmZmZkZDQM3MzMzMTENAMzMzMzNTQ0CamZmZmVlDQAAAAAAAYENAZmZmZmZmQ0DNzMzMzGxDQDMzMzMzc0NAmpmZmZl5Q0AAAAAAAIBDQGZmZmZmhkNAzczMzMyMQ0AzMzMzM5NDQJqZmZmZmUNAAAAAAACgQ0BmZmZmZqZDQM3MzMzMrENAMzMzMzOzQ0CamZmZmblDQAAAAAAAwENAZmZmZmbGQ0DNzMzMzMxDQDMzMzMz00NAmpmZmZnZQ0AAAAAAAOBDQGZmZmZm5kNAzczMzMzsQ0AzMzMzM/NDQJqZmZmZ+UNAAAAAAAAAREBmZmZmZgZEQM3MzMzMDERAMzMzMzMTRECamZmZmRlEQAAAAAAAIERAZmZmZmYmREDNzMzMzCxEQDMzMzMzM0RAmpmZmZk5REAAAAAAAEBEQGZmZmZmRkRAzczMzMxMREAzMzMzM1NEQJqZmZmZWURAAAAAAABgREBmZmZmZmZEQM3MzMzMbERAMzMzMzNzRECamZmZmXlEQAAAAAAAgERAZmZmZmaGREDNzMzMzIxEQDMzMzMzk0RAmpmZmZmZREAAAAAAAKBEQGZmZmZmpkRAzczMzMysREAzMzMzM7NEQJqZmZmZuURAAAAAAADAREBmZmZmZsZEQM3MzMzMzERAMzMzMzPTRECamZmZmdlEQAAAAAAA4ERAZmZmZmbmREDNzMzMzOxEQDMzMzMz80RAmpmZmZn5REAAAAAAAABFQGZmZmZmBkVAzczMzMwMRUAzMzMzMxNFQJqZmZmZGUVAAAAAAAAgRUBmZmZmZiZFQM3MzMzMLEVAMzMzMzMzRUCamZmZmTlFQAAAAAAAQEVAZmZmZmZGRUDNzMzMzExFQDMzMzMzU0VAmpmZmZlZRUAAAAAAAGBFQGZmZmZmZkVAzczMzMxsRUAzMzMzM3NFQJqZmZmZeUVAAAAAAACARUBmZmZmZoZFQM3MzMzMjEVAMzMzMzOTRUCamZmZmZlFQAAAAAAAoEVAZmZmZmamRUDNzMzMzKxFQDMzMzMzs0VAmpmZmZm5RUAAAAAAAMBFQGZmZmZmxkVAzczMzMzMRUAzMzMzM9NFQJqZmZmZ2UVAAAAAAADgRUBmZmZmZuZFQM3MzMzM7EVAMzMzMzPzRUCamZmZmflFQAAAAAAAAEZAZmZmZmYGRkDNzMzMzAxGQDMzMzMzE0ZAmpmZmZkZRkAAAAAAACBGQGZmZmZmJkZAzczMzMwsRkAzMzMzMzNGQJqZmZmZOUZAAAAAAABARkBmZmZmZkZGQM3MzMzMTEZAMzMzMzNTRkCamZmZmVlGQAAAAAAAYEZAZmZmZmZmRkDNzMzMzGxGQDMzMzMzc0ZAmpmZmZl5RkAAAAAAAIBGQGZmZmZmhkZAzczMzMyMRkAzMzMzM5NGQJqZmZmZmUZAAAAAAACgRkBmZmZmZqZGQM3MzMzMrEZAMzMzMzOzRkCamZmZmblGQAAAAAAAwEZAZmZmZmbGRkDNzMzMzMxGQDMzMzMz00ZAmpmZmZnZRkAAAAAAAOBGQGZmZmZm5kZAzczMzMzsRkAzMzMzM/NGQJqZmZmZ+UZAAAAAAAAAR0BmZmZmZgZHQM3MzMzMDEdAMzMzMzMTR0CamZmZmRlHQAAAAAAAIEdAZmZmZmYmR0DNzMzMzCxHQDMzMzMzM0dAmpmZmZk5R0AAAAAAAEBHQGZmZmZmRkdAzczMzMxMR0AzMzMzM1NHQJqZmZmZWUdAAAAAAABgR0BmZmZmZmZHQM3MzMzMbEdAMzMzMzNzR0CamZmZmXlHQAAAAAAAgEdAZmZmZmaGR0DNzMzMzIxHQDMzMzMzk0dAmpmZmZmZR0AAAAAAAKBHQGZmZmZmpkdAzczMzMysR0AzMzMzM7NHQJqZmZmZuUdAAAAAAADAR0BmZmZmZsZHQM3MzMzMzEdAMzMzMzPTR0CamZmZmdlHQAAAAAAA4EdAZmZmZmbmR0DNzMzMzOxHQDMzMzMz80dAmpmZmZn5R0AAAAAAAABIQGZmZmZmBkhAzczMzMwMSEAzMzMzMxNIQJqZmZmZGUhAAAAAAAAgSEBmZmZmZiZIQM3MzMzMLEhAMzMzMzMzSECamZmZmTlIQAAAAAAAQEhAZmZmZmZGSEDNzMzMzExIQDMzMzMzU0hAmpmZmZlZSEAAAAAAAGBIQGZmZmZmZkhAzczMzMxsSEAzMzMzM3NIQJqZmZmZeUhAAAAAAACASEBmZmZmZoZIQM3MzMzMjEhAMzMzMzOTSECamZmZmZlIQAAAAAAAoEhAZmZmZmamSEDNzMzMzKxIQDMzMzMzs0hAmpmZmZm5SEAAAAAAAMBIQGZmZmZmxkhAzczMzMzMSEAzMzMzM9NIQJqZmZmZ2UhAAAAAAADgSEBmZmZmZuZIQM3MzMzM7EhAMzMzMzPzSECamZmZmflIQAAAAAAAAElAZmZmZmYGSUDNzMzMzAxJQDMzMzMzE0lAmpmZmZkZSUAAAAAAACBJQGZmZmZmJklAzczMzMwsSUAzMzMzMzNJQJqZmZmZOUlAAAAAAABASUBmZmZmZkZJQM3MzMzMTElAMzMzMzNTSUCamZmZmVlJQAAAAAAAYElAZmZmZmZmSUDNzMzMzGxJQDMzMzMzc0lAmpmZmZl5SUAAAAAAAIBJQGZmZmZmhklAzczMzMyMSUAzMzMzM5NJQJqZmZmZmUlAAAAAAACgSUBmZmZmZqZJQM3MzMzMrElAMzMzMzOzSUCamZmZmblJQAAAAAAAwElAZmZmZmbGSUDNzMzMzMxJQDMzMzMz00lAmpmZmZnZSUAAAAAAAOBJQGZmZmZm5klAzczMzMzsSUAzMzMzM/NJQJqZmZmZ+UlAAAAAAAAASkBmZmZmZgZKQM3MzMzMDEpAMzMzMzMTSkCamZmZmRlKQAAAAAAAIEpAZmZmZmYmSkDNzMzMzCxKQDMzMzMzM0pAmpmZmZk5SkAAAAAAAEBKQGZmZmZmRkpAzczMzMxMSkAzMzMzM1NKQJqZmZmZWUpAAAAAAABgSkBmZmZmZmZKQM3MzMzMbEpAMzMzMzNzSkCamZmZmXlKQAAAAAAAgEpAZmZmZmaGSkDNzMzMzIxKQDMzMzMzk0pAmpmZmZmZSkAAAAAAAKBKQGZmZmZmpkpAzczMzMysSkAzMzMzM7NKQJqZmZmZuUpAAAAAAADASkBmZmZmZsZKQM3MzMzMzEpAMzMzMzPTSkCamZmZmdlKQAAAAAAA4EpAZmZmZmbmSkDNzMzMzOxKQDMzMzMz80pAmpmZmZn5SkAAAAAAAABLQGZmZmZmBktAzczMzMwMS0AzMzMzMxNLQJqZmZmZGUtAAAAAAAAgS0BmZmZmZiZLQM3MzMzMLEtAMzMzMzMzS0CamZmZmTlLQAAAAAAAQEtAZmZmZmZGS0DNzMzMzExLQDMzMzMzU0tAmpmZmZlZS0AAAAAAAGBLQGZmZmZmZktAzczMzMxsS0AzMzMzM3NLQJqZmZmZeUtAAAAAAACAS0BmZmZmZoZLQM3MzMzMjEtAMzMzMzOTS0CamZmZmZlLQAAAAAAAoEtAZmZmZmamS0DNzMzMzKxLQDMzMzMzs0tAmpmZmZm5S0AAAAAAAMBLQGZmZmZmxktAzczMzMzMS0AzMzMzM9NLQJqZmZmZ2UtAAAAAAADgS0BmZmZmZuZLQM3MzMzM7EtAMzMzMzPzS0CamZmZmflLQAAAAAAAAExAZmZmZmYGTEDNzMzMzAxMQDMzMzMzE0xAmpmZmZkZTEAAAAAAACBMQGZmZmZmJkxAzczMzMwsTEAzMzMzMzNMQJqZmZmZOUxAAAAAAABATEBmZmZmZkZMQM3MzMzMTExAMzMzMzNTTECamZmZmVlMQAAAAAAAYExAZmZmZmZmTEDNzMzMzGxMQDMzMzMzc0xAmpmZmZl5TEAAAAAAAIBMQGZmZmZmhkxAzczMzMyMTEAzMzMzM5NMQJqZmZmZmUxAAAAAAACgTEBmZmZmZqZMQM3MzMzMrExAMzMzMzOzTECamZmZmblMQAAAAAAAwExAZmZmZmbGTEDNzMzMzMxMQDMzMzMz00xAmpmZmZnZTEAAAAAAAOBMQGZmZmZm5kxAzczMzMzsTEAzMzMzM/NMQJqZmZmZ+UxAAAAAAAAATUBmZmZmZgZNQM3MzMzMDE1AMzMzMzMTTUCamZmZmRlNQAAAAAAAIE1AZmZmZmYmTUDNzMzMzCxNQDMzMzMzM01AmpmZmZk5TUAAAAAAAEBNQGZmZmZmRk1AzczMzMxMTUAzMzMzM1NNQJqZmZmZWU1AAAAAAABgTUBmZmZmZmZNQM3MzMzMbE1AMzMzMzNzTUCamZmZmXlNQAAAAAAAgE1AZmZmZmaGTUDNzMzMzIxNQDMzMzMzk01AmpmZmZmZTUAAAAAAAKBNQGZmZmZmpk1AzczMzMysTUAzMzMzM7NNQJqZmZmZuU1AAAAAAADATUBmZmZmZsZNQM3MzMzMzE1AMzMzMzPTTUCamZmZmdlNQAAAAAAA4E1AZmZmZmbmTUDNzMzMzOxNQDMzMzMz801AmpmZmZn5TUAAAAAAAABOQGZmZmZmBk5AzczMzMwMTkAzMzMzMxNOQJqZmZmZGU5AAAAAAAAgTkBmZmZmZiZOQM3MzMzMLE5AMzMzMzMzTkCamZmZmTlOQAAAAAAAQE5AZmZmZmZGTkDNzMzMzExOQDMzMzMzU05AmpmZmZlZTkAAAAAAAGBOQGZmZmZmZk5AzczMzMxsTkAzMzMzM3NOQJqZmZmZeU5AAAAAAACATkBmZmZmZoZOQM3MzMzMjE5AMzMzMzOTTkCamZmZmZlOQAAAAAAAoE5AZmZmZmamTkDNzMzMzKxOQDMzMzMzs05AmpmZmZm5TkAAAAAAAMBOQGZmZmZmxk5AzczMzMzMTkAzMzMzM9NOQJqZmZmZ2U5AAAAAAADgTkBmZmZmZuZOQM3MzMzM7E5AMzMzMzPzTkCamZmZmflOQAAAAAAAAE9AZmZmZmYGT0DNzMzMzAxPQDMzMzMzE09AmpmZmZkZT0AAAAAAACBPQGZmZmZmJk9AzczMzMwsT0AzMzMzMzNPQJqZmZmZOU9AAAAAAABAT0BmZmZmZkZPQM3MzMzMTE9AMzMzMzNTT0CamZmZmVlPQAAAAAAAYE9AZmZmZmZmT0DNzMzMzGxPQDMzMzMzc09AmpmZmZl5T0AAAAAAAIBPQGZmZmZmhk9AzczMzMyMT0AzMzMzM5NPQJqZmZmZmU9AAAAAAACgT0BmZmZmZqZPQM3MzMzMrE9AMzMzMzOzT0CamZmZmblPQAAAAAAAwE9AZmZmZmbGT0DNzMzMzMxPQDMzMzMz009AmpmZmZnZT0AAAAAAAOBPQGZmZmZm5k9AzczMzMzsT0AzMzMzM/NPQJqZmZmZ+U9AAAAAAAAAUEAzMzMzMwNQQGZmZmZmBlBAmpmZmZkJUEDNzMzMzAxQQAAAAAAAEFBAMzMzMzMTUEBmZmZmZhZQQJqZmZmZGVBAzczMzMwcUEAAAAAAACBQQDMzMzMzI1BAZmZmZmYmUECamZmZmSlQQM3MzMzMLFBAAAAAAAAwUEAzMzMzMzNQQGZmZmZmNlBAmpmZmZk5UEDNzMzMzDxQQAAAAAAAQFBAMzMzMzNDUEBmZmZmZkZQQJqZmZmZSVBAzczMzMxMUEAAAAAAAFBQQDMzMzMzU1BAZmZmZmZWUECamZmZmVlQQM3MzMzMXFBAAAAAAABgUEAzMzMzM2NQQGZmZmZmZlBAmpmZmZlpUEDNzMzMzGxQQAAAAAAAcFBAMzMzMzNzUEBmZmZmZnZQQJqZmZmZeVBAzczMzMx8UEAAAAAAAIBQQDMzMzMzg1BAZmZmZmaGUECamZmZmYlQQM3MzMzMjFBAAAAAAACQUEAzMzMzM5NQQGZmZmZmllBAmpmZmZmZUEDNzMzMzJxQQAAAAAAAoFBAMzMzMzOjUEBmZmZmZqZQQJqZmZmZqVBAzczMzMysUEAAAAAAALBQQDMzMzMzs1BAZmZmZma2UECamZmZmblQQM3MzMzMvFBAAAAAAADAUEAzMzMzM8NQQGZmZmZmxlBAmpmZmZnJUEDNzMzMzMxQQAAAAAAA0FBAMzMzMzPTUEBmZmZmZtZQQJqZmZmZ2VBAzczMzMzcUEAAAAAAAOBQQDMzMzMz41BAZmZmZmbmUECamZmZmelQQM3MzMzM7FBAAAAAAADwUEAzMzMzM/NQQGZmZmZm9lBAmpmZmZn5UEDNzMzMzPxQQAAAAAAAAFFAMzMzMzMDUUBmZmZmZgZRQJqZmZmZCVFAzczMzMwMUUAAAAAAABBRQDMzMzMzE1FAZmZmZmYWUUCamZmZmRlRQM3MzMzMHFFAAAAAAAAgUUAzMzMzMyNRQGZmZmZmJlFAmpmZmZkpUUDNzMzMzCxRQAAAAAAAMFFAMzMzMzMzUUBmZmZmZjZRQJqZmZmZOVFAzczMzMw8UUAAAAAAAEBRQDMzMzMzQ1FAZmZmZmZGUUCamZmZmUlRQM3MzMzMTFFAAAAAAABQUUAzMzMzM1NRQGZmZmZmVlFAmpmZmZlZUUDNzMzMzFxRQAAAAAAAYFFAMzMzMzNjUUBmZmZmZmZRQJqZmZmZaVFAzczMzMxsUUAAAAAAAHBRQDMzMzMzc1FAZmZmZmZ2UUCamZmZmXlRQM3MzMzMfFFAAAAAAACAUUAzMzMzM4NRQGZmZmZmhlFAmpmZmZmJUUDNzMzMzIxRQAAAAAAAkFFAMzMzMzOTUUBmZmZmZpZRQJqZmZmZmVFAzczMzMycUUAAAAAAAKBRQDMzMzMzo1FAZmZmZmamUUCamZmZmalRQM3MzMzMrFFAAAAAAACwUUAzMzMzM7NRQGZmZmZmtlFAmpmZmZm5UUDNzMzMzLxRQAAAAAAAwFFAMzMzMzPDUUBmZmZmZsZRQJqZmZmZyVFAzczMzMzMUUAAAAAAANBRQDMzMzMz01FAZmZmZmbWUUCamZmZmdlRQM3MzMzM3FFAAAAAAADgUUAzMzMzM+NRQGZmZmZm5lFAmpmZmZnpUUDNzMzMzOxRQAAAAAAA8FFAMzMzMzPzUUBmZmZmZvZRQJqZmZmZ+VFAzczMzMz8UUAAAAAAAABSQDMzMzMzA1JAZmZmZmYGUkCamZmZmQlSQM3MzMzMDFJAAAAAAAAQUkAzMzMzMxNSQGZmZmZmFlJAmpmZmZkZUkDNzMzMzBxSQAAAAAAAIFJAMzMzMzMjUkBmZmZmZiZSQJqZmZmZKVJAzczMzMwsUkAAAAAAADBSQDMzMzMzM1JAZmZmZmY2UkCamZmZmTlSQM3MzMzMPFJAAAAAAABAUkAzMzMzM0NSQGZmZmZmRlJAmpmZmZlJUkDNzMzMzExSQAAAAAAAUFJAMzMzMzNTUkBmZmZmZlZSQJqZmZmZWVJAzczMzMxcUkAAAAAAAGBSQDMzMzMzY1JAZmZmZmZmUkCamZmZmWlSQM3MzMzMbFJAAAAAAABwUkAzMzMzM3NSQGZmZmZmdlJAmpmZmZl5UkDNzMzMzHxSQAAAAAAAgFJAMzMzMzODUkBmZmZmZoZSQJqZmZmZiVJAzczMzMyMUkAAAAAAAJBSQDMzMzMzk1JAZmZmZmaWUkCamZmZmZlSQM3MzMzMnFJAAAAAAACgUkAzMzMzM6NSQGZmZmZmplJAmpmZmZmpUkDNzMzMzKxSQAAAAAAAsFJAMzMzMzOzUkBmZmZmZrZSQJqZmZmZuVJAzczMzMy8UkAAAAAAAMBSQDMzMzMzw1JAZmZmZmbGUkCamZmZmclSQM3MzMzMzFJAAAAAAADQUkAzMzMzM9NSQGZmZmZm1lJAmpmZmZnZUkDNzMzMzNxSQAAAAAAA4FJAMzMzMzPjUkBmZmZmZuZSQJqZmZmZ6VJAzczMzMzsUkAAAAAAAPBSQDMzMzMz81JAZmZmZmb2UkCamZmZmflSQM3MzMzM/FJAAAAAAAAAU0AzMzMzMwNTQGZmZmZmBlNAmpmZmZkJU0DNzMzMzAxTQAAAAAAAEFNAMzMzMzMTU0BmZmZmZhZTQJqZmZmZGVNAzczMzMwcU0AAAAAAACBTQDMzMzMzI1NAZmZmZmYmU0CamZmZmSlTQM3MzMzMLFNAAAAAAAAwU0AzMzMzMzNTQGZmZmZmNlNAmpmZmZk5U0DNzMzMzDxTQAAAAAAAQFNAMzMzMzNDU0BmZmZmZkZTQJqZmZmZSVNAzczMzMxMU0AAAAAAAFBTQDMzMzMzU1NAZmZmZmZWU0CamZmZmVlTQM3MzMzMXFNAAAAAAABgU0AzMzMzM2NTQGZmZmZmZlNAmpmZmZlpU0DNzMzMzGxTQAAAAAAAcFNAMzMzMzNzU0BmZmZmZnZTQJqZmZmZeVNAzczMzMx8U0AAAAAAAIBTQDMzMzMzg1NAZmZmZmaGU0CamZmZmYlTQM3MzMzMjFNAAAAAAACQU0AzMzMzM5NTQGZmZmZmllNAmpmZmZmZU0DNzMzMzJxTQAAAAAAAoFNAMzMzMzOjU0BmZmZmZqZTQJqZmZmZqVNAzczMzMysU0AAAAAAALBTQDMzMzMzs1NAZmZmZma2U0CamZmZmblTQM3MzMzMvFNAAAAAAADAU0AzMzMzM8NTQGZmZmZmxlNAmpmZmZnJU0DNzMzMzMxTQAAAAAAA0FNAMzMzMzPTU0BmZmZmZtZTQJqZmZmZ2VNAzczMzMzcU0AAAAAAAOBTQDMzMzMz41NAZmZmZmbmU0CamZmZmelTQM3MzMzM7FNAAAAAAADwU0AzMzMzM/NTQGZmZmZm9lNAmpmZmZn5U0DNzMzMzPxTQAAAAAAAAFRAMzMzMzMDVEBmZmZmZgZUQJqZmZmZCVRAzczMzMwMVEAAAAAAABBUQDMzMzMzE1RAZmZmZmYWVECamZmZmRlUQM3MzMzMHFRAAAAAAAAgVEAzMzMzMyNUQGZmZmZmJlRAmpmZmZkpVEDNzMzMzCxUQAAAAAAAMFRAMzMzMzMzVEBmZmZmZjZUQJqZmZmZOVRAzczMzMw8VEAAAAAAAEBUQDMzMzMzQ1RAZmZmZmZGVECamZmZmUlUQM3MzMzMTFRAAAAAAABQVEAzMzMzM1NUQGZmZmZmVlRAmpmZmZlZVEDNzMzMzFxUQAAAAAAAYFRAMzMzMzNjVEBmZmZmZmZUQJqZmZmZaVRAzczMzMxsVEAAAAAAAHBUQDMzMzMzc1RAZmZmZmZ2VECamZmZmXlUQM3MzMzMfFRAAAAAAACAVEAzMzMzM4NUQGZmZmZmhlRAmpmZmZmJVEDNzMzMzIxUQAAAAAAAkFRAMzMzMzOTVEBmZmZmZpZUQJqZmZmZmVRAzczMzMycVEAAAAAAAKBUQDMzMzMzo1RAZmZmZmamVECamZmZmalUQM3MzMzMrFRAAAAAAACwVEAzMzMzM7NUQGZmZmZmtlRAmpmZmZm5VEDNzMzMzLxUQAAAAAAAwFRAMzMzMzPDVEBmZmZmZsZUQJqZmZmZyVRAzczMzMzMVEAAAAAAANBUQDMzMzMz01RAZmZmZmbWVECamZmZmdlUQM3MzMzM3FRAAAAAAADgVEAzMzMzM+NUQGZmZmZm5lRAmpmZmZnpVEDNzMzMzOxUQAAAAAAA8FRAMzMzMzPzVEBmZmZmZvZUQJqZmZmZ+VRAzczMzMz8VEAAAAAAAABVQDMzMzMzA1VAZmZmZmYGVUCamZmZmQlVQM3MzMzMDFVAAAAAAAAQVUAzMzMzMxNVQGZmZmZmFlVAmpmZmZkZVUDNzMzMzBxVQAAAAAAAIFVAMzMzMzMjVUBmZmZmZiZVQJqZmZmZKVVAzczMzMwsVUAAAAAAADBVQDMzMzMzM1VAZmZmZmY2VUCamZmZmTlVQM3MzMzMPFVAAAAAAABAVUAzMzMzM0NVQGZmZmZmRlVAmpmZmZlJVUDNzMzMzExVQAAAAAAAUFVAMzMzMzNTVUBmZmZmZlZVQJqZmZmZWVVAzczMzMxcVUAAAAAAAGBVQDMzMzMzY1VAZmZmZmZmVUCamZmZmWlVQM3MzMzMbFVAAAAAAABwVUAzMzMzM3NVQGZmZmZmdlVAmpmZmZl5VUDNzMzMzHxVQAAAAAAAgFVAMzMzMzODVUBmZmZmZoZVQJqZmZmZiVVAzczMzMyMVUAAAAAAAJBVQDMzMzMzk1VAZmZmZmaWVUCamZmZmZlVQM3MzMzMnFVAAAAAAACgVUAzMzMzM6NVQGZmZmZmplVAmpmZmZmpVUDNzMzMzKxVQAAAAAAAsFVAMzMzMzOzVUBmZmZmZrZVQJqZmZmZuVVAzczMzMy8VUAAAAAAAMBVQDMzMzMzw1VAZmZmZmbGVUCamZmZmclVQM3MzMzMzFVAAAAAAADQVUAzMzMzM9NVQGZmZmZm1lVAmpmZmZnZVUDNzMzMzNxVQAAAAAAA4FVAMzMzMzPjVUBmZmZmZuZVQJqZmZmZ6VVAzczMzMzsVUAAAAAAAPBVQDMzMzMz81VAZmZmZmb2VUCamZmZmflVQM3MzMzM/FVAAAAAAAAAVkAzMzMzMwNWQGZmZmZmBlZAmpmZmZkJVkDNzMzMzAxWQAAAAAAAEFZAMzMzMzMTVkBmZmZmZhZWQJqZmZmZGVZAzczMzMwcVkAAAAAAACBWQDMzMzMzI1ZAZmZmZmYmVkCamZmZmSlWQM3MzMzMLFZAAAAAAAAwVkAzMzMzMzNWQGZmZmZmNlZAmpmZmZk5VkDNzMzMzDxWQAAAAAAAQFZAMzMzMzNDVkBmZmZmZkZWQJqZmZmZSVZAzczMzMxMVkAAAAAAAFBWQDMzMzMzU1ZAZmZmZmZWVkCamZmZmVlWQM3MzMzMXFZAAAAAAABgVkAzMzMzM2NWQGZmZmZmZlZAmpmZmZlpVkDNzMzMzGxWQAAAAAAAcFZAMzMzMzNzVkBmZmZmZnZWQJqZmZmZeVZAzczMzMx8VkAAAAAAAIBWQDMzMzMzg1ZAZmZmZmaGVkCamZmZmYlWQM3MzMzMjFZAAAAAAACQVkAzMzMzM5NWQGZmZmZmllZAmpmZmZmZVkDNzMzMzJxWQAAAAAAAoFZAMzMzMzOjVkBmZmZmZqZWQJqZmZmZqVZAzczMzMysVkAAAAAAALBWQDMzMzMzs1ZAZmZmZma2VkCamZmZmblWQM3MzMzMvFZAAAAAAADAVkAzMzMzM8NWQGZmZmZmxlZAmpmZmZnJVkDNzMzMzMxWQAAAAAAA0FZAMzMzMzPTVkBmZmZmZtZWQJqZmZmZ2VZAzczMzMzcVkAAAAAAAOBWQDMzMzMz41ZAZmZmZmbmVkCamZmZmelWQM3MzMzM7FZAAAAAAADwVkAzMzMzM/NWQGZmZmZm9lZAmpmZmZn5VkDNzMzMzPxWQAAAAAAAAFdAMzMzMzMDV0BmZmZmZgZXQJqZmZmZCVdAzczMzMwMV0AAAAAAABBXQDMzMzMzE1dAZmZmZmYWV0CamZmZmRlXQM3MzMzMHFdAAAAAAAAgV0AzMzMzMyNXQGZmZmZmJldAmpmZmZkpV0DNzMzMzCxXQAAAAAAAMFdAMzMzMzMzV0BmZmZmZjZXQJqZmZmZOVdAzczMzMw8V0AAAAAAAEBXQDMzMzMzQ1dAZmZmZmZGV0CamZmZmUlXQM3MzMzMTFdAAAAAAABQV0AzMzMzM1NXQGZmZmZmVldAmpmZmZlZV0DNzMzMzFxXQAAAAAAAYFdAMzMzMzNjV0BmZmZmZmZXQJqZmZmZaVdAzczMzMxsV0AAAAAAAHBXQDMzMzMzc1dAZmZmZmZ2V0CamZmZmXlXQM3MzMzMfFdAAAAAAACAV0AzMzMzM4NXQGZmZmZmhldAmpmZmZmJV0DNzMzMzIxXQAAAAAAAkFdAMzMzMzOTV0BmZmZmZpZXQJqZmZmZmVdAzczMzMycV0AAAAAAAKBXQDMzMzMzo1dAZmZmZmamV0CamZmZmalXQM3MzMzMrFdAAAAAAACwV0AzMzMzM7NXQGZmZmZmtldAmpmZmZm5V0DNzMzMzLxXQAAAAAAAwFdAMzMzMzPDV0BmZmZmZsZXQJqZmZmZyVdAzczMzMzMV0AAAAAAANBXQDMzMzMz01dAZmZmZmbWV0CamZmZmdlXQM3MzMzM3FdAAAAAAADgV0AzMzMzM+NXQGZmZmZm5ldAmpmZmZnpV0DNzMzMzOxXQAAAAAAA8FdAMzMzMzPzV0BmZmZmZvZXQJqZmZmZ+VdAzczMzMz8V0AAAAAAAABYQDMzMzMzA1hAZmZmZmYGWECamZmZmQlYQM3MzMzMDFhAAAAAAAAQWEAzMzMzMxNYQGZmZmZmFlhAmpmZmZkZWEDNzMzMzBxYQAAAAAAAIFhAMzMzMzMjWEBmZmZmZiZYQJqZmZmZKVhAzczMzMwsWEAAAAAAADBYQDMzMzMzM1hAZmZmZmY2WECamZmZmTlYQM3MzMzMPFhAAAAAAABAWEAzMzMzM0NYQGZmZmZmRlhAmpmZmZlJWEDNzMzMzExYQAAAAAAAUFhAMzMzMzNTWEBmZmZmZlZYQJqZmZmZWVhAzczMzMxcWEAAAAAAAGBYQDMzMzMzY1hAZmZmZmZmWECamZmZmWlYQM3MzMzMbFhAAAAAAABwWEAzMzMzM3NYQGZmZmZmdlhAmpmZmZl5WEDNzMzMzHxYQAAAAAAAgFhAMzMzMzODWEBmZmZmZoZYQJqZmZmZiVhAzczMzMyMWEAAAAAAAJBYQDMzMzMzk1hAZmZmZmaWWECamZmZmZlYQM3MzMzMnFhAAAAAAACgWEAzMzMzM6NYQGZmZmZmplhAmpmZmZmpWEDNzMzMzKxYQAAAAAAAsFhAMzMzMzOzWEBmZmZmZrZYQJqZmZmZuVhAzczMzMy8WEAAAAAAAMBYQDMzMzMzw1hAZmZmZmbGWECamZmZmclYQM3MzMzMzFhAAAAAAADQWEAzMzMzM9NYQGZmZmZm1lhAmpmZmZnZWEDNzMzMzNxYQAAAAAAA4FhAMzMzMzPjWEBmZmZmZuZYQJqZmZmZ6VhAzczMzMzsWEAAAAAAAPBYQDMzMzMz81hAZmZmZmb2WECamZmZmflYQM3MzMzM/FhAAAAAAAAAWUAzMzMzMwNZQGZmZmZmBllAmpmZmZkJWUDNzMzMzAxZQAAAAAAAEFlAMzMzMzMTWUBmZmZmZhZZQJqZmZmZGVlAzczMzMwcWUAAAAAAACBZQDMzMzMzI1lAZmZmZmYmWUCamZmZmSlZQM3MzMzMLFlAAAAAAAAwWUAzMzMzMzNZQGZmZmZmNllAmpmZmZk5WUDNzMzMzDxZQAAAAAAAQFlAMzMzMzNDWUBmZmZmZkZZQJqZmZmZSVlAzczMzMxMWUAAAAAAAFBZQDMzMzMzU1lAZmZmZmZWWUCamZmZmVlZQM3MzMzMXFlAAAAAAABgWUAzMzMzM2NZQGZmZmZmZllAmpmZmZlpWUDNzMzMzGxZQAAAAAAAcFlAMzMzMzNzWUBmZmZmZnZZQJqZmZmZeVlAzczMzMx8WUAAAAAAAIBZQDMzMzMzg1lAZmZmZmaGWUCamZmZmYlZQM3MzMzMjFlAAAAAAACQWUAzMzMzM5NZQGZmZmZmlllAmpmZmZmZWUDNzMzMzJxZQAAAAAAAoFlAMzMzMzOjWUBmZmZmZqZZQJqZmZmZqVlAzczMzMysWUAAAAAAALBZQDMzMzMzs1lAZmZmZma2WUCamZmZmblZQM3MzMzMvFlAAAAAAADAWUAzMzMzM8NZQGZmZmZmxllAmpmZmZnJWUDNzMzMzMxZQAAAAAAA0FlAMzMzMzPTWUBmZmZmZtZZQJqZmZmZ2VlAzczMzMzcWUAAAAAAAOBZQDMzMzMz41lAZmZmZmbmWUCamZmZmelZQM3MzMzM7FlAAAAAAADwWUAzMzMzM/NZQGZmZmZm9llAmpmZmZn5WUDNzMzMzPxZQAAAAAAAAFpAMzMzMzMDWkBmZmZmZgZaQJqZmZmZCVpAzczMzMwMWkAAAAAAABBaQDMzMzMzE1pAZmZmZmYWWkCamZmZmRlaQM3MzMzMHFpAAAAAAAAgWkAzMzMzMyNaQGZmZmZmJlpAmpmZmZkpWkDNzMzMzCxaQAAAAAAAMFpAMzMzMzMzWkBmZmZmZjZaQJqZmZmZOVpAzczMzMw8WkAAAAAAAEBaQDMzMzMzQ1pAZmZmZmZGWkCamZmZmUlaQM3MzMzMTFpAAAAAAABQWkAzMzMzM1NaQGZmZmZmVlpAmpmZmZlZWkDNzMzMzFxaQAAAAAAAYFpAMzMzMzNjWkBmZmZmZmZaQJqZmZmZaVpAzczMzMxsWkAAAAAAAHBaQDMzMzMzc1pAZmZmZmZ2WkCamZmZmXlaQM3MzMzMfFpAAAAAAACAWkAzMzMzM4NaQGZmZmZmhlpAmpmZmZmJWkDNzMzMzIxaQAAAAAAAkFpAMzMzMzOTWkBmZmZmZpZaQJqZmZmZmVpAzczMzMycWkAAAAAAAKBaQDMzMzMzo1pAZmZmZmamWkCamZmZmalaQM3MzMzMrFpAAAAAAACwWkAzMzMzM7NaQGZmZmZmtlpAmpmZmZm5WkDNzMzMzLxaQAAAAAAAwFpAMzMzMzPDWkBmZmZmZsZaQJqZmZmZyVpAzczMzMzMWkAAAAAAANBaQDMzMzMz01pAZmZmZmbWWkCamZmZmdlaQM3MzMzM3FpAAAAAAADgWkAzMzMzM+NaQGZmZmZm5lpAmpmZmZnpWkDNzMzMzOxaQAAAAAAA8FpAMzMzMzPzWkBmZmZmZvZaQJqZmZmZ+VpAzczMzMz8WkAAAAAAAABbQDMzMzMzA1tAZmZmZmYGW0CamZmZmQlbQM3MzMzMDFtAAAAAAAAQW0AzMzMzMxNbQGZmZmZmFltAmpmZmZkZW0DNzMzMzBxbQAAAAAAAIFtAMzMzMzMjW0BmZmZmZiZbQJqZmZmZKVtAzczMzMwsW0AAAAAAADBbQDMzMzMzM1tAZmZmZmY2W0CamZmZmTlbQM3MzMzMPFtAAAAAAABAW0AzMzMzM0NbQGZmZmZmRltAmpmZmZlJW0DNzMzMzExbQAAAAAAAUFtAMzMzMzNTW0BmZmZmZlZbQJqZmZmZWVtAzczMzMxcW0AAAAAAAGBbQDMzMzMzY1tAZmZmZmZmW0CamZmZmWlbQM3MzMzMbFtAAAAAAABwW0AzMzMzM3NbQGZmZmZmdltAmpmZmZl5W0DNzMzMzHxbQAAAAAAAgFtAMzMzMzODW0BmZmZmZoZbQJqZmZmZiVtAzczMzMyMW0AAAAAAAJBbQDMzMzMzk1tAZmZmZmaWW0CamZmZmZlbQM3MzMzMnFtAAAAAAACgW0AzMzMzM6NbQGZmZmZmpltAmpmZmZmpW0DNzMzMzKxbQAAAAAAAsFtAMzMzMzOzW0BmZmZmZrZbQJqZmZmZuVtAzczMzMy8W0AAAAAAAMBbQDMzMzMzw1tAZmZmZmbGW0CamZmZmclbQM3MzMzMzFtAAAAAAADQW0AzMzMzM9NbQGZmZmZm1ltAmpmZmZnZW0DNzMzMzNxbQAAAAAAA4FtAMzMzMzPjW0BmZmZmZuZbQJqZmZmZ6VtAzczMzMzsW0AAAAAAAPBbQDMzMzMz81tAZmZmZmb2W0CamZmZmflbQM3MzMzM/FtAAAAAAAAAXEAzMzMzMwNcQGZmZmZmBlxAmpmZmZkJXEDNzMzMzAxcQAAAAAAAEFxAMzMzMzMTXEBmZmZmZhZcQJqZmZmZGVxAzczMzMwcXEAAAAAAACBcQDMzMzMzI1xAZmZmZmYmXECamZmZmSlcQM3MzMzMLFxAAAAAAAAwXEAzMzMzMzNcQGZmZmZmNlxAmpmZmZk5XEDNzMzMzDxcQAAAAAAAQFxAMzMzMzNDXEBmZmZmZkZcQJqZmZmZSVxAzczMzMxMXEAAAAAAAFBcQDMzMzMzU1xAZmZmZmZWXECamZmZmVlcQM3MzMzMXFxAAAAAAABgXEAzMzMzM2NcQGZmZmZmZlxAmpmZmZlpXEDNzMzMzGxcQAAAAAAAcFxAMzMzMzNzXEBmZmZmZnZcQJqZmZmZeVxAzczMzMx8XEAAAAAAAIBcQDMzMzMzg1xAZmZmZmaGXECamZmZmYlcQM3MzMzMjFxAAAAAAACQXEAzMzMzM5NcQGZmZmZmllxAmpmZmZmZXEDNzMzMzJxcQAAAAAAAoFxAMzMzMzOjXEBmZmZmZqZcQJqZmZmZqVxAzczMzMysXEAAAAAAALBcQDMzMzMzs1xAZmZmZma2XECamZmZmblcQM3MzMzMvFxAAAAAAADAXEAzMzMzM8NcQGZmZmZmxlxAmpmZmZnJXEDNzMzMzMxcQAAAAAAA0FxAMzMzMzPTXEBmZmZmZtZcQJqZmZmZ2VxAzczMzMzcXEAAAAAAAOBcQDMzMzMz41xAZmZmZmbmXECamZmZmelcQM3MzMzM7FxAAAAAAADwXEAzMzMzM/NcQGZmZmZm9lxAmpmZmZn5XEDNzMzMzPxcQAAAAAAAAF1AMzMzMzMDXUBmZmZmZgZdQJqZmZmZCV1AzczMzMwMXUAAAAAAABBdQDMzMzMzE11AZmZmZmYWXUCamZmZmRldQM3MzMzMHF1AAAAAAAAgXUAzMzMzMyNdQGZmZmZmJl1AmpmZmZkpXUDNzMzMzCxdQAAAAAAAMF1AMzMzMzMzXUBmZmZmZjZdQJqZmZmZOV1AzczMzMw8XUAAAAAAAEBdQDMzMzMzQ11AZmZmZmZGXUCamZmZmUldQM3MzMzMTF1AAAAAAABQXUAzMzMzM1NdQGZmZmZmVl1AmpmZmZlZXUDNzMzMzFxdQAAAAAAAYF1AMzMzMzNjXUBmZmZmZmZdQJqZmZmZaV1AzczMzMxsXUAAAAAAAHBdQDMzMzMzc11AZmZmZmZ2XUCamZmZmXldQM3MzMzMfF1AAAAAAACAXUAzMzMzM4NdQGZmZmZmhl1AmpmZmZmJXUDNzMzMzIxdQAAAAAAAkF1AMzMzMzOTXUBmZmZmZpZdQJqZmZmZmV1AzczMzMycXUAAAAAAAKBdQDMzMzMzo11AZmZmZmamXUCamZmZmaldQM3MzMzMrF1AAAAAAACwXUAzMzMzM7NdQGZmZmZmtl1AmpmZmZm5XUDNzMzMzLxdQAAAAAAAwF1AMzMzMzPDXUBmZmZmZsZdQJqZmZmZyV1AzczMzMzMXUAAAAAAANBdQDMzMzMz011AZmZmZmbWXUCamZmZmdldQM3MzMzM3F1AAAAAAADgXUAzMzMzM+NdQGZmZmZm5l1AmpmZmZnpXUDNzMzMzOxdQAAAAAAA8F1AMzMzMzPzXUBmZmZmZvZdQJqZmZmZ+V1AzczMzMz8XUAAAAAAAABeQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2738\"},\"selection_policy\":{\"id\":\"2737\"}},\"id\":\"2719\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2744\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2690\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2716\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2721\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"2741\"}},\"id\":\"2746\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2689\"},\"group\":null,\"major_label_policy\":{\"id\":\"2690\"},\"ticker\":{\"id\":\"2663\"}},\"id\":\"2662\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"2719\"}},\"id\":\"2724\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2693\",\"type\":\"AllLabels\"},{\"attributes\":{\"source\":{\"id\":\"2680\"}},\"id\":\"2685\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2654\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orangered\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2701\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"AAAAAACAa0AAAAAAAMBqQAAAAAAAYGtAAAAAAAAAbEAAAAAAAMBoQAAAAAAAoGxAAAAAAAAAbEAAAAAAAABrQAAAAAAAQGlAAAAAAACgbEAAAAAAAEBpQAAAAAAA4GpAAAAAAADgakAAAAAAAIBoQAAAAAAAYG1AAAAAAADgaUAAAAAAAKBpQAAAAAAAwG1AAAAAAABAaUAAAAAAAKBqQAAAAAAAQGxAAAAAAADAaEAAAAAAAMBrQAAAAAAAQGdAAAAAAAAAa0AAAAAAAEBrQAAAAAAAIGxAAAAAAAAAaUAAAAAAAIBoQAAAAAAAAGxAAAAAAADgaEAAAAAAAIBpQAAAAAAAoGdAAAAAAABgakAAAAAAAMBnQAAAAAAAAGdAAAAAAACAaUAAAAAAAIBpQAAAAAAAYGtAAAAAAADgaUAAAAAAAGBsQAAAAAAAYGpAAAAAAAAgaEAAAAAAAMBpQAAAAAAAAGpAAAAAAADgZ0AAAAAAAEBoQAAAAAAAIGdAAAAAAAAAaUAAAAAAAGBpQAAAAAAAoGhAAAAAAABgaUAAAAAAAABpQAAAAAAAAGlAAAAAAACgaUAAAAAAAABqQAAAAAAAoGlAAAAAAAAgaUAAAAAAAKBrQAAAAAAAQGtAAAAAAABAa0AAAAAAAABrQAAAAAAAQGlAAAAAAADAaUAAAAAAAKBoQAAAAAAAQGpAAAAAAADgaEAAAAAAAGBrQAAAAAAAAGhAAAAAAABgakAAAAAAAOBoQAAAAAAAgGhAAAAAAABgaEAAAAAAAGBpQAAAAAAAQGlAAAAAAAAAaUAAAAAAAOBoQAAAAAAA4GdAAAAAAACAaUAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaEAAAAAAAKBoQAAAAAAAQGlAAAAAAABAakAAAAAAAEBpQAAAAAAAwGhAAAAAAADgZ0AAAAAAAEBoQAAAAAAAwGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGpAAAAAAADAakAAAAAAAKBoQAAAAAAAYGhAAAAAAACgaUAAAAAAACBqQAAAAAAAYGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGhAAAAAAADgakAAAAAAAEBoQAAAAAAAoGdAAAAAAACAZ0AAAAAAAEBpQAAAAAAAIGlAAAAAAADAaEAAAAAAAABqQAAAAAAAoGhAAAAAAABgZ0AAAAAAAGBnQAAAAAAAwGdAAAAAAACgaEAAAAAAAABpQAAAAAAAIGhAAAAAAACAZkAAAAAAAEBoQAAAAAAAwGlAAAAAAABgaEAAAAAAACBoQAAAAAAAoGlAAAAAAABAaEAAAAAAAIBoQAAAAAAAQGhAAAAAAADgaEAAAAAAAOBpQAAAAAAAgGdAAAAAAABgaUAAAAAAAIBnQAAAAAAAgGZAAAAAAADAaEAAAAAAAABpQAAAAAAAIGlAAAAAAABAakAAAAAAAMBpQAAAAAAAoGdAAAAAAABAaEAAAAAAAGBnQAAAAAAAYGhAAAAAAAAgaUAAAAAAAKBoQAAAAAAAwGlAAAAAAAAAakAAAAAAAOBoQAAAAAAAAGhAAAAAAAAgaEAAAAAAAIBpQAAAAAAAIGlAAAAAAAAAaUAAAAAAACBmQAAAAAAAIGhAAAAAAADgaEAAAAAAACBpQAAAAAAAQGhAAAAAAAAAZ0AAAAAAAABoQAAAAAAA4GhAAAAAAADAZ0AAAAAAAOBmQAAAAAAAoGdAAAAAAACAaEAAAAAAAIBoQAAAAAAAwGhAAAAAAABAakAAAAAAAIBqQAAAAAAAYGtAAAAAAADAaEAAAAAAAGBoQAAAAAAAwGhAAAAAAADgZ0AAAAAAACBoQAAAAAAAoGhAAAAAAABAaEAAAAAAAGBnQAAAAAAAIGpAAAAAAABgZ0AAAAAAAMBoQAAAAAAAwGlAAAAAAACgaEAAAAAAAOBnQAAAAAAAAGlAAAAAAADgaUAAAAAAAKBpQAAAAAAAwGhAAAAAAACAaEAAAAAAACBqQAAAAAAAYGpAAAAAAABgaUAAAAAAAABpQAAAAAAAAGhAAAAAAAAAakAAAAAAAKBqQAAAAAAAoGtAAAAAAAAAa0AAAAAAAEBsQAAAAAAAgGxAAAAAAACAbEAAAAAAAOBqQAAAAAAAAGxAAAAAAABAbEAAAAAAAKBqQAAAAAAA4G1AAAAAAABAb0AAAAAAAOBuQAAAAAAAAG5AAAAAAADgbEAAAAAAAIBtQAAAAAAA4GtAAAAAAADgbEAAAAAAAEBsQAAAAAAAwGpAAAAAAAAAakAAAAAAAMBqQAAAAAAAgGhAAAAAAACAaUAAAAAAAOBoQAAAAAAAQGdAAAAAAAAAaEAAAAAAAOBoQAAAAAAAAGlAAAAAAAAAZ0AAAAAAAABnQAAAAAAAoGdAAAAAAADAZkAAAAAAAABnQAAAAAAAIGdAAAAAAABgaEAAAAAAAMBnQAAAAAAAQGhAAAAAAAAgZ0AAAAAAAOBmQAAAAAAAIGhAAAAAAABAaEAAAAAAACBoQAAAAAAAgGdAAAAAAADgZ0AAAAAAAKBnQAAAAAAAgGdAAAAAAAAgaUAAAAAAAGBoQAAAAAAAoGlAAAAAAAAAaUAAAAAAAABpQAAAAAAAAGhAAAAAAACgaEAAAAAAAIBpQAAAAAAA4GlAAAAAAAAAaEAAAAAAACBpQAAAAAAAwGdAAAAAAABgaEAAAAAAAEBoQAAAAAAAwGZAAAAAAACgZ0AAAAAAAIBoQAAAAAAAgGhAAAAAAAAAaUAAAAAAAMBnQAAAAAAA4GZAAAAAAADgaEAAAAAAAGBnQAAAAAAAgGhAAAAAAADgZ0AAAAAAAOBnQAAAAAAAYGhAAAAAAABAaEAAAAAAAABoQAAAAAAAwGZAAAAAAACAZ0AAAAAAAGBpQAAAAAAAYGdAAAAAAAAAaEAAAAAAAMBpQAAAAAAAIGlAAAAAAAAAZ0AAAAAAAABoQAAAAAAAoGlAAAAAAACAaEAAAAAAACBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAEBoQAAAAAAAIGlAAAAAAAAgaEAAAAAAAABmQAAAAAAAYGdAAAAAAACAZ0AAAAAAAIBoQAAAAAAAAGhAAAAAAAAgZ0AAAAAAAGBoQAAAAAAAwGhAAAAAAACgaUAAAAAAAABpQAAAAAAAAGpAAAAAAABgaEAAAAAAAGBnQAAAAAAAIGhAAAAAAACgaEAAAAAAAEBpQAAAAAAAIGhAAAAAAACAaEAAAAAAAEBpQAAAAAAAIGlAAAAAAACgaEAAAAAAAIBpQAAAAAAAAGpAAAAAAADAaUAAAAAAAIBqQAAAAAAA4GlAAAAAAADgaUAAAAAAAIBqQAAAAAAAAGtAAAAAAABAa0AAAAAAAKBrQAAAAAAAQGtAAAAAAADgaUAAAAAAAGBpQAAAAAAAgGlAAAAAAABAaUAAAAAAAMBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAKBmQAAAAAAAIGhAAAAAAACgaUAAAAAAAMBoQAAAAAAAgGhAAAAAAACgaEAAAAAAAGBoQAAAAAAAIGlAAAAAAACgaUAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"2695\"},\"selection_policy\":{\"id\":\"2694\"}},\"id\":\"2680\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"overlay\":{\"id\":\"2672\"}},\"id\":\"2668\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"2662\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2665\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2680\"},\"glyph\":{\"id\":\"2681\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2683\"},\"nonselection_glyph\":{\"id\":\"2682\"},\"view\":{\"id\":\"2685\"}},\"id\":\"2684\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2670\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2667\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2669\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2659\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2761\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2656\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2743\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2692\"},\"group\":null,\"major_label_policy\":{\"id\":\"2693\"},\"ticker\":{\"id\":\"2659\"}},\"id\":\"2658\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2715\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2741\"},\"glyph\":{\"id\":\"2742\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2744\"},\"nonselection_glyph\":{\"id\":\"2743\"},\"view\":{\"id\":\"2746\"}},\"id\":\"2745\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"tools\":[{\"id\":\"2666\"},{\"id\":\"2667\"},{\"id\":\"2668\"},{\"id\":\"2669\"},{\"id\":\"2670\"},{\"id\":\"2671\"}]},\"id\":\"2673\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2671\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2689\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"2649\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"28d486e5-03ce-43c5-9d67-cb62992e0200\",\"root_ids\":[\"2649\"],\"roots\":{\"2649\":\"8f07945b-5987-4327-a19d-e008fb7e5d85\"}}];\n", - " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", - "\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " let attempts = 0;\n", - " const timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " clearInterval(timer);\n", - " embed_document(root);\n", - " } else {\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " clearInterval(timer);\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " }\n", - " }\n", - " }, 10, root)\n", - " }\n", - "})(window);" - ], - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "2649" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "calc_y_crysfml = calculator.fit_func(meas_x)\n", "\n", @@ -1564,64 +973,9 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function embed_document(root) {\n", - " \n", - " const docs_json = {\"3506346e-92a4-4592-875e-d4f4790951f7\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2986\"}],\"center\":[{\"id\":\"2989\"},{\"id\":\"2993\"},{\"id\":\"3025\"}],\"height\":300,\"left\":[{\"id\":\"2990\"}],\"renderers\":[{\"id\":\"3012\"}],\"title\":{\"id\":\"3014\"},\"toolbar\":{\"id\":\"3001\"},\"width\":990,\"x_range\":{\"id\":\"2978\"},\"x_scale\":{\"id\":\"2982\"},\"y_range\":{\"id\":\"2980\"},\"y_scale\":{\"id\":\"2984\"}},\"id\":\"2977\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"3026\"}]},\"id\":\"3025\",\"type\":\"Legend\"},{\"attributes\":{\"tools\":[{\"id\":\"2994\"},{\"id\":\"2995\"},{\"id\":\"2996\"},{\"id\":\"2997\"},{\"id\":\"2998\"},{\"id\":\"2999\"}]},\"id\":\"3001\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3011\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3023\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"3014\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"3018\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"3020\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2998\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2999\",\"type\":\"HelpTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"3000\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2997\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"3021\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3009\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2995\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2980\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2982\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"2986\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2989\",\"type\":\"Grid\"},{\"attributes\":{\"overlay\":{\"id\":\"3000\"}},\"id\":\"2996\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2978\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2994\",\"type\":\"PanTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2201]}},\"selected\":{\"id\":\"3023\"},\"selection_policy\":{\"id\":\"3022\"}},\"id\":\"3008\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2991\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2984\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"grey\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3010\",\"type\":\"Line\"},{\"attributes\":{\"label\":{\"value\":\"Icalc (CrysPy) - Icalc (CrysFML)\"},\"renderers\":[{\"id\":\"3012\"}]},\"id\":\"3026\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"2990\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2993\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2987\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"3020\"},\"group\":null,\"major_label_policy\":{\"id\":\"3021\"},\"ticker\":{\"id\":\"2987\"}},\"id\":\"2986\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3022\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"3017\"},\"group\":null,\"major_label_policy\":{\"id\":\"3018\"},\"ticker\":{\"id\":\"2991\"}},\"id\":\"2990\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3017\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"3008\"},\"glyph\":{\"id\":\"3009\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"3011\"},\"nonselection_glyph\":{\"id\":\"3010\"},\"view\":{\"id\":\"3013\"}},\"id\":\"3012\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"3008\"}},\"id\":\"3013\",\"type\":\"CDSView\"}],\"root_ids\":[\"2977\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.0\"}};\n", - " const render_items = [{\"docid\":\"3506346e-92a4-4592-875e-d4f4790951f7\",\"root_ids\":[\"2977\"],\"roots\":{\"2977\":\"2f390cb0-35d6-4295-96b3-27843ef4c941\"}}];\n", - " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", - "\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " let attempts = 0;\n", - " const timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " clearInterval(timer);\n", - " embed_document(root);\n", - " } else {\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " clearInterval(timer);\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " }\n", - " }\n", - " }, 10, root)\n", - " }\n", - "})(window);" - ], - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "2977" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", "fig.line(meas_x, calc_y_cryspy-calc_y_crysfml, legend_label='Icalc (CrysPy) - Icalc (CrysFML)', color='grey', line_width=2)\n", @@ -1638,7 +992,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -1652,7 +1006,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.10" + "version": "3.7.9" } }, "nbformat": 4, diff --git a/pyproject.toml b/pyproject.toml index 237c78dd..1b492486 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fi CFML = '^0.0.1' GSASII = '^0.0.1' easyScienceCore = '>=0.2.0' -easyCrystallography = '>=0.1.0' +easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'polarization' } [tool.poetry.dev-dependencies] pytest = "^7.1" From eee3f2b70014ce968dfcaa29d32f31ef161f1d0d Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Tue, 29 Mar 2022 16:20:03 +0200 Subject: [PATCH 265/312] Fix site generation --- .pre-commit-config.yaml | 14 ++--- easyDiffractionLib/Interfaces/cryspy.py | 17 ++++-- easyDiffractionLib/Interfaces/cryspyV2.py | 69 +++++++++++++++++------ easyDiffractionLib/components/phase.py | 27 +++++++-- easyDiffractionLib/components/site.py | 18 +++--- tests/integration_tests/test1.py | 18 +++--- 6 files changed, 108 insertions(+), 55 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 321785c5..54ab514f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,13 +15,13 @@ repos: - id: check-toml - id: pretty-format-json - id: detect-private-key -- repo: local - hooks: - - id: export_dev_requirements - name: Export dev requirements - language: system - pass_filenames: false - entry: peodd -o requirements-dev.txt +#- repo: local +# hooks: +# - id: export_dev_requirements +# name: Export dev requirements +# language: system +# pass_filenames: false +# entry: peodd -o requirements-dev.txt # - id: export-requirements # name: Export requeriments.txt # language: system diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 814788ed..06e65ec6 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -4,6 +4,7 @@ from easyCore import borg, np from easyCore.Objects.Inferface import ItemContainer +from easyCrystallography.Components.Site import Site as Site_base from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases from easyDiffractionLib.Profiles.P1D import ( Instrument1DCWParameters, @@ -62,7 +63,11 @@ class Cryspy(InterfaceTemplate): name = "CrysPy" - feature_available = {"Npowder1DCWunp": True, "Npowder1DTOFunp": True, "Npowder1DCWpol": True} + feature_available = { + "Npowder1DCWunp": True, + "Npowder1DTOFunp": True, + "Npowder1DCWpol": True, + } def __init__(self): self.calculator = Cryspy_calc() @@ -73,7 +78,7 @@ def feature_checker( exp_type="CW", sample_type="powder", dimensionality="1D", - polarization='unp', + polarization="unp", test_str=None, ): return InterfaceTemplate.features( @@ -187,7 +192,7 @@ def create(self, model): self.calculator.updateSpacegroup, ) ) - elif issubclass(t_, Site): + elif issubclass(t_, Site) or issubclass(t_, Site_base): a_key = self.calculator.createAtom(model_key) keys = self._atom_link.copy() r_list.append( @@ -230,7 +235,7 @@ def create(self, model): self.__createModel(model_key, "powder1DTOF") elif t_.__name__ == "Sample": # This is legacy mode. Boo tt_ = type(model.parameters) - base = 'powder1D' + base = "powder1D" if issubclass(tt_, Instrument1DCWParameters): base += "CW" elif issubclass(tt_, Instrument1DTOFParameters): @@ -274,7 +279,9 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False) -> dict: + def get_hkl( + self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False + ) -> dict: return self.calculator.get_hkl(idx, phase_name, encoded_name) def get_phase_components(self, phase_name): diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 7baa0245..280288b3 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -4,6 +4,7 @@ from abc import ABCMeta from easyCore import borg, np from easyCore.Objects.Inferface import ItemContainer +from easyCrystallography.Components.Site import Site as Site_base from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases from easyDiffractionLib.Profiles.P1D import ( Instrument1DCWParameters, @@ -15,8 +16,15 @@ from easyDiffractionLib.Interfaces.interfaceTemplate import InterfaceTemplate from easyDiffractionLib.calculators.cryspy import Cryspy as Cryspy_calc -from easyDiffractionLib.Interfaces.types import Powder as Powder_type, SingleCrystal as SingleCrystal_type, \ - CW as CW_type, TOF as TOF_type, Pol as Pol_type, UPol as UPol_type, Neutron as Neutron_type +from easyDiffractionLib.Interfaces.types import ( + Powder as Powder_type, + SingleCrystal as SingleCrystal_type, + CW as CW_type, + TOF as TOF_type, + Pol as Pol_type, + UPol as UPol_type, + Neutron as Neutron_type, +) class MetaCryspy: @@ -25,7 +33,7 @@ class MetaCryspy: def create(self, model): cls = self.__class__ - cls_s = cls.__mro__[0:cls.__mro__.index(MetaCryspy)] + cls_s = cls.__mro__[0 : cls.__mro__.index(MetaCryspy)] r_list = [] for cls_ in cls_s: if hasattr(cls_, "create"): @@ -116,7 +124,7 @@ def create(self, model, master=False): self.calculator.updateSpacegroup, ) ) - elif issubclass(t_, Site): + elif issubclass(t_, Site) or issubclass(t_, Site_base): a_key = self.calculator.createAtom(model_key) keys = self._atom_link.copy() r_list.append( @@ -185,7 +193,9 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ return self.calculator.calculate(x_array) - def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False) -> dict: + def get_hkl( + self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False + ) -> dict: return self.calculator.get_hkl(idx, phase_name, encoded_name) def get_phase_components(self, phase_name): @@ -226,7 +236,7 @@ class CW(CW_type): "resolution_w": "w", "resolution_x": "x", "resolution_y": "y", - "wavelength": "wavelength", + "wavelength": "wavelength", } def create(self, model, master=False): @@ -352,8 +362,12 @@ def create(self, model, master=False): r_list = [] t_ = type(model) model_key = self._identify(model) - base = 'powder1DCW' - if t_.__name__ == "Sample" or t_.__name__ in ["Powder1DCW", "powder1DCW", "Npowder1DCW"]: + base = "powder1DCW" + if t_.__name__ == "Sample" or t_.__name__ in [ + "Powder1DCW", + "powder1DCW", + "Npowder1DCW", + ]: self._createModel(model_key, base) return r_list @@ -365,8 +379,12 @@ def create(self, model, master=False): r_list = [] t_ = type(model) model_key = self._identify(model) - base = 'powder1DTOF' - if t_.__name__ == "Sample" or t_.__name__ in ["Powder1DTOF", "powder1DTOF", "Npowder1DTOF"]: + base = "powder1DTOF" + if t_.__name__ == "Sample" or t_.__name__ in [ + "Powder1DTOF", + "powder1DTOF", + "Npowder1DTOF", + ]: self._createModel(model_key, base) return r_list @@ -378,12 +396,18 @@ def create(self, model, master=False): r_list = [] t_ = type(model) model_key = self._identify(model) - base = 'powder1DCWpol' - if t_.__name__ == "Sample" or t_.__name__ in ["Powder1DCWpol", "powder1DCWpol", "Npowder1DCWpol"]: + base = "powder1DCWpol" + if t_.__name__ == "Sample" or t_.__name__ in [ + "Powder1DCWpol", + "powder1DCWpol", + "Npowder1DCWpol", + ]: self._createModel(model_key, base) return r_list - def fit_func(self, x_array: np.ndarray, method = lambda up, down: up+down) -> np.ndarray: + def fit_func( + self, x_array: np.ndarray, method=lambda up, down: up + down + ) -> np.ndarray: """ Function to perform a fit :param x_array: points to be calculated at @@ -393,6 +417,7 @@ def fit_func(self, x_array: np.ndarray, method = lambda up, down: up+down) -> np """ return self.calculator.calculate(x_array, method) + class CryspyTOFPol(CryspyBase, TOF, Powder, POL): def create(self, model, master=False): if not master: @@ -400,8 +425,12 @@ def create(self, model, master=False): r_list = [] t_ = type(model) model_key = self._identify(model) - base = 'powder1DTOFpol' - if t_.__name__ == "Sample" or t_.__name__ in ["Powder1DTOFpol", "powder1DTOFpol", "Npowder1DTOFpol"]: + base = "powder1DTOFpol" + if t_.__name__ == "Sample" or t_.__name__ in [ + "Powder1DTOFpol", + "powder1DTOFpol", + "Npowder1DTOFpol", + ]: self._createModel(model_key, base) return r_list @@ -410,7 +439,11 @@ class CryspyV2(InterfaceTemplate): name = "CrysPyV2" - feature_available = {"Npowder1DCWunp": True, "Npowder1DTOFunp": True, "Npowder1DCWpol": True} + feature_available = { + "Npowder1DCWunp": True, + "Npowder1DTOFunp": True, + "Npowder1DCWpol": True, + } def __init__(self): self.calculator = Cryspy_calc() @@ -422,7 +455,7 @@ def feature_checker( exp_type="CW", sample_type="powder", dimensionality="1D", - polarization='unp', + polarization="unp", test_str=None, ): return InterfaceTemplate.features( @@ -463,4 +496,4 @@ def get_calculated_y_for_phase(self, idx=None) -> list: def get_total_y_for_phases(self) -> list: if self._internal is not None: - return self._internal.get_total_y_for_phases() \ No newline at end of file + return self._internal.get_total_y_for_phases() diff --git a/easyDiffractionLib/components/phase.py b/easyDiffractionLib/components/phase.py index eba8ece1..63d5036b 100644 --- a/easyDiffractionLib/components/phase.py +++ b/easyDiffractionLib/components/phase.py @@ -1,13 +1,29 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.0.1' +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" from easyCrystallography.Structures.Phase import Phase as ecPhase, Phases as ecPhases from .site import Site, Atoms -class Phase(ecPhase): +class Phase(ecPhase): _SITE_CLASS = Site - _ATOM_CLASS = Atoms + _ATOMS_CLASS = Atoms + + def __init__( + self, + name, + spacegroup=None, + cell=None, + atoms=None, + scale=None, + interface=None, + enforce_sym=True, + **kwargs + ): + super(Phase, self).__init__( + name, spacegroup, cell, atoms, scale, enforce_sym=enforce_sym + ) + self.interface = interface def add_atom(self, *args, **kwargs): super(Phase, self).add_atom(*args, **kwargs) @@ -22,7 +38,6 @@ def remove_atom(self, key): class Phases(ecPhases): - _SITE_CLASS = Site _ATOM_CLASS = Atoms _PHASE_CLASS = Phase @@ -36,4 +51,4 @@ def __delitem__(self, key): item = self[key] if self.interface is not None: self.interface().remove_phase(self, item) - super(Phases, self).__delitem__(key) \ No newline at end of file + super(Phases, self).__delitem__(key) diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 5a60b491..4504dad4 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -3,8 +3,8 @@ # © 2022 Contributors to the easyCore project # -__author__ = 'github.com/wardsimon' -__version__ = '0.2.0' +__author__ = "github.com/wardsimon" +__version__ = "0.2.0" from typing import List, Union, ClassVar, TypeVar, Optional @@ -13,17 +13,18 @@ from easyCore.Objects.Groups import BaseCollection from easyCore.Utils.io.star import StarLoop -from easyCrystallography.Components.Site import Site as ecSite, \ - PeriodicSite as ecPeriodicSite, \ - Atoms as ecAtoms, \ - PeriodicAtoms as ecPeriodicAtoms +from easyCrystallography.Components.Site import ( + Site as ecSite, + PeriodicSite as ecPeriodicSite, + Atoms as ecAtoms, + PeriodicAtoms as ecPeriodicAtoms, +) from easyCrystallography.Components.Lattice import PeriodicLattice from easyCrystallography.Components.Specie import Specie from easyCrystallography.Components.AtomicDisplacement import AtomicDisplacement class Site(ecSite): - def __init__( self, label: Optional[Union[str, Descriptor]] = None, @@ -55,7 +56,6 @@ def __init__( class PeriodicSite(ecPeriodicSite): - @classmethod def from_site(cls, lattice: PeriodicLattice, site: Site): kwargs = ecPeriodicSite._from_site_kwargs(lattice, site) @@ -96,4 +96,4 @@ def to_star(self) -> List[StarLoop]: class PeriodicAtoms(ecPeriodicAtoms): - _SITE_CLASS = PeriodicSite \ No newline at end of file + _SITE_CLASS = PeriodicSite diff --git a/tests/integration_tests/test1.py b/tests/integration_tests/test1.py index 5677d42d..3b7db966 100644 --- a/tests/integration_tests/test1.py +++ b/tests/integration_tests/test1.py @@ -1,5 +1,5 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.0.1' +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" from easyCore import np @@ -13,11 +13,11 @@ calculator = Calculator() -phase = Phase.from_cif_file('tests/SrTiO3.cif') +phase = Phase.from_cif_file("tests/test_resources/cifs/SrTiO3.cif") -sample = Sample(phases=phase, - parameters=Instrument1DCWParameters.default(), - calculator=calculator) +sample = Sample( + phases=phase, parameters=Instrument1DCWParameters.default(), interface=calculator +) # sample.phase.cell.length_a = 5 sample.parameters.wavelength = 1.25 @@ -38,11 +38,9 @@ plt.plot(x_data, y_data, label="CrysPY") plt.show() -calculator.switch('CrysFML') +calculator.switch("CrysFML") params = sample.parameters -sample = Sample(phases=phase, - parameters=params, - interface=calculator) +sample = Sample(phases=phase, parameters=params, interface=calculator) sample.phases[0].cell.length_a = 9.0 sample.parameters.wavelength = 1.25 From ce7f06dddcd45f75fd23033dc083dadf225dfbef Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 30 Mar 2022 09:21:49 +0200 Subject: [PATCH 266/312] Corrected branch name for the crystallography module --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1b492486..439fe3f5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fi CFML = '^0.0.1' GSASII = '^0.0.1' easyScienceCore = '>=0.2.0' -easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'polarization' } +easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'polatization' } [tool.poetry.dev-dependencies] pytest = "^7.1" From 3ea4ba59fe027ccf253f8c9a0b955973557305ba Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 30 Mar 2022 15:56:16 +0200 Subject: [PATCH 267/312] More work on cryspyV2 --- easyDiffractionLib/Interfaces/cryspyV2.py | 313 ++++++++++++++++------ easyDiffractionLib/Interfaces/types.py | 13 +- 2 files changed, 242 insertions(+), 84 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 280288b3..5776a7d9 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -1,15 +1,23 @@ +from __future__ import annotations + + __author__ = "github.com/wardsimon" __version__ = "0.0.2" from abc import ABCMeta +from typing import Callable, Optional, TYPE_CHECKING, Type, List, Union, TypeVar + +from numpy import ndarray + from easyCore import borg, np from easyCore.Objects.Inferface import ItemContainer -from easyCrystallography.Components.Site import Site as Site_base +from easyCrystallography.Components.Site import ( + Site as Site_base, +) # Maintain compatibility with old versions from easyDiffractionLib import Lattice, SpaceGroup, Site, Phase, Phases from easyDiffractionLib.Profiles.P1D import ( Instrument1DCWParameters, Instrument1DTOFParameters, - Instrument1DCWPolParameters, Powder1DParameters, ) from easyDiffractionLib.components.polarization import PolarizedBeam @@ -24,17 +32,33 @@ Pol as Pol_type, UPol as UPol_type, Neutron as Neutron_type, + _Type, ) +if TYPE_CHECKING: + from easyCore.Objects.ObjectClasses import BasedBase + + Model = TypeVar("Model", bound=BasedBase) + Mixin = TypeVar("Mixin", bound=_Type) + -class MetaCryspy: +class MixInCryspy(_Type): + """ + MixIn base for the cryspy interface. All components are based on this, so that they can be combined easily. + """ + calculator: Cryspy_calc _borg = borg - def create(self, model): + def create(self: Mixin, model: Model): + """ + Sequentially call all create function for MixIn objects. + """ cls = self.__class__ - cls_s = cls.__mro__[0 : cls.__mro__.index(MetaCryspy)] + # Get all classes AFTER this one + cls_s = cls.__mro__[0 : cls.__mro__.index(MixInCryspy)] r_list = [] + for cls_ in cls_s: if hasattr(cls_, "create"): r = cls_.create(self, model, master=True) @@ -43,13 +67,21 @@ def create(self, model): return r_list @staticmethod - def _identify(obj): - return borg.map.convert_id_to_key(obj) + def _identify(obj: Model, as_str: bool = False) -> Union[int, str]: + """ + Helper function to identify objects. + """ + obj_id = borg.map.convert_id_to_key(obj) + if as_str: + obj_id = str(obj_id) + return obj_id -class CryspyBase(MetaCryspy, Neutron_type, metaclass=ABCMeta): +class CryspyBase(MixInCryspy, Neutron_type, metaclass=ABCMeta): """ - A simple example interface using Cryspy + This is the base mixin interface for the cryspy calculator. In this class we deal with the creation of the base + crystal structure. No calculation is performed from this class, it only creates the crystal structure and inherits + all the experiment types from the plugins. """ _sample_link = {"cif_str": "cif_str"} @@ -78,14 +110,21 @@ class CryspyBase(MetaCryspy, Neutron_type, metaclass=ABCMeta): } _subsets = [] - def __init__(self, calculator=None, **kwargs): + def __init__(self, calculator: Optional = None): + """ + Initialise the calculator. + :param calculator: Cryspy instance + :type calculator: + :param kwargs: + :type kwargs: + """ self.calculator = calculator def __init_subclass__(cls, is_abstract: bool = False, **kwargs): """ Initialise all subclasses so that they can be created in the factory - :param is_abstract: Is this a subclass which shouldn't be dded + :param is_abstract: Is this a subclass which shouldn't be added :type is_abstract: bool :param kwargs: key word arguments :type kwargs: dict @@ -96,12 +135,22 @@ def __init_subclass__(cls, is_abstract: bool = False, **kwargs): if not is_abstract: cls._subsets.append(cls) - def create(self, model, master=False): + def create(self, model: Model, master: bool = False) -> List[ItemContainer]: + """ + Create the crystal structure. This deals with interfacing with `Lattice`, `SpaceGroup` `Site`, `Phase`, and + `Phases`. + :param model: The model elements to interface with + :param master: If master we call the mixin create function + :return: List of links + """ if not master: - return MetaCryspy.create(self, model) + return MixInCryspy.create(self, model) + r_list = [] t_ = type(model) model_key = self._identify(model) + + # Interface with lattice if issubclass(t_, Lattice): l_key = self.calculator.createCell(model_key) keys = self._crystal_link.copy() @@ -113,6 +162,7 @@ def create(self, model, master=False): self.calculator.genericUpdate, ) ) + # Interface with Spacegroup elif issubclass(t_, SpaceGroup): s_key = self.calculator.createSpaceGroup(key=model_key, name_hm_alt="P 1") keys = {"_space_group_HM_name": "name_hm_alt"} @@ -124,6 +174,7 @@ def create(self, model, master=False): self.calculator.updateSpacegroup, ) ) + # Interface with Site and legacy Site. elif issubclass(t_, Site) or issubclass(t_, Site_base): a_key = self.calculator.createAtom(model_key) keys = self._atom_link.copy() @@ -135,13 +186,13 @@ def create(self, model, master=False): lambda x, **y: self.calculator.genericUpdate(a_key, **y), ) ) + # Interface with the phase object elif issubclass(t_, Phase): ident = str(model_key) + "_phase" self.calculator.createPhase(ident) - crystal_name = self.calculator.createEmptyCrystal(model.name, key=model_key) - self.calculator.assignCell_toCrystal(self.__identify(model.cell), model_key) + self.calculator.assignCell_toCrystal(self._identify(model.cell), model_key) self.calculator.assignSpaceGroup_toCrystal( - self.__identify(model._spacegroup), model_key + self._identify(model._spacegroup), model_key ) self.calculator.setPhaseScale(str(model_key), scale=model.scale.raw_value) r_list.append( @@ -153,72 +204,97 @@ def create(self, model, master=False): ) ) for atom in model.atoms: - self.calculator.assignAtom_toCrystal(self.__identify(atom), model_key) + self.calculator.assignAtom_toCrystal(self._identify(atom), model_key) + # Interface with the Phases object elif issubclass(t_, Phases): - # self.calculator.createModel(model_key, 'powder1D') for phase in model: - ident = str(self.__identify(phase)) + "_phase" + ident = self._identify(phase, as_str=True) + "_phase" self.calculator.assignPhase(model_key, ident) else: if self._borg.debug: print(f"I'm a: {type(model)}") return r_list - def link_atom(self, crystal_obj, atom): - crystal_name = self.__identify(crystal_obj) - self.calculator.assignAtom_toCrystal(self.__identify(atom), crystal_name) + def link_atom(self, crystal_obj: Phase, atom: Union[Site, Site_base]) -> None: + """ + Link the atom to the crystal. + """ + crystal_name = self._identify(crystal_obj) + self.calculator.assignAtom_toCrystal(self._identify(atom), crystal_name) - def remove_atom(self, crystal_obj, atom): - crystal_name = self.__identify(crystal_obj) - self.calculator.removeAtom_fromCrystal(self.__identify(atom), crystal_name) + def remove_atom(self, crystal_obj: Phase, atom: Union[Site, Site_base]) -> None: + """ + Remove the atom from the crystal. + """ + crystal_name = self._identify(crystal_obj) + self.calculator.removeAtom_fromCrystal(self._identify(atom), crystal_name) - def add_phase(self, phases_obj, phase_obj): - ident = str(self.__identify(phase_obj)) + "_phase" - self.calculator.assignPhase(self.__identify(phases_obj), ident) + def add_phase(self, phases_obj: Phases, phase_obj: Phase) -> None: + """ + Add a phase to the phases object. + """ + ident = self._identify(phase_obj, as_str=True) + "_phase" + self.calculator.assignPhase(self._identify(phases_obj), ident) self.calculator.setPhaseScale( - self.__identify(phase_obj), scale=phase_obj.scale.raw_value + self._identify(phase_obj), scale=phase_obj.scale.raw_value ) - def remove_phase(self, phases_obj, phase_obj): - ident = str(self.__identify(phase_obj)) + "_phase" - self.calculator.removePhase(self.__identify(phases_obj), ident) + def remove_phase(self, phases_obj: Phases, phase_obj: Phase) -> None: + """ + Remove a phase from the phases object. + """ + ident = self._identify(phase_obj, as_str=True) + "_phase" + self.calculator.removePhase(self._identify(phases_obj), ident) def fit_func(self, x_array: np.ndarray) -> np.ndarray: """ - Function to perform a fit + Function to perform a fit. This is the base function for the fit, but others might be subclassed. :param x_array: points to be calculated at - :type x_array: np.ndarray :return: calculated points - :rtype: np.ndarray """ return self.calculator.calculate(x_array) def get_hkl( - self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False + self, + x_array: np.ndarray = None, + idx: Optional[int] = None, + phase_name: Optional[str] = None, + encoded_name: bool = False, ) -> dict: + """ + Get all the hkl values for a phase as specified by EITHER the index or phase name/encoded phase name (obj_id). + """ return self.calculator.get_hkl(idx, phase_name, encoded_name) - def get_phase_components(self, phase_name): + def get_phase_components(self, phase_name: str) -> dict: + """ + Get all the components of a phase as specified by the phase name. + """ data = self.calculator.get_phase_components(phase_name) return data - def _createModel(self, model, model_type): - self.calculator.createModel(model, model_type) + def _createModel(self, model_key: str, model_type: str) -> None: + self.calculator.createModel(model_key, model_type) def get_calculated_y_for_phase(self, phase_idx: int) -> list: return self.calculator.get_calculated_y_for_phase(phase_idx) - def get_total_y_for_phases(self) -> list: + def get_total_y_for_phases(self) -> tuple[ndarray, ndarray]: return self.calculator.get_total_y_for_phases() class Powder(Powder_type): - def create(self, model, master=False): + """ + Class to handle powder calculations. In this instance Powder1DParameters is passed to the calculator. + """ + + def create(self, model: Model, master: bool = False) -> List[ItemContainer]: if not master: - return MetaCryspy.create(self, model) + return MixInCryspy.create(self, model) + r_list = [] t_ = type(model) - model_key = self.__identify(model) + if issubclass(t_, Powder1DParameters): # These parameters do not link directly to cryspy objects. self.calculator.pattern = model @@ -226,10 +302,18 @@ def create(self, model, master=False): class SingleCrystal(SingleCrystal_type): + """ + Class to handle single crystal calculations. At the moment this is a stub/placeholder. + """ + pass class CW(CW_type): + """ + Class to handle Constant Wavelength calculations. + """ + _instrument_link = { "resolution_u": "u", "resolution_v": "v", @@ -239,12 +323,14 @@ class CW(CW_type): "wavelength": "wavelength", } - def create(self, model, master=False): + def create(self, model: Model, master: bool = False) -> List[ItemContainer]: if not master: - return MetaCryspy.create(self, model) + return MixInCryspy.create(self, model) r_list = [] t_ = type(model) - model_key = self.__identify(model) + model_key = self._identify(model) + + # Link the Instrumental parameters to the calculator. if issubclass(t_, Instrument1DCWParameters): self.calculator.createModel(model_key, "powder1DCW") # These parameters are linked to the Resolution and Setup cryspy objects @@ -272,14 +358,20 @@ def create(self, model, master=False): class TOF(TOF_type): + """ + Class to handle Time of Flight calculations. + """ + _instrument_tof_link = {k: k for k in Instrument1DTOFParameters._defaults.keys()} - def create(self, model, master=False): + def create(self, model: Model, master: bool = False) -> List[ItemContainer]: if not master: - return MetaCryspy.create(self, model) + return MixInCryspy.create(self, model) + r_list = [] t_ = type(model) - model_key = self.__identify(model) + model_key = self._identify(model) + if issubclass(t_, Instrument1DTOFParameters): self.calculator.createModel(model_key, "powder1DTOF") # These parameters are linked to the Resolution and Setup cryspy objects @@ -323,17 +415,23 @@ def create(self, model, master=False): class POL(Pol_type): + """ + Class to handle calculations with Polarization. + """ + _polarization_link = { "polarization": "polarization", "efficiency": "efficiency", } - def create(self, model, master=False): + def create(self, model: Model, master: bool = False) -> List[ItemContainer]: if not master: - return MetaCryspy.create(self, model) + return MixInCryspy.create(self, model) + r_list = [] t_ = type(model) - model_key = self.__identify(model) + + # Link the Polarization parameters to the calculator. if issubclass(t_, PolarizedBeam): p_key = self.calculator.createPolarization() r_list.append( @@ -346,19 +444,75 @@ def create(self, model, master=False): ) return r_list + @staticmethod + def up_plus_down(up: np.ndarray, down: np.ndarray) -> np.ndarray: + """ + Calculate the `up + down` polarization from the up and down polarization. + :param up: Spin UP + :param down: Spin DOWN + :return: Spin UP + Spin DOWN + """ + return up + down + + @staticmethod + def up_minus_down(up: np.ndarray, down: np.ndarray) -> np.ndarray: + """ + Calculate the `up - down` polarization from the up and down polarization. + :param up: Spin UP + :param down: Spin DOWN + :return: Spin UP - Spin DOWN + """ + return up - down + + @staticmethod + def up(up: np.ndarray, down: np.ndarray) -> np.ndarray: + """ + Calculate the `up` polarization from the up and down polarization. + :param up: Spin UP + :param down: Spin DOWN + :return: Spin UP + """ + return up + + @staticmethod + def down(up: np.ndarray, down: np.ndarray) -> np.ndarray: + """ + Calculate the `down` polarization from the up and down polarization. + :param up: Spin UP + :param down: Spin DOWN + :return: Spin DOWN + """ + return down + + def fit_func( + self, + x_array: np.ndarray, + method: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] = None, + ) -> np.ndarray: + """ + In this case we need to know how to deal with the polarization channels. + :param method: How to combine the two chanels + :param x_array: points to be calculated at + :return: calculated points + """ + if method is None: + method = self.up_plus_down + return self.calculator.calculate(x_array, method) + class UPol(UPol_type): - def model(self, model, master=False): + def create(self, model: Model, master: bool = False) -> List[ItemContainer]: if not master: - return MetaCryspy.create(self, model) + return MixInCryspy.create(self, model) r_list = [] return r_list class CryspyCW(CryspyBase, CW, Powder, UPol): - def create(self, model, master=False): + def create(self, model: Model, master: bool = False) -> List[ItemContainer]: if not master: - return MetaCryspy.create(self, model) + return MixInCryspy.create(self, model) + r_list = [] t_ = type(model) model_key = self._identify(model) @@ -373,9 +527,10 @@ def create(self, model, master=False): class CryspyTOF(CryspyBase, TOF, Powder, UPol): - def create(self, model, master=False): + def create(self, model: Model, master: bool = False) -> List[ItemContainer]: if not master: - return MetaCryspy.create(self, model) + return MixInCryspy.create(self, model) + r_list = [] t_ = type(model) model_key = self._identify(model) @@ -390,9 +545,10 @@ def create(self, model, master=False): class CryspyCWPol(CryspyBase, CW, Powder, POL): - def create(self, model, master=False): + def create(self, model: Model, master: bool = False) -> List[ItemContainer]: if not master: - return MetaCryspy.create(self, model) + return MixInCryspy.create(self, model) + r_list = [] t_ = type(model) model_key = self._identify(model) @@ -405,23 +561,12 @@ def create(self, model, master=False): self._createModel(model_key, base) return r_list - def fit_func( - self, x_array: np.ndarray, method=lambda up, down: up + down - ) -> np.ndarray: - """ - Function to perform a fit - :param x_array: points to be calculated at - :type x_array: np.ndarray - :return: calculated points - :rtype: np.ndarray - """ - return self.calculator.calculate(x_array, method) - class CryspyTOFPol(CryspyBase, TOF, Powder, POL): - def create(self, model, master=False): + def create(self, model: Model, master: bool = False) -> List[ItemContainer]: if not master: - return MetaCryspy.create(self, model) + return MixInCryspy.create(self, model) + r_list = [] t_ = type(model) model_key = self._identify(model) @@ -468,29 +613,33 @@ def feature_checker( FEATURES=CryspyV2.feature_available, ) - def create(self, model): + def create(self, model: Model): cls = self._get_constructor(CryspyBase._subsets, model) if cls is not None and cls is not self._internal.__class__: self._internal = cls(calculator=self.calculator) return self._internal.create(model, master=True) - def link_atom(self, model_name: str, atom): + def __call__(self, *args, **kwargs) -> np.ndarray: if self._internal is not None: - self._internal.link_atom(model_name, atom) + return self._internal.fit_func(*args, **kwargs) - def remove_atom(self, model_name: str, atom: str): + def link_atom(self, phase: Phase, atom: Union[Site, Site_base]) -> None: if self._internal is not None: - self._internal.remove_atom(model_name, atom) + self._internal.link_atom(phase, atom) - def fit_func(self, x_array: np.ndarray) -> np.ndarray: + def remove_atom(self, phase: Phase, atom: Union[Site, Site_base]) -> None: + if self._internal is not None: + self._internal.remove_atom(phase, atom) + + def fit_func(self, x_array: np.ndarray) -> Union[np.ndarray, None]: if self._internal is not None: return self._internal.fit_func(x_array) - def get_hkl(self, x_array: np.ndarray = None, idx=None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx: Optional[int] = None) -> dict: if self._internal is not None: return self._internal.get_hkl(x_array, idx) - def get_calculated_y_for_phase(self, idx=None) -> list: + def get_calculated_y_for_phase(self, idx: Optional[int] = None) -> list: if self._internal is not None: return self._internal.get_calculated_y_for_phase(idx) diff --git a/easyDiffractionLib/Interfaces/types.py b/easyDiffractionLib/Interfaces/types.py index 0231cd5a..6ee82a6b 100644 --- a/easyDiffractionLib/Interfaces/types.py +++ b/easyDiffractionLib/Interfaces/types.py @@ -1,9 +1,18 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.0.1' +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +from abc import abstractmethod +from typing import List, Any, Callable, Union class _Type: _internal_type = True + calculator: Any + _identify: Callable[[Any], Union[str, int]] + + @abstractmethod + def create(self, model) -> List: + pass class Neutron(_Type): From 0534a3df0ae38af3b4f8bd53a2a47a3883b503a2 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 30 Mar 2022 16:33:59 +0200 Subject: [PATCH 268/312] Add magnetic Susceptibility to the`Site` --- easyDiffractionLib/components/site.py | 37 +++++++++++++++++++-------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 4504dad4..277078ff 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -3,14 +3,14 @@ # © 2022 Contributors to the easyCore project # +from __future__ import annotations + __author__ = "github.com/wardsimon" __version__ = "0.2.0" -from typing import List, Union, ClassVar, TypeVar, Optional +from typing import List, Union, ClassVar, TypeVar, Optional, TYPE_CHECKING -from easyCore import np -from easyCore.Objects.Base import Descriptor, Parameter, BaseObj -from easyCore.Objects.Groups import BaseCollection +from easyCore.Objects.Base import Descriptor, Parameter from easyCore.Utils.io.star import StarLoop from easyCrystallography.Components.Site import ( @@ -22,6 +22,7 @@ from easyCrystallography.Components.Lattice import PeriodicLattice from easyCrystallography.Components.Specie import Specie from easyCrystallography.Components.AtomicDisplacement import AtomicDisplacement +from easyCrystallography.Components.Susceptibility import MagneticSusceptibility class Site(ecSite): @@ -37,6 +38,25 @@ def __init__( interface: Optional = None, **kwargs, ): + + if "msp" in kwargs.keys(): + msp = kwargs.pop("msp") + if isinstance(msp, str): + msp = MagneticSusceptibility(msp) + for parameter in msp.get_parameters: + if parameter.name in kwargs.keys(): + new_option = kwargs.pop(parameter.name) + parameter.value = new_option + kwargs["msp"] = msp + + if adp is not None: + if isinstance(adp, str): + adp = AtomicDisplacement(adp) + for parameter in adp.get_parameters(): + if parameter.name in kwargs.keys(): + new_option = kwargs.pop(parameter.name) + parameter.value = new_option + super(Site, self).__init__( label=label, specie=specie, @@ -44,15 +64,10 @@ def __init__( fract_x=fract_x, fract_y=fract_y, fract_z=fract_z, - adp=AtomicDisplacement.default(), + adp=adp, + **kwargs, ) self.interface = interface - if adp is not None: - if isinstance(adp, str): - adp = AtomicDisplacement.from_pars( - adp, interface=self.interface, **kwargs - ) - self.adp = adp class PeriodicSite(ecPeriodicSite): From b7564b3afac275e9f17f1842e134f7c219b7e6f5 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 30 Mar 2022 17:09:53 +0200 Subject: [PATCH 269/312] Add Magnetic Susceptibility to calculator and cryspy interfaces --- easyDiffractionLib/Interfaces/cryspy.py | 13 +++++++ easyDiffractionLib/Interfaces/cryspyV2.py | 15 ++++++++ easyDiffractionLib/calculators/cryspy.py | 43 ++++++++++++++++------- 3 files changed, 59 insertions(+), 12 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 06e65ec6..fd7d457f 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -203,6 +203,19 @@ def create(self, model): lambda x, **y: self.calculator.genericUpdate(a_key, **y), ) ) + if hasattr(model, "msp"): + msp_type = model.msp.msp_type.raw_value + pars = model.get_parameters() + msp_pars = {par.name: par.raw_value for par in pars} + ref_name = self.calculator.attachMSP(model_key, msp_type, msp_pars) + r_list.append( + ItemContainer( + ref_name, + {par.name: par.name for par in pars}, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) elif issubclass(t_, Phase): ident = str(model_key) + "_phase" self.calculator.createPhase(ident) diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 5776a7d9..2aaba86c 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -430,6 +430,7 @@ def create(self, model: Model, master: bool = False) -> List[ItemContainer]: r_list = [] t_ = type(model) + model_key = self._identify(model) # Link the Polarization parameters to the calculator. if issubclass(t_, PolarizedBeam): @@ -442,6 +443,20 @@ def create(self, model: Model, master: bool = False) -> List[ItemContainer]: self.calculator.genericUpdate, ) ) + # We have already created a Site in cryspy, now add the MSP + elif issubclass(t_, Site) or issubclass(t_, Site_base): + msp_type = model.msp.msp_type.raw_value + pars = model.get_parameters() + msp_pars = {par.name: par.raw_value for par in pars} + ref_name = self.calculator.attachMSP(model_key, msp_type, msp_pars) + r_list.append( + ItemContainer( + ref_name, + {par.name: par.name for par in pars}, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) return r_list @staticmethod diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index ab633c7b..d29a01f0 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -2,7 +2,7 @@ __version__ = "0.0.3" import time -from typing import Tuple, Optional, Any, Callable, List +from typing import Tuple, Optional, Any, Callable, List, Dict import cryspy import warnings @@ -71,7 +71,7 @@ def createModel(self, model_id: str, model_type: str = "powder1DCW"): self.type = model_type self.model = cls(**model) - def createPhase(self, crystal_name: str, key: str ="phase") -> str: + def createPhase(self, crystal_name: str, key: str = "phase") -> str: phase = cryspy.Phase(label=crystal_name, scale=1, igsize=0) self.storage[key] = phase return key @@ -89,11 +89,11 @@ def removePhase(self, model_name: str, phase_name: str): if name in self.additional_data["phases"].keys(): del self.additional_data["phases"][name] - def setPhaseScale(self, model_name: str, scale: float = 1.): + def setPhaseScale(self, model_name: str, scale: float = 1.0): self.storage[str(model_name) + "_scale"] = scale def getPhaseScale(self, model_name: str, *args, **kwargs) -> float: - return self.storage.get(str(model_name) + "_scale", 1.) + return self.storage.get(str(model_name) + "_scale", 1.0) def createCrystal_fromCifStr(self, cif_str: str) -> str: crystal = cryspy.Crystal.from_cif(cif_str) @@ -122,7 +122,9 @@ def assignCell_toCrystal(self, cell_name: str, crystal_name: str): cell = self.storage[cell_name] crystal.cell = cell - def createSpaceGroup(self, key: str = "spacegroup", name_hm_alt: str = "P 1") -> str: + def createSpaceGroup( + self, key: str = "spacegroup", name_hm_alt: str = "P 1" + ) -> str: sg_split = name_hm_alt.split(":") opts = {"name_hm_alt": sg_split[0]} # if len(sg_split) > 1: @@ -171,6 +173,15 @@ def createAtom(self, atom_name: str, **kwargs) -> str: self.storage[atom_name] = atom return atom_name + def attachMSP(self, atom_name: str, msp_name: str, msp_args: Dict[str, float]): + atom = self.storage[atom_name] + msp = cryspy.AtomSiteSusceptibility(chi_type=msp_name, **msp_args) + ref_name = str(atom_name) + "_" + msp_name + self.storage[ref_name] = msp + # TODO: I do not know if this is the right way to do this + setattr(atom, "susceptibility", msp) + return ref_name + def assignAtom_toCrystal(self, atom_label: str, crystal_name: str): crystal = self.storage[crystal_name] atom = self.storage[atom_label] @@ -196,7 +207,7 @@ def createBackground(self, background_obj) -> str: self.storage[key] = background_obj return key - def createSetup(self, key: str = "setup", cls_type: Optional[str] =None): + def createSetup(self, key: str = "setup", cls_type: Optional[str] = None): if cls_type is None: cls_type = self.type @@ -229,7 +240,7 @@ def genericReturn(self, item_key: str, value_key: str) -> Any: value = getattr(item, value_key) return value - def createPolarization(self, key: str = 'pol_beam') -> str: + def createPolarization(self, key: str = "pol_beam") -> str: item = cryspy.DiffrnRadiation() self.storage[key] = item return key @@ -258,7 +269,9 @@ def updateResolution(self, key: str, **kwargs): for r_key in kwargs.keys(): setattr(resolution, r_key, kwargs[key]) - def powder_1d_calculate(self, x_array: np.ndarray, pol_fn: Optional[Callable] = None) -> np.ndarray: + def powder_1d_calculate( + self, x_array: np.ndarray, pol_fn: Optional[Callable] = None + ) -> np.ndarray: """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated @@ -322,7 +335,9 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray, pol_fn) -> np.ndarray: print("CALLING FROM Cryspy\n----------------------") return self.do_calc_setup(scale, this_x_array, pol_fn) - def do_calc_setup(self, scale: float, this_x_array: np.ndarray, pol_fn: Callable) -> np.ndarray: + def do_calc_setup( + self, scale: float, this_x_array: np.ndarray, pol_fn: Callable + ) -> np.ndarray: if len(self.pattern.backgrounds) == 0: bg = np.zeros_like(this_x_array) else: @@ -407,7 +422,9 @@ def do_calc_setup(self, scale: float, this_x_array: np.ndarray, pol_fn: Callable ) # return returned_deps - def calculate(self, x_array: np.ndarray, pol_fn: Optional[Callable] = None) -> np.ndarray: + def calculate( + self, x_array: np.ndarray, pol_fn: Optional[Callable] = None + ) -> np.ndarray: """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated @@ -454,7 +471,9 @@ def get_total_y_for_phases(self) -> Tuple[np.ndarray, np.ndarray]: ) return x_values, y_values - def get_hkl(self, idx: int = 0, phase_name: Optional[str] = None, encoded_name: bool = False) -> dict: + def get_hkl( + self, idx: int = 0, phase_name: Optional[str] = None, encoded_name: bool = False + ) -> dict: # Collate and return if phase_name is not None: if encoded_name: @@ -466,7 +485,7 @@ def get_hkl(self, idx: int = 0, phase_name: Optional[str] = None, encoded_name: phase_name = known_phases[idx] else: phase_name = list(self.current_crystal.values())[idx] - return self.additional_data['phases'][phase_name]['hkl'] + return self.additional_data["phases"][phase_name]["hkl"] @staticmethod def nonPolarized_update(crystals, profiles, peak_dat, scales, x_str): From 74fd2c5af0430a795d5e9609567400b7976d59de Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Thu, 31 Mar 2022 09:42:39 +0200 Subject: [PATCH 270/312] added polarized structure/experiment files --- examples/experiment_polarized.xye | 388 ++++++++++++++++++++++++++++++ examples/structure_polarized.cif | 50 ++++ 2 files changed, 438 insertions(+) create mode 100644 examples/experiment_polarized.xye create mode 100644 examples/structure_polarized.cif diff --git a/examples/experiment_polarized.xye b/examples/experiment_polarized.xye new file mode 100644 index 00000000..bc668d07 --- /dev/null +++ b/examples/experiment_polarized.xye @@ -0,0 +1,388 @@ +4.6 626.97 93.64 413.31 90.64 +4.8 708.72 91.83 749.57 92.55 +5.0 718.07 89.38 575.64 87.29 +5.2 679.62 86.86 595.28 85.63 +5.4 683.03 84.66 580.64 83.17 +5.6 727.63 83.54 705.12 83.16 +5.8 709.16 83.16 653.77 82.39 +6.0 765.5 81.54 654.01 79.82 +6.2 813.4 80.76 865.23 81.57 +6.4 613.4 78.81 727.05 80.57 +6.6 530.91 76.38 458.89 75.37 +6.8 892.05 79.61 610.54 75.48 +7.0 932.68 79.59 733.16 76.68 +7.2 1611.08 89.13 863.58 79.1 +7.4 3505.62 109.22 1711.89 88.84 +7.6 5658.21 131.62 2033.16 95.3 +7.8 5454.61 124.07 2091.49 91.29 +8.0 3593.33 88.07 1460.03 68.68 +8.2 1720.63 70.73 906.5 61.95 +8.4 974.33 61.94 877.03 60.86 +8.6 1670.12 68.42 1546.15 67.16 +8.8 2380.65 76.38 2531.38 77.76 +9.0 2816.17 80.7 2649.69 79.25 +9.2 2271.4 72.72 2171.75 71.75 +9.4 1246.23 62.53 1157.09 61.57 +9.6 674.62 56.73 593.59 55.76 +9.8 690.47 55.49 574.28 54.09 +10.0 650.11 54.77 447.35 52.21 +10.2 497.37 53.33 447.73 52.69 +10.4 549.61 52.2 475.87 51.27 +10.6 619.58 53.45 436.48 51.27 +10.8 631.83 52.53 653.12 52.77 +11.0 459.72 51.33 493.73 51.79 +11.2 439.19 51.03 571.14 52.61 +11.4 455.23 51.0 406.06 50.45 +11.6 538.38 50.19 536.0 50.17 +11.8 573.93 46.73 579.49 46.81 +12.0 502.59 37.94 624.97 39.05 +12.2 382.09 37.94 483.5 38.88 +12.4 548.98 38.74 632.66 39.48 +12.6 759.49 40.63 910.88 41.91 +12.8 938.97 42.75 1051.91 43.68 +13.0 966.57 41.93 1127.24 43.23 +13.2 883.26 40.74 887.27 40.78 +13.4 599.7 38.5 592.61 38.42 +13.6 501.64 37.63 467.09 37.31 +13.8 406.53 37.28 396.74 37.19 +14.0 443.33 36.77 448.14 36.81 +14.2 397.42 36.61 482.8 37.39 +14.4 574.92 37.05 536.58 36.71 +14.6 672.48 38.06 514.49 36.69 +14.8 1218.7 42.36 956.73 40.3 +15.0 2038.32 48.33 1581.72 45.19 +15.2 2473.27 51.42 1823.2 47.18 +15.4 2408.49 51.36 1607.34 46.02 +15.6 1924.68 47.46 1161.06 42.19 +15.8 1843.13 46.2 916.4 39.55 +16.0 1535.92 40.56 739.87 35.15 +16.2 1223.09 38.0 704.68 34.3 +16.4 781.62 34.78 576.06 33.25 +16.6 619.03 33.13 497.22 32.16 +16.8 505.57 31.83 598.13 32.55 +17.0 513.34 31.68 462.2 31.27 +17.2 489.86 31.63 426.67 31.16 +17.4 451.39 31.36 501.7 31.76 +17.6 508.04 31.77 475.44 31.52 +17.8 581.81 32.38 541.25 32.05 +18.0 562.86 32.51 906.08 34.98 +18.2 766.89 33.35 1573.5 38.62 +18.4 817.74 33.59 2054.02 41.36 +18.6 796.7 33.16 1995.08 40.81 +18.8 750.51 32.89 1463.24 37.67 +19.0 484.9 31.53 800.24 33.81 +19.2 612.94 32.68 679.12 33.16 +19.4 781.23 34.38 676.61 33.67 +19.6 1289.18 38.78 876.5 36.32 +19.8 2615.92 46.49 1533.95 40.91 +20.0 4003.54 51.29 2123.31 42.79 +20.2 4419.98 50.0 2327.75 41.09 +20.4 3733.59 46.73 1967.75 38.7 +20.6 2353.72 39.82 1378.38 34.74 +20.8 1232.64 32.87 838.03 30.55 +21.0 766.54 29.84 696.61 29.41 +21.2 641.73 28.8 530.86 28.07 +21.4 527.51 27.72 561.44 27.95 +21.6 530.99 28.18 446.06 27.62 +21.8 490.1 28.25 494.58 28.27 +22.0 514.55 29.3 500.51 29.22 +22.2 533.06 32.35 467.21 31.99 +22.4 648.52 35.82 582.96 35.5 +22.6 917.85 38.65 732.61 37.78 +22.8 1039.3 39.21 799.88 38.09 +23.0 939.74 37.64 802.83 36.98 +23.2 699.73 35.78 518.17 34.86 +23.4 775.6 35.29 659.02 34.71 +23.6 928.82 36.02 793.95 35.33 +23.8 1633.96 37.75 1023.04 34.74 +24.0 2188.94 38.83 1296.8 34.47 +24.2 2444.96 38.05 1446.82 33.24 +24.4 2116.27 32.38 1214.12 28.23 +24.6 1543.45 29.04 942.93 26.11 +24.8 977.04 26.34 667.36 24.66 +25.0 628.41 24.67 492.07 23.89 +25.2 487.43 24.15 480.94 24.11 +25.4 497.39 24.17 447.33 23.88 +25.6 647.35 25.27 465.6 24.25 +25.8 1052.79 27.22 625.33 24.98 +26.0 1649.1 29.87 849.44 25.96 +26.2 2207.57 32.63 1046.96 27.24 +26.4 2333.0 32.98 1095.76 27.27 +26.6 2142.82 32.02 1004.78 26.64 +26.8 1673.56 29.65 836.33 25.43 +27.0 1322.86 27.92 765.03 24.99 +27.2 1287.82 27.03 830.93 24.66 +27.4 1472.66 28.48 1048.04 26.34 +27.6 1567.65 29.09 1103.57 26.79 +27.8 1574.07 29.08 1100.41 26.74 +28.0 1399.46 27.96 1031.16 26.08 +28.2 1030.61 26.35 743.96 24.8 +28.4 758.88 24.54 606.56 23.69 +28.6 628.06 23.52 556.65 23.12 +28.8 445.17 21.95 382.78 21.6 +29.0 449.58 21.93 467.35 22.03 +29.2 503.8 22.35 448.32 22.03 +29.4 509.06 22.33 546.19 22.53 +29.6 497.25 22.31 507.6 22.37 +29.8 490.91 21.67 560.91 22.05 +30.0 462.58 22.04 470.28 22.09 +30.2 561.88 22.53 470.89 22.02 +30.4 611.56 22.93 457.03 22.07 +30.6 801.05 24.01 517.54 22.48 +30.8 996.87 24.87 583.47 22.7 +31.0 1032.46 24.83 530.61 22.22 +31.2 964.6 24.52 545.47 22.32 +31.4 813.86 24.21 450.4 22.26 +31.6 686.45 23.58 412.7 22.08 +31.8 549.7 22.98 454.26 22.45 +32.0 422.51 22.74 341.25 22.29 +32.2 395.75 22.67 454.49 22.99 +32.4 505.26 22.81 514.08 22.85 +32.6 592.33 23.73 597.95 23.76 +32.8 578.01 23.9 627.39 24.15 +33.0 690.8 24.41 637.12 24.14 +33.2 904.55 24.59 776.17 23.95 +33.4 963.1 24.19 867.92 23.74 +33.6 1014.36 24.24 828.51 23.38 +33.8 1026.12 24.2 829.64 23.28 +34.0 835.89 23.52 712.27 22.92 +34.2 763.65 22.83 579.33 21.9 +34.4 633.36 21.85 547.65 21.4 +34.6 522.38 21.3 495.49 21.16 +34.8 468.79 20.78 426.16 20.56 +35.0 516.68 21.05 450.68 20.7 +35.2 517.87 21.25 468.35 20.99 +35.4 564.38 21.54 497.42 21.18 +35.6 659.37 21.96 554.5 21.41 +35.8 739.31 22.34 640.63 21.83 +36.0 780.55 22.82 714.19 22.49 +36.2 813.37 22.41 736.49 22.03 +36.4 824.91 22.94 682.31 22.22 +36.6 699.62 22.55 579.61 21.93 +36.8 648.17 22.53 553.46 22.05 +37.0 618.88 22.13 477.1 21.39 +37.2 616.44 22.19 463.55 21.39 +37.4 606.81 22.1 436.42 21.22 +37.6 760.71 22.67 510.51 21.4 +37.8 823.09 23.34 539.36 21.91 +38.0 1037.79 24.07 670.68 22.32 +38.2 1246.18 23.53 772.13 21.5 +38.4 1453.93 24.36 901.2 22.05 +38.6 1511.67 24.69 929.03 22.29 +38.8 1552.58 24.28 959.34 21.89 +39.0 1442.43 24.36 875.0 22.0 +39.2 1255.67 23.54 811.69 21.64 +39.4 1091.87 23.01 718.89 21.39 +39.6 994.66 22.68 794.16 21.81 +39.8 951.74 22.64 758.71 21.8 +40.0 965.42 22.32 805.74 21.64 +40.2 1014.54 22.55 825.05 21.74 +40.4 1103.25 23.07 834.5 21.91 +40.6 1184.43 23.15 847.84 21.69 +40.8 1163.32 23.0 841.6 21.6 +41.0 1189.78 22.82 840.43 21.29 +41.2 1103.75 22.47 744.38 20.87 +41.4 987.65 21.68 651.18 20.18 +41.6 895.73 21.68 550.27 20.08 +41.8 770.71 21.06 536.03 19.96 +42.0 739.94 20.69 566.98 19.86 +42.2 611.68 20.21 497.18 19.66 +42.4 579.35 20.14 496.71 19.75 +42.6 674.59 20.47 612.71 20.18 +42.8 799.77 21.0 660.72 20.36 +43.0 918.99 21.8 759.38 21.07 +43.2 970.8 21.71 813.78 21.02 +43.4 989.3 21.27 775.88 20.34 +43.6 935.56 21.05 741.83 20.21 +43.8 858.98 20.78 653.32 19.86 +44.0 747.31 19.91 644.53 19.46 +44.2 612.06 19.8 536.06 19.45 +44.4 593.74 19.54 552.9 19.36 +44.6 530.94 19.27 489.24 19.07 +44.8 528.63 19.13 500.05 19.0 +45.0 469.52 19.06 430.64 18.87 +45.2 534.29 19.03 473.4 18.74 +45.4 525.74 19.05 434.18 18.61 +45.6 550.94 19.36 430.33 18.78 +45.8 506.21 19.46 369.13 18.8 +46.0 552.6 19.45 408.85 18.76 +46.2 553.46 19.66 382.02 18.84 +46.4 687.62 19.99 445.8 18.86 +46.6 788.41 20.57 527.19 19.39 +46.8 865.62 21.07 582.79 19.8 +47.0 989.21 21.73 621.68 20.12 +47.2 1036.96 21.86 704.48 20.41 +47.4 1098.85 22.19 779.26 20.82 +47.6 1102.77 22.26 749.03 20.76 +47.8 1075.87 21.73 806.1 20.6 +48.0 1080.76 22.09 777.22 20.78 +48.2 966.23 21.67 775.51 20.84 +48.4 931.75 21.65 720.35 20.71 +48.6 951.5 21.58 724.42 20.58 +48.8 1002.48 21.72 756.01 20.64 +49.0 1031.25 20.95 788.1 19.94 +49.2 1069.0 21.06 796.87 19.93 +49.4 1083.97 21.42 778.77 20.16 +49.6 1064.51 21.38 774.61 20.16 +49.8 974.36 21.06 687.69 19.84 +50.0 951.34 20.77 694.11 19.66 +50.2 804.2 20.45 559.25 19.39 +50.4 714.32 19.84 494.37 18.89 +50.6 623.51 19.99 430.84 19.13 +50.8 586.16 19.9 364.58 18.88 +51.0 543.88 19.66 424.13 19.12 +51.2 488.87 19.43 342.94 18.76 +51.4 447.83 19.32 354.02 18.9 +51.6 513.26 19.42 340.74 18.63 +51.8 460.48 19.29 365.78 18.86 +52.0 478.07 19.69 385.82 19.27 +52.2 469.2 19.64 416.23 19.4 +52.4 457.61 19.69 420.67 19.53 +52.6 436.64 19.66 387.2 19.42 +52.8 469.28 19.9 363.95 19.42 +53.0 454.48 19.45 393.31 19.17 +53.2 433.11 19.83 384.81 19.61 +53.4 452.99 19.92 393.66 19.66 +53.6 460.91 20.11 385.75 19.77 +53.8 479.42 20.05 372.58 19.56 +54.0 514.08 20.17 406.62 19.69 +54.2 520.71 20.18 373.26 19.53 +54.4 556.73 20.36 444.45 19.87 +54.6 640.13 20.93 460.57 20.15 +54.8 772.45 21.23 619.57 20.56 +55.0 745.57 21.06 596.61 20.42 +55.2 827.09 21.06 654.5 20.32 +55.4 863.2 19.97 682.19 19.24 +55.6 816.19 19.45 712.54 19.04 +55.8 802.26 19.82 725.82 19.5 +56.0 762.03 19.72 668.88 19.34 +56.2 748.92 19.44 690.69 19.19 +56.4 764.06 19.41 674.79 19.05 +56.6 673.13 19.15 624.78 18.95 +56.8 658.88 18.93 591.05 18.65 +57.0 656.83 18.95 574.08 18.59 +57.2 647.48 19.0 549.5 18.58 +57.4 632.71 19.01 532.24 18.58 +57.6 579.93 18.76 485.92 18.35 +57.8 559.33 18.67 495.27 18.41 +58.0 578.68 18.69 409.25 17.96 +58.2 584.81 18.83 417.08 18.11 +58.4 575.37 19.05 432.76 18.46 +58.6 603.54 19.11 447.21 18.45 +58.8 640.61 19.32 474.09 18.6 +59.0 684.9 19.35 529.04 18.68 +59.2 710.68 19.57 544.5 18.87 +59.4 787.38 19.55 615.82 18.84 +59.6 809.81 20.02 642.48 19.34 +59.8 823.77 19.97 695.08 19.44 +60.0 826.28 20.05 698.82 19.54 +60.2 838.05 20.14 678.24 19.49 +60.4 754.59 19.7 635.75 19.21 +60.6 714.59 19.58 604.37 19.14 +60.8 688.71 19.42 583.78 19.01 +61.0 696.51 19.61 582.59 19.13 +61.2 675.24 19.53 569.0 19.08 +61.4 613.01 19.43 457.24 18.76 +61.6 637.1 19.31 470.77 18.6 +61.8 544.48 19.14 396.37 18.5 +62.0 516.27 18.73 352.58 18.03 +62.2 455.27 18.93 362.03 18.51 +62.4 474.72 19.0 379.43 18.6 +62.6 456.16 18.89 383.13 18.55 +62.8 466.05 18.86 356.88 18.37 +63.0 456.94 18.38 326.35 17.84 +63.2 440.41 18.02 354.34 17.65 +63.4 512.77 18.29 418.84 17.88 +63.6 488.59 18.45 414.36 18.14 +63.8 548.22 18.59 454.19 18.17 +64.0 630.73 18.73 492.07 18.14 +64.2 605.66 18.78 437.66 18.07 +64.4 659.66 18.98 516.44 18.38 +64.6 782.99 19.1 592.39 18.33 +64.8 839.92 19.7 625.32 18.81 +65.0 919.4 19.95 696.39 19.04 +65.2 924.99 20.01 707.15 19.14 +65.4 1017.5 20.21 801.94 19.36 +65.6 1000.25 20.27 785.1 19.42 +65.8 1035.91 20.12 838.97 19.36 +66.0 1062.77 20.26 814.77 19.29 +66.2 1023.34 20.31 820.36 19.51 +66.4 950.9 20.05 786.3 19.38 +66.6 901.83 19.85 723.91 19.11 +66.8 858.09 19.68 703.26 19.04 +67.0 788.71 19.33 663.21 18.81 +67.2 818.61 19.15 622.0 18.35 +67.4 731.56 19.16 609.02 18.65 +67.6 699.64 19.07 587.8 18.58 +67.8 615.29 18.76 508.89 18.3 +68.0 584.64 18.69 450.59 18.11 +68.2 610.66 18.77 481.61 18.19 +68.4 515.66 18.57 438.07 18.22 +68.6 566.21 18.84 513.38 18.61 +68.8 557.98 19.09 489.74 18.8 +69.0 590.37 19.1 496.35 18.68 +69.2 602.21 19.1 494.58 18.61 +69.4 610.71 19.04 558.7 18.8 +69.6 631.87 19.24 495.94 18.65 +69.8 614.17 19.33 526.89 18.93 +70.0 591.01 19.73 555.2 19.57 +70.2 682.02 19.9 570.09 19.41 +70.4 671.82 19.93 558.63 19.42 +70.6 620.64 19.65 564.74 19.4 +70.8 672.9 19.91 521.03 19.23 +71.0 623.43 19.82 521.46 19.37 +71.2 650.8 20.39 527.79 19.83 +71.4 656.9 20.31 562.97 19.88 +71.6 610.22 20.36 494.24 19.83 +71.8 570.86 20.2 472.73 19.73 +72.0 576.21 20.21 466.77 19.7 +72.2 611.69 20.39 520.16 19.97 +72.4 659.55 20.73 527.62 20.12 +72.6 614.16 20.83 557.11 20.54 +72.8 639.04 21.14 550.08 20.71 +73.0 596.43 20.82 572.05 20.7 +73.2 557.56 20.74 532.2 20.61 +73.4 562.18 20.65 539.59 20.54 +73.6 614.91 20.34 573.38 20.15 +73.8 648.89 20.81 601.64 20.6 +74.0 644.83 20.9 598.98 20.67 +74.2 647.35 20.85 604.49 20.66 +74.4 625.47 20.75 583.45 20.56 +74.6 659.67 20.98 571.6 20.56 +74.8 598.98 20.63 555.6 20.43 +75.0 649.05 21.1 590.07 20.82 +75.2 720.45 21.57 600.83 21.01 +75.4 704.04 21.52 644.58 21.24 +75.6 639.5 21.38 591.09 21.14 +75.8 681.64 21.39 628.85 21.15 +76.0 717.42 21.59 602.84 21.04 +76.2 691.49 21.53 616.86 21.16 +76.4 666.95 21.93 634.47 21.77 +76.6 670.42 22.02 540.49 21.38 +76.8 627.38 21.94 483.2 21.22 +77.0 554.07 21.69 521.92 21.53 +77.2 578.27 21.76 535.31 21.53 +77.4 603.68 21.85 443.49 21.07 +77.6 612.98 22.41 433.23 21.49 +77.8 636.95 22.6 496.25 21.89 +78.0 602.01 22.52 449.83 21.72 +78.2 605.13 22.55 514.09 22.08 +78.4 618.76 22.5 485.65 21.8 +78.6 583.18 22.41 487.78 21.93 +78.8 586.35 22.52 510.53 22.15 +79.0 633.06 23.39 538.35 22.92 +79.2 668.07 23.68 592.58 23.3 +79.4 673.48 23.59 539.33 22.89 +79.6 620.36 23.39 568.03 23.12 +79.8 697.11 23.49 609.58 23.03 +80.0 696.35 23.69 559.43 23.0 +80.2 673.4 23.99 578.5 23.48 +80.4 715.34 24.45 631.24 24.0 +80.6 625.41 23.98 627.0 23.99 +80.8 659.25 24.3 600.44 24.0 +81.0 617.92 24.1 526.94 23.63 +81.2 643.9 24.21 551.74 23.72 +81.4 610.43 24.05 570.73 23.84 +81.6 687.21 25.11 535.41 24.27 +81.8 604.92 24.92 559.32 24.65 +82.0 589.97 24.97 499.26 24.46 diff --git a/examples/structure_polarized.cif b/examples/structure_polarized.cif new file mode 100644 index 00000000..57a091f2 --- /dev/null +++ b/examples/structure_polarized.cif @@ -0,0 +1,50 @@ +data_phase1 + +_space_group_name_H-M_ref "F d -3 m" +_space_group_IT_coordinate_system_code 2 + +_cell_length_a 10.26355 +_cell_length_b 10.26355 +_cell_length_c 10.26355 +_cell_angle_alpha 90.00 +_cell_angle_beta 90.00 +_cell_angle_gamma 90.00 + + +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +_atom_site_occupancy +_atom_site_adp_type +_atom_site_u_iso_or_equiv +_atom_site_multiplicity +Ho1 Ho3+ 0.500000 0.500000 0.500000 1.0 Uiso 0.0 16 +Ti1 Ti3+ 0.000000 0.000000 0.000000 1.0 Uiso 0.0 16 +O1 O2- 0.329600 0.125000 0.125000 1.0 Uiso 0.0 48 +O2 O2- 0.375000 0.375000 0.375000 1.0 Uiso 0.0 8 + +loop_ +_atom_site_scat_label +_atom_site_scat_Lande +_atom_site_scat_kappa +Ho1 2.0 1.0 + +loop_ +_atom_site_susceptibility_label +_atom_site_susceptibility_chi_type +_atom_site_susceptibility_chi_11 +_atom_site_susceptibility_chi_22 +_atom_site_susceptibility_chi_33 +_atom_site_susceptibility_chi_12 +_atom_site_susceptibility_chi_13 +_atom_site_susceptibility_chi_23 +Ho1 Cani 3.281(18) 3.28100 3.28100 3.712(16) 3.71200 3.71200 + +loop_ +_phase_label +_phase_scale +_phase_igsize +phase1 0.024678(78) 0.0 From 35fd5faf327f6b35d38a01c53b719cdf9d933a56 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Thu, 31 Mar 2022 14:38:17 +0200 Subject: [PATCH 271/312] Update to use correct modules --- easyDiffractionLib/components/site.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 277078ff..38ac2ed3 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -8,9 +8,10 @@ __author__ = "github.com/wardsimon" __version__ = "0.2.0" +from easyCore import np +from easyCore.Objects.ObjectClasses import Descriptor, Parameter, BaseObj +from easyCore.Objects.Groups import BaseCollection from typing import List, Union, ClassVar, TypeVar, Optional, TYPE_CHECKING - -from easyCore.Objects.Base import Descriptor, Parameter from easyCore.Utils.io.star import StarLoop from easyCrystallography.Components.Site import ( From 80a0e668776490482e8dc192d4db457dab2e64e4 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Thu, 31 Mar 2022 16:39:52 +0200 Subject: [PATCH 272/312] Update imports --- easyDiffractionLib/Profiles/P1D.py | 2 +- easyDiffractionLib/Profiles/common.py | 2 +- .../elements/Backgrounds/Background.py | 2 +- .../elements/Backgrounds/Factorial.py | 2 +- .../elements/Backgrounds/Point.py | 2 +- .../elements/Experiments/Experiment.py | 2 +- .../elements/Experiments/Pattern.py | 2 +- easyDiffractionLib/sample.py | 2 +- examples/Fitting.ipynb | 405 +----------------- test.py | 45 ++ test2.py | 11 + test3.py | 8 + 12 files changed, 85 insertions(+), 400 deletions(-) create mode 100644 test.py create mode 100644 test2.py create mode 100644 test3.py diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index f2fbe59b..b119085e 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -5,7 +5,7 @@ from typing import TypeVar, List from easyCore.Datasets.xarray import xr -from easyCore.Objects.Base import BaseObj, Parameter +from easyCore.Objects.ObjectClasses import BaseObj, Parameter from easyCore.Utils.json import MontyDecoder from easyDiffractionLib.Profiles.common import JobSetup, _DataClassBase from easyDiffractionLib.components.polarization import PolarizedBeam diff --git a/easyDiffractionLib/Profiles/common.py b/easyDiffractionLib/Profiles/common.py index 9d34ae80..d600ca9c 100644 --- a/easyDiffractionLib/Profiles/common.py +++ b/easyDiffractionLib/Profiles/common.py @@ -6,7 +6,7 @@ from typing import Union, TypeVar from easyCore.Utils.UndoRedo import property_stack_deco -from easyCore.Objects.Base import BaseObj +from easyCore.Objects.ObjectClasses import BaseObj from easyDiffractionLib import Phases, Phase from easyCore.Datasets.xarray import xr diff --git a/easyDiffractionLib/elements/Backgrounds/Background.py b/easyDiffractionLib/elements/Backgrounds/Background.py index f39dae00..09ae180e 100644 --- a/easyDiffractionLib/elements/Backgrounds/Background.py +++ b/easyDiffractionLib/elements/Backgrounds/Background.py @@ -5,7 +5,7 @@ from typing import Union, List from easyCore import np -from easyCore.Objects.Base import Descriptor +from easyCore.Objects.Variable import Descriptor from easyCore.Objects.Groups import BaseCollection diff --git a/easyDiffractionLib/elements/Backgrounds/Factorial.py b/easyDiffractionLib/elements/Backgrounds/Factorial.py index d080f3c9..83885571 100644 --- a/easyDiffractionLib/elements/Backgrounds/Factorial.py +++ b/easyDiffractionLib/elements/Backgrounds/Factorial.py @@ -6,7 +6,7 @@ from easyCore import np from easyCore.Objects.Groups import BaseCollection -from easyCore.Objects.Base import Parameter, Descriptor, BaseObj +from easyCore.Objects.ObjectClasses import Parameter, Descriptor, BaseObj class BackgroundFactor(BaseObj): diff --git a/easyDiffractionLib/elements/Backgrounds/Point.py b/easyDiffractionLib/elements/Backgrounds/Point.py index 05f177ed..793d97b0 100644 --- a/easyDiffractionLib/elements/Backgrounds/Point.py +++ b/easyDiffractionLib/elements/Backgrounds/Point.py @@ -6,7 +6,7 @@ from easyCore import np from easyCore.Objects.Groups import BaseCollection -from easyCore.Objects.Base import Parameter, Descriptor, BaseObj +from easyCore.Objects.ObjectClasses import Parameter, Descriptor, BaseObj class BackgroundPoint(BaseObj): diff --git a/easyDiffractionLib/elements/Experiments/Experiment.py b/easyDiffractionLib/elements/Experiments/Experiment.py index 8ca424d3..453ae3b0 100644 --- a/easyDiffractionLib/elements/Experiments/Experiment.py +++ b/easyDiffractionLib/elements/Experiments/Experiment.py @@ -1,7 +1,7 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -from easyCore.Objects.Base import BaseObj, Parameter +from easyCore.Objects.ObjectClasses import BaseObj, Parameter from copy import deepcopy from easyCore.Utils.json import MontyDecoder diff --git a/easyDiffractionLib/elements/Experiments/Pattern.py b/easyDiffractionLib/elements/Experiments/Pattern.py index 7c3ee81e..25192228 100644 --- a/easyDiffractionLib/elements/Experiments/Pattern.py +++ b/easyDiffractionLib/elements/Experiments/Pattern.py @@ -1,7 +1,7 @@ __author__ = 'github.com/wardsimon' __version__ = '0.0.1' -from easyCore.Objects.Base import BaseObj, Parameter +from easyCore.Objects.ObjectClasses import BaseObj, Parameter from copy import deepcopy from easyCore.Utils.json import MontyDecoder from easyDiffractionLib.elements.Backgrounds.Background import BackgroundContainer diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 4234a51f..295c3c9a 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -4,7 +4,7 @@ import os, tempfile from typing import Union, ClassVar -from easyCore.Objects.Base import BaseObj +from easyCore.Objects.ObjectClasses import BaseObj from easyCore.Utils.UndoRedo import property_stack_deco from easyDiffractionLib import Phase, Phases diff --git a/examples/Fitting.ipynb b/examples/Fitting.ipynb index 1c0547d6..bdc49dcf 100644 --- a/examples/Fitting.ipynb +++ b/examples/Fitting.ipynb @@ -23,18 +23,9 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GSAS-II binary directory: /Users/simonward/Library/Caches/pypoetry/virtualenvs/easydiffractionlib-aaz-ZByB-py3.7/lib/python3.7/site-packages/GSASII/bindist\n", - "ImportError for wx/mpl in GSASIIctrlGUI: ignore if docs build\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# esyScience, technique-independent\n", "from easyCore import np\n", @@ -56,328 +47,9 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "
\n", - " \n", - " Loading BokehJS ...\n", - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "\n", - "(function(root) {\n", - " function now() {\n", - " return new Date();\n", - " }\n", - "\n", - " var force = true;\n", - "\n", - " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", - " root._bokeh_onload_callbacks = [];\n", - " root._bokeh_is_loading = undefined;\n", - " }\n", - "\n", - " var JS_MIME_TYPE = 'application/javascript';\n", - " var HTML_MIME_TYPE = 'text/html';\n", - " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", - " var CLASS_NAME = 'output_bokeh rendered_html';\n", - "\n", - " /**\n", - " * Render data to the DOM node\n", - " */\n", - " function render(props, node) {\n", - " var script = document.createElement(\"script\");\n", - " node.appendChild(script);\n", - " }\n", - "\n", - " /**\n", - " * Handle when an output is cleared or removed\n", - " */\n", - " function handleClearOutput(event, handle) {\n", - " var cell = handle.cell;\n", - "\n", - " var id = cell.output_area._bokeh_element_id;\n", - " var server_id = cell.output_area._bokeh_server_id;\n", - " // Clean up Bokeh references\n", - " if (id != null && id in Bokeh.index) {\n", - " Bokeh.index[id].model.document.clear();\n", - " delete Bokeh.index[id];\n", - " }\n", - "\n", - " if (server_id !== undefined) {\n", - " // Clean up Bokeh references\n", - " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", - " cell.notebook.kernel.execute(cmd, {\n", - " iopub: {\n", - " output: function(msg) {\n", - " var id = msg.content.text.trim();\n", - " if (id in Bokeh.index) {\n", - " Bokeh.index[id].model.document.clear();\n", - " delete Bokeh.index[id];\n", - " }\n", - " }\n", - " }\n", - " });\n", - " // Destroy server and session\n", - " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", - " cell.notebook.kernel.execute(cmd);\n", - " }\n", - " }\n", - "\n", - " /**\n", - " * Handle when a new output is added\n", - " */\n", - " function handleAddOutput(event, handle) {\n", - " var output_area = handle.output_area;\n", - " var output = handle.output;\n", - "\n", - " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", - " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", - " return\n", - " }\n", - "\n", - " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", - "\n", - " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", - " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", - " // store reference to embed id on output_area\n", - " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", - " }\n", - " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", - " var bk_div = document.createElement(\"div\");\n", - " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", - " var script_attrs = bk_div.children[0].attributes;\n", - " for (var i = 0; i < script_attrs.length; i++) {\n", - " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", - " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", - " }\n", - " // store reference to server id on output_area\n", - " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", - " }\n", - " }\n", - "\n", - " function register_renderer(events, OutputArea) {\n", - "\n", - " function append_mime(data, metadata, element) {\n", - " // create a DOM node to render to\n", - " var toinsert = this.create_output_subarea(\n", - " metadata,\n", - " CLASS_NAME,\n", - " EXEC_MIME_TYPE\n", - " );\n", - " this.keyboard_manager.register_events(toinsert);\n", - " // Render to node\n", - " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", - " render(props, toinsert[toinsert.length - 1]);\n", - " element.append(toinsert);\n", - " return toinsert\n", - " }\n", - "\n", - " /* Handle when an output is cleared or removed */\n", - " events.on('clear_output.CodeCell', handleClearOutput);\n", - " events.on('delete.Cell', handleClearOutput);\n", - "\n", - " /* Handle when a new output is added */\n", - " events.on('output_added.OutputArea', handleAddOutput);\n", - "\n", - " /**\n", - " * Register the mime type and append_mime function with output_area\n", - " */\n", - " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", - " /* Is output safe? */\n", - " safe: true,\n", - " /* Index of renderer in `output_area.display_order` */\n", - " index: 0\n", - " });\n", - " }\n", - "\n", - " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", - " if (root.Jupyter !== undefined) {\n", - " var events = require('base/js/events');\n", - " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", - "\n", - " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", - " register_renderer(events, OutputArea);\n", - " }\n", - " }\n", - "\n", - " \n", - " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", - " root._bokeh_timeout = Date.now() + 5000;\n", - " root._bokeh_failed_load = false;\n", - " }\n", - "\n", - " var NB_LOAD_WARNING = {'data': {'text/html':\n", - " \"
\\n\"+\n", - " \"

\\n\"+\n", - " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", - " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", - " \"

\\n\"+\n", - " \"
    \\n\"+\n", - " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", - " \"
  • use INLINE resources instead, as so:
  • \\n\"+\n", - " \"
\\n\"+\n", - " \"\\n\"+\n", - " \"from bokeh.resources import INLINE\\n\"+\n", - " \"output_notebook(resources=INLINE)\\n\"+\n", - " \"\\n\"+\n", - " \"
\"}};\n", - "\n", - " function display_loaded() {\n", - " var el = document.getElementById(\"1002\");\n", - " if (el != null) {\n", - " el.textContent = \"BokehJS is loading...\";\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " if (el != null) {\n", - " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", - " }\n", - " } else if (Date.now() < root._bokeh_timeout) {\n", - " setTimeout(display_loaded, 100)\n", - " }\n", - " }\n", - "\n", - "\n", - " function run_callbacks() {\n", - " try {\n", - " root._bokeh_onload_callbacks.forEach(function(callback) {\n", - " if (callback != null)\n", - " callback();\n", - " });\n", - " } finally {\n", - " delete root._bokeh_onload_callbacks\n", - " }\n", - " console.debug(\"Bokeh: all callbacks have finished\");\n", - " }\n", - "\n", - " function load_libs(css_urls, js_urls, callback) {\n", - " if (css_urls == null) css_urls = [];\n", - " if (js_urls == null) js_urls = [];\n", - "\n", - " root._bokeh_onload_callbacks.push(callback);\n", - " if (root._bokeh_is_loading > 0) {\n", - " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", - " return null;\n", - " }\n", - " if (js_urls == null || js_urls.length === 0) {\n", - " run_callbacks();\n", - " return null;\n", - " }\n", - " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", - " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", - "\n", - " function on_load() {\n", - " root._bokeh_is_loading--;\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", - " run_callbacks()\n", - " }\n", - " }\n", - "\n", - " function on_error(url) {\n", - " console.error(\"failed to load \" + url);\n", - " }\n", - "\n", - " for (let i = 0; i < css_urls.length; i++) {\n", - " const url = css_urls[i];\n", - " const element = document.createElement(\"link\");\n", - " element.onload = on_load;\n", - " element.onerror = on_error.bind(null, url);\n", - " element.rel = \"stylesheet\";\n", - " element.type = \"text/css\";\n", - " element.href = url;\n", - " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.2.min.js\": \"XypntL49z55iwGVUW4qsEu83zKL3XEcz0MjuGOQ9SlaaQ68X/g+k1FcioZi7oQAc\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.2.min.js\": \"bEsM86IHGDTLCS0Zod8a8WM6Y4+lafAL/eSiyQcuPzinmWNgNO2/olUF0Z2Dkn5i\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.2.min.js\": \"TX0gSQTdXTTeScqxj6PVQxTiRW8DOoGVwinyi1D3kxv7wuxQ02XkOxv0xwiypcAH\"};\n", - "\n", - " for (let i = 0; i < js_urls.length; i++) {\n", - " const url = js_urls[i];\n", - " const element = document.createElement('script');\n", - " element.onload = on_load;\n", - " element.onerror = on_error.bind(null, url);\n", - " element.async = false;\n", - " element.src = url;\n", - " if (url in hashes) {\n", - " element.crossOrigin = \"anonymous\";\n", - " element.integrity = \"sha384-\" + hashes[url];\n", - " }\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.head.appendChild(element);\n", - " }\n", - " };\n", - "\n", - " function inject_raw_css(css) {\n", - " const element = document.createElement(\"style\");\n", - " element.appendChild(document.createTextNode(css));\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " \n", - " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.2.min.js\"];\n", - " var css_urls = [];\n", - " \n", - "\n", - " var inline_js = [\n", - " function(Bokeh) {\n", - " Bokeh.set_log_level(\"info\");\n", - " },\n", - " function(Bokeh) {\n", - " \n", - " \n", - " }\n", - " ];\n", - "\n", - " function run_inline_js() {\n", - " \n", - " if (root.Bokeh !== undefined || force === true) {\n", - " \n", - " for (var i = 0; i < inline_js.length; i++) {\n", - " inline_js[i].call(root, root.Bokeh);\n", - " }\n", - " if (force === true) {\n", - " display_loaded();\n", - " }} else if (Date.now() < root._bokeh_timeout) {\n", - " setTimeout(run_inline_js, 100);\n", - " } else if (!root._bokeh_failed_load) {\n", - " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", - " root._bokeh_failed_load = true;\n", - " } else if (force !== true) {\n", - " var cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n", - " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", - " }\n", - "\n", - " }\n", - "\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", - " run_inline_js();\n", - " } else {\n", - " load_libs(css_urls, js_urls, function() {\n", - " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", - " run_inline_js();\n", - " });\n", - " }\n", - "}(window));" - ], - "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.2.min.js\": \"XypntL49z55iwGVUW4qsEu83zKL3XEcz0MjuGOQ9SlaaQ68X/g+k1FcioZi7oQAc\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.2.min.js\": \"bEsM86IHGDTLCS0Zod8a8WM6Y4+lafAL/eSiyQcuPzinmWNgNO2/olUF0Z2Dkn5i\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.2.min.js\": \"TX0gSQTdXTTeScqxj6PVQxTiRW8DOoGVwinyi1D3kxv7wuxQ02XkOxv0xwiypcAH\"};\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n if (url in hashes) {\n element.crossOrigin = \"anonymous\";\n element.integrity = \"sha384-\" + hashes[url];\n }\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.3.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.3.2.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "output_notebook()\n", "FIGURE_WIDTH = 990\n", @@ -400,42 +72,9 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "data_PbSO4\n", - "\n", - "_space_group_name_H-M_alt 'P n m a'\n", - "\n", - "_cell_length_a 8.480\n", - "_cell_length_b 5.398\n", - "_cell_length_c 6.958\n", - "_cell_angle_alpha 90.0\n", - "_cell_angle_beta 90.0\n", - "_cell_angle_gamma 90.0\n", - "\n", - "loop_\n", - " _atom_site_label\n", - " _atom_site_type_symbol\n", - " _atom_site_fract_x\n", - " _atom_site_fract_y\n", - " _atom_site_fract_z\n", - " _atom_site_occupancy\n", - " _atom_site_adp_type\n", - " _atom_site_U_iso_or_equiv\n", - " Pb Pb 0.188 0.25 0.167 1.0 Uiso 0.01\n", - " S S 0.063 0.25 0.686 1.0 Uiso 0.01\n", - " O1 O -0.095 0.25 0.600 1.0 Uiso 0.01\n", - " O2 O 0.181 0.25 0.543 1.0 Uiso 0.01\n", - " O3 O 0.085 0.026 0.806 1.0 Uiso 0.01\n", - "\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "cif_fname = 'PbSO4.cif'\n", "\n", @@ -454,28 +93,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "__init__() got multiple values for argument 'label'", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mTypeError\u001B[0m Traceback (most recent call last)", - "\u001B[0;32m\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[0;32m----> 1\u001B[0;31m \u001B[0mphases\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mPhases\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mfrom_cif_file\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif_fname\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 2\u001B[0m \u001B[0mphase\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mphases\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m0\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 3\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 4\u001B[0m \u001B[0mprint\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mphases\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 5\u001B[0m \u001B[0mprint\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mphase\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/PycharmProjects/easyScience/easyCrystallography/easyCrystallography/Structures/Phase.py\u001B[0m in \u001B[0;36mfrom_cif_file\u001B[0;34m(cls, file_path)\u001B[0m\n\u001B[1;32m 374\u001B[0m \u001B[0;34m@\u001B[0m\u001B[0mclassmethod\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 375\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mfrom_cif_file\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcls\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mfile_path\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mPath\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 376\u001B[0;31m \u001B[0m_\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mcrystals\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcls\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_from_external\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcls\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mCifIO\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mfrom_file\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mfile_path\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 377\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0mcls\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m\"Phases\"\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0;34m*\u001B[0m\u001B[0mcrystals\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 378\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/PycharmProjects/easyScience/easyCrystallography/easyCrystallography/Structures/Phase.py\u001B[0m in \u001B[0;36m_from_external\u001B[0;34m(cls, constructor, *args)\u001B[0m\n\u001B[1;32m 383\u001B[0m \u001B[0mcrystals\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 384\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mcif_index\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mrange\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_parser\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mnumber_of_cifs\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 385\u001B[0;31m \u001B[0mname\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mkwargs\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcif\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mto_crystal_form\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0matoms_class\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mcls\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_ATOM_CLASS\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 386\u001B[0m \u001B[0mcrystals\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mappend\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcls\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_PHASE_CLASS\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mname\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0;34m**\u001B[0m\u001B[0mkwargs\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 387\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0mname\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mcrystals\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/PycharmProjects/easyScience/easyCrystallography/easyCrystallography/io/cif.py\u001B[0m in \u001B[0;36mto_crystal_form\u001B[0;34m(self, cif_index, atoms_class)\u001B[0m\n\u001B[1;32m 89\u001B[0m \u001B[0;34m'cell'\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_parser\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mget_lattice\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 90\u001B[0m \u001B[0;34m'spacegroup'\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_parser\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mget_symmetry\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 91\u001B[0;31m \u001B[0;34m'atoms'\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_parser\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mget_atoms\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mcif_index\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0matoms_class\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0matoms_class\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 92\u001B[0m }\n\u001B[1;32m 93\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/PycharmProjects/easyScience/easyCrystallography/easyCrystallography/io/cif.py\u001B[0m in \u001B[0;36mget_atoms\u001B[0;34m(self, cif_index, atoms_class)\u001B[0m\n\u001B[1;32m 437\u001B[0m \u001B[0mthis_loop\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0midx\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_kwargs\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mkey\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mloop\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0midx\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_kwargs\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mkey\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 438\u001B[0m atoms = this_loop.to_class(Atoms, Site,\n\u001B[0;32m--> 439\u001B[0;31m [[k1, k2] for k1, k2 in zip(our_fields, required_fields)])\n\u001B[0m\u001B[1;32m 440\u001B[0m \u001B[0matoms\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mname\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0matoms_obj_name\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 441\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0midx0\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0matom\u001B[0m \u001B[0;32min\u001B[0m \u001B[0menumerate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0matoms\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/PycharmProjects/easyScience/easyCore/easyCore/Utils/io/star.py\u001B[0m in \u001B[0;36mto_class\u001B[0;34m(self, cls_outer, cls_inner, name_conversions)\u001B[0m\n\u001B[1;32m 514\u001B[0m **{\n\u001B[1;32m 515\u001B[0m \u001B[0mk\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m0\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0midx\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_kwargs\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mk\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m1\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mraw_value\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 516\u001B[0;31m \u001B[0;32mfor\u001B[0m \u001B[0mk\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mname_conversions\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 517\u001B[0m }\n\u001B[1;32m 518\u001B[0m )\n", - "\u001B[0;32m~/PycharmProjects/easyScience/easyCrystallography/easyCrystallography/Components/Site.py\u001B[0m in \u001B[0;36mfrom_pars\u001B[0;34m(cls, label, specie, occupancy, fract_x, fract_y, fract_z, interface)\u001B[0m\n\u001B[1;32m 120\u001B[0m \u001B[0mfract_y\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 121\u001B[0m \u001B[0mfract_z\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 122\u001B[0;31m \u001B[0minterface\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0minterface\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 123\u001B[0m )\n\u001B[1;32m 124\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m~/PycharmProjects/easyScience/easyDiffractionLib/easyDiffractionLib/components/site.py\u001B[0m in \u001B[0;36m__init__\u001B[0;34m(self, label, specie, occupancy, fract_x, fract_y, fract_z, adp, interface, **kwargs)\u001B[0m\n\u001B[1;32m 45\u001B[0m \u001B[0mfract_y\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mfract_y\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 46\u001B[0m \u001B[0mfract_z\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mfract_z\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 47\u001B[0;31m \u001B[0madp\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mAtomicDisplacement\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdefault\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 48\u001B[0m )\n\u001B[1;32m 49\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0minterface\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0minterface\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;31mTypeError\u001B[0m: __init__() got multiple values for argument 'label'" - ] - } - ], + "outputs": [], "source": [ "phases = Phases.from_cif_file(cif_fname)\n", "phase = phases[0]\n", @@ -607,7 +227,7 @@ "metadata": {}, "outputs": [], "source": [ - "job = Job(phases=phases, parameters=CWParams.default(), calculator=calculator)" + "job = Job(phases=phases, parameters=CWParams.default(), interface=calculator)" ] }, { @@ -660,6 +280,7 @@ "metadata": {}, "outputs": [], "source": [ + "job.pattern.scale.enabled = True\n", "job.pattern.scale = 100" ] }, diff --git a/test.py b/test.py new file mode 100644 index 00000000..a077d525 --- /dev/null +++ b/test.py @@ -0,0 +1,45 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + + +from typing import ClassVar +from easyCore.Objects.Variable import Parameter +from easyCore.Objects.ObjectClasses import BaseObj + + +class A(BaseObj): + alpha: ClassVar[Parameter] + + def __init__(self, alpha=None): + alpha = Parameter('alpha', alpha) + super().__init__('A', alpha=alpha) + +class B(BaseObj): + a: ClassVar[Parameter] + b: ClassVar[Parameter] + c: ClassVar[A] + + def __init__(self, alpha=1, a=2, b=3): + _a = Parameter('a', a) + _b = Parameter('b', b) + _c = A(alpha=alpha) + super().__init__('B', a=_a, b=_b, c=_c) + + def _update_bases(self, new_base): + base_class = getattr(self, '__old_class__', self.__class__) + old_bases = list(self.__class__.__bases__) + old_bases.remove(base_class) + self.__class__.__bases__ = (new_base, *old_bases, base_class) + +class C: + pass + + +if __name__ == '__main__': + b =B(alpha=2) + print(B.__bases__) + print(b.__class__.__bases__) + b._update_bases(C) + print(b.__class__.__bases__) + print(B.__bases__) + print(issubclass(b.__class__, C)) diff --git a/test2.py b/test2.py new file mode 100644 index 00000000..e20f5a07 --- /dev/null +++ b/test2.py @@ -0,0 +1,11 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + + +from easyDiffractionLib.sample import Sample +from easyDiffractionLib.interface import InterfaceFactory + +s = Sample() +interface = InterfaceFactory() +interface.switch('CrysPyV2') +s.interface = interface \ No newline at end of file diff --git a/test3.py b/test3.py new file mode 100644 index 00000000..9a5e77e4 --- /dev/null +++ b/test3.py @@ -0,0 +1,8 @@ +__author__ = 'github.com/wardsimon' +__version__ = '0.0.1' + +from numpy import pi +from easyCrystallography.Components.Site import Site +from easyCrystallography.Components.Specie import Specie + +s_ = Site(specie="Si") From 0de454665b1ede5dc68881f70502c0bf304f568b Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 1 Apr 2022 16:16:01 +0200 Subject: [PATCH 273/312] More V2 update work --- easyDiffractionLib/Interfaces/cryspyV2.py | 129 ++----- easyDiffractionLib/Interfaces/types.py | 32 +- easyDiffractionLib/Profiles/P1D.py | 433 +++++++++++----------- easyDiffractionLib/calculators/cryspy.py | 2 +- easyDiffractionLib/components/site.py | 2 +- tests/integration_tests/test1.py | 5 + tests/test4.py | 33 +- 7 files changed, 321 insertions(+), 315 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 2aaba86c..6662bbd9 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -1,11 +1,10 @@ from __future__ import annotations - __author__ = "github.com/wardsimon" __version__ = "0.0.2" from abc import ABCMeta -from typing import Callable, Optional, TYPE_CHECKING, Type, List, Union, TypeVar +from typing import Callable, Optional, TYPE_CHECKING, List, Union from numpy import ndarray @@ -25,6 +24,7 @@ from easyDiffractionLib.calculators.cryspy import Cryspy as Cryspy_calc from easyDiffractionLib.Interfaces.types import ( + interfaceMixInMeta, Powder as Powder_type, SingleCrystal as SingleCrystal_type, CW as CW_type, @@ -32,56 +32,16 @@ Pol as Pol_type, UPol as UPol_type, Neutron as Neutron_type, - _Type, ) if TYPE_CHECKING: - from easyCore.Objects.ObjectClasses import BasedBase - - Model = TypeVar("Model", bound=BasedBase) - Mixin = TypeVar("Mixin", bound=_Type) - - -class MixInCryspy(_Type): - """ - MixIn base for the cryspy interface. All components are based on this, so that they can be combined easily. - """ - - calculator: Cryspy_calc - _borg = borg - - def create(self: Mixin, model: Model): - """ - Sequentially call all create function for MixIn objects. - """ - cls = self.__class__ - # Get all classes AFTER this one - cls_s = cls.__mro__[0 : cls.__mro__.index(MixInCryspy)] - r_list = [] - - for cls_ in cls_s: - if hasattr(cls_, "create"): - r = cls_.create(self, model, master=True) - if r is not None and isinstance(r, list): - r_list += r - return r_list - - @staticmethod - def _identify(obj: Model, as_str: bool = False) -> Union[int, str]: - """ - Helper function to identify objects. - """ - obj_id = borg.map.convert_id_to_key(obj) - if as_str: - obj_id = str(obj_id) - return obj_id + from easyCore.Utils.typing import B -class CryspyBase(MixInCryspy, Neutron_type, metaclass=ABCMeta): +class CryspyBase(Neutron_type, metaclass=ABCMeta): """ - This is the base mixin interface for the cryspy calculator. In this class we deal with the creation of the base - crystal structure. No calculation is performed from this class, it only creates the crystal structure and inherits - all the experiment types from the plugins. + In this class we deal with the creation of the base crystal structure. No calculation is performed from this class, + it only creates the crystal structure and inherits all the experiment types from the plugins. """ _sample_link = {"cif_str": "cif_str"} @@ -109,8 +69,9 @@ class CryspyBase(MixInCryspy, Neutron_type, metaclass=ABCMeta): "Bani": "b_iso_or_equiv", } _subsets = [] + _borg = borg - def __init__(self, calculator: Optional = None): + def __init__(self, calculator: Optional[Cryspy_calc] = None): """ Initialise the calculator. :param calculator: Cryspy instance @@ -135,7 +96,7 @@ def __init_subclass__(cls, is_abstract: bool = False, **kwargs): if not is_abstract: cls._subsets.append(cls) - def create(self, model: Model, master: bool = False) -> List[ItemContainer]: + def create(self, model: B) -> List[ItemContainer]: """ Create the crystal structure. This deals with interfacing with `Lattice`, `SpaceGroup` `Site`, `Phase`, and `Phases`. @@ -143,9 +104,6 @@ def create(self, model: Model, master: bool = False) -> List[ItemContainer]: :param master: If master we call the mixin create function :return: List of links """ - if not master: - return MixInCryspy.create(self, model) - r_list = [] t_ = type(model) model_key = self._identify(model) @@ -190,6 +148,7 @@ def create(self, model: Model, master: bool = False) -> List[ItemContainer]: elif issubclass(t_, Phase): ident = str(model_key) + "_phase" self.calculator.createPhase(ident) + _ = self.calculator.createEmptyCrystal(model.name, key=model_key) self.calculator.assignCell_toCrystal(self._identify(model.cell), model_key) self.calculator.assignSpaceGroup_toCrystal( self._identify(model._spacegroup), model_key @@ -282,16 +241,23 @@ def get_calculated_y_for_phase(self, phase_idx: int) -> list: def get_total_y_for_phases(self) -> tuple[ndarray, ndarray]: return self.calculator.get_total_y_for_phases() + @staticmethod + def _identify(obj: B, as_str: bool = False) -> Union[int, str]: + """ + Helper function to identify objects. + """ + obj_id = borg.map.convert_id_to_key(obj) + if as_str: + obj_id = str(obj_id) + return obj_id + class Powder(Powder_type): """ Class to handle powder calculations. In this instance Powder1DParameters is passed to the calculator. """ - def create(self, model: Model, master: bool = False) -> List[ItemContainer]: - if not master: - return MixInCryspy.create(self, model) - + def create(self, model: B) -> List[ItemContainer]: r_list = [] t_ = type(model) @@ -323,9 +289,7 @@ class CW(CW_type): "wavelength": "wavelength", } - def create(self, model: Model, master: bool = False) -> List[ItemContainer]: - if not master: - return MixInCryspy.create(self, model) + def create(self, model: B) -> List[ItemContainer]: r_list = [] t_ = type(model) model_key = self._identify(model) @@ -364,10 +328,7 @@ class TOF(TOF_type): _instrument_tof_link = {k: k for k in Instrument1DTOFParameters._defaults.keys()} - def create(self, model: Model, master: bool = False) -> List[ItemContainer]: - if not master: - return MixInCryspy.create(self, model) - + def create(self, model: B) -> List[ItemContainer]: r_list = [] t_ = type(model) model_key = self._identify(model) @@ -424,10 +385,7 @@ class POL(Pol_type): "efficiency": "efficiency", } - def create(self, model: Model, master: bool = False) -> List[ItemContainer]: - if not master: - return MixInCryspy.create(self, model) - + def create(self, model: B) -> List[ItemContainer]: r_list = [] t_ = type(model) model_key = self._identify(model) @@ -516,18 +474,17 @@ def fit_func( class UPol(UPol_type): - def create(self, model: Model, master: bool = False) -> List[ItemContainer]: - if not master: - return MixInCryspy.create(self, model) + def create(self, model: B) -> List[ItemContainer]: r_list = [] return r_list +# +# Now define the classes that implement the different types of models. +# +@interfaceMixInMeta class CryspyCW(CryspyBase, CW, Powder, UPol): - def create(self, model: Model, master: bool = False) -> List[ItemContainer]: - if not master: - return MixInCryspy.create(self, model) - + def create(self, model: B) -> List[ItemContainer]: r_list = [] t_ = type(model) model_key = self._identify(model) @@ -541,11 +498,9 @@ def create(self, model: Model, master: bool = False) -> List[ItemContainer]: return r_list +@interfaceMixInMeta class CryspyTOF(CryspyBase, TOF, Powder, UPol): - def create(self, model: Model, master: bool = False) -> List[ItemContainer]: - if not master: - return MixInCryspy.create(self, model) - + def create(self, model: B) -> List[ItemContainer]: r_list = [] t_ = type(model) model_key = self._identify(model) @@ -559,11 +514,9 @@ def create(self, model: Model, master: bool = False) -> List[ItemContainer]: return r_list +@interfaceMixInMeta class CryspyCWPol(CryspyBase, CW, Powder, POL): - def create(self, model: Model, master: bool = False) -> List[ItemContainer]: - if not master: - return MixInCryspy.create(self, model) - + def create(self, model: B) -> List[ItemContainer]: r_list = [] t_ = type(model) model_key = self._identify(model) @@ -577,11 +530,9 @@ def create(self, model: Model, master: bool = False) -> List[ItemContainer]: return r_list +@interfaceMixInMeta class CryspyTOFPol(CryspyBase, TOF, Powder, POL): - def create(self, model: Model, master: bool = False) -> List[ItemContainer]: - if not master: - return MixInCryspy.create(self, model) - + def create(self, model: B) -> List[ItemContainer]: r_list = [] t_ = type(model) model_key = self._identify(model) @@ -595,8 +546,10 @@ def create(self, model: Model, master: bool = False) -> List[ItemContainer]: return r_list +## +## This is the main class which is called, implementing one of the above classes. +## class CryspyV2(InterfaceTemplate): - name = "CrysPyV2" feature_available = { @@ -628,11 +581,11 @@ def feature_checker( FEATURES=CryspyV2.feature_available, ) - def create(self, model: Model): + def create(self, model: B): cls = self._get_constructor(CryspyBase._subsets, model) if cls is not None and cls is not self._internal.__class__: self._internal = cls(calculator=self.calculator) - return self._internal.create(model, master=True) + return self._internal.create(model) def __call__(self, *args, **kwargs) -> np.ndarray: if self._internal is not None: diff --git a/easyDiffractionLib/Interfaces/types.py b/easyDiffractionLib/Interfaces/types.py index 6ee82a6b..40e5411d 100644 --- a/easyDiffractionLib/Interfaces/types.py +++ b/easyDiffractionLib/Interfaces/types.py @@ -1,8 +1,14 @@ +from __future__ import annotations + __author__ = "github.com/wardsimon" __version__ = "0.0.1" from abc import abstractmethod -from typing import List, Any, Callable, Union +from typing import List, Any, Callable, Union, TYPE_CHECKING, TypeVar, Type + +if TYPE_CHECKING: + from easyCore.Objects.Inferface import ItemContainer + from easyCore.Utils.typing import B class _Type: @@ -11,10 +17,32 @@ class _Type: _identify: Callable[[Any], Union[str, int]] @abstractmethod - def create(self, model) -> List: + def create(self, model: B) -> List[ItemContainer]: pass +T = TypeVar("T", bound=_Type) + + +def interfaceMixInMeta(cls): + + class_create = getattr(cls, "create", None) + + def create(self, model: B) -> List[ItemContainer]: + cls_s: List[Type[T]] = [ + c_ for c_ in cls.__bases__ if getattr(c_, "_internal_type", False) + ] + r_list = [] + if class_create is not None: + r_list += class_create(self, model) + for cls_ in cls_s: + r_list += cls_.create(self, model) + return r_list + + setattr(cls, "create", create) + return cls + + class Neutron(_Type): pass diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index b119085e..e884dba3 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -72,39 +72,39 @@ def __init__(self, dataset, simulation_prefix): class Powder1DParameters(BaseObj): _name = "1DPowderProfile" _defaults = { - "zero_shift": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "zero_shift": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "zero_shift", - "units": "degree", - "value": 0.0, - "fixed": True, + "name": "zero_shift", + "units": "degree", + "value": 0.0, + "fixed": True, }, - "scale": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "scale": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "scale", - "value": 1, - "fixed": True, - "enabled": False, + "name": "scale", + "value": 1, + "fixed": True, + "enabled": False, }, "backgrounds": { - "@module": "easyDiffractionLib.elements.Backgrounds.Background", - "@class": "BackgroundContainer", + "@module": "easyDiffractionLib.elements.Backgrounds.Background", + "@class": "BackgroundContainer", "@version": "0.0.1", - "data": [], + "data": [], }, } def __init__( - self, - zero_shift: Parameter, - scale: Parameter, - backgrounds: BackgroundContainer, - interface=None, - **kwargs + self, + zero_shift: Parameter, + scale: Parameter, + backgrounds: BackgroundContainer, + interface=None, + **kwargs ): super().__init__( self.__class__.__name__, @@ -117,9 +117,10 @@ def __init__( self.interface = interface @staticmethod - def _generate_defaults(zero_shift: float = _defaults["zero_shift"]["value"], - scale: float = _defaults["scale"]["value"] - ): + def _generate_defaults( + zero_shift: float = _defaults["zero_shift"]["value"], + scale: float = _defaults["scale"]["value"], + ): defaults = deepcopy(Powder1DParameters._defaults) defaults["zero_shift"]["value"] = zero_shift zero_shift = _decoder.process_decoded(defaults["zero_shift"]) @@ -130,9 +131,9 @@ def _generate_defaults(zero_shift: float = _defaults["zero_shift"]["value"], @classmethod def from_pars( - cls, - zero_shift: float = _defaults["zero_shift"]["value"], - scale: float = _defaults["scale"]["value"], + cls, + zero_shift: float = _defaults["zero_shift"]["value"], + scale: float = _defaults["scale"]["value"], ): zero_shift, scale, backgrounds = cls._generate_defaults(zero_shift, scale) return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) @@ -149,20 +150,21 @@ def default(cls): class PolPowder1DParameters(Powder1DParameters): _defaults = { - 'beam': { - 'efficiency': 1.0, - 'polarization': 0.0, + "beam": { + "efficiency": 1.0, + "polarization": 0.0, }, } - def __init__(self, - zero_shift: Parameter, - scale: Parameter, - backgrounds: BackgroundContainer, - beam: PolarizedBeam, - interface=None, - **kwargs - ): + def __init__( + self, + zero_shift: Parameter, + scale: Parameter, + backgrounds: BackgroundContainer, + beam: PolarizedBeam, + interface=None, + **kwargs + ): super().__init__( zero_shift=zero_shift, scale=scale, @@ -173,75 +175,88 @@ def __init__(self, ) @classmethod - def from_pars(cls, zero_shift: float, scale: float, polarization: float, efficiency: float, interface=None): + def from_pars( + cls, + zero_shift: float, + scale: float, + polarization: float, + efficiency: float, + interface=None, + ): zero_shift, scale, backgrounds = cls._generate_defaults(zero_shift, scale) beam = PolarizedBeam.from_pars(polarization, efficiency) - return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds, beam=beam, interface=interface) + return cls( + zero_shift=zero_shift, + scale=scale, + backgrounds=backgrounds, + beam=beam, + interface=interface, + ) class Instrument1DCWParameters(BaseObj): _name = "InstrumentalParameters" _defaults = { - "wavelength": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "wavelength": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "wavelength", - "units": "angstrom", - "value": 1.54056, - "fixed": True, + "name": "wavelength", + "units": "angstrom", + "value": 1.54056, + "fixed": True, }, - "resolution_u": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "resolution_u": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "resolution_u", - "value": 0.0002, - "fixed": True, + "name": "resolution_u", + "value": 0.0002, + "fixed": True, }, - "resolution_v": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "resolution_v": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "resolution_v", - "value": -0.0002, - "fixed": True, + "name": "resolution_v", + "value": -0.0002, + "fixed": True, }, - "resolution_w": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "resolution_w": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "resolution_w", - "value": 0.012, - "fixed": True, + "name": "resolution_w", + "value": 0.012, + "fixed": True, }, - "resolution_x": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "resolution_x": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "resolution_x", - "value": 0.0, - "fixed": True, + "name": "resolution_x", + "value": 0.0, + "fixed": True, }, - "resolution_y": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "resolution_y": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "resolution_y", - "value": 0.0, - "fixed": True, + "name": "resolution_y", + "value": 0.0, + "fixed": True, }, } def __init__( - self, - wavelength: Parameter, - resolution_u: Parameter, - resolution_v: Parameter, - resolution_w: Parameter, - resolution_x: Parameter, - resolution_y: Parameter, - interface=None, + self, + wavelength: Parameter, + resolution_u: Parameter, + resolution_v: Parameter, + resolution_w: Parameter, + resolution_x: Parameter, + resolution_y: Parameter, + interface=None, ): super().__init__( self.__class__.__name__, @@ -250,20 +265,20 @@ def __init__( resolution_v=resolution_v, resolution_w=resolution_w, resolution_x=resolution_x, - resolution_y=resolution_y + resolution_y=resolution_y, ) self.name = self._name self.interface = interface @classmethod def from_pars( - cls, - wavelength: float = _defaults["wavelength"]["value"], - resolution_u: float = _defaults["resolution_u"]["value"], - resolution_v: float = _defaults["resolution_v"]["value"], - resolution_w: float = _defaults["resolution_w"]["value"], - resolution_x: float = _defaults["resolution_x"]["value"], - resolution_y: float = _defaults["resolution_y"]["value"] + cls, + wavelength: float = _defaults["wavelength"]["value"], + resolution_u: float = _defaults["resolution_u"]["value"], + resolution_v: float = _defaults["resolution_v"]["value"], + resolution_w: float = _defaults["resolution_w"]["value"], + resolution_x: float = _defaults["resolution_x"]["value"], + resolution_y: float = _defaults["resolution_y"]["value"], ): defaults = deepcopy(cls._defaults) defaults["wavelength"]["value"] = wavelength @@ -309,135 +324,135 @@ def default(cls): class Instrument1DTOFParameters(BaseObj): _name = "InstrumentalParameters" _defaults = { - "ttheta_bank": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "ttheta_bank": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "ttheta_bank", - "units": "deg", - "value": 145.00, - "fixed": True, + "name": "ttheta_bank", + "units": "deg", + "value": 145.00, + "fixed": True, }, - "dtt1": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "dtt1": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "dtt1", - "units": "deg", - "value": 6167.24700, - "fixed": True, + "name": "dtt1", + "units": "deg", + "value": 6167.24700, + "fixed": True, }, - "dtt2": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "dtt2": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "dtt2", - "units": "deg", - "value": -2.28000, - "fixed": True, + "name": "dtt2", + "units": "deg", + "value": -2.28000, + "fixed": True, }, - "sigma0": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "sigma0": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "sigma0", - "value": 0.409, - "fixed": True, + "name": "sigma0", + "value": 0.409, + "fixed": True, }, - "sigma1": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "sigma1": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "sigma1", - "value": 8.118, - "fixed": True, + "name": "sigma1", + "value": 8.118, + "fixed": True, }, - "sigma2": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "sigma2": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "sigma2", - "value": 0.0, - "fixed": True, - "enabled": False, + "name": "sigma2", + "value": 0.0, + "fixed": True, + "enabled": False, }, - "gamma0": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "gamma0": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "gamma0", - "value": 0.0, - "fixed": True, - "enabled": False, + "name": "gamma0", + "value": 0.0, + "fixed": True, + "enabled": False, }, - "gamma1": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "gamma1": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "gamma1", - "value": 0.0, - "fixed": True, - "enabled": False, + "name": "gamma1", + "value": 0.0, + "fixed": True, + "enabled": False, }, - "gamma2": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "gamma2": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "gamma2", - "value": 0.0, - "fixed": True, - "enabled": False, + "name": "gamma2", + "value": 0.0, + "fixed": True, + "enabled": False, }, - "alpha0": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "alpha0": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "alpha0", - "value": 0.0, - "fixed": True, + "name": "alpha0", + "value": 0.0, + "fixed": True, }, - "alpha1": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "alpha1": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "alpha1", - "value": 0.29710, - "fixed": True, + "name": "alpha1", + "value": 0.29710, + "fixed": True, }, - "beta0": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "beta0": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "beta0", - "value": 0.04182, - "fixed": True, + "name": "beta0", + "value": 0.04182, + "fixed": True, }, - "beta1": { - "@module": "easyCore.Objects.Base", - "@class": "Parameter", + "beta1": { + "@module": "easyCore.Objects.Variable", + "@class": "Parameter", "@version": "0.0.1", - "name": "beta1", - "value": 0.00224, - "fixed": True, + "name": "beta1", + "value": 0.00224, + "fixed": True, }, } def __init__( - self, - ttheta_bank: Parameter, - dtt1: Parameter, - dtt2: Parameter, - sigma0: Parameter, - sigma1: Parameter, - sigma2: Parameter, - gamma0: Parameter, - gamma1: Parameter, - gamma2: Parameter, - alpha0: Parameter, - alpha1: Parameter, - beta0: Parameter, - beta1: Parameter, - interface=None, + self, + ttheta_bank: Parameter, + dtt1: Parameter, + dtt2: Parameter, + sigma0: Parameter, + sigma1: Parameter, + sigma2: Parameter, + gamma0: Parameter, + gamma1: Parameter, + gamma2: Parameter, + alpha0: Parameter, + alpha1: Parameter, + beta0: Parameter, + beta1: Parameter, + interface=None, ): super().__init__( self.__class__.__name__, @@ -460,20 +475,20 @@ def __init__( @classmethod def from_pars( - cls, - ttheta_bank: float = _defaults["ttheta_bank"]["value"], - dtt1: float = _defaults["dtt1"]["value"], - dtt2: float = _defaults["dtt2"]["value"], - sigma0: float = _defaults["sigma0"]["value"], - sigma1: float = _defaults["sigma1"]["value"], - sigma2: float = _defaults["sigma2"]["value"], - gamma0: float = _defaults["gamma0"]["value"], - gamma1: float = _defaults["gamma1"]["value"], - gamma2: float = _defaults["gamma2"]["value"], - alpha0: float = _defaults["alpha0"]["value"], - alpha1: float = _defaults["alpha1"]["value"], - beta0: float = _defaults["beta0"]["value"], - beta1: float = _defaults["beta1"]["value"], + cls, + ttheta_bank: float = _defaults["ttheta_bank"]["value"], + dtt1: float = _defaults["dtt1"]["value"], + dtt2: float = _defaults["dtt2"]["value"], + sigma0: float = _defaults["sigma0"]["value"], + sigma1: float = _defaults["sigma1"]["value"], + sigma2: float = _defaults["sigma2"]["value"], + gamma0: float = _defaults["gamma0"]["value"], + gamma1: float = _defaults["gamma1"]["value"], + gamma2: float = _defaults["gamma2"]["value"], + alpha0: float = _defaults["alpha0"]["value"], + alpha1: float = _defaults["alpha1"]["value"], + beta0: float = _defaults["beta0"]["value"], + beta1: float = _defaults["beta1"]["value"], ): defaults = deepcopy(cls._defaults) defaults["ttheta_bank"]["value"] = ttheta_bank diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index d29a01f0..6bc20d48 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -298,7 +298,7 @@ def powder_1d_calculate( return self.do_calc_setup(scale, this_x_array, pol_fn) - def powder_1d_tof_calculate(self, x_array: np.ndarray, pol_fn) -> np.ndarray: + def powder_1d_tof_calculate(self, x_array: np.ndarray, pol_fn=None) -> np.ndarray: """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 38ac2ed3..f7913bd6 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -44,7 +44,7 @@ def __init__( msp = kwargs.pop("msp") if isinstance(msp, str): msp = MagneticSusceptibility(msp) - for parameter in msp.get_parameters: + for parameter in msp.get_parameters(): if parameter.name in kwargs.keys(): new_option = kwargs.pop(parameter.name) parameter.value = new_option diff --git a/tests/integration_tests/test1.py b/tests/integration_tests/test1.py index 3b7db966..9558237c 100644 --- a/tests/integration_tests/test1.py +++ b/tests/integration_tests/test1.py @@ -19,6 +19,11 @@ phases=phase, parameters=Instrument1DCWParameters.default(), interface=calculator ) +from easyCrystallography.Components.Susceptibility import MagneticSusceptibility + +msp = MagneticSusceptibility("Cani") +sample.phases[0].atoms[0]._add_component("msp", msp) +sample.phases[0].atoms[0].interface = calculator # sample.phase.cell.length_a = 5 sample.parameters.wavelength = 1.25 # print(S) diff --git a/tests/test4.py b/tests/test4.py index 070a7c87..41ad9ee4 100644 --- a/tests/test4.py +++ b/tests/test4.py @@ -11,14 +11,18 @@ calculator = Calculator() -calculator.switch('CrysPy') - -atom = Site.from_pars(label="Cl1", - specie='Cl', - fract_x=0.1250, - fract_y=0.1670, - fract_z=0.1070) -atom.add_adp('Uiso', Uiso=0.0) +calculator.switch("CrysPyV2") + +atom = Site( + label="Cl1", + specie="Cl", + fract_x=0.1250, + fract_y=0.1670, + fract_z=0.1070, + adp="Uiso", + Uiso=0.0, + msp="Cani", +) phase = Phase(name="p1") phase.spacegroup.space_group_HM_name = "P 42/n c m" @@ -42,7 +46,8 @@ pattern.zero_shift = 0.0 pattern.scale = 100.0 -S = Sample(phases=phases, parameters=parameters, pattern=pattern, calculator=calculator) +S = Sample(phases=phases, parameters=parameters, pattern=pattern) +S.interface = calculator x_data = np.linspace(1, 120, 500) y_data = calculator.fit_func(x_data) @@ -62,12 +67,12 @@ parameters.ttheta_bank = 145.00 pattern.zero_shift = 0.0 pattern.scale = 100.0 +# +# tof_str = 'Npowder1DTOF' +# interfaces = calculator.interface_compatability(tof_str) +# calculator.switch(interfaces[0]) -tof_str = 'Npowder1DTOF' -interfaces = calculator.interface_compatability(tof_str) -calculator.switch(interfaces[0]) - -S = Sample(phases=phases, parameters=parameters, pattern=pattern, calculator=calculator) +S = Sample(phases=phases, parameters=parameters, pattern=pattern, interface=calculator) x_data = np.linspace(5000, 60000, 500) y_data = calculator.fit_func(x_data) From 80526f41b0b89a0418c9b7520f50825f23ba3988 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Mon, 4 Apr 2022 11:17:25 +0200 Subject: [PATCH 274/312] Fixed adding adps to kwargs --- easyDiffractionLib/components/site.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 38ac2ed3..2693e027 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -26,6 +26,9 @@ from easyCrystallography.Components.Susceptibility import MagneticSusceptibility +if TYPE_CHECKING: + from easyCore.Utils.typing import iF + class Site(ecSite): def __init__( self, @@ -36,7 +39,7 @@ def __init__( fract_y: Optional[Union[float, Parameter]] = None, fract_z: Optional[Union[float, Parameter]] = None, adp: Optional[Union[str, AtomicDisplacement]] = None, - interface: Optional = None, + interface: Optional[iF] = None, **kwargs, ): @@ -57,6 +60,7 @@ def __init__( if parameter.name in kwargs.keys(): new_option = kwargs.pop(parameter.name) parameter.value = new_option + kwargs["adp"] = adp super(Site, self).__init__( label=label, @@ -65,7 +69,6 @@ def __init__( fract_x=fract_x, fract_y=fract_y, fract_z=fract_z, - adp=adp, **kwargs, ) self.interface = interface From 2942d816cc9b124f98de7281ed62915fa554333e Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Mon, 11 Apr 2022 14:42:14 +0200 Subject: [PATCH 275/312] added msp support --- easyDiffractionLib/components/site.py | 53 +++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index e8743676..430d6325 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -39,11 +39,12 @@ def __init__( fract_y: Optional[Union[float, Parameter]] = None, fract_z: Optional[Union[float, Parameter]] = None, adp: Optional[Union[str, AtomicDisplacement]] = None, + msp: Optional[Union[str, MagneticSusceptibility]] = None, interface: Optional[iF] = None, **kwargs, ): - if "msp" in kwargs.keys(): + if msp is not None: msp = kwargs.pop("msp") if isinstance(msp, str): msp = MagneticSusceptibility(msp) @@ -80,6 +81,8 @@ def from_site(cls, lattice: PeriodicLattice, site: Site): kwargs = ecPeriodicSite._from_site_kwargs(lattice, site) if hasattr(site, "adp"): kwargs["adp"] = site.adp + if hasattr(site, "msp"): + kwargs["msp"] = site.msp return cls(**kwargs) @@ -88,7 +91,18 @@ class Atoms(ecAtoms): _SITE_CLASS = Site def to_star(self) -> List[StarLoop]: + add_loops = [] main_loop = super(Atoms, self).to_star()[0] + + self.add_adp(main_loop, add_loops) + self.add_msp(main_loop, add_loops) + + loops = [main_loop, *add_loops] + + return loops + + def add_adp(self, main_loop, add_loops): + adps = [hasattr(item, "adp") for item in self] has_adp = any(adps) if not has_adp: @@ -110,9 +124,42 @@ def to_star(self) -> List[StarLoop]: add_loops.append(StarLoop.from_StarSections(entries)) else: raise NotImplementedError("Multiple types of ADP are not supported") - loops = [main_loop, *add_loops] - return loops + return add_loops + def add_msp(self, main_loop, add_loops): + msps = [hasattr(item, "msp") for item in self] + has_msp = any(msps) + if not has_msp: + # initialize msp so as_dict doesn't throw a fit + for item in self: + msp = MagneticSusceptibility("Cani") + item.msp = msp + add_loops = [] + msp_types = [item.msp.msp_type.raw_value for item in self if hasattr(item, 'msp')] + if all(msp_types): + if msp_types[0] in ["Cani", "Ciso"]: + loops = [] + for item in self: + if not hasattr(item, 'msp'): + msp_item = MagneticSusceptibility(msp_types[0]) + item.msp = msp_item + loops.append(getattr(item, 'msp').to_star(item.label)) + msp_loop = StarLoop.from_StarSections(loops) + main_loop = main_loop.join(msp_loop, "label") + else: + pass + entries = [] + for item in self: + if hasattr(item, 'msp'): + entries.append(item.msp.to_star(item.label)) + else: + msp = MagneticSusceptibility(msp_types[0]) + item.msp = msp + entries.append(msp.to_star(item.label)) + add_loops.append(StarLoop.from_StarSections(entries)) + else: + raise NotImplementedError("Multiple types of MSP are not supported") + return add_loops class PeriodicAtoms(ecPeriodicAtoms): _SITE_CLASS = PeriodicSite From a1c2e07120aae2e628c7947508a4bc545ac7c282 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 20 Apr 2022 10:35:35 +0200 Subject: [PATCH 276/312] Structure load fixes after changes in core --- easyDiffractionLib/components/site.py | 1 - easyDiffractionLib/sample.py | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 430d6325..3cf4f271 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -45,7 +45,6 @@ def __init__( ): if msp is not None: - msp = kwargs.pop("msp") if isinstance(msp, str): msp = MagneticSusceptibility(msp) for parameter in msp.get_parameters(): diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 295c3c9a..5a21e87e 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -6,6 +6,7 @@ from easyCore.Objects.ObjectClasses import BaseObj from easyCore.Utils.UndoRedo import property_stack_deco +from easyCrystallography.Structures.Phase import Phases as ecPhases from easyDiffractionLib import Phase, Phases from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters @@ -28,7 +29,9 @@ def __init__(self, phases: Union[Phase, Phases] = None, phases = Phases('Phases', phases) elif phases is None: phases = Phases('Phases') - + elif isinstance(phases, ecPhases): + if len(phases) > 0: + phases = Phases('Phases', phases[0]) if not isinstance(phases, Phases): raise AttributeError('`phases` must be a Crystal or Crystals') From 013ae41ec477fa6cf5aa65ef9aafd5b4f029d6cc Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Thu, 28 Apr 2022 15:30:06 +0200 Subject: [PATCH 277/312] Number of fixes/extensions to allow polarized calculations. Added a simple script for polarized case --- easyDiffractionLib/Interfaces/cryspy.py | 5 +- easyDiffractionLib/Interfaces/cryspyV2.py | 12 ++--- easyDiffractionLib/Profiles/P1D.py | 12 ++++- easyDiffractionLib/calculators/cryspy.py | 4 +- easyDiffractionLib/sample.py | 13 +++-- tests/test5.py | 60 +++++++++++++++++++++++ 6 files changed, 87 insertions(+), 19 deletions(-) create mode 100644 tests/test5.py diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index fd7d457f..abeaae83 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -249,14 +249,15 @@ def create(self, model): elif t_.__name__ == "Sample": # This is legacy mode. Boo tt_ = type(model.parameters) base = "powder1D" + if issubclass(tt_, Instrument1DCWParameters): base += "CW" elif issubclass(tt_, Instrument1DTOFParameters): base += "TOF" - elif issubclass(tt_, Instrument1DCWPolParameters): - base += "pol" else: raise AttributeError("Unknown EXP type") + if issubclass(tt_, Instrument1DCWPolParameters): + base += "pol" self.__createModel(model_key, base) else: if self._borg.debug: diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 6662bbd9..6eeb04ee 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -205,13 +205,13 @@ def remove_phase(self, phases_obj: Phases, phase_obj: Phase) -> None: ident = self._identify(phase_obj, as_str=True) + "_phase" self.calculator.removePhase(self._identify(phases_obj), ident) - def fit_func(self, x_array: np.ndarray) -> np.ndarray: + def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> np.ndarray: """ Function to perform a fit. This is the base function for the fit, but others might be subclassed. :param x_array: points to be calculated at :return: calculated points """ - return self.calculator.calculate(x_array) + return self.calculator.calculate(x_array, *args, **kwargs) def get_hkl( self, @@ -599,13 +599,13 @@ def remove_atom(self, phase: Phase, atom: Union[Site, Site_base]) -> None: if self._internal is not None: self._internal.remove_atom(phase, atom) - def fit_func(self, x_array: np.ndarray) -> Union[np.ndarray, None]: + def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> Union[np.ndarray, None]: if self._internal is not None: - return self._internal.fit_func(x_array) + return self._internal.fit_func(x_array, *args, **kwargs) - def get_hkl(self, x_array: np.ndarray = None, idx: Optional[int] = None) -> dict: + def get_hkl(self, x_array: np.ndarray = None, idx: Optional[int] = None, phase_name=None, encoded_name=False) -> dict: if self._internal is not None: - return self._internal.get_hkl(x_array, idx) + return self._internal.get_hkl(x_array, idx, phase_name, encoded_name) def get_calculated_y_for_phase(self, idx: Optional[int] = None) -> list: if self._internal is not None: diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index e884dba3..2e1ef011 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -144,9 +144,16 @@ def default(cls): zero_shift = _decoder.process_decoded(defaults["zero_shift"]) scale = _decoder.process_decoded(defaults["scale"]) backgrounds = BackgroundContainer() + # remove dict entries so kwargs can be passed to __init__ + if 'zero_shift' in defaults: + del defaults["zero_shift"] + if 'scale' in defaults: + del defaults["scale"] + if 'backgrounds' in defaults: + backgrounds = BackgroundContainer() + del defaults["backgrounds"] - return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) - + return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds, **defaults) class PolPowder1DParameters(Powder1DParameters): _defaults = { @@ -155,6 +162,7 @@ class PolPowder1DParameters(Powder1DParameters): "polarization": 0.0, }, } + _defaults.update(Powder1DParameters._defaults) def __init__( self, diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index 6bc20d48..41a9cd57 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -61,9 +61,9 @@ def cif_str(self, value: str): def createModel(self, model_id: str, model_type: str = "powder1DCW"): model = {"background": cryspy.PdBackgroundL(), "phase": self.phases} self.polarized = False - if model_type.endswith("Pol"): + if model_type.endswith("pol"): self.polarized = True - model_type = model_type.split("Pol")[0] + model_type = model_type.split("pol")[0] cls = cryspy.Pd if model_type == "powder1DTOF": cls = cryspy.TOF diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 5a21e87e..69802fd7 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -47,17 +47,16 @@ def __init__(self, phases: Union[Phase, Phases] = None, self._update_bases(Powder) self._update_bases(Neutron) - if isinstance(pattern, Pattern1D): + if getattr(pattern, '__old_class__', pattern.__class__) == Pattern1D: from easyDiffractionLib.Interfaces.types import UPol self._update_bases(UPol) - elif isinstance(pattern, Pattern1D_Pol): + elif getattr(pattern, '__old_class__', pattern.__class__) == Pattern1D_Pol: from easyDiffractionLib.Interfaces.types import Pol self._update_bases(Pol) - - if isinstance(parameters, Instrument1DCWParameters): - from easyDiffractionLib.Interfaces.types import CW - self._update_bases(CW) - elif isinstance(parameters, Instrument1DTOFParameters): + if getattr(parameters, '__old_class__', parameters.__class__) == Instrument1DCWParameters: + from easyDiffractionLib.Interfaces.types import CW + self._update_bases(CW) + if getattr(parameters, '__old_class__', parameters.__class__) == Instrument1DTOFParameters: from easyDiffractionLib.Interfaces.types import TOF self._update_bases(TOF) diff --git a/tests/test5.py b/tests/test5.py new file mode 100644 index 00000000..b50d16d1 --- /dev/null +++ b/tests/test5.py @@ -0,0 +1,60 @@ +from easyCore import np + +from easyDiffractionLib.sample import Sample +from easyDiffractionLib import Site, Phases, Phase +from easyDiffractionLib.interface import InterfaceFactory as Calculator +from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters as CWParams +from easyDiffractionLib.Profiles.P1D import Instrument1DCWPolParameters as CWParamsPol +from easyDiffractionLib.Profiles.P1D import Instrument1DTOFParameters as TOFParams +from easyDiffractionLib.Profiles.P1D import Powder1DParameters, PolPowder1DParameters + +import matplotlib.pyplot as plt + + +calculator = Calculator() +calculator.switch("CrysPyV2") + +def pol_sum(a, b): + # Which component needs bringing back from cryspy? + return a+b + +def pol_diff(a, b): + # Which component needs bringing back from cryspy? + return a-b + +# this has to be full path to not confuse the CIF file reader that we are loading a string... +cif_fname = 'd:\\projects\\easyScience\\easyDiffractionLib\\tests\\structure.cif' +phases = Phases.from_cif_file(cif_fname) +phase = phases[0] + +parameters = CWParamsPol.default() +parameters.length_a = 10.266 +parameters.length_c = 10.266 +parameters.length_b = 10.266 + +parameters.resolution_u = 0.1447 +parameters.resolution_v = -0.4252 +parameters.resolution_w = 0.3864 +parameters.resolution_x = 0.0 +parameters.resolution_y = 0.0 + +pattern = PolPowder1DParameters.default() +pattern.zero_shift = 0.0 +pattern.scale = 1.0 +pattern.polarization = 0.1 +pattern.efficiency = 0.5 + +S = Sample(phases=phases, parameters=parameters, pattern=pattern) +S.interface = calculator + +x_data = np.linspace(1, 120, 500) +y_data = calculator.fit_func(x_data, pol_fn=pol_sum) + +plt.plot(x_data, y_data, label="CW (alpha+beta)") +plt.show() + +y_data = calculator.fit_func(x_data, pol_fn=pol_diff) + +plt.plot(x_data, y_data, label="CW (alpha-beta)") +plt.show() + From 5d927a4f944654da0ccdb395b2b2dedbaf79e18e Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 4 May 2022 20:51:32 +0200 Subject: [PATCH 278/312] Minor fixes for the app functionality --- easyDiffractionLib/Interfaces/cryspy.py | 4 ++-- easyDiffractionLib/Interfaces/cryspyV2.py | 10 +++++----- easyDiffractionLib/sample.py | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index abeaae83..70e080a6 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -283,7 +283,7 @@ def remove_phase(self, phases_obj, phase_obj): ident = str(self.__identify(phase_obj)) + "_phase" self.calculator.removePhase(self.__identify(phases_obj), ident) - def fit_func(self, x_array: np.ndarray) -> np.ndarray: + def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> np.ndarray: """ Function to perform a fit :param x_array: points to be calculated at @@ -291,7 +291,7 @@ def fit_func(self, x_array: np.ndarray) -> np.ndarray: :return: calculated points :rtype: np.ndarray """ - return self.calculator.calculate(x_array) + return self.calculator.calculate(x_array, *args, **kwargs) def get_hkl( self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 6eeb04ee..5e464aa8 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -460,17 +460,17 @@ def down(up: np.ndarray, down: np.ndarray) -> np.ndarray: def fit_func( self, x_array: np.ndarray, - method: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] = None, + pol_fn: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] = None, ) -> np.ndarray: """ In this case we need to know how to deal with the polarization channels. - :param method: How to combine the two chanels + :param pol_fn: How to combine the two chanels :param x_array: points to be calculated at :return: calculated points """ - if method is None: - method = self.up_plus_down - return self.calculator.calculate(x_array, method) + if pol_fn is None: + pol_fn = self.up_plus_down + return self.calculator.calculate(x_array, pol_fn) class UPol(UPol_type): diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 69802fd7..ce33363d 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -53,10 +53,10 @@ def __init__(self, phases: Union[Phase, Phases] = None, elif getattr(pattern, '__old_class__', pattern.__class__) == Pattern1D_Pol: from easyDiffractionLib.Interfaces.types import Pol self._update_bases(Pol) - if getattr(parameters, '__old_class__', parameters.__class__) == Instrument1DCWParameters: + if isinstance(parameters, Instrument1DCWParameters): from easyDiffractionLib.Interfaces.types import CW self._update_bases(CW) - if getattr(parameters, '__old_class__', parameters.__class__) == Instrument1DTOFParameters: + elif isinstance(parameters, Instrument1DTOFParameters): from easyDiffractionLib.Interfaces.types import TOF self._update_bases(TOF) From 96121d31936fde088029008a7d4b63fb1f6c5cd6 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Thu, 12 May 2022 13:38:24 +0200 Subject: [PATCH 279/312] Moved fit_func to derived class so it can be properly referenced. Added remove_phase and add_phase to the V2 calculator --- easyDiffractionLib/Interfaces/cryspyV2.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 5e464aa8..299b59cd 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -205,14 +205,6 @@ def remove_phase(self, phases_obj: Phases, phase_obj: Phase) -> None: ident = self._identify(phase_obj, as_str=True) + "_phase" self.calculator.removePhase(self._identify(phases_obj), ident) - def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> np.ndarray: - """ - Function to perform a fit. This is the base function for the fit, but others might be subclassed. - :param x_array: points to be calculated at - :return: calculated points - """ - return self.calculator.calculate(x_array, *args, **kwargs) - def get_hkl( self, x_array: np.ndarray = None, @@ -478,6 +470,13 @@ def create(self, model: B) -> List[ItemContainer]: r_list = [] return r_list + def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> np.ndarray: + """ + Function to perform a fit. + :param x_array: points to be calculated at + :return: calculated points + """ + return self.calculator.calculate(x_array, *args, **kwargs) # # Now define the classes that implement the different types of models. @@ -595,10 +594,18 @@ def link_atom(self, phase: Phase, atom: Union[Site, Site_base]) -> None: if self._internal is not None: self._internal.link_atom(phase, atom) + def add_phase(self, phases_obj, phase_obj: Phase) -> None: + if self._internal is not None: + self._internal.add_phase(phases_obj, phase_obj) + def remove_atom(self, phase: Phase, atom: Union[Site, Site_base]) -> None: if self._internal is not None: self._internal.remove_atom(phase, atom) + def remove_phase(self, phases_obj, phase_obj: Phase) -> None: + if self._internal is not None: + self._internal.remove_phase(phases_obj, phase_obj) + def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> Union[np.ndarray, None]: if self._internal is not None: return self._internal.fit_func(x_array, *args, **kwargs) From 0ce3ba3ca521420d0ee03d3fa2b462433fcae999 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Fri, 20 May 2022 11:01:21 +0200 Subject: [PATCH 280/312] Enable refinement options to be passed to the calculator. --- easyDiffractionLib/Interfaces/cryspy.py | 40 ++++++++++++++++++++++ easyDiffractionLib/Interfaces/cryspyV2.py | 33 ++++++++++++++++++ easyDiffractionLib/Profiles/P1D.py | 9 ++--- easyDiffractionLib/calculators/cryspy.py | 41 ++++++++++++++++++----- 4 files changed, 110 insertions(+), 13 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 70e080a6..7702cf4b 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -58,11 +58,19 @@ class Cryspy(InterfaceTemplate): "polarization": "polarization", "efficiency": "efficiency", } + _chi2_link = { + "sum": "sum", + "diff": "diff", + "up": "up", + "down": "down", + } _instrument_tof_link = {k: k for k in Instrument1DTOFParameters._defaults.keys()} name = "CrysPy" + saved_kwargs = {} + feature_available = { "Npowder1DCWunp": True, "Npowder1DTOFunp": True, @@ -170,6 +178,15 @@ def create(self, model): self.calculator.genericUpdate, ) ) + p_key = self.calculator.createChi2() + r_list.append( + ItemContainer( + p_key, + self._chi2_link, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) elif issubclass(t_, Lattice): l_key = self.calculator.createCell(model_key) keys = self._crystal_link.copy() @@ -258,6 +275,24 @@ def create(self, model): raise AttributeError("Unknown EXP type") if issubclass(tt_, Instrument1DCWPolParameters): base += "pol" + p_key = self.calculator.createPolarization() + r_list.append( + ItemContainer( + p_key, + self._polarization_link, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) + p_key = self.calculator.createChi2() + r_list.append( + ItemContainer( + p_key, + self._chi2_link, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) self.__createModel(model_key, base) else: if self._borg.debug: @@ -291,6 +326,11 @@ def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> np.ndarray: :return: calculated points :rtype: np.ndarray """ + # apply cryspy kwargs now, since lmfit strips them + for arg in self.saved_kwargs: + if arg not in kwargs: + kwargs[arg] = self.saved_kwargs[arg] + return self.calculator.calculate(x_array, *args, **kwargs) def get_hkl( diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 299b59cd..0516ed09 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -376,6 +376,12 @@ class POL(Pol_type): "polarization": "polarization", "efficiency": "efficiency", } + _chi2_link = { + "sum": "sum", + "diff": "diff", + "up": "up", + "down": "down", + } def create(self, model: B) -> List[ItemContainer]: r_list = [] @@ -393,6 +399,15 @@ def create(self, model: B) -> List[ItemContainer]: self.calculator.genericUpdate, ) ) + p_key = self.calculator.createChi2() + r_list.append( + ItemContainer( + p_key, + self._chi2_link, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) # We have already created a Site in cryspy, now add the MSP elif issubclass(t_, Site) or issubclass(t_, Site_base): msp_type = model.msp.msp_type.raw_value @@ -525,6 +540,24 @@ def create(self, model: B) -> List[ItemContainer]: "powder1DCWpol", "Npowder1DCWpol", ]: + p_key = self.calculator.createPolarization() + r_list.append( + ItemContainer( + p_key, + self._polarization_link, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) + p_key = self.calculator.createChi2() + r_list.append( + ItemContainer( + p_key, + self._chi2_link, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) self._createModel(model_key, base) return r_list diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index 2e1ef011..089a440e 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -157,10 +157,11 @@ def default(cls): class PolPowder1DParameters(Powder1DParameters): _defaults = { - "beam": { - "efficiency": 1.0, - "polarization": 0.0, - }, + # "beam": { + # "efficiency": 1.0, + # "polarization": 0.0, + # }, + "beam": PolarizedBeam._defaults, } _defaults.update(Powder1DParameters._defaults) diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index 41a9cd57..0e8bf3a5 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -240,11 +240,23 @@ def genericReturn(self, item_key: str, value_key: str) -> Any: value = getattr(item, value_key) return value - def createPolarization(self, key: str = "pol_beam") -> str: + def createPolarization(self, key: str = "polarized_beam") -> str: item = cryspy.DiffrnRadiation() self.storage[key] = item return key + def createChi2(self, key: str = "chi2") -> str: + item = cryspy.Chi2() + + # test + item.sum = False + item.diff = False + item.up = True + item.down = True + + self.storage[key] = item + return key + def createResolution(self, cls_type: Optional[str] = None) -> str: if cls_type is None: @@ -270,7 +282,7 @@ def updateResolution(self, key: str, **kwargs): setattr(resolution, r_key, kwargs[key]) def powder_1d_calculate( - self, x_array: np.ndarray, pol_fn: Optional[Callable] = None + self, x_array: np.ndarray, **kwargs ) -> np.ndarray: """ For a given x calculate the corresponding y @@ -279,11 +291,24 @@ def powder_1d_calculate( :return: points calculated at `x` :rtype: np.ndarray """ - + pol_fn = None for key_inner in ["pd_instr_resolution", "setup"]: if not hasattr(self.model, key_inner): setattr(self.model, key_inner, self.storage[key_inner]) + if self.polarized: + if 'pol_fn' in kwargs.keys(): + pol_fn = kwargs['pol_fn'] + if not hasattr(self.model, "diffrn_radiation"): + setattr(self.model, "diffrn_radiation", self.storage["polarized_beam"]) + if not hasattr(self.model, "chi2"): + setattr(self.model, "chi2", self.storage["chi2"]) + if 'pol_refinement' in kwargs: + self.model.chi2.Sum = kwargs['pol_refinement']['Sum'] + self.model.chi2.Diff = kwargs['pol_refinement']['Diff'] + self.model.chi2.Up = kwargs['pol_refinement']['Up'] + self.model.chi2.Down = kwargs['pol_refinement']['Down'] + if self.pattern is None: scale = 1.0 offset = 0 @@ -423,7 +448,7 @@ def do_calc_setup( # return returned_deps def calculate( - self, x_array: np.ndarray, pol_fn: Optional[Callable] = None + self, x_array: np.ndarray, **kwargs ) -> np.ndarray: """ For a given x calculate the corresponding y @@ -434,13 +459,11 @@ def calculate( """ res = np.zeros_like(x_array) self.additional_data["ivar"] = res - args = [x_array] - if pol_fn is not None: - args.append(pol_fn) + args = x_array if self.type == "powder1DCW": - return self.powder_1d_calculate(*args) + return self.powder_1d_calculate(args, **kwargs) if self.type == "powder1DTOF": - return self.powder_1d_tof_calculate(*args) + return self.powder_1d_tof_calculate(args, **kwargs) return res def get_phase_components(self, phase_name: str) -> List[np.ndarray]: From ed617bb103c7411b222b00cb7c6f84c3f5838826 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Mon, 23 May 2022 10:47:28 +0200 Subject: [PATCH 281/312] Fixed refinement cases --- easyDiffractionLib/Profiles/P1D.py | 4 ---- easyDiffractionLib/calculators/cryspy.py | 8 ++++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index 089a440e..48b5c282 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -157,10 +157,6 @@ def default(cls): class PolPowder1DParameters(Powder1DParameters): _defaults = { - # "beam": { - # "efficiency": 1.0, - # "polarization": 0.0, - # }, "beam": PolarizedBeam._defaults, } _defaults.update(Powder1DParameters._defaults) diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index 0e8bf3a5..ec378c5f 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -304,10 +304,10 @@ def powder_1d_calculate( if not hasattr(self.model, "chi2"): setattr(self.model, "chi2", self.storage["chi2"]) if 'pol_refinement' in kwargs: - self.model.chi2.Sum = kwargs['pol_refinement']['Sum'] - self.model.chi2.Diff = kwargs['pol_refinement']['Diff'] - self.model.chi2.Up = kwargs['pol_refinement']['Up'] - self.model.chi2.Down = kwargs['pol_refinement']['Down'] + self.model.chi2.sum = kwargs['pol_refinement']['sum'] + self.model.chi2.diff = kwargs['pol_refinement']['diff'] + self.model.chi2.up = kwargs['pol_refinement']['up'] + self.model.chi2.down = kwargs['pol_refinement']['down'] if self.pattern is None: scale = 1.0 From 5bc6e84f9b39335ed3114488f1e17f0802e1f7ef Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Mon, 23 May 2022 14:48:40 +0200 Subject: [PATCH 282/312] Enabling beam polarization setup --- easyDiffractionLib/Profiles/P1D.py | 18 +++++++++++------- easyDiffractionLib/components/polarization.py | 2 ++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index 48b5c282..5b62415f 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -141,8 +141,9 @@ def from_pars( @classmethod def default(cls): defaults = deepcopy(cls._defaults) - zero_shift = _decoder.process_decoded(defaults["zero_shift"]) - scale = _decoder.process_decoded(defaults["scale"]) + defaults = _decoder.process_decoded(defaults) + zero_shift = defaults["zero_shift"] + scale = defaults["scale"] backgrounds = BackgroundContainer() # remove dict entries so kwargs can be passed to __init__ if 'zero_shift' in defaults: @@ -150,14 +151,14 @@ def default(cls): if 'scale' in defaults: del defaults["scale"] if 'backgrounds' in defaults: - backgrounds = BackgroundContainer() del defaults["backgrounds"] return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds, **defaults) class PolPowder1DParameters(Powder1DParameters): _defaults = { - "beam": PolarizedBeam._defaults, + "polarization" : PolarizedBeam._defaults['polarization'], + "efficiency" : PolarizedBeam._defaults['efficiency'] } _defaults.update(Powder1DParameters._defaults) @@ -166,7 +167,8 @@ def __init__( zero_shift: Parameter, scale: Parameter, backgrounds: BackgroundContainer, - beam: PolarizedBeam, + polarization: Parameter, + efficiency: Parameter, interface=None, **kwargs ): @@ -175,7 +177,8 @@ def __init__( scale=scale, backgrounds=backgrounds, interface=interface, - beam=beam, + polarization=polarization, + efficiency=efficiency, **kwargs ) @@ -194,7 +197,8 @@ def from_pars( zero_shift=zero_shift, scale=scale, backgrounds=backgrounds, - beam=beam, + polarization=polarization, + efficiency=efficiency, interface=interface, ) diff --git a/easyDiffractionLib/components/polarization.py b/easyDiffractionLib/components/polarization.py index 0af7d09f..1fc65830 100644 --- a/easyDiffractionLib/components/polarization.py +++ b/easyDiffractionLib/components/polarization.py @@ -18,6 +18,7 @@ class PolarizedBeam(BaseObj): 'value': 1.0, 'min': 0.0, 'max': 1.0, + "fixed": True, }, 'efficiency': { '@module': 'easyCore.Objects.Variable', @@ -27,6 +28,7 @@ class PolarizedBeam(BaseObj): 'value': 1.0, 'min': 0.0, 'max': 1.0, + "fixed": True, }, } From f09080ae3e11266bf9c30d9bc00ae0670add127f Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 25 May 2022 12:07:47 +0200 Subject: [PATCH 283/312] Make Ciso default --- easyDiffractionLib/components/site.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 3cf4f271..37ed0c48 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -132,7 +132,7 @@ def add_msp(self, main_loop, add_loops): if not has_msp: # initialize msp so as_dict doesn't throw a fit for item in self: - msp = MagneticSusceptibility("Cani") + msp = MagneticSusceptibility("Ciso") item.msp = msp add_loops = [] msp_types = [item.msp.msp_type.raw_value for item in self if hasattr(item, 'msp')] From c8241828b2175f8ba2fb078080b7032b795a51b4 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Tue, 7 Jun 2022 11:59:20 +0200 Subject: [PATCH 284/312] Fix loading multiphase project files --- easyDiffractionLib/sample.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index ce33363d..55ecfba5 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -29,10 +29,12 @@ def __init__(self, phases: Union[Phase, Phases] = None, phases = Phases('Phases', phases) elif phases is None: phases = Phases('Phases') + elif isinstance(phases, Phases): + pass elif isinstance(phases, ecPhases): if len(phases) > 0: phases = Phases('Phases', phases[0]) - if not isinstance(phases, Phases): + else: raise AttributeError('`phases` must be a Crystal or Crystals') if parameters is None: From a1c85e33a84e277150dd012d9471cb0e3dd5ed5b Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Mon, 20 Jun 2022 12:46:44 +0200 Subject: [PATCH 285/312] Added attribute to tell default msp from read in actual values --- easyDiffractionLib/components/site.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 37ed0c48..3b66caad 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -134,6 +134,7 @@ def add_msp(self, main_loop, add_loops): for item in self: msp = MagneticSusceptibility("Ciso") item.msp = msp + item.msp.default = True add_loops = [] msp_types = [item.msp.msp_type.raw_value for item in self if hasattr(item, 'msp')] if all(msp_types): @@ -143,6 +144,7 @@ def add_msp(self, main_loop, add_loops): if not hasattr(item, 'msp'): msp_item = MagneticSusceptibility(msp_types[0]) item.msp = msp_item + item.msp.default = False loops.append(getattr(item, 'msp').to_star(item.label)) msp_loop = StarLoop.from_StarSections(loops) main_loop = main_loop.join(msp_loop, "label") @@ -155,6 +157,7 @@ def add_msp(self, main_loop, add_loops): else: msp = MagneticSusceptibility(msp_types[0]) item.msp = msp + item.msp.default = False entries.append(msp.to_star(item.label)) add_loops.append(StarLoop.from_StarSections(entries)) else: From b63f5b64889b353dcae876e93ef31205d2356c75 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:26:22 +0200 Subject: [PATCH 286/312] it_coordinate_system_code in cryspy spacegroup --- .pre-commit-config.yaml | 6 ++-- easyDiffractionLib/calculators/cryspy.py | 36 +++++++++++------------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 54ab514f..6772351b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,12 +1,12 @@ repos: - repo: https://github.com/psf/black - rev: stable # Replace by any tag/version: https://github.com/psf/black/tags + rev: 22.3.0 # Replace by any tag/version: https://github.com/psf/black/tags hooks: - id: black language_version: python3 # Should be a command that runs python3.6+ - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.0.1 # Use the ref you want to point at + rev: v4.3.0 # Use the ref you want to point at hooks: - id: trailing-whitespace - id: check-yaml @@ -34,7 +34,7 @@ repos: # pass_filenames: false # entry: ~/anaconda3/bin/poetry2setup > setup.py - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks - rev: v2.1.0 + rev: v2.3.0 hooks: - id: pretty-format-yaml args: [--autofix, --indent, '2'] diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index ec378c5f..4edf03f0 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -127,13 +127,13 @@ def createSpaceGroup( ) -> str: sg_split = name_hm_alt.split(":") opts = {"name_hm_alt": sg_split[0]} - # if len(sg_split) > 1: - # opts['it_coordinate_system_code'] = sg_split[1] - # try: - # sg = cryspy.SpaceGroup(**opts) - # except Exception as e: - sg = cryspy.SpaceGroup(**opts) - # print(e) + if len(sg_split) > 1: + opts["it_coordinate_system_code"] = sg_split[1] + try: + sg = cryspy.SpaceGroup(**opts) + except Exception as e: + print(e) + sg = cryspy.SpaceGroup(**{"name_hm_alt": sg_split[0]}) self.storage[key] = sg return key @@ -281,9 +281,7 @@ def updateResolution(self, key: str, **kwargs): for r_key in kwargs.keys(): setattr(resolution, r_key, kwargs[key]) - def powder_1d_calculate( - self, x_array: np.ndarray, **kwargs - ) -> np.ndarray: + def powder_1d_calculate(self, x_array: np.ndarray, **kwargs) -> np.ndarray: """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated @@ -297,17 +295,17 @@ def powder_1d_calculate( setattr(self.model, key_inner, self.storage[key_inner]) if self.polarized: - if 'pol_fn' in kwargs.keys(): - pol_fn = kwargs['pol_fn'] + if "pol_fn" in kwargs.keys(): + pol_fn = kwargs["pol_fn"] if not hasattr(self.model, "diffrn_radiation"): setattr(self.model, "diffrn_radiation", self.storage["polarized_beam"]) if not hasattr(self.model, "chi2"): setattr(self.model, "chi2", self.storage["chi2"]) - if 'pol_refinement' in kwargs: - self.model.chi2.sum = kwargs['pol_refinement']['sum'] - self.model.chi2.diff = kwargs['pol_refinement']['diff'] - self.model.chi2.up = kwargs['pol_refinement']['up'] - self.model.chi2.down = kwargs['pol_refinement']['down'] + if "pol_refinement" in kwargs: + self.model.chi2.sum = kwargs["pol_refinement"]["sum"] + self.model.chi2.diff = kwargs["pol_refinement"]["diff"] + self.model.chi2.up = kwargs["pol_refinement"]["up"] + self.model.chi2.down = kwargs["pol_refinement"]["down"] if self.pattern is None: scale = 1.0 @@ -447,9 +445,7 @@ def do_calc_setup( ) # return returned_deps - def calculate( - self, x_array: np.ndarray, **kwargs - ) -> np.ndarray: + def calculate(self, x_array: np.ndarray, **kwargs) -> np.ndarray: """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated From 19c65de73df88eb63529c85c78b24869498fc5a1 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Thu, 23 Jun 2022 15:12:59 +0200 Subject: [PATCH 287/312] MSP connection fix --- easyDiffractionLib/Interfaces/cryspy.py | 2 +- easyDiffractionLib/Interfaces/cryspyV2.py | 11 +++++++++-- easyDiffractionLib/components/site.py | 13 +++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 7702cf4b..583fbcae 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -222,7 +222,7 @@ def create(self, model): ) if hasattr(model, "msp"): msp_type = model.msp.msp_type.raw_value - pars = model.get_parameters() + pars = model.msp.get_parameters() msp_pars = {par.name: par.raw_value for par in pars} ref_name = self.calculator.attachMSP(model_key, msp_type, msp_pars) r_list.append( diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 0516ed09..7ff58abc 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -411,7 +411,7 @@ def create(self, model: B) -> List[ItemContainer]: # We have already created a Site in cryspy, now add the MSP elif issubclass(t_, Site) or issubclass(t_, Site_base): msp_type = model.msp.msp_type.raw_value - pars = model.get_parameters() + pars = model.msp.get_parameters() msp_pars = {par.name: par.raw_value for par in pars} ref_name = self.calculator.attachMSP(model_key, msp_type, msp_pars) r_list.append( @@ -493,6 +493,7 @@ def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> np.ndarray: """ return self.calculator.calculate(x_array, *args, **kwargs) + # # Now define the classes that implement the different types of models. # @@ -643,7 +644,13 @@ def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> Union[np.ndarray, No if self._internal is not None: return self._internal.fit_func(x_array, *args, **kwargs) - def get_hkl(self, x_array: np.ndarray = None, idx: Optional[int] = None, phase_name=None, encoded_name=False) -> dict: + def get_hkl( + self, + x_array: np.ndarray = None, + idx: Optional[int] = None, + phase_name=None, + encoded_name=False, + ) -> dict: if self._internal is not None: return self._internal.get_hkl(x_array, idx, phase_name, encoded_name) diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 3b66caad..55ae77df 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -29,6 +29,7 @@ if TYPE_CHECKING: from easyCore.Utils.typing import iF + class Site(ecSite): def __init__( self, @@ -136,23 +137,25 @@ def add_msp(self, main_loop, add_loops): item.msp = msp item.msp.default = True add_loops = [] - msp_types = [item.msp.msp_type.raw_value for item in self if hasattr(item, 'msp')] + msp_types = [ + item.msp.msp_type.raw_value for item in self if hasattr(item, "msp") + ] if all(msp_types): if msp_types[0] in ["Cani", "Ciso"]: loops = [] for item in self: - if not hasattr(item, 'msp'): + if not hasattr(item, "msp"): msp_item = MagneticSusceptibility(msp_types[0]) item.msp = msp_item item.msp.default = False - loops.append(getattr(item, 'msp').to_star(item.label)) + loops.append(getattr(item, "msp").to_star(item.label)) msp_loop = StarLoop.from_StarSections(loops) main_loop = main_loop.join(msp_loop, "label") else: pass entries = [] for item in self: - if hasattr(item, 'msp'): + if hasattr(item, "msp"): entries.append(item.msp.to_star(item.label)) else: msp = MagneticSusceptibility(msp_types[0]) @@ -163,5 +166,7 @@ def add_msp(self, main_loop, add_loops): else: raise NotImplementedError("Multiple types of MSP are not supported") return add_loops + + class PeriodicAtoms(ecPeriodicAtoms): _SITE_CLASS = PeriodicSite From 17bbfa343b8f7477b3872c9ae436fc3a0357a6b2 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 24 Jun 2022 10:01:04 +0200 Subject: [PATCH 288/312] Move cif module --- easyDiffractionLib/Interfaces/cryspyV2.py | 3 +- easyDiffractionLib/components/site.py | 14 + easyDiffractionLib/io/__init__.py | 2 + easyDiffractionLib/io/cif.py | 1149 +++++++++++++++++++++ 4 files changed, 1167 insertions(+), 1 deletion(-) create mode 100644 easyDiffractionLib/io/__init__.py create mode 100644 easyDiffractionLib/io/cif.py diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 7ff58abc..e7d698c9 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -468,6 +468,7 @@ def fit_func( self, x_array: np.ndarray, pol_fn: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] = None, + **kwargs, ) -> np.ndarray: """ In this case we need to know how to deal with the polarization channels. @@ -477,7 +478,7 @@ def fit_func( """ if pol_fn is None: pol_fn = self.up_plus_down - return self.calculator.calculate(x_array, pol_fn) + return self.calculator.calculate(x_array, pol_fn=pol_fn, **kwargs) class UPol(UPol_type): diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 55ae77df..228ce6a7 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -74,6 +74,20 @@ def __init__( ) self.interface = interface + def add_adp(self, adp_type: Union[str, AtomicDisplacement], **kwargs): + if isinstance(adp_type, str): + adp_type = AtomicDisplacement(adp_type, **kwargs) + self._add_component("adp", adp_type) + if self.interface is not None: + self.interface.generate_bindings() + + def add_msp(self, msp_type: Union[str, MagneticSusceptibility], **kwargs): + if isinstance(msp_type, str): + msp_type = MagneticSusceptibility(msp_type, **kwargs) + self._add_component("msp", msp_type) + if self.interface is not None: + self.interface.generate_bindings() + class PeriodicSite(ecPeriodicSite): @classmethod diff --git a/easyDiffractionLib/io/__init__.py b/easyDiffractionLib/io/__init__.py new file mode 100644 index 00000000..bc160feb --- /dev/null +++ b/easyDiffractionLib/io/__init__.py @@ -0,0 +1,2 @@ +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" diff --git a/easyDiffractionLib/io/cif.py b/easyDiffractionLib/io/cif.py new file mode 100644 index 00000000..e3dd1f17 --- /dev/null +++ b/easyDiffractionLib/io/cif.py @@ -0,0 +1,1149 @@ +# SPDX-FileCopyrightText: 2022 easyCore contributors +# SPDX-License-Identifier: BSD-3-Clause +# © 2021-2022 Contributors to the easyCore project + +__author__ = "github.com/wardsimon" +__version__ = "0.1.0" + +import os +import re +from functools import partial +from io import TextIOWrapper, StringIO +from pathlib import Path +from typing import Union, List, Tuple +from copy import deepcopy +from inspect import signature +from numbers import Number + +from easyCore.Utils.io.star import ( + StarCollection, + StarEntry, + StarLoop, + FakeItem, + FakeCore, + StarHeader, + StarSection, +) + +from easyCrystallography.Components.AtomicDisplacement import AtomicDisplacement +from easyCrystallography.Components.Susceptibility import MagneticSusceptibility +from easyDiffractionLib.components.site import Site, Atoms +from easyCrystallography.Components.Lattice import Lattice +from easyCrystallography.Components.SpaceGroup import SpaceGroup +from easyCrystallography.Symmetry.groups import SpaceGroup as SpaceGroup2 + +sub_spgrp = partial(re.sub, r"[\s_]", "") +space_groups = {sub_spgrp(k): k for k in [opt["hermann_mauguin_fmt"] for opt in SpaceGroup2.SYMM_OPS]} # type: ignore + + +class CifIO: + def __init__(self, parser: "CifParser" = None): + self._parser: CifParser = parser + self._writer: List[CifWriter] = [] + if parser is not None: + self._writer = CifWriter.from_CifParser(parser) + + def use_objects(self, name, *args): + self._writer = [CifWriter(name, *args)] + self._parser = CifParser.from_string(str(self._writer[0])) + + @classmethod + def from_objects(cls, name, *args): + obj = cls() + obj._writer = [CifWriter(name, *args)] + obj._parser = CifParser.from_string(str(obj._writer[0])) + return obj + + @classmethod + def from_cif_str(cls, in_str: str): + parser = CifParser(in_str) + return cls(parser) + + def add_cif_from_objects(self, name, *args): + self._writer.append(CifWriter(name, *args)) + self._parser = CifParser.from_string(str(self._writer)) + + @classmethod + def from_file(cls, file_path: Union[Path, TextIOWrapper]): + parser = CifParser(file_path) + return cls(parser) + + def to_string(self, cif_index=None): + return self.__str__(cif_index) + + def to_file(self, file_name: Union[str, Path, TextIOWrapper], cif_index=None): + with open(file_name, "w") as writer: + writer.write(self.__str__(cif_index)) + + def __str__(self, index: Union[int, slice] = None): + out_str = "" + items = self._writer + if index is not None: + if isinstance(index, int): + items = [items[index]] + elif isinstance(index, slice): + items = items[index] + else: + raise AttributeError("Index must be a slice or int") + for writer in items: + if writer is not None: + out_str += str(writer) + "\n" + return out_str + + def to_crystal_form(self, cif_index: int = 0, atoms_class=Atoms): + if self._parser is None: + raise AttributeError + return self._parser._cif[cif_index]["header"].name, { + "cell": self._parser.get_lattice(cif_index=cif_index), + "spacegroup": self._parser.get_symmetry(cif_index=cif_index), + "atoms": self._parser.get_atoms( + cif_index=cif_index, atoms_class=atoms_class + ), + } + + +class CifParser: + """ + Parses a CIF file. Attempts to fix CIFs that are out-of-spec, but will + issue warnings if corrections applied. These are also stored in the + CifParser's errors attribute. + """ + + def __init__( + self, + filename: Union[str, StringIO, TextIOWrapper], + occupancy_tolerance=1.0, + site_tolerance=1e-4, + ): + """ + Args: + filename (str): CIF filename, bzipped or gzipped CIF files are fine too. + occupancy_tolerance (float): If total occupancy of a site is between 1 + and occupancy_tolerance, the occupancies will be scaled down to 1. + site_tolerance (float): This tolerance is used to determine if two + sites are sitting in the same position, in which case they will be + combined to a single disordered site. Defaults to 1e-4. + """ + self._occupancy_tolerance = occupancy_tolerance + self._site_tolerance = site_tolerance + if hasattr(filename, "__str__") and os.path.isfile(str(filename)): + in_data = StarCollection.from_file(filename) + elif isinstance(filename, (TextIOWrapper, StringIO)): + in_data = StarCollection.from_string(filename.read()) + else: + in_data = StarCollection.from_string(filename) + + if not isinstance(in_data, list): + # We have multiple data blocks + in_data = [in_data] + self._cif = in_data + + # store if CIF contains features from non-core CIF dictionaries + # e.g. magCIF + self.feature_flags = {} + self.warnings = [] + + def is_magcif() -> List[bool]: + """ + Checks to see if file appears to be a magCIF file (heuristic). + """ + # Doesn't seem to be a canonical way to test if file is magCIF or + # not, so instead check for magnetic symmetry datanames + prefixes = [ + "space_group_magn", + "atom_site_moment", + "space_group_symop_magn", + ] + logic = [] + for cif in self._cif: + found = False + for prefix in prefixes: + if prefix in cif["data"].keys(): + found = True + logic.append(found) + return logic + + self.feature_flags["magcif"] = is_magcif() + + def is_magcif_incommensurate() -> List[bool]: + """ + Checks to see if file contains an incommensurate magnetic + structure (heuristic). + """ + # Doesn't seem to be a canonical way to test if magCIF file + # describes incommensurate strucure or not, so instead check + # for common datanames + logic = [] + for idx, cif in enumerate(self._cif): + found = False + if not self.feature_flags["magcif"][idx]: + logic.append(False) + continue + prefixes = ["cell_modulation_dimension", "cell_wave_vector"] + for prefix in prefixes: + if prefix in cif["data"].keys(): + found = True + logic.append(found) + return logic + + self.feature_flags["magcif_incommensurate"] = is_magcif_incommensurate() + + for cif in self._cif: + new_data = {} + for k in cif["data"].keys(): + # pass individual CifBlocks to _sanitize_data + obj = self._sanitize_data(cif["data"][k]) + new_data[obj.name] = obj + cif["data"] = new_data + + # Sanitize the loops + for idx, loop in enumerate(cif["loops"]): + cif["loops"][idx] = self._sanitize_loop(loop) + + @property + def number_of_cifs(self) -> int: + """ + Get the number of cif's stored + + :return: number of cif's stored + :rtype: int + """ + return len(self._cif) + + @classmethod + def from_string(cls, cif_string, occupancy_tolerance=1.0): + """ + Creates a CifParser from a string. + + :param cif_string: String representation of a CIF. + :type cif_string: str + :param occupancy_tolerance: + :type occupancy_tolerance: + :return: If total occupancy of a site is between 1 and occupancy_tolerance, the occupancies will be scaled down + to 1. + :rtype: CifParser + """ + stream = StringIO(cif_string) + return cls(stream, occupancy_tolerance) + + def _sanitize_loop(self, data: StarLoop) -> StarLoop: + """ + Some CIF files do not conform to spec. This function corrects + known issues, particular in regards to Springer materials/ + Pauling files. + This function is here so that CifParser can assume its + input conforms to spec, simplifying its implementation. + :param data: CifBlock + :return: data CifBlock + """ + + # """ + # This part of the code deals with handling formats of data as found in + # CIF files extracted from the Springer Materials/Pauling File + # databases, and that are different from standard ICSD formats. + # """ + + # check for implicit hydrogens, warn if any present + if "atom_site_attached_hydrogens" in data.labels: + attached_hydrogens = [ + x._kwargs["atom_site_attached_hydrogens"].raw_value + for x in data.data + if x._kwargs["atom_site_attached_hydrogens"].raw_value != 0 + ] + if len(attached_hydrogens) > 0: + self.warnings.append( + "Structure has implicit hydrogens defined, " + "parsed structure unlikely to be suitable for use " + "in calculations unless hydrogens added." + ) + + # Check to see if "_atom_site_type_symbol" exists, as some test CIFs do + # not contain this key. + if "atom_site_type_symbol" in data.labels: + + # Keep a track of which data row needs to be removed. + # Example of a row: Nb,Zr '0.8Nb + 0.2Zr' .2a .m-3m 0 0 0 1 14 + # 'rhombic dodecahedron, Nb14' + # Without this code, the above row in a structure would be parsed + # as an ordered site with only Nb (since + # CifParser would try to parse the first two characters of the + # label "Nb,Zr") and occupancy=1. + # However, this site is meant to be a disordered site with 0.8 of + # Nb and 0.2 of Zr. + idxs_to_remove = [] + new_atoms = [] + + for idx, this_data in enumerate(data.data): + + # CIF files from the Springer Materials/Pauling File have + # switched the label and symbol. Thus, in the + # above shown example row, '0.8Nb + 0.2Zr' is the symbol. + # Below, we split the strings on ' + ' to + # check if the length (or number of elements) in the label and + # symbol are equal. + if len( + this_data._kwargs["atom_site_type_symbol"].raw_value.split(" + ") + ) > len(this_data._kwargs["atom_site_label"].raw_value.split(" + ")): + + # parse symbol to get element names and occupancy and store + # in "els_occu" + symbol_str = this_data._kwargs["atom_site_type_symbol"].raw_value + symbol_str_lst = symbol_str.split(" + ") + for elocc_idx, sym in enumerate(symbol_str_lst): + # Remove any bracketed items in the string + symbol_str_lst[elocc_idx] = re.sub( + r"\([0-9]*\)", "", sym.strip() + ) + + # Extract element name and its occupancy from the + # string, and store it as a + # key-value pair in "els_occ". + new_item: FakeCore = deepcopy(this_data) + new_item._kwargs["atom_site_type_symbol"].raw_value = str( + re.findall(r"\D+", symbol_str_lst[elocc_idx].strip())[1] + ).replace("", "") + new_item._kwargs["atom_site_label"].raw_value = ( + new_item._kwargs["atom_site_type_symbol"].raw_value + "_fix" + ) + if "atom_site_occupancy" in new_item._kwargs.keys(): + new_item._kwargs["atom_site_label"].raw_value = float( + "0" + + re.findall( + r"\.?\d+", symbol_str_lst[elocc_idx].strip() + )[1] + ) + new_atoms.append(new_item) + idxs_to_remove.append(idx) + + # Remove the original row by iterating over all keys in the CIF + # data looking for lists, which indicates + # multiple data items, one for each row, and remove items from the + # list that corresponds to the removed row, + # so that it's not processed by the rest of this function (which + # would result in an error). + for this_id in sorted(idxs_to_remove, reverse=True): + del data.data[this_id] + if idxs_to_remove: + data.data = data.data.extend[new_atoms] + + if len(idxs_to_remove) > 0: + self.warnings.append("Pauling file corrections applied.") + + # Now some CIF's dont have occupancy.... + if ( + "atom_site_type_symbol" in data.labels + and "atom_site_occupancy" not in data.labels + ): + for this_data in data.data: + this_data._kwargs["atom_site_occupancy"] = FakeItem(1) + data.labels.append("atom_site_occupancy") + + # """ + # This fixes inconsistencies in naming of several magCIF tags + # as a result of magCIF being in widespread use prior to + # specification being finalized (on advice of Branton Campbell). + # """ + + # check for finite precision frac co-ordinates (e.g. 0.6667 instead of 0.6666666...7) + # this can sometimes cause serious issues when applying symmetry operations + important_fracs = (1 / 3.0, 2 / 3.0) + fracs_changed = False + if "atom_site_fract_x" in data.labels: + for this_data in data.data: + for label in ( + "atom_site_fract_x", + "atom_site_fract_y", + "atom_site_fract_z", + ): + if label in this_data._kwargs.keys(): + frac = this_data._kwargs[label].raw_value + for comparison_frac in important_fracs: + if abs(1 - frac / comparison_frac) < 1e-4: + this_data._kwargs[label].raw_value = comparison_frac + fracs_changed = True + if fracs_changed: + self.warnings.append( + "Some fractional co-ordinates rounded to ideal values to " + "avoid issues with finite precision." + ) + return data + + def _sanitize_data(self, data: StarEntry) -> StarEntry: + # This is where we would check for any entry problems. + # At the moment it's empty, but maybe later... + return data + + def get_lattice( + self, + cif_index: int = 0, + length_strings=("a", "b", "c"), + angle_strings=("alpha", "beta", "gamma"), + lattice_type=None, + ): + """ + Generate the lattice from the provided lattice parameters. In the absence of all six lattice parameters, the + crystal system and necessary parameters are parsed + + :param cif_index: Which lattice do you want. There may be more than one + :type cif_index: int + :param length_strings: Length parameters to be searched for + :type length_strings: tuple + :param angle_strings: Angle parameters to be searched for + :type angle_strings: tuple + :param lattice_type: Lattice system (Optional) + :type lattice_type: str + :return: Constructed lattice + :rtype: Lattice + """ + + if cif_index > self.number_of_cifs: + raise AttributeError + data = self._cif[cif_index]["data"] + find_keys = ["cell_length_" + key for key in length_strings] + find_keys.extend(["cell_angle_" + key for key in angle_strings]) + if lattice_type is None: + dict_keys = ["length_" + key for key in length_strings] + dict_keys.extend(["angle_" + key for key in angle_strings]) + else: + dict_keys = [key for key in length_strings] + dict_keys.extend([key for key in angle_strings]) + data_dict = dict.fromkeys(dict_keys) + try: + # In this case all keys are specified as the cif writer was not a moron + for idx, key in enumerate(find_keys): + data_dict[dict_keys[idx]] = data[key].value + if lattice_type is None: + lattice = Lattice.from_pars(**data_dict) + else: + cls = getattr(Lattice, lattice_type, None) + if cls is None: + raise AttributeError + lattice = cls(**data_dict) + for idx, key in enumerate(dict_keys): + obj = getattr(lattice, key) + if ( + hasattr(data[find_keys[idx]], "fixed") + and data[find_keys[idx]].fixed is not None + ): + obj.fixed = data[find_keys[idx]].fixed + if ( + hasattr(data[find_keys[idx]], "error") + and data[find_keys[idx]].error is not None + ): + obj.error = data[find_keys[idx]].error + return lattice + except KeyError: + # Missing Key search for cell setting + for lattice_label in [ + "symmetry_cell_setting", + "space_group_crystal_system", + ]: + if data.get(lattice_label): + lattice_type = data.get(lattice_label).value.lower() + try: + sig = signature(getattr(Lattice, lattice_type)) + required_args = [ + arg for arg in sig.parameters.keys() if arg != "interface" + ] + lengths = [l for l in length_strings if l in required_args] + angles = [a for a in angle_strings if a in required_args] + return self.get_lattice( + lengths, angles, lattice_type=lattice_type + ) + except AttributeError as exc: + self.warnings.append(str(exc)) + else: + return None + + def get_atoms(self, cif_index: int = 0, atoms_class=None): + """ + Generate the an atoms list with adp if available + + :param cif_index: Which lattice do you want. There may be more than one. + :type cif_index: int + :return: Parsed atoms and adp + :rtype: Atoms + """ + Atoms = atoms_class + Site = Atoms._SITE_CLASS + + if cif_index > self.number_of_cifs: + raise AttributeError + loops = self._cif[cif_index]["loops"] + + atoms_obj_name = "atoms" + atoms = Atoms(atoms_obj_name) + # We should have parsed the loop so that there is at least the following + required_fields = [ + "atom_site_label", + "atom_site_type_symbol", + "atom_site_occupancy", + "atom_site_fract_x", + "atom_site_fract_y", + "atom_site_fract_z", + ] + our_fields = ["label", "specie", "occupancy", "fract_x", "fract_y", "fract_z"] + + found = False + for loop in loops: + if set(loop.labels).issuperset(set(required_fields)): + found = True + this_loop: StarLoop = deepcopy(loop) + this_loop.labels = required_fields + for idx, entry in enumerate(loop.data): + this_loop.data[idx]._kwargs = {} + for key in required_fields: + this_loop.data[idx]._kwargs[key] = loop.data[idx]._kwargs[key] + atoms = this_loop.to_class( + Atoms, + Site, + [[k1, k2] for k1, k2 in zip(our_fields, required_fields)], + ) + atoms.name = atoms_obj_name + for idx0, atom in enumerate(atoms): + for idx, key in enumerate(our_fields): + obj = getattr(atom, key) + if ( + hasattr( + loop.data[idx0]._kwargs[required_fields[idx]], "fixed" + ) + and loop.data[idx0]._kwargs[required_fields[idx]].fixed + is not None + ): + obj.fixed = ( + loop.data[idx0]._kwargs[required_fields[idx]].fixed + ) + if ( + hasattr( + loop.data[idx0]._kwargs[required_fields[idx]], "error" + ) + and loop.data[idx0]._kwargs[required_fields[idx]].error + is not None + ): + obj.error = ( + loop.data[idx0]._kwargs[required_fields[idx]].error + ) + break + if not found: + raise AttributeError + # Now look for atomic displacement + fields = [ + "atom_site_U_iso_or_equiv", + "atom_site_aniso_U_11", + "atom_site_B_iso_or_equiv", + "atom_site_aniso_B_11", + ] + adp_types = { + "Uiso": ["Uiso"], + "Uani": ["U_11", "U_12", "U_13", "U_22", "U_23", "U_33"], + "Biso": ["Biso"], + "Bani": ["B_11", "B_12", "B_13", "B_22", "B_23", "B_33"], + } + + found = False + for loop in loops: + for idx0, field in enumerate(fields): + if field in loop.labels: + found = True + needed_labels = [] + adp_type = "Uiso" + if "aniso" in field: + adp_type = "Uani" + # Aniso should always be accompanied by atom_site_aniso_label + if ( + "atom_site_aniso_label" not in loop.labels + and "atom_site_label" in loop.labels + ): + needed_labels.append("atom_site_label") + else: + needed_labels.append("atom_site_aniso_label") + needed_labels.extend( + [ + "atom_site_aniso_U_11", + "atom_site_aniso_U_12", + "atom_site_aniso_U_13", + "atom_site_aniso_U_22", + "atom_site_aniso_U_23", + "atom_site_aniso_U_33", + ] + ) + if "_B_" in field: + needed_labels = [ + this_str.replace("_U_", "_B_") + for this_str in needed_labels + ] + adp_type = "Bani" + else: + needed_labels = ["atom_site_label", field] + if "_B_" in field: + adp_type = "Biso" + these_sections = loop.to_StarSections() + for idx, section in enumerate(these_sections): + if set(loop.labels).issuperset(set(needed_labels)): + data_dict = {} + for idx2, key in enumerate(needed_labels[1:]): + temp_value = section.data[0]._kwargs[key].raw_value + if not isinstance(temp_value, Number): + temp_value = 0 + self.append = self.warnings.append( + f"Atom {section.data[0]._kwargs[needed_labels[0]].raw_value} has non-numeric " + f"{key}. Setting to 0" + ) + data_dict[adp_types[adp_type][idx2]] = temp_value + adps = AtomicDisplacement.from_pars(adp_type, **data_dict) + # Add the errors/fixed + for idx2, key in enumerate(adp_types[adp_type]): + obj = getattr(adps, key) + if ( + hasattr( + section.data[0]._kwargs[ + needed_labels[1 + idx2] + ], + "fixed", + ) + and section.data[0] + ._kwargs[needed_labels[1 + idx2]] + .fixed + is not None + ): + obj.fixed = ( + section.data[0] + ._kwargs[needed_labels[1 + idx2]] + .fixed + ) + if ( + hasattr( + section.data[0]._kwargs[ + needed_labels[1 + idx2] + ], + "error", + ) + and section.data[0] + ._kwargs[needed_labels[1 + idx2]] + .error + is not None + ): + obj.error = ( + section.data[0] + ._kwargs[needed_labels[1 + idx2]] + .error + ) + + current_atom_label = ( + section.data[0]._kwargs[needed_labels[0]].raw_value + ) + # Add to an atom + if current_atom_label in atoms.atom_labels: + idx2 = atoms.atom_labels.index(current_atom_label) + atoms[idx2].adp = adps + else: + raise AttributeError + break + # There is no adp in the cif. Add default + if not found: + for atom in atoms: + self.warnings.append("There is no ADP defined in the CIF") + + # Now look for magnetic susceptibility + fields = ["atom_site_susceptibility_label", "atom_site_susceptibility_chi_type"] + msp_types = { + "Ciso": ["chi"], + "Cani": ["chi_11", "chi_12", "chi_13", "chi_22", "chi_23", "chi_33"], + } + found = False + for loop in loops: + for idx0, field in enumerate(fields): + if field in loop.labels: + found = True + needed_labels = [ + "atom_site_susceptibility_label", + "atom_site_susceptibility_chi_11", + ] + these_sections = loop.to_StarSections() + for idx, section in enumerate(these_sections): + if set(loop.labels).issuperset(set(needed_labels)): + data_dict = {} + msp_type_ext = ( + section.data[0] + ._kwargs["atom_site_susceptibility_chi_type"] + .raw_value + ) + msp_type = "Ciso" + if "ani" in msp_type_ext.lower(): + msp_type = "Cani" + needed_labels = [ + "atom_site_susceptibility_label", + "atom_site_susceptibility_chi_11", + "atom_site_susceptibility_chi_22", + "atom_site_susceptibility_chi_33", + "atom_site_susceptibility_chi_12", + "atom_site_susceptibility_chi_13", + "atom_site_susceptibility_chi_23", + ] + for idx2, key in enumerate(needed_labels[1:]): + temp_value = section.data[0]._kwargs[key].raw_value + if not isinstance(temp_value, Number): + temp_value = 0 + self.append = self.warnings.append( + f"Atom {section.data[0]._kwargs[needed_labels[0]].raw_value} has non-numeric " + f"{key}. Setting to 0" + ) + data_dict[msp_types[msp_type][idx2]] = temp_value + msps = MagneticSusceptibility.from_pars( + msp_type, **data_dict + ) + # Add the errors/fixed + for idx2, key in enumerate(msp_types[msp_type]): + obj = getattr(msps, key) + if ( + hasattr( + section.data[0]._kwargs[ + needed_labels[1 + idx2] + ], + "fixed", + ) + and section.data[0] + ._kwargs[needed_labels[1 + idx2]] + .fixed + is not None + ): + obj.fixed = ( + section.data[0] + ._kwargs[needed_labels[1 + idx2]] + .fixed + ) + if ( + hasattr( + section.data[0]._kwargs[ + needed_labels[1 + idx2] + ], + "error", + ) + and section.data[0] + ._kwargs[needed_labels[1 + idx2]] + .error + is not None + ): + obj.error = ( + section.data[0] + ._kwargs[needed_labels[1 + idx2]] + .error + ) + + current_atom_label = ( + section.data[0]._kwargs[needed_labels[0]].raw_value + ) + # Add to an atom + if current_atom_label in atoms.atom_labels: + idx2 = atoms.atom_labels.index(current_atom_label) + atoms[idx2].msp = msps + else: + raise AttributeError + break + # There is no adp in the cif. Add default + if not found: + for atom in atoms: + self.warnings.append("There is no MSP defined in the CIF") + return atoms + + def get_symmetry(self, cif_index: int = 0): + + data = self._cif[cif_index]["data"] + space_group = None + # All of these keys can be upper and lower case. + lower_labels = [key.lower() for key in data.keys()] + + def caller(str1: str, str2: str, current_sep: str) -> Tuple[bool, str]: + """ + Simple string constructor and checker for different cif standards. + + :param str1: First part of the string + :type str1: str + :param str2: Second part of the string + :type str2: str + :param current_sep: How the string is to be joined. + :type current_sep: str + :return: Has been found in `lower_labels` + :rtype: bool + """ + test_label = str1 + current_sep + str2.lower() + is_found = False + if test_label in lower_labels: + is_found = True + if not is_found: + test_label = test_label + "_" + if test_label in lower_labels: + is_found = True + return is_found, test_label + + def check_hm(code: str) -> dict: + """ + Check to see if the data block contains a Hermann-Mauguin symbol + + :param code: symbol to be checked. + :type code: str + :return: dictionary corresponding to Hermann-Mauguin symbol if found (None otherwise) + :rtype: dict + """ + found_op = None + for op in SpaceGroup2.SYMM_OPS: + if code in [ + op["hermann_mauguin_fmt"], + op["hermann_mauguin"], + op["universal_h_m"], + ]: + found_op = op + break + return found_op + + def check_hall(code): + """ + Check to see if the data block contains a Hall symbol + + :param code: symbol to be checked. + :type code: str + :return: dictionary corresponding to Hall symbol if found (None otherwise) + :rtype: dict + """ + found_op = None + for op in SpaceGroup2.SYMM_OPS: + if op["hall"] in [code, " " + code]: + found_op = op + break + return found_op + + def check_full(code): + """ + Attempt to check to see if the data block contains a full crystallographic symbol + + :param code: symbol to be checked. + :type code: str + :return: dictionary corresponding to full crystallographic symbol if found (None otherwise) + :rtype: dict + """ + code = sub_spgrp(code) + found_op = None + for key in SpaceGroup2.sgencoding.keys(): + if code in [SpaceGroup2.sgencoding[key]["full_symbol"]]: + found_op = check_hm(key) + break + return found_op + + seps = ["_", "."] + # Do the standard H-M lookup. All of these keys may have the form: + # 'C m c m' + # 'C 2/c 2/m 21/m' + # 'A m a m' + for symmetry_label in [ + ["symmetry_space", "group_name_H-M"], + ["space_group", "name_Hall"], + ["space_group", "name_H-M_alt"], + ["symmetry_space", "group_name_Hall"], + ]: + + found = False + this_label = "" + for sep in seps: + found, this_label = caller(symmetry_label[0], symmetry_label[1], sep) + if found: + break + if not found: + continue + + key_idx = lower_labels.index(this_label) + real_symmetry_label = list(data.keys())[key_idx] + + sg = data.get(real_symmetry_label) + sg = sub_spgrp(sg.value) + for check in [check_hm, check_hall, check_full]: + op = check(sg) + if op is not None: + break + if op is None: + pass + setting = "" + if ":" in sg: + setting = sg.split(":")[1] + setting_additional = "space_group.IT_coordinate_system_code" + if setting_additional.lower() in lower_labels: + key_idx = lower_labels.index(setting_additional.lower()) + real_symmetry_setting = list(data.keys())[key_idx] + setting = data.get(real_symmetry_setting).value + if isinstance(setting, float) and setting.is_integer(): + setting = int(setting) + setting = str(setting) + in_string = op["hermann_mauguin_fmt"].split(":")[0] + space_group = SpaceGroup.from_pars(in_string, setting=setting) + if space_group is not None: + return space_group + + # All of these keys can be upper and lower case. + # All of these keys may have the form: + # 'C m c m' + for symmetry_label in [["space_group", "name_H-M_ref"]]: + + found = False + this_label = "" + for sep in seps: + found, this_label = caller(symmetry_label[0], symmetry_label[1], sep) + if found: + break + if not found: + continue + + key_idx = lower_labels.index(this_label) + real_symmetry_label = list(data.keys())[key_idx] + + sg = data.get(real_symmetry_label) + sg = sub_spgrp(sg.value) + for check in [check_hm]: + op = check(sg) + if op is not None: + break + if op is None: + pass + space_group = SpaceGroup.from_pars(op["hermann_mauguin_fmt"]) + if space_group is not None: + return space_group + + # All of these keys can be upper and lower case. + # All of these keys may have the form: + # 'C 2/c 2/m 21/m' + for symmetry_label in [["space_group", "name_H-M_full"]]: + + found = False + this_label = "" + for sep in seps: + found, this_label = caller(symmetry_label[0], symmetry_label[1], sep) + if found: + break + if not found: + continue + + key_idx = lower_labels.index(this_label) + real_symmetry_label = list(data.keys())[key_idx] + + sg = data.get(real_symmetry_label) + sg = sub_spgrp(sg.value) + for check in [check_full]: + op = check(sg) + if op is not None: + break + if op is None: + pass + space_group = SpaceGroup.from_pars(op["hermann_mauguin_fmt"]) + + if space_group is not None: + return space_group + + # Sometimes there's only the spacegroup number + for symmetry_label in [ + ["space_group", "IT_number"], + ["symmetry_Int", "Tables_number"], + ]: + + found = False + this_label = "" + for sep in seps: + found, this_label = caller(symmetry_label[0], symmetry_label[1], sep) + if found: + break + + if not found: + continue + + key_idx = lower_labels.index(this_label) + real_symmetry_label = list(data.keys())[key_idx] + + try: + i = int(str2float(data.get(real_symmetry_label))) + space_group = SpaceGroup.from_int_number(i) + break + except ValueError: + continue + return space_group + + @property + def has_errors(self): + """ + :return: Whether there are errors/warnings detected in CIF parsing. + """ + return len(self.warnings) > 0 + + +class CifWriter: + # """ + # A wrapper around CifFile to write CIF files from easyCore structures. + # """ + + def __init__(self, name, *args, decimal_places: int = 8): + + self.name = name + self._items = list(args) + self.decimal_places = decimal_places + self._cif = self._create_cif_obj() + + @property + def items(self): + return self._items + + @items.setter + def items(self, items): + self._items = items + self._cif = self._create_cif_obj() + + def _create_cif_obj(self) -> dict: + + atoms_must = ["label", "specie", "occupancy", "fract_x", "fract_y", "fract_z"] + atoms_must_conv = [ + "atom_site_label", + "atom_site_type_symbol", + "atom_site_occupancy", + "atom_site_fract_x", + "atom_site_fract_y", + "atom_site_fract_z", + ] + atoms_optional = ["adp_type", "Biso", "Uiso"] + atoms_optional_conv = [ + "atom_site_adp_type", + "atom_site_B_iso_or_equiv", + "atom_site_U_iso_or_equiv", + ] + + adp_U_must = ["label", "U_11", "U_12", "U_13", "U_22", "U_23", "U_33"] + adp_B_must = [item.replace("U_", "B_") for item in adp_U_must] + adp_U_must_conv = [ + "atom_site_aniso_label", + "atom_site_adp_type", + "atom_site_aniso_U_11", + "atom_site_aniso_U_12", + "atom_site_aniso_U_13", + "atom_site_aniso_U_22", + "atom_site_aniso_U_23", + "atom_site_aniso_U_33", + ] + + msp_conv = [ + "atom_site_susceptibility_label", + "atom_site_susceptibility_chi_type", + "atom_site_susceptibility_chi_11", + "atom_site_susceptibility_chi_12", + "atom_site_susceptibility_chi_13", + "atom_site_susceptibility_chi_22", + "atom_site_susceptibility_chi_23", + "atom_site_susceptibility_chi_33", + ] + + adp_B_must_conv = [item.replace("U_", "B_") for item in adp_U_must_conv] + + lattice_must = [ + "length_a", + "length_b", + "length_c", + "angle_alpha", + "angle_beta", + "angle_gamma", + ] + lattice_conv = [ + "cell_length_a", + "cell_length_b", + "cell_length_c", + "cell_angle_alpha", + "cell_angle_beta", + "cell_angle_gamma", + ] + + sg_must = ["_space_group_HM_name"] + sg_conv = ["space_group_name_H-M_alt"] + + blocks = {"header": StarHeader(self.name), "loops": [], "data": {}} + + def parse_block(item: StarLoop): + if set(item.labels).issuperset(set(atoms_must)): + labels = atoms_must_conv.copy() + for idx2, option in enumerate(atoms_optional): + if option in item.labels: + labels.append(atoms_optional_conv[idx2]) + item.labels = labels + elif any(["U_" in opt for opt in item.labels]): + item.labels = adp_U_must_conv.copy() + elif any(["B_" in opt for opt in item.labels]): + item.labels = adp_B_must_conv.copy() + elif any(["chi" in opt for opt in item.labels]): + if len(item.labels) == 8: + item.labels = msp_conv.copy() + else: + item.labels = msp_conv[0:3].copy() + + def parse_section(item: StarSection): + if set(item.labels).issuperset(set(lattice_must)): + item.labels = lattice_conv + if set(item.labels).issuperset(set(sg_must)): + for idx, label in enumerate(sg_must): + if label in item.labels: + item.labels[item.labels.index(label)] = sg_conv[idx] + + def parse_entry(item: StarEntry): + if item.name in sg_must: + item.name = sg_conv[sg_must.index(item.name)] + + for idx, entry_item in enumerate(self._items): + block = self.items[idx].to_star() + if isinstance(block, list): + for item in block: + parse_block(item) + blocks["loops"].extend(block) + elif isinstance(block, StarLoop): + parse_block(block) + blocks["loops"].append(block) + elif isinstance(block, StarSection): + parse_section(block) + entries = block.to_StarEntries() + for entry in entries: + blocks["data"][entry.name] = entry + elif isinstance(block, StarEntry): + parse_entry(block) + blocks["data"][block.name] = block + return blocks + + def __str__(self) -> str: + out_str = "" + if self._cif["header"]: + out_str += str(self._cif["header"]) + "\n\n" + + for key in self._cif["data"].keys(): + out_str += str(self._cif["data"][key]) + "\n" + out_str += "\n" + for item in self._cif["loops"]: + out_str += str(item) + "\n" + return out_str + + @classmethod + def from_CifParser(cls, cif_parser: CifParser): + + obj = [] + for idx in range(cif_parser.number_of_cifs): + this_obj = cls(cif_parser._cif[idx]["header"].name) + this_obj._cif = cif_parser._cif[idx] + obj.append(this_obj) + if len(obj) == 1: + obj = obj[0] + return obj + + +def str2float(text): + """ + Remove uncertainty brackets from strings and return the float. + """ + + try: + # Note that the ending ) is sometimes missing. That is why the code has + # been modified to treat it as optional. Same logic applies to lists. + return float(re.sub(r"\(.+\)*", "", text)) + except TypeError: + if isinstance(text, list) and len(text) == 1: + return float(re.sub(r"\(.+\)*", "", text[0])) + except ValueError as ex: + if text.strip() == ".": + return 0 + raise ex From c9e564a831d3e63e6edee8f61f066d510fd097ff Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 24 Jun 2022 10:22:46 +0200 Subject: [PATCH 289/312] Minor fix to adding components --- easyDiffractionLib/io/cif.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/io/cif.py b/easyDiffractionLib/io/cif.py index e3dd1f17..ea94c8e3 100644 --- a/easyDiffractionLib/io/cif.py +++ b/easyDiffractionLib/io/cif.py @@ -635,7 +635,7 @@ def get_atoms(self, cif_index: int = 0, atoms_class=None): # Add to an atom if current_atom_label in atoms.atom_labels: idx2 = atoms.atom_labels.index(current_atom_label) - atoms[idx2].adp = adps + atoms[idx2]._add_component("adp", adps) else: raise AttributeError break @@ -736,7 +736,7 @@ def get_atoms(self, cif_index: int = 0, atoms_class=None): # Add to an atom if current_atom_label in atoms.atom_labels: idx2 = atoms.atom_labels.index(current_atom_label) - atoms[idx2].msp = msps + atoms[idx2]._add_component("msp", msps) else: raise AttributeError break From 16b284024205602c12224fdd4f84f0a134a60743 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Fri, 24 Jun 2022 10:40:10 +0200 Subject: [PATCH 290/312] Fix order of the magnetic susceptibilities --- easyDiffractionLib/io/cif.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easyDiffractionLib/io/cif.py b/easyDiffractionLib/io/cif.py index e3dd1f17..0392ae36 100644 --- a/easyDiffractionLib/io/cif.py +++ b/easyDiffractionLib/io/cif.py @@ -648,7 +648,7 @@ def get_atoms(self, cif_index: int = 0, atoms_class=None): fields = ["atom_site_susceptibility_label", "atom_site_susceptibility_chi_type"] msp_types = { "Ciso": ["chi"], - "Cani": ["chi_11", "chi_12", "chi_13", "chi_22", "chi_23", "chi_33"], + "Cani": ["chi_11", "chi_22", "chi_33", "chi_12", "chi_13", "chi_23"], } found = False for loop in loops: From 0c746aaec8743df6656508e00c561536d5949085 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 24 Jun 2022 10:48:38 +0200 Subject: [PATCH 291/312] MSP optional for site --- easyDiffractionLib/components/site.py | 86 ++++++++++++++------------- 1 file changed, 46 insertions(+), 40 deletions(-) diff --git a/easyDiffractionLib/components/site.py b/easyDiffractionLib/components/site.py index 228ce6a7..2f3c5f1d 100644 --- a/easyDiffractionLib/components/site.py +++ b/easyDiffractionLib/components/site.py @@ -40,11 +40,10 @@ def __init__( fract_y: Optional[Union[float, Parameter]] = None, fract_z: Optional[Union[float, Parameter]] = None, adp: Optional[Union[str, AtomicDisplacement]] = None, - msp: Optional[Union[str, MagneticSusceptibility]] = None, interface: Optional[iF] = None, **kwargs, ): - + msp = kwargs.get("msp", None) if msp is not None: if isinstance(msp, str): msp = MagneticSusceptibility(msp) @@ -142,44 +141,51 @@ def add_adp(self, main_loop, add_loops): def add_msp(self, main_loop, add_loops): - msps = [hasattr(item, "msp") for item in self] - has_msp = any(msps) - if not has_msp: - # initialize msp so as_dict doesn't throw a fit - for item in self: - msp = MagneticSusceptibility("Ciso") - item.msp = msp - item.msp.default = True - add_loops = [] - msp_types = [ - item.msp.msp_type.raw_value for item in self if hasattr(item, "msp") - ] - if all(msp_types): - if msp_types[0] in ["Cani", "Ciso"]: - loops = [] - for item in self: - if not hasattr(item, "msp"): - msp_item = MagneticSusceptibility(msp_types[0]) - item.msp = msp_item - item.msp.default = False - loops.append(getattr(item, "msp").to_star(item.label)) - msp_loop = StarLoop.from_StarSections(loops) - main_loop = main_loop.join(msp_loop, "label") - else: - pass - entries = [] - for item in self: - if hasattr(item, "msp"): - entries.append(item.msp.to_star(item.label)) - else: - msp = MagneticSusceptibility(msp_types[0]) - item.msp = msp - item.msp.default = False - entries.append(msp.to_star(item.label)) - add_loops.append(StarLoop.from_StarSections(entries)) - else: - raise NotImplementedError("Multiple types of MSP are not supported") - return add_loops + # msps = [hasattr(item, "msp") for item in self] + # has_msp = any(msps) + loops = [] + # if has_msp: + for item in self: + if hasattr(item, "msp"): + loops.append(getattr(item, "msp").to_star(item.label)) + if loops: + add_loops.append(StarLoop.from_StarSections(loops)) + # if not has_msp: + # # initialize msp so as_dict doesn't throw a fit + # for item in self: + # msp = MagneticSusceptibility("Ciso") + # item.msp = msp + # item.msp.default = True + # add_loops = [] + # msp_types = [ + # item.msp.msp_type.raw_value for item in self if hasattr(item, "msp") + # ] + # if all(msp_types): + # if msp_types[0] in ["Cani", "Ciso"]: + # loops = [] + # for item in self: + # if not hasattr(item, "msp"): + # msp_item = MagneticSusceptibility(msp_types[0]) + # item.msp = msp_item + # item.msp.default = False + # loops.append(getattr(item, "msp").to_star(item.label)) + # msp_loop = StarLoop.from_StarSections(loops) + # main_loop = main_loop.join(msp_loop, "label") + # else: + # pass + # entries = [] + # for item in self: + # if hasattr(item, "msp"): + # entries.append(item.msp.to_star(item.label)) + # else: + # msp = MagneticSusceptibility(msp_types[0]) + # item.msp = msp + # item.msp.default = False + # entries.append(msp.to_star(item.label)) + # add_loops.append(StarLoop.from_StarSections(entries)) + # else: + # raise NotImplementedError("Multiple types of MSP are not supported") + # return add_loops class PeriodicAtoms(ecPeriodicAtoms): From d76e36e806d0b3575391ff4e055edf113f73b4cb Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 24 Jun 2022 11:06:51 +0200 Subject: [PATCH 292/312] Fix unpol -> pol switching on cryspyV2 --- easyDiffractionLib/Interfaces/cryspyV2.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index e7d698c9..bad5d60a 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -410,6 +410,8 @@ def create(self, model: B) -> List[ItemContainer]: ) # We have already created a Site in cryspy, now add the MSP elif issubclass(t_, Site) or issubclass(t_, Site_base): + if not hasattr(model, "msp"): + return r_list msp_type = model.msp.msp_type.raw_value pars = model.msp.get_parameters() msp_pars = {par.name: par.raw_value for par in pars} From 423c3e011373af12b5646b388ee537645c8d318b Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Fri, 24 Jun 2022 13:24:27 +0200 Subject: [PATCH 293/312] More pol work --- easyDiffractionLib/calculators/cryspy.py | 32 ++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index 4edf03f0..8f37f94a 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -178,8 +178,6 @@ def attachMSP(self, atom_name: str, msp_name: str, msp_args: Dict[str, float]): msp = cryspy.AtomSiteSusceptibility(chi_type=msp_name, **msp_args) ref_name = str(atom_name) + "_" + msp_name self.storage[ref_name] = msp - # TODO: I do not know if this is the right way to do this - setattr(atom, "susceptibility", msp) return ref_name def assignAtom_toCrystal(self, atom_label: str, crystal_name: str): @@ -378,8 +376,38 @@ def do_calc_setup( phase_lists = [] profiles = [] peak_dat = [] + storage_invert = {v: k for k, v in self.storage.items()} for crystal in crystals: phasesL = cryspy.PhaseL() + atoms = crystal.atom_site + pol_atoms = [] + ass = [] + for atom in atoms: + i = None + l = str(storage_invert[atom]) + "_Cani" + if l in self.storage.keys(): + i = self.storage[l] + l = str(storage_invert[atom]) + "_Ciso" + if l in self.storage.keys(): + i = self.storage[l] + if i is not None: + i.label = atom.label + pol_atoms.append(i) + ii = cryspy.AtomSiteScat() + ii.label = atom.label + ass.append(ii) + if pol_atoms: + asl = cryspy.AtomSiteSusceptibilityL() + asl.items = pol_atoms + sl = cryspy.AtomSiteScatL() + sl.items = ass + setattr(crystal, "atom_site_susceptibility", asl) + setattr(crystal, "atom_site_scat", sl) + else: + if hasattr(crystal, "atom_site_susceptibility"): + delattr(crystal, "atom_site_susceptibility") + if hasattr(crystal, "atom_site_scat"): + delattr(crystal, "atom_site_scat") idx = [ idx for idx, item in enumerate(self.phases.items) From 90544e6b181f3a99784ebccd05b8114926119a4f Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 27 Jun 2022 15:07:23 +0200 Subject: [PATCH 294/312] Add magnetic field option --- easyDiffractionLib/Interfaces/cryspy.py | 9 + easyDiffractionLib/Interfaces/cryspyV2.py | 15 + easyDiffractionLib/Profiles/P1D.py | 494 ++++++------------ easyDiffractionLib/calculators/cryspy.py | 2 +- easyDiffractionLib/components/polarization.py | 79 ++- 5 files changed, 219 insertions(+), 380 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 583fbcae..3365c8de 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -168,6 +168,15 @@ def create(self, model): elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to cryspy objects. self.calculator.pattern = model + if hasattr(model, 'field'): + r_list.append( + ItemContainer( + 'setup', + {"magnetic_field": 'field'}, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) elif issubclass(t_, PolarizedBeam): p_key = self.calculator.createPolarization() r_list.append( diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index bad5d60a..20bb6001 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -376,6 +376,11 @@ class POL(Pol_type): "polarization": "polarization", "efficiency": "efficiency", } + + _field_link = { + 'magnetic_field': 'field' + } + _chi2_link = { "sum": "sum", "diff": "diff", @@ -424,6 +429,16 @@ def create(self, model: B) -> List[ItemContainer]: self.calculator.genericUpdate, ) ) + elif issubclass(t_, Powder1DParameters): + if hasattr(model, 'field'): + r_list.append( + ItemContainer( + 'setup', + self._field_link, + self.calculator.genericReturn, + self.calculator.genericUpdate, + ) + ) return r_list @staticmethod diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index 5b62415f..8a796dcb 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -1,19 +1,21 @@ +from __future__ import annotations + __author__ = "github.com/wardsimon" __version__ = "0.0.1" -from copy import deepcopy -from typing import TypeVar, List +from typing import TypeVar, List, Optional, Union, TYPE_CHECKING, ClassVar from easyCore.Datasets.xarray import xr from easyCore.Objects.ObjectClasses import BaseObj, Parameter -from easyCore.Utils.json import MontyDecoder from easyDiffractionLib.Profiles.common import JobSetup, _DataClassBase from easyDiffractionLib.components.polarization import PolarizedBeam from easyDiffractionLib.elements.Backgrounds.Background import BackgroundContainer -_decoder = MontyDecoder() T = TypeVar("T") +if TYPE_CHECKING: + from easyCore.Utils.typing import iF + class Powder1DSim(_DataClassBase): def __init__(self, dataset): @@ -73,508 +75,322 @@ class Powder1DParameters(BaseObj): _name = "1DPowderProfile" _defaults = { "zero_shift": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "zero_shift", "units": "degree", "value": 0.0, "fixed": True, }, "scale": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "scale", "value": 1, "fixed": True, "enabled": False, }, - "backgrounds": { - "@module": "easyDiffractionLib.elements.Backgrounds.Background", - "@class": "BackgroundContainer", - "@version": "0.0.1", - "data": [], - }, } + zero_shift: ClassVar[Parameter] + scale: ClassVar[Parameter] + backgrounds: ClassVar[BackgroundContainer] + def __init__( self, - zero_shift: Parameter, - scale: Parameter, - backgrounds: BackgroundContainer, - interface=None, - **kwargs + zero_shift: Optional[Union[Parameter, float]] = None, + scale: Optional[Union[Parameter, float]] = None, + backgrounds: Optional[BackgroundContainer] = None, + interface: Optional[iF] = None, + **kwargs, ): super().__init__( self.__class__.__name__, - zero_shift=zero_shift, - scale=scale, - backgrounds=backgrounds, - **kwargs + **{k: Parameter(**self._defaults[k]) for k in self._defaults.keys()}, + backgrounds=BackgroundContainer(), + **kwargs, ) + if zero_shift is not None: + self.zero_shift = zero_shift + if scale is not None: + self.scale = scale + if backgrounds is not None: + self.backgrounds = backgrounds + self.name = self._name self.interface = interface - @staticmethod - def _generate_defaults( - zero_shift: float = _defaults["zero_shift"]["value"], - scale: float = _defaults["scale"]["value"], - ): - defaults = deepcopy(Powder1DParameters._defaults) - defaults["zero_shift"]["value"] = zero_shift - zero_shift = _decoder.process_decoded(defaults["zero_shift"]) - defaults["scale"]["value"] = scale - scale = _decoder.process_decoded(defaults["scale"]) - backgrounds = BackgroundContainer() - return zero_shift, scale, backgrounds - - @classmethod - def from_pars( - cls, - zero_shift: float = _defaults["zero_shift"]["value"], - scale: float = _defaults["scale"]["value"], - ): - zero_shift, scale, backgrounds = cls._generate_defaults(zero_shift, scale) - return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds) - - @classmethod - def default(cls): - defaults = deepcopy(cls._defaults) - defaults = _decoder.process_decoded(defaults) - zero_shift = defaults["zero_shift"] - scale = defaults["scale"] - backgrounds = BackgroundContainer() - # remove dict entries so kwargs can be passed to __init__ - if 'zero_shift' in defaults: - del defaults["zero_shift"] - if 'scale' in defaults: - del defaults["scale"] - if 'backgrounds' in defaults: - del defaults["backgrounds"] - - return cls(zero_shift=zero_shift, scale=scale, backgrounds=backgrounds, **defaults) class PolPowder1DParameters(Powder1DParameters): + polarization: ClassVar[Parameter] + efficiency: ClassVar[Parameter] + field: ClassVar[Parameter] + _defaults = { - "polarization" : PolarizedBeam._defaults['polarization'], - "efficiency" : PolarizedBeam._defaults['efficiency'] + "field": { + 'name': 'magnetic_field', + 'value': 1.0, + 'units': 'T', + 'fixed': True + }, + "polarization": { + "name": "polarization", + "value": 1.0, + "min": 0.0, + "max": 1.0, + "fixed": True, + }, + "efficiency": { + "name": "efficiency", + "value": 1.0, + "min": 0.0, + "max": 1.0, + "fixed": True, + }, } _defaults.update(Powder1DParameters._defaults) def __init__( self, - zero_shift: Parameter, - scale: Parameter, - backgrounds: BackgroundContainer, - polarization: Parameter, - efficiency: Parameter, - interface=None, - **kwargs + zero_shift: Optional[Union[Parameter, float]] = None, + scale: Optional[Union[Parameter, float]] = None, + backgrounds: Optional[BackgroundContainer] = None, + polarization: Optional[Union[Parameter, float]] = None, + efficiency: Optional[Union[Parameter, float]] = None, + field: Optional[Union[Parameter, float]] = None, + interface: Optional[iF] = None, + **kwargs, ): super().__init__( zero_shift=zero_shift, scale=scale, backgrounds=backgrounds, - interface=interface, - polarization=polarization, - efficiency=efficiency, - **kwargs + **kwargs, ) - @classmethod - def from_pars( - cls, - zero_shift: float, - scale: float, - polarization: float, - efficiency: float, - interface=None, - ): - zero_shift, scale, backgrounds = cls._generate_defaults(zero_shift, scale) - beam = PolarizedBeam.from_pars(polarization, efficiency) - return cls( - zero_shift=zero_shift, - scale=scale, - backgrounds=backgrounds, - polarization=polarization, - efficiency=efficiency, - interface=interface, - ) + if polarization is not None: + self.polarization = polarization + if efficiency is not None: + self.efficiency = efficiency + if field is not None: + self.field = field + self.interface = interface class Instrument1DCWParameters(BaseObj): _name = "InstrumentalParameters" _defaults = { "wavelength": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "wavelength", "units": "angstrom", "value": 1.54056, "fixed": True, }, "resolution_u": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "resolution_u", "value": 0.0002, "fixed": True, }, "resolution_v": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "resolution_v", "value": -0.0002, "fixed": True, }, "resolution_w": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "resolution_w", "value": 0.012, "fixed": True, }, "resolution_x": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "resolution_x", "value": 0.0, "fixed": True, }, "resolution_y": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "resolution_y", "value": 0.0, "fixed": True, }, } + wavelength: ClassVar[Parameter] + resolution_u: ClassVar[Parameter] + resolution_v: ClassVar[Parameter] + resolution_w: ClassVar[Parameter] + resolution_x: ClassVar[Parameter] + resolution_y: ClassVar[Parameter] + def __init__( self, - wavelength: Parameter, - resolution_u: Parameter, - resolution_v: Parameter, - resolution_w: Parameter, - resolution_x: Parameter, - resolution_y: Parameter, - interface=None, + wavelength: Optional[Union[Parameter, float]] = None, + resolution_u: Optional[Union[Parameter, float]] = None, + resolution_v: Optional[Union[Parameter, float]] = None, + resolution_w: Optional[Union[Parameter, float]] = None, + resolution_x: Optional[Union[Parameter, float]] = None, + resolution_y: Optional[Union[Parameter, float]] = None, + interface: Optional[iF] = None, ): - super().__init__( - self.__class__.__name__, - wavelength=wavelength, - resolution_u=resolution_u, - resolution_v=resolution_v, - resolution_w=resolution_w, - resolution_x=resolution_x, - resolution_y=resolution_y, + super(Instrument1DCWParameters, self).__init__( + name=self.__class__.__name__, + **{k: Parameter(**self._defaults[k]) for k in self._defaults.keys()}, ) + + if wavelength is not None: + self.wavelength = wavelength + if resolution_u is not None: + self.resolution_u = resolution_u + if resolution_v is not None: + self.resolution_v = resolution_v + if resolution_v is not None: + self.resolution_v = resolution_v + if resolution_w is not None: + self.resolution_w = resolution_w + if resolution_x is not None: + self.resolution_x = resolution_x + if resolution_y is not None: + self.resolution_y = resolution_y self.name = self._name self.interface = interface - @classmethod - def from_pars( - cls, - wavelength: float = _defaults["wavelength"]["value"], - resolution_u: float = _defaults["resolution_u"]["value"], - resolution_v: float = _defaults["resolution_v"]["value"], - resolution_w: float = _defaults["resolution_w"]["value"], - resolution_x: float = _defaults["resolution_x"]["value"], - resolution_y: float = _defaults["resolution_y"]["value"], - ): - defaults = deepcopy(cls._defaults) - defaults["wavelength"]["value"] = wavelength - wavelength = _decoder.process_decoded(defaults["wavelength"]) - defaults["resolution_u"]["value"] = resolution_u - resolution_u = _decoder.process_decoded(defaults["resolution_u"]) - defaults["resolution_v"]["value"] = resolution_v - resolution_v = _decoder.process_decoded(defaults["resolution_v"]) - defaults["resolution_w"]["value"] = resolution_w - resolution_w = _decoder.process_decoded(defaults["resolution_w"]) - defaults["resolution_x"]["value"] = resolution_x - resolution_x = _decoder.process_decoded(defaults["resolution_x"]) - defaults["resolution_y"]["value"] = resolution_y - resolution_y = _decoder.process_decoded(defaults["resolution_y"]) - return cls( - wavelength=wavelength, - resolution_u=resolution_u, - resolution_v=resolution_v, - resolution_w=resolution_w, - resolution_x=resolution_x, - resolution_y=resolution_y, - ) - - @classmethod - def default(cls): - defaults = deepcopy(cls._defaults) - wavelength = _decoder.process_decoded(defaults["wavelength"]) - resolution_u = _decoder.process_decoded(defaults["resolution_u"]) - resolution_v = _decoder.process_decoded(defaults["resolution_v"]) - resolution_w = _decoder.process_decoded(defaults["resolution_w"]) - resolution_x = _decoder.process_decoded(defaults["resolution_x"]) - resolution_y = _decoder.process_decoded(defaults["resolution_y"]) - return cls( - wavelength=wavelength, - resolution_u=resolution_u, - resolution_v=resolution_v, - resolution_w=resolution_w, - resolution_x=resolution_x, - resolution_y=resolution_y, - ) - class Instrument1DTOFParameters(BaseObj): _name = "InstrumentalParameters" _defaults = { "ttheta_bank": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "ttheta_bank", "units": "deg", "value": 145.00, "fixed": True, }, "dtt1": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "dtt1", "units": "deg", "value": 6167.24700, "fixed": True, }, "dtt2": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "dtt2", "units": "deg", "value": -2.28000, "fixed": True, }, "sigma0": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "sigma0", "value": 0.409, "fixed": True, }, "sigma1": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "sigma1", "value": 8.118, "fixed": True, }, "sigma2": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "sigma2", "value": 0.0, "fixed": True, "enabled": False, }, "gamma0": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "gamma0", "value": 0.0, "fixed": True, "enabled": False, }, "gamma1": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "gamma1", "value": 0.0, "fixed": True, "enabled": False, }, "gamma2": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "gamma2", "value": 0.0, "fixed": True, "enabled": False, }, "alpha0": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "alpha0", "value": 0.0, "fixed": True, }, "alpha1": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "alpha1", "value": 0.29710, "fixed": True, }, "beta0": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "beta0", "value": 0.04182, "fixed": True, }, "beta1": { - "@module": "easyCore.Objects.Variable", - "@class": "Parameter", - "@version": "0.0.1", "name": "beta1", "value": 0.00224, "fixed": True, }, } + ttheta_bank: ClassVar[Parameter] + dtt1: ClassVar[Parameter] + dtt2: ClassVar[Parameter] + sigma0: ClassVar[Parameter] + sigma1: ClassVar[Parameter] + sigma2: ClassVar[Parameter] + gamma0: ClassVar[Parameter] + gamma1: ClassVar[Parameter] + gamma2: ClassVar[Parameter] + alpha0: ClassVar[Parameter] + alpha1: ClassVar[Parameter] + beta0: ClassVar[Parameter] + beta1: ClassVar[Parameter] + def __init__( self, - ttheta_bank: Parameter, - dtt1: Parameter, - dtt2: Parameter, - sigma0: Parameter, - sigma1: Parameter, - sigma2: Parameter, - gamma0: Parameter, - gamma1: Parameter, - gamma2: Parameter, - alpha0: Parameter, - alpha1: Parameter, - beta0: Parameter, - beta1: Parameter, - interface=None, + ttheta_bank: Optional[Union[Parameter, float]] = None, + dtt1: Optional[Union[Parameter, float]] = None, + dtt2: Optional[Union[Parameter, float]] = None, + sigma0: Optional[Union[Parameter, float]] = None, + sigma1: Optional[Union[Parameter, float]] = None, + sigma2: Optional[Union[Parameter, float]] = None, + gamma0: Optional[Union[Parameter, float]] = None, + gamma1: Optional[Union[Parameter, float]] = None, + gamma2: Optional[Union[Parameter, float]] = None, + alpha0: Optional[Union[Parameter, float]] = None, + alpha1: Optional[Union[Parameter, float]] = None, + beta0: Optional[Union[Parameter, float]] = None, + beta1: Optional[Union[Parameter, float]] = None, + interface: Optional[iF] = None, ): super().__init__( self.__class__.__name__, - ttheta_bank=ttheta_bank, - dtt1=dtt1, - dtt2=dtt2, - sigma0=sigma0, - sigma1=sigma1, - sigma2=sigma2, - gamma0=gamma0, - gamma1=gamma1, - gamma2=gamma2, - alpha0=alpha0, - alpha1=alpha1, - beta0=beta0, - beta1=beta1, + **{k: Parameter(**self._defaults[k]) for k in self._defaults.keys()}, ) - self.name = self._name - self.interface = interface - @classmethod - def from_pars( - cls, - ttheta_bank: float = _defaults["ttheta_bank"]["value"], - dtt1: float = _defaults["dtt1"]["value"], - dtt2: float = _defaults["dtt2"]["value"], - sigma0: float = _defaults["sigma0"]["value"], - sigma1: float = _defaults["sigma1"]["value"], - sigma2: float = _defaults["sigma2"]["value"], - gamma0: float = _defaults["gamma0"]["value"], - gamma1: float = _defaults["gamma1"]["value"], - gamma2: float = _defaults["gamma2"]["value"], - alpha0: float = _defaults["alpha0"]["value"], - alpha1: float = _defaults["alpha1"]["value"], - beta0: float = _defaults["beta0"]["value"], - beta1: float = _defaults["beta1"]["value"], - ): - defaults = deepcopy(cls._defaults) - defaults["ttheta_bank"]["value"] = ttheta_bank - ttheta_bank = _decoder.process_decoded(defaults["ttheta_bank"]) - defaults["dtt1"]["value"] = dtt1 - dtt1 = _decoder.process_decoded(defaults["dtt1"]) - defaults["dtt2"]["value"] = dtt2 - dtt2 = _decoder.process_decoded(defaults["dtt2"]) - defaults["sigma0"]["value"] = sigma0 - sigma0 = _decoder.process_decoded(defaults["sigma0"]) - defaults["sigma1"]["value"] = sigma1 - sigma1 = _decoder.process_decoded(defaults["sigma1"]) - defaults["sigma2"]["value"] = sigma2 - sigma2 = _decoder.process_decoded(defaults["sigma2"]) - defaults["gamma0"]["value"] = gamma0 - gamma0 = _decoder.process_decoded(defaults["gamma0"]) - defaults["gamma1"]["value"] = gamma1 - gamma1 = _decoder.process_decoded(defaults["gamma1"]) - defaults["gamma2"]["value"] = gamma2 - gamma2 = _decoder.process_decoded(defaults["gamma2"]) - defaults["alpha0"]["value"] = alpha0 - alpha0 = _decoder.process_decoded(defaults["alpha0"]) - defaults["alpha1"]["value"] = alpha1 - alpha1 = _decoder.process_decoded(defaults["alpha1"]) - defaults["beta0"]["value"] = beta0 - beta0 = _decoder.process_decoded(defaults["beta0"]) - defaults["beta1"]["value"] = beta1 - beta1 = _decoder.process_decoded(defaults["beta1"]) - - return cls( - ttheta_bank=ttheta_bank, - dtt1=dtt1, - dtt2=dtt2, - sigma0=sigma0, - sigma1=sigma1, - sigma2=sigma2, - gamma0=gamma0, - gamma1=gamma1, - gamma2=gamma2, - alpha0=alpha0, - alpha1=alpha1, - beta0=beta0, - beta1=beta1, - ) + if ttheta_bank is not None: + self.ttheta_bank = ttheta_bank + if dtt1 is not None: + self.dtt1 = dtt1 + if dtt2 is not None: + self.dtt2 = dtt2 + if sigma0 is not None: + self.sigma0 = sigma0 + if sigma1 is not None: + self.sigma1 = sigma1 + if sigma2 is not None: + self.sigma2 = sigma2 + if gamma0 is not None: + self.gamma0 = gamma0 + if gamma1 is not None: + self.gamma1 = gamma1 + if gamma2 is not None: + self.gamma2 = gamma2 + if alpha0 is not None: + self.alpha0 = alpha0 + if alpha1 is not None: + self.alpha1 = alpha1 + if beta0 is not None: + self.beta0 = beta0 + if beta1 is not None: + self.beta1 = beta1 - @classmethod - def default(cls): - defaults = deepcopy(cls._defaults) - ttheta_bank = _decoder.process_decoded(defaults["ttheta_bank"]) - dtt1 = _decoder.process_decoded(defaults["dtt1"]) - dtt2 = _decoder.process_decoded(defaults["dtt2"]) - sigma0 = _decoder.process_decoded(defaults["sigma0"]) - sigma1 = _decoder.process_decoded(defaults["sigma1"]) - sigma2 = _decoder.process_decoded(defaults["sigma2"]) - gamma0 = _decoder.process_decoded(defaults["gamma0"]) - gamma1 = _decoder.process_decoded(defaults["gamma1"]) - gamma2 = _decoder.process_decoded(defaults["gamma2"]) - alpha0 = _decoder.process_decoded(defaults["alpha0"]) - alpha1 = _decoder.process_decoded(defaults["alpha1"]) - beta0 = _decoder.process_decoded(defaults["beta0"]) - beta1 = _decoder.process_decoded(defaults["beta1"]) - - return cls( - ttheta_bank=ttheta_bank, - dtt1=dtt1, - dtt2=dtt2, - sigma0=sigma0, - sigma1=sigma1, - sigma2=sigma2, - gamma0=gamma0, - gamma1=gamma1, - gamma2=gamma2, - alpha0=alpha0, - alpha1=alpha1, - beta0=beta0, - beta1=beta1, - ) + self.name = self._name + self.interface = interface class Instrument1DCWPolParameters(Instrument1DCWParameters): @@ -595,4 +411,4 @@ class Instrument1DCWPolParameters(Instrument1DCWParameters): Polarized1DTOFClasses = JobSetup( [Powder1DSim, Powder1DExp], PolPowder1DParameters, Instrument1DTOFParameters -) +) \ No newline at end of file diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index 8f37f94a..715813bf 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -212,7 +212,7 @@ def createSetup(self, key: str = "setup", cls_type: Optional[str] = None): if cls_type == "powder1DCW": setup = cryspy.Setup( - wavelength=self.conditions["wavelength"], offset_ttheta=0 + wavelength=self.conditions["wavelength"], offset_ttheta=0, field=0 ) elif cls_type == "powder1DTOF": setup = cryspy.TOFParameters( diff --git a/easyDiffractionLib/components/polarization.py b/easyDiffractionLib/components/polarization.py index 1fc65830..cd02eef4 100644 --- a/easyDiffractionLib/components/polarization.py +++ b/easyDiffractionLib/components/polarization.py @@ -1,53 +1,52 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.0.1' +from __future__ import annotations + +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" + +from typing import ClassVar, Union, Optional, TYPE_CHECKING from easyCore.Objects.ObjectClasses import BaseObj, Parameter -from copy import deepcopy -from easyCore.Utils.json import MontyDecoder -_decoder = MontyDecoder() + + +if TYPE_CHECKING: + from easyCore.Utils.typing import iF class PolarizedBeam(BaseObj): - _name = 'polarized_beam' + _name = "polarized_beam" _defaults = { - 'polarization': { - '@module': 'easyCore.Objects.Variable', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'polarization', - 'value': 1.0, - 'min': 0.0, - 'max': 1.0, + "polarization": { + "name": "polarization", + "value": 1.0, + "min": 0.0, + "max": 1.0, "fixed": True, }, - 'efficiency': { - '@module': 'easyCore.Objects.Variable', - '@class': 'Parameter', - '@version': '0.0.1', - 'name': 'efficiency', - 'value': 1.0, - 'min': 0.0, - 'max': 1.0, + "efficiency": { + "name": "efficiency", + "value": 1.0, + "min": 0.0, + "max": 1.0, "fixed": True, }, } - def __init__(self, polarization: Parameter, efficiency: Parameter, interface=None): - super().__init__(self._name, polarization=polarization, efficiency=efficiency) - self.interface = interface + polarization: ClassVar[Parameter] + efficiency: ClassVar[Parameter] - @classmethod - def from_pars(cls, - polarization: float = _defaults['polarization']['value'], - efficiency: float = _defaults['efficiency']['value'], - interface=None): - defaults = deepcopy(cls._defaults) - defaults['polarization']['value'] = polarization - polarization = _decoder.process_decoded(defaults['polarization']) - defaults['efficiency']['value'] = efficiency - efficiency = _decoder.process_decoded(defaults['efficiency']) - return cls(polarization=polarization, efficiency=efficiency, interface=interface) - - @classmethod - def default(cls, interface=None): - return cls.from_pars(interface=interface) + def __init__( + self, + polarization: Optional[Union[Parameter, float]] = None, + efficiency: Optional[Union[Parameter, float]] = None, + interface: Optional[iF] = None, + ): + super().__init__( + self._name, + polarization=Parameter(**self._defaults["polarization"]), + efficiency=Parameter(**self._defaults["efficiency"]), + ) + if polarization is not None: + self.polarization = polarization + if efficiency is not None: + self.efficiency = efficiency + self.interface = interface From 19cf5f7999091d1c537eb529ef0313e34d6ceed7 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 4 Jul 2022 10:28:02 +0200 Subject: [PATCH 295/312] Temporarily remove normalisation --- easyDiffractionLib/calculators/cryspy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index 715813bf..7dc3ac92 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -13,7 +13,7 @@ warnings.filterwarnings("ignore") -normalization = 500.0 +normalization = 1.0 class Cryspy: From 7fa252c06539f5f729515930a45d7a41e5dc56be Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Tue, 5 Jul 2022 13:13:04 +0200 Subject: [PATCH 296/312] Added get_component getter for retrieving more information from additional_data in calculators --- easyDiffractionLib/Interfaces/CFML.py | 3 +++ easyDiffractionLib/Interfaces/GSASII.py | 3 +++ easyDiffractionLib/Interfaces/cryspy.py | 3 +++ easyDiffractionLib/Interfaces/cryspyV2.py | 3 +++ easyDiffractionLib/calculators/CFML.py | 8 ++++++++ easyDiffractionLib/calculators/cryspy.py | 14 ++++++++------ easyDiffractionLib/interface.py | 3 +++ 7 files changed, 31 insertions(+), 6 deletions(-) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index 5ad02cc6..d1506bd6 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -199,6 +199,9 @@ def get_value(self, key, item_key): def get_phase_components(self, phase_name): return None + def get_component(self, component_name): + return self.calculator.get_component(component_name) + def get_calculated_y_for_phase(self, phase_idx: int) -> list: return self.calculator.get_calculated_y_for_phase(phase_idx) diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index b0819147..a0236ef0 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -164,6 +164,9 @@ def __createModel(self, model): def get_phase_components(self, phase_name): return None + def get_component(self, component_name): + return None + @staticmethod def __identify(obj): return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index 3365c8de..b1067d99 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -351,6 +351,9 @@ def get_phase_components(self, phase_name): data = self.calculator.get_phase_components(phase_name) return data + def get_component(self, component_name): + return self.calculator.get_component(component_name) + def __createModel(self, model, model_type): self.calculator.createModel(model, model_type) diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 20bb6001..16209b0a 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -217,6 +217,9 @@ def get_hkl( """ return self.calculator.get_hkl(idx, phase_name, encoded_name) + def get_component(self, component_name): + return self.calculator.get_component(component_name) + def get_phase_components(self, phase_name: str) -> dict: """ Get all the components of a phase as specified by the phase name. diff --git a/easyDiffractionLib/calculators/CFML.py b/easyDiffractionLib/calculators/CFML.py index 257abfca..f135285f 100644 --- a/easyDiffractionLib/calculators/CFML.py +++ b/easyDiffractionLib/calculators/CFML.py @@ -206,6 +206,14 @@ def remove_phase(self, phases_id): if name in self.additional_data["phases"].keys(): del self.additional_data["phases"][name] + def get_component(self, component_name=None): + data = None + if component_name is None: + data = self.additional_data.copy() + elif component_name in self.additional_data: + data = self.additional_data[component_name].copy() + return data + def get_phase_components(self, phase_name): data = None if phase_name in self.additional_data["phase_names"]: diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index 715813bf..9bd049a7 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -534,6 +534,14 @@ def get_hkl( phase_name = list(self.current_crystal.values())[idx] return self.additional_data["phases"][phase_name]["hkl"] + def get_component(self, component_name=None) -> Optional[dict]: + data = None + if component_name is None: + data = self.additional_data.copy() + elif component_name in self.additional_data: + data = self.additional_data[component_name].copy() + return data + @staticmethod def nonPolarized_update(crystals, profiles, peak_dat, scales, x_str): dependent = np.array([profile.intensity_total for profile in profiles]) @@ -587,12 +595,6 @@ def polarized_update(func, crystals, profiles, peak_dat, scales, x_str): ) return dependent, output - def get_phase_components(self, phase_name: str) -> Optional[dict]: - data = None - if phase_name in self.additional_data["phase_names"]: - data = self.additional_data[phase_name].copy() - return data - def _do_run( model, diff --git a/easyDiffractionLib/interface.py b/easyDiffractionLib/interface.py index c860048c..1a5385cb 100644 --- a/easyDiffractionLib/interface.py +++ b/easyDiffractionLib/interface.py @@ -23,6 +23,9 @@ def get_calculated_y_for_phase(self, idx=None) -> list: def get_phase_components(self, phase_name): return self().get_phase_components(phase_name) + def get_component(self, component_name): + return self().get_component(component_name) + def interface_compatability(self, check_str: str) -> List[str]: compatible_interfaces = [] for interface in self._interfaces: From fd86ed2cf2c0a37a0f71055ab320d98e593a37ae Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 6 Jul 2022 10:13:15 +0200 Subject: [PATCH 297/312] Update returned up/down profiles to match total --- easyDiffractionLib/calculators/cryspy.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index f16b858c..541a7349 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -585,8 +585,8 @@ def polarized_update(func, crystals, profiles, peak_dat, scales, x_str): "profile": scales[idx] * dependent[idx, :] / normalization, "components": { "total": dependent[idx, :], - "up": up[idx, :], - "down": down[idx, :], + "up": scales[idx] * up[idx, :] / normalization, + "down": scales[idx] * down[idx, :] / normalization, }, "profile_scale": scales[idx], "func": func, From 4a367ff3465756de922b57469c7b9fd222aeeaf2 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 6 Jul 2022 12:06:27 +0200 Subject: [PATCH 298/312] Ci fix (#45) * Try with >=3.8 * remove 3.7 in more places * One more occurence --- .github/workflows/unit_test.yml | 2 +- pyproject.toml | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/unit_test.yml b/.github/workflows/unit_test.yml index 7e594801..84641bf2 100644 --- a/.github/workflows/unit_test.yml +++ b/.github/workflows/unit_test.yml @@ -38,7 +38,7 @@ jobs: - name: Set up Python environment uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: 3.8 - name: Some logging shell: bash diff --git a/pyproject.toml b/pyproject.toml index 439fe3f5..4bd86d0c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ include = ["CHANGELOG.md"] packages = [ { include = "easyDiffractionLib" } ] [tool.poetry.dependencies] -python = "^3.7, <3.9" +python = "^3.8, <3.9" cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } CFML = '^0.0.1' GSASII = '^0.0.1' @@ -57,10 +57,9 @@ secondary = true legacy_tox_ini = """ [tox] isolated_build = True -envlist = py{37,38,39} +envlist = py{38,39} [gh-actions] python = - 3.7: py37 3.8: py38 3.9: py39 [gh-actions:env] From 4556f09d5d0c425a7eeb8425a6036295269c3b16 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 6 Jul 2022 13:32:13 +0200 Subject: [PATCH 299/312] Update pyproject.toml --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4bd86d0c..88175f32 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,8 +35,8 @@ python = "^3.8, <3.9" cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fix' } CFML = '^0.0.1' GSASII = '^0.0.1' -easyScienceCore = '>=0.2.0' -easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'polatization' } +easyScienceCore = '>=0.2.3' +easyCrystallography = '>=0.1.2' [tool.poetry.dev-dependencies] pytest = "^7.1" From 3418a024fb7fe0bb883faaf7043f34896a119843 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Wed, 6 Jul 2022 13:32:45 +0200 Subject: [PATCH 300/312] Update requirements.txt --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 3df56d3c..7bfaa77b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ cryspy @ git+https://github.com/ikibalin/cryspy.git@bravis_type_fix --extra-index-url https://easyscience.github.io/pypi -easysciencecore @ git+https://github.com/easyScience/easyCore.git@easyCrystallography_Split -easycrystallography @ git+https://github.com/easyScience/easyCrystallography.git@develop +easysciencecore==0.2.3 +easycrystallography==0.1.2 cfml==0.0.1 gsasii==0.0.1 From 212721bb01abc8fb19327959d9f9cdfd327c56e3 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Tue, 12 Jul 2022 12:17:47 +0200 Subject: [PATCH 301/312] Add methods to V2 --- easyDiffractionLib/Interfaces/cryspyV2.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 16209b0a..4ecc93b6 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -682,3 +682,15 @@ def get_calculated_y_for_phase(self, idx: Optional[int] = None) -> list: def get_total_y_for_phases(self) -> list: if self._internal is not None: return self._internal.get_total_y_for_phases() + + def get_component(self, component_name): + if self._internal is not None: + return self._internal.get_component(component_name) + + def get_phase_components(self, phase_name: str) -> dict: + """ + Get all the components of a phase as specified by the phase name. + """ + if self._internal is not None: + data = self._internal.get_phase_components(phase_name) + return data From 5710ccaf3dcf5b8846b6b76fea7acd1a346f855f Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 13 Jul 2022 13:28:29 +0200 Subject: [PATCH 302/312] Have the CFML and GSAS interfaces understand extended feature string --- easyDiffractionLib/Interfaces/CFML.py | 4 ++-- easyDiffractionLib/Interfaces/GSASII.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/easyDiffractionLib/Interfaces/CFML.py b/easyDiffractionLib/Interfaces/CFML.py index d1506bd6..7f17c7f4 100644 --- a/easyDiffractionLib/Interfaces/CFML.py +++ b/easyDiffractionLib/Interfaces/CFML.py @@ -53,7 +53,7 @@ class CFML(InterfaceTemplate): } _pattern_link = {"scale": "scale", "x_offset": "x_offset"} - feature_available = {"Npowder1DCW": True} + feature_available = {"Npowder1DCW": True, "Npowder1DCWunp": True} name = "CrysFML" @@ -123,7 +123,7 @@ def create(self, model): self.calculator.add_phase(str(model_key), model.name) elif issubclass(t_, Sample): self.__createModel(model) - elif t_.__name__ in ["Powder1DCW", "powder1DCW", "Npowder1DCW"]: + elif t_.__name__ in ["Powder1DCW", "powder1DCW", "Npowder1DCW", "Npowder1DCWunp"]: self.__createModel(model) else: if self._borg.debug: diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index a0236ef0..5e730953 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -54,7 +54,8 @@ class GSASII(InterfaceTemplate): } feature_available = { - 'Npowder1DCW': True + 'Npowder1DCW': True, + 'Npowder1DCWunp': True } name = 'GSASII' @@ -108,7 +109,7 @@ def create(self, model): self.dump_cif)) elif issubclass(t_, Phases): self._phase = model - elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW']: + elif t_.__name__ in ['Powder1DCW', 'powder1DCW', 'Npowder1DCW', 'Npowder1DCWunp']: # #TODO Check to see if parameters and pattern should be initialized here. self.__createModel(model_key, 'powder1DCW') elif issubclass(t_, Sample): From fc928ae38716ad06b4f1ac02f6ae017a9b245657 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Wed, 13 Jul 2022 16:18:50 +0200 Subject: [PATCH 303/312] Disabled cryspyV2 interface for the time being --- easyDiffractionLib/Interfaces/__init__.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/easyDiffractionLib/Interfaces/__init__.py b/easyDiffractionLib/Interfaces/__init__.py index 71c2ee1f..04a5218b 100644 --- a/easyDiffractionLib/Interfaces/__init__.py +++ b/easyDiffractionLib/Interfaces/__init__.py @@ -13,11 +13,11 @@ print('Warning: CrysPy is not installed') -try: - from easyDiffractionLib.Interfaces.cryspyV2 import CryspyBase # noqa: F401 -except ImportError: - # TODO make this a proper message (use logging?) - print('Warning: CrysPy is not installed') +# try: +# from easyDiffractionLib.Interfaces.cryspyV2 import CryspyBase # noqa: F401 +# except ImportError: +# # TODO make this a proper message (use logging?) +# print('Warning: CrysPy is not installed') try: from easyDiffractionLib.Interfaces.CFML import CFML # noqa: F401 From 747bca9d15db3b740a9bf514eacde916de00b085 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 14 Jul 2022 08:15:29 +0200 Subject: [PATCH 304/312] Fix get hkl for CrysFML calculator --- easyDiffractionLib/calculators/CFML.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/easyDiffractionLib/calculators/CFML.py b/easyDiffractionLib/calculators/CFML.py index f135285f..c9bea2be 100644 --- a/easyDiffractionLib/calculators/CFML.py +++ b/easyDiffractionLib/calculators/CFML.py @@ -152,10 +152,13 @@ def get_hkl(self, x_array: np.ndarray = None, idx=0, phase_name=None, encoded_na _ = self.calculate(x_array) # Collate and return - if phase_name is None: - known_phases = list(self.known_phases.values()) - phase_name = known_phases[idx] - phase_data = self.additional_data.get(phase_name, {}) + #if phase_name is None: + # known_phases = list(self.known_phases.values()) + # phase_name = known_phases[idx] + #phase_data = self.additional_data.get(phase_name, {}) + # Temp fix to get phase_data + full_phase_name = self.additional_data['phase_names'][idx] + phase_data = self.additional_data['phases'].get(full_phase_name) return phase_data.get( "hkl", { From 32610c20581c4028c018f27712160c9568b56261 Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Thu, 14 Jul 2022 10:47:03 +0200 Subject: [PATCH 305/312] Auto stash before merge of "polarizedV2" and "origin/release-0.8.4" --- easyDiffractionLib/Interfaces/cryspy.py | 7 +- easyDiffractionLib/Interfaces/cryspyV2.py | 44 +- easyDiffractionLib/Jobs.py | 153 ++++-- easyDiffractionLib/Profiles/P1D.py | 66 +-- easyDiffractionLib/Profiles/common.py | 105 ++-- easyDiffractionLib/calculators/cryspy.py | 45 +- easyDiffractionLib/sample.py | 108 +++-- examples/Polarized.ipynb | 559 ++++++++++++++++++++++ requirements.txt | 2 +- 9 files changed, 937 insertions(+), 152 deletions(-) create mode 100644 examples/Polarized.ipynb diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index b1067d99..f9cba611 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -168,15 +168,16 @@ def create(self, model): elif issubclass(t_, Powder1DParameters): # These parameters do not link directly to cryspy objects. self.calculator.pattern = model - if hasattr(model, 'field'): + if hasattr(model, "field"): r_list.append( ItemContainer( - 'setup', - {"magnetic_field": 'field'}, + "setup", + {"magnetic_field": "field"}, self.calculator.genericReturn, self.calculator.genericUpdate, ) ) + self.calculator.polarized = True elif issubclass(t_, PolarizedBeam): p_key = self.calculator.createPolarization() r_list.append( diff --git a/easyDiffractionLib/Interfaces/cryspyV2.py b/easyDiffractionLib/Interfaces/cryspyV2.py index 4ecc93b6..203003a8 100644 --- a/easyDiffractionLib/Interfaces/cryspyV2.py +++ b/easyDiffractionLib/Interfaces/cryspyV2.py @@ -380,9 +380,7 @@ class POL(Pol_type): "efficiency": "efficiency", } - _field_link = { - 'magnetic_field': 'field' - } + _field_link = {"magnetic_field": "field"} _chi2_link = { "sum": "sum", @@ -433,10 +431,10 @@ def create(self, model: B) -> List[ItemContainer]: ) ) elif issubclass(t_, Powder1DParameters): - if hasattr(model, 'field'): + if hasattr(model, "field"): r_list.append( ItemContainer( - 'setup', + "setup", self._field_link, self.calculator.genericReturn, self.calculator.genericUpdate, @@ -500,6 +498,21 @@ def fit_func( pol_fn = self.up_plus_down return self.calculator.calculate(x_array, pol_fn=pol_fn, **kwargs) + def full_callback( + self, + x_array: np.ndarray, + pol_fn: Optional[Callable[[np.ndarray, np.ndarray], np.ndarray]] = None, + **kwargs, + ) -> np.ndarray: + """ + Calculate the polarization components. + :param x_array: points to be calculated at + :return: calculated points + """ + if pol_fn is None: + pol_fn = self.up_plus_down + return self.calculator.full_calculate(x_array, pol_fn=pol_fn, **kwargs) + class UPol(UPol_type): def create(self, model: B) -> List[ItemContainer]: @@ -514,6 +527,14 @@ def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> np.ndarray: """ return self.calculator.calculate(x_array, *args, **kwargs) + def full_callback(self, x_array: np.ndarray, *args, **kwargs) -> np.ndarray: + """ + Function to perform a fit. + :param x_array: points to be calculated at + :return: calculated points + """ + return self.calculator.full_calculate(x_array, *args, **kwargs) + # # Now define the classes that implement the different types of models. @@ -615,6 +636,7 @@ class CryspyV2(InterfaceTemplate): def __init__(self): self.calculator = Cryspy_calc() self._internal = None + self._last_callback = {} @staticmethod def feature_checker( @@ -639,11 +661,12 @@ def create(self, model: B): cls = self._get_constructor(CryspyBase._subsets, model) if cls is not None and cls is not self._internal.__class__: self._internal = cls(calculator=self.calculator) - return self._internal.create(model) + if self._internal is not None: + return self._internal.create(model) + return [] def __call__(self, *args, **kwargs) -> np.ndarray: - if self._internal is not None: - return self._internal.fit_func(*args, **kwargs) + return self.fit_func(*args, **kwargs) def link_atom(self, phase: Phase, atom: Union[Site, Site_base]) -> None: if self._internal is not None: @@ -663,7 +686,10 @@ def remove_phase(self, phases_obj, phase_obj: Phase) -> None: def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> Union[np.ndarray, None]: if self._internal is not None: - return self._internal.fit_func(x_array, *args, **kwargs) + calculation, self._last_callback = self._internal.full_callback( + x_array, *args, **kwargs + ) + return calculation def get_hkl( self, diff --git a/easyDiffractionLib/Jobs.py b/easyDiffractionLib/Jobs.py index f83675a6..3b1dfbb3 100644 --- a/easyDiffractionLib/Jobs.py +++ b/easyDiffractionLib/Jobs.py @@ -1,19 +1,41 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.1.1' +__author__ = "github.com/wardsimon" +__version__ = "0.1.1" from easyCore.Datasets.xarray import xr, np from easyDiffractionLib.Profiles.common import _PowderBase from easyDiffractionLib.interface import InterfaceFactory from easyCore.Fitting.Fitting import Fitter +try: + import hvplot.xarray # noqa + + USE_HVPLOT = True +except ImportError: + USE_HVPLOT = False -class JobBase_1D(_PowderBase): - def __init__(self, name: str, profileClass, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): +class JobBase_1D(_PowderBase): + def __init__( + self, + name: str, + profileClass, + datastore: xr.Dataset, + phases=None, + parameters=None, + pattern=None, + ): interface = InterfaceFactory() - super(JobBase_1D, self).__init__(name, profileClass, datastore, phases, parameters, pattern, interface=interface) - self._x_axis_name = '' - self._y_axis_prefix = 'Intensity_' + super(JobBase_1D, self).__init__( + name, + profileClass, + datastore, + phases, + parameters, + pattern, + interface=interface, + ) + self._x_axis_name = "" + self._y_axis_prefix = "Intensity_" @property def simulation_data(self): @@ -23,19 +45,28 @@ def simulation_data(self): data = self.datastore.store[sim_name] return data - def create_simulation(self, tth, simulation_name=None): + def create_simulation(self, tth, simulation_name=None, **kwargs): if not isinstance(tth, xr.DataArray): - coord_name = self.datastore._simulations._simulation_prefix + self.name + '_' + self._x_axis_name + coord_name = ( + self.datastore._simulations._simulation_prefix + + self.name + + "_" + + self._x_axis_name + ) self.datastore.add_coordinate(coord_name, tth) self.datastore.store[coord_name].name = self._x_axis_name else: coord_name = tth.name - x, f = self.datastore.store[coord_name].easyCore.fit_prep(self.interface.fit_func, - bdims=xr.broadcast(self.datastore.store[coord_name].transpose())) - y = xr.apply_ufunc(f, *x) - y.name = self._y_axis_prefix + self.name + '_sim' + x, f = self.datastore.store[coord_name].easyCore.fit_prep( + self.interface.fit_func, + bdims=xr.broadcast(self.datastore.store[coord_name].transpose()), + ) + y = xr.apply_ufunc(f, *x, kwargs=kwargs) + y.name = self._y_axis_prefix + self.name + "_sim" if simulation_name is None: simulation_name = self.name + else: + simulation_name = self.name + "_" + simulation_name self.datastore._simulations.add_simulation(simulation_name, y) return y @@ -43,51 +74,105 @@ def plot_simulation(self, simulation_name=None): if simulation_name is None: sim_name = self.datastore._simulations._simulation_prefix + self.name else: - sim_name = self.datastore._simulations._simulation_prefix + self.name + '_' + simulation_name + sim_name = ( + self.datastore._simulations._simulation_prefix + + self.name + + "_" + + simulation_name + ) return self.datastore.store[sim_name].plot() def add_experiment(self, experiment_name, file_path): data_x, data_y, data_e = np.loadtxt(file_path, unpack=True) - coord_name = self.name + '_' + experiment_name + '_' + self._x_axis_name + coord_name = self.name + "_" + experiment_name + "_" + self._x_axis_name self.datastore.store.easyCore.add_coordinate(coord_name, data_x) - self.datastore.store.easyCore.add_variable(self.name + '_' + experiment_name + '_I', [coord_name], data_y) - self.datastore.store.easyCore.sigma_attach(self.name + '_' + experiment_name + '_I', data_e) + self.datastore.store.easyCore.add_variable( + self.name + "_" + experiment_name + "_I", [coord_name], data_y + ) + self.datastore.store.easyCore.sigma_attach( + self.name + "_" + experiment_name + "_I", data_e + ) # self._experiments[] - def simulate_experiment(self, experiment_name=None): - tth_name = self.name + '_' + experiment_name + '_' + self._x_axis_name + def simulate_experiment(self, experiment_name=None, **kwargs): + tth_name = self.name + "_" + experiment_name + "_" + self._x_axis_name tth = self.datastore.store[tth_name] - return self.create_simulation(tth, simulation_name=self.name + '_' + experiment_name) + return self.create_simulation( + tth, simulation_name=self.name + "_" + experiment_name, **kwargs + ) def plot_experiment(self, experiment_name=None): - dataarray_name = self.name + '_' + experiment_name + '_I' + dataarray_name = self.name + "_" + experiment_name + "_I" return self.datastore.store[dataarray_name].plot() - def fit_experiment(self, experiment_name, fitter=None): - dataarray_name = self.name + '_' + experiment_name + '_I' + def fit_experiment(self, experiment_name, fitter=None, **kwargs): + dataarray_name = self.name + "_" + experiment_name + "_I" if fitter is None: fitter = Fitter(self, self.interface.fit_func) return self.datastore.store[dataarray_name].easyCore.fit(fitter) class Powder1DCW(JobBase_1D): - - def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): + def __init__( + self, + name: str, + datastore: xr.Dataset, + phases=None, + parameters=None, + pattern=None, + ): from easyDiffractionLib.Profiles.P1D import Unpolarized1DClasses - super(Powder1DCW, self).__init__(name, Unpolarized1DClasses, datastore, phases, parameters, pattern) - self._x_axis_name = 'tth' + + super(Powder1DCW, self).__init__( + name, Unpolarized1DClasses, datastore, phases, parameters, pattern + ) + self._x_axis_name = "tth" class PolPowder1DCW(JobBase_1D): - def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): + def __init__( + self, + name: str, + datastore: xr.Dataset, + phases=None, + parameters=None, + pattern=None, + ): from easyDiffractionLib.Profiles.P1D import Polarized1DClasses - super(PolPowder1DCW, self).__init__(name, Polarized1DClasses, datastore, phases, parameters, pattern) - self._x_axis_name = 'tth' -class Powder1DTOF(JobBase_1D): + super(PolPowder1DCW, self).__init__( + name, Polarized1DClasses, datastore, phases, parameters, pattern + ) + self._x_axis_name = "tth" + + def simulate_experiment(self, experiment_name=None, pol_fn=None): + if pol_fn is None: + pol_fn = lambda up, down: up + down + return super(PolPowder1DCW, self).simulate_experiment( + experiment_name, pol_fn=pol_fn + ) + + def create_simulation(self, tth, simulation_name=None, pol_fn=None, **kwargs): + if pol_fn is None: + pol_fn = lambda up, down: up + down + return super(PolPowder1DCW, self).create_simulation( + tth, simulation_name, pol_fn=pol_fn, **kwargs + ) - def __init__(self, name: str, datastore: xr.Dataset, phases=None, parameters=None, pattern=None): + +class Powder1DTOF(JobBase_1D): + def __init__( + self, + name: str, + datastore: xr.Dataset, + phases=None, + parameters=None, + pattern=None, + ): from easyDiffractionLib.Profiles.P1D import Unpolarized1DTOFClasses - super(Powder1DTOF, self).__init__(name, Unpolarized1DTOFClasses, datastore, phases, parameters, pattern) - self._x_axis_name = 'time' + + super(Powder1DTOF, self).__init__( + name, Unpolarized1DTOFClasses, datastore, phases, parameters, pattern + ) + self._x_axis_name = "time" diff --git a/easyDiffractionLib/Profiles/P1D.py b/easyDiffractionLib/Profiles/P1D.py index 8a796dcb..95bac6d7 100644 --- a/easyDiffractionLib/Profiles/P1D.py +++ b/easyDiffractionLib/Profiles/P1D.py @@ -3,7 +3,7 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.1" -from typing import TypeVar, List, Optional, Union, TYPE_CHECKING, ClassVar +from typing import TypeVar, List, Optional, Union, TYPE_CHECKING, ClassVar, Tuple from easyCore.Datasets.xarray import xr from easyCore.Objects.ObjectClasses import BaseObj, Parameter @@ -118,31 +118,13 @@ def __init__( class PolPowder1DParameters(Powder1DParameters): - polarization: ClassVar[Parameter] - efficiency: ClassVar[Parameter] + # polarization: ClassVar[Parameter] + # efficiency: ClassVar[Parameter] field: ClassVar[Parameter] + beam: ClassVar[PolarizedBeam] _defaults = { - "field": { - 'name': 'magnetic_field', - 'value': 1.0, - 'units': 'T', - 'fixed': True - }, - "polarization": { - "name": "polarization", - "value": 1.0, - "min": 0.0, - "max": 1.0, - "fixed": True, - }, - "efficiency": { - "name": "efficiency", - "value": 1.0, - "min": 0.0, - "max": 1.0, - "fixed": True, - }, + "field": {"name": "magnetic_field", "value": 1.0, "units": "T", "fixed": True}, } _defaults.update(Powder1DParameters._defaults) @@ -151,27 +133,49 @@ def __init__( zero_shift: Optional[Union[Parameter, float]] = None, scale: Optional[Union[Parameter, float]] = None, backgrounds: Optional[BackgroundContainer] = None, - polarization: Optional[Union[Parameter, float]] = None, - efficiency: Optional[Union[Parameter, float]] = None, + beam: Optional[Union[PolarizedBeam, Tuple[float, float]]] = None, field: Optional[Union[Parameter, float]] = None, interface: Optional[iF] = None, **kwargs, ): + polarization = None + if "polarization" in kwargs.keys(): + polarization = kwargs.pop("polarization") + efficiency = None + if "efficiency" in kwargs.keys(): + efficiency = kwargs.pop("efficiency") + + if beam is None: + beam = PolarizedBeam(polarization=polarization, efficiency=efficiency) + if isinstance(beam, tuple): + beam = PolarizedBeam(*beam) + else: + if polarization is not None: + beam.polarization = polarization + if efficiency is not None: + beam.efficiency = efficiency + + kwargs["beam"] = beam + super().__init__( zero_shift=zero_shift, scale=scale, backgrounds=backgrounds, **kwargs, ) - - if polarization is not None: - self.polarization = polarization - if efficiency is not None: - self.efficiency = efficiency if field is not None: self.field = field + self.interface = interface + @property + def polarization(self): + return self.beam.polarization + + @property + def efficiency(self): + return self.beam.efficiency + class Instrument1DCWParameters(BaseObj): _name = "InstrumentalParameters" @@ -411,4 +415,4 @@ class Instrument1DCWPolParameters(Instrument1DCWParameters): Polarized1DTOFClasses = JobSetup( [Powder1DSim, Powder1DExp], PolPowder1DParameters, Instrument1DTOFParameters -) \ No newline at end of file +) diff --git a/easyDiffractionLib/Profiles/common.py b/easyDiffractionLib/Profiles/common.py index d600ca9c..db656034 100644 --- a/easyDiffractionLib/Profiles/common.py +++ b/easyDiffractionLib/Profiles/common.py @@ -1,5 +1,5 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.0.1' +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" import os import tempfile @@ -11,7 +11,7 @@ from easyCore.Datasets.xarray import xr -DataClassBaseType = TypeVar('DataClassBaseType', bound='_DataClassBase') +DataClassBaseType = TypeVar("DataClassBaseType", bound="_DataClassBase") class _DataClassBase: @@ -20,7 +20,6 @@ def __init__(self, dataset): class DataContainer: - def __init__(self, sim_store: DataClassBaseType, exp_store: DataClassBaseType): self._simulations = sim_store self._experiments = exp_store @@ -52,44 +51,79 @@ def add_variable(self, variable_name, variable_coordinates, values): class JobSetup: - def __init__(self, datastore_classes, - instrumental_parameter_class, - pattern_class): + def __init__(self, datastore_classes, instrumental_parameter_class, pattern_class): self.datastore_classes = datastore_classes self.instrumental_parameter_class = instrumental_parameter_class self.pattern_class = pattern_class class _PowderBase(BaseObj): - def __init__(self, - name: str = '', - job_type=None, - datastore: xr.Dataset = None, - phases: Union[Phase, Phases] = None, - parameters=None, - pattern=None, - interface=None): + def __init__( + self, + name: str = "", + job_type=None, + datastore: xr.Dataset = None, + phases: Union[Phase, Phases] = None, + parameters=None, + pattern=None, + interface=None, + ): if isinstance(phases, Phase): - phases = Phases('Phases', phases) + phases = Phases("Phases", phases) elif phases is None: - phases = Phases('Phases') + phases = Phases("Phases") if not isinstance(phases, Phases): - raise AttributeError('`phases` must be a Crystal or Crystals') + raise AttributeError("`phases` must be a Crystal or Crystals") if parameters is None: - parameters = job_type.pattern_class.default() + parameters = job_type.pattern_class() if pattern is None: - pattern = job_type.instrumental_parameter_class.default() + pattern = job_type.instrumental_parameter_class() + + super(_PowderBase, self).__init__( + name, _phases=phases, _parameters=parameters, _pattern=pattern + ) + + from easyDiffractionLib.Profiles.P1D import ( + Instrument1DCWParameters, + Instrument1DTOFParameters, + ) + from easyDiffractionLib.Interfaces.types import Powder, Neutron + from easyDiffractionLib.Profiles.P1D import Powder1DParameters as Pattern1D + from easyDiffractionLib.Profiles.P1D import ( + PolPowder1DParameters as Pattern1D_Pol, + ) + + # Set bases for easy identification + self._update_bases(Powder) + self._update_bases(Neutron) + + if getattr(pattern, "__old_class__", pattern.__class__) == Pattern1D: + from easyDiffractionLib.Interfaces.types import UPol - super(_PowderBase, self).__init__(name, _phases=phases, _parameters=parameters, _pattern=pattern) + self._update_bases(UPol) + elif getattr(pattern, "__old_class__", pattern.__class__) == Pattern1D_Pol: + from easyDiffractionLib.Interfaces.types import Pol + + self._update_bases(Pol) + if isinstance(parameters, Instrument1DCWParameters): + from easyDiffractionLib.Interfaces.types import CW + + self._update_bases(CW) + elif isinstance(parameters, Instrument1DTOFParameters): + from easyDiffractionLib.Interfaces.types import TOF + + self._update_bases(TOF) self.__constituting_classes = job_type self.__dataset = datastore - self.datastore = DataContainer.prepare(self.__dataset, *job_type.datastore_classes) + self.datastore = DataContainer.prepare( + self.__dataset, *job_type.datastore_classes + ) - self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') + self.filename = os.path.join(tempfile.gettempdir(), "easydiffraction_temp.cif") self.output_index = None self.interface = interface @@ -103,7 +137,10 @@ def set_background(self, background): self._pattern.backgrounds.append(background) def remove_background(self, background): - if background.linked_experiment.raw_value in self._pattern.backgrounds.linked_experiments: + if ( + background.linked_experiment.raw_value + in self._pattern.backgrounds.linked_experiments + ): del self._pattern.backgrounds[background.linked_experiment.raw_value] else: raise ValueError @@ -120,12 +157,13 @@ def phases(self): @property_stack_deco def phases(self, value): if isinstance(value, Phase): - value = Phases('Phases', value) + value = Phases("Phases", value) if not isinstance(value, Phases): raise ValueError self._phases = value self._borg.map.add_edge(self, value) self._phases.interface = self.interface + @property def parameters(self): return self._parameters @@ -142,7 +180,16 @@ def pattern(self): def as_dict(self, skip: list = None) -> dict: d = super(_PowderBase, self).as_dict(skip=skip) - del d['_phases'] - del d['_parameters'] - del d['_pattern'] - return d \ No newline at end of file + del d["_phases"] + del d["_parameters"] + del d["_pattern"] + return d + + def _update_bases(self, new_base): + base_class = getattr(self, "__old_class__", self.__class__) + old_bases = set(self.__class__.__bases__) + old_bases = old_bases - { + base_class, + *new_base.__mro__, + } # This should fix multiple inheritance + self.__class__.__bases__ = (new_base, *old_bases, base_class) diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index 541a7349..f864a2af 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -2,10 +2,13 @@ __version__ = "0.0.3" import time -from typing import Tuple, Optional, Any, Callable, List, Dict +from typing import Tuple, Optional, Any, Callable, List, Dict, Union import cryspy import warnings + +from numpy import ndarray + from easyCore import np, borg # from pathos import multiprocessing as mp @@ -279,7 +282,10 @@ def updateResolution(self, key: str, **kwargs): for r_key in kwargs.keys(): setattr(resolution, r_key, kwargs[key]) - def powder_1d_calculate(self, x_array: np.ndarray, **kwargs) -> np.ndarray: + def powder_1d_calculate( + self, x_array: np.ndarray, full_return: bool = False, **kwargs + ): + """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated @@ -317,9 +323,14 @@ def powder_1d_calculate(self, x_array: np.ndarray, **kwargs) -> np.ndarray: if borg.debug: print("CALLING FROM Cryspy\n----------------------") - return self.do_calc_setup(scale, this_x_array, pol_fn) + results, additional = self.do_calc_setup(scale, this_x_array, pol_fn) + if full_return: + return results, additional + return results - def powder_1d_tof_calculate(self, x_array: np.ndarray, pol_fn=None) -> np.ndarray: + def powder_1d_tof_calculate( + self, x_array: np.ndarray, pol_fn=None, full_return: bool = False + ): """ For a given x calculate the corresponding y :param x_array: array of data points to be calculated @@ -354,11 +365,14 @@ def powder_1d_tof_calculate(self, x_array: np.ndarray, pol_fn=None) -> np.ndarra if borg.debug: print("CALLING FROM Cryspy\n----------------------") - return self.do_calc_setup(scale, this_x_array, pol_fn) + results, additional = self.do_calc_setup(scale, this_x_array, pol_fn) + if full_return: + return results, additional + return results def do_calc_setup( self, scale: float, this_x_array: np.ndarray, pol_fn: Callable - ) -> np.ndarray: + ) -> Tuple[np.ndarray, dict]: if len(self.pattern.backgrounds) == 0: bg = np.zeros_like(this_x_array) else: @@ -470,7 +484,7 @@ def do_calc_setup( [s["profile"] for s in self.additional_data["phases"].values()], axis=0 ) + self.additional_data["background"] - ) + ), self.additional_data # return returned_deps def calculate(self, x_array: np.ndarray, **kwargs) -> np.ndarray: @@ -490,6 +504,23 @@ def calculate(self, x_array: np.ndarray, **kwargs) -> np.ndarray: return self.powder_1d_tof_calculate(args, **kwargs) return res + def full_calculate(self, x_array: np.ndarray, **kwargs) -> Tuple[np.ndarray, dict]: + """ + For a given x calculate the corresponding y + :param x_array: array of data points to be calculated + :type x_array: np.ndarray + :return: points calculated at `x` + :rtype: np.ndarray + """ + res = np.zeros_like(x_array) + self.additional_data["ivar"] = res + args = x_array + if self.type == "powder1DCW": + return self.powder_1d_calculate(args, full_return=True, **kwargs) + if self.type == "powder1DTOF": + return self.powder_1d_tof_calculate(args, full_return=True, **kwargs) + return res, dict() + def get_phase_components(self, phase_name: str) -> List[np.ndarray]: data = None if phase_name in self.additional_data["phase_names"]: diff --git a/easyDiffractionLib/sample.py b/easyDiffractionLib/sample.py index 55ecfba5..a5baee86 100644 --- a/easyDiffractionLib/sample.py +++ b/easyDiffractionLib/sample.py @@ -1,5 +1,5 @@ -__author__ = 'github.com/wardsimon' -__version__ = '0.0.1' +__author__ = "github.com/wardsimon" +__version__ = "0.0.1" import os, tempfile from typing import Union, ClassVar @@ -9,7 +9,10 @@ from easyCrystallography.Structures.Phase import Phases as ecPhases from easyDiffractionLib import Phase, Phases -from easyDiffractionLib.Profiles.P1D import Instrument1DCWParameters, Instrument1DTOFParameters +from easyDiffractionLib.Profiles.P1D import ( + Instrument1DCWParameters, + Instrument1DTOFParameters, +) from easyDiffractionLib.interface import InterfaceFactory from easyDiffractionLib.Interfaces.types import Powder, Neutron from easyDiffractionLib.Profiles.P1D import Powder1DParameters as Pattern1D @@ -22,47 +25,58 @@ class Sample(BaseObj): _parameters: ClassVar _pattern: ClassVar - def __init__(self, phases: Union[Phase, Phases] = None, - parameters=None, pattern=None, - interface=None, name: str = 'easySample'): + def __init__( + self, + phases: Union[Phase, Phases] = None, + parameters=None, + pattern=None, + interface=None, + name: str = "easySample", + ): if isinstance(phases, Phase): - phases = Phases('Phases', phases) + phases = Phases("Phases", phases) elif phases is None: - phases = Phases('Phases') + phases = Phases("Phases") elif isinstance(phases, Phases): pass elif isinstance(phases, ecPhases): if len(phases) > 0: - phases = Phases('Phases', phases[0]) + phases = Phases("Phases", phases[0]) else: - raise AttributeError('`phases` must be a Crystal or Crystals') + raise AttributeError("`phases` must be a Crystal or Crystals") if parameters is None: - parameters = Instrument1DCWParameters.default() + parameters = Instrument1DCWParameters() if pattern is None: - pattern = Pattern1D.default() + pattern = Pattern1D() - super(Sample, self).__init__(name, _phases=phases, _parameters=parameters, _pattern=pattern) + super(Sample, self).__init__( + name, _phases=phases, _parameters=parameters, _pattern=pattern + ) # Set bases for easy identification self._update_bases(Powder) self._update_bases(Neutron) - if getattr(pattern, '__old_class__', pattern.__class__) == Pattern1D: + if getattr(pattern, "__old_class__", pattern.__class__) == Pattern1D: from easyDiffractionLib.Interfaces.types import UPol + self._update_bases(UPol) - elif getattr(pattern, '__old_class__', pattern.__class__) == Pattern1D_Pol: + elif getattr(pattern, "__old_class__", pattern.__class__) == Pattern1D_Pol: from easyDiffractionLib.Interfaces.types import Pol + self._update_bases(Pol) if isinstance(parameters, Instrument1DCWParameters): - from easyDiffractionLib.Interfaces.types import CW - self._update_bases(CW) + from easyDiffractionLib.Interfaces.types import CW + + self._update_bases(CW) elif isinstance(parameters, Instrument1DTOFParameters): from easyDiffractionLib.Interfaces.types import TOF + self._update_bases(TOF) - self.filename = os.path.join(tempfile.gettempdir(), 'easydiffraction_temp.cif') + self.filename = os.path.join(tempfile.gettempdir(), "easydiffraction_temp.cif") print(f"Temp CIF: {self.filename}") self.output_index = None if interface is not None: @@ -92,7 +106,10 @@ def set_background(self, background): self._pattern.backgrounds.append(background) def remove_background(self, background): - if background.linked_experiment.raw_value in self._pattern.backgrounds.linked_experiments: + if ( + background.linked_experiment.raw_value + in self._pattern.backgrounds.linked_experiments + ): del self._pattern.backgrounds[background.linked_experiment.raw_value] else: raise ValueError @@ -130,8 +147,10 @@ def parameters(self, value): self._parameters.interface = self._interface def update_bindings(self): - if not self.interface.current_interface.feature_checker(test_str=self.exp_type_str): - raise AssertionError('The interface is not suitable for this experiment') + if not self.interface.current_interface.feature_checker( + test_str=self.exp_type_str + ): + raise AssertionError("The interface is not suitable for this experiment") self.generate_bindings() @property @@ -140,42 +159,55 @@ def pattern(self): def as_dict(self, skip: list = None) -> dict: d = super(Sample, self).as_dict(skip=skip) - del d['_phases'] - del d['_parameters'] - del d['_pattern'] + del d["_phases"] + del d["_parameters"] + del d["_pattern"] return d @property def exp_type_str(self) -> str: - from easyDiffractionLib.Interfaces.types import Neutron, XRay, Powder, SingleCrystal, Pol, UPol, CW, TOF - type_str = '' + from easyDiffractionLib.Interfaces.types import ( + Neutron, + XRay, + Powder, + SingleCrystal, + Pol, + UPol, + CW, + TOF, + ) + + type_str = "" self_type = type(self) if issubclass(self_type, Neutron): - type_str += 'N' + type_str += "N" elif issubclass(self_type, XRay): - type_str += 'X' + type_str += "X" if issubclass(self_type, Powder): - type_str += 'powder' + type_str += "powder" elif issubclass(self_type, SingleCrystal): - type_str += 'single' + type_str += "single" - type_str += '1D' + type_str += "1D" if issubclass(self_type, CW): - type_str += 'CW' + type_str += "CW" elif issubclass(self_type, TOF): - type_str += 'TOF' + type_str += "TOF" if issubclass(self_type, Pol): - type_str += 'pol' + type_str += "pol" elif issubclass(self_type, UPol): - type_str += 'unp' + type_str += "unp" return type_str def _update_bases(self, new_base): - base_class = getattr(self, '__old_class__', self.__class__) + base_class = getattr(self, "__old_class__", self.__class__) old_bases = set(self.__class__.__bases__) - old_bases = old_bases - {base_class, *new_base.__mro__} # This should fix multiple inheritance - self.__class__.__bases__ = (new_base, *old_bases, base_class) \ No newline at end of file + old_bases = old_bases - { + base_class, + *new_base.__mro__, + } # This should fix multiple inheritance + self.__class__.__bases__ = (new_base, *old_bases, base_class) diff --git a/examples/Polarized.ipynb b/examples/Polarized.ipynb new file mode 100644 index 00000000..90ccd477 --- /dev/null +++ b/examples/Polarized.ipynb @@ -0,0 +1,559 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "450a9058", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "# Simulation of the diffraction pattern\n", + "This notebook shows how we can create a sample (phase) from atoms and calculate diffraction profiles using both constant wavelength and time-of-flight experiment types." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9ecc4733", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Warning: CrysFML is not installed\n", + "Warning: GSAS-2 is not installed\n" + ] + }, + { + "data": { + "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@4.2.5/dist/gridstack-h5', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'gridstack': {'exports': 'GridStack'}}});\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 2;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length;\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.jsdelivr.net/npm/gridstack@4.2.5/dist/gridstack-h5.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) >= 0) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) >= 0) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.js\"];\n var js_modules = [];\n var css_urls = [\"https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.css\", \"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\"];\n var inline_js = [ function(Bokeh) {\n inject_raw_css(\".bk.debugger-card {\\n border: 1px solid rgba(0,0,0,1);\\n color: rgba(255,255,255,1);\\n background-color: rgba(0,0,0,1);\\n border-radius: 0rem;\\n}\\n.bk.debugger-card-header {\\n align-items: center;\\n text-align: left;\\n background-color: rgba(0, 0, 0, 1)!important;\\n color: rgba(255, 255, 255, 1);\\n border-radius: 0rem;\\n display: inline-flex;\\n justify-content: start;\\n width: 100%;\\n}\\n.bk.debugger-card-button {\\n background-color: transparent;\\n color: rgba(255, 255, 255, 1);\\n margin-left: 0.5em;\\n}\\n.bk.debugger-card-title {\\n align-items: center;\\n text-align: left;\\n color: rgba(255, 255, 255, 1);\\n font-size: 1em;\\n overflow-wrap: break-word;\\n}\\n\\n/* Special debugger buttons for clearing and saving */\\n.bk button.special_btn {\\n width: 25px;\\n height: 25px;\\n background-color: black;\\n color: white;\\n display: inline-block;\\n}\\n\\n\\n.bk button.special_btn .tooltiptext {\\n visibility: hidden;\\n width: 100px;\\n background-color: darkgray;\\n color: #fff;\\n text-align: center;\\n border-radius: 6px;\\n padding: 5px 0;\\n\\n /* Position the tooltip */\\n position: relative;\\n z-index: 1;\\n top: 100%;\\n left: 100%;\\n margin-left: -100px;\\n display: block;\\n}\\n\\n.bk button.special_btn:hover .tooltiptext {\\n visibility: visible;\\n}\\n\\n\\n\\n.bk button.clear_btn:hover .shown { display: none;}\\n.bk button.clear_btn:hover:before { content: \\\"\\u2611\\\"; }\\n\");\n }, function(Bokeh) {\n inject_raw_css(\".bk.panel-widget-box {\\n min-height: 20px;\\n background-color: #f5f5f5;\\n border: 1px solid #e3e3e3;\\n border-radius: 4px;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n overflow-x: hidden;\\n overflow-y: hidden;\\n}\\n\\n.scrollable {\\n overflow: scroll;\\n}\\n\\nprogress {\\n appearance: none;\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n border: none;\\n height: 20px;\\n background-color: whiteSmoke;\\n border-radius: 3px;\\n box-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n color: royalblue;\\n position: relative;\\n margin: 0 0 1.5em;\\n}\\n\\nprogress[value]::-webkit-progress-bar {\\n background-color: whiteSmoke;\\n border-radius: 3px;\\n box-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n}\\n\\nprogress[value]::-webkit-progress-value {\\n position: relative;\\n background-size: 35px 20px, 100% 100%, 100% 100%;\\n border-radius:3px;\\n}\\n\\nprogress.active:not([value])::before {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress[value]::-moz-progress-bar {\\n background-size: 35px 20px, 100% 100%, 100% 100%;\\n border-radius:3px;\\n}\\n\\nprogress:not([value])::-moz-progress-bar {\\n border-radius:3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\nprogress.active:not([value])::-moz-progress-bar {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress.active:not([value])::-webkit-progress-bar {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress.primary[value]::-webkit-progress-value { background-color: #007bff; }\\nprogress.primary:not([value])::before { background-color: #007bff; }\\nprogress.primary:not([value])::-webkit-progress-bar { background-color: #007bff; }\\nprogress.primary::-moz-progress-bar { background-color: #007bff; }\\n\\nprogress.secondary[value]::-webkit-progress-value { background-color: #6c757d; }\\nprogress.secondary:not([value])::before { background-color: #6c757d; }\\nprogress.secondary:not([value])::-webkit-progress-bar { background-color: #6c757d; }\\nprogress.secondary::-moz-progress-bar { background-color: #6c757d; }\\n\\nprogress.success[value]::-webkit-progress-value { background-color: #28a745; }\\nprogress.success:not([value])::before { background-color: #28a745; }\\nprogress.success:not([value])::-webkit-progress-bar { background-color: #28a745; }\\nprogress.success::-moz-progress-bar { background-color: #28a745; }\\n\\nprogress.danger[value]::-webkit-progress-value { background-color: #dc3545; }\\nprogress.danger:not([value])::before { background-color: #dc3545; }\\nprogress.danger:not([value])::-webkit-progress-bar { background-color: #dc3545; }\\nprogress.danger::-moz-progress-bar { background-color: #dc3545; }\\n\\nprogress.warning[value]::-webkit-progress-value { background-color: #ffc107; }\\nprogress.warning:not([value])::before { background-color: #ffc107; }\\nprogress.warning:not([value])::-webkit-progress-bar { background-color: #ffc107; }\\nprogress.warning::-moz-progress-bar { background-color: #ffc107; }\\n\\nprogress.info[value]::-webkit-progress-value { background-color: #17a2b8; }\\nprogress.info:not([value])::before { background-color: #17a2b8; }\\nprogress.info:not([value])::-webkit-progress-bar { background-color: #17a2b8; }\\nprogress.info::-moz-progress-bar { background-color: #17a2b8; }\\n\\nprogress.light[value]::-webkit-progress-value { background-color: #f8f9fa; }\\nprogress.light:not([value])::before { background-color: #f8f9fa; }\\nprogress.light:not([value])::-webkit-progress-bar { background-color: #f8f9fa; }\\nprogress.light::-moz-progress-bar { background-color: #f8f9fa; }\\n\\nprogress.dark[value]::-webkit-progress-value { background-color: #343a40; }\\nprogress.dark:not([value])::-webkit-progress-bar { background-color: #343a40; }\\nprogress.dark:not([value])::before { background-color: #343a40; }\\nprogress.dark::-moz-progress-bar { background-color: #343a40; }\\n\\nprogress:not([value])::-webkit-progress-bar {\\n border-radius: 3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\nprogress:not([value])::before {\\n content:\\\" \\\";\\n position:absolute;\\n height: 20px;\\n top:0;\\n left:0;\\n right:0;\\n bottom:0;\\n border-radius: 3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\n@keyframes stripes {\\n from {background-position: 0%}\\n to {background-position: 100%}\\n}\\n\\n.bk-root .bk.loader {\\n overflow: hidden;\\n}\\n\\n.bk.loader::after {\\n content: \\\"\\\";\\n border-radius: 50%;\\n -webkit-mask-image: radial-gradient(transparent 50%, rgba(0, 0, 0, 1) 54%);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n position: absolute;\\n}\\n\\n.bk-root .bk.loader.dark::after {\\n background: #0f0f0f;\\n}\\n\\n.bk-root .bk.loader.light::after {\\n background: #f0f0f0;\\n}\\n\\n.bk-root .bk.loader.spin::after {\\n animation: spin 2s linear infinite;\\n}\\n\\n.bk-root div.bk.loader.spin.primary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #dc3545 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.warning-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.dark-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #343a40 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.primary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #dc3545 50%)\\n}\\n\\n.bk-root div.bk.loader.spin.warning-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.dark-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #343a40 50%);\\n}\\n\\n/* Safari */\\n@-webkit-keyframes spin {\\n 0% { -webkit-transform: rotate(0deg); }\\n 100% { -webkit-transform: rotate(360deg); }\\n}\\n\\n@keyframes spin {\\n 0% { transform: rotate(0deg); }\\n 100% { transform: rotate(360deg); }\\n}\\n\\n.dot div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n background-color: #fff;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled.primary div {\\n background-color: #007bff;\\n}\\n\\n.dot-filled.secondary div {\\n background-color: #6c757d;\\n}\\n\\n.dot-filled.success div {\\n background-color: #28a745;\\n}\\n\\n.dot-filled.danger div {\\n background-color: #dc3545;\\n}\\n\\n.dot-filled.warning div {\\n background-color: #ffc107;\\n}\\n\\n.dot-filled.info div {\\n background-color: #17a2b8;\\n}\\n\\n.dot-filled.dark div {\\n background-color: #343a40;\\n}\\n\\n.dot-filled.light div {\\n background-color: #f8f9fa;\\n}\\n\\n/* Slider editor */\\n.slider-edit .bk-input-group .bk-input {\\n border: 0;\\n border-radius: 0;\\n min-height: 0;\\n padding-left: 0;\\n padding-right: 0;\\n font-weight: bold;\\n}\\n\\n.slider-edit .bk-input-group .bk-spin-wrapper {\\n display: contents;\\n}\\n\\n.slider-edit .bk-input-group .bk-spin-wrapper .bk.bk-spin-btn-up {\\n top: -6px;\\n}\\n\\n.slider-edit .bk-input-group .bk-spin-wrapper .bk.bk-spin-btn-down {\\n bottom: 3px;\\n}\\n\\n/* JSON Pane */\\n.bk-root .json-formatter-row .json-formatter-string, .bk-root .json-formatter-row .json-formatter-stringifiable {\\n white-space: pre-wrap;\\n}\\n\\n.ql-bubble .ql-editor {\\n border: 1px solid #ccc;\\n}\\n\");\n }, function(Bokeh) {\n inject_raw_css(\"table.panel-df {\\n margin-left: auto;\\n margin-right: auto;\\n border: none;\\n border-collapse: collapse;\\n border-spacing: 0;\\n color: black;\\n font-size: 12px;\\n table-layout: fixed;\\n width: 100%;\\n}\\n\\n.panel-df tr, .panel-df th, .panel-df td {\\n text-align: right;\\n vertical-align: middle;\\n padding: 0.5em 0.5em !important;\\n line-height: normal;\\n white-space: normal;\\n max-width: none;\\n border: none;\\n}\\n\\n.panel-df tbody {\\n display: table-row-group;\\n vertical-align: middle;\\n border-color: inherit;\\n}\\n\\n.panel-df tbody tr:nth-child(odd) {\\n background: #f5f5f5;\\n}\\n\\n.panel-df thead {\\n border-bottom: 1px solid black;\\n vertical-align: bottom;\\n}\\n\\n.panel-df tr:hover {\\n background: lightblue !important;\\n cursor: pointer;\\n}\\n\");\n }, function(Bokeh) {\n inject_raw_css(\".bk.pn-loading:before {\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n content: '';\\n z-index: 1000;\\n background-color: rgb(255,255,255,0.50);\\n border-color: lightgray;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: auto 50%;\\n border-width: 1px;\\n cursor: progress;\\n}\\n.bk.pn-loading.arcs:hover:before {\\n cursor: progress;\\n}\\n\");\n }, function(Bokeh) {\n inject_raw_css(\".json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n color: black;\\n text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n color: green;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: blue;\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n color: #00008B;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n color: white;\\n text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n color: #31F031;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: #027BFF;\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n color: #23A0DB;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n\");\n }, function(Bokeh) {\n inject_raw_css(\".bk.card {\\n border: 1px solid rgba(0,0,0,.125);\\n border-radius: 0.25rem;\\n}\\n.bk.accordion {\\n border: 1px solid rgba(0,0,0,.125);\\n}\\n.bk.card-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0.25rem;\\n display: inline-flex;\\n justify-content: start;\\n width: 100%;\\n}\\n.bk.accordion-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0;\\n display: flex;\\n justify-content: start;\\n width: 100%;\\n}\\n.bk.card-button {\\n background-color: transparent;\\n margin-left: 0.5em;\\n}\\n.bk.card-header-row {\\n position: relative !important;\\n}\\n.bk.card-title {\\n align-items: center;\\n font-size: 1.4em;\\n font-weight: bold;\\n overflow-wrap: break-word;\\n}\\n.bk.card-header-row > .bk {\\n overflow-wrap: break-word;\\n text-align: center;\\n}\\n\");\n }, function(Bokeh) {\n inject_raw_css(\".codehilite .hll { background-color: #ffffcc }\\n.codehilite { background: #f8f8f8; }\\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\\n.codehilite .o { color: #666666 } /* Operator */\\n.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */\\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\\n.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\\n.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */\\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\\n.codehilite .ge { font-style: italic } /* Generic.Emph */\\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\\n.codehilite .go { color: #888888 } /* Generic.Output */\\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\\n.codehilite .gt { color: #0044DD } /* Generic.Traceback */\\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\\n.codehilite .m { color: #666666 } /* Literal.Number */\\n.codehilite .s { color: #BA2121 } /* Literal.String */\\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\\n.codehilite .nb { color: #008000 } /* Name.Builtin */\\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\\n.codehilite .no { color: #880000 } /* Name.Constant */\\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\\n.codehilite .nf { color: #0000FF } /* Name.Function */\\n.codehilite .nl { color: #A0A000 } /* Name.Label */\\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\\n.codehilite .nv { color: #19177C } /* Name.Variable */\\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\\n.codehilite .mb { color: #666666 } /* Literal.Number.Bin */\\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\\n.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */\\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\\n.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */\\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\\n.codehilite .fm { color: #0000FF } /* Name.Function.Magic */\\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\\n.codehilite .vm { color: #19177C } /* Name.Variable.Magic */\\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\\n\\n.markdown h1 { margin-block-start: 0.34em }\\n.markdown h2 { margin-block-start: 0.42em }\\n.markdown h3 { margin-block-start: 0.5em }\\n.markdown h4 { margin-block-start: 0.67em }\\n.markdown h5 { margin-block-start: 0.84em }\\n.markdown h6 { margin-block-start: 1.17em }\\n.markdown ul { padding-inline-start: 2em }\\n.markdown ol { padding-inline-start: 2em }\\n.markdown strong { font-weight: 600 }\\n.markdown a { color: -webkit-link }\\n.markdown a { color: -moz-hyperlinkText }\\n\");\n }, function(Bokeh) {\n inject_raw_css(\".bk.alert {\\n padding: 0.75rem 1.25rem;\\n border: 1px solid transparent;\\n border-radius: 0.25rem;\\n /* Don't set margin because that will not render correctly! */\\n /* margin-bottom: 1rem; */\\n margin-top: 15px;\\n margin-bottom: 15px;\\n}\\n.bk.alert a {\\n color: rgb(11, 46, 19); /* #002752; */\\n font-weight: 700;\\n text-decoration: rgb(11, 46, 19);\\n text-decoration-color: rgb(11, 46, 19);\\n text-decoration-line: none;\\n text-decoration-style: solid;\\n text-decoration-thickness: auto;\\n }\\n.bk.alert a:hover {\\n color: rgb(11, 46, 19);\\n font-weight: 700;\\n text-decoration: underline;\\n}\\n\\n.bk.alert-primary {\\n color: #004085;\\n background-color: #cce5ff;\\n border-color: #b8daff;\\n}\\n.bk.alert-primary hr {\\n border-top-color: #9fcdff;\\n}\\n\\n.bk.alert-secondary {\\n color: #383d41;\\n background-color: #e2e3e5;\\n border-color: #d6d8db;\\n }\\n.bk.alert-secondary hr {\\n border-top-color: #c8cbcf;\\n}\\n\\n.bk.alert-success {\\n color: #155724;\\n background-color: #d4edda;\\n border-color: #c3e6cb;\\n }\\n\\n.bk.alert-success hr {\\n border-top-color: #b1dfbb;\\n}\\n\\n.bk.alert-info {\\n color: #0c5460;\\n background-color: #d1ecf1;\\n border-color: #bee5eb;\\n }\\n.bk.alert-info hr {\\n border-top-color: #abdde5;\\n}\\n\\n.bk.alert-warning {\\n color: #856404;\\n background-color: #fff3cd;\\n border-color: #ffeeba;\\n }\\n\\n.bk.alert-warning hr {\\n border-top-color: #ffe8a1;\\n}\\n\\n.bk.alert-danger {\\n color: #721c24;\\n background-color: #f8d7da;\\n border-color: #f5c6cb;\\n}\\n.bk.alert-danger hr {\\n border-top-color: #f1b0b7;\\n}\\n\\n.bk.alert-light {\\n color: #818182;\\n background-color: #fefefe;\\n border-color: #fdfdfe;\\n }\\n.bk.alert-light hr {\\n border-top-color: #ececf6;\\n}\\n\\n.bk.alert-dark {\\n color: #1b1e21;\\n background-color: #d6d8d9;\\n border-color: #c6c8ca;\\n }\\n.bk.alert-dark hr {\\n border-top-color: #b9bbbe;\\n}\\n\\n\\n/* adjf\\u00e6l */\\n\\n.bk.alert-primary a {\\n color: #002752;\\n}\\n\\n.bk.alert-secondary a {\\n color: #202326;\\n}\\n\\n\\n.bk.alert-success a {\\n color: #0b2e13;\\n}\\n\\n\\n.bk.alert-info a {\\n color: #062c33;\\n}\\n\\n\\n.bk.alert-warning a {\\n color: #533f03;\\n}\\n\\n\\n.bk.alert-danger a {\\n color: #491217;\\n}\\n\\n.bk.alert-light a {\\n color: #686868;\\n}\\n\\n.bk.alert-dark a {\\n color: #040505;\\n}\\n\");\n }, function(Bokeh) {\n inject_raw_css(\"\\n .bk.pn-loading.arcs:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0ibWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5kOiBub25lOyBkaXNwbGF5OiBibG9jazsgc2hhcGUtcmVuZGVyaW5nOiBhdXRvOyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4gIDxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjMyIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZT0iI2MzYzNjMyIgc3Ryb2tlLWRhc2hhcnJheT0iNTAuMjY1NDgyNDU3NDM2NjkgNTAuMjY1NDgyNDU3NDM2NjkiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+ICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCI+PC9hbmltYXRlVHJhbnNmb3JtPiAgPC9jaXJjbGU+PC9zdmc+\\\");\\n background-size: auto calc(min(50%, 400px));\\n }\\n \");\n }, function(Bokeh) {\n /* BEGIN bokeh.min.js */\n /*!\n * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n * \n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * Neither the name of Anaconda nor the names of any contributors\n * may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\n (function(root, factory) {\n const bokeh = factory();\n bokeh.__bokeh__ = true;\n if (typeof root.Bokeh === \"undefined\" || typeof root.Bokeh.__bokeh__ === \"undefined\") {\n root.Bokeh = bokeh;\n }\n const Bokeh = root.Bokeh;\n Bokeh[bokeh.version] = bokeh;\n })(this, function() {\n let define;\n const parent_require = typeof require === \"function\" && require\n return (function(modules, entry, aliases, externals) {\n if (aliases === undefined) aliases = {};\n if (externals === undefined) externals = {};\n\n const cache = {};\n\n const normalize = function(name) {\n if (typeof name === \"number\")\n return name;\n\n if (name === \"bokehjs\")\n return entry;\n\n if (!externals[name]) {\n const prefix = \"@bokehjs/\"\n if (name.slice(0, prefix.length) === prefix)\n name = name.slice(prefix.length)\n }\n\n const alias = aliases[name]\n if (alias != null)\n return alias;\n\n const trailing = name.length > 0 && name[name.lenght-1] === \"/\";\n const index = aliases[name + (trailing ? \"\" : \"/\") + \"index\"];\n if (index != null)\n return index;\n\n return name;\n }\n\n const require = function(name) {\n let mod = cache[name];\n if (!mod) {\n const id = normalize(name);\n\n mod = cache[id];\n if (!mod) {\n if (!modules[id]) {\n if (externals[id] === false || (externals[id] == true && parent_require)) {\n try {\n mod = {exports: externals[id] ? parent_require(id) : {}};\n cache[id] = cache[name] = mod;\n return mod.exports;\n } catch (e) {}\n }\n\n const err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n }\n\n mod = {exports: {}};\n cache[id] = cache[name] = mod;\n\n function __esModule() {\n Object.defineProperty(mod.exports, \"__esModule\", {value: true});\n }\n\n function __esExport(name, value) {\n Object.defineProperty(mod.exports, name, {\n enumerable: true, get: function () { return value; }\n });\n }\n\n modules[id].call(mod.exports, require, mod, mod.exports, __esModule, __esExport);\n } else {\n cache[name] = mod;\n }\n }\n\n return mod.exports;\n }\n require.resolve = function(name) {\n return \"\"\n }\n\n const main = require(entry);\n main.require = require;\n\n if (typeof Proxy !== \"undefined\") {\n // allow Bokeh.loader[\"@bokehjs/module/name\"] syntax\n main.loader = new Proxy({}, {\n get: function(_obj, module) {\n return require(module);\n }\n });\n }\n\n main.register_plugin = function(plugin_modules, plugin_entry, plugin_aliases, plugin_externals) {\n if (plugin_aliases === undefined) plugin_aliases = {};\n if (plugin_externals === undefined) plugin_externals = {};\n\n for (let name in plugin_modules) {\n modules[name] = plugin_modules[name];\n }\n\n for (let name in plugin_aliases) {\n aliases[name] = plugin_aliases[name];\n }\n\n for (let name in plugin_externals) {\n externals[name] = plugin_externals[name];\n }\n\n const plugin = require(plugin_entry);\n\n for (let name in plugin) {\n main[name] = plugin[name];\n }\n\n return plugin;\n }\n\n return main;\n })\n ([\n function _(t,_,n,o,r){o();(0,t(1).__exportStar)(t(2),n)},\n function _(t,e,r,n,o){n();var a=function(t,e){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},a(t,e)};r.__extends=function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)};function i(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function c(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,o,a=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=a.next()).done;)i.push(n.value)}catch(t){o={error:t}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return i}function u(t){return this instanceof u?(this.v=t,this):new u(t)}r.__assign=function(){return r.__assign=Object.assign||function(t){for(var e,r=1,n=arguments.length;r=0;c--)(o=t[c])&&(i=(a<3?o(i):a>3?o(e,r,i):o(e,r))||i);return a>3&&i&&Object.defineProperty(e,r,i),i},r.__param=function(t,e){return function(r,n){e(r,n,t)}},r.__metadata=function(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},r.__awaiter=function(t,e,r,n){return new(r||(r=Promise))((function(o,a){function i(t){try{u(n.next(t))}catch(t){a(t)}}function c(t){try{u(n.throw(t))}catch(t){a(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(i,c)}u((n=n.apply(t,e||[])).next())}))},r.__generator=function(t,e){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(a){return function(c){return function(a){if(r)throw new TypeError(\"Generator is already executing.\");for(;i;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]1||c(t,e)}))})}function c(t,e){try{(r=o[t](e)).value instanceof u?Promise.resolve(r.value.v).then(f,l):s(a[0][2],r)}catch(t){s(a[0][3],t)}var r}function f(t){c(\"next\",t)}function l(t){c(\"throw\",t)}function s(t,e){t(e),a.shift(),a.length&&c(a[0][0],a[0][1])}},r.__asyncDelegator=function(t){var e,r;return e={},n(\"next\"),n(\"throw\",(function(t){throw t})),n(\"return\"),e[Symbol.iterator]=function(){return this},e;function n(n,o){e[n]=t[n]?function(e){return(r=!r)?{value:u(t[n](e)),done:\"return\"===n}:o?o(e):e}:o}},r.__asyncValues=function(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,r=t[Symbol.asyncIterator];return r?r.call(t):(t=i(t),e={},n(\"next\"),n(\"throw\"),n(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function n(r){e[r]=t[r]&&function(e){return new Promise((function(n,o){(function(t,e,r,n){Promise.resolve(n).then((function(e){t({value:e,done:r})}),e)})(n,o,(e=t[r](e)).done,e.value)}))}}},r.__makeTemplateObject=function(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t};var f=Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e};r.__importStar=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)\"default\"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&(0,r.__createBinding)(e,t,n);return f(e,t),e},r.__importDefault=function(t){return t&&t.__esModule?t:{default:t}},r.__classPrivateFieldGet=function(t,e,r,n){if(\"a\"===r&&!n)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof e?t!==e||!n:!e.has(t))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===r?n:\"a\"===r?n.call(t):n?n.value:e.get(t)},r.__classPrivateFieldSet=function(t,e,r,n,o){if(\"m\"===n)throw new TypeError(\"Private method is not writable\");if(\"a\"===n&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof e?t!==e||!o:!e.has(t))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===n?o.call(t,r):o?o.value=r:e.set(t,r),r}},\n function _(e,t,o,s,l){s();const n=e(1);l(\"version\",e(3).version),l(\"index\",e(4).index),o.embed=(0,n.__importStar)(e(4)),o.protocol=(0,n.__importStar)(e(406)),o._testing=(0,n.__importStar)(e(407));var r=e(19);l(\"logger\",r.logger),l(\"set_log_level\",r.set_log_level),l(\"settings\",e(28).settings),l(\"Models\",e(7).Models),l(\"documents\",e(5).documents),l(\"safely\",e(408).safely)},\n function _(n,i,o,c,e){c(),o.version=\"2.4.3\"},\n function _(e,o,t,n,s){n();const d=e(5),r=e(19),_=e(34),c=e(13),i=e(8),a=e(16),u=e(397),l=e(399),m=e(398);var f=e(397);s(\"add_document_standalone\",f.add_document_standalone),s(\"index\",f.index),s(\"add_document_from_session\",e(399).add_document_from_session);var g=e(404);async function w(e,o,t,n){(0,i.isString)(e)&&(e=JSON.parse((0,_.unescape)(e)));const s={};for(const[o,t]of(0,c.entries)(e))s[o]=d.Document.from_json(t);const a=[];for(const e of o){const o=(0,m._resolve_element)(e),d=(0,m._resolve_root_elements)(e);if(null!=e.docid)a.push(await(0,u.add_document_standalone)(s[e.docid],o,d,e.use_for_title));else{if(null==e.token)throw new Error(\"Error rendering Bokeh items: either 'docid' or 'token' was expected.\");{const s=(0,l._get_ws_url)(t,n);r.logger.debug(`embed: computed ws url: ${s}`);try{a.push(await(0,l.add_document_from_session)(s,e.token,o,d,e.use_for_title)),console.log(\"Bokeh items were rendered successfully\")}catch(e){console.log(\"Error rendering Bokeh items:\",e)}}}}return a}s(\"embed_items_notebook\",g.embed_items_notebook),s(\"kernels\",g.kernels),s(\"BOKEH_ROOT\",e(398).BOKEH_ROOT),t.embed_item=async function(e,o){const t={},n=(0,_.uuid4)();t[n]=e.doc,null==o&&(o=e.target_id);const s=document.getElementById(o);null!=s&&s.classList.add(m.BOKEH_ROOT);const d={roots:{[e.root_id]:o},root_ids:[e.root_id],docid:n};await(0,a.defer)();const[r]=await w(t,[d]);return r},t.embed_items=async function(e,o,t,n){return await(0,a.defer)(),w(e,o,t,n)}},\n function _(t,_,o,r,n){r();const a=t(1);(0,a.__exportStar)(t(6),o),(0,a.__exportStar)(t(35),o)},\n function _(e,t,s,o,n){o();const i=e(1),r=e(7),l=e(3),_=e(19),a=e(251),c=e(14),d=e(30),h=e(15),f=e(17),u=e(31),m=e(29),g=e(9),v=e(13),p=(0,i.__importStar)(e(77)),w=e(26),b=e(8),y=e(309),k=e(75),M=e(53),j=e(396),z=e(35);class S{constructor(e){this.document=e,this.session=null,this.subscribed_models=new Set}send_event(e){const t=new z.MessageSentEvent(this.document,\"bokeh_event\",e.to_json());this.document._trigger_on_change(t)}trigger(e){for(const t of this.subscribed_models)null!=e.origin&&e.origin!=t||t._process_event(e)}}s.EventManager=S,S.__name__=\"EventManager\",s.documents=[],s.DEFAULT_TITLE=\"Bokeh Application\";class E{constructor(e){var t;s.documents.push(this),this._init_timestamp=Date.now(),this._resolver=null!==(t=null==e?void 0:e.resolver)&&void 0!==t?t:new r.ModelResolver,this._title=s.DEFAULT_TITLE,this._roots=[],this._all_models=new Map,this._all_models_freeze_count=0,this._callbacks=new Map,this._message_callbacks=new Map,this.event_manager=new S(this),this.idle=new h.Signal0(this,\"idle\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}get layoutables(){return this._roots.filter((e=>e instanceof y.LayoutDOM))}get is_idle(){for(const e of this.layoutables)if(!this._idle_roots.has(e))return!1;return!0}notify_idle(e){this._idle_roots.set(e,!0),this.is_idle&&(_.logger.info(`document idle at ${Date.now()-this._init_timestamp} ms`),this.event_manager.send_event(new a.DocumentReady),this.idle.emit())}clear(){this._push_all_models_freeze();try{for(;this._roots.length>0;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}}interactive_start(e,t=null){null==this._interactive_plot&&(this._interactive_plot=e,this._interactive_plot.trigger_event(new a.LODStart)),this._interactive_finalize=t,this._interactive_timestamp=Date.now()}interactive_stop(){null!=this._interactive_plot&&(this._interactive_plot.trigger_event(new a.LODEnd),null!=this._interactive_finalize&&this._interactive_finalize()),this._interactive_plot=null,this._interactive_timestamp=null,this._interactive_finalize=null}interactive_duration(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp}destructively_move(e){if(e===this)throw new Error(\"Attempted to overwrite a document with itself\");e.clear();const t=(0,g.copy)(this._roots);this.clear();for(const e of t)if(null!=e.document)throw new Error(`Somehow we didn't detach ${e}`);if(0!=this._all_models.size)throw new Error(`this._all_models still had stuff in it: ${this._all_models}`);for(const s of t)e.add_root(s);e.set_title(this._title)}_push_all_models_freeze(){this._all_models_freeze_count+=1}_pop_all_models_freeze(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()}_invalidate_all_models(){_.logger.debug(\"invalidating document models\"),0===this._all_models_freeze_count&&this._recompute_all_models()}_recompute_all_models(){let e=new Set;for(const t of this._roots)e=p.union(e,t.references());const t=new Set(this._all_models.values()),s=p.difference(t,e),o=p.difference(e,t),n=new Map;for(const t of e)n.set(t.id,t);for(const e of s)e.detach_document();for(const e of o)e.attach_document(this);this._all_models=n}roots(){return this._roots}add_root(e,t){if(_.logger.debug(`Adding root: ${e}`),!(0,g.includes)(this._roots,e)){this._push_all_models_freeze();try{this._roots.push(e)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new z.RootAddedEvent(this,e,t))}}remove_root(e,t){const s=this._roots.indexOf(e);if(!(s<0)){this._push_all_models_freeze();try{this._roots.splice(s,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new z.RootRemovedEvent(this,e,t))}}title(){return this._title}set_title(e,t){e!==this._title&&(this._title=e,this._trigger_on_change(new z.TitleChangedEvent(this,e,t)))}get_model_by_id(e){var t;return null!==(t=this._all_models.get(e))&&void 0!==t?t:null}get_model_by_name(e){const t=[];for(const s of this._all_models.values())s instanceof M.Model&&s.name==e&&t.push(s);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(`Multiple models are named '${e}'`)}}on_message(e,t){const s=this._message_callbacks.get(e);null==s?this._message_callbacks.set(e,new Set([t])):s.add(t)}remove_on_message(e,t){var s;null===(s=this._message_callbacks.get(e))||void 0===s||s.delete(t)}_trigger_on_message(e,t){const s=this._message_callbacks.get(e);if(null!=s)for(const e of s)e(t)}on_change(e,t=!1){this._callbacks.has(e)||this._callbacks.set(e,t)}remove_on_change(e){this._callbacks.delete(e)}_trigger_on_change(e){for(const[t,s]of this._callbacks)if(!s&&e instanceof z.DocumentEventBatch)for(const s of e.events)t(s);else t(e)}_notify_change(e,t,s,o,n){this._trigger_on_change(new z.ModelChangedEvent(this,e,t,s,o,null==n?void 0:n.setter_id,null==n?void 0:n.hint))}static _instantiate_object(e,t,s,o){const n=Object.assign(Object.assign({},s),{id:e,__deferred__:!0});return new(o.get(t))(n)}static _instantiate_references_json(e,t,s){var o;const n=new Map;for(const i of e){const e=i.id,r=i.type,l=null!==(o=i.attributes)&&void 0!==o?o:{};let _=t.get(e);null==_&&(_=E._instantiate_object(e,r,l,s),null!=i.subtype&&_.set_subtype(i.subtype)),n.set(_.id,_)}return n}static _resolve_refs(e,t,s,o){function n(e){var i;if((0,f.is_ref)(e)){const o=null!==(i=t.get(e.id))&&void 0!==i?i:s.get(e.id);if(null!=o)return o;throw new Error(`reference ${JSON.stringify(e)} isn't known (not in Document?)`)}if((0,u.is_NDArray_ref)(e)){const{buffer:t,dtype:s,shape:n}=(0,u.decode_NDArray)(e,o);return(0,m.ndarray)(t,{dtype:s,shape:n})}return(0,b.isArray)(e)?function(e){const t=[];for(const s of e)t.push(n(s));return t}(e):(0,b.isPlainObject)(e)?function(e){const t={};for(const[s,o]of(0,v.entries)(e))t[s]=n(o);return t}(e):e}return n(e)}static _initialize_references_json(e,t,s,o){const n=new Map;for(const{id:i,attributes:r}of e){const e=!t.has(i),l=e?s.get(i):t.get(i),_=E._resolve_refs(r,t,s,o);l.setv(_,{silent:!0}),n.set(i,{instance:l,is_new:e})}const i=[],r=new Set;function l(e){if(e instanceof c.HasProps){if(n.has(e.id)&&!r.has(e.id)){r.add(e.id);const{instance:t,is_new:s}=n.get(e.id),{attributes:o}=t;for(const e of(0,v.values)(o))l(e);s&&(t.finalize(),i.push(t))}}else if((0,b.isArray)(e))for(const t of e)l(t);else if((0,b.isPlainObject)(e))for(const t of(0,v.values)(e))l(t)}for(const e of n.values())l(e.instance);for(const e of i)e.connect_signals()}static _event_for_attribute_change(e,t,s,o,n){if(o.get_model_by_id(e.id).property(t).syncable){const i={kind:\"ModelChanged\",model:{id:e.id},attr:t,new:s};return c.HasProps._json_record_references(o,s,n,{recursive:!0}),i}return null}static _events_to_sync_objects(e,t,s,o){const n=Object.keys(e.attributes),i=Object.keys(t.attributes),r=(0,g.difference)(n,i),l=(0,g.difference)(i,n),a=(0,g.intersection)(n,i),c=[];for(const e of r)_.logger.warn(`Server sent key ${e} but we don't seem to have it in our JSON`);for(const n of l){const i=t.attributes[n];c.push(E._event_for_attribute_change(e,n,i,s,o))}for(const n of a){const i=e.attributes[n],r=t.attributes[n];null==i&&null==r||(null==i||null==r?c.push(E._event_for_attribute_change(e,n,r,s,o)):\"data\"==n||(0,w.is_equal)(i,r)||c.push(E._event_for_attribute_change(e,n,r,s,o)))}return c.filter((e=>null!=e))}static _compute_patch_since_json(e,t){const s=t.to_json(!1);function o(e){const t=new Map;for(const s of e.roots.references)t.set(s.id,s);return t}const n=o(e),i=new Map,r=[];for(const t of e.roots.root_ids)i.set(t,n.get(t)),r.push(t);const l=o(s),_=new Map,a=[];for(const e of s.roots.root_ids)_.set(e,l.get(e)),a.push(e);if(r.sort(),a.sort(),(0,g.difference)(r,a).length>0||(0,g.difference)(a,r).length>0)throw new Error(\"Not implemented: computing add/remove of document roots\");const c=new Set;let h=[];for(const e of t._all_models.keys())if(n.has(e)){const s=E._events_to_sync_objects(n.get(e),l.get(e),t,c);h=h.concat(s)}const f=new d.Serializer({include_defaults:!1});return f.to_serializable([...c]),{references:[...f.definitions],events:h}}to_json_string(e=!0){return JSON.stringify(this.to_json(e))}to_json(e=!0){const t=new d.Serializer({include_defaults:e}),s=t.to_serializable(this._roots);return{version:l.version,title:this._title,roots:{root_ids:s.map((e=>e.id)),references:[...t.definitions]}}}static from_json_string(e){const t=JSON.parse(e);return E.from_json(t)}static from_json(e){_.logger.debug(\"Creating Document from JSON\");const t=e.version,s=-1!==t.indexOf(\"+\")||-1!==t.indexOf(\"-\"),o=`Library versions: JS (${l.version}) / Python (${t})`;s||l.version.replace(/-(dev|rc)\\./,\"$1\")==t?_.logger.debug(o):(_.logger.warn(\"JS/Python version mismatch\"),_.logger.warn(o));const n=new r.ModelResolver;null!=e.defs&&(0,j.resolve_defs)(e.defs,n);const i=e.roots,a=i.root_ids,c=i.references,d=E._instantiate_references_json(c,new Map,n);E._initialize_references_json(c,new Map,d,new Map);const h=new E({resolver:n});h._push_all_models_freeze();for(const e of a){const t=d.get(e);null!=t&&h.add_root(t)}return h._pop_all_models_freeze(),h.set_title(e.title),h}replace_with_json(e){E.from_json(e).destructively_move(this)}create_json_patch_string(e){return JSON.stringify(this.create_json_patch(e))}create_json_patch(e){for(const t of e)if(t.document!=this)throw new Error(\"Cannot create a patch using events from a different document\");const t=new d.Serializer,s=t.to_serializable(e);for(const e of this._all_models.values())t.remove_def(e);return{events:s,references:[...t.definitions]}}apply_json_patch(e,t=new Map,s){const o=e.references,n=e.events,i=E._instantiate_references_json(o,this._all_models,this._resolver);t instanceof Map||(t=new Map(t));for(const e of n)switch(e.kind){case\"RootAdded\":case\"RootRemoved\":case\"ModelChanged\":{const t=e.model.id,s=this._all_models.get(t);if(null!=s)i.set(t,s);else if(!i.has(t))throw _.logger.warn(`Got an event for unknown model ${e.model}\"`),new Error(\"event model wasn't known\");break}}const r=new Map(this._all_models),l=new Map;for(const[e,t]of i)r.has(e)||l.set(e,t);E._initialize_references_json(o,r,l,t);for(const e of n)switch(e.kind){case\"MessageSent\":{const{msg_type:s,msg_data:o}=e;let n;if(void 0===o){if(1!=t.size)throw new Error(\"expected exactly one buffer\");{const[[,e]]=t;n=e}}else n=E._resolve_refs(o,r,l,t);this._trigger_on_message(s,n);break}case\"ModelChanged\":{const o=e.model.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot apply patch to ${o} which is not in the document`);const i=e.attr,_=E._resolve_refs(e.new,r,l,t);n.setv({[i]:_},{setter_id:s});break}case\"ColumnDataChanged\":{const o=e.column_source.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot stream to ${o} which is not in the document`);const i=E._resolve_refs(e.new,new Map,new Map,t);if(null!=e.cols)for(const e in n.data)e in i||(i[e]=n.data[e]);n.setv({data:i},{setter_id:s,check_eq:!1});break}case\"ColumnsStreamed\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot stream to ${t} which is not in the document`);if(!(o instanceof k.ColumnDataSource))throw new Error(\"Cannot stream to non-ColumnDataSource\");const n=e.data,i=e.rollover;o.stream(n,i,s);break}case\"ColumnsPatched\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot patch ${t} which is not in the document`);if(!(o instanceof k.ColumnDataSource))throw new Error(\"Cannot patch non-ColumnDataSource\");const n=e.patches;o.patch(n,s);break}case\"RootAdded\":{const t=e.model.id,o=i.get(t);this.add_root(o,s);break}case\"RootRemoved\":{const t=e.model.id,o=i.get(t);this.remove_root(o,s);break}case\"TitleChanged\":this.set_title(e.title,s);break;default:throw new Error(`Unknown patch event ${JSON.stringify(e)}`)}}}s.Document=E,E.__name__=\"Document\"},\n function _(e,o,s,r,t){r();const l=e(1),i=e(8),d=e(13),n=e(14);s.overrides={};const a=new Map;s.Models=e=>{const o=s.Models.get(e);if(null!=o)return o;throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`)},s.Models.get=e=>{var o;return null!==(o=s.overrides[e])&&void 0!==o?o:a.get(e)},s.Models.register=(e,o)=>{s.overrides[e]=o},s.Models.unregister=e=>{delete s.overrides[e]},s.Models.register_models=(e,o=!1,s)=>{var r;if(null!=e)for(const t of(0,i.isArray)(e)?e:(0,d.values)(e))if(r=t,(0,i.isObject)(r)&&r.prototype instanceof n.HasProps){const e=t.__qualified__;o||!a.has(e)?a.set(e,t):null!=s?s(e):console.warn(`Model '${e}' was already registered`)}},s.register_models=s.Models.register_models,s.Models.registered_names=()=>[...a.keys()];class _{constructor(){this._known_models=new Map}get(e,o){var r;const t=null!==(r=s.Models.get(e))&&void 0!==r?r:this._known_models.get(e);if(null!=t)return t;if(void 0!==o)return o;throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`)}register(e){const o=e.__qualified__;null==this.get(o,null)?this._known_models.set(o,e):console.warn(`Model '${o}' was already registered with this resolver`)}}s.ModelResolver=_,_.__name__=\"ModelResolver\";const g=(0,l.__importStar)(e(38));(0,s.register_models)(g);const u=(0,l.__importStar)(e(392));(0,s.register_models)(u)},\n function _(n,t,r,e,i){e();\n // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n // Underscore may be freely distributed under the MIT license.\n const o=n(9),u=Object.prototype.toString;function c(n){return!0===n||!1===n||\"[object Boolean]\"===u.call(n)}function f(n){return\"[object Number]\"===u.call(n)}function l(n){return\"[object String]\"===u.call(n)}function s(n){return\"symbol\"==typeof n}function a(n){const t=typeof n;return\"function\"===t||\"object\"===t&&!!n}function b(n){return a(n)&&void 0!==n[Symbol.iterator]}r.isBoolean=c,r.isNumber=f,r.isInteger=function(n){return f(n)&&Number.isInteger(n)},r.isString=l,r.isSymbol=s,r.isPrimitive=function(n){return null===n||c(n)||f(n)||l(n)||s(n)},r.isFunction=function(n){return\"[object Function]\"===u.call(n)},r.isArray=function(n){return Array.isArray(n)},r.isArrayOf=function(n,t){return(0,o.every)(n,t)},r.isArrayableOf=function(n,t){for(let r=0,e=n.length;r0,\"'step' must be a positive number\"),null==t&&(t=n,n=0);const{max:r,ceil:o,abs:i}=Math,c=n<=t?e:-e,f=r(o(i(t-n)/e),0),s=new Array(f);for(let t=0;t=0?t:n.length+t]},e.zip=function(...n){if(0==n.length)return[];const t=(0,c.min)(n.map((n=>n.length))),e=n.length,r=new Array(t);for(let o=0;on.length))),r=Array(e);for(let n=0;nn[t]))},e.argmax=function(n){return(0,c.max_by)(m(n.length),(t=>n[t]))},e.sort_by=function(n,t){const e=n.map(((n,e)=>({value:n,index:e,key:t(n)})));return e.sort(((n,t)=>{const e=n.key,r=t.key;if(e!==r){if(e>r||void 0===e)return 1;if(en.value))},e.uniq=function(n){const t=new Set;for(const e of n)t.add(e);return[...t]},e.uniq_by=function(n,t){const e=[],r=[];for(const o of n){const n=t(o);l(r,n)||(r.push(n),e.push(o))}return e},e.union=function(...n){const t=new Set;for(const e of n)for(const n of e)t.add(n);return[...t]},e.intersection=function(n,...t){const e=[];n:for(const r of n)if(!l(e,r)){for(const n of t)if(!l(n,r))continue n;e.push(r)}return e},e.difference=function(n,...t){const e=a(t);return n.filter((n=>!l(e,n)))},e.remove_at=function(n,t){const e=s(n);return e.splice(t,1),e},e.remove_by=function(n,t){for(let e=0;e2*a;)n-=2*a;return n}function c(n,t){return u(n-t)}function f(){return Math.random()}function i(n){switch(n){case\"deg\":return a/180;case\"rad\":return 1;case\"grad\":return a/200;case\"turn\":return 2*a}}r.angle_norm=u,r.angle_dist=c,r.angle_between=function(n,t,r,e=!1){const o=c(t,r);if(0==o)return!1;if(o==2*a)return!0;const f=u(n),i=c(t,f)<=o&&c(f,r)<=o;return e?!i:i},r.random=f,r.randomIn=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},r.atan2=function(n,t){return Math.atan2(t[1]-n[1],t[0]-n[0])},r.radians=function(n){return n*(a/180)},r.degrees=function(n){return n/(a/180)},r.resolve_angle=function(n,t){return-i(t)*n},r.to_radians_coeff=i,r.rnorm=function(n,t){let r,e;for(;r=f(),e=f(),e=(2*e-1)*Math.sqrt(1/Math.E*2),!(-4*r*r*Math.log(r)>=e*e););let o=e/r;return o=n+t*o,o},r.clamp=function(n,t,r){return nr?r:n},r.log=function(n,t=Math.E){return Math.log(n)/Math.log(t)},r.float32_epsilon=1.1920928955078125e-7},\n function _(r,n,e,o,s){o();class t extends Error{}e.AssertionError=t,t.__name__=\"AssertionError\",e.assert=function(r,n){if(!(!0===r||!1!==r&&r()))throw new t(null!=n?n:\"Assertion failed\")},e.unreachable=function(){throw new Error(\"unreachable code\")}},\n function _(n,t,e,r,o){r();const i=n(10);function l(n,t,e,...r){const o=n.length;t<0&&(t+=o),t<0?t=0:t>o&&(t=o),null==e||e>o-t?e=o-t:e<0&&(e=0);const i=o-e+r.length,l=new n.constructor(i);let u=0;for(;u0?0:r-1;for(;o>=0&&ot[t.length-1])return t.length;let e=0,r=t.length-1;for(;r-e!=1;){const o=e+Math.floor((r-e)/2);n>=t[o]?e=o:r=o}return e}e.is_empty=function(n){return 0==n.length},e.copy=function(n){return Array.isArray(n)?n.slice():new n.constructor(n)},e.splice=l,e.head=u,e.insert=function(n,t,e){return l(n,e,0,t)},e.append=function(n,t){return l(n,n.length,0,t)},e.prepend=function(n,t){return l(n,0,0,t)},e.indexOf=function(n,t){for(let e=0,r=n.length;ee&&(e=t);return e},e.minmax=function(n){let t,e=1/0,r=-1/0;for(let o=0,i=n.length;or&&(r=t));return[e,r]},e.minmax2=function(n,t){let e,r,o=1/0,i=-1/0,l=1/0,u=-1/0;const c=Math.min(n.length,t.length);for(let f=0;fi&&(i=e),ru&&(u=r));return[o,i,l,u]},e.min_by=function(n,t){if(0==n.length)throw new Error(\"min_by() called with an empty array\");let e=n[0],r=t(e);for(let o=1,i=n.length;or&&(e=i,r=l)}return e},e.sum=function(n){let t=0;for(let e=0,r=n.length;et[r]=n+e),0),t},e.every=function(n,t){for(let e=0,r=n.length;e(n-t)/r))}},\n function _(t,e,n,c,o){c();const s=t(9),{hasOwnProperty:r}=Object.prototype;function i(t){return Object.keys(t).length}function u(t){return 0==i(t)}n.keys=Object.keys,n.values=Object.values,n.entries=Object.entries,n.extend=Object.assign,n.clone=function(t){return Object.assign({},t)},n.merge=function(t,e){const n=Object.create(Object.prototype),c=(0,s.concat)([Object.keys(t),Object.keys(e)]);for(const o of c){const c=r.call(t,o)?t[o]:[],i=r.call(e,o)?e[o]:[];n[o]=(0,s.union)(c,i)}return n},n.size=i,n.is_empty=u,n.isEmpty=u,n.to_object=function(t){const e={};for(const[n,c]of t)e[n]=c;return e}},\n function _(e,t,s,n,r){n();const i=e(1);var o;const c=e(15),a=e(17),_=(0,i.__importStar)(e(18)),h=(0,i.__importStar)(e(21)),u=e(34),l=e(13),f=e(8),p=e(26),d=e(30),g=e(35),y=e(26),v=e(36),m=e(37),b=(0,i.__importStar)(e(21));class w extends((0,c.Signalable)()){constructor(e={}){var t,s;super(),this._subtype=void 0,this.document=null,this.destroyed=new c.Signal0(this,\"destroyed\"),this.change=new c.Signal0(this,\"change\"),this.transformchange=new c.Signal0(this,\"transformchange\"),this.exprchange=new c.Signal0(this,\"exprchange\"),this.properties={},this._watchers=new WeakMap,this._pending=!1,this._changing=!1;const n=e instanceof Map?e.get.bind(e):t=>e[t];this.id=null!==(t=n(\"id\"))&&void 0!==t?t:(0,u.uniqueId)();for(const[e,{type:t,default_value:s,options:r}]of(0,l.entries)(this._props)){let i;t instanceof _.PropertyAlias?Object.defineProperty(this.properties,e,{get:()=>this.properties[t.attr],configurable:!1,enumerable:!1}):(i=t instanceof h.Kind?new _.PrimitiveProperty(this,e,t,s,n(e),r):new t(this,e,h.Any,s,n(e),r),this.properties[e]=i)}null!==(s=n(\"__deferred__\"))&&void 0!==s&&s||(this.finalize(),this.connect_signals())}get is_syncable(){return!0}set type(e){console.warn(\"prototype.type = 'ModelName' is deprecated, use static __name__ instead\"),this.constructor.__name__=e}get type(){return this.constructor.__qualified__}static get __qualified__(){const{__module__:e,__name__:t}=this;return null!=e?`${e}.${t}`:t}static get[Symbol.toStringTag](){return this.__name__}static _fix_default(e,t){if(void 0===e||(0,f.isFunction)(e))return e;if((0,f.isPrimitive)(e))return()=>e;{const t=new m.Cloner;return()=>t.clone(e)}}static define(e){for(const[t,s]of(0,l.entries)((0,f.isFunction)(e)?e(b):e)){if(null!=this.prototype._props[t])throw new Error(`attempted to redefine property '${this.prototype.type}.${t}'`);if(null!=this.prototype[t])throw new Error(`attempted to redefine attribute '${this.prototype.type}.${t}'`);Object.defineProperty(this.prototype,t,{get(){return this.properties[t].get_value()},set(e){return this.setv({[t]:e}),this},configurable:!1,enumerable:!0});const[e,n,r={}]=s,i={type:e,default_value:this._fix_default(n,t),options:r},o=Object.assign({},this.prototype._props);o[t]=i,this.prototype._props=o}}static internal(e){const t={};for(const[s,n]of(0,l.entries)((0,f.isFunction)(e)?e(b):e)){const[e,r,i={}]=n;t[s]=[e,r,Object.assign(Object.assign({},i),{internal:!0})]}this.define(t)}static mixins(e){function t(e,t){const s={};for(const[n,r]of(0,l.entries)(t))s[e+n]=r;return s}const s={},n=[];for(const r of(0,f.isArray)(e)?e:[e])if((0,f.isArray)(r)){const[e,i]=r;(0,l.extend)(s,t(e,i)),n.push([e,i])}else{const e=r;(0,l.extend)(s,e),n.push([\"\",e])}this.define(s),this.prototype._mixins=[...this.prototype._mixins,...n]}static override(e){for(const[t,s]of(0,l.entries)(e)){const e=this._fix_default(s,t),n=this.prototype._props[t];if(null==n)throw new Error(`attempted to override nonexistent '${this.prototype.type}.${t}'`);const r=Object.assign({},this.prototype._props);r[t]=Object.assign(Object.assign({},n),{default_value:e}),this.prototype._props=r}}toString(){return`${this.type}(${this.id})`}property(e){const t=this.properties[e];if(null!=t)return t;throw new Error(`unknown property ${this.type}.${e}`)}get attributes(){const e={};for(const t of this)e[t.attr]=t.get_value();return e}[m.clone](e){const t=new Map;for(const s of this)s.dirty&&t.set(s.attr,e.clone(s.get_value()));return new this.constructor(t)}[y.equals](e,t){for(const s of this){const n=e.property(s.attr);if(!t.eq(s.get_value(),n.get_value()))return!1}return!0}[v.pretty](e){const t=e.token,s=[];for(const n of this)if(n.dirty){const r=n.get_value();s.push(`${n.attr}${t(\":\")} ${e.to_string(r)}`)}return`${this.constructor.__qualified__}${t(\"(\")}${t(\"{\")}${s.join(`${t(\",\")} `)}${t(\"}\")}${t(\")\")}`}[d.serialize](e){const t=this.ref();e.add_ref(this,t);const s=this.struct();for(const t of this)t.syncable&&(e.include_defaults||t.dirty)&&(s.attributes[t.attr]=e.to_serializable(t.get_value()));return e.add_def(this,s),t}finalize(){for(const e of this){if(!(e instanceof _.VectorSpec||e instanceof _.ScalarSpec))continue;const t=e.get_value();if(null!=t){const{transform:e,expr:s}=t;null!=e&&this.connect(e.change,(()=>this.transformchange.emit())),null!=s&&this.connect(s.change,(()=>this.exprchange.emit()))}}this.initialize()}initialize(){}connect_signals(){}disconnect_signals(){c.Signal.disconnectReceiver(this)}destroy(){this.disconnect_signals(),this.destroyed.emit()}clone(){return(new m.Cloner).clone(this)}changed_for(e){const t=this._watchers.get(e);return this._watchers.set(e,!1),null==t||t}_setv(e,t){const s=t.check_eq,n=[],r=this._changing;this._changing=!0;for(const[t,r]of e)!1!==s&&(0,p.is_equal)(t.get_value(),r)||(t.set_value(r),n.push(t));n.length>0&&(this._watchers=new WeakMap,this._pending=!0);for(const e of n)e.change.emit();if(!r){if(!t.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}}setv(e,t={}){const s=(0,l.entries)(e);if(0==s.length)return;if(!0===t.silent){this._watchers=new WeakMap;for(const[e,t]of s)this.properties[e].set_value(t);return}const n=new Map,r=new Map;for(const[e,t]of s){const s=this.properties[e];n.set(s,t),r.set(s,s.get_value())}this._setv(n,t);const{document:i}=this;if(null!=i){const e=[];for(const[t,s]of r)e.push([t,s,t.get_value()]);for(const[,t,s]of e)if(this._needs_invalidate(t,s)){i._invalidate_all_models();break}this._push_changes(e,t)}}getv(e){return this.property(e).get_value()}ref(){return{id:this.id}}struct(){const e={type:this.type,id:this.id,attributes:{}};return null!=this._subtype&&(e.subtype=this._subtype),e}set_subtype(e){this._subtype=e}*[Symbol.iterator](){yield*(0,l.values)(this.properties)}*syncable_properties(){for(const e of this)e.syncable&&(yield e)}serializable_attributes(){const e={};for(const t of this.syncable_properties())e[t.attr]=t.get_value();return e}static _json_record_references(e,t,s,n){const{recursive:r}=n;if((0,a.is_ref)(t)){const n=e.get_model_by_id(t.id);null==n||s.has(n)||w._value_record_references(n,s,{recursive:r})}else if((0,f.isArray)(t))for(const n of t)w._json_record_references(e,n,s,{recursive:r});else if((0,f.isPlainObject)(t))for(const n of(0,l.values)(t))w._json_record_references(e,n,s,{recursive:r})}static _value_record_references(e,t,s){const{recursive:n}=s;if(e instanceof w){if(!t.has(e)&&(t.add(e),n))for(const s of e.syncable_properties()){const e=s.get_value();w._value_record_references(e,t,{recursive:n})}}else if((0,f.isArray)(e))for(const s of e)w._value_record_references(s,t,{recursive:n});else if((0,f.isPlainObject)(e))for(const s of(0,l.values)(e))w._value_record_references(s,t,{recursive:n})}references(){const e=new Set;return w._value_record_references(this,e,{recursive:!0}),e}_doc_attached(){}_doc_detached(){}attach_document(e){if(null!=this.document&&this.document!=e)throw new Error(\"models must be owned by only a single document\");this.document=e,this._doc_attached()}detach_document(){this._doc_detached(),this.document=null}_needs_invalidate(e,t){const s=new Set;w._value_record_references(t,s,{recursive:!1});const n=new Set;w._value_record_references(e,n,{recursive:!1});for(const e of s)if(!n.has(e))return!0;for(const e of n)if(!s.has(e))return!0;return!1}_push_changes(e,t={}){if(!this.is_syncable)return;const{document:s}=this;if(null==s)return;const{setter_id:n}=t,r=[];for(const[t,i,o]of e)t.syncable&&r.push(new g.ModelChangedEvent(s,this,t.attr,i,o,n));if(0!=r.length){let e;1==r.length?[e]=r:e=new g.DocumentEventBatch(s,r,n),s._trigger_on_change(e)}}on_change(e,t){for(const s of(0,f.isArray)(e)?e:[e])this.connect(s.change,t)}}s.HasProps=w,(o=w).prototype._props={},o.prototype._mixins=[]},\n function _(n,t,e,l,s){l();const i=n(16),o=n(9);class c{constructor(n,t){this.sender=n,this.name=t}connect(n,t=null){u.has(this.sender)||u.set(this.sender,[]);const e=u.get(this.sender);if(null!=g(e,this,n,t))return!1;const l=null!=t?t:n;a.has(l)||a.set(l,[]);const s=a.get(l),i={signal:this,slot:n,context:t};return e.push(i),s.push(i),!0}disconnect(n,t=null){const e=u.get(this.sender);if(null==e||0===e.length)return!1;const l=g(e,this,n,t);if(null==l)return!1;const s=null!=t?t:n,i=a.get(s);return l.signal=null,d(e),d(i),!0}emit(n){var t;const e=null!==(t=u.get(this.sender))&&void 0!==t?t:[];for(const{signal:t,slot:l,context:s}of e)t===this&&l.call(s,n,this.sender)}}e.Signal=c,c.__name__=\"Signal\";class r extends c{emit(){super.emit(void 0)}}e.Signal0=r,r.__name__=\"Signal0\",function(n){function t(n,t){const e=u.get(n);if(null==e||0===e.length)return;const l=a.get(t);if(null!=l&&0!==l.length){for(const t of l){if(null==t.signal)return;t.signal.sender===n&&(t.signal=null)}d(e),d(l)}}function e(n){var t;const e=u.get(n);if(null!=e&&0!==e.length){for(const n of e){if(null==n.signal)return;const e=null!==(t=n.context)&&void 0!==t?t:n.slot;n.signal=null,d(a.get(e))}d(e)}}function l(n,t,e){const l=a.get(n);if(null!=l&&0!==l.length){for(const n of l){if(null==n.signal)return;if(null!=t&&n.slot!=t)continue;const l=n.signal.sender;null!=e&&e.has(l)||(n.signal=null,d(u.get(l)))}d(l)}}function s(n){const t=u.get(n);if(null!=t&&0!==t.length){for(const n of t)n.signal=null;d(t)}const e=a.get(n);if(null!=e&&0!==e.length){for(const n of e)n.signal=null;d(e)}}n.disconnect_between=t,n.disconnect_sender=e,n.disconnect_receiver=l,n.disconnect_all=s,n.disconnectBetween=t,n.disconnectSender=e,n.disconnectReceiver=l,n.disconnectAll=s}(c||(e.Signal=c={})),e.Signalable=function(){return class{connect(n,t){return n.connect(t,this)}disconnect(n,t){return n.disconnect(t,this)}}};const u=new WeakMap,a=new WeakMap;function g(n,t,e,l){return(0,o.find)(n,(n=>n.signal===t&&n.slot===e&&n.context===l))}const f=new Set;function d(n){0===f.size&&(async()=>{await(0,i.defer)(),function(){for(const n of f)(0,o.remove_by)(n,(n=>null==n.signal));f.clear()}()})(),f.add(n)}},\n function _(e,n,t,s,o){s();const r=new MessageChannel,a=new Map;r.port1.onmessage=e=>{const n=e.data,t=a.get(n);if(null!=t)try{t()}finally{a.delete(n)}};let i=1;t.defer=function(){return new Promise((e=>{const n=i++;a.set(n,e),r.port2.postMessage(n)}))},t.wait=function(e){return new Promise((n=>setTimeout(n,e)))}},\n function _(n,t,i,e,c){e();const r=n(8),s=n(13);i.is_ref=function(n){if((0,r.isPlainObject)(n)){const t=(0,s.keys)(n);return 1==t.length&&\"id\"==t[0]}return!1}},\n function _(e,t,n,r,a){r(),n.YCoordinateSeqSeqSeqSpec=n.XCoordinateSeqSeqSeqSpec=n.YCoordinateSeqSpec=n.XCoordinateSeqSpec=n.YCoordinateSpec=n.XCoordinateSpec=n.CoordinateSeqSeqSeqSpec=n.CoordinateSeqSpec=n.CoordinateSpec=n.BaseCoordinateSpec=n.NumberUnitsSpec=n.UnitsSpec=n.DataSpec=n.VectorSpec=n.TextBaselineScalar=n.TextAlignScalar=n.FontStyleScalar=n.FontSizeScalar=n.FontScalar=n.LineDashScalar=n.LineCapScalar=n.LineJoinScalar=n.ArrayScalar=n.NullStringScalar=n.StringScalar=n.NumberScalar=n.ColorScalar=n.AnyScalar=n.ScalarSpec=n.VerticalAlign=n.UpdateMode=n.TooltipAttachment=n.TickLabelOrientation=n.TextureRepetition=n.TextBaseline=n.TextAlign=n.TapBehavior=n.StepMode=n.StartEnd=n.SpatialUnits=n.Sort=n.SizingMode=n.Side=n.RoundingFunction=n.ResetPolicy=n.RenderMode=n.RenderLevel=n.RadiusDimension=n.PointPolicy=n.Place=void 0,n.TextBaselineSpec=n.TextAlignSpec=n.FontStyleSpec=n.FontSizeSpec=n.FontSpec=n.LineDashSpec=n.LineCapSpec=n.LineJoinSpec=n.MarkerSpec=n.ArraySpec=n.NullStringSpec=n.StringSpec=n.AnySpec=n.NDArraySpec=n.ColorSpec=n.ScreenSizeSpec=n.NumberSpec=n.IntSpec=n.BooleanSpec=n.NullDistanceSpec=n.DistanceSpec=n.AngleSpec=void 0;const i=e(1),s=e(15),l=e(19),o=(0,i.__importStar)(e(20)),c=e(24),_=e(9),u=e(12),d=e(10),S=e(22),p=e(27),m=e(8),h=e(28),v=e(29),y=e(33);function x(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function g(e){return(0,m.isPlainObject)(e)&&(void 0===e.value?0:1)+(void 0===e.field?0:1)+(void 0===e.expr?0:1)==1}a(\"Uniform\",y.Uniform),a(\"UniformScalar\",y.UniformScalar),a(\"UniformVector\",y.UniformVector),n.isSpec=g;class f{constructor(e,t,n,r,a,i={}){var l;let o;if(this.obj=e,this.attr=t,this.kind=n,this.default_value=r,this._dirty=!1,this.change=new s.Signal0(this.obj,\"change\"),this.internal=null!==(l=i.internal)&&void 0!==l&&l,this.convert=i.convert,this.on_update=i.on_update,void 0!==a)o=a,this._dirty=!0;else{const t=this._default_override();if(void 0!==t)o=t;else{if(void 0===r)return void(this.spec={value:null});o=r(e)}}this._update(o)}get is_value(){return void 0!==this.spec.value}get syncable(){return!this.internal}get_value(){return this.spec.value}set_value(e){this._update(e),this._dirty=!0}_default_override(){}get dirty(){return this._dirty}_update(e){var t;if(this.validate(e),null!=this.convert){const t=this.convert(e);void 0!==t&&(e=t)}this.spec={value:e},null===(t=this.on_update)||void 0===t||t.call(this,e,this.obj)}toString(){return`Prop(${this.obj}.${this.attr}, spec: ${x(this.spec)})`}normalize(e){return e}validate(e){if(!this.valid(e))throw new Error(`${this.obj}.${this.attr} given invalid value: ${x(e)}`)}valid(e){return this.kind.valid(e)}_value(e=!0){if(!this.is_value)throw new Error(\"attempted to retrieve property value for property without value specification\");let t=this.normalize([this.spec.value])[0];return null!=this.spec.transform&&e&&(t=this.spec.transform.compute(t)),t}}n.Property=f,f.__name__=\"Property\";class A{constructor(e){this.attr=e}}n.PropertyAlias=A,A.__name__=\"PropertyAlias\",n.Alias=function(e){return new A(e)};class C extends f{}n.PrimitiveProperty=C,C.__name__=\"PrimitiveProperty\";class T extends f{}n.Any=T,T.__name__=\"Any\";class L extends f{valid(e){return(0,m.isArray)(e)||(0,m.isTypedArray)(e)}}n.Array=L,L.__name__=\"Array\";class w extends f{valid(e){return(0,m.isBoolean)(e)}}n.Boolean=w,w.__name__=\"Boolean\";class P extends f{valid(e){return(0,S.is_Color)(e)}}n.Color=P,P.__name__=\"Color\";class b extends f{}n.Instance=b,b.__name__=\"Instance\";class q extends f{valid(e){return(0,m.isNumber)(e)}}n.Number=q,q.__name__=\"Number\";class N extends q{valid(e){return(0,m.isNumber)(e)&&(0|e)==e}}n.Int=N,N.__name__=\"Int\";class z extends q{}n.Angle=z,z.__name__=\"Angle\";class B extends q{valid(e){return(0,m.isNumber)(e)&&0<=e&&e<=1}}n.Percent=B,B.__name__=\"Percent\";class F extends f{valid(e){return(0,m.isString)(e)}}n.String=F,F.__name__=\"String\";class D extends f{valid(e){return null===e||(0,m.isString)(e)}}n.NullString=D,D.__name__=\"NullString\";class U extends F{}n.FontSize=U,U.__name__=\"FontSize\";class M extends F{_default_override(){return h.settings.dev?\"Bokeh\":void 0}}n.Font=M,M.__name__=\"Font\";class R extends f{valid(e){return(0,m.isString)(e)&&(0,_.includes)(this.enum_values,e)}}function k(e){return class extends R{get enum_values(){return[...e]}}}n.EnumProperty=R,R.__name__=\"EnumProperty\",n.Enum=k;class O extends R{get enum_values(){return[...o.Direction]}normalize(e){const t=new Uint8Array(e.length);for(let n=0;n=0}}n.ScreenSizeSpec=fe,fe.__name__=\"ScreenSizeSpec\";class Ae extends ne{materialize(e){return(0,S.encode_rgba)((0,S.color2rgba)(e))}v_materialize(e){if(!(0,v.is_NDArray)(e)){const t=e.length,n=new c.RGBAArray(4*t);let r=0;for(const t of e){const[e,a,i,s]=(0,S.color2rgba)(t);n[r++]=e,n[r++]=a,n[r++]=i,n[r++]=s}return new c.ColorArray(n.buffer)}if(\"uint32\"==e.dtype&&1==e.dimension)return(0,p.to_big_endian)(e);if(\"uint8\"==e.dtype&&1==e.dimension){const[t]=e.shape,n=new c.RGBAArray(4*t);let r=0;for(const t of e)n[r++]=t,n[r++]=t,n[r++]=t,n[r++]=255;return new c.ColorArray(n.buffer)}if(\"uint8\"==e.dtype&&2==e.dimension){const[t,n]=e.shape;if(4==n)return new c.ColorArray(e.buffer);if(3==n){const r=new c.RGBAArray(4*t);for(let a=0,i=0;a0){let o=r[e];return null==o&&(r[e]=o=new v(e,l)),o}throw new TypeError(\"Logger.get() expects a non-empty string name and an optional log-level\")}get level(){return this.get_level()}get_level(){return this._log_level}set_level(e){if(e instanceof i)this._log_level=e;else{if(!(0,s.isString)(e)||null==v.log_levels[e])throw new Error(\"Logger.set_level() expects a log-level object or a string name of a log-level\");this._log_level=v.log_levels[e]}const l=`[${this._name}]`;for(const[e,o]of(0,g.entries)(v.log_levels))o.level\",\"*\"),t.HTTPMethod=(0,a.Enum)(\"POST\",\"GET\"),t.HexTileOrientation=(0,a.Enum)(\"pointytop\",\"flattop\"),t.HoverMode=(0,a.Enum)(\"mouse\",\"hline\",\"vline\"),t.LatLon=(0,a.Enum)(\"lat\",\"lon\"),t.LegendClickPolicy=(0,a.Enum)(\"none\",\"hide\",\"mute\"),t.LegendLocation=t.Anchor,t.LineCap=(0,a.Enum)(\"butt\",\"round\",\"square\"),t.LineJoin=(0,a.Enum)(\"miter\",\"round\",\"bevel\"),t.LineDash=(0,a.Enum)(\"solid\",\"dashed\",\"dotted\",\"dotdash\",\"dashdot\"),t.LinePolicy=(0,a.Enum)(\"prev\",\"next\",\"nearest\",\"interp\",\"none\"),t.Location=(0,a.Enum)(\"above\",\"below\",\"left\",\"right\"),t.Logo=(0,a.Enum)(\"normal\",\"grey\"),t.MarkerType=(0,a.Enum)(\"asterisk\",\"circle\",\"circle_cross\",\"circle_dot\",\"circle_x\",\"circle_y\",\"cross\",\"dash\",\"diamond\",\"diamond_cross\",\"diamond_dot\",\"dot\",\"hex\",\"hex_dot\",\"inverted_triangle\",\"plus\",\"square\",\"square_cross\",\"square_dot\",\"square_pin\",\"square_x\",\"star\",\"star_dot\",\"triangle\",\"triangle_dot\",\"triangle_pin\",\"x\",\"y\"),t.MutedPolicy=(0,a.Enum)(\"show\",\"ignore\"),t.Orientation=(0,a.Enum)(\"vertical\",\"horizontal\"),t.OutputBackend=(0,a.Enum)(\"canvas\",\"svg\",\"webgl\"),t.PaddingUnits=(0,a.Enum)(\"percent\",\"absolute\"),t.Place=(0,a.Enum)(\"above\",\"below\",\"left\",\"right\",\"center\"),t.PointPolicy=(0,a.Enum)(\"snap_to_data\",\"follow_mouse\",\"none\"),t.RadiusDimension=(0,a.Enum)(\"x\",\"y\",\"max\",\"min\"),t.RenderLevel=(0,a.Enum)(\"image\",\"underlay\",\"glyph\",\"guide\",\"annotation\",\"overlay\"),t.RenderMode=(0,a.Enum)(\"canvas\",\"css\"),t.ResetPolicy=(0,a.Enum)(\"standard\",\"event_only\"),t.RoundingFunction=(0,a.Enum)(\"round\",\"nearest\",\"floor\",\"rounddown\",\"ceil\",\"roundup\"),t.SelectionMode=(0,a.Enum)(\"replace\",\"append\",\"intersect\",\"subtract\"),t.Side=(0,a.Enum)(\"above\",\"below\",\"left\",\"right\"),t.SizingMode=(0,a.Enum)(\"stretch_width\",\"stretch_height\",\"stretch_both\",\"scale_width\",\"scale_height\",\"scale_both\",\"fixed\"),t.Sort=(0,a.Enum)(\"ascending\",\"descending\"),t.SpatialUnits=(0,a.Enum)(\"screen\",\"data\"),t.StartEnd=(0,a.Enum)(\"start\",\"end\"),t.StepMode=(0,a.Enum)(\"after\",\"before\",\"center\"),t.TapBehavior=(0,a.Enum)(\"select\",\"inspect\"),t.TextAlign=(0,a.Enum)(\"left\",\"right\",\"center\"),t.TextBaseline=(0,a.Enum)(\"top\",\"middle\",\"bottom\",\"alphabetic\",\"hanging\",\"ideographic\"),t.TextureRepetition=(0,a.Enum)(\"repeat\",\"repeat_x\",\"repeat_y\",\"no_repeat\"),t.TickLabelOrientation=(0,a.Enum)(\"vertical\",\"horizontal\",\"parallel\",\"normal\"),t.TooltipAttachment=(0,a.Enum)(\"horizontal\",\"vertical\",\"left\",\"right\",\"above\",\"below\"),t.UpdateMode=(0,a.Enum)(\"replace\",\"append\"),t.VerticalAlign=(0,a.Enum)(\"top\",\"middle\",\"bottom\")},\n function _(e,n,t,s,r){s();const i=(0,e(1).__importStar)(e(8)),a=e(22),l=e(13),_=window.Map,{hasOwnProperty:u}=Object.prototype;class d{}t.Kind=d,d.__name__=\"Kind\",function(e){class n extends d{valid(e){return!0}}n.__name__=\"Any\",e.Any=n;class t extends d{valid(e){return!0}}t.__name__=\"Unknown\",e.Unknown=t;class s extends d{valid(e){return i.isBoolean(e)}}s.__name__=\"Boolean\",e.Boolean=s;class r extends d{constructor(e){super(),this.obj_type=e}valid(e){return!0}}r.__name__=\"Ref\",e.Ref=r;class c extends d{valid(e){return!0}}c.__name__=\"AnyRef\",e.AnyRef=c;class o extends d{valid(e){return i.isNumber(e)}}o.__name__=\"Number\",e.Number=o;class p extends o{valid(e){return super.valid(e)&&i.isInteger(e)}}p.__name__=\"Int\",e.Int=p;class y extends o{valid(e){return super.valid(e)&&0<=e&&e<=1}}y.__name__=\"Percent\",e.Percent=y;class m extends d{constructor(e){super(),this.types=e,this.types=e}valid(e){return this.types.some((n=>n.valid(e)))}}m.__name__=\"Or\",e.Or=m;class v extends d{constructor(e){super(),this.types=e,this.types=e}valid(e){if(!i.isArray(e))return!1;for(let n=0;nthis.item_type.valid(e)))}}f.__name__=\"Array\",e.Array=f;class K extends d{valid(e){return null===e}}K.__name__=\"Null\",e.Null=K;class b extends d{constructor(e){super(),this.base_type=e}valid(e){return null===e||this.base_type.valid(e)}}b.__name__=\"Nullable\",e.Nullable=b;class A extends d{constructor(e){super(),this.base_type=e}valid(e){return void 0===e||this.base_type.valid(e)}}A.__name__=\"Opt\",e.Opt=A;class x extends d{valid(e){return i.isString(e)}}x.__name__=\"String\",e.String=x;class S extends d{constructor(e){super(),this.values=new Set(e)}valid(e){return this.values.has(e)}*[Symbol.iterator](){yield*this.values}}S.__name__=\"Enum\",e.Enum=S;class N extends d{constructor(e){super(),this.item_type=e}valid(e){if(!i.isPlainObject(e))return!1;for(const n in e)if(u.call(e,n)){const t=e[n];if(!this.item_type.valid(t))return!1}return!0}}N.__name__=\"Dict\",e.Dict=N;class O extends d{constructor(e,n){super(),this.key_type=e,this.item_type=n}valid(e){if(!(e instanceof _))return!1;for(const[n,t]of e.entries())if(!this.key_type.valid(n)||!this.item_type.valid(t))return!1;return!0}}O.__name__=\"Map\",e.Map=O;class g extends d{valid(e){return(0,a.is_Color)(e)}}g.__name__=\"Color\",e.Color=g;class P extends d{valid(e){return i.isFunction(e)}}P.__name__=\"Function\",e.Function=P}(t.Kinds||(t.Kinds={})),t.Any=new t.Kinds.Any,t.Unknown=new t.Kinds.Unknown,t.Boolean=new t.Kinds.Boolean,t.Number=new t.Kinds.Number,t.Int=new t.Kinds.Int,t.String=new t.Kinds.String,t.Null=new t.Kinds.Null;t.Nullable=e=>new t.Kinds.Nullable(e);t.Opt=e=>new t.Kinds.Opt(e);t.Or=(...e)=>new t.Kinds.Or(e);t.Tuple=(...e)=>new t.Kinds.Tuple(e);t.Struct=e=>new t.Kinds.Struct(e),t.Arrayable=new t.Kinds.Arrayable;t.Array=e=>new t.Kinds.Array(e);t.Dict=e=>new t.Kinds.Dict(e);t.Map=(e,n)=>new t.Kinds.Map(e,n);t.Enum=(...e)=>new t.Kinds.Enum(e);t.Ref=e=>new t.Kinds.Ref(e);t.AnyRef=()=>new t.Kinds.AnyRef;t.Function=()=>new t.Kinds.Function,t.Percent=new t.Kinds.Percent,t.Alpha=t.Percent,t.Color=new t.Kinds.Color,t.Auto=(0,t.Enum)(\"auto\"),t.FontSize=t.String,t.Font=t.String,t.Angle=t.Number},\n function _(n,t,r,e,s){e();const u=n(23),c=n(10),l=n(8),{round:i}=Math;function o(n){return(0,c.clamp)(i(n),0,255)}function a(){return[0,0,0,0]}function f(n){return[n>>24&255,n>>16&255,n>>8&255,255&n]}function d(n,t){var r;let e,s,u,c;return null==n?[e,s,u,c]=[0,0,0,0]:(0,l.isInteger)(n)?[e,s,u,c]=f(n):(0,l.isString)(n)?[e,s,u,c]=null!==(r=_(n))&&void 0!==r?r:[0,0,0,0]:([e,s,u,c=1]=n,c=o(255*c)),255==c&&null!=t&&(c=o(255*t)),[e,s,u,c]}r.transparent=a,r.encode_rgba=function([n,t,r,e]){return n<<24|t<<16|r<<8|e},r.decode_rgba=f,r.compose_alpha=function(n,t){return 255==(255&n)?4294967040&n|o(255*t):n},r.color2rgba=d;const h={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",10:\"a\",11:\"b\",12:\"c\",13:\"d\",14:\"e\",15:\"f\"};function g(n){return h[n>>4]+h[15&n]}r.color2css=function(n,t){const[r,e,s,u]=d(n,t);return`rgba(${r}, ${e}, ${s}, ${u/255})`},r.color2hex=function(n,t){const[r,e,s,u]=d(n,t),c=`#${g(r)}${g(e)}${g(s)}`;return 255==u?c:`${c}${g(u)}`},r.color2hexrgb=function(n){const[t,r,e]=d(n);return`#${g(t)}${g(r)}${g(e)}`};const b=/^rgba?\\(\\s*([^\\s,]+?)\\s+([^\\s,]+?)\\s+([^\\s,]+?)(?:\\s*\\/\\s*([^\\s,]+?))?\\s*\\)$/,$=/^rgba?\\(\\s*([^\\s,]+?)\\s*,\\s*([^\\s,]+?)\\s*,\\s*([^\\s,]+?)(?:\\s*,\\s*([^\\s,]+?))?\\s*\\)$/,m=(()=>{const n=document.createElement(\"canvas\");n.width=1,n.height=1;const t=n.getContext(\"2d\"),r=t.createLinearGradient(0,0,1,1);return n=>{t.fillStyle=r,t.fillStyle=n;const e=t.fillStyle;return e!=r?e:null}})();function _(n){var t;if(!(n=n.trim().toLowerCase()))return null;if(\"transparent\"==n)return[0,0,0,0];if((0,u.is_named_color)(n))return f(u.named_colors[n]);if(\"#\"==n[0]){const t=Number(`0x${n.substr(1)}`);if(isNaN(t))return null;switch(n.length-1){case 3:{const n=t>>8&15,r=t>>4&15,e=t>>0&15;return[n<<4|n,r<<4|r,e<<4|e,255]}case 4:{const n=t>>12&15,r=t>>8&15,e=t>>4&15,s=t>>0&15;return[n<<4|n,r<<4|r,e<<4|e,s<<4|s]}case 6:return[t>>16&255,t>>8&255,t>>0&255,255];case 8:return[t>>24&255,t>>16&255,t>>8&255,t>>0&255]}}else if(n.startsWith(\"rgb\")){const r=null!==(t=n.match(b))&&void 0!==t?t:n.match($);if(null!=r){let[,n,t,e,s=\"1\"]=r;const u=n.endsWith(\"%\"),c=t.endsWith(\"%\"),l=e.endsWith(\"%\"),i=s.endsWith(\"%\");if(!(u&&c&&l)&&(u||c||l))return null;u&&(n=n.slice(0,-1)),c&&(t=t.slice(0,-1)),l&&(e=e.slice(0,-1)),i&&(s=s.slice(0,-1));let a=Number(n),f=Number(t),d=Number(e),h=Number(s);return isNaN(a+f+d+h)?null:(u&&(a=a/100*255),c&&(f=f/100*255),l&&(d=d/100*255),h=255*(i?h/100:h),a=o(a),f=o(f),d=o(d),h=o(h),[a,f,d,h])}}else{const t=m(n);if(null!=t)return _(t)}return null}r.css4_parse=_,r.is_Color=function(n){return!!(0,l.isInteger)(n)||(!(!(0,l.isString)(n)||null==_(n))||!(!(0,l.isArray)(n)||3!=n.length&&4!=n.length))},r.is_dark=function([n,t,r]){return 1-(.299*n+.587*t+.114*r)/255>=.6}},\n function _(e,r,l,a,i){a();l.named_colors={aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199},l.is_named_color=function(e){return e in l.named_colors}},\n function _(r,t,n,a,o){a(),n.GeneratorFunction=Object.getPrototypeOf((function*(){})).constructor,n.ColorArray=Uint32Array,n.RGBAArray=Uint8ClampedArray,n.infer_type=function(r,t){return r instanceof Float64Array||r instanceof Array||t instanceof Float64Array||t instanceof Array?Float64Array:Float32Array},n.ScreenArray=Float32Array,n.to_screen=function(r){return r instanceof Float32Array?r:Float32Array.from(r)},o(\"Indices\",r(25).BitSet)},\n function _(t,s,r,e,i){var n;e();const o=t(26),a=t(11);class _{constructor(t,s=0){this.size=t,this[n]=\"BitSet\",this._count=null,this._nwords=Math.ceil(t/32),0==s||1==s?(this._array=new Uint32Array(this._nwords),1==s&&this._array.fill(4294967295)):((0,a.assert)(s.length==this._nwords,\"Initializer size mismatch\"),this._array=s)}clone(){return new _(this.size,new Uint32Array(this._array))}[(n=Symbol.toStringTag,o.equals)](t,s){if(!s.eq(this.size,t.size))return!1;const{_nwords:r}=this,e=this.size%r,i=0==e?r:r-1;for(let s=0;s>>5,r=31&t;return!!(this._array[s]>>r&1)}set(t,s=!0){this._check_bounds(t),this._count=null;const r=t>>>5,e=31&t;s?this._array[r]|=1<>>t&1&&(e+=1)}return e}*ones(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1&&(yield e);else e+=32}}*zeros(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1||(yield e);else e+=32}}_check_size(t){(0,a.assert)(this.size==t.size,\"Size mismatch\")}add(t){this._check_size(t);for(let s=0;s{if(a(t)&&a(e))return t[r.equals](e,this);switch(n){case\"[object Array]\":case\"[object Uint8Array]\":case\"[object Int8Array]\":case\"[object Uint16Array]\":case\"[object Int16Array]\":case\"[object Uint32Array]\":case\"[object Int32Array]\":case\"[object Float32Array]\":case\"[object Float64Array]\":return this.arrays(t,e);case\"[object Map]\":return this.maps(t,e);case\"[object Set]\":return this.sets(t,e);case\"[object Object]\":if(t.constructor==e.constructor&&(null==t.constructor||t.constructor===Object))return this.objects(t,e);case\"[object Function]\":if(t.constructor==e.constructor&&t.constructor===Function)return this.eq(`${t}`,`${e}`)}if(t instanceof Node)return this.nodes(t,e);throw Error(`can't compare objects of type ${n}`)})();return s.pop(),o.pop(),u}numbers(t,e){return Object.is(t,e)}arrays(t,e){const{length:r}=t;if(r!=e.length)return!1;for(let n=0;n{const n=navigator.userAgent;return n.includes(\"MSIE\")||n.includes(\"Trident\")||n.includes(\"Edge\")})(),e.is_mobile=\"undefined\"!=typeof window&&(\"ontouchstart\"in window||navigator.maxTouchPoints>0),e.is_little_endian=(()=>{const n=new ArrayBuffer(4),i=new Uint8Array(n);new Uint32Array(n)[1]=168496141;let e=!0;return 10==i[4]&&11==i[5]&&12==i[6]&&13==i[7]&&(e=!1),e})(),e.BYTE_ORDER=e.is_little_endian?\"little\":\"big\",e.to_big_endian=function(n){if(e.is_little_endian){const i=new Uint32Array(n.length),e=new DataView(i.buffer);let t=0;for(const i of n)e.setUint32(t,i),t+=4;return i}return n}},\n function _(e,t,r,s,_){s();class i{constructor(){this._dev=!1,this._wireframe=!1,this._force_webgl=!1}set dev(e){this._dev=e}get dev(){return this._dev}set wireframe(e){this._wireframe=e}get wireframe(){return this._wireframe}set force_webgl(e){this._force_webgl=e}get force_webgl(){return this._force_webgl}}r.Settings=i,i.__name__=\"Settings\",r.settings=new i},\n function _(e,s,t,i,r){var a,n,l,h,u,o,p,c;i();const y=e(8),_=e(11),A=e(26),q=e(30),d=e(31),z=Symbol(\"__ndarray__\");class D extends Uint8Array{constructor(e,s){super(e),this[a]=!0,this.dtype=\"uint8\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>D.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>D.prototype[q.serialize].call(this,e))}[(a=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Uint8NDArray=D,D.__name__=\"Uint8NDArray\";class N extends Int8Array{constructor(e,s){super(e),this[n]=!0,this.dtype=\"int8\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>N.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>N.prototype[q.serialize].call(this,e))}[(n=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Int8NDArray=N,N.__name__=\"Int8NDArray\";class f extends Uint16Array{constructor(e,s){super(e),this[l]=!0,this.dtype=\"uint16\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>f.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>f.prototype[q.serialize].call(this,e))}[(l=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Uint16NDArray=f,f.__name__=\"Uint16NDArray\";class m extends Int16Array{constructor(e,s){super(e),this[h]=!0,this.dtype=\"int16\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>m.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>m.prototype[q.serialize].call(this,e))}[(h=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Int16NDArray=m,m.__name__=\"Int16NDArray\";class g extends Uint32Array{constructor(e,s){super(e),this[u]=!0,this.dtype=\"uint32\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>g.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>g.prototype[q.serialize].call(this,e))}[(u=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Uint32NDArray=g,g.__name__=\"Uint32NDArray\";class I extends Int32Array{constructor(e,s){super(e),this[o]=!0,this.dtype=\"int32\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>I.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>I.prototype[q.serialize].call(this,e))}[(o=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Int32NDArray=I,I.__name__=\"Int32NDArray\";class U extends Float32Array{constructor(e,s){super(e),this[p]=!0,this.dtype=\"float32\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>U.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>U.prototype[q.serialize].call(this,e))}[(p=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Float32NDArray=U,U.__name__=\"Float32NDArray\";class w extends Float64Array{constructor(e,s){super(e),this[c]=!0,this.dtype=\"float64\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>w.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>w.prototype[q.serialize].call(this,e))}[(c=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}function x(e){return(0,y.isObject)(e)&&void 0!==e[z]}t.Float64NDArray=w,w.__name__=\"Float64NDArray\",t.is_NDArray=x,t.ndarray=function(e,s={}){let{dtype:t}=s;null==t&&(t=e instanceof ArrayBuffer||(0,y.isArray)(e)?\"float64\":(()=>{switch(!0){case e instanceof Uint8Array:return\"uint8\";case e instanceof Int8Array:return\"int8\";case e instanceof Uint16Array:return\"uint16\";case e instanceof Int16Array:return\"int16\";case e instanceof Uint32Array:return\"uint32\";case e instanceof Int32Array:return\"int32\";case e instanceof Float32Array:return\"float32\";case e instanceof Float64Array:return\"float64\";default:(0,_.unreachable)()}})());const{shape:i}=s;switch(t){case\"uint8\":return new D(e,i);case\"int8\":return new N(e,i);case\"uint16\":return new f(e,i);case\"int16\":return new m(e,i);case\"uint32\":return new g(e,i);case\"int32\":return new I(e,i);case\"float32\":return new U(e,i);case\"float64\":return new w(e,i)}}},\n function _(e,r,t,i,s){i();const n=e(11),a=e(13),l=e(8);t.serialize=Symbol(\"serialize\");class o extends Error{}t.SerializationError=o,o.__name__=\"SerializationError\";class f{constructor(e){var r;this._references=new Map,this._definitions=new Map,this._refmap=new Map,this.include_defaults=null===(r=null==e?void 0:e.include_defaults)||void 0===r||r}get_ref(e){return this._references.get(e)}add_ref(e,r){(0,n.assert)(!this._references.has(e)),this._references.set(e,r)}add_def(e,r){const t=this.get_ref(e);(0,n.assert)(null!=t),this._definitions.set(e,r),this._refmap.set(t,r)}get objects(){return new Set(this._references.keys())}get references(){return new Set(this._references.values())}get definitions(){return new Set(this._definitions.values())}resolve_ref(e){return this._refmap.get(e)}remove_ref(e){return this._references.delete(e)}remove_def(e){return this._definitions.delete(e)}to_serializable(e){const r=this.get_ref(e);if(null!=r)return r;if(function(e){return(0,l.isObject)(e)&&void 0!==e[t.serialize]}(e))return e[t.serialize](this);if((0,l.isArray)(e)||(0,l.isTypedArray)(e)){const r=e.length,t=new Array(r);for(let i=0;i(0,s.buffer_to_base64)(_.buffer)};return Object.assign({__ndarray__:e},r)}}},\n function _(t,n,e,r,o){r(),e.buffer_to_base64=function(t){const n=new Uint8Array(t),e=Array.from(n).map((t=>String.fromCharCode(t)));return btoa(e.join(\"\"))},e.base64_to_buffer=function(t){const n=atob(t),e=n.length,r=new Uint8Array(e);for(let t=0,o=e;t\"'`])/g,(t=>{switch(t){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";case\"'\":return\"'\";case\"`\":return\"`\";default:return t}}))},r.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,((t,e)=>{switch(e){case\"amp\":return\"&\";case\"lt\":return\"<\";case\"gt\":return\">\";case\"quot\":return'\"';case\"#x27\":return\"'\";case\"#x60\":return\"`\";default:return e}}))},r.use_strict=function(t){return`'use strict';\\n${t}`},r.to_fixed=function(t,e){return t.toFixed(e).replace(/(\\.[0-9]*?)0+$/,\"$1\").replace(/\\.$/,\"\")}},\n function _(e,t,s,n,o){n();const i=e(30);class r{constructor(e){this.document=e}}s.DocumentEvent=r,r.__name__=\"DocumentEvent\";class a extends r{constructor(e,t,s){super(e),this.events=t,this.setter_id=s}}s.DocumentEventBatch=a,a.__name__=\"DocumentEventBatch\";class d extends r{}s.DocumentChangedEvent=d,d.__name__=\"DocumentChangedEvent\";class l extends d{constructor(e,t,s){super(e),this.msg_type=t,this.msg_data=s}[i.serialize](e){const t=this.msg_data,s=e.to_serializable(t);return{kind:\"MessageSent\",msg_type:this.msg_type,msg_data:s}}}s.MessageSentEvent=l,l.__name__=\"MessageSentEvent\";class _ extends d{constructor(e,t,s,n,o,i,r){super(e),this.model=t,this.attr=s,this.old=n,this.new_=o,this.setter_id=i,this.hint=r}[i.serialize](e){if(null!=this.hint)return e.to_serializable(this.hint);const t=this.new_,s=e.to_serializable(t);return this.model!=t&&e.remove_def(this.model),{kind:\"ModelChanged\",model:this.model.ref(),attr:this.attr,new:s}}}s.ModelChangedEvent=_,_.__name__=\"ModelChangedEvent\";class c extends d{constructor(e,t,s){super(e),this.column_source=t,this.patches=s}[i.serialize](e){return{kind:\"ColumnsPatched\",column_source:this.column_source,patches:this.patches}}}s.ColumnsPatchedEvent=c,c.__name__=\"ColumnsPatchedEvent\";class h extends d{constructor(e,t,s,n){super(e),this.column_source=t,this.data=s,this.rollover=n}[i.serialize](e){return{kind:\"ColumnsStreamed\",column_source:this.column_source,data:this.data,rollover:this.rollover}}}s.ColumnsStreamedEvent=h,h.__name__=\"ColumnsStreamedEvent\";class m extends d{constructor(e,t,s){super(e),this.title=t,this.setter_id=s}[i.serialize](e){return{kind:\"TitleChanged\",title:this.title}}}s.TitleChangedEvent=m,m.__name__=\"TitleChangedEvent\";class u extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}[i.serialize](e){return{kind:\"RootAdded\",model:e.to_serializable(this.model)}}}s.RootAddedEvent=u,u.__name__=\"RootAddedEvent\";class v extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}[i.serialize](e){return{kind:\"RootRemoved\",model:this.model.ref()}}}s.RootRemovedEvent=v,v.__name__=\"RootRemovedEvent\"},\n function _(t,i,r,n,s){n();const e=t(8),o=t(13);r.pretty=Symbol(\"pretty\");class c{constructor(t){this.visited=new Set,this.precision=null==t?void 0:t.precision}to_string(t){if((0,e.isObject)(t)){if(this.visited.has(t))return\"\";this.visited.add(t)}return function(t){return(0,e.isObject)(t)&&void 0!==t[r.pretty]}(t)?t[r.pretty](this):(0,e.isBoolean)(t)?this.boolean(t):(0,e.isNumber)(t)?this.number(t):(0,e.isString)(t)?this.string(t):(0,e.isArray)(t)?this.array(t):(0,e.isIterable)(t)?this.iterable(t):(0,e.isPlainObject)(t)?this.object(t):(0,e.isSymbol)(t)?this.symbol(t):`${t}`}token(t){return t}boolean(t){return`${t}`}number(t){return null!=this.precision?t.toFixed(this.precision):`${t}`}string(t){return`\"${t.replace(/'/g,\"\\\\'\")}\"`}symbol(t){return t.toString()}array(t){const i=this.token,r=[];for(const i of t)r.push(this.to_string(i));return`${i(\"[\")}${r.join(`${i(\",\")} `)}${i(\"]\")}`}iterable(t){var i;const r=this.token,n=null!==(i=Object(t)[Symbol.toStringTag])&&void 0!==i?i:\"Object\",s=this.array(t);return`${n}${r(\"(\")}${s}${r(\")\")}`}object(t){const i=this.token,r=[];for(const[n,s]of(0,o.entries)(t))r.push(`${n}${i(\":\")} ${this.to_string(s)}`);return`${i(\"{\")}${r.join(`${i(\",\")} `)}${i(\"}\")}`}}r.Printer=c,c.__name__=\"Printer\",r.to_string=function(t,i){return new c(i).to_string(t)}},\n function _(n,o,r,e,t){e();const l=n(13),i=n(8);function c(n){return(0,i.isObject)(n)&&void 0!==n[r.clone]}r.clone=Symbol(\"clone\"),r.is_Cloneable=c;class s extends Error{}r.CloningError=s,s.__name__=\"CloningError\";class a{constructor(){}clone(n){if(c(n))return n[r.clone](this);if((0,i.isArray)(n)){const o=n.length,r=new Array(o);for(let e=0;e{null!=this.layout&&(this.layout.visible=this.model.visible,this.plot_view.request_layout())}))}get needs_clip(){return null==this.layout}serializable_state(){const t=super.serializable_state();return null==this.layout?t:Object.assign(Object.assign({},t),{bbox:this.layout.bbox.box})}}i.AnnotationView=r,r.__name__=\"AnnotationView\";class a extends l.Renderer{constructor(t){super(t)}}i.Annotation=a,o=a,a.__name__=\"Annotation\",o.override({level:\"annotation\"})},\n function _(e,i,t,n,s){n();const r=e(1);var o,a;const _=e(42),l=(0,r.__importStar)(e(45)),d=e(20),h=e(53),u=e(54);class c extends h.Model{constructor(e){super(e)}}t.RendererGroup=c,o=c,c.__name__=\"RendererGroup\",o.define((({Boolean:e})=>({visible:[e,!0]})));class p extends _.View{get coordinates(){const{_coordinates:e}=this;return null!=e?e:this._coordinates=this._initialize_coordinates()}initialize(){super.initialize(),this.visuals=new l.Visuals(this),this.needs_webgl_blit=!1}connect_signals(){super.connect_signals();const{x_range_name:e,y_range_name:i}=this.model.properties;this.on_change([e,i],(()=>this._initialize_coordinates()));const{group:t}=this.model;null!=t&&this.on_change(t.properties.visible,(()=>{this.model.visible=t.visible}))}_initialize_coordinates(){const{coordinates:e}=this.model,{frame:i}=this.plot_view;if(null!=e)return e.get_transform(i);{const{x_range_name:e,y_range_name:t}=this.model,n=i.x_scales.get(e),s=i.y_scales.get(t);return new u.CoordinateTransform(n,s)}}get plot_view(){return this.parent}get plot_model(){return this.parent.model}get layer(){const{overlays:e,primary:i}=this.canvas;return\"overlay\"==this.model.level?e:i}get canvas(){return this.plot_view.canvas_view}request_render(){this.request_paint()}request_paint(){this.plot_view.request_paint(this)}request_layout(){this.plot_view.request_layout()}notify_finished(){this.plot_view.notify_finished()}notify_finished_after_paint(){this.plot_view.notify_finished_after_paint()}get needs_clip(){return!1}get has_webgl(){return!1}render(){this.model.visible&&this._render(),this._has_finished=!0}renderer_view(e){}}t.RendererView=p,p.__name__=\"RendererView\";class g extends h.Model{constructor(e){super(e)}}t.Renderer=g,a=g,g.__name__=\"Renderer\",a.define((({Boolean:e,String:i,Ref:t,Nullable:n})=>({group:[n(t(c)),null],level:[d.RenderLevel,\"image\"],visible:[e,!0],x_range_name:[i,\"default\"],y_range_name:[i,\"default\"],coordinates:[n(t(u.CoordinateMapping)),null]})))},\n function _(t,e,s,i,n){i();const o=t(1),h=t(15),r=t(43),l=t(8),_=(0,o.__importDefault)(t(44));class d{constructor(t){this.removed=new h.Signal0(this,\"removed\"),this._ready=Promise.resolve(void 0),this._slots=new WeakMap,this._idle_notified=!1;const{model:e,parent:s}=t;this.model=e,this.parent=s,this.root=null==s?this:s.root,this.removed.emit()}get ready(){return this._ready}connect(t,e){let s=this._slots.get(e);return null==s&&(s=(t,s)=>{const i=Promise.resolve(e.call(this,t,s));this._ready=this._ready.then((()=>i))},this._slots.set(e,s)),t.connect(s,this)}disconnect(t,e){return t.disconnect(e,this)}initialize(){this._has_finished=!1,this.is_root&&(this._stylesheet=r.stylesheet);for(const t of this.styles())this.stylesheet.append(t)}async lazy_initialize(){}remove(){this.disconnect_signals(),this.removed.emit()}toString(){return`${this.model.type}View(${this.model.id})`}serializable_state(){return{type:this.model.type}}get is_root(){return null==this.parent}has_finished(){return this._has_finished}get is_idle(){return this.has_finished()}connect_signals(){}disconnect_signals(){h.Signal.disconnect_receiver(this)}on_change(t,e){for(const s of(0,l.isArray)(t)?t:[t])this.connect(s.change,e)}cursor(t,e){return null}get stylesheet(){return this.is_root?this._stylesheet:this.root.stylesheet}styles(){return[_.default]}notify_finished(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):this.root.notify_finished()}}s.View=d,d.__name__=\"View\"},\n function _(t,e,n,i,o){i();const s=t(8),l=t(13),r=t=>(e={},...n)=>{const i=document.createElement(t);i.classList.add(\"bk\"),(0,s.isPlainObject)(e)||(n=[e,...n],e={});for(let[t,n]of(0,l.entries)(e))if(null!=n&&(!(0,s.isBoolean)(n)||n))if(\"class\"===t&&((0,s.isString)(n)&&(n=n.split(/\\s+/)),(0,s.isArray)(n)))for(const t of n)null!=t&&i.classList.add(t);else if(\"style\"===t&&(0,s.isPlainObject)(n))for(const[t,e]of(0,l.entries)(n))i.style[t]=e;else if(\"data\"===t&&(0,s.isPlainObject)(n))for(const[t,e]of(0,l.entries)(n))i.dataset[t]=e;else i.setAttribute(t,n);function o(t){if((0,s.isString)(t))i.appendChild(document.createTextNode(t));else if(t instanceof Node)i.appendChild(t);else if(t instanceof NodeList||t instanceof HTMLCollection)for(const e of t)i.appendChild(e);else if(null!=t&&!1!==t)throw new Error(`expected a DOM element, string, false or null, got ${JSON.stringify(t)}`)}for(const t of n)if((0,s.isArray)(t))for(const e of t)o(e);else o(t);return i};function a(t){const e=t.parentNode;null!=e&&e.removeChild(t)}function c(t,...e){const n=t.firstChild;for(const i of e)t.insertBefore(i,n)}function d(t,e){var n,i,o;const s=Element.prototype;return(null!==(o=null!==(i=null!==(n=s.matches)&&void 0!==n?n:s.webkitMatchesSelector)&&void 0!==i?i:s.mozMatchesSelector)&&void 0!==o?o:s.msMatchesSelector).call(t,e)}function h(t){return parseFloat(t)||0}function f(t){const e=getComputedStyle(t);return{border:{top:h(e.borderTopWidth),bottom:h(e.borderBottomWidth),left:h(e.borderLeftWidth),right:h(e.borderRightWidth)},margin:{top:h(e.marginTop),bottom:h(e.marginBottom),left:h(e.marginLeft),right:h(e.marginRight)},padding:{top:h(e.paddingTop),bottom:h(e.paddingBottom),left:h(e.paddingLeft),right:h(e.paddingRight)}}}function u(t){const e=t.getBoundingClientRect();return{width:Math.ceil(e.width),height:Math.ceil(e.height)}}n.createElement=function(t,e,...n){return r(t)(e,...n)},n.div=r(\"div\"),n.span=r(\"span\"),n.canvas=r(\"canvas\"),n.link=r(\"link\"),n.style=r(\"style\"),n.a=r(\"a\"),n.p=r(\"p\"),n.i=r(\"i\"),n.pre=r(\"pre\"),n.button=r(\"button\"),n.label=r(\"label\"),n.input=r(\"input\"),n.select=r(\"select\"),n.option=r(\"option\"),n.optgroup=r(\"optgroup\"),n.textarea=r(\"textarea\"),n.createSVGElement=function(t,e,...n){const i=document.createElementNS(\"http://www.w3.org/2000/svg\",t);for(const[t,n]of(0,l.entries)(null!=e?e:{}))null==n||(0,s.isBoolean)(n)&&!n||i.setAttribute(t,n);function o(t){if((0,s.isString)(t))i.appendChild(document.createTextNode(t));else if(t instanceof Node)i.appendChild(t);else if(t instanceof NodeList||t instanceof HTMLCollection)for(const e of t)i.appendChild(e);else if(null!=t&&!1!==t)throw new Error(`expected a DOM element, string, false or null, got ${JSON.stringify(t)}`)}for(const t of n)if((0,s.isArray)(t))for(const e of t)o(e);else o(t);return i},n.nbsp=function(){return document.createTextNode(\"\\xa0\")},n.append=function(t,...e){for(const n of e)t.appendChild(n)},n.remove=a,n.removeElement=a,n.replaceWith=function(t,e){const n=t.parentNode;null!=n&&n.replaceChild(e,t)},n.prepend=c,n.empty=function(t,e=!1){let n;for(;n=t.firstChild;)t.removeChild(n);if(e&&t instanceof Element)for(const e of t.attributes)t.removeAttributeNode(e)},n.display=function(t){t.style.display=\"\"},n.undisplay=function(t){t.style.display=\"none\"},n.show=function(t){t.style.visibility=\"\"},n.hide=function(t){t.style.visibility=\"hidden\"},n.offset=function(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},n.matches=d,n.parent=function(t,e){let n=t;for(;n=n.parentElement;)if(d(n,e))return n;return null},n.extents=f,n.size=u,n.scroll_size=function(t){return{width:Math.ceil(t.scrollWidth),height:Math.ceil(t.scrollHeight)}},n.outer_size=function(t){const{margin:{left:e,right:n,top:i,bottom:o}}=f(t),{width:s,height:l}=u(t);return{width:Math.ceil(s+e+n),height:Math.ceil(l+i+o)}},n.content_size=function(t){const{left:e,top:n}=t.getBoundingClientRect(),{padding:i}=f(t);let o=0,s=0;for(const l of t.children){const t=l.getBoundingClientRect();o=Math.max(o,Math.ceil(t.left-e-i.left+t.width)),s=Math.max(s,Math.ceil(t.top-n-i.top+t.height))}return{width:o,height:s}},n.position=function(t,e,n){const{style:i}=t;if(i.left=`${e.x}px`,i.top=`${e.y}px`,i.width=`${e.width}px`,i.height=`${e.height}px`,null==n)i.margin=\"\";else{const{top:t,right:e,bottom:o,left:s}=n;i.margin=`${t}px ${e}px ${o}px ${s}px`}},n.children=function(t){return Array.from(t.children)};class p{constructor(t){this.el=t,this.classList=t.classList}get values(){const t=[];for(let e=0;e{document.addEventListener(\"DOMContentLoaded\",(()=>t()),{once:!0})}))}},\n function _(o,i,t,e,r){e(),t.root=\"bk-root\",t.default=\".bk-root{position:relative;width:auto;height:auto;box-sizing:border-box;font-family:Helvetica, Arial, sans-serif;font-size:13px;}.bk-root .bk,.bk-root .bk:before,.bk-root .bk:after{box-sizing:inherit;margin:0;border:0;padding:0;background-image:none;font-family:inherit;font-size:100%;line-height:1.42857143;}.bk-root pre.bk{font-family:Courier, monospace;}\"},\n function _(e,t,r,a,c){a();const n=e(1),l=e(46);c(\"Line\",l.Line),c(\"LineScalar\",l.LineScalar),c(\"LineVector\",l.LineVector);const i=e(49);c(\"Fill\",i.Fill),c(\"FillScalar\",i.FillScalar),c(\"FillVector\",i.FillVector);const s=e(50);c(\"Text\",s.Text),c(\"TextScalar\",s.TextScalar),c(\"TextVector\",s.TextVector);const o=e(51);c(\"Hatch\",o.Hatch),c(\"HatchScalar\",o.HatchScalar),c(\"HatchVector\",o.HatchVector);const u=(0,n.__importStar)(e(48)),V=e(47);c(\"VisualProperties\",V.VisualProperties),c(\"VisualUniforms\",V.VisualUniforms);class h{constructor(e){this._visuals=[];for(const[t,r]of e.model._mixins){const a=(()=>{switch(r){case u.Line:return new l.Line(e,t);case u.LineScalar:return new l.LineScalar(e,t);case u.LineVector:return new l.LineVector(e,t);case u.Fill:return new i.Fill(e,t);case u.FillScalar:return new i.FillScalar(e,t);case u.FillVector:return new i.FillVector(e,t);case u.Text:return new s.Text(e,t);case u.TextScalar:return new s.TextScalar(e,t);case u.TextVector:return new s.TextVector(e,t);case u.Hatch:return new o.Hatch(e,t);case u.HatchScalar:return new o.HatchScalar(e,t);case u.HatchVector:return new o.HatchVector(e,t);default:throw new Error(\"unknown visual\")}})();a instanceof V.VisualProperties&&a.update(),this._visuals.push(a),Object.defineProperty(this,t+a.type,{get:()=>a,configurable:!1,enumerable:!0})}}*[Symbol.iterator](){yield*this._visuals}}r.Visuals=h,h.__name__=\"Visuals\"},\n function _(e,t,i,l,s){l();const a=e(1),n=e(47),h=(0,a.__importStar)(e(48)),o=e(22),_=e(8);function r(e){if((0,_.isArray)(e))return e;switch(e){case\"solid\":return[];case\"dashed\":return[6];case\"dotted\":return[2,4];case\"dotdash\":return[2,4,6,4];case\"dashdot\":return[6,4,2,4];default:return e.split(\" \").map(Number).filter(_.isInteger)}}i.resolve_line_dash=r;class u extends n.VisualProperties{get doit(){const e=this.line_color.get_value(),t=this.line_alpha.get_value(),i=this.line_width.get_value();return!(null==e||0==t||0==i)}apply(e){const{doit:t}=this;return t&&(this.set_value(e),e.stroke()),t}values(){return{color:this.line_color.get_value(),alpha:this.line_alpha.get_value(),width:this.line_width.get_value(),join:this.line_join.get_value(),cap:this.line_cap.get_value(),dash:this.line_dash.get_value(),offset:this.line_dash_offset.get_value()}}set_value(e){const t=this.line_color.get_value(),i=this.line_alpha.get_value();e.strokeStyle=(0,o.color2css)(t,i),e.lineWidth=this.line_width.get_value(),e.lineJoin=this.line_join.get_value(),e.lineCap=this.line_cap.get_value(),e.lineDash=r(this.line_dash.get_value()),e.lineDashOffset=this.line_dash_offset.get_value()}}i.Line=u,u.__name__=\"Line\";class c extends n.VisualUniforms{get doit(){const e=this.line_color.value,t=this.line_alpha.value,i=this.line_width.value;return!(0==e||0==t||0==i)}apply(e){const{doit:t}=this;return t&&(this.set_value(e),e.stroke()),t}values(){return{color:this.line_color.value,alpha:this.line_alpha.value,width:this.line_width.value,join:this.line_join.value,cap:this.line_cap.value,dash:this.line_dash.value,offset:this.line_dash_offset.value}}set_value(e){const t=this.line_color.value,i=this.line_alpha.value;e.strokeStyle=(0,o.color2css)(t,i),e.lineWidth=this.line_width.value,e.lineJoin=this.line_join.value,e.lineCap=this.line_cap.value,e.lineDash=r(this.line_dash.value),e.lineDashOffset=this.line_dash_offset.value}}i.LineScalar=c,c.__name__=\"LineScalar\";class d extends n.VisualUniforms{get doit(){const{line_color:e}=this;if(e.is_Scalar()&&0==e.value)return!1;const{line_alpha:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{line_width:i}=this;return!i.is_Scalar()||0!=i.value}apply(e,t){const{doit:i}=this;return i&&(this.set_vectorize(e,t),e.stroke()),i}values(e){return{color:this.line_color.get(e),alpha:this.line_alpha.get(e),width:this.line_width.get(e),join:this.line_join.get(e),cap:this.line_cap.get(e),dash:this.line_dash.get(e),offset:this.line_dash_offset.get(e)}}set_vectorize(e,t){const i=this.line_color.get(t),l=this.line_alpha.get(t),s=this.line_width.get(t),a=this.line_join.get(t),n=this.line_cap.get(t),h=this.line_dash.get(t),_=this.line_dash_offset.get(t);e.strokeStyle=(0,o.color2css)(i,l),e.lineWidth=s,e.lineJoin=a,e.lineCap=n,e.lineDash=r(h),e.lineDashOffset=_}}i.LineVector=d,d.__name__=\"LineVector\",u.prototype.type=\"line\",u.prototype.attrs=Object.keys(h.Line),c.prototype.type=\"line\",c.prototype.attrs=Object.keys(h.LineScalar),d.prototype.type=\"line\",d.prototype.attrs=Object.keys(h.LineVector)},\n function _(t,s,o,i,r){i();class e{constructor(t,s=\"\"){this.obj=t,this.prefix=s;const o=this;this._props=[];for(const i of this.attrs){const r=t.model.properties[s+i];r.change.connect((()=>this.update())),o[i]=r,this._props.push(r)}}*[Symbol.iterator](){yield*this._props}update(){}}o.VisualProperties=e,e.__name__=\"VisualProperties\";class p{constructor(t,s=\"\"){this.obj=t,this.prefix=s;for(const o of this.attrs)Object.defineProperty(this,o,{get:()=>t[s+o]})}*[Symbol.iterator](){for(const t of this.attrs)yield this.obj.model.properties[this.prefix+t]}update(){}}o.VisualUniforms=p,p.__name__=\"VisualUniforms\"},\n function _(e,l,t,a,c){a();const r=e(1),o=(0,r.__importStar)(e(18)),n=e(20),i=(0,r.__importStar)(e(21)),_=e(13);t.Line={line_color:[i.Nullable(i.Color),\"black\"],line_alpha:[i.Alpha,1],line_width:[i.Number,1],line_join:[n.LineJoin,\"bevel\"],line_cap:[n.LineCap,\"butt\"],line_dash:[i.Or(n.LineDash,i.Array(i.Number)),[]],line_dash_offset:[i.Number,0]},t.Fill={fill_color:[i.Nullable(i.Color),\"gray\"],fill_alpha:[i.Alpha,1]},t.Hatch={hatch_color:[i.Nullable(i.Color),\"black\"],hatch_alpha:[i.Alpha,1],hatch_scale:[i.Number,12],hatch_pattern:[i.Nullable(i.Or(n.HatchPatternType,i.String)),null],hatch_weight:[i.Number,1],hatch_extra:[i.Dict(i.AnyRef()),{}]},t.Text={text_color:[i.Nullable(i.Color),\"#444444\"],text_alpha:[i.Alpha,1],text_font:[o.Font,\"helvetica\"],text_font_size:[i.FontSize,\"16px\"],text_font_style:[n.FontStyle,\"normal\"],text_align:[n.TextAlign,\"left\"],text_baseline:[n.TextBaseline,\"bottom\"],text_line_height:[i.Number,1.2]},t.LineScalar={line_color:[o.ColorScalar,\"black\"],line_alpha:[o.NumberScalar,1],line_width:[o.NumberScalar,1],line_join:[o.LineJoinScalar,\"bevel\"],line_cap:[o.LineCapScalar,\"butt\"],line_dash:[o.LineDashScalar,[]],line_dash_offset:[o.NumberScalar,0]},t.FillScalar={fill_color:[o.ColorScalar,\"gray\"],fill_alpha:[o.NumberScalar,1]},t.HatchScalar={hatch_color:[o.ColorScalar,\"black\"],hatch_alpha:[o.NumberScalar,1],hatch_scale:[o.NumberScalar,12],hatch_pattern:[o.NullStringScalar,null],hatch_weight:[o.NumberScalar,1],hatch_extra:[o.AnyScalar,{}]},t.TextScalar={text_color:[o.ColorScalar,\"#444444\"],text_alpha:[o.NumberScalar,1],text_font:[o.FontScalar,\"helvetica\"],text_font_size:[o.FontSizeScalar,\"16px\"],text_font_style:[o.FontStyleScalar,\"normal\"],text_align:[o.TextAlignScalar,\"left\"],text_baseline:[o.TextBaselineScalar,\"bottom\"],text_line_height:[o.NumberScalar,1.2]},t.LineVector={line_color:[o.ColorSpec,\"black\"],line_alpha:[o.NumberSpec,1],line_width:[o.NumberSpec,1],line_join:[o.LineJoinSpec,\"bevel\"],line_cap:[o.LineCapSpec,\"butt\"],line_dash:[o.LineDashSpec,[]],line_dash_offset:[o.NumberSpec,0]},t.FillVector={fill_color:[o.ColorSpec,\"gray\"],fill_alpha:[o.NumberSpec,1]},t.HatchVector={hatch_color:[o.ColorSpec,\"black\"],hatch_alpha:[o.NumberSpec,1],hatch_scale:[o.NumberSpec,12],hatch_pattern:[o.NullStringSpec,null],hatch_weight:[o.NumberSpec,1],hatch_extra:[o.AnyScalar,{}]},t.TextVector={text_color:[o.ColorSpec,\"#444444\"],text_alpha:[o.NumberSpec,1],text_font:[o.FontSpec,\"helvetica\"],text_font_size:[o.FontSizeSpec,\"16px\"],text_font_style:[o.FontStyleSpec,\"normal\"],text_align:[o.TextAlignSpec,\"left\"],text_baseline:[o.TextBaselineSpec,\"bottom\"],text_line_height:[o.NumberSpec,1.2]},t.attrs_of=function(e,l,t,a=!1){const c={};for(const r of(0,_.keys)(t)){const t=`${l}${r}`,o=e[t];c[a?t:r]=o}return c}},\n function _(l,t,e,i,s){i();const a=l(1),o=l(47),r=(0,a.__importStar)(l(48)),_=l(22);class c extends o.VisualProperties{get doit(){const l=this.fill_color.get_value(),t=this.fill_alpha.get_value();return!(null==l||0==t)}apply(l,t){const{doit:e}=this;return e&&(this.set_value(l),l.fill(t)),e}values(){return{color:this.fill_color.get_value(),alpha:this.fill_alpha.get_value()}}set_value(l){const t=this.fill_color.get_value(),e=this.fill_alpha.get_value();l.fillStyle=(0,_.color2css)(t,e)}}e.Fill=c,c.__name__=\"Fill\";class h extends o.VisualUniforms{get doit(){const l=this.fill_color.value,t=this.fill_alpha.value;return!(0==l||0==t)}apply(l,t){const{doit:e}=this;return e&&(this.set_value(l),l.fill(t)),e}values(){return{color:this.fill_color.value,alpha:this.fill_alpha.value}}set_value(l){const t=this.fill_color.value,e=this.fill_alpha.value;l.fillStyle=(0,_.color2css)(t,e)}}e.FillScalar=h,h.__name__=\"FillScalar\";class u extends o.VisualUniforms{get doit(){const{fill_color:l}=this;if(l.is_Scalar()&&0==l.value)return!1;const{fill_alpha:t}=this;return!t.is_Scalar()||0!=t.value}apply(l,t,e){const{doit:i}=this;return i&&(this.set_vectorize(l,t),l.fill(e)),i}values(l){return{color:this.fill_color.get(l),alpha:this.fill_alpha.get(l)}}set_vectorize(l,t){const e=this.fill_color.get(t),i=this.fill_alpha.get(t);l.fillStyle=(0,_.color2css)(e,i)}}e.FillVector=u,u.__name__=\"FillVector\",c.prototype.type=\"fill\",c.prototype.attrs=Object.keys(r.Fill),h.prototype.type=\"fill\",h.prototype.attrs=Object.keys(r.FillScalar),u.prototype.type=\"fill\",u.prototype.attrs=Object.keys(r.FillVector)},\n function _(t,e,l,s,_){s();const i=t(1),a=t(47),o=(0,i.__importStar)(t(48)),n=t(22);class h extends a.VisualProperties{get doit(){const t=this.text_color.get_value(),e=this.text_alpha.get_value();return!(null==t||0==e)}values(){return{color:this.text_color.get_value(),alpha:this.text_alpha.get_value(),font:this.text_font.get_value(),font_size:this.text_font_size.get_value(),font_style:this.text_font_style.get_value(),align:this.text_align.get_value(),baseline:this.text_baseline.get_value(),line_height:this.text_line_height.get_value()}}set_value(t){const e=this.text_color.get_value(),l=this.text_alpha.get_value();t.fillStyle=(0,n.color2css)(e,l),t.font=this.font_value(),t.textAlign=this.text_align.get_value(),t.textBaseline=this.text_baseline.get_value()}font_value(){return`${this.text_font_style.get_value()} ${this.text_font_size.get_value()} ${this.text_font.get_value()}`}}l.Text=h,h.__name__=\"Text\";class x extends a.VisualUniforms{get doit(){const t=this.text_color.value,e=this.text_alpha.value;return!(0==t||0==e)}values(){return{color:this.text_color.value,alpha:this.text_alpha.value,font:this.text_font.value,font_size:this.text_font_size.value,font_style:this.text_font_style.value,align:this.text_align.value,baseline:this.text_baseline.value,line_height:this.text_line_height.value}}set_value(t){const e=this.text_color.value,l=this.text_alpha.value,s=this.font_value(),_=this.text_align.value,i=this.text_baseline.value;t.fillStyle=(0,n.color2css)(e,l),t.font=s,t.textAlign=_,t.textBaseline=i}font_value(){return`${this.text_font_style.value} ${this.text_font_size.value} ${this.text_font.value}`}}l.TextScalar=x,x.__name__=\"TextScalar\";class u extends a.VisualUniforms{values(t){return{color:this.text_color.get(t),alpha:this.text_alpha.get(t),font:this.text_font.get(t),font_size:this.text_font_size.get(t),font_style:this.text_font_style.get(t),align:this.text_align.get(t),baseline:this.text_baseline.get(t),line_height:this.text_line_height.get(t)}}get doit(){const{text_color:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{text_alpha:e}=this;return!e.is_Scalar()||0!=e.value}set_vectorize(t,e){const l=this.text_color.get(e),s=this.text_alpha.get(e),_=this.font_value(e),i=this.text_align.get(e),a=this.text_baseline.get(e);t.fillStyle=(0,n.color2css)(l,s),t.font=_,t.textAlign=i,t.textBaseline=a}font_value(t){return`${this.text_font_style.get(t)} ${this.text_font_size.get(t)} ${this.text_font.get(t)}`}}l.TextVector=u,u.__name__=\"TextVector\",h.prototype.type=\"text\",h.prototype.attrs=Object.keys(o.Text),x.prototype.type=\"text\",x.prototype.attrs=Object.keys(o.TextScalar),u.prototype.type=\"text\",u.prototype.attrs=Object.keys(o.TextVector)},\n function _(t,e,a,r,i){r();const h=t(1),s=t(47),n=t(52),c=(0,h.__importStar)(t(18)),_=(0,h.__importStar)(t(48));class l extends s.VisualProperties{constructor(){super(...arguments),this._update_iteration=0}update(){if(this._update_iteration++,this._hatch_image=null,!this.doit)return;const t=this.hatch_color.get_value(),e=this.hatch_alpha.get_value(),a=this.hatch_scale.get_value(),r=this.hatch_pattern.get_value(),i=this.hatch_weight.get_value(),h=t=>{this._hatch_image=t},s=this.hatch_extra.get_value()[r];if(null!=s){const r=s.get_pattern(t,e,a,i);if(r instanceof Promise){const{_update_iteration:t}=this;r.then((e=>{this._update_iteration==t&&(h(e),this.obj.request_render())}))}else h(r)}else{const s=this.obj.canvas.create_layer(),c=(0,n.get_pattern)(s,r,t,e,a,i);h(c)}}get doit(){const t=this.hatch_color.get_value(),e=this.hatch_alpha.get_value(),a=this.hatch_pattern.get_value();return!(null==t||0==e||\" \"==a||\"blank\"==a||null==a)}apply(t,e){const{doit:a}=this;return a&&(this.set_value(t),t.layer.undo_transform((()=>t.fill(e)))),a}set_value(t){const e=this.pattern(t);t.fillStyle=null!=e?e:\"transparent\"}pattern(t){const e=this._hatch_image;return null==e?null:t.createPattern(e,this.repetition())}repetition(){const t=this.hatch_pattern.get_value(),e=this.hatch_extra.get_value()[t];if(null==e)return\"repeat\";switch(e.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.Hatch=l,l.__name__=\"Hatch\";class o extends s.VisualUniforms{constructor(){super(...arguments),this._static_doit=!1,this._update_iteration=0}_compute_static_doit(){const t=this.hatch_color.value,e=this.hatch_alpha.value,a=this.hatch_pattern.value;return!(null==t||0==e||\" \"==a||\"blank\"==a||null==a)}update(){this._update_iteration++;const t=this.hatch_color.length;if(this._hatch_image=new c.UniformScalar(null,t),this._static_doit=this._compute_static_doit(),!this._static_doit)return;const e=this.hatch_color.value,a=this.hatch_alpha.value,r=this.hatch_scale.value,i=this.hatch_pattern.value,h=this.hatch_weight.value,s=e=>{this._hatch_image=new c.UniformScalar(e,t)},_=this.hatch_extra.value[i];if(null!=_){const t=_.get_pattern(e,a,r,h);if(t instanceof Promise){const{_update_iteration:e}=this;t.then((t=>{this._update_iteration==e&&(s(t),this.obj.request_render())}))}else s(t)}else{const t=this.obj.canvas.create_layer(),c=(0,n.get_pattern)(t,i,e,a,r,h);s(c)}}get doit(){return this._static_doit}apply(t,e){const{doit:a}=this;return a&&(this.set_value(t),t.layer.undo_transform((()=>t.fill(e)))),a}set_value(t){var e;t.fillStyle=null!==(e=this.pattern(t))&&void 0!==e?e:\"transparent\"}pattern(t){const e=this._hatch_image.value;return null==e?null:t.createPattern(e,this.repetition())}repetition(){const t=this.hatch_pattern.value,e=this.hatch_extra.value[t];if(null==e)return\"repeat\";switch(e.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.HatchScalar=o,o.__name__=\"HatchScalar\";class u extends s.VisualUniforms{constructor(){super(...arguments),this._static_doit=!1,this._update_iteration=0}_compute_static_doit(){const{hatch_color:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{hatch_alpha:e}=this;if(e.is_Scalar()&&0==e.value)return!1;const{hatch_pattern:a}=this;if(a.is_Scalar()){const t=a.value;if(\" \"==t||\"blank\"==t||null==t)return!1}return!0}update(){this._update_iteration++;const t=this.hatch_color.length;if(this._hatch_image=new c.UniformScalar(null,t),this._static_doit=this._compute_static_doit(),!this._static_doit)return;const e=(t,e,a,r,i,h)=>{const s=this.hatch_extra.value[t];if(null!=s){const t=s.get_pattern(e,a,r,i);if(t instanceof Promise){const{_update_iteration:e}=this;t.then((t=>{this._update_iteration==e&&(h(t),this.obj.request_render())}))}else h(t)}else{const s=this.obj.canvas.create_layer(),c=(0,n.get_pattern)(s,t,e,a,r,i);h(c)}};if(this.hatch_color.is_Scalar()&&this.hatch_alpha.is_Scalar()&&this.hatch_scale.is_Scalar()&&this.hatch_pattern.is_Scalar()&&this.hatch_weight.is_Scalar()){const a=this.hatch_color.value,r=this.hatch_alpha.value,i=this.hatch_scale.value;e(this.hatch_pattern.value,a,r,i,this.hatch_weight.value,(e=>{this._hatch_image=new c.UniformScalar(e,t)}))}else{const a=new Array(t);a.fill(null),this._hatch_image=new c.UniformVector(a);for(let r=0;r{a[r]=t}))}}}get doit(){return this._static_doit}apply(t,e,a){const{doit:r}=this;return r&&(this.set_vectorize(t,e),t.layer.undo_transform((()=>t.fill(a)))),r}set_vectorize(t,e){var a;t.fillStyle=null!==(a=this.pattern(t,e))&&void 0!==a?a:\"transparent\"}pattern(t,e){const a=this._hatch_image.get(e);return null==a?null:t.createPattern(a,this.repetition(e))}repetition(t){const e=this.hatch_pattern.get(t),a=this.hatch_extra.value[e];if(null==a)return\"repeat\";switch(a.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.HatchVector=u,u.__name__=\"HatchVector\",l.prototype.type=\"hatch\",l.prototype.attrs=Object.keys(_.Hatch),o.prototype.type=\"hatch\",o.prototype.attrs=Object.keys(_.HatchScalar),u.prototype.type=\"hatch\",u.prototype.attrs=Object.keys(_.HatchVector)},\n function _(e,o,a,s,r){s();const i=e(22);function l(e,o,a){e.moveTo(0,a+.5),e.lineTo(o,a+.5),e.stroke()}function n(e,o,a){e.moveTo(a+.5,0),e.lineTo(a+.5,o),e.stroke()}function t(e,o){e.moveTo(0,o),e.lineTo(o,0),e.stroke(),e.moveTo(0,0),e.lineTo(o,o),e.stroke()}a.hatch_aliases={\" \":\"blank\",\".\":\"dot\",o:\"ring\",\"-\":\"horizontal_line\",\"|\":\"vertical_line\",\"+\":\"cross\",'\"':\"horizontal_dash\",\":\":\"vertical_dash\",\"@\":\"spiral\",\"/\":\"right_diagonal_line\",\"\\\\\":\"left_diagonal_line\",x:\"diagonal_cross\",\",\":\"right_diagonal_dash\",\"`\":\"left_diagonal_dash\",v:\"horizontal_wave\",\">\":\"vertical_wave\",\"*\":\"criss_cross\"},a.get_pattern=function(e,o,s,r,c,k){return e.resize(c,c),e.prepare(),function(e,o,s,r,c,k){var _;const T=c,v=T/2,h=v/2,d=(0,i.color2css)(s,r);switch(e.strokeStyle=d,e.fillStyle=d,e.lineCap=\"square\",e.lineWidth=k,null!==(_=a.hatch_aliases[o])&&void 0!==_?_:o){case\"blank\":break;case\"dot\":e.arc(v,v,v/2,0,2*Math.PI,!0),e.fill();break;case\"ring\":e.arc(v,v,v/2,0,2*Math.PI,!0),e.stroke();break;case\"horizontal_line\":l(e,T,v);break;case\"vertical_line\":n(e,T,v);break;case\"cross\":l(e,T,v),n(e,T,v);break;case\"horizontal_dash\":l(e,v,v);break;case\"vertical_dash\":n(e,v,v);break;case\"spiral\":{const o=T/30;e.moveTo(v,v);for(let a=0;a<360;a++){const s=.1*a,r=v+o*s*Math.cos(s),i=v+o*s*Math.sin(s);e.lineTo(r,i)}e.stroke();break}case\"right_diagonal_line\":e.moveTo(.5-h,T),e.lineTo(h+.5,0),e.stroke(),e.moveTo(h+.5,T),e.lineTo(3*h+.5,0),e.stroke(),e.moveTo(3*h+.5,T),e.lineTo(5*h+.5,0),e.stroke(),e.stroke();break;case\"left_diagonal_line\":e.moveTo(h+.5,T),e.lineTo(.5-h,0),e.stroke(),e.moveTo(3*h+.5,T),e.lineTo(h+.5,0),e.stroke(),e.moveTo(5*h+.5,T),e.lineTo(3*h+.5,0),e.stroke(),e.stroke();break;case\"diagonal_cross\":t(e,T);break;case\"right_diagonal_dash\":e.moveTo(h+.5,3*h+.5),e.lineTo(3*h+.5,h+.5),e.stroke();break;case\"left_diagonal_dash\":e.moveTo(h+.5,h+.5),e.lineTo(3*h+.5,3*h+.5),e.stroke();break;case\"horizontal_wave\":e.moveTo(0,h),e.lineTo(v,3*h),e.lineTo(T,h),e.stroke();break;case\"vertical_wave\":e.moveTo(h,0),e.lineTo(3*h,v),e.lineTo(h,T),e.stroke();break;case\"criss_cross\":t(e,T),l(e,T,v),n(e,T,v)}}(e.ctx,o,s,r,c,k),e.canvas}},\n function _(e,t,s,n,c){var a;n();const i=e(14),r=e(8),l=e(13),o=e(26),_=e(19);class h extends i.HasProps{constructor(e){super(e)}get is_syncable(){return this.syncable}[o.equals](e,t){return t.eq(this.id,e.id)&&super[o.equals](e,t)}initialize(){super.initialize(),this._js_callbacks=new Map}connect_signals(){super.connect_signals(),this._update_property_callbacks(),this.connect(this.properties.js_property_callbacks.change,(()=>this._update_property_callbacks())),this.connect(this.properties.js_event_callbacks.change,(()=>this._update_event_callbacks())),this.connect(this.properties.subscribed_events.change,(()=>this._update_event_callbacks()))}_process_event(e){var t;for(const s of null!==(t=this.js_event_callbacks[e.event_name])&&void 0!==t?t:[])s.execute(e);null!=this.document&&this.subscribed_events.some((t=>t==e.event_name))&&this.document.event_manager.send_event(e)}trigger_event(e){null!=this.document&&(e.origin=this,this.document.event_manager.trigger(e))}_update_event_callbacks(){null!=this.document?this.document.event_manager.subscribed_models.add(this):_.logger.warn(\"WARNING: Document not defined for updating event callbacks\")}_update_property_callbacks(){const e=e=>{const[t,s=null]=e.split(\":\");return null!=s?this.properties[s][t]:this[t]};for(const[t,s]of this._js_callbacks){const n=e(t);for(const e of s)this.disconnect(n,e)}this._js_callbacks.clear();for(const[t,s]of(0,l.entries)(this.js_property_callbacks)){const n=s.map((e=>()=>e.execute(this)));this._js_callbacks.set(t,n);const c=e(t);for(const e of n)this.connect(c,e)}}_doc_attached(){(0,l.isEmpty)(this.js_event_callbacks)&&0==this.subscribed_events.length||this._update_event_callbacks()}_doc_detached(){this.document.event_manager.subscribed_models.delete(this)}select(e){if((0,r.isString)(e))return[...this.references()].filter((t=>t instanceof h&&t.name===e));if(e.prototype instanceof i.HasProps)return[...this.references()].filter((t=>t instanceof e));throw new Error(\"invalid selector\")}select_one(e){const t=this.select(e);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(\"found more than one object matching given selector\")}}}s.Model=h,a=h,h.__name__=\"Model\",a.define((({Any:e,Unknown:t,Boolean:s,String:n,Array:c,Dict:a,Nullable:i})=>({tags:[c(t),[]],name:[i(n),null],js_property_callbacks:[a(c(e)),{}],js_event_callbacks:[a(c(e)),{}],subscribed_events:[c(n),[]],syncable:[s,!0]})))},\n function _(e,t,s,a,r){var c,n;a();const _=e(12),o=e(53),i=e(55),l=e(59),u=e(61),g=e(62),h=e(57),p=e(63),m=e(67);class x{constructor(e,t){this.x_scale=e,this.y_scale=t,this.x_source=this.x_scale.source_range,this.y_source=this.y_scale.source_range,this.ranges=[this.x_source,this.y_source],this.scales=[this.x_scale,this.y_scale]}map_to_screen(e,t){return[this.x_scale.v_compute(e),this.y_scale.v_compute(t)]}map_from_screen(e,t){return[this.x_scale.v_invert(e),this.y_scale.v_invert(t)]}}s.CoordinateTransform=x,x.__name__=\"CoordinateTransform\";class y extends o.Model{constructor(e){super(e)}get x_ranges(){return new Map([[\"default\",this.x_source]])}get y_ranges(){return new Map([[\"default\",this.y_source]])}_get_scale(e,t,s){if(e instanceof m.FactorRange!=t instanceof g.CategoricalScale)throw new Error(`Range ${e.type} is incompatible is Scale ${t.type}`);t instanceof u.LogScale&&e instanceof p.DataRange1d&&(e.scale_hint=\"log\");const a=t.clone();return a.setv({source_range:e,target_range:s}),a}get_transform(e){const{x_source:t,x_scale:s,x_target:a}=this,r=this._get_scale(t,s,a),{y_source:c,y_scale:n,y_target:_}=this,o=this._get_scale(c,n,_),i=new v({source_scale:r,source_range:r.source_range,target_scale:e.x_scale,target_range:e.x_target}),l=new v({source_scale:o,source_range:o.source_range,target_scale:e.y_scale,target_range:e.y_target});return new x(i,l)}}s.CoordinateMapping=y,c=y,y.__name__=\"CoordinateMapping\",c.define((({Ref:e})=>({x_source:[e(h.Range),()=>new p.DataRange1d],y_source:[e(h.Range),()=>new p.DataRange1d],x_scale:[e(i.Scale),()=>new l.LinearScale],y_scale:[e(i.Scale),()=>new l.LinearScale],x_target:[e(h.Range)],y_target:[e(h.Range)]})));class v extends i.Scale{constructor(e){super(e)}get s_compute(){const e=this.source_scale.s_compute,t=this.target_scale.s_compute;return s=>t(e(s))}get s_invert(){const e=this.source_scale.s_invert,t=this.target_scale.s_invert;return s=>e(t(s))}compute(e){return this.s_compute(e)}v_compute(e){const{s_compute:t}=this;return(0,_.map)(e,t)}invert(e){return this.s_invert(e)}v_invert(e){const{s_invert:t}=this;return(0,_.map)(e,t)}}s.CompositeScale=v,n=v,v.__name__=\"CompositeScale\",n.internal((({Ref:e})=>({source_scale:[e(i.Scale)],target_scale:[e(i.Scale)]})))},\n function _(e,t,r,n,s){var _;n();const a=e(56),c=e(57),o=e(58),i=e(24);class u extends a.Transform{constructor(e){super(e)}compute(e){return this.s_compute(e)}v_compute(e){const t=new i.ScreenArray(e.length),{s_compute:r}=this;for(let n=0;n({source_range:[e(c.Range)],target_range:[e(o.Range1d)]})))},\n function _(n,s,o,r,c){r();const e=n(53);class t extends e.Model{constructor(n){super(n)}}o.Transform=t,t.__name__=\"Transform\"},\n function _(e,t,n,i,s){var r;i();const a=e(53);class l extends a.Model{constructor(e){super(e),this.have_updated_interactively=!1}get is_reversed(){return this.start>this.end}get is_valid(){return isFinite(this.min)&&isFinite(this.max)}get span(){return Math.abs(this.end-this.start)}}n.Range=l,r=l,l.__name__=\"Range\",r.define((({Number:e,Tuple:t,Or:n,Auto:i,Nullable:s})=>({bounds:[s(n(t(s(e),s(e)),i)),null],min_interval:[s(e),null],max_interval:[s(e),null]}))),r.internal((({Array:e,AnyRef:t})=>({plots:[e(t()),[]]})))},\n function _(t,e,s,n,r){var a;n();const i=t(57);class _ extends i.Range{constructor(t){super(t)}_set_auto_bounds(){if(\"auto\"==this.bounds){const t=Math.min(this._reset_start,this._reset_end),e=Math.max(this._reset_start,this._reset_end);this.setv({bounds:[t,e]},{silent:!0})}}initialize(){super.initialize(),this._set_auto_bounds()}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}reset(){this._set_auto_bounds();const{_reset_start:t,_reset_end:e}=this;this.start!=t||this.end!=e?this.setv({start:t,end:e}):this.change.emit()}map(t){return new _({start:t(this.start),end:t(this.end)})}widen(t){let{start:e,end:s}=this;return this.is_reversed?(e+=t,s-=t):(e-=t,s+=t),new _({start:e,end:s})}}s.Range1d=_,a=_,_.__name__=\"Range1d\",a.define((({Number:t,Nullable:e})=>({start:[t,0],end:[t,1],reset_start:[e(t),null,{on_update(t,e){e._reset_start=null!=t?t:e.start}}],reset_end:[e(t),null,{on_update(t,e){e._reset_end=null!=t?t:e.end}}]})))},\n function _(t,e,n,r,s){r();const a=t(60);class _ extends a.ContinuousScale{constructor(t){super(t)}get s_compute(){const[t,e]=this._linear_compute_state();return n=>t*n+e}get s_invert(){const[t,e]=this._linear_compute_state();return n=>(n-e)/t}_linear_compute_state(){const t=this.source_range.start,e=this.source_range.end,n=this.target_range.start,r=(this.target_range.end-n)/(e-t);return[r,-r*t+n]}}n.LinearScale=_,_.__name__=\"LinearScale\"},\n function _(n,c,o,s,e){s();const t=n(55);class u extends t.Scale{constructor(n){super(n)}}o.ContinuousScale=u,u.__name__=\"ContinuousScale\"},\n function _(t,e,a,o,s){o();const r=t(60);class n extends r.ContinuousScale{constructor(t){super(t)}get s_compute(){const[t,e,a,o]=this._compute_state();return s=>{if(0==a)return 0;{const r=(Math.log(s)-o)/a;return isFinite(r)?r*t+e:NaN}}}get s_invert(){const[t,e,a,o]=this._compute_state();return s=>{const r=(s-e)/t;return Math.exp(a*r+o)}}_get_safe_factor(t,e){let a=t<0?0:t,o=e<0?0:e;if(a==o)if(0==a)[a,o]=[1,10];else{const t=Math.log(a)/Math.log(10);a=10**Math.floor(t),o=Math.ceil(t)!=Math.floor(t)?10**Math.ceil(t):10**(Math.ceil(t)+1)}return[a,o]}_compute_state(){const t=this.source_range.start,e=this.source_range.end,a=this.target_range.start,o=this.target_range.end-a,[s,r]=this._get_safe_factor(t,e);let n,c;0==s?(n=Math.log(r),c=0):(n=Math.log(r)-Math.log(s),c=Math.log(s));return[o,a,n,c]}}a.LogScale=n,n.__name__=\"LogScale\"},\n function _(t,e,c,a,s){a();const n=t(55),r=t(59),{_linear_compute_state:o}=r.LinearScale.prototype;class l extends n.Scale{constructor(t){super(t)}get s_compute(){const[t,e]=o.call(this),c=this.source_range;return a=>t*c.synthetic(a)+e}get s_invert(){const[t,e]=o.call(this);return c=>(c-e)/t}}c.CategoricalScale=l,l.__name__=\"CategoricalScale\"},\n function _(t,i,n,e,a){e();const s=t(1);var l;const _=t(64),o=t(20),r=t(9),h=t(19),d=(0,s.__importStar)(t(65)),u=t(66);class g extends _.DataRange{constructor(t){super(t),this.have_updated_interactively=!1}initialize(){super.initialize(),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span,this._plot_bounds=new Map}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}computed_renderers(){const{renderers:t,names:i}=this,n=(0,r.concat)(this.plots.map((t=>t.data_renderers)));return(0,u.compute_renderers)(0==t.length?\"auto\":t,n,i)}_compute_plot_bounds(t,i){let n=d.empty();for(const e of t){const t=i.get(e);null==t||!e.visible&&this.only_visible||(n=d.union(n,t))}return n}adjust_bounds_for_aspect(t,i){const n=d.empty();let e=t.x1-t.x0;e<=0&&(e=1);let a=t.y1-t.y0;a<=0&&(a=1);const s=.5*(t.x1+t.x0),l=.5*(t.y1+t.y0);return el&&(\"start\"==this.follow?a=e+s*l:\"end\"==this.follow&&(e=a-s*l)),[e,a]}update(t,i,n,e){if(this.have_updated_interactively)return;const a=this.computed_renderers();let s=this._compute_plot_bounds(a,t);null!=e&&(s=this.adjust_bounds_for_aspect(s,e)),this._plot_bounds.set(n,s);const[l,_]=this._compute_min_max(this._plot_bounds.entries(),i);let[o,r]=this._compute_range(l,_);null!=this._initial_start&&(\"log\"==this.scale_hint?this._initial_start>0&&(o=this._initial_start):o=this._initial_start),null!=this._initial_end&&(\"log\"==this.scale_hint?this._initial_end>0&&(r=this._initial_end):r=this._initial_end);let h=!1;\"auto\"==this.bounds&&(this.setv({bounds:[o,r]},{silent:!0}),h=!0);const[d,u]=[this.start,this.end];if(o!=d||r!=u){const t={};o!=d&&(t.start=o),r!=u&&(t.end=r),this.setv(t),h=!1}h&&this.change.emit()}reset(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()}}n.DataRange1d=g,l=g,g.__name__=\"DataRange1d\",l.define((({Boolean:t,Number:i,Nullable:n})=>({start:[i],end:[i],range_padding:[i,.1],range_padding_units:[o.PaddingUnits,\"percent\"],flipped:[t,!1],follow:[n(o.StartEnd),null],follow_interval:[n(i),null],default_span:[i,2],only_visible:[t,!1]}))),l.internal((({Enum:t})=>({scale_hint:[t(\"log\",\"auto\"),\"auto\"]})))},\n function _(e,n,a,r,s){var t;r();const c=e(57);class _ extends c.Range{constructor(e){super(e)}}a.DataRange=_,t=_,_.__name__=\"DataRange\",t.define((({String:e,Array:n,AnyRef:a})=>({names:[n(e),[]],renderers:[n(a()),[]]})))},\n function _(t,i,e,h,r){h();const s=t(24),n=t(26),{min:x,max:y}=Math;e.empty=function(){return{x0:1/0,y0:1/0,x1:-1/0,y1:-1/0}},e.positive_x=function(){return{x0:Number.MIN_VALUE,y0:-1/0,x1:1/0,y1:1/0}},e.positive_y=function(){return{x0:-1/0,y0:Number.MIN_VALUE,x1:1/0,y1:1/0}},e.union=function(t,i){return{x0:x(t.x0,i.x0),x1:y(t.x1,i.x1),y0:x(t.y0,i.y0),y1:y(t.y1,i.y1)}};class o{constructor(t){if(null==t)this.x0=0,this.y0=0,this.x1=0,this.y1=0;else if(\"x0\"in t){const{x0:i,y0:e,x1:h,y1:r}=t;if(!(i<=h&&e<=r))throw new Error(`invalid bbox {x0: ${i}, y0: ${e}, x1: ${h}, y1: ${r}}`);this.x0=i,this.y0=e,this.x1=h,this.y1=r}else if(\"x\"in t){const{x:i,y:e,width:h,height:r}=t;if(!(h>=0&&r>=0))throw new Error(`invalid bbox {x: ${i}, y: ${e}, width: ${h}, height: ${r}}`);this.x0=i,this.y0=e,this.x1=i+h,this.y1=e+r}else{let i,e,h,r;if(\"width\"in t)if(\"left\"in t)i=t.left,e=i+t.width;else if(\"right\"in t)e=t.right,i=e-t.width;else{const h=t.width/2;i=t.hcenter-h,e=t.hcenter+h}else i=t.left,e=t.right;if(\"height\"in t)if(\"top\"in t)h=t.top,r=h+t.height;else if(\"bottom\"in t)r=t.bottom,h=r-t.height;else{const i=t.height/2;h=t.vcenter-i,r=t.vcenter+i}else h=t.top,r=t.bottom;if(!(i<=e&&h<=r))throw new Error(`invalid bbox {left: ${i}, top: ${h}, right: ${e}, bottom: ${r}}`);this.x0=i,this.y0=h,this.x1=e,this.y1=r}}static from_rect({left:t,right:i,top:e,bottom:h}){return new o({x0:Math.min(t,i),y0:Math.min(e,h),x1:Math.max(t,i),y1:Math.max(e,h)})}equals(t){return this.x0==t.x0&&this.y0==t.y0&&this.x1==t.x1&&this.y1==t.y1}[n.equals](t,i){return i.eq(this.x0,t.x0)&&i.eq(this.y0,t.y0)&&i.eq(this.x1,t.x1)&&i.eq(this.y1,t.y1)}toString(){return`BBox({left: ${this.left}, top: ${this.top}, width: ${this.width}, height: ${this.height}})`}get left(){return this.x0}get top(){return this.y0}get right(){return this.x1}get bottom(){return this.y1}get p0(){return[this.x0,this.y0]}get p1(){return[this.x1,this.y1]}get x(){return this.x0}get y(){return this.y0}get width(){return this.x1-this.x0}get height(){return this.y1-this.y0}get size(){return{width:this.width,height:this.height}}get rect(){const{x0:t,y0:i,x1:e,y1:h}=this;return{p0:{x:t,y:i},p1:{x:e,y:i},p2:{x:e,y:h},p3:{x:t,y:h}}}get box(){const{x:t,y:i,width:e,height:h}=this;return{x:t,y:i,width:e,height:h}}get h_range(){return{start:this.x0,end:this.x1}}get v_range(){return{start:this.y0,end:this.y1}}get ranges(){return[this.h_range,this.v_range]}get aspect(){return this.width/this.height}get hcenter(){return(this.left+this.right)/2}get vcenter(){return(this.top+this.bottom)/2}get area(){return this.width*this.height}relative(){const{width:t,height:i}=this;return new o({x:0,y:0,width:t,height:i})}translate(t,i){const{x:e,y:h,width:r,height:s}=this;return new o({x:t+e,y:i+h,width:r,height:s})}relativize(t,i){return[t-this.x,i-this.y]}contains(t,i){return this.x0<=t&&t<=this.x1&&this.y0<=i&&i<=this.y1}clip(t,i){return tthis.x1&&(t=this.x1),ithis.y1&&(i=this.y1),[t,i]}grow_by(t){return new o({left:this.left-t,right:this.right+t,top:this.top-t,bottom:this.bottom+t})}shrink_by(t){return new o({left:this.left+t,right:this.right-t,top:this.top+t,bottom:this.bottom-t})}union(t){return new o({x0:x(this.x0,t.x0),y0:x(this.y0,t.y0),x1:y(this.x1,t.x1),y1:y(this.y1,t.y1)})}intersection(t){return this.intersects(t)?new o({x0:y(this.x0,t.x0),y0:y(this.y0,t.y0),x1:x(this.x1,t.x1),y1:x(this.y1,t.y1)}):null}intersects(t){return!(t.x1this.x1||t.y1this.y1)}get xview(){return{compute:t=>this.left+t,v_compute:t=>{const i=new s.ScreenArray(t.length),e=this.left;for(let h=0;hthis.bottom-t,v_compute:t=>{const i=new s.ScreenArray(t.length),e=this.bottom;for(let h=0;h0&&(r=r.filter((n=>(0,l.includes)(t,n.name)))),r}},\n function _(t,n,e,i,s){var r;i();const a=t(57),o=t(20),g=t(21),p=t(24),c=t(9),l=t(8),u=t(11);function h(t,n,e=0){const i=new Map;for(let s=0;sa.get(t).value)));r.set(t,{value:l/s,mapping:a}),o+=s+n+p}return[r,(a.size-1)*n+g]}function _(t,n,e,i,s=0){var r;const a=new Map,o=new Map;for(const[n,e,i]of t){const t=null!==(r=o.get(n))&&void 0!==r?r:[];o.set(n,[...t,[e,i]])}let g=s,p=0;for(const[t,s]of o){const r=s.length,[o,l]=d(s,e,i,g);p+=l;const u=(0,c.sum)(s.map((([t])=>o.get(t).value)));a.set(t,{value:u/r,mapping:o}),g+=r+n+l}return[a,(o.size-1)*n+p]}e.Factor=(0,g.Or)(g.String,(0,g.Tuple)(g.String,g.String),(0,g.Tuple)(g.String,g.String,g.String)),e.FactorSeq=(0,g.Or)((0,g.Array)(g.String),(0,g.Array)((0,g.Tuple)(g.String,g.String)),(0,g.Array)((0,g.Tuple)(g.String,g.String,g.String))),e.map_one_level=h,e.map_two_levels=d,e.map_three_levels=_;class f extends a.Range{constructor(t){super(t)}get min(){return this.start}get max(){return this.end}initialize(){super.initialize(),this._init(!0)}connect_signals(){super.connect_signals(),this.connect(this.properties.factors.change,(()=>this.reset())),this.connect(this.properties.factor_padding.change,(()=>this.reset())),this.connect(this.properties.group_padding.change,(()=>this.reset())),this.connect(this.properties.subgroup_padding.change,(()=>this.reset())),this.connect(this.properties.range_padding.change,(()=>this.reset())),this.connect(this.properties.range_padding_units.change,(()=>this.reset()))}reset(){this._init(!1),this.change.emit()}_lookup(t){switch(t.length){case 1:{const[n]=t,e=this._mapping.get(n);return null!=e?e.value:NaN}case 2:{const[n,e]=t,i=this._mapping.get(n);if(null!=i){const t=i.mapping.get(e);if(null!=t)return t.value}return NaN}case 3:{const[n,e,i]=t,s=this._mapping.get(n);if(null!=s){const t=s.mapping.get(e);if(null!=t){const n=t.mapping.get(i);if(null!=n)return n.value}}return NaN}default:(0,u.unreachable)()}}synthetic(t){if((0,l.isNumber)(t))return t;if((0,l.isString)(t))return this._lookup([t]);let n=0;const e=t[t.length-1];return(0,l.isNumber)(e)&&(n=e,t=t.slice(0,-1)),this._lookup(t)+n}v_synthetic(t){const n=t.length,e=new p.ScreenArray(n);for(let i=0;i{if((0,c.every)(this.factors,l.isString)){const t=this.factors,[n,e]=h(t,this.factor_padding);return{levels:1,mapping:n,tops:null,mids:null,inside_padding:e}}if((0,c.every)(this.factors,(t=>(0,l.isArray)(t)&&2==t.length&&(0,l.isString)(t[0])&&(0,l.isString)(t[1])))){const t=this.factors,[n,e]=d(t,this.group_padding,this.factor_padding),i=[...n.keys()];return{levels:2,mapping:n,tops:i,mids:null,inside_padding:e}}if((0,c.every)(this.factors,(t=>(0,l.isArray)(t)&&3==t.length&&(0,l.isString)(t[0])&&(0,l.isString)(t[1])&&(0,l.isString)(t[2])))){const t=this.factors,[n,e]=_(t,this.group_padding,this.subgroup_padding,this.factor_padding),i=[...n.keys()],s=[];for(const[t,e]of n)for(const n of e.mapping.keys())s.push([t,n]);return{levels:3,mapping:n,tops:i,mids:s,inside_padding:e}}(0,u.unreachable)()})();this._mapping=e,this.tops=i,this.mids=s;let a=0,o=this.factors.length+r;if(\"percent\"==this.range_padding_units){const t=(o-a)*this.range_padding/2;a-=t,o+=t}else a-=this.range_padding,o+=this.range_padding;this.setv({start:a,end:o,levels:n},{silent:t}),\"auto\"==this.bounds&&this.setv({bounds:[a,o]},{silent:!0})}}e.FactorRange=f,r=f,f.__name__=\"FactorRange\",r.define((({Number:t})=>({factors:[e.FactorSeq,[]],factor_padding:[t,0],subgroup_padding:[t,.8],group_padding:[t,1.4],range_padding:[t,0],range_padding_units:[o.PaddingUnits,\"percent\"],start:[t],end:[t]}))),r.internal((({Number:t,String:n,Array:e,Tuple:i,Nullable:s})=>({levels:[t],mids:[s(e(i(n,n))),null],tops:[s(e(n)),null]})))},\n function _(t,e,s,a,i){a();const n=t(1);var _;const r=t(69),o=t(112),l=t(48),d=t(20),h=t(24),c=t(113),u=(0,n.__importStar)(t(18)),v=t(10);class p extends r.DataAnnotationView{async lazy_initialize(){await super.lazy_initialize();const{start:t,end:e}=this.model;null!=t&&(this.start=await(0,c.build_view)(t,{parent:this})),null!=e&&(this.end=await(0,c.build_view)(e,{parent:this}))}set_data(t){var e,s;super.set_data(t),null===(e=this.start)||void 0===e||e.set_data(t),null===(s=this.end)||void 0===s||s.set_data(t)}remove(){var t,e;null===(t=this.start)||void 0===t||t.remove(),null===(e=this.end)||void 0===e||e.remove(),super.remove()}map_data(){const{frame:t}=this.plot_view;\"data\"==this.model.start_units?(this._sx_start=this.coordinates.x_scale.v_compute(this._x_start),this._sy_start=this.coordinates.y_scale.v_compute(this._y_start)):(this._sx_start=t.bbox.xview.v_compute(this._x_start),this._sy_start=t.bbox.yview.v_compute(this._y_start)),\"data\"==this.model.end_units?(this._sx_end=this.coordinates.x_scale.v_compute(this._x_end),this._sy_end=this.coordinates.y_scale.v_compute(this._y_end)):(this._sx_end=t.bbox.xview.v_compute(this._x_end),this._sy_end=t.bbox.yview.v_compute(this._y_end));const{_sx_start:e,_sy_start:s,_sx_end:a,_sy_end:i}=this,n=e.length,_=this._angles=new h.ScreenArray(n);for(let t=0;t({x_start:[u.XCoordinateSpec,{field:\"x_start\"}],y_start:[u.YCoordinateSpec,{field:\"y_start\"}],start_units:[d.SpatialUnits,\"data\"],start:[e(t(o.ArrowHead)),null],x_end:[u.XCoordinateSpec,{field:\"x_end\"}],y_end:[u.YCoordinateSpec,{field:\"y_end\"}],end_units:[d.SpatialUnits,\"data\"],end:[e(t(o.ArrowHead)),()=>new o.OpenHead]})))},\n function _(t,e,n,s,a){s();const o=t(1);var i;const c=t(40),r=t(70),_=t(75),l=t(78),h=(0,o.__importStar)(t(18));class d extends c.AnnotationView{constructor(){super(...arguments),this._initial_set_data=!1}connect_signals(){super.connect_signals();const t=()=>{this.set_data(this.model.source),this._rerender()};this.connect(this.model.change,t),this.connect(this.model.source.streaming,t),this.connect(this.model.source.patching,t),this.connect(this.model.source.change,t)}_rerender(){this.request_render()}set_data(t){const e=this;for(const n of this.model)if(n instanceof h.VectorSpec||n instanceof h.ScalarSpec)if(n instanceof h.BaseCoordinateSpec){const s=n.array(t);e[`_${n.attr}`]=s}else{const s=n.uniform(t);e[`${n.attr}`]=s}this.plot_model.use_map&&(null!=e._x&&l.inplace.project_xy(e._x,e._y),null!=e._xs&&l.inplace.project_xsys(e._xs,e._ys));for(const t of this.visuals)t.update()}_render(){this._initial_set_data||(this.set_data(this.model.source),this._initial_set_data=!0),this.map_data(),this.paint(this.layer.ctx)}}n.DataAnnotationView=d,d.__name__=\"DataAnnotationView\";class u extends c.Annotation{constructor(t){super(t)}}n.DataAnnotation=u,i=u,u.__name__=\"DataAnnotation\",i.define((({Ref:t})=>({source:[t(r.ColumnarDataSource),()=>new _.ColumnDataSource]})))},\n function _(t,e,n,s,a){var i;s();const r=t(71),l=t(15),c=t(19),o=t(73),h=t(8),u=t(9),g=t(13),d=t(72),_=t(74),m=t(29);class w extends r.DataSource{constructor(t){super(t),this.selection_manager=new o.SelectionManager(this)}get_array(t){let e=this.data[t];return null==e?this.data[t]=e=[]:(0,h.isArray)(e)||(this.data[t]=e=Array.from(e)),e}initialize(){super.initialize(),this._select=new l.Signal0(this,\"select\"),this.inspect=new l.Signal(this,\"inspect\"),this.streaming=new l.Signal0(this,\"streaming\"),this.patching=new l.Signal(this,\"patching\")}get_column(t){const e=this.data[t];return null!=e?e:null}columns(){return(0,g.keys)(this.data)}get_length(t=!0){const e=(0,u.uniq)((0,g.values)(this.data).map((t=>(0,m.is_NDArray)(t)?t.shape[0]:t.length)));switch(e.length){case 0:return null;case 1:return e[0];default:{const n=\"data source has columns of inconsistent lengths\";if(t)return c.logger.warn(n),e.sort()[0];throw new Error(n)}}}get length(){var t;return null!==(t=this.get_length())&&void 0!==t?t:0}clear(){const t={};for(const e of this.columns())t[e]=new this.data[e].constructor(0);this.data=t}}n.ColumnarDataSource=w,i=w,w.__name__=\"ColumnarDataSource\",i.define((({Ref:t})=>({selection_policy:[t(_.SelectionPolicy),()=>new _.UnionRenderers]}))),i.internal((({AnyRef:t})=>({inspected:[t(),()=>new d.Selection]})))},\n function _(e,c,n,t,o){var a;t();const s=e(53),r=e(72);class l extends s.Model{constructor(e){super(e)}}n.DataSource=l,a=l,l.__name__=\"DataSource\",a.define((({Ref:e})=>({selected:[e(r.Selection),()=>new r.Selection]})))},\n function _(i,e,s,t,n){var l;t();const c=i(53),d=i(9),h=i(13);class _ extends c.Model{constructor(i){super(i)}get_view(){return this.view}get selected_glyph(){return this.selected_glyphs.length>0?this.selected_glyphs[0]:null}add_to_selected_glyphs(i){this.selected_glyphs.push(i)}update(i,e=!0,s=\"replace\"){switch(s){case\"replace\":this.indices=i.indices,this.line_indices=i.line_indices,this.multiline_indices=i.multiline_indices,this.image_indices=i.image_indices,this.view=i.view,this.selected_glyphs=i.selected_glyphs;break;case\"append\":this.update_through_union(i);break;case\"intersect\":this.update_through_intersection(i);break;case\"subtract\":this.update_through_subtraction(i)}}clear(){this.indices=[],this.line_indices=[],this.multiline_indices={},this.image_indices=[],this.view=null,this.selected_glyphs=[]}map(i){return new _(Object.assign(Object.assign({},this.attributes),{indices:this.indices.map(i),multiline_indices:(0,h.to_object)((0,h.entries)(this.multiline_indices).map((([e,s])=>[i(Number(e)),s]))),image_indices:this.image_indices.map((e=>Object.assign(Object.assign({},e),{index:i(e.index)})))}))}is_empty(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length}update_through_union(i){this.indices=(0,d.union)(this.indices,i.indices),this.selected_glyphs=(0,d.union)(i.selected_glyphs,this.selected_glyphs),this.line_indices=(0,d.union)(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=(0,h.merge)(i.multiline_indices,this.multiline_indices)}update_through_intersection(i){this.indices=(0,d.intersection)(this.indices,i.indices),this.selected_glyphs=(0,d.union)(i.selected_glyphs,this.selected_glyphs),this.line_indices=(0,d.union)(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=(0,h.merge)(i.multiline_indices,this.multiline_indices)}update_through_subtraction(i){this.indices=(0,d.difference)(this.indices,i.indices),this.selected_glyphs=(0,d.union)(i.selected_glyphs,this.selected_glyphs),this.line_indices=(0,d.union)(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=(0,h.merge)(i.multiline_indices,this.multiline_indices)}}s.Selection=_,l=_,_.__name__=\"Selection\",l.define((({Int:i,Array:e,Dict:s})=>({indices:[e(i),[]],line_indices:[e(i),[]],multiline_indices:[s(e(i)),{}]}))),l.internal((({Int:i,Array:e,AnyRef:s,Struct:t,Nullable:n})=>({selected_glyphs:[e(s()),[]],view:[n(s()),null],image_indices:[e(t({index:i,dim1:i,dim2:i,flat_index:i})),[]]})))},\n function _(e,t,o,s,c){s();const n=e(72);function i(e){return\"GlyphRenderer\"==e.model.type}function l(e){return\"GraphRenderer\"==e.model.type}class r{constructor(e){this.source=e,this.inspectors=new Map}select(e,t,o,s=\"replace\"){const c=[],n=[];for(const t of e)i(t)?c.push(t):l(t)&&n.push(t);let r=!1;for(const e of n){const c=e.model.selection_policy.hit_test(t,e);r=r||e.model.selection_policy.do_selection(c,e.model,o,s)}if(c.length>0){const e=this.source.selection_policy.hit_test(t,c);r=r||this.source.selection_policy.do_selection(e,this.source,o,s)}return r}inspect(e,t){let o=!1;if(i(e)){const s=e.hit_test(t);if(null!=s){o=!s.is_empty();const c=this.get_or_create_inspector(e.model);c.update(s,!0,\"replace\"),this.source.setv({inspected:c},{silent:!0}),this.source.inspect.emit([e.model,{geometry:t}])}}else if(l(e)){const s=e.model.inspection_policy.hit_test(t,e);o=o||e.model.inspection_policy.do_inspection(s,t,e,!1,\"replace\")}return o}clear(e){this.source.selected.clear(),null!=e&&this.get_or_create_inspector(e.model).clear()}get_or_create_inspector(e){let t=this.inspectors.get(e);return null==t&&(t=new n.Selection,this.inspectors.set(e,t)),t}}o.SelectionManager=r,r.__name__=\"SelectionManager\"},\n function _(e,t,n,s,o){s();const r=e(53);class c extends r.Model{do_selection(e,t,n,s){return null!=e&&(t.selected.update(e,n,s),t._select.emit(),!t.selected.is_empty())}}n.SelectionPolicy=c,c.__name__=\"SelectionPolicy\";class l extends c{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!=t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_intersection(t);return e}return null}}n.IntersectRenderers=l,l.__name__=\"IntersectRenderers\";class _ extends c{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!=t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_union(t);return e}return null}}n.UnionRenderers=_,_.__name__=\"UnionRenderers\"},\n function _(t,n,e,s,o){s();const r=t(1);var l;const c=t(70),i=t(8),a=t(13),u=(0,r.__importStar)(t(76)),h=t(77),d=t(35);function f(t,n,e){if((0,i.isArray)(t)){const s=t.concat(n);return null!=e&&s.length>e?s.slice(-e):s}if((0,i.isTypedArray)(t)){const s=t.length+n.length;if(null!=e&&s>e){const o=s-e,r=t.length;let l;t.length({data:[t(n),{}]})))},\n function _(t,n,o,e,c){e(),o.concat=function(t,...n){let o=t.length;for(const t of n)o+=t.length;const e=new t.constructor(o);e.set(t,0);let c=t.length;for(const t of n)e.set(t,c),c+=t.length;return e}},\n function _(n,o,t,e,f){function c(...n){const o=new Set;for(const t of n)for(const n of t)o.add(n);return o}e(),t.union=c,t.intersection=function(n,...o){const t=new Set;n:for(const e of n){for(const n of o)if(!n.has(e))continue n;t.add(e)}return t},t.difference=function(n,...o){const t=new Set(n);for(const n of c(...o))t.delete(n);return t}},\n function _(n,t,e,o,r){o();const c=n(1),l=(0,c.__importDefault)(n(79)),i=(0,c.__importDefault)(n(80)),u=n(24),a=new i.default(\"GOOGLE\"),s=new i.default(\"WGS84\"),f=(0,l.default)(s,a);e.wgs84_mercator={compute:(n,t)=>isFinite(n)&&isFinite(t)?f.forward([n,t]):[NaN,NaN],invert:(n,t)=>isFinite(n)&&isFinite(t)?f.inverse([n,t]):[NaN,NaN]};const _={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},p={lon:[-180,180],lat:[-85.06,85.06]},{min:g,max:h}=Math;function m(n,t){const o=g(n.length,t.length),r=(0,u.infer_type)(n,t),c=new r(o),l=new r(o);return e.inplace.project_xy(n,t,c,l),[c,l]}e.clip_mercator=function(n,t,e){const[o,r]=_[e];return[h(n,o),g(t,r)]},e.in_bounds=function(n,t){const[e,o]=p[t];return e2?void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name?\"number\"==typeof o.z?[o.x,o.y,o.z].concat(t.splice(3)):[o.x,o.y,t[2]].concat(t.splice(3)):[o.x,o.y].concat(t.splice(2)):[o.x,o.y]):(a=(0,c.default)(e,n,t,r),2===(i=Object.keys(t)).length||i.forEach((function(r){if(void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name){if(\"x\"===r||\"y\"===r||\"z\"===r)return}else if(\"x\"===r||\"y\"===r)return;a[r]=t[r]})),a)}function l(e){return e instanceof i.default?e:e.oProj?e.oProj:(0,i.default)(e)}t.default=function(e,n,t){e=l(e);var r,o=!1;return void 0===n?(n=e,e=u,o=!0):(void 0!==n.x||Array.isArray(n))&&(t=n,n=e,e=u,o=!0),n=l(n),t?f(e,n,t):(r={forward:function(t,r){return f(e,n,t,r)},inverse:function(t,r){return f(n,e,t,r)}},o&&(r.oProj=n),r)}},\n function _(t,e,a,s,i){s();const l=t(1),u=(0,l.__importDefault)(t(81)),r=(0,l.__importDefault)(t(92)),d=(0,l.__importDefault)(t(93)),o=t(101),f=(0,l.__importDefault)(t(103)),p=(0,l.__importDefault)(t(104)),m=(0,l.__importDefault)(t(88)),n=t(105);function h(t,e){if(!(this instanceof h))return new h(t);e=e||function(t){if(t)throw t};var a=(0,u.default)(t);if(\"object\"==typeof a){var s=h.projections.get(a.projName);if(s){if(a.datumCode&&\"none\"!==a.datumCode){var i=(0,m.default)(f.default,a.datumCode);i&&(a.datum_params=a.datum_params||(i.towgs84?i.towgs84.split(\",\"):null),a.ellps=i.ellipse,a.datumName=i.datumName?i.datumName:a.datumCode)}a.k0=a.k0||1,a.axis=a.axis||\"enu\",a.ellps=a.ellps||\"wgs84\",a.lat1=a.lat1||a.lat0;var l=(0,o.sphere)(a.a,a.b,a.rf,a.ellps,a.sphere),d=(0,o.eccentricity)(l.a,l.b,l.rf,a.R_A),_=(0,n.getNadgrids)(a.nadgrids),c=a.datum||(0,p.default)(a.datumCode,a.datum_params,l.a,l.b,d.es,d.ep2,_);(0,r.default)(this,a),(0,r.default)(this,s),this.a=l.a,this.b=l.b,this.rf=l.rf,this.sphere=l.sphere,this.es=d.es,this.e=d.e,this.ep2=d.ep2,this.datum=c,this.init(),e(null,this)}else e(t)}else e(t)}h.projections=d.default,h.projections.start(),a.default=h},\n function _(t,r,n,u,e){u();const f=t(1),i=(0,f.__importDefault)(t(82)),a=(0,f.__importDefault)(t(89)),o=(0,f.__importDefault)(t(84)),l=(0,f.__importDefault)(t(88));var C=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];var d=[\"3857\",\"900913\",\"3785\",\"102113\"];n.default=function(t){if(!function(t){return\"string\"==typeof t}(t))return t;if(function(t){return t in i.default}(t))return i.default[t];if(function(t){return C.some((function(r){return t.indexOf(r)>-1}))}(t)){var r=(0,a.default)(t);if(function(t){var r=(0,l.default)(t,\"authority\");if(r){var n=(0,l.default)(r,\"epsg\");return n&&d.indexOf(n)>-1}}(r))return i.default[\"EPSG:3857\"];var n=function(t){var r=(0,l.default)(t,\"extension\");if(r)return(0,l.default)(r,\"proj4\")}(r);return n?(0,o.default)(n):r}return function(t){return\"+\"===t[0]}(t)?(0,o.default)(t):void 0}},\n function _(t,r,i,e,n){e();const f=t(1),a=(0,f.__importDefault)(t(83)),l=(0,f.__importDefault)(t(84)),u=(0,f.__importDefault)(t(89));function o(t){var r=this;if(2===arguments.length){var i=arguments[1];\"string\"==typeof i?\"+\"===i.charAt(0)?o[t]=(0,l.default)(arguments[1]):o[t]=(0,u.default)(arguments[1]):o[t]=i}else if(1===arguments.length){if(Array.isArray(t))return t.map((function(t){Array.isArray(t)?o.apply(r,t):o(t)}));if(\"string\"==typeof t){if(t in o)return o[t]}else\"EPSG\"in t?o[\"EPSG:\"+t.EPSG]=t:\"ESRI\"in t?o[\"ESRI:\"+t.ESRI]=t:\"IAU2000\"in t?o[\"IAU2000:\"+t.IAU2000]=t:console.log(t);return}}(0,a.default)(o),i.default=o},\n function _(t,l,G,S,e){S(),G.default=function(t){t(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),t(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),t(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),t.WGS84=t[\"EPSG:4326\"],t[\"EPSG:3785\"]=t[\"EPSG:3857\"],t.GOOGLE=t[\"EPSG:3857\"],t[\"EPSG:900913\"]=t[\"EPSG:3857\"],t[\"EPSG:102113\"]=t[\"EPSG:3857\"]}},\n function _(t,n,o,a,u){a();const e=t(1),r=t(85),i=(0,e.__importDefault)(t(86)),f=(0,e.__importDefault)(t(87)),l=(0,e.__importDefault)(t(88));o.default=function(t){var n,o,a,u={},e=t.split(\"+\").map((function(t){return t.trim()})).filter((function(t){return t})).reduce((function(t,n){var o=n.split(\"=\");return o.push(!0),t[o[0].toLowerCase()]=o[1],t}),{}),c={proj:\"projName\",datum:\"datumCode\",rf:function(t){u.rf=parseFloat(t)},lat_0:function(t){u.lat0=t*r.D2R},lat_1:function(t){u.lat1=t*r.D2R},lat_2:function(t){u.lat2=t*r.D2R},lat_ts:function(t){u.lat_ts=t*r.D2R},lon_0:function(t){u.long0=t*r.D2R},lon_1:function(t){u.long1=t*r.D2R},lon_2:function(t){u.long2=t*r.D2R},alpha:function(t){u.alpha=parseFloat(t)*r.D2R},gamma:function(t){u.rectified_grid_angle=parseFloat(t)},lonc:function(t){u.longc=t*r.D2R},x_0:function(t){u.x0=parseFloat(t)},y_0:function(t){u.y0=parseFloat(t)},k_0:function(t){u.k0=parseFloat(t)},k:function(t){u.k0=parseFloat(t)},a:function(t){u.a=parseFloat(t)},b:function(t){u.b=parseFloat(t)},r_a:function(){u.R_A=!0},zone:function(t){u.zone=parseInt(t,10)},south:function(){u.utmSouth=!0},towgs84:function(t){u.datum_params=t.split(\",\").map((function(t){return parseFloat(t)}))},to_meter:function(t){u.to_meter=parseFloat(t)},units:function(t){u.units=t;var n=(0,l.default)(f.default,t);n&&(u.to_meter=n.to_meter)},from_greenwich:function(t){u.from_greenwich=t*r.D2R},pm:function(t){var n=(0,l.default)(i.default,t);u.from_greenwich=(n||parseFloat(t))*r.D2R},nadgrids:function(t){\"@null\"===t?u.datumCode=\"none\":u.nadgrids=t},axis:function(t){var n=\"ewnsud\";3===t.length&&-1!==n.indexOf(t.substr(0,1))&&-1!==n.indexOf(t.substr(1,1))&&-1!==n.indexOf(t.substr(2,1))&&(u.axis=t)},approx:function(){u.approx=!0}};for(n in e)o=e[n],n in c?\"function\"==typeof(a=c[n])?a(o):u[a]=o:u[n]=o;return\"string\"==typeof u.datumCode&&\"WGS84\"!==u.datumCode&&(u.datumCode=u.datumCode.toLowerCase()),u}},\n function _(S,_,P,R,I){R(),P.PJD_3PARAM=1,P.PJD_7PARAM=2,P.PJD_GRIDSHIFT=3,P.PJD_WGS84=4,P.PJD_NODATUM=5,P.SRS_WGS84_SEMIMAJOR=6378137,P.SRS_WGS84_SEMIMINOR=6356752.314,P.SRS_WGS84_ESQUARED=.0066943799901413165,P.SEC_TO_RAD=484813681109536e-20,P.HALF_PI=Math.PI/2,P.SIXTH=.16666666666666666,P.RA4=.04722222222222222,P.RA6=.022156084656084655,P.EPSLN=1e-10,P.D2R=.017453292519943295,P.R2D=57.29577951308232,P.FORTPI=Math.PI/4,P.TWO_PI=2*Math.PI,P.SPI=3.14159265359},\n function _(o,r,a,e,s){e();var n={};a.default=n,n.greenwich=0,n.lisbon=-9.131906111111,n.paris=2.337229166667,n.bogota=-74.080916666667,n.madrid=-3.687938888889,n.rome=12.452333333333,n.bern=7.439583333333,n.jakarta=106.807719444444,n.ferro=-17.666666666667,n.brussels=4.367975,n.stockholm=18.058277777778,n.athens=23.7163375,n.oslo=10.722916666667},\n function _(t,e,f,o,u){o(),f.default={ft:{to_meter:.3048},\"us-ft\":{to_meter:1200/3937}}},\n function _(e,r,t,a,n){a();var o=/[\\s_\\-\\/\\(\\)]/g;t.default=function(e,r){if(e[r])return e[r];for(var t,a=Object.keys(e),n=r.toLowerCase().replace(o,\"\"),f=-1;++f0?90:-90),e.lat_ts=e.lat1)}(n),n}},\n function _(t,e,r,i,s){i(),r.default=function(t){return new d(t).output()};var h=/\\s/,o=/[A-Za-z]/,n=/[A-Za-z84]/,a=/[,\\]]/,u=/[\\d\\.E\\-\\+]/;function d(t){if(\"string\"!=typeof t)throw new Error(\"not a string\");this.text=t.trim(),this.level=0,this.place=0,this.root=null,this.stack=[],this.currentObject=null,this.state=1}d.prototype.readCharicter=function(){var t=this.text[this.place++];if(4!==this.state)for(;h.test(t);){if(this.place>=this.text.length)return;t=this.text[this.place++]}switch(this.state){case 1:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},d.prototype.afterquote=function(t){if('\"'===t)return this.word+='\"',void(this.state=4);if(a.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in afterquote yet, index '+this.place)},d.prototype.afterItem=function(t){return\",\"===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=1)):\"]\"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=1,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},d.prototype.number=function(t){if(!u.test(t)){if(a.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in number yet, index '+this.place)}this.word+=t},d.prototype.quoted=function(t){'\"'!==t?this.word+=t:this.state=5},d.prototype.keyword=function(t){if(n.test(t))this.word+=t;else{if(\"[\"===t){var e=[];return e.push(this.word),this.level++,null===this.root?this.root=e:this.currentObject.push(e),this.stack.push(this.currentObject),this.currentObject=e,void(this.state=1)}if(!a.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in keyword yet, index '+this.place);this.afterItem(t)}},d.prototype.neutral=function(t){if(o.test(t))return this.word=t,void(this.state=2);if('\"'===t)return this.word=\"\",void(this.state=4);if(u.test(t))return this.word=t,void(this.state=3);if(!a.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in neutral yet, index '+this.place);this.afterItem(t)},d.prototype.output=function(){for(;this.place90&&a*o.R2D<-90&&h*o.R2D>180&&h*o.R2D<-180)return null;if(Math.abs(Math.abs(a)-o.HALF_PI)<=o.EPSLN)return null;if(this.sphere)i=this.x0+this.a*this.k0*(0,n.default)(h-this.long0),s=this.y0+this.a*this.k0*Math.log(Math.tan(o.FORTPI+.5*a));else{var e=Math.sin(a),r=(0,l.default)(this.e,a,e);i=this.x0+this.a*this.k0*(0,n.default)(h-this.long0),s=this.y0-this.a*this.k0*Math.log(r)}return t.x=i,t.y=s,t}function M(t){var i,s,h=t.x-this.x0,a=t.y-this.y0;if(this.sphere)s=o.HALF_PI-2*Math.atan(Math.exp(-a/(this.a*this.k0)));else{var e=Math.exp(-a/(this.a*this.k0));if(-9999===(s=(0,u.default)(this.e,e)))return null}return i=(0,n.default)(this.long0+h/(this.a*this.k0)),t.x=i,t.y=s,t}s.init=f,s.forward=_,s.inverse=M,s.names=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"],s.default={init:f,forward:_,inverse:M,names:s.names}},\n function _(t,n,r,u,a){u(),r.default=function(t,n,r){var u=t*n;return r/Math.sqrt(1-u*u)}},\n function _(t,n,u,a,f){a();const e=t(1),o=t(85),_=(0,e.__importDefault)(t(97));u.default=function(t){return Math.abs(t)<=o.SPI?t:t-(0,_.default)(t)*o.TWO_PI}},\n function _(n,t,u,f,c){f(),u.default=function(n){return n<0?-1:1}},\n function _(t,n,a,o,u){o();const c=t(85);a.default=function(t,n,a){var o=t*a,u=.5*t;return o=Math.pow((1-o)/(1+o),u),Math.tan(.5*(c.HALF_PI-n))/o}},\n function _(t,a,n,r,f){r();const h=t(85);n.default=function(t,a){for(var n,r,f=.5*t,o=h.HALF_PI-2*Math.atan(a),u=0;u<=15;u++)if(n=t*Math.sin(o),o+=r=h.HALF_PI-2*Math.atan(a*Math.pow((1-n)/(1+n),f))-o,Math.abs(r)<=1e-10)return o;return-9999}},\n function _(n,i,e,t,r){function a(){}function f(n){return n}t(),e.init=a,e.forward=f,e.inverse=f,e.names=[\"longlat\",\"identity\"],e.default={init:a,forward:f,inverse:f,names:e.names}},\n function _(t,r,e,a,n){a();const f=t(1),i=t(85),u=(0,f.__importStar)(t(102)),c=(0,f.__importDefault)(t(88));e.eccentricity=function(t,r,e,a){var n=t*t,f=r*r,u=(n-f)/n,c=0;return a?(n=(t*=1-u*(i.SIXTH+u*(i.RA4+u*i.RA6)))*t,u=0):c=Math.sqrt(u),{es:u,e:c,ep2:(n-f)/f}},e.sphere=function(t,r,e,a,n){if(!t){var f=(0,c.default)(u.default,a);f||(f=u.WGS84),t=f.a,r=f.b,e=f.rf}return e&&!r&&(r=(1-1/e)*t),(0===e||Math.abs(t-r)3&&(0===s.datum_params[3]&&0===s.datum_params[4]&&0===s.datum_params[5]&&0===s.datum_params[6]||(s.datum_type=d.PJD_7PARAM,s.datum_params[3]*=d.SEC_TO_RAD,s.datum_params[4]*=d.SEC_TO_RAD,s.datum_params[5]*=d.SEC_TO_RAD,s.datum_params[6]=s.datum_params[6]/1e6+1))),r&&(s.datum_type=d.PJD_GRIDSHIFT,s.grids=r),s.a=_,s.b=t,s.es=u,s.ep2=p,s}},\n function _(t,e,n,r,i){r();var u={};function l(t){if(0===t.length)return null;var e=\"@\"===t[0];return e&&(t=t.slice(1)),\"null\"===t?{name:\"null\",mandatory:!e,grid:null,isNull:!0}:{name:t,mandatory:!e,grid:u[t]||null,isNull:!1}}function o(t){return t/3600*Math.PI/180}function a(t,e,n){return String.fromCharCode.apply(null,new Uint8Array(t.buffer.slice(e,n)))}function d(t){return t.map((function(t){return[o(t.longitudeShift),o(t.latitudeShift)]}))}function g(t,e,n){return{name:a(t,e+8,e+16).trim(),parent:a(t,e+24,e+24+8).trim(),lowerLatitude:t.getFloat64(e+72,n),upperLatitude:t.getFloat64(e+88,n),lowerLongitude:t.getFloat64(e+104,n),upperLongitude:t.getFloat64(e+120,n),latitudeInterval:t.getFloat64(e+136,n),longitudeInterval:t.getFloat64(e+152,n),gridNodeCount:t.getInt32(e+168,n)}}function s(t,e,n,r){for(var i=e+176,u=[],l=0;l1&&console.log(\"Only single NTv2 subgrids are currently supported, subsequent sub grids are ignored\");var l=function(t,e,n){for(var r=176,i=[],u=0;ua.y||f>a.x||N1e-12&&Math.abs(n.y)>1e-12);if(d<0)return console.log(\"Inverse grid shift iterator failed to converge.\"),a;a.x=(0,u.default)(l.x+t.ll[0]),a.y=l.y+t.ll[1]}else isNaN(l.x)||(a.x=r.x+l.x,a.y=r.y+l.y);return a}function f(r,e){var t,a={x:r.x/e.del[0],y:r.y/e.del[1]},i=Math.floor(a.x),l=Math.floor(a.y),n=a.x-1*i,o=a.y-1*l,u={x:Number.NaN,y:Number.NaN};if(i<0||i>=e.lim[0])return u;if(l<0||l>=e.lim[1])return u;t=l*e.lim[0]+i;var d=e.cvs[t][0],s=e.cvs[t][1];t++;var y=e.cvs[t][0],f=e.cvs[t][1];t+=e.lim[0];var x=e.cvs[t][0],m=e.cvs[t][1];t--;var N=e.cvs[t][0],c=e.cvs[t][1],_=n*o,g=n*(1-o),v=(1-n)*(1-o),S=(1-n)*o;return u.x=v*d+g*y+S*N+_*x,u.y=v*s+g*f+S*c+_*m,u}t.default=function(r,e,t){if((0,o.compareDatums)(r,e))return t;if(r.datum_type===n.PJD_NODATUM||e.datum_type===n.PJD_NODATUM)return t;var a=r.a,i=r.es;if(r.datum_type===n.PJD_GRIDSHIFT){if(0!==s(r,!1,t))return;a=n.SRS_WGS84_SEMIMAJOR,i=n.SRS_WGS84_ESQUARED}var l=e.a,u=e.b,y=e.es;if(e.datum_type===n.PJD_GRIDSHIFT&&(l=n.SRS_WGS84_SEMIMAJOR,u=n.SRS_WGS84_SEMIMINOR,y=n.SRS_WGS84_ESQUARED),i===y&&a===l&&!d(r.datum_type)&&!d(e.datum_type))return t;if(t=(0,o.geodeticToGeocentric)(t,i,a),d(r.datum_type)&&(t=(0,o.geocentricToWgs84)(t,r.datum_type,r.datum_params)),d(e.datum_type)&&(t=(0,o.geocentricFromWgs84)(t,e.datum_type,e.datum_params)),t=(0,o.geocentricToGeodetic)(t,y,l,u),e.datum_type===n.PJD_GRIDSHIFT&&0!==s(e,!0,t))return;return t},t.applyGridShift=s},\n function _(a,t,r,m,s){m();const u=a(85);r.compareDatums=function(a,t){return a.datum_type===t.datum_type&&(!(a.a!==t.a||Math.abs(a.es-t.es)>5e-11)&&(a.datum_type===u.PJD_3PARAM?a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]:a.datum_type!==u.PJD_7PARAM||a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]&&a.datum_params[3]===t.datum_params[3]&&a.datum_params[4]===t.datum_params[4]&&a.datum_params[5]===t.datum_params[5]&&a.datum_params[6]===t.datum_params[6]))},r.geodeticToGeocentric=function(a,t,r){var m,s,_,e,n=a.x,d=a.y,i=a.z?a.z:0;if(d<-u.HALF_PI&&d>-1.001*u.HALF_PI)d=-u.HALF_PI;else if(d>u.HALF_PI&&d<1.001*u.HALF_PI)d=u.HALF_PI;else{if(d<-u.HALF_PI)return{x:-1/0,y:-1/0,z:a.z};if(d>u.HALF_PI)return{x:1/0,y:1/0,z:a.z}}return n>Math.PI&&(n-=2*Math.PI),s=Math.sin(d),e=Math.cos(d),_=s*s,{x:((m=r/Math.sqrt(1-t*_))+i)*e*Math.cos(n),y:(m+i)*e*Math.sin(n),z:(m*(1-t)+i)*s}},r.geocentricToGeodetic=function(a,t,r,m){var s,_,e,n,d,i,p,P,y,z,M,o,A,c,x,h=1e-12,f=a.x,I=a.y,F=a.z?a.z:0;if(s=Math.sqrt(f*f+I*I),_=Math.sqrt(f*f+I*I+F*F),s/r1e-24&&A<30);return{x:c,y:Math.atan(M/Math.abs(z)),z:x}},r.geocentricToWgs84=function(a,t,r){if(t===u.PJD_3PARAM)return{x:a.x+r[0],y:a.y+r[1],z:a.z+r[2]};if(t===u.PJD_7PARAM){var m=r[0],s=r[1],_=r[2],e=r[3],n=r[4],d=r[5],i=r[6];return{x:i*(a.x-d*a.y+n*a.z)+m,y:i*(d*a.x+a.y-e*a.z)+s,z:i*(-n*a.x+e*a.y+a.z)+_}}},r.geocentricFromWgs84=function(a,t,r){if(t===u.PJD_3PARAM)return{x:a.x-r[0],y:a.y-r[1],z:a.z-r[2]};if(t===u.PJD_7PARAM){var m=r[0],s=r[1],_=r[2],e=r[3],n=r[4],d=r[5],i=r[6],p=(a.x-m)/i,P=(a.y-s)/i,y=(a.z-_)/i;return{x:p+d*P-n*y,y:-d*p+P+e*y,z:n*p-e*P+y}}}},\n function _(e,a,i,r,s){r(),i.default=function(e,a,i){var r,s,n,c=i.x,d=i.y,f=i.z||0,u={};for(n=0;n<3;n++)if(!a||2!==n||void 0!==i.z)switch(0===n?(r=c,s=-1!==\"ew\".indexOf(e.axis[n])?\"x\":\"y\"):1===n?(r=d,s=-1!==\"ns\".indexOf(e.axis[n])?\"y\":\"x\"):(r=f,s=\"z\"),e.axis[n]){case\"e\":u[s]=r;break;case\"w\":u[s]=-r;break;case\"n\":u[s]=r;break;case\"s\":u[s]=-r;break;case\"u\":void 0!==i[s]&&(u.z=r);break;case\"d\":void 0!==i[s]&&(u.z=-r);break;default:return null}return u}},\n function _(n,t,e,u,f){u(),e.default=function(n){var t={x:n[0],y:n[1]};return n.length>2&&(t.z=n[2]),n.length>3&&(t.m=n[3]),t}},\n function _(e,i,n,t,r){function o(e){if(\"function\"==typeof Number.isFinite){if(Number.isFinite(e))return;throw new TypeError(\"coordinates must be finite numbers\")}if(\"number\"!=typeof e||e!=e||!isFinite(e))throw new TypeError(\"coordinates must be finite numbers\")}t(),n.default=function(e){o(e.x),o(e.y)}},\n function _(e,i,s,t,o){t();const n=e(1);var l,a,r,_,c;const d=e(53),v=e(42),u=(0,n.__importStar)(e(45)),h=e(48),m=(0,n.__importStar)(e(18));class T extends v.View{initialize(){super.initialize(),this.visuals=new u.Visuals(this)}request_render(){this.parent.request_render()}get canvas(){return this.parent.canvas}set_data(e){const i=this;for(const s of this.model){if(!(s instanceof m.VectorSpec||s instanceof m.ScalarSpec))continue;const t=s.uniform(e);i[`${s.attr}`]=t}}}s.ArrowHeadView=T,T.__name__=\"ArrowHeadView\";class p extends d.Model{constructor(e){super(e)}}s.ArrowHead=p,l=p,p.__name__=\"ArrowHead\",l.define((()=>({size:[m.NumberSpec,25]})));class V extends T{clip(e,i){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.moveTo(.5*s,s),e.lineTo(.5*s,-2),e.lineTo(-.5*s,-2),e.lineTo(-.5*s,s),e.lineTo(0,0),e.lineTo(.5*s,s)}render(e,i){if(this.visuals.line.doit){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,s),e.lineTo(0,0),e.lineTo(-.5*s,s),e.stroke()}}}s.OpenHeadView=V,V.__name__=\"OpenHeadView\";class f extends p{constructor(e){super(e)}}s.OpenHead=f,a=f,f.__name__=\"OpenHead\",a.prototype.default_view=V,a.mixins(h.LineVector);class w extends T{clip(e,i){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.moveTo(.5*s,s),e.lineTo(.5*s,-2),e.lineTo(-.5*s,-2),e.lineTo(-.5*s,s),e.lineTo(.5*s,s)}render(e,i){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(e,i),this._normal(e,i),e.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,i),this._normal(e,i),e.stroke())}_normal(e,i){const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,s),e.lineTo(0,0),e.lineTo(-.5*s,s),e.closePath()}}s.NormalHeadView=w,w.__name__=\"NormalHeadView\";class H extends p{constructor(e){super(e)}}s.NormalHead=H,r=H,H.__name__=\"NormalHead\",r.prototype.default_view=w,r.mixins([h.LineVector,h.FillVector]),r.override({fill_color:\"black\"});class z extends T{clip(e,i){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.moveTo(.5*s,s),e.lineTo(.5*s,-2),e.lineTo(-.5*s,-2),e.lineTo(-.5*s,s),e.lineTo(0,.5*s),e.lineTo(.5*s,s)}render(e,i){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(e,i),this._vee(e,i),e.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,i),this._vee(e,i),e.stroke())}_vee(e,i){const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,s),e.lineTo(0,0),e.lineTo(-.5*s,s),e.lineTo(0,.5*s),e.closePath()}}s.VeeHeadView=z,z.__name__=\"VeeHeadView\";class x extends p{constructor(e){super(e)}}s.VeeHead=x,_=x,x.__name__=\"VeeHead\",_.prototype.default_view=z,_.mixins([h.LineVector,h.FillVector]),_.override({fill_color:\"black\"});class g extends T{render(e,i){if(this.visuals.line.doit){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,0),e.lineTo(-.5*s,0),e.stroke()}}clip(e,i){}}s.TeeHeadView=g,g.__name__=\"TeeHeadView\";class b extends p{constructor(e){super(e)}}s.TeeHead=b,c=b,b.__name__=\"TeeHead\",c.prototype.default_view=g,c.mixins(h.LineVector)},\n function _(n,e,t,i,o){i();const s=n(9);async function c(n,e,t){const i=new n(Object.assign(Object.assign({},t),{model:e}));return i.initialize(),await i.lazy_initialize(),i}t.build_view=async function(n,e={parent:null},t=(n=>n.default_view)){const i=await c(t(n),n,e);return i.connect_signals(),i},t.build_views=async function(n,e,t={parent:null},i=(n=>n.default_view)){const o=(0,s.difference)([...n.keys()],e);for(const e of o)n.get(e).remove(),n.delete(e);const a=[],f=e.filter((e=>!n.has(e)));for(const e of f){const o=await c(i(e),e,t);n.set(e,o),a.push(o)}for(const n of a)n.connect_signals();return a},t.remove_views=function(n){for(const[e,t]of n)t.remove(),n.delete(e)}},\n function _(e,s,_,i,l){i();const t=e(1);var o;const r=e(115),p=(0,t.__importStar)(e(48));class h extends r.UpperLowerView{paint(e){e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,_=this._lower_sx.length;s<_;s++)e.lineTo(this._lower_sx[s],this._lower_sy[s]);for(let s=this._upper_sx.length-1;s>=0;s--)e.lineTo(this._upper_sx[s],this._upper_sy[s]);e.closePath(),this.visuals.fill.apply(e),e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,_=this._lower_sx.length;s<_;s++)e.lineTo(this._lower_sx[s],this._lower_sy[s]);this.visuals.line.apply(e),e.beginPath(),e.moveTo(this._upper_sx[0],this._upper_sy[0]);for(let s=0,_=this._upper_sx.length;s<_;s++)e.lineTo(this._upper_sx[s],this._upper_sy[s]);this.visuals.line.apply(e)}}_.BandView=h,h.__name__=\"BandView\";class n extends r.UpperLower{constructor(e){super(e)}}_.Band=n,o=n,n.__name__=\"Band\",o.prototype.default_view=h,o.mixins([p.Line,p.Fill]),o.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})},\n function _(e,t,i,s,o){s();const r=e(1);var n;const p=e(69),a=e(20),_=(0,r.__importStar)(e(18));class h extends p.DataAnnotationView{map_data(){const{frame:e}=this.plot_view,t=this.model.dimension,i=this.coordinates.x_scale,s=this.coordinates.y_scale,o=\"height\"==t?s:i,r=\"height\"==t?i:s,n=\"height\"==t?e.bbox.yview:e.bbox.xview,p=\"height\"==t?e.bbox.xview:e.bbox.yview;let a,_,h;a=\"data\"==this.model.properties.lower.units?o.v_compute(this._lower):n.v_compute(this._lower),_=\"data\"==this.model.properties.upper.units?o.v_compute(this._upper):n.v_compute(this._upper),h=\"data\"==this.model.properties.base.units?r.v_compute(this._base):p.v_compute(this._base);const[d,c]=\"height\"==t?[1,0]:[0,1],u=[a,h],l=[_,h];this._lower_sx=u[d],this._lower_sy=u[c],this._upper_sx=l[d],this._upper_sy=l[c]}}i.UpperLowerView=h,h.__name__=\"UpperLowerView\";class d extends _.CoordinateSpec{get dimension(){return\"width\"==this.obj.dimension?\"x\":\"y\"}get units(){var e;return null!==(e=this.spec.units)&&void 0!==e?e:\"data\"}}i.XOrYCoordinateSpec=d,d.__name__=\"XOrYCoordinateSpec\";class c extends p.DataAnnotation{constructor(e){super(e)}}i.UpperLower=c,n=c,c.__name__=\"UpperLower\",n.define((()=>({dimension:[a.Dimension,\"height\"],lower:[d,{field:\"lower\"}],upper:[d,{field:\"upper\"}],base:[d,{field:\"base\"}]})))},\n function _(t,o,i,n,e){n();const s=t(1);var l;const r=t(40),a=(0,s.__importStar)(t(48)),c=t(20),h=t(65);i.EDGE_TOLERANCE=2.5;class b extends r.AnnotationView{constructor(){super(...arguments),this.bbox=new h.BBox}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{left:t,right:o,top:i,bottom:n}=this.model;if(null==t&&null==o&&null==i&&null==n)return;const{frame:e}=this.plot_view,s=this.coordinates.x_scale,l=this.coordinates.y_scale,r=(t,o,i,n,e)=>{let s;return s=null!=t?this.model.screen?t:\"data\"==o?i.compute(t):n.compute(t):e,s};this.bbox=h.BBox.from_rect({left:r(t,this.model.left_units,s,e.bbox.xview,e.bbox.left),right:r(o,this.model.right_units,s,e.bbox.xview,e.bbox.right),top:r(i,this.model.top_units,l,e.bbox.yview,e.bbox.top),bottom:r(n,this.model.bottom_units,l,e.bbox.yview,e.bbox.bottom)}),this._paint_box()}_paint_box(){const{ctx:t}=this.layer;t.save();const{left:o,top:i,width:n,height:e}=this.bbox;t.beginPath(),t.rect(o,i,n,e),this.visuals.fill.apply(t),this.visuals.hatch.apply(t),this.visuals.line.apply(t),t.restore()}interactive_bbox(){const t=this.model.line_width+i.EDGE_TOLERANCE;return this.bbox.grow_by(t)}interactive_hit(t,o){if(null==this.model.in_cursor)return!1;return this.interactive_bbox().contains(t,o)}cursor(t,o){const{left:i,right:n,bottom:e,top:s}=this.bbox;return Math.abs(t-i)<3||Math.abs(t-n)<3?this.model.ew_cursor:Math.abs(o-e)<3||Math.abs(o-s)<3?this.model.ns_cursor:this.bbox.contains(t,o)?this.model.in_cursor:null}}i.BoxAnnotationView=b,b.__name__=\"BoxAnnotationView\";class u extends r.Annotation{constructor(t){super(t)}update({left:t,right:o,top:i,bottom:n}){this.setv({left:t,right:o,top:i,bottom:n,screen:!0})}}i.BoxAnnotation=u,l=u,u.__name__=\"BoxAnnotation\",l.prototype.default_view=b,l.mixins([a.Line,a.Fill,a.Hatch]),l.define((({Number:t,Nullable:o})=>({top:[o(t),null],top_units:[c.SpatialUnits,\"data\"],bottom:[o(t),null],bottom_units:[c.SpatialUnits,\"data\"],left:[o(t),null],left_units:[c.SpatialUnits,\"data\"],right:[o(t),null],right_units:[c.SpatialUnits,\"data\"],render_mode:[c.RenderMode,\"canvas\"]}))),l.internal((({Boolean:t,String:o,Nullable:i})=>({screen:[t,!1],ew_cursor:[i(o),null],ns_cursor:[i(o),null],in_cursor:[i(o),null]}))),l.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})},\n function _(t,e,i,o,n){o();const a=t(1);var r;const s=t(40),l=t(118),_=t(126),c=t(127),h=t(130),u=t(168),p=t(131),m=t(192),g=t(132),d=t(173),f=t(172),w=t(196),b=t(204),v=t(206),x=t(133),y=t(20),k=(0,a.__importStar)(t(48)),z=t(9),j=t(207),C=t(208),L=t(211),B=t(123),S=t(11),M=t(113),T=t(65),A=t(8);class O extends s.AnnotationView{get orientation(){return this._orientation}initialize(){super.initialize();const{ticker:t,formatter:e,color_mapper:i}=this.model;this._ticker=\"auto\"!=t?t:(()=>{switch(!0){case i instanceof w.LogColorMapper:return new u.LogTicker;case i instanceof w.ScanningColorMapper:return new u.BinnedTicker({mapper:i});case i instanceof w.CategoricalColorMapper:return new u.CategoricalTicker;default:return new u.BasicTicker}})(),this._formatter=\"auto\"!=e?e:(()=>{switch(!0){case this._ticker instanceof u.LogTicker:return new m.LogTickFormatter;case i instanceof w.CategoricalColorMapper:return new m.CategoricalTickFormatter;default:return new m.BasicTickFormatter}})(),this._major_range=(()=>{if(i instanceof w.CategoricalColorMapper){const{factors:t}=i;return new v.FactorRange({factors:t})}if(i instanceof f.ContinuousColorMapper){const{min:t,max:e}=i.metrics;return new v.Range1d({start:t,end:e})}(0,S.unreachable)()})(),this._major_scale=(()=>{if(i instanceof w.LinearColorMapper)return new b.LinearScale;if(i instanceof w.LogColorMapper)return new b.LogScale;if(i instanceof w.ScanningColorMapper){const{binning:t}=i.metrics;return new b.LinearInterpolationScale({binning:t})}if(i instanceof w.CategoricalColorMapper)return new b.CategoricalScale;(0,S.unreachable)()})(),this._minor_range=new v.Range1d({start:0,end:1}),this._minor_scale=new b.LinearScale;const o=k.attrs_of(this.model,\"major_label_\",k.Text,!0),n=k.attrs_of(this.model,\"major_tick_\",k.Line,!0),a=k.attrs_of(this.model,\"minor_tick_\",k.Line,!0),r=k.attrs_of(this.model,\"title_\",k.Text),s=i instanceof w.CategoricalColorMapper?c.CategoricalAxis:i instanceof w.LogColorMapper?c.LogAxis:c.LinearAxis;this._axis=new s(Object.assign(Object.assign(Object.assign({ticker:this._ticker,formatter:this._formatter,major_tick_in:this.model.major_tick_in,major_tick_out:this.model.major_tick_out,minor_tick_in:this.model.minor_tick_in,minor_tick_out:this.model.minor_tick_out,major_label_standoff:this.model.label_standoff,major_label_overrides:this.model.major_label_overrides,major_label_policy:this.model.major_label_policy,axis_line_color:null},o),n),a));const{title:_}=this.model;_&&(this._title=new l.Title(Object.assign({text:_,standoff:this.model.title_standoff},r)))}async lazy_initialize(){await super.lazy_initialize();const t=this,e={get parent(){return t.parent},get root(){return t.root},get frame(){return t._frame},get canvas_view(){return t.parent.canvas_view},request_layout(){t.parent.request_layout()}};this._axis_view=await(0,M.build_view)(this._axis,{parent:e}),null!=this._title&&(this._title_view=await(0,M.build_view)(this._title,{parent:e}))}remove(){var t;null===(t=this._title_view)||void 0===t||t.remove(),this._axis_view.remove(),super.remove()}connect_signals(){super.connect_signals(),this.connect(this._ticker.change,(()=>this.request_render())),this.connect(this._formatter.change,(()=>this.request_render())),this.connect(this.model.color_mapper.metrics_change,(()=>{const t=this._major_range,e=this._major_scale,{color_mapper:i}=this.model;if(i instanceof f.ContinuousColorMapper&&t instanceof v.Range1d){const{min:e,max:o}=i.metrics;t.setv({start:e,end:o})}if(i instanceof w.ScanningColorMapper&&e instanceof b.LinearInterpolationScale){const{binning:t}=i.metrics;e.binning=t}this._set_canvas_image(),this.plot_view.request_layout()}))}_set_canvas_image(){const{orientation:t}=this,e=(()=>{const{palette:e}=this.model.color_mapper;return\"vertical\"==t?(0,z.reversed)(e):e})(),[i,o]=\"vertical\"==t?[1,e.length]:[e.length,1],n=this._image=document.createElement(\"canvas\");n.width=i,n.height=o;const a=n.getContext(\"2d\"),r=a.getImageData(0,0,i,o),s=new w.LinearColorMapper({palette:e}).rgba_mapper.v_compute((0,z.range)(0,e.length));r.data.set(s),a.putImageData(r,0,0)}update_layout(){const{location:t,width:e,height:i,padding:o,margin:n}=this.model,[a,r]=(()=>{if(!(0,A.isString)(t))return[\"end\",\"start\"];switch(t){case\"top_left\":return[\"start\",\"start\"];case\"top\":case\"top_center\":return[\"start\",\"center\"];case\"top_right\":return[\"start\",\"end\"];case\"bottom_left\":return[\"end\",\"start\"];case\"bottom\":case\"bottom_center\":return[\"end\",\"center\"];case\"bottom_right\":return[\"end\",\"end\"];case\"left\":case\"center_left\":return[\"center\",\"start\"];case\"center\":case\"center_center\":return[\"center\",\"center\"];case\"right\":case\"center_right\":return[\"center\",\"end\"]}})(),s=this._orientation=(()=>{const{orientation:t}=this.model;return\"auto\"==t?null!=this.panel?this.panel.is_horizontal?\"horizontal\":\"vertical\":\"start\"==r||\"end\"==r||\"center\"==r&&\"center\"==a?\"vertical\":\"horizontal\":t})(),l=new C.NodeLayout,c=new C.VStack,h=new C.VStack,u=new C.HStack,p=new C.HStack;l.absolute=!0,c.absolute=!0,h.absolute=!0,u.absolute=!0,p.absolute=!0;const[m,g,d,f]=(()=>\"horizontal\"==s?[this._major_scale,this._minor_scale,this._major_range,this._minor_range]:[this._minor_scale,this._major_scale,this._minor_range,this._major_range])();this._frame=new _.CartesianFrame(m,g,d,f),l.on_resize((t=>this._frame.set_geometry(t)));const w=new L.BorderLayout;this._inner_layout=w,w.absolute=!0,w.center_panel=l,w.top_panel=c,w.bottom_panel=h,w.left_panel=u,w.right_panel=p;const b={left:o,right:o,top:o,bottom:o},v=(()=>{if(null==this.panel){if((0,A.isString)(t))return{left:n,right:n,top:n,bottom:n};{const[e,i]=t;return{left:e,right:n,top:n,bottom:i}}}if(!(0,A.isString)(t)){const[e,i]=t;return w.fixup_geometry=(t,o)=>{const n=t,a=this.layout.bbox,{width:r,height:s}=t;if(t=new T.BBox({left:a.left+e,bottom:a.bottom-i,width:r,height:s}),null!=o){const e=t.left-n.left,i=t.top-n.top,{left:a,top:r,width:s,height:l}=o;o=new T.BBox({left:a+e,top:r+i,width:s,height:l})}return[t,o]},{left:e,right:0,top:0,bottom:i}}w.fixup_geometry=(t,e)=>{const i=t;if(\"horizontal\"==s){const{top:e,width:i,height:o}=t;if(\"end\"==r){const{right:n}=this.layout.bbox;t=new T.BBox({right:n,top:e,width:i,height:o})}else if(\"center\"==r){const{hcenter:n}=this.layout.bbox;t=new T.BBox({hcenter:Math.round(n),top:e,width:i,height:o})}}else{const{left:e,width:i,height:o}=t;if(\"end\"==a){const{bottom:n}=this.layout.bbox;t=new T.BBox({left:e,bottom:n,width:i,height:o})}else if(\"center\"==a){const{vcenter:n}=this.layout.bbox;t=new T.BBox({left:e,vcenter:Math.round(n),width:i,height:o})}}if(null!=e){const o=t.left-i.left,n=t.top-i.top,{left:a,top:r,width:s,height:l}=e;e=new T.BBox({left:a+o,top:r+n,width:s,height:l})}return[t,e]}})();let x,y,k,z;if(w.padding=b,null!=this.panel?(x=\"max\",y=void 0,k=void 0,z=void 0):\"auto\"==(\"horizontal\"==s?e:i)?(x=\"fixed\",y=25*this.model.color_mapper.palette.length,k={percent:.3},z={percent:.8}):(x=\"fit\",y=void 0),\"horizontal\"==s){const t=\"auto\"==e?void 0:e,o=\"auto\"==i?25:i;w.set_sizing({width_policy:x,height_policy:\"min\",width:y,min_width:k,max_width:z,halign:r,valign:a,margin:v}),w.center_panel.set_sizing({width_policy:\"auto\"==e?\"fit\":\"fixed\",height_policy:\"fixed\",width:t,height:o})}else{const t=\"auto\"==e?25:e,o=\"auto\"==i?void 0:i;w.set_sizing({width_policy:\"min\",height_policy:x,height:y,min_height:k,max_height:z,halign:r,valign:a,margin:v}),w.center_panel.set_sizing({width_policy:\"fixed\",height_policy:\"auto\"==i?\"fit\":\"fixed\",width:t,height:o})}c.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),h.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),u.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),p.set_sizing({width_policy:\"min\",height_policy:\"fit\"});const{_title_view:S}=this;null!=S&&(\"horizontal\"==s?(S.panel=new B.Panel(\"above\"),S.update_layout(),c.children.push(S.layout)):(S.panel=new B.Panel(\"left\"),S.update_layout(),u.children.push(S.layout)));const{panel:M}=this,O=null!=M&&s==M.orientation?M.side:\"horizontal\"==s?\"below\":\"right\",R=(()=>{switch(O){case\"above\":return c;case\"below\":return h;case\"left\":return u;case\"right\":return p}})(),{_axis_view:F}=this;if(F.panel=new B.Panel(O),F.update_layout(),R.children.push(F.layout),null!=this.panel){const t=new j.Grid([{layout:w,row:0,col:0}]);t.absolute=!0,\"horizontal\"==s?t.set_sizing({width_policy:\"max\",height_policy:\"min\"}):t.set_sizing({width_policy:\"min\",height_policy:\"max\"}),this.layout=t}else this.layout=this._inner_layout;const{visible:I}=this.model;this.layout.sizing.visible=I,this._set_canvas_image()}_render(){var t;const{ctx:e}=this.layer;e.save(),this._paint_bbox(e,this._inner_layout.bbox),this._paint_image(e,this._inner_layout.center_panel.bbox),null===(t=this._title_view)||void 0===t||t.render(),this._axis_view.render(),e.restore()}_paint_bbox(t,e){const{x:i,y:o}=e;let{width:n,height:a}=e;i+n>=this.parent.canvas_view.bbox.width&&(n-=1),o+a>=this.parent.canvas_view.bbox.height&&(a-=1),t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(i,o,n,a)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(i,o,n,a)),t.restore()}_paint_image(t,e){const{x:i,y:o,width:n,height:a}=e;t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this._image,i,o,n,a),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(i,o,n,a)),t.restore()}serializable_state(){const t=super.serializable_state(),{children:e=[]}=t,i=(0,a.__rest)(t,[\"children\"]);return null!=this._title_view&&e.push(this._title_view.serializable_state()),e.push(this._axis_view.serializable_state()),Object.assign(Object.assign({},i),{children:e})}}i.ColorBarView=O,O.__name__=\"ColorBarView\";class R extends s.Annotation{constructor(t){super(t)}}i.ColorBar=R,r=R,R.__name__=\"ColorBar\",r.prototype.default_view=O,r.mixins([[\"major_label_\",k.Text],[\"title_\",k.Text],[\"major_tick_\",k.Line],[\"minor_tick_\",k.Line],[\"border_\",k.Line],[\"bar_\",k.Line],[\"background_\",k.Fill]]),r.define((({Alpha:t,Number:e,String:i,Tuple:o,Dict:n,Or:a,Ref:r,Auto:s,Nullable:l})=>({location:[a(y.Anchor,o(e,e)),\"top_right\"],orientation:[a(y.Orientation,s),\"auto\"],title:[l(i),null],title_standoff:[e,2],width:[a(e,s),\"auto\"],height:[a(e,s),\"auto\"],scale_alpha:[t,1],ticker:[a(r(h.Ticker),s),\"auto\"],formatter:[a(r(p.TickFormatter),s),\"auto\"],major_label_overrides:[n(a(i,r(x.BaseText))),{}],major_label_policy:[r(g.LabelingPolicy),()=>new g.NoOverlap],color_mapper:[r(d.ColorMapper)],label_standoff:[e,5],margin:[e,30],padding:[e,10],major_tick_in:[e,5],major_tick_out:[e,0],minor_tick_in:[e,0],minor_tick_out:[e,0]}))),r.override({background_fill_color:\"#ffffff\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_font_size:\"11px\",major_tick_line_color:\"#ffffff\",minor_tick_line_color:null,title_text_font_size:\"13px\",title_text_font_style:\"italic\"})},\n function _(t,e,i,s,l){s();const o=t(1);var a;const n=t(119),r=t(20),c=t(120),h=(0,o.__importStar)(t(48));class _ extends n.TextAnnotationView{_get_location(){const t=this.model.offset,e=this.model.standoff/2;let i,s;const{bbox:l}=this.layout;switch(this.panel.side){case\"above\":case\"below\":switch(this.model.vertical_align){case\"top\":s=l.top+e;break;case\"middle\":s=l.vcenter;break;case\"bottom\":s=l.bottom-e}switch(this.model.align){case\"left\":i=l.left+t;break;case\"center\":i=l.hcenter;break;case\"right\":i=l.right-t}break;case\"left\":switch(this.model.vertical_align){case\"top\":i=l.left+e;break;case\"middle\":i=l.hcenter;break;case\"bottom\":i=l.right-e}switch(this.model.align){case\"left\":s=l.bottom-t;break;case\"center\":s=l.vcenter;break;case\"right\":s=l.top+t}break;case\"right\":switch(this.model.vertical_align){case\"top\":i=l.right-e;break;case\"middle\":i=l.hcenter;break;case\"bottom\":i=l.left+e}switch(this.model.align){case\"left\":s=l.top+t;break;case\"center\":s=l.vcenter;break;case\"right\":s=l.bottom-t}}return[i,s]}_render(){const{text:t}=this.model;if(null==t||0==t.length)return;this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;const[e,i]=this._get_location(),s=this.panel.get_label_angle_heuristic(\"parallel\");(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,t,e,i,s)}_get_size(){const{text:t}=this.model,e=new c.TextBox({text:t});e.visuals=this.visuals.text.values();const{width:i,height:s}=e.size();return{width:i,height:0==s?0:2+s+this.model.standoff}}}i.TitleView=_,_.__name__=\"TitleView\";class d extends n.TextAnnotation{constructor(t){super(t)}}i.Title=d,a=d,d.__name__=\"Title\",a.prototype.default_view=_,a.mixins([h.Text,[\"border_\",h.Line],[\"background_\",h.Fill]]),a.define((({Number:t,String:e})=>({text:[e,\"\"],vertical_align:[r.VerticalAlign,\"bottom\"],align:[r.TextAlign,\"left\"],offset:[t,0],standoff:[t,10]}))),a.prototype._props.text_align.options.internal=!0,a.prototype._props.text_baseline.options.internal=!0,a.override({text_font_size:\"13px\",text_font_style:\"bold\",text_line_height:1,background_fill_color:null,border_line_color:null})},\n function _(e,t,s,i,l){var n;i();const o=e(40),a=e(43),r=e(20),d=e(120),u=e(123),c=e(11);class h extends o.AnnotationView{update_layout(){const{panel:e}=this;this.layout=null!=e?new u.SideLayout(e,(()=>this.get_size()),!0):void 0}initialize(){super.initialize(),\"css\"==this.model.render_mode&&(this.el=(0,a.div)(),this.plot_view.canvas_view.add_overlay(this.el))}remove(){null!=this.el&&(0,a.remove)(this.el),super.remove()}connect_signals(){super.connect_signals(),\"css\"==this.model.render_mode?this.connect(this.model.change,(()=>this.render())):this.connect(this.model.change,(()=>this.request_render()))}render(){this.model.visible||\"css\"!=this.model.render_mode||(0,a.undisplay)(this.el),super.render()}_canvas_text(e,t,s,i,l){const n=new d.TextBox({text:t});n.angle=l,n.position={sx:s,sy:i},n.visuals=this.visuals.text.values();const{background_fill:o,border_line:a}=this.visuals;if(o.doit||a.doit){const{p0:t,p1:s,p2:i,p3:l}=n.rect();e.beginPath(),e.moveTo(t.x,t.y),e.lineTo(s.x,s.y),e.lineTo(i.x,i.y),e.lineTo(l.x,l.y),e.closePath(),this.visuals.background_fill.apply(e),this.visuals.border_line.apply(e)}this.visuals.text.doit&&n.paint(e)}_css_text(e,t,s,i,l){const{el:n}=this;(0,c.assert)(null!=n),(0,a.undisplay)(n),n.textContent=t,this.visuals.text.set_value(e),n.style.position=\"absolute\",n.style.left=`${s}px`,n.style.top=`${i}px`,n.style.color=e.fillStyle,n.style.font=e.font,n.style.lineHeight=\"normal\",n.style.whiteSpace=\"pre\";const[o,r]=(()=>{switch(this.visuals.text.text_align.get_value()){case\"left\":return[\"left\",\"0%\"];case\"center\":return[\"center\",\"-50%\"];case\"right\":return[\"right\",\"-100%\"]}})(),[d,u]=(()=>{switch(this.visuals.text.text_baseline.get_value()){case\"top\":return[\"top\",\"0%\"];case\"middle\":return[\"center\",\"-50%\"];case\"bottom\":return[\"bottom\",\"-100%\"];default:return[\"center\",\"-50%\"]}})();let h=`translate(${r}, ${u})`;l&&(h+=`rotate(${l}rad)`),n.style.transformOrigin=`${o} ${d}`,n.style.transform=h,this.layout,this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),n.style.backgroundColor=e.fillStyle),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(e),n.style.borderStyle=e.lineDash.length<2?\"solid\":\"dashed\",n.style.borderWidth=`${e.lineWidth}px`,n.style.borderColor=e.strokeStyle),(0,a.display)(n)}}s.TextAnnotationView=h,h.__name__=\"TextAnnotationView\";class _ extends o.Annotation{constructor(e){super(e)}}s.TextAnnotation=_,n=_,_.__name__=\"TextAnnotation\",n.define((()=>({render_mode:[r.RenderMode,\"canvas\"]})))},\n function _(t,e,s,i,n){i();const h=t(65),o=t(121),r=t(9),a=t(8),c=t(122),_=t(22);s.text_width=(()=>{const t=document.createElement(\"canvas\").getContext(\"2d\");let e=\"\";return(s,i)=>(i!=e&&(e=i,t.font=i),t.measureText(s).width)})();class l{constructor(){this._position={sx:0,sy:0},this.font_size_scale=1,this.align=\"left\",this._base_font_size=13,this._x_anchor=\"left\",this._y_anchor=\"center\"}set base_font_size(t){null!=t&&(this._base_font_size=t)}get base_font_size(){return this._base_font_size}set position(t){this._position=t}get position(){return this._position}infer_text_height(){return\"ascent_descent\"}bbox(){const{p0:t,p1:e,p2:s,p3:i}=this.rect(),n=Math.min(t.x,e.x,s.x,i.x),o=Math.min(t.y,e.y,s.y,i.y),r=Math.max(t.x,e.x,s.x,i.x),a=Math.max(t.y,e.y,s.y,i.y);return new h.BBox({left:n,right:r,top:o,bottom:a})}size(){const{width:t,height:e}=this._size(),{angle:s}=this;if(s){const i=Math.cos(Math.abs(s)),n=Math.sin(Math.abs(s));return{width:Math.abs(t*i+e*n),height:Math.abs(t*n+e*i)}}return{width:t,height:e}}rect(){const t=this._rect(),{angle:e}=this;if(e){const{sx:s,sy:i}=this.position,n=new c.AffineTransform;return n.translate(s,i),n.rotate(e),n.translate(-s,-i),n.apply_rect(t)}return t}paint_rect(t){const{p0:e,p1:s,p2:i,p3:n}=this.rect();t.save(),t.strokeStyle=\"red\",t.lineWidth=1,t.beginPath();const{round:h}=Math;t.moveTo(h(e.x),h(e.y)),t.lineTo(h(s.x),h(s.y)),t.lineTo(h(i.x),h(i.y)),t.lineTo(h(n.x),h(n.y)),t.closePath(),t.stroke(),t.restore()}paint_bbox(t){const{x:e,y:s,width:i,height:n}=this.bbox();t.save(),t.strokeStyle=\"blue\",t.lineWidth=1,t.beginPath();const{round:h}=Math;t.moveTo(h(e),h(s)),t.lineTo(h(e),h(s+n)),t.lineTo(h(e+i),h(s+n)),t.lineTo(h(e+i),h(s)),t.closePath(),t.stroke(),t.restore()}}s.GraphicsBox=l,l.__name__=\"GraphicsBox\";class x extends l{constructor({text:t}){super(),this.text=t}set visuals(t){const e=t.color,s=t.alpha,i=t.font_style;let n=t.font_size;const h=t.font,{font_size_scale:r,base_font_size:a}=this,c=(0,o.parse_css_font_size)(n);if(null!=c){let{value:t,unit:e}=c;t*=r,\"em\"==e&&a&&(t*=a,e=\"px\"),n=`${t}${e}`}const l=`${i} ${n} ${h}`;this.font=l,this.color=(0,_.color2css)(e,s),this.line_height=t.line_height;const x=t.align;this._x_anchor=x;const u=t.baseline;this._y_anchor=(()=>{switch(u){case\"top\":return\"top\";case\"middle\":return\"center\";case\"bottom\":return\"bottom\";default:return\"baseline\"}})()}infer_text_height(){if(this.text.includes(\"\\n\"))return\"ascent_descent\";{function t(t){for(const e of new Set(t))if(!(\"0\"<=e&&e<=\"9\"))switch(e){case\",\":case\".\":case\"+\":case\"-\":case\"\\u2212\":case\"e\":continue;default:return!1}return!0}return t(this.text)?\"cap\":\"ascent_descent\"}}_text_line(t){var e;const s=null!==(e=this.text_height_metric)&&void 0!==e?e:this.infer_text_height(),i=(()=>{switch(s){case\"x\":case\"x_descent\":return t.x_height;case\"cap\":case\"cap_descent\":return t.cap_height;case\"ascent\":case\"ascent_descent\":return t.ascent}})(),n=(()=>{switch(s){case\"x\":case\"cap\":case\"ascent\":return 0;case\"x_descent\":case\"cap_descent\":case\"ascent_descent\":return t.descent}})();return{height:i+n,ascent:i,descent:n}}get nlines(){return this.text.split(\"\\n\").length}_size(){var t,e;const{font:i}=this,n=(0,o.font_metrics)(i),h=(this.line_height-1)*n.height,a=\"\"==this.text,c=this.text.split(\"\\n\"),_=c.length,l=c.map((t=>(0,s.text_width)(t,i))),x=this._text_line(n).height*_,u=\"%\"==(null===(t=this.width)||void 0===t?void 0:t.unit)?this.width.value:1,p=\"%\"==(null===(e=this.height)||void 0===e?void 0:e.unit)?this.height.value:1;return{width:(0,r.max)(l)*u,height:a?0:(x+h*(_-1))*p,metrics:n}}_computed_position(t,e,s){const{width:i,height:n}=t,{sx:h,sy:o,x_anchor:r=this._x_anchor,y_anchor:c=this._y_anchor}=this.position;return{x:h-(()=>{if((0,a.isNumber)(r))return r*i;switch(r){case\"left\":return 0;case\"center\":return.5*i;case\"right\":return i}})(),y:o-(()=>{var t;if((0,a.isNumber)(c))return c*n;switch(c){case\"top\":return 0;case\"center\":return.5*n;case\"bottom\":return n;case\"baseline\":if(1!=s)return.5*n;switch(null!==(t=this.text_height_metric)&&void 0!==t?t:this.infer_text_height()){case\"x\":case\"x_descent\":return e.x_height;case\"cap\":case\"cap_descent\":return e.cap_height;case\"ascent\":case\"ascent_descent\":return e.ascent}}})()}}_rect(){const{width:t,height:e,metrics:s}=this._size(),i=this.text.split(\"\\n\").length,{x:n,y:o}=this._computed_position({width:t,height:e},s,i);return new h.BBox({x:n,y:o,width:t,height:e}).rect}paint(t){var e,i;const{font:n}=this,h=(0,o.font_metrics)(n),a=(this.line_height-1)*h.height,c=this.text.split(\"\\n\"),_=c.length,l=c.map((t=>(0,s.text_width)(t,n))),x=this._text_line(h),u=x.height*_,p=\"%\"==(null===(e=this.width)||void 0===e?void 0:e.unit)?this.width.value:1,f=\"%\"==(null===(i=this.height)||void 0===i?void 0:i.unit)?this.height.value:1,g=(0,r.max)(l)*p,d=(u+a*(_-1))*f;t.save(),t.fillStyle=this.color,t.font=this.font,t.textAlign=\"left\",t.textBaseline=\"alphabetic\";const{sx:b,sy:m}=this.position,{align:y}=this,{angle:w}=this;w&&(t.translate(b,m),t.rotate(w),t.translate(-b,-m));let{x:v,y:z}=this._computed_position({width:g,height:d},h,_);if(\"justify\"==y)for(let e=0;e<_;e++){let i=v;const h=c[e].split(\" \"),o=h.length,_=h.map((t=>(0,s.text_width)(t,n))),l=(g-(0,r.sum)(_))/(o-1);for(let e=0;e{switch(y){case\"left\":return 0;case\"center\":return.5*(g-l[e]);case\"right\":return g-l[e]}})();t.fillStyle=this.color,t.fillText(c[e],s,z+x.ascent),z+=x.height+a}t.restore()}}s.TextBox=x,x.__name__=\"TextBox\";class u extends l{constructor(t,e){super(),this.base=t,this.expo=e}get children(){return[this.base,this.expo]}set base_font_size(t){super.base_font_size=t,this.base.base_font_size=t,this.expo.base_font_size=t}set position(t){this._position=t;const e=this.base.size(),s=this.expo.size(),i=this._shift_scale()*e.height,n=Math.max(e.height,i+s.height);this.base.position={sx:0,x_anchor:\"left\",sy:n,y_anchor:\"bottom\"},this.expo.position={sx:e.width,x_anchor:\"left\",sy:i,y_anchor:\"bottom\"}}get position(){return this._position}set visuals(t){this.expo.font_size_scale=.7,this.base.visuals=t,this.expo.visuals=t}_shift_scale(){if(this.base instanceof x&&1==this.base.nlines){const{x_height:t,cap_height:e}=(0,o.font_metrics)(this.base.font);return t/e}return 2/3}infer_text_height(){return this.base.infer_text_height()}_rect(){const t=this.base.bbox(),e=this.expo.bbox(),s=t.union(e),{x:i,y:n}=this._computed_position();return s.translate(i,n).rect}_size(){const t=this.base.size(),e=this.expo.size();return{width:t.width+e.width,height:Math.max(t.height,this._shift_scale()*t.height+e.height)}}paint(t){t.save();const{angle:e}=this;if(e){const{sx:s,sy:i}=this.position;t.translate(s,i),t.rotate(e),t.translate(-s,-i)}const{x:s,y:i}=this._computed_position();t.translate(s,i),this.base.paint(t),this.expo.paint(t),t.restore()}paint_bbox(t){super.paint_bbox(t);const{x:e,y:s}=this._computed_position();t.save(),t.translate(e,s);for(const e of this.children)e.paint_bbox(t);t.restore()}_computed_position(){const{width:t,height:e}=this._size(),{sx:s,sy:i,x_anchor:n=this._x_anchor,y_anchor:h=this._y_anchor}=this.position;return{x:s-(()=>{if((0,a.isNumber)(n))return n*t;switch(n){case\"left\":return 0;case\"center\":return.5*t;case\"right\":return t}})(),y:i-(()=>{if((0,a.isNumber)(h))return h*e;switch(h){case\"top\":return 0;case\"center\":return.5*e;case\"bottom\":return e;case\"baseline\":return.5*e}})()}}}s.BaseExpo=u,u.__name__=\"BaseExpo\";class p{constructor(t){this.items=t}set base_font_size(t){for(const e of this.items)e.base_font_size=t}get length(){return this.items.length}set visuals(t){for(const e of this.items)e.visuals=t;const e={x:0,cap:1,ascent:2,x_descent:3,cap_descent:4,ascent_descent:5},s=(0,r.max_by)(this.items.map((t=>t.infer_text_height())),(t=>e[t]));for(const t of this.items)t.text_height_metric=s}set angle(t){for(const e of this.items)e.angle=t}max_size(){let t=0,e=0;for(const s of this.items){const i=s.size();t=Math.max(t,i.width),e=Math.max(e,i.height)}return{width:t,height:e}}}s.GraphicsBoxes=p,p.__name__=\"GraphicsBoxes\"},\n function _(t,e,n,r,l){r();const a=t(11),c=(()=>{try{return\"undefined\"!=typeof OffscreenCanvas&&null!=new OffscreenCanvas(0,0).getContext(\"2d\")}catch(t){return!1}})()?(t,e)=>new OffscreenCanvas(t,e):(t,e)=>{const n=document.createElement(\"canvas\");return n.width=t,n.height=e,n},o=(()=>{const t=c(0,0).getContext(\"2d\");return e=>{t.font=e;const n=t.measureText(\"M\"),r=t.measureText(\"x\"),l=t.measureText(\"\\xc5\\u015ag|\"),c=l.fontBoundingBoxAscent,o=l.fontBoundingBoxDescent;if(null!=c&&null!=o)return{height:c+o,ascent:c,descent:o,cap_height:n.actualBoundingBoxAscent,x_height:r.actualBoundingBoxAscent};const s=l.actualBoundingBoxAscent,u=l.actualBoundingBoxDescent;if(null!=s&&null!=u)return{height:s+u,ascent:s,descent:u,cap_height:n.actualBoundingBoxAscent,x_height:r.actualBoundingBoxAscent};(0,a.unreachable)()}})(),s=(()=>{const t=c(0,0).getContext(\"2d\");return(e,n)=>{t.font=n;const r=t.measureText(e),l=r.actualBoundingBoxAscent,c=r.actualBoundingBoxDescent;if(null!=l&&null!=c)return{width:r.width,height:l+c,ascent:l,descent:c};(0,a.unreachable)()}})(),u=(()=>{const t=document.createElement(\"canvas\"),e=t.getContext(\"2d\");let n=-1,r=-1;return(l,a=1)=>{e.font=l;const{width:c}=e.measureText(\"M\"),o=c*a,s=Math.ceil(o),u=Math.ceil(2*o),i=Math.ceil(1.5*o);n{let e=0;for(let n=0;n<=i;n++)for(let r=0;r{let e=t.length-4;for(let n=u;n>=i;n--)for(let r=0;r{const t=document.createElement(\"canvas\"),e=t.getContext(\"2d\");let n=-1,r=-1;return(l,a,c=1)=>{e.font=a;const{width:o}=e.measureText(\"M\"),s=o*c,u=Math.ceil(s),i=Math.ceil(2*s),f=Math.ceil(1.5*s);(n{let e=0;for(let n=0;n<=f;n++)for(let r=0;r{let e=t.length-4;for(let n=i;n>=f;n--)for(let r=0;r{try{return o(\"normal 10px sans-serif\"),o}catch(t){return u}})(),h=(()=>{try{return s(\"A\",\"normal 10px sans-serif\"),s}catch(t){return i}})(),g=new Map;function d(t){let e=g.get(t);return null==e&&(e={font:f(t),glyphs:new Map},g.set(t,e)),e.font}n.font_metrics=d,n.glyph_metrics=function(t,e){let n=g.get(e);null==n&&(d(e),n=g.get(e));let r=n.glyphs.get(t);return null==r&&(r=h(t,e),n.glyphs.set(t,r)),r},n.parse_css_font_size=function(t){const e=t.match(/^\\s*(\\d+(\\.\\d+)?)(\\w+)\\s*$/);if(null!=e){const[,t,,n]=e,r=Number(t);if(isFinite(r))return{value:r,unit:n}}return null}},\n function _(t,s,r,n,i){n();const{sin:e,cos:a}=Math;class h{constructor(t=1,s=0,r=0,n=1,i=0,e=0){this.a=t,this.b=s,this.c=r,this.d=n,this.e=i,this.f=e}toString(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return`matrix(${t}, ${s}, ${r}, ${n}, ${i}, ${e})`}static from_DOMMatrix(t){const{a:s,b:r,c:n,d:i,e,f:a}=t;return new h(s,r,n,i,e,a)}to_DOMMatrix(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return new DOMMatrix([t,s,r,n,i,e])}clone(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return new h(t,s,r,n,i,e)}get is_identity(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return 1==t&&0==s&&0==r&&1==n&&0==i&&0==e}apply_point(t){const[s,r]=this.apply(t.x,t.y);return{x:s,y:r}}apply_rect(t){return{p0:this.apply_point(t.p0),p1:this.apply_point(t.p1),p2:this.apply_point(t.p2),p3:this.apply_point(t.p3)}}apply(t,s){const{a:r,b:n,c:i,d:e,e:a,f:h}=this;return[r*t+i*s+a,n*t+e*s+h]}iv_apply(t,s){const{a:r,b:n,c:i,d:e,e:a,f:h}=this,c=t.length;for(let o=0;o{const h={max:4,fit:3,min:2,fixed:1};return h[i]>h[t]};if(\"fixed\"!=n&&\"fixed\"!=s)if(n==s){const n=t,s=_(t/e),r=_(h*e),g=h;Math.abs(i.width-n)+Math.abs(i.height-s)<=Math.abs(i.width-r)+Math.abs(i.height-g)?(t=n,h=s):(t=r,h=g)}else r(n,s)?h=_(t/e):t=_(h*e);else\"fixed\"==n?h=_(t/e):\"fixed\"==s&&(t=_(h*e))}return{width:t,height:h}}measure(i){if(!this.sizing.visible)return{width:0,height:0};const t=i=>\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:i,h=i=>\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:i,e=new s.Sizeable(i).shrink_by(this.sizing.margin).map(t,h),n=this._measure(e),r=this.clip_size(n,e),g=t(r.width),l=h(r.height),a=this.apply_aspect(e,{width:g,height:l});return Object.assign(Object.assign({},n),a)}compute(i={}){const t=this.measure({width:null!=i.width&&this.is_width_expanding()?i.width:1/0,height:null!=i.height&&this.is_height_expanding()?i.height:1/0}),{width:h,height:e}=t,n=new r.BBox({left:0,top:0,width:h,height:e});let s;if(null!=t.inner){const{left:i,top:n,right:g,bottom:l}=t.inner;s=new r.BBox({left:i,top:n,right:h-g,bottom:e-l})}this.set_geometry(n,s)}get xview(){return this.bbox.xview}get yview(){return this.bbox.yview}clip_size(i,t){function h(i,t,h,e){return null==h?h=0:(0,g.isNumber)(h)||(h=Math.round(h.percent*t)),null==e?e=1/0:(0,g.isNumber)(e)||(e=Math.round(e.percent*t)),a(h,l(i,e))}return{width:h(i.width,t.width,this.sizing.min_width,this.sizing.max_width),height:h(i.height,t.height,this.sizing.min_height,this.sizing.max_height)}}has_size_changed(){const{_dirty:i}=this;return this._dirty=!1,i}}h.Layoutable=o,o.__name__=\"Layoutable\";class d extends o{_measure(i){const{width_policy:t,height_policy:h}=this.sizing;return{width:(()=>{const{width:h}=this.sizing;if(i.width==1/0)return null!=h?h:0;switch(t){case\"fixed\":return null!=h?h:0;case\"min\":return null!=h?l(i.width,h):0;case\"fit\":return null!=h?l(i.width,h):i.width;case\"max\":return null!=h?a(i.width,h):i.width}})(),height:(()=>{const{height:t}=this.sizing;if(i.height==1/0)return null!=t?t:0;switch(h){case\"fixed\":return null!=t?t:0;case\"min\":return null!=t?l(i.height,t):0;case\"fit\":return null!=t?l(i.height,t):i.height;case\"max\":return null!=t?a(i.height,t):i.height}})()}}}h.LayoutItem=d,d.__name__=\"LayoutItem\";class u extends o{_measure(i){const t=this._content_size(),h=i.bounded_to(this.sizing.size).bounded_to(t);return{width:(()=>{switch(this.sizing.width_policy){case\"fixed\":return null!=this.sizing.width?this.sizing.width:t.width;case\"min\":return t.width;case\"fit\":return h.width;case\"max\":return Math.max(t.width,h.width)}})(),height:(()=>{switch(this.sizing.height_policy){case\"fixed\":return null!=this.sizing.height?this.sizing.height:t.height;case\"min\":return t.height;case\"fit\":return h.height;case\"max\":return Math.max(t.height,h.height)}})()}}}h.ContentLayoutable=u,u.__name__=\"ContentLayoutable\"},\n function _(e,t,s,a,_){a();const r=e(62),n=e(61),g=e(58),i=e(63),c=e(67),h=e(65),l=e(13),o=e(11);class x{constructor(e,t,s,a,_={},r={},n={},g={}){this.in_x_scale=e,this.in_y_scale=t,this.x_range=s,this.y_range=a,this.extra_x_ranges=_,this.extra_y_ranges=r,this.extra_x_scales=n,this.extra_y_scales=g,this._bbox=new h.BBox,(0,o.assert)(null==e.source_range&&null==e.target_range),(0,o.assert)(null==t.source_range&&null==t.target_range),this._configure_scales()}get bbox(){return this._bbox}_get_ranges(e,t){return new Map((0,l.entries)(Object.assign(Object.assign({},t),{default:e})))}_get_scales(e,t,s,a){var _;const g=new Map((0,l.entries)(Object.assign(Object.assign({},t),{default:e}))),h=new Map;for(const[t,l]of s){if(l instanceof c.FactorRange!=e instanceof r.CategoricalScale)throw new Error(`Range ${l.type} is incompatible is Scale ${e.type}`);e instanceof n.LogScale&&l instanceof i.DataRange1d&&(l.scale_hint=\"log\");const s=(null!==(_=g.get(t))&&void 0!==_?_:e).clone();s.setv({source_range:l,target_range:a}),h.set(t,s)}return h}_configure_frame_ranges(){const{bbox:e}=this;this._x_target=new g.Range1d({start:e.left,end:e.right}),this._y_target=new g.Range1d({start:e.bottom,end:e.top})}_configure_scales(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._x_scales=this._get_scales(this.in_x_scale,this.extra_x_scales,this._x_ranges,this._x_target),this._y_scales=this._get_scales(this.in_y_scale,this.extra_y_scales,this._y_ranges,this._y_target)}_update_scales(){this._configure_frame_ranges();for(const[,e]of this._x_scales)e.target_range=this._x_target;for(const[,e]of this._y_scales)e.target_range=this._y_target}set_geometry(e){this._bbox=e,this._update_scales()}get x_target(){return this._x_target}get y_target(){return this._y_target}get x_ranges(){return this._x_ranges}get y_ranges(){return this._y_ranges}get x_scales(){return this._x_scales}get y_scales(){return this._y_scales}get x_scale(){return this._x_scales.get(\"default\")}get y_scale(){return this._y_scales.get(\"default\")}get xscales(){return(0,l.to_object)(this.x_scales)}get yscales(){return(0,l.to_object)(this.y_scales)}}s.CartesianFrame=x,x.__name__=\"CartesianFrame\"},\n function _(i,s,x,A,o){A(),o(\"Axis\",i(128).Axis),o(\"CategoricalAxis\",i(140).CategoricalAxis),o(\"ContinuousAxis\",i(143).ContinuousAxis),o(\"DatetimeAxis\",i(144).DatetimeAxis),o(\"LinearAxis\",i(145).LinearAxis),o(\"LogAxis\",i(162).LogAxis),o(\"MercatorAxis\",i(165).MercatorAxis)},\n function _(t,e,i,s,a){s();const o=t(1);var l;const n=t(129),_=t(130),r=t(131),h=t(132),c=(0,o.__importStar)(t(48)),b=t(20),u=t(24),m=t(123),d=t(9),x=t(13),f=t(8),g=t(120),p=t(67),v=t(133),w=t(113),j=t(11),k=t(8),y=t(134),{abs:z}=Math;class M extends n.GuideRendererView{constructor(){super(...arguments),this._axis_label_view=null,this._major_label_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await this._init_axis_label(),await this._init_major_labels()}async _init_axis_label(){const{axis_label:t}=this.model;if(null!=t){const e=(0,k.isString)(t)?(0,y.parse_delimited_string)(t):t;this._axis_label_view=await(0,w.build_view)(e,{parent:this})}else this._axis_label_view=null}async _init_major_labels(){const{major_label_overrides:t}=this.model;for(const[e,i]of(0,x.entries)(t)){const t=(0,k.isString)(i)?(0,y.parse_delimited_string)(i):i;this._major_label_views.set(e,await(0,w.build_view)(t,{parent:this}))}}update_layout(){this.layout=new m.SideLayout(this.panel,(()=>this.get_size()),!0),this.layout.on_resize((()=>this._coordinates=void 0))}get_size(){const{visible:t,fixed_location:e}=this.model;if(t&&null==e&&this.is_renderable){const{extents:t}=this;return{width:0,height:Math.round(t.tick+t.tick_label+t.axis_label)}}return{width:0,height:0}}get is_renderable(){const[t,e]=this.ranges;return t.is_valid&&e.is_valid}_render(){var t;if(!this.is_renderable)return;const{tick_coords:e,extents:i}=this,s=this.layer.ctx;s.save(),this._draw_rule(s,i),this._draw_major_ticks(s,i,e),this._draw_minor_ticks(s,i,e),this._draw_major_labels(s,i,e),this._draw_axis_label(s,i,e),null===(t=this._paint)||void 0===t||t.call(this,s,i,e),s.restore()}connect_signals(){super.connect_signals();const{axis_label:t,major_label_overrides:e}=this.model.properties;this.on_change(t,(async()=>{var t;null===(t=this._axis_label_view)||void 0===t||t.remove(),await this._init_axis_label()})),this.on_change(e,(async()=>{for(const t of this._major_label_views.values())t.remove();await this._init_major_labels()})),this.connect(this.model.change,(()=>this.plot_view.request_layout()))}get needs_clip(){return null!=this.model.fixed_location}_draw_rule(t,e){if(!this.visuals.axis_line.doit)return;const[i,s]=this.rule_coords,[a,o]=this.coordinates.map_to_screen(i,s),[l,n]=this.normals,[_,r]=this.offsets;this.visuals.axis_line.set_value(t),t.beginPath();for(let e=0;e0?s+i+3:0}_draw_axis_label(t,e,i){if(null==this._axis_label_view||null!=this.model.fixed_location)return;const[s,a]=(()=>{const{bbox:t}=this.layout;switch(this.panel.side){case\"above\":return[t.hcenter,t.bottom];case\"below\":return[t.hcenter,t.top];case\"left\":return[t.right,t.vcenter];case\"right\":return[t.left,t.vcenter]}})(),[o,l]=this.normals,n=e.tick+e.tick_label+this.model.axis_label_standoff,{vertical_align:_,align:r}=this.panel.get_label_text_heuristics(\"parallel\"),h={sx:s+o*n,sy:a+l*n,x_anchor:r,y_anchor:_},c=this._axis_label_view.graphics();c.visuals=this.visuals.axis_label_text.values(),c.angle=this.panel.get_label_angle_heuristic(\"parallel\"),this.plot_view.base_font_size&&(c.base_font_size=this.plot_view.base_font_size),c.position=h,c.align=r,c.paint(t)}_draw_ticks(t,e,i,s,a){if(!a.doit)return;const[o,l]=e,[n,_]=this.coordinates.map_to_screen(o,l),[r,h]=this.normals,[c,b]=this.offsets,[u,m]=[r*(c-i),h*(b-i)],[d,x]=[r*(c+s),h*(b+s)];a.set_value(t),t.beginPath();for(let e=0;et.bbox())),M=(()=>{const[t]=this.ranges;return t.is_reversed?0==this.dimension?(t,e)=>z[t].left-z[e].right:(t,e)=>z[e].top-z[t].bottom:0==this.dimension?(t,e)=>z[e].left-z[t].right:(t,e)=>z[t].top-z[e].bottom})(),{major_label_policy:O}=this.model,T=O.filter(k,z,M),A=[...T.ones()];if(0!=A.length){const t=this.parent.canvas_view.bbox,e=e=>{const i=z[e];if(i.left<0){const t=-i.left,{position:s}=y[e];y[e].position=Object.assign(Object.assign({},s),{sx:s.sx+t})}else if(i.right>t.width){const s=i.right-t.width,{position:a}=y[e];y[e].position=Object.assign(Object.assign({},a),{sx:a.sx-s})}},i=e=>{const i=z[e];if(i.top<0){const t=-i.top,{position:s}=y[e];y[e].position=Object.assign(Object.assign({},s),{sy:s.sy+t})}else if(i.bottom>t.height){const s=i.bottom-t.height,{position:a}=y[e];y[e].position=Object.assign(Object.assign({},a),{sy:a.sy-s})}},s=A[0],a=A[A.length-1];0==this.dimension?(e(s),e(a)):(i(s),i(a))}for(const e of T){y[e].paint(t)}}_tick_extent(){return this.model.major_tick_out}_tick_label_extents(){const t=this.tick_coords.major,e=this.compute_labels(t[this.dimension]),i=this.model.major_label_orientation,s=this.model.major_label_standoff,a=this.visuals.major_label_text;return[this._oriented_labels_extent(e,i,s,a)]}get extents(){const t=this._tick_label_extents();return{tick:this._tick_extent(),tick_labels:t,tick_label:(0,d.sum)(t),axis_label:this._axis_label_extent()}}_oriented_labels_extent(t,e,i,s){if(0==t.length||!s.doit)return 0;const a=this.panel.get_label_angle_heuristic(e);t.visuals=s.values(),t.angle=a,t.base_font_size=this.plot_view.base_font_size;const o=t.max_size(),l=0==this.dimension?o.height:o.width;return l>0?i+l+3:0}get normals(){return this.panel.normals}get dimension(){return this.panel.dimension}compute_labels(t){const e=this.model.formatter.format_graphics(t,this),{_major_label_views:i}=this,s=new Set;for(let a=0;az(l-n)?(t=r(_(a,o),l),s=_(r(a,o),n)):(t=_(a,o),s=r(a,o)),[t,s]}}get rule_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,o=[new Array(2),new Array(2)];return o[t][0]=Math.max(s,i.min),o[t][1]=Math.min(a,i.max),o[t][0]>o[t][1]&&(o[t][0]=o[t][1]=NaN),o[e][0]=this.loc,o[e][1]=this.loc,o}get tick_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,o=this.model.ticker.get_ticks(s,a,i,this.loc),l=o.major,n=o.minor,_=[[],[]],r=[[],[]],[h,c]=[i.min,i.max];for(let i=0;ic||(_[t].push(l[i]),_[e].push(this.loc));for(let i=0;ic||(r[t].push(n[i]),r[e].push(this.loc));return{major:_,minor:r}}get loc(){const{fixed_location:t}=this.model;if(null!=t){if((0,f.isNumber)(t))return t;const[,e]=this.ranges;if(e instanceof p.FactorRange)return e.synthetic(t);(0,j.unreachable)()}const[,e]=this.ranges;switch(this.panel.side){case\"left\":case\"below\":return e.start;case\"right\":case\"above\":return e.end}}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box})}remove(){var t;null===(t=this._axis_label_view)||void 0===t||t.remove();for(const t of this._major_label_views.values())t.remove();super.remove()}has_finished(){if(!super.has_finished())return!1;if(null!=this._axis_label_view&&!this._axis_label_view.has_finished())return!1;for(const t of this._major_label_views.values())if(!t.has_finished())return!1;return!0}}i.AxisView=M,M.__name__=\"AxisView\";class O extends n.GuideRenderer{constructor(t){super(t)}}i.Axis=O,l=O,O.__name__=\"Axis\",l.prototype.default_view=M,l.mixins([[\"axis_\",c.Line],[\"major_tick_\",c.Line],[\"minor_tick_\",c.Line],[\"major_label_\",c.Text],[\"axis_label_\",c.Text]]),l.define((({Any:t,Int:e,Number:i,String:s,Ref:a,Dict:o,Tuple:l,Or:n,Nullable:c,Auto:u})=>({bounds:[n(l(i,i),u),\"auto\"],ticker:[a(_.Ticker)],formatter:[a(r.TickFormatter)],axis_label:[c(n(s,a(v.BaseText))),null],axis_label_standoff:[e,5],major_label_standoff:[e,5],major_label_orientation:[n(b.TickLabelOrientation,i),\"horizontal\"],major_label_overrides:[o(n(s,a(v.BaseText))),{}],major_label_policy:[a(h.LabelingPolicy),()=>new h.AllLabels],major_tick_in:[i,2],major_tick_out:[i,6],minor_tick_in:[i,0],minor_tick_out:[i,4],fixed_location:[c(n(i,t)),null]}))),l.override({axis_line_color:\"black\",major_tick_line_color:\"black\",minor_tick_line_color:\"black\",major_label_text_font_size:\"11px\",major_label_text_align:\"center\",major_label_text_baseline:\"alphabetic\",axis_label_text_font_size:\"13px\",axis_label_text_font_style:\"italic\"})},\n function _(e,r,d,n,i){var s;n();const _=e(41);class u extends _.RendererView{}d.GuideRendererView=u,u.__name__=\"GuideRendererView\";class c extends _.Renderer{constructor(e){super(e)}}d.GuideRenderer=c,s=c,c.__name__=\"GuideRenderer\",s.override({level:\"guide\"})},\n function _(c,e,n,s,o){s();const r=c(53);class t extends r.Model{constructor(c){super(c)}}n.Ticker=t,t.__name__=\"Ticker\"},\n function _(t,o,r,e,c){e();const n=t(53),a=t(120);class m extends n.Model{constructor(t){super(t)}format_graphics(t,o){return this.doFormat(t,o).map((t=>new a.TextBox({text:t})))}compute(t,o){return this.doFormat([t],null!=o?o:{loc:0})[0]}v_compute(t,o){return this.doFormat(t,null!=o?o:{loc:0})}}r.TickFormatter=m,m.__name__=\"TickFormatter\"},\n function _(e,n,s,t,i){var c,r;t();const l=e(53),o=e(13),a=e(34),u=e(8),d=e(24);class _ extends l.Model{constructor(e){super(e)}}s.LabelingPolicy=_,_.__name__=\"LabelingPolicy\";class f extends _{constructor(e){super(e)}filter(e,n,s){return e}}s.AllLabels=f,f.__name__=\"AllLabels\";class m extends _{constructor(e){super(e)}filter(e,n,s){const{min_distance:t}=this;let i=null;for(const n of e)null!=i&&s(i,n)({min_distance:[e,5]})));class b extends _{constructor(e){super(e)}get names(){return(0,o.keys)(this.args)}get values(){return(0,o.values)(this.args)}get func(){const e=(0,a.use_strict)(this.code);return new d.GeneratorFunction(\"indices\",\"bboxes\",\"distance\",...this.names,e)}filter(e,n,s){const t=Object.create(null),i=this.func.call(t,e,n,s,...this.values);let c=i.next();if(c.done&&void 0!==c.value){const{value:n}=c;return n instanceof d.Indices?n:void 0===n?e:(0,u.isIterable)(n)?d.Indices.from_indices(e.size,n):d.Indices.all_unset(e.size)}{const n=[];do{n.push(c.value),c=i.next()}while(!c.done);return d.Indices.from_indices(e.size,n)}}}s.CustomLabelingPolicy=b,r=b,b.__name__=\"CustomLabelingPolicy\",r.define((({Unknown:e,String:n,Dict:s})=>({args:[s(e),{}],code:[n,\"\"]})))},\n function _(e,s,t,n,a){var _;n();const x=e(53),c=e(42);class i extends c.View{}t.BaseTextView=i,i.__name__=\"BaseTextView\";class o extends x.Model{constructor(e){super(e)}}t.BaseText=o,_=o,o.__name__=\"BaseText\",_.define((({String:e})=>({text:[e]})))},\n function _(n,e,t,i,r){i();const s=n(135),l=n(139),d=[{start:\"$$\",end:\"$$\",inline:!1},{start:\"\\\\[\",end:\"\\\\]\",inline:!1},{start:\"\\\\(\",end:\"\\\\)\",inline:!0}];t.parse_delimited_string=function(n){for(const e of d){const t=n.indexOf(e.start),i=t+e.start.length;if(0==t){const t=n.indexOf(e.end,i),r=t;if(t==n.length-e.end.length)return new s.TeX({text:n.slice(i,r),inline:e.inline});break}}return new l.PlainText({text:n})}},\n function _(t,e,s,i,n){var o,r,a;i();const h=t(8),_=t(136),l=t(22),c=t(120),d=t(121),u=t(122),g=t(65),p=t(133),x=t(137);class m extends p.BaseTextView{constructor(){super(...arguments),this._position={sx:0,sy:0},this.align=\"left\",this._x_anchor=\"left\",this._y_anchor=\"center\",this._base_font_size=13,this.font_size_scale=1,this.svg_image=null}graphics(){return this}infer_text_height(){return\"ascent_descent\"}set base_font_size(t){null!=t&&(this._base_font_size=t)}get base_font_size(){return this._base_font_size}get has_image_loaded(){return null!=this.svg_image}_rect(){const{width:t,height:e}=this._size(),{x:s,y:i}=this._computed_position();return new g.BBox({x:s,y:i,width:t,height:e}).rect}set position(t){this._position=t}get position(){return this._position}get text(){return this.model.text}get provider(){return x.default_provider}async lazy_initialize(){await super.lazy_initialize(),\"not_started\"==this.provider.status&&await this.provider.fetch(),\"not_started\"!=this.provider.status&&\"loading\"!=this.provider.status||this.provider.ready.connect((()=>this.load_image())),\"loaded\"==this.provider.status&&await this.load_image()}connect_signals(){super.connect_signals(),this.on_change(this.model.properties.text,(()=>this.load_image()))}set visuals(t){const e=t.color,s=t.alpha,i=t.font_style;let n=t.font_size;const o=t.font,{font_size_scale:r,_base_font_size:a}=this,h=(0,d.parse_css_font_size)(n);if(null!=h){let{value:t,unit:e}=h;t*=r,\"em\"==e&&a&&(t*=a,e=\"px\"),n=`${t}${e}`}const _=`${i} ${n} ${o}`;this.font=_,this.color=(0,l.color2css)(e,s)}_computed_position(){const{width:t,height:e}=this._size(),{sx:s,sy:i,x_anchor:n=this._x_anchor,y_anchor:o=this._y_anchor}=this.position;return{x:s-(()=>{if((0,h.isNumber)(n))return n*t;switch(n){case\"left\":return 0;case\"center\":return.5*t;case\"right\":return t}})(),y:i-(()=>{if((0,h.isNumber)(o))return o*e;switch(o){case\"top\":return 0;case\"center\":return.5*e;case\"bottom\":return e;case\"baseline\":return.5*e}})()}}size(){const{width:t,height:e}=this._size(),{angle:s}=this;if(s){const i=Math.cos(Math.abs(s)),n=Math.sin(Math.abs(s));return{width:Math.abs(t*i+e*n),height:Math.abs(t*n+e*i)}}return{width:t,height:e}}get_text_dimensions(){return{width:(0,c.text_width)(this.model.text,this.font),height:(0,d.font_metrics)(this.font).height}}get_image_dimensions(){var t,e,s,i;const n=parseFloat(null!==(e=null===(t=this.svg_element.getAttribute(\"height\"))||void 0===t?void 0:t.replace(/([A-z])/g,\"\"))&&void 0!==e?e:\"0\"),o=parseFloat(null!==(i=null===(s=this.svg_element.getAttribute(\"width\"))||void 0===s?void 0:s.replace(/([A-z])/g,\"\"))&&void 0!==i?i:\"0\");return{width:(0,d.font_metrics)(this.font).x_height*o,height:(0,d.font_metrics)(this.font).x_height*n}}_size(){return this.has_image_loaded?this.get_image_dimensions():this.get_text_dimensions()}bbox(){const{p0:t,p1:e,p2:s,p3:i}=this.rect(),n=Math.min(t.x,e.x,s.x,i.x),o=Math.min(t.y,e.y,s.y,i.y),r=Math.max(t.x,e.x,s.x,i.x),a=Math.max(t.y,e.y,s.y,i.y);return new g.BBox({left:n,right:r,top:o,bottom:a})}rect(){const t=this._rect(),{angle:e}=this;if(e){const{sx:s,sy:i}=this.position,n=new u.AffineTransform;return n.translate(s,i),n.rotate(e),n.translate(-s,-i),n.apply_rect(t)}return t}paint_rect(t){const{p0:e,p1:s,p2:i,p3:n}=this.rect();t.save(),t.strokeStyle=\"red\",t.lineWidth=1,t.beginPath();const{round:o}=Math;t.moveTo(o(e.x),o(e.y)),t.lineTo(o(s.x),o(s.y)),t.lineTo(o(i.x),o(i.y)),t.lineTo(o(n.x),o(n.y)),t.closePath(),t.stroke(),t.restore()}paint_bbox(t){const{x:e,y:s,width:i,height:n}=this.bbox();t.save(),t.strokeStyle=\"blue\",t.lineWidth=1,t.beginPath();const{round:o}=Math;t.moveTo(o(e),o(s)),t.lineTo(o(e),o(s+n)),t.lineTo(o(e+i),o(s+n)),t.lineTo(o(e+i),o(s)),t.closePath(),t.stroke(),t.restore()}async load_image(){if(null==this.provider.MathJax)return null;const t=this._process_text(this.model.text);if(null==t)return this._has_finished=!0,null;const e=t.children[0];this.svg_element=e,e.setAttribute(\"font\",this.font),e.setAttribute(\"stroke\",this.color);const s=e.outerHTML,i=new Blob([s],{type:\"image/svg+xml\"}),n=URL.createObjectURL(i);try{this.svg_image=await(0,_.load_image)(n)}finally{URL.revokeObjectURL(n)}return this.parent.request_layout(),this.svg_image}paint(t){t.save();const{sx:e,sy:s}=this.position;this.angle&&(t.translate(e,s),t.rotate(this.angle),t.translate(-e,-s));const{x:i,y:n}=this._computed_position();if(null!=this.svg_image){const{width:e,height:s}=this.get_image_dimensions();t.drawImage(this.svg_image,i,n,e,s)}else t.fillStyle=this.color,t.font=this.font,t.textAlign=\"left\",t.textBaseline=\"alphabetic\",t.fillText(this.model.text,i,n+(0,d.font_metrics)(this.font).ascent);t.restore(),this._has_finished||\"failed\"!=this.provider.status&&!this.has_image_loaded||(this._has_finished=!0,this.parent.notify_finished_after_paint())}}s.MathTextView=m,m.__name__=\"MathTextView\";class f extends p.BaseText{constructor(t){super(t)}}s.MathText=f,f.__name__=\"MathText\";class v extends m{_process_text(t){}}s.AsciiView=v,v.__name__=\"AsciiView\";class y extends f{constructor(t){super(t)}}s.Ascii=y,o=y,y.__name__=\"Ascii\",o.prototype.default_view=v;class w extends m{_process_text(t){var e;return null===(e=this.provider.MathJax)||void 0===e?void 0:e.mathml2svg(t.trim())}}s.MathMLView=w,w.__name__=\"MathMLView\";class b extends f{constructor(t){super(t)}}s.MathML=b,r=b,b.__name__=\"MathML\",r.prototype.default_view=w;class M extends m{_process_text(t){var e;return null===(e=this.provider.MathJax)||void 0===e?void 0:e.tex2svg(t,void 0,this.model.macros)}}s.TeXView=M,M.__name__=\"TeXView\";class T extends f{constructor(t){super(t)}}s.TeX=T,a=T,T.__name__=\"TeX\",a.prototype.default_view=M,a.define((({Boolean:t,Number:e,String:s,Dict:i,Tuple:n,Or:o})=>({macros:[i(o(s,n(s,e))),{}],inline:[t,!1]})))},\n function _(i,e,t,s,o){s();const a=i(19);t.load_image=async function(i,e){return new n(i,e).promise};class n{constructor(i,e={}){this._image=new Image,this._finished=!1;const{attempts:t=1,timeout:s=1}=e;this.promise=new Promise(((o,n)=>{this._image.crossOrigin=\"anonymous\";let r=0;this._image.onerror=()=>{if(++r==t){const s=`unable to load ${i} image after ${t} attempts`;if(a.logger.warn(s),null==this._image.crossOrigin)return void(null!=e.failed&&e.failed());a.logger.warn(`attempting to load ${i} without a cross origin policy`),this._image.crossOrigin=null,r=0}setTimeout((()=>this._image.src=i),s)},this._image.onload=()=>{this._finished=!0,null!=e.loaded&&e.loaded(this._image),o(this._image)},this._image.src=i}))}get finished(){return this._finished}get image(){if(this._finished)return this._image;throw new Error(\"not loaded yet\")}}t.ImageLoader=n,n.__name__=\"ImageLoader\"},\n function _(t,e,a,s,n){var r=this&&this.__createBinding||(Object.create?function(t,e,a,s){void 0===s&&(s=a),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[a]}})}:function(t,e,a,s){void 0===s&&(s=a),t[s]=e[a]}),i=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),d=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)\"default\"!==a&&Object.prototype.hasOwnProperty.call(t,a)&&r(e,t,a);return i(e,t),e};s();const o=t(15),u=t(138);class c{constructor(){this.ready=new o.Signal0(this,\"ready\"),this.status=\"not_started\"}}a.MathJaxProvider=c,c.__name__=\"MathJaxProvider\";class h extends c{get MathJax(){return null}async fetch(){this.status=\"failed\"}}a.NoProvider=h,h.__name__=\"NoProvider\";class l extends c{get MathJax(){return\"undefined\"!=typeof MathJax?MathJax:null}async fetch(){const t=document.createElement(\"script\");t.src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js\",t.onload=()=>{this.status=\"loaded\",this.ready.emit()},t.onerror=()=>{this.status=\"failed\"},this.status=\"loading\",document.head.appendChild(t)}}a.CDNProvider=l,l.__name__=\"CDNProvider\";class _ extends c{get MathJax(){return this._mathjax}async fetch(){this.status=\"loading\";try{const e=await(0,u.load_module)(Promise.resolve().then((()=>d(t(519)))));this._mathjax=e,this.status=\"loaded\",this.ready.emit()}catch(t){this.status=\"failed\"}}}a.BundleProvider=_,_.__name__=\"BundleProvider\",a.default_provider=new _},\n function _(n,r,o,t,c){t(),o.load_module=async function(n){try{return await n}catch(n){if((r=n)instanceof Error&&\"code\"in r&&\"MODULE_NOT_FOUND\"===n.code)return null;throw n}var r}},\n function _(e,t,i,n,s){var a;n();const x=e(133),_=e(120);class l extends x.BaseTextView{initialize(){super.initialize(),this._has_finished=!0}graphics(){return new _.TextBox({text:this.model.text})}}i.PlainTextView=l,l.__name__=\"PlainTextView\";class r extends x.BaseText{constructor(e){super(e)}}i.PlainText=r,a=r,r.__name__=\"PlainText\",a.prototype.default_view=l},\n function _(t,s,o,e,i){e();const r=t(1);var a;const l=t(128),_=t(141),n=t(142),p=(0,r.__importStar)(t(48)),c=t(20),h=t(120),m=t(8);class u extends l.AxisView{_paint(t,s,o){this._draw_group_separators(t,s,o)}_draw_group_separators(t,s,o){const[e]=this.ranges,[i,r]=this.computed_bounds;if(!e.tops||e.tops.length<2||!this.visuals.separator_line.doit)return;const a=this.dimension,l=(a+1)%2,_=[[],[]];let n=0;for(let t=0;ti&&pnew h.GraphicsBoxes(t.map((t=>(0,m.isString)(t)?new h.TextBox({text:t}):t))),_=t=>l(this.model.formatter.doFormat(t,this));if(1==t.levels){const t=_(i.major);a.push([t,r.major,this.model.major_label_orientation,this.visuals.major_label_text])}else if(2==t.levels){const t=_(i.major.map((t=>t[1])));a.push([t,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([l(i.tops),r.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){const t=_(i.major.map((t=>t[2]))),s=i.mids.map((t=>t[1]));a.push([t,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([l(s),r.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),a.push([l(i.tops),r.tops,this.model.group_label_orientation,this.visuals.group_text])}return a}get tick_coords(){const t=this.dimension,s=(t+1)%2,[o]=this.ranges,[e,i]=this.computed_bounds,r=this.model.ticker.get_ticks(e,i,o,this.loc),a={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return a.major[t]=r.major,a.major[s]=r.major.map((()=>this.loc)),3==o.levels&&(a.mids[t]=r.mids,a.mids[s]=r.mids.map((()=>this.loc))),o.levels>1&&(a.tops[t]=r.tops,a.tops[s]=r.tops.map((()=>this.loc))),a}}o.CategoricalAxisView=u,u.__name__=\"CategoricalAxisView\";class d extends l.Axis{constructor(t){super(t)}}o.CategoricalAxis=d,a=d,d.__name__=\"CategoricalAxis\",a.prototype.default_view=u,a.mixins([[\"separator_\",p.Line],[\"group_\",p.Text],[\"subgroup_\",p.Text]]),a.define((({Number:t,Or:s})=>({group_label_orientation:[s(c.TickLabelOrientation,t),\"parallel\"],subgroup_label_orientation:[s(c.TickLabelOrientation,t),\"parallel\"]}))),a.override({ticker:()=>new _.CategoricalTicker,formatter:()=>new n.CategoricalTickFormatter,separator_line_color:\"lightgrey\",separator_line_width:2,group_text_font_style:\"bold\",group_text_font_size:\"11px\",group_text_color:\"grey\",subgroup_text_font_style:\"bold\",subgroup_text_font_size:\"11px\"})},\n function _(t,c,o,s,e){s();const r=t(130);class i extends r.Ticker{constructor(t){super(t)}get_ticks(t,c,o,s){var e,r;return{major:this._collect(o.factors,o,t,c),minor:[],tops:this._collect(null!==(e=o.tops)&&void 0!==e?e:[],o,t,c),mids:this._collect(null!==(r=o.mids)&&void 0!==r?r:[],o,t,c)}}_collect(t,c,o,s){const e=[];for(const r of t){const t=c.synthetic(r);t>o&&tnew _.DatetimeTicker,formatter:()=>new m.DatetimeTickFormatter})},\n function _(e,i,s,n,r){var t;n();const a=e(143),o=e(146),c=e(147);class _ extends a.ContinuousAxisView{}s.LinearAxisView=_,_.__name__=\"LinearAxisView\";class u extends a.ContinuousAxis{constructor(e){super(e)}}s.LinearAxis=u,t=u,u.__name__=\"LinearAxis\",t.prototype.default_view=_,t.override({ticker:()=>new c.BasicTicker,formatter:()=>new o.BasicTickFormatter})},\n function _(i,t,e,n,o){var r;n();const s=i(131),c=i(34);function _(i){let t=\"\";for(const e of i)t+=\"-\"==e?\"\\u2212\":e;return t}e.unicode_replace=_;class a extends s.TickFormatter{constructor(i){super(i),this.last_precision=3}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}_need_sci(i){if(!this.use_scientific)return!1;const{scientific_limit_high:t}=this,{scientific_limit_low:e}=this,n=i.length<2?0:Math.abs(i[1]-i[0])/1e4;for(const o of i){const i=Math.abs(o);if(!(i<=n)&&(i>=t||i<=e))return!0}return!1}_format_with_precision(i,t,e){return t?i.map((i=>_(i.toExponential(e)))):i.map((i=>_((0,c.to_fixed)(i,e))))}_auto_precision(i,t){const e=new Array(i.length),n=this.last_precision<=15;i:for(let o=this.last_precision;n?o<=15:o>=1;n?o++:o--){if(t){e[0]=i[0].toExponential(o);for(let t=1;t({precision:[n(t,e),\"auto\"],use_scientific:[i,!0],power_limit_high:[t,5],power_limit_low:[t,-3]})))},\n function _(c,e,s,i,n){i();const r=c(148);class t extends r.AdaptiveTicker{constructor(c){super(c)}}s.BasicTicker=t,t.__name__=\"BasicTicker\"},\n function _(t,i,a,s,e){var n;s();const r=t(149),_=t(9),l=t(10);class h extends r.ContinuousTicker{constructor(t){super(t)}get_min_interval(){return this.min_interval}get_max_interval(){var t;return null!==(t=this.max_interval)&&void 0!==t?t:1/0}initialize(){super.initialize();const t=(0,_.nth)(this.mantissas,-1)/this.base,i=(0,_.nth)(this.mantissas,0)*this.base;this.extended_mantissas=[t,...this.mantissas,i],this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()}get_interval(t,i,a){const s=i-t,e=this.get_ideal_interval(t,i,a),n=Math.floor((0,l.log)(e/this.base_factor,this.base)),r=this.base**n*this.base_factor,h=this.extended_mantissas,m=h.map((t=>Math.abs(a-s/(t*r)))),v=h[(0,_.argmin)(m)]*r;return(0,l.clamp)(v,this.get_min_interval(),this.get_max_interval())}}a.AdaptiveTicker=h,n=h,h.__name__=\"AdaptiveTicker\",n.define((({Number:t,Array:i,Nullable:a})=>({base:[t,10],mantissas:[i(t),[1,2,5]],min_interval:[t,0],max_interval:[a(t),null]})))},\n function _(t,n,i,s,e){var o;s();const r=t(130),c=t(9);class _ extends r.Ticker{constructor(t){super(t)}get_ticks(t,n,i,s){return this.get_ticks_no_defaults(t,n,s,this.desired_num_ticks)}get_ticks_no_defaults(t,n,i,s){const e=this.get_interval(t,n,s),o=Math.floor(t/e),r=Math.ceil(n/e);let _;_=isFinite(o)&&isFinite(r)?(0,c.range)(o,r+1):[];const u=_.map((t=>t*e)).filter((i=>t<=i&&i<=n)),a=this.num_minor_ticks,f=[];if(a>0&&u.length>0){const i=e/a,s=(0,c.range)(0,a).map((t=>t*i));for(const i of s.slice(1)){const s=u[0]-i;t<=s&&s<=n&&f.push(s)}for(const i of u)for(const e of s){const s=i+e;t<=s&&s<=n&&f.push(s)}}return{major:u,minor:f}}get_ideal_interval(t,n,i){return(n-t)/i}}i.ContinuousTicker=_,o=_,_.__name__=\"ContinuousTicker\",o.define((({Int:t})=>({num_minor_ticks:[t,5],desired_num_ticks:[t,6]})))},\n function _(s,t,e,n,i){n();var r;const o=(0,s(1).__importDefault)(s(151)),a=s(131),c=s(19),u=s(152),m=s(9),h=s(8);function d(s){return(0,o.default)(s,\"%Y %m %d %H %M %S\").split(/\\s+/).map((s=>parseInt(s,10)))}function l(s,t){if((0,h.isFunction)(t))return t(s);{const e=(0,u.sprintf)(\"$1%06d\",function(s){return Math.round(s/1e3%1*1e6)}(s));return-1==(t=t.replace(/((^|[^%])(%%)*)%f/,e)).indexOf(\"%\")?t:(0,o.default)(s,t)}}const f=[\"microseconds\",\"milliseconds\",\"seconds\",\"minsec\",\"minutes\",\"hourmin\",\"hours\",\"days\",\"months\",\"years\"];class _ extends a.TickFormatter{constructor(s){super(s),this.strip_leading_zeros=!0}initialize(){super.initialize(),this._update_width_formats()}_update_width_formats(){const s=+(0,o.default)(new Date),t=function(t){const e=t.map((t=>l(s,t).length)),n=(0,m.sort_by)((0,m.zip)(e,t),(([s])=>s));return(0,m.unzip)(n)};this._width_formats={microseconds:t(this.microseconds),milliseconds:t(this.milliseconds),seconds:t(this.seconds),minsec:t(this.minsec),minutes:t(this.minutes),hourmin:t(this.hourmin),hours:t(this.hours),days:t(this.days),months:t(this.months),years:t(this.years)}}_get_resolution_str(s,t){const e=1.1*s;switch(!1){case!(e<.001):return\"microseconds\";case!(e<1):return\"milliseconds\";case!(e<60):return t>=60?\"minsec\":\"seconds\";case!(e<3600):return t>=3600?\"hourmin\":\"minutes\";case!(e<86400):return\"hours\";case!(e<2678400):return\"days\";case!(e<31536e3):return\"months\";default:return\"years\"}}doFormat(s,t){if(0==s.length)return[];const e=Math.abs(s[s.length-1]-s[0])/1e3,n=e/(s.length-1),i=this._get_resolution_str(n,e),[,[r]]=this._width_formats[i],o=[],a=f.indexOf(i),u={};for(const s of f)u[s]=0;u.seconds=5,u.minsec=4,u.minutes=4,u.hourmin=3,u.hours=3;for(const t of s){let s,e;try{e=d(t),s=l(t,r)}catch(s){c.logger.warn(`unable to format tick for timestamp value ${t}`),c.logger.warn(` - ${s}`),o.push(\"ERR\");continue}let n=!1,m=a;for(;0==e[u[f[m]]];){let r;if(m+=1,m==f.length)break;if((\"minsec\"==i||\"hourmin\"==i)&&!n){if(\"minsec\"==i&&0==e[4]&&0!=e[5]||\"hourmin\"==i&&0==e[3]&&0!=e[4]){r=this._width_formats[f[a-1]][1][0],s=l(t,r);break}n=!0}r=this._width_formats[f[m]][1][0],s=l(t,r)}if(this.strip_leading_zeros){let t=s.replace(/^0+/g,\"\");t!=s&&isNaN(parseInt(t))&&(t=`0${t}`),o.push(t)}else o.push(s)}return o}}e.DatetimeTickFormatter=_,r=_,_.__name__=\"DatetimeTickFormatter\",r.define((({String:s,Array:t})=>({microseconds:[t(s),[\"%fus\"]],milliseconds:[t(s),[\"%3Nms\",\"%S.%3Ns\"]],seconds:[t(s),[\"%Ss\"]],minsec:[t(s),[\":%M:%S\"]],minutes:[t(s),[\":%M\",\"%Mm\"]],hourmin:[t(s),[\"%H:%M\"]],hours:[t(s),[\"%Hh\",\"%H:%M\"]],days:[t(s),[\"%m/%d\",\"%a%d\"]],months:[t(s),[\"%m/%Y\",\"%b %Y\"]],years:[t(s),[\"%Y\"]]})))},\n function _(e,t,n,r,o){!function(e){\"object\"==typeof t&&t.exports?t.exports=e():\"function\"==typeof define?define(e):this.tz=e()}((function(){function e(e,t,n){var r,o=t.day[1];do{r=new Date(Date.UTC(n,t.month,Math.abs(o++)))}while(t.day[0]<7&&r.getUTCDay()!=t.day[0]);return(r={clock:t.clock,sort:r.getTime(),rule:t,save:6e4*t.save,offset:e.offset})[r.clock]=r.sort+6e4*t.time,r.posix?r.wallclock=r[r.clock]+(e.offset+t.saved):r.posix=r[r.clock]-(e.offset+t.saved),r}function t(t,n,r){var o,a,u,i,l,s,c,f=t[t.zone],h=[],T=new Date(r).getUTCFullYear(),g=1;for(o=1,a=f.length;o=T-g;--c)for(o=0,a=s.length;o=h[o][n]&&h[o][h[o].clock]>u[h[o].clock]&&(i=h[o])}return i&&((l=/^(.*)\\/(.*)$/.exec(u.format))?i.abbrev=l[i.save?2:1]:i.abbrev=u.format.replace(/%s/,i.rule.letter)),i||u}function n(e,n){return\"UTC\"==e.zone?n:(e.entry=t(e,\"posix\",n),n+e.entry.offset+e.entry.save)}function r(e,n){return\"UTC\"==e.zone?n:(e.entry=r=t(e,\"wallclock\",n),0<(o=n-r.wallclock)&&o9)t+=s*l[c-10];else{if(a=new Date(n(e,t)),c<7)for(;s;)a.setUTCDate(a.getUTCDate()+i),a.getUTCDay()==c&&(s-=i);else 7==c?a.setUTCFullYear(a.getUTCFullYear()+s):8==c?a.setUTCMonth(a.getUTCMonth()+s):a.setUTCDate(a.getUTCDate()+s);null==(t=r(e,a.getTime()))&&(t=r(e,a.getTime()+864e5*i)-864e5*i)}return t}var a={clock:function(){return+new Date},zone:\"UTC\",entry:{abbrev:\"UTC\",offset:0,save:0},UTC:1,z:function(e,t,n,r){var o,a,u=this.entry.offset+this.entry.save,i=Math.abs(u/1e3),l=[],s=3600;for(o=0;o<3;o++)l.push((\"0\"+Math.floor(i/s)).slice(-2)),i%=s,s/=60;return\"^\"!=n||u?(\"^\"==n&&(r=3),3==r?(a=(a=l.join(\":\")).replace(/:00$/,\"\"),\"^\"!=n&&(a=a.replace(/:00$/,\"\"))):r?(a=l.slice(0,r+1).join(\":\"),\"^\"==n&&(a=a.replace(/:00$/,\"\"))):a=l.slice(0,2).join(\"\"),a=(a=(u<0?\"-\":\"+\")+a).replace(/([-+])(0)/,{_:\" $1\",\"-\":\"$1\"}[n]||\"$1$2\")):\"Z\"},\"%\":function(e){return\"%\"},n:function(e){return\"\\n\"},t:function(e){return\"\\t\"},U:function(e){return s(e,0)},W:function(e){return s(e,1)},V:function(e){return c(e)[0]},G:function(e){return c(e)[1]},g:function(e){return c(e)[1]%100},j:function(e){return Math.floor((e.getTime()-Date.UTC(e.getUTCFullYear(),0))/864e5)+1},s:function(e){return Math.floor(e.getTime()/1e3)},C:function(e){return Math.floor(e.getUTCFullYear()/100)},N:function(e){return e.getTime()%1e3*1e6},m:function(e){return e.getUTCMonth()+1},Y:function(e){return e.getUTCFullYear()},y:function(e){return e.getUTCFullYear()%100},H:function(e){return e.getUTCHours()},M:function(e){return e.getUTCMinutes()},S:function(e){return e.getUTCSeconds()},e:function(e){return e.getUTCDate()},d:function(e){return e.getUTCDate()},u:function(e){return e.getUTCDay()||7},w:function(e){return e.getUTCDay()},l:function(e){return e.getUTCHours()%12||12},I:function(e){return e.getUTCHours()%12||12},k:function(e){return e.getUTCHours()},Z:function(e){return this.entry.abbrev},a:function(e){return this[this.locale].day.abbrev[e.getUTCDay()]},A:function(e){return this[this.locale].day.full[e.getUTCDay()]},h:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},b:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},B:function(e){return this[this.locale].month.full[e.getUTCMonth()]},P:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)].toLowerCase()},p:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)]},R:function(e,t){return this.convert([t,\"%H:%M\"])},T:function(e,t){return this.convert([t,\"%H:%M:%S\"])},D:function(e,t){return this.convert([t,\"%m/%d/%y\"])},F:function(e,t){return this.convert([t,\"%Y-%m-%d\"])},x:function(e,t){return this.convert([t,this[this.locale].date])},r:function(e,t){return this.convert([t,this[this.locale].time12||\"%I:%M:%S\"])},X:function(e,t){return this.convert([t,this[this.locale].time24])},c:function(e,t){return this.convert([t,this[this.locale].dateTime])},convert:function(e){if(!e.length)return\"1.0.23\";var t,a,u,l,s,c=Object.create(this),f=[];for(t=0;t=o?Math.floor((n-o)/7)+1:0}function c(e){var t,n,r;return n=e.getUTCFullYear(),t=new Date(Date.UTC(n,0)).getUTCDay(),(r=s(e,1)+(t>1&&t<=4?1:0))?53!=r||4==t||3==t&&29==new Date(n,1,29).getDate()?[r,e.getUTCFullYear()]:[1,e.getUTCFullYear()+1]:(n=e.getUTCFullYear()-1,[r=4==(t=new Date(Date.UTC(n,0)).getUTCDay())||3==t&&29==new Date(n,1,29).getDate()?53:52,e.getUTCFullYear()-1])}return u=u.toLowerCase().split(\"|\"),\"delmHMSUWVgCIky\".replace(/./g,(function(e){a[e].pad=2})),a.N.pad=9,a.j.pad=3,a.k.style=\"_\",a.l.style=\"_\",a.e.style=\"_\",function(){return a.convert(arguments)}}))},\n function _(r,t,n,e,i){e();const u=r(1),a=(0,u.__importStar)(r(153)),f=r(154),o=(0,u.__importDefault)(r(151)),l=r(21),s=r(8);function c(r,...t){return(0,f.sprintf)(r,...t)}function m(r,t,n){if((0,s.isNumber)(r)){return c((()=>{switch(!1){case Math.floor(r)!=r:return\"%d\";case!(Math.abs(r)>.1&&Math.abs(r)<1e3):return\"%0.3f\";default:return\"%0.3e\"}})(),r)}return`${r}`}function _(r,t,e){if(null==t)return m;if(null!=e&&r in e){const t=e[r];if((0,s.isString)(t)){if(t in n.DEFAULT_FORMATTERS)return n.DEFAULT_FORMATTERS[t];throw new Error(`Unknown tooltip field formatter type '${t}'`)}return function(r,n,e){return t.format(r,n,e)}}return n.DEFAULT_FORMATTERS.numeral}function p(r,t,n){const e=t.get_column(r);if(null==e)return null;if((0,s.isNumber)(n))return e[n];const i=e[n.index];if((0,s.isTypedArray)(i)||(0,s.isArray)(i)){if((0,s.isArray)(i[0])){return i[n.dim2][n.dim1]}return i[n.flat_index]}return i}function d(r,t,n,e){if(\"$\"==r[0]){return function(r,t){if(r in t)return t[r];throw new Error(`Unknown special variable '$${r}'`)}(r.substring(1),e)}return p(r.substring(1).replace(/[{}]/g,\"\"),t,n)}n.FormatterType=(0,l.Enum)(\"numeral\",\"printf\",\"datetime\"),n.DEFAULT_FORMATTERS={numeral:(r,t,n)=>a.format(r,t),datetime:(r,t,n)=>(0,o.default)(r,t),printf:(r,t,n)=>c(t,r)},n.sprintf=c,n.basic_formatter=m,n.get_formatter=_,n._get_column_value=p,n.get_value=d,n.replace_placeholders=function(r,t,n,e,i={},u){let a,f;if((0,s.isString)(r)?(a=r,f=!1):(a=r.html,f=!0),a=a.replace(/@\\$name/g,(r=>`@{${i.name}}`)),a=a.replace(/((?:\\$\\w+)|(?:@\\w+)|(?:@{(?:[^{}]+)}))(?:{([^{}]+)})?/g,((r,a,o)=>{const l=d(a,t,n,i);if(null==l)return u?u(\"???\"):\"???\";if(\"safe\"==o)return f=!0,`${l}`;const s=`${_(a,o,e)(l,o,i)}`;return u?u(s):s})),f){return[...(new DOMParser).parseFromString(a,\"text/html\").body.childNodes]}return a}},\n function _(e,n,t,r,i){\n /*!\n * numbro.js\n * version : 1.6.2\n * author : Företagsplatsen AB\n * license : MIT\n * http://www.foretagsplatsen.se\n */\n var a,o={},l=o,u=\"en-US\",c=null,s=\"0,0\";void 0!==n&&n.exports;function f(e){this._value=e}function d(e){var n,t=\"\";for(n=0;n-1?function(e,n){var t,r,i,a;return t=(a=e.toString()).split(\"e\")[0],i=a.split(\"e\")[1],a=t.split(\".\")[0]+(r=t.split(\".\")[1]||\"\")+d(i-r.length),n>0&&(a+=\".\"+d(n)),a}(e,n):(t(e*o)/o).toFixed(n),r&&(i=new RegExp(\"0{1,\"+r+\"}$\"),a=a.replace(i,\"\")),a}function p(e,n,t){var r;return r=n.indexOf(\"$\")>-1?function(e,n,t){var r,i,a=n,l=a.indexOf(\"$\"),c=a.indexOf(\"(\"),s=a.indexOf(\"+\"),f=a.indexOf(\"-\"),d=\"\",h=\"\";-1===a.indexOf(\"$\")?\"infix\"===o[u].currency.position?(h=o[u].currency.symbol,o[u].currency.spaceSeparated&&(h=\" \"+h+\" \")):o[u].currency.spaceSeparated&&(d=\" \"):a.indexOf(\" $\")>-1?(d=\" \",a=a.replace(\" $\",\"\")):a.indexOf(\"$ \")>-1?(d=\" \",a=a.replace(\"$ \",\"\")):a=a.replace(\"$\",\"\");if(i=m(e,a,t,h),-1===n.indexOf(\"$\"))switch(o[u].currency.position){case\"postfix\":i.indexOf(\")\")>-1?((i=i.split(\"\")).splice(-1,0,d+o[u].currency.symbol),i=i.join(\"\")):i=i+d+o[u].currency.symbol;break;case\"infix\":break;case\"prefix\":i.indexOf(\"(\")>-1||i.indexOf(\"-\")>-1?(i=i.split(\"\"),r=Math.max(c,f)+1,i.splice(r,0,o[u].currency.symbol+d),i=i.join(\"\")):i=o[u].currency.symbol+d+i;break;default:throw Error('Currency position should be among [\"prefix\", \"infix\", \"postfix\"]')}else l<=1?i.indexOf(\"(\")>-1||i.indexOf(\"+\")>-1||i.indexOf(\"-\")>-1?(r=1,(l-1?((i=i.split(\"\")).splice(-1,0,d+o[u].currency.symbol),i=i.join(\"\")):i=i+d+o[u].currency.symbol;return i}(e,n,t):n.indexOf(\"%\")>-1?function(e,n,t){var r,i=\"\";e*=100,n.indexOf(\" %\")>-1?(i=\" \",n=n.replace(\" %\",\"\")):n=n.replace(\"%\",\"\");(r=m(e,n,t)).indexOf(\")\")>-1?((r=r.split(\"\")).splice(-1,0,i+\"%\"),r=r.join(\"\")):r=r+i+\"%\";return r}(e,n,t):n.indexOf(\":\")>-1?function(e){var n=Math.floor(e/60/60),t=Math.floor((e-60*n*60)/60),r=Math.round(e-60*n*60-60*t);return n+\":\"+(t<10?\"0\"+t:t)+\":\"+(r<10?\"0\"+r:r)}(e):m(e,n,t),r}function m(e,n,t,r){var i,a,l,s,f,d,p,m,x,g,O,b,w,y,M,v,$,B=!1,E=!1,F=!1,k=\"\",U=!1,N=!1,S=!1,j=!1,D=!1,C=\"\",L=\"\",T=Math.abs(e),K=[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"],G=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"],I=\"\",P=!1,R=!1;if(0===e&&null!==c)return c;if(!isFinite(e))return\"\"+e;if(0===n.indexOf(\"{\")){var W=n.indexOf(\"}\");if(-1===W)throw Error('Format should also contain a \"}\"');b=n.slice(1,W),n=n.slice(W+1)}else b=\"\";if(n.indexOf(\"}\")===n.length-1){var Y=n.indexOf(\"{\");if(-1===Y)throw Error('Format should also contain a \"{\"');w=n.slice(Y+1,-1),n=n.slice(0,Y+1)}else w=\"\";if(v=null===($=-1===n.indexOf(\".\")?n.match(/([0-9]+).*/):n.match(/([0-9]+)\\..*/))?-1:$[1].length,-1!==n.indexOf(\"-\")&&(P=!0),n.indexOf(\"(\")>-1?(B=!0,n=n.slice(1,-1)):n.indexOf(\"+\")>-1&&(E=!0,n=n.replace(/\\+/g,\"\")),n.indexOf(\"a\")>-1){if(g=n.split(\".\")[0].match(/[0-9]+/g)||[\"0\"],g=parseInt(g[0],10),U=n.indexOf(\"aK\")>=0,N=n.indexOf(\"aM\")>=0,S=n.indexOf(\"aB\")>=0,j=n.indexOf(\"aT\")>=0,D=U||N||S||j,n.indexOf(\" a\")>-1?(k=\" \",n=n.replace(\" a\",\"\")):n=n.replace(\"a\",\"\"),p=0===(p=(f=Math.floor(Math.log(T)/Math.LN10)+1)%3)?3:p,g&&0!==T&&(d=Math.floor(Math.log(T)/Math.LN10)+1-g,m=3*~~((Math.min(g,f)-p)/3),T/=Math.pow(10,m),-1===n.indexOf(\".\")&&g>3))for(n+=\"[.]\",M=(M=0===d?0:3*~~(d/3)-d)<0?M+3:M,i=0;i=Math.pow(10,12)&&!D||j?(k+=o[u].abbreviations.trillion,e/=Math.pow(10,12)):T=Math.pow(10,9)&&!D||S?(k+=o[u].abbreviations.billion,e/=Math.pow(10,9)):T=Math.pow(10,6)&&!D||N?(k+=o[u].abbreviations.million,e/=Math.pow(10,6)):(T=Math.pow(10,3)&&!D||U)&&(k+=o[u].abbreviations.thousand,e/=Math.pow(10,3)))}if(n.indexOf(\"b\")>-1)for(n.indexOf(\" b\")>-1?(C=\" \",n=n.replace(\" b\",\"\")):n=n.replace(\"b\",\"\"),s=0;s<=K.length;s++)if(a=Math.pow(1024,s),l=Math.pow(1024,s+1),e>=a&&e0&&(e/=a);break}if(n.indexOf(\"d\")>-1)for(n.indexOf(\" d\")>-1?(C=\" \",n=n.replace(\" d\",\"\")):n=n.replace(\"d\",\"\"),s=0;s<=G.length;s++)if(a=Math.pow(1e3,s),l=Math.pow(1e3,s+1),e>=a&&e0&&(e/=a);break}if(n.indexOf(\"o\")>-1&&(n.indexOf(\" o\")>-1?(L=\" \",n=n.replace(\" o\",\"\")):n=n.replace(\"o\",\"\"),o[u].ordinal&&(L+=o[u].ordinal(e))),n.indexOf(\"[.]\")>-1&&(F=!0,n=n.replace(\"[.]\",\".\")),x=e.toString().split(\".\")[0],O=n.split(\".\")[1],y=n.indexOf(\",\"),O){if(x=(I=-1!==O.indexOf(\"*\")?h(e,e.toString().split(\".\")[1].length,t):O.indexOf(\"[\")>-1?h(e,(O=(O=O.replace(\"]\",\"\")).split(\"[\"))[0].length+O[1].length,t,O[1].length):h(e,O.length,t)).split(\".\")[0],I.split(\".\")[1].length)I=(r?k+r:o[u].delimiters.decimal)+I.split(\".\")[1];else I=\"\";F&&0===Number(I.slice(1))&&(I=\"\")}else x=h(e,null,t);return x.indexOf(\"-\")>-1&&(x=x.slice(1),R=!0),x.length-1&&(x=x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+o[u].delimiters.thousands)),0===n.indexOf(\".\")&&(x=\"\"),b+(n.indexOf(\"(\")2)&&(o.length<2?!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u):1===o[0].length?!!o[0].match(/^\\d+$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/):!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/)))))},n.exports={format:function(e,n,t,r){return null!=t&&t!==a.culture()&&a.setCulture(t),p(Number(e),null!=n?n:s,null==r?Math.round:r)}}},\n function _(e,n,t,r,i){!function(){\"use strict\";var e={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function n(e){return i(a(e),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}function i(t,r){var i,s,a,o,p,c,l,u,f,d=1,g=t.length,y=\"\";for(s=0;s=0),o.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,o.width?parseInt(o.width):0);break;case\"e\":i=o.precision?parseFloat(i).toExponential(o.precision):parseFloat(i).toExponential();break;case\"f\":i=o.precision?parseFloat(i).toFixed(o.precision):parseFloat(i);break;case\"g\":i=o.precision?String(Number(i.toPrecision(o.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=o.precision?i.substring(0,o.precision):i;break;case\"t\":i=String(!!i),i=o.precision?i.substring(0,o.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o.precision?i.substring(0,o.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=o.precision?i.substring(0,o.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}e.json.test(o.type)?y+=i:(!e.number.test(o.type)||u&&!o.sign?f=\"\":(f=u?\"+\":\"-\",i=i.toString().replace(e.sign,\"\")),c=o.pad_char?\"0\"===o.pad_char?\"0\":o.pad_char.charAt(1):\" \",l=o.width-(f+i).length,p=o.width&&l>0?c.repeat(l):\"\",y+=o.align?f+i+p:\"0\"===c?f+p+i:p+f+i)}return y}var s=Object.create(null);function a(n){if(s[n])return s[n];for(var t,r=n,i=[],a=0;r;){if(null!==(t=e.text.exec(r)))i.push(t[0]);else if(null!==(t=e.modulo.exec(r)))i.push(\"%\");else{if(null===(t=e.placeholder.exec(r)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(t[2]){a|=1;var o=[],p=t[2],c=[];if(null===(c=e.key.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(o.push(c[1]);\"\"!==(p=p.substring(c[0].length));)if(null!==(c=e.key_access.exec(p)))o.push(c[1]);else{if(null===(c=e.index_access.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");o.push(c[1])}t[2]=o}else a|=2;if(3===a)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return s[n]=i}void 0!==t&&(t.sprintf=n,t.vsprintf=r),\"undefined\"!=typeof window&&(window.sprintf=n,window.vsprintf=r,\"function\"==typeof define&&define.amd&&define((function(){return{sprintf:n,vsprintf:r}})))}()},\n function _(e,n,i,a,s){var r;a();const t=e(9),c=e(148),m=e(156),_=e(157),k=e(160),o=e(161),T=e(159);class w extends m.CompositeTicker{constructor(e){super(e)}}i.DatetimeTicker=w,r=w,w.__name__=\"DatetimeTicker\",r.override({num_minor_ticks:0,tickers:()=>[new c.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*T.ONE_MILLI,num_minor_ticks:0}),new c.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:T.ONE_SECOND,max_interval:30*T.ONE_MINUTE,num_minor_ticks:0}),new c.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:T.ONE_HOUR,max_interval:12*T.ONE_HOUR,num_minor_ticks:0}),new _.DaysTicker({days:(0,t.range)(1,32)}),new _.DaysTicker({days:(0,t.range)(1,31,3)}),new _.DaysTicker({days:[1,8,15,22]}),new _.DaysTicker({days:[1,15]}),new k.MonthsTicker({months:(0,t.range)(0,12,1)}),new k.MonthsTicker({months:(0,t.range)(0,12,2)}),new k.MonthsTicker({months:(0,t.range)(0,12,4)}),new k.MonthsTicker({months:(0,t.range)(0,12,6)}),new o.YearsTicker({})]})},\n function _(t,e,i,r,s){var n;r();const _=t(149),a=t(9);class l extends _.ContinuousTicker{constructor(t){super(t)}get min_intervals(){return this.tickers.map((t=>t.get_min_interval()))}get max_intervals(){return this.tickers.map((t=>t.get_max_interval()))}get_min_interval(){return this.min_intervals[0]}get_max_interval(){return this.max_intervals[0]}get_best_ticker(t,e,i){const r=e-t,s=this.get_ideal_interval(t,e,i),n=[(0,a.sorted_index)(this.min_intervals,s)-1,(0,a.sorted_index)(this.max_intervals,s)],_=[this.min_intervals[n[0]],this.max_intervals[n[1]]].map((t=>Math.abs(i-r/t)));let l;if((0,a.is_empty)(_.filter((t=>!isNaN(t)))))l=this.tickers[0];else{const t=n[(0,a.argmin)(_)];l=this.tickers[t]}return l}get_interval(t,e,i){return this.get_best_ticker(t,e,i).get_interval(t,e,i)}get_ticks_no_defaults(t,e,i,r){return this.get_best_ticker(t,e,r).get_ticks_no_defaults(t,e,i,r)}}i.CompositeTicker=l,n=l,l.__name__=\"CompositeTicker\",n.define((({Array:t,Ref:e})=>({tickers:[t(e(_.ContinuousTicker)),[]]})))},\n function _(t,e,n,s,o){var a;s();const i=t(158),r=t(159),c=t(9);class _ extends i.SingleIntervalTicker{constructor(t){super(t)}initialize(){super.initialize();const t=this.days;t.length>1?this.interval=(t[1]-t[0])*r.ONE_DAY:this.interval=31*r.ONE_DAY}get_ticks_no_defaults(t,e,n,s){const o=function(t,e){const n=(0,r.last_month_no_later_than)(new Date(t)),s=(0,r.last_month_no_later_than)(new Date(e));s.setUTCMonth(s.getUTCMonth()+1);const o=[],a=n;for(;o.push((0,r.copy_date)(a)),a.setUTCMonth(a.getUTCMonth()+1),!(a>s););return o}(t,e),a=this.days,i=this.interval,_=(0,c.concat)(o.map((t=>((t,e)=>{const n=t.getUTCMonth(),s=[];for(const o of a){const a=(0,r.copy_date)(t);a.setUTCDate(o),new Date(a.getTime()+e/2).getUTCMonth()==n&&s.push(a)}return s})(t,i))));return{major:_.map((t=>t.getTime())).filter((n=>t<=n&&n<=e)),minor:[]}}}n.DaysTicker=_,a=_,_.__name__=\"DaysTicker\",a.define((({Int:t,Array:e})=>({days:[e(t),[]]}))),a.override({num_minor_ticks:0})},\n function _(e,n,t,r,i){var a;r();const l=e(149);class s extends l.ContinuousTicker{constructor(e){super(e)}get_interval(e,n,t){return this.interval}get_min_interval(){return this.interval}get_max_interval(){return this.interval}}t.SingleIntervalTicker=s,a=s,s.__name__=\"SingleIntervalTicker\",a.define((({Number:e})=>({interval:[e]})))},\n function _(t,n,e,_,E){function N(t){return new Date(t.getTime())}function O(t){const n=N(t);return n.setUTCDate(1),n.setUTCHours(0),n.setUTCMinutes(0),n.setUTCSeconds(0),n.setUTCMilliseconds(0),n}_(),e.ONE_MILLI=1,e.ONE_SECOND=1e3,e.ONE_MINUTE=60*e.ONE_SECOND,e.ONE_HOUR=60*e.ONE_MINUTE,e.ONE_DAY=24*e.ONE_HOUR,e.ONE_MONTH=30*e.ONE_DAY,e.ONE_YEAR=365*e.ONE_DAY,e.copy_date=N,e.last_month_no_later_than=O,e.last_year_no_later_than=function(t){const n=O(t);return n.setUTCMonth(0),n}},\n function _(t,e,n,a,r){var s;a();const i=t(158),o=t(159),l=t(9);class _ extends i.SingleIntervalTicker{constructor(t){super(t)}initialize(){super.initialize();const t=this.months;t.length>1?this.interval=(t[1]-t[0])*o.ONE_MONTH:this.interval=12*o.ONE_MONTH}get_ticks_no_defaults(t,e,n,a){const r=function(t,e){const n=(0,o.last_year_no_later_than)(new Date(t)),a=(0,o.last_year_no_later_than)(new Date(e));a.setUTCFullYear(a.getUTCFullYear()+1);const r=[],s=n;for(;r.push((0,o.copy_date)(s)),s.setUTCFullYear(s.getUTCFullYear()+1),!(s>a););return r}(t,e),s=this.months;return{major:(0,l.concat)(r.map((t=>s.map((e=>{const n=(0,o.copy_date)(t);return n.setUTCMonth(e),n}))))).map((t=>t.getTime())).filter((n=>t<=n&&n<=e)),minor:[]}}}n.MonthsTicker=_,s=_,_.__name__=\"MonthsTicker\",s.define((({Int:t,Array:e})=>({months:[e(t),[]]})))},\n function _(e,t,a,i,r){i();const n=e(147),_=e(158),s=e(159);class c extends _.SingleIntervalTicker{constructor(e){super(e)}initialize(){super.initialize(),this.interval=s.ONE_YEAR,this.basic_ticker=new n.BasicTicker({num_minor_ticks:0})}get_ticks_no_defaults(e,t,a,i){const r=(0,s.last_year_no_later_than)(new Date(e)).getUTCFullYear(),n=(0,s.last_year_no_later_than)(new Date(t)).getUTCFullYear();return{major:this.basic_ticker.get_ticks_no_defaults(r,n,a,i).major.map((e=>Date.UTC(e,0,1))).filter((a=>e<=a&&a<=t)),minor:[]}}}a.YearsTicker=c,c.__name__=\"YearsTicker\"},\n function _(e,o,i,s,t){var n;s();const r=e(143),_=e(163),c=e(164);class a extends r.ContinuousAxisView{}i.LogAxisView=a,a.__name__=\"LogAxisView\";class u extends r.ContinuousAxis{constructor(e){super(e)}}i.LogAxis=u,n=u,u.__name__=\"LogAxis\",n.prototype.default_view=a,n.override({ticker:()=>new c.LogTicker,formatter:()=>new _.LogTickFormatter})},\n function _(e,t,n,o,r){var i;o();const a=e(131),s=e(146),c=e(164),l=e(120),{abs:u,log:x,round:_}=Math;class p extends a.TickFormatter{constructor(e){super(e)}initialize(){super.initialize(),this.basic_formatter=new s.BasicTickFormatter}format_graphics(e,t){var n,o;if(0==e.length)return[];const r=null!==(o=null===(n=this.ticker)||void 0===n?void 0:n.base)&&void 0!==o?o:10,i=this._exponents(e,r);return null==i?this.basic_formatter.format_graphics(e,t):i.map((e=>{if(u(e)u(e)({ticker:[n(t(c.LogTicker)),null],min_exponent:[e,0]})))},\n function _(t,o,e,s,n){var r;s();const i=t(148),a=t(9);class c extends i.AdaptiveTicker{constructor(t){super(t)}get_ticks_no_defaults(t,o,e,s){const n=this.num_minor_ticks,r=[],i=this.base,c=Math.log(t)/Math.log(i),f=Math.log(o)/Math.log(i),l=f-c;let h;if(isFinite(l))if(l<2){const e=this.get_interval(t,o,s),i=Math.floor(t/e),c=Math.ceil(o/e);if(h=(0,a.range)(i,c+1).filter((t=>0!=t)).map((t=>t*e)).filter((e=>t<=e&&e<=o)),n>0&&h.length>0){const t=e/n,o=(0,a.range)(0,n).map((o=>o*t));for(const t of o.slice(1))r.push(h[0]-t);for(const t of h)for(const e of o)r.push(t+e)}}else{const t=Math.ceil(.999999*c),o=Math.floor(1.000001*f),e=Math.ceil((o-t)/9);if(h=(0,a.range)(t-1,o+1,e).map((t=>i**t)),n>0&&h.length>0){const t=i**e/n,o=(0,a.range)(1,n+1).map((o=>o*t));for(const t of o)r.push(h[0]/t);r.push(h[0]);for(const t of h)for(const e of o)r.push(t*e)}}else h=[];return{major:h.filter((e=>t<=e&&e<=o)),minor:r.filter((e=>t<=e&&e<=o))}}}e.LogTicker=c,r=c,c.__name__=\"LogTicker\",r.override({mantissas:[1,5]})},\n function _(e,r,t,i,a){var o;i();const s=e(128),c=e(145),n=e(166),_=e(167);class x extends s.AxisView{}t.MercatorAxisView=x,x.__name__=\"MercatorAxisView\";class d extends c.LinearAxis{constructor(e){super(e)}}t.MercatorAxis=d,o=d,d.__name__=\"MercatorAxis\",o.prototype.default_view=x,o.override({ticker:()=>new _.MercatorTicker({dimension:\"lat\"}),formatter:()=>new n.MercatorTickFormatter({dimension:\"lat\"})})},\n function _(r,t,e,o,n){var i;o();const c=r(146),s=r(20),a=r(78);class l extends c.BasicTickFormatter{constructor(r){super(r)}doFormat(r,t){if(null==this.dimension)throw new Error(\"MercatorTickFormatter.dimension not configured\");if(0==r.length)return[];const e=r.length,o=new Array(e);if(\"lon\"==this.dimension)for(let n=0;n({dimension:[r(s.LatLon),null]})))},\n function _(t,o,n,s,r){var e;s();const i=t(147),c=t(20),_=t(78);class a extends i.BasicTicker{constructor(t){super(t)}get_ticks_no_defaults(t,o,n,s){if(null==this.dimension)throw new Error(`${this}.dimension wasn't configured`);return[t,o]=(0,_.clip_mercator)(t,o,this.dimension),\"lon\"==this.dimension?this._get_ticks_lon(t,o,n,s):this._get_ticks_lat(t,o,n,s)}_get_ticks_lon(t,o,n,s){const[r]=_.wgs84_mercator.invert(t,n),[e,i]=_.wgs84_mercator.invert(o,n),c=super.get_ticks_no_defaults(r,e,n,s),a=[];for(const t of c.major)if((0,_.in_bounds)(t,\"lon\")){const[o]=_.wgs84_mercator.compute(t,i);a.push(o)}const m=[];for(const t of c.minor)if((0,_.in_bounds)(t,\"lon\")){const[o]=_.wgs84_mercator.compute(t,i);m.push(o)}return{major:a,minor:m}}_get_ticks_lat(t,o,n,s){const[,r]=_.wgs84_mercator.invert(n,t),[e,i]=_.wgs84_mercator.invert(n,o),c=super.get_ticks_no_defaults(r,i,n,s),a=[];for(const t of c.major)if((0,_.in_bounds)(t,\"lat\")){const[,o]=_.wgs84_mercator.compute(e,t);a.push(o)}const m=[];for(const t of c.minor)if((0,_.in_bounds)(t,\"lat\")){const[,o]=_.wgs84_mercator.compute(e,t);m.push(o)}return{major:a,minor:m}}}n.MercatorTicker=a,e=a,a.__name__=\"MercatorTicker\",e.define((({Nullable:t})=>({dimension:[t(c.LatLon),null]})))},\n function _(e,i,r,c,k){c(),k(\"AdaptiveTicker\",e(148).AdaptiveTicker),k(\"BasicTicker\",e(147).BasicTicker),k(\"CategoricalTicker\",e(141).CategoricalTicker),k(\"CompositeTicker\",e(156).CompositeTicker),k(\"ContinuousTicker\",e(149).ContinuousTicker),k(\"DatetimeTicker\",e(155).DatetimeTicker),k(\"DaysTicker\",e(157).DaysTicker),k(\"FixedTicker\",e(169).FixedTicker),k(\"LogTicker\",e(164).LogTicker),k(\"MercatorTicker\",e(167).MercatorTicker),k(\"MonthsTicker\",e(160).MonthsTicker),k(\"SingleIntervalTicker\",e(158).SingleIntervalTicker),k(\"Ticker\",e(130).Ticker),k(\"YearsTicker\",e(161).YearsTicker),k(\"BinnedTicker\",e(170).BinnedTicker)},\n function _(r,t,e,i,n){var s;i();const _=r(149);class c extends _.ContinuousTicker{constructor(r){super(r)}get_ticks_no_defaults(r,t,e,i){return{major:this.ticks,minor:this.minor_ticks}}get_interval(r,t,e){return 0}get_min_interval(){return 0}get_max_interval(){return 0}}e.FixedTicker=c,s=c,c.__name__=\"FixedTicker\",s.define((({Number:r,Array:t})=>({ticks:[t(r),[]],minor_ticks:[t(r),[]]})))},\n function _(e,n,t,r,i){var o;r();const a=e(130),s=e(171),c=e(12);class m extends a.Ticker{constructor(e){super(e)}get_ticks(e,n,t,r){const{binning:i}=this.mapper.metrics,o=Math.max(0,(0,c.left_edge_index)(e,i)),a=Math.min((0,c.left_edge_index)(n,i)+1,i.length-1),s=[];for(let e=o;e<=a;e++)s.push(i[e]);const{num_major_ticks:m}=this,_=[],h=\"auto\"==m?s.length:m,l=Math.max(1,Math.floor(s.length/h));for(let e=0;e({mapper:[n(s.ScanningColorMapper)],num_major_ticks:[t(e,r),8]})))},\n function _(n,e,i,r,o){r();const t=n(172),a=n(12);class c extends t.ContinuousColorMapper{constructor(n){super(n)}cmap(n,e,i,r,o){if(no.binning[o.binning.length-1])return r;return e[(0,a.left_edge_index)(n,o.binning)]}}i.ScanningColorMapper=c,c.__name__=\"ScanningColorMapper\"},\n function _(t,e,o,n,s){var l;n();const c=t(173),i=t(175),a=t(9),h=t(8);class r extends c.ColorMapper{constructor(t){super(t),this._scan_data=null}connect_signals(){super.connect_signals();const t=()=>{for(const[t]of this.domain)this.connect(t.view.change,(()=>this.update_data())),this.connect(t.data_source.selected.change,(()=>this.update_data()))};this.connect(this.properties.domain.change,(()=>t())),t()}update_data(){const{domain:t,palette:e}=this,o=[...this._collect(t)];this._scan_data=this.scan(o,e.length),this.metrics_change.emit(),this.change.emit()}get metrics(){return null==this._scan_data&&this.update_data(),this._scan_data}*_collect(t){for(const[e,o]of t)for(const t of(0,h.isArray)(o)?o:[o]){let o=e.data_source.get_column(t);o=e.view.indices.select(o);const n=e.view.masked,s=e.data_source.selected.indices;let l;if(null!=n&&s.length>0?l=(0,a.intersection)([...n],s):null!=n?l=[...n]:s.length>0&&(l=s),null!=l&&(o=(0,a.map)(l,(t=>o[t]))),o.length>0&&!(0,h.isNumber)(o[0]))for(const t of o)yield*t;else yield*o}}_v_compute(t,e,o,n){const{nan_color:s}=n;let{low_color:l,high_color:c}=n;null==l&&(l=o[0]),null==c&&(c=o[o.length-1]);const{domain:i}=this,h=(0,a.is_empty)(i)?t:[...this._collect(i)];this._scan_data=this.scan(h,o.length),this.metrics_change.emit();for(let n=0,i=t.length;n({high:[a(t),null],low:[a(t),null],high_color:[a(n),null],low_color:[a(n),null],domain:[c(l(o(i.GlyphRenderer),s(e,c(e)))),[]]})))},\n function _(e,r,t,n,o){var a;n();const c=e(174),i=e(15),_=e(24),l=e(22),s=e(27);function p(e){return(0,l.encode_rgba)((0,l.color2rgba)(e))}function u(e){const r=new Uint32Array(e.length);for(let t=0,n=e.length;te))),r}get rgba_mapper(){const e=this,r=u(this.palette),t=this._colors(p);return{v_compute(n){const o=new _.ColorArray(n.length);return e._v_compute(n,o,r,t),new Uint8ClampedArray((0,s.to_big_endian)(o).buffer)}}}_colors(e){return{nan_color:e(this.nan_color)}}}t.ColorMapper=h,a=h,h.__name__=\"ColorMapper\",a.define((({Color:e,Array:r})=>({palette:[r(e)],nan_color:[e,\"gray\"]})))},\n function _(r,e,n,s,o){s();const p=r(56);class t extends p.Transform{constructor(r){super(r)}compute(r){throw new Error(\"mapping single values is not supported\")}}n.Mapper=t,t.__name__=\"Mapper\"},\n function _(e,t,i,s,l){var h;s();const n=e(176),o=e(177),a=e(186),c=e(187),_=e(189),r=e(179),d=e(70),p=e(190),g=e(24),u=e(12),y=e(13),m=e(113),v=e(67),f={fill:{},line:{}},w={fill:{fill_alpha:.3,fill_color:\"grey\"},line:{line_alpha:.3,line_color:\"grey\"}},b={fill:{fill_alpha:.2},line:{}},V={fill:{fill_alpha:.2},line:{}};class x extends n.DataRendererView{get glyph_view(){return this.glyph}async lazy_initialize(){var e;await super.lazy_initialize();const t=this.model.glyph;this.glyph=await this.build_glyph_view(t);const i=\"fill\"in this.glyph.visuals,s=\"line\"in this.glyph.visuals,l=Object.assign({},t.attributes);function h(e){const h=(0,y.clone)(l);return i&&(0,y.extend)(h,e.fill),s&&(0,y.extend)(h,e.line),new t.constructor(h)}function n(e,t){return t instanceof r.Glyph?t:h(\"auto\"==t?e:{fill:{},line:{}})}delete l.id;let{selection_glyph:o,nonselection_glyph:a,hover_glyph:c,muted_glyph:_}=this.model;o=n(f,o),this.selection_glyph=await this.build_glyph_view(o),a=n(b,a),this.nonselection_glyph=await this.build_glyph_view(a),null!=c&&(this.hover_glyph=await this.build_glyph_view(c)),_=n(V,_),this.muted_glyph=await this.build_glyph_view(_);const d=n(w,\"auto\");this.decimated_glyph=await this.build_glyph_view(d),this.selection_glyph.set_base(this.glyph),this.nonselection_glyph.set_base(this.glyph),null===(e=this.hover_glyph)||void 0===e||e.set_base(this.glyph),this.muted_glyph.set_base(this.glyph),this.decimated_glyph.set_base(this.glyph),this.set_data()}async build_glyph_view(e){return(0,m.build_view)(e,{parent:this})}remove(){var e;this.glyph.remove(),this.selection_glyph.remove(),this.nonselection_glyph.remove(),null===(e=this.hover_glyph)||void 0===e||e.remove(),this.muted_glyph.remove(),this.decimated_glyph.remove(),super.remove()}connect_signals(){super.connect_signals();const e=()=>this.request_render(),t=()=>this.update_data();this.connect(this.model.change,e),this.connect(this.glyph.model.change,t),this.connect(this.selection_glyph.model.change,t),this.connect(this.nonselection_glyph.model.change,t),null!=this.hover_glyph&&this.connect(this.hover_glyph.model.change,t),this.connect(this.muted_glyph.model.change,t),this.connect(this.decimated_glyph.model.change,t),this.connect(this.model.data_source.change,t),this.connect(this.model.data_source.streaming,t),this.connect(this.model.data_source.patching,(e=>this.update_data(e))),this.connect(this.model.data_source.selected.change,e),this.connect(this.model.data_source._select,e),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,e),this.connect(this.model.properties.view.change,t),this.connect(this.model.view.properties.indices.change,t),this.connect(this.model.view.properties.masked.change,(()=>this.set_visuals())),this.connect(this.model.properties.visible.change,(()=>this.plot_view.invalidate_dataranges=!0));const{x_ranges:i,y_ranges:s}=this.plot_view.frame;for(const[,e]of i)e instanceof v.FactorRange&&this.connect(e.change,t);for(const[,e]of s)e instanceof v.FactorRange&&this.connect(e.change,t);const{transformchange:l,exprchange:h}=this.model.glyph;this.connect(l,t),this.connect(h,t)}_update_masked_indices(){const e=this.glyph.mask_data();return this.model.view.masked=e,e}update_data(e){this.set_data(e),this.request_render()}set_data(e){const t=this.model.data_source;this.all_indices=this.model.view.indices;const{all_indices:i}=this;this.glyph.set_data(t,i,e),this.set_visuals(),this._update_masked_indices();const{lod_factor:s}=this.plot_model,l=this.all_indices.count;this.decimated=new g.Indices(l);for(let e=0;e!n||n.is_empty()?[]:n.selected_glyph?this.model.view.convert_indices_from_subset(i):n.indices.length>0?n.indices:Object.keys(n.multiline_indices).map((e=>parseInt(e))))()),d=(0,u.filter)(i,(e=>r.has(t[e]))),{lod_threshold:p}=this.plot_model;let g,y,m;if(null!=this.model.document&&this.model.document.interactive_duration()>0&&!e&&null!=p&&t.length>p?(i=[...this.decimated],g=this.decimated_glyph,y=this.decimated_glyph,m=this.selection_glyph):(g=this.model.muted?this.muted_glyph:this.glyph,y=this.nonselection_glyph,m=this.selection_glyph),null!=this.hover_glyph&&d.length){const e=new Set(i);for(const t of d)e.delete(t);i=[...e]}if(h.length){const e={};for(const t of h)e[t]=!0;const l=new Array,n=new Array;if(this.glyph instanceof o.LineView)for(const i of t)null!=e[i]?l.push(i):n.push(i);else for(const s of i)null!=e[t[s]]?l.push(s):n.push(s);y.render(s,n),m.render(s,l),null!=this.hover_glyph&&(this.glyph instanceof o.LineView?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(d)):this.hover_glyph.render(s,d))}else if(this.glyph instanceof o.LineView)this.hover_glyph&&d.length?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(d)):g.render(s,t);else if(this.glyph instanceof a.PatchView||this.glyph instanceof c.HAreaView||this.glyph instanceof _.VAreaView)if(0==n.selected_glyphs.length||null==this.hover_glyph)g.render(s,t);else for(const e of n.selected_glyphs)e==this.glyph.model&&this.hover_glyph.render(s,t);else g.render(s,i),this.hover_glyph&&d.length&&this.hover_glyph.render(s,d);s.restore()}draw_legend(e,t,i,s,l,h,n,o){0!=this.glyph.data_size&&(null==o&&(o=this.model.get_reference_point(h,n)),this.glyph.draw_legend_for_index(e,{x0:t,x1:i,y0:s,y1:l},o))}hit_test(e){if(!this.model.visible)return null;const t=this.glyph.hit_test(e);return null==t?null:this.model.view.convert_selection_from_subset(t)}}i.GlyphRendererView=x,x.__name__=\"GlyphRendererView\";class G extends n.DataRenderer{constructor(e){super(e)}initialize(){super.initialize(),this.view.source!=this.data_source&&(this.view.source=this.data_source,this.view.compute_indices())}get_reference_point(e,t){if(null!=e){const i=this.data_source.get_column(e);if(null!=i)for(const[e,s]of Object.entries(this.view.indices_map))if(i[parseInt(e)]==t)return s}return 0}get_selection_manager(){return this.data_source.selection_manager}}i.GlyphRenderer=G,h=G,G.__name__=\"GlyphRenderer\",h.prototype.default_view=x,h.define((({Boolean:e,Auto:t,Or:i,Ref:s,Null:l,Nullable:h})=>({data_source:[s(d.ColumnarDataSource)],view:[s(p.CDSView),e=>new p.CDSView({source:e.data_source})],glyph:[s(r.Glyph)],hover_glyph:[h(s(r.Glyph)),null],nonselection_glyph:[i(s(r.Glyph),t,l),\"auto\"],selection_glyph:[i(s(r.Glyph),t,l),\"auto\"],muted_glyph:[i(s(r.Glyph),t,l),\"auto\"],muted:[e,!1]})))},\n function _(e,r,t,a,n){var s;a();const c=e(41);class _ extends c.RendererView{get xscale(){return this.coordinates.x_scale}get yscale(){return this.coordinates.y_scale}}t.DataRendererView=_,_.__name__=\"DataRendererView\";class i extends c.Renderer{constructor(e){super(e)}get selection_manager(){return this.get_selection_manager()}}t.DataRenderer=i,s=i,i.__name__=\"DataRenderer\",s.override({level:\"glyph\"})},\n function _(e,t,i,s,n){s();const l=e(1);var _;const r=e(178),o=e(184),a=(0,l.__importStar)(e(48)),h=(0,l.__importStar)(e(185)),c=e(72);class d extends r.XYGlyphView{async lazy_initialize(){await super.lazy_initialize();const{webgl:t}=this.renderer.plot_view.canvas_view;if(null==t?void 0:t.regl_wrapper.has_webgl){const{LineGL:i}=await Promise.resolve().then((()=>(0,l.__importStar)(e(426))));this.glglyph=new i(t.regl_wrapper,this)}}_render(e,t,i){const{sx:s,sy:n}=null!=i?i:this;let l=null;const _=e=>null!=l&&e-l!=1;let r=!0;e.beginPath();for(const i of t){const t=s[i],o=n[i];isFinite(t+o)?r||_(i)?(e.moveTo(t,o),r=!1):e.lineTo(t,o):r=!0,l=i}this.visuals.line.set_value(e),e.stroke()}_hit_point(e){const t=new c.Selection,i={x:e.sx,y:e.sy};let s=9999;const n=Math.max(2,this.line_width.value/2);for(let e=0,l=this.sx.length-1;e({x:[c.XCoordinateSpec,{field:\"x\"}],y:[c.YCoordinateSpec,{field:\"y\"}]})))},\n function _(e,t,s,i,n){i();const r=e(1),a=(0,r.__importStar)(e(18)),o=(0,r.__importStar)(e(65)),_=(0,r.__importStar)(e(45)),l=e(42),c=e(53),h=e(19),d=e(24),u=e(8),f=e(180),p=e(12),g=e(26),y=e(181),x=e(67),v=e(72),{abs:b,ceil:m}=Math;class w extends l.View{constructor(){super(...arguments),this._index=null,this._data_size=null,this._nohit_warned=new Set}get renderer(){return this.parent}get has_webgl(){return null!=this.glglyph}get index(){const{_index:e}=this;if(null!=e)return e;throw new Error(`${this}.index_data() wasn't called`)}get data_size(){const{_data_size:e}=this;if(null!=e)return e;throw new Error(`${this}.set_data() wasn't called`)}initialize(){super.initialize(),this.visuals=new _.Visuals(this)}request_render(){this.parent.request_render()}get canvas(){return this.renderer.parent.canvas_view}render(e,t,s){var i;null!=this.glglyph&&(this.renderer.needs_webgl_blit=this.glglyph.render(e,t,null!==(i=this.base)&&void 0!==i?i:this),this.renderer.needs_webgl_blit)||this._render(e,t,null!=s?s:this.base)}has_finished(){return!0}notify_finished(){this.renderer.notify_finished()}_bounds(e){return e}bounds(){return this._bounds(this.index.bbox)}log_bounds(){const{x0:e,x1:t}=this.index.bounds(o.positive_x()),{y0:s,y1:i}=this.index.bounds(o.positive_y());return this._bounds({x0:e,y0:s,x1:t,y1:i})}get_anchor_point(e,t,[s,i]){switch(e){case\"center\":case\"center_center\":{const[e,n]=this.scenterxy(t,s,i);return{x:e,y:n}}default:return null}}scenterx(e,t,s){return this.scenterxy(e,t,s)[0]}scentery(e,t,s){return this.scenterxy(e,t,s)[1]}sdist(e,t,s,i=\"edge\",n=!1){const r=t.length,a=new d.ScreenArray(r),o=e.s_compute;if(\"center\"==i)for(let e=0;em(e))),a}draw_legend_for_index(e,t,s){}hit_test(e){switch(e.type){case\"point\":if(null!=this._hit_point)return this._hit_point(e);break;case\"span\":if(null!=this._hit_span)return this._hit_span(e);break;case\"rect\":if(null!=this._hit_rect)return this._hit_rect(e);break;case\"poly\":if(null!=this._hit_poly)return this._hit_poly(e)}return this._nohit_warned.has(e.type)||(h.logger.debug(`'${e.type}' selection not available for ${this.model.type}`),this._nohit_warned.add(e.type)),null}_hit_rect_against_index(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,[r,a]=this.renderer.coordinates.x_scale.r_invert(t,s),[o,_]=this.renderer.coordinates.y_scale.r_invert(i,n),l=[...this.index.indices({x0:r,x1:a,y0:o,y1:_})];return new v.Selection({indices:l})}_project_data(){}*_iter_visuals(){for(const e of this.visuals)for(const t of e)(t instanceof a.VectorSpec||t instanceof a.ScalarSpec)&&(yield t)}set_base(e){e!=this&&e instanceof this.constructor&&(this.base=e)}_configure(e,t){Object.defineProperty(this,(0,u.isString)(e)?e:e.attr,Object.assign({configurable:!0,enumerable:!0},t))}set_visuals(e,t){var s;for(const s of this._iter_visuals()){const{base:i}=this;if(null!=i){const e=i.model.properties[s.attr];if(null!=e&&(0,g.is_equal)(s.get_value(),e.get_value())){this._configure(s,{get:()=>i[`${s.attr}`]});continue}}const n=s.uniform(e).select(t);this._configure(s,{value:n})}for(const e of this.visuals)e.update();null===(s=this.glglyph)||void 0===s||s.set_visuals_changed()}set_data(e,t,s){var i;const{x_source:n,y_source:r}=this.renderer.coordinates,o=new Set(this._iter_visuals());this._data_size=t.count;for(const s of this.model)if((s instanceof a.VectorSpec||s instanceof a.ScalarSpec)&&!o.has(s))if(s instanceof a.BaseCoordinateSpec){const i=s.array(e);let o=t.select(i);const _=\"x\"==s.dimension?n:r;if(_ instanceof x.FactorRange)if(s instanceof a.CoordinateSpec)o=_.v_synthetic(o);else if(s instanceof a.CoordinateSeqSpec)for(let e=0;e{const s=new Uint32Array(r);for(let a=0;a>1;t[s]>i?e=s:n=s+1}return t[n]}class r extends d.default{get boxes(){return this._boxes}search_indices(i,t,n,e){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let s=this._boxes.length-4;const d=[],x=new o.Indices(this.numItems);for(;void 0!==s;){const o=Math.min(s+4*this.nodeSize,h(s,this._levelBounds));for(let h=s;h>2],r=this._boxes[h+0],l=this._boxes[h+1],a=this._boxes[h+2],_=this._boxes[h+3];na||t>_||(s<4*this.numItems?x.set(o):d.push(o)))}s=d.pop()}return x}}r.__name__=\"_FlatBush\";class l{constructor(i){this.index=null,i>0&&(this.index=new r(i))}add_rect(i,t,n,e){var s;isFinite(i+t+n+e)?null===(s=this.index)||void 0===s||s.add(i,t,n,e):this.add_empty()}add_point(i,t){var n;isFinite(i+t)?null===(n=this.index)||void 0===n||n.add(i,t,i,t):this.add_empty()}add_empty(){var i;null===(i=this.index)||void 0===i||i.add(1/0,1/0,-1/0,-1/0)}finish(){var i;null===(i=this.index)||void 0===i||i.finish()}_normalize(i){let{x0:t,y0:n,x1:e,y1:s}=i;return t>e&&([t,e]=[e,t]),n>s&&([n,s]=[s,n]),{x0:t,y0:n,x1:e,y1:s}}get bbox(){if(null==this.index)return(0,x.empty)();{const{minX:i,minY:t,maxX:n,maxY:e}=this.index;return{x0:i,y0:t,x1:n,y1:e}}}indices(i){if(null==this.index)return new o.Indices(0);{const{x0:t,y0:n,x1:e,y1:s}=this._normalize(i);return this.index.search_indices(t,n,e,s)}}bounds(i){const t=(0,x.empty)();if(null==this.index)return t;const{boxes:n}=this.index;for(const e of this.indices(i)){const s=n[4*e+0],d=n[4*e+1],o=n[4*e+2],x=n[4*e+3];s>=i.x0&&st.x1&&(t.x1=o),d>=i.y0&&dt.y1&&(t.y1=x)}return t}}n.SpatialIndex=l,l.__name__=\"SpatialIndex\"},\n function _(t,s,i,e,h){e();const n=(0,t(1).__importDefault)(t(183)),o=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class r{static from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[s,i]=new Uint8Array(t,0,2);if(251!==s)throw new Error(\"Data does not appear to be in a Flatbush format.\");if(i>>4!=3)throw new Error(`Got v${i>>4} data when expected v3.`);const[e]=new Uint16Array(t,2,1),[h]=new Uint32Array(t,4,1);return new r(h,e,o[15&i],t)}constructor(t,s=16,i=Float64Array,e){if(void 0===t)throw new Error(\"Missing required argument: numItems.\");if(isNaN(t)||t<=0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+s,2),65535);let h=t,r=h;this._levelBounds=[4*h];do{h=Math.ceil(h/this.nodeSize),r+=h,this._levelBounds.push(4*r)}while(1!==h);this.ArrayType=i||Float64Array,this.IndexArrayType=r<16384?Uint16Array:Uint32Array;const a=o.indexOf(this.ArrayType),_=4*r*this.ArrayType.BYTES_PER_ELEMENT;if(a<0)throw new Error(`Unexpected typed array class: ${i}.`);e&&e instanceof ArrayBuffer?(this.data=e,this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=4*r,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+_+r*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+a]),new Uint16Array(this.data,2,1)[0]=s,new Uint32Array(this.data,4,1)[0]=t),this._queue=new n.default}add(t,s,i,e){const h=this._pos>>2;return this._indices[h]=h,this._boxes[this._pos++]=t,this._boxes[this._pos++]=s,this._boxes[this._pos++]=i,this._boxes[this._pos++]=e,tthis.maxX&&(this.maxX=i),e>this.maxY&&(this.maxY=e),h}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);if(this.numItems<=this.nodeSize)return this._boxes[this._pos++]=this.minX,this._boxes[this._pos++]=this.minY,this._boxes[this._pos++]=this.maxX,void(this._boxes[this._pos++]=this.maxY);const t=this.maxX-this.minX,s=this.maxY-this.minY,i=new Uint32Array(this.numItems);for(let e=0;e>2]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=h,this._boxes[this._pos++]=n,this._boxes[this._pos++]=o}}}search(t,s,i,e,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=[],r=[];for(;void 0!==n;){const a=Math.min(n+4*this.nodeSize,_(n,this._levelBounds));for(let _=n;_>2];ithis._boxes[_+2]||s>this._boxes[_+3]||(n<4*this.numItems?(void 0===h||h(a))&&r.push(a):o.push(a)))}n=o.pop()}return r}neighbors(t,s,i=1/0,e=1/0,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=this._queue,r=[],x=e*e;for(;void 0!==n;){const e=Math.min(n+4*this.nodeSize,_(n,this._levelBounds));for(let i=n;i>2],r=a(t,this._boxes[i],this._boxes[i+2]),_=a(s,this._boxes[i+1],this._boxes[i+3]),x=r*r+_*_;n<4*this.numItems?(void 0===h||h(e))&&o.push(-e-1,x):o.push(e,x)}for(;o.length&&o.peek()<0;){if(o.peekValue()>x)return o.clear(),r;if(r.push(-o.pop()-1),r.length===i)return o.clear(),r}n=o.pop()}return o.clear(),r}}function a(t,s,i){return t>1;s[h]>t?e=h:i=h+1}return s[i]}function x(t,s,i,e,h,n){if(Math.floor(e/n)>=Math.floor(h/n))return;const o=t[e+h>>1];let r=e-1,a=h+1;for(;;){do{r++}while(t[r]o);if(r>=a)break;d(t,s,i,r,a)}x(t,s,i,e,a,n),x(t,s,i,a+1,h,n)}function d(t,s,i,e,h){const n=t[e];t[e]=t[h],t[h]=n;const o=4*e,r=4*h,a=s[o],_=s[o+1],x=s[o+2],d=s[o+3];s[o]=s[r],s[o+1]=s[r+1],s[o+2]=s[r+2],s[o+3]=s[r+3],s[r]=a,s[r+1]=_,s[r+2]=x,s[r+3]=d;const m=i[e];i[e]=i[h],i[h]=m}function m(t,s){let i=t^s,e=65535^i,h=65535^(t|s),n=t&(65535^s),o=i|e>>1,r=i>>1^i,a=h>>1^e&n>>1^h,_=i&h>>1^n>>1^n;i=o,e=r,h=a,n=_,o=i&i>>2^e&e>>2,r=i&e>>2^e&(i^e)>>2,a^=i&h>>2^e&n>>2,_^=e&h>>2^(i^e)&n>>2,i=o,e=r,h=a,n=_,o=i&i>>4^e&e>>4,r=i&e>>4^e&(i^e)>>4,a^=i&h>>4^e&n>>4,_^=e&h>>4^(i^e)&n>>4,i=o,e=r,h=a,n=_,a^=i&h>>8^e&n>>8,_^=e&h>>8^(i^e)&n>>8,i=a^a>>1,e=_^_>>1;let x=t^s,d=e|65535^(x|i);return x=16711935&(x|x<<8),x=252645135&(x|x<<4),x=858993459&(x|x<<2),x=1431655765&(x|x<<1),d=16711935&(d|d<<8),d=252645135&(d|d<<4),d=858993459&(d|d<<2),d=1431655765&(d|d<<1),(d<<1|x)>>>0}i.default=r},\n function _(s,t,i,h,e){h();i.default=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(s,t){let i=this.length++;for(this.ids[i]=s,this.values[i]=t;i>0;){const s=i-1>>1,h=this.values[s];if(t>=h)break;this.ids[i]=this.ids[s],this.values[i]=h,i=s}this.ids[i]=s,this.values[i]=t}pop(){if(0===this.length)return;const s=this.ids[0];if(this.length--,this.length>0){const s=this.ids[0]=this.ids[this.length],t=this.values[0]=this.values[this.length],i=this.length>>1;let h=0;for(;h=t)break;this.ids[h]=e,this.values[h]=l,h=s}this.ids[h]=s,this.values[h]=t}return s}peek(){if(0!==this.length)return this.ids[0]}peekValue(){if(0!==this.length)return this.values[0]}}},\n function _(e,n,a,t,i){t();const l=(0,e(1).__importStar)(e(185));function r(e,n,{x0:a,x1:t,y0:i,y1:l},r){n.save(),n.beginPath(),n.moveTo(a,(i+l)/2),n.lineTo(t,(i+l)/2),e.line.apply(n,r),n.restore()}function c(e,n,{x0:a,x1:t,y0:i,y1:l},r){var c,o;const _=.1*Math.abs(t-a),s=.1*Math.abs(l-i),y=a+_,p=t-_,g=i+s,h=l-s;n.beginPath(),n.rect(y,g,p-y,h-g),e.fill.apply(n,r),null===(c=e.hatch)||void 0===c||c.apply(n,r),null===(o=e.line)||void 0===o||o.apply(n,r)}a.generic_line_scalar_legend=function(e,n,{x0:a,x1:t,y0:i,y1:l}){n.save(),n.beginPath(),n.moveTo(a,(i+l)/2),n.lineTo(t,(i+l)/2),e.line.apply(n),n.restore()},a.generic_line_vector_legend=r,a.generic_line_legend=r,a.generic_area_scalar_legend=function(e,n,{x0:a,x1:t,y0:i,y1:l}){var r,c;const o=.1*Math.abs(t-a),_=.1*Math.abs(l-i),s=a+o,y=t-o,p=i+_,g=l-_;n.beginPath(),n.rect(s,p,y-s,g-p),e.fill.apply(n),null===(r=e.hatch)||void 0===r||r.apply(n),null===(c=e.line)||void 0===c||c.apply(n)},a.generic_area_vector_legend=c,a.generic_area_legend=c,a.line_interpolation=function(e,n,a,t,i,r){const{sx:c,sy:o}=n;let _,s,y,p;\"point\"==n.type?([y,p]=e.yscale.r_invert(o-1,o+1),[_,s]=e.xscale.r_invert(c-1,c+1)):\"v\"==n.direction?([y,p]=e.yscale.r_invert(o,o),[_,s]=[Math.min(a-1,i-1),Math.max(a+1,i+1)]):([_,s]=e.xscale.r_invert(c,c),[y,p]=[Math.min(t-1,r-1),Math.max(t+1,r+1)]);const{x:g,y:h}=l.check_2_segments_intersect(_,y,s,p,a,t,i,r);return[g,h]}},\n function _(t,n,e,i,r){function s(t,n){return(t.x-n.x)**2+(t.y-n.y)**2}function o(t,n,e){const i=s(n,e);if(0==i)return s(t,n);const r=((t.x-n.x)*(e.x-n.x)+(t.y-n.y)*(e.y-n.y))/i;if(r<0)return s(t,n);if(r>1)return s(t,e);return s(t,{x:n.x+r*(e.x-n.x),y:n.y+r*(e.y-n.y)})}i(),e.point_in_poly=function(t,n,e,i){let r=!1,s=e[e.length-1],o=i[i.length-1];for(let u=0;u0&&_<1&&h>0&&h<1,x:t+_*(e-t),y:n+_*(i-n)}}}},\n function _(t,s,e,i,a){i();const l=t(1);var n;const _=t(178),o=t(184),c=(0,l.__importStar)(t(185)),h=(0,l.__importStar)(t(48)),r=t(72);class p extends _.XYGlyphView{_render(t,s,e){const{sx:i,sy:a}=null!=e?e:this;let l=!0;t.beginPath();for(const e of s){const s=i[e],n=a[e];isFinite(s+n)?l?(t.moveTo(s,n),l=!1):t.lineTo(s,n):(t.closePath(),l=!0)}t.closePath(),this.visuals.fill.apply(t),this.visuals.hatch.apply(t),this.visuals.line.apply(t)}draw_legend_for_index(t,s,e){(0,o.generic_area_scalar_legend)(this.visuals,t,s)}_hit_point(t){const s=new r.Selection;return c.point_in_poly(t.sx,t.sy,this.sx,this.sy)&&(s.add_to_selected_glyphs(this.model),s.view=this),s}}e.PatchView=p,p.__name__=\"PatchView\";class d extends _.XYGlyph{constructor(t){super(t)}}e.Patch=d,n=d,d.__name__=\"Patch\",n.prototype.default_view=p,n.mixins([h.LineScalar,h.FillScalar,h.HatchScalar])},\n function _(t,s,e,i,n){i();const h=t(1);var r;const a=t(188),_=(0,h.__importStar)(t(185)),o=(0,h.__importStar)(t(18)),l=t(72);class c extends a.AreaView{_index_data(t){const{min:s,max:e}=Math,{data_size:i}=this;for(let n=0;n=0;s--)t.lineTo(n[s],h[s]);t.closePath(),this.visuals.fill.apply(t),this.visuals.hatch.apply(t)}_hit_point(t){const s=this.sy.length,e=new l.Selection;for(let i=0,n=s-1;i({x1:[o.XCoordinateSpec,{field:\"x1\"}],x2:[o.XCoordinateSpec,{field:\"x2\"}],y:[o.YCoordinateSpec,{field:\"y\"}]})))},\n function _(e,a,r,_,s){_();const n=e(1);var c;const i=e(179),l=e(184),t=(0,n.__importStar)(e(48));class o extends i.GlyphView{draw_legend_for_index(e,a,r){(0,l.generic_area_scalar_legend)(this.visuals,e,a)}}r.AreaView=o,o.__name__=\"AreaView\";class d extends i.Glyph{constructor(e){super(e)}}r.Area=d,c=d,d.__name__=\"Area\",c.mixins([t.FillScalar,t.HatchScalar])},\n function _(t,s,e,i,n){i();const h=t(1);var r;const a=t(188),_=(0,h.__importStar)(t(185)),o=(0,h.__importStar)(t(18)),l=t(72);class c extends a.AreaView{_index_data(t){const{min:s,max:e}=Math,{data_size:i}=this;for(let n=0;n=0;s--)t.lineTo(i[s],h[s]);t.closePath(),this.visuals.fill.apply(t),this.visuals.hatch.apply(t)}scenterxy(t){return[this.sx[t],(this.sy1[t]+this.sy2[t])/2]}_hit_point(t){const s=this.sx.length,e=new l.Selection;for(let i=0,n=s-1;i({x:[o.XCoordinateSpec,{field:\"x\"}],y1:[o.YCoordinateSpec,{field:\"y1\"}],y2:[o.YCoordinateSpec,{field:\"y2\"}]})))},\n function _(e,i,s,t,n){var c;t();const o=e(53),r=e(24),u=e(191),_=e(70);class a extends o.Model{constructor(e){super(e)}initialize(){super.initialize(),this.compute_indices()}connect_signals(){super.connect_signals(),this.connect(this.properties.filters.change,(()=>this.compute_indices()));const e=()=>{const e=()=>this.compute_indices();null!=this.source&&(this.connect(this.source.change,e),this.source instanceof _.ColumnarDataSource&&(this.connect(this.source.streaming,e),this.connect(this.source.patching,e)))};let i=null!=this.source;i?e():this.connect(this.properties.source.change,(()=>{i||(e(),i=!0)}))}compute_indices(){var e;const{source:i}=this;if(null==i)return;const s=null!==(e=i.get_length())&&void 0!==e?e:1,t=r.Indices.all_set(s);for(const e of this.filters)t.intersect(e.compute_indices(i));this.indices=t,this._indices=[...t],this.indices_map_to_subset()}indices_map_to_subset(){this.indices_map={};for(let e=0;ethis._indices[e]))}convert_selection_to_subset(e){return e.map((e=>this.indices_map[e]))}convert_indices_from_subset(e){return e.map((e=>this._indices[e]))}}s.CDSView=a,c=a,a.__name__=\"CDSView\",c.define((({Array:e,Ref:i})=>({filters:[e(i(u.Filter)),[]],source:[i(_.ColumnarDataSource)]}))),c.internal((({Int:e,Dict:i,Ref:s,Nullable:t})=>({indices:[s(r.Indices)],indices_map:[i(e),{}],masked:[t(s(r.Indices)),null]})))},\n function _(e,t,n,s,c){s();const o=e(53);class r extends o.Model{constructor(e){super(e)}}n.Filter=r,r.__name__=\"Filter\"},\n function _(t,r,a,e,c){e(),c(\"BasicTickFormatter\",t(146).BasicTickFormatter),c(\"CategoricalTickFormatter\",t(142).CategoricalTickFormatter),c(\"DatetimeTickFormatter\",t(150).DatetimeTickFormatter),c(\"FuncTickFormatter\",t(193).FuncTickFormatter),c(\"LogTickFormatter\",t(163).LogTickFormatter),c(\"MercatorTickFormatter\",t(166).MercatorTickFormatter),c(\"NumeralTickFormatter\",t(194).NumeralTickFormatter),c(\"PrintfTickFormatter\",t(195).PrintfTickFormatter),c(\"TickFormatter\",t(131).TickFormatter)},\n function _(t,e,n,s,r){var c;s();const i=t(131),a=t(13),u=t(34);class o extends i.TickFormatter{constructor(t){super(t)}get names(){return(0,a.keys)(this.args)}get values(){return(0,a.values)(this.args)}_make_func(){const t=(0,u.use_strict)(this.code);return new Function(\"tick\",\"index\",\"ticks\",...this.names,t)}doFormat(t,e){const n=this._make_func().bind({});return t.map(((t,e,s)=>`${n(t,e,s,...this.values)}`))}}n.FuncTickFormatter=o,c=o,o.__name__=\"FuncTickFormatter\",c.define((({Unknown:t,String:e,Dict:n})=>({args:[n(t),{}],code:[e,\"\"]})))},\n function _(r,n,t,o,e){o();var a;const u=(0,r(1).__importStar)(r(153)),c=r(131),i=r(20);class s extends c.TickFormatter{constructor(r){super(r)}get _rounding_fn(){switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}}doFormat(r,n){const{format:t,language:o,_rounding_fn:e}=this;return r.map((r=>u.format(r,t,o,e)))}}t.NumeralTickFormatter=s,a=s,s.__name__=\"NumeralTickFormatter\",a.define((({String:r})=>({format:[r,\"0,0\"],language:[r,\"en\"],rounding:[i.RoundingFunction,\"round\"]})))},\n function _(t,r,n,o,a){var e;o();const i=t(131),s=t(152);class c extends i.TickFormatter{constructor(t){super(t)}doFormat(t,r){return t.map((t=>(0,s.sprintf)(this.format,t)))}}n.PrintfTickFormatter=c,e=c,c.__name__=\"PrintfTickFormatter\",e.define((({String:t})=>({format:[t,\"%s\"]})))},\n function _(r,o,a,p,e){p(),e(\"CategoricalColorMapper\",r(197).CategoricalColorMapper),e(\"CategoricalMarkerMapper\",r(199).CategoricalMarkerMapper),e(\"CategoricalPatternMapper\",r(200).CategoricalPatternMapper),e(\"ContinuousColorMapper\",r(172).ContinuousColorMapper),e(\"ColorMapper\",r(173).ColorMapper),e(\"LinearColorMapper\",r(201).LinearColorMapper),e(\"LogColorMapper\",r(202).LogColorMapper),e(\"ScanningColorMapper\",r(171).ScanningColorMapper),e(\"EqHistColorMapper\",r(203).EqHistColorMapper)},\n function _(t,o,r,a,e){var c;a();const s=t(198),l=t(173),n=t(67);class _ extends l.ColorMapper{constructor(t){super(t)}_v_compute(t,o,r,{nan_color:a}){(0,s.cat_v_compute)(t,this.factors,r,o,this.start,this.end,a)}}r.CategoricalColorMapper=_,c=_,_.__name__=\"CategoricalColorMapper\",c.define((({Number:t,Nullable:o})=>({factors:[n.FactorSeq],start:[t,0],end:[o(t),null]})))},\n function _(n,t,e,l,i){l();const c=n(12),u=n(8);function f(n,t){if(n.length!=t.length)return!1;for(let e=0,l=n.length;ef(n,h)))),s=_<0||_>=e.length?r:e[_],l[g]=s}}},\n function _(e,r,a,t,s){var c;t();const l=e(198),n=e(67),u=e(174),o=e(20);class p extends u.Mapper{constructor(e){super(e)}v_compute(e){const r=new Array(e.length);return(0,l.cat_v_compute)(e,this.factors,this.markers,r,this.start,this.end,this.default_value),r}}a.CategoricalMarkerMapper=p,c=p,p.__name__=\"CategoricalMarkerMapper\",c.define((({Number:e,Array:r,Nullable:a})=>({factors:[n.FactorSeq],markers:[r(o.MarkerType)],start:[e,0],end:[a(e),null],default_value:[o.MarkerType,\"circle\"]})))},\n function _(t,e,a,r,n){var s;r();const c=t(198),l=t(67),p=t(174),u=t(20);class o extends p.Mapper{constructor(t){super(t)}v_compute(t){const e=new Array(t.length);return(0,c.cat_v_compute)(t,this.factors,this.patterns,e,this.start,this.end,this.default_value),e}}a.CategoricalPatternMapper=o,s=o,o.__name__=\"CategoricalPatternMapper\",s.define((({Number:t,Array:e,Nullable:a})=>({factors:[l.FactorSeq],patterns:[e(u.HatchPatternType)],start:[t,0],end:[a(t),null],default_value:[u.HatchPatternType,\" \"]})))},\n function _(n,r,o,t,a){t();const e=n(172),i=n(12);class s extends e.ContinuousColorMapper{constructor(n){super(n)}scan(n,r){const o=null!=this.low?this.low:(0,i.min)(n),t=null!=this.high?this.high:(0,i.max)(n);return{max:t,min:o,norm_factor:1/(t-o),normed_interval:1/r}}cmap(n,r,o,t,a){const e=r.length-1;if(n==a.max)return r[e];const i=(n-a.min)*a.norm_factor,s=Math.floor(i/a.normed_interval);return s<0?o:s>e?t:r[s]}}o.LinearColorMapper=s,s.__name__=\"LinearColorMapper\"},\n function _(o,t,n,r,l){r();const a=o(172),s=o(12);class e extends a.ContinuousColorMapper{constructor(o){super(o)}scan(o,t){const n=null!=this.low?this.low:(0,s.min)(o),r=null!=this.high?this.high:(0,s.max)(o);return{max:r,min:n,scale:t/(Math.log(r)-Math.log(n))}}cmap(o,t,n,r,l){const a=t.length-1;if(o>l.max)return r;if(o==l.max)return t[a];if(oa&&(e=a),t[e]}}n.LogColorMapper=e,e.__name__=\"LogColorMapper\"},\n function _(e,n,s,t,l){var i;t();const r=e(171),o=e(12),c=e(9);class a extends r.ScanningColorMapper{constructor(e){super(e)}scan(e,n){let s=null!=this.low?this.low:(0,o.min)(e);const t=null!=this.high?this.high:(0,o.max)(e),l=this.bins,i=(0,c.linspace)(s,t,l+1),r=(0,o.bin_counts)(e,i);let a=0;for(let e=0;e1&&(f=1-n)}const d=(0,c.linspace)(f,1,n+1),g=(0,o.interpolate)(d,p,_);return this.rescale_discrete_levels?s=g[0]:g[0]=s,g[g.length-1]=t,{min:s,max:t,binning:g}}}s.EqHistColorMapper=a,i=a,a.__name__=\"EqHistColorMapper\",i.define((({Boolean:e,Int:n})=>({bins:[n,65536],rescale_discrete_levels:[e,!1]})))},\n function _(a,e,l,c,n){c(),n(\"CategoricalScale\",a(62).CategoricalScale),n(\"ContinuousScale\",a(60).ContinuousScale),n(\"LinearScale\",a(59).LinearScale),n(\"LinearInterpolationScale\",a(205).LinearInterpolationScale),n(\"LogScale\",a(61).LogScale),n(\"Scale\",a(55).Scale)},\n function _(e,r,n,t,a){var i;t();const s=e(55),o=e(59),c=e(12);class _ extends s.Scale{constructor(e){super(e)}connect_signals(){super.connect_signals();const{source_range:e,target_range:r}=this.properties;this.on_change([e,r],(()=>{this.linear_scale=new o.LinearScale({source_range:this.source_range,target_range:this.target_range})}))}get s_compute(){throw new Error(\"not implemented\")}get s_invert(){throw new Error(\"not implemented\")}compute(e){return e}v_compute(e){const{binning:r}=this,{start:n,end:t}=this.source_range,a=n,i=t,s=r.length,o=(t-n)/(s-1),_=new Float64Array(s);for(let e=0;e{if(ei)return i;const n=(0,c.left_edge_index)(e,r);if(-1==n)return a;if(n>=s-1)return i;const t=r[n],o=(e-t)/(r[n+1]-t),l=_[n];return l+o*(_[n+1]-l)}));return this.linear_scale.v_compute(l)}invert(e){return e}v_invert(e){return new Float64Array(e)}}n.LinearInterpolationScale=_,i=_,_.__name__=\"LinearInterpolationScale\",i.internal((({Arrayable:e,Ref:r})=>({binning:[e],linear_scale:[r(o.LinearScale),e=>new o.LinearScale({source_range:e.source_range,target_range:e.target_range})]})))},\n function _(a,n,e,g,R){g(),R(\"DataRange\",a(64).DataRange),R(\"DataRange1d\",a(63).DataRange1d),R(\"FactorRange\",a(67).FactorRange),R(\"Range\",a(57).Range),R(\"Range1d\",a(58).Range1d)},\n function _(a,o,i,t,e){t();var n=a(124);e(\"Sizeable\",n.Sizeable),e(\"SizingPolicy\",n.SizingPolicy);var c=a(125);e(\"Layoutable\",c.Layoutable),e(\"LayoutItem\",c.LayoutItem);var r=a(208);e(\"HStack\",r.HStack),e(\"VStack\",r.VStack);var l=a(209);e(\"Grid\",l.Grid),e(\"Row\",l.Row),e(\"Column\",l.Column);var S=a(210);e(\"ContentBox\",S.ContentBox),e(\"VariadicBox\",S.VariadicBox)},\n function _(t,e,h,i,r){i();const n=t(125),o=t(65);class s extends n.Layoutable{constructor(){super(...arguments),this.children=[]}*[Symbol.iterator](){yield*this.children}}h.Stack=s,s.__name__=\"Stack\";class c extends s{_measure(t){let e=0,h=0;for(const t of this.children){const i=t.measure({width:0,height:0});e+=i.width,h=Math.max(h,i.height)}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t.top:0;let i=this.absolute?t.left:0;const{height:r}=t;for(const t of this.children){const{width:e}=t.measure({width:0,height:0});t.set_geometry(new o.BBox({left:i,width:e,top:h,height:r})),i+=e}}}h.HStack=c,c.__name__=\"HStack\";class a extends s{_measure(t){let e=0,h=0;for(const t of this.children){const i=t.measure({width:0,height:0});e=Math.max(e,i.width),h+=i.height}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t.left:0;let i=this.absolute?t.top:0;const{width:r}=t;for(const t of this.children){const{height:e}=t.measure({width:0,height:0});t.set_geometry(new o.BBox({top:i,height:e,left:h,width:r})),i+=e}}}h.VStack=a,a.__name__=\"VStack\";class l extends n.Layoutable{constructor(){super(...arguments),this.children=[]}*[Symbol.iterator](){yield*this.children}_measure(t){const{width_policy:e,height_policy:h}=this.sizing,{min:i,max:r}=Math;let n=0,o=0;for(const e of this.children){const{width:h,height:i}=e.measure(t);n=r(n,h),o=r(o,i)}return{width:(()=>{const{width:h}=this.sizing;if(t.width==1/0)return\"fixed\"==e&&null!=h?h:n;switch(e){case\"fixed\":return null!=h?h:n;case\"min\":return n;case\"fit\":return null!=h?i(t.width,h):t.width;case\"max\":return null!=h?r(t.width,h):t.width}})(),height:(()=>{const{height:e}=this.sizing;if(t.height==1/0)return\"fixed\"==h&&null!=e?e:o;switch(h){case\"fixed\":return null!=e?e:o;case\"min\":return o;case\"fit\":return null!=e?i(t.height,e):t.height;case\"max\":return null!=e?r(t.height,e):t.height}})()}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t:t.relative(),{left:i,right:r,top:n,bottom:s}=h,c=Math.round(h.vcenter),a=Math.round(h.hcenter);for(const e of this.children){const{margin:h,halign:l,valign:d}=e.sizing,{width:u,height:g,inner:_}=e.measure(t),w=(()=>{switch(`${d}_${l}`){case\"start_start\":return new o.BBox({left:i+h.left,top:n+h.top,width:u,height:g});case\"start_center\":return new o.BBox({hcenter:a,top:n+h.top,width:u,height:g});case\"start_end\":return new o.BBox({right:r-h.right,top:n+h.top,width:u,height:g});case\"center_start\":return new o.BBox({left:i+h.left,vcenter:c,width:u,height:g});case\"center_center\":return new o.BBox({hcenter:a,vcenter:c,width:u,height:g});case\"center_end\":return new o.BBox({right:r-h.right,vcenter:c,width:u,height:g});case\"end_start\":return new o.BBox({left:i+h.left,bottom:s-h.bottom,width:u,height:g});case\"end_center\":return new o.BBox({hcenter:a,bottom:s-h.bottom,width:u,height:g});case\"end_end\":return new o.BBox({right:r-h.right,bottom:s-h.bottom,width:u,height:g})}})(),m=null==_?w:new o.BBox({left:w.left+_.left,top:w.top+_.top,right:w.right-_.right,bottom:w.bottom-_.bottom});e.set_geometry(w,m)}}}h.NodeLayout=l,l.__name__=\"NodeLayout\"},\n function _(t,i,s,e,o){e();const n=t(124),l=t(125),r=t(8),h=t(65),c=t(9),{max:a,round:g}=Math;class p{constructor(t){this.def=t,this._map=new Map}get(t){let i=this._map.get(t);return void 0===i&&(i=this.def(),this._map.set(t,i)),i}apply(t,i){const s=this.get(t);this._map.set(t,i(s))}}p.__name__=\"DefaultMap\";class f{constructor(){this._items=[],this._nrows=0,this._ncols=0}get nrows(){return this._nrows}get ncols(){return this._ncols}add(t,i){const{r1:s,c1:e}=t;this._nrows=a(this._nrows,s+1),this._ncols=a(this._ncols,e+1),this._items.push({span:t,data:i})}at(t,i){return this._items.filter((({span:s})=>s.r0<=t&&t<=s.r1&&s.c0<=i&&i<=s.c1)).map((({data:t})=>t))}row(t){return this._items.filter((({span:i})=>i.r0<=t&&t<=i.r1)).map((({data:t})=>t))}col(t){return this._items.filter((({span:i})=>i.c0<=t&&t<=i.c1)).map((({data:t})=>t))}foreach(t){for(const{span:i,data:s}of this._items)t(i,s)}map(t){const i=new f;for(const{span:s,data:e}of this._items)i.add(s,t(s,e));return i}}f.__name__=\"Container\";class _ extends l.Layoutable{constructor(t=[]){super(),this.items=t,this.rows=\"auto\",this.cols=\"auto\",this.spacing=0}*[Symbol.iterator](){for(const{layout:t}of this.items)yield t}is_width_expanding(){if(super.is_width_expanding())return!0;if(\"fixed\"==this.sizing.width_policy)return!1;const{cols:t}=this._state;return(0,c.some)(t,(t=>\"max\"==t.policy))}is_height_expanding(){if(super.is_height_expanding())return!0;if(\"fixed\"==this.sizing.height_policy)return!1;const{rows:t}=this._state;return(0,c.some)(t,(t=>\"max\"==t.policy))}_init(){var t,i,s,e;super._init();const o=new f;for(const{layout:t,row:i,col:s,row_span:e,col_span:n}of this.items)if(t.sizing.visible){const l=i,r=s,h=i+(null!=e?e:1)-1,c=s+(null!=n?n:1)-1;o.add({r0:l,c0:r,r1:h,c1:c},t)}const{nrows:n,ncols:l}=o,h=new Array(n);for(let s=0;s{var t;const i=(0,r.isPlainObject)(this.rows)?null!==(t=this.rows[s])&&void 0!==t?t:this.rows[\"*\"]:this.rows;return null==i?{policy:\"auto\"}:(0,r.isNumber)(i)?{policy:\"fixed\",height:i}:(0,r.isString)(i)?{policy:i}:i})(),n=null!==(t=e.align)&&void 0!==t?t:\"auto\";if(\"fixed\"==e.policy)h[s]={policy:\"fixed\",height:e.height,align:n};else if(\"min\"==e.policy)h[s]={policy:\"min\",align:n};else if(\"fit\"==e.policy||\"max\"==e.policy)h[s]={policy:e.policy,flex:null!==(i=e.flex)&&void 0!==i?i:1,align:n};else{if(\"auto\"!=e.policy)throw new Error(\"unrechable\");(0,c.some)(o.row(s),(t=>t.is_height_expanding()))?h[s]={policy:\"max\",flex:1,align:n}:h[s]={policy:\"min\",align:n}}}const a=new Array(l);for(let t=0;t{var i;const s=(0,r.isPlainObject)(this.cols)?null!==(i=this.cols[t])&&void 0!==i?i:this.cols[\"*\"]:this.cols;return null==s?{policy:\"auto\"}:(0,r.isNumber)(s)?{policy:\"fixed\",width:s}:(0,r.isString)(s)?{policy:s}:s})(),n=null!==(s=i.align)&&void 0!==s?s:\"auto\";if(\"fixed\"==i.policy)a[t]={policy:\"fixed\",width:i.width,align:n};else if(\"min\"==i.policy)a[t]={policy:\"min\",align:n};else if(\"fit\"==i.policy||\"max\"==i.policy)a[t]={policy:i.policy,flex:null!==(e=i.flex)&&void 0!==e?e:1,align:n};else{if(\"auto\"!=i.policy)throw new Error(\"unrechable\");(0,c.some)(o.col(t),(t=>t.is_width_expanding()))?a[t]={policy:\"max\",flex:1,align:n}:a[t]={policy:\"min\",align:n}}}const[g,p]=(0,r.isNumber)(this.spacing)?[this.spacing,this.spacing]:this.spacing;this._state={items:o,nrows:n,ncols:l,rows:h,cols:a,rspacing:g,cspacing:p}}_measure_totals(t,i){const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state;return{height:(0,c.sum)(t)+(s-1)*o,width:(0,c.sum)(i)+(e-1)*n}}_measure_cells(t){const{items:i,nrows:s,ncols:e,rows:o,cols:l,rspacing:r,cspacing:h}=this._state,c=new Array(s);for(let t=0;t{const{r0:e,c0:f,r1:d,c1:u}=i,w=(d-e)*r,m=(u-f)*h;let y=0;for(let i=e;i<=d;i++)y+=t(i,f).height;y+=w;let x=0;for(let i=f;i<=u;i++)x+=t(e,i).width;x+=m;const b=s.measure({width:x,height:y});_.add(i,{layout:s,size_hint:b});const z=new n.Sizeable(b).grow_by(s.sizing.margin);z.height-=w,z.width-=m;const v=[];for(let t=e;t<=d;t++){const i=o[t];\"fixed\"==i.policy?z.height-=i.height:v.push(t)}if(z.height>0){const t=g(z.height/v.length);for(const i of v)c[i]=a(c[i],t)}const j=[];for(let t=f;t<=u;t++){const i=l[t];\"fixed\"==i.policy?z.width-=i.width:j.push(t)}if(z.width>0){const t=g(z.width/j.length);for(const i of j)p[i]=a(p[i],t)}}));return{size:this._measure_totals(c,p),row_heights:c,col_widths:p,size_hints:_}}_measure_grid(t){const{nrows:i,ncols:s,rows:e,cols:o,rspacing:n,cspacing:l}=this._state,r=this._measure_cells(((t,i)=>{const s=e[t],n=o[i];return{width:\"fixed\"==n.policy?n.width:1/0,height:\"fixed\"==s.policy?s.height:1/0}}));let h;h=\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:t.height!=1/0&&this.is_height_expanding()?t.height:r.size.height;let c,p=0;for(let t=0;t0)for(let t=0;ti?i:e,t--}}}c=\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:t.width!=1/0&&this.is_width_expanding()?t.width:r.size.width;let f=0;for(let t=0;t0)for(let t=0;ts?s:o,t--}}}const{row_heights:_,col_widths:d,size_hints:u}=this._measure_cells(((t,i)=>({width:r.col_widths[i],height:r.row_heights[t]})));return{size:this._measure_totals(_,d),row_heights:_,col_widths:d,size_hints:u}}_measure(t){const{size:i}=this._measure_grid(t);return i}_set_geometry(t,i){super._set_geometry(t,i);const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state,{row_heights:l,col_widths:r,size_hints:c}=this._measure_grid(t),f=this._state.rows.map(((t,i)=>Object.assign(Object.assign({},t),{top:0,height:l[i],get bottom(){return this.top+this.height}}))),_=this._state.cols.map(((t,i)=>Object.assign(Object.assign({},t),{left:0,width:r[i],get right(){return this.left+this.width}}))),d=c.map(((t,i)=>Object.assign(Object.assign({},i),{outer:new h.BBox,inner:new h.BBox})));for(let i=0,e=this.absolute?t.top:0;i{const{layout:r,size_hint:c}=l,{sizing:a}=r,{width:p,height:d}=c,u=function(t,i){let s=(i-t)*n;for(let e=t;e<=i;e++)s+=_[e].width;return s}(i,e),w=function(t,i){let s=(i-t)*o;for(let e=t;e<=i;e++)s+=f[e].height;return s}(t,s),m=i==e&&\"auto\"!=_[i].align?_[i].align:a.halign,y=t==s&&\"auto\"!=f[t].align?f[t].align:a.valign;let x=_[i].left;\"start\"==m?x+=a.margin.left:\"center\"==m?x+=g((u-p)/2):\"end\"==m&&(x+=u-a.margin.right-p);let b=f[t].top;\"start\"==y?b+=a.margin.top:\"center\"==y?b+=g((w-d)/2):\"end\"==y&&(b+=w-a.margin.bottom-d),l.outer=new h.BBox({left:x,top:b,width:p,height:d})}));const u=f.map((()=>({start:new p((()=>0)),end:new p((()=>0))}))),w=_.map((()=>({start:new p((()=>0)),end:new p((()=>0))})));d.foreach((({r0:t,c0:i,r1:s,c1:e},{size_hint:o,outer:n})=>{const{inner:l}=o;null!=l&&(u[t].start.apply(n.top,(t=>a(t,l.top))),u[s].end.apply(f[s].bottom-n.bottom,(t=>a(t,l.bottom))),w[i].start.apply(n.left,(t=>a(t,l.left))),w[e].end.apply(_[e].right-n.right,(t=>a(t,l.right))))})),d.foreach((({r0:t,c0:i,r1:s,c1:e},o)=>{const{size_hint:n,outer:l}=o,r=t=>{const i=this.absolute?l:l.relative(),s=i.left+t.left,e=i.top+t.top,o=i.right-t.right,n=i.bottom-t.bottom;return new h.BBox({left:s,top:e,right:o,bottom:n})};if(null!=n.inner){let h=r(n.inner);if(!1!==n.align){const o=u[t].start.get(l.top),n=u[s].end.get(f[s].bottom-l.bottom),c=w[i].start.get(l.left),a=w[e].end.get(_[e].right-l.right);try{h=r({top:o,bottom:n,left:c,right:a})}catch(t){}}o.inner=h}else o.inner=l})),d.foreach(((t,{layout:i,outer:s,inner:e})=>{i.set_geometry(s,e)}))}}s.Grid=_,_.__name__=\"Grid\";class d extends _{constructor(t){super(),this.items=t.map(((t,i)=>({layout:t,row:0,col:i}))),this.rows=\"fit\"}}s.Row=d,d.__name__=\"Row\";class u extends _{constructor(t){super(),this.items=t.map(((t,i)=>({layout:t,row:i,col:0}))),this.cols=\"fit\"}}s.Column=u,u.__name__=\"Column\"},\n function _(e,t,s,n,i){n();const a=e(125),c=e(124),o=e(43);class r extends a.ContentLayoutable{constructor(e){super(),this.content_size=(0,o.unsized)(e,(()=>new c.Sizeable((0,o.size)(e))))}_content_size(){return this.content_size}}s.ContentBox=r,r.__name__=\"ContentBox\";class _ extends a.Layoutable{constructor(e){super(),this.el=e}_measure(e){const t=new c.Sizeable(e).bounded_to(this.sizing.size);return(0,o.sized)(this.el,t,(()=>{const e=new c.Sizeable((0,o.content_size)(this.el)),{border:t,padding:s}=(0,o.extents)(this.el);return e.grow_by(t).grow_by(s).map(Math.ceil)}))}}s.VariadicBox=_,_.__name__=\"VariadicBox\";class h extends _{constructor(e){super(e),this._cache=new Map}_measure(e){const{width:t,height:s}=e,n=`${t},${s}`;let i=this._cache.get(n);return null==i&&(i=super._measure(e),this._cache.set(n,i)),i}invalidate_cache(){this._cache.clear()}}s.CachedVariadicBox=h,h.__name__=\"CachedVariadicBox\"},\n function _(t,e,i,h,o){h();const s=t(124),r=t(125),n=t(65);class g extends r.Layoutable{constructor(){super(...arguments),this.min_border={left:0,top:0,right:0,bottom:0},this.padding={left:0,top:0,right:0,bottom:0}}*[Symbol.iterator](){yield this.top_panel,yield this.bottom_panel,yield this.left_panel,yield this.right_panel,yield this.center_panel}_measure(t){t=new s.Sizeable({width:\"fixed\"==this.sizing.width_policy||t.width==1/0?this.sizing.width:t.width,height:\"fixed\"==this.sizing.height_policy||t.height==1/0?this.sizing.height:t.height});const e=this.left_panel.measure({width:0,height:t.height}),i=Math.max(e.width,this.min_border.left)+this.padding.left,h=this.right_panel.measure({width:0,height:t.height}),o=Math.max(h.width,this.min_border.right)+this.padding.right,r=this.top_panel.measure({width:t.width,height:0}),n=Math.max(r.height,this.min_border.top)+this.padding.top,g=this.bottom_panel.measure({width:t.width,height:0}),a=Math.max(g.height,this.min_border.bottom)+this.padding.bottom,d=new s.Sizeable(t).shrink_by({left:i,right:o,top:n,bottom:a}),l=this.center_panel.measure(d);return{width:i+l.width+o,height:n+l.height+a,inner:{left:i,right:o,top:n,bottom:a},align:(()=>{const{width_policy:t,height_policy:e}=this.center_panel.sizing;return\"fixed\"!=t&&\"fixed\"!=e})()}}_set_geometry(t,e){super._set_geometry(t,e),this.center_panel.set_geometry(e);const i=this.left_panel.measure({width:0,height:t.height}),h=this.right_panel.measure({width:0,height:t.height}),o=this.top_panel.measure({width:t.width,height:0}),s=this.bottom_panel.measure({width:t.width,height:0}),{left:r,top:g,right:a,bottom:d}=e;this.top_panel.set_geometry(new n.BBox({left:r,right:a,bottom:g,height:o.height})),this.bottom_panel.set_geometry(new n.BBox({left:r,right:a,top:d,height:s.height})),this.left_panel.set_geometry(new n.BBox({top:g,bottom:d,right:r,width:i.width})),this.right_panel.set_geometry(new n.BBox({top:g,bottom:d,left:a,width:h.width}))}}i.BorderLayout=g,g.__name__=\"BorderLayout\"},\n function _(t,e,i,s,l){s();const n=t(1);var o;const a=t(119),_=t(10),d=t(20),h=t(120),r=t(123),u=(0,n.__importStar)(t(48));class c extends a.TextAnnotationView{update_layout(){const{panel:t}=this;this.layout=null!=t?new r.SideLayout(t,(()=>this.get_size()),!1):void 0}_get_size(){const{text:t}=this.model,e=new h.TextBox({text:t}),{angle:i,angle_units:s}=this.model;e.angle=(0,_.resolve_angle)(i,s),e.visuals=this.visuals.text.values();const{width:l,height:n}=e.size();return{width:l,height:n}}_render(){const{angle:t,angle_units:e}=this.model,i=(0,_.resolve_angle)(t,e),s=null!=this.layout?this.layout:this.plot_view.frame,l=this.coordinates.x_scale,n=this.coordinates.y_scale;let o=\"data\"==this.model.x_units?l.compute(this.model.x):s.bbox.xview.compute(this.model.x),a=\"data\"==this.model.y_units?n.compute(this.model.y):s.bbox.yview.compute(this.model.y);o+=this.model.x_offset,a-=this.model.y_offset;(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,this.model.text,o,a,i)}}i.LabelView=c,c.__name__=\"LabelView\";class x extends a.TextAnnotation{constructor(t){super(t)}}i.Label=x,o=x,x.__name__=\"Label\",o.prototype.default_view=c,o.mixins([u.Text,[\"border_\",u.Line],[\"background_\",u.Fill]]),o.define((({Number:t,String:e,Angle:i})=>({x:[t],x_units:[d.SpatialUnits,\"data\"],y:[t],y_units:[d.SpatialUnits,\"data\"],text:[e,\"\"],angle:[i,0],angle_units:[d.AngleUnits,\"rad\"],x_offset:[t,0],y_offset:[t,0]}))),o.override({background_fill_color:null,border_line_color:null})},\n function _(t,e,s,i,l){i();const o=t(1);var a;const r=t(69),n=(0,o.__importStar)(t(48)),d=t(20),_=t(43),c=t(120),h=(0,o.__importStar)(t(18)),u=t(11);class v extends r.DataAnnotationView{set_data(t){var e;if(super.set_data(t),null===(e=this.els)||void 0===e||e.forEach((t=>(0,_.remove)(t))),\"css\"==this.model.render_mode){const t=this.els=[...this.text].map((()=>(0,_.div)({style:{display:\"none\"}})));for(const e of t)this.plot_view.canvas_view.add_overlay(e)}else delete this.els}remove(){var t;null===(t=this.els)||void 0===t||t.forEach((t=>(0,_.remove)(t))),super.remove()}_rerender(){\"css\"==this.model.render_mode?this.render():this.request_render()}map_data(){const{x_scale:t,y_scale:e}=this.coordinates,s=null!=this.layout?this.layout:this.plot_view.frame;this.sx=\"data\"==this.model.x_units?t.v_compute(this._x):s.bbox.xview.v_compute(this._x),this.sy=\"data\"==this.model.y_units?e.v_compute(this._y):s.bbox.yview.v_compute(this._y)}paint(){const t=\"canvas\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),{ctx:e}=this.layer;for(let s=0,i=this.text.length;s{switch(this.visuals.text.text_align.get(e)){case\"left\":return[\"left\",\"0%\"];case\"center\":return[\"center\",\"-50%\"];case\"right\":return[\"right\",\"-100%\"]}})(),[d,c]=(()=>{switch(this.visuals.text.text_baseline.get(e)){case\"top\":return[\"top\",\"0%\"];case\"middle\":return[\"center\",\"-50%\"];case\"bottom\":return[\"bottom\",\"-100%\"];default:return[\"center\",\"-50%\"]}})();let h=`translate(${n}, ${c})`;o&&(h+=`rotate(${o}rad)`),a.style.transformOrigin=`${r} ${d}`,a.style.transform=h,this.layout,this.visuals.background_fill.doit&&(this.visuals.background_fill.set_vectorize(t,e),a.style.backgroundColor=t.fillStyle),this.visuals.border_line.doit&&(this.visuals.border_line.set_vectorize(t,e),a.style.borderStyle=t.lineDash.length<2?\"solid\":\"dashed\",a.style.borderWidth=`${t.lineWidth}px`,a.style.borderColor=t.strokeStyle),(0,_.display)(a)}}s.LabelSetView=v,v.__name__=\"LabelSetView\";class x extends r.DataAnnotation{constructor(t){super(t)}}s.LabelSet=x,a=x,x.__name__=\"LabelSet\",a.prototype.default_view=v,a.mixins([n.TextVector,[\"border_\",n.LineVector],[\"background_\",n.FillVector]]),a.define((()=>({x:[h.XCoordinateSpec,{field:\"x\"}],y:[h.YCoordinateSpec,{field:\"y\"}],x_units:[d.SpatialUnits,\"data\"],y_units:[d.SpatialUnits,\"data\"],text:[h.StringSpec,{field:\"text\"}],angle:[h.AngleSpec,0],x_offset:[h.NumberSpec,{value:0}],y_offset:[h.NumberSpec,{value:0}],render_mode:[d.RenderMode,\"canvas\"]}))),a.override({background_fill_color:null,border_line_color:null})},\n function _(t,e,i,l,s){l();const n=t(1);var o;const h=t(40),a=t(215),_=t(20),r=(0,n.__importStar)(t(48)),d=t(15),c=t(123),g=t(121),m=t(65),b=t(9),f=t(8),u=t(11);class x extends h.AnnotationView{update_layout(){const{panel:t}=this;this.layout=null!=t?new c.SideLayout(t,(()=>this.get_size())):void 0}cursor(t,e){return\"none\"==this.model.click_policy?null:\"pointer\"}get legend_padding(){return null!=this.model.border_line_color?this.model.padding:0}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render())),this.connect(this.model.item_change,(()=>this.request_render()))}compute_legend_bbox(){const t=this.model.get_legend_names(),{glyph_height:e,glyph_width:i}=this.model,{label_height:l,label_width:s}=this.model;this.max_label_height=(0,b.max)([(0,g.font_metrics)(this.visuals.label_text.font_value()).height,l,e]);const{ctx:n}=this.layer;n.save(),this.visuals.label_text.set_value(n),this.text_widths=new Map;for(const e of t)this.text_widths.set(e,(0,b.max)([n.measureText(e).width,s]));this.visuals.title_text.set_value(n),this.title_height=this.model.title?(0,g.font_metrics)(this.visuals.title_text.font_value()).height+this.model.title_standoff:0,this.title_width=this.model.title?n.measureText(this.model.title).width:0,n.restore();const o=Math.max((0,b.max)([...this.text_widths.values()]),0),h=this.model.margin,{legend_padding:a}=this,_=this.model.spacing,{label_standoff:r}=this.model;let d,c;if(\"vertical\"==this.model.orientation)d=t.length*this.max_label_height+Math.max(t.length-1,0)*_+2*a+this.title_height,c=(0,b.max)([o+i+r+2*a,this.title_width+2*a]);else{let e=2*a+Math.max(t.length-1,0)*_;for(const[,t]of this.text_widths)e+=(0,b.max)([t,s])+i+r;c=(0,b.max)([this.title_width+2*a,e]),d=this.max_label_height+this.title_height+2*a}const x=null!=this.layout?this.layout:this.plot_view.frame,[p,w]=x.bbox.ranges,{location:v}=this.model;let y,k;if((0,f.isString)(v))switch(v){case\"top_left\":y=p.start+h,k=w.start+h;break;case\"top\":case\"top_center\":y=(p.end+p.start)/2-c/2,k=w.start+h;break;case\"top_right\":y=p.end-h-c,k=w.start+h;break;case\"bottom_right\":y=p.end-h-c,k=w.end-h-d;break;case\"bottom\":case\"bottom_center\":y=(p.end+p.start)/2-c/2,k=w.end-h-d;break;case\"bottom_left\":y=p.start+h,k=w.end-h-d;break;case\"left\":case\"center_left\":y=p.start+h,k=(w.end+w.start)/2-d/2;break;case\"center\":case\"center_center\":y=(p.end+p.start)/2-c/2,k=(w.end+w.start)/2-d/2;break;case\"right\":case\"center_right\":y=p.end-h-c,k=(w.end+w.start)/2-d/2}else if((0,f.isArray)(v)&&2==v.length){const[t,e]=v;y=x.bbox.xview.compute(t),k=x.bbox.yview.compute(e)-d}else(0,u.unreachable)();return new m.BBox({left:y,top:k,width:c,height:d})}interactive_bbox(){return this.compute_legend_bbox()}interactive_hit(t,e){return this.interactive_bbox().contains(t,e)}on_hit(t,e){let i;const{glyph_width:l}=this.model,{legend_padding:s}=this,n=this.model.spacing,{label_standoff:o}=this.model;let h=i=s;const a=this.compute_legend_bbox(),_=\"vertical\"==this.model.orientation;for(const r of this.model.items){const d=r.get_labels_list_from_label_prop();for(const c of d){const d=a.x+h,g=a.y+i+this.title_height;let b,f;[b,f]=_?[a.width-2*s,this.max_label_height]:[this.text_widths.get(c)+l+o,this.max_label_height];if(new m.BBox({left:d,top:g,width:b,height:f}).contains(t,e)){switch(this.model.click_policy){case\"hide\":for(const t of r.renderers)t.visible=!t.visible;break;case\"mute\":for(const t of r.renderers)t.muted=!t.muted}return!0}_?i+=this.max_label_height+n:h+=this.text_widths.get(c)+l+o+n}}return!1}_render(){if(0==this.model.items.length)return;if(!(0,b.some)(this.model.items,(t=>t.visible)))return;for(const t of this.model.items)t.legend=this.model;const{ctx:t}=this.layer,e=this.compute_legend_bbox();t.save(),this._draw_legend_box(t,e),this._draw_legend_items(t,e),this._draw_title(t,e),t.restore()}_draw_legend_box(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.apply(t),this.visuals.border_line.apply(t)}_draw_legend_items(t,e){const{glyph_width:i,glyph_height:l}=this.model,{legend_padding:s}=this,n=this.model.spacing,{label_standoff:o}=this.model;let h=s,a=s;const _=\"vertical\"==this.model.orientation;for(const r of this.model.items){if(!r.visible)continue;const d=r.get_labels_list_from_label_prop(),c=r.get_field_from_label_prop();if(0==d.length)continue;const g=(()=>{switch(this.model.click_policy){case\"none\":return!0;case\"hide\":return(0,b.every)(r.renderers,(t=>t.visible));case\"mute\":return(0,b.every)(r.renderers,(t=>!t.muted))}})();for(const m of d){const d=e.x+h,b=e.y+a+this.title_height,f=d+i,u=b+l;_?a+=this.max_label_height+n:h+=this.text_widths.get(m)+i+o+n,this.visuals.label_text.set_value(t),t.fillText(m,f+o,b+this.max_label_height/2);for(const e of r.renderers){const i=this.plot_view.renderer_view(e);null==i||i.draw_legend(t,d,f,b,u,c,m,r.index)}if(!g){let l,n;[l,n]=_?[e.width-2*s,this.max_label_height]:[this.text_widths.get(m)+i+o,this.max_label_height],t.beginPath(),t.rect(d,b,l,n),this.visuals.inactive_fill.set_value(t),t.fill()}}}}_draw_title(t,e){const{title:i}=this.model;i&&this.visuals.title_text.doit&&(t.save(),t.translate(e.x0,e.y0+this.title_height),this.visuals.title_text.set_value(t),t.fillText(i,this.legend_padding,this.legend_padding-this.model.title_standoff),t.restore())}_get_size(){const{width:t,height:e}=this.compute_legend_bbox();return{width:t+2*this.model.margin,height:e+2*this.model.margin}}}i.LegendView=x,x.__name__=\"LegendView\";class p extends h.Annotation{constructor(t){super(t)}initialize(){super.initialize(),this.item_change=new d.Signal0(this,\"item_change\")}get_legend_names(){const t=[];for(const e of this.items){const i=e.get_labels_list_from_label_prop();t.push(...i)}return t}}i.Legend=p,o=p,p.__name__=\"Legend\",o.prototype.default_view=x,o.mixins([[\"label_\",r.Text],[\"title_\",r.Text],[\"inactive_\",r.Fill],[\"border_\",r.Line],[\"background_\",r.Fill]]),o.define((({Number:t,String:e,Array:i,Tuple:l,Or:s,Ref:n,Nullable:o})=>({orientation:[_.Orientation,\"vertical\"],location:[s(_.LegendLocation,l(t,t)),\"top_right\"],title:[o(e),null],title_standoff:[t,5],label_standoff:[t,5],glyph_height:[t,20],glyph_width:[t,20],label_height:[t,20],label_width:[t,20],margin:[t,10],padding:[t,10],spacing:[t,3],items:[i(n(a.LegendItem)),[]],click_policy:[_.LegendClickPolicy,\"none\"]}))),o.override({border_line_color:\"#e5e5e5\",border_line_alpha:.5,border_line_width:1,background_fill_color:\"#ffffff\",background_fill_alpha:.95,inactive_fill_color:\"white\",inactive_fill_alpha:.7,label_text_font_size:\"13px\",label_text_baseline:\"middle\",title_text_font_size:\"13px\",title_text_font_style:\"italic\"})},\n function _(e,r,l,n,t){n();const i=e(1);var s;const o=e(53),a=e(175),_=e(70),u=e(216),d=(0,i.__importStar)(e(18)),c=e(19),f=e(9);class h extends o.Model{constructor(e){super(e)}_check_data_sources_on_renderers(){if(null!=this.get_field_from_label_prop()){if(this.renderers.length<1)return!1;const e=this.renderers[0].data_source;if(null!=e)for(const r of this.renderers)if(r.data_source!=e)return!1}return!0}_check_field_label_on_data_source(){const e=this.get_field_from_label_prop();if(null!=e){if(this.renderers.length<1)return!1;const r=this.renderers[0].data_source;if(null!=r&&!(0,f.includes)(r.columns(),e))return!1}return!0}initialize(){super.initialize(),this.legend=null,this.connect(this.change,(()=>{var e;return null===(e=this.legend)||void 0===e?void 0:e.item_change.emit()}));this._check_data_sources_on_renderers()||c.logger.error(\"Non matching data sources on legend item renderers\");this._check_field_label_on_data_source()||c.logger.error(`Bad column name on label: ${this.label}`)}get_field_from_label_prop(){const{label:e}=this;return(0,u.isField)(e)?e.field:null}get_labels_list_from_label_prop(){if(!this.visible)return[];if((0,u.isValue)(this.label)){const{value:e}=this.label;return null!=e?[e]:[]}const e=this.get_field_from_label_prop();if(null!=e){let r;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\"No source found\"];if(r=this.renderers[0].data_source,r instanceof _.ColumnarDataSource){const l=r.get_column(e);return null!=l?(0,f.uniq)(Array.from(l)):[\"Invalid field\"]}}return[]}}l.LegendItem=h,s=h,h.__name__=\"LegendItem\",s.define((({Boolean:e,Int:r,Array:l,Ref:n,Nullable:t})=>({label:[d.NullStringSpec,null],renderers:[l(n(a.GlyphRenderer)),[]],index:[t(r),null],visible:[e,!0]})))},\n function _(i,n,e,t,u){t();const c=i(8);e.isValue=function(i){return(0,c.isPlainObject)(i)&&\"value\"in i},e.isField=function(i){return(0,c.isPlainObject)(i)&&\"field\"in i},e.isExpr=function(i){return(0,c.isPlainObject)(i)&&\"expr\"in i}},\n function _(t,n,e,s,i){s();const o=t(1);var a;const l=t(40),c=(0,o.__importStar)(t(48)),r=t(20);class _ extends l.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{xs:t,ys:n}=this.model;if(t.length!=n.length)return;const e=t.length;if(e<3)return;const{frame:s}=this.plot_view,{ctx:i}=this.layer,o=this.coordinates.x_scale,a=this.coordinates.y_scale,{screen:l}=this.model;function c(t,n,e,s){return l?t:\"data\"==n?e.v_compute(t):s.v_compute(t)}const r=c(t,this.model.xs_units,o,s.bbox.xview),_=c(n,this.model.ys_units,a,s.bbox.yview);i.beginPath();for(let t=0;t({xs:[n(t),[]],xs_units:[r.SpatialUnits,\"data\"],ys:[n(t),[]],ys_units:[r.SpatialUnits,\"data\"]}))),a.internal((({Boolean:t})=>({screen:[t,!1]}))),a.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})},\n function _(e,t,n,o,i){o();const s=e(1);var l;const r=e(40),c=(0,s.__importStar)(e(48));class a extends r.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{gradient:e,y_intercept:t}=this.model;if(null==e||null==t)return;const{frame:n}=this.plot_view,o=this.coordinates.x_scale,i=this.coordinates.y_scale;let s,l,r,c;if(0==e)s=i.compute(t),l=s,r=n.bbox.left,c=r+n.bbox.width;else{s=n.bbox.top,l=s+n.bbox.height;const a=(i.invert(s)-t)/e,_=(i.invert(l)-t)/e;r=o.compute(a),c=o.compute(_)}const{ctx:a}=this.layer;a.save(),a.beginPath(),this.visuals.line.set_value(a),a.moveTo(r,s),a.lineTo(c,l),a.stroke(),a.restore()}}n.SlopeView=a,a.__name__=\"SlopeView\";class _ extends r.Annotation{constructor(e){super(e)}}n.Slope=_,l=_,_.__name__=\"Slope\",l.prototype.default_view=a,l.mixins(c.Line),l.define((({Number:e,Nullable:t})=>({gradient:[t(e),null],y_intercept:[t(e),null]}))),l.override({line_color:\"black\"})},\n function _(e,t,i,o,n){o();const s=e(1);var l;const a=e(40),r=(0,s.__importStar)(e(48)),c=e(20);class d extends a.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.plot_view.request_paint(this)))}_render(){const{location:e}=this.model;if(null==e)return;const{frame:t}=this.plot_view,i=this.coordinates.x_scale,o=this.coordinates.y_scale,n=(t,i)=>\"data\"==this.model.location_units?t.compute(e):this.model.for_hover?e:i.compute(e);let s,l,a,r;\"width\"==this.model.dimension?(a=n(o,t.bbox.yview),l=t.bbox.left,r=t.bbox.width,s=this.model.line_width):(a=t.bbox.top,l=n(i,t.bbox.xview),r=this.model.line_width,s=t.bbox.height);const{ctx:c}=this.layer;c.save(),c.beginPath(),this.visuals.line.set_value(c),c.moveTo(l,a),\"width\"==this.model.dimension?c.lineTo(l+r,a):c.lineTo(l,a+s),c.stroke(),c.restore()}}i.SpanView=d,d.__name__=\"SpanView\";class _ extends a.Annotation{constructor(e){super(e)}}i.Span=_,l=_,_.__name__=\"Span\",l.prototype.default_view=d,l.mixins(r.Line),l.define((({Number:e,Nullable:t})=>({render_mode:[c.RenderMode,\"canvas\"],location:[t(e),null],location_units:[c.SpatialUnits,\"data\"],dimension:[c.Dimension,\"width\"]}))),l.internal((({Boolean:e})=>({for_hover:[e,!1]}))),l.override({line_color:\"black\"})},\n function _(i,e,t,o,l){var s;o();const a=i(40),_=i(221),n=i(113),r=i(43),h=i(123),b=i(65);class v extends a.AnnotationView{constructor(){super(...arguments),this._invalidate_toolbar=!0,this._previous_bbox=new b.BBox}update_layout(){this.layout=new h.SideLayout(this.panel,(()=>this.get_size()),!0)}initialize(){super.initialize(),this.el=(0,r.div)(),this.plot_view.canvas_view.add_event(this.el)}async lazy_initialize(){await super.lazy_initialize(),this._toolbar_view=await(0,n.build_view)(this.model.toolbar,{parent:this}),this.plot_view.visibility_callbacks.push((i=>this._toolbar_view.set_visibility(i)))}remove(){this._toolbar_view.remove(),(0,r.remove)(this.el),super.remove()}render(){this.model.visible||(0,r.undisplay)(this.el),super.render()}_render(){const{bbox:i}=this.layout;this._previous_bbox.equals(i)||((0,r.position)(this.el,i),this._previous_bbox=i,this._invalidate_toolbar=!0),this._invalidate_toolbar&&(this.el.style.position=\"absolute\",this.el.style.overflow=\"hidden\",(0,r.empty)(this.el),this.el.appendChild(this._toolbar_view.el),this._toolbar_view.layout.bbox=i,this._toolbar_view.render(),this._invalidate_toolbar=!1),(0,r.display)(this.el)}_get_size(){const{tools:i,logo:e}=this.model.toolbar;return{width:30*i.length+(null!=e?25:0)+15,height:30}}}t.ToolbarPanelView=v,v.__name__=\"ToolbarPanelView\";class d extends a.Annotation{constructor(i){super(i)}}t.ToolbarPanel=d,s=d,d.__name__=\"ToolbarPanel\",s.prototype.default_view=v,s.define((({Ref:i})=>({toolbar:[i(_.Toolbar)]})))},\n function _(t,e,s,i,o){var c;i();const n=t(8),a=t(9),l=t(13),r=t(222),_=t(223),u=t(232),p=t(233);function v(t){switch(t){case\"tap\":return\"active_tap\";case\"pan\":return\"active_drag\";case\"pinch\":case\"scroll\":return\"active_scroll\";case\"multi\":return\"active_multi\"}return null}function h(t){return\"tap\"==t||\"pan\"==t}s.Drag=r.Tool,s.Inspection=r.Tool,s.Scroll=r.Tool,s.Tap=r.Tool;class f extends p.ToolbarBase{constructor(t){super(t)}connect_signals(){super.connect_signals();const{tools:t,active_drag:e,active_inspect:s,active_scroll:i,active_tap:o,active_multi:c}=this.properties;this.on_change([t,e,s,i,o,c],(()=>this._init_tools()))}_init_tools(){if(super._init_tools(),\"auto\"==this.active_inspect);else if(this.active_inspect instanceof u.InspectTool){let t=!1;for(const e of this.inspectors)e!=this.active_inspect?e.active=!1:t=!0;t||(this.active_inspect=null)}else if((0,n.isArray)(this.active_inspect)){const t=(0,a.intersection)(this.active_inspect,this.inspectors);t.length!=this.active_inspect.length&&(this.active_inspect=t);for(const t of this.inspectors)(0,a.includes)(this.active_inspect,t)||(t.active=!1)}else if(null==this.active_inspect)for(const t of this.inspectors)t.active=!1;const t=t=>{t.active?this._active_change(t):t.active=!0};for(const t of(0,l.values)(this.gestures)){t.tools=(0,a.sort_by)(t.tools,(t=>t.default_order));for(const e of t.tools)this.connect(e.properties.active.change,(()=>this._active_change(e)))}for(const[e,s]of(0,l.entries)(this.gestures)){const i=v(e);if(i){const o=this[i];\"auto\"==o?0!=s.tools.length&&h(e)&&t(s.tools[0]):null!=o&&((0,a.includes)(this.tools,o)?t(o):this[i]=null)}}}}s.Toolbar=f,c=f,f.__name__=\"Toolbar\",c.prototype.default_view=p.ToolbarBaseView,c.define((({Or:t,Ref:e,Auto:i,Null:o})=>({active_drag:[t(e(s.Drag),i,o),\"auto\"],active_inspect:[t(e(s.Inspection),i,o),\"auto\"],active_scroll:[t(e(s.Scroll),i,o),\"auto\"],active_tap:[t(e(s.Tap),i,o),\"auto\"],active_multi:[t(e(_.GestureTool),i,o),\"auto\"]})))},\n function _(t,e,n,o,s){var i;o();const a=t(42),r=t(9),l=t(53);class c extends a.View{get plot_view(){return this.parent}get plot_model(){return this.parent.model}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>{this.model.active?this.activate():this.deactivate()}))}activate(){}deactivate(){}}n.ToolView=c,c.__name__=\"ToolView\";class _ extends l.Model{constructor(t){super(t)}get synthetic_renderers(){return[]}_get_dim_limits([t,e],[n,o],s,i){const a=s.bbox.h_range;let l;\"width\"==i||\"both\"==i?(l=[(0,r.min)([t,n]),(0,r.max)([t,n])],l=[(0,r.max)([l[0],a.start]),(0,r.min)([l[1],a.end])]):l=[a.start,a.end];const c=s.bbox.v_range;let _;return\"height\"==i||\"both\"==i?(_=[(0,r.min)([e,o]),(0,r.max)([e,o])],_=[(0,r.max)([_[0],c.start]),(0,r.min)([_[1],c.end])]):_=[c.start,c.end],[l,_]}static register_alias(t,e){this.prototype._known_aliases.set(t,e)}static from_string(t){const e=this.prototype._known_aliases.get(t);if(null!=e)return e();{const e=[...this.prototype._known_aliases.keys()];throw new Error(`unexpected tool name '${t}', possible tools are ${e.join(\", \")}`)}}}n.Tool=_,i=_,_.__name__=\"Tool\",i.prototype._known_aliases=new Map,i.define((({String:t,Nullable:e})=>({description:[e(t),null]}))),i.internal((({Boolean:t})=>({active:[t,!1]})))},\n function _(e,o,t,s,n){s();const u=e(224),_=e(231);class l extends u.ButtonToolView{}t.GestureToolView=l,l.__name__=\"GestureToolView\";class i extends u.ButtonTool{constructor(e){super(e),this.button_view=_.OnOffButtonView}}t.GestureTool=i,i.__name__=\"GestureTool\"},\n function _(t,e,o,s,i){s();const n=t(1);var l;const r=(0,n.__importDefault)(t(225)),a=t(226),u=t(222),h=t(43),_=t(34),d=t(8),c=t(9),m=(0,n.__importStar)(t(227)),p=m,v=(0,n.__importDefault)(t(228)),f=(0,n.__importDefault)(t(229)),g=t(230);class b extends a.DOMView{initialize(){super.initialize();const t=this.model.menu;if(null!=t){const e=this.parent.model.toolbar_location,o=\"left\"==e||\"above\"==e,s=this.parent.model.horizontal?\"vertical\":\"horizontal\";this._menu=new g.ContextMenu(o?(0,c.reversed)(t):t,{orientation:s,prevent_hide:t=>t.target==this.el})}this._hammer=new r.default(this.el,{touchAction:\"auto\",inputClass:r.default.TouchMouseInput}),this.connect(this.model.change,(()=>this.render())),this._hammer.on(\"tap\",(t=>{var e;(null===(e=this._menu)||void 0===e?void 0:e.is_open)?this._menu.hide():t.target==this.el&&this._clicked()})),this._hammer.on(\"press\",(()=>this._pressed())),this.el.addEventListener(\"keydown\",(t=>{t.keyCode==h.Keys.Enter&&this._clicked()}))}remove(){var t;this._hammer.destroy(),null===(t=this._menu)||void 0===t||t.remove(),super.remove()}styles(){return[...super.styles(),m.default,v.default,f.default]}css_classes(){return super.css_classes().concat(p.toolbar_button)}render(){(0,h.empty)(this.el);const t=this.model.computed_icon;(0,d.isString)(t)&&((0,_.startsWith)(t,\"data:image\")?this.el.style.backgroundImage=`url(\"${t}\")`:this.el.classList.add(t)),this.el.title=this.model.tooltip,this.el.tabIndex=0,null!=this._menu&&this.root.el.appendChild(this._menu.el)}_pressed(){var t;const e=(()=>{switch(this.parent.model.toolbar_location){case\"right\":return{left_of:this.el};case\"left\":return{right_of:this.el};case\"above\":return{below:this.el};case\"below\":return{above:this.el}}})();null===(t=this._menu)||void 0===t||t.toggle(e)}}o.ButtonToolButtonView=b,b.__name__=\"ButtonToolButtonView\";class w extends u.ToolView{}o.ButtonToolView=w,w.__name__=\"ButtonToolView\";class y extends u.Tool{constructor(t){super(t)}_get_dim_tooltip(t){const{description:e,tool_name:o}=this;return null!=e?e:\"both\"==t?o:`${o} (${\"width\"==t?\"x\":\"y\"}-axis)`}get tooltip(){var t;return null!==(t=this.description)&&void 0!==t?t:this.tool_name}get computed_icon(){return this.icon}get menu(){return null}}o.ButtonTool=y,l=y,y.__name__=\"ButtonTool\",l.internal((({Boolean:t})=>({disabled:[t,!1]})))},\n function _(t,e,i,n,r){\n /*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n !function(t,i,n,r){\"use strict\";var s,o=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],a=i.createElement(\"div\"),h=Math.round,u=Math.abs,c=Date.now;function l(t,e,i){return setTimeout(T(t,i),e)}function p(t,e,i){return!!Array.isArray(t)&&(f(t,i[e],i),!0)}function f(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==r)for(n=0;n\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",s=t.console&&(t.console.warn||t.console.log);return s&&s.call(t.console,r,n),e.apply(this,arguments)}}s=\"function\"!=typeof Object.assign?function(t){if(t===r||null===t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),i=1;i-1}function S(t){return t.trim().split(/\\s+/g)}function b(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var n=0;ni[e]})):n.sort()),n}function x(t,e){for(var i,n,s=e[0].toUpperCase()+e.slice(1),a=0;a1&&!i.firstMultiple?i.firstMultiple=H(e):1===s&&(i.firstMultiple=!1);var o=i.firstInput,a=i.firstMultiple,h=a?a.center:o.center,l=e.center=L(n);e.timeStamp=c(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=G(h,l),e.distance=j(h,l),function(t,e){var i=e.center,n=t.offsetDelta||{},r=t.prevDelta||{},s=t.prevInput||{};1!==e.eventType&&4!==s.eventType||(r=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},n=t.offsetDelta={x:i.x,y:i.y});e.deltaX=r.x+(i.x-n.x),e.deltaY=r.y+(i.y-n.y)}(i,e),e.offsetDirection=V(e.deltaX,e.deltaY);var p=U(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=p.x,e.overallVelocityY=p.y,e.overallVelocity=u(p.x)>u(p.y)?p.x:p.y,e.scale=a?(f=a.pointers,v=n,j(v[0],v[1],W)/j(f[0],f[1],W)):1,e.rotation=a?function(t,e){return G(e[1],e[0],W)+G(t[1],t[0],W)}(a.pointers,n):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,s,o,a=t.lastInterval||e,h=e.timeStamp-a.timeStamp;if(8!=e.eventType&&(h>25||a.velocity===r)){var c=e.deltaX-a.deltaX,l=e.deltaY-a.deltaY,p=U(h,c,l);n=p.x,s=p.y,i=u(p.x)>u(p.y)?p.x:p.y,o=V(c,l),t.lastInterval=e}else i=a.velocity,n=a.velocityX,s=a.velocityY,o=a.direction;e.velocity=i,e.velocityX=n,e.velocityY=s,e.direction=o}(i,e);var f,v;var d=t.element;_(e.srcEvent.target,d)&&(d=e.srcEvent.target);e.target=d}(t,i),t.emit(\"hammer.input\",i),t.recognize(i),t.session.prevInput=i}function H(t){for(var e=[],i=0;i=u(e)?t<0?2:4:e<0?8:16}function j(t,e,i){i||(i=F);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function G(t,e,i){i||(i=F);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}q.prototype={handler:function(){},init:function(){this.evEl&&I(this.element,this.evEl,this.domHandler),this.evTarget&&I(this.target,this.evTarget,this.domHandler),this.evWin&&I(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&A(this.element,this.evEl,this.domHandler),this.evTarget&&A(this.target,this.evTarget,this.domHandler),this.evWin&&A(O(this.element),this.evWin,this.domHandler)}};var Z={mousedown:1,mousemove:2,mouseup:4},B=\"mousedown\",$=\"mousemove mouseup\";function J(){this.evEl=B,this.evWin=$,this.pressed=!1,q.apply(this,arguments)}g(J,q,{handler:function(t){var e=Z[t.type];1&e&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=4),this.pressed&&(4&e&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:X,srcEvent:t}))}});var K={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},Q={2:N,3:\"pen\",4:X,5:\"kinect\"},tt=\"pointerdown\",et=\"pointermove pointerup pointercancel\";function it(){this.evEl=tt,this.evWin=et,q.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}t.MSPointerEvent&&!t.PointerEvent&&(tt=\"MSPointerDown\",et=\"MSPointerMove MSPointerUp MSPointerCancel\"),g(it,q,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\"ms\",\"\"),r=K[n],s=Q[t.pointerType]||t.pointerType,o=s==N,a=b(e,t.pointerId,\"pointerId\");1&r&&(0===t.button||o)?a<0&&(e.push(t),a=e.length-1):12&r&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var nt={touchstart:1,touchmove:2,touchend:4,touchcancel:8},rt=\"touchstart\",st=\"touchstart touchmove touchend touchcancel\";function ot(){this.evTarget=rt,this.evWin=st,this.started=!1,q.apply(this,arguments)}function at(t,e){var i=P(t.touches),n=P(t.changedTouches);return 12&e&&(i=D(i.concat(n),\"identifier\",!0)),[i,n]}g(ot,q,{handler:function(t){var e=nt[t.type];if(1===e&&(this.started=!0),this.started){var i=at.call(this,t,e);12&e&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:N,srcEvent:t})}}});var ht={touchstart:1,touchmove:2,touchend:4,touchcancel:8},ut=\"touchstart touchmove touchend touchcancel\";function ct(){this.evTarget=ut,this.targetIds={},q.apply(this,arguments)}function lt(t,e){var i=P(t.touches),n=this.targetIds;if(3&e&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,s,o=P(t.changedTouches),a=[],h=this.target;if(s=i.filter((function(t){return _(t.target,h)})),1===e)for(r=0;r-1&&n.splice(t,1)}),2500)}}function dt(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,n=0;n-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,i=this.state;function n(i){e.manager.emit(i,t)}i<8&&n(e.options.event+Dt(i)),n(e.options.event),t.additionalEvent&&n(t.additionalEvent),i>=8&&n(e.options.event+Dt(i))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=bt},canEmit:function(){for(var t=0;te.threshold&&r&e.direction},attrTest:function(t){return Ot.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=xt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),g(Mt,Ot,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[It]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),g(zt,Pt,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[yt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distancee.time;if(this._input=t,!n||!i||12&t.eventType&&!r)this.reset();else if(1&t.eventType)this.reset(),this._timer=l((function(){this.state=8,this.tryEmit()}),e.time,this);else if(4&t.eventType)return 8;return bt},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&4&t.eventType?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=c(),this.manager.emit(this.options.event,this._input)))}}),g(Nt,Ot,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[It]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),g(Xt,Ot,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:30,pointers:1},getTouchAction:function(){return Rt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return 30&i?e=t.overallVelocity:6&i?e=t.overallVelocityX:i&Y&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&u(e)>this.options.velocity&&4&t.eventType},emit:function(t){var e=xt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),g(Yt,Pt,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Et]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance .bk-divider{cursor:default;overflow:hidden;background-color:#e5e5e5;}.bk-root .bk-context-menu.bk-horizontal > .bk-divider{width:1px;margin:5px 0;}.bk-root .bk-context-menu.bk-vertical > .bk-divider{height:1px;margin:0 5px;}.bk-root .bk-context-menu > :not(.bk-divider){border:1px solid transparent;}.bk-root .bk-context-menu > :not(.bk-divider).bk-active{border-color:#26aae1;}.bk-root .bk-context-menu > :not(.bk-divider):hover{background-color:#f9f9f9;}.bk-root .bk-context-menu > :not(.bk-divider):focus,.bk-root .bk-context-menu > :not(.bk-divider):focus-visible{outline:1px dotted #26aae1;outline-offset:-1px;}.bk-root .bk-context-menu > :not(.bk-divider)::-moz-focus-inner{border:0;}.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):first-child{border-top-left-radius:4px;border-bottom-left-radius:4px;}.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;}.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):first-child{border-top-left-radius:4px;border-top-right-radius:4px;}.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;}.bk-root .bk-menu{position:absolute;left:0;width:100%;z-index:100;cursor:pointer;font-size:12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 6px 12px rgba(0, 0, 0, 0.175);}.bk-root .bk-menu.bk-above{bottom:100%;}.bk-root .bk-menu.bk-below{top:100%;}.bk-root .bk-menu > .bk-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.bk-root .bk-menu > :not(.bk-divider){padding:6px 12px;}.bk-root .bk-menu > :not(.bk-divider):hover,.bk-root .bk-menu > :not(.bk-divider).bk-active{background-color:#e6e6e6;}.bk-root .bk-caret{display:inline-block;vertical-align:middle;width:0;height:0;margin:0 5px;}.bk-root .bk-caret.bk-down{border-top:4px solid;}.bk-root .bk-caret.bk-up{border-bottom:4px solid;}.bk-root .bk-caret.bk-down,.bk-root .bk-caret.bk-up{border-right:4px solid transparent;border-left:4px solid transparent;}.bk-root .bk-caret.bk-left{border-right:4px solid;}.bk-root .bk-caret.bk-right{border-left:4px solid;}.bk-root .bk-caret.bk-left,.bk-root .bk-caret.bk-right{border-top:4px solid transparent;border-bottom:4px solid transparent;}\"},\n function _(t,e,i,n,o){n();const s=t(1),l=t(43),h=t(9),r=(0,s.__importStar)(t(229));class d{constructor(t,e={}){var i,n;this.items=t,this.el=(0,l.div)(),this._open=!1,this._item_click=t=>{var e;null===(e=t.handler)||void 0===e||e.call(t),this.hide()},this._on_mousedown=t=>{var e;const{target:i}=t;i instanceof Node&&this.el.contains(i)||(null===(e=this.prevent_hide)||void 0===e?void 0:e.call(this,t))||this.hide()},this._on_keydown=t=>{t.keyCode==l.Keys.Esc&&this.hide()},this._on_blur=()=>{this.hide()},this.orientation=null!==(i=e.orientation)&&void 0!==i?i:\"vertical\",this.reversed=null!==(n=e.reversed)&&void 0!==n&&n,this.prevent_hide=e.prevent_hide,(0,l.undisplay)(this.el)}get is_open(){return this._open}get can_open(){return 0!=this.items.length}remove(){(0,l.remove)(this.el),this._unlisten()}_listen(){document.addEventListener(\"mousedown\",this._on_mousedown),document.addEventListener(\"keydown\",this._on_keydown),window.addEventListener(\"blur\",this._on_blur)}_unlisten(){document.removeEventListener(\"mousedown\",this._on_mousedown),document.removeEventListener(\"keydown\",this._on_keydown),window.removeEventListener(\"blur\",this._on_blur)}_position(t){const e=this.el.parentElement;if(null!=e){const i=(()=>{if(\"left_of\"in t){const{left:e,top:i}=t.left_of.getBoundingClientRect();return{right:e,top:i}}if(\"right_of\"in t){const{top:e,right:i}=t.right_of.getBoundingClientRect();return{left:i,top:e}}if(\"below\"in t){const{left:e,bottom:i}=t.below.getBoundingClientRect();return{left:e,top:i}}if(\"above\"in t){const{left:e,top:i}=t.above.getBoundingClientRect();return{left:e,bottom:i}}return t})(),n=e.getBoundingClientRect();this.el.style.left=null!=i.left?i.left-n.left+\"px\":\"\",this.el.style.top=null!=i.top?i.top-n.top+\"px\":\"\",this.el.style.right=null!=i.right?n.right-i.right+\"px\":\"\",this.el.style.bottom=null!=i.bottom?n.bottom-i.bottom+\"px\":\"\"}}render(){var t;(0,l.empty)(this.el,!0),(0,l.classes)(this.el).add(\"bk-context-menu\",`bk-${this.orientation}`);const e=this.reversed?(0,h.reversed)(this.items):this.items;for(const i of e){let e;if(null==i)e=(0,l.div)({class:r.divider});else{if(null!=i.if&&!i.if())continue;if(null!=i.content)e=i.content;else{const n=null!=i.icon?(0,l.div)({class:[\"bk-menu-icon\",i.icon]}):null,o=[(null===(t=i.active)||void 0===t?void 0:t.call(i))?\"bk-active\":null,i.class];e=(0,l.div)({class:o,title:i.tooltip,tabIndex:0},n,i.label,i.content),e.addEventListener(\"click\",(()=>{this._item_click(i)})),e.addEventListener(\"keydown\",(t=>{t.keyCode==l.Keys.Enter&&this._item_click(i)}))}}this.el.appendChild(e)}}show(t){if(0!=this.items.length&&!this._open){if(this.render(),0==this.el.children.length)return;this._position(null!=t?t:{left:0,top:0}),(0,l.display)(this.el),this._listen(),this._open=!0}}hide(){this._open&&(this._open=!1,this._unlisten(),(0,l.undisplay)(this.el))}toggle(t){this._open?this.hide():this.show(t)}}i.ContextMenu=d,d.__name__=\"ContextMenu\"},\n function _(t,e,i,n,o){n();const s=t(1),c=t(224),l=(0,s.__importStar)(t(227)),a=t(43);class _ extends c.ButtonToolButtonView{render(){super.render(),(0,a.classes)(this.el).toggle(l.active,this.model.active)}_clicked(){const{active:t}=this.model;this.model.active=!t}}i.OnOffButtonView=_,_.__name__=\"OnOffButtonView\"},\n function _(e,o,t,n,s){var c;n();const l=e(224),_=e(231);class i extends l.ButtonToolView{}t.InspectToolView=i,i.__name__=\"InspectToolView\";class a extends l.ButtonTool{constructor(e){super(e),this.event_type=\"move\"}}t.InspectTool=a,c=a,a.__name__=\"InspectTool\",c.prototype.button_view=_.OnOffButtonView,c.define((({Boolean:e})=>({toggleable:[e,!0]}))),c.override({active:!0})},\n function _(t,o,e,l,i){l();const s=t(1);var n,a;const r=t(19),c=t(43),h=t(113),_=t(226),u=t(20),v=t(9),d=t(234),p=t(13),b=t(8),g=t(235),f=t(65),m=t(53),w=t(222),y=t(223),T=t(238),z=t(239),x=t(232),B=t(230),C=(0,s.__importStar)(t(227)),k=C,L=(0,s.__importStar)(t(240)),M=L;class S extends m.Model{constructor(t){super(t)}get visible(){var t;return!this.autohide||null!==(t=this._visible)&&void 0!==t&&t}}e.ToolbarViewModel=S,n=S,S.__name__=\"ToolbarViewModel\",n.define((({Boolean:t})=>({autohide:[t,!1]}))),n.internal((({Boolean:t,Nullable:o})=>({_visible:[o(t),null]})));class $ extends _.DOMView{constructor(){super(...arguments),this.layout={bbox:new f.BBox}}initialize(){super.initialize(),this._tool_button_views=new Map,this._toolbar_view_model=new S({autohide:this.model.autohide});const{toolbar_location:t}=this.model,o=\"left\"==t||\"above\"==t,e=this.model.horizontal?\"vertical\":\"horizontal\";this._overflow_menu=new B.ContextMenu([],{orientation:e,reversed:o})}async lazy_initialize(){await super.lazy_initialize(),await this._build_tool_button_views()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tools.change,(async()=>{await this._build_tool_button_views(),this.render()})),this.connect(this.model.properties.autohide.change,(()=>{this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change()})),this.connect(this._toolbar_view_model.properties._visible.change,(()=>this._on_visible_change()))}styles(){return[...super.styles(),C.default,L.default]}remove(){(0,h.remove_views)(this._tool_button_views),super.remove()}async _build_tool_button_views(){const t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;await(0,h.build_views)(this._tool_button_views,t,{parent:this},(t=>t.button_view))}set_visibility(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)}_on_visible_change(){const{visible:t}=this._toolbar_view_model;(0,c.classes)(this.el).toggle(k.toolbar_hidden,!t)}render(){(0,c.empty)(this.el),this.el.classList.add(k.toolbar),this.el.classList.add(k[this.model.toolbar_location]),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change();const{horizontal:t}=this.model;let o=0;if(null!=this.model.logo){const e=\"grey\"===this.model.logo?M.grey:null,l=(0,c.a)({href:\"https://bokeh.org/\",target:\"_blank\",class:[M.logo,M.logo_small,e]});this.el.appendChild(l);const{width:i,height:s}=l.getBoundingClientRect();o+=t?i:s}for(const[,t]of this._tool_button_views)t.render();const e=[],l=t=>this._tool_button_views.get(t).el,{gestures:i}=this.model;for(const t of(0,p.values)(i))e.push(t.tools.map(l));e.push(this.model.actions.map(l)),e.push(this.model.inspectors.filter((t=>t.toggleable)).map(l));const s=e.filter((t=>0!=t.length)),n=()=>(0,c.div)({class:k.divider}),{bbox:a}=this.layout;let r=!1;this.root.el.appendChild(this._overflow_menu.el);const h=(0,c.div)({class:k.tool_overflow,tabIndex:0},t?\"\\u22ee\":\"\\u22ef\"),_=()=>{const t=(()=>{switch(this.model.toolbar_location){case\"right\":return{left_of:h};case\"left\":return{right_of:h};case\"above\":return{below:h};case\"below\":return{above:h}}})();this._overflow_menu.toggle(t)};h.addEventListener(\"click\",(()=>{_()})),h.addEventListener(\"keydown\",(t=>{t.keyCode==c.Keys.Enter&&_()}));for(const e of(0,d.join)(s,n))if(r)this._overflow_menu.items.push({content:e,class:t?k.right:k.above});else{this.el.appendChild(e);const{width:l,height:i}=e.getBoundingClientRect();if(o+=t?l:i,r=t?o>a.width-15:o>a.height-15,r){this.el.removeChild(e),this.el.appendChild(h);const{items:t}=this._overflow_menu;t.splice(0,t.length),t.push({content:e})}}}update_layout(){}update_position(){}after_layout(){this._has_finished=!0}export(t,o=!0){const e=\"png\"==t?\"canvas\":\"svg\",l=new g.CanvasLayer(e,o);return l.resize(0,0),l}}function V(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}e.ToolbarBaseView=$,$.__name__=\"ToolbarBaseView\";class A extends m.Model{constructor(t){super(t)}initialize(){super.initialize(),this._init_tools()}_init_tools(){const t=function(t,o){if(t.length!=o.length)return!0;const e=new Set(o.map((t=>t.id)));return(0,v.some)(t,(t=>!e.has(t.id)))},o=this.tools.filter((t=>t instanceof x.InspectTool));t(this.inspectors,o)&&(this.inspectors=o);const e=this.tools.filter((t=>t instanceof z.HelpTool));t(this.help,e)&&(this.help=e);const l=this.tools.filter((t=>t instanceof T.ActionTool));t(this.actions,l)&&(this.actions=l);const i=(t,o)=>{t in this.gestures||r.logger.warn(`Toolbar: unknown event type '${t}' for tool: ${o}`)},s={pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}};for(const t of this.tools)if(t instanceof y.GestureTool&&t.event_type)if((0,b.isString)(t.event_type))s[t.event_type].tools.push(t),i(t.event_type,t);else{s.multi.tools.push(t);for(const o of t.event_type)i(o,t)}for(const o of Object.keys(s)){const e=this.gestures[o];t(e.tools,s[o].tools)&&(e.tools=s[o].tools),e.active&&(0,v.every)(e.tools,(t=>t.id!=e.active.id))&&(e.active=null)}}get horizontal(){return\"above\"===this.toolbar_location||\"below\"===this.toolbar_location}get vertical(){return\"left\"===this.toolbar_location||\"right\"===this.toolbar_location}_active_change(t){const{event_type:o}=t;if(null==o)return;const e=(0,b.isString)(o)?[o]:o;for(const o of e)if(t.active){const e=this.gestures[o].active;null!=e&&t!=e&&(r.logger.debug(`Toolbar: deactivating tool: ${e} for event type '${o}'`),e.active=!1),this.gestures[o].active=t,r.logger.debug(`Toolbar: activating tool: ${t} for event type '${o}'`)}else this.gestures[o].active=null}}e.ToolbarBase=A,a=A,A.__name__=\"ToolbarBase\",a.prototype.default_view=$,a.define((({Boolean:t,Array:o,Ref:e,Nullable:l})=>({tools:[o(e(w.Tool)),[]],logo:[l(u.Logo),\"normal\"],autohide:[t,!1]}))),a.internal((({Array:t,Struct:o,Ref:e,Nullable:l})=>{const i=o({tools:t(e(y.GestureTool)),active:l(e(w.Tool))});return{gestures:[o({pan:i,scroll:i,pinch:i,tap:i,doubletap:i,press:i,pressup:i,rotate:i,move:i,multi:i}),V],actions:[t(e(T.ActionTool)),[]],inspectors:[t(e(x.InspectTool)),[]],help:[t(e(z.HelpTool)),[]],toolbar_location:[u.Location,\"right\"]}}))},\n function _(n,o,e,t,f){t();const r=n(9);function*i(n,o){const e=n.length;if(o>e)return;const t=(0,r.range)(o);for(yield t.map((o=>n[o]));;){let f;for(const n of(0,r.reversed)((0,r.range)(o)))if(t[n]!=n+e-o){f=n;break}if(null==f)return;t[f]+=1;for(const n of(0,r.range)(f+1,o))t[n]=t[n-1]+1;yield t.map((o=>n[o]))}}e.enumerate=function*(n){let o=0;for(const e of n)yield[e,o++]},e.join=function*(n,o){let e=!0;for(const t of n)e?e=!1:null!=o&&(yield o()),yield*t},e.combinations=i,e.subsets=function*(n){for(const o of(0,r.range)(n.length+1))yield*i(n,o)}},\n function _(t,e,s,i,n){i();const o=t(236),a=t(65),r=t(43);function h(t){!function(t){void 0===t.lineDash&&Object.defineProperty(t,\"lineDash\",{get:()=>t.getLineDash(),set:e=>t.setLineDash(e)})}(t),function(t){t.setImageSmoothingEnabled=e=>{t.imageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.oImageSmoothingEnabled=e,t.webkitImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e},t.getImageSmoothingEnabled=()=>{const e=t.imageSmoothingEnabled;return null==e||e}}(t),function(t){t.ellipse||(t.ellipse=function(e,s,i,n,o,a,r,h=!1){const l=.551784;t.translate(e,s),t.rotate(o);let c=i,g=n;h&&(c=-i,g=-n),t.moveTo(-c,0),t.bezierCurveTo(-c,g*l,-c*l,g,0,g),t.bezierCurveTo(c*l,g,c,g*l,c,0),t.bezierCurveTo(c,-g*l,c*l,-g,0,-g),t.bezierCurveTo(-c*l,-g,-c,-g*l,-c,0),t.rotate(-o),t.translate(-e,-s)})}(t)}const l={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class c{constructor(t,e){switch(this.backend=t,this.hidpi=e,this.pixel_ratio=1,this.bbox=new a.BBox,t){case\"webgl\":case\"canvas\":{this._el=this._canvas=(0,r.canvas)({style:l});const t=this.canvas.getContext(\"2d\");if(null==t)throw new Error(\"unable to obtain 2D rendering context\");this._ctx=t,e&&(this.pixel_ratio=devicePixelRatio);break}case\"svg\":{const t=new o.SVGRenderingContext2D;this._ctx=t,this._canvas=t.get_svg(),this._el=(0,r.div)({style:l},this._canvas);break}}this._ctx.layer=this,h(this._ctx)}get canvas(){return this._canvas}get ctx(){return this._ctx}get el(){return this._el}resize(t,e){this.bbox=new a.BBox({left:0,top:0,width:t,height:e});const s=this._ctx instanceof o.SVGRenderingContext2D?this._ctx:this.canvas;s.width=t*this.pixel_ratio,s.height=e*this.pixel_ratio}undo_transform(t){const{ctx:e}=this;if(void 0===e.getTransform)t(e);else{const s=e.getTransform();e.setTransform(this._base_transform);try{t(e)}finally{e.setTransform(s)}}}prepare(){const{ctx:t,hidpi:e,pixel_ratio:s}=this;t.save(),e&&(t.scale(s,s),t.translate(.5,.5)),void 0!==t.getTransform&&(this._base_transform=t.getTransform()),this.clear()}clear(){const{x:t,y:e,width:s,height:i}=this.bbox;this.ctx.clearRect(t,e,s,i)}finish(){this.ctx.restore()}to_blob(){const{_canvas:t}=this;if(t instanceof HTMLCanvasElement)return null!=t.msToBlob?Promise.resolve(t.msToBlob()):new Promise(((e,s)=>{t.toBlob((t=>null!=t?e(t):s()),\"image/png\")}));{const t=this._ctx.get_serialized_svg(!0),e=new Blob([t],{type:\"image/svg+xml\"});return Promise.resolve(e)}}}s.CanvasLayer=c,c.__name__=\"CanvasLayer\"},\n function _(t,e,i,s,r){s();const n=t(122),a=t(8),o=t(237),l=t(10),h=t(43);function _(t){var e;const i={left:\"start\",right:\"end\",center:\"middle\",start:\"start\",end:\"end\"};return null!==(e=i[t])&&void 0!==e?e:i.start}function c(t){var e;const i={alphabetic:\"alphabetic\",hanging:\"hanging\",top:\"text-before-edge\",bottom:\"text-after-edge\",middle:\"central\"};return null!==(e=i[t])&&void 0!==e?e:i.alphabetic}const p=function(t,e){const i=new Map,s=t.split(\",\");e=null!=e?e:10;for(let t=0;t=0?Math.acos(e):-Math.acos(e)}const v=b(f),A=b(g);this.lineTo(d+f[0]*r,m+f[1]*r),this.arc(d,m,r,v,A)}stroke(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"fill\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"stroke\"),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}fill(t,e){let i=null;if(t instanceof Path2D)i=t;else{if(\"evenodd\"!=t&&\"nonzero\"!=t&&null!=t||null!=e)throw new Error(\"invalid arguments\");e=t}if(null!=i)throw new Error(\"not implemented\");\"none\"!=this.__currentElement.getAttribute(\"fill\")&&this.__init_element(),\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"stroke\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"fill\"),null!=e&&this.__currentElement.setAttribute(\"fill-rule\",e),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}rect(t,e,i,s){isFinite(t+e+i+s)&&(this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+s),this.lineTo(t,e+s),this.lineTo(t,e))}fillRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.fill())}strokeRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.stroke())}__clearCanvas(){(0,h.empty)(this.__defs),(0,h.empty)(this.__root),this.__root.appendChild(this.__defs),this.__currentElement=this.__root}clearRect(t,e,i,s){if(!isFinite(t+e+i+s))return;if(0===t&&0===e&&i===this.width&&s===this.height)return void this.__clearCanvas();const r=this.__createElement(\"rect\",{x:t,y:e,width:i,height:s,fill:\"#FFFFFF\"},!0);this._apply_transform(r),this.__root.appendChild(r)}createLinearGradient(t,e,i,s){if(!isFinite(t+e+i+s))throw new Error(\"The provided double value is non-finite\");const[r,n]=this._transform.apply(t,e),[a,o]=this._transform.apply(i,s),l=this.__createElement(\"linearGradient\",{id:this._random_string(),x1:`${r}px`,x2:`${a}px`,y1:`${n}px`,y2:`${o}px`,gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(l),new d(l,this)}createRadialGradient(t,e,i,s,r,n){if(!isFinite(t+e+i+s+r+n))throw new Error(\"The provided double value is non-finite\");const[a,o]=this._transform.apply(t,e),[l,h]=this._transform.apply(s,r),_=this.__createElement(\"radialGradient\",{id:this._random_string(),cx:`${l}px`,cy:`${h}px`,r:`${n}px`,r0:`${i}px`,fx:`${a}px`,fy:`${o}px`,gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(_),new d(_,this)}__parseFont(){var t,e,i,s,r;const n=/^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-,\\'\\\"\\sa-z0-9]+?)\\s*$/i.exec(this.font);return{style:null!==(t=n[1])&&void 0!==t?t:\"normal\",size:null!==(e=n[4])&&void 0!==e?e:\"10px\",family:null!==(i=n[6])&&void 0!==i?i:\"sans-serif\",weight:null!==(s=n[3])&&void 0!==s?s:\"normal\",decoration:null!==(r=n[2])&&void 0!==r?r:\"normal\"}}__applyText(t,e,i,s){const r=this.__parseFont(),n=this.__createElement(\"text\",{\"font-family\":r.family,\"font-size\":r.size,\"font-style\":r.style,\"font-weight\":r.weight,\"text-decoration\":r.decoration,x:e,y:i,\"text-anchor\":_(this.textAlign),\"dominant-baseline\":c(this.textBaseline)},!0);n.appendChild(this.__document.createTextNode(t)),this._apply_transform(n),this.__currentElement=n,this.__applyStyleToCurrentElement(s);const a=(()=>{if(null!=this._clip_path){const t=this.__createElement(\"g\");return t.setAttribute(\"clip-path\",this._clip_path),t.appendChild(n),t}return n})();this.__root.appendChild(a)}fillText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"fill\")}strokeText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"stroke\")}measureText(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)}arc(t,e,i,s,r,n=!1){this.ellipse(t,e,i,i,0,s,r,n)}ellipse(t,e,i,s,r,n,a,o=!1){if(!isFinite(t+e+i+s+r+n+a))return;if(i<0||s<0)throw new DOMException(\"IndexSizeError, radius can't be negative\");const h=o?a-n:n-a;n%=2*Math.PI,a%=2*Math.PI;const _=t+i*Math.cos(n),c=e+s*Math.sin(n);this.lineTo(_,c);const p=180*r/Math.PI,u=o?0:1;if(Math.abs(n-a)<2*l.float32_epsilon&&!(Math.abs(h)<2*l.float32_epsilon&&h<0)){const r=t+i*Math.cos(n+Math.PI),a=e+s*Math.sin(n+Math.PI),[o,l]=this._transform.apply(_,c),[h,d]=this._transform.apply(r,a);this.__addPathCommand(o,l,`A ${i} ${s} ${p} 0 ${u} ${h} ${d} A ${i} ${s} ${p} 0 ${u} ${o} ${l}`)}else{const r=t+i*Math.cos(a),l=e+s*Math.sin(a);let h=a-n;h<0&&(h+=2*Math.PI);const _=o!==h>Math.PI?1:0,[c,d]=this._transform.apply(r,l);this.__addPathCommand(c,d,`A ${i} ${s} ${p} ${_} ${u} ${c} ${d}`)}}clip(){const t=this.__createElement(\"clipPath\"),e=this._random_string();this.__applyCurrentDefaultPath(),t.setAttribute(\"id\",e),t.appendChild(this.__currentElement),this.__defs.appendChild(t),this._clip_path=`url(#${e})`}drawImage(t,...e){let i,s,r,n,a,o,l,h;if(2==e.length){if([i,s]=e,!isFinite(i+s))return;a=0,o=0,l=t.width,h=t.height,r=l,n=h}else if(4==e.length){if([i,s,r,n]=e,!isFinite(i+s+r+n))return;a=0,o=0,l=t.width,h=t.height}else{if(8!==e.length)throw new Error(`Inavlid number of arguments passed to drawImage: ${arguments.length}`);if([a,o,l,h,i,s,r,n]=e,!isFinite(a+o+l+h+i+s+r+n))return}const _=this.__root,c=this._transform.clone().translate(i,s);if(t instanceof f||t instanceof SVGSVGElement){const e=(t instanceof SVGSVGElement?t:t.get_svg()).cloneNode(!0);let i;c.is_identity&&1==this.globalAlpha&&null==this._clip_path?i=_:(i=this.__createElement(\"g\"),c.is_identity||this._apply_transform(i,c),1!=this.globalAlpha&&i.setAttribute(\"opacity\",`${this.globalAlpha}`),null!=this._clip_path&&i.setAttribute(\"clip-path\",this._clip_path),_.appendChild(i));for(const t of[...e.childNodes])if(t instanceof SVGDefsElement){for(const e of[...t.childNodes])if(e instanceof Element){const t=e.getAttribute(\"id\");this.__ids.add(t),this.__defs.appendChild(e.cloneNode(!0))}}else i.appendChild(t.cloneNode(!0))}else if(t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__createElement(\"image\");if(e.setAttribute(\"width\",`${r}`),e.setAttribute(\"height\",`${n}`),e.setAttribute(\"preserveAspectRatio\",\"none\"),1!=this.globalAlpha&&e.setAttribute(\"opacity\",`${this.globalAlpha}`),a||o||l!==t.width||h!==t.height){const e=this.__document.createElement(\"canvas\");e.width=r,e.height=n;e.getContext(\"2d\").drawImage(t,a,o,l,h,0,0,r,n),t=e}this._apply_transform(e,c);const i=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");if(e.setAttribute(\"href\",i),null!=this._clip_path){const t=this.__createElement(\"g\");t.setAttribute(\"clip-path\",this._clip_path),t.appendChild(e),_.appendChild(t)}else _.appendChild(e)}else if(t instanceof HTMLCanvasElement){const e=this.__createElement(\"image\");e.setAttribute(\"width\",`${r}`),e.setAttribute(\"height\",`${n}`),e.setAttribute(\"preserveAspectRatio\",\"none\"),1!=this.globalAlpha&&e.setAttribute(\"opacity\",`${this.globalAlpha}`);const i=this.__document.createElement(\"canvas\");i.width=r,i.height=n;const s=i.getContext(\"2d\");if(s.imageSmoothingEnabled=!1,s.drawImage(t,a,o,l,h,0,0,r,n),t=i,this._apply_transform(e,c),e.setAttribute(\"href\",t.toDataURL()),null!=this._clip_path){const t=this.__createElement(\"g\");t.setAttribute(\"clip-path\",this._clip_path),t.appendChild(e),_.appendChild(t)}else _.appendChild(e)}}createPattern(t,e){const i=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"pattern\"),s=this._random_string();if(i.setAttribute(\"id\",s),i.setAttribute(\"width\",`${this._to_number(t.width)}`),i.setAttribute(\"height\",`${this._to_number(t.height)}`),i.setAttribute(\"patternUnits\",\"userSpaceOnUse\"),t instanceof HTMLCanvasElement||t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"image\"),s=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttribute(\"href\",s),i.appendChild(e),this.__defs.appendChild(i)}else if(t instanceof f){for(const e of[...t.__root.childNodes])e instanceof SVGDefsElement||i.appendChild(e.cloneNode(!0));this.__defs.appendChild(i)}else{if(!(t instanceof SVGSVGElement))throw new Error(\"unsupported\");for(const e of[...t.childNodes])e instanceof SVGDefsElement||i.appendChild(e.cloneNode(!0));this.__defs.appendChild(i)}return new m(i,this)}getLineDash(){const{lineDash:t}=this;return(0,a.isString)(t)?t.split(\",\").map((t=>parseInt(t))):null==t?[]:t}setLineDash(t){t&&t.length>0?this.lineDash=t.join(\",\"):this.lineDash=null}_to_number(t){return(0,a.isNumber)(t)?t:t.baseVal.value}getTransform(){return this._transform.to_DOMMatrix()}setTransform(...t){let e;e=(0,a.isNumber)(t[0])?new DOMMatrix(t):t[0]instanceof DOMMatrix?t[0]:new DOMMatrix(Object.values(!t[0])),this._transform=n.AffineTransform.from_DOMMatrix(e)}resetTransform(){this._transform=new n.AffineTransform}isPointInPath(...t){throw new Error(\"not implemented\")}isPointInStroke(...t){throw new Error(\"not implemented\")}createImageData(...t){throw new Error(\"not implemented\")}getImageData(t,e,i,s){throw new Error(\"not implemented\")}putImageData(...t){throw new Error(\"not implemented\")}drawFocusIfNeeded(...t){throw new Error(\"not implemented\")}scrollPathIntoView(...t){throw new Error(\"not implemented\")}}i.SVGRenderingContext2D=f,f.__name__=\"SVGRenderingContext2D\",f.__random=o.random},\n function _(e,t,s,n,r){n();const o=2147483647;class i{constructor(e){this.seed=e%o,this.seed<=0&&(this.seed+=2147483646)}integer(){return this.seed=48271*this.seed%o,this.seed}float(){return(this.integer()-1)/2147483646}floats(e,t=0,s=1){const n=new Array(e);for(let r=0;rthis.doit(o)))}}n.ActionToolView=_,_.__name__=\"ActionToolView\";class d extends s.ButtonTool{constructor(o){super(o),this.button_view=l,this.do=new c.Signal(this,\"do\")}}n.ActionTool=d,d.__name__=\"ActionTool\"},\n function _(o,e,t,l,i){var s;l();const n=o(238),r=o(228);class c extends n.ActionToolView{doit(){window.open(this.model.redirect)}}t.HelpToolView=c,c.__name__=\"HelpToolView\";class _ extends n.ActionTool{constructor(o){super(o),this.tool_name=\"Help\",this.icon=r.tool_icon_help}}t.HelpTool=_,s=_,_.__name__=\"HelpTool\",s.prototype.default_view=c,s.define((({String:o})=>({redirect:[o,\"https://docs.bokeh.org/en/latest/docs/user_guide/tools.html\"]}))),s.override({description:\"Click the question mark to learn more about Bokeh plot tools.\"}),s.register_alias(\"help\",(()=>new _))},\n function _(o,l,g,A,r){A(),g.root=\"bk-root\",g.logo=\"bk-logo\",g.grey=\"bk-grey\",g.logo_small=\"bk-logo-small\",g.logo_notebook=\"bk-logo-notebook\",g.default=\".bk-root .bk-logo{margin:5px;position:relative;display:block;background-repeat:no-repeat;}.bk-root .bk-logo.bk-grey{filter:url(\\\"data:image/svg+xml;utf8,#grayscale\\\");filter:gray;-webkit-filter:grayscale(100%);}.bk-root .bk-logo-small{width:20px;height:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==);}.bk-root .bk-logo-notebook{display:inline-block;vertical-align:middle;margin-right:5px;}\"},\n function _(e,t,s,i,l){i();const o=e(1);var n;const a=e(40),h=e(20),r=e(43),c=(0,o.__importStar)(e(242)),d=c;class p extends a.AnnotationView{initialize(){super.initialize(),this.el=(0,r.div)({class:d.tooltip}),(0,r.undisplay)(this.el),this.plot_view.canvas_view.add_overlay(this.el)}remove(){(0,r.remove)(this.el),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.content.change,(()=>this.render())),this.connect(this.model.properties.position.change,(()=>this._reposition()))}styles(){return[...super.styles(),c.default]}render(){this.model.visible||(0,r.undisplay)(this.el),super.render()}_render(){const{content:e}=this.model;null!=e?((0,r.empty)(this.el),(0,r.classes)(this.el).toggle(\"bk-tooltip-custom\",this.model.custom),this.el.appendChild(e),this.model.show_arrow&&this.el.classList.add(d.tooltip_arrow)):(0,r.undisplay)(this.el)}_reposition(){const{position:e}=this.model;if(null==e)return void(0,r.undisplay)(this.el);const[t,s]=e,i=(()=>{const e=this.parent.layout.bbox.relative(),{attachment:i}=this.model;switch(i){case\"horizontal\":return t({attachment:[h.TooltipAttachment,\"horizontal\"],inner_only:[e,!0],show_arrow:[e,!0]}))),n.internal((({Boolean:e,Number:t,Tuple:s,Ref:i,Nullable:l})=>({position:[l(s(t,t)),null],content:[i(HTMLElement),()=>(0,r.div)()],custom:[e]}))),n.override({level:\"overlay\"})},\n function _(o,t,r,e,l){e(),r.root=\"bk-root\",r.tooltip=\"bk-tooltip\",r.left=\"bk-left\",r.tooltip_arrow=\"bk-tooltip-arrow\",r.right=\"bk-right\",r.above=\"bk-above\",r.below=\"bk-below\",r.tooltip_row_label=\"bk-tooltip-row-label\",r.tooltip_row_value=\"bk-tooltip-row-value\",r.tooltip_color_block=\"bk-tooltip-color-block\",r.default='.bk-root{}.bk-root .bk-tooltip{font-weight:300;font-size:12px;position:absolute;padding:5px;border:1px solid #e5e5e5;color:#2f2f2f;background-color:white;pointer-events:none;opacity:0.95;z-index:100;}.bk-root .bk-tooltip > div:not(:first-child){margin-top:5px;border-top:#e5e5e5 1px dashed;}.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\" \";display:block;left:-10px;border-right-width:10px;border-right-color:#909599;}.bk-root .bk-tooltip.bk-left::before{left:-10px;border-right-width:10px;border-right-color:#909599;}.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\" \";display:block;right:-10px;border-left-width:10px;border-left-color:#909599;}.bk-root .bk-tooltip.bk-right::after{right:-10px;border-left-width:10px;border-left-color:#909599;}.bk-root .bk-tooltip.bk-above::before{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\" \";display:block;top:-10px;border-bottom-width:10px;border-bottom-color:#909599;}.bk-root .bk-tooltip.bk-below::after{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\" \";display:block;bottom:-10px;border-top-width:10px;border-top-color:#909599;}.bk-root .bk-tooltip-row-label{text-align:right;color:#26aae1;}.bk-root .bk-tooltip-row-value{color:default;}.bk-root .bk-tooltip-color-block{width:12px;height:12px;margin-left:5px;margin-right:5px;outline:#dddddd solid 1px;display:inline-block;}'},\n function _(e,t,s,i,r){var a;i();const l=e(115),_=e(112),h=e(113),o=e(48);class n extends l.UpperLowerView{async lazy_initialize(){await super.lazy_initialize();const{lower_head:e,upper_head:t}=this.model;null!=e&&(this.lower_head=await(0,h.build_view)(e,{parent:this})),null!=t&&(this.upper_head=await(0,h.build_view)(t,{parent:this}))}set_data(e){var t,s;super.set_data(e),null===(t=this.lower_head)||void 0===t||t.set_data(e),null===(s=this.upper_head)||void 0===s||s.set_data(e)}paint(e){if(this.visuals.line.doit)for(let t=0,s=this._lower_sx.length;t({lower_head:[t(e(_.ArrowHead)),()=>new _.TeeHead({size:10})],upper_head:[t(e(_.ArrowHead)),()=>new _.TeeHead({size:10})]}))),a.override({level:\"underlay\"})},\n function _(n,o,t,u,e){u(),e(\"CustomJS\",n(245).CustomJS),e(\"OpenURL\",n(247).OpenURL)},\n function _(t,e,s,n,c){var a;n();const r=t(246),u=t(13),o=t(34);class i extends r.Callback{constructor(t){super(t)}get names(){return(0,u.keys)(this.args)}get values(){return(0,u.values)(this.args)}get func(){const t=(0,o.use_strict)(this.code);return new Function(...this.names,\"cb_obj\",\"cb_data\",t)}execute(t,e={}){return this.func.apply(t,this.values.concat(t,e))}}s.CustomJS=i,a=i,i.__name__=\"CustomJS\",a.define((({Unknown:t,String:e,Dict:s})=>({args:[s(t),{}],code:[e,\"\"]})))},\n function _(c,a,l,n,s){n();const e=c(53);class o extends e.Model{constructor(c){super(c)}}l.Callback=o,o.__name__=\"Callback\"},\n function _(e,t,n,o,i){var s;o();const c=e(246),r=e(152),a=e(8);class d extends c.Callback{constructor(e){super(e)}navigate(e){this.same_tab?window.location.href=e:window.open(e)}execute(e,{source:t}){const n=e=>{const n=(0,r.replace_placeholders)(this.url,t,e,void 0,void 0,encodeURI);if(!(0,a.isString)(n))throw new Error(\"HTML output is not supported in this context\");this.navigate(n)},{selected:o}=t;for(const e of o.indices)n(e);for(const e of o.line_indices)n(e)}}n.OpenURL=d,s=d,d.__name__=\"OpenURL\",s.define((({Boolean:e,String:t})=>({url:[t,\"http://\"],same_tab:[e,!1]})))},\n function _(a,n,i,e,r){e(),r(\"Canvas\",a(249).Canvas),r(\"CartesianFrame\",a(126).CartesianFrame),r(\"CoordinateMapping\",a(54).CoordinateMapping)},\n function _(e,t,i,s,a){var l,r=this&&this.__createBinding||(Object.create?function(e,t,i,s){void 0===s&&(s=i),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[i]}})}:function(e,t,i,s){void 0===s&&(s=i),e[s]=t[i]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)\"default\"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&r(t,e,i);return n(t,e),t};s();const h=e(14),c=e(28),u=e(226),_=e(19),d=e(43),p=e(20),b=e(13),v=e(250),g=e(65),w=e(138),y=e(235);const f=(()=>{let t;return async()=>void 0!==t?t:t=await async function(){const t=document.createElement(\"canvas\"),i=t.getContext(\"webgl\",{premultipliedAlpha:!0});if(null!=i){const s=await(0,w.load_module)(Promise.resolve().then((()=>o(e(410)))));if(null!=s){const e=s.get_regl(i);if(e.has_webgl)return{canvas:t,regl_wrapper:e};_.logger.trace(\"WebGL is supported, but not the required extensions\")}else _.logger.trace(\"WebGL is supported, but bokehjs(.min).js bundle is not available\")}else _.logger.trace(\"WebGL is not supported\");return null}()})(),m={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class x extends u.DOMView{constructor(){super(...arguments),this.bbox=new g.BBox,this.webgl=null}initialize(){super.initialize(),this.underlays_el=(0,d.div)({style:m}),this.primary=this.create_layer(),this.overlays=this.create_layer(),this.overlays_el=(0,d.div)({style:m}),this.events_el=(0,d.div)({class:\"bk-canvas-events\",style:m});const e=[this.underlays_el,this.primary.el,this.overlays.el,this.overlays_el,this.events_el];(0,b.extend)(this.el.style,m),(0,d.append)(this.el,...e),this.ui_event_bus=new v.UIEventBus(this)}async lazy_initialize(){if(await super.lazy_initialize(),\"webgl\"==this.model.output_backend&&(this.webgl=await f(),c.settings.force_webgl&&null==this.webgl))throw new Error(\"webgl is not available\")}remove(){this.ui_event_bus.destroy(),super.remove()}add_underlay(e){this.underlays_el.appendChild(e)}add_overlay(e){this.overlays_el.appendChild(e)}add_event(e){this.events_el.appendChild(e)}get pixel_ratio(){return this.primary.pixel_ratio}resize(e,t){this.bbox=new g.BBox({left:0,top:0,width:e,height:t}),this.primary.resize(e,t),this.overlays.resize(e,t)}prepare_webgl(e){const{webgl:t}=this;if(null!=t){const{width:i,height:s}=this.bbox;t.canvas.width=this.pixel_ratio*i,t.canvas.height=this.pixel_ratio*s;const[a,l,r,n]=e,{xview:o,yview:h}=this.bbox,c=o.compute(a),u=h.compute(l+n),_=this.pixel_ratio;t.regl_wrapper.set_scissor(_*c,_*u,_*r,_*n),this._clear_webgl()}}blit_webgl(e){const{webgl:t}=this;if(null!=t){if(_.logger.debug(\"Blitting WebGL canvas\"),e.restore(),e.drawImage(t.canvas,0,0),e.save(),this.model.hidpi){const t=this.pixel_ratio;e.scale(t,t),e.translate(.5,.5)}this._clear_webgl()}}_clear_webgl(){const{webgl:e}=this;if(null!=e){const{regl_wrapper:t,canvas:i}=e;t.clear(i.width,i.height)}}compose(){const e=this.create_layer(),{width:t,height:i}=this.bbox;return e.resize(t,i),e.ctx.drawImage(this.primary.canvas,0,0),e.ctx.drawImage(this.overlays.canvas,0,0),e}create_layer(){const{output_backend:e,hidpi:t}=this.model;return new y.CanvasLayer(e,t)}to_blob(){return this.compose().to_blob()}}i.CanvasView=x,x.__name__=\"CanvasView\";class z extends h.HasProps{constructor(e){super(e)}}i.Canvas=z,l=z,z.__name__=\"Canvas\",l.prototype.default_view=x,l.internal((({Boolean:e})=>({hidpi:[e,!0],output_backend:[p.OutputBackend,\"canvas\"]})))},\n function _(t,e,s,n,i){n();const r=t(1),a=(0,r.__importDefault)(t(225)),_=t(15),h=t(19),o=t(43),l=(0,r.__importStar)(t(251)),c=t(252),p=t(9),u=t(8),v=t(27),d=t(230);class g{constructor(t){this.canvas_view=t,this.pan_start=new _.Signal(this,\"pan:start\"),this.pan=new _.Signal(this,\"pan\"),this.pan_end=new _.Signal(this,\"pan:end\"),this.pinch_start=new _.Signal(this,\"pinch:start\"),this.pinch=new _.Signal(this,\"pinch\"),this.pinch_end=new _.Signal(this,\"pinch:end\"),this.rotate_start=new _.Signal(this,\"rotate:start\"),this.rotate=new _.Signal(this,\"rotate\"),this.rotate_end=new _.Signal(this,\"rotate:end\"),this.tap=new _.Signal(this,\"tap\"),this.doubletap=new _.Signal(this,\"doubletap\"),this.press=new _.Signal(this,\"press\"),this.pressup=new _.Signal(this,\"pressup\"),this.move_enter=new _.Signal(this,\"move:enter\"),this.move=new _.Signal(this,\"move\"),this.move_exit=new _.Signal(this,\"move:exit\"),this.scroll=new _.Signal(this,\"scroll\"),this.keydown=new _.Signal(this,\"keydown\"),this.keyup=new _.Signal(this,\"keyup\"),this.hammer=new a.default(this.hit_area,{touchAction:\"auto\",inputClass:a.default.TouchMouseInput}),this._prev_move=null,this._curr_pan=null,this._curr_pinch=null,this._curr_rotate=null,this._configure_hammerjs(),this.hit_area.addEventListener(\"mousemove\",(t=>this._mouse_move(t))),this.hit_area.addEventListener(\"mouseenter\",(t=>this._mouse_enter(t))),this.hit_area.addEventListener(\"mouseleave\",(t=>this._mouse_exit(t))),this.hit_area.addEventListener(\"contextmenu\",(t=>this._context_menu(t))),this.hit_area.addEventListener(\"wheel\",(t=>this._mouse_wheel(t))),document.addEventListener(\"keydown\",this),document.addEventListener(\"keyup\",this),this.menu=new d.ContextMenu([],{prevent_hide:t=>2==t.button&&t.target==this.hit_area}),this.hit_area.appendChild(this.menu.el)}get hit_area(){return this.canvas_view.events_el}destroy(){this.menu.remove(),this.hammer.destroy(),document.removeEventListener(\"keydown\",this),document.removeEventListener(\"keyup\",this)}handleEvent(t){\"keydown\"==t.type?this._key_down(t):\"keyup\"==t.type&&this._key_up(t)}_configure_hammerjs(){this.hammer.get(\"doubletap\").recognizeWith(\"tap\"),this.hammer.get(\"tap\").requireFailure(\"doubletap\"),this.hammer.get(\"doubletap\").dropRequireFailure(\"tap\"),this.hammer.on(\"doubletap\",(t=>this._doubletap(t))),this.hammer.on(\"tap\",(t=>this._tap(t))),this.hammer.on(\"press\",(t=>this._press(t))),this.hammer.on(\"pressup\",(t=>this._pressup(t))),this.hammer.get(\"pan\").set({direction:a.default.DIRECTION_ALL}),this.hammer.on(\"panstart\",(t=>this._pan_start(t))),this.hammer.on(\"pan\",(t=>this._pan(t))),this.hammer.on(\"panend\",(t=>this._pan_end(t))),this.hammer.get(\"pinch\").set({enable:!0}),this.hammer.on(\"pinchstart\",(t=>this._pinch_start(t))),this.hammer.on(\"pinch\",(t=>this._pinch(t))),this.hammer.on(\"pinchend\",(t=>this._pinch_end(t))),this.hammer.get(\"rotate\").set({enable:!0}),this.hammer.on(\"rotatestart\",(t=>this._rotate_start(t))),this.hammer.on(\"rotate\",(t=>this._rotate(t))),this.hammer.on(\"rotateend\",(t=>this._rotate_end(t)))}register_tool(t){const e=t.model.event_type;null!=e&&((0,u.isString)(e)?this._register_tool(t,e):e.forEach(((e,s)=>this._register_tool(t,e,s<1))))}_register_tool(t,e,s=!0){const n=t,{id:i}=n.model,r=t=>e=>{e.id==i&&t(e.e)},a=t=>e=>{t(e.e)};switch(e){case\"pan\":null!=n._pan_start&&n.connect(this.pan_start,r(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,r(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,r(n._pan_end.bind(n)));break;case\"pinch\":null!=n._pinch_start&&n.connect(this.pinch_start,r(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,r(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,r(n._pinch_end.bind(n)));break;case\"rotate\":null!=n._rotate_start&&n.connect(this.rotate_start,r(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,r(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,r(n._rotate_end.bind(n)));break;case\"move\":null!=n._move_enter&&n.connect(this.move_enter,r(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,r(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,r(n._move_exit.bind(n)));break;case\"tap\":null!=n._tap&&n.connect(this.tap,r(n._tap.bind(n))),null!=n._doubletap&&n.connect(this.doubletap,r(n._doubletap.bind(n)));break;case\"press\":null!=n._press&&n.connect(this.press,r(n._press.bind(n))),null!=n._pressup&&n.connect(this.pressup,r(n._pressup.bind(n)));break;case\"scroll\":null!=n._scroll&&n.connect(this.scroll,r(n._scroll.bind(n)));break;default:throw new Error(`unsupported event_type: ${e}`)}s&&(null!=n._keydown&&n.connect(this.keydown,a(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,a(n._keyup.bind(n))),v.is_mobile&&null!=n._scroll&&\"pinch\"==e&&(h.logger.debug(\"Registering scroll on touch screen\"),n.connect(this.scroll,r(n._scroll.bind(n)))))}_hit_test_renderers(t,e,s){var n;const i=t.get_renderer_views();for(const t of(0,p.reversed)(i))if(null===(n=t.interactive_hit)||void 0===n?void 0:n.call(t,e,s))return t;return null}set_cursor(t=\"default\"){this.hit_area.style.cursor=t}_hit_test_frame(t,e,s){return t.frame.bbox.contains(e,s)}_hit_test_canvas(t,e,s){return t.layout.bbox.contains(e,s)}_hit_test_plot(t,e){for(const s of this.canvas_view.plot_views)if(s.layout.bbox.relative().contains(t,e))return s;return null}_trigger(t,e,s){var n;const{sx:i,sy:r}=e,a=this._hit_test_plot(i,r),_=t=>{const[s,n]=[i,r];return Object.assign(Object.assign({},e),{sx:s,sy:n})};if(\"panstart\"==e.type||\"pan\"==e.type||\"panend\"==e.type){let n;if(\"panstart\"==e.type&&null!=a?(this._curr_pan={plot_view:a},n=a):\"pan\"==e.type&&null!=this._curr_pan?n=this._curr_pan.plot_view:\"panend\"==e.type&&null!=this._curr_pan?(n=this._curr_pan.plot_view,this._curr_pan=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"pinchstart\"==e.type||\"pinch\"==e.type||\"pinchend\"==e.type){let n;if(\"pinchstart\"==e.type&&null!=a?(this._curr_pinch={plot_view:a},n=a):\"pinch\"==e.type&&null!=this._curr_pinch?n=this._curr_pinch.plot_view:\"pinchend\"==e.type&&null!=this._curr_pinch?(n=this._curr_pinch.plot_view,this._curr_pinch=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"rotatestart\"==e.type||\"rotate\"==e.type||\"rotateend\"==e.type){let n;if(\"rotatestart\"==e.type&&null!=a?(this._curr_rotate={plot_view:a},n=a):\"rotate\"==e.type&&null!=this._curr_rotate?n=this._curr_rotate.plot_view:\"rotateend\"==e.type&&null!=this._curr_rotate?(n=this._curr_rotate.plot_view,this._curr_rotate=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"mouseenter\"==e.type||\"mousemove\"==e.type||\"mouseleave\"==e.type){const h=null===(n=this._prev_move)||void 0===n?void 0:n.plot_view;if(null!=h&&(\"mouseleave\"==e.type||h!=a)){const{sx:t,sy:e}=_();this.__trigger(h,this.move_exit,{type:\"mouseleave\",sx:t,sy:e,shiftKey:!1,ctrlKey:!1},s)}if(null!=a&&(\"mouseenter\"==e.type||h!=a)){const{sx:t,sy:e}=_();this.__trigger(a,this.move_enter,{type:\"mouseenter\",sx:t,sy:e,shiftKey:!1,ctrlKey:!1},s)}if(null!=a&&\"mousemove\"==e.type){const e=_();this.__trigger(a,t,e,s)}this._prev_move={sx:i,sy:r,plot_view:a}}else if(null!=a){const e=_();this.__trigger(a,t,e,s)}}__trigger(t,e,s,n){var i,r,a;const _=t.model.toolbar.gestures,h=e.name.split(\":\")[0],o=this._hit_test_renderers(t,s.sx,s.sy),l=this._hit_test_canvas(t,s.sx,s.sy);switch(h){case\"move\":{const n=_.move.active;null!=n&&this.trigger(e,s,n.id);const r=t.model.toolbar.inspectors.filter((t=>t.active));let a=\"default\";null!=o?(a=null!==(i=o.cursor(s.sx,s.sy))&&void 0!==i?i:a,(0,p.is_empty)(r)||(e=this.move_exit)):this._hit_test_frame(t,s.sx,s.sy)&&((0,p.is_empty)(r)||(a=\"crosshair\")),this.set_cursor(a),t.set_toolbar_visibility(l),r.map((t=>this.trigger(e,s,t.id)));break}case\"tap\":{const{target:i}=n;if(null!=i&&i!=this.hit_area)return;if(null===(r=null==o?void 0:o.on_hit)||void 0===r||r.call(o,s.sx,s.sy),this._hit_test_frame(t,s.sx,s.sy)){const t=_.tap.active;null!=t&&this.trigger(e,s,t.id)}break}case\"doubletap\":if(this._hit_test_frame(t,s.sx,s.sy)){const t=null!==(a=_.doubletap.active)&&void 0!==a?a:_.tap.active;null!=t&&this.trigger(e,s,t.id)}break;case\"scroll\":{const t=_[v.is_mobile?\"pinch\":\"scroll\"].active;null!=t&&(n.preventDefault(),n.stopPropagation(),this.trigger(e,s,t.id));break}case\"pan\":{const t=_.pan.active;null!=t&&(n.preventDefault(),this.trigger(e,s,t.id));break}default:{const t=_[h].active;null!=t&&this.trigger(e,s,t.id)}}this._trigger_bokeh_event(t,s)}trigger(t,e,s=null){t.emit({id:s,e})}_trigger_bokeh_event(t,e){const s=(()=>{const{sx:s,sy:n}=e,i=t.frame.x_scale.invert(s),r=t.frame.y_scale.invert(n);switch(e.type){case\"wheel\":return new l.MouseWheel(s,n,i,r,e.delta);case\"mousemove\":return new l.MouseMove(s,n,i,r);case\"mouseenter\":return new l.MouseEnter(s,n,i,r);case\"mouseleave\":return new l.MouseLeave(s,n,i,r);case\"tap\":return new l.Tap(s,n,i,r);case\"doubletap\":return new l.DoubleTap(s,n,i,r);case\"press\":return new l.Press(s,n,i,r);case\"pressup\":return new l.PressUp(s,n,i,r);case\"pan\":return new l.Pan(s,n,i,r,e.deltaX,e.deltaY);case\"panstart\":return new l.PanStart(s,n,i,r);case\"panend\":return new l.PanEnd(s,n,i,r);case\"pinch\":return new l.Pinch(s,n,i,r,e.scale);case\"pinchstart\":return new l.PinchStart(s,n,i,r);case\"pinchend\":return new l.PinchEnd(s,n,i,r);case\"rotate\":return new l.Rotate(s,n,i,r,e.rotation);case\"rotatestart\":return new l.RotateStart(s,n,i,r);case\"rotateend\":return new l.RotateEnd(s,n,i,r);default:return}})();null!=s&&t.model.trigger_event(s)}_get_sxy(t){const{pageX:e,pageY:s}=function(t){return\"undefined\"!=typeof TouchEvent&&t instanceof TouchEvent}(t)?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t,{left:n,top:i}=(0,o.offset)(this.hit_area);return{sx:e-n,sy:s-i}}_pan_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{deltaX:t.deltaX,deltaY:t.deltaY,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_pinch_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{scale:t.scale,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_rotate_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{rotation:t.rotation,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_tap_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_move_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_scroll_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{delta:(0,c.getDeltaY)(t),shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_key_event(t){return{type:t.type,keyCode:t.keyCode}}_pan_start(t){const e=this._pan_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)}_pan(t){this._trigger(this.pan,this._pan_event(t),t.srcEvent)}_pan_end(t){this._trigger(this.pan_end,this._pan_event(t),t.srcEvent)}_pinch_start(t){this._trigger(this.pinch_start,this._pinch_event(t),t.srcEvent)}_pinch(t){this._trigger(this.pinch,this._pinch_event(t),t.srcEvent)}_pinch_end(t){this._trigger(this.pinch_end,this._pinch_event(t),t.srcEvent)}_rotate_start(t){this._trigger(this.rotate_start,this._rotate_event(t),t.srcEvent)}_rotate(t){this._trigger(this.rotate,this._rotate_event(t),t.srcEvent)}_rotate_end(t){this._trigger(this.rotate_end,this._rotate_event(t),t.srcEvent)}_tap(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)}_doubletap(t){this._trigger(this.doubletap,this._tap_event(t),t.srcEvent)}_press(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)}_pressup(t){this._trigger(this.pressup,this._tap_event(t),t.srcEvent)}_mouse_enter(t){this._trigger(this.move_enter,this._move_event(t),t)}_mouse_move(t){this._trigger(this.move,this._move_event(t),t)}_mouse_exit(t){this._trigger(this.move_exit,this._move_event(t),t)}_mouse_wheel(t){this._trigger(this.scroll,this._scroll_event(t),t)}_context_menu(t){!this.menu.is_open&&this.menu.can_open&&t.preventDefault();const{sx:e,sy:s}=this._get_sxy(t);this.menu.toggle({left:e,top:s})}_key_down(t){this.trigger(this.keydown,this._key_event(t))}_key_up(t){this.trigger(this.keyup,this._key_event(t))}}s.UIEventBus=g,g.__name__=\"UIEventBus\"},\n function _(e,t,s,n,_){n();var a=this&&this.__decorate||function(e,t,s,n){var _,a=arguments.length,o=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,s):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)o=Reflect.decorate(e,t,s,n);else for(var r=e.length-1;r>=0;r--)(_=e[r])&&(o=(a<3?_(o):a>3?_(t,s,o):_(t,s))||o);return a>3&&o&&Object.defineProperty(t,s,o),o};function o(e){return function(t){t.prototype.event_name=e}}class r{to_json(){const{event_name:e}=this;return{event_name:e,event_values:this._to_json()}}}s.BokehEvent=r,r.__name__=\"BokehEvent\";class c extends r{constructor(){super(...arguments),this.origin=null}_to_json(){return{model:this.origin}}}s.ModelEvent=c,c.__name__=\"ModelEvent\";let l=class extends r{_to_json(){return{}}};s.DocumentReady=l,l.__name__=\"DocumentReady\",s.DocumentReady=l=a([o(\"document_ready\")],l);let i=class extends c{};s.ButtonClick=i,i.__name__=\"ButtonClick\",s.ButtonClick=i=a([o(\"button_click\")],i);let u=class extends c{constructor(e){super(),this.item=e}_to_json(){const{item:e}=this;return Object.assign(Object.assign({},super._to_json()),{item:e})}};s.MenuItemClick=u,u.__name__=\"MenuItemClick\",s.MenuItemClick=u=a([o(\"menu_item_click\")],u);class d extends c{}s.UIEvent=d,d.__name__=\"UIEvent\";let m=class extends d{};s.LODStart=m,m.__name__=\"LODStart\",s.LODStart=m=a([o(\"lodstart\")],m);let h=class extends d{};s.LODEnd=h,h.__name__=\"LODEnd\",s.LODEnd=h=a([o(\"lodend\")],h);let p=class extends d{constructor(e,t,s,n){super(),this.x0=e,this.x1=t,this.y0=s,this.y1=n}_to_json(){const{x0:e,x1:t,y0:s,y1:n}=this;return Object.assign(Object.assign({},super._to_json()),{x0:e,x1:t,y0:s,y1:n})}};s.RangesUpdate=p,p.__name__=\"RangesUpdate\",s.RangesUpdate=p=a([o(\"rangesupdate\")],p);let x=class extends d{constructor(e,t){super(),this.geometry=e,this.final=t}_to_json(){const{geometry:e,final:t}=this;return Object.assign(Object.assign({},super._to_json()),{geometry:e,final:t})}};s.SelectionGeometry=x,x.__name__=\"SelectionGeometry\",s.SelectionGeometry=x=a([o(\"selectiongeometry\")],x);let j=class extends d{};s.Reset=j,j.__name__=\"Reset\",s.Reset=j=a([o(\"reset\")],j);class y extends d{constructor(e,t,s,n){super(),this.sx=e,this.sy=t,this.x=s,this.y=n}_to_json(){const{sx:e,sy:t,x:s,y:n}=this;return Object.assign(Object.assign({},super._to_json()),{sx:e,sy:t,x:s,y:n})}}s.PointEvent=y,y.__name__=\"PointEvent\";let g=class extends y{constructor(e,t,s,n,_,a){super(e,t,s,n),this.delta_x=_,this.delta_y=a}_to_json(){const{delta_x:e,delta_y:t}=this;return Object.assign(Object.assign({},super._to_json()),{delta_x:e,delta_y:t})}};s.Pan=g,g.__name__=\"Pan\",s.Pan=g=a([o(\"pan\")],g);let P=class extends y{constructor(e,t,s,n,_){super(e,t,s,n),this.scale=_}_to_json(){const{scale:e}=this;return Object.assign(Object.assign({},super._to_json()),{scale:e})}};s.Pinch=P,P.__name__=\"Pinch\",s.Pinch=P=a([o(\"pinch\")],P);let O=class extends y{constructor(e,t,s,n,_){super(e,t,s,n),this.rotation=_}_to_json(){const{rotation:e}=this;return Object.assign(Object.assign({},super._to_json()),{rotation:e})}};s.Rotate=O,O.__name__=\"Rotate\",s.Rotate=O=a([o(\"rotate\")],O);let b=class extends y{constructor(e,t,s,n,_){super(e,t,s,n),this.delta=_}_to_json(){const{delta:e}=this;return Object.assign(Object.assign({},super._to_json()),{delta:e})}};s.MouseWheel=b,b.__name__=\"MouseWheel\",s.MouseWheel=b=a([o(\"wheel\")],b);let v=class extends y{};s.MouseMove=v,v.__name__=\"MouseMove\",s.MouseMove=v=a([o(\"mousemove\")],v);let E=class extends y{};s.MouseEnter=E,E.__name__=\"MouseEnter\",s.MouseEnter=E=a([o(\"mouseenter\")],E);let R=class extends y{};s.MouseLeave=R,R.__name__=\"MouseLeave\",s.MouseLeave=R=a([o(\"mouseleave\")],R);let M=class extends y{};s.Tap=M,M.__name__=\"Tap\",s.Tap=M=a([o(\"tap\")],M);let f=class extends y{};s.DoubleTap=f,f.__name__=\"DoubleTap\",s.DoubleTap=f=a([o(\"doubletap\")],f);let S=class extends y{};s.Press=S,S.__name__=\"Press\",s.Press=S=a([o(\"press\")],S);let D=class extends y{};s.PressUp=D,D.__name__=\"PressUp\",s.PressUp=D=a([o(\"pressup\")],D);let k=class extends y{};s.PanStart=k,k.__name__=\"PanStart\",s.PanStart=k=a([o(\"panstart\")],k);let L=class extends y{};s.PanEnd=L,L.__name__=\"PanEnd\",s.PanEnd=L=a([o(\"panend\")],L);let U=class extends y{};s.PinchStart=U,U.__name__=\"PinchStart\",s.PinchStart=U=a([o(\"pinchstart\")],U);let C=class extends y{};s.PinchEnd=C,C.__name__=\"PinchEnd\",s.PinchEnd=C=a([o(\"pinchend\")],C);let T=class extends y{};s.RotateStart=T,T.__name__=\"RotateStart\",s.RotateStart=T=a([o(\"rotatestart\")],T);let B=class extends y{};s.RotateEnd=B,B.__name__=\"RotateEnd\",s.RotateEnd=B=a([o(\"rotateend\")],B)},\n function _(t,e,n,l,o){\n /*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n function u(t){const e=getComputedStyle(t).fontSize;return null!=e?parseInt(e,10):null}l(),n.getDeltaY=function(t){let e=-t.deltaY;if(t.target instanceof HTMLElement)switch(t.deltaMode){case t.DOM_DELTA_LINE:e*=(n=t.target,null!==(a=null!==(o=u(null!==(l=n.offsetParent)&&void 0!==l?l:document.body))&&void 0!==o?o:u(n))&&void 0!==a?a:16);break;case t.DOM_DELTA_PAGE:e*=function(t){return t.clientHeight}(t.target)}var n,l,o,a;return e}},\n function _(m,o,n,r,a){r(),a(\"Expression\",m(254).Expression),a(\"CustomJSExpr\",m(255).CustomJSExpr),a(\"Stack\",m(256).Stack),a(\"CumSum\",m(257).CumSum),a(\"ScalarExpression\",m(254).ScalarExpression),a(\"Minimum\",m(258).Minimum),a(\"Maximum\",m(259).Maximum);var s=m(260);a(\"XComponent\",s.XComponent),a(\"YComponent\",s.YComponent),a(\"PolarTransform\",m(261).PolarTransform)},\n function _(e,t,s,i,r){i();const n=e(53);class _ extends n.Model{constructor(e){super(e)}initialize(){super.initialize(),this._result=new Map}v_compute(e){let t=this._result.get(e);return(void 0===t||e.changed_for(this))&&(t=this._v_compute(e),this._result.set(e,t)),t}}s.Expression=_,_.__name__=\"Expression\";class o extends n.Model{constructor(e){super(e)}initialize(){super.initialize(),this._result=new Map}compute(e){let t=this._result.get(e);return(void 0===t||e.changed_for(this))&&(t=this._compute(e),this._result.set(e,t)),t}}s.ScalarExpression=o,o.__name__=\"ScalarExpression\"},\n function _(e,s,t,n,r){var a;n();const o=e(14),c=e(254),i=e(24),u=e(9),l=e(13),h=e(34),g=e(8);class p extends c.Expression{constructor(e){super(e)}connect_signals(){super.connect_signals();for(const e of(0,l.values)(this.args))e instanceof o.HasProps&&e.change.connect((()=>{this._result.clear(),this.change.emit()}))}get names(){return(0,l.keys)(this.args)}get values(){return(0,l.values)(this.args)}get func(){const e=(0,h.use_strict)(this.code);return new i.GeneratorFunction(...this.names,e)}_v_compute(e){const s=this.func.apply(e,this.values);let t=s.next();if(t.done&&void 0!==t.value){const{value:s}=t;return(0,g.isArray)(s)||(0,g.isTypedArray)(s)?s:(0,g.isIterable)(s)?[...s]:(0,u.repeat)(s,e.length)}{const e=[];do{e.push(t.value),t=s.next()}while(!t.done);return e}}}t.CustomJSExpr=p,a=p,p.__name__=\"CustomJSExpr\",a.define((({Unknown:e,String:s,Dict:t})=>({args:[t(e),{}],code:[s,\"\"]})))},\n function _(t,n,e,o,r){var s;o();const a=t(254);class c extends a.Expression{constructor(t){super(t)}_v_compute(t){var n;const e=null!==(n=t.get_length())&&void 0!==n?n:0,o=new Float64Array(e);for(const n of this.fields){const r=t.data[n];if(null!=r){const t=Math.min(e,r.length);for(let n=0;n({fields:[n(t),[]]})))},\n function _(e,n,t,o,r){var i;o();const l=e(254);class u extends l.Expression{constructor(e){super(e)}_v_compute(e){var n;const t=new Float64Array(null!==(n=e.get_length())&&void 0!==n?n:0),o=e.data[this.field],r=this.include_zero?1:0;t[0]=this.include_zero?0:o[0];for(let e=1;e({field:[n],include_zero:[e,!1]})))},\n function _(i,n,l,t,e){var a;t();const u=i(254),r=i(9);class s extends u.ScalarExpression{constructor(i){super(i)}_compute(i){var n,l;const t=null!==(n=i.data[this.field])&&void 0!==n?n:[];return Math.min(null!==(l=this.initial)&&void 0!==l?l:1/0,(0,r.min)(t))}}l.Minimum=s,a=s,s.__name__=\"Minimum\",a.define((({Number:i,String:n,Nullable:l})=>({field:[n],initial:[l(i),null]})))},\n function _(i,a,n,l,t){var e;l();const u=i(254),r=i(9);class s extends u.ScalarExpression{constructor(i){super(i)}_compute(i){var a,n;const l=null!==(a=i.data[this.field])&&void 0!==a?a:[];return Math.max(null!==(n=this.initial)&&void 0!==n?n:-1/0,(0,r.max)(l))}}n.Maximum=s,e=s,s.__name__=\"Maximum\",e.define((({Number:i,String:a,Nullable:n})=>({field:[a],initial:[n(i),null]})))},\n function _(n,e,t,o,r){var s;o();const _=n(254);class m extends _.Expression{constructor(n){super(n)}get x(){return new c({transform:this})}get y(){return new u({transform:this})}}t.CoordinateTransform=m,m.__name__=\"CoordinateTransform\";class a extends _.Expression{constructor(n){super(n)}}t.XYComponent=a,s=a,a.__name__=\"XYComponent\",s.define((({Ref:n})=>({transform:[n(m)]})));class c extends a{constructor(n){super(n)}_v_compute(n){return this.transform.v_compute(n).x}}t.XComponent=c,c.__name__=\"XComponent\";class u extends a{constructor(n){super(n)}_v_compute(n){return this.transform.v_compute(n).y}}t.YComponent=u,u.__name__=\"YComponent\"},\n function _(r,t,n,e,o){e();const i=r(1);var a;const s=r(260),c=r(20),l=(0,i.__importStar)(r(18));class d extends s.CoordinateTransform{constructor(r){super(r)}_v_compute(r){const t=this.properties.radius.uniform(r),n=this.properties.angle.uniform(r),e=\"anticlock\"==this.direction?-1:1,o=Math.min(t.length,n.length),i=new Float64Array(o),a=new Float64Array(o);for(let r=0;r({radius:[l.DistanceSpec,{field:\"radius\"}],angle:[l.AngleSpec,{field:\"angle\"}],direction:[c.Direction,\"anticlock\"]})))},\n function _(e,t,l,r,i){r(),i(\"BooleanFilter\",e(263).BooleanFilter),i(\"CustomJSFilter\",e(264).CustomJSFilter),i(\"Filter\",e(191).Filter),i(\"GroupFilter\",e(265).GroupFilter),i(\"IndexFilter\",e(266).IndexFilter)},\n function _(e,n,l,o,s){var t;o();const a=e(191),r=e(24);class c extends a.Filter{constructor(e){super(e)}compute_indices(e){const n=e.length,{booleans:l}=this;return null==l?r.Indices.all_set(n):r.Indices.from_booleans(n,l)}}l.BooleanFilter=c,t=c,c.__name__=\"BooleanFilter\",t.define((({Boolean:e,Array:n,Nullable:l})=>({booleans:[l(n(e)),null]})))},\n function _(e,n,r,s,t){var i;s();const o=e(191),c=e(24),u=e(13),a=e(8),l=e(34);class f extends o.Filter{constructor(e){super(e)}get names(){return(0,u.keys)(this.args)}get values(){return(0,u.values)(this.args)}get func(){const e=(0,l.use_strict)(this.code);return new Function(...this.names,\"source\",e)}compute_indices(e){const n=e.length,r=this.func(...this.values,e);if(null==r)return c.Indices.all_set(n);if((0,a.isArrayOf)(r,a.isInteger))return c.Indices.from_indices(n,r);if((0,a.isArrayOf)(r,a.isBoolean))return c.Indices.from_booleans(n,r);throw new Error(`expect an array of integers or booleans, or null, got ${r}`)}}r.CustomJSFilter=f,i=f,f.__name__=\"CustomJSFilter\",i.define((({Unknown:e,String:n,Dict:r})=>({args:[r(e),{}],code:[n,\"\"]})))},\n function _(n,e,t,o,r){var u;o();const s=n(191),c=n(24),i=n(19);class l extends s.Filter{constructor(n){super(n)}compute_indices(n){const e=n.get_column(this.column_name);if(null==e)return i.logger.warn(`${this}: groupby column '${this.column_name}' not found in the data source`),new c.Indices(n.length,1);{const t=new c.Indices(n.length);for(let n=0;n({column_name:[n],group:[n]})))},\n function _(e,n,i,s,t){var l;s();const c=e(191),r=e(24);class d extends c.Filter{constructor(e){super(e)}compute_indices(e){const n=e.length,{indices:i}=this;return null==i?r.Indices.all_set(n):r.Indices.from_indices(n,i)}}i.IndexFilter=d,l=d,d.__name__=\"IndexFilter\",l.define((({Int:e,Array:n,Nullable:i})=>({indices:[i(n(e)),null]})))},\n function _(e,a,l,i,t){i(),t(\"AnnularWedge\",e(268).AnnularWedge),t(\"Annulus\",e(269).Annulus),t(\"Arc\",e(270).Arc),t(\"Bezier\",e(271).Bezier),t(\"Circle\",e(272).Circle),t(\"Ellipse\",e(273).Ellipse),t(\"EllipseOval\",e(274).EllipseOval),t(\"Glyph\",e(179).Glyph),t(\"HArea\",e(187).HArea),t(\"HBar\",e(276).HBar),t(\"HexTile\",e(278).HexTile),t(\"Image\",e(279).Image),t(\"ImageRGBA\",e(281).ImageRGBA),t(\"ImageURL\",e(282).ImageURL),t(\"Line\",e(177).Line),t(\"MultiLine\",e(283).MultiLine),t(\"MultiPolygons\",e(284).MultiPolygons),t(\"Oval\",e(285).Oval),t(\"Patch\",e(186).Patch),t(\"Patches\",e(286).Patches),t(\"Quad\",e(287).Quad),t(\"Quadratic\",e(288).Quadratic),t(\"Ray\",e(289).Ray),t(\"Rect\",e(290).Rect),t(\"Scatter\",e(291).Scatter),t(\"Segment\",e(294).Segment),t(\"Spline\",e(295).Spline),t(\"Step\",e(297).Step),t(\"Text\",e(298).Text),t(\"VArea\",e(189).VArea),t(\"VBar\",e(299).VBar),t(\"Wedge\",e(300).Wedge)},\n function _(e,s,t,i,r){i();const n=e(1);var a;const _=e(178),o=e(184),d=e(48),u=e(24),h=e(20),c=(0,n.__importStar)(e(18)),l=e(10),g=e(72),p=e(12);class x extends _.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this.inner_radius):this.sinner_radius=(0,u.to_screen)(this.inner_radius),\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this.outer_radius):this.souter_radius=(0,u.to_screen)(this.outer_radius),this.max_souter_radius=(0,p.max)(this.souter_radius)}_render(e,s,t){const{sx:i,sy:r,start_angle:n,end_angle:a,sinner_radius:_,souter_radius:o}=null!=t?t:this,d=\"anticlock\"==this.model.direction;for(const t of s){const s=i[t],u=r[t],h=_[t],c=o[t],l=n.get(t),g=a.get(t);if(!isFinite(s+u+h+c+l+g))continue;const p=g-l;e.translate(s,u),e.rotate(l),e.beginPath(),e.moveTo(c,0),e.arc(0,0,c,0,p,d),e.rotate(p),e.lineTo(h,0),e.arc(0,0,h,0,-p,!d),e.closePath(),e.rotate(-p-l),e.translate(-s,-u),this.visuals.fill.apply(e,t),this.visuals.hatch.apply(e,t),this.visuals.line.apply(e,t)}}_hit_point(e){const{sx:s,sy:t}=e,i=this.renderer.xscale.invert(s),r=this.renderer.yscale.invert(t),n=s-this.max_souter_radius,a=s+this.max_souter_radius,[_,o]=this.renderer.xscale.r_invert(n,a),d=t-this.max_souter_radius,u=t+this.max_souter_radius,[h,c]=this.renderer.yscale.r_invert(d,u),p=[];for(const e of this.index.indices({x0:_,x1:o,y0:h,y1:c})){const s=this.souter_radius[e]**2,t=this.sinner_radius[e]**2,[n,a]=this.renderer.xscale.r_compute(i,this._x[e]),[_,o]=this.renderer.yscale.r_compute(r,this._y[e]),d=(n-a)**2+(_-o)**2;d<=s&&d>=t&&p.push(e)}const x=\"anticlock\"==this.model.direction,m=[];for(const e of p){const i=Math.atan2(t-this.sy[e],s-this.sx[e]);(0,l.angle_between)(-i,-this.start_angle.get(e),-this.end_angle.get(e),x)&&m.push(e)}return new g.Selection({indices:m})}draw_legend_for_index(e,s,t){(0,o.generic_area_vector_legend)(this.visuals,e,s,t)}scenterxy(e){const s=(this.sinner_radius[e]+this.souter_radius[e])/2,t=(this.start_angle.get(e)+this.end_angle.get(e))/2;return[this.sx[e]+s*Math.cos(t),this.sy[e]+s*Math.sin(t)]}}t.AnnularWedgeView=x,x.__name__=\"AnnularWedgeView\";class m extends _.XYGlyph{constructor(e){super(e)}}t.AnnularWedge=m,a=m,m.__name__=\"AnnularWedge\",a.prototype.default_view=x,a.mixins([d.LineVector,d.FillVector,d.HatchVector]),a.define((({})=>({direction:[h.Direction,\"anticlock\"],inner_radius:[c.DistanceSpec,{field:\"inner_radius\"}],outer_radius:[c.DistanceSpec,{field:\"outer_radius\"}],start_angle:[c.AngleSpec,{field:\"start_angle\"}],end_angle:[c.AngleSpec,{field:\"end_angle\"}]})))},\n function _(s,e,i,r,t){r();const n=s(1);var a;const u=s(178),o=s(24),_=s(48),d=(0,n.__importStar)(s(18)),h=s(27),c=s(72);class l extends u.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this.inner_radius):this.sinner_radius=(0,o.to_screen)(this.inner_radius),\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this.outer_radius):this.souter_radius=(0,o.to_screen)(this.outer_radius)}_render(s,e,i){const{sx:r,sy:t,sinner_radius:n,souter_radius:a}=null!=i?i:this;for(const i of e){const e=r[i],u=t[i],o=n[i],_=a[i];if(isFinite(e+u+o+_)){if(s.beginPath(),h.is_ie)for(const i of[!1,!0])s.moveTo(e,u),s.arc(e,u,o,0,Math.PI,i),s.moveTo(e+_,u),s.arc(e,u,_,Math.PI,0,!i);else s.arc(e,u,o,0,2*Math.PI,!0),s.moveTo(e+_,u),s.arc(e,u,_,2*Math.PI,0,!1);this.visuals.fill.apply(s,i),this.visuals.hatch.apply(s,i),this.visuals.line.apply(s,i)}}}_hit_point(s){const{sx:e,sy:i}=s,r=this.renderer.xscale.invert(e),t=this.renderer.yscale.invert(i);let n,a,u,o;if(\"data\"==this.model.properties.outer_radius.units)n=r-this.max_outer_radius,u=r+this.max_outer_radius,a=t-this.max_outer_radius,o=t+this.max_outer_radius;else{const s=e-this.max_outer_radius,r=e+this.max_outer_radius;[n,u]=this.renderer.xscale.r_invert(s,r);const t=i-this.max_outer_radius,_=i+this.max_outer_radius;[a,o]=this.renderer.yscale.r_invert(t,_)}const _=[];for(const s of this.index.indices({x0:n,x1:u,y0:a,y1:o})){const e=this.souter_radius[s]**2,i=this.sinner_radius[s]**2,[n,a]=this.renderer.xscale.r_compute(r,this._x[s]),[u,o]=this.renderer.yscale.r_compute(t,this._y[s]),d=(n-a)**2+(u-o)**2;d<=e&&d>=i&&_.push(s)}return new c.Selection({indices:_})}draw_legend_for_index(s,{x0:e,y0:i,x1:r,y1:t},n){const a=n+1,u=new Array(a);u[n]=(e+r)/2;const o=new Array(a);o[n]=(i+t)/2;const _=.5*Math.min(Math.abs(r-e),Math.abs(t-i)),d=new Array(a);d[n]=.4*_;const h=new Array(a);h[n]=.8*_,this._render(s,[n],{sx:u,sy:o,sinner_radius:d,souter_radius:h})}}i.AnnulusView=l,l.__name__=\"AnnulusView\";class x extends u.XYGlyph{constructor(s){super(s)}}i.Annulus=x,a=x,x.__name__=\"Annulus\",a.prototype.default_view=l,a.mixins([_.LineVector,_.FillVector,_.HatchVector]),a.define((({})=>({inner_radius:[d.DistanceSpec,{field:\"inner_radius\"}],outer_radius:[d.DistanceSpec,{field:\"outer_radius\"}]})))},\n function _(e,i,s,t,n){t();const r=e(1);var a;const c=e(178),d=e(184),l=e(48),_=e(24),o=e(20),u=(0,r.__importStar)(e(18));class h extends c.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=(0,_.to_screen)(this.radius)}_render(e,i,s){if(this.visuals.line.doit){const{sx:t,sy:n,sradius:r,start_angle:a,end_angle:c}=null!=s?s:this,d=\"anticlock\"==this.model.direction;for(const s of i){const i=t[s],l=n[s],_=r[s],o=a.get(s),u=c.get(s);isFinite(i+l+_+o+u)&&(e.beginPath(),e.arc(i,l,_,o,u,d),this.visuals.line.set_vectorize(e,s),e.stroke())}}}draw_legend_for_index(e,i,s){(0,d.generic_line_vector_legend)(this.visuals,e,i,s)}}s.ArcView=h,h.__name__=\"ArcView\";class g extends c.XYGlyph{constructor(e){super(e)}}s.Arc=g,a=g,g.__name__=\"Arc\",a.prototype.default_view=h,a.mixins(l.LineVector),a.define((({})=>({direction:[o.Direction,\"anticlock\"],radius:[u.DistanceSpec,{field:\"radius\"}],start_angle:[u.AngleSpec,{field:\"start_angle\"}],end_angle:[u.AngleSpec,{field:\"end_angle\"}]})))},\n function _(e,t,i,n,s){n();const o=e(1);var c;const r=e(48),a=e(179),_=e(184),d=e(78),l=(0,o.__importStar)(e(18));function x(e,t,i,n,s,o,c,r){const a=[],_=[[],[]];for(let _=0;_<=2;_++){let d,l,x;if(0===_?(l=6*e-12*i+6*s,d=-3*e+9*i-9*s+3*c,x=3*i-3*e):(l=6*t-12*n+6*o,d=-3*t+9*n-9*o+3*r,x=3*n-3*t),Math.abs(d)<1e-12){if(Math.abs(l)<1e-12)continue;const e=-x/l;0({x0:[l.XCoordinateSpec,{field:\"x0\"}],y0:[l.YCoordinateSpec,{field:\"y0\"}],x1:[l.XCoordinateSpec,{field:\"x1\"}],y1:[l.YCoordinateSpec,{field:\"y1\"}],cx0:[l.XCoordinateSpec,{field:\"cx0\"}],cy0:[l.YCoordinateSpec,{field:\"cy0\"}],cx1:[l.XCoordinateSpec,{field:\"cx1\"}],cy1:[l.YCoordinateSpec,{field:\"cy1\"}]}))),c.mixins(r.LineVector)},\n function _(s,i,e,t,r){t();const a=s(1);var n;const h=s(178),d=s(48),l=s(24),_=s(20),c=(0,a.__importStar)(s(185)),u=(0,a.__importStar)(s(18)),o=s(9),x=s(12),m=s(72);class p extends h.XYGlyphView{async lazy_initialize(){await super.lazy_initialize();const{webgl:i}=this.renderer.plot_view.canvas_view;if(null!=i&&i.regl_wrapper.has_webgl){const{CircleGL:e}=await Promise.resolve().then((()=>(0,a.__importStar)(s(423))));this.glglyph=new e(i.regl_wrapper,this)}}get use_radius(){return!(this.radius.is_Scalar()&&isNaN(this.radius.value))}_set_data(s){super._set_data(s);const i=(()=>{if(this.use_radius)return 2*this.max_radius;{const{size:s}=this;return s.is_Scalar()?s.value:(0,x.max)(s.array)}})();this._configure(\"max_size\",{value:i})}_map_data(){if(this.use_radius)if(\"data\"==this.model.properties.radius.units)switch(this.model.radius_dimension){case\"x\":this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius);break;case\"y\":this.sradius=this.sdist(this.renderer.yscale,this._y,this.radius);break;case\"max\":{const s=this.sdist(this.renderer.xscale,this._x,this.radius),i=this.sdist(this.renderer.yscale,this._y,this.radius);this.sradius=(0,x.map)(s,((s,e)=>Math.max(s,i[e])));break}case\"min\":{const s=this.sdist(this.renderer.xscale,this._x,this.radius),i=this.sdist(this.renderer.yscale,this._y,this.radius);this.sradius=(0,x.map)(s,((s,e)=>Math.min(s,i[e])));break}}else this.sradius=(0,l.to_screen)(this.radius);else{const s=l.ScreenArray.from(this.size);this.sradius=(0,x.map)(s,(s=>s/2))}}_mask_data(){const{frame:s}=this.renderer.plot_view,i=s.x_target,e=s.y_target;let t,r;return this.use_radius&&\"data\"==this.model.properties.radius.units?(t=i.map((s=>this.renderer.xscale.invert(s))).widen(this.max_radius),r=e.map((s=>this.renderer.yscale.invert(s))).widen(this.max_radius)):(t=i.widen(this.max_size).map((s=>this.renderer.xscale.invert(s))),r=e.widen(this.max_size).map((s=>this.renderer.yscale.invert(s)))),this.index.indices({x0:t.start,x1:t.end,y0:r.start,y1:r.end})}_render(s,i,e){const{sx:t,sy:r,sradius:a}=null!=e?e:this;for(const e of i){const i=t[e],n=r[e],h=a[e];isFinite(i+n+h)&&(s.beginPath(),s.arc(i,n,h,0,2*Math.PI,!1),this.visuals.fill.apply(s,e),this.visuals.hatch.apply(s,e),this.visuals.line.apply(s,e))}}_hit_point(s){const{sx:i,sy:e}=s,t=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(e),{hit_dilation:a}=this.model;let n,h,d,l;if(this.use_radius&&\"data\"==this.model.properties.radius.units)n=t-this.max_radius*a,h=t+this.max_radius*a,d=r-this.max_radius*a,l=r+this.max_radius*a;else{const s=i-this.max_size*a,t=i+this.max_size*a;[n,h]=this.renderer.xscale.r_invert(s,t);const r=e-this.max_size*a,_=e+this.max_size*a;[d,l]=this.renderer.yscale.r_invert(r,_)}const _=this.index.indices({x0:n,x1:h,y0:d,y1:l}),c=[];if(this.use_radius&&\"data\"==this.model.properties.radius.units)for(const s of _){const i=(this.sradius[s]*a)**2,[e,n]=this.renderer.xscale.r_compute(t,this._x[s]),[h,d]=this.renderer.yscale.r_compute(r,this._y[s]);(e-n)**2+(h-d)**2<=i&&c.push(s)}else for(const s of _){const t=(this.sradius[s]*a)**2;(this.sx[s]-i)**2+(this.sy[s]-e)**2<=t&&c.push(s)}return new m.Selection({indices:c})}_hit_span(s){const{sx:i,sy:e}=s,t=this.bounds();let r,a,n,h;if(\"h\"==s.direction){let s,e;if(n=t.y0,h=t.y1,this.use_radius&&\"data\"==this.model.properties.radius.units)s=i-this.max_radius,e=i+this.max_radius,[r,a]=this.renderer.xscale.r_invert(s,e);else{const t=this.max_size/2;s=i-t,e=i+t,[r,a]=this.renderer.xscale.r_invert(s,e)}}else{let s,i;if(r=t.x0,a=t.x1,this.use_radius&&\"data\"==this.model.properties.radius.units)s=e-this.max_radius,i=e+this.max_radius,[n,h]=this.renderer.yscale.r_invert(s,i);else{const t=this.max_size/2;s=e-t,i=e+t,[n,h]=this.renderer.yscale.r_invert(s,i)}}const d=[...this.index.indices({x0:r,x1:a,y0:n,y1:h})];return new m.Selection({indices:d})}_hit_rect(s){const{sx0:i,sx1:e,sy0:t,sy1:r}=s,[a,n]=this.renderer.xscale.r_invert(i,e),[h,d]=this.renderer.yscale.r_invert(t,r),l=[...this.index.indices({x0:a,x1:n,y0:h,y1:d})];return new m.Selection({indices:l})}_hit_poly(s){const{sx:i,sy:e}=s,t=(0,o.range)(0,this.sx.length),r=[];for(let s=0,a=t.length;s({angle:[u.AngleSpec,0],size:[u.ScreenSizeSpec,{value:4}],radius:[u.NullDistanceSpec,null],radius_dimension:[_.RadiusDimension,\"x\"],hit_dilation:[s,1]})))},\n function _(e,l,s,i,_){var p;i();const t=e(274);class a extends t.EllipseOvalView{}s.EllipseView=a,a.__name__=\"EllipseView\";class n extends t.EllipseOval{constructor(e){super(e)}}s.Ellipse=n,p=n,n.__name__=\"Ellipse\",p.prototype.default_view=a},\n function _(t,s,e,i,h){i();const n=t(1),r=t(275),a=(0,n.__importStar)(t(185)),l=t(24),_=t(72),o=(0,n.__importStar)(t(18));class d extends r.CenterRotatableView{_map_data(){\"data\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this.width,\"center\"):this.sw=(0,l.to_screen)(this.width),\"data\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this.height,\"center\"):this.sh=(0,l.to_screen)(this.height)}_render(t,s,e){const{sx:i,sy:h,sw:n,sh:r,angle:a}=null!=e?e:this;for(const e of s){const s=i[e],l=h[e],_=n[e],o=r[e],d=a.get(e);isFinite(s+l+_+o+d)&&(t.beginPath(),t.ellipse(s,l,_/2,o/2,d,0,2*Math.PI),this.visuals.fill.apply(t,e),this.visuals.hatch.apply(t,e),this.visuals.line.apply(t,e))}}_hit_point(t){let s,e,i,h,n,r,l,o,d;const{sx:c,sy:p}=t,w=this.renderer.xscale.invert(c),x=this.renderer.yscale.invert(p);\"data\"==this.model.properties.width.units?(s=w-this.max_width,e=w+this.max_width):(r=c-this.max_width,l=c+this.max_width,[s,e]=this.renderer.xscale.r_invert(r,l)),\"data\"==this.model.properties.height.units?(i=x-this.max_height,h=x+this.max_height):(o=p-this.max_height,d=p+this.max_height,[i,h]=this.renderer.yscale.r_invert(o,d));const m=this.index.indices({x0:s,x1:e,y0:i,y1:h}),y=[];for(const t of m)n=a.point_in_ellipse(c,p,this.angle.get(t),this.sh[t]/2,this.sw[t]/2,this.sx[t],this.sy[t]),n&&y.push(t);return new _.Selection({indices:y})}draw_legend_for_index(t,{x0:s,y0:e,x1:i,y1:h},n){const r=n+1,a=new Array(r);a[n]=(s+i)/2;const l=new Array(r);l[n]=(e+h)/2;const _=this.sw[n]/this.sh[n],d=.8*Math.min(Math.abs(i-s),Math.abs(h-e)),c=new Array(r),p=new Array(r);_>1?(c[n]=d,p[n]=d/_):(c[n]=d*_,p[n]=d);const w=new o.UniformScalar(0,r);this._render(t,[n],{sx:a,sy:l,sw:c,sh:p,angle:w})}}e.EllipseOvalView=d,d.__name__=\"EllipseOvalView\";class c extends r.CenterRotatable{constructor(t){super(t)}}e.EllipseOval=c,c.__name__=\"EllipseOval\"},\n function _(e,t,i,a,n){a();const s=e(1);var r;const h=e(178),o=e(48),_=(0,s.__importStar)(e(18));class c extends h.XYGlyphView{get max_w2(){return\"data\"==this.model.properties.width.units?this.max_width/2:0}get max_h2(){return\"data\"==this.model.properties.height.units?this.max_height/2:0}_bounds({x0:e,x1:t,y0:i,y1:a}){const{max_w2:n,max_h2:s}=this;return{x0:e-n,x1:t+n,y0:i-s,y1:a+s}}}i.CenterRotatableView=c,c.__name__=\"CenterRotatableView\";class l extends h.XYGlyph{constructor(e){super(e)}}i.CenterRotatable=l,r=l,l.__name__=\"CenterRotatable\",r.mixins([o.LineVector,o.FillVector,o.HatchVector]),r.define((({})=>({angle:[_.AngleSpec,0],width:[_.DistanceSpec,{field:\"width\"}],height:[_.DistanceSpec,{field:\"height\"}]})))},\n function _(t,e,s,i,r){i();const h=t(1);var a;const n=t(277),_=t(24),o=(0,h.__importStar)(t(18));class l extends n.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null!=e&&e.regl_wrapper.has_webgl){const{LRTBGL:s}=await Promise.resolve().then((()=>(0,h.__importStar)(t(427))));this.glglyph=new s(e.regl_wrapper,this)}}scenterxy(t){return[(this.sleft[t]+this.sright[t])/2,this.sy[t]]}_lrtb(t){const e=this._left[t],s=this._right[t],i=this._y[t],r=this.height.get(t)/2;return[Math.min(e,s),Math.max(e,s),i+r,i-r]}_map_data(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this.height,\"center\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);const t=this.sy.length;this.stop=new _.ScreenArray(t),this.sbottom=new _.ScreenArray(t);for(let e=0;e({left:[o.XCoordinateSpec,{value:0}],y:[o.YCoordinateSpec,{field:\"y\"}],height:[o.NumberSpec,{value:1}],right:[o.XCoordinateSpec,{field:\"right\"}]})))},\n function _(t,e,s,r,i){var n;r();const a=t(48),h=t(179),o=t(184),c=t(72);class _ extends h.GlyphView{get_anchor_point(t,e,s){const r=Math.min(this.sleft[e],this.sright[e]),i=Math.max(this.sright[e],this.sleft[e]),n=Math.min(this.stop[e],this.sbottom[e]),a=Math.max(this.sbottom[e],this.stop[e]);switch(t){case\"top_left\":return{x:r,y:n};case\"top\":case\"top_center\":return{x:(r+i)/2,y:n};case\"top_right\":return{x:i,y:n};case\"bottom_left\":return{x:r,y:a};case\"bottom\":case\"bottom_center\":return{x:(r+i)/2,y:a};case\"bottom_right\":return{x:i,y:a};case\"left\":case\"center_left\":return{x:r,y:(n+a)/2};case\"center\":case\"center_center\":return{x:(r+i)/2,y:(n+a)/2};case\"right\":case\"center_right\":return{x:i,y:(n+a)/2}}}_index_data(t){const{min:e,max:s}=Math,{data_size:r}=this;for(let i=0;i(0,n.__importStar)(e(425))));this.glglyph=new s(t.regl_wrapper,this)}}scenterxy(e){return[this.sx[e],this.sy[e]]}_set_data(){const{orientation:e,size:t,aspect_scale:s}=this.model,{q:i,r}=this,n=this.q.length;this._x=new Float64Array(n),this._y=new Float64Array(n);const{_x:a,_y:l}=this,o=Math.sqrt(3);if(\"pointytop\"==e)for(let e=0;e({r:[c.NumberSpec,{field:\"r\"}],q:[c.NumberSpec,{field:\"q\"}],scale:[c.NumberSpec,1],size:[e,1],aspect_scale:[e,1],orientation:[_.HexTileOrientation,\"pointytop\"]}))),a.override({line_color:null})},\n function _(e,a,t,_,r){var n;_();const s=e(280),o=e(173),i=e(201);class p extends s.ImageBaseView{connect_signals(){super.connect_signals(),this.connect(this.model.color_mapper.change,(()=>this._update_image()))}_update_image(){null!=this.image_data&&(this._set_data(null),this.renderer.request_render())}_flat_img_to_buf8(e){return this.model.color_mapper.rgba_mapper.v_compute(e)}}t.ImageView=p,p.__name__=\"ImageView\";class m extends s.ImageBase{constructor(e){super(e)}}t.Image=m,n=m,m.__name__=\"Image\",n.prototype.default_view=p,n.define((({Ref:e})=>({color_mapper:[e(o.ColorMapper),()=>new i.LinearColorMapper({palette:[\"#000000\",\"#252525\",\"#525252\",\"#737373\",\"#969696\",\"#bdbdbd\",\"#d9d9d9\",\"#f0f0f0\",\"#ffffff\"]})]})))},\n function _(e,t,i,s,a){s();const h=e(1);var n;const r=e(178),_=e(24),d=(0,h.__importStar)(e(18)),l=e(72),g=e(9),o=e(29),c=e(11);class m extends r.XYGlyphView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,(()=>this.renderer.request_render()))}_render(e,t,i){const{image_data:s,sx:a,sy:h,sw:n,sh:r,global_alpha:_}=null!=i?i:this,d=e.getImageSmoothingEnabled();e.setImageSmoothingEnabled(!1);const l=_.is_Scalar();l&&(e.globalAlpha=_.value);for(const i of t){const t=s[i],_=a[i],d=h[i],g=n[i],o=r[i],c=this.global_alpha.get(i);if(null==t||!isFinite(_+d+g+o+c))continue;l||(e.globalAlpha=c);const m=d;e.translate(0,m),e.scale(1,-1),e.translate(0,-m),e.drawImage(t,0|_,0|d,g,o),e.translate(0,m),e.scale(1,-1),e.translate(0,-m)}e.setImageSmoothingEnabled(d)}_set_data(e){this._set_width_heigh_data();for(let t=0,i=this.image.length;t({image:[d.NDArraySpec,{field:\"image\"}],dw:[d.DistanceSpec,{field:\"dw\"}],dh:[d.DistanceSpec,{field:\"dh\"}],global_alpha:[d.NumberSpec,{value:1}],dilate:[e,!1]})))},\n function _(e,a,t,r,_){var n;r();const s=e(280),m=e(8);class i extends s.ImageBaseView{_flat_img_to_buf8(e){let a;return a=(0,m.isArray)(e)?new Uint32Array(e):e,new Uint8ClampedArray(a.buffer)}}t.ImageRGBAView=i,i.__name__=\"ImageRGBAView\";class g extends s.ImageBase{constructor(e){super(e)}}t.ImageRGBA=g,n=g,g.__name__=\"ImageRGBA\",n.prototype.default_view=i},\n function _(e,t,s,r,a){r();const i=e(1);var n;const o=e(178),c=e(24),_=e(20),h=(0,i.__importStar)(e(18)),l=e(12),d=e(136);class m extends o.XYGlyphView{constructor(){super(...arguments),this._images_rendered=!1,this._set_data_iteration=0}connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,(()=>this.renderer.request_render()))}_index_data(e){const{data_size:t}=this;for(let s=0;s{this._set_data_iteration==r&&(this.image[a]=e,this.renderer.request_render())},attempts:t+1,timeout:s})}const a=\"data\"==this.model.properties.w.units,i=\"data\"==this.model.properties.h.units,n=this._x.length,o=new c.ScreenArray(a?2*n:n),_=new c.ScreenArray(i?2*n:n),{anchor:h}=this.model;function m(e,t){switch(h){case\"top_left\":case\"bottom_left\":case\"left\":case\"center_left\":return[e,e+t];case\"top\":case\"top_center\":case\"bottom\":case\"bottom_center\":case\"center\":case\"center_center\":return[e-t/2,e+t/2];case\"top_right\":case\"bottom_right\":case\"right\":case\"center_right\":return[e-t,e]}}function g(e,t){switch(h){case\"top_left\":case\"top\":case\"top_center\":case\"top_right\":return[e,e-t];case\"bottom_left\":case\"bottom\":case\"bottom_center\":case\"bottom_right\":return[e+t,e];case\"left\":case\"center_left\":case\"center\":case\"center_center\":case\"right\":case\"center_right\":return[e+t/2,e-t/2]}}if(a)for(let e=0;e({url:[h.StringSpec,{field:\"url\"}],anchor:[_.Anchor,\"top_left\"],global_alpha:[h.NumberSpec,{value:1}],angle:[h.AngleSpec,0],w:[h.NullDistanceSpec,null],h:[h.NullDistanceSpec,null],dilate:[e,!1],retry_attempts:[t,0],retry_timeout:[t,0]})))},\n function _(e,t,s,i,n){i();const o=e(1);var r;const l=e(78),_=e(48),c=(0,o.__importStar)(e(185)),h=(0,o.__importStar)(e(18)),a=e(12),d=e(13),x=e(179),y=e(184),g=e(72);class p extends x.GlyphView{_project_data(){l.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(e){const{data_size:t}=this;for(let s=0;s0&&o.set(e,s)}return new g.Selection({indices:[...o.keys()],multiline_indices:(0,d.to_object)(o)})}get_interpolation_hit(e,t,s){const i=this._xs.get(e),n=this._ys.get(e),o=i[t],r=n[t],l=i[t+1],_=n[t+1];return(0,y.line_interpolation)(this.renderer,s,o,r,l,_)}draw_legend_for_index(e,t,s){(0,y.generic_line_vector_legend)(this.visuals,e,t,s)}scenterxy(){throw new Error(`${this}.scenterxy() is not implemented`)}}s.MultiLineView=p,p.__name__=\"MultiLineView\";class u extends x.Glyph{constructor(e){super(e)}}s.MultiLine=u,r=u,u.__name__=\"MultiLine\",r.prototype.default_view=p,r.define((({})=>({xs:[h.XCoordinateSeqSpec,{field:\"xs\"}],ys:[h.YCoordinateSeqSpec,{field:\"ys\"}]}))),r.mixins(_.LineVector)},\n function _(t,e,s,n,i){n();const o=t(1);var r;const l=t(181),h=t(179),a=t(184),_=t(12),c=t(12),d=t(48),x=(0,o.__importStar)(t(185)),y=(0,o.__importStar)(t(18)),f=t(72),g=t(11);class p extends h.GlyphView{_project_data(){}_index_data(t){const{min:e,max:s}=Math,{data_size:n}=this;for(let i=0;i1&&c.length>1)for(let s=1,n=i.length;s1){let r=!1;for(let t=1;t({xs:[y.XCoordinateSeqSeqSeqSpec,{field:\"xs\"}],ys:[y.YCoordinateSeqSeqSeqSpec,{field:\"ys\"}]}))),r.mixins([d.LineVector,d.FillVector,d.HatchVector])},\n function _(a,e,l,s,_){var t;s();const i=a(274),n=a(12);class p extends i.EllipseOvalView{_map_data(){super._map_data(),(0,n.mul)(this.sw,.75)}}l.OvalView=p,p.__name__=\"OvalView\";class v extends i.EllipseOval{constructor(a){super(a)}}l.Oval=v,t=v,v.__name__=\"Oval\",t.prototype.default_view=p},\n function _(e,t,s,i,n){i();const r=e(1);var a;const o=e(179),c=e(184),_=e(12),h=e(48),l=(0,r.__importStar)(e(185)),d=(0,r.__importStar)(e(18)),y=e(72),p=e(11),x=e(78);class f extends o.GlyphView{_project_data(){x.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(e){const{data_size:t}=this;for(let s=0;s({xs:[d.XCoordinateSeqSpec,{field:\"xs\"}],ys:[d.YCoordinateSeqSpec,{field:\"ys\"}]}))),a.mixins([h.LineVector,h.FillVector,h.HatchVector])},\n function _(t,e,i,o,r){o();const s=t(1);var a;const n=t(277),l=(0,s.__importStar)(t(18));class _ extends n.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null!=e&&e.regl_wrapper.has_webgl){const{LRTBGL:i}=await Promise.resolve().then((()=>(0,s.__importStar)(t(427))));this.glglyph=new i(e.regl_wrapper,this)}}scenterxy(t){return[this.sleft[t]/2+this.sright[t]/2,this.stop[t]/2+this.sbottom[t]/2]}_lrtb(t){return[this._left[t],this._right[t],this._top[t],this._bottom[t]]}}i.QuadView=_,_.__name__=\"QuadView\";class p extends n.Box{constructor(t){super(t)}}i.Quad=p,a=p,p.__name__=\"Quad\",a.prototype.default_view=_,a.define((({})=>({right:[l.XCoordinateSpec,{field:\"right\"}],bottom:[l.YCoordinateSpec,{field:\"bottom\"}],left:[l.XCoordinateSpec,{field:\"left\"}],top:[l.YCoordinateSpec,{field:\"top\"}]})))},\n function _(e,t,i,n,s){n();const c=e(1);var o;const r=e(48),a=e(78),_=e(179),d=e(184),l=(0,c.__importStar)(e(18));function x(e,t,i){if(t==(e+i)/2)return[e,i];{const n=(e-t)/(e-2*t+i),s=e*(1-n)**2+2*t*(1-n)*n+i*n**2;return[Math.min(e,i,s),Math.max(e,i,s)]}}class y extends _.GlyphView{_project_data(){a.inplace.project_xy(this._x0,this._y0),a.inplace.project_xy(this._x1,this._y1)}_index_data(e){const{_x0:t,_x1:i,_y0:n,_y1:s,_cx:c,_cy:o,data_size:r}=this;for(let a=0;a({x0:[l.XCoordinateSpec,{field:\"x0\"}],y0:[l.YCoordinateSpec,{field:\"y0\"}],x1:[l.XCoordinateSpec,{field:\"x1\"}],y1:[l.YCoordinateSpec,{field:\"y1\"}],cx:[l.XCoordinateSpec,{field:\"cx\"}],cy:[l.YCoordinateSpec,{field:\"cy\"}]}))),o.mixins(r.LineVector)},\n function _(e,t,s,i,n){i();const l=e(1);var a;const r=e(178),o=e(184),h=e(48),_=e(24),c=(0,l.__importStar)(e(18));class g extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.length.units?this.slength=this.sdist(this.renderer.xscale,this._x,this.length):this.slength=(0,_.to_screen)(this.length);const{width:e,height:t}=this.renderer.plot_view.frame.bbox,s=2*(e+t),{slength:i}=this;for(let e=0,t=i.length;e({length:[c.DistanceSpec,0],angle:[c.AngleSpec,0]})))},\n function _(t,e,s,i,r){var n,h=this&&this.__createBinding||(Object.create?function(t,e,s,i){void 0===i&&(i=s),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[s]}})}:function(t,e,s,i){void 0===i&&(i=s),t[i]=e[s]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),l=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var s in t)\"default\"!==s&&Object.prototype.hasOwnProperty.call(t,s)&&h(e,t,s);return a(e,t),e};i();const o=t(275),c=t(184),_=t(24),d=t(12),f=t(72);class y extends o.CenterRotatableView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null==e?void 0:e.regl_wrapper.has_webgl){const{RectGL:s}=await Promise.resolve().then((()=>l(t(429))));this.glglyph=new s(e.regl_wrapper,this)}}_map_data(){if(\"data\"==this.model.properties.width.units)[this.sw,this.sx0]=this._map_dist_corner_for_data_side_length(this._x,this.width,this.renderer.xscale);else{this.sw=(0,_.to_screen)(this.width);const t=this.sx.length;this.sx0=new _.ScreenArray(t);for(let e=0;e({dilate:[t,!1]})))},\n function _(e,t,r,a,s){a();const i=e(1);var n;const l=e(292),_=e(293),c=(0,i.__importStar)(e(18));class o extends l.MarkerView{async lazy_initialize(){await super.lazy_initialize();const{webgl:t}=this.renderer.plot_view.canvas_view;if(null!=t&&t.regl_wrapper.has_webgl){const{MultiMarkerGL:r}=await Promise.resolve().then((()=>(0,i.__importStar)(e(428))));this.glglyph=new r(t.regl_wrapper,this)}}_render(e,t,r){const{sx:a,sy:s,size:i,angle:n,marker:l}=null!=r?r:this;for(const r of t){const t=a[r],c=s[r],o=i.get(r),g=n.get(r),w=l.get(r);if(!isFinite(t+c+o+g)||null==w)continue;const p=o/2;e.beginPath(),e.translate(t,c),g&&e.rotate(g),_.marker_funcs[w](e,r,p,this.visuals),g&&e.rotate(-g),e.translate(-t,-c)}}draw_legend_for_index(e,{x0:t,x1:r,y0:a,y1:s},i){const n=i+1,l=this.marker.get(i),_=Object.assign(Object.assign({},this._get_legend_args({x0:t,x1:r,y0:a,y1:s},i)),{marker:new c.UniformScalar(l,n)});this._render(e,[i],_)}}r.ScatterView=o,o.__name__=\"ScatterView\";class g extends l.Marker{constructor(e){super(e)}}r.Scatter=g,n=g,g.__name__=\"Scatter\",n.prototype.default_view=o,n.define((()=>({marker:[c.MarkerSpec,{value:\"circle\"}]})))},\n function _(e,t,s,n,i){n();const r=e(1);var a;const c=e(178),o=e(48),_=(0,r.__importStar)(e(185)),h=(0,r.__importStar)(e(18)),l=e(9),x=e(72);class d extends c.XYGlyphView{_render(e,t,s){const{sx:n,sy:i,size:r,angle:a}=null!=s?s:this;for(const s of t){const t=n[s],c=i[s],o=r.get(s),_=a.get(s);if(!isFinite(t+c+o+_))continue;const h=o/2;e.beginPath(),e.translate(t,c),_&&e.rotate(_),this._render_one(e,s,h,this.visuals),_&&e.rotate(-_),e.translate(-t,-c)}}_mask_data(){const{x_target:e,y_target:t}=this.renderer.plot_view.frame,s=e.widen(this.max_size).map((e=>this.renderer.xscale.invert(e))),n=t.widen(this.max_size).map((e=>this.renderer.yscale.invert(e)));return this.index.indices({x0:s.start,x1:s.end,y0:n.start,y1:n.end})}_hit_point(e){const{sx:t,sy:s}=e,{max_size:n}=this,{hit_dilation:i}=this.model,r=t-n*i,a=t+n*i,[c,o]=this.renderer.xscale.r_invert(r,a),_=s-n*i,h=s+n*i,[l,d]=this.renderer.yscale.r_invert(_,h),y=this.index.indices({x0:c,x1:o,y0:l,y1:d}),g=[];for(const e of y){const n=this.size.get(e)/2*i;Math.abs(this.sx[e]-t)<=n&&Math.abs(this.sy[e]-s)<=n&&g.push(e)}return new x.Selection({indices:g})}_hit_span(e){const{sx:t,sy:s}=e,n=this.bounds(),i=this.max_size/2;let r,a,c,o;if(\"h\"==e.direction){c=n.y0,o=n.y1;const e=t-i,s=t+i;[r,a]=this.renderer.xscale.r_invert(e,s)}else{r=n.x0,a=n.x1;const e=s-i,t=s+i;[c,o]=this.renderer.yscale.r_invert(e,t)}const _=[...this.index.indices({x0:r,x1:a,y0:c,y1:o})];return new x.Selection({indices:_})}_hit_rect(e){const{sx0:t,sx1:s,sy0:n,sy1:i}=e,[r,a]=this.renderer.xscale.r_invert(t,s),[c,o]=this.renderer.yscale.r_invert(n,i),_=[...this.index.indices({x0:r,x1:a,y0:c,y1:o})];return new x.Selection({indices:_})}_hit_poly(e){const{sx:t,sy:s}=e,n=(0,l.range)(0,this.sx.length),i=[];for(let e=0,r=n.length;e({size:[h.ScreenSizeSpec,{value:4}],angle:[h.AngleSpec,0],hit_dilation:[e,1]})))},\n function _(l,o,n,t,i){t();const e=Math.sqrt(3),a=Math.sqrt(5),c=(a+1)/4,p=Math.sqrt((5-a)/8),r=(a-1)/4,h=Math.sqrt((5+a)/8);function u(l,o){l.rotate(Math.PI/4),s(l,o),l.rotate(-Math.PI/4)}function f(l,o){const n=o*e,t=n/3;l.moveTo(-n/2,-t),l.lineTo(0,0),l.lineTo(n/2,-t),l.lineTo(0,0),l.lineTo(0,o)}function s(l,o){l.moveTo(0,o),l.lineTo(0,-o),l.moveTo(-o,0),l.lineTo(o,0)}function T(l,o){l.moveTo(0,o),l.lineTo(o/1.5,0),l.lineTo(0,-o),l.lineTo(-o/1.5,0),l.closePath()}function y(l,o){const n=o*e,t=n/3;l.moveTo(-o,t),l.lineTo(o,t),l.lineTo(0,t-n),l.closePath()}function v(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function d(l,o,n,t){T(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function _(l,o,n,t){!function(l,o){l.beginPath(),l.arc(0,0,o/4,0,2*Math.PI,!1),l.closePath()}(l,n),t.line.set_vectorize(l,o),l.fillStyle=l.strokeStyle,l.fill()}function P(l,o,n,t){!function(l,o){const n=o/2,t=e*n;l.moveTo(o,0),l.lineTo(n,-t),l.lineTo(-n,-t),l.lineTo(-o,0),l.lineTo(-n,t),l.lineTo(n,t),l.closePath()}(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function m(l,o,n,t){const i=2*n;l.rect(-n,-n,i,i),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function q(l,o,n,t){!function(l,o){const n=Math.sqrt(5-2*a)*o;l.moveTo(0,-o),l.lineTo(n*r,n*h-o),l.lineTo(n*(1+r),n*h-o),l.lineTo(n*(1+r-c),n*(h+p)-o),l.lineTo(n*(1+2*r-c),n*(2*h+p)-o),l.lineTo(0,2*n*h-o),l.lineTo(-n*(1+2*r-c),n*(2*h+p)-o),l.lineTo(-n*(1+r-c),n*(h+p)-o),l.lineTo(-n*(1+r),n*h-o),l.lineTo(-n*r,n*h-o),l.closePath()}(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function M(l,o,n,t){y(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}n.marker_funcs={asterisk:function(l,o,n,t){s(l,n),u(l,n),t.line.apply(l,o)},circle:v,circle_cross:function(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),s(l,n),l.stroke())},circle_dot:function(l,o,n,t){v(l,o,n,t),_(l,o,n,t)},circle_y:function(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),f(l,n),l.stroke())},circle_x:function(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),u(l,n),l.stroke())},cross:function(l,o,n,t){s(l,n),t.line.apply(l,o)},diamond:d,diamond_dot:function(l,o,n,t){d(l,o,n,t),_(l,o,n,t)},diamond_cross:function(l,o,n,t){T(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),l.moveTo(0,n),l.lineTo(0,-n),l.moveTo(-n/1.5,0),l.lineTo(n/1.5,0),l.stroke())},dot:_,hex:P,hex_dot:function(l,o,n,t){P(l,o,n,t),_(l,o,n,t)},inverted_triangle:function(l,o,n,t){l.rotate(Math.PI),y(l,n),l.rotate(-Math.PI),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},plus:function(l,o,n,t){const i=3*n/8,e=[i,i,n,n,i,i,-i,-i,-n,-n,-i,-i],a=[n,i,i,-i,-i,-n,-n,-i,-i,i,i,n];l.beginPath();for(let o=0;o<12;o++)l.lineTo(e[o],a[o]);l.closePath(),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},square:m,square_cross:function(l,o,n,t){const i=2*n;l.rect(-n,-n,i,i),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),s(l,n),l.stroke())},square_dot:function(l,o,n,t){m(l,o,n,t),_(l,o,n,t)},square_pin:function(l,o,n,t){const i=3*n/8;l.moveTo(-n,-n),l.quadraticCurveTo(0,-i,n,-n),l.quadraticCurveTo(i,0,n,n),l.quadraticCurveTo(0,i,-n,n),l.quadraticCurveTo(-i,0,-n,-n),l.closePath(),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},square_x:function(l,o,n,t){const i=2*n;l.rect(-n,-n,i,i),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),l.moveTo(-n,n),l.lineTo(n,-n),l.moveTo(-n,-n),l.lineTo(n,n),l.stroke())},star:q,star_dot:function(l,o,n,t){q(l,o,n,t),_(l,o,n,t)},triangle:M,triangle_dot:function(l,o,n,t){M(l,o,n,t),_(l,o,n,t)},triangle_pin:function(l,o,n,t){const i=n*e,a=i/3,c=3*a/8;l.moveTo(-n,a),l.quadraticCurveTo(0,c,n,a),l.quadraticCurveTo(e*c/2,c/2,0,a-i),l.quadraticCurveTo(-e*c/2,c/2,-n,a),l.closePath(),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},dash:function(l,o,n,t){!function(l,o){l.moveTo(-o,0),l.lineTo(o,0)}(l,n),t.line.apply(l,o)},x:function(l,o,n,t){u(l,n),t.line.apply(l,o)},y:function(l,o,n,t){f(l,n),t.line.apply(l,o)}}},\n function _(e,t,s,i,n){i();const r=e(1);var o;const _=(0,r.__importStar)(e(185)),h=(0,r.__importStar)(e(18)),c=e(48),a=e(78),d=e(179),x=e(184),l=e(72);class y extends d.GlyphView{_project_data(){a.inplace.project_xy(this._x0,this._y0),a.inplace.project_xy(this._x1,this._y1)}_index_data(e){const{min:t,max:s}=Math,{_x0:i,_x1:n,_y0:r,_y1:o,data_size:_}=this;for(let h=0;h<_;h++){const _=i[h],c=n[h],a=r[h],d=o[h];e.add_rect(t(_,c),t(a,d),s(_,c),s(a,d))}}_render(e,t,s){if(this.visuals.line.doit){const{sx0:i,sy0:n,sx1:r,sy1:o}=null!=s?s:this;for(const s of t){const t=i[s],_=n[s],h=r[s],c=o[s];isFinite(t+_+h+c)&&(e.beginPath(),e.moveTo(t,_),e.lineTo(h,c),this.visuals.line.set_vectorize(e,s),e.stroke())}}}_hit_point(e){const{sx:t,sy:s}=e,i={x:t,y:s},[n,r]=this.renderer.xscale.r_invert(t-2,t+2),[o,h]=this.renderer.yscale.r_invert(s-2,s+2),c=this.index.indices({x0:n,y0:o,x1:r,y1:h}),a=[];for(const e of c){const t=Math.max(2,this.line_width.get(e)/2)**2,s={x:this.sx0[e],y:this.sy0[e]},n={x:this.sx1[e],y:this.sy1[e]};_.dist_to_segment_squared(i,s,n)({x0:[h.XCoordinateSpec,{field:\"x0\"}],y0:[h.YCoordinateSpec,{field:\"y0\"}],x1:[h.XCoordinateSpec,{field:\"x1\"}],y1:[h.YCoordinateSpec,{field:\"y1\"}]}))),o.mixins(c.LineVector)},\n function _(t,e,s,i,n){i();const o=t(1);var _;const l=t(178),a=(0,o.__importStar)(t(48)),c=t(296);class r extends l.XYGlyphView{_set_data(){const{tension:t,closed:e}=this.model;[this._xt,this._yt]=(0,c.catmullrom_spline)(this._x,this._y,20,t,e)}_map_data(){const{x_scale:t,y_scale:e}=this.renderer.coordinates;this.sxt=t.v_compute(this._xt),this.syt=e.v_compute(this._yt)}_render(t,e,s){const{sxt:i,syt:n}=null!=s?s:this;let o=!0;t.beginPath();const _=i.length;for(let e=0;e<_;e++){const s=i[e],_=n[e];isFinite(s+_)?o?(t.moveTo(s,_),o=!1):t.lineTo(s,_):o=!0}this.visuals.line.set_value(t),t.stroke()}}s.SplineView=r,r.__name__=\"SplineView\";class h extends l.XYGlyph{constructor(t){super(t)}}s.Spline=h,_=h,h.__name__=\"Spline\",_.prototype.default_view=r,_.mixins(a.LineScalar),_.define((({Boolean:t,Number:e})=>({tension:[e,.5],closed:[t,!1]})))},\n function _(n,t,e,o,s){o();const c=n(24),l=n(11);e.catmullrom_spline=function(n,t,e=10,o=.5,s=!1){(0,l.assert)(n.length==t.length);const r=n.length,f=s?r+1:r,w=(0,c.infer_type)(n,t),i=new w(f+2),u=new w(f+2);i.set(n,1),u.set(t,1),s?(i[0]=n[r-1],u[0]=t[r-1],i[f]=n[0],u[f]=t[0],i[f+1]=n[1],u[f+1]=t[1]):(i[0]=n[0],u[0]=t[0],i[f+1]=n[r-1],u[f+1]=t[r-1]);const g=new w(4*(e+1));for(let n=0,t=0;n<=e;n++){const o=n/e,s=o**2,c=o*s;g[t++]=2*c-3*s+1,g[t++]=-2*c+3*s,g[t++]=c-2*s+o,g[t++]=c-s}const h=new w((f-1)*(e+1)),_=new w((f-1)*(e+1));for(let n=1,t=0;n1&&(e.stroke(),o=!1)}o?(e.lineTo(t,r),e.lineTo(a,c)):(e.beginPath(),e.moveTo(s[n],i[n]),o=!0),l=n}e.lineTo(s[a-1],i[a-1]),e.stroke()}}draw_legend_for_index(e,t,n){(0,r.generic_line_scalar_legend)(this.visuals,e,t)}}n.StepView=f,f.__name__=\"StepView\";class u extends a.XYGlyph{constructor(e){super(e)}}n.Step=u,l=u,u.__name__=\"Step\",l.prototype.default_view=f,l.mixins(c.LineScalar),l.define((()=>({mode:[_.StepMode,\"before\"]})))},\n function _(t,e,s,i,n){i();const o=t(1);var _;const h=t(178),l=t(48),r=(0,o.__importStar)(t(185)),a=(0,o.__importStar)(t(18)),c=t(121),x=t(11),u=t(72);class f extends h.XYGlyphView{_rotate_point(t,e,s,i,n){return[(t-s)*Math.cos(n)-(e-i)*Math.sin(n)+s,(t-s)*Math.sin(n)+(e-i)*Math.cos(n)+i]}_text_bounds(t,e,s,i){return[[t,t+s,t+s,t,t],[e,e,e-i,e-i,e]]}_render(t,e,s){const{sx:i,sy:n,x_offset:o,y_offset:_,angle:h,text:l}=null!=s?s:this;this._sys=[],this._sxs=[];for(const s of e){const e=this._sxs[s]=[],r=this._sys[s]=[],a=i[s],x=n[s],u=o.get(s),f=_.get(s),p=h.get(s),g=l.get(s);if(isFinite(a+x+u+f+p)&&null!=g&&this.visuals.text.doit){const i=`${g}`;t.save(),t.translate(a+u,x+f),t.rotate(p),this.visuals.text.set_vectorize(t,s);const n=this.visuals.text.font_value(s),{height:o}=(0,c.font_metrics)(n),_=this.text_line_height.get(s)*o;if(-1==i.indexOf(\"\\n\")){t.fillText(i,0,0);const s=a+u,n=x+f,o=t.measureText(i).width,[h,l]=this._text_bounds(s,n,o,_);e.push(h),r.push(l)}else{const n=i.split(\"\\n\"),o=_*n.length,h=this.text_baseline.get(s);let l;switch(h){case\"top\":l=0;break;case\"middle\":l=-o/2+_/2;break;case\"bottom\":l=-o+_;break;default:l=0,console.warn(`'${h}' baseline not supported with multi line text`)}for(const s of n){t.fillText(s,0,l);const i=a+u,n=l+x+f,o=t.measureText(s).width,[h,c]=this._text_bounds(i,n,o,_);e.push(h),r.push(c),l+=_}}t.restore()}}}_hit_point(t){const{sx:e,sy:s}=t,i=[];for(let t=0;t({text:[a.NullStringSpec,{field:\"text\"}],angle:[a.AngleSpec,0],x_offset:[a.NumberSpec,0],y_offset:[a.NumberSpec,0]})))},\n function _(t,e,s,i,r){i();const h=t(1);var o;const a=t(277),n=t(24),_=(0,h.__importStar)(t(18));class l extends a.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null!=e&&e.regl_wrapper.has_webgl){const{LRTBGL:s}=await Promise.resolve().then((()=>(0,h.__importStar)(t(427))));this.glglyph=new s(e.regl_wrapper,this)}}scenterxy(t){return[this.sx[t],(this.stop[t]+this.sbottom[t])/2]}_lrtb(t){const e=this.width.get(t)/2,s=this._x[t],i=this._top[t],r=this._bottom[t];return[s-e,s+e,Math.max(i,r),Math.min(i,r)]}_map_data(){this.sx=this.renderer.xscale.v_compute(this._x),this.sw=this.sdist(this.renderer.xscale,this._x,this.width,\"center\"),this.stop=this.renderer.yscale.v_compute(this._top),this.sbottom=this.renderer.yscale.v_compute(this._bottom);const t=this.sx.length;this.sleft=new n.ScreenArray(t),this.sright=new n.ScreenArray(t);for(let e=0;e({x:[_.XCoordinateSpec,{field:\"x\"}],bottom:[_.YCoordinateSpec,{value:0}],width:[_.NumberSpec,{value:1}],top:[_.YCoordinateSpec,{field:\"top\"}]})))},\n function _(e,s,t,i,n){i();const r=e(1);var a;const c=e(178),d=e(184),l=e(48),h=e(24),o=e(20),_=(0,r.__importStar)(e(18)),u=e(10),g=e(72),x=e(12);class p extends c.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=(0,h.to_screen)(this.radius),this.max_sradius=(0,x.max)(this.sradius)}_render(e,s,t){const{sx:i,sy:n,sradius:r,start_angle:a,end_angle:c}=null!=t?t:this,d=\"anticlock\"==this.model.direction;for(const t of s){const s=i[t],l=n[t],h=r[t],o=a.get(t),_=c.get(t);isFinite(s+l+h+o+_)&&(e.beginPath(),e.arc(s,l,h,o,_,d),e.lineTo(s,l),e.closePath(),this.visuals.fill.apply(e,t),this.visuals.hatch.apply(e,t),this.visuals.line.apply(e,t))}}_hit_point(e){let s,t,i,n,r;const{sx:a,sy:c}=e,d=this.renderer.xscale.invert(a),l=this.renderer.yscale.invert(c);t=a-this.max_sradius,i=a+this.max_sradius;const[h,o]=this.renderer.xscale.r_invert(t,i);n=c-this.max_sradius,r=c+this.max_sradius;const[_,x]=this.renderer.yscale.r_invert(n,r),p=[];for(const e of this.index.indices({x0:h,x1:o,y0:_,y1:x})){const a=this.sradius[e]**2;[t,i]=this.renderer.xscale.r_compute(d,this._x[e]),[n,r]=this.renderer.yscale.r_compute(l,this._y[e]),s=(t-i)**2+(n-r)**2,s<=a&&p.push(e)}const y=\"anticlock\"==this.model.direction,m=[];for(const e of p){const s=Math.atan2(c-this.sy[e],a-this.sx[e]);(0,u.angle_between)(-s,-this.start_angle.get(e),-this.end_angle.get(e),y)&&m.push(e)}return new g.Selection({indices:m})}draw_legend_for_index(e,s,t){(0,d.generic_area_vector_legend)(this.visuals,e,s,t)}scenterxy(e){const s=this.sradius[e]/2,t=(this.start_angle.get(e)+this.end_angle.get(e))/2;return[this.sx[e]+s*Math.cos(t),this.sy[e]+s*Math.sin(t)]}}t.WedgeView=p,p.__name__=\"WedgeView\";class y extends c.XYGlyph{constructor(e){super(e)}}t.Wedge=y,a=y,y.__name__=\"Wedge\",a.prototype.default_view=p,a.mixins([l.LineVector,l.FillVector,l.HatchVector]),a.define((({})=>({direction:[o.Direction,\"anticlock\"],radius:[_.DistanceSpec,{field:\"radius\"}],start_angle:[_.AngleSpec,{field:\"start_angle\"}],end_angle:[_.AngleSpec,{field:\"end_angle\"}]})))},\n function _(t,_,r,o,a){o();const e=t(1);(0,e.__exportStar)(t(302),r),(0,e.__exportStar)(t(303),r),(0,e.__exportStar)(t(304),r)},\n function _(e,t,d,n,s){n();const o=e(53),r=e(12),_=e(9),i=e(72);class c extends o.Model{constructor(e){super(e)}_hit_test(e,t,d){if(!t.model.visible)return null;const n=d.glyph.hit_test(e);return null==n?null:d.model.view.convert_selection_from_subset(n)}}d.GraphHitTestPolicy=c,c.__name__=\"GraphHitTestPolicy\";class a extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.edge_view)}do_selection(e,t,d,n){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;return s.update(e,d,n),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const{edge_renderer:o}=d.model,r=o.get_selection_manager().get_or_create_inspector(d.edge_view.model);return r.update(e,n,s),d.edge_view.model.data_source.setv({inspected:r},{silent:!0}),d.edge_view.model.data_source.inspect.emit([d.edge_view.model,{geometry:t}]),!r.is_empty()}}d.EdgesOnly=a,a.__name__=\"EdgesOnly\";class l extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.node_view)}do_selection(e,t,d,n){if(null==e)return!1;const s=t.node_renderer.data_source.selected;return s.update(e,d,n),t.node_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const{node_renderer:o}=d.model,r=o.get_selection_manager().get_or_create_inspector(d.node_view.model);return r.update(e,n,s),d.node_view.model.data_source.setv({inspected:r},{silent:!0}),d.node_view.model.data_source.inspect.emit([d.node_view.model,{geometry:t}]),!r.is_empty()}}d.NodesOnly=l,l.__name__=\"NodesOnly\";class u extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.node_view)}get_linked_edges(e,t,d){let n=[];\"selection\"==d?n=e.selected.indices.map((t=>e.data.index[t])):\"inspection\"==d&&(n=e.inspected.indices.map((t=>e.data.index[t])));const s=[];for(let e=0;e(0,r.indexOf)(e.data.index,t)));return new i.Selection({indices:o})}do_selection(e,t,d,n){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;s.update(e,d,n);const o=t.node_renderer.data_source.selected,r=this.get_linked_nodes(t.node_renderer.data_source,t.edge_renderer.data_source,\"selection\");return o.update(r,d,n),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const o=d.edge_view.model.data_source.selection_manager.get_or_create_inspector(d.edge_view.model);o.update(e,n,s),d.edge_view.model.data_source.setv({inspected:o},{silent:!0});const r=d.node_view.model.data_source.selection_manager.get_or_create_inspector(d.node_view.model),_=this.get_linked_nodes(d.node_view.model.data_source,d.edge_view.model.data_source,\"inspection\");return r.update(_,n,s),d.node_view.model.data_source.setv({inspected:r},{silent:!0}),d.edge_view.model.data_source.inspect.emit([d.edge_view.model,{geometry:t}]),!o.is_empty()}}d.EdgesAndLinkedNodes=m,m.__name__=\"EdgesAndLinkedNodes\"},\n function _(e,o,t,r,n){var s;r();const a=e(53),d=e(260);class _ extends a.Model{constructor(e){super(e)}get node_coordinates(){return new u({layout:this})}get edge_coordinates(){return new i({layout:this})}}t.LayoutProvider=_,_.__name__=\"LayoutProvider\";class c extends d.CoordinateTransform{constructor(e){super(e)}}t.GraphCoordinates=c,s=c,c.__name__=\"GraphCoordinates\",s.define((({Ref:e})=>({layout:[e(_)]})));class u extends c{constructor(e){super(e)}_v_compute(e){const[o,t]=this.layout.get_node_coordinates(e);return{x:o,y:t}}}t.NodeCoordinates=u,u.__name__=\"NodeCoordinates\";class i extends c{constructor(e){super(e)}_v_compute(e){const[o,t]=this.layout.get_edge_coordinates(e);return{x:o,y:t}}}t.EdgeCoordinates=i,i.__name__=\"EdgeCoordinates\"},\n function _(t,a,l,e,n){var o;e();const r=t(303);class u extends r.LayoutProvider{constructor(t){super(t)}get_node_coordinates(t){var a;const l=null!==(a=t.data.index)&&void 0!==a?a:[],e=l.length,n=new Float64Array(e),o=new Float64Array(e);for(let t=0;t({graph_layout:[l(a(t,t)),{}]})))},\n function _(i,d,n,r,G){r(),G(\"Grid\",i(306).Grid)},\n function _(i,e,n,s,t){s();const r=i(1);var o;const d=i(127),_=i(129),a=i(130),l=(0,r.__importStar)(i(48)),h=i(8);class c extends _.GuideRendererView{_render(){const i=this.layer.ctx;i.save(),this._draw_regions(i),this._draw_minor_grids(i),this._draw_grids(i),i.restore()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_draw_regions(i){if(!this.visuals.band_fill.doit&&!this.visuals.band_hatch.doit)return;const[e,n]=this.grid_coords(\"major\",!1);for(let s=0;sn[1]&&(t=n[1]);else{[s,t]=n;for(const i of this.plot_view.axis_views)i.dimension==this.model.dimension&&i.model.x_range_name==this.model.x_range_name&&i.model.y_range_name==this.model.y_range_name&&([s,t]=i.computed_bounds)}return[s,t]}grid_coords(i,e=!0){const n=this.model.dimension,s=(n+1)%2,[t,r]=this.ranges();let[o,d]=this.computed_bounds();[o,d]=[Math.min(o,d),Math.max(o,d)];const _=[[],[]],a=this.model.get_ticker();if(null==a)return _;const l=a.get_ticks(o,d,t,r.min)[i],h=t.min,c=t.max,u=r.min,m=r.max;e||(l[0]!=h&&l.splice(0,0,h),l[l.length-1]!=c&&l.push(c));for(let i=0;i({bounds:[r(t(i,i),e),\"auto\"],dimension:[n(0,1),0],axis:[o(s(d.Axis)),null],ticker:[o(s(a.Ticker)),null]}))),o.override({level:\"underlay\",band_fill_color:null,band_fill_alpha:0,grid_line_color:\"#e5e5e5\",minor_grid_line_color:null})},\n function _(o,a,x,B,e){B(),e(\"Box\",o(308).Box),e(\"Column\",o(310).Column),e(\"GridBox\",o(311).GridBox),e(\"HTMLBox\",o(312).HTMLBox),e(\"LayoutDOM\",o(309).LayoutDOM),e(\"Panel\",o(313).Panel),e(\"Row\",o(314).Row),e(\"Spacer\",o(315).Spacer),e(\"Tabs\",o(316).Tabs),e(\"WidgetBox\",o(319).WidgetBox)},\n function _(e,n,s,t,c){var i;t();const o=e(309);class r extends o.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.children.change,(()=>this.rebuild()))}get child_models(){return this.model.children}}s.BoxView=r,r.__name__=\"BoxView\";class a extends o.LayoutDOM{constructor(e){super(e)}}s.Box=a,i=a,a.__name__=\"Box\",i.define((({Number:e,Array:n,Ref:s})=>({children:[n(s(o.LayoutDOM)),[]],spacing:[e,0]})))},\n function _(t,i,e,s,o){var l;s();const n=t(53),h=t(20),a=t(43),r=t(19),_=t(8),c=t(22),u=t(121),d=t(113),p=t(226),m=t(207),g=t(44),w=t(235);class f extends p.DOMView{constructor(){super(...arguments),this._offset_parent=null,this._viewport={}}get is_layout_root(){return this.is_root||!(this.parent instanceof f)}get base_font_size(){const t=getComputedStyle(this.el).fontSize,i=(0,u.parse_css_font_size)(t);if(null!=i){const{value:t,unit:e}=i;if(\"px\"==e)return t}return null}initialize(){super.initialize(),this.el.style.position=this.is_layout_root?\"relative\":\"absolute\",this._child_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await this.build_child_views()}remove(){for(const t of this.child_views)t.remove();this._child_views.clear(),super.remove()}connect_signals(){super.connect_signals(),this.is_layout_root&&(this._on_resize=()=>this.resize_layout(),window.addEventListener(\"resize\",this._on_resize),this._parent_observer=setInterval((()=>{const t=this.el.offsetParent;this._offset_parent!=t&&(this._offset_parent=t,null!=t&&(this.compute_viewport(),this.invalidate_layout()))}),250));const t=this.model.properties;this.on_change([t.width,t.height,t.min_width,t.min_height,t.max_width,t.max_height,t.margin,t.width_policy,t.height_policy,t.sizing_mode,t.aspect_ratio,t.visible],(()=>this.invalidate_layout())),this.on_change([t.background,t.css_classes],(()=>this.invalidate_render()))}disconnect_signals(){null!=this._parent_observer&&clearTimeout(this._parent_observer),null!=this._on_resize&&window.removeEventListener(\"resize\",this._on_resize),super.disconnect_signals()}css_classes(){return super.css_classes().concat(this.model.css_classes)}get child_views(){return this.child_models.map((t=>this._child_views.get(t)))}async build_child_views(){await(0,d.build_views)(this._child_views,this.child_models,{parent:this})}render(){super.render(),(0,a.empty)(this.el);const{background:t}=this.model;this.el.style.backgroundColor=null!=t?(0,c.color2css)(t):\"\",(0,a.classes)(this.el).clear().add(...this.css_classes());for(const t of this.child_views)this.el.appendChild(t.el),t.render()}update_layout(){for(const t of this.child_views)t.update_layout();this._update_layout()}update_position(){this.el.style.display=this.model.visible?\"block\":\"none\";const t=this.is_layout_root?this.layout.sizing.margin:void 0;(0,a.position)(this.el,this.layout.bbox,t);for(const t of this.child_views)t.update_position()}after_layout(){for(const t of this.child_views)t.after_layout();this._has_finished=!0}compute_viewport(){this._viewport=this._viewport_size()}renderTo(t){t.appendChild(this.el),this._offset_parent=this.el.offsetParent,this.compute_viewport(),this.build(),this.notify_finished()}build(){if(!this.is_layout_root)throw new Error(`${this.toString()} is not a root layout`);return this.render(),this.update_layout(),this.compute_layout(),this}async rebuild(){await this.build_child_views(),this.invalidate_render()}compute_layout(){const t=Date.now();this.layout.compute(this._viewport),this.update_position(),this.after_layout(),r.logger.debug(`layout computed in ${Date.now()-t} ms`)}resize_layout(){this.root.compute_viewport(),this.root.compute_layout()}invalidate_layout(){this.root.update_layout(),this.root.compute_layout()}invalidate_render(){this.render(),this.invalidate_layout()}has_finished(){if(!super.has_finished())return!1;for(const t of this.child_views)if(!t.has_finished())return!1;return!0}_width_policy(){return null!=this.model.width?\"fixed\":\"fit\"}_height_policy(){return null!=this.model.height?\"fixed\":\"fit\"}box_sizing(){let{width_policy:t,height_policy:i,aspect_ratio:e}=this.model;\"auto\"==t&&(t=this._width_policy()),\"auto\"==i&&(i=this._height_policy());const{sizing_mode:s}=this.model;if(null!=s)if(\"fixed\"==s)t=i=\"fixed\";else if(\"stretch_both\"==s)t=i=\"max\";else if(\"stretch_width\"==s)t=\"max\";else if(\"stretch_height\"==s)i=\"max\";else switch(null==e&&(e=\"auto\"),s){case\"scale_width\":t=\"max\",i=\"min\";break;case\"scale_height\":t=\"min\",i=\"max\";break;case\"scale_both\":t=\"max\",i=\"max\"}const o={width_policy:t,height_policy:i},{min_width:l,min_height:n}=this.model;null!=l&&(o.min_width=l),null!=n&&(o.min_height=n);const{width:h,height:a}=this.model;null!=h&&(o.width=h),null!=a&&(o.height=a);const{max_width:r,max_height:c}=this.model;null!=r&&(o.max_width=r),null!=c&&(o.max_height=c),\"auto\"==e&&null!=h&&null!=a?o.aspect=h/a:(0,_.isNumber)(e)&&(o.aspect=e);const{margin:u}=this.model;if(null!=u)if((0,_.isNumber)(u))o.margin={top:u,right:u,bottom:u,left:u};else if(2==u.length){const[t,i]=u;o.margin={top:t,right:i,bottom:t,left:i}}else{const[t,i,e,s]=u;o.margin={top:t,right:i,bottom:e,left:s}}o.visible=this.model.visible;const{align:d}=this.model;return(0,_.isArray)(d)?[o.halign,o.valign]=d:o.halign=o.valign=d,o}_viewport_size(){return(0,a.undisplayed)(this.el,(()=>{let t=this.el;for(;t=t.parentElement;){if(t.classList.contains(g.root))continue;if(t==document.body){const{margin:{left:t,right:i,top:e,bottom:s}}=(0,a.extents)(document.body);return{width:Math.ceil(document.documentElement.clientWidth-t-i),height:Math.ceil(document.documentElement.clientHeight-e-s)}}const{padding:{left:i,right:e,top:s,bottom:o}}=(0,a.extents)(t),{width:l,height:n}=t.getBoundingClientRect(),h=Math.ceil(l-i-e),r=Math.ceil(n-s-o);if(h>0||r>0)return{width:h>0?h:void 0,height:r>0?r:void 0}}return{}}))}export(t,i=!0){const e=\"png\"==t?\"canvas\":\"svg\",s=new w.CanvasLayer(e,i),{width:o,height:l}=this.layout.bbox;s.resize(o,l);for(const e of this.child_views){const o=e.export(t,i),{x:l,y:n}=e.layout.bbox;s.ctx.drawImage(o.canvas,l,n)}return s}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box,children:this.child_views.map((t=>t.serializable_state()))})}}e.LayoutDOMView=f,f.__name__=\"LayoutDOMView\";class y extends n.Model{constructor(t){super(t)}}e.LayoutDOM=y,l=y,y.__name__=\"LayoutDOM\",l.define((t=>{const{Boolean:i,Number:e,String:s,Auto:o,Color:l,Array:n,Tuple:a,Or:r,Null:_,Nullable:c}=t,u=a(e,e),d=a(e,e,e,e);return{width:[c(e),null],height:[c(e),null],min_width:[c(e),null],min_height:[c(e),null],max_width:[c(e),null],max_height:[c(e),null],margin:[c(r(e,u,d)),[0,0,0,0]],width_policy:[r(m.SizingPolicy,o),\"auto\"],height_policy:[r(m.SizingPolicy,o),\"auto\"],aspect_ratio:[r(e,o,_),null],sizing_mode:[c(h.SizingMode),null],visible:[i,!0],disabled:[i,!1],align:[r(h.Align,a(h.Align,h.Align)),\"start\"],background:[c(l),null],css_classes:[n(s),[]]}}))},\n function _(o,s,t,i,e){var n;i();const a=o(308),l=o(209);class u extends a.BoxView{_update_layout(){const o=this.child_views.map((o=>o.layout));this.layout=new l.Column(o),this.layout.rows=this.model.rows,this.layout.spacing=[this.model.spacing,0],this.layout.set_sizing(this.box_sizing())}}t.ColumnView=u,u.__name__=\"ColumnView\";class _ extends a.Box{constructor(o){super(o)}}t.Column=_,n=_,_.__name__=\"Column\",n.prototype.default_view=u,n.define((({Any:o})=>({rows:[o,\"auto\"]})))},\n function _(s,o,t,i,e){var n;i();const l=s(309),a=s(209);class r extends l.LayoutDOMView{connect_signals(){super.connect_signals();const{children:s,rows:o,cols:t,spacing:i}=this.model.properties;this.on_change([s,o,t,i],(()=>this.rebuild()))}get child_models(){return this.model.children.map((([s])=>s))}_update_layout(){this.layout=new a.Grid,this.layout.rows=this.model.rows,this.layout.cols=this.model.cols,this.layout.spacing=this.model.spacing;for(const[s,o,t,i,e]of this.model.children){const n=this._child_views.get(s);this.layout.items.push({layout:n.layout,row:o,col:t,row_span:i,col_span:e})}this.layout.set_sizing(this.box_sizing())}}t.GridBoxView=r,r.__name__=\"GridBoxView\";class c extends l.LayoutDOM{constructor(s){super(s)}}t.GridBox=c,n=c,c.__name__=\"GridBox\",n.prototype.default_view=r,n.define((({Any:s,Int:o,Number:t,Tuple:i,Array:e,Ref:n,Or:a,Opt:r})=>({children:[e(i(n(l.LayoutDOM),o,o,r(o),r(o))),[]],rows:[s,\"auto\"],cols:[s,\"auto\"],spacing:[a(t,i(t,t)),0]})))},\n function _(t,e,o,s,n){s();const _=t(309),i=t(207);class a extends _.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new i.ContentBox(this.el),this.layout.set_sizing(this.box_sizing())}}o.HTMLBoxView=a,a.__name__=\"HTMLBoxView\";class u extends _.LayoutDOM{constructor(t){super(t)}}o.HTMLBox=u,u.__name__=\"HTMLBox\"},\n function _(e,n,l,a,o){var t;a();const s=e(53),c=e(309);class d extends s.Model{constructor(e){super(e)}}l.Panel=d,t=d,d.__name__=\"Panel\",t.define((({Boolean:e,String:n,Ref:l})=>({title:[n,\"\"],child:[l(c.LayoutDOM)],closable:[e,!1],disabled:[e,!1]})))},\n function _(o,s,t,i,e){var a;i();const n=o(308),l=o(209);class _ extends n.BoxView{_update_layout(){const o=this.child_views.map((o=>o.layout));this.layout=new l.Row(o),this.layout.cols=this.model.cols,this.layout.spacing=[0,this.model.spacing],this.layout.set_sizing(this.box_sizing())}}t.RowView=_,_.__name__=\"RowView\";class c extends n.Box{constructor(o){super(o)}}t.Row=c,a=c,c.__name__=\"Row\",a.prototype.default_view=_,a.define((({Any:o})=>({cols:[o,\"auto\"]})))},\n function _(e,t,a,s,_){var o;s();const i=e(309),n=e(207);class u extends i.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new n.LayoutItem,this.layout.set_sizing(this.box_sizing())}}a.SpacerView=u,u.__name__=\"SpacerView\";class c extends i.LayoutDOM{constructor(e){super(e)}}a.Spacer=c,o=c,c.__name__=\"Spacer\",o.prototype.default_view=u},\n function _(e,t,s,i,l){i();const h=e(1);var a;const o=e(207),d=e(43),r=e(9),c=e(10),n=e(20),_=e(309),p=e(313),b=(0,h.__importStar)(e(317)),m=b,u=(0,h.__importStar)(e(318)),g=u,v=(0,h.__importStar)(e(229)),w=v;class f extends _.LayoutDOMView{constructor(){super(...arguments),this._scroll_index=0}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tabs.change,(()=>this.rebuild())),this.connect(this.model.properties.active.change,(()=>this.on_active_change()))}styles(){return[...super.styles(),u.default,v.default,b.default]}get child_models(){return this.model.tabs.map((e=>e.child))}_update_layout(){const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,{scroll_el:s,headers_el:i}=this;this.header=new class extends o.ContentBox{_measure(e){const l=(0,d.size)(s),h=(0,d.children)(i).slice(0,3).map((e=>(0,d.size)(e))),{width:a,height:o}=super._measure(e);if(t){const t=l.width+(0,r.sum)(h.map((e=>e.width)));return{width:e.width!=1/0?e.width:t,height:o}}{const t=l.height+(0,r.sum)(h.map((e=>e.height)));return{width:a,height:e.height!=1/0?e.height:t}}}}(this.header_el),t?this.header.set_sizing({width_policy:\"fit\",height_policy:\"fixed\"}):this.header.set_sizing({width_policy:\"fixed\",height_policy:\"fit\"});let l=1,h=1;switch(e){case\"above\":l-=1;break;case\"below\":l+=1;break;case\"left\":h-=1;break;case\"right\":h+=1}const a={layout:this.header,row:l,col:h},c=this.child_views.map((e=>({layout:e.layout,row:1,col:1})));this.layout=new o.Grid([a,...c]),this.layout.set_sizing(this.box_sizing())}update_position(){super.update_position(),this.header_el.style.position=\"absolute\",(0,d.position)(this.header_el,this.header.bbox);const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,s=(0,d.size)(this.scroll_el),i=(0,d.scroll_size)(this.headers_el);if(t){const{width:e}=this.header.bbox;i.width>e?(this.wrapper_el.style.maxWidth=e-s.width+\"px\",(0,d.display)(this.scroll_el),this.do_scroll(this.model.active)):(this.wrapper_el.style.maxWidth=\"\",(0,d.undisplay)(this.scroll_el))}else{const{height:e}=this.header.bbox;i.height>e?(this.wrapper_el.style.maxHeight=e-s.height+\"px\",(0,d.display)(this.scroll_el),this.do_scroll(this.model.active)):(this.wrapper_el.style.maxHeight=\"\",(0,d.undisplay)(this.scroll_el))}const{child_views:l}=this;for(const e of l)(0,d.hide)(e.el);const h=l[this.model.active];null!=h&&(0,d.show)(h.el)}render(){super.render();const{active:e}=this.model,t=this.model.tabs.map(((t,s)=>{const i=(0,d.div)({class:[m.tab,s==e?m.active:null]},t.title);if(i.addEventListener(\"click\",(e=>{this.model.disabled||e.target==e.currentTarget&&this.change_active(s)})),t.closable){const e=(0,d.div)({class:m.close});e.addEventListener(\"click\",(e=>{if(e.target==e.currentTarget){this.model.tabs=(0,r.remove_at)(this.model.tabs,s);const e=this.model.tabs.length;this.model.active>e-1&&(this.model.active=e-1)}})),i.appendChild(e)}return(this.model.disabled||t.disabled)&&i.classList.add(m.disabled),i}));this.headers_el=(0,d.div)({class:[m.headers]},t),this.wrapper_el=(0,d.div)({class:m.headers_wrapper},this.headers_el),this.left_el=(0,d.div)({class:[g.btn,g.btn_default],disabled:\"\"},(0,d.div)({class:[w.caret,m.left]})),this.right_el=(0,d.div)({class:[g.btn,g.btn_default]},(0,d.div)({class:[w.caret,m.right]})),this.left_el.addEventListener(\"click\",(()=>this.do_scroll(\"left\"))),this.right_el.addEventListener(\"click\",(()=>this.do_scroll(\"right\"))),this.scroll_el=(0,d.div)({class:g.btn_group},this.left_el,this.right_el);const s=this.model.tabs_location;this.header_el=(0,d.div)({class:[m.tabs_header,m[s]]},this.scroll_el,this.wrapper_el),this.el.appendChild(this.header_el)}do_scroll(e){const t=this.model.tabs.length;\"left\"==e?this._scroll_index-=1:\"right\"==e?this._scroll_index+=1:this._scroll_index=e,this._scroll_index=(0,c.clamp)(this._scroll_index,0,t-1),0==this._scroll_index?this.left_el.setAttribute(\"disabled\",\"\"):this.left_el.removeAttribute(\"disabled\"),this._scroll_index==t-1?this.right_el.setAttribute(\"disabled\",\"\"):this.right_el.removeAttribute(\"disabled\");const s=(0,d.children)(this.headers_el).slice(0,this._scroll_index).map((e=>e.getBoundingClientRect())),i=this.model.tabs_location;if(\"above\"==i||\"below\"==i){const e=-(0,r.sum)(s.map((e=>e.width)));this.headers_el.style.left=`${e}px`}else{const e=-(0,r.sum)(s.map((e=>e.height)));this.headers_el.style.top=`${e}px`}}change_active(e){e!=this.model.active&&(this.model.active=e)}on_active_change(){const e=this.model.active,t=(0,d.children)(this.headers_el);for(const e of t)e.classList.remove(m.active);t[e].classList.add(m.active);const{child_views:s}=this;for(const e of s)(0,d.hide)(e.el);(0,d.show)(s[e].el)}}s.TabsView=f,f.__name__=\"TabsView\";class x extends _.LayoutDOM{constructor(e){super(e)}}s.Tabs=x,a=x,x.__name__=\"Tabs\",a.prototype.default_view=f,a.define((({Int:e,Array:t,Ref:s})=>({tabs:[t(s(p.Panel)),[]],tabs_location:[n.Location,\"above\"],active:[e,0]})))},\n function _(e,r,b,o,t){o(),b.root=\"bk-root\",b.tabs_header=\"bk-tabs-header\",b.btn_group=\"bk-btn-group\",b.btn=\"bk-btn\",b.headers_wrapper=\"bk-headers-wrapper\",b.above=\"bk-above\",b.right=\"bk-right\",b.below=\"bk-below\",b.left=\"bk-left\",b.headers=\"bk-headers\",b.tab=\"bk-tab\",b.active=\"bk-active\",b.close=\"bk-close\",b.disabled=\"bk-disabled\",b.default='.bk-root .bk-tabs-header{display:flex;flex-wrap:nowrap;align-items:center;overflow:hidden;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-tabs-header .bk-btn-group{height:auto;margin-right:5px;}.bk-root .bk-tabs-header .bk-btn-group > .bk-btn{flex-grow:0;height:auto;padding:4px 4px;}.bk-root .bk-tabs-header .bk-headers-wrapper{flex-grow:1;overflow:hidden;color:#666666;}.bk-root .bk-tabs-header.bk-above .bk-headers-wrapper{border-bottom:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-right .bk-headers-wrapper{border-left:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-below .bk-headers-wrapper{border-top:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-left .bk-headers-wrapper{border-right:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-above,.bk-root .bk-tabs-header.bk-below{flex-direction:row;}.bk-root .bk-tabs-header.bk-above .bk-headers,.bk-root .bk-tabs-header.bk-below .bk-headers{flex-direction:row;}.bk-root .bk-tabs-header.bk-left,.bk-root .bk-tabs-header.bk-right{flex-direction:column;}.bk-root .bk-tabs-header.bk-left .bk-headers,.bk-root .bk-tabs-header.bk-right .bk-headers{flex-direction:column;}.bk-root .bk-tabs-header .bk-headers{position:relative;display:flex;flex-wrap:nowrap;align-items:center;}.bk-root .bk-tabs-header .bk-tab{padding:4px 8px;border:solid transparent;white-space:nowrap;cursor:pointer;}.bk-root .bk-tabs-header .bk-tab:hover{background-color:#f2f2f2;}.bk-root .bk-tabs-header .bk-tab.bk-active{color:#4d4d4d;background-color:white;border-color:#e6e6e6;}.bk-root .bk-tabs-header .bk-tab .bk-close{margin-left:10px;}.bk-root .bk-tabs-header .bk-tab.bk-disabled{cursor:not-allowed;pointer-events:none;opacity:0.65;}.bk-root .bk-tabs-header.bk-above .bk-tab{border-width:3px 1px 0px 1px;border-radius:4px 4px 0 0;}.bk-root .bk-tabs-header.bk-right .bk-tab{border-width:1px 3px 1px 0px;border-radius:0 4px 4px 0;}.bk-root .bk-tabs-header.bk-below .bk-tab{border-width:0px 1px 3px 1px;border-radius:0 0 4px 4px;}.bk-root .bk-tabs-header.bk-left .bk-tab{border-width:1px 0px 1px 3px;border-radius:4px 0 0 4px;}.bk-root .bk-close{display:inline-block;width:10px;height:10px;vertical-align:middle;background-image:url(\\'data:image/svg+xml;utf8, \\');}.bk-root .bk-close:hover{background-image:url(\\'data:image/svg+xml;utf8, \\');}'},\n function _(o,b,r,t,e){t(),r.root=\"bk-root\",r.btn=\"bk-btn\",r.active=\"bk-active\",r.btn_default=\"bk-btn-default\",r.btn_primary=\"bk-btn-primary\",r.btn_success=\"bk-btn-success\",r.btn_warning=\"bk-btn-warning\",r.btn_danger=\"bk-btn-danger\",r.btn_light=\"bk-btn-light\",r.btn_group=\"bk-btn-group\",r.vertical=\"bk-vertical\",r.horizontal=\"bk-horizontal\",r.dropdown_toggle=\"bk-dropdown-toggle\",r.default=\".bk-root .bk-btn{height:100%;display:inline-block;text-align:center;vertical-align:middle;white-space:nowrap;cursor:pointer;padding:6px 12px;font-size:12px;border:1px solid transparent;border-radius:4px;outline:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-btn:hover,.bk-root .bk-btn:focus{text-decoration:none;}.bk-root .bk-btn:active,.bk-root .bk-btn.bk-active{background-image:none;box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);}.bk-root .bk-btn[disabled]{cursor:not-allowed;pointer-events:none;opacity:0.65;box-shadow:none;}.bk-root .bk-btn-default{color:#333;background-color:#fff;border-color:#ccc;}.bk-root .bk-btn-default:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-default.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-default[disabled],.bk-root .bk-btn-default[disabled]:hover,.bk-root .bk-btn-default[disabled]:focus,.bk-root .bk-btn-default[disabled]:active,.bk-root .bk-btn-default[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd;}.bk-root .bk-btn-primary:hover{background-color:#3681c1;border-color:#2c699e;}.bk-root .bk-btn-primary.bk-active{background-color:#3276b1;border-color:#285e8e;}.bk-root .bk-btn-primary[disabled],.bk-root .bk-btn-primary[disabled]:hover,.bk-root .bk-btn-primary[disabled]:focus,.bk-root .bk-btn-primary[disabled]:active,.bk-root .bk-btn-primary[disabled].bk-active{background-color:#506f89;border-color:#357ebd;}.bk-root .bk-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c;}.bk-root .bk-btn-success:hover{background-color:#4eb24e;border-color:#409240;}.bk-root .bk-btn-success.bk-active{background-color:#47a447;border-color:#398439;}.bk-root .bk-btn-success[disabled],.bk-root .bk-btn-success[disabled]:hover,.bk-root .bk-btn-success[disabled]:focus,.bk-root .bk-btn-success[disabled]:active,.bk-root .bk-btn-success[disabled].bk-active{background-color:#667b66;border-color:#4cae4c;}.bk-root .bk-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236;}.bk-root .bk-btn-warning:hover{background-color:#eea43b;border-color:#e89014;}.bk-root .bk-btn-warning.bk-active{background-color:#ed9c28;border-color:#d58512;}.bk-root .bk-btn-warning[disabled],.bk-root .bk-btn-warning[disabled]:hover,.bk-root .bk-btn-warning[disabled]:focus,.bk-root .bk-btn-warning[disabled]:active,.bk-root .bk-btn-warning[disabled].bk-active{background-color:#c89143;border-color:#eea236;}.bk-root .bk-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a;}.bk-root .bk-btn-danger:hover{background-color:#d5433e;border-color:#bd2d29;}.bk-root .bk-btn-danger.bk-active{background-color:#d2322d;border-color:#ac2925;}.bk-root .bk-btn-danger[disabled],.bk-root .bk-btn-danger[disabled]:hover,.bk-root .bk-btn-danger[disabled]:focus,.bk-root .bk-btn-danger[disabled]:active,.bk-root .bk-btn-danger[disabled].bk-active{background-color:#a55350;border-color:#d43f3a;}.bk-root .bk-btn-light{color:#333;background-color:#fff;border-color:#ccc;border-color:transparent;}.bk-root .bk-btn-light:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-light.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-light[disabled],.bk-root .bk-btn-light[disabled]:hover,.bk-root .bk-btn-light[disabled]:focus,.bk-root .bk-btn-light[disabled]:active,.bk-root .bk-btn-light[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-group{height:100%;display:flex;flex-wrap:nowrap;align-items:center;}.bk-root .bk-btn-group:not(.bk-vertical),.bk-root .bk-btn-group.bk-horizontal{flex-direction:row;}.bk-root .bk-btn-group.bk-vertical{flex-direction:column;}.bk-root .bk-btn-group > .bk-btn{flex-grow:1;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn + .bk-btn{margin-left:-1px;}.bk-root .bk-btn-group.bk-vertical > .bk-btn + .bk-btn{margin-top:-1px;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn:first-child:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn:not(:first-child):last-child{border-bottom-left-radius:0;border-top-left-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn:not(:first-child):last-child{border-top-left-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group > .bk-btn:not(:first-child):not(:last-child){border-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn{width:100%;}.bk-root .bk-btn-group .bk-dropdown-toggle{flex:0 0 0;padding:6px 6px;}\"},\n function _(e,t,o,n,_){var i;n();const s=e(310);class d extends s.ColumnView{}o.WidgetBoxView=d,d.__name__=\"WidgetBoxView\";class a extends s.Column{constructor(e){super(e)}}o.WidgetBox=a,i=a,a.__name__=\"WidgetBox\",i.prototype.default_view=d},\n function _(t,a,i,e,M){e();var T=t(135);M(\"MathText\",T.MathText),M(\"Ascii\",T.Ascii),M(\"MathML\",T.MathML),M(\"TeX\",T.TeX),M(\"PlainText\",t(139).PlainText)},\n function _(r,o,t,e,n){e(),n(\"CustomJSTransform\",r(322).CustomJSTransform),n(\"Dodge\",r(323).Dodge),n(\"Interpolator\",r(325).Interpolator),n(\"Jitter\",r(326).Jitter),n(\"LinearInterpolator\",r(327).LinearInterpolator),n(\"StepInterpolator\",r(328).StepInterpolator),n(\"Transform\",r(56).Transform)},\n function _(r,t,s,n,e){var a;n();const u=r(56),o=r(13),m=r(34);class _ extends u.Transform{constructor(r){super(r)}get names(){return(0,o.keys)(this.args)}get values(){return(0,o.values)(this.args)}_make_transform(r,t){return new Function(...this.names,r,(0,m.use_strict)(t))}get scalar_transform(){return this._make_transform(\"x\",this.func)}get vector_transform(){return this._make_transform(\"xs\",this.v_func)}compute(r){return this.scalar_transform(...this.values,r)}v_compute(r){return this.vector_transform(...this.values,r)}}s.CustomJSTransform=_,a=_,_.__name__=\"CustomJSTransform\",a.define((({Unknown:r,String:t,Dict:s})=>({args:[s(r),{}],func:[t,\"\"],v_func:[t,\"\"]})))},\n function _(e,n,r,o,s){var t;o();const u=e(324);class a extends u.RangeTransform{constructor(e){super(e)}_compute(e){return e+this.value}}r.Dodge=a,t=a,a.__name__=\"Dodge\",t.define((({Number:e})=>({value:[e,0]})))},\n function _(e,n,t,r,a){var s;r();const c=e(56),o=e(57),i=e(67),u=e(24),h=e(8),l=e(11);class g extends c.Transform{constructor(e){super(e)}v_compute(e){let n;this.range instanceof i.FactorRange?n=this.range.v_synthetic(e):(0,h.isArrayableOf)(e,h.isNumber)?n=e:(0,l.unreachable)();const t=new((0,u.infer_type)(n))(n.length);for(let e=0;e({range:[n(e(o.Range)),null]})))},\n function _(t,e,r,n,s){var o;n();const i=t(56),a=t(70),h=t(24),l=t(9),d=t(8);class c extends i.Transform{constructor(t){super(t),this._sorted_dirty=!0}connect_signals(){super.connect_signals(),this.connect(this.change,(()=>this._sorted_dirty=!0))}v_compute(t){const e=new((0,h.infer_type)(t))(t.length);for(let r=0;ro*(e[t]-e[r]))),this._x_sorted=new((0,h.infer_type)(e))(n),this._y_sorted=new((0,h.infer_type)(r))(n);for(let t=0;t({x:[o(r,s(e))],y:[o(r,s(e))],data:[i(n(a.ColumnarDataSource)),null],clip:[t,!0]})))},\n function _(t,s,e,i,r){i();const n=t(1);var o;const a=t(324),u=t(67),h=t(20),c=t(8),m=t(12),f=(0,n.__importStar)(t(10)),_=t(11);class p extends a.RangeTransform{constructor(t){super(t)}v_compute(t){var s;let e;this.range instanceof u.FactorRange?e=this.range.v_synthetic(t):(0,c.isArrayableOf)(t,c.isNumber)?e=t:(0,_.unreachable)();const i=e.length;(null===(s=this.previous_offsets)||void 0===s?void 0:s.length)!=i&&(this.previous_offsets=new Array(i),this.previous_offsets=(0,m.map)(this.previous_offsets,(()=>this._compute())));const r=this.previous_offsets;return(0,m.map)(e,((t,s)=>r[s]+t))}_compute(){switch(this.distribution){case\"uniform\":return this.mean+(f.random()-.5)*this.width;case\"normal\":return f.rnorm(this.mean,this.width)}}}e.Jitter=p,o=p,p.__name__=\"Jitter\",o.define((({Number:t})=>({mean:[t,0],width:[t,1],distribution:[h.Distribution,\"uniform\"]})))},\n function _(t,s,_,r,e){r();const i=t(9),o=t(325);class n extends o.Interpolator{constructor(t){super(t)}compute(t){if(this.sort(!1),this.clip){if(tthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(t==this._x_sorted[0])return this._y_sorted[0];const s=(0,i.find_last_index)(this._x_sorted,(s=>sthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}let e;switch(this.mode){case\"after\":e=(0,d.find_last_index)(this._x_sorted,(e=>t>=e));break;case\"before\":e=(0,d.find_index)(this._x_sorted,(e=>t<=e));break;case\"center\":{const s=(0,d.map)(this._x_sorted,(e=>Math.abs(e-t))),r=(0,d.min)(s);e=(0,d.find_index)(s,(t=>r===t));break}default:throw new Error(`unknown mode: ${this.mode}`)}return-1!=e?this._y_sorted[e]:NaN}}s.StepInterpolator=h,_=h,h.__name__=\"StepInterpolator\",_.define((()=>({mode:[n.StepMode,\"after\"]})))},\n function _(p,o,t,a,n){a(),n(\"MapOptions\",p(330).MapOptions),n(\"GMapOptions\",p(330).GMapOptions),n(\"GMapPlot\",p(330).GMapPlot),n(\"Plot\",p(331).Plot)},\n function _(e,t,n,o,a){var s,p,_;o();const i=e(331),r=e(53),l=e(58),c=e(336);a(\"GMapPlotView\",c.GMapPlotView);class d extends r.Model{constructor(e){super(e)}}n.MapOptions=d,s=d,d.__name__=\"MapOptions\",s.define((({Int:e,Number:t})=>({lat:[t],lng:[t],zoom:[e,12]})));class u extends d{constructor(e){super(e)}}n.GMapOptions=u,p=u,u.__name__=\"GMapOptions\",p.define((({Boolean:e,Int:t,String:n})=>({map_type:[n,\"roadmap\"],scale_control:[e,!1],styles:[n],tilt:[t,45]})));class M extends i.Plot{constructor(e){super(e),this.use_map=!0}}n.GMapPlot=M,_=M,M.__name__=\"GMapPlot\",_.prototype.default_view=c.GMapPlotView,_.define((({String:e,Ref:t})=>({map_options:[t(u)],api_key:[e],api_version:[e,\"weekly\"]}))),_.override({x_range:()=>new l.Range1d,y_range:()=>new l.Range1d})},\n function _(e,t,r,n,i){n();const o=e(1);var a;const s=(0,o.__importStar)(e(48)),l=(0,o.__importStar)(e(18)),_=e(15),c=e(20),h=e(9),d=e(13),u=e(8),g=e(309),p=e(128),f=e(306),b=e(40),w=e(118),y=e(59),m=e(221),x=e(57),v=e(55),A=e(75),S=e(41),R=e(176),D=e(175),L=e(63),P=e(332);i(\"PlotView\",P.PlotView);class k extends g.LayoutDOM{constructor(e){super(e),this.use_map=!1}_doc_attached(){super._doc_attached(),this._push_changes([[this.properties.inner_height,null,this.inner_height],[this.properties.inner_width,null,this.inner_width]])}initialize(){super.initialize(),this.reset=new _.Signal0(this,\"reset\");for(const e of(0,d.values)(this.extra_x_ranges).concat(this.x_range)){let t=e.plots;(0,u.isArray)(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}for(const e of(0,d.values)(this.extra_y_ranges).concat(this.y_range)){let t=e.plots;(0,u.isArray)(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}}add_layout(e,t=\"center\"){const r=this.properties[t].get_value();this.setv({[t]:[...r,e]})}remove_layout(e){const t=t=>{(0,h.remove_by)(t,(t=>t==e))};t(this.left),t(this.right),t(this.above),t(this.below),t(this.center)}get data_renderers(){return this.renderers.filter((e=>e instanceof R.DataRenderer))}add_renderers(...e){this.renderers=this.renderers.concat(e)}add_glyph(e,t=new A.ColumnDataSource,r={}){const n=new D.GlyphRenderer(Object.assign(Object.assign({},r),{data_source:t,glyph:e}));return this.add_renderers(n),n}add_tools(...e){this.toolbar.tools=this.toolbar.tools.concat(e)}get panels(){return[...this.side_panels,...this.center]}get side_panels(){const{above:e,below:t,left:r,right:n}=this;return(0,h.concat)([e,t,r,n])}}r.Plot=k,a=k,k.__name__=\"Plot\",a.prototype.default_view=P.PlotView,a.mixins([[\"outline_\",s.Line],[\"background_\",s.Fill],[\"border_\",s.Fill]]),a.define((({Boolean:e,Number:t,String:r,Array:n,Dict:i,Or:o,Ref:a,Null:s,Nullable:_})=>({toolbar:[a(m.Toolbar),()=>new m.Toolbar],toolbar_location:[_(c.Location),\"right\"],toolbar_sticky:[e,!0],plot_width:[l.Alias(\"width\")],plot_height:[l.Alias(\"height\")],frame_width:[_(t),null],frame_height:[_(t),null],title:[o(a(w.Title),r,s),\"\",{convert:e=>(0,u.isString)(e)?new w.Title({text:e}):e}],title_location:[_(c.Location),\"above\"],above:[n(o(a(b.Annotation),a(p.Axis))),[]],below:[n(o(a(b.Annotation),a(p.Axis))),[]],left:[n(o(a(b.Annotation),a(p.Axis))),[]],right:[n(o(a(b.Annotation),a(p.Axis))),[]],center:[n(o(a(b.Annotation),a(f.Grid))),[]],renderers:[n(a(S.Renderer)),[]],x_range:[a(x.Range),()=>new L.DataRange1d],y_range:[a(x.Range),()=>new L.DataRange1d],x_scale:[a(v.Scale),()=>new y.LinearScale],y_scale:[a(v.Scale),()=>new y.LinearScale],extra_x_ranges:[i(a(x.Range)),{}],extra_y_ranges:[i(a(x.Range)),{}],extra_x_scales:[i(a(v.Scale)),{}],extra_y_scales:[i(a(v.Scale)),{}],lod_factor:[t,10],lod_interval:[t,300],lod_threshold:[_(t),2e3],lod_timeout:[t,500],hidpi:[e,!0],output_backend:[c.OutputBackend,\"canvas\"],min_border:[_(t),5],min_border_top:[_(t),null],min_border_left:[_(t),null],min_border_bottom:[_(t),null],min_border_right:[_(t),null],inner_width:[t,0],inner_height:[t,0],outer_width:[t,0],outer_height:[t,0],match_aspect:[e,!1],aspect_scale:[t,1],reset_policy:[c.ResetPolicy,\"standard\"]}))),a.override({width:600,height:600,outline_line_color:\"#e5e5e5\",border_fill_color:\"#ffffff\",background_fill_color:\"#ffffff\"})},\n function _(e,t,i,s,a){s();const n=e(1),o=e(126),l=e(249),r=e(309),_=e(40),h=e(118),d=e(128),u=e(220),c=e(251),p=e(113),v=e(45),g=e(19),b=e(251),m=e(333),y=e(8),w=e(9),f=e(235),x=e(208),z=e(211),k=e(209),q=e(123),M=e(65),R=e(334),V=e(335),S=e(28);class O extends r.LayoutDOMView{constructor(){super(...arguments),this._outer_bbox=new M.BBox,this._inner_bbox=new M.BBox,this._needs_paint=!0,this._needs_layout=!1,this._invalidated_painters=new Set,this._invalidate_all=!0,this._needs_notify=!1}get canvas(){return this.canvas_view}get state(){return this._state_manager}set invalidate_dataranges(e){this._range_manager.invalidate_dataranges=e}renderer_view(e){const t=this.renderer_views.get(e);if(null==t)for(const[,t]of this.renderer_views){const i=t.renderer_view(e);if(null!=i)return i}return t}get is_paused(){return null!=this._is_paused&&0!==this._is_paused}get child_models(){return[]}pause(){null==this._is_paused?this._is_paused=1:this._is_paused+=1}unpause(e=!1){if(null==this._is_paused)throw new Error(\"wasn't paused\");this._is_paused-=1,0!=this._is_paused||e||this.request_paint(\"everything\")}notify_finished_after_paint(){this._needs_notify=!0}request_render(){this.request_paint(\"everything\")}request_paint(e){this.invalidate_painters(e),this.schedule_paint()}invalidate_painters(e){if(\"everything\"==e)this._invalidate_all=!0;else if((0,y.isArray)(e))for(const t of e)this._invalidated_painters.add(t);else this._invalidated_painters.add(e)}schedule_paint(){if(!this.is_paused){const e=this.throttled_paint();this._ready=this._ready.then((()=>e))}}request_layout(){this._needs_layout=!0,this.request_paint(\"everything\")}reset(){\"standard\"==this.model.reset_policy&&(this.state.clear(),this.reset_range(),this.reset_selection()),this.model.trigger_event(new c.Reset)}remove(){(0,p.remove_views)(this.renderer_views),(0,p.remove_views)(this.tool_views),this.canvas_view.remove(),super.remove()}render(){super.render(),this.el.appendChild(this.canvas_view.el),this.canvas_view.render()}initialize(){this.pause(),super.initialize(),this.lod_started=!1,this.visuals=new v.Visuals(this),this._initial_state={selection:new Map,dimensions:{width:0,height:0}},this.visibility_callbacks=[],this.renderer_views=new Map,this.tool_views=new Map,this.frame=new o.CartesianFrame(this.model.x_scale,this.model.y_scale,this.model.x_range,this.model.y_range,this.model.extra_x_ranges,this.model.extra_y_ranges,this.model.extra_x_scales,this.model.extra_y_scales),this._range_manager=new R.RangeManager(this),this._state_manager=new V.StateManager(this,this._initial_state),this.throttled_paint=(0,m.throttle)((()=>this.repaint()),1e3/60);const{title_location:e,title:t}=this.model;null!=e&&null!=t&&(this._title=t instanceof h.Title?t:new h.Title({text:t}));const{toolbar_location:i,toolbar:s}=this.model;null!=i&&null!=s&&(this._toolbar=new u.ToolbarPanel({toolbar:s}),s.toolbar_location=i)}async lazy_initialize(){await super.lazy_initialize();const{hidpi:e,output_backend:t}=this.model,i=new l.Canvas({hidpi:e,output_backend:t});this.canvas_view=await(0,p.build_view)(i,{parent:this}),this.canvas_view.plot_views=[this],await this.build_renderer_views(),await this.build_tool_views(),this._range_manager.update_dataranges(),this.unpause(!0),g.logger.debug(\"PlotView initialized\")}_width_policy(){return null==this.model.frame_width?super._width_policy():\"min\"}_height_policy(){return null==this.model.frame_height?super._height_policy():\"min\"}_update_layout(){var e,t,i,s,a;this.layout=new z.BorderLayout,this.layout.set_sizing(this.box_sizing());const n=(0,w.copy)(this.model.above),o=(0,w.copy)(this.model.below),l=(0,w.copy)(this.model.left),r=(0,w.copy)(this.model.right),d=e=>{switch(e){case\"above\":return n;case\"below\":return o;case\"left\":return l;case\"right\":return r}},{title_location:c,title:p}=this.model;null!=c&&null!=p&&d(c).push(this._title);const{toolbar_location:v,toolbar:g}=this.model;if(null!=v&&null!=g){const e=d(v);let t=!0;if(this.model.toolbar_sticky)for(let i=0;i{var i;const s=this.renderer_view(t);return s.panel=new q.Panel(e),null===(i=s.update_layout)||void 0===i||i.call(s),s.layout},m=(e,t)=>{const i=\"above\"==e||\"below\"==e,s=[];for(const a of t)if((0,y.isArray)(a)){const t=a.map((t=>{const s=b(e,t);if(t instanceof u.ToolbarPanel){const e=i?\"width_policy\":\"height_policy\";s.set_sizing(Object.assign(Object.assign({},s.sizing),{[e]:\"min\"}))}return s}));let n;i?(n=new k.Row(t),n.set_sizing({width_policy:\"max\",height_policy:\"min\"})):(n=new k.Column(t),n.set_sizing({width_policy:\"min\",height_policy:\"max\"})),n.absolute=!0,s.push(n)}else s.push(b(e,a));return s},f=null!==(e=this.model.min_border)&&void 0!==e?e:0;this.layout.min_border={left:null!==(t=this.model.min_border_left)&&void 0!==t?t:f,top:null!==(i=this.model.min_border_top)&&void 0!==i?i:f,right:null!==(s=this.model.min_border_right)&&void 0!==s?s:f,bottom:null!==(a=this.model.min_border_bottom)&&void 0!==a?a:f};const M=new x.NodeLayout,R=new x.VStack,V=new x.VStack,S=new x.HStack,O=new x.HStack;M.absolute=!0,R.absolute=!0,V.absolute=!0,S.absolute=!0,O.absolute=!0,M.children=this.model.center.filter((e=>e instanceof _.Annotation)).map((e=>{var t;const i=this.renderer_view(e);return null===(t=i.update_layout)||void 0===t||t.call(i),i.layout})).filter((e=>null!=e));const{frame_width:P,frame_height:j}=this.model;M.set_sizing(Object.assign(Object.assign({},null!=P?{width_policy:\"fixed\",width:P}:{width_policy:\"fit\"}),null!=j?{height_policy:\"fixed\",height:j}:{height_policy:\"fit\"})),M.on_resize((e=>this.frame.set_geometry(e))),R.children=(0,w.reversed)(m(\"above\",n)),V.children=m(\"below\",o),S.children=(0,w.reversed)(m(\"left\",l)),O.children=m(\"right\",r),R.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),V.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),S.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),O.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),this.layout.center_panel=M,this.layout.top_panel=R,this.layout.bottom_panel=V,this.layout.left_panel=S,this.layout.right_panel=O}get axis_views(){const e=[];for(const[,t]of this.renderer_views)t instanceof d.AxisView&&e.push(t);return e}set_toolbar_visibility(e){for(const t of this.visibility_callbacks)t(e)}update_range(e,t){this.pause(),this._range_manager.update(e,t),this.unpause()}reset_range(){this.update_range(null),this.trigger_ranges_update_event()}trigger_ranges_update_event(){const{x_range:e,y_range:t}=this.model;this.model.trigger_event(new b.RangesUpdate(e.start,e.end,t.start,t.end))}get_selection(){const e=new Map;for(const t of this.model.data_renderers){const{selected:i}=t.selection_manager.source;e.set(t,i)}return e}update_selection(e){for(const t of this.model.data_renderers){const i=t.selection_manager.source;if(null!=e){const s=e.get(t);null!=s&&i.selected.update(s,!0)}else i.selection_manager.clear()}}reset_selection(){this.update_selection(null)}_invalidate_layout(){(()=>{var e;for(const t of this.model.side_panels){const i=this.renderer_views.get(t);if(null===(e=i.layout)||void 0===e?void 0:e.has_size_changed())return this.invalidate_painters(i),!0}return!1})()&&this.root.compute_layout()}get_renderer_views(){return this.computed_renderers.map((e=>this.renderer_views.get(e)))}*_compute_renderers(){const{above:e,below:t,left:i,right:s,center:a,renderers:n}=this.model;yield*n,yield*e,yield*t,yield*i,yield*s,yield*a,null!=this._title&&(yield this._title),null!=this._toolbar&&(yield this._toolbar);for(const e of this.model.toolbar.tools)null!=e.overlay&&(yield e.overlay),yield*e.synthetic_renderers}async build_renderer_views(){this.computed_renderers=[...this._compute_renderers()],await(0,p.build_views)(this.renderer_views,this.computed_renderers,{parent:this})}async build_tool_views(){const e=this.model.toolbar.tools;(await(0,p.build_views)(this.tool_views,e,{parent:this})).map((e=>this.canvas_view.ui_event_bus.register_tool(e)))}connect_signals(){super.connect_signals();const{x_ranges:e,y_ranges:t}=this.frame;for(const[,t]of e)this.connect(t.change,(()=>{this._needs_layout=!0,this.request_paint(\"everything\")}));for(const[,e]of t)this.connect(e.change,(()=>{this._needs_layout=!0,this.request_paint(\"everything\")}));const{above:i,below:s,left:a,right:n,center:o,renderers:l}=this.model.properties;this.on_change([i,s,a,n,o,l],(async()=>await this.build_renderer_views())),this.connect(this.model.toolbar.properties.tools.change,(async()=>{await this.build_renderer_views(),await this.build_tool_views()})),this.connect(this.model.change,(()=>this.request_paint(\"everything\"))),this.connect(this.model.reset,(()=>this.reset()))}has_finished(){if(!super.has_finished())return!1;if(this.model.visible)for(const[,e]of this.renderer_views)if(!e.has_finished())return!1;return!0}after_layout(){var e;super.after_layout();for(const[,t]of this.renderer_views)t instanceof _.AnnotationView&&(null===(e=t.after_layout)||void 0===e||e.call(t));if(this._needs_layout=!1,this.model.setv({inner_width:Math.round(this.frame.bbox.width),inner_height:Math.round(this.frame.bbox.height),outer_width:Math.round(this.layout.bbox.width),outer_height:Math.round(this.layout.bbox.height)},{no_change:!0}),!1!==this.model.match_aspect&&(this.pause(),this._range_manager.update_dataranges(),this.unpause(!0)),!this._outer_bbox.equals(this.layout.bbox)){const{width:e,height:t}=this.layout.bbox;this.canvas_view.resize(e,t),this._outer_bbox=this.layout.bbox,this._invalidate_all=!0,this._needs_paint=!0}const{inner_bbox:t}=this.layout;this._inner_bbox.equals(t)||(this._inner_bbox=t,this._needs_paint=!0),this._needs_paint&&this.paint()}repaint(){this._needs_layout&&this._invalidate_layout(),this.paint()}paint(){this.is_paused||(this.model.visible&&(g.logger.trace(`${this.toString()}.paint()`),this._actual_paint()),this._needs_notify&&(this._needs_notify=!1,this.notify_finished()))}_actual_paint(){var e;const{document:t}=this.model;if(null!=t){const e=t.interactive_duration();e>=0&&e{t.interactive_duration()>this.model.lod_timeout&&t.interactive_stop(),this.request_paint(\"everything\")}),this.model.lod_timeout):t.interactive_stop()}this._range_manager.invalidate_dataranges&&(this._range_manager.update_dataranges(),this._invalidate_layout());let i=!1,s=!1;if(this._invalidate_all)i=!0,s=!0;else for(const e of this._invalidated_painters){const{level:t}=e.model;if(\"overlay\"!=t?i=!0:s=!0,i&&s)break}this._invalidated_painters.clear(),this._invalidate_all=!1;const a=[this.frame.bbox.left,this.frame.bbox.top,this.frame.bbox.width,this.frame.bbox.height],{primary:n,overlays:o}=this.canvas_view;i&&(n.prepare(),this.canvas_view.prepare_webgl(a),this._map_hook(n.ctx,a),this._paint_empty(n.ctx,a),this._paint_outline(n.ctx,a),this._paint_levels(n.ctx,\"image\",a,!0),this._paint_levels(n.ctx,\"underlay\",a,!0),this._paint_levels(n.ctx,\"glyph\",a,!0),this._paint_levels(n.ctx,\"guide\",a,!1),this._paint_levels(n.ctx,\"annotation\",a,!1),n.finish()),(s||S.settings.wireframe)&&(o.prepare(),this._paint_levels(o.ctx,\"overlay\",a,!1),S.settings.wireframe&&this._paint_layout(o.ctx,this.layout),o.finish()),null==this._initial_state.range&&(this._initial_state.range=null!==(e=this._range_manager.compute_initial())&&void 0!==e?e:void 0),this._needs_paint=!1}_paint_levels(e,t,i,s){for(const a of this.computed_renderers){if(a.level!=t)continue;const n=this.renderer_views.get(a);e.save(),(s||n.needs_clip)&&(e.beginPath(),e.rect(...i),e.clip()),n.render(),e.restore(),n.has_webgl&&n.needs_webgl_blit&&this.canvas_view.blit_webgl(e)}}_paint_layout(e,t){const{x:i,y:s,width:a,height:n}=t.bbox;e.strokeStyle=\"blue\",e.strokeRect(i,s,a,n);for(const a of t)e.save(),t.absolute||e.translate(i,s),this._paint_layout(e,a),e.restore()}_map_hook(e,t){}_paint_empty(e,t){const[i,s,a,n]=[0,0,this.layout.bbox.width,this.layout.bbox.height],[o,l,r,_]=t;this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(e),e.fillRect(i,s,a,n),e.clearRect(o,l,r,_)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),e.fillRect(o,l,r,_))}_paint_outline(e,t){if(this.visuals.outline_line.doit){e.save(),this.visuals.outline_line.set_value(e);let[i,s,a,n]=t;i+a==this.layout.bbox.width&&(a-=1),s+n==this.layout.bbox.height&&(n-=1),e.strokeRect(i,s,a,n),e.restore()}}to_blob(){return this.canvas_view.to_blob()}export(e,t=!0){const i=\"png\"==e?\"canvas\":\"svg\",s=new f.CanvasLayer(i,t),{width:a,height:n}=this.layout.bbox;s.resize(a,n);const{canvas:o}=this.canvas_view.compose();return s.ctx.drawImage(o,0,0),s}serializable_state(){const e=super.serializable_state(),{children:t}=e,i=(0,n.__rest)(e,[\"children\"]),s=this.get_renderer_views().map((e=>e.serializable_state())).filter((e=>null!=e.bbox));return Object.assign(Object.assign({},i),{children:[...null!=t?t:[],...s]})}}i.PlotView=O,O.__name__=\"PlotView\"},\n function _(t,n,e,o,u){o(),e.throttle=function(t,n){let e=null,o=0,u=!1;return function(){return new Promise(((r,i)=>{const l=function(){o=Date.now(),e=null,u=!1;try{t(),r()}catch(t){i(t)}},a=Date.now(),c=n-(a-o);c<=0&&!u?(null!=e&&clearTimeout(e),u=!0,requestAnimationFrame(l)):e||u?r():e=setTimeout((()=>requestAnimationFrame(l)),c)}))}}},\n function _(t,n,e,a,s){a();const o=t(63),r=t(19);class l{constructor(t){this.parent=t,this.invalidate_dataranges=!0}get frame(){return this.parent.frame}update(t,n){const{x_ranges:e,y_ranges:a}=this.frame;if(null==t){for(const[,t]of e)t.reset();for(const[,t]of a)t.reset();this.update_dataranges()}else{const s=[];for(const[n,a]of e)s.push([a,t.xrs.get(n)]);for(const[n,e]of a)s.push([e,t.yrs.get(n)]);(null==n?void 0:n.scrolling)&&this._update_ranges_together(s),this._update_ranges_individually(s,n)}}reset(){this.update(null)}_update_dataranges(t){const n=new Map,e=new Map;let a=!1;for(const[,n]of t.x_ranges)n instanceof o.DataRange1d&&\"log\"==n.scale_hint&&(a=!0);for(const[,n]of t.y_ranges)n instanceof o.DataRange1d&&\"log\"==n.scale_hint&&(a=!0);for(const t of this.parent.model.data_renderers){const s=this.parent.renderer_view(t);if(null==s)continue;const o=s.glyph_view.bounds();if(null!=o&&n.set(t,o),a){const n=s.glyph_view.log_bounds();null!=n&&e.set(t,n)}}let s=!1,l=!1;const i=t.x_target.span,d=t.y_target.span;let u;!1!==this.parent.model.match_aspect&&0!=i&&0!=d&&(u=1/this.parent.model.aspect_scale*(i/d));for(const[,a]of t.x_ranges){if(a instanceof o.DataRange1d){const t=\"log\"==a.scale_hint?e:n;a.update(t,0,this.parent.model,u),a.follow&&(s=!0)}null!=a.bounds&&(l=!0)}for(const[,a]of t.y_ranges){if(a instanceof o.DataRange1d){const t=\"log\"==a.scale_hint?e:n;a.update(t,1,this.parent.model,u),a.follow&&(s=!0)}null!=a.bounds&&(l=!0)}if(s&&l){r.logger.warn(\"Follow enabled so bounds are unset.\");for(const[,n]of t.x_ranges)n.bounds=null;for(const[,n]of t.y_ranges)n.bounds=null}}update_dataranges(){this._update_dataranges(this.frame);for(const t of this.parent.model.renderers){const{coordinates:n}=t;null!=n&&this._update_dataranges(n)}null!=this.compute_initial()&&(this.invalidate_dataranges=!1)}compute_initial(){let t=!0;const{x_ranges:n,y_ranges:e}=this.frame,a=new Map,s=new Map;for(const[e,s]of n){const{start:n,end:o}=s;if(null==n||null==o||isNaN(n+o)){t=!1;break}a.set(e,{start:n,end:o})}if(t)for(const[n,a]of e){const{start:e,end:o}=a;if(null==e||null==o||isNaN(e+o)){t=!1;break}s.set(n,{start:e,end:o})}return t?{xrs:a,yrs:s}:(r.logger.warn(\"could not set initial ranges\"),null)}_update_ranges_together(t){let n=1;for(const[e,a]of t)n=Math.min(n,this._get_weight_to_constrain_interval(e,a));if(n<1)for(const[e,a]of t)a.start=n*a.start+(1-n)*e.start,a.end=n*a.end+(1-n)*e.end}_update_ranges_individually(t,n){const e=!!(null==n?void 0:n.panning),a=!!(null==n?void 0:n.scrolling);let s=!1;for(const[n,o]of t){if(!a){const t=this._get_weight_to_constrain_interval(n,o);t<1&&(o.start=t*o.start+(1-t)*n.start,o.end=t*o.end+(1-t)*n.end)}if(null!=n.bounds&&\"auto\"!=n.bounds){const[t,r]=n.bounds,l=Math.abs(o.end-o.start);n.is_reversed?(null!=t&&t>o.end&&(s=!0,o.end=t,(e||a)&&(o.start=t+l)),null!=r&&ro.start&&(s=!0,o.start=t,(e||a)&&(o.end=t+l)),null!=r&&r0&&r0&&r>a&&(s=(a-o)/(r-o)),s=Math.max(0,Math.min(1,s))}return s}}e.RangeManager=l,l.__name__=\"RangeManager\"},\n function _(t,i,s,e,n){e();const h=t(15);class a{constructor(t,i){this.parent=t,this.initial_state=i,this.changed=new h.Signal0(this.parent,\"state_changed\"),this.history=[],this.index=-1}_do_state_change(t){const i=null!=this.history[t]?this.history[t].state:this.initial_state;return null!=i.range&&this.parent.update_range(i.range),null!=i.selection&&this.parent.update_selection(i.selection),i}push(t,i){const{history:s,index:e}=this,n=null!=s[e]?s[e].state:{},h=Object.assign(Object.assign(Object.assign({},this.initial_state),n),i);this.history=this.history.slice(0,this.index+1),this.history.push({type:t,state:h}),this.index=this.history.length-1,this.changed.emit()}clear(){this.history=[],this.index=-1,this.changed.emit()}undo(){if(this.can_undo){this.index-=1;const t=this._do_state_change(this.index);return this.changed.emit(),t}return null}redo(){if(this.can_redo){this.index+=1;const t=this._do_state_change(this.index);return this.changed.emit(),t}return null}get can_undo(){return this.index>=0}get can_redo(){return this.indexm.emit();const s=encodeURIComponent,o=document.createElement(\"script\");o.type=\"text/javascript\",o.src=`https://maps.googleapis.com/maps/api/js?v=${s(e)}&key=${s(t)}&callback=_bokeh_gmaps_callback`,document.body.appendChild(o)}(t,e)}m.connect((()=>this.request_paint(\"everything\")))}this.unpause()}remove(){(0,p.remove)(this.map_el),super.remove()}update_range(t,e){var s,o;if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),super.update_range(null,e);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(null!==(s=t.sdx)&&void 0!==s?s:0,null!==(o=t.sdy)&&void 0!==o?o:0),super.update_range(t,e);else if(null!=t.factor){if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),super.update_range(t,e);const s=t.factor<0?-1:1,o=this.map.getZoom();if(null!=o){const t=o+s;if(t>=2){this.map.setZoom(t);const[e,s]=this._get_projected_bounds();s-e<0&&this.map.setZoom(o)}}this.unpause()}this._set_bokeh_ranges()}_build_map(){const{maps:t}=google;this.map_types={satellite:t.MapTypeId.SATELLITE,terrain:t.MapTypeId.TERRAIN,roadmap:t.MapTypeId.ROADMAP,hybrid:t.MapTypeId.HYBRID};const e=this.model.map_options,s={center:new t.LatLng(e.lat,e.lng),zoom:e.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[e.map_type],scaleControl:e.scale_control,tilt:e.tilt};null!=e.styles&&(s.styles=JSON.parse(e.styles)),this.map_el=(0,p.div)({style:{position:\"absolute\"}}),this.canvas_view.add_underlay(this.map_el),this.map=new t.Map(this.map_el,s),t.event.addListener(this.map,\"idle\",(()=>this._set_bokeh_ranges())),t.event.addListener(this.map,\"bounds_changed\",(()=>this._set_bokeh_ranges())),t.event.addListenerOnce(this.map,\"tilesloaded\",(()=>this._render_finished())),this.connect(this.model.properties.map_options.change,(()=>this._update_options())),this.connect(this.model.map_options.properties.styles.change,(()=>this._update_styles())),this.connect(this.model.map_options.properties.lat.change,(()=>this._update_center(\"lat\"))),this.connect(this.model.map_options.properties.lng.change,(()=>this._update_center(\"lng\"))),this.connect(this.model.map_options.properties.zoom.change,(()=>this._update_zoom())),this.connect(this.model.map_options.properties.map_type.change,(()=>this._update_map_type())),this.connect(this.model.map_options.properties.scale_control.change,(()=>this._update_scale_control())),this.connect(this.model.map_options.properties.tilt.change,(()=>this._update_tilt()))}_render_finished(){this._tiles_loaded=!0,this.notify_finished()}has_finished(){return super.has_finished()&&!0===this._tiles_loaded}_get_latlon_bounds(){const t=this.map.getBounds(),e=t.getNorthEast(),s=t.getSouthWest();return[s.lng(),e.lng(),s.lat(),e.lat()]}_get_projected_bounds(){const[t,e,s,o]=this._get_latlon_bounds(),[i,a]=l.wgs84_mercator.compute(t,s),[n,p]=l.wgs84_mercator.compute(e,o);return[i,n,a,p]}_set_bokeh_ranges(){const[t,e,s,o]=this._get_projected_bounds();this.frame.x_range.setv({start:t,end:e}),this.frame.y_range.setv({start:s,end:o})}_update_center(t){var e;const s=null===(e=this.map.getCenter())||void 0===e?void 0:e.toJSON();null!=s&&(s[t]=this.model.map_options[t],this.map.setCenter(s),this._set_bokeh_ranges())}_update_map_type(){this.map.setOptions({mapTypeId:this.map_types[this.model.map_options.map_type]})}_update_scale_control(){this.map.setOptions({scaleControl:this.model.map_options.scale_control})}_update_tilt(){this.map.setOptions({tilt:this.model.map_options.tilt})}_update_options(){this._update_styles(),this._update_center(\"lat\"),this._update_center(\"lng\"),this._update_zoom(),this._update_map_type()}_update_styles(){this.map.setOptions({styles:JSON.parse(this.model.map_options.styles)})}_update_zoom(){this.map.setOptions({zoom:this.model.map_options.zoom}),this._set_bokeh_ranges()}_map_hook(t,e){if(null==this.map&&\"undefined\"!=typeof google&&null!=google.maps&&this._build_map(),null!=this.map_el){const[t,s,o,i]=e;this.map_el.style.top=`${s}px`,this.map_el.style.left=`${t}px`,this.map_el.style.width=`${o}px`,this.map_el.style.height=`${i}px`}}_paint_empty(t,e){const s=this.layout.bbox.width,o=this.layout.bbox.height,[i,a,n,p]=e;t.clearRect(0,0,s,o),t.beginPath(),t.moveTo(0,0),t.lineTo(0,o),t.lineTo(s,o),t.lineTo(s,0),t.lineTo(0,0),t.moveTo(i,a),t.lineTo(i+n,a),t.lineTo(i+n,a+p),t.lineTo(i,a+p),t.lineTo(i,a),t.closePath(),null!=this.model.border_fill_color&&(t.fillStyle=(0,_.color2css)(this.model.border_fill_color),t.fill())}}s.GMapPlotView=d,d.__name__=\"GMapPlotView\"},\n function _(t,_,n,o,r){o();(0,t(1).__exportStar)(t(132),n)},\n function _(e,r,d,n,R){n(),R(\"GlyphRenderer\",e(175).GlyphRenderer),R(\"GraphRenderer\",e(339).GraphRenderer),R(\"GuideRenderer\",e(129).GuideRenderer);var G=e(41);R(\"Renderer\",G.Renderer),R(\"RendererGroup\",G.RendererGroup)},\n function _(e,r,i,n,t){var o;n();const s=e(176),d=e(175),a=e(303),p=e(302),l=e(113),_=e(178),h=e(283),y=e(286);class c extends s.DataRendererView{get glyph_view(){return this.node_view.glyph}async lazy_initialize(){await super.lazy_initialize(),this.apply_coordinates();const{parent:e}=this,{edge_renderer:r,node_renderer:i}=this.model;this.edge_view=await(0,l.build_view)(r,{parent:e}),this.node_view=await(0,l.build_view)(i,{parent:e})}connect_signals(){super.connect_signals(),this.connect(this.model.layout_provider.change,(()=>{this.apply_coordinates(),this.edge_view.set_data(),this.node_view.set_data(),this.request_render()}))}apply_coordinates(){const{edge_renderer:e,node_renderer:r}=this.model;if(!(e.glyph instanceof h.MultiLine||e.glyph instanceof y.Patches))throw new Error(`${this}.edge_renderer.glyph must be a MultiLine glyph`);if(!(r.glyph instanceof _.XYGlyph))throw new Error(`${this}.node_renderer.glyph must be a XYGlyph glyph`);const i=this.model.layout_provider.edge_coordinates,n=this.model.layout_provider.node_coordinates;e.glyph.properties.xs.internal=!0,e.glyph.properties.ys.internal=!0,r.glyph.properties.x.internal=!0,r.glyph.properties.y.internal=!0,e.glyph.xs={expr:i.x},e.glyph.ys={expr:i.y},r.glyph.x={expr:n.x},r.glyph.y={expr:n.y}}remove(){this.edge_view.remove(),this.node_view.remove(),super.remove()}_render(){this.edge_view.render(),this.node_view.render()}renderer_view(e){if(e instanceof d.GlyphRenderer){if(e==this.edge_view.model)return this.edge_view;if(e==this.node_view.model)return this.node_view}return super.renderer_view(e)}}i.GraphRendererView=c,c.__name__=\"GraphRendererView\";class g extends s.DataRenderer{constructor(e){super(e)}get_selection_manager(){return this.node_renderer.data_source.selection_manager}}i.GraphRenderer=g,o=g,g.__name__=\"GraphRenderer\",o.prototype.default_view=c,o.define((({Ref:e})=>({layout_provider:[e(a.LayoutProvider)],node_renderer:[e(d.GlyphRenderer)],edge_renderer:[e(d.GlyphRenderer)],selection_policy:[e(p.GraphHitTestPolicy),()=>new p.NodesOnly],inspection_policy:[e(p.GraphHitTestPolicy),()=>new p.NodesOnly]})))},\n function _(e,t,n,o,c){o();(0,e(1).__exportStar)(e(74),n),c(\"Selection\",e(72).Selection)},\n function _(a,e,S,o,r){o(),r(\"ServerSentDataSource\",a(342).ServerSentDataSource),r(\"AjaxDataSource\",a(344).AjaxDataSource),r(\"ColumnDataSource\",a(75).ColumnDataSource),r(\"ColumnarDataSource\",a(70).ColumnarDataSource),r(\"CDSView\",a(190).CDSView),r(\"DataSource\",a(71).DataSource),r(\"GeoJSONDataSource\",a(345).GeoJSONDataSource),r(\"WebDataSource\",a(343).WebDataSource)},\n function _(e,t,i,a,s){a();const n=e(343);class r extends n.WebDataSource{constructor(e){super(e),this.initialized=!1}setup(){if(!this.initialized){this.initialized=!0;new EventSource(this.data_url).onmessage=e=>{var t;this.load_data(JSON.parse(e.data),this.mode,null!==(t=this.max_size)&&void 0!==t?t:void 0)}}}}i.ServerSentDataSource=r,r.__name__=\"ServerSentDataSource\"},\n function _(e,t,a,n,r){var s;n();const l=e(75),o=e(20);class c extends l.ColumnDataSource{constructor(e){super(e)}get_column(e){const t=this.data[e];return null!=t?t:[]}get_length(){var e;return null!==(e=super.get_length())&&void 0!==e?e:0}initialize(){super.initialize(),this.setup()}load_data(e,t,a){const{adapter:n}=this;let r;switch(r=null!=n?n.execute(this,{response:e}):e,t){case\"replace\":this.data=r;break;case\"append\":{const e=this.data;for(const t of this.columns()){const n=Array.from(e[t]),s=Array.from(r[t]),l=n.concat(s);r[t]=null!=a?l.slice(-a):l}this.data=r;break}}}}a.WebDataSource=c,s=c,c.__name__=\"WebDataSource\",s.define((({Any:e,Int:t,String:a,Nullable:n})=>({max_size:[n(t),null],mode:[o.UpdateMode,\"replace\"],adapter:[n(e),null],data_url:[a]})))},\n function _(t,e,i,s,a){var n;s();const r=t(343),o=t(20),l=t(19),d=t(13);class h extends r.WebDataSource{constructor(t){super(t),this.interval=null,this.initialized=!1}destroy(){null!=this.interval&&clearInterval(this.interval),super.destroy()}setup(){if(!this.initialized&&(this.initialized=!0,this.get_data(this.mode),null!=this.polling_interval)){const t=()=>this.get_data(this.mode,this.max_size,this.if_modified);this.interval=setInterval(t,this.polling_interval)}}get_data(t,e=null,i=!1){const s=this.prepare_request();s.addEventListener(\"load\",(()=>this.do_load(s,t,null!=e?e:void 0))),s.addEventListener(\"error\",(()=>this.do_error(s))),s.send()}prepare_request(){const t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\"Content-Type\",this.content_type);const e=this.http_headers;for(const[i,s]of(0,d.entries)(e))t.setRequestHeader(i,s);return t}do_load(t,e,i){if(200===t.status){const s=JSON.parse(t.responseText);this.load_data(s,e,i)}}do_error(t){l.logger.error(`Failed to fetch JSON from ${this.data_url} with code ${t.status}`)}}i.AjaxDataSource=h,n=h,h.__name__=\"AjaxDataSource\",n.define((({Boolean:t,Int:e,String:i,Dict:s,Nullable:a})=>({polling_interval:[a(e),null],content_type:[i,\"application/json\"],http_headers:[s(i),{}],method:[o.HTTPMethod,\"POST\"],if_modified:[t,!1]})))},\n function _(e,t,o,r,n){var s;r();const a=e(70),i=e(19),l=e(9),c=e(13);function _(e){return null!=e?e:NaN}const{hasOwnProperty:g}=Object.prototype;class u extends a.ColumnarDataSource{constructor(e){super(e)}initialize(){super.initialize(),this._update_data()}connect_signals(){super.connect_signals(),this.connect(this.properties.geojson.change,(()=>this._update_data()))}_update_data(){this.data=this.geojson_to_column_data()}_get_new_list_array(e){return(0,l.range)(0,e).map((e=>[]))}_get_new_nan_array(e){return(0,l.range)(0,e).map((e=>NaN))}_add_properties(e,t,o,r){var n;const s=null!==(n=e.properties)&&void 0!==n?n:{};for(const[e,n]of(0,c.entries)(s))g.call(t,e)||(t[e]=this._get_new_nan_array(r)),t[e][o]=_(n)}_add_geometry(e,t,o){function r(e,t){return e.concat([[NaN,NaN,NaN]]).concat(t)}switch(e.type){case\"Point\":{const[r,n,s]=e.coordinates;t.x[o]=r,t.y[o]=n,t.z[o]=_(s);break}case\"LineString\":{const{coordinates:r}=e;for(let e=0;e1&&i.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\");const r=e.coordinates[0];for(let e=0;e1&&i.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\"),n.push(t[0]);const s=n.reduce(r);for(let e=0;e({geojson:[e]}))),s.internal((({Dict:e,Arrayable:t})=>({data:[e(t),{}]})))},\n function _(e,r,T,o,S){o(),S(\"BBoxTileSource\",e(347).BBoxTileSource),S(\"MercatorTileSource\",e(348).MercatorTileSource),S(\"QUADKEYTileSource\",e(351).QUADKEYTileSource),S(\"TileRenderer\",e(352).TileRenderer),S(\"TileSource\",e(349).TileSource),S(\"TMSTileSource\",e(355).TMSTileSource),S(\"WMTSTileSource\",e(353).WMTSTileSource)},\n function _(e,t,r,o,l){var i;o();const n=e(348);class s extends n.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const o=this.string_lookup_replace(this.url,this.extra_url_vars);let l,i,n,s;return this.use_latlon?[i,s,l,n]=this.get_tile_geographic_bounds(e,t,r):[i,s,l,n]=this.get_tile_meter_bounds(e,t,r),o.replace(\"{XMIN}\",i.toString()).replace(\"{YMIN}\",s.toString()).replace(\"{XMAX}\",l.toString()).replace(\"{YMAX}\",n.toString())}}r.BBoxTileSource=s,i=s,s.__name__=\"BBoxTileSource\",i.define((({Boolean:e})=>({use_latlon:[e,!1]})))},\n function _(t,e,i,_,s){var r;_();const o=t(349),n=t(9),l=t(350);class u extends o.TileSource{constructor(t){super(t)}initialize(){super.initialize(),this._resolutions=(0,n.range)(this.min_zoom,this.max_zoom+1).map((t=>this.get_resolution(t)))}_computed_initial_resolution(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size}is_valid_tile(t,e,i){return!(!this.wrap_around&&(t<0||t>=2**i))&&!(e<0||e>=2**i)}parent_by_tile_xyz(t,e,i){const _=this.tile_xyz_to_quadkey(t,e,i),s=_.substring(0,_.length-1);return this.quadkey_to_tile_xyz(s)}get_resolution(t){return this._computed_initial_resolution()/2**t}get_resolution_by_extent(t,e,i){return[(t[2]-t[0])/i,(t[3]-t[1])/e]}get_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s);let o=0;for(const t of this._resolutions){if(r>t){if(0==o)return 0;if(o>0)return o-1}o+=1}return o-1}get_closest_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s),o=this._resolutions.reduce((function(t,e){return Math.abs(e-r)e?(u=o-s,a*=t):(u*=e,a=n-r)}const h=(u-(o-s))/2,c=(a-(n-r))/2;return[s-h,r-c,o+h,n+c]}tms_to_wmts(t,e,i){return[t,2**i-1-e,i]}wmts_to_tms(t,e,i){return[t,2**i-1-e,i]}pixels_to_meters(t,e,i){const _=this.get_resolution(i);return[t*_-this.x_origin_offset,e*_-this.y_origin_offset]}meters_to_pixels(t,e,i){const _=this.get_resolution(i);return[(t+this.x_origin_offset)/_,(e+this.y_origin_offset)/_]}pixels_to_tile(t,e){let i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;return[i,Math.max(Math.ceil(e/this.tile_size)-1,0)]}pixels_to_raster(t,e,i){return[t,(this.tile_size<=l;t--)for(let i=n;i<=u;i++)this.is_valid_tile(i,t,e)&&h.push([i,t,e,this.get_tile_meter_bounds(i,t,e)]);return this.sort_tiles_from_center(h,[n,l,u,a]),h}quadkey_to_tile_xyz(t){let e=0,i=0;const _=t.length;for(let s=_;s>0;s--){const r=1<0;s--){const i=1<0;)if(s=s.substring(0,s.length-1),[t,e,i]=this.quadkey_to_tile_xyz(s),[t,e,i]=this.denormalize_xyz(t,e,i,_),this.tiles.has(this.tile_xyz_to_key(t,e,i)))return[t,e,i];return[0,0,0]}normalize_xyz(t,e,i){if(this.wrap_around){const _=2**i;return[(t%_+_)%_,e,i]}return[t,e,i]}denormalize_xyz(t,e,i,_){return[t+_*2**i,e,i]}denormalize_meters(t,e,i,_){return[t+2*_*Math.PI*6378137,e]}calculate_world_x_by_tile_xyz(t,e,i){return Math.floor(t/2**i)}}i.MercatorTileSource=u,r=u,u.__name__=\"MercatorTileSource\",r.define((({Boolean:t})=>({snap_to_zoom:[t,!1],wrap_around:[t,!0]}))),r.override({x_origin_offset:20037508.34,y_origin_offset:20037508.34,initial_resolution:156543.03392804097})},\n function _(e,t,r,i,n){var l;i();const a=e(53),s=e(13);class c extends a.Model{constructor(e){super(e)}initialize(){super.initialize(),this.tiles=new Map,this._normalize_case()}connect_signals(){super.connect_signals(),this.connect(this.change,(()=>this._clear_cache()))}string_lookup_replace(e,t){let r=e;for(const[e,i]of(0,s.entries)(t))r=r.replace(`{${e}}`,i);return r}_normalize_case(){const e=this.url.replace(\"{x}\",\"{X}\").replace(\"{y}\",\"{Y}\").replace(\"{z}\",\"{Z}\").replace(\"{q}\",\"{Q}\").replace(\"{xmin}\",\"{XMIN}\").replace(\"{ymin}\",\"{YMIN}\").replace(\"{xmax}\",\"{XMAX}\").replace(\"{ymax}\",\"{YMAX}\");this.url=e}_clear_cache(){this.tiles=new Map}tile_xyz_to_key(e,t,r){return`${e}:${t}:${r}`}key_to_tile_xyz(e){const[t,r,i]=e.split(\":\").map((e=>parseInt(e)));return[t,r,i]}sort_tiles_from_center(e,t){const[r,i,n,l]=t,a=(n-r)/2+r,s=(l-i)/2+i;e.sort((function(e,t){return Math.sqrt((a-e[0])**2+(s-e[1])**2)-Math.sqrt((a-t[0])**2+(s-t[1])**2)}))}get_image_url(e,t,r){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",t.toString()).replace(\"{Z}\",r.toString())}}r.TileSource=c,l=c,c.__name__=\"TileSource\",l.define((({Number:e,String:t,Dict:r,Nullable:i})=>({url:[t,\"\"],tile_size:[e,256],max_zoom:[e,30],min_zoom:[e,0],extra_url_vars:[r(t),{}],attribution:[t,\"\"],x_origin_offset:[e],y_origin_offset:[e],initial_resolution:[i(e),null]})))},\n function _(t,e,r,n,o){n();const c=t(78);function _(t,e){return c.wgs84_mercator.compute(t,e)}function g(t,e){return c.wgs84_mercator.invert(t,e)}r.geographic_to_meters=_,r.meters_to_geographic=g,r.geographic_extent_to_meters=function(t){const[e,r,n,o]=t,[c,g]=_(e,r),[i,u]=_(n,o);return[c,g,i,u]},r.meters_extent_to_geographic=function(t){const[e,r,n,o]=t,[c,_]=g(e,r),[i,u]=g(n,o);return[c,_,i,u]}},\n function _(e,t,r,s,_){s();const o=e(348);class c extends o.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const s=this.string_lookup_replace(this.url,this.extra_url_vars),[_,o,c]=this.tms_to_wmts(e,t,r),i=this.tile_xyz_to_quadkey(_,o,c);return s.replace(\"{Q}\",i)}}r.QUADKEYTileSource=c,c.__name__=\"QUADKEYTileSource\"},\n function _(t,e,i,s,_){s();const n=t(1);var a;const o=t(349),r=t(353),h=t(41),l=t(58),d=t(43),m=t(136),c=t(9),u=t(8),p=(0,n.__importStar)(t(354));class g extends h.RendererView{initialize(){this._tiles=[],super.initialize()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render())),this.connect(this.model.tile_source.change,(()=>this.request_render()))}remove(){null!=this.attribution_el&&(0,d.removeElement)(this.attribution_el),super.remove()}styles(){return[...super.styles(),p.default]}get_extent(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]}get map_plot(){return this.plot_model}get map_canvas(){return this.layer.ctx}get map_frame(){return this.plot_view.frame}get x_range(){return this.map_plot.x_range}get y_range(){return this.map_plot.y_range}_set_data(){this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0}_update_attribution(){null!=this.attribution_el&&(0,d.removeElement)(this.attribution_el);const{attribution:t}=this.model.tile_source;if((0,u.isString)(t)&&t.length>0){const{layout:e,frame:i}=this.plot_view,s=e.bbox.width-i.bbox.right,_=e.bbox.height-i.bbox.bottom,n=i.bbox.width;this.attribution_el=(0,d.div)({class:p.tile_attribution,style:{position:\"absolute\",right:`${s}px`,bottom:`${_}px`,\"max-width\":n-4+\"px\",padding:\"2px\",\"background-color\":\"rgba(255,255,255,0.5)\",\"font-size\":\"9px\",\"line-height\":\"1.05\",\"white-space\":\"nowrap\",overflow:\"hidden\",\"text-overflow\":\"ellipsis\"}}),this.plot_view.canvas_view.add_event(this.attribution_el),this.attribution_el.innerHTML=t,this.attribution_el.title=this.attribution_el.textContent.replace(/\\s*\\n\\s*/g,\" \")}}_map_data(){this.initial_extent=this.get_extent();const t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof l.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof l.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._update_attribution()}_create_tile(t,e,i,s,_=!1){const n=this.model.tile_source.tile_xyz_to_quadkey(t,e,i),a=this.model.tile_source.tile_xyz_to_key(t,e,i);if(this.model.tile_source.tiles.has(a))return;const[o,r,h]=this.model.tile_source.normalize_xyz(t,e,i),l=this.model.tile_source.get_image_url(o,r,h),d={img:void 0,tile_coords:[t,e,i],normalized_coords:[o,r,h],quadkey:n,cache_key:a,bounds:s,loaded:!1,finished:!1,x_coord:s[0],y_coord:s[3]};this.model.tile_source.tiles.set(a,d),this._tiles.push(d),new m.ImageLoader(l,{loaded:t=>{Object.assign(d,{img:t,loaded:!0}),_?(d.finished=!0,this.notify_finished()):this.request_render()},failed(){d.finished=!0}})}_enforce_aspect_ratio(){if(this._last_height!==this.map_frame.bbox.height||this._last_width!==this.map_frame.bbox.width){const t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame.bbox.height,this.map_frame.bbox.width),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame.bbox.height,this.map_frame.bbox.width,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame.bbox.height,this._last_width=this.map_frame.bbox.width}}has_finished(){if(!super.has_finished())return!1;if(0==this._tiles.length)return!1;for(const t of this._tiles)if(!t.finished)return!1;return!0}_render(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()}_draw_tile(t){const e=this.model.tile_source.tiles.get(t);if(null!=e&&e.loaded){const[[t],[i]]=this.coordinates.map_to_screen([e.bounds[0]],[e.bounds[3]]),[[s],[_]]=this.coordinates.map_to_screen([e.bounds[2]],[e.bounds[1]]),n=s-t,a=_-i,o=t,r=i,h=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,o,r,n,a),this.map_canvas.setImageSmoothingEnabled(h),e.finished=!0}}_set_rect(){const t=this.plot_model.outline_line_width,e=this.map_frame.bbox.left+t/2,i=this.map_frame.bbox.top+t/2,s=this.map_frame.bbox.width-t,_=this.map_frame.bbox.height-t;this.map_canvas.rect(e,i,s,_),this.map_canvas.clip()}_render_tiles(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(const e of t)this._draw_tile(e);this.map_canvas.restore()}_prefetch_tiles(){const{tile_source:t}=this.model,e=this.get_extent(),i=this.map_frame.bbox.height,s=this.map_frame.bbox.width,_=this.model.tile_source.get_level_by_extent(e,i,s),n=this.model.tile_source.get_tiles_by_extent(e,_);for(let e=0,i=Math.min(10,n.length);ei&&(s=this.extent,o=i,r=!0),r&&(this.x_range.setv({start:s[0],end:s[2]}),this.y_range.setv({start:s[1],end:s[3]})),this.extent=s;const h=t.get_tiles_by_extent(s,o),l=[],d=[],m=[],u=[];for(const e of h){const[i,s,n]=e,a=t.tile_xyz_to_key(i,s,n),o=t.tiles.get(a);if(null!=o&&o.loaded)d.push(a);else if(this.model.render_parents){const[e,a,o]=t.get_closest_parent_by_tile_xyz(i,s,n),r=t.tile_xyz_to_key(e,a,o),h=t.tiles.get(r);if(null!=h&&h.loaded&&!(0,c.includes)(m,r)&&m.push(r),_){const e=t.children_by_tile_xyz(i,s,n);for(const[i,s,_]of e){const e=t.tile_xyz_to_key(i,s,_);t.tiles.has(e)&&u.push(e)}}}null==o&&l.push(e)}this._render_tiles(m),this._render_tiles(u),this._render_tiles(d),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout((()=>this._fetch_tiles(l)),65)}}i.TileRendererView=g,g.__name__=\"TileRendererView\";class b extends h.Renderer{constructor(t){super(t)}}i.TileRenderer=b,a=b,b.__name__=\"TileRenderer\",a.prototype.default_view=g,a.define((({Boolean:t,Number:e,Ref:i})=>({alpha:[e,1],smoothing:[t,!0],tile_source:[i(o.TileSource),()=>new r.WMTSTileSource],render_parents:[t,!0]}))),a.override({level:\"image\"})},\n function _(t,e,r,o,s){o();const c=t(348);class i extends c.MercatorTileSource{constructor(t){super(t)}get_image_url(t,e,r){const o=this.string_lookup_replace(this.url,this.extra_url_vars),[s,c,i]=this.tms_to_wmts(t,e,r);return o.replace(\"{X}\",s.toString()).replace(\"{Y}\",c.toString()).replace(\"{Z}\",i.toString())}}r.WMTSTileSource=i,i.__name__=\"WMTSTileSource\"},\n function _(t,o,i,b,r){b(),i.root=\"bk-root\",i.tile_attribution=\"bk-tile-attribution\",i.default=\".bk-root .bk-tile-attribution a{color:black;}\"},\n function _(e,r,t,c,o){c();const i=e(348);class l extends i.MercatorTileSource{constructor(e){super(e)}get_image_url(e,r,t){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",r.toString()).replace(\"{Z}\",t.toString())}}t.TMSTileSource=l,l.__name__=\"TMSTileSource\"},\n function _(e,t,u,a,r){a(),r(\"CanvasTexture\",e(357).CanvasTexture),r(\"ImageURLTexture\",e(359).ImageURLTexture),r(\"Texture\",e(358).Texture)},\n function _(t,e,n,c,s){var r;c();const o=t(358),a=t(34);class u extends o.Texture{constructor(t){super(t)}get func(){const t=(0,a.use_strict)(this.code);return new Function(\"ctx\",\"color\",\"scale\",\"weight\",t)}get_pattern(t,e,n){const c=document.createElement(\"canvas\");c.width=e,c.height=e;const s=c.getContext(\"2d\");return this.func.call(this,s,t,e,n),c}}n.CanvasTexture=u,r=u,u.__name__=\"CanvasTexture\",r.define((({String:t})=>({code:[t]})))},\n function _(e,t,n,r,o){var i;r();const s=e(53),u=e(20);class c extends s.Model{constructor(e){super(e)}}n.Texture=c,i=c,c.__name__=\"Texture\",i.define((()=>({repetition:[u.TextureRepetition,\"repeat\"]})))},\n function _(e,t,i,r,n){var a;r();const s=e(358),o=e(136);class u extends s.Texture{constructor(e){super(e)}initialize(){super.initialize(),this._loader=new o.ImageLoader(this.url)}get_pattern(e,t,i){const{_loader:r}=this;return this._loader.finished?r.image:r.promise}}i.ImageURLTexture=u,a=u,u.__name__=\"ImageURLTexture\",a.define((({String:e})=>({url:[e]})))},\n function _(o,l,T,e,t){e(),t(\"ActionTool\",o(238).ActionTool),t(\"CustomAction\",o(361).CustomAction),t(\"HelpTool\",o(239).HelpTool),t(\"RedoTool\",o(362).RedoTool),t(\"ResetTool\",o(363).ResetTool),t(\"SaveTool\",o(364).SaveTool),t(\"UndoTool\",o(365).UndoTool),t(\"ZoomInTool\",o(366).ZoomInTool),t(\"ZoomOutTool\",o(369).ZoomOutTool),t(\"ButtonTool\",o(224).ButtonTool),t(\"EditTool\",o(370).EditTool),t(\"BoxEditTool\",o(371).BoxEditTool),t(\"FreehandDrawTool\",o(372).FreehandDrawTool),t(\"PointDrawTool\",o(373).PointDrawTool),t(\"PolyDrawTool\",o(374).PolyDrawTool),t(\"PolyTool\",o(375).PolyTool),t(\"PolyEditTool\",o(376).PolyEditTool),t(\"BoxSelectTool\",o(377).BoxSelectTool),t(\"BoxZoomTool\",o(379).BoxZoomTool),t(\"GestureTool\",o(223).GestureTool),t(\"LassoSelectTool\",o(380).LassoSelectTool),t(\"LineEditTool\",o(382).LineEditTool),t(\"PanTool\",o(384).PanTool),t(\"PolySelectTool\",o(381).PolySelectTool),t(\"RangeTool\",o(385).RangeTool),t(\"SelectTool\",o(378).SelectTool),t(\"TapTool\",o(386).TapTool),t(\"WheelPanTool\",o(387).WheelPanTool),t(\"WheelZoomTool\",o(388).WheelZoomTool),t(\"CrosshairTool\",o(389).CrosshairTool),t(\"CustomJSHover\",o(390).CustomJSHover),t(\"HoverTool\",o(391).HoverTool),t(\"InspectTool\",o(232).InspectTool),t(\"Tool\",o(222).Tool),t(\"ToolProxy\",o(394).ToolProxy),t(\"Toolbar\",o(221).Toolbar),t(\"ToolbarBase\",o(233).ToolbarBase),t(\"ProxyToolbar\",o(395).ProxyToolbar),t(\"ToolbarBox\",o(395).ToolbarBox)},\n function _(t,o,e,s,n){var c;s();const i=t(238);class u extends i.ActionToolButtonView{css_classes(){return super.css_classes().concat(\"bk-toolbar-button-custom-action\")}}e.CustomActionButtonView=u,u.__name__=\"CustomActionButtonView\";class l extends i.ActionToolView{doit(){var t;null===(t=this.model.callback)||void 0===t||t.execute(this.model)}}e.CustomActionView=l,l.__name__=\"CustomActionView\";class a extends i.ActionTool{constructor(t){super(t),this.tool_name=\"Custom Action\",this.button_view=u}}e.CustomAction=a,c=a,a.__name__=\"CustomAction\",c.prototype.default_view=l,c.define((({Any:t,String:o,Nullable:e})=>({callback:[e(t)],icon:[o]}))),c.override({description:\"Perform a Custom Action\"})},\n function _(e,o,t,i,s){var n;i();const l=e(238),_=e(228);class d extends l.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,(()=>this.model.disabled=!this.plot_view.state.can_redo))}doit(){const e=this.plot_view.state.redo();null!=(null==e?void 0:e.range)&&this.plot_view.trigger_ranges_update_event()}}t.RedoToolView=d,d.__name__=\"RedoToolView\";class a extends l.ActionTool{constructor(e){super(e),this.tool_name=\"Redo\",this.icon=_.tool_icon_redo}}t.RedoTool=a,n=a,a.__name__=\"RedoTool\",n.prototype.default_view=d,n.override({disabled:!0}),n.register_alias(\"redo\",(()=>new a))},\n function _(e,o,t,s,i){var _;s();const n=e(238),l=e(228);class c extends n.ActionToolView{doit(){this.plot_view.reset()}}t.ResetToolView=c,c.__name__=\"ResetToolView\";class r extends n.ActionTool{constructor(e){super(e),this.tool_name=\"Reset\",this.icon=l.tool_icon_reset}}t.ResetTool=r,_=r,r.__name__=\"ResetTool\",_.prototype.default_view=c,_.register_alias(\"reset\",(()=>new r))},\n function _(e,o,t,a,i){var s;a();const c=e(238),n=e(228);class l extends c.ActionToolView{async copy(){const e=await this.plot_view.to_blob(),o=new ClipboardItem({[e.type]:Promise.resolve(e)});await navigator.clipboard.write([o])}async save(e){const o=await this.plot_view.to_blob(),t=document.createElement(\"a\");t.href=URL.createObjectURL(o),t.download=e,t.target=\"_blank\",t.dispatchEvent(new MouseEvent(\"click\"))}doit(e=\"save\"){switch(e){case\"save\":this.save(\"bokeh_plot\");break;case\"copy\":this.copy()}}}t.SaveToolView=l,l.__name__=\"SaveToolView\";class r extends c.ActionTool{constructor(e){super(e),this.tool_name=\"Save\",this.icon=n.tool_icon_save}get menu(){return[{icon:\"bk-tool-icon-copy-to-clipboard\",tooltip:\"Copy image to clipboard\",if:()=>\"undefined\"!=typeof ClipboardItem,handler:()=>{this.do.emit(\"copy\")}}]}}t.SaveTool=r,s=r,r.__name__=\"SaveTool\",s.prototype.default_view=l,s.register_alias(\"save\",(()=>new r))},\n function _(o,e,t,n,i){var s;n();const l=o(238),_=o(228);class d extends l.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,(()=>this.model.disabled=!this.plot_view.state.can_undo))}doit(){const o=this.plot_view.state.undo();null!=(null==o?void 0:o.range)&&this.plot_view.trigger_ranges_update_event()}}t.UndoToolView=d,d.__name__=\"UndoToolView\";class a extends l.ActionTool{constructor(o){super(o),this.tool_name=\"Undo\",this.icon=_.tool_icon_undo}}t.UndoTool=a,s=a,a.__name__=\"UndoTool\",s.prototype.default_view=d,s.override({disabled:!0}),s.register_alias(\"undo\",(()=>new a))},\n function _(o,n,e,i,s){var t;i();const _=o(367),m=o(228);class a extends _.ZoomBaseToolView{}e.ZoomInToolView=a,a.__name__=\"ZoomInToolView\";class l extends _.ZoomBaseTool{constructor(o){super(o),this.sign=1,this.tool_name=\"Zoom In\",this.icon=m.tool_icon_zoom_in}}e.ZoomInTool=l,t=l,l.__name__=\"ZoomInTool\",t.prototype.default_view=a,t.register_alias(\"zoom_in\",(()=>new l({dimensions:\"both\"}))),t.register_alias(\"xzoom_in\",(()=>new l({dimensions:\"width\"}))),t.register_alias(\"yzoom_in\",(()=>new l({dimensions:\"height\"})))},\n function _(o,t,e,i,s){var n;i();const a=o(238),_=o(20),l=o(368);class m extends a.ActionToolView{doit(){var o;const t=this.plot_view.frame,e=this.model.dimensions,i=\"width\"==e||\"both\"==e,s=\"height\"==e||\"both\"==e,n=(0,l.scale_range)(t,this.model.sign*this.model.factor,i,s);this.plot_view.state.push(\"zoom_out\",{range:n}),this.plot_view.update_range(n,{scrolling:!0,maintain_focus:this.model.maintain_focus}),null===(o=this.model.document)||void 0===o||o.interactive_start(this.plot_model),this.plot_view.trigger_ranges_update_event()}}e.ZoomBaseToolView=m,m.__name__=\"ZoomBaseToolView\";class h extends a.ActionTool{constructor(o){super(o),this.maintain_focus=!0}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.ZoomBaseTool=h,n=h,h.__name__=\"ZoomBaseTool\",n.define((({Percent:o})=>({factor:[o,.1],dimensions:[_.Dimensions,\"both\"]})))},\n function _(n,t,o,r,s){r();const c=n(10);function e(n,t,o){const[r,s]=[n.start,n.end],c=null!=o?o:(s+r)/2;return[r-(r-c)*t,s-(s-c)*t]}function a(n,[t,o]){const r=new Map;for(const[s,c]of n){const[n,e]=c.r_invert(t,o);r.set(s,{start:n,end:e})}return r}o.scale_highlow=e,o.get_info=a,o.scale_range=function(n,t,o=!0,r=!0,s){t=(0,c.clamp)(t,-.9,.9);const l=o?t:0,[u,i]=e(n.bbox.h_range,l,null!=s?s.x:void 0),_=a(n.x_scales,[u,i]),f=r?t:0,[g,x]=e(n.bbox.v_range,f,null!=s?s.y:void 0);return{xrs:_,yrs:a(n.y_scales,[g,x]),factor:t}}},\n function _(o,e,t,i,s){var n;i();const _=o(367),a=o(228);class m extends _.ZoomBaseToolView{}t.ZoomOutToolView=m,m.__name__=\"ZoomOutToolView\";class l extends _.ZoomBaseTool{constructor(o){super(o),this.sign=-1,this.tool_name=\"Zoom Out\",this.icon=a.tool_icon_zoom_out}}t.ZoomOutTool=l,n=l,l.__name__=\"ZoomOutTool\",n.prototype.default_view=m,n.define((({Boolean:o})=>({maintain_focus:[o,!0]}))),n.register_alias(\"zoom_out\",(()=>new l({dimensions:\"both\"}))),n.register_alias(\"xzoom_out\",(()=>new l({dimensions:\"width\"}))),n.register_alias(\"yzoom_out\",(()=>new l({dimensions:\"height\"})))},\n function _(e,t,s,o,n){var r;o();const i=e(9),c=e(8),a=e(11),_=e(175),l=e(223);class d extends l.GestureToolView{constructor(){super(...arguments),this._mouse_in_frame=!0}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void(0,a.unreachable)():\"replace\"}_move_enter(e){this._mouse_in_frame=!0}_move_exit(e){this._mouse_in_frame=!1}_map_drag(e,t,s){if(!this.plot_view.frame.bbox.contains(e,t))return null;const o=this.plot_view.renderer_view(s);if(null==o)return null;return[o.coordinates.x_scale.invert(e),o.coordinates.y_scale.invert(t)]}_delete_selected(e){const t=e.data_source,s=t.selected.indices;s.sort();for(const e of t.columns()){const o=t.get_array(e);for(let e=0;e({custom_icon:[n(t),null],empty_value:[e],renderers:[s(o(_.GlyphRenderer)),[]]})))},\n function _(e,t,s,i,_){var o;i();const n=e(43),a=e(20),d=e(370),l=e(228);class r extends d.EditToolView{_tap(e){null==this._draw_basepoint&&null==this._basepoint&&this._select_event(e,this._select_mode(e),this.model.renderers)}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)if(e.keyCode===n.Keys.Backspace)this._delete_selected(t);else if(e.keyCode==n.Keys.Esc){t.data_source.selection_manager.clear()}}_set_extent([e,t],[s,i],_,o=!1){const n=this.model.renderers[0],a=this.plot_view.renderer_view(n);if(null==a)return;const d=n.glyph,l=n.data_source,[r,h]=a.coordinates.x_scale.r_invert(e,t),[p,u]=a.coordinates.y_scale.r_invert(s,i),[c,m]=[(r+h)/2,(p+u)/2],[f,b]=[h-r,u-p],[y,x]=[d.x.field,d.y.field],[w,v]=[d.width.field,d.height.field];if(_)this._pop_glyphs(l,this.model.num_objects),y&&l.get_array(y).push(c),x&&l.get_array(x).push(m),w&&l.get_array(w).push(f),v&&l.get_array(v).push(b),this._pad_empty_columns(l,[y,x,w,v]);else{const e=l.data[y].length-1;y&&(l.data[y][e]=c),x&&(l.data[x][e]=m),w&&(l.data[w][e]=f),v&&(l.data[v][e]=b)}this._emit_cds_changes(l,!0,!1,o)}_update_box(e,t=!1,s=!1){if(null==this._draw_basepoint)return;const i=[e.sx,e.sy],_=this.plot_view.frame,o=this.model.dimensions,n=this.model._get_dim_limits(this._draw_basepoint,i,_,o);if(null!=n){const[e,i]=n;this._set_extent(e,i,t,s)}}_doubletap(e){this.model.active&&(null!=this._draw_basepoint?(this._update_box(e,!1,!0),this._draw_basepoint=null):(this._draw_basepoint=[e.sx,e.sy],this._select_event(e,\"append\",this.model.renderers),this._update_box(e,!0,!1)))}_move(e){this._update_box(e,!1,!1)}_pan_start(e){if(e.shiftKey){if(null!=this._draw_basepoint)return;this._draw_basepoint=[e.sx,e.sy],this._update_box(e,!0,!1)}else{if(null!=this._basepoint)return;this._select_event(e,\"append\",this.model.renderers),this._basepoint=[e.sx,e.sy]}}_pan(e,t=!1,s=!1){if(e.shiftKey){if(null==this._draw_basepoint)return;this._update_box(e,t,s)}else{if(null==this._basepoint)return;this._drag_points(e,this.model.renderers)}}_pan_end(e){if(this._pan(e,!1,!0),e.shiftKey)this._draw_basepoint=null;else{this._basepoint=null;for(const e of this.model.renderers)this._emit_cds_changes(e.data_source,!1,!0,!0)}}}s.BoxEditToolView=r,r.__name__=\"BoxEditToolView\";class h extends d.EditTool{constructor(e){super(e),this.tool_name=\"Box Edit Tool\",this.icon=l.tool_icon_box_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=1}}s.BoxEditTool=h,o=h,h.__name__=\"BoxEditTool\",o.prototype.default_view=r,o.define((({Int:e})=>({dimensions:[a.Dimensions,\"both\"],num_objects:[e,0]})))},\n function _(e,t,a,s,r){var _;s();const d=e(43),o=e(8),n=e(370),i=e(228);class l extends n.EditToolView{_draw(e,t,a=!1){if(!this.model.active)return;const s=this.model.renderers[0],r=this._map_drag(e.sx,e.sy,s);if(null==r)return;const[_,d]=r,n=s.data_source,i=s.glyph,[l,h]=[i.xs.field,i.ys.field];if(\"new\"==t)this._pop_glyphs(n,this.model.num_objects),l&&n.get_array(l).push([_]),h&&n.get_array(h).push([d]),this._pad_empty_columns(n,[l,h]);else if(\"add\"==t){if(l){const e=n.data[l].length-1;let t=n.get_array(l)[e];(0,o.isArray)(t)||(t=Array.from(t),n.data[l][e]=t),t.push(_)}if(h){const e=n.data[h].length-1;let t=n.get_array(h)[e];(0,o.isArray)(t)||(t=Array.from(t),n.data[h][e]=t),t.push(d)}}this._emit_cds_changes(n,!0,!0,a)}_pan_start(e){this._draw(e,\"new\")}_pan(e){this._draw(e,\"add\")}_pan_end(e){this._draw(e,\"add\",!0)}_tap(e){this._select_event(e,this._select_mode(e),this.model.renderers)}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)e.keyCode===d.Keys.Esc?t.data_source.selection_manager.clear():e.keyCode===d.Keys.Backspace&&this._delete_selected(t)}}a.FreehandDrawToolView=l,l.__name__=\"FreehandDrawToolView\";class h extends n.EditTool{constructor(e){super(e),this.tool_name=\"Freehand Draw Tool\",this.icon=i.tool_icon_freehand_draw,this.event_type=[\"pan\",\"tap\"],this.default_order=3}}a.FreehandDrawTool=h,_=h,h.__name__=\"FreehandDrawTool\",_.prototype.default_view=l,_.define((({Int:e})=>({num_objects:[e,0]}))),_.register_alias(\"freehand_draw\",(()=>new h))},\n function _(e,t,s,o,a){var i;o();const n=e(43),_=e(370),r=e(228);class d extends _.EditToolView{_tap(e){if(this._select_event(e,this._select_mode(e),this.model.renderers).length||!this.model.add)return;const t=this.model.renderers[0],s=this._map_drag(e.sx,e.sy,t);if(null==s)return;const o=t.glyph,a=t.data_source,[i,n]=[o.x.field,o.y.field],[_,r]=s;this._pop_glyphs(a,this.model.num_objects),i&&a.get_array(i).push(_),n&&a.get_array(n).push(r),this._pad_empty_columns(a,[i,n]),a.change.emit(),a.data=a.data,a.properties.data.change.emit()}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)e.keyCode===n.Keys.Backspace?this._delete_selected(t):e.keyCode==n.Keys.Esc&&t.data_source.selection_manager.clear()}_pan_start(e){this.model.drag&&(this._select_event(e,\"append\",this.model.renderers),this._basepoint=[e.sx,e.sy])}_pan(e){this.model.drag&&null!=this._basepoint&&this._drag_points(e,this.model.renderers)}_pan_end(e){if(this.model.drag){this._pan(e);for(const e of this.model.renderers)this._emit_cds_changes(e.data_source,!1,!0,!0);this._basepoint=null}}}s.PointDrawToolView=d,d.__name__=\"PointDrawToolView\";class l extends _.EditTool{constructor(e){super(e),this.tool_name=\"Point Draw Tool\",this.icon=r.tool_icon_point_draw,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=2}}s.PointDrawTool=l,i=l,l.__name__=\"PointDrawTool\",i.prototype.default_view=d,i.define((({Boolean:e,Int:t})=>({add:[e,!0],drag:[e,!0],num_objects:[t,0]})))},\n function _(e,t,s,i,a){var r;i();const o=e(43),n=e(8),d=e(375),_=e(228);class h extends d.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._initialized=!1}_tap(e){this._drawing?this._draw(e,\"add\",!0):this._select_event(e,this._select_mode(e),this.model.renderers)}_draw(e,t,s=!1){const i=this.model.renderers[0],a=this._map_drag(e.sx,e.sy,i);if(this._initialized||this.activate(),null==a)return;const[r,o]=this._snap_to_vertex(e,...a),d=i.data_source,_=i.glyph,[h,l]=[_.xs.field,_.ys.field];if(\"new\"==t)this._pop_glyphs(d,this.model.num_objects),h&&d.get_array(h).push([r,r]),l&&d.get_array(l).push([o,o]),this._pad_empty_columns(d,[h,l]);else if(\"edit\"==t){if(h){const e=d.data[h][d.data[h].length-1];e[e.length-1]=r}if(l){const e=d.data[l][d.data[l].length-1];e[e.length-1]=o}}else if(\"add\"==t){if(h){const e=d.data[h].length-1;let t=d.get_array(h)[e];const s=t[t.length-1];t[t.length-1]=r,(0,n.isArray)(t)||(t=Array.from(t),d.data[h][e]=t),t.push(s)}if(l){const e=d.data[l].length-1;let t=d.get_array(l)[e];const s=t[t.length-1];t[t.length-1]=o,(0,n.isArray)(t)||(t=Array.from(t),d.data[l][e]=t),t.push(s)}}this._emit_cds_changes(d,!0,!1,s)}_show_vertices(){if(!this.model.active)return;const e=[],t=[];for(let s=0;sthis._show_vertices()))}this._initialized=!0}}deactivate(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()}}s.PolyDrawToolView=h,h.__name__=\"PolyDrawToolView\";class l extends d.PolyTool{constructor(e){super(e),this.tool_name=\"Polygon Draw Tool\",this.icon=_.tool_icon_poly_draw,this.event_type=[\"pan\",\"tap\",\"move\"],this.default_order=3}}s.PolyDrawTool=l,r=l,l.__name__=\"PolyDrawTool\",r.prototype.default_view=h,r.define((({Boolean:e,Int:t})=>({drag:[e,!0],num_objects:[t,0]})))},\n function _(e,r,t,s,o){var _;s();const d=e(8),i=e(370);class l extends i.EditToolView{_set_vertices(e,r){const t=this.model.vertex_renderer.glyph,s=this.model.vertex_renderer.data_source,[o,_]=[t.x.field,t.y.field];o&&((0,d.isArray)(e)?s.data[o]=e:t.x={value:e}),_&&((0,d.isArray)(r)?s.data[_]=r:t.y={value:r}),this._emit_cds_changes(s,!0,!0,!1)}_hide_vertices(){this._set_vertices([],[])}_snap_to_vertex(e,r,t){if(this.model.vertex_renderer){const s=this._select_event(e,\"replace\",[this.model.vertex_renderer]),o=this.model.vertex_renderer.data_source,_=this.model.vertex_renderer.glyph,[d,i]=[_.x.field,_.y.field];if(s.length){const e=o.selected.indices[0];d&&(r=o.data[d][e]),i&&(t=o.data[i][e]),o.selection_manager.clear()}}return[r,t]}}t.PolyToolView=l,l.__name__=\"PolyToolView\";class n extends i.EditTool{constructor(e){super(e)}}t.PolyTool=n,_=n,n.__name__=\"PolyTool\",_.define((({AnyRef:e})=>({vertex_renderer:[e()]})))},\n function _(e,t,s,r,i){var _;r();const d=e(43),n=e(8),l=e(375),a=e(228);class c extends l.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._cur_index=null}_doubletap(e){if(!this.model.active)return;const t=this._map_drag(e.sx,e.sy,this.model.vertex_renderer);if(null==t)return;const[s,r]=t,i=this._select_event(e,\"replace\",[this.model.vertex_renderer]),_=this.model.vertex_renderer.data_source,d=this.model.vertex_renderer.glyph,[n,l]=[d.x.field,d.y.field];if(i.length&&null!=this._selected_renderer){const e=_.selected.indices[0];this._drawing?(this._drawing=!1,_.selection_manager.clear()):(_.selected.indices=[e+1],n&&_.get_array(n).splice(e+1,0,s),l&&_.get_array(l).splice(e+1,0,r),this._drawing=!0),_.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(e)}_show_vertices(e){if(!this.model.active)return;const t=this.model.renderers[0],s=()=>this._update_vertices(t),r=null==t?void 0:t.data_source,i=this._select_event(e,\"replace\",this.model.renderers);if(!i.length)return this._set_vertices([],[]),this._selected_renderer=null,this._drawing=!1,this._cur_index=null,void(null!=r&&r.disconnect(r.properties.data.change,s));null!=r&&r.connect(r.properties.data.change,s),this._cur_index=i[0].data_source.selected.indices[0],this._update_vertices(i[0])}_update_vertices(e){const t=e.glyph,s=e.data_source,r=this._cur_index,[i,_]=[t.xs.field,t.ys.field];if(this._drawing)return;if(null==r&&(i||_))return;let d,l;i&&null!=r?(d=s.data[i][r],(0,n.isArray)(d)||(s.data[i][r]=d=Array.from(d))):d=t.xs.value,_&&null!=r?(l=s.data[_][r],(0,n.isArray)(l)||(s.data[_][r]=l=Array.from(l))):l=t.ys.value,this._selected_renderer=e,this._set_vertices(d,l)}_move(e){if(this._drawing&&null!=this._selected_renderer){const t=this.model.vertex_renderer,s=t.data_source,r=t.glyph,i=this._map_drag(e.sx,e.sy,t);if(null==i)return;let[_,d]=i;const n=s.selected.indices;[_,d]=this._snap_to_vertex(e,_,d),s.selected.indices=n;const[l,a]=[r.x.field,r.y.field],c=n[0];l&&(s.data[l][c]=_),a&&(s.data[a][c]=d),s.change.emit(),this._selected_renderer.data_source.change.emit()}}_tap(e){const t=this.model.vertex_renderer,s=this._map_drag(e.sx,e.sy,t);if(null==s)return;if(this._drawing&&this._selected_renderer){let[r,i]=s;const _=t.data_source,d=t.glyph,[n,l]=[d.x.field,d.y.field],a=_.selected.indices;[r,i]=this._snap_to_vertex(e,r,i);const c=a[0];if(_.selected.indices=[c+1],n){const e=_.get_array(n),t=e[c];e[c]=r,e.splice(c+1,0,t)}if(l){const e=_.get_array(l),t=e[c];e[c]=i,e.splice(c+1,0,t)}return _.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}const r=this._select_mode(e);this._select_event(e,r,[t]),this._select_event(e,r,this.model.renderers)}_remove_vertex(){if(!this._drawing||!this._selected_renderer)return;const e=this.model.vertex_renderer,t=e.data_source,s=e.glyph,r=t.selected.indices[0],[i,_]=[s.x.field,s.y.field];i&&t.get_array(i).splice(r,1),_&&t.get_array(_).splice(r,1),t.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}_pan_start(e){this._select_event(e,\"append\",[this.model.vertex_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}_keyup(e){if(!this.model.active||!this._mouse_in_frame)return;let t;t=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(const s of t)e.keyCode===d.Keys.Backspace?(this._delete_selected(s),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):e.keyCode==d.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),s.data_source.selection_manager.clear())}deactivate(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())}}s.PolyEditToolView=c,c.__name__=\"PolyEditToolView\";class o extends l.PolyTool{constructor(e){super(e),this.tool_name=\"Poly Edit Tool\",this.icon=a.tool_icon_poly_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}}s.PolyEditTool=o,_=o,o.__name__=\"PolyEditTool\",_.prototype.default_view=c},\n function _(e,t,o,s,i){var l;s();const n=e(378),_=e(116),c=e(20),r=e(228);class a extends n.SelectToolView{_compute_limits(e){const t=this.plot_view.frame,o=this.model.dimensions;let s=this._base_point;if(\"center\"==this.model.origin){const[t,o]=s,[i,l]=e;s=[t-(i-t),o-(l-o)]}return this.model._get_dim_limits(s,e,t,o)}_pan_start(e){const{sx:t,sy:o}=e;this._base_point=[t,o]}_pan(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this.model.overlay.update({left:i[0],right:i[1],top:l[0],bottom:l[1]}),this.model.select_every_mousemove&&this._do_select(i,l,!1,this._select_mode(e))}_pan_end(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this._do_select(i,l,!0,this._select_mode(e)),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.state.push(\"box_select\",{selection:this.plot_view.get_selection()})}_do_select([e,t],[o,s],i,l=\"replace\"){const n={type:\"rect\",sx0:e,sx1:t,sy0:o,sy1:s};this._select(n,i,l)}}o.BoxSelectToolView=a,a.__name__=\"BoxSelectToolView\";const h=()=>new _.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class m extends n.SelectTool{constructor(e){super(e),this.tool_name=\"Box Select\",this.icon=r.tool_icon_box_select,this.event_type=\"pan\",this.default_order=30}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}o.BoxSelectTool=m,l=m,m.__name__=\"BoxSelectTool\",l.prototype.default_view=a,l.define((({Boolean:e,Ref:t})=>({dimensions:[c.Dimensions,\"both\"],select_every_mousemove:[e,!1],overlay:[t(_.BoxAnnotation),h],origin:[c.BoxOrigin,\"corner\"]}))),l.register_alias(\"box_select\",(()=>new m)),l.register_alias(\"xbox_select\",(()=>new m({dimensions:\"width\"}))),l.register_alias(\"ybox_select\",(()=>new m({dimensions:\"height\"})))},\n function _(e,t,s,n,r){var o;n();const c=e(223),i=e(175),a=e(339),l=e(176),d=e(66),_=e(20),h=e(43),p=e(251),u=e(15),m=e(11);class v extends c.GestureToolView{connect_signals(){super.connect_signals(),this.model.clear.connect((()=>this._clear()))}get computed_renderers(){const{renderers:e,names:t}=this.model,s=this.plot_model.data_renderers;return(0,d.compute_renderers)(e,s,t)}_computed_renderers_by_data_source(){var e;const t=new Map;for(const s of this.computed_renderers){let n;if(s instanceof i.GlyphRenderer)n=s.data_source;else{if(!(s instanceof a.GraphRenderer))continue;n=s.node_renderer.data_source}const r=null!==(e=t.get(n))&&void 0!==e?e:[];t.set(n,[...r,s])}return t}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void(0,m.unreachable)():this.model.mode}_keyup(e){e.keyCode==h.Keys.Esc&&this._clear()}_clear(){for(const e of this.computed_renderers)e.get_selection_manager().clear();const e=this.computed_renderers.map((e=>this.plot_view.renderer_view(e)));this.plot_view.request_paint(e)}_select(e,t,s){const n=this._computed_renderers_by_data_source();for(const[,r]of n){const n=r[0].get_selection_manager(),o=[];for(const e of r){const t=this.plot_view.renderer_view(e);null!=t&&o.push(t)}n.select(o,e,t,s)}null!=this.model.callback&&this._emit_callback(e),this._emit_selection_event(e,t)}_emit_selection_event(e,t=!0){const{x_scale:s,y_scale:n}=this.plot_view.frame;let r;switch(e.type){case\"point\":{const{sx:t,sy:o}=e,c=s.invert(t),i=n.invert(o);r=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"span\":{const{sx:t,sy:o}=e,c=s.invert(t),i=n.invert(o);r=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"rect\":{const{sx0:t,sx1:o,sy0:c,sy1:i}=e,[a,l]=s.r_invert(t,o),[d,_]=n.r_invert(c,i);r=Object.assign(Object.assign({},e),{x0:a,y0:d,x1:l,y1:_});break}case\"poly\":{const{sx:t,sy:o}=e,c=s.v_invert(t),i=n.v_invert(o);r=Object.assign(Object.assign({},e),{x:c,y:i});break}}this.plot_model.trigger_event(new p.SelectionGeometry(r,t))}}s.SelectToolView=v,v.__name__=\"SelectToolView\";class b extends c.GestureTool{constructor(e){super(e)}initialize(){super.initialize(),this.clear=new u.Signal0(this,\"clear\")}get menu(){return[{icon:\"bk-tool-icon-replace-mode\",tooltip:\"Replace the current selection\",active:()=>\"replace\"==this.mode,handler:()=>{this.mode=\"replace\",this.active=!0}},{icon:\"bk-tool-icon-append-mode\",tooltip:\"Append to the current selection (Shift)\",active:()=>\"append\"==this.mode,handler:()=>{this.mode=\"append\",this.active=!0}},{icon:\"bk-tool-icon-intersect-mode\",tooltip:\"Intersect with the current selection (Ctrl)\",active:()=>\"intersect\"==this.mode,handler:()=>{this.mode=\"intersect\",this.active=!0}},{icon:\"bk-tool-icon-subtract-mode\",tooltip:\"Subtract from the current selection (Shift+Ctrl)\",active:()=>\"subtract\"==this.mode,handler:()=>{this.mode=\"subtract\",this.active=!0}},null,{icon:\"bk-tool-icon-clear-selection\",tooltip:\"Clear the current selection (Esc)\",handler:()=>{this.clear.emit()}}]}}s.SelectTool=b,o=b,b.__name__=\"SelectTool\",o.define((({String:e,Array:t,Ref:s,Or:n,Auto:r})=>({renderers:[n(t(s(l.DataRenderer)),r),\"auto\"],names:[t(e),[]],mode:[_.SelectionMode,\"replace\"]})))},\n function _(t,o,e,s,i){var n;s();const _=t(223),a=t(116),l=t(20),r=t(228);class h extends _.GestureToolView{_match_aspect(t,o,e){const s=e.bbox.aspect,i=e.bbox.h_range.end,n=e.bbox.h_range.start,_=e.bbox.v_range.end,a=e.bbox.v_range.start;let l=Math.abs(t[0]-o[0]),r=Math.abs(t[1]-o[1]);const h=0==r?0:l/r,[c]=h>=s?[1,h/s]:[s/h,1];let m,p,d,b;return t[0]<=o[0]?(m=t[0],p=t[0]+l*c,p>i&&(p=i)):(p=t[0],m=t[0]-l*c,m_&&(d=_)):(d=t[1],b=t[1]-l/s,bnew a.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class m extends _.GestureTool{constructor(t){super(t),this.tool_name=\"Box Zoom\",this.icon=r.tool_icon_box_zoom,this.event_type=\"pan\",this.default_order=20}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.BoxZoomTool=m,n=m,m.__name__=\"BoxZoomTool\",n.prototype.default_view=h,n.define((({Boolean:t,Ref:o})=>({dimensions:[l.Dimensions,\"both\"],overlay:[o(a.BoxAnnotation),c],match_aspect:[t,!1],origin:[l.BoxOrigin,\"corner\"]}))),n.register_alias(\"box_zoom\",(()=>new m({dimensions:\"both\"}))),n.register_alias(\"xbox_zoom\",(()=>new m({dimensions:\"width\"}))),n.register_alias(\"ybox_zoom\",(()=>new m({dimensions:\"height\"})))},\n function _(s,e,t,o,_){var l;o();const i=s(378),a=s(217),c=s(381),n=s(43),h=s(228);class r extends i.SelectToolView{constructor(){super(...arguments),this.sxs=[],this.sys=[]}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._active_change()))}_active_change(){this.model.active||this._clear_overlay()}_keyup(s){s.keyCode==n.Keys.Enter&&this._clear_overlay()}_pan_start(s){this.sxs=[],this.sys=[];const{sx:e,sy:t}=s;this._append_overlay(e,t)}_pan(s){const[e,t]=this.plot_view.frame.bbox.clip(s.sx,s.sy);this._append_overlay(e,t),this.model.select_every_mousemove&&this._do_select(this.sxs,this.sys,!1,this._select_mode(s))}_pan_end(s){const{sxs:e,sys:t}=this;this._clear_overlay(),this._do_select(e,t,!0,this._select_mode(s)),this.plot_view.state.push(\"lasso_select\",{selection:this.plot_view.get_selection()})}_append_overlay(s,e){const{sxs:t,sys:o}=this;t.push(s),o.push(e),this.model.overlay.update({xs:t,ys:o})}_clear_overlay(){this.sxs=[],this.sys=[],this.model.overlay.update({xs:this.sxs,ys:this.sys})}_do_select(s,e,t,o){const _={type:\"poly\",sx:s,sy:e};this._select(_,t,o)}}t.LassoSelectToolView=r,r.__name__=\"LassoSelectToolView\";class y extends i.SelectTool{constructor(s){super(s),this.tool_name=\"Lasso Select\",this.icon=h.tool_icon_lasso_select,this.event_type=\"pan\",this.default_order=12}}t.LassoSelectTool=y,l=y,y.__name__=\"LassoSelectTool\",l.prototype.default_view=r,l.define((({Boolean:s,Ref:e})=>({select_every_mousemove:[s,!0],overlay:[e(a.PolyAnnotation),c.DEFAULT_POLY_OVERLAY]}))),l.register_alias(\"lasso_select\",(()=>new y))},\n function _(e,t,s,l,o){var i;l();const a=e(378),_=e(217),c=e(43),n=e(9),h=e(228);class y extends a.SelectToolView{initialize(){super.initialize(),this.data={sx:[],sy:[]}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._active_change()))}_active_change(){this.model.active||this._clear_data()}_keyup(e){e.keyCode==c.Keys.Enter&&this._clear_data()}_doubletap(e){this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(e)),this.plot_view.state.push(\"poly_select\",{selection:this.plot_view.get_selection()}),this._clear_data()}_clear_data(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})}_tap(e){const{sx:t,sy:s}=e;this.plot_view.frame.bbox.contains(t,s)&&(this.data.sx.push(t),this.data.sy.push(s),this.model.overlay.update({xs:(0,n.copy)(this.data.sx),ys:(0,n.copy)(this.data.sy)}))}_do_select(e,t,s,l){const o={type:\"poly\",sx:e,sy:t};this._select(o,s,l)}}s.PolySelectToolView=y,y.__name__=\"PolySelectToolView\";s.DEFAULT_POLY_OVERLAY=()=>new _.PolyAnnotation({level:\"overlay\",xs_units:\"screen\",ys_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class d extends a.SelectTool{constructor(e){super(e),this.tool_name=\"Poly Select\",this.icon=h.tool_icon_polygon_select,this.event_type=\"tap\",this.default_order=11}}s.PolySelectTool=d,i=d,d.__name__=\"PolySelectTool\",i.prototype.default_view=y,i.define((({Ref:e})=>({overlay:[e(_.PolyAnnotation),s.DEFAULT_POLY_OVERLAY]}))),i.register_alias(\"poly_select\",(()=>new d))},\n function _(e,t,s,i,r){var n;i();const _=e(20),d=e(383),o=e(228);class l extends d.LineToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(e){if(!this.model.active)return;const t=this.model.renderers;for(const s of t){1==this._select_event(e,\"replace\",[s]).length&&(this._selected_renderer=s)}this._show_intersections(),this._update_line_cds()}_show_intersections(){if(!this.model.active)return;if(null==this._selected_renderer)return;if(!this.model.renderers.length)return this._set_intersection([],[]),this._selected_renderer=null,void(this._drawing=!1);const e=this._selected_renderer.data_source,t=this._selected_renderer.glyph,[s,i]=[t.x.field,t.y.field],r=e.get_array(s),n=e.get_array(i);this._set_intersection(r,n)}_tap(e){const t=this.model.intersection_renderer;if(null==this._map_drag(e.sx,e.sy,t))return;if(this._drawing&&this._selected_renderer){const s=this._select_mode(e);if(0==this._select_event(e,s,[t]).length)return}const s=this._select_mode(e);this._select_event(e,s,[t]),this._select_event(e,s,this.model.renderers)}_update_line_cds(){if(null==this._selected_renderer)return;const e=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[s,i]=[e.x.field,e.y.field];if(s&&i){const e=t.data[s],r=t.data[i];this._selected_renderer.data_source.data[s]=e,this._selected_renderer.data_source.data[i]=r}this._emit_cds_changes(this._selected_renderer.data_source,!0,!0,!1)}_pan_start(e){this._select_event(e,\"append\",[this.model.intersection_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer],this.model.dimensions),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer]),this._emit_cds_changes(this.model.intersection_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}activate(){this._drawing=!0}deactivate(){this._selected_renderer&&(this._drawing&&(this._drawing=!1),this._hide_intersections())}}s.LineEditToolView=l,l.__name__=\"LineEditToolView\";class h extends d.LineTool{constructor(e){super(e),this.tool_name=\"Line Edit Tool\",this.icon=o.tool_icon_line_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}s.LineEditTool=h,n=h,h.__name__=\"LineEditTool\",n.prototype.default_view=l,n.define((()=>({dimensions:[_.Dimensions,\"both\"]})))},\n function _(e,i,n,t,s){var o;t();const r=e(8),_=e(370);class d extends _.EditToolView{_set_intersection(e,i){const n=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[s,o]=[n.x.field,n.y.field];s&&((0,r.isArray)(e)?t.data[s]=e:n.x={value:e}),o&&((0,r.isArray)(i)?t.data[o]=i:n.y={value:i}),this._emit_cds_changes(t,!0,!0,!1)}_hide_intersections(){this._set_intersection([],[])}}n.LineToolView=d,d.__name__=\"LineToolView\";class a extends _.EditTool{constructor(e){super(e)}}n.LineTool=a,o=a,a.__name__=\"LineTool\",o.define((({AnyRef:e})=>({intersection_renderer:[e()]})))},\n function _(t,s,n,e,i){e();const o=t(1);var a;const _=t(223),l=t(20),r=(0,o.__importStar)(t(228));function h(t,s,n){const e=new Map;for(const[i,o]of t){const[t,a]=o.r_invert(s,n);e.set(i,{start:t,end:a})}return e}n.update_ranges=h;class d extends _.GestureToolView{_pan_start(t){var s;this.last_dx=0,this.last_dy=0;const{sx:n,sy:e}=t,i=this.plot_view.frame.bbox;if(!i.contains(n,e)){const t=i.h_range,s=i.v_range;(nt.end)&&(this.v_axis_only=!0),(es.end)&&(this.h_axis_only=!0)}null===(s=this.model.document)||void 0===s||s.interactive_start(this.plot_model)}_pan(t){var s;this._update(t.deltaX,t.deltaY),null===(s=this.model.document)||void 0===s||s.interactive_start(this.plot_model)}_pan_end(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.state.push(\"pan\",{range:this.pan_info}),this.plot_view.trigger_ranges_update_event()}_update(t,s){const n=this.plot_view.frame,e=t-this.last_dx,i=s-this.last_dy,o=n.bbox.h_range,a=o.start-e,_=o.end-e,l=n.bbox.v_range,r=l.start-i,d=l.end-i,p=this.model.dimensions;let c,u,m,v,x,g;\"width\"!=p&&\"both\"!=p||this.v_axis_only?(c=o.start,u=o.end,m=0):(c=a,u=_,m=-e),\"height\"!=p&&\"both\"!=p||this.h_axis_only?(v=l.start,x=l.end,g=0):(v=r,x=d,g=-i),this.last_dx=t,this.last_dy=s;const{x_scales:w,y_scales:y}=n,f=h(w,c,u),b=h(y,v,x);this.pan_info={xrs:f,yrs:b,sdx:m,sdy:g},this.plot_view.update_range(this.pan_info,{panning:!0})}}n.PanToolView=d,d.__name__=\"PanToolView\";class p extends _.GestureTool{constructor(t){super(t),this.tool_name=\"Pan\",this.event_type=\"pan\",this.default_order=10}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}n.PanTool=p,a=p,p.__name__=\"PanTool\",a.prototype.default_view=d,a.define((()=>({dimensions:[l.Dimensions,\"both\",{on_update(t,s){switch(t){case\"both\":s.icon=r.tool_icon_pan;break;case\"width\":s.icon=r.tool_icon_xpan;break;case\"height\":s.icon=r.tool_icon_ypan}}}]}))),a.register_alias(\"pan\",(()=>new p({dimensions:\"both\"}))),a.register_alias(\"xpan\",(()=>new p({dimensions:\"width\"}))),a.register_alias(\"ypan\",(()=>new p({dimensions:\"height\"})))},\n function _(e,t,i,s,n){var l;s();const a=e(116),r=e(58),o=e(19),_=e(223),h=e(228);function d(e){switch(e){case 1:return 2;case 2:return 1;case 4:return 5;case 5:return 4;default:return e}}function u(e,t,i,s){if(null==t)return!1;const n=i.compute(t);return Math.abs(e-n)n.right)&&(l=!1)}if(null!=n.bottom&&null!=n.top){const e=s.invert(t);(en.top)&&(l=!1)}return l}function g(e,t,i){let s=0;return e>=i.start&&e<=i.end&&(s+=1),t>=i.start&&t<=i.end&&(s+=1),s}function y(e,t,i,s){const n=t.compute(e),l=t.invert(n+i);return l>=s.start&&l<=s.end?l:e}function f(e,t,i){return e>t.start?(t.end=e,i):(t.end=t.start,t.start=e,d(i))}function v(e,t,i){return e=o&&(e.start=a,e.end=r)}i.flip_side=d,i.is_near=u,i.is_inside=c,i.sides_inside=g,i.compute_value=y,i.update_range_end_side=f,i.update_range_start_side=v,i.update_range=m;class p extends _.GestureToolView{initialize(){super.initialize(),this.side=0,this.model.update_overlay_from_ranges()}connect_signals(){super.connect_signals(),null!=this.model.x_range&&this.connect(this.model.x_range.change,(()=>this.model.update_overlay_from_ranges())),null!=this.model.y_range&&this.connect(this.model.y_range.change,(()=>this.model.update_overlay_from_ranges()))}_pan_start(e){this.last_dx=0,this.last_dy=0;const t=this.model.x_range,i=this.model.y_range,{frame:s}=this.plot_view,n=s.x_scale,l=s.y_scale,r=this.model.overlay,{left:o,right:_,top:h,bottom:d}=r,g=this.model.overlay.line_width+a.EDGE_TOLERANCE;null!=t&&this.model.x_interaction&&(u(e.sx,o,n,g)?this.side=1:u(e.sx,_,n,g)?this.side=2:c(e.sx,e.sy,n,l,r)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&u(e.sy,d,l,g)&&(this.side=4),0==this.side&&u(e.sy,h,l,g)?this.side=5:c(e.sx,e.sy,n,l,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))}_pan(e){const t=this.plot_view.frame,i=e.deltaX-this.last_dx,s=e.deltaY-this.last_dy,n=this.model.x_range,l=this.model.y_range,a=t.x_scale,r=t.y_scale;if(null!=n)if(3==this.side||7==this.side)m(n,a,i,t.x_range);else if(1==this.side){const e=y(n.start,a,i,t.x_range);this.side=v(e,n,this.side)}else if(2==this.side){const e=y(n.end,a,i,t.x_range);this.side=f(e,n,this.side)}if(null!=l)if(6==this.side||7==this.side)m(l,r,s,t.y_range);else if(4==this.side){const e=y(l.start,r,s,t.y_range);this.side=v(e,l,this.side)}else if(5==this.side){const e=y(l.end,r,s,t.y_range);this.side=f(e,l,this.side)}this.last_dx=e.deltaX,this.last_dy=e.deltaY}_pan_end(e){this.side=0,this.plot_view.trigger_ranges_update_event()}}i.RangeToolView=p,p.__name__=\"RangeToolView\";const x=()=>new a.BoxAnnotation({level:\"overlay\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:.5,line_dash:[2,2]});class w extends _.GestureTool{constructor(e){super(e),this.tool_name=\"Range Tool\",this.icon=h.tool_icon_range,this.event_type=\"pan\",this.default_order=1}initialize(){super.initialize(),this.overlay.in_cursor=\"grab\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\"ew-resize\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\"ns-resize\":null}update_overlay_from_ranges(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,o.logger.warn(\"RangeTool not configured with any Ranges.\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)}}i.RangeTool=w,l=w,w.__name__=\"RangeTool\",l.prototype.default_view=p,l.define((({Boolean:e,Ref:t,Nullable:i})=>({x_range:[i(t(r.Range1d)),null],x_interaction:[e,!0],y_range:[i(t(r.Range1d)),null],y_interaction:[e,!0],overlay:[t(a.BoxAnnotation),x]})))},\n function _(e,t,s,o,i){var l;o();const a=e(378),n=e(20),c=e(228);class _ extends a.SelectToolView{_tap(e){\"tap\"==this.model.gesture&&this._handle_tap(e)}_doubletap(e){\"doubletap\"==this.model.gesture&&this._handle_tap(e)}_handle_tap(e){const{sx:t,sy:s}=e,o={type:\"point\",sx:t,sy:s};this._select(o,!0,this._select_mode(e))}_select(e,t,s){const{callback:o}=this.model;if(\"select\"==this.model.behavior){const i=this._computed_renderers_by_data_source();for(const[,l]of i){const i=l[0].get_selection_manager(),a=l.map((e=>this.plot_view.renderer_view(e))).filter((e=>null!=e));if(i.select(a,e,t,s)&&null!=o){const t=a[0].coordinates.x_scale.invert(e.sx),s=a[0].coordinates.y_scale.invert(e.sy),l={geometries:Object.assign(Object.assign({},e),{x:t,y:s}),source:i.source};o.execute(this.model,l)}}this._emit_selection_event(e),this.plot_view.state.push(\"tap\",{selection:this.plot_view.get_selection()})}else for(const t of this.computed_renderers){const s=this.plot_view.renderer_view(t);if(null==s)continue;const i=t.get_selection_manager();if(i.inspect(s,e)&&null!=o){const t=s.coordinates.x_scale.invert(e.sx),l=s.coordinates.y_scale.invert(e.sy),a={geometries:Object.assign(Object.assign({},e),{x:t,y:l}),source:i.source};o.execute(this.model,a)}}}}s.TapToolView=_,_.__name__=\"TapToolView\";class r extends a.SelectTool{constructor(e){super(e),this.tool_name=\"Tap\",this.icon=c.tool_icon_tap_select,this.event_type=\"tap\",this.default_order=10}}s.TapTool=r,l=r,r.__name__=\"TapTool\",l.prototype.default_view=_,l.define((({Any:e,Enum:t,Nullable:s})=>({behavior:[n.TapBehavior,\"select\"],gesture:[t(\"tap\",\"doubletap\"),\"tap\"],callback:[s(e)]}))),l.register_alias(\"click\",(()=>new r({behavior:\"inspect\"}))),l.register_alias(\"tap\",(()=>new r)),l.register_alias(\"doubletap\",(()=>new r({gesture:\"doubletap\"})))},\n function _(e,t,s,n,i){var a;n();const o=e(223),l=e(20),_=e(228),r=e(384);class h extends o.GestureToolView{_scroll(e){let t=this.model.speed*e.delta;t>.9?t=.9:t<-.9&&(t=-.9),this._update_ranges(t)}_update_ranges(e){var t;const{frame:s}=this.plot_view,n=s.bbox.h_range,i=s.bbox.v_range,[a,o]=[n.start,n.end],[l,_]=[i.start,i.end];let h,d,p,c;switch(this.model.dimension){case\"height\":{const t=Math.abs(_-l);h=a,d=o,p=l-t*e,c=_-t*e;break}case\"width\":{const t=Math.abs(o-a);h=a-t*e,d=o-t*e,p=l,c=_;break}}const{x_scales:g,y_scales:u}=s,w={xrs:(0,r.update_ranges)(g,h,d),yrs:(0,r.update_ranges)(u,p,c),factor:e};this.plot_view.state.push(\"wheel_pan\",{range:w}),this.plot_view.update_range(w,{scrolling:!0}),null===(t=this.model.document)||void 0===t||t.interactive_start(this.plot_model,(()=>this.plot_view.trigger_ranges_update_event()))}}s.WheelPanToolView=h,h.__name__=\"WheelPanToolView\";class d extends o.GestureTool{constructor(e){super(e),this.tool_name=\"Wheel Pan\",this.icon=_.tool_icon_wheel_pan,this.event_type=\"scroll\",this.default_order=12}get tooltip(){return this._get_dim_tooltip(this.dimension)}}s.WheelPanTool=d,a=d,d.__name__=\"WheelPanTool\",a.prototype.default_view=h,a.define((()=>({dimension:[l.Dimension,\"width\"]}))),a.internal((({Number:e})=>({speed:[e,.001]}))),a.register_alias(\"xwheel_pan\",(()=>new d({dimension:\"width\"}))),a.register_alias(\"ywheel_pan\",(()=>new d({dimension:\"height\"})))},\n function _(e,o,t,s,i){var n;s();const l=e(223),_=e(368),h=e(20),a=e(27),r=e(228);class m extends l.GestureToolView{_pinch(e){const{sx:o,sy:t,scale:s,ctrlKey:i,shiftKey:n}=e;let l;l=s>=1?20*(s-1):-20/s,this._scroll({type:\"wheel\",sx:o,sy:t,delta:l,ctrlKey:i,shiftKey:n})}_scroll(e){var o;const{frame:t}=this.plot_view,s=t.bbox.h_range,i=t.bbox.v_range,{sx:n,sy:l}=e,h=this.model.dimensions,a=(\"width\"==h||\"both\"==h)&&s.startthis.plot_view.trigger_ranges_update_event()))}}t.WheelZoomToolView=m,m.__name__=\"WheelZoomToolView\";class d extends l.GestureTool{constructor(e){super(e),this.tool_name=\"Wheel Zoom\",this.icon=r.tool_icon_wheel_zoom,this.event_type=a.is_mobile?\"pinch\":\"scroll\",this.default_order=10}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}t.WheelZoomTool=d,n=d,d.__name__=\"WheelZoomTool\",n.prototype.default_view=m,n.define((({Boolean:e,Number:o})=>({dimensions:[h.Dimensions,\"both\"],maintain_focus:[e,!0],zoom_on_axis:[e,!0],speed:[o,1/600]}))),n.register_alias(\"wheel_zoom\",(()=>new d({dimensions:\"both\"}))),n.register_alias(\"xwheel_zoom\",(()=>new d({dimensions:\"width\"}))),n.register_alias(\"ywheel_zoom\",(()=>new d({dimensions:\"height\"})))},\n function _(i,e,s,t,o){var n;t();const l=i(232),a=i(219),h=i(20),r=i(13),_=i(228);class c extends l.InspectToolView{_move(i){if(!this.model.active)return;const{sx:e,sy:s}=i;this.plot_view.frame.bbox.contains(e,s)?this._update_spans(e,s):this._update_spans(null,null)}_move_exit(i){this._update_spans(null,null)}_update_spans(i,e){const s=this.model.dimensions;\"width\"!=s&&\"both\"!=s||(this.model.spans.width.location=e),\"height\"!=s&&\"both\"!=s||(this.model.spans.height.location=i)}}s.CrosshairToolView=c,c.__name__=\"CrosshairToolView\";class p extends l.InspectTool{constructor(i){super(i),this.tool_name=\"Crosshair\",this.icon=_.tool_icon_crosshair}get tooltip(){return this._get_dim_tooltip(this.dimensions)}get synthetic_renderers(){return(0,r.values)(this.spans)}}s.CrosshairTool=p,n=p,p.__name__=\"CrosshairTool\",(()=>{function i(i,e){return new a.Span({for_hover:!0,dimension:e,location_units:\"screen\",level:\"overlay\",line_color:i.line_color,line_width:i.line_width,line_alpha:i.line_alpha})}n.prototype.default_view=c,n.define((({Alpha:i,Number:e,Color:s})=>({dimensions:[h.Dimensions,\"both\"],line_color:[s,\"black\"],line_width:[e,1],line_alpha:[i,1]}))),n.internal((({Struct:e,Ref:s})=>({spans:[e({width:s(a.Span),height:s(a.Span)}),e=>({width:i(e,\"width\"),height:i(e,\"height\")})]}))),n.register_alias(\"crosshair\",(()=>new p))})()},\n function _(e,s,t,r,n){var o;r();const a=e(53),u=e(13),c=e(34);class i extends a.Model{constructor(e){super(e)}get values(){return(0,u.values)(this.args)}_make_code(e,s,t,r){return new Function(...(0,u.keys)(this.args),e,s,t,(0,c.use_strict)(r))}format(e,s,t){return this._make_code(\"value\",\"format\",\"special_vars\",this.code)(...this.values,e,s,t)}}t.CustomJSHover=i,o=i,i.__name__=\"CustomJSHover\",o.define((({Unknown:e,String:s,Dict:t})=>({args:[t(e),{}],code:[s,\"\"]})))},\n function _(e,t,n,s,i){s();const o=e(1);var r;const l=e(232),a=e(390),c=e(241),_=e(175),d=e(339),p=e(176),h=e(177),u=e(283),m=e(186),y=e(187),f=e(189),x=(0,o.__importStar)(e(185)),v=e(152),w=e(43),g=e(22),b=e(13),k=e(234),C=e(8),S=e(113),T=e(20),$=e(228),R=e(15),A=e(66),M=(0,o.__importStar)(e(242)),V=e(392);function G(e,t,n,s,i,o){const r={x:i[e],y:o[e]},l={x:i[e+1],y:o[e+1]};let a,c;if(\"span\"==t.type)\"h\"==t.direction?(a=Math.abs(r.x-n),c=Math.abs(l.x-n)):(a=Math.abs(r.y-s),c=Math.abs(l.y-s));else{const e={x:n,y:s};a=x.dist_2_pts(r,e),c=x.dist_2_pts(l,e)}return adelete this._template_el)),this.on_change([e,t,n],(async()=>await this._update_ttmodels()))}async _update_ttmodels(){const{_ttmodels:e,computed_renderers:t}=this;e.clear();const{tooltips:n}=this.model;if(null!=n)for(const t of this.computed_renderers){const s=new c.Tooltip({custom:(0,C.isString)(n)||(0,C.isFunction)(n),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t instanceof _.GlyphRenderer?e.set(t,s):t instanceof d.GraphRenderer&&(e.set(t.node_renderer,s),e.set(t.edge_renderer,s))}const s=await(0,S.build_views)(this._ttviews,[...e.values()],{parent:this.plot_view});for(const e of s)e.render();const i=[...function*(){for(const e of t)e instanceof _.GlyphRenderer?yield e:e instanceof d.GraphRenderer&&(yield e.node_renderer,yield e.edge_renderer)}()],o=this._slots.get(this._update);if(null!=o){const e=new Set(i.map((e=>e.data_source)));R.Signal.disconnect_receiver(this,o,e)}for(const e of i)this.connect(e.data_source.inspect,this._update)}get computed_renderers(){const{renderers:e,names:t}=this.model,n=this.plot_model.data_renderers;return(0,A.compute_renderers)(e,n,t)}get ttmodels(){return this._ttmodels}_clear(){this._inspect(1/0,1/0);for(const[,e]of this.ttmodels)e.clear()}_move(e){if(!this.model.active)return;const{sx:t,sy:n}=e;this.plot_view.frame.bbox.contains(t,n)?this._inspect(t,n):this._clear()}_move_exit(){this._clear()}_inspect(e,t){let n;if(\"mouse\"==this.model.mode)n={type:\"point\",sx:e,sy:t};else{n={type:\"span\",direction:\"vline\"==this.model.mode?\"h\":\"v\",sx:e,sy:t}}for(const e of this.computed_renderers){const t=e.get_selection_manager(),s=this.plot_view.renderer_view(e);null!=s&&t.inspect(s,n)}this._emit_callback(n)}_update([e,{geometry:t}]){var n,s;if(!this.model.active)return;if(\"point\"!=t.type&&\"span\"!=t.type)return;if(!(e instanceof _.GlyphRenderer))return;if(\"ignore\"==this.model.muted_policy&&e.muted)return;const i=this.ttmodels.get(e);if(null==i)return;const o=e.get_selection_manager(),r=o.inspectors.get(e),l=e.view.convert_selection_to_subset(r);if(r.is_empty()&&null==r.view)return void i.clear();const a=o.source,c=this.plot_view.renderer_view(e);if(null==c)return;const{sx:d,sy:p}=t,x=c.coordinates.x_scale,v=c.coordinates.y_scale,g=x.invert(d),k=v.invert(p),{glyph:C}=c,S=[];if(C instanceof m.PatchView){const[t,n]=[d,p],s={x:g,y:k,sx:d,sy:p,rx:t,ry:n,name:e.name};S.push([t,n,this._render_tooltips(a,-1,s)])}if(C instanceof y.HAreaView)for(const t of l.line_indices){const n=C._x1,s=C._x2,i=C._y,[o,r]=[d,p],c={index:t,x:g,y:k,sx:d,sy:p,data_x1:n,data_x2:s,data_y:i,rx:o,ry:r,indices:l.line_indices,name:e.name};S.push([o,r,this._render_tooltips(a,t,c)])}if(C instanceof f.VAreaView)for(const t of l.line_indices){const n=C._x,s=C._y1,i=C._y2,[o,r]=[d,p],c={index:t,x:g,y:k,sx:d,sy:p,data_x:n,data_y1:s,data_y2:i,rx:o,ry:r,indices:l.line_indices,name:e.name};S.push([o,r,this._render_tooltips(a,t,c)])}if(C instanceof h.LineView)for(const n of l.line_indices){let s,i,o=C._x[n+1],r=C._y[n+1],c=n;switch(this.model.line_policy){case\"interp\":[o,r]=C.get_interpolation_hit(n,t),s=x.compute(o),i=v.compute(r);break;case\"prev\":[[s,i],c]=H(C.sx,C.sy,n);break;case\"next\":[[s,i],c]=H(C.sx,C.sy,n+1);break;case\"nearest\":[[s,i],c]=G(n,t,d,p,C.sx,C.sy),o=C._x[c],r=C._y[c];break;default:[s,i]=[d,p]}const _={index:c,x:g,y:k,sx:d,sy:p,data_x:o,data_y:r,rx:s,ry:i,indices:l.line_indices,name:e.name};S.push([s,i,this._render_tooltips(a,c,_)])}for(const t of r.image_indices){const n={index:t.index,x:g,y:k,sx:d,sy:p,name:e.name},s=this._render_tooltips(a,t,n);S.push([d,p,s])}for(const i of l.indices)if(C instanceof u.MultiLineView&&!(0,b.isEmpty)(l.multiline_indices))for(const n of l.multiline_indices[i.toString()]){let s,o,r,c=C._xs.get(i)[n],h=C._ys.get(i)[n],u=n;switch(this.model.line_policy){case\"interp\":[c,h]=C.get_interpolation_hit(i,n,t),s=x.compute(c),o=v.compute(h);break;case\"prev\":[[s,o],u]=H(C.sxs.get(i),C.sys.get(i),n);break;case\"next\":[[s,o],u]=H(C.sxs.get(i),C.sys.get(i),n+1);break;case\"nearest\":[[s,o],u]=G(n,t,d,p,C.sxs.get(i),C.sys.get(i)),c=C._xs.get(i)[u],h=C._ys.get(i)[u];break;default:throw new Error(\"shouldn't have happened\")}r=e instanceof _.GlyphRenderer?e.view.convert_indices_from_subset([i])[0]:i;const m={index:r,x:g,y:k,sx:d,sy:p,data_x:c,data_y:h,segment_index:u,indices:l.multiline_indices,name:e.name};S.push([s,o,this._render_tooltips(a,r,m)])}else{const t=null===(n=C._x)||void 0===n?void 0:n[i],o=null===(s=C._y)||void 0===s?void 0:s[i];let r,c,h;if(\"snap_to_data\"==this.model.point_policy){let e=C.get_anchor_point(this.model.anchor,i,[d,p]);if(null==e&&(e=C.get_anchor_point(\"center\",i,[d,p]),null==e))continue;r=e.x,c=e.y}else[r,c]=[d,p];h=e instanceof _.GlyphRenderer?e.view.convert_indices_from_subset([i])[0]:i;const u={index:h,x:g,y:k,sx:d,sy:p,data_x:t,data_y:o,indices:l.indices,name:e.name};S.push([r,c,this._render_tooltips(a,h,u)])}if(0==S.length)i.clear();else{const{content:e}=i;(0,w.empty)(i.content);for(const[,,t]of S)null!=t&&e.appendChild(t);const[t,n]=S[S.length-1];i.setv({position:[t,n]},{check_eq:!1})}}_emit_callback(e){const{callback:t}=this.model;if(null!=t)for(const n of this.computed_renderers){if(!(n instanceof _.GlyphRenderer))continue;const s=this.plot_view.renderer_view(n);if(null==s)continue;const{x_scale:i,y_scale:o}=s.coordinates,r=i.invert(e.sx),l=o.invert(e.sy),a=n.data_source.inspected;t.execute(this.model,{geometry:Object.assign({x:r,y:l},e),renderer:n,index:a})}}_create_template(e){const t=(0,w.div)({style:{display:\"table\",borderSpacing:\"2px\"}});for(const[n]of e){const e=(0,w.div)({style:{display:\"table-row\"}});t.appendChild(e);const s=(0,w.div)({style:{display:\"table-cell\"},class:M.tooltip_row_label},0!=n.length?`${n}: `:\"\");e.appendChild(s);const i=(0,w.span)();i.dataset.value=\"\";const o=(0,w.span)({class:M.tooltip_color_block},\" \");o.dataset.swatch=\"\",(0,w.undisplay)(o);const r=(0,w.div)({style:{display:\"table-cell\"},class:M.tooltip_row_value},i,o);e.appendChild(r)}return t}_render_template(e,t,n,s,i){const o=e.cloneNode(!0),r=o.querySelectorAll(\"[data-value]\"),l=o.querySelectorAll(\"[data-swatch]\"),a=/\\$color(\\[.*\\])?:(\\w*)/,c=/\\$swatch:(\\w*)/;for(const[[,e],o]of(0,k.enumerate)(t)){const t=e.match(c),_=e.match(a);if(null!=t||null!=_){if(null!=t){const[,e]=t,i=n.get_column(e);if(null==i)r[o].textContent=`${e} unknown`;else{const e=(0,C.isNumber)(s)?i[s]:null;null!=e&&(l[o].style.backgroundColor=(0,g.color2css)(e),(0,w.display)(l[o]))}}if(null!=_){const[,e=\"\",t]=_,i=n.get_column(t);if(null==i){r[o].textContent=`${t} unknown`;continue}const a=e.indexOf(\"hex\")>=0,c=e.indexOf(\"swatch\")>=0,d=(0,C.isNumber)(s)?i[s]:null;if(null==d){r[o].textContent=\"(null)\";continue}r[o].textContent=a?(0,g.color2hex)(d):(0,g.color2css)(d),c&&(l[o].style.backgroundColor=(0,g.color2css)(d),(0,w.display)(l[o]))}}else{const t=(0,v.replace_placeholders)(e.replace(\"$~\",\"$data_\"),n,s,this.model.formatters,i);if((0,C.isString)(t))r[o].textContent=t;else for(const e of t)r[o].appendChild(e)}}return o}_render_tooltips(e,t,n){var s;const{tooltips:i}=this.model;if((0,C.isString)(i)){const s=(0,v.replace_placeholders)({html:i},e,t,this.model.formatters,n);return(0,w.div)(s)}if((0,C.isFunction)(i))return i(e,n);if(i instanceof V.Template)return this._template_view.update(e,t,n),this._template_view.el;if(null!=i){const o=null!==(s=this._template_el)&&void 0!==s?s:this._template_el=this._create_template(i);return this._render_template(o,i,e,t,n)}return null}}n.HoverToolView=z,z.__name__=\"HoverToolView\";class P extends l.InspectTool{constructor(e){super(e),this.tool_name=\"Hover\",this.icon=$.tool_icon_hover}}n.HoverTool=P,r=P,P.__name__=\"HoverTool\",r.prototype.default_view=z,r.define((({Any:e,Boolean:t,String:n,Array:s,Tuple:i,Dict:o,Or:r,Ref:l,Function:c,Auto:_,Nullable:d})=>({tooltips:[d(r(l(V.Template),n,s(i(n,n)),c())),[[\"index\",\"$index\"],[\"data (x, y)\",\"($x, $y)\"],[\"screen (x, y)\",\"($sx, $sy)\"]]],formatters:[o(r(l(a.CustomJSHover),v.FormatterType)),{}],renderers:[r(s(l(p.DataRenderer)),_),\"auto\"],names:[s(n),[]],mode:[T.HoverMode,\"mouse\"],muted_policy:[T.MutedPolicy,\"show\"],point_policy:[T.PointPolicy,\"snap_to_data\"],line_policy:[T.LinePolicy,\"nearest\"],show_arrow:[t,!0],anchor:[T.Anchor,\"center\"],attachment:[T.TooltipAttachment,\"horizontal\"],callback:[d(e)]}))),r.register_alias(\"hover\",(()=>new P))},\n function _(e,t,s,n,a){n();const l=e(1);var i,_,o,r,c,d,p,u,m,w,f,h,x;const v=e(53),y=e(309),V=e(393);a(\"Styles\",V.Styles);const g=e(43),T=e(42),b=e(226),R=e(113),D=e(8),M=e(13),S=(0,l.__importStar)(e(242)),O=e(152);class C extends b.DOMView{}s.DOMNodeView=C,C.__name__=\"DOMNodeView\";class z extends v.Model{constructor(e){super(e)}}s.DOMNode=z,z.__name__=\"DOMNode\",z.__module__=\"bokeh.models.dom\";class P extends C{render(){super.render(),this.el.textContent=this.model.content}_createElement(){return document.createTextNode(\"\")}}s.TextView=P,P.__name__=\"TextView\";class A extends z{constructor(e){super(e)}}s.Text=A,i=A,A.__name__=\"Text\",i.prototype.default_view=P,i.define((({String:e})=>({content:[e,\"\"]})));class N extends C{}s.PlaceholderView=N,N.__name__=\"PlaceholderView\",N.tag_name=\"span\";class E extends z{constructor(e){super(e)}}s.Placeholder=E,_=E,E.__name__=\"Placeholder\",_.define((({})=>({})));class G extends N{update(e,t,s){this.el.textContent=t.toString()}}s.IndexView=G,G.__name__=\"IndexView\";class I extends E{constructor(e){super(e)}}s.Index=I,o=I,I.__name__=\"Index\",o.prototype.default_view=G,o.define((({})=>({})));class k extends N{update(e,t,s){const n=(0,O._get_column_value)(this.model.field,e,t),a=null==n?\"???\":`${n}`;this.el.textContent=a}}s.ValueRefView=k,k.__name__=\"ValueRefView\";class $ extends E{constructor(e){super(e)}}s.ValueRef=$,r=$,$.__name__=\"ValueRef\",r.prototype.default_view=k,r.define((({String:e})=>({field:[e]})));class B extends k{render(){super.render(),this.value_el=(0,g.span)(),this.swatch_el=(0,g.span)({class:S.tooltip_color_block},\" \"),this.el.appendChild(this.value_el),this.el.appendChild(this.swatch_el)}update(e,t,s){const n=(0,O._get_column_value)(this.model.field,e,t),a=null==n?\"???\":`${n}`;this.el.textContent=a}}s.ColorRefView=B,B.__name__=\"ColorRefView\";class L extends ${constructor(e){super(e)}}s.ColorRef=L,c=L,L.__name__=\"ColorRef\",c.prototype.default_view=B,c.define((({Boolean:e})=>({hex:[e,!0],swatch:[e,!0]})));class j extends C{constructor(){super(...arguments),this.child_views=new Map}async lazy_initialize(){await super.lazy_initialize();const e=this.model.children.filter((e=>e instanceof v.Model));await(0,R.build_views)(this.child_views,e,{parent:this})}render(){super.render();const{style:e}=this.model;if(null!=e)if(e instanceof V.Styles)for(const t of e){const e=t.get_value();if((0,D.isString)(e)){const s=t.attr.replace(/_/g,\"-\");this.el.style.hasOwnProperty(s)&&this.el.style.setProperty(s,e)}}else for(const[t,s]of(0,M.entries)(e)){const e=t.replace(/_/g,\"-\");this.el.style.hasOwnProperty(e)&&this.el.style.setProperty(e,s)}for(const e of this.model.children)if((0,D.isString)(e)){const t=document.createTextNode(e);this.el.appendChild(t)}else{this.child_views.get(e).renderTo(this.el)}}}s.DOMElementView=j,j.__name__=\"DOMElementView\";class q extends z{constructor(e){super(e)}}s.DOMElement=q,d=q,q.__name__=\"DOMElement\",d.define((({String:e,Array:t,Dict:s,Or:n,Nullable:a,Ref:l})=>({style:[a(n(l(V.Styles),s(e))),null],children:[t(n(e,l(z),l(y.LayoutDOM))),[]]})));class F extends T.View{}s.ActionView=F,F.__name__=\"ActionView\";class H extends v.Model{constructor(e){super(e)}}s.Action=H,p=H,H.__name__=\"Action\",H.__module__=\"bokeh.models.dom\",p.define((({})=>({})));class J extends j{constructor(){super(...arguments),this.action_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await(0,R.build_views)(this.action_views,this.model.actions,{parent:this})}remove(){(0,R.remove_views)(this.action_views),super.remove()}update(e,t,s={}){!function n(a){for(const l of a.child_views.values())l instanceof N?l.update(e,t,s):l instanceof j&&n(l)}(this);for(const n of this.action_views.values())n.update(e,t,s)}}s.TemplateView=J,J.__name__=\"TemplateView\",J.tag_name=\"div\";class K extends q{}s.Template=K,u=K,K.__name__=\"Template\",u.prototype.default_view=J,u.define((({Array:e,Ref:t})=>({actions:[e(t(H)),[]]})));class Q extends j{}s.SpanView=Q,Q.__name__=\"SpanView\",Q.tag_name=\"span\";class U extends q{}s.Span=U,m=U,U.__name__=\"Span\",m.prototype.default_view=Q;class W extends j{}s.DivView=W,W.__name__=\"DivView\",W.tag_name=\"div\";class X extends q{}s.Div=X,w=X,X.__name__=\"Div\",w.prototype.default_view=W;class Y extends j{}s.TableView=Y,Y.__name__=\"TableView\",Y.tag_name=\"table\";class Z extends q{}s.Table=Z,f=Z,Z.__name__=\"Table\",f.prototype.default_view=Y;class ee extends j{}s.TableRowView=ee,ee.__name__=\"TableRowView\",ee.tag_name=\"tr\";class te extends q{}s.TableRow=te,h=te,te.__name__=\"TableRow\",h.prototype.default_view=ee;const se=e(41),ne=e(234);class ae extends F{update(e,t,s){for(const[e,s]of(0,ne.enumerate)(this.model.groups))e.visible=t==s}}s.ToggleGroupView=ae,ae.__name__=\"ToggleGroupView\";class le extends H{constructor(e){super(e)}}s.ToggleGroup=le,x=le,le.__name__=\"ToggleGroup\",x.prototype.default_view=ae,x.define((({Array:e,Ref:t})=>({groups:[e(t(se.RendererGroup)),[]]})))},\n function _(l,n,u,_,e){var t;_();const o=l(53);class r extends o.Model{constructor(l){super(l)}}u.Styles=r,t=r,r.__name__=\"Styles\",r.__module__=\"bokeh.models.css\",t.define((({String:l,Nullable:n})=>({align_content:[n(l),null],align_items:[n(l),null],align_self:[n(l),null],alignment_baseline:[n(l),null],all:[n(l),null],animation:[n(l),null],animation_delay:[n(l),null],animation_direction:[n(l),null],animation_duration:[n(l),null],animation_fill_mode:[n(l),null],animation_iteration_count:[n(l),null],animation_name:[n(l),null],animation_play_state:[n(l),null],animation_timing_function:[n(l),null],backface_visibility:[n(l),null],background:[n(l),null],background_attachment:[n(l),null],background_clip:[n(l),null],background_color:[n(l),null],background_image:[n(l),null],background_origin:[n(l),null],background_position:[n(l),null],background_position_x:[n(l),null],background_position_y:[n(l),null],background_repeat:[n(l),null],background_size:[n(l),null],baseline_shift:[n(l),null],block_size:[n(l),null],border:[n(l),null],border_block_end:[n(l),null],border_block_end_color:[n(l),null],border_block_end_style:[n(l),null],border_block_end_width:[n(l),null],border_block_start:[n(l),null],border_block_start_color:[n(l),null],border_block_start_style:[n(l),null],border_block_start_width:[n(l),null],border_bottom:[n(l),null],border_bottom_color:[n(l),null],border_bottom_left_radius:[n(l),null],border_bottom_right_radius:[n(l),null],border_bottom_style:[n(l),null],border_bottom_width:[n(l),null],border_collapse:[n(l),null],border_color:[n(l),null],border_image:[n(l),null],border_image_outset:[n(l),null],border_image_repeat:[n(l),null],border_image_slice:[n(l),null],border_image_source:[n(l),null],border_image_width:[n(l),null],border_inline_end:[n(l),null],border_inline_end_color:[n(l),null],border_inline_end_style:[n(l),null],border_inline_end_width:[n(l),null],border_inline_start:[n(l),null],border_inline_start_color:[n(l),null],border_inline_start_style:[n(l),null],border_inline_start_width:[n(l),null],border_left:[n(l),null],border_left_color:[n(l),null],border_left_style:[n(l),null],border_left_width:[n(l),null],border_radius:[n(l),null],border_right:[n(l),null],border_right_color:[n(l),null],border_right_style:[n(l),null],border_right_width:[n(l),null],border_spacing:[n(l),null],border_style:[n(l),null],border_top:[n(l),null],border_top_color:[n(l),null],border_top_left_radius:[n(l),null],border_top_right_radius:[n(l),null],border_top_style:[n(l),null],border_top_width:[n(l),null],border_width:[n(l),null],bottom:[n(l),null],box_shadow:[n(l),null],box_sizing:[n(l),null],break_after:[n(l),null],break_before:[n(l),null],break_inside:[n(l),null],caption_side:[n(l),null],caret_color:[n(l),null],clear:[n(l),null],clip:[n(l),null],clip_path:[n(l),null],clip_rule:[n(l),null],color:[n(l),null],color_interpolation:[n(l),null],color_interpolation_filters:[n(l),null],column_count:[n(l),null],column_fill:[n(l),null],column_gap:[n(l),null],column_rule:[n(l),null],column_rule_color:[n(l),null],column_rule_style:[n(l),null],column_rule_width:[n(l),null],column_span:[n(l),null],column_width:[n(l),null],columns:[n(l),null],content:[n(l),null],counter_increment:[n(l),null],counter_reset:[n(l),null],css_float:[n(l),null],css_text:[n(l),null],cursor:[n(l),null],direction:[n(l),null],display:[n(l),null],dominant_baseline:[n(l),null],empty_cells:[n(l),null],fill:[n(l),null],fill_opacity:[n(l),null],fill_rule:[n(l),null],filter:[n(l),null],flex:[n(l),null],flex_basis:[n(l),null],flex_direction:[n(l),null],flex_flow:[n(l),null],flex_grow:[n(l),null],flex_shrink:[n(l),null],flex_wrap:[n(l),null],float:[n(l),null],flood_color:[n(l),null],flood_opacity:[n(l),null],font:[n(l),null],font_family:[n(l),null],font_feature_settings:[n(l),null],font_kerning:[n(l),null],font_size:[n(l),null],font_size_adjust:[n(l),null],font_stretch:[n(l),null],font_style:[n(l),null],font_synthesis:[n(l),null],font_variant:[n(l),null],font_variant_caps:[n(l),null],font_variant_east_asian:[n(l),null],font_variant_ligatures:[n(l),null],font_variant_numeric:[n(l),null],font_variant_position:[n(l),null],font_weight:[n(l),null],gap:[n(l),null],glyph_orientation_vertical:[n(l),null],grid:[n(l),null],grid_area:[n(l),null],grid_auto_columns:[n(l),null],grid_auto_flow:[n(l),null],grid_auto_rows:[n(l),null],grid_column:[n(l),null],grid_column_end:[n(l),null],grid_column_gap:[n(l),null],grid_column_start:[n(l),null],grid_gap:[n(l),null],grid_row:[n(l),null],grid_row_end:[n(l),null],grid_row_gap:[n(l),null],grid_row_start:[n(l),null],grid_template:[n(l),null],grid_template_areas:[n(l),null],grid_template_columns:[n(l),null],grid_template_rows:[n(l),null],height:[n(l),null],hyphens:[n(l),null],image_orientation:[n(l),null],image_rendering:[n(l),null],inline_size:[n(l),null],justify_content:[n(l),null],justify_items:[n(l),null],justify_self:[n(l),null],left:[n(l),null],letter_spacing:[n(l),null],lighting_color:[n(l),null],line_break:[n(l),null],line_height:[n(l),null],list_style:[n(l),null],list_style_image:[n(l),null],list_style_position:[n(l),null],list_style_type:[n(l),null],margin:[n(l),null],margin_block_end:[n(l),null],margin_block_start:[n(l),null],margin_bottom:[n(l),null],margin_inline_end:[n(l),null],margin_inline_start:[n(l),null],margin_left:[n(l),null],margin_right:[n(l),null],margin_top:[n(l),null],marker:[n(l),null],marker_end:[n(l),null],marker_mid:[n(l),null],marker_start:[n(l),null],mask:[n(l),null],mask_composite:[n(l),null],mask_image:[n(l),null],mask_position:[n(l),null],mask_repeat:[n(l),null],mask_size:[n(l),null],mask_type:[n(l),null],max_block_size:[n(l),null],max_height:[n(l),null],max_inline_size:[n(l),null],max_width:[n(l),null],min_block_size:[n(l),null],min_height:[n(l),null],min_inline_size:[n(l),null],min_width:[n(l),null],object_fit:[n(l),null],object_position:[n(l),null],opacity:[n(l),null],order:[n(l),null],orphans:[n(l),null],outline:[n(l),null],outline_color:[n(l),null],outline_offset:[n(l),null],outline_style:[n(l),null],outline_width:[n(l),null],overflow:[n(l),null],overflow_anchor:[n(l),null],overflow_wrap:[n(l),null],overflow_x:[n(l),null],overflow_y:[n(l),null],overscroll_behavior:[n(l),null],overscroll_behavior_block:[n(l),null],overscroll_behavior_inline:[n(l),null],overscroll_behavior_x:[n(l),null],overscroll_behavior_y:[n(l),null],padding:[n(l),null],padding_block_end:[n(l),null],padding_block_start:[n(l),null],padding_bottom:[n(l),null],padding_inline_end:[n(l),null],padding_inline_start:[n(l),null],padding_left:[n(l),null],padding_right:[n(l),null],padding_top:[n(l),null],page_break_after:[n(l),null],page_break_before:[n(l),null],page_break_inside:[n(l),null],paint_order:[n(l),null],perspective:[n(l),null],perspective_origin:[n(l),null],place_content:[n(l),null],place_items:[n(l),null],place_self:[n(l),null],pointer_events:[n(l),null],position:[n(l),null],quotes:[n(l),null],resize:[n(l),null],right:[n(l),null],rotate:[n(l),null],row_gap:[n(l),null],ruby_align:[n(l),null],ruby_position:[n(l),null],scale:[n(l),null],scroll_behavior:[n(l),null],shape_rendering:[n(l),null],stop_color:[n(l),null],stop_opacity:[n(l),null],stroke:[n(l),null],stroke_dasharray:[n(l),null],stroke_dashoffset:[n(l),null],stroke_linecap:[n(l),null],stroke_linejoin:[n(l),null],stroke_miterlimit:[n(l),null],stroke_opacity:[n(l),null],stroke_width:[n(l),null],tab_size:[n(l),null],table_layout:[n(l),null],text_align:[n(l),null],text_align_last:[n(l),null],text_anchor:[n(l),null],text_combine_upright:[n(l),null],text_decoration:[n(l),null],text_decoration_color:[n(l),null],text_decoration_line:[n(l),null],text_decoration_style:[n(l),null],text_emphasis:[n(l),null],text_emphasis_color:[n(l),null],text_emphasis_position:[n(l),null],text_emphasis_style:[n(l),null],text_indent:[n(l),null],text_justify:[n(l),null],text_orientation:[n(l),null],text_overflow:[n(l),null],text_rendering:[n(l),null],text_shadow:[n(l),null],text_transform:[n(l),null],text_underline_position:[n(l),null],top:[n(l),null],touch_action:[n(l),null],transform:[n(l),null],transform_box:[n(l),null],transform_origin:[n(l),null],transform_style:[n(l),null],transition:[n(l),null],transition_delay:[n(l),null],transition_duration:[n(l),null],transition_property:[n(l),null],transition_timing_function:[n(l),null],translate:[n(l),null],unicode_bidi:[n(l),null],user_select:[n(l),null],vertical_align:[n(l),null],visibility:[n(l),null],white_space:[n(l),null],widows:[n(l),null],width:[n(l),null],will_change:[n(l),null],word_break:[n(l),null],word_spacing:[n(l),null],word_wrap:[n(l),null],writing_mode:[n(l),null],z_index:[n(l),null]})))},\n function _(t,o,e,n,s){var i;n();const l=t(15),c=t(53),r=t(224),a=t(232),u=t(234);class h extends c.Model{constructor(t){super(t)}get button_view(){return this.tools[0].button_view}get event_type(){return this.tools[0].event_type}get tooltip(){return this.tools[0].tooltip}get tool_name(){return this.tools[0].tool_name}get icon(){return this.tools[0].computed_icon}get computed_icon(){return this.icon}get toggleable(){const t=this.tools[0];return t instanceof a.InspectTool&&t.toggleable}initialize(){super.initialize(),this.do=new l.Signal0(this,\"do\")}connect_signals(){super.connect_signals(),this.connect(this.do,(()=>this.doit())),this.connect(this.properties.active.change,(()=>this.set_active()));for(const t of this.tools)this.connect(t.properties.active.change,(()=>{this.active=t.active}))}doit(){for(const t of this.tools)t.do.emit()}set_active(){for(const t of this.tools)t.active=this.active}get menu(){const{menu:t}=this.tools[0];if(null==t)return null;const o=[];for(const[e,n]of(0,u.enumerate)(t))if(null==e)o.push(null);else{const t=()=>{var t,o,e;for(const s of this.tools)null===(e=null===(o=null===(t=s.menu)||void 0===t?void 0:t[n])||void 0===o?void 0:o.handler)||void 0===e||e.call(o)};o.push(Object.assign(Object.assign({},e),{handler:t}))}return o}}e.ToolProxy=h,i=h,h.__name__=\"ToolProxy\",i.define((({Boolean:t,Array:o,Ref:e})=>({tools:[o(e(r.ButtonTool)),[]],active:[t,!1],disabled:[t,!1]})))},\n function _(o,t,s,e,i){var n,r;e();const l=o(20),c=o(9),h=o(13),a=o(233),_=o(221),p=o(394),u=o(309),f=o(207);class y extends a.ToolbarBase{constructor(o){super(o)}initialize(){super.initialize(),this._merge_tools()}_merge_tools(){this._proxied_tools=[];const o={},t={},s={},e=[],i=[];for(const o of this.help)(0,c.includes)(i,o.redirect)||(e.push(o),i.push(o.redirect));this._proxied_tools.push(...e),this.help=e;for(const[o,t]of(0,h.entries)(this.gestures)){o in s||(s[o]={});for(const e of t.tools)e.type in s[o]||(s[o][e.type]=[]),s[o][e.type].push(e)}for(const t of this.inspectors)t.type in o||(o[t.type]=[]),o[t.type].push(t);for(const o of this.actions)o.type in t||(t[o.type]=[]),t[o.type].push(o);const n=(o,t=!1)=>{const s=new p.ToolProxy({tools:o,active:t});return this._proxied_tools.push(s),s};for(const o of(0,h.keys)(s)){const t=this.gestures[o];t.tools=[];for(const e of(0,h.keys)(s[o])){const i=s[o][e];if(i.length>0)if(\"multi\"==o)for(const o of i){const s=n([o]);t.tools.push(s),this.connect(s.properties.active.change,(()=>this._active_change(s)))}else{const o=n(i);t.tools.push(o),this.connect(o.properties.active.change,(()=>this._active_change(o)))}}}this.actions=[];for(const[o,s]of(0,h.entries)(t))if(\"CustomAction\"==o)for(const o of s)this.actions.push(n([o]));else s.length>0&&this.actions.push(n(s));this.inspectors=[];for(const t of(0,h.values)(o))t.length>0&&this.inspectors.push(n(t,!0));for(const[o,t]of(0,h.entries)(this.gestures))0!=t.tools.length&&(t.tools=(0,c.sort_by)(t.tools,(o=>o.default_order)),\"pinch\"!=o&&\"scroll\"!=o&&\"multi\"!=o&&(t.tools[0].active=!0))}}s.ProxyToolbar=y,n=y,y.__name__=\"ProxyToolbar\",n.define((({Array:o,Ref:t})=>({toolbars:[o(t(_.Toolbar)),[]]})));class d extends u.LayoutDOMView{initialize(){this.model.toolbar.toolbar_location=this.model.toolbar_location,super.initialize()}get child_models(){return[this.model.toolbar]}_update_layout(){this.layout=new f.ContentBox(this.child_views[0].el);const{toolbar:o}=this.model;o.horizontal?this.layout.set_sizing({width_policy:\"fit\",min_width:100,height_policy:\"fixed\"}):this.layout.set_sizing({width_policy:\"fixed\",height_policy:\"fit\",min_height:100})}after_layout(){super.after_layout();const o=this.child_views[0];o.layout.bbox=this.layout.bbox,o.render()}}s.ToolbarBoxView=d,d.__name__=\"ToolbarBoxView\";class b extends u.LayoutDOM{constructor(o){super(o)}}s.ToolbarBox=b,r=b,b.__name__=\"ToolbarBox\",r.prototype.default_view=d,r.define((({Ref:o})=>({toolbar:[o(a.ToolbarBase)],toolbar_location:[l.Location,\"right\"]})))},\n function _(e,n,r,t,o){t();const s=e(1),u=e(53),c=(0,s.__importStar)(e(21)),a=e(8),l=e(13);r.resolve_defs=function(e,n){var r,t,o,s;function i(e){return null!=e.module?`${e.module}.${e.name}`:e.name}function f(e){if((0,a.isString)(e))switch(e){case\"Any\":return c.Any;case\"Unknown\":return c.Unknown;case\"Boolean\":return c.Boolean;case\"Number\":return c.Number;case\"Int\":return c.Int;case\"String\":return c.String;case\"Null\":return c.Null}else switch(e[0]){case\"Nullable\":{const[,n]=e;return c.Nullable(f(n))}case\"Or\":{const[,...n]=e;return c.Or(...n.map(f))}case\"Tuple\":{const[,n,...r]=e;return c.Tuple(f(n),...r.map(f))}case\"Array\":{const[,n]=e;return c.Array(f(n))}case\"Struct\":{const[,...n]=e,r=n.map((([e,n])=>[e,f(n)]));return c.Struct((0,l.to_object)(r))}case\"Dict\":{const[,n]=e;return c.Dict(f(n))}case\"Map\":{const[,n,r]=e;return c.Map(f(n),f(r))}case\"Enum\":{const[,...n]=e;return c.Enum(...n)}case\"Ref\":{const[,r]=e,t=n.get(i(r));if(null!=t)return c.Ref(t);throw new Error(`${i(r)} wasn't defined before referencing it`)}case\"AnyRef\":return c.AnyRef()}}for(const c of e){const e=(()=>{if(null==c.extends)return u.Model;{const e=n.get(i(c.extends));if(null!=e)return e;throw new Error(`base model ${i(c.extends)} of ${i(c)} is not defined`)}})(),a=((s=class extends e{}).__name__=c.name,s.__module__=c.module,s);for(const e of null!==(r=c.properties)&&void 0!==r?r:[]){const n=f(null!==(t=e.kind)&&void 0!==t?t:\"Unknown\");a.define({[e.name]:[n,e.default]})}for(const e of null!==(o=c.overrides)&&void 0!==o?o:[])a.override({[e.name]:e.default});n.register(a)}}},\n function _(n,e,t,o,i){o();const d=n(5),c=n(226),s=n(113),a=n(43),l=n(398);t.index={},t.add_document_standalone=async function(n,e,o=[],i=!1){const u=new Map;async function f(i){let d;const f=n.roots().indexOf(i),r=o[f];null!=r?d=r:e.classList.contains(l.BOKEH_ROOT)?d=e:(d=(0,a.div)({class:l.BOKEH_ROOT}),e.appendChild(d));const w=await(0,s.build_view)(i,{parent:null});return w instanceof c.DOMView&&w.renderTo(d),u.set(i,w),t.index[i.id]=w,w}for(const e of n.roots())await f(e);return i&&(window.document.title=n.title()),n.on_change((n=>{n instanceof d.RootAddedEvent?f(n.model):n instanceof d.RootRemovedEvent?function(n){const e=u.get(n);null!=e&&(e.remove(),u.delete(n),delete t.index[n.id])}(n.model):i&&n instanceof d.TitleChangedEvent&&(window.document.title=n.title)})),[...u.values()]}},\n function _(o,e,n,t,r){t();const l=o(43),d=o(44);function u(o){let e=document.getElementById(o);if(null==e)throw new Error(`Error rendering Bokeh model: could not find #${o} HTML tag`);if(!document.body.contains(e))throw new Error(`Error rendering Bokeh model: element #${o} must be under `);if(\"SCRIPT\"==e.tagName){const o=(0,l.div)({class:n.BOKEH_ROOT});(0,l.replaceWith)(e,o),e=o}return e}n.BOKEH_ROOT=d.root,n._resolve_element=function(o){const{elementid:e}=o;return null!=e?u(e):document.body},n._resolve_root_elements=function(o){const e=[];if(null!=o.root_ids&&null!=o.roots)for(const n of o.root_ids)e.push(u(o.roots[n]));return e}},\n function _(n,o,t,s,e){s();const c=n(400),r=n(19),a=n(397);t._get_ws_url=function(n,o){let t,s=\"ws:\";return\"https:\"==window.location.protocol&&(s=\"wss:\"),null!=o?(t=document.createElement(\"a\"),t.href=o):t=window.location,null!=n?\"/\"==n&&(n=\"\"):n=t.pathname.replace(/\\/+$/,\"\"),`${s}//${t.host}${n}/ws`};const i={};t.add_document_from_session=async function(n,o,t,s=[],e=!1){const l=window.location.search.substr(1);let d;try{d=await function(n,o,t){const s=(0,c.parse_token)(o).session_id;n in i||(i[n]={});const e=i[n];return s in e||(e[s]=(0,c.pull_session)(n,o,t)),e[s]}(n,o,l)}catch(n){const t=(0,c.parse_token)(o).session_id;throw r.logger.error(`Failed to load Bokeh session ${t}: ${n}`),n}return(0,a.add_document_standalone)(d.document,t,s,e)}},\n function _(e,s,n,t,o){t();const r=e(19),i=e(5),c=e(401),l=e(402),_=e(403);n.DEFAULT_SERVER_WEBSOCKET_URL=\"ws://localhost:5006/ws\",n.DEFAULT_TOKEN=\"eyJzZXNzaW9uX2lkIjogImRlZmF1bHQifQ\";let h=0;function a(e){let s=e.split(\".\")[0];const n=s.length%4;return 0!=n&&(s+=\"=\".repeat(4-n)),JSON.parse(atob(s.replace(/_/g,\"/\").replace(/-/g,\"+\")))}n.parse_token=a;class d{constructor(e=n.DEFAULT_SERVER_WEBSOCKET_URL,s=n.DEFAULT_TOKEN,t=null){this.url=e,this.token=s,this.args_string=t,this._number=h++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_replies=new Map,this._pending_messages=[],this._receiver=new l.Receiver,this.id=a(s).session_id.split(\".\")[0],r.logger.debug(`Creating websocket ${this._number} to '${this.url}' session '${this.id}'`)}async connect(){if(this.closed_permanently)throw new Error(\"Cannot connect() a closed ClientConnection\");if(null!=this.socket)throw new Error(\"Already connected\");this._current_handler=null,this._pending_replies.clear(),this._pending_messages=[];try{let e=`${this.url}`;return null!=this.args_string&&this.args_string.length>0&&(e+=`?${this.args_string}`),this.socket=new WebSocket(e,[\"bokeh\",this.token]),new Promise(((e,s)=>{this.socket.binaryType=\"arraybuffer\",this.socket.onopen=()=>this._on_open(e,s),this.socket.onmessage=e=>this._on_message(e),this.socket.onclose=e=>this._on_close(e,s),this.socket.onerror=()=>this._on_error(s)}))}catch(e){throw r.logger.error(`websocket creation failed to url: ${this.url}`),r.logger.error(` - ${e}`),e}}close(){this.closed_permanently||(r.logger.debug(`Permanently closing websocket connection ${this._number}`),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,`close method called on ClientConnection ${this._number}`),this.session._connection_closed())}_schedule_reconnect(e){setTimeout((()=>{this.closed_permanently||r.logger.info(`Websocket connection ${this._number} disconnected, will not attempt to reconnect`)}),e)}send(e){if(null==this.socket)throw new Error(`not connected so cannot send ${e}`);e.send(this.socket)}async send_with_reply(e){const s=await new Promise(((s,n)=>{this._pending_replies.set(e.msgid(),{resolve:s,reject:n}),this.send(e)}));if(\"ERROR\"===s.msgtype())throw new Error(`Error reply ${s.content.text}`);return s}async _pull_doc_json(){const e=c.Message.create(\"PULL-DOC-REQ\",{}),s=await this.send_with_reply(e);if(!(\"doc\"in s.content))throw new Error(\"No 'doc' field in PULL-DOC-REPLY\");return s.content.doc}async _repull_session_doc(e,s){var n;r.logger.debug(this.session?\"Repulling session\":\"Pulling session for first time\");try{const n=await this._pull_doc_json();if(null==this.session)if(this.closed_permanently)r.logger.debug(\"Got new document after connection was already closed\"),s(new Error(\"The connection has been closed\"));else{const s=i.Document.from_json(n),t=i.Document._compute_patch_since_json(n,s);if(t.events.length>0){r.logger.debug(`Sending ${t.events.length} changes from model construction back to server`);const e=c.Message.create(\"PATCH-DOC\",{},t);this.send(e)}this.session=new _.ClientSession(this,s,this.id);for(const e of this._pending_messages)this.session.handle(e);this._pending_messages=[],r.logger.debug(\"Created a new session from new pulled doc\"),e(this.session)}else this.session.document.replace_with_json(n),r.logger.debug(\"Updated existing session with new pulled doc\")}catch(e){null===(n=console.trace)||void 0===n||n.call(console,e),r.logger.error(`Failed to repull session ${e}`),s(e instanceof Error?e:`${e}`)}}_on_open(e,s){r.logger.info(`Websocket connection ${this._number} is now open`),this._current_handler=n=>{this._awaiting_ack_handler(n,e,s)}}_on_message(e){null==this._current_handler&&r.logger.error(\"Got a message with no current handler set\");try{this._receiver.consume(e.data)}catch(e){this._close_bad_protocol(`${e}`)}const s=this._receiver.message;if(null!=s){const e=s.problem();null!=e&&this._close_bad_protocol(e),this._current_handler(s)}}_on_close(e,s){r.logger.info(`Lost websocket ${this._number} connection, ${e.code} (${e.reason})`),this.socket=null,this._pending_replies.forEach((e=>e.reject(\"Disconnected\"))),this._pending_replies.clear(),this.closed_permanently||this._schedule_reconnect(2e3),s(new Error(`Lost websocket connection, ${e.code} (${e.reason})`))}_on_error(e){r.logger.debug(`Websocket error on socket ${this._number}`);const s=\"Could not open websocket\";r.logger.error(`Failed to connect to Bokeh server: ${s}`),e(new Error(s))}_close_bad_protocol(e){r.logger.error(`Closing connection: ${e}`),null!=this.socket&&this.socket.close(1002,e)}_awaiting_ack_handler(e,s,n){\"ACK\"===e.msgtype()?(this._current_handler=e=>this._steady_state_handler(e),this._repull_session_doc(s,n)):this._close_bad_protocol(\"First message was not an ACK\")}_steady_state_handler(e){const s=e.reqid(),n=this._pending_replies.get(s);n?(this._pending_replies.delete(s),n.resolve(e)):this.session?this.session.handle(e):\"PATCH-DOC\"!=e.msgtype()&&this._pending_messages.push(e)}}n.ClientConnection=d,d.__name__=\"ClientConnection\",n.pull_session=function(e,s,n){return new d(e,s,n).connect()}},\n function _(e,s,t,r,n){r();const i=e(34);class a{constructor(e,s,t){this.header=e,this.metadata=s,this.content=t,this.buffers=new Map}static assemble(e,s,t){const r=JSON.parse(e),n=JSON.parse(s),i=JSON.parse(t);return new a(r,n,i)}assemble_buffer(e,s){const t=null!=this.header.num_buffers?this.header.num_buffers:0;if(t<=this.buffers.size)throw new Error(`too many buffers received, expecting ${t}`);const{id:r}=JSON.parse(e);this.buffers.set(r,s)}static create(e,s,t={}){const r=a.create_header(e);return new a(r,s,t)}static create_header(e){return{msgid:(0,i.uniqueId)(),msgtype:e}}complete(){return null!=this.header&&null!=this.metadata&&null!=this.content&&(null==this.header.num_buffers||this.buffers.size==this.header.num_buffers)}send(e){if((null!=this.header.num_buffers?this.header.num_buffers:0)>0)throw new Error(\"BokehJS only supports receiving buffers, not sending\");const s=JSON.stringify(this.header),t=JSON.stringify(this.metadata),r=JSON.stringify(this.content);e.send(s),e.send(t),e.send(r)}msgid(){return this.header.msgid}msgtype(){return this.header.msgtype}reqid(){return this.header.reqid}problem(){return\"msgid\"in this.header?\"msgtype\"in this.header?null:\"No msgtype in header\":\"No msgid in header\"}}t.Message=a,a.__name__=\"Message\"},\n function _(e,t,s,_,r){_();const i=e(401),h=e(8);class a{constructor(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}consume(e){this._current_consumer(e)}_HEADER(e){this._assume_text(e),this.message=null,this._partial=null,this._fragments=[e],this._buf_header=null,this._current_consumer=this._METADATA}_METADATA(e){this._assume_text(e),this._fragments.push(e),this._current_consumer=this._CONTENT}_CONTENT(e){this._assume_text(e),this._fragments.push(e);const[t,s,_]=this._fragments.slice(0,3);this._partial=i.Message.assemble(t,s,_),this._check_complete()}_BUFFER_HEADER(e){this._assume_text(e),this._buf_header=e,this._current_consumer=this._BUFFER_PAYLOAD}_BUFFER_PAYLOAD(e){this._assume_binary(e),this._partial.assemble_buffer(this._buf_header,e),this._check_complete()}_assume_text(e){if(!(0,h.isString)(e))throw new Error(\"Expected text fragment but received binary fragment\")}_assume_binary(e){if(!(e instanceof ArrayBuffer))throw new Error(\"Expected binary fragment but received text fragment\")}_check_complete(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER}}s.Receiver=a,a.__name__=\"Receiver\"},\n function _(e,t,n,s,o){s();const c=e(5),i=e(401),_=e(19);class r{constructor(e,t,n){this._connection=e,this.document=t,this.id=n,this._document_listener=e=>{this._document_changed(e)},this.document.on_change(this._document_listener,!0)}handle(e){const t=e.msgtype();\"PATCH-DOC\"===t?this._handle_patch(e):\"OK\"===t?this._handle_ok(e):\"ERROR\"===t?this._handle_error(e):_.logger.debug(`Doing nothing with message ${e.msgtype()}`)}close(){this._connection.close()}_connection_closed(){this.document.remove_on_change(this._document_listener)}async request_server_info(){const e=i.Message.create(\"SERVER-INFO-REQ\",{});return(await this._connection.send_with_reply(e)).content}async force_roundtrip(){await this.request_server_info()}_document_changed(e){if(e.setter_id===this.id)return;const t=e instanceof c.DocumentEventBatch?e.events:[e],n=this.document.create_json_patch(t),s=i.Message.create(\"PATCH-DOC\",{},n);this._connection.send(s)}_handle_patch(e){this.document.apply_json_patch(e.content,e.buffers,this.id)}_handle_ok(e){_.logger.trace(`Unhandled OK reply to ${e.reqid()}`)}_handle_error(e){_.logger.error(`Unhandled ERROR reply to ${e.reqid()}: ${e.content.text}`)}}n.ClientSession=r,r.__name__=\"ClientSession\"},\n function _(e,o,t,n,r){n();const s=e(1),l=e(5),i=e(402),a=e(19),c=e(43),g=e(13),f=e(397),u=e(398),m=(0,s.__importDefault)(e(44)),p=(0,s.__importDefault)(e(240)),d=(0,s.__importDefault)(e(405));function _(e,o){o.buffers.length>0?e.consume(o.buffers[0].buffer):e.consume(o.content.data);const t=e.message;null!=t&&this.apply_json_patch(t.content,t.buffers)}function b(e,o){if(\"undefined\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){a.logger.info(`Registering Jupyter comms for target ${e}`);const t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(e,(t=>{a.logger.info(`Registering Jupyter comms for target ${e}`);const n=new i.Receiver;t.on_msg(_.bind(o,n))}))}catch(e){a.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(o.roots()[0].id in t.kernels){a.logger.info(`Registering JupyterLab comms for target ${e}`);const n=t.kernels[o.roots()[0].id];try{n.registerCommTarget(e,(t=>{a.logger.info(`Registering JupyterLab comms for target ${e}`);const n=new i.Receiver;t.onMsg=_.bind(o,n)}))}catch(e){a.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(\"undefined\"!=typeof google&&null!=google.colab.kernel){a.logger.info(`Registering Google Colab comms for target ${e}`);const t=google.colab.kernel.comms;try{t.registerTarget(e,(async t=>{var n,r,l;a.logger.info(`Registering Google Colab comms for target ${e}`);const c=new i.Receiver;try{for(var g,f=(0,s.__asyncValues)(t.messages);!(g=await f.next()).done;){const e=g.value,t={data:e.data},n=[];for(const o of null!==(l=e.buffers)&&void 0!==l?l:[])n.push(new DataView(o));const r={content:t,buffers:n};_.bind(o)(c,r)}}catch(e){n={error:e}}finally{try{g&&!g.done&&(r=f.return)&&await r.call(f)}finally{if(n)throw n.error}}}))}catch(e){a.logger.warn(`Google Colab comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else console.warn(\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest @bokeh/jupyter_bokeh extension is installed. In an exported notebook this warning is expected.\")}c.stylesheet.append(m.default),c.stylesheet.append(p.default),c.stylesheet.append(d.default),t.kernels={},t.embed_items_notebook=function(e,o){if(1!=(0,g.size)(e))throw new Error(\"embed_items_notebook expects exactly one document in docs_json\");const t=l.Document.from_json((0,g.values)(e)[0]);for(const e of o){null!=e.notebook_comms_target&&b(e.notebook_comms_target,t);const o=(0,u._resolve_element)(e),n=(0,u._resolve_root_elements)(e);(0,f.add_document_standalone)(t,o,n)}}},\n function _(t,o,r,e,d){e(),r.root=\"bk-root\",r.tooltip=\"bk-tooltip\",r.default=\".rendered_html .bk-root .bk-tooltip table,.rendered_html .bk-root .bk-tooltip tr,.rendered_html .bk-root .bk-tooltip th,.rendered_html .bk-root .bk-tooltip td{border:none;padding:1px;}\"},\n function _(t,_,o,r,n){r();const a=t(1);(0,a.__exportStar)(t(401),o),(0,a.__exportStar)(t(402),o)},\n function _(e,t,n,s,o){function l(){const e=document.getElementsByTagName(\"body\")[0],t=document.getElementsByClassName(\"bokeh-test-div\");1==t.length&&(e.removeChild(t[0]),delete t[0]);const n=document.createElement(\"div\");n.classList.add(\"bokeh-test-div\"),n.style.display=\"none\",e.insertBefore(n,e.firstChild)}s(),n.results={},n.init=function(){l()},n.record0=function(e,t){n.results[e]=t},n.record=function(e,t){n.results[e]=t,l()},n.count=function(e){null==n.results[e]&&(n.results[e]=0),n.results[e]+=1,l()}},\n function _(e,t,o,n,l){n(),o.safely=function(e,t=!1){try{return e()}catch(e){if(function(e){const t=document.createElement(\"div\");t.style.backgroundColor=\"#f2dede\",t.style.border=\"1px solid #a94442\",t.style.borderRadius=\"4px\",t.style.display=\"inline-block\",t.style.fontFamily=\"sans-serif\",t.style.marginTop=\"5px\",t.style.minWidth=\"200px\",t.style.padding=\"5px 5px 5px 10px\",t.classList.add(\"bokeh-error-box-into-flames\");const o=document.createElement(\"span\");o.style.backgroundColor=\"#a94442\",o.style.borderRadius=\"0px 4px 0px 0px\",o.style.color=\"white\",o.style.cursor=\"pointer\",o.style.cssFloat=\"right\",o.style.fontSize=\"0.8em\",o.style.margin=\"-6px -6px 0px 0px\",o.style.padding=\"2px 5px 4px 5px\",o.title=\"close\",o.setAttribute(\"aria-label\",\"close\"),o.appendChild(document.createTextNode(\"x\")),o.addEventListener(\"click\",(()=>s.removeChild(t)));const n=document.createElement(\"h3\");n.style.color=\"#a94442\",n.style.margin=\"8px 0px 0px 0px\",n.style.padding=\"0px\",n.appendChild(document.createTextNode(\"Bokeh Error\"));const l=document.createElement(\"pre\");l.style.whiteSpace=\"unset\",l.style.overflowX=\"auto\",l.appendChild(document.createTextNode(e)),t.appendChild(o),t.appendChild(n),t.appendChild(l);const s=document.getElementsByTagName(\"body\")[0];s.insertBefore(t,s.firstChild)}(e instanceof Error&&e.stack?e.stack:`${e}`),t)return;throw e}}},\n ], 0, {\"main\":0,\"tslib\":1,\"index\":2,\"version\":3,\"embed/index\":4,\"document/index\":5,\"document/document\":6,\"base\":7,\"core/util/types\":8,\"core/util/array\":9,\"core/util/math\":10,\"core/util/assert\":11,\"core/util/arrayable\":12,\"core/util/object\":13,\"core/has_props\":14,\"core/signaling\":15,\"core/util/defer\":16,\"core/util/refs\":17,\"core/properties\":18,\"core/logging\":19,\"core/enums\":20,\"core/kinds\":21,\"core/util/color\":22,\"core/util/svg_colors\":23,\"core/types\":24,\"core/util/bitset\":25,\"core/util/eq\":26,\"core/util/platform\":27,\"core/settings\":28,\"core/util/ndarray\":29,\"core/serializer\":30,\"core/util/serialization\":31,\"core/util/buffer\":32,\"core/uniforms\":33,\"core/util/string\":34,\"document/events\":35,\"core/util/pretty\":36,\"core/util/cloneable\":37,\"models/index\":38,\"models/annotations/index\":39,\"models/annotations/annotation\":40,\"models/renderers/renderer\":41,\"core/view\":42,\"core/dom\":43,\"styles/root.css\":44,\"core/visuals/index\":45,\"core/visuals/line\":46,\"core/visuals/visual\":47,\"core/property_mixins\":48,\"core/visuals/fill\":49,\"core/visuals/text\":50,\"core/visuals/hatch\":51,\"core/visuals/patterns\":52,\"model\":53,\"models/canvas/coordinates\":54,\"models/scales/scale\":55,\"models/transforms/transform\":56,\"models/ranges/range\":57,\"models/ranges/range1d\":58,\"models/scales/linear_scale\":59,\"models/scales/continuous_scale\":60,\"models/scales/log_scale\":61,\"models/scales/categorical_scale\":62,\"models/ranges/data_range1d\":63,\"models/ranges/data_range\":64,\"core/util/bbox\":65,\"models/util\":66,\"models/ranges/factor_range\":67,\"models/annotations/arrow\":68,\"models/annotations/data_annotation\":69,\"models/sources/columnar_data_source\":70,\"models/sources/data_source\":71,\"models/selections/selection\":72,\"core/selection_manager\":73,\"models/selections/interaction_policy\":74,\"models/sources/column_data_source\":75,\"core/util/typed_array\":76,\"core/util/set\":77,\"core/util/projections\":78,\"models/annotations/arrow_head\":112,\"core/build_views\":113,\"models/annotations/band\":114,\"models/annotations/upper_lower\":115,\"models/annotations/box_annotation\":116,\"models/annotations/color_bar\":117,\"models/annotations/title\":118,\"models/annotations/text_annotation\":119,\"core/graphics\":120,\"core/util/text\":121,\"core/util/affine\":122,\"core/layout/side_panel\":123,\"core/layout/types\":124,\"core/layout/layoutable\":125,\"models/canvas/cartesian_frame\":126,\"models/axes/index\":127,\"models/axes/axis\":128,\"models/renderers/guide_renderer\":129,\"models/tickers/ticker\":130,\"models/formatters/tick_formatter\":131,\"models/policies/labeling\":132,\"models/text/base_text\":133,\"models/text/utils\":134,\"models/text/math_text\":135,\"core/util/image\":136,\"models/text/providers\":137,\"core/util/modules\":138,\"models/text/plain_text\":139,\"models/axes/categorical_axis\":140,\"models/tickers/categorical_ticker\":141,\"models/formatters/categorical_tick_formatter\":142,\"models/axes/continuous_axis\":143,\"models/axes/datetime_axis\":144,\"models/axes/linear_axis\":145,\"models/formatters/basic_tick_formatter\":146,\"models/tickers/basic_ticker\":147,\"models/tickers/adaptive_ticker\":148,\"models/tickers/continuous_ticker\":149,\"models/formatters/datetime_tick_formatter\":150,\"core/util/templating\":152,\"models/tickers/datetime_ticker\":155,\"models/tickers/composite_ticker\":156,\"models/tickers/days_ticker\":157,\"models/tickers/single_interval_ticker\":158,\"models/tickers/util\":159,\"models/tickers/months_ticker\":160,\"models/tickers/years_ticker\":161,\"models/axes/log_axis\":162,\"models/formatters/log_tick_formatter\":163,\"models/tickers/log_ticker\":164,\"models/axes/mercator_axis\":165,\"models/formatters/mercator_tick_formatter\":166,\"models/tickers/mercator_ticker\":167,\"models/tickers/index\":168,\"models/tickers/fixed_ticker\":169,\"models/tickers/binned_ticker\":170,\"models/mappers/scanning_color_mapper\":171,\"models/mappers/continuous_color_mapper\":172,\"models/mappers/color_mapper\":173,\"models/mappers/mapper\":174,\"models/renderers/glyph_renderer\":175,\"models/renderers/data_renderer\":176,\"models/glyphs/line\":177,\"models/glyphs/xy_glyph\":178,\"models/glyphs/glyph\":179,\"core/util/ragged_array\":180,\"core/util/spatial\":181,\"models/glyphs/utils\":184,\"core/hittest\":185,\"models/glyphs/patch\":186,\"models/glyphs/harea\":187,\"models/glyphs/area\":188,\"models/glyphs/varea\":189,\"models/sources/cds_view\":190,\"models/filters/filter\":191,\"models/formatters/index\":192,\"models/formatters/func_tick_formatter\":193,\"models/formatters/numeral_tick_formatter\":194,\"models/formatters/printf_tick_formatter\":195,\"models/mappers/index\":196,\"models/mappers/categorical_color_mapper\":197,\"models/mappers/categorical_mapper\":198,\"models/mappers/categorical_marker_mapper\":199,\"models/mappers/categorical_pattern_mapper\":200,\"models/mappers/linear_color_mapper\":201,\"models/mappers/log_color_mapper\":202,\"models/mappers/eqhist_color_mapper\":203,\"models/scales/index\":204,\"models/scales/linear_interpolation_scale\":205,\"models/ranges/index\":206,\"core/layout/index\":207,\"core/layout/alignments\":208,\"core/layout/grid\":209,\"core/layout/html\":210,\"core/layout/border\":211,\"models/annotations/label\":212,\"models/annotations/label_set\":213,\"models/annotations/legend\":214,\"models/annotations/legend_item\":215,\"core/vectorization\":216,\"models/annotations/poly_annotation\":217,\"models/annotations/slope\":218,\"models/annotations/span\":219,\"models/annotations/toolbar_panel\":220,\"models/tools/toolbar\":221,\"models/tools/tool\":222,\"models/tools/gestures/gesture_tool\":223,\"models/tools/button_tool\":224,\"core/dom_view\":226,\"styles/toolbar.css\":227,\"styles/icons.css\":228,\"styles/menus.css\":229,\"core/util/menus\":230,\"models/tools/on_off_button\":231,\"models/tools/inspectors/inspect_tool\":232,\"models/tools/toolbar_base\":233,\"core/util/iterator\":234,\"core/util/canvas\":235,\"core/util/svg\":236,\"core/util/random\":237,\"models/tools/actions/action_tool\":238,\"models/tools/actions/help_tool\":239,\"styles/logo.css\":240,\"models/annotations/tooltip\":241,\"styles/tooltips.css\":242,\"models/annotations/whisker\":243,\"models/callbacks/index\":244,\"models/callbacks/customjs\":245,\"models/callbacks/callback\":246,\"models/callbacks/open_url\":247,\"models/canvas/index\":248,\"models/canvas/canvas\":249,\"core/ui_events\":250,\"core/bokeh_events\":251,\"core/util/wheel\":252,\"models/expressions/index\":253,\"models/expressions/expression\":254,\"models/expressions/customjs_expr\":255,\"models/expressions/stack\":256,\"models/expressions/cumsum\":257,\"models/expressions/minimum\":258,\"models/expressions/maximum\":259,\"models/expressions/coordinate_transform\":260,\"models/expressions/polar\":261,\"models/filters/index\":262,\"models/filters/boolean_filter\":263,\"models/filters/customjs_filter\":264,\"models/filters/group_filter\":265,\"models/filters/index_filter\":266,\"models/glyphs/index\":267,\"models/glyphs/annular_wedge\":268,\"models/glyphs/annulus\":269,\"models/glyphs/arc\":270,\"models/glyphs/bezier\":271,\"models/glyphs/circle\":272,\"models/glyphs/ellipse\":273,\"models/glyphs/ellipse_oval\":274,\"models/glyphs/center_rotatable\":275,\"models/glyphs/hbar\":276,\"models/glyphs/box\":277,\"models/glyphs/hex_tile\":278,\"models/glyphs/image\":279,\"models/glyphs/image_base\":280,\"models/glyphs/image_rgba\":281,\"models/glyphs/image_url\":282,\"models/glyphs/multi_line\":283,\"models/glyphs/multi_polygons\":284,\"models/glyphs/oval\":285,\"models/glyphs/patches\":286,\"models/glyphs/quad\":287,\"models/glyphs/quadratic\":288,\"models/glyphs/ray\":289,\"models/glyphs/rect\":290,\"models/glyphs/scatter\":291,\"models/glyphs/marker\":292,\"models/glyphs/defs\":293,\"models/glyphs/segment\":294,\"models/glyphs/spline\":295,\"core/util/interpolation\":296,\"models/glyphs/step\":297,\"models/glyphs/text\":298,\"models/glyphs/vbar\":299,\"models/glyphs/wedge\":300,\"models/graphs/index\":301,\"models/graphs/graph_hit_test_policy\":302,\"models/graphs/layout_provider\":303,\"models/graphs/static_layout_provider\":304,\"models/grids/index\":305,\"models/grids/grid\":306,\"models/layouts/index\":307,\"models/layouts/box\":308,\"models/layouts/layout_dom\":309,\"models/layouts/column\":310,\"models/layouts/grid_box\":311,\"models/layouts/html_box\":312,\"models/layouts/panel\":313,\"models/layouts/row\":314,\"models/layouts/spacer\":315,\"models/layouts/tabs\":316,\"styles/tabs.css\":317,\"styles/buttons.css\":318,\"models/layouts/widget_box\":319,\"models/text/index\":320,\"models/transforms/index\":321,\"models/transforms/customjs_transform\":322,\"models/transforms/dodge\":323,\"models/transforms/range_transform\":324,\"models/transforms/interpolator\":325,\"models/transforms/jitter\":326,\"models/transforms/linear_interpolator\":327,\"models/transforms/step_interpolator\":328,\"models/plots/index\":329,\"models/plots/gmap_plot\":330,\"models/plots/plot\":331,\"models/plots/plot_canvas\":332,\"core/util/throttle\":333,\"models/plots/range_manager\":334,\"models/plots/state_manager\":335,\"models/plots/gmap_plot_canvas\":336,\"models/policies/index\":337,\"models/renderers/index\":338,\"models/renderers/graph_renderer\":339,\"models/selections/index\":340,\"models/sources/index\":341,\"models/sources/server_sent_data_source\":342,\"models/sources/web_data_source\":343,\"models/sources/ajax_data_source\":344,\"models/sources/geojson_data_source\":345,\"models/tiles/index\":346,\"models/tiles/bbox_tile_source\":347,\"models/tiles/mercator_tile_source\":348,\"models/tiles/tile_source\":349,\"models/tiles/tile_utils\":350,\"models/tiles/quadkey_tile_source\":351,\"models/tiles/tile_renderer\":352,\"models/tiles/wmts_tile_source\":353,\"styles/tiles.css\":354,\"models/tiles/tms_tile_source\":355,\"models/textures/index\":356,\"models/textures/canvas_texture\":357,\"models/textures/texture\":358,\"models/textures/image_url_texture\":359,\"models/tools/index\":360,\"models/tools/actions/custom_action\":361,\"models/tools/actions/redo_tool\":362,\"models/tools/actions/reset_tool\":363,\"models/tools/actions/save_tool\":364,\"models/tools/actions/undo_tool\":365,\"models/tools/actions/zoom_in_tool\":366,\"models/tools/actions/zoom_base_tool\":367,\"core/util/zoom\":368,\"models/tools/actions/zoom_out_tool\":369,\"models/tools/edit/edit_tool\":370,\"models/tools/edit/box_edit_tool\":371,\"models/tools/edit/freehand_draw_tool\":372,\"models/tools/edit/point_draw_tool\":373,\"models/tools/edit/poly_draw_tool\":374,\"models/tools/edit/poly_tool\":375,\"models/tools/edit/poly_edit_tool\":376,\"models/tools/gestures/box_select_tool\":377,\"models/tools/gestures/select_tool\":378,\"models/tools/gestures/box_zoom_tool\":379,\"models/tools/gestures/lasso_select_tool\":380,\"models/tools/gestures/poly_select_tool\":381,\"models/tools/edit/line_edit_tool\":382,\"models/tools/edit/line_tool\":383,\"models/tools/gestures/pan_tool\":384,\"models/tools/gestures/range_tool\":385,\"models/tools/gestures/tap_tool\":386,\"models/tools/gestures/wheel_pan_tool\":387,\"models/tools/gestures/wheel_zoom_tool\":388,\"models/tools/inspectors/crosshair_tool\":389,\"models/tools/inspectors/customjs_hover\":390,\"models/tools/inspectors/hover_tool\":391,\"models/dom/index\":392,\"models/dom/styles\":393,\"models/tools/tool_proxy\":394,\"models/tools/toolbar_box\":395,\"document/defs\":396,\"embed/standalone\":397,\"embed/dom\":398,\"embed/server\":399,\"client/connection\":400,\"protocol/message\":401,\"protocol/receiver\":402,\"client/session\":403,\"embed/notebook\":404,\"styles/notebook.css\":405,\"protocol/index\":406,\"testing\":407,\"safely\":408}, {});});\n\n /* END bokeh.min.js */\n },\n function(Bokeh) {\n /* BEGIN bokeh-gl.min.js */\n /*!\n * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n * \n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * Neither the name of Anaconda nor the names of any contributors\n * may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\n (function(root, factory) {\n factory(root[\"Bokeh\"], \"2.4.3\");\n })(this, function(Bokeh, version) {\n let define;\n return (function(modules, entry, aliases, externals) {\n const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n if (bokeh != null) {\n return bokeh.register_plugin(modules, entry, aliases);\n } else {\n throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n }\n })\n ({\n 409: function _(n,c,f,i,o){i(),n(410)},\n 410: function _(t,_,r,e,o){e();const a=t(1);o(\"get_regl\",t(411).get_regl),(0,a.__exportStar)(t(419),r),(0,a.__exportStar)(t(423),r),(0,a.__exportStar)(t(425),r),(0,a.__exportStar)(t(426),r),(0,a.__exportStar)(t(427),r),(0,a.__exportStar)(t(428),r),(0,a.__exportStar)(t(429),r),(0,a.__exportStar)(t(424),r)},\n 411: function _(t,i,e,_,a){_();const r=t(1),o=(0,r.__importDefault)(t(412)),n=t(413),s=(0,r.__importDefault)(t(415)),l=(0,r.__importDefault)(t(416)),p=(0,r.__importDefault)(t(417)),h=(0,r.__importDefault)(t(418));let c;e.get_regl=function(t){return null==c&&(c=new u(t)),c};class u{constructor(t){try{this._regl=(0,o.default)({gl:t,extensions:[\"ANGLE_instanced_arrays\",\"EXT_blend_minmax\"]}),this._regl_available=!0,this._line_geometry=this._regl.buffer({usage:\"static\",type:\"float\",data:[[-2,0],[-1,-1],[1,-1],[2,0],[1,1],[-1,1]]}),this._line_triangles=this._regl.elements({usage:\"static\",primitive:\"triangles\",data:[[0,1,5],[1,2,5],[5,2,4],[2,3,4]]})}catch(t){this._regl_available=!1}}buffer(t){return this._regl.buffer(t)}clear(t,i){this._viewport={x:0,y:0,width:t,height:i},this._regl.clear({color:[0,0,0,0]})}get has_webgl(){return this._regl_available}get scissor(){return this._scissor}set_scissor(t,i,e,_){this._scissor={x:t,y:i,width:e,height:_}}get viewport(){return this._viewport}dashed_line(){return null==this._dashed_line&&(this._dashed_line=function(t,i,e){const _={vert:`#define DASHED\\n\\n${s.default}`,frag:`#define DASHED\\n\\n${l.default}`,attributes:{a_position:{buffer:i,divisor:0},a_point_prev:(t,i)=>i.points.to_attribute_config(),a_point_start:(t,i)=>i.points.to_attribute_config(2*Float32Array.BYTES_PER_ELEMENT),a_point_end:(t,i)=>i.points.to_attribute_config(4*Float32Array.BYTES_PER_ELEMENT),a_point_next:(t,i)=>i.points.to_attribute_config(6*Float32Array.BYTES_PER_ELEMENT),a_show_prev:(t,i)=>i.show.to_attribute_config(),a_show_curr:(t,i)=>i.show.to_attribute_config(Uint8Array.BYTES_PER_ELEMENT),a_show_next:(t,i)=>i.show.to_attribute_config(2*Uint8Array.BYTES_PER_ELEMENT),a_length_so_far:(t,i)=>i.length_so_far.to_attribute_config()},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_line_color:t.prop(\"line_color\"),u_linewidth:t.prop(\"linewidth\"),u_miter_limit:t.prop(\"miter_limit\"),u_line_join:t.prop(\"line_join\"),u_line_cap:t.prop(\"line_cap\"),u_dash_tex:t.prop(\"dash_tex\"),u_dash_tex_info:t.prop(\"dash_tex_info\"),u_dash_scale:t.prop(\"dash_scale\"),u_dash_offset:t.prop(\"dash_offset\")},elements:e,instances:t.prop(\"nsegments\"),blend:{enable:!0,equation:\"max\",func:{srcRGB:1,srcAlpha:1,dstRGB:1,dstAlpha:1}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(_)}(this._regl,this._line_geometry,this._line_triangles)),this._dashed_line}get_dash(t){return null==this._dash_cache&&(this._dash_cache=new n.DashCache(this._regl)),this._dash_cache.get(t)}marker_no_hatch(t){null==this._marker_no_hatch_map&&(this._marker_no_hatch_map=new Map);let i=this._marker_no_hatch_map.get(t);return null==i&&(i=function(t,i){const e={vert:p.default,frag:`#define USE_${i.toUpperCase()}\\n${h.default}`,attributes:{a_position:{buffer:t.buffer([[-.5,-.5],[-.5,.5],[.5,.5],[.5,-.5]]),divisor:0},a_center:(t,i)=>i.center.to_attribute_config(),a_width:(t,i)=>i.width.to_attribute_config(),a_height:(t,i)=>i.height.to_attribute_config(),a_angle:(t,i)=>i.angle.to_attribute_config(),a_linewidth:(t,i)=>i.linewidth.to_attribute_config(),a_line_color:(t,i)=>i.line_color.to_attribute_config(),a_fill_color:(t,i)=>i.fill_color.to_attribute_config(),a_line_cap:(t,i)=>i.line_cap.to_attribute_config(),a_line_join:(t,i)=>i.line_join.to_attribute_config(),a_show:(t,i)=>i.show.to_attribute_config()},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_size_hint:t.prop(\"size_hint\")},count:4,primitive:\"triangle fan\",instances:t.prop(\"nmarkers\"),blend:{enable:!0,func:{srcRGB:\"one\",srcAlpha:\"one\",dstRGB:\"one minus src alpha\",dstAlpha:\"one minus src alpha\"}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(e)}(this._regl,t),this._marker_no_hatch_map.set(t,i)),i}marker_hatch(t){null==this._marker_hatch_map&&(this._marker_hatch_map=new Map);let i=this._marker_hatch_map.get(t);return null==i&&(i=function(t,i){const e={vert:`#define HATCH\\n${p.default}`,frag:`#define USE_${i.toUpperCase()}\\n#define HATCH\\n${h.default}`,attributes:{a_position:{buffer:t.buffer([[-.5,-.5],[-.5,.5],[.5,.5],[.5,-.5]]),divisor:0},a_center:(t,i)=>i.center.to_attribute_config(),a_width:(t,i)=>i.width.to_attribute_config(),a_height:(t,i)=>i.height.to_attribute_config(),a_angle:(t,i)=>i.angle.to_attribute_config(),a_linewidth:(t,i)=>i.linewidth.to_attribute_config(),a_line_color:(t,i)=>i.line_color.to_attribute_config(),a_fill_color:(t,i)=>i.fill_color.to_attribute_config(),a_line_cap:(t,i)=>i.line_cap.to_attribute_config(),a_line_join:(t,i)=>i.line_join.to_attribute_config(),a_show:(t,i)=>i.show.to_attribute_config(),a_hatch_pattern:(t,i)=>i.hatch_pattern.to_attribute_config(),a_hatch_scale:(t,i)=>i.hatch_scale.to_attribute_config(),a_hatch_weight:(t,i)=>i.hatch_weight.to_attribute_config(),a_hatch_color:(t,i)=>i.hatch_color.to_attribute_config()},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_size_hint:t.prop(\"size_hint\")},count:4,primitive:\"triangle fan\",instances:t.prop(\"nmarkers\"),blend:{enable:!0,func:{srcRGB:\"one\",srcAlpha:\"one\",dstRGB:\"one minus src alpha\",dstAlpha:\"one minus src alpha\"}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(e)}(this._regl,t),this._marker_hatch_map.set(t,i)),i}solid_line(){return null==this._solid_line&&(this._solid_line=function(t,i,e){const _={vert:s.default,frag:l.default,attributes:{a_position:{buffer:i,divisor:0},a_point_prev:(t,i)=>i.points.to_attribute_config(),a_point_start:(t,i)=>i.points.to_attribute_config(2*Float32Array.BYTES_PER_ELEMENT),a_point_end:(t,i)=>i.points.to_attribute_config(4*Float32Array.BYTES_PER_ELEMENT),a_point_next:(t,i)=>i.points.to_attribute_config(6*Float32Array.BYTES_PER_ELEMENT),a_show_prev:(t,i)=>i.show.to_attribute_config(),a_show_curr:(t,i)=>i.show.to_attribute_config(Uint8Array.BYTES_PER_ELEMENT),a_show_next:(t,i)=>i.show.to_attribute_config(2*Uint8Array.BYTES_PER_ELEMENT)},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_line_color:t.prop(\"line_color\"),u_linewidth:t.prop(\"linewidth\"),u_miter_limit:t.prop(\"miter_limit\"),u_line_join:t.prop(\"line_join\"),u_line_cap:t.prop(\"line_cap\")},elements:e,instances:t.prop(\"nsegments\"),blend:{enable:!0,equation:\"max\",func:{srcRGB:1,srcAlpha:1,dstRGB:1,dstAlpha:1}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(_)}(this._regl,this._line_geometry,this._line_triangles)),this._solid_line}}e.ReglWrapper=u,u.__name__=\"ReglWrapper\"},\n 412: function _(e,t,r,n,a){var i,o;i=this,o=function(){\"use strict\";var e=function(e){return e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Float32Array||e instanceof Float64Array||e instanceof Uint8ClampedArray},t=function(e,t){for(var r=Object.keys(t),n=0;n=0&&(0|e)===e||n(\"invalid parameter type, (\"+e+\")\"+i(t)+\". must be a nonnegative integer\")},oneOf:f,shaderError:function(e,t,n,i,o){if(!e.getShaderParameter(t,e.COMPILE_STATUS)){var f=e.getShaderInfoLog(t),u=i===e.FRAGMENT_SHADER?\"fragment\":\"vertex\";g(n,\"string\",u+\" shader source must be a string\",o);var c=h(n,o),l=function(e){var t=[];return e.split(\"\\n\").forEach((function(e){if(!(e.length<5)){var r=/^ERROR:\\s+(\\d+):(\\d+):\\s*(.*)$/.exec(e);r?t.push(new d(0|r[1],0|r[2],r[3].trim())):e.length>0&&t.push(new d(\"unknown\",0,e))}})),t}(f);!function(e,t){t.forEach((function(t){var r=e[t.file];if(r){var n=r.index[t.line];if(n)return n.errors.push(t),void(r.hasErrors=!0)}e.unknown.hasErrors=!0,e.unknown.lines[0].errors.push(t)}))}(c,l),Object.keys(c).forEach((function(e){var t=c[e];if(t.hasErrors){var n=[\"\"],a=[\"\"];i(\"file number \"+e+\": \"+t.name+\"\\n\",\"color:red;text-decoration:underline;font-weight:bold\"),t.lines.forEach((function(e){if(e.errors.length>0){i(s(e.number,4)+\"| \",\"background-color:yellow; font-weight:bold\"),i(e.line+r,\"color:red; background-color:yellow; font-weight:bold\");var t=0;e.errors.forEach((function(n){var a=n.message,o=/^\\s*'(.*)'\\s*:\\s*(.*)$/.exec(a);if(o){var f=o[1];a=o[2],\"assign\"===f&&(f=\"=\"),t=Math.max(e.line.indexOf(f,t),0)}else t=0;i(s(\"| \",6)),i(s(\"^^^\",t+3)+r,\"font-weight:bold\"),i(s(\"| \",6)),i(a+r,\"font-weight:bold\")})),i(s(\"| \",6)+r)}else i(s(e.number,4)+\"| \"),i(e.line+r,\"color:red\")})),\"undefined\"==typeof document||window.chrome?console.log(n.join(\"\")):(a[0]=n.join(\"%c\"),console.log.apply(console,a))}function i(e,t){n.push(e),a.push(t||\"\")}})),a.raise(\"Error compiling \"+u+\" shader, \"+c[0].name)}},linkError:function(e,t,n,i,o){if(!e.getProgramParameter(t,e.LINK_STATUS)){var f=e.getProgramInfoLog(t),u=h(n,o),s='Error linking program with vertex shader, \"'+h(i,o)[0].name+'\", and fragment shader \"'+u[0].name+'\"';\"undefined\"!=typeof document?console.log(\"%c\"+s+\"\\n%c\"+f,\"color:red;text-decoration:underline;font-weight:bold\",\"color:red\"):console.log(s+r+f),a.raise(s)}},callSite:p,saveCommandRef:b,saveDrawInfo:function(e,t,r,n){function a(e){return e?n.id(e):0}function i(e,t){Object.keys(t).forEach((function(t){e[n.id(t)]=!0}))}b(e),e._fragId=a(e.static.frag),e._vertId=a(e.static.vert);var o=e._uniformSet={};i(o,t.static),i(o,t.dynamic);var f=e._attributeSet={};i(f,r.static),i(f,r.dynamic),e._hasCount=\"count\"in e.static||\"count\"in e.dynamic||\"elements\"in e.static||\"elements\"in e.dynamic},framebufferFormat:function(e,t,r){e.texture?f(e.texture._texture.internalformat,t,\"unsupported texture format for attachment\"):f(e.renderbuffer._renderbuffer.format,r,\"unsupported renderbuffer format for attachment\")},guessCommand:m,texture2D:function(e,t,r){var n,i=t.width,o=t.height,f=t.channels;a(i>0&&i<=r.maxTextureSize&&o>0&&o<=r.maxTextureSize,\"invalid texture shape\"),e.wrapS===y&&e.wrapT===y||a(A(i)&&A(o),\"incompatible wrap mode for texture, both width and height must be power of 2\"),1===t.mipmask?1!==i&&1!==o&&a(9984!==e.minFilter&&9986!==e.minFilter&&9985!==e.minFilter&&9987!==e.minFilter,\"min filter requires mipmap\"):(a(A(i)&&A(o),\"texture must be a square power of 2 to support mipmapping\"),a(t.mipmask===(i<<1)-1,\"missing or incomplete mipmap data\")),5126===t.type&&(r.extensions.indexOf(\"oes_texture_float_linear\")<0&&a(9728===e.minFilter&&9728===e.magFilter,\"filter not supported, must enable oes_texture_float_linear\"),a(!e.genMipmaps,\"mipmap generation not supported with float textures\"));var u=t.images;for(n=0;n<16;++n)if(u[n]){var s=i>>n,c=o>>n;a(t.mipmask&1<0&&i<=n.maxTextureSize&&o>0&&o<=n.maxTextureSize,\"invalid texture shape\"),a(i===o,\"cube map must be square\"),a(t.wrapS===y&&t.wrapT===y,\"wrap mode not supported by cube map\");for(var u=0;u>l,p=o>>l;a(s.mipmask&1<1&&t===r&&('\"'===t||\"'\"===t))return['\"'+O(e.substr(1,e.length-2))+'\"'];var n=/\\[(false|true|null|\\d+|'[^']*'|\"[^\"]*\")\\]/.exec(e);if(n)return E(e.substr(0,n.index)).concat(E(n[1])).concat(E(e.substr(n.index+n[0].length)));var a=e.split(\".\");if(1===a.length)return['\"'+O(e)+'\"'];for(var i=[],o=0;o0,\"invalid pixel ratio\"))):_.raise(\"invalid arguments to regl\"),r&&(\"canvas\"===r.nodeName.toLowerCase()?a=r:n=r),!i){if(!a){_(\"undefined\"!=typeof document,\"must manually specify webgl context outside of DOM environments\");var h=function(e,r,n){var a,i=document.createElement(\"canvas\");function o(){var t=window.innerWidth,r=window.innerHeight;if(e!==document.body){var a=i.getBoundingClientRect();t=a.right-a.left,r=a.bottom-a.top}i.width=n*t,i.height=n*r}return t(i.style,{border:0,margin:0,padding:0,top:0,left:0,width:\"100%\",height:\"100%\"}),e.appendChild(i),e===document.body&&(i.style.position=\"absolute\",t(e.style,{margin:0,padding:0})),e!==document.body&&\"function\"==typeof ResizeObserver?(a=new ResizeObserver((function(){setTimeout(o)}))).observe(e):window.addEventListener(\"resize\",o,!1),o(),{canvas:i,onDestroy:function(){a?a.disconnect():window.removeEventListener(\"resize\",o),e.removeChild(i)}}}(n||document.body,0,l);if(!h)return null;a=h.canvas,p=h.onDestroy}void 0===u.premultipliedAlpha&&(u.premultipliedAlpha=!0),i=function(e,t){function r(r){try{return e.getContext(r,t)}catch(e){return null}}return r(\"webgl\")||r(\"experimental-webgl\")||r(\"webgl-experimental\")}(a,u)}return i?{gl:i,canvas:a,container:n,extensions:s,optionalExtensions:c,pixelRatio:l,profile:d,onDone:m,onDestroy:p}:(p(),m(\"webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org\"),null)}function V(e,t){for(var r=Array(e),n=0;n65535)<<4,t|=r=((e>>>=t)>255)<<3,t|=r=((e>>>=r)>15)<<2,(t|=r=((e>>>=r)>3)<<1)|(e>>>=r)>>1}function P(){var e=V(8,(function(){return[]}));function t(t){var r=function(e){for(var t=16;t<=1<<28;t*=16)if(e<=t)return t;return 0}(t),n=e[I(r)>>2];return n.length>0?n.pop():new ArrayBuffer(r)}function r(t){e[I(t.byteLength)>>2].push(t)}return{alloc:t,free:r,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(e){r(e.buffer)}}}var L=P();L.zero=P();var R=3553,M=6408,W=5126,U=36160;function G(t){return!!t&&\"object\"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&\"number\"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||e(t.data))}var H=function(e){return Object.keys(e).map((function(t){return e[t]}))},N={shape:function(e){for(var t=[],r=e;r.length;r=r[0])t.push(r.length);return t},flatten:function(e,t,r,n){var a=1;if(t.length)for(var i=0;i>>31<<15,i=(n<<1>>>24)-127,o=n>>13&1023;if(i<-24)t[r]=a;else if(i<-14){var f=-14-i;t[r]=a+(o+1024>>f)}else t[r]=i>15?a+31744:a+(i+15<<10)+o}return t}function me(t){return Array.isArray(t)||e(t)}var pe=function(e){return!(e&e-1||!e)},he=3553,be=34067,ve=34069,ge=6408,ye=6406,xe=6407,we=6409,Ae=6410,_e=32855,ke=6402,Se=34041,Oe=35904,Ee=35906,Te=36193,De=33776,je=33777,Ce=33778,ze=33779,Fe=5121,Be=5123,Ve=5125,Ie=5126,Pe=33071,Le=9728,Re=9984,Me=9987,We=4352,Ue=33984,Ge=[Re,9986,9985,Me],He=[0,we,Ae,xe,ge],Ne={};function qe(e){return\"[object \"+e+\"]\"}Ne[6409]=Ne[6406]=Ne[6402]=1,Ne[34041]=Ne[6410]=2,Ne[6407]=Ne[35904]=3,Ne[6408]=Ne[35906]=4;var Qe=qe(\"HTMLCanvasElement\"),Ye=qe(\"OffscreenCanvas\"),Xe=qe(\"CanvasRenderingContext2D\"),$e=qe(\"ImageBitmap\"),Ke=qe(\"HTMLImageElement\"),Je=qe(\"HTMLVideoElement\"),Ze=Object.keys(Y).concat([Qe,Ye,Xe,$e,Ke,Je]),et=[];et[5121]=1,et[5126]=4,et[36193]=2,et[5123]=2,et[5125]=4;var tt=[];function rt(e){return Array.isArray(e)&&(0===e.length||\"number\"==typeof e[0])}function nt(e){return!!Array.isArray(e)&&!(0===e.length||!me(e[0]))}function at(e){return Object.prototype.toString.call(e)}function it(e){return at(e)===Qe}function ot(e){return at(e)===Ye}function ft(e){if(!e)return!1;var t=at(e);return Ze.indexOf(t)>=0||rt(e)||nt(e)||G(e)}function ut(e){return 0|Y[Object.prototype.toString.call(e)]}function st(e,t){return L.allocType(e.type===Te?Ie:e.type,t)}function ct(e,t){e.type===Te?(e.data=de(t),L.freeType(t)):e.data=t}function lt(e,t,r,n,a,i){var o;if(o=void 0!==tt[e]?tt[e]:Ne[e]*et[t],i&&(o*=6),a){for(var f=0,u=r;u>=1;)f+=o*u*u,u/=2;return f}return o*r*n}function dt(r,n,a,i,o,f,u){var s={\"don't care\":We,\"dont care\":We,nice:4354,fast:4353},c={repeat:10497,clamp:Pe,mirror:33648},l={nearest:Le,linear:9729},d=t({mipmap:Me,\"nearest mipmap nearest\":Re,\"linear mipmap nearest\":9985,\"nearest mipmap linear\":9986,\"linear mipmap linear\":Me},l),m={none:0,browser:37444},p={uint8:Fe,rgba4:32819,rgb565:33635,\"rgb5 a1\":32820},h={alpha:ye,luminance:we,\"luminance alpha\":Ae,rgb:xe,rgba:ge,rgba4:32854,\"rgb5 a1\":_e,rgb565:36194},b={};n.ext_srgb&&(h.srgb=Oe,h.srgba=Ee),n.oes_texture_float&&(p.float32=p.float=Ie),n.oes_texture_half_float&&(p.float16=p[\"half float\"]=Te),n.webgl_depth_texture&&(t(h,{depth:ke,\"depth stencil\":Se}),t(p,{uint16:Be,uint32:Ve,\"depth stencil\":34042})),n.webgl_compressed_texture_s3tc&&t(b,{\"rgb s3tc dxt1\":De,\"rgba s3tc dxt1\":je,\"rgba s3tc dxt3\":Ce,\"rgba s3tc dxt5\":ze}),n.webgl_compressed_texture_atc&&t(b,{\"rgb atc\":35986,\"rgba atc explicit alpha\":35987,\"rgba atc interpolated alpha\":34798}),n.webgl_compressed_texture_pvrtc&&t(b,{\"rgb pvrtc 4bppv1\":35840,\"rgb pvrtc 2bppv1\":35841,\"rgba pvrtc 4bppv1\":35842,\"rgba pvrtc 2bppv1\":35843}),n.webgl_compressed_texture_etc1&&(b[\"rgb etc1\"]=36196);var v=Array.prototype.slice.call(r.getParameter(34467));Object.keys(b).forEach((function(e){var t=b[e];v.indexOf(t)>=0&&(h[e]=t)}));var g=Object.keys(h);a.textureFormats=g;var y=[];Object.keys(h).forEach((function(e){var t=h[e];y[t]=e}));var x=[];Object.keys(p).forEach((function(e){var t=p[e];x[t]=e}));var w=[];Object.keys(l).forEach((function(e){w[l[e]]=e}));var A=[];Object.keys(d).forEach((function(e){var t=d[e];A[t]=e}));var k=[];Object.keys(c).forEach((function(e){k[c[e]]=e}));var S=g.reduce((function(e,t){var r=h[t];return r===we||r===ye||r===we||r===Ae||r===ke||r===Se||n.ext_srgb&&(r===Oe||r===Ee)?e[r]=r:r===_e||t.indexOf(\"rgba\")>=0?e[r]=ge:e[r]=xe,e}),{});function O(){this.internalformat=ge,this.format=ge,this.type=Fe,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=37444,this.width=0,this.height=0,this.channels=0}function E(e,t){e.internalformat=t.internalformat,e.format=t.format,e.type=t.type,e.compressed=t.compressed,e.premultiplyAlpha=t.premultiplyAlpha,e.flipY=t.flipY,e.unpackAlignment=t.unpackAlignment,e.colorSpace=t.colorSpace,e.width=t.width,e.height=t.height,e.channels=t.channels}function T(e,t){if(\"object\"==typeof t&&t){if(\"premultiplyAlpha\"in t&&(_.type(t.premultiplyAlpha,\"boolean\",\"invalid premultiplyAlpha\"),e.premultiplyAlpha=t.premultiplyAlpha),\"flipY\"in t&&(_.type(t.flipY,\"boolean\",\"invalid texture flip\"),e.flipY=t.flipY),\"alignment\"in t&&(_.oneOf(t.alignment,[1,2,4,8],\"invalid texture unpack alignment\"),e.unpackAlignment=t.alignment),\"colorSpace\"in t&&(_.parameter(t.colorSpace,m,\"invalid colorSpace\"),e.colorSpace=m[t.colorSpace]),\"type\"in t){var r=t.type;_(n.oes_texture_float||!(\"float\"===r||\"float32\"===r),\"you must enable the OES_texture_float extension in order to use floating point textures.\"),_(n.oes_texture_half_float||!(\"half float\"===r||\"float16\"===r),\"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures.\"),_(n.webgl_depth_texture||!(\"uint16\"===r||\"uint32\"===r||\"depth stencil\"===r),\"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.\"),_.parameter(r,p,\"invalid texture type\"),e.type=p[r]}var i=e.width,o=e.height,f=e.channels,u=!1;\"shape\"in t?(_(Array.isArray(t.shape)&&t.shape.length>=2,\"shape must be an array\"),i=t.shape[0],o=t.shape[1],3===t.shape.length&&(f=t.shape[2],_(f>0&&f<=4,\"invalid number of channels\"),u=!0),_(i>=0&&i<=a.maxTextureSize,\"invalid width\"),_(o>=0&&o<=a.maxTextureSize,\"invalid height\")):(\"radius\"in t&&(i=o=t.radius,_(i>=0&&i<=a.maxTextureSize,\"invalid radius\")),\"width\"in t&&(i=t.width,_(i>=0&&i<=a.maxTextureSize,\"invalid width\")),\"height\"in t&&(o=t.height,_(o>=0&&o<=a.maxTextureSize,\"invalid height\")),\"channels\"in t&&(f=t.channels,_(f>0&&f<=4,\"invalid number of channels\"),u=!0)),e.width=0|i,e.height=0|o,e.channels=0|f;var s=!1;if(\"format\"in t){var c=t.format;_(n.webgl_depth_texture||!(\"depth\"===c||\"depth stencil\"===c),\"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.\"),_.parameter(c,h,\"invalid texture format\");var l=e.internalformat=h[c];e.format=S[l],c in p&&(\"type\"in t||(e.type=p[c])),c in b&&(e.compressed=!0),s=!0}!u&&s?e.channels=Ne[e.format]:u&&!s?e.channels!==He[e.format]&&(e.format=e.internalformat=He[e.channels]):s&&u&&_(e.channels===Ne[e.format],\"number of channels inconsistent with specified format\")}}function D(e){r.pixelStorei(37440,e.flipY),r.pixelStorei(37441,e.premultiplyAlpha),r.pixelStorei(37443,e.colorSpace),r.pixelStorei(3317,e.unpackAlignment)}function j(){O.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function C(t,r){var n=null;if(ft(r)?n=r:r&&(_.type(r,\"object\",\"invalid pixel data type\"),T(t,r),\"x\"in r&&(t.xOffset=0|r.x),\"y\"in r&&(t.yOffset=0|r.y),ft(r.data)&&(n=r.data)),_(!t.compressed||n instanceof Uint8Array,\"compressed texture data must be stored in a uint8array\"),r.copy){_(!n,\"can not specify copy and data field for the same texture\");var i=o.viewportWidth,f=o.viewportHeight;t.width=t.width||i-t.xOffset,t.height=t.height||f-t.yOffset,t.needsCopy=!0,_(t.xOffset>=0&&t.xOffset=0&&t.yOffset0&&t.width<=i&&t.height>0&&t.height<=f,\"copy texture read out of bounds\")}else if(n){if(e(n))t.channels=t.channels||4,t.data=n,\"type\"in r||t.type!==Fe||(t.type=ut(n));else if(rt(n))t.channels=t.channels||4,function(e,t){var r=t.length;switch(e.type){case Fe:case Be:case Ve:case Ie:var n=L.allocType(e.type,r);n.set(t),e.data=n;break;case Te:e.data=de(t);break;default:_.raise(\"unsupported texture type, must specify a typed array\")}}(t,n),t.alignment=1,t.needsFree=!0;else if(G(n)){var u=n.data;Array.isArray(u)||t.type!==Fe||(t.type=ut(u));var s,c,l,d,m,p,h=n.shape,b=n.stride;3===h.length?(l=h[2],p=b[2]):(_(2===h.length,\"invalid ndarray pixel data, must be 2 or 3D\"),l=1,p=1),s=h[0],c=h[1],d=b[0],m=b[1],t.alignment=1,t.width=s,t.height=c,t.channels=l,t.format=t.internalformat=He[l],t.needsFree=!0,function(e,t,r,n,a,i){for(var o=e.width,f=e.height,u=e.channels,s=st(e,o*f*u),c=0,l=0;l=0,\"oes_texture_float extension not enabled\"):t.type===Te&&_(a.extensions.indexOf(\"oes_texture_half_float\")>=0,\"oes_texture_half_float extension not enabled\")}function z(e,t,n){var a=e.element,o=e.data,f=e.internalformat,u=e.format,s=e.type,c=e.width,l=e.height;D(e),a?r.texImage2D(t,n,u,u,s,a):e.compressed?r.compressedTexImage2D(t,n,f,c,l,0,o):e.needsCopy?(i(),r.copyTexImage2D(t,n,u,e.xOffset,e.yOffset,c,l,0)):r.texImage2D(t,n,u,c,l,0,u,s,o||null)}function F(e,t,n,a,o){var f=e.element,u=e.data,s=e.internalformat,c=e.format,l=e.type,d=e.width,m=e.height;D(e),f?r.texSubImage2D(t,o,n,a,c,l,f):e.compressed?r.compressedTexSubImage2D(t,o,n,a,s,d,m,u):e.needsCopy?(i(),r.copyTexSubImage2D(t,o,n,a,e.xOffset,e.yOffset,d,m)):r.texSubImage2D(t,o,n,a,d,m,c,l,u)}var B=[];function V(){return B.pop()||new j}function I(e){e.needsFree&&L.freeType(e.data),j.call(e),B.push(e)}function P(){O.call(this),this.genMipmaps=!1,this.mipmapHint=We,this.mipmask=0,this.images=Array(16)}function R(e,t,r){var n=e.images[0]=V();e.mipmask=1,n.width=e.width=t,n.height=e.height=r,n.channels=e.channels=4}function M(e,t){var r=null;if(ft(t))E(r=e.images[0]=V(),e),C(r,t),e.mipmask=1;else if(T(e,t),Array.isArray(t.mipmap))for(var n=t.mipmap,a=0;a>=a,r.height>>=a,C(r,n[a]),e.mipmask|=1<=0&&!(\"faces\"in t)&&(e.genMipmaps=!0)}if(\"mag\"in t){var n=t.mag;_.parameter(n,l),e.magFilter=l[n]}var i=e.wrapS,o=e.wrapT;if(\"wrap\"in t){var f=t.wrap;\"string\"==typeof f?(_.parameter(f,c),i=o=c[f]):Array.isArray(f)&&(_.parameter(f[0],c),_.parameter(f[1],c),i=c[f[0]],o=c[f[1]])}else{if(\"wrapS\"in t){var u=t.wrapS;_.parameter(u,c),i=c[u]}if(\"wrapT\"in t){var m=t.wrapT;_.parameter(m,c),o=c[m]}}if(e.wrapS=i,e.wrapT=o,\"anisotropic\"in t){var p=t.anisotropic;_(\"number\"==typeof p&&p>=1&&p<=a.maxAnisotropic,\"aniso samples must be between 1 and \"),e.anisotropic=t.anisotropic}if(\"mipmap\"in t){var h=!1;switch(typeof t.mipmap){case\"string\":_.parameter(t.mipmap,s,\"invalid mipmap hint\"),e.mipmapHint=s[t.mipmap],e.genMipmaps=!0,h=!0;break;case\"boolean\":h=e.genMipmaps=t.mipmap;break;case\"object\":_(Array.isArray(t.mipmap),\"invalid mipmap type\"),e.genMipmaps=!1,h=!0;break;default:_.raise(\"invalid mipmap type\")}h&&!(\"min\"in t)&&(e.minFilter=Re)}}function $(e,t){r.texParameteri(t,10241,e.minFilter),r.texParameteri(t,10240,e.magFilter),r.texParameteri(t,10242,e.wrapS),r.texParameteri(t,10243,e.wrapT),n.ext_texture_filter_anisotropic&&r.texParameteri(t,34046,e.anisotropic),e.genMipmaps&&(r.hint(33170,e.mipmapHint),r.generateMipmap(t))}var K=0,J={},Z=a.maxTextureUnits,ee=Array(Z).map((function(){return null}));function te(e){O.call(this),this.mipmask=0,this.internalformat=ge,this.id=K++,this.refCount=1,this.target=e,this.texture=r.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new Y,u.profile&&(this.stats={size:0})}function re(e){r.activeTexture(Ue),r.bindTexture(e.target,e.texture)}function ne(){var e=ee[0];e?r.bindTexture(e.target,e.texture):r.bindTexture(he,null)}function ae(e){var t=e.texture;_(t,\"must not double destroy texture\");var n=e.unit,a=e.target;n>=0&&(r.activeTexture(Ue+n),r.bindTexture(a,null),ee[n]=null),r.deleteTexture(t),e.texture=null,e.params=null,e.pixels=null,e.refCount=0,delete J[e.id],f.textureCount--}return t(te.prototype,{bind:function(){var e=this;e.bindCount+=1;var t=e.unit;if(t<0){for(var n=0;n0)continue;a.unit=-1}ee[n]=e,t=n;break}t>=Z&&_.raise(\"insufficient number of texture units\"),u.profile&&f.maxTextureUnits>u)-o,s.height=s.height||(n.height>>u)-f,_(n.type===s.type&&n.format===s.format&&n.internalformat===s.internalformat,\"incompatible format for texture.subimage\"),_(o>=0&&f>=0&&o+s.width<=n.width&&f+s.height<=n.height,\"texture.subimage write out of bounds\"),_(n.mipmask&1<>f;++f){var s=a>>f,c=o>>f;if(!s||!c)break;r.texImage2D(he,f,n.format,s,c,0,n.format,n.type,null)}return ne(),u.profile&&(n.stats.size=lt(n.internalformat,n.type,a,o,!1,!1)),i},i._reglType=\"texture2d\",i._texture=n,u.profile&&(i.stats=n.stats),i.destroy=function(){n.decRef()},i},createCube:function(e,t,n,i,o,s){var c=new te(be);J[c.id]=c,f.cubeCount++;var l=new Array(6);function d(e,t,r,n,i,o){var f,s=c.texInfo;for(Y.call(s),f=0;f<6;++f)l[f]=q();if(\"number\"!=typeof e&&e)if(\"object\"==typeof e)if(t)M(l[0],e),M(l[1],t),M(l[2],r),M(l[3],n),M(l[4],i),M(l[5],o);else if(X(s,e),T(c,e),\"faces\"in e){var m=e.faces;for(_(Array.isArray(m)&&6===m.length,\"cube faces must be a length 6 array\"),f=0;f<6;++f)_(\"object\"==typeof m[f]&&!!m[f],\"invalid input for cube map face\"),E(l[f],c),M(l[f],m[f])}else for(f=0;f<6;++f)M(l[f],e);else _.raise(\"invalid arguments to cube map\");else{var p=0|e||1;for(f=0;f<6;++f)R(l[f],p,p)}for(E(c,l[0]),_.optional((function(){a.npotTextureCube||_(pe(c.width)&&pe(c.height),\"your browser does not support non power or two texture dimensions\")})),s.genMipmaps?c.mipmask=(l[0].width<<1)-1:c.mipmask=l[0].mipmask,_.textureCube(c,s,l,a),c.internalformat=l[0].internalformat,d.width=l[0].width,d.height=l[0].height,re(c),f=0;f<6;++f)W(l[f],ve+f);for($(s,be),ne(),u.profile&&(c.stats.size=lt(c.internalformat,c.type,d.width,d.height,s.genMipmaps,!0)),d.format=y[c.internalformat],d.type=x[c.type],d.mag=w[s.magFilter],d.min=A[s.minFilter],d.wrapS=k[s.wrapS],d.wrapT=k[s.wrapT],f=0;f<6;++f)Q(l[f]);return d}return d(e,t,n,i,o,s),d.subimage=function(e,t,r,n,a){_(!!t,\"must specify image data\"),_(\"number\"==typeof e&&e===(0|e)&&e>=0&&e<6,\"invalid face\");var i=0|r,o=0|n,f=0|a,u=V();return E(u,c),u.width=0,u.height=0,C(u,t),u.width=u.width||(c.width>>f)-i,u.height=u.height||(c.height>>f)-o,_(c.type===u.type&&c.format===u.format&&c.internalformat===u.internalformat,\"incompatible format for texture.subimage\"),_(i>=0&&o>=0&&i+u.width<=c.width&&o+u.height<=c.height,\"texture.subimage write out of bounds\"),_(c.mipmask&1<>a;++a)r.texImage2D(ve+n,a,c.format,t>>a,t>>a,0,c.format,c.type,null);return ne(),u.profile&&(c.stats.size=lt(c.internalformat,c.type,d.width,d.height,!1,!0)),d}},d._reglType=\"textureCube\",d._texture=c,u.profile&&(d.stats=c.stats),d.destroy=function(){c.decRef()},d},clear:function(){for(var e=0;e>t,e.height>>t,0,e.internalformat,e.type,null);else for(var n=0;n<6;++n)r.texImage2D(ve+n,t,e.internalformat,e.width>>t,e.height>>t,0,e.internalformat,e.type,null);$(e.texInfo,e.target)}))},refresh:function(){for(var e=0;e=0&&c=0&&l0&&d+c<=a.framebufferWidth,\"invalid width for read pixels\"),_(m>0&&m+l<=a.framebufferHeight,\"invalid height for read pixels\"),n();var h=d*m*4;return p||(s===Dt?p=new Uint8Array(h):s===jt&&(p=p||new Float32Array(h))),_.isTypedArray(p,\"data buffer for regl.read() must be a typedarray\"),_(p.byteLength>=h,\"data buffer for regl.read() too small\"),t.pixelStorei(3333,4),t.readPixels(c,l,d,m,6408,s,p),p}return function(e){return e&&\"framebuffer\"in e?function(e){var t;return r.setFBO({framebuffer:e.framebuffer},(function(){t=u(e)})),t}(e):u(e)}}function zt(e){return Array.prototype.slice.call(e)}function Ft(e){return zt(e).join(\"\")}var Bt=\"xyzw\".split(\"\"),Vt=\"dither\",It=\"blend.enable\",Pt=\"blend.color\",Lt=\"blend.equation\",Rt=\"blend.func\",Mt=\"depth.enable\",Wt=\"depth.func\",Ut=\"depth.range\",Gt=\"depth.mask\",Ht=\"colorMask\",Nt=\"cull.enable\",qt=\"cull.face\",Qt=\"frontFace\",Yt=\"lineWidth\",Xt=\"polygonOffset.enable\",$t=\"polygonOffset.offset\",Kt=\"sample.alpha\",Jt=\"sample.enable\",Zt=\"sample.coverage\",er=\"stencil.enable\",tr=\"stencil.mask\",rr=\"stencil.func\",nr=\"stencil.opFront\",ar=\"stencil.opBack\",ir=\"scissor.enable\",or=\"scissor.box\",fr=\"viewport\",ur=\"profile\",sr=\"framebuffer\",cr=\"vert\",lr=\"frag\",dr=\"elements\",mr=\"primitive\",pr=\"count\",hr=\"offset\",br=\"instances\",vr=\"vao\",gr=\"Width\",yr=\"Height\",xr=sr+gr,wr=sr+yr,Ar=\"drawingBufferWidth\",_r=\"drawingBufferHeight\",kr=[Rt,Lt,rr,nr,ar,Zt,fr,or,$t],Sr=34962,Or=34963,Er=5126,Tr=35664,Dr=35665,jr=35666,Cr=5124,zr=35667,Fr=35668,Br=35669,Vr=35670,Ir=35671,Pr=35672,Lr=35673,Rr=35674,Mr=35675,Wr=35676,Ur=35678,Gr=35680,Hr=1028,Nr=1029,qr=2305,Qr=7680,Yr={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},Xr=[\"constant color, constant alpha\",\"one minus constant color, constant alpha\",\"constant color, one minus constant alpha\",\"one minus constant color, one minus constant alpha\",\"constant alpha, constant color\",\"constant alpha, one minus constant color\",\"one minus constant alpha, constant color\",\"one minus constant alpha, one minus constant color\"],$r={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},Kr={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},Jr={frag:35632,vert:35633},Zr={cw:2304,ccw:qr};function en(t){return Array.isArray(t)||e(t)||G(t)}function tn(e){return e.sort((function(e,t){return e===fr?-1:t===fr?1:e=1,n>=2,t)}if(4===r){var a=e.data;return new rn(a.thisDep,a.contextDep,a.propDep,t)}if(5===r)return new rn(!1,!1,!1,t);if(6===r){for(var i=!1,o=!1,f=!1,u=0;u=1&&(o=!0),c>=2&&(f=!0)}else 4===s.type&&(i=i||s.data.thisDep,o=o||s.data.contextDep,f=f||s.data.propDep)}return new rn(i,o,f,t)}return new rn(3===r,2===r,1===r,t)}var fn=new rn(!1,!1,!1,(function(){}));function un(e,r,n,a,i,o,f,u,s,c,l,d,m,p,h){var b=c.Record,v={add:32774,subtract:32778,\"reverse subtract\":32779};n.ext_blend_minmax&&(v.min=32775,v.max=32776);var g=n.angle_instanced_arrays,y=n.webgl_draw_buffers,x=n.oes_vertex_array_object,w={dirty:!0,profile:h.profile},A={},k=[],S={},O={};function E(e){return e.replace(\".\",\"_\")}function T(e,t,r){var n=E(e);k.push(e),A[n]=w[n]=!!r,S[n]=t}function j(e,t,r){var n=E(e);k.push(e),Array.isArray(r)?(w[n]=r.slice(),A[n]=r.slice()):w[n]=A[n]=r,O[n]=t}T(Vt,3024),T(It,3042),j(Pt,\"blendColor\",[0,0,0,0]),j(Lt,\"blendEquationSeparate\",[32774,32774]),j(Rt,\"blendFuncSeparate\",[1,0,1,0]),T(Mt,2929,!0),j(Wt,\"depthFunc\",513),j(Ut,\"depthRange\",[0,1]),j(Gt,\"depthMask\",!0),j(Ht,Ht,[!0,!0,!0,!0]),T(Nt,2884),j(qt,\"cullFace\",Nr),j(Qt,Qt,qr),j(Yt,Yt,1),T(Xt,32823),j($t,\"polygonOffset\",[0,0]),T(Kt,32926),T(Jt,32928),j(Zt,\"sampleCoverage\",[1,!1]),T(er,2960),j(tr,\"stencilMask\",-1),j(rr,\"stencilFunc\",[519,0,-1]),j(nr,\"stencilOpSeparate\",[Hr,Qr,Qr,Qr]),j(ar,\"stencilOpSeparate\",[Nr,Qr,Qr,Qr]),T(ir,3089),j(or,\"scissor\",[0,0,e.drawingBufferWidth,e.drawingBufferHeight]),j(fr,fr,[0,0,e.drawingBufferWidth,e.drawingBufferHeight]);var C={gl:e,context:m,strings:r,next:A,current:w,draw:d,elements:o,buffer:i,shader:l,attributes:c.state,vao:c,uniforms:s,framebuffer:u,extensions:n,timer:p,isBufferArgs:en},z={primTypes:ie,compareFuncs:$r,blendFuncs:Yr,blendEquations:v,stencilOps:Kr,glTypes:X,orientationType:Zr};_.optional((function(){C.isArrayLike=me})),y&&(z.backBuffer=[Nr],z.drawBuffer=V(a.maxDrawbuffers,(function(e){return 0===e?[0]:V(e,(function(e){return 36064+e}))})));var F=0;function B(){var e=function(){var e=0,r=[],n=[];function a(){var r=[],n=[];return t((function(){r.push.apply(r,zt(arguments))}),{def:function(){var t=\"v\"+e++;return n.push(t),arguments.length>0&&(r.push(t,\"=\"),r.push.apply(r,zt(arguments)),r.push(\";\")),t},toString:function(){return Ft([n.length>0?\"var \"+n.join(\",\")+\";\":\"\",Ft(r)])}})}function i(){var e=a(),r=a(),n=e.toString,i=r.toString;function o(t,n){r(t,n,\"=\",e.def(t,n),\";\")}return t((function(){e.apply(e,zt(arguments))}),{def:e.def,entry:e,exit:r,save:o,set:function(t,r,n){o(t,r),e(t,r,\"=\",n,\";\")},toString:function(){return n()+i()}})}var o=a(),f={};return{global:o,link:function(t){for(var a=0;a=0,'unknown parameter \"'+t+'\"',d.commandStr)}))}t(m),t(p)}));var h=function(e,t){var r=e.static;if(\"string\"==typeof r[lr]&&\"string\"==typeof r[cr]){if(Object.keys(t.dynamic).length>0)return null;var n=t.static,a=Object.keys(n);if(a.length>0&&\"number\"==typeof n[a[0]]){for(var i=[],o=0;o=0,\"invalid \"+e,r.commandStr)):u=!1,\"height\"in i?(f=0|i.height,_.command(f>=0,\"invalid \"+e,r.commandStr)):u=!1,new rn(!u&&t&&t.thisDep,!u&&t&&t.contextDep,!u&&t&&t.propDep,(function(e,t){var r=e.shared.context,n=o;\"width\"in i||(n=t.def(r,\".\",xr,\"-\",s));var a=f;return\"height\"in i||(a=t.def(r,\".\",wr,\"-\",c)),[s,c,n,a]}))}if(e in a){var l=a[e],d=on(l,(function(t,r){var n=t.invoke(r,l);_.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e)}));var a=t.shared.context,i=r.def(n,\".x|0\"),o=r.def(n,\".y|0\"),f=r.def('\"width\" in ',n,\"?\",n,\".width|0:\",\"(\",a,\".\",xr,\"-\",i,\")\"),u=r.def('\"height\" in ',n,\"?\",n,\".height|0:\",\"(\",a,\".\",wr,\"-\",o,\")\");return _.optional((function(){t.assert(r,f+\">=0&&\"+u+\">=0\",\"invalid \"+e)})),[i,o,f,u]}));return t&&(d.thisDep=d.thisDep||t.thisDep,d.contextDep=d.contextDep||t.contextDep,d.propDep=d.propDep||t.propDep),d}return t?new rn(t.thisDep,t.contextDep,t.propDep,(function(e,t){var r=e.shared.context;return[0,0,t.def(r,\".\",xr),t.def(r,\".\",wr)]})):null}var o=i(fr);if(o){var f=o;o=new rn(o.thisDep,o.contextDep,o.propDep,(function(e,t){var r=f.append(e,t),n=e.shared.context;return t.set(n,\".viewportWidth\",r[2]),t.set(n,\".viewportHeight\",r[3]),r}))}return{viewport:o,scissor_box:i(or)}}(e,y,d),w=function(e,t){var r=e.static,n=e.dynamic,a={},i=!1,f=function(){if(vr in r){var e=r[vr];return null!==e&&null===c.getVAO(e)&&(e=c.createVAO(e)),i=!0,a.vao=e,an((function(t){var r=c.getVAO(e);return r?t.link(r):\"null\"}))}if(vr in n){i=!0;var t=n[vr];return on(t,(function(e,r){var n=e.invoke(r,t);return r.def(e.shared.vao+\".getVAO(\"+n+\")\")}))}return null}(),u=!1,s=function(){if(dr in r){var e=r[dr];if(a.elements=e,en(e)){var s=a.elements=o.create(e,!0);e=o.getElements(s),u=!0}else e&&(e=o.getElements(e),u=!0,_.command(e,\"invalid elements\",t.commandStr));var c=an((function(t,r){if(e){var n=t.link(e);return t.ELEMENTS=n,n}return t.ELEMENTS=null,null}));return c.value=e,c}if(dr in n){u=!0;var l=n[dr];return on(l,(function(e,t){var r=e.shared,n=r.isBufferArgs,a=r.elements,i=e.invoke(t,l),o=t.def(\"null\"),f=t.def(n,\"(\",i,\")\"),u=e.cond(f).then(o,\"=\",a,\".createStream(\",i,\");\").else(o,\"=\",a,\".getElements(\",i,\");\");return _.optional((function(){e.assert(u.else,\"!\"+i+\"||\"+o,\"invalid elements\")})),t.entry(u),t.exit(e.cond(f).then(a,\".destroyStream(\",o,\");\")),e.ELEMENTS=o,o}))}return i?new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.elements+\".getElements(\"+e.shared.vao+\".currentVAO.elements):null\")})):null}();function l(e,o){if(e in r){var s=0|r[e];return o?a.offset=s:a.instances=s,_.command(!o||s>=0,\"invalid \"+e,t.commandStr),an((function(e,t){return o&&(e.OFFSET=s),s}))}if(e in n){var c=n[e];return on(c,(function(t,r){var n=t.invoke(r,c);return o&&(t.OFFSET=n,_.optional((function(){t.assert(r,n+\">=0\",\"invalid \"+e)}))),n}))}if(o){if(u)return an((function(e,t){return e.OFFSET=0,0}));if(i)return new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.vao+\".currentVAO.offset:0\")}))}else if(i)return new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.vao+\".currentVAO.instances:-1\")}));return null}var d=l(hr,!0),m=function(){if(mr in r){var e=r[mr];return a.primitive=e,_.commandParameter(e,ie,\"invalid primitve\",t.commandStr),an((function(t,r){return ie[e]}))}if(mr in n){var o=n[mr];return on(o,(function(e,t){var r=e.constants.primTypes,n=e.invoke(t,o);return _.optional((function(){e.assert(t,n+\" in \"+r,\"invalid primitive, must be one of \"+Object.keys(ie))})),t.def(r,\"[\",n,\"]\")}))}return u?nn(s)?s.value?an((function(e,t){return t.def(e.ELEMENTS,\".primType\")})):an((function(){return 4})):new rn(s.thisDep,s.contextDep,s.propDep,(function(e,t){var r=e.ELEMENTS;return t.def(r,\"?\",r,\".primType:\",4)})):i?new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.vao+\".currentVAO.primitive:4\")})):null}(),p=function(){if(pr in r){var e=0|r[pr];return a.count=e,_.command(\"number\"==typeof e&&e>=0,\"invalid vertex count\",t.commandStr),an((function(){return e}))}if(pr in n){var o=n[pr];return on(o,(function(e,t){var r=e.invoke(t,o);return _.optional((function(){e.assert(t,\"typeof \"+r+'===\"number\"&&'+r+\">=0&&\"+r+\"===(\"+r+\"|0)\",\"invalid vertex count\")})),r}))}if(u){if(nn(s)){if(s)return d?new rn(d.thisDep,d.contextDep,d.propDep,(function(e,t){var r=t.def(e.ELEMENTS,\".vertCount-\",e.OFFSET);return _.optional((function(){e.assert(t,r+\">=0\",\"invalid vertex offset/element buffer too small\")})),r})):an((function(e,t){return t.def(e.ELEMENTS,\".vertCount\")}));var c=an((function(){return-1}));return _.optional((function(){c.MISSING=!0})),c}var l=new rn(s.thisDep||d.thisDep,s.contextDep||d.contextDep,s.propDep||d.propDep,(function(e,t){var r=e.ELEMENTS;return e.OFFSET?t.def(r,\"?\",r,\".vertCount-\",e.OFFSET,\":-1\"):t.def(r,\"?\",r,\".vertCount:-1\")}));return _.optional((function(){l.DYNAMIC=!0})),l}if(i){var m=new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao,\".currentVAO?\",e.shared.vao,\".currentVAO.count:-1\")}));return m}return null}(),h=l(br,!1);return{elements:s,primitive:m,count:p,instances:h,offset:d,vao:f,vaoActive:i,elementsActive:u,static:a}}(e,d),A=function(e,t){var r=e.static,n=e.dynamic,i={};return k.forEach((function(e){var o=E(e);function f(t,a){if(e in r){var f=t(r[e]);i[o]=an((function(){return f}))}else if(e in n){var u=n[e];i[o]=on(u,(function(e,t){return a(e,t,e.invoke(t,u))}))}}switch(e){case Nt:case It:case Vt:case er:case Mt:case ir:case Xt:case Kt:case Jt:case Gt:return f((function(r){return _.commandType(r,\"boolean\",e,t.commandStr),r}),(function(t,r,n){return _.optional((function(){t.assert(r,\"typeof \"+n+'===\"boolean\"',\"invalid flag \"+e,t.commandStr)})),n}));case Wt:return f((function(r){return _.commandParameter(r,$r,\"invalid \"+e,t.commandStr),$r[r]}),(function(t,r,n){var a=t.constants.compareFuncs;return _.optional((function(){t.assert(r,n+\" in \"+a,\"invalid \"+e+\", must be one of \"+Object.keys($r))})),r.def(a,\"[\",n,\"]\")}));case Ut:return f((function(e){return _.command(me(e)&&2===e.length&&\"number\"==typeof e[0]&&\"number\"==typeof e[1]&&e[0]<=e[1],\"depth range is 2d array\",t.commandStr),e}),(function(e,t,r){return _.optional((function(){e.assert(t,e.shared.isArrayLike+\"(\"+r+\")&&\"+r+\".length===2&&typeof \"+r+'[0]===\"number\"&&typeof '+r+'[1]===\"number\"&&'+r+\"[0]<=\"+r+\"[1]\",\"depth range must be a 2d array\")})),[t.def(\"+\",r,\"[0]\"),t.def(\"+\",r,\"[1]\")]}));case Rt:return f((function(e){_.commandType(e,\"object\",\"blend.func\",t.commandStr);var r=\"srcRGB\"in e?e.srcRGB:e.src,n=\"srcAlpha\"in e?e.srcAlpha:e.src,a=\"dstRGB\"in e?e.dstRGB:e.dst,i=\"dstAlpha\"in e?e.dstAlpha:e.dst;return _.commandParameter(r,Yr,o+\".srcRGB\",t.commandStr),_.commandParameter(n,Yr,o+\".srcAlpha\",t.commandStr),_.commandParameter(a,Yr,o+\".dstRGB\",t.commandStr),_.commandParameter(i,Yr,o+\".dstAlpha\",t.commandStr),_.command(-1===Xr.indexOf(r+\", \"+a),\"unallowed blending combination (srcRGB, dstRGB) = (\"+r+\", \"+a+\")\",t.commandStr),[Yr[r],Yr[a],Yr[n],Yr[i]]}),(function(t,r,n){var a=t.constants.blendFuncs;function i(i,o){var f=r.def('\"',i,o,'\" in ',n,\"?\",n,\".\",i,o,\":\",n,\".\",i);return _.optional((function(){t.assert(r,f+\" in \"+a,\"invalid \"+e+\".\"+i+o+\", must be one of \"+Object.keys(Yr))})),f}_.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid blend func, must be an object\")}));var o=i(\"src\",\"RGB\"),f=i(\"dst\",\"RGB\");_.optional((function(){var e=t.constants.invalidBlendCombinations;t.assert(r,e+\".indexOf(\"+o+'+\", \"+'+f+\") === -1 \",\"unallowed blending combination for (srcRGB, dstRGB)\")}));var u=r.def(a,\"[\",o,\"]\"),s=r.def(a,\"[\",i(\"src\",\"Alpha\"),\"]\");return[u,r.def(a,\"[\",f,\"]\"),s,r.def(a,\"[\",i(\"dst\",\"Alpha\"),\"]\")]}));case Lt:return f((function(r){return\"string\"==typeof r?(_.commandParameter(r,v,\"invalid \"+e,t.commandStr),[v[r],v[r]]):\"object\"==typeof r?(_.commandParameter(r.rgb,v,e+\".rgb\",t.commandStr),_.commandParameter(r.alpha,v,e+\".alpha\",t.commandStr),[v[r.rgb],v[r.alpha]]):void _.commandRaise(\"invalid blend.equation\",t.commandStr)}),(function(t,r,n){var a=t.constants.blendEquations,i=r.def(),o=r.def(),f=t.cond(\"typeof \",n,'===\"string\"');return _.optional((function(){function r(e,r,n){t.assert(e,n+\" in \"+a,\"invalid \"+r+\", must be one of \"+Object.keys(v))}r(f.then,e,n),t.assert(f.else,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e),r(f.else,e+\".rgb\",n+\".rgb\"),r(f.else,e+\".alpha\",n+\".alpha\")})),f.then(i,\"=\",o,\"=\",a,\"[\",n,\"];\"),f.else(i,\"=\",a,\"[\",n,\".rgb];\",o,\"=\",a,\"[\",n,\".alpha];\"),r(f),[i,o]}));case Pt:return f((function(e){return _.command(me(e)&&4===e.length,\"blend.color must be a 4d array\",t.commandStr),V(4,(function(t){return+e[t]}))}),(function(e,t,r){return _.optional((function(){e.assert(t,e.shared.isArrayLike+\"(\"+r+\")&&\"+r+\".length===4\",\"blend.color must be a 4d array\")})),V(4,(function(e){return t.def(\"+\",r,\"[\",e,\"]\")}))}));case tr:return f((function(e){return _.commandType(e,\"number\",o,t.commandStr),0|e}),(function(e,t,r){return _.optional((function(){e.assert(t,\"typeof \"+r+'===\"number\"',\"invalid stencil.mask\")})),t.def(r,\"|0\")}));case rr:return f((function(r){_.commandType(r,\"object\",o,t.commandStr);var n=r.cmp||\"keep\",a=r.ref||0,i=\"mask\"in r?r.mask:-1;return _.commandParameter(n,$r,e+\".cmp\",t.commandStr),_.commandType(a,\"number\",e+\".ref\",t.commandStr),_.commandType(i,\"number\",e+\".mask\",t.commandStr),[$r[n],a,i]}),(function(e,t,r){var n=e.constants.compareFuncs;return _.optional((function(){function a(){e.assert(t,Array.prototype.join.call(arguments,\"\"),\"invalid stencil.func\")}a(r+\"&&typeof \",r,'===\"object\"'),a('!(\"cmp\" in ',r,\")||(\",r,\".cmp in \",n,\")\")})),[t.def('\"cmp\" in ',r,\"?\",n,\"[\",r,\".cmp]\",\":\",Qr),t.def(r,\".ref|0\"),t.def('\"mask\" in ',r,\"?\",r,\".mask|0:-1\")]}));case nr:case ar:return f((function(r){_.commandType(r,\"object\",o,t.commandStr);var n=r.fail||\"keep\",a=r.zfail||\"keep\",i=r.zpass||\"keep\";return _.commandParameter(n,Kr,e+\".fail\",t.commandStr),_.commandParameter(a,Kr,e+\".zfail\",t.commandStr),_.commandParameter(i,Kr,e+\".zpass\",t.commandStr),[e===ar?Nr:Hr,Kr[n],Kr[a],Kr[i]]}),(function(t,r,n){var a=t.constants.stencilOps;function i(i){return _.optional((function(){t.assert(r,'!(\"'+i+'\" in '+n+\")||(\"+n+\".\"+i+\" in \"+a+\")\",\"invalid \"+e+\".\"+i+\", must be one of \"+Object.keys(Kr))})),r.def('\"',i,'\" in ',n,\"?\",a,\"[\",n,\".\",i,\"]:\",Qr)}return _.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e)})),[e===ar?Nr:Hr,i(\"fail\"),i(\"zfail\"),i(\"zpass\")]}));case $t:return f((function(e){_.commandType(e,\"object\",o,t.commandStr);var r=0|e.factor,n=0|e.units;return _.commandType(r,\"number\",o+\".factor\",t.commandStr),_.commandType(n,\"number\",o+\".units\",t.commandStr),[r,n]}),(function(t,r,n){return _.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e)})),[r.def(n,\".factor|0\"),r.def(n,\".units|0\")]}));case qt:return f((function(e){var r=0;return\"front\"===e?r=Hr:\"back\"===e&&(r=Nr),_.command(!!r,o,t.commandStr),r}),(function(e,t,r){return _.optional((function(){e.assert(t,r+'===\"front\"||'+r+'===\"back\"',\"invalid cull.face\")})),t.def(r,'===\"front\"?',Hr,\":\",Nr)}));case Yt:return f((function(e){return _.command(\"number\"==typeof e&&e>=a.lineWidthDims[0]&&e<=a.lineWidthDims[1],\"invalid line width, must be a positive number between \"+a.lineWidthDims[0]+\" and \"+a.lineWidthDims[1],t.commandStr),e}),(function(e,t,r){return _.optional((function(){e.assert(t,\"typeof \"+r+'===\"number\"&&'+r+\">=\"+a.lineWidthDims[0]+\"&&\"+r+\"<=\"+a.lineWidthDims[1],\"invalid line width\")})),r}));case Qt:return f((function(e){return _.commandParameter(e,Zr,o,t.commandStr),Zr[e]}),(function(e,t,r){return _.optional((function(){e.assert(t,r+'===\"cw\"||'+r+'===\"ccw\"',\"invalid frontFace, must be one of cw,ccw\")})),t.def(r+'===\"cw\"?2304:'+qr)}));case Ht:return f((function(e){return _.command(me(e)&&4===e.length,\"color.mask must be length 4 array\",t.commandStr),e.map((function(e){return!!e}))}),(function(e,t,r){return _.optional((function(){e.assert(t,e.shared.isArrayLike+\"(\"+r+\")&&\"+r+\".length===4\",\"invalid color.mask\")})),V(4,(function(e){return\"!!\"+r+\"[\"+e+\"]\"}))}));case Zt:return f((function(e){_.command(\"object\"==typeof e&&e,o,t.commandStr);var r=\"value\"in e?e.value:1,n=!!e.invert;return _.command(\"number\"==typeof r&&r>=0&&r<=1,\"sample.coverage.value must be a number between 0 and 1\",t.commandStr),[r,n]}),(function(e,t,r){return _.optional((function(){e.assert(t,r+\"&&typeof \"+r+'===\"object\"',\"invalid sample.coverage\")})),[t.def('\"value\" in ',r,\"?+\",r,\".value:1\"),t.def(\"!!\",r,\".invert\")]}))}})),i}(e,d),S=function(e,t,n){var a=e.static,i=e.dynamic;function o(e){if(e in a){var t=r.id(a[e]);_.optional((function(){l.shader(Jr[e],t,_.guessCommand())}));var n=an((function(){return t}));return n.id=t,n}if(e in i){var o=i[e];return on(o,(function(t,r){var n=t.invoke(r,o),a=r.def(t.shared.strings,\".id(\",n,\")\");return _.optional((function(){r(t.shared.shader,\".shader(\",Jr[e],\",\",a,\",\",t.command,\");\")})),a}))}return null}var f,u=o(lr),s=o(cr),c=null;return nn(u)&&nn(s)?(c=l.program(s.id,u.id,null,n),f=an((function(e,t){return e.link(c)}))):f=new rn(u&&u.thisDep||s&&s.thisDep,u&&u.contextDep||s&&s.contextDep,u&&u.propDep||s&&s.propDep,(function(e,t){var r,n=e.shared.shader;r=u?u.append(e,t):t.def(n,\".\",lr);var a=n+\".program(\"+(s?s.append(e,t):t.def(n,\".\",cr))+\",\"+r;return _.optional((function(){a+=\",\"+e.command})),t.def(a+\")\")})),{frag:u,vert:s,progVar:f,program:c}}(e,0,h);function O(e){var t=x[e];t&&(A[e]=t)}O(fr),O(E(or));var T=Object.keys(A).length>0,D={framebuffer:y,draw:w,shader:S,state:A,dirty:T,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(D.profile=function(e){var t,r=e.static,n=e.dynamic;if(ur in r){var a=!!r[ur];(t=an((function(e,t){return a}))).enable=a}else if(ur in n){var i=n[ur];t=on(i,(function(e,t){return e.invoke(t,i)}))}return t}(e),D.uniforms=function(e,t){var r=e.static,n=e.dynamic,a={};return Object.keys(r).forEach((function(e){var n,i=r[e];if(\"number\"==typeof i||\"boolean\"==typeof i)n=an((function(){return i}));else if(\"function\"==typeof i){var o=i._reglType;\"texture2d\"===o||\"textureCube\"===o?n=an((function(e){return e.link(i)})):\"framebuffer\"===o||\"framebufferCube\"===o?(_.command(i.color.length>0,'missing color attachment for framebuffer sent to uniform \"'+e+'\"',t.commandStr),n=an((function(e){return e.link(i.color[0])}))):_.commandRaise('invalid data for uniform \"'+e+'\"',t.commandStr)}else me(i)?n=an((function(t){return t.global.def(\"[\",V(i.length,(function(r){return _.command(\"number\"==typeof i[r]||\"boolean\"==typeof i[r],\"invalid uniform \"+e,t.commandStr),i[r]})),\"]\")})):_.commandRaise('invalid or missing data for uniform \"'+e+'\"',t.commandStr);n.value=i,a[e]=n})),Object.keys(n).forEach((function(e){var t=n[e];a[e]=on(t,(function(e,r){return e.invoke(r,t)}))})),a}(f,d),D.drawVAO=D.scopeVAO=w.vao,!D.drawVAO&&S.program&&!h&&n.angle_instanced_arrays&&w.static.elements){var j=!0,C=S.program.attributes.map((function(e){var r=t.static[e];return j=j&&!!r,r}));if(j&&C.length>0){var z=c.getVAO(c.createVAO({attributes:C,elements:w.static.elements}));D.drawVAO=new rn(null,null,null,(function(e,t){return e.link(z)})),D.useVAO=!0}}return h?D.useVAO=!0:D.attributes=function(e,t){var n=e.static,a=e.dynamic,o={};return Object.keys(n).forEach((function(e){var a=n[e],f=r.id(e),u=new b;if(en(a))u.state=1,u.buffer=i.getBuffer(i.create(a,Sr,!1,!0)),u.type=0;else{var s=i.getBuffer(a);if(s)u.state=1,u.buffer=s,u.type=0;else if(_.command(\"object\"==typeof a&&a,\"invalid data for attribute \"+e,t.commandStr),\"constant\"in a){var c=a.constant;u.buffer=\"null\",u.state=2,\"number\"==typeof c?u.x=c:(_.command(me(c)&&c.length>0&&c.length<=4,\"invalid constant for attribute \"+e,t.commandStr),Bt.forEach((function(e,t){t=0,'invalid offset for attribute \"'+e+'\"',t.commandStr);var d=0|a.stride;_.command(d>=0&&d<256,'invalid stride for attribute \"'+e+'\", must be integer betweeen [0, 255]',t.commandStr);var m=0|a.size;_.command(!(\"size\"in a)||m>0&&m<=4,'invalid size for attribute \"'+e+'\", must be 1,2,3,4',t.commandStr);var p=!!a.normalized,h=0;\"type\"in a&&(_.commandParameter(a.type,X,\"invalid type for attribute \"+e,t.commandStr),h=X[a.type]);var v=0|a.divisor;_.optional((function(){\"divisor\"in a&&(_.command(0===v||g,'cannot specify divisor for attribute \"'+e+'\", instancing not supported',t.commandStr),_.command(v>=0,'invalid divisor for attribute \"'+e+'\"',t.commandStr));var r=t.commandStr,n=[\"buffer\",\"offset\",\"divisor\",\"normalized\",\"type\",\"size\",\"stride\"];Object.keys(a).forEach((function(t){_.command(n.indexOf(t)>=0,'unknown parameter \"'+t+'\" for attribute pointer \"'+e+'\" (valid parameters are '+n+\")\",r)}))})),u.buffer=s,u.state=1,u.size=m,u.normalized=p,u.type=h||s.dtype,u.offset=l,u.stride=d,u.divisor=v}}o[e]=an((function(e,t){var r=e.attribCache;if(f in r)return r[f];var n={isStream:!1};return Object.keys(u).forEach((function(e){n[e]=u[e]})),u.buffer&&(n.buffer=e.link(u.buffer),n.type=n.type||n.buffer+\".dtype\"),r[f]=n,n}))})),Object.keys(a).forEach((function(e){var t=a[e];o[e]=on(t,(function(r,n){var a=r.invoke(n,t),i=r.shared,o=r.constants,f=i.isBufferArgs,u=i.buffer;_.optional((function(){r.assert(n,a+\"&&(typeof \"+a+'===\"object\"||typeof '+a+'===\"function\")&&('+f+\"(\"+a+\")||\"+u+\".getBuffer(\"+a+\")||\"+u+\".getBuffer(\"+a+\".buffer)||\"+f+\"(\"+a+'.buffer)||(\"constant\" in '+a+\"&&(typeof \"+a+'.constant===\"number\"||'+i.isArrayLike+\"(\"+a+\".constant))))\",'invalid dynamic attribute \"'+e+'\"')}));var s={isStream:n.def(!1)},c=new b;c.state=1,Object.keys(c).forEach((function(e){s[e]=n.def(\"\"+c[e])}));var l=s.buffer,d=s.type;function m(e){n(s[e],\"=\",a,\".\",e,\"|0;\")}return n(\"if(\",f,\"(\",a,\")){\",s.isStream,\"=true;\",l,\"=\",u,\".createStream(\",Sr,\",\",a,\");\",d,\"=\",l,\".dtype;\",\"}else{\",l,\"=\",u,\".getBuffer(\",a,\");\",\"if(\",l,\"){\",d,\"=\",l,\".dtype;\",'}else if(\"constant\" in ',a,\"){\",s.state,\"=\",2,\";\",\"if(typeof \"+a+'.constant === \"number\"){',s[Bt[0]],\"=\",a,\".constant;\",Bt.slice(1).map((function(e){return s[e]})).join(\"=\"),\"=0;\",\"}else{\",Bt.map((function(e,t){return s[e]+\"=\"+a+\".constant.length>\"+t+\"?\"+a+\".constant[\"+t+\"]:0;\"})).join(\"\"),\"}}else{\",\"if(\",f,\"(\",a,\".buffer)){\",l,\"=\",u,\".createStream(\",Sr,\",\",a,\".buffer);\",\"}else{\",l,\"=\",u,\".getBuffer(\",a,\".buffer);\",\"}\",d,'=\"type\" in ',a,\"?\",o.glTypes,\"[\",a,\".type]:\",l,\".dtype;\",s.normalized,\"=!!\",a,\".normalized;\"),m(\"size\"),m(\"offset\"),m(\"stride\"),m(\"divisor\"),n(\"}}\"),n.exit(\"if(\",s.isStream,\"){\",u,\".destroyStream(\",l,\");\",\"}\"),s}))})),o}(t,d),D.context=function(e){var t=e.static,r=e.dynamic,n={};return Object.keys(t).forEach((function(e){var r=t[e];n[e]=an((function(e,t){return\"number\"==typeof r||\"boolean\"==typeof r?\"\"+r:e.link(r)}))})),Object.keys(r).forEach((function(e){var t=r[e];n[e]=on(t,(function(e,r){return e.invoke(r,t)}))})),n}(s),D}function P(e,t,r){var n=e.shared.context,a=e.scope();Object.keys(r).forEach((function(i){t.save(n,\".\"+i);var o=r[i].append(e,t);Array.isArray(o)?a(n,\".\",i,\"=[\",o.join(),\"];\"):a(n,\".\",i,\"=\",o,\";\")})),t(a)}function L(e,t,r,n){var a,i=e.shared,o=i.gl,f=i.framebuffer;y&&(a=t.def(i.extensions,\".webgl_draw_buffers\"));var u,s=e.constants,c=s.drawBuffer,l=s.backBuffer;u=r?r.append(e,t):t.def(f,\".next\"),n||t(\"if(\",u,\"!==\",f,\".cur){\"),t(\"if(\",u,\"){\",o,\".bindFramebuffer(\",36160,\",\",u,\".framebuffer);\"),y&&t(a,\".drawBuffersWEBGL(\",c,\"[\",u,\".colorAttachments.length]);\"),t(\"}else{\",o,\".bindFramebuffer(\",36160,\",null);\"),y&&t(a,\".drawBuffersWEBGL(\",l,\");\"),t(\"}\",f,\".cur=\",u,\";\"),n||t(\"}\")}function R(e,t,r){var n=e.shared,a=n.gl,i=e.current,o=e.next,f=n.current,u=n.next,s=e.cond(f,\".dirty\");k.forEach((function(t){var n,c,l=E(t);if(!(l in r.state))if(l in o){n=o[l],c=i[l];var d=V(w[l].length,(function(e){return s.def(n,\"[\",e,\"]\")}));s(e.cond(d.map((function(e,t){return e+\"!==\"+c+\"[\"+t+\"]\"})).join(\"||\")).then(a,\".\",O[l],\"(\",d,\");\",d.map((function(e,t){return c+\"[\"+t+\"]=\"+e})).join(\";\"),\";\"))}else{n=s.def(u,\".\",l);var m=e.cond(n,\"!==\",f,\".\",l);s(m),l in S?m(e.cond(n).then(a,\".enable(\",S[l],\");\").else(a,\".disable(\",S[l],\");\"),f,\".\",l,\"=\",n,\";\"):m(a,\".\",O[l],\"(\",n,\");\",f,\".\",l,\"=\",n,\";\")}})),0===Object.keys(r.state).length&&s(f,\".dirty=false;\"),t(s)}function M(e,t,r,n){var a=e.shared,i=e.current,o=a.current,f=a.gl;tn(Object.keys(r)).forEach((function(a){var u=r[a];if(!n||n(u)){var s=u.append(e,t);if(S[a]){var c=S[a];nn(u)?t(f,s?\".enable(\":\".disable(\",c,\");\"):t(e.cond(s).then(f,\".enable(\",c,\");\").else(f,\".disable(\",c,\");\")),t(o,\".\",a,\"=\",s,\";\")}else if(me(s)){var l=i[a];t(f,\".\",O[a],\"(\",s,\");\",s.map((function(e,t){return l+\"[\"+t+\"]=\"+e})).join(\";\"),\";\")}else t(f,\".\",O[a],\"(\",s,\");\",o,\".\",a,\"=\",s,\";\")}}))}function W(e,t){g&&(e.instancing=t.def(e.shared.extensions,\".angle_instanced_arrays\"))}function U(e,t,r,n,a){var i,o,f,u=e.shared,s=e.stats,c=u.current,l=u.timer,d=r.profile;function m(){return\"undefined\"==typeof performance?\"Date.now()\":\"performance.now()\"}function h(e){e(i=t.def(),\"=\",m(),\";\"),\"string\"==typeof a?e(s,\".count+=\",a,\";\"):e(s,\".count++;\"),p&&(n?e(o=t.def(),\"=\",l,\".getNumPendingQueries();\"):e(l,\".beginQuery(\",s,\");\"))}function b(e){e(s,\".cpuTime+=\",m(),\"-\",i,\";\"),p&&(n?e(l,\".pushScopeStats(\",o,\",\",l,\".getNumPendingQueries(),\",s,\");\"):e(l,\".endQuery();\"))}function v(e){var r=t.def(c,\".profile\");t(c,\".profile=\",e,\";\"),t.exit(c,\".profile=\",r,\";\")}if(d){if(nn(d))return void(d.enable?(h(t),b(t.exit),v(\"true\")):v(\"false\"));v(f=d.append(e,t))}else f=t.def(c,\".profile\");var g=e.block();h(g),t(\"if(\",f,\"){\",g,\"}\");var y=e.block();b(y),t.exit(\"if(\",f,\"){\",y,\"}\")}function G(e,t,r,n,a){var i=e.shared;n.forEach((function(n){var o,f=n.name,u=r.attributes[f];if(u){if(!a(u))return;o=u.append(e,t)}else{if(!a(fn))return;var s=e.scopeAttrib(f);_.optional((function(){e.assert(t,s+\".state\",\"missing attribute \"+f)})),o={},Object.keys(new b).forEach((function(e){o[e]=t.def(s,\".\",e)}))}!function(r,n,a){var o=i.gl,f=t.def(r,\".location\"),u=t.def(i.attributes,\"[\",f,\"]\"),s=a.state,c=a.buffer,l=[a.x,a.y,a.z,a.w],d=[\"buffer\",\"normalized\",\"offset\",\"stride\"];function m(){t(\"if(!\",u,\".buffer){\",o,\".enableVertexAttribArray(\",f,\");}\");var r,i=a.type;if(r=a.size?t.def(a.size,\"||\",n):n,t(\"if(\",u,\".type!==\",i,\"||\",u,\".size!==\",r,\"||\",d.map((function(e){return u+\".\"+e+\"!==\"+a[e]})).join(\"||\"),\"){\",o,\".bindBuffer(\",Sr,\",\",c,\".buffer);\",o,\".vertexAttribPointer(\",[f,r,i,a.normalized,a.stride,a.offset],\");\",u,\".type=\",i,\";\",u,\".size=\",r,\";\",d.map((function(e){return u+\".\"+e+\"=\"+a[e]+\";\"})).join(\"\"),\"}\"),g){var s=a.divisor;t(\"if(\",u,\".divisor!==\",s,\"){\",e.instancing,\".vertexAttribDivisorANGLE(\",[f,s],\");\",u,\".divisor=\",s,\";}\")}}function p(){t(\"if(\",u,\".buffer){\",o,\".disableVertexAttribArray(\",f,\");\",u,\".buffer=null;\",\"}if(\",Bt.map((function(e,t){return u+\".\"+e+\"!==\"+l[t]})).join(\"||\"),\"){\",o,\".vertexAttrib4f(\",f,\",\",l,\");\",Bt.map((function(e,t){return u+\".\"+e+\"=\"+l[t]+\";\"})).join(\"\"),\"}\")}1===s?m():2===s?p():(t(\"if(\",s,\"===\",1,\"){\"),m(),t(\"}else{\"),p(),t(\"}\"))}(e.link(n),function(e){switch(e){case Tr:case zr:case Ir:return 2;case Dr:case Fr:case Pr:return 3;case jr:case Br:case Lr:return 4;default:return 1}}(n.info.type),o)}))}function H(e,t,n,a,i,o){for(var f,u=e.shared,s=u.gl,c={},l=0;l1){if(!b)continue;var v=m.replace(\"[0]\",\"\");if(c[v])continue;c[v]=1}var g,y=e.link(d)+\".location\";if(b){if(!i(b))continue;if(nn(b)){var x=b.value;if(_.command(null!=x,'missing uniform \"'+m+'\"',e.commandStr),p===Ur||p===Gr){_.command(\"function\"==typeof x&&(p===Ur&&(\"texture2d\"===x._reglType||\"framebuffer\"===x._reglType)||p===Gr&&(\"textureCube\"===x._reglType||\"framebufferCube\"===x._reglType)),\"invalid texture for uniform \"+m,e.commandStr);var w=e.link(x._texture||x.color[0]._texture);t(s,\".uniform1i(\",y,\",\",w+\".bind());\"),t.exit(w,\".unbind();\")}else if(p===Rr||p===Mr||p===Wr){_.optional((function(){_.command(me(x),\"invalid matrix for uniform \"+m,e.commandStr),_.command(p===Rr&&4===x.length||p===Mr&&9===x.length||p===Wr&&16===x.length,\"invalid length for matrix uniform \"+m,e.commandStr)}));var A=e.global.def(\"new Float32Array([\"+Array.prototype.slice.call(x)+\"])\"),k=2;p===Mr?k=3:p===Wr&&(k=4),t(s,\".uniformMatrix\",k,\"fv(\",y,\",false,\",A,\");\")}else{switch(p){case Er:1===h?_.commandType(x,\"number\",\"uniform \"+m,e.commandStr):_.command(me(x)&&x.length===h,\"uniform \"+m,e.commandStr),f=\"1f\";break;case Tr:_.command(me(x)&&x.length&&x.length%2==0&&x.length<=2*h,\"uniform \"+m,e.commandStr),f=\"2f\";break;case Dr:_.command(me(x)&&x.length&&x.length%3==0&&x.length<=3*h,\"uniform \"+m,e.commandStr),f=\"3f\";break;case jr:_.command(me(x)&&x.length&&x.length%4==0&&x.length<=4*h,\"uniform \"+m,e.commandStr),f=\"4f\";break;case Vr:1===h?_.commandType(x,\"boolean\",\"uniform \"+m,e.commandStr):_.command(me(x)&&x.length===h,\"uniform \"+m,e.commandStr),f=\"1i\";break;case Cr:1===h?_.commandType(x,\"number\",\"uniform \"+m,e.commandStr):_.command(me(x)&&x.length===h,\"uniform \"+m,e.commandStr),f=\"1i\";break;case Ir:case zr:_.command(me(x)&&x.length&&x.length%2==0&&x.length<=2*h,\"uniform \"+m,e.commandStr),f=\"2i\";break;case Pr:case Fr:_.command(me(x)&&x.length&&x.length%3==0&&x.length<=3*h,\"uniform \"+m,e.commandStr),f=\"3i\";break;case Lr:case Br:_.command(me(x)&&x.length&&x.length%4==0&&x.length<=4*h,\"uniform \"+m,e.commandStr),f=\"4i\"}h>1?(f+=\"v\",x=e.global.def(\"[\"+Array.prototype.slice.call(x)+\"]\")):x=me(x)?Array.prototype.slice.call(x):x,t(s,\".uniform\",f,\"(\",y,\",\",x,\");\")}continue}g=b.append(e,t)}else{if(!i(fn))continue;g=t.def(u.uniforms,\"[\",r.id(m),\"]\")}p===Ur?(_(!Array.isArray(g),\"must specify a scalar prop for textures\"),t(\"if(\",g,\"&&\",g,'._reglType===\"framebuffer\"){',g,\"=\",g,\".color[0];\",\"}\")):p===Gr&&(_(!Array.isArray(g),\"must specify a scalar prop for cube maps\"),t(\"if(\",g,\"&&\",g,'._reglType===\"framebufferCube\"){',g,\"=\",g,\".color[0];\",\"}\")),_.optional((function(){function r(r,n){e.assert(t,r,'bad data or missing for uniform \"'+m+'\". '+n)}function n(e,t){1===t&&_(!Array.isArray(g),\"must not specify an array type for uniform\"),r(\"Array.isArray(\"+g+\") && typeof \"+g+'[0]===\" '+e+'\" || typeof '+g+'===\"'+e+'\"',\"invalid type, expected \"+e)}function a(t,n,a){Array.isArray(g)?_(g.length&&g.length%t==0&&g.length<=t*a,\"must have length of \"+(1===a?\"\":\"n * \")+t):r(u.isArrayLike+\"(\"+g+\")&&\"+g+\".length && \"+g+\".length % \"+t+\" === 0 && \"+g+\".length<=\"+t*a,\"invalid vector, should have length of \"+(1===a?\"\":\"n * \")+t,e.commandStr)}function i(t){_(!Array.isArray(g),\"must not specify a value type\"),r(\"typeof \"+g+'===\"function\"&&'+g+'._reglType===\"texture'+(3553===t?\"2d\":\"Cube\")+'\"',\"invalid texture type\",e.commandStr)}switch(p){case Cr:n(\"number\",h);break;case zr:a(2,0,h);break;case Fr:a(3,0,h);break;case Br:a(4,0,h);break;case Er:n(\"number\",h);break;case Tr:a(2,0,h);break;case Dr:a(3,0,h);break;case jr:a(4,0,h);break;case Vr:n(\"boolean\",h);break;case Ir:a(2,0,h);break;case Pr:a(3,0,h);break;case Lr:case Rr:a(4,0,h);break;case Mr:a(9,0,h);break;case Wr:a(16,0,h);break;case Ur:i(3553);break;case Gr:i(34067)}}));var S=1;switch(p){case Ur:case Gr:var O=t.def(g,\"._texture\");t(s,\".uniform1i(\",y,\",\",O,\".bind());\"),t.exit(O,\".unbind();\");continue;case Cr:case Vr:f=\"1i\";break;case zr:case Ir:f=\"2i\",S=2;break;case Fr:case Pr:f=\"3i\",S=3;break;case Br:case Lr:f=\"4i\",S=4;break;case Er:f=\"1f\";break;case Tr:f=\"2f\",S=2;break;case Dr:f=\"3f\",S=3;break;case jr:f=\"4f\",S=4;break;case Rr:f=\"Matrix2fv\";break;case Mr:f=\"Matrix3fv\";break;case Wr:f=\"Matrix4fv\"}if(-1===f.indexOf(\"Matrix\")&&h>1&&(f+=\"v\",S=1),\"M\"===f.charAt(0)){t(s,\".uniform\",f,\"(\",y,\",\");var E=Math.pow(p-Rr+2,2),T=e.global.def(\"new Float32Array(\",E,\")\");Array.isArray(g)?t(\"false,(\",V(E,(function(e){return T+\"[\"+e+\"]=\"+g[e]})),\",\",T,\")\"):t(\"false,(Array.isArray(\",g,\")||\",g,\" instanceof Float32Array)?\",g,\":(\",V(E,(function(e){return T+\"[\"+e+\"]=\"+g+\"[\"+e+\"]\"})),\",\",T,\")\"),t(\");\")}else if(S>1){for(var D=[],j=[],C=0;C=0\",\"missing vertex count\")}))):(a=u.def(o,\".\",pr),_.optional((function(){e.assert(u,a+\">=0\",\"missing vertex count\")}))),a}();if(\"number\"==typeof p){if(0===p)return}else r(\"if(\",p,\"){\"),r.exit(\"}\");g&&(c=s(br),l=e.instancing);var h=u+\".type\",b=f.elements&&nn(f.elements)&&!f.vaoActive;function v(){function e(){r(l,\".drawElementsInstancedANGLE(\",[d,p,h,m+\"<<((\"+h+\"-5121)>>1)\",c],\");\")}function t(){r(l,\".drawArraysInstancedANGLE(\",[d,m,p,c],\");\")}u&&\"null\"!==u?b?e():(r(\"if(\",u,\"){\"),e(),r(\"}else{\"),t(),r(\"}\")):t()}function y(){function e(){r(i+\".drawElements(\"+[d,p,h,m+\"<<((\"+h+\"-5121)>>1)\"]+\");\")}function t(){r(i+\".drawArrays(\"+[d,m,p]+\");\")}u&&\"null\"!==u?b?e():(r(\"if(\",u,\"){\"),e(),r(\"}else{\"),t(),r(\"}\")):t()}g&&(\"number\"!=typeof c||c>=0)?\"string\"==typeof c?(r(\"if(\",c,\">0){\"),v(),r(\"}else if(\",c,\"<0){\"),y(),r(\"}\")):v():y()}function q(e,t,r,n,a){var i=B(),o=i.proc(\"body\",a);return _.optional((function(){i.commandStr=t.commandStr,i.command=i.link(t.commandStr)})),g&&(i.instancing=o.def(i.shared.extensions,\".angle_instanced_arrays\")),e(i,o,r,n),i.compile().body}function Q(e,t,r,n){W(e,t),r.useVAO?r.drawVAO?t(e.shared.vao,\".setVAO(\",r.drawVAO.append(e,t),\");\"):t(e.shared.vao,\".setVAO(\",e.shared.vao,\".targetVAO);\"):(t(e.shared.vao,\".setVAO(null);\"),G(e,t,r,n.attributes,(function(){return!0}))),H(e,t,r,n.uniforms,(function(){return!0}),!1),N(e,t,t,r)}function Y(e,t,r,n){function a(){return!0}e.batchId=\"a1\",W(e,t),G(e,t,r,n.attributes,a),H(e,t,r,n.uniforms,a,!1),N(e,t,t,r)}function $(e,t,r,n){W(e,t);var a=r.contextDep,i=t.def(),o=t.def();e.shared.props=o,e.batchId=i;var f=e.scope(),u=e.scope();function s(e){return e.contextDep&&a||e.propDep}function c(e){return!s(e)}if(t(f.entry,\"for(\",i,\"=0;\",i,\"<\",\"a1\",\";++\",i,\"){\",o,\"=\",\"a0\",\"[\",i,\"];\",u,\"}\",f.exit),r.needsContext&&P(e,u,r.context),r.needsFramebuffer&&L(e,u,r.framebuffer),M(e,u,r.state,s),r.profile&&s(r.profile)&&U(e,u,r,!1,!0),n)r.useVAO?r.drawVAO?s(r.drawVAO)?u(e.shared.vao,\".setVAO(\",r.drawVAO.append(e,u),\");\"):f(e.shared.vao,\".setVAO(\",r.drawVAO.append(e,f),\");\"):f(e.shared.vao,\".setVAO(\",e.shared.vao,\".targetVAO);\"):(f(e.shared.vao,\".setVAO(null);\"),G(e,f,r,n.attributes,c),G(e,u,r,n.attributes,s)),H(e,f,r,n.uniforms,c,!1),H(e,u,r,n.uniforms,s,!0),N(e,f,u,r);else{var l=e.global.def(\"{}\"),d=r.shader.progVar.append(e,u),m=u.def(d,\".id\"),p=u.def(l,\"[\",m,\"]\");u(e.shared.gl,\".useProgram(\",d,\".program);\",\"if(!\",p,\"){\",p,\"=\",l,\"[\",m,\"]=\",e.link((function(t){return q(Y,e,r,t,2)})),\"(\",d,\");}\",p,\".call(this,a0[\",i,\"],\",i,\");\")}}function K(e,t,r){var n=t.static[r];if(n&&function(e){if(\"object\"==typeof e&&!me(e)){for(var t=Object.keys(e),r=0;r0&&r(e.shared.current,\".dirty=true;\"),e.shared.vao&&r(e.shared.vao,\".setVAO(null);\")}(f,u),function(e,t){var n=e.proc(\"scope\",3);e.batchId=\"a2\";var a=e.shared,i=a.current;function o(r){var i=t.shader[r];i&&n.set(a.shader,\".\"+r,i.append(e,n))}P(e,n,t.context),t.framebuffer&&t.framebuffer.append(e,n),tn(Object.keys(t.state)).forEach((function(r){var i=t.state[r].append(e,n);me(i)?i.forEach((function(t,a){n.set(e.next[r],\"[\"+a+\"]\",t)})):n.set(a.next,\".\"+r,i)})),U(e,n,t,!0,!0),[dr,hr,pr,br,mr].forEach((function(r){var i=t.draw[r];i&&n.set(a.draw,\".\"+r,\"\"+i.append(e,n))})),Object.keys(t.uniforms).forEach((function(i){var o=t.uniforms[i].append(e,n);Array.isArray(o)&&(o=\"[\"+o.join()+\"]\"),n.set(a.uniforms,\"[\"+r.id(i)+\"]\",o)})),Object.keys(t.attributes).forEach((function(r){var a=t.attributes[r].append(e,n),i=e.scopeAttrib(r);Object.keys(new b).forEach((function(e){n.set(i,\".\"+e,a[e])}))})),t.scopeVAO&&n.set(a.vao,\".targetVAO\",t.scopeVAO.append(e,n)),o(cr),o(lr),Object.keys(t.state).length>0&&(n(i,\".dirty=true;\"),n.exit(i,\".dirty=true;\")),n(\"a1(\",e.shared.context,\",a0,\",e.batchId,\");\")}(f,u),function(e,t){var r=e.proc(\"batch\",2);e.batchId=\"0\",W(e,r);var n=!1,a=!0;Object.keys(t.context).forEach((function(e){n=n||t.context[e].propDep})),n||(P(e,r,t.context),a=!1);var i=t.framebuffer,o=!1;function f(e){return e.contextDep&&n||e.propDep}i?(i.propDep?n=o=!0:i.contextDep&&n&&(o=!0),o||L(e,r,i)):L(e,r,null),t.state.viewport&&t.state.viewport.propDep&&(n=!0),R(e,r,t),M(e,r,t.state,(function(e){return!f(e)})),t.profile&&f(t.profile)||U(e,r,t,!1,\"a1\"),t.contextDep=n,t.needsContext=a,t.needsFramebuffer=o;var u=t.shader.progVar;if(u.contextDep&&n||u.propDep)$(e,r,t,null);else{var s=u.append(e,r);if(r(e.shared.gl,\".useProgram(\",s,\".program);\"),t.shader.program)$(e,r,t,t.shader.program);else{r(e.shared.vao,\".setVAO(null);\");var c=e.global.def(\"{}\"),l=r.def(s,\".id\"),d=r.def(c,\"[\",l,\"]\");r(e.cond(d).then(d,\".call(this,a0,a1);\").else(d,\"=\",c,\"[\",l,\"]=\",e.link((function(r){return q($,e,t,r,2)})),\"(\",s,\");\",d,\".call(this,a0,a1);\"))}}Object.keys(t.state).length>0&&r(e.shared.current,\".dirty=true;\"),e.shared.vao&&r(e.shared.vao,\".setVAO(null);\")}(f,u),t(f.compile(),{destroy:function(){u.shader.program.destroy()}})}}}var sn=function(e,t){if(!t.ext_disjoint_timer_query)return null;var r=[];function n(e){r.push(e)}var a=[];function i(){this.startQueryIndex=-1,this.endQueryIndex=-1,this.sum=0,this.stats=null}var o=[];function f(e){o.push(e)}var u=[];function s(e,t,r){var n=o.pop()||new i;n.startQueryIndex=e,n.endQueryIndex=t,n.sum=0,n.stats=r,u.push(n)}var c=[],l=[];return{beginQuery:function(e){var n=r.pop()||t.ext_disjoint_timer_query.createQueryEXT();t.ext_disjoint_timer_query.beginQueryEXT(35007,n),a.push(n),s(a.length-1,a.length,e)},endQuery:function(){t.ext_disjoint_timer_query.endQueryEXT(35007)},pushScopeStats:s,update:function(){var e,r,i=a.length;if(0!==i){l.length=Math.max(l.length,i+1),c.length=Math.max(c.length,i+1),c[0]=0,l[0]=0;var o=0;for(e=0,r=0;r0)if(Array.isArray(r[0])){f=J(r);for(var c=1,l=1;l0)if(\"number\"==typeof t[0]){var i=L.allocType(d.dtype,t.length);ne(i,t),p(i,a),L.freeType(i)}else if(Array.isArray(t[0])||e(t[0])){n=J(t);var o=K(t,n,d.dtype);p(o,a),L.freeType(o)}else _.raise(\"invalid buffer data\")}else if(G(t)){n=t.shape;var f=t.stride,u=0,s=0,c=0,l=0;1===n.length?(u=n[0],s=1,c=f[0],l=0):2===n.length?(u=n[0],s=n[1],c=f[0],l=f[1]):_.raise(\"invalid shape\");var h=Array.isArray(t.data)?d.dtype:re(t.data),b=L.allocType(h,u*s);ae(b,t.data,u,s,c,l,t.offset),p(b,a),L.freeType(b)}else _.raise(\"invalid data for buffer subdata\");return m},n.profile&&(m.stats=d.stats),m.destroy=function(){l(d)},m},createStream:function(e,t){var r=u.pop();return r||(r=new f(e)),r.bind(),c(r,t,35040,0,1,!1),r},destroyStream:function(e){u.push(e)},clear:function(){H(o).forEach(l),u.forEach(l)},getBuffer:function(e){return e&&e._buffer instanceof f?e._buffer:null},restore:function(){H(o).forEach((function(e){e.buffer=t.createBuffer(),t.bindBuffer(e.type,e.buffer),t.bufferData(e.type,e.persistentData||e.byteLength,e.usage)}))},_initBuffer:c}}(a,l,n,(function(e){return A.destroyBuffer(e)})),w=function(t,r,n,a){var i={},o=0,f={uint8:oe,uint16:fe};function u(e){this.id=o++,i[this.id]=this,this.buffer=e,this.primType=4,this.vertCount=0,this.type=0}r.oes_element_index_uint&&(f.uint32=ue),u.prototype.bind=function(){this.buffer.bind()};var s=[];function c(a,i,o,f,u,s,c){var l;if(a.buffer.bind(),i){var d=c;c||e(i)&&(!G(i)||e(i.data))||(d=r.oes_element_index_uint?ue:fe),n._initBuffer(a.buffer,i,o,d,3)}else t.bufferData(se,s,o),a.buffer.dtype=l||oe,a.buffer.usage=o,a.buffer.dimension=3,a.buffer.byteLength=s;if(l=c,!c){switch(a.buffer.dtype){case oe:case 5120:l=oe;break;case fe:case 5122:l=fe;break;case ue:case 5124:l=ue;break;default:_.raise(\"unsupported type for element array\")}a.buffer.dtype=l}a.type=l,_(l!==ue||!!r.oes_element_index_uint,\"32 bit element buffers not supported, enable oes_element_index_uint first\");var m=u;m<0&&(m=a.buffer.byteLength,l===fe?m>>=1:l===ue&&(m>>=2)),a.vertCount=m;var p=f;if(f<0){p=4;var h=a.buffer.dimension;1===h&&(p=0),2===h&&(p=1),3===h&&(p=4)}a.primType=p}function l(e){a.elementsCount--,_(null!==e.buffer,\"must not double destroy elements\"),delete i[e.id],e.buffer.destroy(),e.buffer=null}return{create:function(t,r){var i=n.create(null,se,!0),o=new u(i._buffer);function s(t){if(t)if(\"number\"==typeof t)i(t),o.primType=4,o.vertCount=0|t,o.type=oe;else{var r=null,n=35044,a=-1,u=-1,l=0,d=0;Array.isArray(t)||e(t)||G(t)?r=t:(_.type(t,\"object\",\"invalid arguments for elements\"),\"data\"in t&&(r=t.data,_(Array.isArray(r)||e(r)||G(r),\"invalid data for element buffer\")),\"usage\"in t&&(_.parameter(t.usage,$,\"invalid element buffer usage\"),n=$[t.usage]),\"primitive\"in t&&(_.parameter(t.primitive,ie,\"invalid element buffer primitive\"),a=ie[t.primitive]),\"count\"in t&&(_(\"number\"==typeof t.count&&t.count>=0,\"invalid vertex count for elements\"),u=0|t.count),\"type\"in t&&(_.parameter(t.type,f,\"invalid buffer type\"),d=f[t.type]),\"length\"in t?l=0|t.length:(l=u,d===fe||5122===d?l*=2:d!==ue&&5124!==d||(l*=4))),c(o,r,n,a,u,l,d)}else i(),o.primType=4,o.vertCount=0,o.type=oe;return s}return a.elementsCount++,s(t),s._reglType=\"elements\",s._elements=o,s.subdata=function(e,t){return i.subdata(e,t),s},s.destroy=function(){l(o)},s},createStream:function(e){var t=s.pop();return t||(t=new u(n.create(null,se,!0,!1)._buffer)),c(t,e,35040,-1,-1,0,0),t},destroyStream:function(e){s.push(e)},getElements:function(e){return\"function\"==typeof e&&e._elements instanceof u?e._elements:null},clear:function(){H(i).forEach(l)}}}(a,d,x,l),A=function(t,r,n,a,i,o,f){for(var u=n.maxAttributes,s=new Array(u),c=0;c{for(var e=Object.keys(t),r=0;r=0,'invalid option for vao: \"'+e[r]+'\" valid options are '+Et)})),_(Array.isArray(a),\"attributes must be an array\")}_(a.length0,\"must specify at least one attribute\");var c={},l=n.attributes;l.length=a.length;for(var d=0;d=b.byteLength?m.subdata(b):(m.destroy(),n.buffers[d]=null)),n.buffers[d]||(m=n.buffers[d]=i.create(p,34962,!1,!0)),h.buffer=i.getBuffer(m),h.size=0|h.buffer.dimension,h.normalized=!1,h.type=h.buffer.dtype,h.offset=0,h.stride=0,h.divisor=0,h.state=1,c[d]=1):i.getBuffer(p)?(h.buffer=i.getBuffer(p),h.size=0|h.buffer.dimension,h.normalized=!1,h.type=h.buffer.dtype,h.offset=0,h.stride=0,h.divisor=0,h.state=1):i.getBuffer(p.buffer)?(h.buffer=i.getBuffer(p.buffer),h.size=0|(+p.size||h.buffer.dimension),h.normalized=!!p.normalized||!1,\"type\"in p?(_.parameter(p.type,X,\"invalid buffer type\"),h.type=X[p.type]):h.type=h.buffer.dtype,h.offset=0|(p.offset||0),h.stride=0|(p.stride||0),h.divisor=0|(p.divisor||0),h.state=1,_(h.size>=1&&h.size<=4,\"size must be between 1 and 4\"),_(h.offset>=0,\"invalid offset\"),_(h.stride>=0&&h.stride<=255,\"stride must be between 0 and 255\"),_(h.divisor>=0,\"divisor must be positive\"),_(!h.divisor||!!r.angle_instanced_arrays,\"ANGLE_instanced_arrays must be enabled to use divisor\")):\"x\"in p?(_(d>0,\"first attribute must not be a constant\"),h.x=+p.x||0,h.y=+p.y||0,h.z=+p.z||0,h.w=+p.w||0,h.state=2):_(!1,\"invalid attribute spec for location \"+d)}for(var v=0;v1)for(var v=0;v1&&(y=y.replace(\"[0]\",\"\")),u(b,new f(y,r.id(y),e.getUniformLocation(m,y),c))}var x=e.getProgramParameter(m,35721);a.profile&&(t.stats.attributesCount=x);var w=t.attributes;for(o=0;oe&&(e=t.stats.uniformsCount)})),e},n.getMaxAttributesCount=function(){var e=0;return l.forEach((function(t){t.stats.attributesCount>e&&(e=t.stats.attributesCount)})),e}),{clear:function(){var t=e.deleteShader.bind(e);H(i).forEach(t),i={},H(o).forEach(t),o={},l.forEach((function(t){e.deleteProgram(t.program)})),l.length=0,c={},n.shaderCount=0},program:function(r,a,f,u){_.command(r>=0,\"missing vertex shader\",f),_.command(a>=0,\"missing fragment shader\",f);var s=c[a];s||(s=c[a]={});var d=s[r];if(d&&(d.refCount++,!u))return d;var h=new m(a,r);return n.shaderCount++,p(h,f,u),d||(s[r]=h),l.push(h),t(h,{destroy:function(){if(h.refCount--,h.refCount<=0){e.deleteProgram(h.program);var t=l.indexOf(h);l.splice(t,1),n.shaderCount--}s[h.vertId].refCount<=0&&(e.deleteShader(o[h.vertId]),delete o[h.vertId],delete c[h.fragId][h.vertId]),Object.keys(c[h.fragId]).length||(e.deleteShader(i[h.fragId]),delete i[h.fragId],delete c[h.fragId])}})},restore:function(){i={},o={};for(var e=0;e=2,\"invalid renderbuffer shape\"),f=0|m[0],u=0|m[1]}else\"radius\"in d&&(f=u=0|d.radius),\"width\"in d&&(f=0|d.width),\"height\"in d&&(u=0|d.height);\"format\"in d&&(_.parameter(d.format,i,\"invalid renderbuffer format\"),s=i[d.format])}else\"number\"==typeof t?(f=0|t,u=\"number\"==typeof n?0|n:f):t?_.raise(\"invalid arguments to renderbuffer constructor\"):f=u=1;if(_(f>0&&u>0&&f<=r.maxRenderbufferSize&&u<=r.maxRenderbufferSize,\"invalid renderbuffer size\"),f!==c.width||u!==c.height||s!==c.format)return l.width=c.width=f,l.height=c.height=u,c.format=s,e.bindRenderbuffer(mt,c.renderbuffer),e.renderbufferStorage(mt,s,f,u),_(0===e.getError(),\"invalid render buffer format\"),a.profile&&(c.stats.size=bt(c.format,c.width,c.height)),l.format=o[c.format],l}return u[c.id]=c,n.renderbufferCount++,l(t,f),l.resize=function(t,n){var i=0|t,o=0|n||i;return i===c.width&&o===c.height||(_(i>0&&o>0&&i<=r.maxRenderbufferSize&&o<=r.maxRenderbufferSize,\"invalid renderbuffer size\"),l.width=c.width=i,l.height=c.height=o,e.bindRenderbuffer(mt,c.renderbuffer),e.renderbufferStorage(mt,c.format,i,o),_(0===e.getError(),\"invalid render buffer format\"),a.profile&&(c.stats.size=bt(c.format,c.width,c.height))),l},l._reglType=\"renderbuffer\",l._renderbuffer=c,a.profile&&(l.stats=c.stats),l.destroy=function(){c.decRef()},l},clear:function(){H(u).forEach(c)},restore:function(){H(u).forEach((function(t){t.renderbuffer=e.createRenderbuffer(),e.bindRenderbuffer(mt,t.renderbuffer),e.renderbufferStorage(mt,t.format,t.width,t.height)})),e.bindRenderbuffer(mt,null)}}}(a,d,y,l,n),E=function(e,r,n,a,i,o){var f={cur:null,next:null,dirty:!1,setFBO:null},u=[\"rgba\"],s=[\"rgba4\",\"rgb565\",\"rgb5 a1\"];r.ext_srgb&&s.push(\"srgba\"),r.ext_color_buffer_half_float&&s.push(\"rgba16f\",\"rgb16f\"),r.webgl_color_buffer_float&&s.push(\"rgba32f\");var c=[\"uint8\"];function l(e,t,r){this.target=e,this.texture=t,this.renderbuffer=r;var n=0,a=0;t?(n=t.width,a=t.height):r&&(n=r.width,a=r.height),this.width=n,this.height=a}function d(e){e&&(e.texture&&e.texture._texture.decRef(),e.renderbuffer&&e.renderbuffer._renderbuffer.decRef())}function m(e,t,r){if(e)if(e.texture){var n=e.texture._texture,a=Math.max(1,n.width),i=Math.max(1,n.height);_(a===t&&i===r,\"inconsistent width/height for supplied texture\"),n.refCount+=1}else{var o=e.renderbuffer._renderbuffer;_(o.width===t&&o.height===r,\"inconsistent width/height for renderbuffer\"),o.refCount+=1}}function p(t,r){r&&(r.texture?e.framebufferTexture2D(vt,t,r.target,r.texture._texture.texture,0):e.framebufferRenderbuffer(vt,t,gt,r.renderbuffer._renderbuffer.renderbuffer))}function h(e){var t=yt,r=null,n=null,a=e;\"object\"==typeof e&&(a=e.data,\"target\"in e&&(t=0|e.target)),_.type(a,\"function\",\"invalid attachment data\");var i=a._reglType;return\"texture2d\"===i?(r=a,_(t===yt)):\"textureCube\"===i?(r=a,_(t>=xt&&t<34075,\"invalid cube map target\")):\"renderbuffer\"===i?(n=a,t=gt):_.raise(\"invalid regl object for attachment\"),new l(t,r,n)}function b(e,t,r,n,o){if(r){var f=a.create2D({width:e,height:t,format:n,type:o});return f._texture.refCount=0,new l(yt,f,null)}var u=i.create({width:e,height:t,format:n});return u._renderbuffer.refCount=0,new l(gt,null,u)}function v(e){return e&&(e.texture||e.renderbuffer)}function g(e,t,r){e&&(e.texture?e.texture.resize(t,r):e.renderbuffer&&e.renderbuffer.resize(t,r),e.width=t,e.height=r)}r.oes_texture_half_float&&c.push(\"half float\",\"float16\"),r.oes_texture_float&&c.push(\"float\",\"float32\");var y=0,x={};function w(){this.id=y++,x[this.id]=this,this.framebuffer=e.createFramebuffer(),this.width=0,this.height=0,this.colorAttachments=[],this.depthAttachment=null,this.stencilAttachment=null,this.depthStencilAttachment=null}function A(e){e.colorAttachments.forEach(d),d(e.depthAttachment),d(e.stencilAttachment),d(e.depthStencilAttachment)}function k(t){var r=t.framebuffer;_(r,\"must not double destroy framebuffer\"),e.deleteFramebuffer(r),t.framebuffer=null,o.framebufferCount--,delete x[t.id]}function S(t){var r;e.bindFramebuffer(vt,t.framebuffer);var a=t.colorAttachments;for(r=0;r=2,\"invalid shape for framebuffer\"),o=z[0],d=z[1]}else\"radius\"in C&&(o=d=C.radius),\"width\"in C&&(o=C.width),\"height\"in C&&(d=C.height);(\"color\"in C||\"colors\"in C)&&(y=C.color||C.colors,Array.isArray(y)&&_(1===y.length||r.webgl_draw_buffers,\"multiple render targets not supported\")),y||(\"colorCount\"in C&&(O=0|C.colorCount,_(O>0,\"invalid color buffer count\")),\"colorTexture\"in C&&(x=!!C.colorTexture,w=\"rgba4\"),\"colorType\"in C&&(k=C.colorType,x?(_(r.oes_texture_float||!(\"float\"===k||\"float32\"===k),\"you must enable OES_texture_float in order to use floating point framebuffer objects\"),_(r.oes_texture_half_float||!(\"half float\"===k||\"float16\"===k),\"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects\")):\"half float\"===k||\"float16\"===k?(_(r.ext_color_buffer_half_float,\"you must enable EXT_color_buffer_half_float to use 16-bit render buffers\"),w=\"rgba16f\"):\"float\"!==k&&\"float32\"!==k||(_(r.webgl_color_buffer_float,\"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers\"),w=\"rgba32f\"),_.oneOf(k,c,\"invalid color type\")),\"colorFormat\"in C&&(w=C.colorFormat,u.indexOf(w)>=0?x=!0:s.indexOf(w)>=0?x=!1:_.optional((function(){x?_.oneOf(C.colorFormat,u,\"invalid color format for texture\"):_.oneOf(C.colorFormat,s,\"invalid color format for renderbuffer\")})))),(\"depthTexture\"in C||\"depthStencilTexture\"in C)&&(j=!(!C.depthTexture&&!C.depthStencilTexture),_(!j||r.webgl_depth_texture,\"webgl_depth_texture extension not supported\")),\"depth\"in C&&(\"boolean\"==typeof C.depth?p=C.depth:(E=C.depth,g=!1)),\"stencil\"in C&&(\"boolean\"==typeof C.stencil?g=C.stencil:(T=C.stencil,p=!1)),\"depthStencil\"in C&&(\"boolean\"==typeof C.depthStencil?p=g=C.depthStencil:(D=C.depthStencil,p=!1,g=!1))}else o=d=1;var F=null,B=null,V=null,I=null;if(Array.isArray(y))F=y.map(h);else if(y)F=[h(y)];else for(F=new Array(O),a=0;a=0||F[a].renderbuffer&&kt.indexOf(F[a].renderbuffer._renderbuffer.format)>=0,\"framebuffer color attachment \"+a+\" is invalid\"),F[a]&&F[a].texture){var L=At[F[a].texture._texture.format]*_t[F[a].texture._texture.type];null===P?P=L:_(P===L,\"all color attachments much have the same number of bits per pixel.\")}return m(B,o,d),_(!B||B.texture&&6402===B.texture._texture.format||B.renderbuffer&&33189===B.renderbuffer._renderbuffer.format,\"invalid depth attachment for framebuffer object\"),m(V,o,d),_(!V||V.renderbuffer&&36168===V.renderbuffer._renderbuffer.format,\"invalid stencil attachment for framebuffer object\"),m(I,o,d),_(!I||I.texture&&34041===I.texture._texture.format||I.renderbuffer&&34041===I.renderbuffer._renderbuffer.format,\"invalid depth-stencil attachment for framebuffer object\"),A(i),i.width=o,i.height=d,i.colorAttachments=F,i.depthAttachment=B,i.stencilAttachment=V,i.depthStencilAttachment=I,l.color=F.map(v),l.depth=v(B),l.stencil=v(V),l.depthStencil=v(I),l.width=i.width,l.height=i.height,S(i),l}return o.framebufferCount++,l(e,a),t(l,{resize:function(e,t){_(f.next!==i,\"can not resize a framebuffer which is currently in use\");var r=Math.max(0|e,1),n=Math.max(0|t||r,1);if(r===i.width&&n===i.height)return l;for(var a=i.colorAttachments,o=0;o=2,\"invalid shape for framebuffer\"),_(g[0]===g[1],\"cube framebuffer must be square\"),d=g[0]}else\"radius\"in v&&(d=0|v.radius),\"width\"in v?(d=0|v.width,\"height\"in v&&_(v.height===d,\"must be square\")):\"height\"in v&&(d=0|v.height);(\"color\"in v||\"colors\"in v)&&(m=v.color||v.colors,Array.isArray(m)&&_(1===m.length||r.webgl_draw_buffers,\"multiple render targets not supported\")),m||(\"colorCount\"in v&&(b=0|v.colorCount,_(b>0,\"invalid color buffer count\")),\"colorType\"in v&&(_.oneOf(v.colorType,c,\"invalid color type\"),h=v.colorType),\"colorFormat\"in v&&(p=v.colorFormat,_.oneOf(v.colorFormat,u,\"invalid color format for texture\"))),\"depth\"in v&&(l.depth=v.depth),\"stencil\"in v&&(l.stencil=v.stencil),\"depthStencil\"in v&&(l.depthStencil=v.depthStencil)}else d=1;if(m)if(Array.isArray(m))for(s=[],n=0;n0&&(l.depth=i[0].depth,l.stencil=i[0].stencil,l.depthStencil=i[0].depthStencil),i[n]?i[n](l):i[n]=O(l)}return t(o,{width:d,height:d,color:s})}return o(e),t(o,{faces:i,resize:function(e){var t,r=0|e;if(_(r>0&&r<=n.maxCubeMapSize,\"invalid radius for cube fbo\"),r===o.width)return o;var a=o.color;for(t=0;t=0;--e){var t=I[e];t&&t(v,null,0)}a.flush(),m&&m.update()}function ce(){!Q&&I.length>0&&(Q=j.next(Y))}function le(){Q&&(j.cancel(Y),Q=null)}function de(e){e.preventDefault(),o=!0,le(),P.forEach((function(e){e()}))}function me(e){a.getError(),o=!1,f.restore(),k.restore(),x.restore(),S.restore(),O.restore(),E.restore(),A.restore(),m&&m.restore(),T.procs.refresh(),ce(),N.forEach((function(e){e()}))}function pe(e){function r(e,t){var r={},n={};return Object.keys(e).forEach((function(a){var i=e[a];if(D.isDynamic(i))n[a]=D.unbox(i,a);else{if(t&&Array.isArray(i))for(var o=0;o0)return l.call(this,function(e){for(;m.length=0,\"cannot cancel a frame twice\"),I[t]=function e(){var t=dn(I,e);I[t]=I[I.length-1],I.length-=1,I.length<=0&&le()}}}}function ge(){var e=F.viewport,t=F.scissor_box;e[0]=e[1]=t[0]=t[1]=0,v.viewportWidth=v.framebufferWidth=v.drawingBufferWidth=e[2]=t[2]=a.drawingBufferWidth,v.viewportHeight=v.framebufferHeight=v.drawingBufferHeight=e[3]=t[3]=a.drawingBufferHeight}function ye(){v.tick+=1,v.time=we(),ge(),T.procs.poll()}function xe(){S.refresh(),ge(),T.procs.refresh(),m&&m.update()}function we(){return(C()-p)/1e3}xe();var Ae=t(pe,{clear:function(e){if(_(\"object\"==typeof e&&e,\"regl.clear() takes an object as input\"),\"framebuffer\"in e)if(e.framebuffer&&\"framebufferCube\"===e.framebuffer_reglType)for(var r=0;r<6;++r)he(t({framebuffer:e.framebuffer.faces[r]},e),be);else he(e,be);else be(0,e)},prop:D.define.bind(null,1),context:D.define.bind(null,2),this:D.define.bind(null,3),draw:pe({}),buffer:function(e){return x.create(e,34962,!1,!1)},elements:function(e){return w.create(e,!1)},texture:S.create2D,cube:S.createCube,renderbuffer:O.create,framebuffer:E.create,framebufferCube:E.createCube,vao:A.createVAO,attributes:i,frame:ve,on:function(e,t){var r;switch(_.type(t,\"function\",\"listener callback must be a function\"),e){case\"frame\":return ve(t);case\"lost\":r=P;break;case\"restore\":r=N;break;case\"destroy\":r=q;break;default:_.raise(\"invalid event, must be one of frame,lost,restore,destroy\")}return r.push(t),{cancel:function(){for(var e=0;e=0},read:z,destroy:function(){I.length=0,le(),V&&(V.removeEventListener(cn,de),V.removeEventListener(ln,me)),k.clear(),E.clear(),O.clear(),A.clear(),S.clear(),w.clear(),x.clear(),m&&m.clear(),q.forEach((function(e){e()}))},_gl:a,_refresh:xe,poll:function(){ye(),m&&m.update()},now:we,stats:l});return n.onDone(null,Ae),Ae}},\"object\"==typeof r&&void 0!==t?t.exports=o():\"function\"==typeof define&&define.amd?define(o):i.createREGL=o()},\n 413: function _(t,e,a,s,r){s();const n=t(414),_=t(9),o=t(12);class c{constructor(t){this._regl=t,this._map=new Map}_create_texture(t){const e=t.length;let a=0;const s=[];let r=0,_=0;for(let n=0;nc[f+1]&&f++;const s=t[f],n=c[f]+.5*s;let o=.5*s-Math.abs(a-n);f%2==1&&(o=-o),m[e]=Math.round(255*(o-r)/(_-r))}return[[a,u,r,_],this._regl.texture({shape:[l,1,1],data:m,wrapS:\"repeat\",format:\"alpha\",type:\"uint8\",mag:\"linear\",min:\"linear\"})]}_get_key(t){return t.join(\",\")}_get_or_create(t){const e=this._get_key(t);let a=this._map.get(e);if(null==a){const s=(0,n.gcd)(t);if(s>1){t=(0,o.map)(t,(t=>t/s)),a=this._get_or_create(t);const[r,n,_]=a;a=[r,n,s],this._map.set(e,a)}else{const[r,n]=this._create_texture(t);a=[r,n,s],this._map.set(e,a)}}return a}get(t){return t.length%2==1&&(t=(0,_.concat)([t,t])),this._get_or_create(t)}}a.DashCache=c,c.__name__=\"DashCache\"},\n 414: function _(n,t,e,r,o){function u(n,t){let e,r;n>t?(e=n,r=t):(e=t,r=n);let o=e%r;for(;0!=o;)e=r,r=o,o=e%r;return r}r(),e.gcd=function(n){let t=n[0];for(let e=1;e= 0.0 ? 1.0 : -1.0;\\n}\\n\\nvoid main()\\n{\\n if (a_show_curr < 0.5) {\\n // Line segment has non-finite value at one or both ends, do not render.\\n gl_Position = vec4(-2.0, -2.0, 0.0, 1.0);\\n return;\\n }\\n\\n const float min_miter_factor_round_join_mesh = sqrt(2.0);\\n\\n int join_type = int(u_line_join + 0.5);\\n int cap_type = int(u_line_cap + 0.5);\\n float halfwidth = 0.5*(u_linewidth + u_antialias);\\n vec2 segment_along = normalize(a_point_end - a_point_start); // unit vector.\\n v_segment_length = length(a_point_end - a_point_start);\\n vec2 segment_right = right_vector(segment_along); // unit vector.\\n vec2 xy;\\n\\n bool miter_too_large_start = false;\\n bool miter_too_large_end = false;\\n\\n v_coords.y = a_position.y*halfwidth; // Overwritten later for end points.\\n\\n bool has_start_cap = a_show_prev < 0.5;\\n bool has_end_cap = a_show_next < 0.5;\\n\\n vec2 point_normal_start;\\n float cos_theta_start;\\n float turn_right_start;\\n if (has_start_cap)\\n point_normal_start = segment_right;\\n else {\\n vec2 prev_right = right_vector(normalize(a_point_start - a_point_prev));\\n point_normal_start = normalize(segment_right + prev_right);\\n cos_theta_start = dot(segment_right, point_normal_start); // Always +ve\\n turn_right_start = sign_no_zero(dot(segment_right, a_point_prev - a_point_start));\\n }\\n\\n vec2 point_normal_end;\\n float cos_theta_end;\\n float turn_right_end;\\n if (has_end_cap)\\n point_normal_end = segment_right;\\n else {\\n vec2 next_right = right_vector(normalize(a_point_next - a_point_end));\\n point_normal_end = normalize(segment_right + next_right);\\n cos_theta_end = dot(segment_right, point_normal_end); // Always +ve\\n turn_right_end = sign_no_zero(dot(segment_right, a_point_next - a_point_end));\\n }\\n\\n float miter_factor_start = 1.0 / dot(segment_right, point_normal_start);\\n float miter_factor_end = 1.0 / dot(segment_right, point_normal_end);\\n if (join_type == miter_join) {\\n // If miter too large, use bevel join instead.\\n miter_too_large_start = (miter_factor_start > u_miter_limit);\\n miter_too_large_end = (miter_factor_end > u_miter_limit);\\n }\\n\\n float sign_at_start = -sign(a_position.x); // +ve at segment start, -ve end.\\n vec2 point = sign_at_start > 0.0 ? a_point_start : a_point_end;\\n vec2 adjacent_point =\\n sign_at_start > 0.0 ? (has_start_cap ? a_point_start : a_point_prev)\\n : (has_end_cap ? a_point_end : a_point_next);\\n\\n if ( (has_start_cap && sign_at_start > 0.0) ||\\n (has_end_cap && sign_at_start < 0.0) ) {\\n // Cap.\\n xy = point - segment_right*(halfwidth*a_position.y);\\n if (cap_type == butt_cap)\\n xy -= sign_at_start*0.5*u_antialias*segment_along;\\n else\\n xy -= sign_at_start*halfwidth*segment_along;\\n }\\n else { // Join.\\n // +ve if turning to right, -ve if to left.\\n float turn_sign = sign_at_start > 0.0 ? turn_right_start : turn_right_end;\\n\\n vec2 adjacent_right = sign_at_start*normalize(right_vector(point - adjacent_point));\\n vec2 point_right = normalize(segment_right + adjacent_right);\\n float miter_factor = sign_at_start > 0.0 ? miter_factor_start : miter_factor_end;\\n bool miter_too_large = sign_at_start > 0.0 ? miter_too_large_start : miter_too_large_end;\\n\\n if (abs(a_position.x) > 1.5) {\\n // Outer point, meets prev/next segment.\\n float factor; // multiplied by halfwidth...\\n\\n if (join_type == bevel_join || (join_type == miter_join && miter_too_large))\\n factor = 1.0 / miter_factor; // cos_theta.\\n else if (join_type == round_join &&\\n miter_factor > min_miter_factor_round_join_mesh)\\n factor = 1.0;\\n else // miter, or round (small angle only).\\n factor = miter_factor;\\n\\n xy = point - point_right*(halfwidth*turn_sign*factor);\\n v_coords.y = turn_sign*halfwidth*factor / miter_factor;\\n }\\n else if (turn_sign*a_position.y < 0.0) {\\n // Inner point, meets prev/next segment.\\n float len = halfwidth*miter_factor;\\n float segment_len = v_segment_length;\\n float adjacent_len = distance(point, adjacent_point);\\n\\n if (len <= min(segment_len, adjacent_len))\\n // Normal behaviour.\\n xy = point - point_right*(len*a_position.y);\\n else\\n // For short wide line segments the inner point using the above\\n // calculation can be outside of the line. Here clipping it.\\n xy = point + segment_right*(halfwidth*turn_sign);\\n }\\n else {\\n // Point along outside edge.\\n xy = point - segment_right*(halfwidth*a_position.y);\\n if (join_type == round_join &&\\n miter_factor > min_miter_factor_round_join_mesh) {\\n xy = line_intersection(xy, segment_along,\\n point - turn_sign*point_right*halfwidth,\\n right_vector(point_right));\\n }\\n }\\n }\\n\\n vec2 pos = xy + 0.5; // Bokeh's offset.\\n pos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(2.0*pos.x - 1.0, 1.0 - 2.0*pos.y, 0.0, 1.0);\\n\\n v_coords.x = dot(xy - a_point_start, segment_along);\\n v_flags = float(int(has_start_cap) +\\n 2*int(has_end_cap) +\\n 4*int(miter_too_large_start) +\\n 8*int(miter_too_large_end));\\n v_cos_theta_turn_right_start = cos_theta_start*turn_right_start;\\n v_cos_theta_turn_right_end = cos_theta_end*turn_right_end;\\n\\n#ifdef DASHED\\n v_length_so_far = a_length_so_far;\\n#endif\\n}\\n\"},\n 416: function _(n,t,a,i,e){i();a.default=\"\\nprecision mediump float;\\n\\nconst int butt_cap = 0;\\nconst int round_cap = 1;\\nconst int square_cap = 2;\\n\\nconst int miter_join = 0;\\nconst int round_join = 1;\\nconst int bevel_join = 2;\\n\\nuniform float u_linewidth;\\nuniform float u_antialias;\\nuniform float u_line_join;\\nuniform float u_line_cap;\\nuniform vec4 u_line_color;\\n#ifdef DASHED\\nuniform sampler2D u_dash_tex;\\nuniform vec4 u_dash_tex_info;\\nuniform float u_dash_scale;\\nuniform float u_dash_offset;\\n#endif\\n\\nvarying float v_segment_length;\\nvarying vec2 v_coords;\\nvarying float v_flags;\\nvarying float v_cos_theta_turn_right_start;\\nvarying float v_cos_theta_turn_right_end;\\n#ifdef DASHED\\nvarying float v_length_so_far;\\n#endif\\n\\nfloat cross_z(in vec2 v0, in vec2 v1)\\n{\\n return v0.x*v1.y - v0.y*v1.x;\\n}\\n\\nfloat point_line_side(in vec2 point, in vec2 start, in vec2 end)\\n{\\n // +ve if point to right of line.\\n // Alternatively could do dot product with right_vector.\\n return cross_z(point - start, end - start);\\n}\\n\\nfloat point_line_distance(in vec2 point, in vec2 start, in vec2 end)\\n{\\n return point_line_side(point, start, end) / distance(start, end);\\n}\\n\\nvec2 right_vector(in vec2 v)\\n{\\n return vec2(v.y, -v.x);\\n}\\n\\nfloat bevel_join_distance(in float sign_start, in float halfwidth)\\n{\\n float cos_theta_turn_right = sign_start > 0.0 ? v_cos_theta_turn_right_start\\n : v_cos_theta_turn_right_end;\\n float cos_theta = abs(cos_theta_turn_right);\\n float turn_right = sign(cos_theta_turn_right);\\n float distance_along = sign_start > 0.0 ? 0.0 : v_segment_length;\\n\\n // In v_coords reference frame (x is along segment, y across).\\n vec2 line_start = vec2(distance_along, halfwidth*turn_right);\\n float sin_alpha = cos_theta;\\n float cos_alpha = sqrt(1.0 - sin_alpha*sin_alpha);\\n vec2 line_along = vec2(-sign_start*turn_right*sin_alpha, -cos_alpha);\\n\\n return halfwidth + sign_start*point_line_distance(\\n v_coords, line_start, line_start+line_along);\\n}\\n\\nfloat cap(in int cap_type, in float x, in float y)\\n{\\n // x is distance along segment in direction away from end of segment,\\n // y is distance across segment.\\n if (cap_type == butt_cap)\\n return max(0.5*u_linewidth - x, abs(y));\\n else if (cap_type == square_cap)\\n return max(-x, abs(y));\\n else // cap_type == round_cap\\n return distance(vec2(min(x, 0.0), y), vec2(0.0, 0.0));\\n}\\n\\nfloat distance_to_alpha(in float dist)\\n{\\n return 1.0 - smoothstep(0.5*(u_linewidth - u_antialias),\\n 0.5*(u_linewidth + u_antialias), dist);\\n}\\n\\n#ifdef DASHED\\nfloat dash_distance(in float x)\\n{\\n // x is in direction of v_coords.x, i.e. along segment.\\n float tex_length = u_dash_tex_info.x;\\n float tex_offset = u_dash_tex_info.y;\\n float tex_dist_min = u_dash_tex_info.z;\\n float tex_dist_max = u_dash_tex_info.w;\\n\\n // Apply offset.\\n x += v_length_so_far - u_dash_scale*tex_offset + u_dash_offset;\\n\\n // Interpolate within texture to obtain distance to dash.\\n float dist = texture2D(u_dash_tex,\\n vec2(x / (tex_length*u_dash_scale), 0.0)).a;\\n\\n // Scale distance within min and max limits.\\n dist = tex_dist_min + dist*(tex_dist_max - tex_dist_min);\\n\\n return u_dash_scale*dist;\\n}\\n\\nfloat clip_dash_distance(in float x, in float offset, in float sign_along)\\n{\\n // Return clipped dash distance, sign_along is +1.0 if looking forward\\n // into next segment and -1.0 if looking backward into previous segment.\\n float half_antialias = 0.5*u_antialias;\\n\\n if (sign_along*x > half_antialias) {\\n // Outside antialias region, use usual dash distance.\\n return dash_distance(offset + x);\\n }\\n else {\\n // Inside antialias region.\\n // Dash distance at edge of antialias region clipped to half_antialias.\\n float edge_dist = min(dash_distance(offset + sign_along*half_antialias), half_antialias);\\n\\n // Physical distance from dash distance at edge of antialias region.\\n return edge_dist + sign_along*x - half_antialias;\\n }\\n}\\n\\nmat2 rotation_matrix(in float sign_start)\\n{\\n // Rotation matrix for v_coords from this segment to prev or next segment.\\n float cos_theta_turn_right = sign_start > 0.0 ? v_cos_theta_turn_right_start\\n : v_cos_theta_turn_right_end;\\n float cos_theta = abs(cos_theta_turn_right);\\n float turn_right = sign(cos_theta_turn_right);\\n\\n float sin_theta = sqrt(1.0 - cos_theta*cos_theta)*sign_start*turn_right;\\n float cos_2theta = 2.0*cos_theta*cos_theta - 1.0;\\n float sin_2theta = 2.0*sin_theta*cos_theta;\\n return mat2(cos_2theta, -sin_2theta, sin_2theta, cos_2theta);\\n}\\n#endif\\n\\nvoid main()\\n{\\n int join_type = int(u_line_join + 0.5);\\n int cap_type = int(u_line_cap + 0.5);\\n float halfwidth = 0.5*(u_linewidth + u_antialias);\\n float half_antialias = 0.5*u_antialias;\\n\\n // Extract flags.\\n int flags = int(v_flags + 0.5);\\n bool miter_too_large_end = (flags / 8 > 0);\\n flags -= 8*int(miter_too_large_end);\\n bool miter_too_large_start = (flags / 4 > 0);\\n flags -= 4*int(miter_too_large_start);\\n bool has_end_cap = (flags / 2 > 0);\\n flags -= 2*int(has_end_cap);\\n bool has_start_cap = flags > 0;\\n\\n float dist = v_coords.y; // For straight segment, and miter join.\\n\\n // Along-segment coords with respect to end of segment, +ve inside segment\\n // so equivalent to v_coords.x at start of segment.\\n float end_coords_x = v_segment_length - v_coords.x;\\n\\n if (v_coords.x <= half_antialias) {\\n // At start of segment, either cap or join.\\n if (has_start_cap)\\n dist = cap(cap_type, v_coords.x, v_coords.y);\\n else if (join_type == round_join)\\n dist = distance(v_coords, vec2(0.0, 0.0));\\n else if (join_type == bevel_join ||\\n (join_type == miter_join && miter_too_large_start))\\n dist = max(abs(dist), bevel_join_distance(1.0, halfwidth));\\n // else a miter join which uses the default dist calculation.\\n }\\n else if (end_coords_x <= half_antialias) {\\n // At end of segment, either cap or join.\\n if (has_end_cap)\\n dist = cap(cap_type, end_coords_x, v_coords.y);\\n else if (join_type == round_join)\\n dist = distance(v_coords, vec2(v_segment_length, 0));\\n else if ((join_type == bevel_join ||\\n (join_type == miter_join && miter_too_large_end)))\\n dist = max(abs(dist), bevel_join_distance(-1.0, halfwidth));\\n // else a miter join which uses the default dist calculation.\\n }\\n\\n float alpha = distance_to_alpha(abs(dist));\\n\\n#ifdef DASHED\\n if (u_dash_tex_info.x >= 0.0) {\\n // Dashes in straight segments (outside of joins) are easily calculated.\\n dist = dash_distance(v_coords.x);\\n\\n if (!has_start_cap && cap_type == butt_cap) {\\n if (v_coords.x < half_antialias) {\\n // Outer of start join rendered solid color or not at all\\n // depending on whether corner point is in dash or gap, with\\n // antialiased ends.\\n if (dash_distance(0.0) > 0.0) {\\n // Corner is solid color.\\n dist = max(dist, min(half_antialias, -v_coords.x));\\n // Avoid visible antialiasing band between corner and dash.\\n dist = max(dist, dash_distance(half_antialias));\\n }\\n else {\\n // Use large negative value so corner not colored.\\n dist = -halfwidth;\\n\\n if (v_coords.x > -half_antialias) {\\n // Consider antialias region of dash after start region.\\n float edge_dist = min(dash_distance(half_antialias), half_antialias);\\n dist = max(dist, edge_dist + v_coords.x - half_antialias);\\n }\\n }\\n }\\n\\n vec2 prev_coords = rotation_matrix(1.0)*v_coords;\\n\\n if (abs(prev_coords.y) < halfwidth && prev_coords.x < half_antialias) {\\n // Extend dashes across from end of previous segment, with antialiased end.\\n float new_dist = clip_dash_distance(prev_coords.x, 0.0, -1.0);\\n new_dist = min(new_dist, 0.5*u_linewidth - abs(prev_coords.y));\\n dist = max(dist, new_dist);\\n }\\n }\\n\\n if (!has_end_cap && cap_type == butt_cap) {\\n if (end_coords_x < half_antialias) {\\n // Similar for end join.\\n if (dash_distance(v_segment_length) > 0.0) {\\n // Corner is solid color.\\n dist = max(dist, min(half_antialias, -end_coords_x));\\n // Avoid visible antialiasing band between corner and dash.\\n dist = max(dist, dash_distance(v_segment_length - half_antialias));\\n }\\n else {\\n // Use large negative value so corner not colored.\\n dist = -halfwidth;\\n\\n if (end_coords_x > -half_antialias) {\\n // Consider antialias region of dash before end region.\\n float edge_dist = min(dash_distance(v_segment_length - half_antialias),\\n half_antialias);\\n dist = max(dist, edge_dist + end_coords_x - half_antialias);\\n }\\n }\\n }\\n\\n vec2 next_coords = rotation_matrix(-1.0)*(v_coords - vec2(v_segment_length, 0.0));\\n\\n if (abs(next_coords.y) < halfwidth && next_coords.x > -half_antialias) {\\n // Extend dashes across from next segment, with antialiased end.\\n float new_dist = clip_dash_distance(next_coords.x, v_segment_length, 1.0);\\n new_dist = min(new_dist, 0.5*u_linewidth - abs(next_coords.y));\\n dist = max(dist, new_dist);\\n }\\n }\\n\\n dist = cap(cap_type, dist, v_coords.y);\\n\\n float dash_alpha = distance_to_alpha(dist);\\n alpha = min(alpha, dash_alpha);\\n }\\n#endif\\n\\n alpha = u_line_color.a*alpha;\\n gl_FragColor = vec4(u_line_color.rgb*alpha, alpha); // Premultiplied alpha.\\n}\\n\"},\n 417: function _(n,i,e,t,a){t();e.default=\"\\nprecision mediump float;\\n\\nattribute vec2 a_position;\\nattribute vec2 a_center;\\nattribute float a_width;\\nattribute float a_height;\\nattribute float a_angle; // In radians\\nattribute float a_linewidth;\\nattribute vec4 a_line_color;\\nattribute vec4 a_fill_color;\\nattribute float a_line_cap;\\nattribute float a_line_join;\\nattribute float a_show;\\n#ifdef HATCH\\nattribute float a_hatch_pattern;\\nattribute float a_hatch_scale;\\nattribute float a_hatch_weight;\\nattribute vec4 a_hatch_color;\\n#endif\\n\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size;\\nuniform float u_antialias;\\nuniform float u_size_hint;\\n\\nvarying float v_linewidth;\\nvarying vec2 v_size; // 2D size for rects compared to 1D for markers.\\nvarying vec4 v_line_color;\\nvarying vec4 v_fill_color;\\nvarying float v_line_cap;\\nvarying float v_line_join;\\nvarying vec2 v_coords;\\n#ifdef HATCH\\nvarying float v_hatch_pattern;\\nvarying float v_hatch_scale;\\nvarying float v_hatch_weight;\\nvarying vec4 v_hatch_color;\\nvarying vec2 v_hatch_coords;\\n#endif\\n\\nvoid main()\\n{\\n if (a_show < 0.5) {\\n // Do not show this rect.\\n gl_Position = vec4(-2.0, -2.0, 0.0, 1.0);\\n return;\\n }\\n\\n v_size = vec2(a_width, a_height);\\n v_linewidth = a_linewidth;\\n v_line_color = a_line_color;\\n v_fill_color = a_fill_color;\\n v_line_cap = a_line_cap;\\n v_line_join = a_line_join;\\n\\n if (v_linewidth < 1.0) {\\n // Linewidth less than 1 is implemented as 1 but with reduced alpha.\\n v_line_color.a *= v_linewidth;\\n v_linewidth = 1.0;\\n }\\n\\n#ifdef HATCH\\n v_hatch_pattern = a_hatch_pattern;\\n v_hatch_scale = a_hatch_scale;\\n v_hatch_weight = a_hatch_weight;\\n v_hatch_color = a_hatch_color;\\n#endif\\n\\n vec2 enclosing_size;\\n // Need extra size of (v_linewidth+u_antialias) if edge of marker parallel to\\n // edge of bounding box. If symmetric spike towards edge then multiply by\\n // 1/cos(theta) where theta is angle between spike and bbox edges.\\n int size_hint = int(u_size_hint + 0.5);\\n if (size_hint == 1) // Dash\\n enclosing_size = vec2(v_size.x + v_linewidth + u_antialias,\\n v_linewidth + u_antialias);\\n else if (size_hint == 2) // Dot\\n enclosing_size = 0.25*v_size + u_antialias;\\n else if (size_hint == 3) // Diamond\\n enclosing_size = vec2(v_size.x*(2.0/3.0) + (v_linewidth + u_antialias)*1.20185,\\n v_size.y + (v_linewidth + u_antialias)*1.80278);\\n else if (size_hint == 4) // Hex\\n enclosing_size = v_size + (v_linewidth + u_antialias)*vec2(2.0/sqrt(3.0), 1.0);\\n else if (size_hint == 5) // Square pin\\n enclosing_size = v_size + (v_linewidth + u_antialias)*3.1;\\n else if (size_hint == 6) // Triangle\\n enclosing_size = vec2(v_size.x + (v_linewidth + u_antialias)*sqrt(3.0),\\n v_size.y*(2.0/sqrt(3.0)) + (v_linewidth + u_antialias)*2.0);\\n else if (size_hint == 7) // Triangle pin\\n enclosing_size = v_size + (v_linewidth + u_antialias)*vec2(4.8, 6.0);\\n else if (size_hint == 8) // Star\\n enclosing_size = vec2(v_size.x*0.95106 + (v_linewidth + u_antialias)*3.0,\\n v_size.y + (v_linewidth + u_antialias)*3.2);\\n else\\n enclosing_size = v_size + v_linewidth + u_antialias;\\n\\n // Coordinates in rotated frame with respect to center of marker, used for\\n // distance functions in fragment shader.\\n v_coords = a_position*enclosing_size;\\n\\n float c = cos(-a_angle);\\n float s = sin(-a_angle);\\n mat2 rotation = mat2(c, -s, s, c);\\n\\n vec2 pos = a_center + rotation*v_coords;\\n#ifdef HATCH\\n // Coordinates for hatching in unrotated frame of reference.\\n v_hatch_coords = pos - 0.5;\\n#endif\\n pos += 0.5; // Make up for Bokeh's offset.\\n pos /= u_canvas_size / u_pixel_ratio; // 0 to 1.\\n gl_Position = vec4(2.0*pos.x - 1.0, 1.0 - 2.0*pos.y, 0.0, 1.0);\\n}\\n\"},\n 418: function _(n,i,e,t,a){t();e.default=\"\\nprecision mediump float;\\n\\nconst float SQRT2 = sqrt(2.0);\\nconst float SQRT3 = sqrt(3.0);\\nconst float PI = 3.14159265358979323846;\\n\\nconst int butt_cap = 0;\\nconst int round_cap = 1;\\nconst int square_cap = 2;\\n\\nconst int miter_join = 0;\\nconst int round_join = 1;\\nconst int bevel_join = 2;\\n\\n#ifdef HATCH\\nconst int hatch_dot = 1;\\nconst int hatch_ring = 2;\\nconst int hatch_horizontal_line = 3;\\nconst int hatch_vertical_line = 4;\\nconst int hatch_cross = 5;\\nconst int hatch_horizontal_dash = 6;\\nconst int hatch_vertical_dash = 7;\\nconst int hatch_spiral = 8;\\nconst int hatch_right_diagonal_line = 9;\\nconst int hatch_left_diagonal_line = 10;\\nconst int hatch_diagonal_cross = 11;\\nconst int hatch_right_diagonal_dash = 12;\\nconst int hatch_left_diagonal_dash = 13;\\nconst int hatch_horizontal_wave = 14;\\nconst int hatch_vertical_wave = 15;\\nconst int hatch_criss_cross = 16;\\n#endif\\n\\nuniform float u_antialias;\\n\\nvarying float v_linewidth;\\nvarying vec2 v_size;\\nvarying vec4 v_line_color;\\nvarying vec4 v_fill_color;\\nvarying float v_line_cap;\\nvarying float v_line_join;\\nvarying vec2 v_coords;\\n#ifdef HATCH\\nvarying float v_hatch_pattern;\\nvarying float v_hatch_scale;\\nvarying float v_hatch_weight;\\nvarying vec4 v_hatch_color;\\nvarying vec2 v_hatch_coords;\\n#endif\\n\\n// Lines within the marker (dot, cross, x and y) are added at the end as they are\\n// on top of the fill rather than astride it.\\n#if defined(USE_CIRCLE_DOT) || defined(USE_DIAMOND_DOT) || defined(USE_DOT) || defined(USE_HEX_DOT) || defined(USE_SQUARE_DOT) || defined(USE_STAR_DOT) || defined(USE_TRIANGLE_DOT)\\n #define APPEND_DOT\\n#endif\\n\\n#if defined(USE_CIRCLE_CROSS) || defined(USE_SQUARE_CROSS)\\n #define APPEND_CROSS\\n#endif\\n\\n#ifdef USE_DIAMOND_CROSS\\n #define APPEND_CROSS_2\\n#endif\\n\\n#ifdef USE_CIRCLE_X\\n #define APPEND_X\\n #define APPEND_X_LEN (0.5*v_size.x)\\n#endif\\n\\n#ifdef USE_SQUARE_X\\n #define APPEND_X\\n #define APPEND_X_LEN (v_size.x/SQRT2)\\n#endif\\n\\n#ifdef USE_CIRCLE_Y\\n #define APPEND_Y\\n#endif\\n\\n#if defined(USE_ASTERISK) || defined(USE_CROSS) || defined(USE_DASH) || defined(USE_DOT) || defined(USE_X) || defined(USE_Y)\\n // No fill.\\n #define LINE_ONLY\\n#endif\\n\\n#if defined(LINE_ONLY) || defined(APPEND_CROSS) || defined(APPEND_CROSS_2) || defined(APPEND_X) || defined(APPEND_Y)\\nfloat end_cap_distance(in vec2 p, in vec2 end_point, in vec2 unit_direction, in int line_cap)\\n{\\n vec2 offset = p - end_point;\\n if (line_cap == butt_cap)\\n return dot(offset, unit_direction) + 0.5*v_linewidth;\\n else if (line_cap == square_cap)\\n return dot(offset, unit_direction);\\n else if (line_cap == round_cap && dot(offset, unit_direction) > 0.0)\\n return length(offset);\\n else\\n // Default is outside of line and should be -0.5*(v_linewidth+u_antialias) or less,\\n // so here avoid the multiplication.\\n return -v_linewidth-u_antialias;\\n}\\n#endif\\n\\n#if !(defined(LINE_ONLY) || defined(USE_SQUARE_PIN) || defined(USE_TRIANGLE_PIN))\\n// For line join at a vec2 corner where 2 line segments meet, consider bevel points which are the 2\\n// points obtained by moving half a linewidth away from the corner point in the directions normal to\\n// the line segments. The line through these points is the bevel line, characterised by a vec2\\n// unit_normal and offset distance from the corner point. Edge of bevel join straddles this line,\\n// round join occurs outside of this line centred on the corner point. In general\\n// offset = (linewidth/2)*sin(alpha/2)\\n// where alpha is the angle between the 2 line segments at the corner.\\nfloat line_join_distance_no_miter(\\n in vec2 p, in vec2 corner, in vec2 unit_normal, in float offset, in int line_join)\\n{\\n // Simplified version of line_join_distance ignoring miter which most markers do implicitly\\n // as they are composed of straight line segments.\\n float dist_outside = dot((p - corner), unit_normal) - offset;\\n\\n if (line_join == bevel_join && dist_outside > -0.5*u_antialias)\\n return dist_outside + 0.5*v_linewidth;\\n else if (dist_outside > 0.0) // round_join\\n return distance(p, corner);\\n else\\n // Default is outside of line and should be -0.5*(v_linewidth+u_antialias) or less,\\n // so here avoid the multiplication.\\n return -v_linewidth-u_antialias;\\n}\\n#endif\\n\\n#if defined(USE_SQUARE_PIN) || defined(USE_TRIANGLE_PIN)\\n// Line join distance including miter but only one-sided check as assuming use of symmetry in\\n// calling function.\\nfloat line_join_distance_incl_miter(\\n in vec2 p, in vec2 corner, in vec2 unit_normal, in float offset, in int line_join,\\n vec2 miter_unit_normal)\\n{\\n float dist_outside = dot((p - corner), unit_normal) - offset;\\n\\n if (line_join == miter_join && dist_outside > 0.0)\\n return dot((p - corner), miter_unit_normal);\\n else if (line_join == bevel_join && dist_outside > -0.5*u_antialias)\\n return dist_outside + 0.5*v_linewidth;\\n else if (dist_outside > 0.0) // round_join\\n return distance(p, corner);\\n else\\n return -v_linewidth-u_antialias;\\n}\\n#endif\\n\\n#if defined(APPEND_CROSS) || defined(APPEND_X) || defined(USE_ASTERISK) || defined(USE_CROSS) || defined(USE_X)\\nfloat one_cross(in vec2 p, in int line_cap, in float len)\\n{\\n p = abs(p);\\n p = (p.y > p.x) ? p.yx : p.xy;\\n float dist = p.y;\\n float end_dist = end_cap_distance(p, vec2(len, 0.0), vec2(1.0, 0.0), line_cap);\\n return max(dist, end_dist);\\n}\\n#endif\\n\\n#ifdef APPEND_CROSS_2\\nfloat one_cross_2(in vec2 p, in int line_cap, in vec2 lengths)\\n{\\n // Cross with different length in x and y directions.\\n p = abs(p);\\n bool switch_xy = (p.y > p.x);\\n p = switch_xy ? p.yx : p.xy;\\n float len = switch_xy ? lengths.y : lengths.x;\\n float dist = p.y;\\n float end_dist = end_cap_distance(p, vec2(len, 0.0), vec2(1.0, 0.0), line_cap);\\n return max(dist, end_dist);\\n}\\n#endif\\n\\n#if defined(APPEND_Y) || defined(USE_Y)\\nfloat one_y(in vec2 p, in int line_cap, in float len)\\n{\\n p = vec2(abs(p.x), -p.y);\\n\\n // End point of line to right is (1/2, 1/3)*len*SQRT3.\\n // Unit vector along line is (1/2, 1/3)*k where k = 6/SQRT13.\\n const float k = 6.0/sqrt(13.0);\\n vec2 unit_along = vec2(0.5*k, k/3.0);\\n vec2 end_point = vec2(0.5*len*SQRT3, len*SQRT3/3.0);\\n float dist = max(abs(dot(p, vec2(-unit_along.y, unit_along.x))),\\n end_cap_distance(p, end_point, unit_along, line_cap));\\n\\n if (p.y < 0.0) {\\n // Vertical line.\\n float vert_dist = max(p.x,\\n end_cap_distance(p, vec2(0.0, -len), vec2(0.0, -1.0), line_cap));\\n dist = min(dist, vert_dist);\\n }\\n return dist;\\n}\\n#endif\\n\\n// One marker_distance function per marker type.\\n// Distance is zero on edge of marker, +ve outside and -ve inside.\\n\\n#ifdef USE_ASTERISK\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n vec2 p_diag = vec2((p.x + p.y)/SQRT2, (p.x - p.y)/SQRT2);\\n float len = 0.5*v_size.x;\\n return min(one_cross(p, line_cap, len), // cross\\n one_cross(p_diag, line_cap, len)); // x\\n}\\n#endif\\n\\n#if defined(USE_CIRCLE) || defined(USE_CIRCLE_CROSS) || defined(USE_CIRCLE_DOT) || defined(USE_CIRCLE_X) || defined(USE_CIRCLE_Y)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n return length(p) - 0.5*v_size.x;\\n}\\n#endif\\n\\n#ifdef USE_CROSS\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n return one_cross(p, line_cap, 0.5*v_size.x);\\n}\\n#endif\\n\\n#ifdef USE_DASH\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n p = abs(p);\\n float dist = p.y;\\n float end_dist = end_cap_distance(p, vec2(0.5*v_size.x, 0.0), vec2(1.0, 0.0), line_cap);\\n return max(dist, end_dist);\\n}\\n#endif\\n\\n#if defined(USE_DIAMOND) || defined(USE_DIAMOND_CROSS) || defined(USE_DIAMOND_DOT)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n // Only need to consider +ve quadrant, the 2 end points are (2r/3, 0) and (0, r)\\n // where r = radius = v_size.x/2.\\n // Line has outward-facing unit normal vec2(1, 2/3)/k where k = SQRT13/3\\n // hence vec2(3, 2)/SQRT13, and distance from origin of 2r/(3k) = 2r/SQRT13.\\n p = abs(p);\\n float r = 0.5*v_size.x;\\n const float SQRT13 = sqrt(13.0);\\n float dist = dot(p, vec2(3.0, 2.0))/SQRT13 - 2.0*r/SQRT13;\\n\\n if (line_join != miter_join) {\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.0, r), vec2(0.0, 1.0), v_linewidth/SQRT13, line_join));\\n\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(r*2.0/3.0, 0.0), vec2(1.0, 0.0), v_linewidth*(1.5/SQRT13), line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_DOT\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Dot is always appended.\\n return v_linewidth+u_antialias;\\n}\\n#endif\\n\\n#if defined(USE_HEX) || defined(USE_HEX_DOT)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // A regular hexagon has v_size.x == v.size_y = r where r is the length of\\n // each of the 3 sides of the 6 equilateral triangles that comprise the hex.\\n // Only consider +ve quadrant, the 3 corners are at (0, h), (rx/2, h), (rx, 0)\\n // where rx = 0.5*v_size.x, ry = 0.5*v_size.y and h = ry*SQRT3/2.\\n // Sloping line has outward normal vec2(h, rx/2). Length of this is\\n // len = sqrt(h**2 + rx**2/4) to give unit normal (h, rx/2)/len and distance\\n // from origin of this line is rx*h/len.\\n p = abs(p);\\n float rx = v_size.x/2.0;\\n float h = v_size.y*(SQRT3/4.0);\\n float len_normal = sqrt(h*h + 0.25*rx*rx);\\n vec2 unit_normal = vec2(h, 0.5*rx) / len_normal;\\n float dist = max(dot(p, unit_normal) - rx*h/len_normal, // Distance from sloping line.\\n p.y - h); // Distance from horizontal line.\\n\\n if (line_join != miter_join) {\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(rx, 0.0), vec2(1.0, 0.0), 0.5*v_linewidth*unit_normal.x, line_join));\\n\\n unit_normal = normalize(unit_normal + vec2(0.0, 1.0)); // At (rx/2, h) corner.\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.5*rx, h), unit_normal, 0.5*v_linewidth*unit_normal.y, line_join));\\n }\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_PLUS\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n // Only need to consider one octant, the +ve quadrant with x >= y.\\n p = abs(p);\\n p = (p.y > p.x) ? p.yx : p.xy;\\n\\n // 3 corners are (r, 0), (r, 3r/8) and (3r/8, 3r/8).\\n float r = 0.5*v_size.x;\\n p = p - vec2(r, 0.375*r); // Distance with respect to outside corner\\n float dist = max(p.x, p.y);\\n\\n if (line_join != miter_join) {\\n // Outside corner\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.0, 0.0), vec2(1.0/SQRT2, 1.0/SQRT2), v_linewidth/(2.0*SQRT2), line_join));\\n\\n // Inside corner\\n dist = min(dist, -line_join_distance_no_miter(\\n p, vec2(-5.0*r/8.0, 0.0), vec2(-1.0/SQRT2, -1.0/SQRT2), v_linewidth/(2.0*SQRT2), line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#if defined(USE_SQUARE) || defined(USE_SQUARE_CROSS) || defined(USE_SQUARE_DOT) || defined(USE_SQUARE_X)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n vec2 p2 = abs(p) - v_size/2.0; // Offset from corner\\n float dist = max(p2.x, p2.y);\\n\\n if (line_join != miter_join)\\n dist = max(dist, line_join_distance_no_miter(\\n p2, vec2(0.0, 0.0), vec2(1.0/SQRT2, 1.0/SQRT2), v_linewidth/(2.0*SQRT2), line_join));\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_SQUARE_PIN\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n p = abs(p);\\n p = (p.y > p.x) ? p.yx : p.xy;\\n // p is in octant between y=0 and y=x.\\n // Quadratic bezier curve passes through (r, r), (11r/16, 0) and (r, -r).\\n // Circular arc that passes through the same points has center at\\n // x = r + 231r/160 = 2.44275r and y = 0 and hence radius is\\n // x - 11r/16 = 1.75626 precisely.\\n float r = 0.5*v_size.x;\\n float center_x = r*2.44375;\\n float radius = r*1.75626;\\n float dist = radius - distance(p, vec2(center_x, 0.0));\\n\\n // Magic number is 0.5*sin(atan(8/5) - pi/4)\\n dist = max(dist, line_join_distance_incl_miter(\\n p, vec2(r, r), vec2(1.0/SQRT2, 1.0/SQRT2), v_linewidth*0.1124297533493792, line_join,\\n vec2(8.0/sqrt(89.0), -5.0/sqrt(89.0))));\\n\\n return dist;\\n}\\n#endif\\n\\n#if defined(USE_STAR) || defined(USE_STAR_DOT)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n const float SQRT5 = sqrt(5.0);\\n const float COS72 = 0.25*(SQRT5 - 1.0);\\n const float SIN72 = sqrt((5.0+SQRT5) / 8.0);\\n\\n float angle = atan(p.x, p.y); // In range -pi to +pi clockwise from +y direction.\\n angle = mod(angle, 0.4*PI) - 0.2*PI; // In range -pi/5 to +pi/5 clockwise from +y direction.\\n p = length(p)*vec2(cos(angle), abs(sin(angle))); // (x,y) in pi/10 (36 degree) sector.\\n\\n // 2 corners are at (r, 0) and (r-a*SIN72, a*COS72) where a = r sqrt(5-2*sqrt(5)).\\n // Line has outward-facing unit normal vec2(COS72, SIN72) and distance from\\n // origin of dot(vec2(r, 0), vec2(COS72, SIN72)) = r*COS72\\n float r = 0.5*v_size.x;\\n float a = r*sqrt(5.0 - 2.0*SQRT5);\\n float dist = dot(p, vec2(COS72, SIN72)) - r*COS72;\\n\\n if (line_join != miter_join) {\\n // Outside corner\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(r, 0.0), vec2(1.0, 0.0), v_linewidth*(0.5*COS72), line_join));\\n\\n // Inside corner\\n const float COS36 = sqrt(0.5 + COS72/2.0);\\n const float SIN36 = sqrt(0.5 - COS72/2.0);\\n dist = min(dist, -line_join_distance_no_miter(\\n p, vec2(r-a*SIN72, a*COS72), vec2(-COS36, -SIN36), v_linewidth*(0.5*COS36), line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#if defined(USE_TRIANGLE) || defined(USE_TRIANGLE_DOT) || defined(USE_INVERTED_TRIANGLE)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n // For normal triangle 3 corners are at (-r, a), (r, a), (0, a-h)=(0, -2h/3)\\n // given r = radius = v_size.x/2, h = SQRT3*r, a = h/3.\\n // Sloping line has outward-facing unit normal vec2(h, -r)/2r = vec2(SQRT3, -1)/2\\n // and distance from origin of a. Horizontal line has outward-facing unit normal\\n // vec2(0, 1) and distance from origin of a.\\n float r = 0.5*v_size.x;\\n float a = r*SQRT3/3.0;\\n\\n // Only need to consider +ve x.\\n#ifdef USE_INVERTED_TRIANGLE\\n p = vec2(abs(p.x), -p.y);\\n#else\\n p = vec2(abs(p.x), p.y);\\n#endif\\n\\n float dist = max(0.5*dot(p, vec2(SQRT3, -1.0)) - a, // Distance from sloping line.\\n p.y - a); // Distance from horizontal line.\\n\\n if (line_join != miter_join) {\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.0, -(2.0/SQRT3)*r), vec2(0.0, -1.0), v_linewidth*0.25, line_join));\\n\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(r, a), vec2(SQRT3/2.0, 0.5), v_linewidth*0.25, line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_TRIANGLE_PIN\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n float angle = atan(p.x, -p.y); // In range -pi to +pi.\\n angle = mod(angle, PI*2.0/3.0) - PI/3.0; // In range -pi/3 to pi/3.\\n p = length(p)*vec2(cos(angle), abs(sin(angle))); // (x,y) in range 0 to pi/3.\\n // Quadratic bezier curve passes through (a, r), ((a+b)/2, 0) and (a, -r) where\\n // a = r/SQRT3, b = 3a/8 = r SQRT3/8. Circular arc that passes through the same points has\\n // center at (a+x, 0) and radius x+c where c = (a-b)/2 and x = (r**2 - c**2) / (2c).\\n // Ignore r factor until the end so can use const.\\n const float a = 1.0/SQRT3;\\n const float b = SQRT3/8.0;\\n const float c = (a-b)/2.0;\\n const float x = (1.0 - c*c) / (2.0*c);\\n const float center_x = x + a;\\n const float radius = x + c;\\n float r = 0.5*v_size.x;\\n float dist = r*radius - distance(p, vec2(r*center_x, 0.0));\\n\\n // Magic number is 0.5*sin(atan(8*sqrt(3)/5) - pi/3)\\n dist = max(dist, line_join_distance_incl_miter(\\n p, vec2(a*r, r), vec2(0.5, 0.5*SQRT3), v_linewidth*0.0881844526878324, line_join,\\n vec2(8.0*SQRT3, -5.0)/sqrt(217.0)));\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_X\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n p = vec2((p.x + p.y)/SQRT2, (p.x - p.y)/SQRT2);\\n return one_cross(p, line_cap, 0.5*v_size.x);\\n}\\n#endif\\n\\n#ifdef USE_Y\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n return one_y(p, line_cap, 0.5*v_size.x);\\n}\\n#endif\\n\\n// Convert distance from edge of marker to fraction in range 0 to 1, depending\\n// on antialiasing width.\\nfloat distance_to_fraction(in float dist)\\n{\\n return 1.0 - smoothstep(-0.5*u_antialias, 0.5*u_antialias, dist);\\n}\\n\\n// Return fraction from 0 (no fill color) to 1 (full fill color).\\nfloat fill_fraction(in float dist)\\n{\\n return distance_to_fraction(dist);\\n}\\n\\n// Return fraction in range 0 (no line color) to 1 (full line color).\\nfloat line_fraction(in float dist)\\n{\\n return distance_to_fraction(abs(dist) - 0.5*v_linewidth);\\n}\\n\\n// Return fraction (in range 0 to 1) of a color, with premultiplied alpha.\\nvec4 fractional_color(in vec4 color, in float fraction)\\n{\\n color.a *= fraction;\\n color.rgb *= color.a;\\n return color;\\n}\\n\\n// Blend colors that have premultiplied alpha.\\nvec4 blend_colors(in vec4 src, in vec4 dest)\\n{\\n return (1.0 - src.a)*dest + src;\\n}\\n\\n#ifdef APPEND_DOT\\nfloat dot_fraction(in vec2 p)\\n{\\n // Assuming v_size.x == v_size.y\\n float radius = 0.125*v_size.x;\\n float dot_distance = max(length(p) - radius, -0.5*u_antialias);\\n return fill_fraction(dot_distance);\\n}\\n#endif\\n\\n#ifdef HATCH\\n// Wrap coordinate(s) by removing integer part to give distance from center of\\n// repeat, in the range -0.5 to +0.5.\\nfloat wrap(in float x)\\n{\\n return fract(x) - 0.5;\\n}\\n\\nvec2 wrap(in vec2 xy)\\n{\\n return fract(xy) - 0.5;\\n}\\n\\n// Return fraction from 0 (no hatch color) to 1 (full hatch color).\\nfloat hatch_fraction(in vec2 coords, in int hatch_pattern)\\n{\\n float scale = v_hatch_scale; // Hatch repeat distance.\\n\\n // Coordinates and linewidth/halfwidth are scaled to hatch repeat distance.\\n coords = coords / scale;\\n float halfwidth = 0.5*v_hatch_weight / scale; // Half the hatch linewidth.\\n\\n // Default is to return fraction of zero, i.e. no pattern.\\n float dist = u_antialias;\\n\\n if (hatch_pattern == hatch_dot) {\\n const float dot_radius = 0.25;\\n dist = length(wrap(coords)) - dot_radius;\\n }\\n else if (hatch_pattern == hatch_ring) {\\n const float ring_radius = 0.25;\\n dist = abs(length(wrap(coords)) - ring_radius) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_horizontal_line) {\\n dist = abs(wrap(coords.y)) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_vertical_line) {\\n dist = abs(wrap(coords.x)) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_cross) {\\n dist = min(abs(wrap(coords.x)), abs(wrap(coords.y))) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_horizontal_dash) {\\n // Dashes have square caps.\\n const float halflength = 0.25;\\n dist = max(abs(wrap(coords.y)),\\n abs(wrap(coords.x) + 0.25) - halflength) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_vertical_dash) {\\n const float halflength = 0.25;\\n dist = max(abs(wrap(coords.x)),\\n abs(wrap(coords.y) + 0.25) - halflength) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_spiral) {\\n vec2 wrap2 = wrap(coords);\\n float angle = wrap(atan(wrap2.y, wrap2.x) / (2.0*PI));\\n // Canvas spiral radius increases by scale*pi/15 each rotation.\\n const float dr = PI/15.0;\\n float radius = length(wrap2);\\n // At any angle, spiral lines are equally spaced dr apart.\\n // Find distance to nearest of these lines.\\n float frac = fract((radius - dr*angle) / dr); // 0 to 1.\\n dist = dr*(abs(frac - 0.5));\\n dist = min(dist, radius) - halfwidth; // Consider center point also.\\n }\\n else if (hatch_pattern == hatch_right_diagonal_line) {\\n dist = abs(wrap(2.0*coords.x + coords.y))/sqrt(5.0) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_left_diagonal_line) {\\n dist = abs(wrap(2.0*coords.x - coords.y))/sqrt(5.0) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_diagonal_cross) {\\n coords = vec2(coords.x + coords.y + 0.5, coords.x - coords.y + 0.5);\\n dist = min(abs(wrap(coords.x)), abs(wrap(coords.y))) / SQRT2 - halfwidth;\\n }\\n else if (hatch_pattern == hatch_right_diagonal_dash) {\\n float across = coords.x + coords.y + 0.5;\\n dist = abs(wrap(across)) / SQRT2; // Distance to nearest solid line.\\n\\n across = floor(across); // Offset for dash.\\n float along = wrap(0.5*(coords.x - coords.y + across));\\n const float halflength = 0.25;\\n along = abs(along) - halflength; // Distance along line.\\n\\n dist = max(dist, along) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_left_diagonal_dash) {\\n float across = coords.x - coords.y + 0.5;\\n dist = abs(wrap(across)) / SQRT2; // Distance to nearest solid line.\\n\\n across = floor(across); // Offset for dash.\\n float along = wrap(0.5*(coords.x + coords.y + across));\\n const float halflength = 0.25;\\n along = abs(along) - halflength; // Distance along line.\\n\\n dist = max(dist, along) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_horizontal_wave) {\\n float wrapx = wrap(coords.x);\\n float wrapy = wrap(coords.y - 0.25 + abs(wrapx));\\n dist = abs(wrapy) / SQRT2 - halfwidth;\\n }\\n else if (hatch_pattern == hatch_vertical_wave) {\\n float wrapy = wrap(coords.y);\\n float wrapx = wrap(coords.x - 0.25 + abs(wrapy));\\n dist = abs(wrapx) / SQRT2 - halfwidth;\\n }\\n else if (hatch_pattern == hatch_criss_cross) {\\n float plus = min(abs(wrap(coords.x)), abs(wrap(coords.y)));\\n\\n coords = vec2(coords.x + coords.y + 0.5, coords.x - coords.y + 0.5);\\n float X = min(abs(wrap(coords.x)), abs(wrap(coords.y))) / SQRT2;\\n\\n dist = min(plus, X) - halfwidth;\\n }\\n\\n return distance_to_fraction(dist*scale);\\n}\\n#endif\\n\\nvoid main()\\n{\\n int line_cap = int(v_line_cap + 0.5);\\n int line_join = int(v_line_join + 0.5);\\n#ifdef HATCH\\n int hatch_pattern = int(v_hatch_pattern + 0.5);\\n#endif\\n\\n float dist = marker_distance(v_coords, line_cap, line_join);\\n\\n#ifdef LINE_ONLY\\n vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\\n#else\\n float fill_frac = fill_fraction(dist);\\n vec4 color = fractional_color(v_fill_color, fill_frac);\\n#endif\\n\\n#if defined(HATCH) && !defined(LINE_ONLY)\\n if (hatch_pattern > 0 && fill_frac > 0.0) {\\n float hatch_frac = hatch_fraction(v_hatch_coords, hatch_pattern);\\n vec4 hatch_color = fractional_color(v_hatch_color, hatch_frac*fill_frac);\\n color = blend_colors(hatch_color, color);\\n }\\n#endif\\n\\n float line_frac = line_fraction(dist);\\n\\n#ifdef APPEND_DOT\\n line_frac = max(line_frac, dot_fraction(v_coords));\\n#endif\\n#ifdef APPEND_CROSS\\n line_frac = max(line_frac, line_fraction(one_cross(v_coords, line_cap, 0.5*v_size.x)));\\n#endif\\n#ifdef APPEND_CROSS_2\\n vec2 lengths = vec2(v_size.x/3.0, v_size.x/2.0);\\n line_frac = max(line_frac, line_fraction(one_cross_2(v_coords, line_cap, lengths)));\\n#endif\\n#ifdef APPEND_X\\n vec2 p = vec2((v_coords.x + v_coords.y)/SQRT2, (v_coords.x - v_coords.y)/SQRT2);\\n line_frac = max(line_frac, line_fraction(one_cross(p, line_cap, APPEND_X_LEN)));\\n#endif\\n#ifdef APPEND_Y\\n line_frac = max(line_frac, line_fraction(one_y(v_coords, line_cap, 0.5*v_size.x)));\\n#endif\\n\\n if (line_frac > 0.0) {\\n vec4 line_color = fractional_color(v_line_color, line_frac);\\n color = blend_colors(line_color, color);\\n }\\n\\n gl_FragColor = color;\\n}\\n\"},\n 419: function _(t,_,i,h,e){h();const s=t(420),a=t(421),r=t(422);class l extends s.BaseGLGlyph{constructor(t,_){super(t,_),this.glyph=_,this._antialias=1.5,this._show_all=!1}_draw_one_marker_type(t,_,i){const h={scissor:this.regl_wrapper.scissor,viewport:this.regl_wrapper.viewport,canvas_size:[_.width,_.height],pixel_ratio:_.pixel_ratio,center:i._centers,width:i._widths,height:i._heights,angle:i._angles,size_hint:(0,r.marker_type_to_size_hint)(t),nmarkers:i.nvertices,antialias:this._antialias,linewidth:this._linewidths,line_color:this._line_rgba,fill_color:this._fill_rgba,line_cap:this._line_caps,line_join:this._line_joins,show:this._show};if(this._have_hatch){const _=Object.assign(Object.assign({},h),{hatch_pattern:this._hatch_patterns,hatch_scale:this._hatch_scales,hatch_weight:this._hatch_weights,hatch_color:this._hatch_rgba});this.regl_wrapper.marker_hatch(t)(_)}else this.regl_wrapper.marker_no_hatch(t)(h)}_set_visuals(){const t=this._get_visuals(),_=t.fill,i=t.line;if(null==this._linewidths&&(this._linewidths=new a.Float32Buffer(this.regl_wrapper),this._line_caps=new a.Uint8Buffer(this.regl_wrapper),this._line_joins=new a.Uint8Buffer(this.regl_wrapper),this._line_rgba=new a.NormalizedUint8Buffer(this.regl_wrapper),this._fill_rgba=new a.NormalizedUint8Buffer(this.regl_wrapper)),this._linewidths.set_from_prop(i.line_width),this._line_caps.set_from_line_cap(i.line_cap),this._line_joins.set_from_line_join(i.line_join),this._line_rgba.set_from_color(i.line_color,i.line_alpha),this._fill_rgba.set_from_color(_.fill_color,_.fill_alpha),this._have_hatch=t.hatch.doit,this._have_hatch){const _=t.hatch;null==this._hatch_patterns&&(this._hatch_patterns=new a.Uint8Buffer(this.regl_wrapper),this._hatch_scales=new a.Float32Buffer(this.regl_wrapper),this._hatch_weights=new a.Float32Buffer(this.regl_wrapper),this._hatch_rgba=new a.NormalizedUint8Buffer(this.regl_wrapper)),this._hatch_patterns.set_from_hatch_pattern(_.hatch_pattern),this._hatch_scales.set_from_prop(_.hatch_scale),this._hatch_weights.set_from_prop(_.hatch_weight),this._hatch_rgba.set_from_color(_.hatch_color,_.hatch_alpha)}}}i.BaseMarkerGL=l,l.__name__=\"BaseMarkerGL\",l.missing_point=-1e4},\n 420: function _(e,t,s,i,h){i();class a{constructor(e,t){this.glyph=t,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1,this.regl_wrapper=e}set_data_changed(){const{data_size:e}=this.glyph;e!=this.nvertices&&(this.nvertices=e,this.size_changed=!0),this.data_changed=!0}set_visuals_changed(){this.visuals_changed=!0}render(e,t,s){if(0==t.length)return!0;const{width:i,height:h}=this.glyph.renderer.plot_view.canvas_view.webgl.canvas,a={pixel_ratio:this.glyph.renderer.plot_view.canvas_view.pixel_ratio,width:i,height:h};return this.draw(t,s,a),!0}}s.BaseGLGlyph=a,a.__name__=\"BaseGLGlyph\"},\n 421: function _(r,t,a,e,s){e();const i=r(422),_=r(22);class n{constructor(r){this.regl_wrapper=r,this.is_scalar=!0}get_sized_array(r){return null!=this.array&&this.array.length==r||(this.array=this.new_array(r)),this.array}is_normalized(){return!1}get length(){return null!=this.array?this.array.length:0}set_from_array(r){const t=r.length,a=this.get_sized_array(t);for(let e=0;e0}_set_data(){const s=this.glyph.sx.length,i=s-1;this._is_closed=s>2&&this.glyph.sx[0]==this.glyph.sx[s-1]&&this.glyph.sy[0]==this.glyph.sy[s-1]&&isFinite(this.glyph.sx[0])&&isFinite(this.glyph.sy[0]),null==this._points&&(this._points=new o.Float32Buffer(this.regl_wrapper));const t=this._points.get_sized_array(2*(s+2));for(let i=1;is/255)),this._linewidth=s.line_width.value,this._linewidth<1&&(this._color[3]*=this._linewidth,this._linewidth=1),this._line_dash=(0,a.resolve_line_dash)(s.line_dash.value),this._is_dashed()&&([this._dash_tex_info,this._dash_tex,this._dash_scale]=this.regl_wrapper.get_dash(this._line_dash),this._dash_offset=s.line_dash_offset.value)}}t.LineGL=r,r.__name__=\"LineGL\"},\n 427: function _(s,t,i,e,r){e();const h=s(421),a=s(424);class n extends a.SingleMarkerGL{constructor(s,t){super(s,t),this.glyph=t}draw(s,t,i){this._draw_impl(s,i,t.glglyph,\"square\")}_get_visuals(){return this.glyph.visuals}_set_data(){const s=this.nvertices;null==this._centers&&(this._centers=new h.Float32Buffer(this.regl_wrapper),this._widths=new h.Float32Buffer(this.regl_wrapper),this._heights=new h.Float32Buffer(this.regl_wrapper),this._angles=new h.Float32Buffer(this.regl_wrapper),this._angles.set_from_scalar(0));const t=this._centers.get_sized_array(2*s),i=this._heights.get_sized_array(s),e=this._widths.get_sized_array(s);for(let r=0;r1||s.length<_){this._show_all=!1,n.fill(0),r=0;for(const e of s)1!=h&&i._marker_types.get(e)!=t||(n[e]=255,r++)}else this._show_all&&a==_||(this._show_all=!0,n.fill(255));this._show.update(),0!=r&&this._draw_one_marker_type(t,e,i)}}_get_visuals(){return this.glyph.visuals}_set_data(){const s=this.nvertices;null==this._centers&&(this._centers=new r.Float32Buffer(this.regl_wrapper),this._widths=new r.Float32Buffer(this.regl_wrapper),this._heights=this._widths,this._angles=new r.Float32Buffer(this.regl_wrapper));const t=this._centers.get_sized_array(2*s);for(let e=0;ethis.render()))}remove(){null!=this.icon_view&&this.icon_view.remove(),super.remove()}styles(){return[...super.styles(),d.default]}_render_button(...t){return(0,c.button)({type:\"button\",disabled:this.model.disabled,class:[h.btn,h[`btn_${this.model.button_type}`]]},...t)}render(){super.render(),this.button_el=this._render_button(this.model.label),this.button_el.addEventListener(\"click\",(()=>this.click())),null!=this.icon_view&&(\"\"!=this.model.label?(0,c.prepend)(this.button_el,this.icon_view.el,(0,c.nbsp)()):(0,c.prepend)(this.button_el,this.icon_view.el),this.icon_view.render()),this.group_el=(0,c.div)({class:h.btn_group},this.button_el),this.el.appendChild(this.group_el)}click(){}}n.AbstractButtonView=b,b.__name__=\"AbstractButtonView\";class p extends _.Control{constructor(t){super(t)}}n.AbstractButton=p,o=p,p.__name__=\"AbstractButton\",o.define((({String:t,Ref:e,Nullable:n})=>({label:[t,\"Button\"],icon:[n(e(a.AbstractIcon)),null],button_type:[r.ButtonType,\"default\"]})))},\n 442: function _(t,e,o,s,n){s();const i=t(512),l=t(43);class c extends i.WidgetView{connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.disabled,(()=>{for(const t of this.controls())(0,l.toggle_attribute)(t,\"disabled\",this.model.disabled)}))}}o.ControlView=c,c.__name__=\"ControlView\";class r extends i.Widget{constructor(t){super(t)}}o.Control=r,r.__name__=\"Control\"},\n 512: function _(i,e,t,n,o){var r;n();const s=i(312);class _ extends s.HTMLBoxView{get orientation(){return\"horizontal\"}get default_size(){return this.model.default_size}_width_policy(){return\"horizontal\"==this.orientation?super._width_policy():\"fixed\"}_height_policy(){return\"horizontal\"==this.orientation?\"fixed\":super._height_policy()}box_sizing(){const i=super.box_sizing();return\"horizontal\"==this.orientation?null==i.width&&(i.width=this.default_size):null==i.height&&(i.height=this.default_size),i}}t.WidgetView=_,_.__name__=\"WidgetView\";class h extends s.HTMLBox{constructor(i){super(i)}}t.Widget=h,r=h,h.__name__=\"Widget\",r.define((({Number:i})=>({default_size:[i,300]}))),r.override({margin:[5,5,5,5]})},\n 444: function _(c,t,s,n,e){n();const o=c(53),_=c(226);class a extends _.DOMView{}s.AbstractIconView=a,a.__name__=\"AbstractIconView\";class r extends o.Model{constructor(c){super(c)}}s.AbstractIcon=r,r.__name__=\"AbstractIcon\"},\n 445: function _(e,t,n,s,i){s();const h=e(1);var o;const _=e(446),u=e(43),r=e(10),c=(0,h.__importStar)(e(229)),a=c;class l extends _.TextInputView{constructor(){super(...arguments),this._open=!1,this._last_value=\"\",this._hover_index=0}styles(){return[...super.styles(),c.default]}render(){super.render(),this.input_el.addEventListener(\"keydown\",(e=>this._keydown(e))),this.input_el.addEventListener(\"keyup\",(e=>this._keyup(e))),this.menu=(0,u.div)({class:[a.menu,a.below]}),this.menu.addEventListener(\"click\",(e=>this._menu_click(e))),this.menu.addEventListener(\"mouseover\",(e=>this._menu_hover(e))),this.el.appendChild(this.menu),(0,u.undisplay)(this.menu)}change_input(){this._open&&this.menu.children.length>0?(this.model.value=this.menu.children[this._hover_index].textContent,this.input_el.focus(),this._hide_menu()):this.model.restrict||super.change_input()}_update_completions(e){(0,u.empty)(this.menu);for(const t of e){const e=(0,u.div)(t);this.menu.appendChild(e)}e.length>0&&this.menu.children[0].classList.add(a.active)}_show_menu(){if(!this._open){this._open=!0,this._hover_index=0,this._last_value=this.model.value,(0,u.display)(this.menu);const e=t=>{const{target:n}=t;n instanceof HTMLElement&&!this.el.contains(n)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,(0,u.undisplay)(this.menu))}_menu_click(e){e.target!=e.currentTarget&&e.target instanceof Element&&(this.model.value=e.target.textContent,this.input_el.focus(),this._hide_menu())}_menu_hover(e){if(e.target!=e.currentTarget&&e.target instanceof Element){let t=0;for(t=0;t0&&(this.menu.children[this._hover_index].classList.remove(a.active),this._hover_index=(0,r.clamp)(e,0,t-1),this.menu.children[this._hover_index].classList.add(a.active))}_keydown(e){}_keyup(e){switch(e.keyCode){case u.Keys.Enter:this.change_input();break;case u.Keys.Esc:this._hide_menu();break;case u.Keys.Up:this._bump_hover(this._hover_index-1);break;case u.Keys.Down:this._bump_hover(this._hover_index+1);break;default:{const e=this.input_el.value;if(e.lengthe:e=>e.toLowerCase();for(const n of this.model.completions)s(n).startsWith(s(e))&&t.push(n);this._update_completions(t),0==t.length?this._hide_menu():this._show_menu()}}}}n.AutocompleteInputView=l,l.__name__=\"AutocompleteInputView\";class d extends _.TextInput{constructor(e){super(e)}}n.AutocompleteInput=d,o=d,d.__name__=\"AutocompleteInput\",o.prototype.default_view=l,o.define((({Boolean:e,Int:t,String:n,Array:s})=>({completions:[s(n),[]],min_characters:[t,2],case_sensitive:[e,!0],restrict:[e,!0]})))},\n 446: function _(t,e,n,p,_){p();const u=t(1);var i;const s=t(447),r=t(43),x=(0,u.__importStar)(t(449));class a extends s.TextLikeInputView{_render_input(){this.input_el=(0,r.input)({type:\"text\",class:x.input})}}n.TextInputView=a,a.__name__=\"TextInputView\";class c extends s.TextLikeInput{constructor(t){super(t)}}n.TextInput=c,i=c,c.__name__=\"TextInput\",i.prototype.default_view=a},\n 447: function _(e,t,n,i,l){var s;i();const h=e(448);class a extends h.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,(()=>{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.value.change,(()=>this.input_el.value=this.model.value)),this.connect(this.model.properties.value_input.change,(()=>this.input_el.value=this.model.value_input)),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled)),this.connect(this.model.properties.placeholder.change,(()=>this.input_el.placeholder=this.model.placeholder)),this.connect(this.model.properties.max_length.change,(()=>{const{max_length:e}=this.model;null!=e?this.input_el.maxLength=e:this.input_el.removeAttribute(\"maxLength\")}))}render(){var e;super.render(),this._render_input();const{input_el:t}=this;t.name=null!==(e=this.model.name)&&void 0!==e?e:\"\",t.value=this.model.value,t.disabled=this.model.disabled,t.placeholder=this.model.placeholder,null!=this.model.max_length&&(t.maxLength=this.model.max_length),t.addEventListener(\"change\",(()=>this.change_input())),t.addEventListener(\"input\",(()=>this.change_input_value())),this.group_el.appendChild(t)}change_input(){this.model.value=this.input_el.value,super.change_input()}change_input_value(){this.model.value_input=this.input_el.value,super.change_input()}}n.TextLikeInputView=a,a.__name__=\"TextLikeInputView\";class u extends h.InputWidget{constructor(e){super(e)}}n.TextLikeInput=u,s=u,u.__name__=\"TextLikeInput\",s.define((({Int:e,String:t,Nullable:n})=>({value:[t,\"\"],value_input:[t,\"\"],placeholder:[t,\"\"],max_length:[n(e),null]})))},\n 448: function _(e,t,n,s,l){s();const i=e(1);var o;const r=e(442),_=e(43),p=(0,i.__importStar)(e(449)),a=p;class c extends r.ControlView{*controls(){yield this.input_el}connect_signals(){super.connect_signals(),this.connect(this.model.properties.title.change,(()=>{this.label_el.textContent=this.model.title}))}styles(){return[...super.styles(),p.default]}render(){super.render();const{title:e}=this.model;this.label_el=(0,_.label)({style:{display:0==e.length?\"none\":\"\"}},e),this.group_el=(0,_.div)({class:a.input_group},this.label_el),this.el.appendChild(this.group_el)}change_input(){}}n.InputWidgetView=c,c.__name__=\"InputWidgetView\";class d extends r.Control{constructor(e){super(e)}}n.InputWidget=d,o=d,d.__name__=\"InputWidget\",o.define((({String:e})=>({title:[e,\"\"]})))},\n 449: function _(o,p,t,n,i){n(),t.root=\"bk-root\",t.input=\"bk-input\",t.input_group=\"bk-input-group\",t.inline=\"bk-inline\",t.spin_wrapper=\"bk-spin-wrapper\",t.spin_btn=\"bk-spin-btn\",t.spin_btn_up=\"bk-spin-btn-up\",t.spin_btn_down=\"bk-spin-btn-down\",t.default='.bk-root .bk-input{display:inline-block;width:100%;flex-grow:1;min-height:31px;padding:0 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;}.bk-root .bk-input:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);}.bk-root .bk-input::placeholder,.bk-root .bk-input:-ms-input-placeholder,.bk-root .bk-input::-moz-placeholder,.bk-root .bk-input::-webkit-input-placeholder{color:#999;opacity:1;}.bk-root .bk-input[disabled]{cursor:not-allowed;background-color:#eee;opacity:1;}.bk-root select:not([multiple]).bk-input,.bk-root select:not([size]).bk-input{height:auto;appearance:none;-webkit-appearance:none;background-image:url(\\'data:image/svg+xml;utf8,\\');background-position:right 0.5em center;background-size:8px 6px;background-repeat:no-repeat;}.bk-root select[multiple].bk-input,.bk-root select[size].bk-input,.bk-root textarea.bk-input{height:auto;}.bk-root .bk-input-group{width:100%;height:100%;display:inline-flex;flex-wrap:nowrap;align-items:start;flex-direction:column;white-space:nowrap;}.bk-root .bk-input-group.bk-inline{flex-direction:row;}.bk-root .bk-input-group.bk-inline > *:not(:first-child){margin-left:5px;}.bk-root .bk-input-group input[type=\"checkbox\"] + span,.bk-root .bk-input-group input[type=\"radio\"] + span{position:relative;top:-2px;margin-left:3px;}.bk-root .bk-input-group > .bk-spin-wrapper{display:inherit;width:inherit;height:inherit;position:relative;overflow:hidden;padding:0;vertical-align:middle;}.bk-root .bk-input-group > .bk-spin-wrapper input{padding-right:20px;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn{position:absolute;display:block;height:50%;min-height:0;min-width:0;width:30px;padding:0;margin:0;right:0;border:none;background:none;cursor:pointer;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn:before{content:\"\";display:inline-block;transform:translateY(-50%);border-left:5px solid transparent;border-right:5px solid transparent;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up{top:0;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:before{border-bottom:5px solid black;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:disabled:before{border-bottom-color:grey;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down{bottom:0;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:before{border-top:5px solid black;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:disabled:before{border-top-color:grey;}'},\n 450: function _(t,e,n,o,c){var s;o();const u=t(441),r=t(251);class i extends u.AbstractButtonView{click(){this.model.trigger_event(new r.ButtonClick),super.click()}}n.ButtonView=i,i.__name__=\"ButtonView\";class _ extends u.AbstractButton{constructor(t){super(t)}}n.Button=_,s=_,_.__name__=\"Button\",s.prototype.default_view=i,s.override({label:\"Button\"})},\n 451: function _(t,e,o,c,a){c();const s=t(1);var n;const i=t(452),r=t(43),u=(0,s.__importStar)(t(318));class _ extends i.ButtonGroupView{get active(){return new Set(this.model.active)}change_active(t){const{active:e}=this;e.has(t)?e.delete(t):e.add(t),this.model.active=[...e].sort()}_update_active(){const{active:t}=this;this._buttons.forEach(((e,o)=>{(0,r.classes)(e).toggle(u.active,t.has(o))}))}}o.CheckboxButtonGroupView=_,_.__name__=\"CheckboxButtonGroupView\";class h extends i.ButtonGroup{constructor(t){super(t)}}o.CheckboxButtonGroup=h,n=h,h.__name__=\"CheckboxButtonGroup\",n.prototype.default_view=_,n.define((({Int:t,Array:e})=>({active:[e(t),[]]})))},\n 452: function _(t,e,n,s,i){s();const o=t(1);var r;const a=t(453),l=t(20),d=t(43),u=(0,o.__importStar)(t(318)),_=u;class c extends a.OrientedControlView{get default_size(){return\"horizontal\"==this.orientation?this.model.default_size:void 0}*controls(){yield*this._buttons}connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.button_type,(()=>this.render())),this.on_change(t.labels,(()=>this.render())),this.on_change(t.active,(()=>this._update_active()))}styles(){return[...super.styles(),u.default]}render(){super.render(),this._buttons=this.model.labels.map(((t,e)=>{const n=(0,d.div)({class:[_.btn,_[`btn_${this.model.button_type}`]],disabled:this.model.disabled},t);return n.addEventListener(\"click\",(()=>this.change_active(e))),n})),this._update_active();const t=\"horizontal\"==this.model.orientation?_.horizontal:_.vertical,e=(0,d.div)({class:[_.btn_group,t]},this._buttons);this.el.appendChild(e)}}n.ButtonGroupView=c,c.__name__=\"ButtonGroupView\";class h extends a.OrientedControl{constructor(t){super(t)}}n.ButtonGroup=h,r=h,h.__name__=\"ButtonGroup\",r.define((({String:t,Array:e})=>({labels:[e(t),[]],button_type:[l.ButtonType,\"default\"]})))},\n 453: function _(n,t,e,o,r){var i;o();const a=n(442),l=n(20);class s extends a.ControlView{get orientation(){return this.model.orientation}}e.OrientedControlView=s,s.__name__=\"OrientedControlView\";class _ extends a.Control{constructor(n){super(n)}}e.OrientedControl=_,i=_,_.__name__=\"OrientedControl\",i.define((()=>({orientation:[l.Orientation,\"horizontal\"]})))},\n 454: function _(e,t,n,i,s){i();const o=e(1);var a;const c=e(455),l=e(43),d=e(9),p=(0,o.__importStar)(e(449));class r extends c.InputGroupView{render(){super.render();const e=(0,l.div)({class:[p.input_group,this.model.inline?p.inline:null]});this.el.appendChild(e);const{active:t,labels:n}=this.model;this._inputs=[];for(let i=0;ithis.change_active(i))),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),(0,d.includes)(t,i)&&(s.checked=!0);const o=(0,l.label)(s,(0,l.span)(n[i]));e.appendChild(o)}}change_active(e){const t=new Set(this.model.active);t.has(e)?t.delete(e):t.add(e),this.model.active=[...t].sort()}}n.CheckboxGroupView=r,r.__name__=\"CheckboxGroupView\";class h extends c.InputGroup{constructor(e){super(e)}}n.CheckboxGroup=h,a=h,h.__name__=\"CheckboxGroup\",a.prototype.default_view=r,a.define((({Boolean:e,Int:t,String:n,Array:i})=>({active:[i(t),[]],labels:[i(n),[]],inline:[e,!1]})))},\n 455: function _(n,t,e,s,o){s();const r=n(1),u=n(442),c=(0,r.__importDefault)(n(449));class _ extends u.ControlView{*controls(){yield*this._inputs}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render()))}styles(){return[...super.styles(),c.default]}}e.InputGroupView=_,_.__name__=\"InputGroupView\";class i extends u.Control{constructor(n){super(n)}}e.InputGroup=i,i.__name__=\"InputGroup\"},\n 456: function _(e,t,i,n,o){n();const s=e(1);var l;const r=e(448),c=e(43),a=e(22),d=(0,s.__importStar)(e(449));class h extends r.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,(()=>{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.color.change,(()=>this.input_el.value=(0,a.color2hexrgb)(this.model.color))),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled))}render(){super.render(),this.input_el=(0,c.input)({type:\"color\",class:d.input,name:this.model.name,value:this.model.color,disabled:this.model.disabled}),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el)}change_input(){this.model.color=this.input_el.value,super.change_input()}}i.ColorPickerView=h,h.__name__=\"ColorPickerView\";class p extends r.InputWidget{constructor(e){super(e)}}i.ColorPicker=p,l=p,p.__name__=\"ColorPicker\",l.prototype.default_view=h,l.define((({Color:e})=>({color:[e,\"#000000\"]})))},\n 457: function _(e,t,i,n,s){n();const a=e(1);var l;const o=(0,a.__importDefault)(e(458)),d=e(448),r=e(43),c=e(20),u=e(8),h=(0,a.__importStar)(e(449)),_=(0,a.__importDefault)(e(459));function p(e){const t=[];for(const i of e)if((0,u.isString)(i))t.push(i);else{const[e,n]=i;t.push({from:e,to:n})}return t}class m extends d.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,min_date:t,max_date:i,disabled_dates:n,enabled_dates:s,position:a,inline:l}=this.model.properties;this.connect(e.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.setDate(this.model.value)})),this.connect(t.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"minDate\",this.model.min_date)})),this.connect(i.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"maxDate\",this.model.max_date)})),this.connect(n.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"disable\",this.model.disabled_dates)})),this.connect(s.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"enable\",this.model.enabled_dates)})),this.connect(a.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"position\",this.model.position)})),this.connect(l.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"inline\",this.model.inline)}))}remove(){var e;null===(e=this._picker)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),_.default]}render(){var e,t;null==this._picker&&(super.render(),this.input_el=(0,r.input)({type:\"text\",class:h.input,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el),this._picker=(0,o.default)(this.input_el,{defaultDate:this.model.value,minDate:null!==(e=this.model.min_date)&&void 0!==e?e:void 0,maxDate:null!==(t=this.model.max_date)&&void 0!==t?t:void 0,inline:this.model.inline,position:this.model.position,disable:p(this.model.disabled_dates),enable:p(this.model.enabled_dates),onChange:(e,t,i)=>this._on_change(e,t,i)}))}_on_change(e,t,i){this.model.value=t,this.change_input()}}i.DatePickerView=m,m.__name__=\"DatePickerView\";class v extends d.InputWidget{constructor(e){super(e)}}i.DatePicker=v,l=v,v.__name__=\"DatePicker\",l.prototype.default_view=m,l.define((({Boolean:e,String:t,Array:i,Tuple:n,Or:s,Nullable:a})=>{const l=i(s(t,n(t,t)));return{value:[t],min_date:[a(t),null],max_date:[a(t),null],disabled_dates:[l,[]],enabled_dates:[l,[]],position:[c.CalendarPosition,\"auto\"],inline:[e,!1]}}))},\n 458: function _(e,n,t,a,i){\n /* flatpickr v4.6.6, @license MIT */var o,r;o=this,r=function(){\"use strict\";\n /*! *****************************************************************************\n Copyright (c) Microsoft Corporation.\n \n Permission to use, copy, modify, and/or distribute this software for any\n purpose with or without fee is hereby granted.\n \n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n PERFORMANCE OF THIS SOFTWARE.\n ***************************************************************************** */var e=function(){return e=Object.assign||function(e){for(var n,t=1,a=arguments.length;t\",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:\"auto\",positionElement:void 0,prevArrow:\"\",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],longhand:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]},months:{shorthand:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],longhand:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var n=e%100;if(n>3&&n<21)return\"th\";switch(n%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\"}},rangeSeparator:\" to \",weekAbbreviation:\"Wk\",scrollTitle:\"Scroll to increment\",toggleTitle:\"Click to toggle\",amPM:[\"AM\",\"PM\"],yearAriaLabel:\"Year\",monthAriaLabel:\"Month\",hourAriaLabel:\"Hour\",minuteAriaLabel:\"Minute\",time_24hr:!1},o=function(e,n){return void 0===n&&(n=2),(\"000\"+e).slice(-1*n)},r=function(e){return!0===e?1:0};function l(e,n,t){var a;return void 0===t&&(t=!1),function(){var i=this,o=arguments;null!==a&&clearTimeout(a),a=window.setTimeout((function(){a=null,t||e.apply(i,o)}),n),t&&!a&&e.apply(i,o)}}var c=function(e){return e instanceof Array?e:[e]};function d(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function s(e,n,t){var a=window.document.createElement(e);return n=n||\"\",t=t||\"\",a.className=n,void 0!==t&&(a.textContent=t),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,n){return n(e)?e:e.parentNode?f(e.parentNode,n):void 0}function m(e,n){var t=s(\"div\",\"numInputWrapper\"),a=s(\"input\",\"numInput \"+e),i=s(\"span\",\"arrowUp\"),o=s(\"span\",\"arrowDown\");if(-1===navigator.userAgent.indexOf(\"MSIE 9.0\")?a.type=\"number\":(a.type=\"text\",a.pattern=\"\\\\d*\"),void 0!==n)for(var r in n)a.setAttribute(r,n[r]);return t.appendChild(a),t.appendChild(i),t.appendChild(o),t}function g(e){try{return\"function\"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var p=function(){},h=function(e,n,t){return t.months[n?\"shorthand\":\"longhand\"][e]},v={D:p,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours(parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*r(new RegExp(t.amPM[1],\"i\").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var a=parseInt(n),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+t.firstDayOfWeek),i},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours(parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:p,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:p,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},D={D:\"(\\\\w+)\",F:\"(\\\\w+)\",G:\"(\\\\d\\\\d|\\\\d)\",H:\"(\\\\d\\\\d|\\\\d)\",J:\"(\\\\d\\\\d|\\\\d)\\\\w+\",K:\"\",M:\"(\\\\w+)\",S:\"(\\\\d\\\\d|\\\\d)\",U:\"(.+)\",W:\"(\\\\d\\\\d|\\\\d)\",Y:\"(\\\\d{4})\",Z:\"(.+)\",d:\"(\\\\d\\\\d|\\\\d)\",h:\"(\\\\d\\\\d|\\\\d)\",i:\"(\\\\d\\\\d|\\\\d)\",j:\"(\\\\d\\\\d|\\\\d)\",l:\"(\\\\w+)\",m:\"(\\\\d\\\\d|\\\\d)\",n:\"(\\\\d\\\\d|\\\\d)\",s:\"(\\\\d\\\\d|\\\\d)\",u:\"(.+)\",w:\"(\\\\d\\\\d|\\\\d)\",y:\"(\\\\d{2})\"},w={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[w.w(e,n,t)]},F:function(e,n,t){return h(w.n(e,n,t)-1,!1,n)},G:function(e,n,t){return o(w.h(e,n,t))},H:function(e){return o(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[r(e.getHours()>11)]},M:function(e,n){return h(e.getMonth(),!0,n)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,n,a){var i=a||r;return void 0===t.formatDate||c?n.split(\"\").map((function(n,a,o){return w[n]&&\"\\\\\"!==o[a-1]?w[n](e,i,t):\"\\\\\"!==n?n:\"\"})).join(\"\"):t.formatDate(e,n,i)}},C=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o;return function(e,n,i,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if(\"string\"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if(\"string\"==typeof e){var s=n||(t||a).dateFormat,u=String(e).trim();if(\"today\"===u)l=new Date,i=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(t&&t.parseDate)l=t.parseDate(e,s);else{l=t&&t.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],g=0,p=0,h=\"\";gl&&(u=a===w.hourElement?u-l-r(!w.amPM):i,m&&H(void 0,1,w.hourElement)),w.amPM&&f&&(1===c?u+d===23:Math.abs(u-d)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(u)}}(e);var c=w._input.value;I(),be(),w._input.value!==c&&w._debouncedChange()}function I(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,n,t=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=t,n=w.amPM.textContent,t=e%12+12*r(n===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0);if(void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0)){var l=void 0!==w.config.maxTime?w.config.maxTime:w.config.maxDate;(t=Math.min(t,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(o){var c=void 0!==w.config.minTime?w.config.minTime:w.config.minDate;(t=Math.max(t,c.getHours()))===c.getHours()&&(a=Math.max(a,c.getMinutes())),a===c.getMinutes()&&(i=Math.max(i,c.getSeconds()))}O(t,a,i)}}function S(e){var n=e||w.latestSelectedDateObj;n&&O(n.getHours(),n.getMinutes(),n.getSeconds())}function _(){var e=w.config.defaultHour,n=w.config.defaultMinute,t=w.config.defaultSeconds;if(void 0!==w.config.minDate){var a=w.config.minDate.getHours(),i=w.config.minDate.getMinutes();(e=Math.max(e,a))===a&&(n=Math.max(i,n)),e===a&&n===i&&(t=w.config.minDate.getSeconds())}if(void 0!==w.config.maxDate){var o=w.config.maxDate.getHours(),r=w.config.maxDate.getMinutes();(e=Math.min(e,o))===o&&(n=Math.min(r,n)),e===o&&n===r&&(t=w.config.maxDate.getSeconds())}return{hours:e,minutes:n,seconds:t}}function O(e,n,t){void 0!==w.latestSelectedDateObj&&w.latestSelectedDateObj.setHours(e%24,n,t||0,0),w.hourElement&&w.minuteElement&&!w.isMobile&&(w.hourElement.value=o(w.config.time_24hr?e:(12+e)%12+12*r(e%12==0)),w.minuteElement.value=o(n),void 0!==w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(e>=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(t)))}function F(e){var n=g(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||\"Enter\"===e.key&&!/[^\\d]/.test(t.toString()))&&Q(t)}function N(e,n,t,a){return n instanceof Array?n.forEach((function(n){return N(e,n,t,a)})):e instanceof Array?e.forEach((function(e){return N(e,n,t,a)})):(e.addEventListener(n,t,a),void w._handlers.push({element:e,event:n,handler:t,options:a}))}function A(){pe(\"onChange\")}function P(e,n){var t=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate=0&&M(e,w.selectedDates[1])<=0}(n)&&!ve(n)&&o.classList.add(\"inRange\"),w.weekNumbers&&1===w.config.showMonths&&\"prevMonthDay\"!==e&&t%7==1&&w.weekNumbers.insertAdjacentHTML(\"beforeend\",\"\"+w.config.getWeek(n)+\"\"),pe(\"onDayCreate\",o),o}function L(e){e.focus(),\"range\"===w.config.mode&&ae(e)}function W(e){for(var n=e>0?0:w.config.showMonths-1,t=e>0?w.config.showMonths:-1,a=n;a!=t;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf(\"hidden\")&&X(c.dateObj))return c}}function R(e,n){var t=ee(document.activeElement||document.body),a=void 0!==e?e:t?document.activeElement:void 0!==w.selectedDateElem&&ee(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&ee(w.todayDateElem)?w.todayDateElem:W(n>0?1:-1);void 0===a?w._input.focus():t?function(e,n){for(var t=-1===e.className.indexOf(\"Month\")?e.dateObj.getMonth():w.currentMonth,a=n>0?w.config.showMonths:-1,i=n>0?1:-1,o=t-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=t-w.currentMonth===o?e.$i+n:n<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf(\"hidden\")&&X(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(n))return L(s)}w.changeMonth(i),R(W(i),0)}(a,n):L(a)}function B(e,n){for(var t=(new Date(e,n,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((n-1+12)%12,e),i=w.utils.getDaysInMonth(n,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?\"prevMonthDay hidden\":\"prevMonthDay\",c=r?\"nextMonthDay hidden\":\"nextMonthDay\",d=a+1-t,u=0;d<=a;d++,u++)o.appendChild(j(l,new Date(e,n-1,d),d,u));for(d=1;d<=i;d++,u++)o.appendChild(j(\"\",new Date(e,n,d),d,u));for(var f=i+1;f<=42-t&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(j(c,new Date(e,n+1,f%i),f,u));var m=s(\"div\",\"dayContainer\");return m.appendChild(o),m}function J(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n1||\"dropdown\"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&ew.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML=\"\";for(var n=0;n<12;n++)if(e(n)){var t=s(\"option\",\"flatpickr-monthDropdown-month\");t.value=new Date(w.currentYear,n).getMonth().toString(),t.textContent=h(n,w.config.shorthandCurrentMonth,w.l10n),t.tabIndex=-1,w.currentMonth===n&&(t.selected=!0),w.monthsDropdownContainer.appendChild(t)}}}function U(){var e,n=s(\"div\",\"flatpickr-month\"),t=window.document.createDocumentFragment();w.config.showMonths>1||\"static\"===w.config.monthSelectorType?e=s(\"span\",\"cur-month\"):(w.monthsDropdownContainer=s(\"select\",\"flatpickr-monthDropdown-months\"),w.monthsDropdownContainer.setAttribute(\"aria-label\",w.l10n.monthAriaLabel),N(w.monthsDropdownContainer,\"change\",(function(e){var n=g(e),t=parseInt(n.value,10);w.changeMonth(t-w.currentMonth),pe(\"onMonthChange\")})),K(),e=w.monthsDropdownContainer);var a=m(\"cur-year\",{tabindex:\"-1\"}),i=a.getElementsByTagName(\"input\")[0];i.setAttribute(\"aria-label\",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute(\"min\",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute(\"max\",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=s(\"div\",\"flatpickr-current-month\");return o.appendChild(e),o.appendChild(a),t.appendChild(o),n.appendChild(t),{container:n,yearElement:i,monthElement:e}}function q(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var n=U();w.yearElements.push(n.yearElement),w.monthElements.push(n.monthElement),w.monthNav.appendChild(n.container)}w.monthNav.appendChild(w.nextMonthNav)}function $(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=s(\"div\",\"flatpickr-weekdays\");for(var e=w.config.showMonths;e--;){var n=s(\"div\",\"flatpickr-weekdaycontainer\");w.weekdayContainer.appendChild(n)}return z(),w.weekdayContainer}function z(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,t=n(w.l10n.weekdays.shorthand);e>0&&e\\n \"+t.join(\"\")+\"\\n \\n \"}}function G(e,n){void 0===n&&(n=!0);var t=n?e:e-w.currentMonth;t<0&&!0===w._hidePrevMonthArrow||t>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=t,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,pe(\"onYearChange\"),K()),J(),pe(\"onMonthChange\"),De())}function V(e){return!(!w.config.appendTo||!w.config.appendTo.contains(e))||w.calendarContainer.contains(e)}function Z(e){if(w.isOpen&&!w.config.inline){var n=g(e),t=V(n),a=n===w.input||n===w.altInput||w.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput)),i=\"blur\"===e.type?a&&e.relatedTarget&&!V(e.relatedTarget):!a&&!t&&!V(e.relatedTarget),o=!w.config.ignoredFocusElements.some((function(e){return e.contains(n)}));i&&o&&(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&\"\"!==w.input.value&&void 0!==w.input.value&&T(),w.close(),w.config&&\"range\"===w.config.mode&&1===w.selectedDates.length&&(w.clear(!1),w.redraw()))}}function Q(e){if(!(!e||w.config.minDate&&ew.config.maxDate.getFullYear())){var n=e,t=w.currentYear!==n;w.currentYear=n||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),t&&(w.redraw(),pe(\"onYearChange\"),K())}}function X(e,n){void 0===n&&(n=!0);var t=w.parseDate(e,void 0,n);if(w.config.minDate&&t&&M(t,w.config.minDate,void 0!==n?n:!w.minDateHasTime)<0||w.config.maxDate&&t&&M(t,w.config.maxDate,void 0!==n?n:!w.maxDateHasTime)>0)return!1;if(0===w.config.enable.length&&0===w.config.disable.length)return!0;if(void 0===t)return!1;for(var a=w.config.enable.length>0,i=a?w.config.enable:w.config.disable,o=0,r=void 0;o=r.from.getTime()&&t.getTime()<=r.to.getTime())return a}return!a}function ee(e){return void 0!==w.daysContainer&&-1===e.className.indexOf(\"hidden\")&&-1===e.className.indexOf(\"flatpickr-disabled\")&&w.daysContainer.contains(e)}function ne(e){e.target!==w._input||e.relatedTarget&&V(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function te(e){var n=g(e),t=w.config.wrap?p.contains(n):n===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!t),o=w.config.inline&&t&&!a;if(13===e.keyCode&&t){if(a)return w.setDate(w._input.value,!0,n===w.altInput?w.config.altFormat:w.config.dateFormat),n.blur();w.open()}else if(V(n)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(n);switch(e.keyCode){case 13:r?(e.preventDefault(),T(),se()):ue(e);break;case 27:e.preventDefault(),se();break;case 8:case 46:t&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||t)w.hourElement&&w.hourElement.focus();else if(e.preventDefault(),void 0!==w.daysContainer&&(!1===a||document.activeElement&&ee(document.activeElement))){var l=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),G(l),R(W(1),0)):R(void 0,l)}break;case 38:case 40:e.preventDefault();var c=40===e.keyCode?1:-1;w.daysContainer&&void 0!==n.$i||n===w.input||n===w.altInput?e.ctrlKey?(e.stopPropagation(),Q(w.currentYear-c),R(W(1),0)):r||R(void 0,7*c):n===w.currentYearElement?Q(w.currentYear-c):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),T(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),s=d.indexOf(n);if(-1!==s){var u=d[s+(e.shiftKey?-1:1)];e.preventDefault(),(u||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&n===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],I(),be();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],I(),be()}(t||V(n))&&pe(\"onKeyDown\",e)}function ae(e){if(1===w.selectedDates.length&&(!e||e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\"))){for(var n=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),t=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),a=Math.min(n,w.selectedDates[0].getTime()),i=Math.max(n,w.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;ca&&cr)?r=c:c>t&&(!l||c0&&m0&&m>l;return g?(f.classList.add(\"notAllowed\"),[\"inRange\",\"startRange\",\"endRange\"].forEach((function(e){f.classList.remove(e)})),\"continue\"):o&&!g?\"continue\":([\"startRange\",\"inRange\",\"endRange\",\"notAllowed\"].forEach((function(e){f.classList.remove(e)})),void(void 0!==e&&(e.classList.add(n<=w.selectedDates[0].getTime()?\"startRange\":\"endRange\"),tn&&m===t&&f.classList.add(\"endRange\"),m>=r&&(0===l||m<=l)&&(d=t,u=n,(c=m)>Math.min(d,u)&&c0||t.getMinutes()>0||t.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return X(e)})),w.selectedDates.length||\"min\"!==e||S(t),be()),w.daysContainer&&(de(),void 0!==t?w.currentYearElement[e]=t.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==t&&a.getFullYear()===t.getFullYear())}}function re(){return w.config.wrap?p.querySelector(\"[data-input]\"):p}function le(){\"object\"!=typeof w.config.locale&&void 0===k.l10ns[w.config.locale]&&w.config.errorHandler(new Error(\"flatpickr: invalid locale \"+w.config.locale)),w.l10n=e(e({},k.l10ns.default),\"object\"==typeof w.config.locale?w.config.locale:\"default\"!==w.config.locale?k.l10ns[w.config.locale]:void 0),D.K=\"(\"+w.l10n.amPM[0]+\"|\"+w.l10n.amPM[1]+\"|\"+w.l10n.amPM[0].toLowerCase()+\"|\"+w.l10n.amPM[1].toLowerCase()+\")\",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===k.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function ce(e){if(void 0!==w.calendarContainer){pe(\"onPreCalendarPosition\");var n=e||w._positionElement,t=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,n){return e+n.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(\" \"),o=i[0],r=i.length>1?i[1]:null,l=n.getBoundingClientRect(),c=window.innerHeight-l.bottom,s=\"above\"===o||\"below\"!==o&&ct,u=window.pageYOffset+l.top+(s?-t-2:n.offsetHeight+2);if(d(w.calendarContainer,\"arrowTop\",!s),d(w.calendarContainer,\"arrowBottom\",s),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;\"center\"===r?(f-=(a-l.width)/2,m=!0):\"right\"===r&&(f-=a-l.width,g=!0),d(w.calendarContainer,\"arrowLeft\",!m&&!g),d(w.calendarContainer,\"arrowCenter\",m),d(w.calendarContainer,\"arrowRight\",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(d(w.calendarContainer,\"rightMost\",h),!w.config.static)if(w.calendarContainer.style.top=u+\"px\",h)if(v){var D=function(){for(var e=null,n=0;nw.currentMonth+w.config.showMonths-1)&&\"range\"!==w.config.mode;if(w.selectedDateElem=t,\"single\"===w.config.mode)w.selectedDates=[a];else if(\"multiple\"===w.config.mode){var o=ve(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else\"range\"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()})));if(I(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(pe(\"onYearChange\"),K()),pe(\"onMonthChange\")}if(De(),J(),be(),i||\"range\"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():L(t),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l=\"single\"===w.config.mode&&!w.config.enableTime,c=\"range\"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&se()}A()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=N,w._setHoursFromDate=S,w._positionCalendar=ce,w.changeMonth=G,w.changeYear=Q,w.clear=function(e,n){if(void 0===e&&(e=!0),void 0===n&&(n=!0),w.input.value=\"\",void 0!==w.altInput&&(w.altInput.value=\"\"),void 0!==w.mobileInput&&(w.mobileInput.value=\"\"),w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===n&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth()),!0===w.config.enableTime){var t=_(),a=t.hours,i=t.minutes,o=t.seconds;O(a,i,o)}w.redraw(),e&&pe(\"onChange\")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove(\"open\"),void 0!==w._input&&w._input.classList.remove(\"active\")),pe(\"onClose\")},w._createElement=s,w.destroy=function(){void 0!==w.config&&pe(\"onDestroy\");for(var e=w._handlers.length;e--;){var n=w._handlers[e];n.element.removeEventListener(n.event,n.handler,n.options)}if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var t=w.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type=\"text\",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput),w.input&&(w.input.type=w.input._type,w.input.classList.remove(\"flatpickr-input\"),w.input.removeAttribute(\"readonly\")),[\"_showTimeInput\",\"latestSelectedDateObj\",\"_hideNextMonthArrow\",\"_hidePrevMonthArrow\",\"__hideNextMonthArrow\",\"__hidePrevMonthArrow\",\"isMobile\",\"isOpen\",\"selectedDateElem\",\"minDateHasTime\",\"maxDateHasTime\",\"days\",\"daysContainer\",\"_input\",\"_positionElement\",\"innerContainer\",\"rContainer\",\"monthNav\",\"todayDateElem\",\"calendarContainer\",\"weekdayContainer\",\"prevMonthNav\",\"nextMonthNav\",\"monthsDropdownContainer\",\"currentMonthElement\",\"currentYearElement\",\"navigationCurrentMonth\",\"selectedDateElem\",\"config\"].forEach((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=X,w.jumpToDate=P,w.open=function(e,n){if(void 0===n&&(n=w._positionElement),!0===w.isMobile){if(e){e.preventDefault();var t=g(e);t&&t.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void pe(\"onOpen\")}if(!w._input.disabled&&!w.config.inline){var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add(\"open\"),w._input.classList.add(\"active\"),pe(\"onOpen\"),ce(n)),!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))}},w.redraw=de,w.set=function(e,n){if(null!==e&&\"object\"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==fe[a]&&fe[a].forEach((function(e){return e()}));else w.config[e]=n,void 0!==fe[e]?fe[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(w.config[e]=c(n));w.redraw(),be(!0)},w.setDate=function(e,n,t){if(void 0===n&&(n=!1),void 0===t&&(t=w.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(n);me(e,t),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),P(void 0,n),S(),0===w.selectedDates.length&&w.clear(!1),be(n),n&&pe(\"onChange\")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var fe={locale:[le,z],showMonths:[q,E,$],minDate:[P],maxDate:[P]};function me(e,n){var t=[];if(e instanceof Array)t=e.map((function(e){return w.parseDate(e,n)}));else if(e instanceof Date||\"number\"==typeof e)t=[w.parseDate(e,n)];else if(\"string\"==typeof e)switch(w.config.mode){case\"single\":case\"time\":t=[w.parseDate(e,n)];break;case\"multiple\":t=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,n)}));break;case\"range\":t=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,n)}))}else w.config.errorHandler(new Error(\"Invalid date supplied: \"+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?t:t.filter((function(e){return e instanceof Date&&X(e,!1)})),\"range\"===w.config.mode&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()}))}function ge(e){return e.slice().map((function(e){return\"string\"==typeof e||\"number\"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&\"object\"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function pe(e,n){if(void 0!==w.config){var t=w.config[e];if(void 0!==t&&t.length>0)for(var a=0;t[a]&&a1||\"static\"===w.config.monthSelectorType?w.monthElements[n].textContent=h(t.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+\" \":w.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYearw.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function we(e){return w.selectedDates.map((function(n){return w.formatDate(n,e)})).filter((function(e,n,t){return\"range\"!==w.config.mode||w.config.enableTime||t.indexOf(e)===n})).join(\"range\"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function be(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):\"\"),w.input.value=we(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=we(w.config.altFormat)),!1!==e&&pe(\"onValueUpdate\")}function Ce(e){var n=g(e),t=w.prevMonthNav.contains(n),a=w.nextMonthNav.contains(n);t||a?G(t?-1:1):w.yearElements.indexOf(n)>=0?n.select():n.classList.contains(\"arrowUp\")?w.changeYear(w.currentYear+1):n.classList.contains(\"arrowDown\")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var n=[\"wrap\",\"weekNumbers\",\"allowInput\",\"allowInvalidPreload\",\"clickOpens\",\"time_24hr\",\"enableTime\",\"noCalendar\",\"altInput\",\"shorthandCurrentMonth\",\"inline\",\"static\",\"enableSeconds\",\"disableMobile\"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,\"enable\",{get:function(){return w.config._enable},set:function(e){w.config._enable=ge(e)}}),Object.defineProperty(w.config,\"disable\",{get:function(){return w.config._disable},set:function(e){w.config._disable=ge(e)}});var r=\"time\"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=k.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?\"H:i\"+(i.enableSeconds?\":S\":\"\"):l+\" H:i\"+(i.enableSeconds?\":S\":\"\")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=k.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?\"h:i\"+(i.enableSeconds?\":S K\":\" K\"):d+\" h:i\"+(i.enableSeconds?\":S\":\"\")+\" K\"}Object.defineProperty(w.config,\"minDate\",{get:function(){return w.config._minDate},set:oe(\"min\")}),Object.defineProperty(w.config,\"maxDate\",{get:function(){return w.config._maxDate},set:oe(\"max\")});var s=function(e){return function(n){w.config[\"min\"===e?\"_minTime\":\"_maxTime\"]=w.parseDate(n,\"H:i:S\")}};Object.defineProperty(w.config,\"minTime\",{get:function(){return w.config._minTime},set:s(\"min\")}),Object.defineProperty(w.config,\"maxTime\",{get:function(){return w.config._maxTime},set:s(\"max\")}),\"time\"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0),Object.assign(w.config,o,i);for(var u=0;u-1?w.config[m]=c(f[m]).map(x).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=re().className+\" \"+w.config.altInputClass),pe(\"onParseConfig\")}(),le(),w.input=re(),w.input?(w.input._type=w.input.type,w.input.type=\"text\",w.input.classList.add(\"flatpickr-input\"),w._input=w.input,w.config.altInput&&(w.altInput=s(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type=\"text\",w.input.setAttribute(\"type\",\"hidden\"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling)),w.config.allowInput||w._input.setAttribute(\"readonly\",\"readonly\"),w._positionElement=w.config.positionElement||w._input):w.config.errorHandler(new Error(\"Invalid input element specified\")),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||(\"INPUT\"!==w.input.nodeName&&\"TEXTAREA\"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&me(e,w.config.dateFormat),w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()0&&(w.latestSelectedDateObj=w.selectedDates[0]),void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,\"H:i\")),void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,\"H:i\")),w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=w.currentMonth),void 0===n&&(n=w.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=s(\"div\",\"flatpickr-calendar\"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=s(\"div\",\"flatpickr-months\"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=s(\"span\",\"flatpickr-prev-month\"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=s(\"span\",\"flatpickr-next-month\"),w.nextMonthNav.innerHTML=w.config.nextArrow,q(),Object.defineProperty(w,\"_hidePrevMonthArrow\",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(d(w.prevMonthNav,\"flatpickr-disabled\",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,\"_hideNextMonthArrow\",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(d(w.nextMonthNav,\"flatpickr-disabled\",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],De(),w.monthNav)),w.innerContainer=s(\"div\",\"flatpickr-innerContainer\"),w.config.weekNumbers){var n=function(){w.calendarContainer.classList.add(\"hasWeeks\");var e=s(\"div\",\"flatpickr-weekwrapper\");e.appendChild(s(\"span\",\"flatpickr-weekday\",w.l10n.weekAbbreviation));var n=s(\"div\",\"flatpickr-weeks\");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,a=n.weekNumbers;w.innerContainer.appendChild(t),w.weekNumbers=a,w.weekWrapper=t}w.rContainer=s(\"div\",\"flatpickr-rContainer\"),w.rContainer.appendChild($()),w.daysContainer||(w.daysContainer=s(\"div\",\"flatpickr-days\"),w.daysContainer.tabIndex=-1),J(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add(\"hasTime\"),w.config.noCalendar&&w.calendarContainer.classList.add(\"noCalendar\"),w.timeContainer=s(\"div\",\"flatpickr-time\"),w.timeContainer.tabIndex=-1;var e=s(\"span\",\"flatpickr-time-separator\",\":\"),n=m(\"flatpickr-hour\",{\"aria-label\":w.l10n.hourAriaLabel});w.hourElement=n.getElementsByTagName(\"input\")[0];var t=m(\"flatpickr-minute\",{\"aria-label\":w.l10n.minuteAriaLabel});if(w.minuteElement=t.getElementsByTagName(\"input\")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?w.config.defaultHour:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(w.config.defaultHour)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():w.config.defaultMinute),w.hourElement.setAttribute(\"step\",w.config.hourIncrement.toString()),w.minuteElement.setAttribute(\"step\",w.config.minuteIncrement.toString()),w.hourElement.setAttribute(\"min\",w.config.time_24hr?\"0\":\"1\"),w.hourElement.setAttribute(\"max\",w.config.time_24hr?\"23\":\"12\"),w.minuteElement.setAttribute(\"min\",\"0\"),w.minuteElement.setAttribute(\"max\",\"59\"),w.timeContainer.appendChild(n),w.timeContainer.appendChild(e),w.timeContainer.appendChild(t),w.config.time_24hr&&w.timeContainer.classList.add(\"time24hr\"),w.config.enableSeconds){w.timeContainer.classList.add(\"hasSeconds\");var a=m(\"flatpickr-second\");w.secondElement=a.getElementsByTagName(\"input\")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():w.config.defaultSeconds),w.secondElement.setAttribute(\"step\",w.minuteElement.getAttribute(\"step\")),w.secondElement.setAttribute(\"min\",\"0\"),w.secondElement.setAttribute(\"max\",\"59\"),w.timeContainer.appendChild(s(\"span\",\"flatpickr-time-separator\",\":\")),w.timeContainer.appendChild(a)}return w.config.time_24hr||(w.amPM=s(\"span\",\"flatpickr-am-pm\",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM)),w.timeContainer}()),d(w.calendarContainer,\"rangeMode\",\"range\"===w.config.mode),d(w.calendarContainer,\"animate\",!0===w.config.animate),d(w.calendarContainer,\"multiMonth\",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?\"inline\":\"static\"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=s(\"div\",\"flatpickr-wrapper\");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){if(w.config.wrap&&[\"open\",\"close\",\"toggle\",\"clear\"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll(\"[data-\"+e+\"]\"),(function(n){return N(n,\"click\",w[e])}))})),w.isMobile)!function(){var e=w.config.enableTime?w.config.noCalendar?\"time\":\"datetime-local\":\"date\";w.mobileInput=s(\"input\",w.input.className+\" flatpickr-mobile\"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr=\"datetime-local\"===e?\"Y-m-d\\\\TH:i:S\":\"date\"===e?\"Y-m-d\":\"H:i:S\",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr)),w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,\"Y-m-d\")),w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,\"Y-m-d\")),w.input.getAttribute(\"step\")&&(w.mobileInput.step=String(w.input.getAttribute(\"step\"))),w.input.type=\"hidden\",void 0!==w.altInput&&(w.altInput.type=\"hidden\");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}N(w.mobileInput,\"change\",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),pe(\"onChange\"),pe(\"onClose\")}))}();else{var e=l(ie,50);if(w._debouncedChange=l(A,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&N(w.daysContainer,\"mouseover\",(function(e){\"range\"===w.config.mode&&ae(g(e))})),N(window.document.body,\"keydown\",te),w.config.inline||w.config.static||N(window,\"resize\",e),void 0!==window.ontouchstart?N(window.document,\"touchstart\",Z):N(window.document,\"click\",Z),N(window.document,\"focus\",Z,{capture:!0}),!0===w.config.clickOpens&&(N(w._input,\"focus\",w.open),N(w._input,\"click\",w.open)),void 0!==w.daysContainer&&(N(w.monthNav,\"click\",Ce),N(w.monthNav,[\"keyup\",\"increment\"],F),N(w.daysContainer,\"click\",ue)),void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement){var n=function(e){return g(e).select()};N(w.timeContainer,[\"increment\"],T),N(w.timeContainer,\"blur\",T,{capture:!0}),N(w.timeContainer,\"click\",Y),N([w.hourElement,w.minuteElement],[\"focus\",\"click\"],n),void 0!==w.secondElement&&N(w.secondElement,\"focus\",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&N(w.amPM,\"click\",(function(e){T(e),A()}))}w.config.allowInput&&N(w._input,\"blur\",ne)}}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&S(w.config.noCalendar?w.latestSelectedDateObj||w.config.minDate:void 0),be(!1)),E();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&n&&ce(),pe(\"onReady\")}(),w}function E(e,n){for(var t=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;ithis.render()));const{start:s,end:l,value:o,step:r,title:n}=this.model.properties;this.on_change([s,l,o,r],(()=>{const{start:t,end:e,value:i,step:s}=this._calc_to();this._noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s},!0)}));const{bar_color:a}=this.model.properties;this.on_change(a,(()=>{this._set_bar_color()}));const{show_value:d}=this.model.properties;this.on_change([o,n,d],(()=>this._update_title()))}styles(){return[...super.styles(),p.default,u.default]}_update_title(){var t;(0,a.empty)(this.title_el);const e=null==this.model.title||0==this.model.title.length&&!this.model.show_value;if(this.title_el.style.display=e?\"none\":\"\",!e&&(0!=(null===(t=this.model.title)||void 0===t?void 0:t.length)&&(this.title_el.textContent=`${this.model.title}: `),this.model.show_value)){const{value:t}=this._calc_to(),e=t.map((t=>this.model.pretty(t))).join(\" .. \");this.title_el.appendChild((0,a.span)({class:m.slider_value},e))}}_set_bar_color(){if(!this.model.disabled){this.slider_el.querySelector(\".noUi-connect\").style.backgroundColor=(0,_.color2css)(this.model.bar_color)}}render(){super.render();const{start:t,end:e,value:i,step:s}=this._calc_to();let l;if(this.model.tooltips){const t={to:t=>this.model.pretty(t)};l=(0,d.repeat)(t,i.length)}else l=!1;if(null==this.slider_el){this.slider_el=(0,a.div)(),this._noUiSlider=n.default.create(this.slider_el,{range:{min:t,max:e},start:i,step:s,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:l,orientation:this.model.orientation,direction:this.model.direction}),this._noUiSlider.on(\"slide\",((t,e,i)=>this._slide(i))),this._noUiSlider.on(\"change\",((t,e,i)=>this._change(i)));const o=(t,e)=>{if(!l)return;this.slider_el.querySelectorAll(\".noUi-handle\")[t].querySelector(\".noUi-tooltip\").style.display=e?\"block\":\"\"};this._noUiSlider.on(\"start\",((t,e)=>o(e,!0))),this._noUiSlider.on(\"end\",((t,e)=>o(e,!1)))}else this._noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s},!0);this._set_bar_color(),this.model.disabled?this.slider_el.setAttribute(\"disabled\",\"true\"):this.slider_el.removeAttribute(\"disabled\"),this.title_el=(0,a.div)({class:m.slider_title}),this._update_title(),this.group_el=(0,a.div)({class:v.input_group},this.title_el,this.slider_el),this.el.appendChild(this.group_el)}_slide(t){this.model.value=this._calc_from(t)}_change(t){const e=this._calc_from(t);this.model.setv({value:e,value_throttled:e})}}b.__name__=\"AbstractBaseSliderView\";class g extends b{_calc_to(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}}_calc_from([t]){return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(t):t}}i.AbstractSliderView=g,g.__name__=\"AbstractSliderView\";class f extends b{_calc_to(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}}_calc_from(t){return t}}i.AbstractRangeSliderView=f,f.__name__=\"AbstractRangeSliderView\";class S extends h.OrientedControl{constructor(t){super(t),this.connected=!1}pretty(t){return this._formatter(t,this.format)}}i.AbstractSlider=S,r=S,S.__name__=\"AbstractSlider\",r.define((({Any:t,Boolean:e,Number:i,String:s,Color:l,Or:o,Enum:r,Ref:n,Nullable:a})=>({title:[a(s),\"\"],show_value:[e,!0],start:[t],end:[t],value:[t],value_throttled:[t],step:[i,1],format:[o(s,n(c.TickFormatter))],direction:[r(\"ltr\",\"rtl\"),\"ltr\"],tooltips:[e,!0],bar_color:[l,\"#e6e6e6\"]})))},\n 462: function _(t,e,r,n,i){var o,s;o=this,s=function(t){\"use strict\";var e,r;function n(t){return\"object\"==typeof t&&\"function\"==typeof t.to}function i(t){t.parentElement.removeChild(t)}function o(t){return null!=t}function s(t){t.preventDefault()}function a(t){return\"number\"==typeof t&&!isNaN(t)&&isFinite(t)}function l(t,e,r){r>0&&(f(t,e),setTimeout((function(){d(t,e)}),r))}function u(t){return Math.max(Math.min(t,100),0)}function c(t){return Array.isArray(t)?t:[t]}function p(t){var e=(t=String(t)).split(\".\");return e.length>1?e[1].length:0}function f(t,e){t.classList&&!/\\s/.test(e)?t.classList.add(e):t.className+=\" \"+e}function d(t,e){t.classList&&!/\\s/.test(e)?t.classList.remove(e):t.className=t.className.replace(new RegExp(\"(^|\\\\b)\"+e.split(\" \").join(\"|\")+\"(\\\\b|$)\",\"gi\"),\" \")}function h(t){var e=void 0!==window.pageXOffset,r=\"CSS1Compat\"===(t.compatMode||\"\");return{x:e?window.pageXOffset:r?t.documentElement.scrollLeft:t.body.scrollLeft,y:e?window.pageYOffset:r?t.documentElement.scrollTop:t.body.scrollTop}}function m(t,e){return 100/(e-t)}function g(t,e,r){return 100*e/(t[r+1]-t[r])}function v(t,e){for(var r=1;t>=e[r];)r+=1;return r}function b(t,e,r){if(r>=t.slice(-1)[0])return 100;var n=v(r,t),i=t[n-1],o=t[n],s=e[n-1],a=e[n];return s+function(t,e){return g(t,t[0]<0?e+Math.abs(t[0]):e-t[0],0)}([i,o],r)/m(s,a)}function S(t,e,r,n){if(100===n)return n;var i=v(n,t),o=t[i-1],s=t[i];return r?n-o>(s-o)/2?s:o:e[i-1]?t[i-1]+function(t,e){return Math.round(t/e)*e}(n-t[i-1],e[i-1]):n}t.PipsMode=void 0,(e=t.PipsMode||(t.PipsMode={})).Range=\"range\",e.Steps=\"steps\",e.Positions=\"positions\",e.Count=\"count\",e.Values=\"values\",t.PipsType=void 0,(r=t.PipsType||(t.PipsType={}))[r.None=-1]=\"None\",r[r.NoValue=0]=\"NoValue\",r[r.LargeValue=1]=\"LargeValue\",r[r.SmallValue=2]=\"SmallValue\";var x=function(){function t(t,e,r){var n;this.xPct=[],this.xVal=[],this.xSteps=[],this.xNumSteps=[],this.xHighestCompleteStep=[],this.xSteps=[r||!1],this.xNumSteps=[!1],this.snap=e;var i=[];for(Object.keys(t).forEach((function(e){i.push([c(t[e]),e])})),i.sort((function(t,e){return t[0][0]-e[0][0]})),n=0;nthis.xPct[i+1];)i++;else t===this.xPct[this.xPct.length-1]&&(i=this.xPct.length-2);r||t!==this.xPct[i+1]||i++,null===e&&(e=[]);var o=1,s=e[i],a=0,l=0,u=0,c=0;for(n=r?(t-this.xPct[i])/(this.xPct[i+1]-this.xPct[i]):(this.xPct[i+1]-t)/(this.xPct[i+1]-this.xPct[i]);s>0;)a=this.xPct[i+1+c]-this.xPct[i+c],e[i+c]*o+100-100*n>100?(l=a*n,o=(s-100*n)/e[i+c],n=1):(l=e[i+c]*a/100*o,o=0),r?(u-=l,this.xPct.length+c>=1&&c--):(u+=l,this.xPct.length-c>=1&&c++),s=e[i+c]*o;return t+u},t.prototype.toStepping=function(t){return t=b(this.xVal,this.xPct,t)},t.prototype.fromStepping=function(t){return function(t,e,r){if(r>=100)return t.slice(-1)[0];var n=v(r,e),i=t[n-1],o=t[n],s=e[n-1];return function(t,e){return e*(t[1]-t[0])/100+t[0]}([i,o],(r-s)*m(s,e[n]))}(this.xVal,this.xPct,t)},t.prototype.getStep=function(t){return t=S(this.xPct,this.xSteps,this.snap,t)},t.prototype.getDefaultStep=function(t,e,r){var n=v(t,this.xPct);return(100===t||e&&t===this.xPct[n-1])&&(n=Math.max(n-1,1)),(this.xVal[n]-this.xVal[n-1])/r},t.prototype.getNearbySteps=function(t){var e=v(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e],step:this.xNumSteps[e],highestStep:this.xHighestCompleteStep[e]}}},t.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(p);return Math.max.apply(null,t)},t.prototype.hasNoSize=function(){return this.xVal[0]===this.xVal[this.xVal.length-1]},t.prototype.convert=function(t){return this.getStep(this.toStepping(t))},t.prototype.handleEntryPoint=function(t,e){var r;if(!a(r=\"min\"===t?0:\"max\"===t?100:parseFloat(t))||!a(e[0]))throw new Error(\"noUiSlider: 'range' value isn't numeric.\");this.xPct.push(r),this.xVal.push(e[0]);var n=Number(e[1]);r?this.xSteps.push(!isNaN(n)&&n):isNaN(n)||(this.xSteps[0]=n),this.xHighestCompleteStep.push(0)},t.prototype.handleStepPoint=function(t,e){if(e)if(this.xVal[t]!==this.xVal[t+1]){this.xSteps[t]=g([this.xVal[t],this.xVal[t+1]],e,0)/m(this.xPct[t],this.xPct[t+1]);var r=(this.xVal[t+1]-this.xVal[t])/this.xNumSteps[t],n=Math.ceil(Number(r.toFixed(3))-1),i=this.xVal[t]+this.xNumSteps[t]*n;this.xHighestCompleteStep[t]=i}else this.xSteps[t]=this.xHighestCompleteStep[t]=this.xVal[t]},t}(),y={to:function(t){return void 0===t?\"\":t.toFixed(2)},from:Number},w={target:\"target\",base:\"base\",origin:\"origin\",handle:\"handle\",handleLower:\"handle-lower\",handleUpper:\"handle-upper\",touchArea:\"touch-area\",horizontal:\"horizontal\",vertical:\"vertical\",background:\"background\",connect:\"connect\",connects:\"connects\",ltr:\"ltr\",rtl:\"rtl\",textDirectionLtr:\"txt-dir-ltr\",textDirectionRtl:\"txt-dir-rtl\",draggable:\"draggable\",drag:\"state-drag\",tap:\"state-tap\",active:\"active\",tooltip:\"tooltip\",pips:\"pips\",pipsHorizontal:\"pips-horizontal\",pipsVertical:\"pips-vertical\",marker:\"marker\",markerHorizontal:\"marker-horizontal\",markerVertical:\"marker-vertical\",markerNormal:\"marker-normal\",markerLarge:\"marker-large\",markerSub:\"marker-sub\",value:\"value\",valueHorizontal:\"value-horizontal\",valueVertical:\"value-vertical\",valueNormal:\"value-normal\",valueLarge:\"value-large\",valueSub:\"value-sub\"},E=\".__tooltips\",P=\".__aria\";function C(t,e){if(!a(e))throw new Error(\"noUiSlider: 'step' is not numeric.\");t.singleStep=e}function N(t,e){if(!a(e))throw new Error(\"noUiSlider: 'keyboardPageMultiplier' is not numeric.\");t.keyboardPageMultiplier=e}function V(t,e){if(!a(e))throw new Error(\"noUiSlider: 'keyboardMultiplier' is not numeric.\");t.keyboardMultiplier=e}function k(t,e){if(!a(e))throw new Error(\"noUiSlider: 'keyboardDefaultStep' is not numeric.\");t.keyboardDefaultStep=e}function M(t,e){if(\"object\"!=typeof e||Array.isArray(e))throw new Error(\"noUiSlider: 'range' is not an object.\");if(void 0===e.min||void 0===e.max)throw new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");t.spectrum=new x(e,t.snap||!1,t.singleStep)}function A(t,e){if(e=c(e),!Array.isArray(e)||!e.length)throw new Error(\"noUiSlider: 'start' option is incorrect.\");t.handles=e.length,t.start=e}function U(t,e){if(\"boolean\"!=typeof e)throw new Error(\"noUiSlider: 'snap' option must be a boolean.\");t.snap=e}function D(t,e){if(\"boolean\"!=typeof e)throw new Error(\"noUiSlider: 'animate' option must be a boolean.\");t.animate=e}function O(t,e){if(\"number\"!=typeof e)throw new Error(\"noUiSlider: 'animationDuration' option must be a number.\");t.animationDuration=e}function L(t,e){var r,n=[!1];if(\"lower\"===e?e=[!0,!1]:\"upper\"===e&&(e=[!1,!0]),!0===e||!1===e){for(r=1;r1)throw new Error(\"noUiSlider: 'padding' option must not exceed 100% of the range.\")}}function F(t,e){switch(e){case\"ltr\":t.dir=0;break;case\"rtl\":t.dir=1;break;default:throw new Error(\"noUiSlider: 'direction' option was not recognized.\")}}function R(t,e){if(\"string\"!=typeof e)throw new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");var r=e.indexOf(\"tap\")>=0,n=e.indexOf(\"drag\")>=0,i=e.indexOf(\"fixed\")>=0,o=e.indexOf(\"snap\")>=0,s=e.indexOf(\"hover\")>=0,a=e.indexOf(\"unconstrained\")>=0,l=e.indexOf(\"drag-all\")>=0;if(i){if(2!==t.handles)throw new Error(\"noUiSlider: 'fixed' behaviour must be used with 2 handles\");j(t,t.start[1]-t.start[0])}if(a&&(t.margin||t.limit))throw new Error(\"noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit\");t.events={tap:r||o,drag:n,dragAll:l,fixed:i,snap:o,hover:s,unconstrained:a}}function _(t,e){if(!1!==e)if(!0===e||n(e)){t.tooltips=[];for(var r=0;r= 2) required for mode 'count'.\");for(var r=e.values-1,n=100/r,i=[];r--;)i[r]=r*n;return i.push(100),q(i,e.stepped)}return e.mode===t.PipsMode.Positions?q(e.values,e.stepped):e.mode===t.PipsMode.Values?e.stepped?e.values.map((function(t){return C.fromStepping(C.getStep(C.toStepping(t)))})):e.values:[]}(e),i={},o=C.xVal[0],s=C.xVal[C.xVal.length-1],a=!1,l=!1,u=0;return r=n.slice().sort((function(t,e){return t-e})),(n=r.filter((function(t){return!this[t]&&(this[t]=!0)}),{}))[0]!==o&&(n.unshift(o),a=!0),n[n.length-1]!==s&&(n.push(s),l=!0),n.forEach((function(r,o){var s,c,p,f,d,h,m,g,v,b,S=r,x=n[o+1],y=e.mode===t.PipsMode.Steps;for(y&&(s=C.xNumSteps[o]),s||(s=x-S),void 0===x&&(x=S),s=Math.max(s,1e-7),c=S;c<=x;c=Number((c+s).toFixed(7))){for(g=(d=(f=C.toStepping(c))-u)/(e.density||1),b=d/(v=Math.round(g)),p=1;p<=v;p+=1)i[(h=u+p*b).toFixed(5)]=[C.fromStepping(h),0];m=n.indexOf(c)>-1?t.PipsType.LargeValue:y?t.PipsType.SmallValue:t.PipsType.NoValue,!o&&a&&c!==x&&(m=0),c===x&&l||(i[f.toFixed(5)]=[c,m]),u=f}})),i}function Y(e,n,i){var o,s,a=U.createElement(\"div\"),l=((o={})[t.PipsType.None]=\"\",o[t.PipsType.NoValue]=r.cssClasses.valueNormal,o[t.PipsType.LargeValue]=r.cssClasses.valueLarge,o[t.PipsType.SmallValue]=r.cssClasses.valueSub,o),u=((s={})[t.PipsType.None]=\"\",s[t.PipsType.NoValue]=r.cssClasses.markerNormal,s[t.PipsType.LargeValue]=r.cssClasses.markerLarge,s[t.PipsType.SmallValue]=r.cssClasses.markerSub,s),c=[r.cssClasses.valueHorizontal,r.cssClasses.valueVertical],p=[r.cssClasses.markerHorizontal,r.cssClasses.markerVertical];function d(t,e){var n=e===r.cssClasses.value,i=n?l:u;return e+\" \"+(n?c:p)[r.ort]+\" \"+i[t]}return f(a,r.cssClasses.pips),f(a,0===r.ort?r.cssClasses.pipsHorizontal:r.cssClasses.pipsVertical),Object.keys(e).forEach((function(o){!function(e,o,s){if((s=n?n(o,s):s)!==t.PipsType.None){var l=T(a,!1);l.className=d(s,r.cssClasses.marker),l.style[r.style]=e+\"%\",s>t.PipsType.NoValue&&((l=T(a,!1)).className=d(s,r.cssClasses.value),l.setAttribute(\"data-value\",String(o)),l.style[r.style]=e+\"%\",l.innerHTML=String(i.to(o)))}}(o,e[o][0],e[o][1])})),a}function I(){g&&(i(g),g=null)}function W(t){I();var e=X(t),r=t.filter,n=t.format||{to:function(t){return String(Math.round(t))}};return g=w.appendChild(Y(e,r,n))}function $(){var t=a.getBoundingClientRect(),e=\"offset\"+[\"Width\",\"Height\"][r.ort];return 0===r.ort?t.width||a[e]:t.height||a[e]}function J(t,e,n,i){var o=function(o){var s,a,l=function(t,e,r){var n=0===t.type.indexOf(\"touch\"),i=0===t.type.indexOf(\"mouse\"),o=0===t.type.indexOf(\"pointer\"),s=0,a=0;if(0===t.type.indexOf(\"MSPointer\")&&(o=!0),\"mousedown\"===t.type&&!t.buttons&&!t.touches)return!1;if(n){var l=function(e){var n=e.target;return n===r||r.contains(n)||t.composed&&t.composedPath().shift()===r};if(\"touchstart\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(u.length>1)return!1;s=u[0].pageX,a=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;s=c.pageX,a=c.pageY}}return e=e||h(U),(i||o)&&(s=t.clientX+e.x,a=t.clientY+e.y),t.pageOffset=e,t.points=[s,a],t.cursor=i||o,t}(o,i.pageOffset,i.target||e);return!!l&&!(F()&&!i.doNotReject)&&(s=w,a=r.cssClasses.tap,!((s.classList?s.classList.contains(a):new RegExp(\"\\\\b\"+a+\"\\\\b\").test(s.className))&&!i.doNotReject)&&!(t===x.start&&void 0!==l.buttons&&l.buttons>1)&&(!i.hover||!l.buttons)&&(y||l.preventDefault(),l.calcPoint=l.points[r.ort],void n(l,i)))},s=[];return t.split(\" \").forEach((function(t){e.addEventListener(t,o,!!y&&{passive:!0}),s.push([t,o])})),s}function K(t){var e,n,i,o,s,l,c=100*(t-(e=a,n=r.ort,i=e.getBoundingClientRect(),o=e.ownerDocument,s=o.documentElement,l=h(o),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(l.x=0),n?i.top+l.y-s.clientTop:i.left+l.x-s.clientLeft))/$();return c=u(c),r.dir?100-c:c}function Q(t,e){\"mouseout\"===t.type&&\"HTML\"===t.target.nodeName&&null===t.relatedTarget&&tt(t,e)}function Z(t,e){if(-1===navigator.appVersion.indexOf(\"MSIE 9\")&&0===t.buttons&&0!==e.buttonsProperty)return tt(t,e);var n=(r.dir?-1:1)*(t.calcPoint-e.startCalcPoint);ut(n>0,100*n/e.baseSize,e.locations,e.handleNumbers,e.connect)}function tt(t,e){e.handle&&(d(e.handle,r.cssClasses.active),M-=1),e.listeners.forEach((function(t){D.removeEventListener(t[0],t[1])})),0===M&&(d(w,r.cssClasses.drag),pt(),t.cursor&&(O.style.cursor=\"\",O.removeEventListener(\"selectstart\",s))),e.handleNumbers.forEach((function(t){st(\"change\",t),st(\"set\",t),st(\"end\",t)}))}function et(t,e){if(!e.handleNumbers.some(R)){var n;1===e.handleNumbers.length&&(n=p[e.handleNumbers[0]].children[0],M+=1,f(n,r.cssClasses.active)),t.stopPropagation();var i=[],o=J(x.move,D,Z,{target:t.target,handle:n,connect:e.connect,listeners:i,startCalcPoint:t.calcPoint,baseSize:$(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:V.slice()}),a=J(x.end,D,tt,{target:t.target,handle:n,listeners:i,doNotReject:!0,handleNumbers:e.handleNumbers}),l=J(\"mouseout\",D,Q,{target:t.target,handle:n,listeners:i,doNotReject:!0,handleNumbers:e.handleNumbers});i.push.apply(i,o.concat(a,l)),t.cursor&&(O.style.cursor=getComputedStyle(t.target).cursor,p.length>1&&f(w,r.cssClasses.drag),O.addEventListener(\"selectstart\",s,!1)),e.handleNumbers.forEach((function(t){st(\"start\",t)}))}}function rt(t){t.stopPropagation();var e=K(t.calcPoint),n=function(t){var e=100,r=!1;return p.forEach((function(n,i){if(!R(i)){var o=V[i],s=Math.abs(o-t);(so||100===s&&100===e)&&(r=i,e=s)}})),r}(e);!1!==n&&(r.events.snap||l(w,r.cssClasses.tap,r.animationDuration),ft(n,e,!0,!0),pt(),st(\"slide\",n,!0),st(\"update\",n,!0),r.events.snap?et(t,{handleNumbers:[n]}):(st(\"change\",n,!0),st(\"set\",n,!0)))}function nt(t){var e=K(t.calcPoint),r=C.getStep(e),n=C.fromStepping(r);Object.keys(A).forEach((function(t){\"hover\"===t.split(\".\")[0]&&A[t].forEach((function(t){t.call(bt,n)}))}))}function it(t,e){A[t]=A[t]||[],A[t].push(e),\"update\"===t.split(\".\")[0]&&p.forEach((function(t,e){st(\"update\",e)}))}function ot(t){var e=t&&t.split(\".\")[0],r=e?t.substring(e.length):t;Object.keys(A).forEach((function(t){var n=t.split(\".\")[0],i=t.substring(n.length);e&&e!==n||r&&r!==i||function(t){return t===P||t===E}(i)&&r!==i||delete A[t]}))}function st(t,e,n){Object.keys(A).forEach((function(i){var o=i.split(\".\")[0];t===o&&A[i].forEach((function(t){t.call(bt,N.map(r.format.to),e,N.slice(),n||!1,V.slice(),bt)}))}))}function at(t,e,n,i,o,s){var a;return p.length>1&&!r.events.unconstrained&&(i&&e>0&&(a=C.getAbsoluteDistance(t[e-1],r.margin,!1),n=Math.max(n,a)),o&&e1&&r.limit&&(i&&e>0&&(a=C.getAbsoluteDistance(t[e-1],r.limit,!1),n=Math.min(n,a)),o&&e1?n.forEach((function(t,r){var n=at(o,t,o[t]+e,a[r],l[r],!1);!1===n?e=0:(e=n-o[t],o[t]=n)})):a=l=[!0];var u=!1;n.forEach((function(t,n){u=ft(t,r[t]+e,a[n],l[n])||u})),u&&(n.forEach((function(t){st(\"update\",t),st(\"slide\",t)})),null!=i&&st(\"drag\",s))}function ct(t,e){return r.dir?100-t-e:t}function pt(){k.forEach((function(t){var e=V[t]>50?-1:1,r=3+(p.length+e*t);p[t].style.zIndex=String(r)}))}function ft(t,e,n,i,o){return o||(e=at(V,t,e,n,i,!1)),!1!==e&&(function(t,e){V[t]=e,N[t]=C.fromStepping(e);var n=\"translate(\"+lt(10*(ct(e,0)-L)+\"%\",\"0\")+\")\";p[t].style[r.transformRule]=n,dt(t),dt(t+1)}(t,e),!0)}function dt(t){if(m[t]){var e=0,n=100;0!==t&&(e=V[t-1]),t!==m.length-1&&(n=V[t]);var i=n-e,o=\"translate(\"+lt(ct(e,i)+\"%\",\"0\")+\")\",s=\"scale(\"+lt(i/100,\"1\")+\")\";m[t].style[r.transformRule]=o+\" \"+s}}function ht(t,e){return null===t||!1===t||void 0===t?V[e]:(\"number\"==typeof t&&(t=String(t)),!1!==(t=r.format.from(t))&&(t=C.toStepping(t)),!1===t||isNaN(t)?V[e]:t)}function mt(t,e,n){var i=c(t),o=void 0===V[0];e=void 0===e||e,r.animate&&!o&&l(w,r.cssClasses.tap,r.animationDuration),k.forEach((function(t){ft(t,ht(i[t],t),!0,!1,n)}));var s=1===k.length?0:1;if(o&&C.hasNoSize()&&(n=!0,V[0]=0,k.length>1)){var a=100/(k.length-1);k.forEach((function(t){V[t]=t*a}))}for(;sn.stepAfter.startValue&&(o=n.stepAfter.startValue-i),s=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===e?o=null:0===e&&(s=null);var a=C.countStepDecimals();return null!==o&&!1!==o&&(o=Number(o.toFixed(a))),null!==s&&!1!==s&&(s=Number(s.toFixed(a))),[s,o]}f(b=w,r.cssClasses.target),0===r.dir?f(b,r.cssClasses.ltr):f(b,r.cssClasses.rtl),0===r.ort?f(b,r.cssClasses.horizontal):f(b,r.cssClasses.vertical),f(b,\"rtl\"===getComputedStyle(b).direction?r.cssClasses.textDirectionRtl:r.cssClasses.textDirectionLtr),a=T(b,r.cssClasses.base),function(t,e){var n=T(e,r.cssClasses.connects);p=[],(m=[]).push(z(n,t[0]));for(var i=0;i=0&&t .noUi-tooltip{-webkit-transform:translate(50%, 0);transform:translate(50%, 0);left:auto;bottom:10px;}.bk-root .noUi-vertical .noUi-origin > .noUi-tooltip{-webkit-transform:translate(0, -18px);transform:translate(0, -18px);top:auto;right:28px;}.bk-root .noUi-handle{cursor:grab;cursor:-webkit-grab;}.bk-root .noUi-handle.noUi-active{cursor:grabbing;cursor:-webkit-grabbing;}.bk-root .noUi-handle:after,.bk-root .noUi-handle:before{display:none;}.bk-root .noUi-tooltip{display:none;white-space:nowrap;}.bk-root .noUi-handle:hover .noUi-tooltip{display:block;}.bk-root .noUi-horizontal{width:100%;height:10px;}.bk-root .noUi-vertical{width:10px;height:100%;}.bk-root .noUi-horizontal .noUi-handle{width:14px;height:18px;right:-7px;top:-5px;}.bk-root .noUi-vertical .noUi-handle{width:18px;height:14px;right:-5px;top:-7px;}.bk-root .noUi-target.noUi-horizontal{margin:5px 0px;}.bk-root .noUi-target.noUi-vertical{margin:0px 5px;}'},\n 465: function _(e,t,r,a,i){a();var s;const d=(0,e(1).__importDefault)(e(151)),o=e(461),_=e(8);class n extends o.AbstractSliderView{}r.DateSliderView=n,n.__name__=\"DateSliderView\";class c extends o.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}_formatter(e,t){return(0,_.isString)(t)?(0,d.default)(e,t):t.compute(e)}}r.DateSlider=c,s=c,c.__name__=\"DateSlider\",s.prototype.default_view=n,s.override({format:\"%d %b %Y\"})},\n 466: function _(e,t,r,a,i){a();var n;const s=(0,e(1).__importDefault)(e(151)),d=e(461),o=e(8);class _ extends d.AbstractRangeSliderView{}r.DatetimeRangeSliderView=_,_.__name__=\"DatetimeRangeSliderView\";class c extends d.AbstractSlider{constructor(e){super(e),this.behaviour=\"drag\",this.connected=[!1,!0,!1]}_formatter(e,t){return(0,o.isString)(t)?(0,s.default)(e,t):t.compute(e)}}r.DatetimeRangeSlider=c,n=c,c.__name__=\"DatetimeRangeSlider\",n.prototype.default_view=_,n.override({format:\"%d %b %Y %H:%M:%S\",step:36e5})},\n 467: function _(e,t,s,r,i){var _;r();const n=e(468);class a extends n.MarkupView{render(){super.render(),this.model.render_as_text?this.markup_el.textContent=this.model.text:this.markup_el.innerHTML=this.has_math_disabled()?this.model.text:this.process_tex()}}s.DivView=a,a.__name__=\"DivView\";class d extends n.Markup{constructor(e){super(e)}}s.Div=d,_=d,d.__name__=\"Div\",_.prototype.default_view=a,_.define((({Boolean:e})=>({render_as_text:[e,!1]})))},\n 468: function _(t,e,s,i,r){i();const a=t(1);var n;const o=t(210),d=t(43),h=t(137),l=t(512),_=(0,a.__importStar)(t(469));class u extends l.WidgetView{get provider(){return h.default_provider}async lazy_initialize(){await super.lazy_initialize(),\"not_started\"==this.provider.status&&await this.provider.fetch(),\"not_started\"!=this.provider.status&&\"loading\"!=this.provider.status||this.provider.ready.connect((()=>{this.contains_tex_string()&&this.rerender()}))}after_layout(){super.after_layout(),\"loading\"===this.provider.status&&(this._has_finished=!1)}rerender(){this.layout.invalidate_cache(),this.render(),this.root.compute_layout()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>{this.rerender()}))}styles(){return[...super.styles(),_.default]}_update_layout(){this.layout=new o.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render();const t=Object.assign(Object.assign({},this.model.style),{display:\"inline-block\"});this.markup_el=(0,d.div)({class:_.clearfix,style:t}),this.el.appendChild(this.markup_el),\"failed\"!=this.provider.status&&\"loaded\"!=this.provider.status||(this._has_finished=!0)}has_math_disabled(){return this.model.disable_math||!this.contains_tex_string()}process_tex(){if(!this.provider.MathJax)return this.model.text;const{text:t}=this.model,e=this.provider.MathJax.find_tex(t),s=[];let i=0;for(const r of e)s.push(t.slice(i,r.start.n)),s.push(this.provider.MathJax.tex2svg(r.math,{display:r.display}).outerHTML),i=r.end.n;return i0}}s.MarkupView=u,u.__name__=\"MarkupView\";class p extends l.Widget{constructor(t){super(t)}}s.Markup=p,n=p,p.__name__=\"Markup\",n.define((({Boolean:t,String:e,Dict:s})=>({text:[e,\"\"],style:[s(e),{}],disable_math:[t,!1]})))},\n 469: function _(o,r,e,t,a){t(),e.root=\"bk-root\",e.clearfix=\"bk-clearfix\",e.default='.bk-root .bk-clearfix:before,.bk-root .bk-clearfix:after{content:\"\";display:table;}.bk-root .bk-clearfix:after{clear:both;}'},\n 470: function _(e,t,i,n,s){n();const o=e(1);var l;const r=e(441),d=e(251),_=e(43),u=e(8),c=(0,o.__importStar)(e(318)),h=(0,o.__importStar)(e(229)),m=h;class p extends r.AbstractButtonView{constructor(){super(...arguments),this._open=!1}styles(){return[...super.styles(),h.default]}render(){super.render();const e=(0,_.div)({class:[m.caret,m.down]});if(this.model.is_split){const t=this._render_button(e);t.classList.add(c.dropdown_toggle),t.addEventListener(\"click\",(()=>this._toggle_menu())),this.group_el.appendChild(t)}else this.button_el.appendChild(e);const t=this.model.menu.map(((e,t)=>{if(null==e)return(0,_.div)({class:m.divider});{const i=(0,u.isString)(e)?e:e[0],n=(0,_.div)(i);return n.addEventListener(\"click\",(()=>this._item_click(t))),n}}));this.menu=(0,_.div)({class:[m.menu,m.below]},t),this.el.appendChild(this.menu),(0,_.undisplay)(this.menu)}_show_menu(){if(!this._open){this._open=!0,(0,_.display)(this.menu);const e=t=>{const{target:i}=t;i instanceof HTMLElement&&!this.el.contains(i)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,(0,_.undisplay)(this.menu))}_toggle_menu(){this._open?this._hide_menu():this._show_menu()}click(){this.model.is_split?(this._hide_menu(),this.model.trigger_event(new d.ButtonClick),super.click()):this._toggle_menu()}_item_click(e){this._hide_menu();const t=this.model.menu[e];if(null!=t){const i=(0,u.isString)(t)?t:t[1];(0,u.isString)(i)?this.model.trigger_event(new d.MenuItemClick(i)):i.execute(this.model,{index:e})}}}i.DropdownView=p,p.__name__=\"DropdownView\";class a extends r.AbstractButton{constructor(e){super(e)}get is_split(){return this.split}}i.Dropdown=a,l=a,a.__name__=\"Dropdown\",l.prototype.default_view=p,l.define((({Null:e,Boolean:t,String:i,Array:n,Tuple:s,Or:o})=>({split:[t,!1],menu:[n(o(i,s(i,o(i)),e)),[]]}))),l.override({label:\"Dropdown\"})},\n 471: function _(e,l,i,t,s){var n;t();const a=e(43),o=e(512);class d extends o.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render()))}render(){const{multiple:e,accept:l,disabled:i,width:t}=this.model;null==this.dialog_el&&(this.dialog_el=(0,a.input)({type:\"file\",multiple:e}),this.dialog_el.onchange=()=>{const{files:e}=this.dialog_el;null!=e&&this.load_files(e)},this.el.appendChild(this.dialog_el)),null!=l&&\"\"!=l&&(this.dialog_el.accept=l),this.dialog_el.style.width=`${t}px`,this.dialog_el.disabled=i}async load_files(e){const l=[],i=[],t=[];for(const s of e){const e=await this._read_file(s),[,n=\"\",,a=\"\"]=e.split(/[:;,]/,4);l.push(a),i.push(s.name),t.push(n)}this.model.multiple?this.model.setv({value:l,filename:i,mime_type:t}):this.model.setv({value:l[0],filename:i[0],mime_type:t[0]})}_read_file(e){return new Promise(((l,i)=>{const t=new FileReader;t.onload=()=>{var s;const{result:n}=t;null!=n?l(n):i(null!==(s=t.error)&&void 0!==s?s:new Error(`unable to read '${e.name}'`))},t.readAsDataURL(e)}))}}i.FileInputView=d,d.__name__=\"FileInputView\";class r extends o.Widget{constructor(e){super(e)}}i.FileInput=r,n=r,r.__name__=\"FileInput\",n.prototype.default_view=d,n.define((({Boolean:e,String:l,Array:i,Or:t})=>({value:[t(l,i(l)),\"\"],mime_type:[t(l,i(l)),\"\"],filename:[t(l,i(l)),\"\"],accept:[l,\"\"],multiple:[e,!1]})))},\n 472: function _(e,t,i,s,n){s();const l=e(1);var o;const r=e(43),c=e(8),h=e(448),p=(0,l.__importStar)(e(449));class d extends h.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.value.change,(()=>this.render_selection())),this.connect(this.model.properties.options.change,(()=>this.render())),this.connect(this.model.properties.name.change,(()=>this.render())),this.connect(this.model.properties.title.change,(()=>this.render())),this.connect(this.model.properties.size.change,(()=>this.render())),this.connect(this.model.properties.disabled.change,(()=>this.render()))}render(){super.render();const e=this.model.options.map((e=>{let t,i;return(0,c.isString)(e)?t=i=e:[t,i]=e,(0,r.option)({value:t},i)}));this.input_el=(0,r.select)({multiple:!0,class:p.input,name:this.model.name,disabled:this.model.disabled},e),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el),this.render_selection()}render_selection(){const e=new Set(this.model.value);for(const t of this.el.querySelectorAll(\"option\"))t.selected=e.has(t.value);this.input_el.size=this.model.size}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.input_el.focus()}}i.MultiSelectView=d,d.__name__=\"MultiSelectView\";class u extends h.InputWidget{constructor(e){super(e)}}i.MultiSelect=u,o=u,u.__name__=\"MultiSelect\",o.prototype.default_view=d,o.define((({Int:e,String:t,Array:i,Tuple:s,Or:n})=>({value:[i(t),[]],options:[i(n(t,s(t,t))),[]],size:[e,4]})))},\n 473: function _(e,a,r,t,s){var n;t();const p=e(468),_=e(43);class i extends p.MarkupView{render(){super.render();const e=(0,_.p)({style:{margin:0}});this.has_math_disabled()?e.textContent=this.model.text:e.innerHTML=this.process_tex(),this.markup_el.appendChild(e)}}r.ParagraphView=i,i.__name__=\"ParagraphView\";class h extends p.Markup{constructor(e){super(e)}}r.Paragraph=h,n=h,h.__name__=\"Paragraph\",n.prototype.default_view=i},\n 474: function _(e,s,t,n,r){var p;n();const u=e(446);class a extends u.TextInputView{render(){super.render(),this.input_el.type=\"password\"}}t.PasswordInputView=a,a.__name__=\"PasswordInputView\";class o extends u.TextInput{constructor(e){super(e)}}t.PasswordInput=o,p=o,o.__name__=\"PasswordInput\",p.prototype.default_view=a},\n 475: function _(e,t,i,l,s){l();const o=e(1);var n;const h=(0,o.__importDefault)(e(476)),a=e(43),u=e(8),c=e(210),_=(0,o.__importStar)(e(449)),d=(0,o.__importDefault)(e(477)),r=e(448);class m extends r.InputWidgetView{constructor(){super(...arguments),this._last_height=null}connect_signals(){super.connect_signals(),this.connect(this.model.properties.disabled.change,(()=>this.set_disabled()));const{value:e,max_items:t,option_limit:i,search_option_limit:l,delete_button:s,placeholder:o,options:n,name:h,title:a}=this.model.properties;this.on_change([e,t,i,l,s,o,n,h,a],(()=>this.render()))}styles(){return[...super.styles(),d.default]}_update_layout(){this.layout=new c.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render(),this.input_el=(0,a.select)({multiple:!0,class:_.input,name:this.model.name,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el);const e=new Set(this.model.value),t=this.model.options.map((t=>{let i,l;return(0,u.isString)(t)?i=l=t:[i,l]=t,{value:i,label:l,selected:e.has(i)}})),i=this.model.solid?\"solid\":\"light\",l=`choices__item ${i}`,s=`choices__button ${i}`,o={choices:t,duplicateItemsAllowed:!1,removeItemButton:this.model.delete_button,classNames:{item:l,button:s}};null!=this.model.placeholder&&(o.placeholderValue=this.model.placeholder),null!=this.model.max_items&&(o.maxItemCount=this.model.max_items),null!=this.model.option_limit&&(o.renderChoiceLimit=this.model.option_limit),null!=this.model.search_option_limit&&(o.searchResultLimit=this.model.search_option_limit),this.choice_el=new h.default(this.input_el,o);const n=()=>this.choice_el.containerOuter.element.getBoundingClientRect().height;null!=this._last_height&&this._last_height!=n()&&this.root.invalidate_layout(),this._last_height=n(),this.input_el.addEventListener(\"change\",(()=>this.change_input()))}set_disabled(){this.model.disabled?this.choice_el.disable():this.choice_el.enable()}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.input_el.focus()}}i.MultiChoiceView=m,m.__name__=\"MultiChoiceView\";class p extends r.InputWidget{constructor(e){super(e)}}i.MultiChoice=p,n=p,p.__name__=\"MultiChoice\",n.prototype.default_view=m,n.define((({Boolean:e,Int:t,String:i,Array:l,Tuple:s,Or:o,Nullable:n})=>({value:[l(i),[]],options:[l(o(i,s(i,i))),[]],max_items:[n(t),null],delete_button:[e,!0],placeholder:[n(i),null],option_limit:[n(t),null],search_option_limit:[n(t),null],solid:[e,!0]})))},\n 476: function _(e,t,i,n,s){\n /*! choices.js v9.0.1 | © 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n var r,o;r=window,o=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"/public/assets/scripts/\",i(i.s=4)}([function(e,t,i){\"use strict\";var n=function(e){return function(e){return!!e&&\"object\"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return\"[object RegExp]\"===t||\"[object Date]\"===t||function(e){return e.$$typeof===s}(e)}(e)},s=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?l((i=e,Array.isArray(i)?[]:{}),e,t):e;var i}function o(e,t,i){return e.concat(t).map((function(e){return r(e,i)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function c(e,t,i){var n={};return i.isMergeableObject(e)&&a(e).forEach((function(t){n[t]=r(e[t],i)})),a(t).forEach((function(s){(function(e,t){try{return t in e&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}catch(e){return!1}})(e,s)||(i.isMergeableObject(t[s])&&e[s]?n[s]=function(e,t){if(!t.customMerge)return l;var i=t.customMerge(e);return\"function\"==typeof i?i:l}(s,i)(e[s],t[s],i):n[s]=r(t[s],i))})),n}function l(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||o,i.isMergeableObject=i.isMergeableObject||n,i.cloneUnlessOtherwiseSpecified=r;var s=Array.isArray(t);return s===Array.isArray(e)?s?i.arrayMerge(e,t,i):c(e,t,i):r(t,i)}l.all=function(e,t){if(!Array.isArray(e))throw new Error(\"first argument should be an array\");return e.reduce((function(e,i){return l(e,i,t)}),{})};var h=l;e.exports=h},function(e,t,i){\"use strict\";(function(e,n){var s,r=i(3);s=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==e?e:n;var o=Object(r.a)(s);t.a=o}).call(this,i(5),i(6)(e))},function(e,t,i){\n /*!\n * Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=1)}([function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===Object.prototype.toString.call(e)}},function(e,t,i){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function s(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\\nSearch pattern: \"'.concat(e,'\"'));var i=this._prepareSearchers(e),n=i.tokenSearchers,s=i.fullSearcher,r=this._search(n,s),o=r.weights,a=r.results;return this._computeScore(o,a),this.options.shouldSort&&this._sort(a),t.limit&&\"number\"==typeof t.limit&&(a=a.slice(0,t.limit)),this._format(a)}},{key:\"_prepareSearchers\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",t=[];if(this.options.tokenize)for(var i=e.split(this.options.tokenSeparator),n=0,s=i.length;n0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,i=this.list,n={},s=[];if(\"string\"==typeof i[0]){for(var r=0,o=i.length;r1)throw new Error(\"Key weight has to be > 0 and <= 1\");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(h,p),record:h,index:c},{resultMap:n,results:s,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:s}}},{key:\"_analyze\",value:function(e,t){var i=e.key,n=e.arrayIndex,s=void 0===n?-1:n,r=e.value,o=e.record,c=e.index,l=t.tokenSearchers,h=void 0===l?[]:l,u=t.fullSearcher,d=void 0===u?[]:u,p=t.resultMap,m=void 0===p?{}:p,f=t.results,v=void 0===f?[]:f;if(null!=r){var g=!1,_=-1,b=0;if(\"string\"==typeof r){this._log(\"\\nKey: \".concat(\"\"===i?\"-\":i));var y=d.search(r);if(this._log('Full text: \"'.concat(r,'\", score: ').concat(y.score)),this.options.tokenize){for(var E=r.split(this.options.tokenSeparator),I=[],S=0;S-1&&(P=(P+_)/2),this._log(\"Score average:\",P);var D=!this.options.tokenize||!this.options.matchAllTokens||b>=h.length;if(this._log(\"\\nCheck Matches: \".concat(D)),(g||y.isMatch)&&D){var M=m[c];M?M.output.push({key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}):(m[c]={item:o,output:[{key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}]},v.push(m[c]))}}else if(a(r))for(var N=0,F=r.length;N-1&&(o.arrayIndex=r.arrayIndex),t.matches.push(o)}}})),this.options.includeScore&&s.push((function(e,t){t.score=e.score}));for(var r=0,o=e.length;ri)return s(e,this.pattern,n);var o=this.options,a=o.location,c=o.distance,l=o.threshold,h=o.findAllMatches,u=o.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:a,distance:c,threshold:l,findAllMatches:h,minMatchCharLength:u})}}])&&n(t.prototype,i),a&&n(t,a),e}();e.exports=a},function(e,t){var i=/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,s=new RegExp(t.replace(i,\"\\\\$&\").replace(n,\"|\")),r=e.match(s),o=!!r,a=[];if(o)for(var c=0,l=r.length;c=P;N-=1){var F=N-1,j=i[e.charAt(F)];if(j&&(E[F]=1),M[N]=(M[N+1]<<1|1)&j,0!==T&&(M[N]|=(O[N+1]|O[N])<<1|1|O[N+1]),M[N]&L&&(C=n(t,{errors:T,currentLocation:F,expectedLocation:v,distance:l}))<=_){if(_=C,(b=F)<=v)break;P=Math.max(1,2*v-b)}}if(n(t,{errors:T+1,currentLocation:v,expectedLocation:v,distance:l})>_)break;O=M}return{isMatch:b>=0,score:0===C?.001:C,matchedIndices:s(E,f)}}},function(e,t){e.exports=function(e,t){var i=t.errors,n=void 0===i?0:i,s=t.currentLocation,r=void 0===s?0:s,o=t.expectedLocation,a=void 0===o?0:o,c=t.distance,l=void 0===c?100:c,h=n/e.length,u=Math.abs(a-r);return l?h+u/l:u?1:h}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=[],n=-1,s=-1,r=0,o=e.length;r=t&&i.push([n,s]),n=-1)}return e[r-1]&&r-n>=t&&i.push([n,r-1]),i}},function(e,t){e.exports=function(e){for(var t={},i=e.length,n=0;n/g,\"&rt;\").replace(/-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!0),i})):e;case\"REMOVE_ITEM\":return t.choiceId>-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!1),i})):e;case\"FILTER_CHOICES\":return e.map((function(e){var i=e;return i.active=t.results.some((function(e){var t=e.item,n=e.score;return t.id===i.id&&(i.score=n,!0)})),i}));case\"ACTIVATE_CHOICES\":return e.map((function(e){var i=e;return i.active=t.active,i}));case\"CLEAR_CHOICES\":return v;default:return e}},general:_}),A=function(e,t){var i=e;if(\"CLEAR_ALL\"===t.type)i=void 0;else if(\"RESET_TO\"===t.type)return O(t.state);return C(i,t)};function L(e,t){for(var i=0;i\"'+I(e)+'\"'},maxItemText:function(e){return\"Only \"+e+\" values can be added\"},valueComparer:function(e,t){return e===t},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:{containerOuter:\"choices\",containerInner:\"choices__inner\",input:\"choices__input\",inputCloned:\"choices__input--cloned\",list:\"choices__list\",listItems:\"choices__list--multiple\",listSingle:\"choices__list--single\",listDropdown:\"choices__list--dropdown\",item:\"choices__item\",itemSelectable:\"choices__item--selectable\",itemDisabled:\"choices__item--disabled\",itemChoice:\"choices__item--choice\",placeholder:\"choices__placeholder\",group:\"choices__group\",groupHeading:\"choices__heading\",button:\"choices__button\",activeState:\"is-active\",focusState:\"is-focused\",openState:\"is-open\",disabledState:\"is-disabled\",highlightedState:\"is-highlighted\",selectedState:\"is-selected\",flippedState:\"is-flipped\",loadingState:\"is-loading\",noResults:\"has-no-results\",noChoices:\"has-no-choices\"}},D=\"showDropdown\",M=\"hideDropdown\",N=\"change\",F=\"choice\",j=\"search\",K=\"addItem\",R=\"removeItem\",H=\"highlightItem\",B=\"highlightChoice\",V=\"ADD_CHOICE\",G=\"FILTER_CHOICES\",q=\"ACTIVATE_CHOICES\",U=\"CLEAR_CHOICES\",z=\"ADD_GROUP\",W=\"ADD_ITEM\",X=\"REMOVE_ITEM\",$=\"HIGHLIGHT_ITEM\",J=46,Y=8,Z=13,Q=65,ee=27,te=38,ie=40,ne=33,se=34,re=\"text\",oe=\"select-one\",ae=\"select-multiple\",ce=function(){function e(e){var t=e.element,i=e.type,n=e.classNames,s=e.position;this.element=t,this.classNames=n,this.type=i,this.position=s,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t=e.prototype;return t.addEventListeners=function(){this.element.addEventListener(\"focus\",this._onFocus),this.element.addEventListener(\"blur\",this._onBlur)},t.removeEventListeners=function(){this.element.removeEventListener(\"focus\",this._onFocus),this.element.removeEventListener(\"blur\",this._onBlur)},t.shouldFlip=function(e){if(\"number\"!=typeof e)return!1;var t=!1;return\"auto\"===this.position?t=!window.matchMedia(\"(min-height: \"+(e+1)+\"px)\").matches:\"top\"===this.position&&(t=!0),t},t.setActiveDescendant=function(e){this.element.setAttribute(\"aria-activedescendant\",e)},t.removeActiveDescendant=function(){this.element.removeAttribute(\"aria-activedescendant\")},t.open=function(e){this.element.classList.add(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"true\"),this.isOpen=!0,this.shouldFlip(e)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},t.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"false\"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},t.focus=function(){this.isFocussed||this.element.focus()},t.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},t.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},t.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute(\"aria-disabled\"),this.type===oe&&this.element.setAttribute(\"tabindex\",\"0\"),this.isDisabled=!1},t.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute(\"aria-disabled\",\"true\"),this.type===oe&&this.element.setAttribute(\"tabindex\",\"-1\"),this.isDisabled=!0},t.wrap=function(e){!function(e,t){void 0===t&&(t=document.createElement(\"div\")),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)}(e,this.element)},t.unwrap=function(e){this.element.parentNode.insertBefore(e,this.element),this.element.parentNode.removeChild(this.element)},t.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute(\"aria-busy\",\"true\"),this.isLoading=!0},t.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute(\"aria-busy\"),this.isLoading=!1},t._onFocus=function(){this.isFocussed=!0},t._onBlur=function(){this.isFocussed=!1},e}();function le(e,t){for(var i=0;i0?this.element.scrollTop+o-s:e.offsetTop;requestAnimationFrame((function(){i._animateScroll(a,t)}))}},t._scrollDown=function(e,t,i){var n=(i-e)/t,s=n>1?n:1;this.element.scrollTop=e+s},t._scrollUp=function(e,t,i){var n=(e-i)/t,s=n>1?n:1;this.element.scrollTop=e-s},t._animateScroll=function(e,t){var i=this,n=this.element.scrollTop,s=!1;t>0?(this._scrollDown(n,4,e),ne&&(s=!0)),s&&requestAnimationFrame((function(){i._animateScroll(e,t)}))},e}();function de(e,t){for(var i=0;i0?\"treeitem\":\"option\"),Object.assign(g.dataset,{choice:\"\",id:l,value:h,selectText:i}),m?(g.classList.add(a),g.dataset.choiceDisabled=\"\",g.setAttribute(\"aria-disabled\",\"true\")):(g.classList.add(r),g.dataset.choiceSelectable=\"\"),g},input:function(e,t){var i=e.input,n=e.inputCloned,s=Object.assign(document.createElement(\"input\"),{type:\"text\",className:i+\" \"+n,autocomplete:\"off\",autocapitalize:\"off\",spellcheck:!1});return s.setAttribute(\"role\",\"textbox\"),s.setAttribute(\"aria-autocomplete\",\"list\"),s.setAttribute(\"aria-label\",t),s},dropdown:function(e){var t=e.list,i=e.listDropdown,n=document.createElement(\"div\");return n.classList.add(t,i),n.setAttribute(\"aria-expanded\",\"false\"),n},notice:function(e,t,i){var n=e.item,s=e.itemChoice,r=e.noResults,o=e.noChoices;void 0===i&&(i=\"\");var a=[n,s];return\"no-choices\"===i?a.push(o):\"no-results\"===i&&a.push(r),Object.assign(document.createElement(\"div\"),{innerHTML:t,className:a.join(\" \")})},option:function(e){var t=e.label,i=e.value,n=e.customProperties,s=e.active,r=e.disabled,o=new Option(t,i,!1,s);return n&&(o.dataset.customProperties=n),o.disabled=r,o}},be=function(e){return void 0===e&&(e=!0),{type:q,active:e}},ye=function(e,t){return{type:$,id:e,highlighted:t}},Ee=function(e){var t=e.value,i=e.id,n=e.active,s=e.disabled;return{type:z,value:t,id:i,active:n,disabled:s}},Ie=function(e){return{type:\"SET_IS_LOADING\",isLoading:e}};function Se(e,t){for(var i=0;i=0?this._store.getGroupById(s):null;return this._store.dispatch(ye(i,!0)),t&&this.passedElement.triggerEvent(H,{id:i,value:o,label:c,groupValue:l&&l.value?l.value:null}),this},r.unhighlightItem=function(e){if(!e)return this;var t=e.id,i=e.groupId,n=void 0===i?-1:i,s=e.value,r=void 0===s?\"\":s,o=e.label,a=void 0===o?\"\":o,c=n>=0?this._store.getGroupById(n):null;return this._store.dispatch(ye(t,!1)),this.passedElement.triggerEvent(H,{id:t,value:r,label:a,groupValue:c&&c.value?c.value:null}),this},r.highlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.highlightItem(t)})),this},r.unhighlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.unhighlightItem(t)})),this},r.removeActiveItemsByValue=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.value===e})).forEach((function(e){return t._removeItem(e)})),this},r.removeActiveItems=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.id!==e})).forEach((function(e){return t._removeItem(e)})),this},r.removeHighlightedItems=function(e){var t=this;return void 0===e&&(e=!1),this._store.highlightedActiveItems.forEach((function(i){t._removeItem(i),e&&t._triggerChange(i.value)})),this},r.showDropdown=function(e){var t=this;return this.dropdown.isActive||requestAnimationFrame((function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(D,{})})),this},r.hideDropdown=function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame((function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(M,{})})),this):this},r.getValue=function(e){void 0===e&&(e=!1);var t=this._store.activeItems.reduce((function(t,i){var n=e?i.value:i;return t.push(n),t}),[]);return this._isSelectOneElement?t[0]:t},r.setValue=function(e){var t=this;return this.initialised?(e.forEach((function(e){return t._setChoiceOrItem(e)})),this):this},r.setChoiceByValue=function(e){var t=this;return!this.initialised||this._isTextElement||(Array.isArray(e)?e:[e]).forEach((function(e){return t._findAndSelectChoiceByValue(e)})),this},r.setChoices=function(e,t,i,n){var s=this;if(void 0===e&&(e=[]),void 0===t&&(t=\"value\"),void 0===i&&(i=\"label\"),void 0===n&&(n=!1),!this.initialised)throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");if(!this._isSelectElement)throw new TypeError(\"setChoices can't be used with INPUT based Choices\");if(\"string\"!=typeof t||!t)throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");if(n&&this.clearChoices(),\"function\"==typeof e){var r=e(this);if(\"function\"==typeof Promise&&r instanceof Promise)return new Promise((function(e){return requestAnimationFrame(e)})).then((function(){return s._handleLoadingState(!0)})).then((function(){return r})).then((function(e){return s.setChoices(e,t,i,n)})).catch((function(e){s.config.silent||console.error(e)})).then((function(){return s._handleLoadingState(!1)})).then((function(){return s}));if(!Array.isArray(r))throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \"+typeof r);return this.setChoices(r,t,i,!1)}if(!Array.isArray(e))throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");return this.containerOuter.removeLoadingState(),this._startLoading(),e.forEach((function(e){e.choices?s._addGroup({id:parseInt(e.id,10)||null,group:e,valueKey:t,labelKey:i}):s._addChoice({value:e[t],label:e[i],isSelected:e.selected,isDisabled:e.disabled,customProperties:e.customProperties,placeholder:e.placeholder})})),this._stopLoading(),this},r.clearChoices=function(){return this._store.dispatch({type:U}),this},r.clearStore=function(){return this._store.dispatch({type:\"CLEAR_ALL\"}),this},r.clearInput=function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(be(!0))),this},r._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,i=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),i&&this._renderItems(),this._prevState=this._currentState)}},r._renderChoices=function(){var e=this,t=this._store,i=t.activeGroups,n=t.activeChoices,s=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame((function(){return e.choiceList.scrollToTop()})),i.length>=1&&!this._isSearching){var r=n.filter((function(e){return!0===e.placeholder&&-1===e.groupId}));r.length>=1&&(s=this._createChoicesFragment(r,s)),s=this._createGroupsFragment(i,n,s)}else n.length>=1&&(s=this._createChoicesFragment(n,s));if(s.childNodes&&s.childNodes.length>0){var o=this._store.activeItems,a=this._canAddItem(o,this.input.value);a.response?(this.choiceList.append(s),this._highlightChoice()):this.choiceList.append(this._getTemplate(\"notice\",a.notice))}else{var c,l;this._isSearching?(l=\"function\"==typeof this.config.noResultsText?this.config.noResultsText():this.config.noResultsText,c=this._getTemplate(\"notice\",l,\"no-results\")):(l=\"function\"==typeof this.config.noChoicesText?this.config.noChoicesText():this.config.noChoicesText,c=this._getTemplate(\"notice\",l,\"no-choices\")),this.choiceList.append(c)}},r._renderItems=function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)},r._createGroupsFragment=function(e,t,i){var n=this;return void 0===i&&(i=document.createDocumentFragment()),this.config.shouldSort&&e.sort(this.config.sorter),e.forEach((function(e){var s=function(e){return t.filter((function(t){return n._isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&(\"always\"===n.config.renderSelectedChoices||!t.selected)}))}(e);if(s.length>=1){var r=n._getTemplate(\"choiceGroup\",e);i.appendChild(r),n._createChoicesFragment(s,i,!0)}})),i},r._createChoicesFragment=function(e,t,i){var n=this;void 0===t&&(t=document.createDocumentFragment()),void 0===i&&(i=!1);var s=this.config,r=s.renderSelectedChoices,o=s.searchResultLimit,a=s.renderChoiceLimit,c=this._isSearching?w:this.config.sorter,l=function(e){if(\"auto\"!==r||n._isSelectOneElement||!e.selected){var i=n._getTemplate(\"choice\",e,n.config.itemSelectText);t.appendChild(i)}},h=e;\"auto\"!==r||this._isSelectOneElement||(h=e.filter((function(e){return!e.selected})));var u=h.reduce((function(e,t){return t.placeholder?e.placeholderChoices.push(t):e.normalChoices.push(t),e}),{placeholderChoices:[],normalChoices:[]}),d=u.placeholderChoices,p=u.normalChoices;(this.config.shouldSort||this._isSearching)&&p.sort(c);var m=h.length,f=this._isSelectOneElement?[].concat(d,p):p;this._isSearching?m=o:a&&a>0&&!i&&(m=a);for(var v=0;v=n){var o=s?this._searchChoices(e):0;this.passedElement.triggerEvent(j,{value:e,resultCount:o})}else r&&(this._isSearching=!1,this._store.dispatch(be(!0)))}},r._canAddItem=function(e,t){var i=!0,n=\"function\"==typeof this.config.addItemText?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var s=function(e,t,i){return void 0===i&&(i=\"value\"),e.some((function(e){return\"string\"==typeof t?e[i]===t.trim():e[i]===t}))}(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=\"function\"==typeof this.config.maxItemText?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&s&&i&&(i=!1,n=\"function\"==typeof this.config.uniqueItemText?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&i&&\"function\"==typeof this.config.addItemFilter&&!this.config.addItemFilter(t)&&(i=!1,n=\"function\"==typeof this.config.customAddItemText?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:i,notice:n}},r._searchChoices=function(e){var t=\"string\"==typeof e?e.trim():e,i=\"string\"==typeof this._currentValue?this._currentValue.trim():this._currentValue;if(t.length<1&&t===i+\" \")return 0;var n=this._store.searchableChoices,r=t,o=[].concat(this.config.searchFields),a=Object.assign(this.config.fuseOptions,{keys:o}),c=new s.a(n,a).search(r);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(function(e){return{type:G,results:e}}(c)),c.length},r._addEventListeners=function(){var e=document.documentElement;e.addEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.addEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.addEventListener(\"mousedown\",this._onMouseDown,!0),e.addEventListener(\"click\",this._onClick,{passive:!0}),e.addEventListener(\"touchmove\",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener(\"mouseover\",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener(\"blur\",this._onBlur,{passive:!0})),this.input.element.addEventListener(\"keyup\",this._onKeyUp,{passive:!0}),this.input.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.input.element.addEventListener(\"blur\",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener(\"reset\",this._onFormReset,{passive:!0}),this.input.addEventListeners()},r._removeEventListeners=function(){var e=document.documentElement;e.removeEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.removeEventListener(\"mousedown\",this._onMouseDown,!0),e.removeEventListener(\"click\",this._onClick),e.removeEventListener(\"touchmove\",this._onTouchMove),this.dropdown.element.removeEventListener(\"mouseover\",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener(\"focus\",this._onFocus),this.containerOuter.element.removeEventListener(\"blur\",this._onBlur)),this.input.element.removeEventListener(\"keyup\",this._onKeyUp),this.input.element.removeEventListener(\"focus\",this._onFocus),this.input.element.removeEventListener(\"blur\",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener(\"reset\",this._onFormReset),this.input.removeEventListeners()},r._onKeyDown=function(e){var t,i=e.target,n=e.keyCode,s=e.ctrlKey,r=e.metaKey,o=this._store.activeItems,a=this.input.isFocussed,c=this.dropdown.isActive,l=this.itemList.hasChildren(),h=String.fromCharCode(n),u=J,d=Y,p=Z,m=Q,f=ee,v=te,g=ie,_=ne,b=se,y=s||r;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(h)&&this.showDropdown();var E=((t={})[m]=this._onAKey,t[p]=this._onEnterKey,t[f]=this._onEscapeKey,t[v]=this._onDirectionKey,t[_]=this._onDirectionKey,t[g]=this._onDirectionKey,t[b]=this._onDirectionKey,t[d]=this._onDeleteKey,t[u]=this._onDeleteKey,t);E[n]&&E[n]({event:e,target:i,keyCode:n,metaKey:r,activeItems:o,hasFocusedInput:a,hasActiveDropdown:c,hasItems:l,hasCtrlDownKeyPressed:y})},r._onKeyUp=function(e){var t=e.target,i=e.keyCode,n=this.input.value,s=this._store.activeItems,r=this._canAddItem(s,n),o=J,a=Y;if(this._isTextElement)if(r.notice&&n){var c=this._getTemplate(\"notice\",r.notice);this.dropdown.element.innerHTML=c.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0);else{var l=(i===o||i===a)&&!t.value,h=!this._isTextElement&&this._isSearching,u=this._canSearch&&r.response;l&&h?(this._isSearching=!1,this._store.dispatch(be(!0))):u&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},r._onAKey=function(e){var t=e.hasItems;e.hasCtrlDownKeyPressed&&t&&(this._canSearch=!1,this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement&&this.highlightAll())},r._onEnterKey=function(e){var t=e.event,i=e.target,n=e.activeItems,s=e.hasActiveDropdown,r=Z,o=i.hasAttribute(\"data-button\");if(this._isTextElement&&i.value){var a=this.input.value;this._canAddItem(n,a).response&&(this.hideDropdown(!0),this._addItem({value:a}),this._triggerChange(a),this.clearInput())}if(o&&(this._handleButtonAction(n,i),t.preventDefault()),s){var c=this.dropdown.getChild(\".\"+this.config.classNames.highlightedState);c&&(n[0]&&(n[0].keyCode=r),this._handleChoiceAction(n,c)),t.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),t.preventDefault())},r._onEscapeKey=function(e){e.hasActiveDropdown&&(this.hideDropdown(!0),this.containerOuter.focus())},r._onDirectionKey=function(e){var t,i,n,s=e.event,r=e.hasActiveDropdown,o=e.keyCode,a=e.metaKey,c=ie,l=ne,h=se;if(r||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var u,d=o===c||o===h?1:-1,p=\"[data-choice-selectable]\";if(a||o===h||o===l)u=d>0?this.dropdown.element.querySelector(\"[data-choice-selectable]:last-of-type\"):this.dropdown.element.querySelector(p);else{var m=this.dropdown.element.querySelector(\".\"+this.config.classNames.highlightedState);u=m?function(e,t,i){if(void 0===i&&(i=1),e instanceof Element&&\"string\"==typeof t){for(var n=(i>0?\"next\":\"previous\")+\"ElementSibling\",s=e[n];s;){if(s.matches(t))return s;s=s[n]}return s}}(m,p,d):this.dropdown.element.querySelector(p)}u&&(t=u,i=this.choiceList.element,void 0===(n=d)&&(n=1),t&&(n>0?i.scrollTop+i.offsetHeight>=t.offsetTop+t.offsetHeight:t.offsetTop>=i.scrollTop)||this.choiceList.scrollToChildElement(u,d),this._highlightChoice(u)),s.preventDefault()}},r._onDeleteKey=function(e){var t=e.event,i=e.target,n=e.hasFocusedInput,s=e.activeItems;!n||i.value||this._isSelectOneElement||(this._handleBackspace(s),t.preventDefault())},r._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},r._onTouchEnd=function(e){var t=(e||e.touches[0]).target;this._wasTap&&this.containerOuter.element.contains(t)&&((t===this.containerOuter.element||t===this.containerInner.element)&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation()),this._wasTap=!0},r._onMouseDown=function(e){var t=e.target;if(t instanceof HTMLElement){if(we&&this.choiceList.element.contains(t)){var i=this.choiceList.element.firstElementChild,n=\"ltr\"===this._direction?e.offsetX>=i.offsetWidth:e.offsetX0&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0))},r._onFocus=function(e){var t,i=this,n=e.target;this.containerOuter.element.contains(n)&&((t={}).text=function(){n===i.input.element&&i.containerOuter.addFocusState()},t[\"select-one\"]=function(){i.containerOuter.addFocusState(),n===i.input.element&&i.showDropdown(!0)},t[\"select-multiple\"]=function(){n===i.input.element&&(i.showDropdown(!0),i.containerOuter.addFocusState())},t)[this.passedElement.element.type]()},r._onBlur=function(e){var t=this,i=e.target;if(this.containerOuter.element.contains(i)&&!this._isScrollingOnIe){var n,s=this._store.activeItems.some((function(e){return e.highlighted}));((n={}).text=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),s&&t.unhighlightAll(),t.hideDropdown(!0))},n[\"select-one\"]=function(){t.containerOuter.removeFocusState(),(i===t.input.element||i===t.containerOuter.element&&!t._canSearch)&&t.hideDropdown(!0)},n[\"select-multiple\"]=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),t.hideDropdown(!0),s&&t.unhighlightAll())},n)[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},r._onFormReset=function(){this._store.dispatch({type:\"RESET_TO\",state:this._initialState})},r._highlightChoice=function(e){var t=this;void 0===e&&(e=null);var i=Array.from(this.dropdown.element.querySelectorAll(\"[data-choice-selectable]\"));if(i.length){var n=e;Array.from(this.dropdown.element.querySelectorAll(\".\"+this.config.classNames.highlightedState)).forEach((function(e){e.classList.remove(t.config.classNames.highlightedState),e.setAttribute(\"aria-selected\",\"false\")})),n?this._highlightPosition=i.indexOf(n):(n=i.length>this._highlightPosition?i[this._highlightPosition]:i[i.length-1])||(n=i[0]),n.classList.add(this.config.classNames.highlightedState),n.setAttribute(\"aria-selected\",\"true\"),this.passedElement.triggerEvent(B,{el:n}),this.dropdown.isActive&&(this.input.setActiveDescendant(n.id),this.containerOuter.setActiveDescendant(n.id))}},r._addItem=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.choiceId,r=void 0===s?-1:s,o=e.groupId,a=void 0===o?-1:o,c=e.customProperties,l=void 0===c?null:c,h=e.placeholder,u=void 0!==h&&h,d=e.keyCode,p=void 0===d?null:d,m=\"string\"==typeof t?t.trim():t,f=p,v=l,g=this._store.items,_=n||m,b=r||-1,y=a>=0?this._store.getGroupById(a):null,E=g?g.length+1:1;return this.config.prependValue&&(m=this.config.prependValue+m.toString()),this.config.appendValue&&(m+=this.config.appendValue.toString()),this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.choiceId,r=e.groupId,o=e.customProperties,a=e.placeholder,c=e.keyCode;return{type:W,value:t,label:i,id:n,choiceId:s,groupId:r,customProperties:o,placeholder:a,keyCode:c}}({value:m,label:_,id:E,choiceId:b,groupId:a,customProperties:l,placeholder:u,keyCode:f})),this._isSelectOneElement&&this.removeActiveItems(E),this.passedElement.triggerEvent(K,{id:E,value:m,label:_,customProperties:v,groupValue:y&&y.value?y.value:void 0,keyCode:f}),this},r._removeItem=function(e){if(!e||!E(\"Object\",e))return this;var t=e.id,i=e.value,n=e.label,s=e.choiceId,r=e.groupId,o=r>=0?this._store.getGroupById(r):null;return this._store.dispatch(function(e,t){return{type:X,id:e,choiceId:t}}(t,s)),o&&o.value?this.passedElement.triggerEvent(R,{id:t,value:i,label:n,groupValue:o.value}):this.passedElement.triggerEvent(R,{id:t,value:i,label:n}),this},r._addChoice=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.isSelected,r=void 0!==s&&s,o=e.isDisabled,a=void 0!==o&&o,c=e.groupId,l=void 0===c?-1:c,h=e.customProperties,u=void 0===h?null:h,d=e.placeholder,p=void 0!==d&&d,m=e.keyCode,f=void 0===m?null:m;if(null!=t){var v=this._store.choices,g=n||t,_=v?v.length+1:1,b=this._baseId+\"-\"+this._idNames.itemChoice+\"-\"+_;this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.groupId,r=e.disabled,o=e.elementId,a=e.customProperties,c=e.placeholder,l=e.keyCode;return{type:V,value:t,label:i,id:n,groupId:s,disabled:r,elementId:o,customProperties:a,placeholder:c,keyCode:l}}({id:_,groupId:l,elementId:b,value:t,label:g,disabled:a,customProperties:u,placeholder:p,keyCode:f})),r&&this._addItem({value:t,label:g,choiceId:_,customProperties:u,placeholder:p,keyCode:f})}},r._addGroup=function(e){var t=this,i=e.group,n=e.id,s=e.valueKey,r=void 0===s?\"value\":s,o=e.labelKey,a=void 0===o?\"label\":o,c=E(\"Object\",i)?i.choices:Array.from(i.getElementsByTagName(\"OPTION\")),l=n||Math.floor((new Date).valueOf()*Math.random()),h=!!i.disabled&&i.disabled;c?(this._store.dispatch(Ee({value:i.label,id:l,active:!0,disabled:h})),c.forEach((function(e){var i=e.disabled||e.parentNode&&e.parentNode.disabled;t._addChoice({value:e[r],label:E(\"Object\",e)?e[a]:e.innerHTML,isSelected:e.selected,isDisabled:i,groupId:l,customProperties:e.customProperties,placeholder:e.placeholder})}))):this._store.dispatch(Ee({value:i.label,id:i.id,active:!1,disabled:i.disabled}))},r._getTemplate=function(e){var t;if(!e)return null;for(var i=this.config.classNames,n=arguments.length,s=new Array(n>1?n-1:0),r=1;r{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.value.change,(()=>{this.input_el.value=this.format_value,this.old_value=this.input_el.value})),this.connect(this.model.properties.low.change,(()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&(0,p.assert)(t<=l,\"Invalid bounds, low must be inferior to high\"),null!=e&&null!=t&&e{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&(0,p.assert)(l>=t,\"Invalid bounds, high must be superior to low\"),null!=e&&null!=l&&e>l&&(this.model.value=l)})),this.connect(this.model.properties.high.change,(()=>this.input_el.placeholder=this.model.placeholder)),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled)),this.connect(this.model.properties.placeholder.change,(()=>this.input_el.placeholder=this.model.placeholder))}get format_value(){return null!=this.model.value?this.model.pretty(this.model.value):\"\"}_set_input_filter(e){this.input_el.addEventListener(\"input\",(()=>{const{selectionStart:t,selectionEnd:l}=this.input_el;if(e(this.input_el.value))this.old_value=this.input_el.value;else{const e=this.old_value.length-this.input_el.value.length;this.input_el.value=this.old_value,t&&l&&this.input_el.setSelectionRange(t-1,l+e)}}))}render(){super.render(),this.input_el=(0,r.input)({type:\"text\",class:_.input,name:this.model.name,value:this.format_value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.old_value=this.format_value,this.set_input_filter(),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.input_el.addEventListener(\"focusout\",(()=>this.input_el.value=this.format_value)),this.group_el.appendChild(this.input_el)}set_input_filter(){\"int\"==this.model.mode?this._set_input_filter((e=>m.test(e))):\"float\"==this.model.mode&&this._set_input_filter((e=>c.test(e)))}bound_value(e){let t=e;const{low:l,high:i}=this.model;return t=null!=l?Math.max(l,t):t,t=null!=i?Math.min(i,t):t,t}get value(){let e=\"\"!=this.input_el.value?Number(this.input_el.value):null;return null!=e&&(e=this.bound_value(e)),e}change_input(){null==this.value?this.model.value=null:Number.isNaN(this.value)||(this.model.value=this.value)}}l.NumericInputView=v,v.__name__=\"NumericInputView\";class g extends o.InputWidget{constructor(e){super(e)}_formatter(e,t){return(0,d.isString)(t)?h.format(e,t):t.doFormat([e],{loc:0})[0]}pretty(e){return null!=this.format?this._formatter(e,this.format):`${e}`}}l.NumericInput=g,u=g,g.__name__=\"NumericInput\",u.prototype.default_view=v,u.define((({Number:e,String:t,Enum:l,Ref:i,Or:n,Nullable:s})=>({value:[s(e),null],placeholder:[t,\"\"],mode:[l(\"int\",\"float\"),\"int\"],format:[s(n(t,i(a.TickFormatter))),null],low:[s(e),null],high:[s(e),null]})))},\n 479: function _(e,t,r,s,n){var a;s();const o=e(468),_=e(43);class p extends o.MarkupView{render(){super.render();const e=(0,_.pre)({style:{overflow:\"auto\"}},this.model.text);this.markup_el.appendChild(e)}}r.PreTextView=p,p.__name__=\"PreTextView\";class u extends o.Markup{constructor(e){super(e)}}r.PreText=u,a=u,u.__name__=\"PreText\",a.prototype.default_view=p},\n 480: function _(t,o,e,a,i){a();const n=t(1);var u;const s=t(452),c=t(43),_=(0,n.__importStar)(t(318));class r extends s.ButtonGroupView{change_active(t){this.model.active!==t&&(this.model.active=t)}_update_active(){const{active:t}=this.model;this._buttons.forEach(((o,e)=>{(0,c.classes)(o).toggle(_.active,t===e)}))}}e.RadioButtonGroupView=r,r.__name__=\"RadioButtonGroupView\";class l extends s.ButtonGroup{constructor(t){super(t)}}e.RadioButtonGroup=l,u=l,l.__name__=\"RadioButtonGroup\",u.prototype.default_view=r,u.define((({Int:t,Nullable:o})=>({active:[o(t),null]})))},\n 481: function _(e,n,i,t,a){t();const s=e(1);var l;const o=e(43),d=e(34),p=e(455),r=(0,s.__importStar)(e(449));class u extends p.InputGroupView{render(){super.render();const e=(0,o.div)({class:[r.input_group,this.model.inline?r.inline:null]});this.el.appendChild(e);const n=(0,d.uniqueId)(),{active:i,labels:t}=this.model;this._inputs=[];for(let a=0;athis.change_active(a))),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),a==i&&(s.checked=!0);const l=(0,o.label)(s,(0,o.span)(t[a]));e.appendChild(l)}}change_active(e){this.model.active=e}}i.RadioGroupView=u,u.__name__=\"RadioGroupView\";class c extends p.InputGroup{constructor(e){super(e)}}i.RadioGroup=c,l=c,c.__name__=\"RadioGroup\",l.prototype.default_view=u,l.define((({Boolean:e,Int:n,String:i,Array:t,Nullable:a})=>({active:[a(n),null],labels:[t(i),[]],inline:[e,!1]})))},\n 482: function _(e,r,t,a,i){a();var n;const o=(0,e(1).__importStar)(e(153)),s=e(461),_=e(8);class d extends s.AbstractRangeSliderView{}t.RangeSliderView=d,d.__name__=\"RangeSliderView\";class c extends s.AbstractSlider{constructor(e){super(e),this.behaviour=\"drag\",this.connected=[!1,!0,!1]}_formatter(e,r){return(0,_.isString)(r)?o.format(e,r):r.compute(e)}}t.RangeSlider=c,n=c,c.__name__=\"RangeSlider\",n.prototype.default_view=d,n.override({format:\"0[.]00\"})},\n 483: function _(e,t,n,s,i){s();const l=e(1);var u;const a=e(43),o=e(8),p=e(13),_=e(448),r=(0,l.__importStar)(e(449));class c extends _.InputWidgetView{constructor(){super(...arguments),this._known_values=new Set}connect_signals(){super.connect_signals();const{value:e,options:t}=this.model.properties;this.on_change(e,(()=>{this._update_value()})),this.on_change(t,(()=>{(0,a.empty)(this.input_el),(0,a.append)(this.input_el,...this.options_el()),this._update_value()}))}options_el(){const{_known_values:e}=this;function t(t){return t.map((t=>{let n,s;return(0,o.isString)(t)?n=s=t:[n,s]=t,e.add(n),(0,a.option)({value:n},s)}))}e.clear();const{options:n}=this.model;return(0,o.isArray)(n)?t(n):(0,p.entries)(n).map((([e,n])=>(0,a.optgroup)({label:e},t(n))))}render(){super.render(),this.input_el=(0,a.select)({class:r.input,name:this.model.name,disabled:this.model.disabled},this.options_el()),this._update_value(),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el)}change_input(){const e=this.input_el.value;this.model.value=e,super.change_input()}_update_value(){const{value:e}=this.model;this._known_values.has(e)?this.input_el.value=e:this.input_el.removeAttribute(\"value\")}}n.SelectView=c,c.__name__=\"SelectView\";class h extends _.InputWidget{constructor(e){super(e)}}n.Select=h,u=h,h.__name__=\"Select\",u.prototype.default_view=c,u.define((({String:e,Array:t,Tuple:n,Dict:s,Or:i})=>{const l=t(i(e,n(e,e)));return{value:[e,\"\"],options:[i(l,s(l)),[]]}}))},\n 484: function _(e,t,r,i,a){i();var o;const s=(0,e(1).__importStar)(e(153)),_=e(461),n=e(8);class c extends _.AbstractSliderView{}r.SliderView=c,c.__name__=\"SliderView\";class d extends _.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}_formatter(e,t){return(0,n.isString)(t)?s.format(e,t):t.compute(e)}}r.Slider=d,o=d,d.__name__=\"Slider\",o.prototype.default_view=c,o.override({format:\"0[.]00\"})},\n 485: function _(e,t,i,n,s){var l;n();const o=e(478),r=e(43),{min:a,max:h,floor:_,abs:u}=Math;function d(e){return _(e)!==e?e.toFixed(16).replace(/0+$/,\"\").split(\".\")[1].length:0}class p extends o.NumericInputView{*buttons(){yield this.btn_up_el,yield this.btn_down_el}initialize(){super.initialize(),this._handles={interval:void 0,timeout:void 0},this._interval=200}connect_signals(){super.connect_signals();const e=this.model.properties;this.on_change(e.disabled,(()=>{for(const e of this.buttons())(0,r.toggle_attribute)(e,\"disabled\",this.model.disabled)}))}render(){super.render(),this.wrapper_el=(0,r.div)({class:\"bk-spin-wrapper\"}),this.group_el.replaceChild(this.wrapper_el,this.input_el),this.btn_up_el=(0,r.button)({class:\"bk-spin-btn bk-spin-btn-up\"}),this.btn_down_el=(0,r.button)({class:\"bk-spin-btn bk-spin-btn-down\"}),this.wrapper_el.appendChild(this.input_el),this.wrapper_el.appendChild(this.btn_up_el),this.wrapper_el.appendChild(this.btn_down_el);for(const e of this.buttons())(0,r.toggle_attribute)(e,\"disabled\",this.model.disabled),e.addEventListener(\"mousedown\",(e=>this._btn_mouse_down(e))),e.addEventListener(\"mouseup\",(()=>this._btn_mouse_up())),e.addEventListener(\"mouseleave\",(()=>this._btn_mouse_leave()));this.input_el.addEventListener(\"keydown\",(e=>this._input_key_down(e))),this.input_el.addEventListener(\"keyup\",(()=>this.model.value_throttled=this.model.value)),this.input_el.addEventListener(\"wheel\",(e=>this._input_mouse_wheel(e))),this.input_el.addEventListener(\"wheel\",function(e,t,i=!1){let n;return function(...s){const l=this,o=i&&void 0===n;void 0!==n&&clearTimeout(n),n=setTimeout((function(){n=void 0,i||e.apply(l,s)}),t),o&&e.apply(l,s)}}((()=>{this.model.value_throttled=this.model.value}),this.model.wheel_wait,!1))}get precision(){const{low:e,high:t,step:i}=this.model,n=d;return h(n(u(null!=e?e:0)),n(u(null!=t?t:0)),n(u(i)))}remove(){this._stop_incrementation(),super.remove()}_start_incrementation(e){clearInterval(this._handles.interval),this._counter=0;const{step:t}=this.model,i=e=>{if(this._counter+=1,this._counter%5==0){const t=Math.floor(this._counter/5);t<10?(clearInterval(this._handles.interval),this._handles.interval=setInterval((()=>i(e)),this._interval/(t+1))):t>=10&&t<=13&&(clearInterval(this._handles.interval),this._handles.interval=setInterval((()=>i(2*e)),this._interval/10))}this.increment(e)};this._handles.interval=setInterval((()=>i(e*t)),this._interval)}_stop_incrementation(){clearTimeout(this._handles.timeout),this._handles.timeout=void 0,clearInterval(this._handles.interval),this._handles.interval=void 0,this.model.value_throttled=this.model.value}_btn_mouse_down(e){e.preventDefault();const t=e.currentTarget===this.btn_up_el?1:-1;this.increment(t*this.model.step),this.input_el.focus(),this._handles.timeout=setTimeout((()=>this._start_incrementation(t)),this._interval)}_btn_mouse_up(){this._stop_incrementation()}_btn_mouse_leave(){this._stop_incrementation()}_input_mouse_wheel(e){if(document.activeElement===this.input_el){e.preventDefault();const t=e.deltaY>0?-1:1;this.increment(t*this.model.step)}}_input_key_down(e){switch(e.keyCode){case r.Keys.Up:return e.preventDefault(),this.increment(this.model.step);case r.Keys.Down:return e.preventDefault(),this.increment(-this.model.step);case r.Keys.PageUp:return e.preventDefault(),this.increment(this.model.page_step_multiplier*this.model.step);case r.Keys.PageDown:return e.preventDefault(),this.increment(-this.model.page_step_multiplier*this.model.step)}}adjust_to_precision(e){return this.bound_value(Number(e.toFixed(this.precision)))}increment(e){const{low:t,high:i}=this.model;null==this.model.value?e>0?this.model.value=null!=t?t:null!=i?a(0,i):0:e<0&&(this.model.value=null!=i?i:null!=t?h(t,0):0):this.model.value=this.adjust_to_precision(this.model.value+e)}change_input(){super.change_input(),this.model.value_throttled=this.model.value}}i.SpinnerView=p,p.__name__=\"SpinnerView\";class m extends o.NumericInput{constructor(e){super(e)}}i.Spinner=m,l=m,m.__name__=\"Spinner\",l.prototype.default_view=p,l.define((({Number:e,Nullable:t})=>({value_throttled:[t(e),null],step:[e,1],page_step_multiplier:[e,10],wheel_wait:[e,100]}))),l.override({mode:\"float\"})},\n 486: function _(e,t,s,n,i){n();const o=e(1);var r;const c=e(447),l=e(43),p=(0,o.__importStar)(e(449));class _ extends c.TextLikeInputView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.rows.change,(()=>this.input_el.rows=this.model.rows)),this.connect(this.model.properties.cols.change,(()=>this.input_el.cols=this.model.cols))}_render_input(){this.input_el=(0,l.textarea)({class:p.input})}render(){super.render(),this.input_el.cols=this.model.cols,this.input_el.rows=this.model.rows}}s.TextAreaInputView=_,_.__name__=\"TextAreaInputView\";class a extends c.TextLikeInput{constructor(e){super(e)}}s.TextAreaInput=a,r=a,a.__name__=\"TextAreaInput\",r.prototype.default_view=_,r.define((({Int:e})=>({cols:[e,20],rows:[e,2]}))),r.override({max_length:500})},\n 487: function _(e,t,s,c,i){c();const o=e(1);var a;const n=e(441),l=e(43),_=(0,o.__importStar)(e(318));class r extends n.AbstractButtonView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._update_active()))}render(){super.render(),this._update_active()}click(){this.model.active=!this.model.active,super.click()}_update_active(){(0,l.classes)(this.button_el).toggle(_.active,this.model.active)}}s.ToggleView=r,r.__name__=\"ToggleView\";class g extends n.AbstractButton{constructor(e){super(e)}}s.Toggle=g,a=g,g.__name__=\"Toggle\",a.prototype.default_view=r,a.define((({Boolean:e})=>({active:[e,!1]}))),a.override({label:\"Toggle\"})},\n }, 439, {\"models/widgets/main\":439,\"models/widgets/index\":440,\"models/widgets/abstract_button\":441,\"models/widgets/control\":442,\"models/widgets/widget\":512,\"models/widgets/abstract_icon\":444,\"models/widgets/autocomplete_input\":445,\"models/widgets/text_input\":446,\"models/widgets/text_like_input\":447,\"models/widgets/input_widget\":448,\"styles/widgets/inputs.css\":449,\"models/widgets/button\":450,\"models/widgets/checkbox_button_group\":451,\"models/widgets/button_group\":452,\"models/widgets/oriented_control\":453,\"models/widgets/checkbox_group\":454,\"models/widgets/input_group\":455,\"models/widgets/color_picker\":456,\"models/widgets/date_picker\":457,\"styles/widgets/flatpickr.css\":459,\"models/widgets/date_range_slider\":460,\"models/widgets/abstract_slider\":461,\"styles/widgets/sliders.css\":463,\"styles/widgets/nouislider.css\":464,\"models/widgets/date_slider\":465,\"models/widgets/datetime_range_slider\":466,\"models/widgets/div\":467,\"models/widgets/markup\":468,\"styles/clearfix.css\":469,\"models/widgets/dropdown\":470,\"models/widgets/file_input\":471,\"models/widgets/multiselect\":472,\"models/widgets/paragraph\":473,\"models/widgets/password_input\":474,\"models/widgets/multichoice\":475,\"styles/widgets/choices.css\":477,\"models/widgets/numeric_input\":478,\"models/widgets/pretext\":479,\"models/widgets/radio_button_group\":480,\"models/widgets/radio_group\":481,\"models/widgets/range_slider\":482,\"models/widgets/selectbox\":483,\"models/widgets/slider\":484,\"models/widgets/spinner\":485,\"models/widgets/textarea_input\":486,\"models/widgets/toggle\":487}, {});});\n\n /* END bokeh-widgets.min.js */\n },\n function(Bokeh) {\n /* BEGIN bokeh-tables.min.js */\n /*!\n * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n * \n * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * Neither the name of Anaconda nor the names of any contributors\n * may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\n (function(root, factory) {\n factory(root[\"Bokeh\"], \"2.4.3\");\n })(this, function(Bokeh, version) {\n let define;\n return (function(modules, entry, aliases, externals) {\n const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n if (bokeh != null) {\n return bokeh.register_plugin(modules, entry, aliases);\n } else {\n throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n }\n })\n ({\n 488: function _(t,e,o,r,s){r();const _=(0,t(1).__importStar)(t(489));o.Tables=_;(0,t(7).register_models)(_)},\n 489: function _(g,a,r,e,t){e();const o=g(1);(0,o.__exportStar)(g(490),r),(0,o.__exportStar)(g(493),r),t(\"DataTable\",g(496).DataTable),t(\"TableColumn\",g(514).TableColumn),t(\"TableWidget\",g(513).TableWidget);var n=g(516);t(\"AvgAggregator\",n.AvgAggregator),t(\"MinAggregator\",n.MinAggregator),t(\"MaxAggregator\",n.MaxAggregator),t(\"SumAggregator\",n.SumAggregator);var A=g(517);t(\"GroupingInfo\",A.GroupingInfo),t(\"DataCube\",A.DataCube)},\n 490: function _(e,t,i,s,a){s();const r=e(1);var l,n,u,d,o,p,_,c,h;const E=e(43),V=e(226),m=e(53),f=e(491),v=(0,r.__importStar)(e(492));class w extends V.DOMView{constructor(e){const{model:t,parent:i}=e.column;super(Object.assign({model:t,parent:i},e)),this.args=e,this.initialize(),this.render()}get emptyValue(){return null}initialize(){super.initialize(),this.inputEl=this._createInput(),this.defaultValue=null}async lazy_initialize(){throw new Error(\"unsupported\")}css_classes(){return super.css_classes().concat(v.cell_editor)}render(){super.render(),this.args.container.append(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()}renderEditor(){}disableNavigation(){this.inputEl.addEventListener(\"keydown\",(e=>{switch(e.keyCode){case E.Keys.Left:case E.Keys.Right:case E.Keys.Up:case E.Keys.Down:case E.Keys.PageUp:case E.Keys.PageDown:e.stopImmediatePropagation()}}))}destroy(){this.remove()}focus(){this.inputEl.focus()}show(){}hide(){}position(){}getValue(){return this.inputEl.value}setValue(e){this.inputEl.value=e}serializeValue(){return this.getValue()}isValueChanged(){return!(\"\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue}applyValue(e,t){const i=this.args.grid.getData(),s=i.index.indexOf(e[f.DTINDEX_NAME]);i.setField(s,this.args.column.field,t)}loadValue(e){const t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)}validateValue(e){if(this.args.column.validator){const t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}}validate(){return this.validateValue(this.getValue())}}i.CellEditorView=w,w.__name__=\"CellEditorView\";class g extends m.Model{}i.CellEditor=g,g.__name__=\"CellEditor\";class x extends w{get emptyValue(){return\"\"}_createInput(){return(0,E.input)({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}}i.StringEditorView=x,x.__name__=\"StringEditorView\";class y extends g{}i.StringEditor=y,l=y,y.__name__=\"StringEditor\",l.prototype.default_view=x,l.define((({String:e,Array:t})=>({completions:[t(e),[]]})));class I extends w{_createInput(){return(0,E.textarea)()}renderEditor(){this.inputEl.focus(),this.inputEl.select()}}i.TextEditorView=I,I.__name__=\"TextEditorView\";class b extends g{}i.TextEditor=b,n=b,b.__name__=\"TextEditor\",n.prototype.default_view=I;class N extends w{_createInput(){return(0,E.select)()}renderEditor(){for(const e of this.model.options)this.inputEl.appendChild((0,E.option)({value:e},e));this.focus()}}i.SelectEditorView=N,N.__name__=\"SelectEditorView\";class C extends g{}i.SelectEditor=C,u=C,C.__name__=\"SelectEditor\",u.prototype.default_view=N,u.define((({String:e,Array:t})=>({options:[t(e),[]]})));class D extends w{_createInput(){return(0,E.input)({type:\"text\"})}}i.PercentEditorView=D,D.__name__=\"PercentEditorView\";class S extends g{}i.PercentEditor=S,d=S,S.__name__=\"PercentEditor\",d.prototype.default_view=D;class k extends w{_createInput(){return(0,E.input)({type:\"checkbox\"})}renderEditor(){this.focus()}loadValue(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue}serializeValue(){return this.inputEl.checked}}i.CheckboxEditorView=k,k.__name__=\"CheckboxEditorView\";class z extends g{}i.CheckboxEditor=z,o=z,z.__name__=\"CheckboxEditor\",o.prototype.default_view=k;class P extends w{_createInput(){return(0,E.input)({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){var e;return null!==(e=parseInt(this.getValue(),10))&&void 0!==e?e:0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid integer\"}:super.validateValue(e)}}i.IntEditorView=P,P.__name__=\"IntEditorView\";class T extends g{}i.IntEditor=T,p=T,T.__name__=\"IntEditor\",p.prototype.default_view=P,p.define((({Int:e})=>({step:[e,1]})));class K extends w{_createInput(){return(0,E.input)({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){var e;return null!==(e=parseFloat(this.getValue()))&&void 0!==e?e:0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid number\"}:super.validateValue(e)}}i.NumberEditorView=K,K.__name__=\"NumberEditorView\";class A extends g{}i.NumberEditor=A,_=A,A.__name__=\"NumberEditor\",_.prototype.default_view=K,_.define((({Number:e})=>({step:[e,.01]})));class M extends w{_createInput(){return(0,E.input)({type:\"text\"})}}i.TimeEditorView=M,M.__name__=\"TimeEditorView\";class O extends g{}i.TimeEditor=O,c=O,O.__name__=\"TimeEditor\",c.prototype.default_view=M;class F extends w{_createInput(){return(0,E.input)({type:\"text\"})}get emptyValue(){return new Date}renderEditor(){this.inputEl.focus(),this.inputEl.select()}destroy(){super.destroy()}show(){super.show()}hide(){super.hide()}position(){return super.position()}getValue(){}setValue(e){}}i.DateEditorView=F,F.__name__=\"DateEditorView\";class L extends g{}i.DateEditor=L,h=L,L.__name__=\"DateEditor\",h.prototype.default_view=F},\n 491: function _(_,n,i,t,d){t(),i.DTINDEX_NAME=\"__bkdt_internal_index__\"},\n 492: function _(e,l,o,t,r){t(),o.root=\"bk-root\",o.data_table=\"bk-data-table\",o.cell_special_defaults=\"bk-cell-special-defaults\",o.cell_select=\"bk-cell-select\",o.cell_index=\"bk-cell-index\",o.header_index=\"bk-header-index\",o.cell_editor=\"bk-cell-editor\",o.cell_editor_completion=\"bk-cell-editor-completion\",o.default='.bk-root .bk-data-table{box-sizing:content-box;font-size:11px;}.bk-root .bk-data-table input[type=\"checkbox\"]{margin-left:4px;margin-right:4px;}.bk-root .bk-cell-special-defaults{border-right-color:silver;border-right-style:solid;background:#f5f5f5;}.bk-root .bk-cell-select{border-right-color:silver;border-right-style:solid;background:#f5f5f5;}.bk-root .slick-cell.bk-cell-index{border-right-color:silver;border-right-style:solid;background:#f5f5f5;text-align:right;background:#f0f0f0;color:#909090;}.bk-root .bk-header-index .slick-column-name{float:right;}.bk-root .slick-row.selected .bk-cell-index{background-color:transparent;}.bk-root .slick-row.odd{background:#f0f0f0;}.bk-root .slick-cell{padding-left:4px;padding-right:4px;border-right-color:transparent;border:0.25px solid transparent;}.bk-root .slick-cell .bk{line-height:inherit;}.bk-root .slick-cell.active{border-style:dashed;}.bk-root .slick-cell.selected{background-color:#F0F8FF;}.bk-root .slick-cell.editable{padding-left:0;padding-right:0;}.bk-root .bk-cell-editor{display:contents;}.bk-root .bk-cell-editor input,.bk-root .bk-cell-editor select{width:100%;height:100%;border:0;margin:0;padding:0;outline:0;background:transparent;vertical-align:baseline;}.bk-root .bk-cell-editor input{padding-left:4px;padding-right:4px;}.bk-root .bk-cell-editor-completion{font-size:11px;}'},\n 493: function _(t,e,r,n,o){n();const a=t(1);var s,i,l,c,u,m;const _=(0,a.__importDefault)(t(151)),d=(0,a.__importStar)(t(153)),f=t(494),g=t(43),F=t(20),h=t(8),p=t(34),S=t(22),x=t(53);class b extends x.Model{constructor(t){super(t)}doFormat(t,e,r,n,o){return null==r?\"\":`${r}`.replace(/&/g,\"&\").replace(//g,\">\")}}r.CellFormatter=b,b.__name__=\"CellFormatter\";class M extends b{constructor(t){super(t)}doFormat(t,e,r,n,o){const{font_style:a,text_align:s,text_color:i}=this,l=(0,g.div)(null==r?\"\":`${r}`);switch(a){case\"bold\":l.style.fontWeight=\"bold\";break;case\"italic\":l.style.fontStyle=\"italic\"}return null!=s&&(l.style.textAlign=s),null!=i&&(l.style.color=(0,S.color2css)(i)),l.outerHTML}}r.StringFormatter=M,s=M,M.__name__=\"StringFormatter\",s.define((({Color:t,Nullable:e,String:r})=>({font_style:[F.FontStyle,\"normal\"],text_align:[F.TextAlign,\"left\"],text_color:[e(t),null],nan_format:[r,\"-\"]})));class w extends M{constructor(t){super(t)}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}doFormat(t,e,r,n,o){const a=Math.abs(r)<=this.scientific_limit_low||Math.abs(r)>=this.scientific_limit_high;let s=this.precision;return s<1&&(s=1),r=null==r||isNaN(r)?this.nan_format:0==r?(0,p.to_fixed)(r,1):a?r.toExponential(s):(0,p.to_fixed)(r,s),super.doFormat(t,e,r,n,o)}}r.ScientificFormatter=w,i=w,w.__name__=\"ScientificFormatter\",i.define((({Number:t})=>({precision:[t,10],power_limit_high:[t,5],power_limit_low:[t,-3]})));class C extends M{constructor(t){super(t)}doFormat(t,e,r,n,o){const{format:a,language:s,nan_format:i}=this,l=(()=>{switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}})();return r=null==r||isNaN(r)?i:d.format(r,a,s,l),super.doFormat(t,e,r,n,o)}}r.NumberFormatter=C,l=C,C.__name__=\"NumberFormatter\",l.define((({String:t})=>({format:[t,\"0,0\"],language:[t,\"en\"],rounding:[F.RoundingFunction,\"round\"]})));class y extends b{constructor(t){super(t)}doFormat(t,e,r,n,o){return r?(0,g.i)({class:this.icon}).outerHTML:\"\"}}r.BooleanFormatter=y,c=y,y.__name__=\"BooleanFormatter\",c.define((({String:t})=>({icon:[t,\"check\"]})));class N extends M{constructor(t){super(t)}getFormat(){switch(this.format){case\"ATOM\":case\"W3C\":case\"RFC-3339\":case\"ISO-8601\":return\"%Y-%m-%d\";case\"COOKIE\":return\"%a, %d %b %Y\";case\"RFC-850\":return\"%A, %d-%b-%y\";case\"RFC-1123\":case\"RFC-2822\":return\"%a, %e %b %Y\";case\"RSS\":case\"RFC-822\":case\"RFC-1036\":return\"%a, %e %b %y\";case\"TIMESTAMP\":return;default:return this.format}}doFormat(t,e,r,n,o){const{nan_format:a}=this;let s;return s=null==(r=(0,h.isString)(r)?parseInt(r,10):r)||isNaN(r)||-9223372036854776===r?a:(0,_.default)(r,this.getFormat()),super.doFormat(t,e,s,n,o)}}r.DateFormatter=N,u=N,N.__name__=\"DateFormatter\",u.define((({String:t})=>({format:[t,\"ISO-8601\"]})));class T extends b{constructor(t){super(t)}doFormat(t,e,r,n,o){const{template:a}=this;if(null==r)return\"\";return f._.template(a)(Object.assign(Object.assign({},o),{value:r}))}}r.HTMLTemplateFormatter=T,m=T,T.__name__=\"HTMLTemplateFormatter\",m.define((({String:t})=>({template:[t,\"<%= value %>\"]})))},\n 494: function _(e,n,t,f,i){var o=e(495),d=o.template;function r(e,n,t){return d(e,n,t)}r._=o,n.exports=r,\"function\"==typeof define&&define.amd?define((function(){return r})):\"undefined\"==typeof window&&\"undefined\"==typeof navigator||(window.UnderscoreTemplate=r)},\n 495: function _(r,e,n,t,a){\n // (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n // Underscore may be freely distributed under the MIT license.\n var u={},c=Array.prototype,o=Object.prototype,l=c.slice,i=o.toString,f=o.hasOwnProperty,s=c.forEach,p=Object.keys,_=Array.isArray,h=function(){},v=h.each=h.forEach=function(r,e,n){if(null!=r)if(s&&r.forEach===s)r.forEach(e,n);else if(r.length===+r.length){for(var t=0,a=r.length;t\":\">\",'\"':\""\",\"'\":\"'\"}},y={escape:new RegExp(\"[\"+h.keys(g.escape).join(\"\")+\"]\",\"g\")};h.each([\"escape\"],(function(r){h[r]=function(e){return null==e?\"\":(\"\"+e).replace(y[r],(function(e){return g[r][e]}))}})),h.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g};var j=/(.)^/,b={\"'\":\"'\",\"\\\\\":\"\\\\\",\"\\r\":\"r\",\"\\n\":\"n\",\"\\t\":\"t\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},w=/\\\\|'|\\r|\\n|\\t|\\u2028|\\u2029/g;h.template=function(r,e,n){var t;n=h.defaults({},n,h.templateSettings);var a=new RegExp([(n.escape||j).source,(n.interpolate||j).source,(n.evaluate||j).source].join(\"|\")+\"|$\",\"g\"),u=0,c=\"__p+='\";r.replace(a,(function(e,n,t,a,o){return c+=r.slice(u,o).replace(w,(function(r){return\"\\\\\"+b[r]})),n&&(c+=\"'+\\n((__t=(\"+n+\"))==null?'':_.escape(__t))+\\n'\"),t&&(c+=\"'+\\n((__t=(\"+t+\"))==null?'':__t)+\\n'\"),a&&(c+=\"';\\n\"+a+\"\\n__p+='\"),u=o+e.length,e})),c+=\"';\\n\",n.variable||(c=\"with(obj||{}){\\n\"+c+\"}\\n\"),c=\"var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\\n\"+c+\"return __p;\\n\";try{t=new Function(n.variable||\"obj\",\"_\",c)}catch(r){throw r.source=c,r}if(e)return t(e,h);var o=function(r){return t.call(this,r,h)};return o.source=\"function(\"+(n.variable||\"obj\")+\"){\\n\"+c+\"}\",o},e.exports=h},\n 496: function _(e,t,i,s,o){s();const n=e(1);var l;const r=e(497),d=e(501),a=e(502),h=e(503),u=e(34),c=e(8),_=e(9),m=e(13),g=e(19),p=e(512),f=e(491),b=e(513),w=e(514),x=(0,n.__importStar)(e(492)),C=x,v=(0,n.__importDefault)(e(515));i.AutosizeModes={fit_columns:\"FCV\",fit_viewport:\"FVC\",force_fit:\"LFF\",none:\"NOA\"};let z=!1;class A{constructor(e,t){this.init(e,t)}init(e,t){if(f.DTINDEX_NAME in e.data)throw new Error(`special name ${f.DTINDEX_NAME} cannot be used as a data table column`);this.source=e,this.view=t,this.index=[...this.view.indices]}getLength(){return this.index.length}getItem(e){const t={};for(const i of(0,m.keys)(this.source.data))t[i]=this.source.data[i][this.index[e]];return t[f.DTINDEX_NAME]=this.index[e],t}getField(e,t){return t==f.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]}setField(e,t,i){const s=this.index[e];this.source.patch({[t]:[[s,i]]})}getRecords(){return(0,_.range)(0,this.getLength()).map((e=>this.getItem(e)))}getItems(){return this.getRecords()}slice(e,t,i){return e=null!=e?e:0,t=null!=t?t:this.getLength(),i=null!=i?i:1,(0,_.range)(e,t,i).map((e=>this.getItem(e)))}sort(e){let t=e.map((e=>[e.sortCol.field,e.sortAsc?1:-1]));0==t.length&&(t=[[f.DTINDEX_NAME,1]]);const i=this.getRecords(),s=this.index.slice();this.index.sort(((e,o)=>{for(const[n,l]of t){const t=i[s.indexOf(e)][n],r=i[s.indexOf(o)][n];if(t!==r)return(0,c.isNumber)(t)&&(0,c.isNumber)(r)?l*(t-r||+isNaN(t)-+isNaN(r)):`${t}`>`${r}`?l:-l}return 0}))}}i.TableDataProvider=A,A.__name__=\"TableDataProvider\";class M extends p.WidgetView{constructor(){super(...arguments),this._in_selection_update=!1,this._width=null}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render())),this.connect(this.model.source.streaming,(()=>this.updateGrid())),this.connect(this.model.source.patching,(()=>this.updateGrid())),this.connect(this.model.source.change,(()=>this.updateGrid())),this.connect(this.model.source.properties.data.change,(()=>this.updateGrid())),this.connect(this.model.source.selected.change,(()=>this.updateSelection())),this.connect(this.model.source.selected.properties.indices.change,(()=>this.updateSelection()));for(const e of this.model.columns)this.connect(e.change,(()=>{this.invalidate_layout(),this.render()}))}remove(){var e;null===(e=this.grid)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),v.default,x.default]}update_position(){super.update_position(),this.grid.resizeCanvas()}after_layout(){super.after_layout(),this.updateLayout(!0,!1)}box_sizing(){const e=super.box_sizing();return\"fit_viewport\"===this.model.autosize_mode&&null!=this._width&&(e.width=this._width),e}updateLayout(e,t){const s=this.autosize;s===i.AutosizeModes.fit_columns||s===i.AutosizeModes.force_fit?(e||this.grid.resizeCanvas(),this.grid.autosizeColumns()):e&&t&&s===i.AutosizeModes.fit_viewport&&this.invalidate_layout()}updateGrid(){if(this.model.view.compute_indices(),this.data.init(this.model.source,this.model.view),this.model.sortable){const e=this.grid.getColumns(),t=this.grid.getSortColumns().map((t=>({sortCol:{field:e[this.grid.getColumnIndex(t.columnId)].field},sortAsc:t.sortAsc})));this.data.sort(t)}this.grid.invalidate(),this.updateLayout(!0,!0)}updateSelection(){if(this._in_selection_update)return;const{selected:e}=this.model.source,t=e.indices.map((e=>this.data.index.indexOf(e))).sort();this._in_selection_update=!0,this.grid.setSelectedRows(t),this._in_selection_update=!1;const i=this.grid.getViewport(),s=this.model.get_scroll_index(i,t);null!=s&&this.grid.scrollRowToTop(s)}newIndexColumn(){return{id:(0,u.uniqueId)(),name:this.model.index_header,field:f.DTINDEX_NAME,width:this.model.index_width,behavior:\"select\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:C.cell_index,headerCssClass:C.header_index}}css_classes(){return super.css_classes().concat(C.data_table)}get autosize(){let e;return e=!0===this.model.fit_columns?i.AutosizeModes.force_fit:!1===this.model.fit_columns?i.AutosizeModes.none:i.AutosizeModes[this.model.autosize_mode],e}render(){var e;const t=this.model.columns.filter((e=>e.visible)).map((e=>Object.assign(Object.assign({},e.toColumn()),{parent:this})));let s=null;if(\"checkbox\"==this.model.selectable&&(s=new d.CheckboxSelectColumn({cssClass:C.cell_select}),t.unshift(s.getColumnDefinition())),null!=this.model.index_position){const e=this.model.index_position,i=this.newIndexColumn();-1==e?t.push(i):e<-1?t.splice(e+1,0,i):t.splice(e,0,i)}let{reorderable:o}=this.model;!o||\"undefined\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(z||(g.logger.warn(\"jquery-ui is required to enable DataTable.reorderable\"),z=!0),o=!1);let n=-1,l=!1;const{frozen_rows:u,frozen_columns:_}=this.model,m=null==_?-1:_-1;null!=u&&(l=u<0,n=Math.abs(u));const p={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:o,autosizeColsMode:this.autosize,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:this.model.auto_edit,autoHeight:!1,rowHeight:this.model.row_height,frozenColumn:m,frozenRow:n,frozenBottom:l},f=null!=this.grid;if(this.data=new A(this.model.source,this.model.view),this.grid=new h.Grid(this.el,this.data,t,p),this.autosize==i.AutosizeModes.fit_viewport){this.grid.autosizeColumns();let i=0;for(const s of t)i+=null!==(e=s.width)&&void 0!==e?e:0;this._width=Math.ceil(i)}if(this.grid.onSort.subscribe(((e,t)=>{if(!this.model.sortable)return;const i=t.sortCols;null!=i&&(this.data.sort(i),this.grid.invalidate(),this.updateSelection(),this.grid.render(),this.model.header_row||this._hide_header(),this.model.update_sort_columns(i))})),!1!==this.model.selectable){this.grid.setSelectionModel(new r.RowSelectionModel({selectActiveRow:null==s})),null!=s&&this.grid.registerPlugin(s);const e={dataItemColumnValueExtractor(e,t){let i=e[t.field];return(0,c.isString)(i)&&(i=i.replace(/\\n/g,\"\\\\n\")),i},includeHeaderWhenCopying:!1};this.grid.registerPlugin(new a.CellExternalCopyManager(e)),this.grid.onSelectedRowsChanged.subscribe(((e,t)=>{this._in_selection_update||(this.model.source.selected.indices=t.rows.map((e=>this.data.index[e])))})),this.updateSelection(),this.model.header_row||this._hide_header()}f&&this.updateLayout(f,!1)}_hide_header(){for(const e of this.el.querySelectorAll(\".slick-header-columns\"))e.style.height=\"0px\";this.grid.resizeCanvas()}}i.DataTableView=M,M.__name__=\"DataTableView\";class D extends b.TableWidget{constructor(e){super(e),this._sort_columns=[]}get sort_columns(){return this._sort_columns}update_sort_columns(e){this._sort_columns=e.map((({sortCol:e,sortAsc:t})=>({field:e.field,sortAsc:t})))}get_scroll_index(e,t){return this.scroll_to_selection&&0!=t.length?(0,_.some)(t,(t=>e.top<=t&&t<=e.bottom))?null:Math.max(0,Math.min(...t)-1):null}}i.DataTable=D,l=D,D.__name__=\"DataTable\",l.prototype.default_view=M,l.define((({Array:e,Boolean:t,Int:i,Ref:s,String:o,Enum:n,Or:l,Nullable:r})=>({autosize_mode:[n(\"fit_columns\",\"fit_viewport\",\"none\",\"force_fit\"),\"force_fit\"],auto_edit:[t,!1],columns:[e(s(w.TableColumn)),[]],fit_columns:[r(t),null],frozen_columns:[r(i),null],frozen_rows:[r(i),null],sortable:[t,!0],reorderable:[t,!0],editable:[t,!1],selectable:[l(t,n(\"checkbox\")),!0],index_position:[r(i),0],index_header:[o,\"#\"],index_width:[i,40],scroll_to_selection:[t,!0],header_row:[t,!0],row_height:[i,25]}))),l.override({width:600,height:400})},\n 497: function _(e,t,n,o,r){var l=e(498),i=e(500);t.exports={RowSelectionModel:function(e){var t,n,o,r=[],c=this,u=new i.EventHandler,s={selectActiveRow:!0};function a(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function f(e){for(var t=[],n=0;n=0&&r0&&t-1 in e)}w.fn=w.prototype={jquery:b,constructor:w,length:0,toArray:function(){return i.call(this)},get:function(e){return null==e?i.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(i.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(w.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(w.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|[\\\\x20\\\\t\\\\r\\\\n\\\\f])[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\([\\\\x20\\\\t\\\\r\\\\n\\\\f]*(even|odd|(([+-]|)(\\\\d*)n|)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:([+-]|)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(\\\\d+)|))[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^[\\\\x20\\\\t\\\\r\\\\n\\\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\([\\\\x20\\\\t\\\\r\\\\n\\\\f]*((?:-\\\\d)?\\\\d*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}[\\\\x20\\\\t\\\\r\\\\n\\\\f]?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){p()},ae=be((function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()}),{dir:\"parentNode\",next:\"legend\"});try{H.apply(D=O.call(w.childNodes),w.childNodes),D[w.childNodes.length].nodeType}catch(e){H={apply:D.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(t),t=t||d,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return H.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return H.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+\" \"]&&(!v||!v.test(e))&&(1!==w||\"object\"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===w&&(U.test(e)||z.test(e))){for((m=ee.test(e)&&ye(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute(\"id\"))?c=c.replace(re,ie):t.setAttribute(\"id\",c=b)),s=(h=a(e)).length;s--;)h[s]=(c?\"#\"+c:\":scope\")+\" \"+xe(h[s]);y=h.join(\",\")}try{return H.apply(r,m.querySelectorAll(y)),r}catch(t){A(e,!0)}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace($,\"$1\"),t,r,i)}function ue(){var e=[];return function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}}function le(e){return e[b]=!0,e}function ce(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split(\"|\"),i=n.length;i--;)r.attrHandle[n[i]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function ge(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function ve(e){return le((function(t){return t=+t,le((function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},p=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!=d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,g=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",oe,!1):i.attachEvent&&i.attachEvent(\"onunload\",oe)),n.scope=ce((function(e){return h.appendChild(e).appendChild(d.createElement(\"div\")),void 0!==e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length})),n.attributes=ce((function(e){return e.className=\"i\",!e.getAttribute(\"className\")})),n.getElementsByTagName=ce((function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length})),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ce((function(e){var t;h.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||v.push(\"~=\"),(t=d.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*name[\\\\x20\\\\t\\\\r\\\\n\\\\f]*=[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")})),ce((function(e){e.innerHTML=\"\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name[\\\\x20\\\\t\\\\r\\\\n\\\\f]*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")}))),(n.matchesSelector=K.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),y.push(\"!=\",F)})),v=v.length&&new RegExp(v.join(\"|\")),y=y.length&&new RegExp(y.join(\"|\")),t=K.test(h.compareDocumentPosition),x=t||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},N=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==d||e.ownerDocument==w&&x(w,e)?-1:t==d||t.ownerDocument==w&&x(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==d?-1:t==d?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]==w?-1:s[r]==w?1:0},d):d},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(p(e),n.matchesSelector&&g&&!A[t+\" \"]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return se(t,d,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!=d&&p(e),x(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&j.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(N),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},r=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|[\\\\x20\\\\t\\\\r\\\\n\\\\f])\"+e+\"(\"+M+\"|$)\"))&&E(e,(function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")}))},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace(B,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=P(e,o[a])]=!(n[r]=o[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:le((function(e){var t=[],n=[],r=s(e.replace($,\"$1\"));return r[b]?le((function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return se(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:le((function(e){return V.test(e||\"\")||se.error(\"unsupported lang: \"+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve((function(){return[0]})),last:ve((function(e,t){return[t-1]})),eq:ve((function(e,t,n){return[n<0?n+t:n]})),even:ve((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ve((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1&&(o[l]=!(a[l]=f))}}else y=Te(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)}))}function Ee(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=be((function(e){return e===t}),s,!0),f=be((function(e){return P(t,e)>-1}),s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&we(p),u>1&&xe(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace($,\"$1\"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,v,y=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,S=C.length;for(c&&(l=a==d||a||c);m!==S&&null!=(f=C[m]);m++){if(i&&f){for(h=0,a||f.ownerDocument==d||(p(f),s=!g);v=e[h++];)if(v(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!v&&f)&&y--,o&&x.push(f))}if(y+=m,n&&m!==y){for(h=0;v=t[h++];)v(x,b,a,s);if(o){if(y>0)for(;m--;)x[m]||b[m]||(b[m]=q.call(u));b=Te(b)}H.apply(u,b),c&&!o&&b.length>0&&y+t.length>1&&se.uniqueSort(u)}return c&&(T=E,l=w),x};return n?le(o):o}(o,i)),s.selector=e}return s},u=se.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=G.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((f=r.find[c])&&(i=f(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ye(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&xe(u)))return H.apply(n,i),n;break}}return(p||s(e,d))(i,t,!g,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(N).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))})),ce((function(e){return e.innerHTML=\"\",\"#\"===e.firstChild.getAttribute(\"href\")}))||fe(\"type|href|height|width\",(function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")}))||fe(\"value\",(function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute(\"disabled\")}))||fe(R,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(e);w.find=C,w.expr=C.selectors,w.expr[\":\"]=w.expr.pseudos,w.uniqueSort=w.unique=C.uniqueSort,w.text=C.getText,w.isXMLDoc=C.isXML,w.contains=C.contains,w.escapeSelector=C.escape;var E=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=w.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,t,n){return h(t)?w.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?w.grep(e,(function(e){return e===t!==n})):\"string\"!=typeof t?w.grep(e,(function(e){return s.call(t,e)>-1!==n})):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,(function(e){return 1===e.nodeType})))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(w(e).filter((function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,\"string\"==typeof e&&k.test(e)?w(e):e||[],!1).length}});var D,q=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(w.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),N.test(r[1])&&w.isPlainObject(t))for(r in t)h(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):h(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,D=w(v);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?s.call(w(e),this[0]):s.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return E(e,\"parentNode\")},parentsUntil:function(e,t,n){return E(e,\"parentNode\",n)},next:function(e){return O(e,\"nextSibling\")},prev:function(e){return O(e,\"previousSibling\")},nextAll:function(e){return E(e,\"nextSibling\")},prevAll:function(e){return E(e,\"previousSibling\")},nextUntil:function(e,t,n){return E(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return E(e,\"previousSibling\",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,\"template\")&&(e=e.content||e),w.merge([],e.childNodes))}},(function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=w.filter(r,i)),this.length>1&&(H[e]||w.uniqueSort(i),L.test(e)&&i.reverse()),this.pushStack(i)}}));var P=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&h(i=e.promise)?i.call(e).done(t).fail(n):e&&h(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return w.each(e.match(P)||[],(function(e,n){t[n]=!0})),t}(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},w.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",w.Callbacks(\"memory\"),w.Callbacks(\"memory\"),2],[\"resolve\",\"done\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred((function(t){w.each(n,(function(n,r){var i=h(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&h(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==M&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred((function(e){n[0][3].add(a(0,e,h(i)?i:R,e.notifyWith)),n[1][3].add(a(0,e,h(t)?t:R)),n[2][3].add(a(0,e,h(r)?r:M))})).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,(function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add((function(){r=s}),n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith})),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),o=i.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?i.call(arguments):n,--t||a.resolveWith(r,o)}};if(t<=1&&(I(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||h(o[n]&&o[n].then)))return a.then();for(;n--;)I(o[n],s(n),a.reject);return a.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&W.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout((function(){throw t}))};var F=w.Deferred();function B(){v.removeEventListener(\"DOMContentLoaded\",B),e.removeEventListener(\"load\",B),w.ready()}w.fn.ready=function(e){return F.then(e).catch((function(e){w.readyException(e)})),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(v,[w]))}}),w.ready.then=F.then,\"complete\"===v.readyState||\"loading\"!==v.readyState&&!v.documentElement.doScroll?e.setTimeout(w.ready):(v.addEventListener(\"DOMContentLoaded\",B),e.addEventListener(\"load\",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,h(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each((function(){Q.remove(this,e)}))}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,(function(){w.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return Y.get(e,n)||Y.access(e,n,{empty:w.Callbacks(\"once memory\").add((function(){Y.remove(e,[t+\"queue\",n])}))})}}),w.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length\\x20\\t\\r\\n\\f]*)/i,ge=/^$|^module$|\\/(?:java|ecma)script/i;fe=v.createDocumentFragment().appendChild(v.createElement(\"div\")),(pe=v.createElement(\"input\")).setAttribute(\"type\",\"radio\"),pe.setAttribute(\"checked\",\"checked\"),pe.setAttribute(\"name\",\"t\"),fe.appendChild(pe),d.checkClone=fe.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.innerHTML=\"\",d.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue,fe.innerHTML=\"\",d.option=!!fe.lastChild;var ve={thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ye(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?w.merge([e],n):n}function me(e,t){for(var n=0,r=e.length;n\",\"\"]);var xe=/<|&#?\\w+;/;function be(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d-1)i&&i.push(o);else if(l=ie(o),a=ye(f.appendChild(o),\"script\"),l&&me(a),n)for(c=0;o=a[c++];)ge.test(o.type||\"\")&&n.push(o);return f}var we=/^([^.]*)(?:\\.(.+)|)/;function Te(){return!0}function Ce(){return!1}function Ee(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==(\"focus\"===t)}function Se(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Se(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ce;else if(!i)return e;return 1===o&&(a=i,i=function(e){return w().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=w.guid++)),e.each((function(){w.event.add(this,t,i,r,n)}))}function ke(e,t,n){n?(Y.set(e,t,!1),w.event.add(e,t,{namespace:!1,handler:function(e){var r,o,a=Y.get(this,t);if(1&e.isTrigger&&this[t]){if(a.length)(w.event.special[t]||{}).delegateType&&e.stopPropagation();else if(a=i.call(arguments),Y.set(this,t,a),r=n(this,t),this[t](),a!==(o=Y.get(this,t))||r?Y.set(this,t,!1):o={},a!==o)return e.stopImmediatePropagation(),e.preventDefault(),o&&o.value}else a.length&&(Y.set(this,t,{value:w.event.trigger(w.extend(a[0],w.Event.prototype),a.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,t)&&w.event.add(e,t,Te)}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(e);if(V(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(re,i),n.guid||(n.guid=w.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(t){return void 0!==w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(P)||[\"\"]).length;l--;)d=g=(s=we.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){for(l=(t=(t||\"\").match(P)||[\"\"]).length;l--;)if(d=g=(s=we.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){for(f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||w.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&Y.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=w.event.fix(e),l=(Y.get(this,\"events\")||Object.create(null))[u.type]||[],c=w.event.special[u.type]||{};for(s[0]=u,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\\s*$/g;function De(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&w(e).children(\"tbody\")[0]||e}function qe(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Le(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function He(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n1&&\"string\"==typeof v&&!d.checkClone&&Ne.test(v))return e.each((function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Pe(o,t,n,r)}));if(p&&(a=(i=be(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(u=(s=w.map(ye(i,\"script\"),qe)).length;f0&&me(a,!u&&ye(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,(function(e){return void 0===e?w.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Pe(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||De(this,e).appendChild(e)}))},prepend:function(){return Pe(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=De(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Pe(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Pe(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return w.clone(this,e,t)}))},html:function(e){return $(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Ae.test(e)&&!ve[(he.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!d.boxSizingReliable()||n)&&\"border-box\"===w.css(e,\"boxSizing\",!1,r),o=i,a=Be(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a=\"auto\"}return(!d.boxSizingReliable()&&i||!d.reliableTrDimensions()&&A(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===w.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===w.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(w.cssNumber[s]?\"\":\"px\")),d.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),\"normal\"===i&&t in Qe&&(i=Qe[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each([\"height\",\"width\"],(function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!Ve.test(w.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,t,r):We(e,Ye,(function(){return Ze(e,t,r)}))},set:function(e,n,r){var i,o=Ie(e),a=!d.scrollboxSize()&&\"absolute\"===o.position,s=(a||r)&&\"border-box\"===w.css(e,\"boxSizing\",!1,o),u=r?Ke(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ke(e,t,\"border\",!1,o)-.5)),u&&(i=te.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=w.css(e,t)),Je(0,n,u)}}})),w.cssHooks.marginLeft=$e(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Be(e,\"marginLeft\"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+\"px\"})),w.each({margin:\"\",padding:\"\",border:\"Width\"},(function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+ne[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(w.cssHooks[e+t].set=Je)})),w.fn.extend({css:function(e,t){return $(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a1)}}),w.Tween=et,et.prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?\"\":\"px\")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}},et.prototype.init.prototype=et.prototype,et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||!w.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},et.propHooks.scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},w.fx=et.prototype.init,w.fx.step={};var tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){nt&&(!1===v.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(ot):e.setTimeout(ot,w.fx.interval),w.fx.tick())}function at(){return e.setTimeout((function(){tt=void 0})),tt=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=ne[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners[\"*\"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){w.removeAttr(this,e)}))}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&\"radio\"===t&&A(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\\w+/g),(function(e,t){var n=ft[t]||w.find.attr;ft[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ft[a],ft[a]=i,i=null!=n(e,t,r)?a:null,ft[a]=o),i}}));var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(\" \")}function gt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function vt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(P)||[]}w.fn.extend({prop:function(e,t){return $(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[w.propFix[e]||e]}))}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,\"tabindex\");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),d.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],(function(){w.propFix[this.toLowerCase()]=this})),w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){w(this).addClass(e.call(this,t,gt(this)))}));if((t=vt(e)).length)for(;n=this[u++];)if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){w(this).removeClass(e.call(this,t,gt(this)))}));if(!arguments.length)return this.attr(\"class\",\"\");if((t=vt(e)).length)for(;n=this[u++];)if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):h(e)?this.each((function(n){w(this).toggleClass(e.call(this,n,gt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=w(this),a=vt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=gt(this))&&Y.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":Y.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+ht(gt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var yt=/\\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=h(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=w.map(i,(function(e){return null==e?\"\":e+\"\"}))),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))}))):i?(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(yt,\"\"):null==n?\"\":n:void 0}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,\"value\");return null!=t?t:ht(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each([\"radio\",\"checkbox\"],(function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},d.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})})),d.focusin=\"onfocusin\"in e;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,r,i){var o,a,s,u,l,f,p,d,y=[r||v],m=c.call(t,\"type\")?t.type:t,x=c.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(a=d=s=r=r||v,3!==r.nodeType&&8!==r.nodeType&&!mt.test(m+w.event.triggered)&&(m.indexOf(\".\")>-1&&(x=m.split(\".\"),m=x.shift(),x.sort()),l=m.indexOf(\":\")<0&&\"on\"+m,(t=t[w.expando]?t:new w.Event(m,\"object\"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:w.makeArray(n,[t]),p=w.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,mt.test(u+m)||(a=a.parentNode);a;a=a.parentNode)y.push(a),s=a;s===(r.ownerDocument||v)&&y.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=y[o++])&&!t.isPropagationStopped();)d=a,t.type=o>1?u:p.bindType||m,(f=(Y.get(a,\"events\")||Object.create(null))[t.type]&&Y.get(a,\"handle\"))&&f.apply(a,n),(f=l&&a[l])&&f.apply&&V(a)&&(t.result=f.apply(a,n),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(y.pop(),n)||!V(r)||l&&h(r[m])&&!g(r)&&((s=r[l])&&(r[l]=null),w.event.triggered=m,t.isPropagationStopped()&&d.addEventListener(m,xt),r[m](),t.isPropagationStopped()&&d.removeEventListener(m,xt),w.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each((function(){w.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),d.focusin||w.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=Y.access(r,t);i||r.addEventListener(e,n,!0),Y.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Y.access(r,t)-1;i?Y.access(r,t,i):(r.removeEventListener(e,n,!0),Y.remove(r,t))}}}));var bt=e.location,wt={guid:Date.now()},Tt=/\\?/;w.parseXML=function(t){var n,r;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){}return r=n&&n.getElementsByTagName(\"parsererror\")[0],n&&!r||w.error(\"Invalid XML: \"+(r?w.map(r.childNodes,(function(e){return e.textContent})).join(\"\\n\"):t)),n};var Ct=/\\[\\]$/,Et=/\\r?\\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(e,t,n,r){var i;if(Array.isArray(t))w.each(t,(function(t,i){n||Ct.test(e)?r(e,i):At(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)}));else if(n||\"object\"!==x(t))r(e,t);else for(i in t)At(e+\"[\"+i+\"]\",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=h(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,(function(){i(this.name,this.value)}));else for(n in e)At(n,e[n],t,i);return r.join(\"&\")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=w.prop(this,\"elements\");return e?w.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!w(this).is(\":disabled\")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!de.test(e))})).map((function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,(function(e){return{name:t.name,value:e.replace(Et,\"\\r\\n\")}})):{name:t.name,value:n.replace(Et,\"\\r\\n\")}})).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\\/\\//,Ot={},Pt={},Rt=\"*/\".concat(\"*\"),Mt=v.createElement(\"a\");function It(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(P)||[];if(h(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Wt(e,t,n,r){var i={},o=e===Pt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],(function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function Ft(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}Mt.href=bt.href,w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Rt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,w.ajaxSettings),t):Ft(w.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,o,a,s,u,l,c,f,p,d=w.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?w(h):w.event,y=w.Deferred(),m=w.Callbacks(\"once memory\"),x=d.statusCode||{},b={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=qt.exec(o);)a[t[1].toLowerCase()+\" \"]=(a[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=a[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return r&&r.abort(t),S(0,t),this}};if(y.promise(E),d.url=((t||d.url||bt.href)+\"\").replace(Ht,bt.protocol+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||\"*\").toLowerCase().match(P)||[\"\"],null==d.crossDomain){u=v.createElement(\"a\");try{u.href=d.url,u.href=u.href,d.crossDomain=Mt.protocol+\"//\"+Mt.host!=u.protocol+\"//\"+u.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=w.param(d.data,d.traditional)),Wt(Ot,d,n,E),l)return E;for(f in(c=w.event&&d.global)&&0==w.active++&&w.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Lt.test(d.type),i=d.url.replace(jt,\"\"),d.hasContent?d.data&&d.processData&&0===(d.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(d.data=d.data.replace(Nt,\"+\")):(p=d.url.slice(i.length),d.data&&(d.processData||\"string\"==typeof d.data)&&(i+=(Tt.test(i)?\"&\":\"?\")+d.data,delete d.data),!1===d.cache&&(i=i.replace(Dt,\"$1\"),p=(Tt.test(i)?\"&\":\"?\")+\"_=\"+wt.guid+++p),d.url=i+p),d.ifModified&&(w.lastModified[i]&&E.setRequestHeader(\"If-Modified-Since\",w.lastModified[i]),w.etag[i]&&E.setRequestHeader(\"If-None-Match\",w.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",d.contentType),E.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+Rt+\"; q=0.01\":\"\"):d.accepts[\"*\"]),d.headers)E.setRequestHeader(f,d.headers[f]);if(d.beforeSend&&(!1===d.beforeSend.call(h,E,d)||l))return E.abort();if(C=\"abort\",m.add(d.complete),E.done(d.success),E.fail(d.error),r=Wt(Pt,d,n,E)){if(E.readyState=1,c&&g.trigger(\"ajaxSend\",[E,d]),l)return E;d.async&&d.timeout>0&&(s=e.setTimeout((function(){E.abort(\"timeout\")}),d.timeout));try{l=!1,r.send(b,S)}catch(e){if(l)throw e;S(-1,e)}}else S(-1,\"No Transport\");function S(t,n,a,u){var f,p,v,b,T,C=n;l||(l=!0,s&&e.clearTimeout(s),r=void 0,o=u||\"\",E.readyState=t>0?4:0,f=t>=200&&t<300||304===t,a&&(b=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(d,E,a)),!f&&w.inArray(\"script\",d.dataTypes)>-1&&w.inArray(\"json\",d.dataTypes)<0&&(d.converters[\"text script\"]=function(){}),b=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(d,b,E,f),f?(d.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(w.lastModified[i]=T),(T=E.getResponseHeader(\"etag\"))&&(w.etag[i]=T)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=b.state,p=b.data,f=!(v=b.error))):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",f?y.resolveWith(h,[p,C,E]):y.rejectWith(h,[E,C,v]),E.statusCode(x),x=void 0,c&&g.trigger(f?\"ajaxSuccess\":\"ajaxError\",[E,d,f?p:v]),m.fireWith(h,[E,C]),c&&(g.trigger(\"ajaxComplete\",[E,d]),--w.active||w.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,\"json\")},getScript:function(e,t){return w.get(e,void 0,t,\"script\")}}),w.each([\"get\",\"post\"],(function(e,t){w[t]=function(e,n,r,i){return h(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}})),w.ajaxPrefilter((function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")})),w._evalUrl=function(e,t,n){return w.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){w.globalEval(e,t,n)}})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(h(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return h(e)?this.each((function(t){w(this).wrapInner(e.call(this,t))})):this.each((function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=h(e);return this.each((function(n){w(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not(\"body\").each((function(){w(this).replaceWith(this.childNodes)})),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=w.ajaxSettings.xhr();d.cors=!!$t&&\"withCredentials\"in $t,d.ajax=$t=!!$t,w.ajaxTransport((function(t){var n,r;if(d.cors||$t&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(Bt[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout((function(){n&&r()}))},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}})),w.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),w.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter(\"script\",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")})),w.ajaxTransport(\"script\",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=w(\"", + "text/html": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "" + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "viewer = py3Dmol.view()\n", + "viewer.addModel(phase.to_cif_str(),'cif',{'doAssembly':True,'duplicateAssemblyAtoms':True,'normalizeAssembly':True})\n", + "viewer.setStyle({'sphere':{'colorscheme':'Jmol','scale':.2},'stick':{'colorscheme':'Jmol', 'radius': 0.1}})\n", + "viewer.addUnitCell()\n", + "viewer.replicateUnitCell(2,2,2)\n", + "viewer.zoomTo()" + ] + }, + { + "cell_type": "markdown", + "id": "ebe0e0ee", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "#### Create Phases object" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "29071aa2", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "phases = Phases()\n", + "phases.append(phase)" + ] + }, + { + "cell_type": "markdown", + "id": "07db27b5", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Experiment" + ] + }, + { + "cell_type": "markdown", + "id": "e93c42b9", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "#### Create the job and modify a `Parameters` object" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0bf0c3bd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "from easyDiffractionLib.interface import InterfaceFactory\n", + "interface = InterfaceFactory()\n", + "print(interface.current_interface)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "83e3845f", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "j1 = PolPowder1DCW('Fe3O4_test', ds, phases=phases)\n", + "parameters = j1.parameters\n", + "parameters.resolution_u = 0.447\n", + "parameters.resolution_v = -0.4252\n", + "parameters.resolution_w = 0.3864\n", + "parameters.resolution_x = 0.0\n", + "parameters.resolution_y = 0.0" + ] + }, + { + "cell_type": "markdown", + "id": "370f0baa", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "#### Modify a Pattern object" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "70fa1571", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "pattern = j1.pattern\n", + "pattern.zero_shift = 0.0\n", + "pattern.scale = 100.0\n", + "pattern.field = 4.0" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "1ed88f8e", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "calculator = j1.interface" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "784fb8e5", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current calculator engine: CrysPy\n" + ] + } + ], + "source": [ + "print(f\"Current calculator engine: {calculator.current_interface_name}\")" + ] + }, + { + "cell_type": "markdown", + "id": "eb234f76", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Analysis" + ] + }, + { + "cell_type": "markdown", + "id": "00e24eab", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "#### Calculate the profile using the calculator we defined previously.\n", + "Note that we don't run anything on the `Sample` object but on a separate `Calculator` instance" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "f556cc94", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "x_data = np.linspace(20, 90, 500)\n", + "a = j1.create_simulation(x_data, 'up', pol_fn=lambda up, down: up)\n", + "b = j1.create_simulation(x_data, 'down', pol_fn=lambda up, down: down)\n", + "c = j1.create_simulation(x_data, 'diff', pol_fn=lambda up, down: up - down)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "758b92d5", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": "
\n
\n
\n", + "application/vnd.holoviews_exec.v0+json": "", + "text/plain": ":DynamicMap [sim_pol2_tth]\n :NdOverlay [Variable]\n :Curve [sim_Fe3O4_test_tth] (value)" + }, + "execution_count": 24, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1706" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "ds.hvplot.line(x='sim_Fe3O4_test_tth', y=['sim_Fe3O4_test_up', 'sim_Fe3O4_test_down', 'sim_Fe3O4_test_diff'], width=FIGURE_WIDTH, height=FIGURE_HEIGHT, legend='top')" + ] + }, + { + "cell_type": "markdown", + "id": "b3937208", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 25, + "outputs": [], + "source": [ + "p2 = Phases.from_cif_file('structure_polarized.cif')\n", + "j2 = PolPowder1DCW('pol2', ds, phases=p2)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 26, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": "
\n
\n
\n", + "application/vnd.holoviews_exec.v0+json": "", + "text/plain": ":DynamicMap [sim_Fe3O4_test_tth]\n :NdOverlay [Variable]\n :Curve [sim_pol2_tth] (value)" + }, + "execution_count": 26, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1958" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "j2.create_simulation(x_data, 'up', pol_fn=lambda up, down: up)\n", + "j2.create_simulation(x_data, 'down', pol_fn=lambda up, down: down)\n", + "j2.create_simulation(x_data, 'difference', pol_fn=lambda up, down: up - down)\n", + "\n", + "ds.hvplot.line(x='sim_pol2_tth', y=['sim_pol2_up', 'sim_pol2_down', 'sim_pol2_difference'],width=FIGURE_WIDTH, height=FIGURE_HEIGHT, legend='top')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 7bfaa77b..f56d91ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ cryspy @ git+https://github.com/ikibalin/cryspy.git@bravis_type_fix --extra-index-url https://easyscience.github.io/pypi easysciencecore==0.2.3 -easycrystallography==0.1.2 +easycrystallography==0.1.3 cfml==0.0.1 gsasii==0.0.1 From ffb3e7c5b8521327e550b342b616ac467abb39c2 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Thu, 14 Jul 2022 11:03:23 +0200 Subject: [PATCH 306/312] Added missing methods for GSAS. --- easyDiffractionLib/Interfaces/GSASII.py | 6 ++++++ easyDiffractionLib/calculators/GSASII.py | 25 ++++++++++++++++-------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/easyDiffractionLib/Interfaces/GSASII.py b/easyDiffractionLib/Interfaces/GSASII.py index 5e730953..6eaf88cc 100644 --- a/easyDiffractionLib/Interfaces/GSASII.py +++ b/easyDiffractionLib/Interfaces/GSASII.py @@ -168,6 +168,12 @@ def get_phase_components(self, phase_name): def get_component(self, component_name): return None + def get_calculated_y_for_phase(self, phase_idx: int) -> list: + return self.calculator.get_calculated_y_for_phase(phase_idx) + + def get_total_y_for_phases(self) -> list: + return self.calculator.get_total_y_for_phases() + @staticmethod def __identify(obj): return borg.map.convert_id_to_key(obj) diff --git a/easyDiffractionLib/calculators/GSASII.py b/easyDiffractionLib/calculators/GSASII.py index 38417eaf..fab74d2b 100644 --- a/easyDiffractionLib/calculators/GSASII.py +++ b/easyDiffractionLib/calculators/GSASII.py @@ -18,6 +18,9 @@ def __init__(self, filename: str = None): self.filename = filename self.background = None self.pattern = None + self.res = None + self.this_x_array = None + self.bg = None self.hkl_dict = { 'ttheta': np.empty(0), 'h': np.empty(0), @@ -72,10 +75,10 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: scale = 1.0 offset = 0 else: - scale = self.pattern.scale.raw_value / 1000.0 + scale = self.pattern.scale.raw_value offset = self.pattern.zero_shift.raw_value - this_x_array = x_array + offset + self.this_x_array = x_array + offset gpx = G2sc.G2Project(newgpx=os.path.join(self.prm_dir_path, 'easydiffraction_temp.gpx')) # create a project @@ -88,8 +91,8 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: fmthint='CIF') # step 2, setup: add a simulated histogram and link it to the previous phase(s) - x_min = this_x_array[0] - x_max = this_x_array[-1] + x_min = self.this_x_array[0] + x_max = self.this_x_array[-1] n_points = np.prod(x_array.shape) x_step = (x_max - x_min)/(n_points - 1) histogram0 = gpx.add_simulated_powder_histogram(f"{phase_name} simulation", @@ -145,20 +148,26 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: } if len(self.pattern.backgrounds) == 0: - bg = np.zeros_like(this_x_array) + self.bg = np.zeros_like(self.this_x_array) else: - bg = self.pattern.backgrounds[0].calculate(this_x_array) + self.bg = self.pattern.backgrounds[0].calculate(self.this_x_array) - res = scale * ycalc + bg + self.res = scale * ycalc + self.bg np.set_printoptions(precision=3) if borg.debug: print(f"y_calc: {res}") - return res + return self.res def get_hkl(self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False) -> dict: hkl_dict = self.hkl_dict if x_array is not None: pass return hkl_dict + + def get_calculated_y_for_phase(self, phase_idx: int): + return self.res - self.bg + + def get_total_y_for_phases(self): + return self.this_x_array, self.res - self.bg From 7af2fc3f3d0daabb98c89f98469c58f50a8e05c2 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Mon, 18 Jul 2022 10:22:39 +0200 Subject: [PATCH 307/312] Removed file deletion. It messes up with fitting on Windows and the files get removed anyway at the interface level. --- easyDiffractionLib/calculators/CFML.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/easyDiffractionLib/calculators/CFML.py b/easyDiffractionLib/calculators/CFML.py index c9bea2be..5af50f05 100644 --- a/easyDiffractionLib/calculators/CFML.py +++ b/easyDiffractionLib/calculators/CFML.py @@ -120,8 +120,10 @@ def calculate(self, x_array: np.ndarray) -> np.ndarray: ) dependents.append(dependent) self.additional_data["phases"].update(additional_data) - for cif in cifs: - os.remove(cif) + # This causes issues on windows, so commenting out. + # Macos/Linux don't seem to need it as well, but leaving just in case. + # for cif in cifs: + # os.remove(cif) self.additional_data["global_scale"] = scale self.additional_data["background"] = bg self.additional_data["ivar_run"] = this_x_array From 3a9531012ea397274e69d5cbf625d05a466b88ca Mon Sep 17 00:00:00 2001 From: Simon Ward <2798086+wardsimon@users.noreply.github.com> Date: Mon, 18 Jul 2022 17:04:34 +0200 Subject: [PATCH 308/312] Added polarized notebook example. --- easyDiffractionLib/Interfaces/cryspy.py | 31 + easyDiffractionLib/Jobs.py | 34 +- easyDiffractionLib/calculators/cryspy.py | 24 +- examples/Fitting.ipynb | 358 +++++++-- examples/Polarized.ipynb | 973 ++++++++++++++++++++--- examples/Simulation.ipynb | 222 +++++- examples/structure_polarized.cif | 46 +- 7 files changed, 1432 insertions(+), 256 deletions(-) diff --git a/easyDiffractionLib/Interfaces/cryspy.py b/easyDiffractionLib/Interfaces/cryspy.py index f9cba611..dbf9fc41 100644 --- a/easyDiffractionLib/Interfaces/cryspy.py +++ b/easyDiffractionLib/Interfaces/cryspy.py @@ -1,6 +1,7 @@ __author__ = "github.com/wardsimon" __version__ = "0.0.2" +from typing import List, Callable from easyCore import borg, np from easyCore.Objects.Inferface import ItemContainer @@ -343,6 +344,36 @@ def fit_func(self, x_array: np.ndarray, *args, **kwargs) -> np.ndarray: return self.calculator.calculate(x_array, *args, **kwargs) + def generate_pol_fit_func( + self, + x_array: np.ndarray, + spin_up: np.ndarray, + spin_down: np.ndarray, + components: List[Callable], + ) -> Callable: + num_components = len(components) + dummy_x = np.repeat(x_array[..., np.newaxis], num_components, axis=x_array.ndim) + calculated_y = np.array( + [fun(spin_up, spin_down) for fun in components] + ).swapaxes(0, x_array.ndim) + + def pol_fit_fuction(dummy_x: np.ndarray, **kwargs) -> np.ndarray: + results, results_dict = self.calculator.full_calculate( + x_array, pol_fn=components[0], **kwargs + ) + phases = list(results_dict["phases"].keys())[0] + up, down = ( + results_dict["phases"][phases]["components"]["up"], + results_dict["phases"][phases]["components"]["down"], + ) + bg = results_dict["f_background"] + sim_y = np.array( + [fun(up, down) + fun(bg, bg) for fun in components] + ).swapaxes(0, x_array.ndim) + return sim_y.flatten() + + return dummy_x.flatten(), calculated_y.flatten(), pol_fit_fuction + def get_hkl( self, x_array: np.ndarray = None, idx=None, phase_name=None, encoded_name=False ) -> dict: diff --git a/easyDiffractionLib/Jobs.py b/easyDiffractionLib/Jobs.py index 3b1dfbb3..5ddb4008 100644 --- a/easyDiffractionLib/Jobs.py +++ b/easyDiffractionLib/Jobs.py @@ -83,27 +83,33 @@ def plot_simulation(self, simulation_name=None): return self.datastore.store[sim_name].plot() def add_experiment(self, experiment_name, file_path): - data_x, data_y, data_e = np.loadtxt(file_path, unpack=True) + data = np.loadtxt(file_path, unpack=True) coord_name = self.name + "_" + experiment_name + "_" + self._x_axis_name - self.datastore.store.easyCore.add_coordinate(coord_name, data_x) - self.datastore.store.easyCore.add_variable( - self.name + "_" + experiment_name + "_I", [coord_name], data_y - ) - self.datastore.store.easyCore.sigma_attach( - self.name + "_" + experiment_name + "_I", data_e - ) + self.datastore.store.easyCore.add_coordinate(coord_name, data[0]) + + j = 0 + for i in range(1, len(data), 2): + data_y = data[i] + data_e = data[i + 1] + self.datastore.store.easyCore.add_variable( + self.name + "_" + experiment_name + f"_I{j}", [coord_name], data_y + ) + self.datastore.store.easyCore.sigma_attach( + self.name + "_" + experiment_name + f"_I{j}", data_e + ) + j += 1 # self._experiments[] - def simulate_experiment(self, experiment_name=None, **kwargs): + def simulate_experiment(self, experiment_name=None, name_post="", **kwargs): tth_name = self.name + "_" + experiment_name + "_" + self._x_axis_name tth = self.datastore.store[tth_name] return self.create_simulation( - tth, simulation_name=self.name + "_" + experiment_name, **kwargs + tth, simulation_name=self.name + "_" + experiment_name + name_post, **kwargs ) - def plot_experiment(self, experiment_name=None): - dataarray_name = self.name + "_" + experiment_name + "_I" + def plot_experiment(self, experiment_name=None, index=0): + dataarray_name = self.name + "_" + experiment_name + f"_I{index}" return self.datastore.store[dataarray_name].plot() def fit_experiment(self, experiment_name, fitter=None, **kwargs): @@ -146,11 +152,11 @@ def __init__( ) self._x_axis_name = "tth" - def simulate_experiment(self, experiment_name=None, pol_fn=None): + def simulate_experiment(self, experiment_name=None, name_post="", pol_fn=None): if pol_fn is None: pol_fn = lambda up, down: up + down return super(PolPowder1DCW, self).simulate_experiment( - experiment_name, pol_fn=pol_fn + experiment_name, name_post, pol_fn=pol_fn ) def create_simulation(self, tth, simulation_name=None, pol_fn=None, **kwargs): diff --git a/easyDiffractionLib/calculators/cryspy.py b/easyDiffractionLib/calculators/cryspy.py index f864a2af..4116470f 100644 --- a/easyDiffractionLib/calculators/cryspy.py +++ b/easyDiffractionLib/calculators/cryspy.py @@ -377,6 +377,7 @@ def do_calc_setup( bg = np.zeros_like(this_x_array) else: bg = self.pattern.backgrounds[0].calculate(this_x_array) + new_bg = bg num_crys = len(self.current_crystal.keys()) @@ -459,33 +460,31 @@ def do_calc_setup( phase_scales, x_str, ) + + new_bg = pol_fn(bg, bg) # Scale the bg for the components requested else: dependents, additional_data = self.nonPolarized_update( crystals, profiles, peak_dat, phase_scales, x_str ) self.additional_data["phases"].update(additional_data) self.additional_data["global_scale"] = scale - self.additional_data["background"] = bg + self.additional_data["background"] = new_bg + self.additional_data["f_background"] = bg self.additional_data["ivar_run"] = this_x_array self.additional_data["phase_names"] = list(additional_data.keys()) self.additional_data["type"] = self.type - # just the sum of all phases - dependent_output = scale * np.sum(dependents, axis=0) + bg - - scaled_dependents = [scale * dep for dep in dependents] - self.additional_data["components"] = scaled_dependents + scaled_dependents = [scale * dep / normalization for dep in dependents] self.additional_data["components"] = scaled_dependents - if borg.debug: - print(f"y_calc: {dependent_output}") - return ( + total_profile = ( np.sum( [s["profile"] for s in self.additional_data["phases"].values()], axis=0 ) - + self.additional_data["background"] - ), self.additional_data - # return returned_deps + + new_bg + ) + + return total_profile, self.additional_data def calculate(self, x_array: np.ndarray, **kwargs) -> np.ndarray: """ @@ -624,6 +623,7 @@ def polarized_update(func, crystals, profiles, peak_dat, scales, x_str): } } ) + return dependent, output diff --git a/examples/Fitting.ipynb b/examples/Fitting.ipynb index bdc49dcf..e0993e1d 100644 --- a/examples/Fitting.ipynb +++ b/examples/Fitting.ipynb @@ -2,21 +2,33 @@ "cells": [ { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "# Fitting to the experimental data" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "In this notebook we will show how to load a CIF file, an experimental profile and how to perform a parameter fit.\n" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Import Python packages" ] @@ -24,7 +36,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "# esyScience, technique-independent\n", @@ -48,7 +64,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "output_notebook()\n", @@ -58,14 +78,22 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Sample" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Show a CIF file content" ] @@ -73,7 +101,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "cif_fname = 'PbSO4.cif'\n", @@ -86,7 +118,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Load structure from a CIF file" ] @@ -94,7 +130,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "phases = Phases.from_cif_file(cif_fname)\n", @@ -106,7 +146,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Visualise the structure" ] @@ -114,7 +158,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "structure = py3Dmol.view()\n", @@ -127,14 +175,22 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Experiment" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Show measured data as text" ] @@ -142,7 +198,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "meas_fname = 'D1A@ILL.xye'\n", @@ -155,7 +215,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Load the measured data" ] @@ -163,7 +227,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "meas_x, meas_y, meas_e = np.loadtxt(meas_fname, unpack=True)" @@ -171,7 +239,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Visualize the measured data" ] @@ -180,7 +252,10 @@ "cell_type": "code", "execution_count": null, "metadata": { - "tags": [] + "tags": [], + "pycharm": { + "name": "#%%\n" + } }, "outputs": [], "source": [ @@ -191,14 +266,22 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Analysis" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Create job with default parameters for the 1D powder neutron diffraction experiment with constant wavelength " ] @@ -206,7 +289,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "calculator = Calculator(interface_name='CrysPy')" @@ -215,7 +302,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "print(f\"Current calculator engine: {calculator.current_interface_name}\")" @@ -224,7 +315,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "job = Job(phases=phases, parameters=CWParams.default(), interface=calculator)" @@ -232,7 +327,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Generate the calculated data" ] @@ -240,7 +339,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)" @@ -248,7 +351,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Visualize both the measured and calculated data" ] @@ -257,7 +364,10 @@ "cell_type": "code", "execution_count": null, "metadata": { - "tags": [] + "tags": [], + "pycharm": { + "name": "#%%\n" + } }, "outputs": [], "source": [ @@ -269,7 +379,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Set scale manually" ] @@ -277,7 +391,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "job.pattern.scale.enabled = True\n", @@ -287,7 +405,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", @@ -300,7 +422,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Set wavelength manually" ] @@ -308,7 +434,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "job.parameters.wavelength = 1.912" @@ -317,7 +447,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", @@ -330,7 +464,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Set background points manually" ] @@ -338,7 +476,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "bkg = PointBackground(linked_experiment='PbSO4')\n", @@ -352,7 +494,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", @@ -365,7 +511,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Define parameters to optimize" ] @@ -373,7 +523,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "job.pattern.scale.fixed = False\n", @@ -388,7 +542,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "print(job.pattern.scale)\n", @@ -402,7 +560,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Initalize the fitting engine and perform the fit" ] @@ -410,7 +572,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "fitter = Fitter(job, calculator.fit_func)" @@ -419,7 +585,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "print(f\"Available minimizers: {fitter.available_engines}\")\n", @@ -430,7 +600,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, \n", @@ -440,7 +614,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "print(\"The fit has been successful: {}\".format(result.success))\n", @@ -458,7 +636,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "calc_y_cryspy = calculator.fit_func(meas_x)\n", @@ -472,7 +654,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Change calculator engine to CrysFML" ] @@ -480,7 +666,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "print(f\"Available calculator engines: {calculator.available_interfaces}\")" @@ -489,7 +679,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "job.interface.switch('CrysFML', fitter=fitter)" @@ -498,7 +692,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "print(f\"Current calculator engine: {job.interface.current_interface_name}\")\n", @@ -507,7 +705,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Show results of both CrysPy and CrysFML calculations (before fitting)" ] @@ -515,7 +717,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "calc_y_crysfml = calculator.fit_func(meas_x)\n", @@ -529,7 +735,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Perform the fit with CrysFML" ] @@ -537,7 +747,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "result = fitter.fit(meas_x, meas_y, weights=1/meas_e, \n", @@ -547,7 +761,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "print(\"The fit has been successful: {}\".format(result.success))\n", @@ -564,7 +782,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Show results of both CrysPy and CrysFML calculations (after fitting)" ] @@ -572,7 +794,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "calc_y_crysfml = calculator.fit_func(meas_x)\n", @@ -587,7 +813,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Show the difference between CrysPy and CrysFML in calculated patterns" ] @@ -595,7 +825,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "fig = figure(width=FIGURE_WIDTH, height=FIGURE_HEIGHT)\n", @@ -606,7 +840,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [] } diff --git a/examples/Polarized.ipynb b/examples/Polarized.ipynb index 90ccd477..e5d9c163 100644 --- a/examples/Polarized.ipynb +++ b/examples/Polarized.ipynb @@ -9,8 +9,8 @@ } }, "source": [ - "# Simulation of the diffraction pattern\n", - "This notebook shows how we can create a sample (phase) from atoms and calculate diffraction profiles using both constant wavelength and time-of-flight experiment types." + "# Simulation of the polarized neutron diffraction pattern\n", + "This notebook shows how we can create a sample (phase) from atoms and calculate diffraction profiles. The results are optimized to match the experimental data." ] }, { @@ -53,6 +53,21 @@ }, "metadata": {}, "output_type": "display_data" + }, + { + "data": { + "text/html": "
\n \n Loading BokehJS ...\n
\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n // Clean up Bokeh references\n if (id != null && id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim();\n if (id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\", \"https://unpkg.com/@holoviz/panel@0.13.1/dist/panel.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));", + "application/vnd.bokehjs_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\", \"https://unpkg.com/@holoviz/panel@0.13.1/dist/panel.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -63,7 +78,7 @@ "from easyDiffractionLib import Site, Phase, Phases\n", "from easyCrystallography.Components.Susceptibility import MagneticSusceptibility\n", "from easyDiffractionLib.Jobs import PolPowder1DCW\n", - "\n", + "from easyDiffractionLib.elements.Backgrounds.Point import PointBackground, BackgroundPoint\n", "import xarray as xr\n", "\n", "# Vizualization\n", @@ -76,7 +91,12 @@ " ! pip install hvplot\n", " import hvplot.xarray # noqa\n", "from hvplot import hvPlot\n", - "hvplot.extension('bokeh')" + "hvplot.extension('bokeh')\n", + "from bokeh.io import push_notebook, show, output_notebook\n", + "from bokeh.layouts import column\n", + "from bokeh.plotting import figure\n", + "output_notebook()\n", + "from bokeh.palettes import Spectral6" ] }, { @@ -92,6 +112,7 @@ "source": [ "FIGURE_WIDTH = 990\n", "FIGURE_HEIGHT = 300\n", + "opts = dict(width=FIGURE_WIDTH, height=FIGURE_HEIGHT, min_border=0)\n", "ds = xr.Dataset()" ] }, @@ -104,19 +125,11 @@ } }, "source": [ - "## Sample" - ] - }, - { - "cell_type": "markdown", - "id": "19a39b25", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "#### Create atoms using `Site` interface" + "## Fe3O4 Sample\n", + "\n", + "In this example we use constructors to build a sample, starting with atoms, space-group and lattice parameters.\n", + "\n", + "#### Create atoms using `Site` methods" ] }, { @@ -158,7 +171,9 @@ } }, "source": [ - "#### Create a phase, set space group, add atom" + "#### Creating a `Phase`\n", + "\n", + "We create a phase and set space-group and previously created atoms. Space-group information can also be set by calling the `SpaceGroup` constructor." ] }, { @@ -179,6 +194,68 @@ "phase.add_atom(O)" ] }, + { + "cell_type": "markdown", + "source": [ + "The unit-cell parameters can be set by modifying the cell attributes." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 5, + "outputs": [], + "source": [ + "phase.cell.a = 8.56212" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "Because the unit-cell is a cubic, the lattice parameters are the same. This should be automatically applied." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n" + ] + } + ], + "source": [ + "print(phase.cell.length_b)\n", + "print(phase.cell.length_c)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "markdown", "id": "81ace320", @@ -188,12 +265,14 @@ } }, "source": [ - "#### Visualise the structure" + "#### Visualise the structure\n", + "\n", + "Using `py3Dmol` we can visualise the phases structure." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "id": "e68ddbea", "metadata": { "pycharm": { @@ -203,17 +282,17 @@ "outputs": [ { "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n" + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "text/html": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { - "text/plain": "" + "text/plain": "" }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -236,12 +315,14 @@ } }, "source": [ - "#### Create Phases object" + "#### Create Phases object\n", + "\n", + "The created phase is wrapped in a phases object." ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "id": "29071aa2", "metadata": { "pycharm": { @@ -263,44 +344,14 @@ } }, "source": [ - "## Experiment" - ] - }, - { - "cell_type": "markdown", - "id": "e93c42b9", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "#### Create the job and modify a `Parameters` object" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "0bf0c3bd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "from easyDiffractionLib.interface import InterfaceFactory\n", - "interface = InterfaceFactory()\n", - "print(interface.current_interface)" + "## Simulating the polarized diffraction pattern\n", + "\n", + "The easiest way of simulating a diffraction pattern is to use the `PolPowder1DCW` class. In this case we call the job `Fe3O4_test` and modify the experimental resolution parameters" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 9, "id": "83e3845f", "metadata": { "pycharm": { @@ -327,12 +378,12 @@ } }, "source": [ - "#### Modify a Pattern object" + "There are also pattern parameters, we can set them." ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 10, "id": "70fa1571", "metadata": { "pycharm": { @@ -343,13 +394,25 @@ "source": [ "pattern = j1.pattern\n", "pattern.zero_shift = 0.0\n", - "pattern.scale = 100.0\n", + "pattern.scale = 10.0\n", "pattern.field = 4.0" ] }, + { + "cell_type": "markdown", + "source": [ + "By default the job interface uses the `CrysPy` calculator. This is a wrapper around the `CrysPy` library. It can be verified by calling the `interface` property." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "id": "1ed88f8e", "metadata": { "pycharm": { @@ -363,7 +426,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "id": "784fb8e5", "metadata": { "pycharm": { @@ -383,18 +446,6 @@ "print(f\"Current calculator engine: {calculator.current_interface_name}\")" ] }, - { - "cell_type": "markdown", - "id": "eb234f76", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "## Analysis" - ] - }, { "cell_type": "markdown", "id": "00e24eab", @@ -404,13 +455,13 @@ } }, "source": [ - "#### Calculate the profile using the calculator we defined previously.\n", - "Note that we don't run anything on the `Sample` object but on a separate `Calculator` instance" + "#### Calculating the profiles\n", + "We create a simulation range and calculate the diffraction pattern for three cases; Spin up, Spin down and the Spin difference." ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 13, "id": "f556cc94", "metadata": { "pycharm": { @@ -419,15 +470,27 @@ }, "outputs": [], "source": [ - "x_data = np.linspace(20, 90, 500)\n", + "x_data = np.linspace(20, 120, 800)\n", "a = j1.create_simulation(x_data, 'up', pol_fn=lambda up, down: up)\n", "b = j1.create_simulation(x_data, 'down', pol_fn=lambda up, down: down)\n", "c = j1.create_simulation(x_data, 'diff', pol_fn=lambda up, down: up - down)" ] }, + { + "cell_type": "markdown", + "source": [ + "These profiles can be plotted" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 14, "id": "758b92d5", "metadata": { "pycharm": { @@ -436,27 +499,34 @@ }, "outputs": [ { - "data": {}, + "data": { + "text/html": "\n
\n" + }, "metadata": {}, "output_type": "display_data" }, { "data": { - "text/html": "
\n
\n
\n", - "application/vnd.holoviews_exec.v0+json": "", - "text/plain": ":DynamicMap [sim_pol2_tth]\n :NdOverlay [Variable]\n :Curve [sim_Fe3O4_test_tth] (value)" + "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"9ac9f3ea-0e1e-4e7c-9f40-f0b95e5739ea\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"GridStack1\",\"overrides\":[],\"properties\":[{\"default\":\"warn\",\"kind\":null,\"name\":\"mode\"},{\"default\":null,\"kind\":null,\"name\":\"ncols\"},{\"default\":null,\"kind\":null,\"name\":\"nrows\"},{\"default\":true,\"kind\":null,\"name\":\"allow_resize\"},{\"default\":true,\"kind\":null,\"name\":\"allow_drag\"},{\"default\":[],\"kind\":null,\"name\":\"state\"}]},{\"extends\":null,\"module\":null,\"name\":\"click1\",\"overrides\":[],\"properties\":[{\"default\":\"\",\"kind\":null,\"name\":\"terminal_output\"},{\"default\":\"\",\"kind\":null,\"name\":\"debug_name\"},{\"default\":0,\"kind\":null,\"name\":\"clears\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationAreaBase1\",\"overrides\":[],\"properties\":[{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationArea1\",\"overrides\":[],\"properties\":[{\"default\":[],\"kind\":null,\"name\":\"notifications\"},{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"},{\"default\":[{\"background\":\"#ffc107\",\"icon\":{\"className\":\"fas fa-exclamation-triangle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"warning\"},{\"background\":\"#007bff\",\"icon\":{\"className\":\"fas fa-info-circle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"info\"}],\"kind\":null,\"name\":\"types\"}]},{\"extends\":null,\"module\":null,\"name\":\"Notification\",\"overrides\":[],\"properties\":[{\"default\":null,\"kind\":null,\"name\":\"background\"},{\"default\":3000,\"kind\":null,\"name\":\"duration\"},{\"default\":null,\"kind\":null,\"name\":\"icon\"},{\"default\":\"\",\"kind\":null,\"name\":\"message\"},{\"default\":null,\"kind\":null,\"name\":\"notification_type\"},{\"default\":false,\"kind\":null,\"name\":\"_destroyed\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"1014\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"1017\"},{\"id\":\"1021\"},{\"id\":\"1052\"}],\"height\":300,\"left\":[{\"id\":\"1018\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"1040\"},{\"id\":\"1058\"},{\"id\":\"1077\"}],\"title\":{\"id\":\"1004\"},\"toolbar\":{\"id\":\"1029\"},\"width\":990,\"x_range\":{\"id\":\"1006\"},\"x_scale\":{\"id\":\"1010\"},\"y_range\":{\"id\":\"1008\"},\"y_scale\":{\"id\":\"1012\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis_label\":\"Intensity\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1044\"},\"group\":null,\"major_label_policy\":{\"id\":\"1045\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1019\"}},\"id\":\"1018\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1038\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#e6f598\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1074\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1027\",\"type\":\"HelpTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]}},\"selected\":{\"id\":\"1050\"},\"selection_policy\":{\"id\":\"1049\"}},\"id\":\"1036\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"Spin Up\"},\"renderers\":[{\"id\":\"1040\"}]},\"id\":\"1053\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1091\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]},\"y\":{\"__ndarray__\":\"3sxEIvZyQjOVlJUutxxjM3fXs+I4R34zu3TfCsZWkjMtDCjriPygMy+Ta4GhD6gz33ITL3APqjMikwAUD5WlM2YEoSJmVZszfrQobTt4ijNtH4oTjJlzM6QORfiqMVYzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOCxfw1hmEwEwe07FoSKbAFKtJRLiWwsDq8D3o0FbXwOa9b9pBDebAWOCHutFb78Cq3DFYbMfwwB6CegtKBuvA6hYFSZ9g4MDIVO+BKODNwMJ5xZGMgbTAZmCqfAQvlcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIwlqZqEV7QAWcnM6AMZ5AcfvzSbL0uEDerj0yb8zOQLsXxuhXYNxAxEF588WE40DPx0y/7AvkQDSmDL7hvd5AonphKfyY0UAPTkwi+RS+QFxyYFn/MaNAdhJc3ONJgkAAAAAAAAAAAESef630mnbA/HrkMuGMl8A6xQQ2NEeywDCoKYMbI8XAsLdkVsA10sBYpir5/F/XwMgEj7BvWtbAqJ/jP5vZz8C8TgjQf+fAwIij8WdbvKrAzFLpNXyAj8AEOJ1486ZrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAm/iJsTXWjQGOEUCrlHMRAhAG8zGjI3kAqLWFzpXDxQNLcb2mjQv1AIp0bWycsAkELBjMKHrYAQdZJsGhAwfZA2FtB7FLw5kCUOAgRqx7RQHu43oYt67JAWk+ST7/0jkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+MVDaiEfYUAI70qmYm2BQCBJ3cIGMppAwFCs8uASrUAQkQYIidO3QHCAZGPO1bxAQPgfo2zEuUDYiFQqdQCxQIhJUJgFkaBAwJF7CJ/Wh0Awq/YT/VNpQNX3v2ixXGG6FWiE2G58e7oD0gIuXw6Quny3VYvlr5u6rQ63MPKdobowdVC8e4ugupigrosA75a6oEdFjcZ1h7rPUdmr6rVxuq5UG6vou1O6yVGsSy06MLoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4d/XrqNKEwI1UBqsn7qTAyO+3LzQJv8DwOk9JAfnQwO5UhmaxYtvAROv2htVL4MA2a0wvgpzcwGb8/0OyhtLAt6TbNE6ywcCfeSNB4u+owCfWFO9o64nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABm2eRSJ5FlQB5NusDn6IhASvELp2E/pUDa7DrO9sS6QCGGQ2NF6MhA/Vn8XWod0UDxlCnh1l7RQKQMweowCspA6BiXgB7UvEBDSU2KCpKnQLOIKb3kdoxAbm9g8tZiaUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASFmsVgeOk0Dj9yAp8u2yQCg2jp28MstA4JWkhYEA3UA4lwPDc/PmQC2Y+OBN9epAuFPlrv1/50CAC4zA72feQL1XSoVrMs1Ar3CDk3/OtEC4HXerEQKWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtUBcM6++CQPIzAi5HA6JAhAEpZ/GLuUA6pE9+2wLLQBxlEfmoStVA8jfRMTcG2UAuTDJsM+3VQOBZPeFppcxAeu+3BaLmu0Am6T+BaUKkQIZxoFMp74VAAAAAAACgYD0AAAAAAJxrPQAAAAAAIHE9AAAAAAC4bz0AAAAAAPRlPQAAAAAAsFY9AAAAAACEQT0AAAAAADAkPQAAAAAAZAE9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh9FYpo023ArdZuQrWijcBYZbQneSymwENKUyFv/LjAAPRl6YQzxcAErmZX1hfLwBk2h0g4EsrAAamyvzjkwsAwhEMZt520wPbCTOEA8aDAUbbr/XH3hMBXqYY3EYpjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjC2FmlgRHQBpXtsMOnGlAzMi4uj2dhUCCzbLXG62bQNpvS2j74apAJxTCNdnOs0B+97U+oCS2QNC9v5YCx7JA1AkSgn88p0CbI9VvIwKQQPwspKyc0I3AVDldWbjXqsCiEynNTVq5wBmCJOP4asHAg8aNhww0wsAyGnUxiPC8wA7h14Qxf7HA3jTCq5UXoMBp2ErBloOGwOQ1AjA49WfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4A61sU/mJQF3kIxNcAKdANRp+K+JYv0DwtDRBwm/QQDzHOIPLhtpAiDKd3I544EDhH/pGe3rfQFztaaFgJddAvKhTch4xykCC5RgFac62QE2SQ9eqj55A9TRwzTeDf0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMZiS9UnQmBAE6OVPwFYgEAPgTACc4eZQDJZAXov+65AXLSbmeg1vUBA+c/7vWXFQMZyCQvxWshAPlHPXLGJxUDAShPlYpi9QPkvXsJemK9Ahupyz7Y0mkD2buq8HeOAQMhW6nzD6GBAo+4Xs/bakLob4N8hYPmQutGdNZ2Xpoq68PZlZEJPgLr4aeuHcx9vuoRpkMQTJle6lq0IChDYOroAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIoGITnRlXsB+QsZjVHl+wOegXDALKJjApUQOp8xHrsCB1Uq09QK+wOs6US7AhMfAuL7xoQclzcBt7l4zbo7MwDdjxDN6H8bA6G0t2j0au8AnIKgWqECqwCGFhBkwG5TAn5pFTdJZeMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACd4JwgHDWtAbs/Uww+ihUDeVRFY66qbQAAxqxacS6xAciuNpJojt0B0omWiB0O+QLBDKn2ipb9ARSuvHtR2ukDyiAdXJbKxQKT5rpxy7KJAJNUvBYUukEAy3YuTCiF2QHy6WvbVMlhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOenyyZSMlBATX9gDw4KbUA3jUd8EDuFQEKDTn1DUZlAzHgS7zGfqEBdkRfjSIezQGBF/XlrQ7lAfbRQQWSnukCQTDUvDO+2QOpu8c/OF7BAYzW10lprokAs8Y6QeDGRQCpPyQ9GLXpAsj8qGGFAYEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAljSI5bPSLsDuauiZmflKwM93uYxXfWPAORwQLh1Ad8DkohbZIOaGwOZvRod0npLAiqranCT/mMBW+KxslLSbwNZUP5D4WZnAkAVbK7kmk8CwhF8STuOHwBIigPJOmXjA1tcs4Z/pZMDK4vYD91pNwECFVCFwAjHAAAAAAABYUT0AAAAAAKhMPQAAAAAAoEM9AAAAAABINj0AAAAAAPAkPQAAAAAAWBA9AAAAAAAg9TwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7XwPqT/9MwMf492NLjGfAo7+UUE0egMCotirtUZmSwPmDl1bhFqLAZcDH8MGorcB6louBkX60wPsnFEuL37fA/Y0UnZ9wt8AMNkRaDmazwH0OV7tMEKvAHu1IWELTn8DqpwC0cIuPwJjVrWmwWnrA5wPd6/+OYsAvvQIKAAhGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8EYJ2m8uU0CcAQdwmgNrQGUG3Qt3PIBA+Fl/Y3GokEDUruJdsSydQJbzlLVFzqVACGyVOFLSq0BCilDEHheuQCSbJvq2iatADFPjXVC8pEAA/ENq8ymXQGBOwzCbPnBAcG9782RQisCy8JnSWKmawF9B42DUZqHABh0Nj9NxosDosB+3jyagwCzgoPbpPZjAJv4+askvj8DKuNGClTGBwLD17da8P3DAqlpAqsFSWsACIp9vU0ZCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACj9rcx9IFtQJKyck7gxoVAAwJIr68CnECR6Xg0f2WvQHk8mDnUqr5AnmJ5EZcaykCu6Qc/4lzTQDgju7Y3CNlALpHhT2Mz3ECrGWsVla/bQEAtx1aZr9dAHE+sOJ2o0UBczCX27vHGQGV/snAg+7lANSl9ZeeiqUDeVCtRRwuWQONmdPOlhIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO1w0UNMoP0C8JOz3wiBWQGgysgnVuWtATaT0R7alfkBEwkzotOKNQMoaAZygtZlAJpUcuOiCo0DGhs2gRyCqQJZOcCOr3K5Aw6Li76oUsEDapqvSNJGtQLqp/yLb+qdADr9fLEAooUBT4ap3t6iVQCSVFNv1HohARqlHza+yd0B++nT6IYpkQJDbzLzjaE9AAAAAAADwYT0AAAAAAABdPQAAAAAAwFQ9AAAAAABgSj0AAAAAAKA9PQAAAAAAgC09AAAAAADgGT0AAAAAAFAEPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAplNsFCmA8wKAe2RrSV1HA8vi3OTIUY8CHjorrYuNywB40FiYK1IDAUXeiVEL8isB2onwfsHiTwE7GjOCgSZnAi+geZQeOncAe/dpF5xWfwMDBXdSCbJ3AYTmbEGYQmcAjEyb4uzaTwDaPreqngorAKh7sf3V1gMACW+RfR2RywGB9SzC9fmLAKtO4puW8UMA59Vm8g0M7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCPR/qR5A1QFSnZHbS+ElAdOYPN1d6XEDog6LNTW1sQEwBUJk31XlAaipKlRlfhUAG4BkGjxiQQIJzXeuAEpZAzFu3ywmOm0AEXKEC7lCfQNDFtO9SM6BAcHfWQtCEnkBc9hkSaSuaQISG2pvNbZRAKCd74VUJjUBidsYrMMmCQMx45NcfIXZAuAmJakm7Z0AQIMlrNytXQB6g5VWTl0RAMr5G2V6pMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]}},\"selected\":{\"id\":\"1091\"},\"selection_policy\":{\"id\":\"1090\"}},\"id\":\"1073\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"background_fill_alpha\":0.25,\"background_fill_color\":\"#20262B\",\"border_line_alpha\":0,\"coordinates\":null,\"glyph_width\":15,\"group\":null,\"items\":[{\"id\":\"1053\"},{\"id\":\"1072\"},{\"id\":\"1093\"}],\"label_standoff\":8,\"label_text_color\":\"#E0E0E0\",\"label_text_font\":\"Helvetica\",\"label_text_font_size\":\"1.025em\",\"spacing\":8},\"id\":\"1052\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"1014\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1017\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1039\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#e6f598\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1076\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1070\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"DataRange1d\"},{\"attributes\":{\"tools\":[{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"},{\"id\":\"1026\"},{\"id\":\"1027\"}]},\"id\":\"1029\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1055\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1090\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1057\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"SaveTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]}},\"selected\":{\"id\":\"1070\"},\"selection_policy\":{\"id\":\"1069\"}},\"id\":\"1054\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#e6f598\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1075\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1054\"}},\"id\":\"1059\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1073\"}},\"id\":\"1078\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"AllLabels\"},{\"attributes\":{\"label\":{\"value\":\"Difference\"},\"renderers\":[{\"id\":\"1077\"}]},\"id\":\"1093\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1012\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1036\"},\"glyph\":{\"id\":\"1037\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1039\"},\"nonselection_glyph\":{\"id\":\"1038\"},\"view\":{\"id\":\"1041\"}},\"id\":\"1040\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1028\"}},\"id\":\"1024\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1073\"},\"glyph\":{\"id\":\"1074\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1076\"},\"nonselection_glyph\":{\"id\":\"1075\"},\"view\":{\"id\":\"1078\"}},\"id\":\"1077\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1045\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis_label\":\"2theta\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1047\"},\"group\":null,\"major_label_policy\":{\"id\":\"1048\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1015\"}},\"id\":\"1014\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1054\"},\"glyph\":{\"id\":\"1055\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1057\"},\"nonselection_glyph\":{\"id\":\"1056\"},\"view\":{\"id\":\"1059\"}},\"id\":\"1058\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1069\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1028\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1015\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1019\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1056\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1050\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fe3O4 Polarization\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"1004\",\"type\":\"Title\"},{\"attributes\":{\"axis\":{\"id\":\"1018\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1021\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"label\":{\"value\":\"Spin Down\"},\"renderers\":[{\"id\":\"1058\"}]},\"id\":\"1072\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1036\"}},\"id\":\"1041\",\"type\":\"CDSView\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n const render_items = [{\"docid\":\"9ac9f3ea-0e1e-4e7c-9f40-f0b95e5739ea\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"edf61221-5e83-46e8-b11d-78d1b1457d62\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", + "application/vnd.bokehjs_exec.v0+json": "" }, - "execution_count": 24, "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "1706" + "application/vnd.bokehjs_exec.v0+json": { + "id": "1003" } }, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "ds.hvplot.line(x='sim_Fe3O4_test_tth', y=['sim_Fe3O4_test_up', 'sim_Fe3O4_test_down', 'sim_Fe3O4_test_diff'], width=FIGURE_WIDTH, height=FIGURE_HEIGHT, legend='top')" + "p1 = figure(**opts, title='Fe3O4 Polarization')\n", + "p1.line(x_data, np.array(ds['sim_Fe3O4_test_up']), legend='Spin Up', line_width=2, color=Spectral6[0])\n", + "p1.line(x_data, np.array(ds['sim_Fe3O4_test_down']), legend='Spin Down', line_width=2, color=Spectral6[1])\n", + "p1.line(x_data, np.array(ds['sim_Fe3O4_test_diff']), legend='Difference', line_width=2, color=Spectral6[2])\n", + "p1.yaxis.axis_label = 'Intensity'\n", + "p1.legend.location = 'top_right'\n", + "p1.xaxis.axis_label = '2theta'\n", + "show(p1)" ] }, { @@ -467,15 +537,21 @@ "name": "#%% md\n" } }, - "source": [] + "source": [ + "# Fitting a polarized powder profile\n", + "\n", + "In this example we load a sample from a cif file and modify some parameters to be more physically meaningful.\n", + "\n", + "Load the phase from a cif file:" + ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 15, "outputs": [], "source": [ "p2 = Phases.from_cif_file('structure_polarized.cif')\n", - "j2 = PolPowder1DCW('pol2', ds, phases=p2)" + "p2[0].cell.length_a.fixed = False # Optimum value of the lattice parameter `a` is: 10.26594(88)" ], "metadata": { "collapsed": false, @@ -484,28 +560,81 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "Create a new job and set the phase and vaguely acceptable experimental parameters." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 16, + "outputs": [], + "source": [ + "j2 = PolPowder1DCW('pol2', ds, phases=p2)\n", + "j2.phases[0].scale = 0.025\n", + "j2.phases[0].scale.fixed = False\n", + "j2.parameters.wavelength = 0.84\n", + "j2.parameters.resolution_u = 15\n", + "j2.parameters.resolution_u.fixed = False\n", + "j2.parameters.resolution_v = -2.5\n", + "j2.parameters.resolution_v.fixed = False\n", + "j2.parameters.resolution_w = 0.375\n", + "j2.parameters.resolution_w.fixed = False\n", + "j2.parameters.resolution_x = 0.0\n", + "j2.parameters.resolution_y = 0.225\n", + "j2.parameters.resolution_y.fixed = False\n", + "j2.pattern.zero_shift = 0.35\n", + "j2.pattern.zero_shift.fixed = False\n", + "j2.pattern.beam.polarization = 0.6909" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "Perform an initial simulation to verify that the parameters make a meaningful pattern." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 17, "outputs": [ { - "data": {}, + "data": { + "text/html": "\n
\n" + }, "metadata": {}, "output_type": "display_data" }, { "data": { - "text/html": "
\n
\n
\n", - "application/vnd.holoviews_exec.v0+json": "", - "text/plain": ":DynamicMap [sim_Fe3O4_test_tth]\n :NdOverlay [Variable]\n :Curve [sim_pol2_tth] (value)" + "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"37057048-f301-4925-94dc-67f395126466\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"GridStack1\",\"overrides\":[],\"properties\":[{\"default\":\"warn\",\"kind\":null,\"name\":\"mode\"},{\"default\":null,\"kind\":null,\"name\":\"ncols\"},{\"default\":null,\"kind\":null,\"name\":\"nrows\"},{\"default\":true,\"kind\":null,\"name\":\"allow_resize\"},{\"default\":true,\"kind\":null,\"name\":\"allow_drag\"},{\"default\":[],\"kind\":null,\"name\":\"state\"}]},{\"extends\":null,\"module\":null,\"name\":\"click1\",\"overrides\":[],\"properties\":[{\"default\":\"\",\"kind\":null,\"name\":\"terminal_output\"},{\"default\":\"\",\"kind\":null,\"name\":\"debug_name\"},{\"default\":0,\"kind\":null,\"name\":\"clears\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationAreaBase1\",\"overrides\":[],\"properties\":[{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationArea1\",\"overrides\":[],\"properties\":[{\"default\":[],\"kind\":null,\"name\":\"notifications\"},{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"},{\"default\":[{\"background\":\"#ffc107\",\"icon\":{\"className\":\"fas fa-exclamation-triangle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"warning\"},{\"background\":\"#007bff\",\"icon\":{\"className\":\"fas fa-info-circle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"info\"}],\"kind\":null,\"name\":\"types\"}]},{\"extends\":null,\"module\":null,\"name\":\"Notification\",\"overrides\":[],\"properties\":[{\"default\":null,\"kind\":null,\"name\":\"background\"},{\"default\":3000,\"kind\":null,\"name\":\"duration\"},{\"default\":null,\"kind\":null,\"name\":\"icon\"},{\"default\":\"\",\"kind\":null,\"name\":\"message\"},{\"default\":null,\"kind\":null,\"name\":\"notification_type\"},{\"default\":false,\"kind\":null,\"name\":\"_destroyed\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"1189\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"1192\"},{\"id\":\"1196\"},{\"id\":\"1227\"}],\"height\":300,\"left\":[{\"id\":\"1193\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"1215\"},{\"id\":\"1233\"},{\"id\":\"1252\"}],\"title\":{\"id\":\"1179\"},\"toolbar\":{\"id\":\"1204\"},\"width\":990,\"x_range\":{\"id\":\"1181\"},\"x_scale\":{\"id\":\"1185\"},\"y_range\":{\"id\":\"1183\"},\"y_scale\":{\"id\":\"1187\"}},\"id\":\"1178\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1229\"}},\"id\":\"1234\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"1203\"}},\"id\":\"1199\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1219\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1193\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1196\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1190\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"Intensity\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1219\"},\"group\":null,\"major_label_policy\":{\"id\":\"1220\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1194\"}},\"id\":\"1193\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1230\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1200\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1187\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1225\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1201\",\"type\":\"ResetTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]}},\"selected\":{\"id\":\"1245\"},\"selection_policy\":{\"id\":\"1244\"}},\"id\":\"1229\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1194\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1220\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1224\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1213\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1223\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis_label\":\"2theta\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1222\"},\"group\":null,\"major_label_policy\":{\"id\":\"1223\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1190\"}},\"id\":\"1189\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1248\"},\"glyph\":{\"id\":\"1249\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1251\"},\"nonselection_glyph\":{\"id\":\"1250\"},\"view\":{\"id\":\"1253\"}},\"id\":\"1252\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]},\"y\":{\"__ndarray__\":\"6ASibsSwpEDyeQKC7GmqQPwoOXysYK1A9Isu3/j/q0Cz3vjA9SKnQMG1zYmBEqFAwMH58IQnl0DwYFWw1baNQEj1o/ymsYJA+q/CVKsPeEACDsGKzm1wQPaCfm3GImdAp1inUxMdY0AnSgg3HKJgQK1q/rt8iF5AhOtt/ZrUX0DCQAqSAgBiQBEDBNY3qGZAcrYGwCzwbkBgHCLJZLZ1QE8rBsJEtn1AqD3wwYEVg0DxFM0ammWGQEqwK6blfIdAnwQ0z6DbhUC8QTDQ12OCQI2pmYCSl35ALwzOqwdhekC8XE7zd9h6QJYlnAUcsoBASgbLjRA/h0CR75S7NU2QQJnriqurnZVAAKcc+CZmmkAasdqdIfGcQJywnJ8OGZxAwT26W1Q7mEAHUOQCct+SQPrRWJiLDItA6VEUK/s+gkCuDx0chQp4QBCbHrAbXnBApDlrYTqFaEBJQjK5bqFnQHBq/QOW12lA39k+7cFTcUA9BT2rYhl5QBuepUPzloJACDUPjqfjikC9Xq50HW6SQExvjcusgpdA/0a77kCGm0BQ26qcnESdQHycEvmLBpxAs9mz4qF3mEC+8jI3EQaUQMTrXPtBBpBAVXDnvLK4ikAgNigRB7yIQLQe+BXZu4lAx27WL9uWjED3iUmy9baPQPVmiFn4vJBAw7jXG7dgkEBwZDV9qOCNQGdhvJT5cIlAv5mjKMRfhECtiiYTF+h+QGw0lgdkh3ZAjmHacuUPcEBQPj6JjxpnQLfeg9AydmFA9cRmq6HzXEBQpyoXzEtaQDBxbTnhSltA9V+31r+YXUDRLgFufytgQFUFaPIkcmFAbFa/498dYkCrl0L4oIRiQA1Kr66PpGJApN6lo9ZcY0BvM2VwxWdlQOv7YTz2U2lAgkpMg0Vcb0BDMy7d2aFzQMWWgXyCH3hA9R2ZYICBfECs6tmlCwKAQDSDGsn884BAatrpuPfbgEDi9wFh2kx/QKdxvLoSMHtAJMS/G2hFdkALbbH1b2VxQJ9CjKQBUmpA6Or8B4q+Y0AQZEBoylpeQE/l8EKvoVlAGvOCl5qfV0D0wSwiE2dYQNyrsdCqtVtArKU0AweYYECo1zBkCxZlQIWuHAblPmtARcmqV7KRcUCz/pBYCTd2QOhSGxLeJXtALfM26Ya3f0C5lqimi46BQPOG15kWS4JADV9+VDfpgUDPYfidoYCAQKrVhrQgz3xA8Jtyb44CeEBv7zb6r1VzQJ1TX1YVnm5Ae3FyV+R3aEDL8vujsF9kQH66DOzCrWJA1sTpYHpmYkDwCYpSxGxjQMX2CeVGaWVAfW1nUkTzZ0CPfaAlylVrQLiNqtsJRW9ALpsEde7mcUBBoRqItXN0QEWcou3RFXdAY8aYO/J6eUCMaNkjyTV7QHq6UZi9/ntAEJ/c1FVve0Bc93mWhbd5QLeVhZQ6QHdArFBdl36QdEANrMfE4SVyQDlnAOOFWnBAkGrRH7kQcEAFVqfRd5RwQJtpS+lTQXJAL/r5K4cDdUBs3q/6ocR4QNIHdSXCZ31Ark7YyY5ogUBr2Nf1PGqEQOK+TCfKxIdAitE13r5Fi0BVWM9TKLKOQAee+NYD5JBAfxWsEHH7kUCPrVbJN3GSQG4vDnTXKJJAh4pEEjgvkUAvSzX40W6PQIhe0ToWDYxAt9iLJAPfiECl18WbVimGQDwvOiNDQoRAZDkWAOtKg0DfkKavYiqDQARa1O8EsoNAgDlm58SfhEAO583Tg66FQFUUwUbxp4ZA68cyNPBvh0BIdp0GUeSHQHae+7EzTohAmu1b2MxwiEBhccdk/UGIQKQ2CnTkp4dASuDhItqPhkDcMW/w1PiEQPc8UxQaF4NAshc0cffpgECqwu5DR2p9QL2b8YASVHlA710Tiz3sdUCuhoTICFNzQHNFwDQdE3JAGXO33Yr8cUCd2upTXApzQHL9pyLUG3VAsGtU/Vr3d0BgWiHPVVl7QNVxtkjU0n5A16RGX8nzgEA6SHxhaTOCQKsyo2vd3oJA5mpPZdjmgkAHoG0MykiCQP+igbzoF4FA3Ly1HBULf0DVECFY6Ih7QLQhpT82BnhAGqKfCl7MdEC/aV+Y5gtyQJi7KuXktm9A+h8Yd9dybEAfLTt9tCxqQIeZr/4u2WhAoel0k2cAaEAGq7aFko1nQDhliR89W2dAd+esVqVNZ0CzzWKZRRNnQGgByfyR7mdAkH30vaGRaEC0C7L+/5JpQM2pM9B0G2tA+KHBzqBdbUDr5Ydf50BwQDtJ+EKOUHJAc6XNVPzfdEB04W0Vw+R3QALurOuFRntABACiJjH9fkAJuKPsGFyBQHfv9aFUKINAbuBcrqHJhEBA5D4EnyWGQEOs/qTDOodA4azhRzLSh0AfLwFZsfGHQPWFbH2CoIdAqoqCD7fzhkC4p6Nkyg+GQPiljPJvHYVAkBVq3hxChEDvcvcw85qDQC92FjPLOYNAl1MYaeojg0AShT98cFKDQGd1XvCTtINAc+hNZWMshECYP23RGLCEQEGqTR0zHoVALlHoIz1WhUArwy+T+0SFQKn/Q78B2IRA/J/l7CcJhECEyyQ6lMuCQJPmVxEzXoFAhFTeo8F1f0CVo+Uoi/97QJouUQoVl3hAqPVZZhdhdUBb7GfZbIVyQCmV+LmzGnBA+gCui1tVbEDTpzyl9WZpQFwuAwSjY2dAVia5Ton4ZUAGAbP69z5lQH3DYQ8M5GRAzPdLa+zBZECI30k6z7pkQHB5U29Mu2RAUxcc4wR9ZEAYosHqQJFkQLkAjKZlkWRAimdDmJWWZECoSqrs2JNkQOxCMG7riGRANPkRtFRyZEAuKZvkMKJkQGSh2lmEl2RAG0nhsjCOZEAALyX4MYpkQDzbMBIhl2RAdHLqfFDCZEAQLCyuFBxlQAfA614rt2VAgC6Pxu6mZkD3D4aAcDFoQOQV+frdCmpA4BzM34VzbEBqyxRvt1VvQKl76rtmVHFAR3pLQngpc0A4yI/j/hZ1QI2qUyuOEndAUKiL6zT1eEDt8W4l3qx6QLrIr2ElInxATUvK/f48fUCkTrnBevx9QAr/eX0BXX5AR2CyyVZafkB9BUUlmgV+QG9+fkZwbn1AlyalxECgfECN4Y7iarJ7QA87Vvhiu3pAhzzPMtGneUBWrFeR+op4QEFYevm2a3dAdOdJAe5QdkDrs9UWYUF1QHpOUvQGQ3RAfNhFSIRac0DxdTRlTrVyQO9gclu5F3JAiQCsVhqfcUA8N7sFfk5xQJF201xDKHFAHD0d7AQ8cUCQw3D7JFxxQDpviSCmynFAIcBN7g1gckC8YFyDAhxzQJMON8YV+3NAAOXQXZ/5dECcAdRd0BJ2QK55DF+GS3dAiaDkQiyMeEAPR4fmXNR5QPqc/vTkD3tATTI5I+hQfEAgMwVWY3t9QI0OyX1BgX5ANG61FHNWf0B3Smcrzux/QEC93dxRHIBA7/3j76cWgEAHVTkxtdV/QCVOzMRuK39ArAfUeGY2fkCF3bqmSwF9QKp4utZOmXtA1fEa4XQMekAPjYmX0Gh4QJjXw6TLx3ZAdUYuspUodUDsVNvYkZVzQM+jRETlF3JAQc/AXb20cECQfm2Oj95uQFKcaRrFgmxA5RgR7yF+akDYs8sMxrxoQFo0gYQMPWdAZBGVZFMCZkDK7uybpg1lQM14t7QhX2RAIxfISP2XZECACCwSqbdkQMTrnIQH+GRAGJY3LG7aZUDMyW2snA1nQAXDLYz/kWhATOsITExmakD9Vt3WVJFsQAQqfO8y8W5AHgtNbFTVcEBuoGbXKFFyQDBjv5556XNAmsDkiK2ndUD3FROeknV3QF1bZeF5WHlACjHc505Me0DopuTVZ0t9QKWDB1AFR39A0rOElrGigED4+V902JeBQHtXWrvoe4JAxZ4Rc6lGg0DCpoKW7u+DQCtlfRJ9b4RApJTuXyHEhEDDqzAr0uCEQHozuktYx4RAzGXuAJV4hECIbFdnkviDQHvzHAWYTYNAobw9xml/gkBM3v8ZgJaBQPQpWCeVpIBApRbCUEVGf0AQ258igEB9QGIGj+lXRXtAWIdMPSxgeUDkC/gyoZd3QJRIg8EDAnZAkiE/452TdEA7HfrUkFZzQIeMhvDHSnJAyp57YTFxcUCb9MEcc8lwQN+txQUcVHBAJgjQJjoLcEDvlv7yDthvQFgz19fp529ACllqhdsccECbPLPQWm5wQIAHr0/5zHBA3AR/Mvw7cUB2BiHVOpFxQMGKguErG3JAaI+VZJigckB1pD1cEB1zQADonS4Dm3NArQwNEAr/c0BmHGe6clB0QCE7C4zKjHRA/7Un24aydEAJiqIJ0cR0QMBh72NuwHRA7paUZ+endEA4pUP5LX50QOBUq9PgRnRAGGijSrT+c0CNsefV7rpzQCmXhgZ5dXNAD9grUQMyc0AQUB1zDPRyQEcKd7cavnJAFyHEsEKrckCbAxpwR5JyQMQlWjfphXJAf/42vjCFckBVQNjuOI9yQNhDLvEConJABWN7lIu7ckDdKMTnwtlyQEKbviKr/HJAv2BSo9Mjc0D7scrhnEpzQL7wwelKcHNA0EWHxVOXc0AUv39VXLpzQPE+2s9G4HNAtchlLaICdECKP2RtzSV0QGSrZMd+QHRAG4g7QAhtdEDUWm4Bzp10QOnYNBAm1HRAFMfHLtUQdUBnLkjhYU91QKY6SzKHmXVAAybadOr1dUD32M6vWEt2QDcasuJwoHZAxQhmveTxdkCVGkc19zt3QIstzrXKendA/vzVirGqd0BUrrse6c53QMjzYkke23dA2yfOugjSd0AxHHqrdLN3QDT1IysLj3dA1AaAFV9Gd0C0DsdYgPd2QM94Y1WEm3ZA8qhBiSM2dkC4JL4c9sp1QPlRxVq+XXVAPFsR2yrydEBAeDqQ8Y90QCw1AmfAJ3RAdcOtWHzZc0AgvQtI85dzQKy4reIOcXNAOIYGurtRc0DK39jpp0NzQPyHJZqTQ3NAYep2qCZYc0D9bwMCl3tzQOPTi+QJrHNAYDoOFrbtc0CgRbMQ9DJ0QBMYtCYGfnRAyIV+0DjMdEBidUc1mh51QHt7vNGebHVAKSLCHdy3dUBHMwfXlvx1QOxM9ubiOXZAg5z0YlFZdkAUhIvPOYl2QIJLaNg3tXZAaPtHCK3NdkC8fejLQNl2QMSym4MU2HZA5jcnXZHKdkCITjdmO7d2QF+ZyhQVlXZAaWP46plkdkDNuwSv4TJ2QC8L8npX+nVAS8BKRmi8dUCJGuJLY3p1QBxaNNWzNHVAmTIsmcfudEAnw1++c6V0QDzARWKNXnRApSRh/gUadEBgzXl5V9RzQFzYIHnHj3NA+H2s5q5Mc0AlWl1QSwtzQDEGwsO7y3JAgXU1EP6NckBx3JsV9FZyQK/pYTm1HXJAoYIfSNXlcUC/ks2rF6ZxQJMDqheffXFAju1jlTlMcUDE3QyRmhpxQJuWElV16HBAj6+Tl4C1cEAX9XScdIFwQP/UYWsRTHBAr7vqsgwacEBkwZL1BMtvQC+Ax7M4X29AbIRCpVDxbkDkt59IYopuQJ0q7ad1B25AamUf3AymbUAV9YVmjURtQIAXxEVN6GxA3Tf8u9uTbEAwzNryyElsQEfUrcyfEmxA+Nlj8STma0BwRMclf8VrQIdEm4U2v2tAzSTy4CLNa0BwDUhRZAVsQGq2flxpQ2xAMFrNyxWGbEBa2y5SIfVsQC9eSAgPeG1AqpwYiakNbkBE2lF9/rNuQJrB1y+Hgm9A7PuXCa8kcECKddM6DI1wQLMznuvG+HBAy5eEpNxncUCkkq+v5tdxQKJxURpmRnJA3vPjm+SxckDNvyu/ChlzQLg3a8bud3NAuE4GybTTc0Dix0V35il0QAULWczwdnRArCGSlbK7dECUoF/oBvh0QKR7Tb7SNnVAlP4UhzFldUA/GTizsoR1QF6oxoqupnVAVKb/BgvCdUAVZWVbjtd1QCwSGzEG6HVAqzS5U9DwdUC3QOpfrfp1QNUrlEiPAXZAuPHLbCgGdkAPbXHqMRN2QGxhKxSqGHZAOC7bez4cdkAFgGS6aB92QEOYKgg0InZAKFuj+7gjdkAOeBYMpCV2QEwXfBJkJ3ZAxseP5lIndkA85UAotiV2QNPTc7ijIHZA8itZbTExdkAQficMMC52QKcFG+o5KXZASXxQTjUidkC46lnXHRl2QKEG6GsDDnZAIqqBNw0BdkCSINssg/F1QDWB40Qp43VAgl3cnuTTdUAQ8F16PsR1QMlByNwHu3VAiYWgM3ikdUBSeqLh/Jp1QM33PDxSk3VAZCZ0vCGOdUDY2jBy/ot1QBIaiTVojXVA3H45keWTdUAVyLajzZ11QI1AtYJFrHVA4l3rfXW4dUC9qhh++9F1QAQl3vre83VA3JjoC/oWdkCZceqWYz52QEeqey7DZnZATJAldSeVdkB8/RCiSch2QOYzZ+erAXdA1FdFiK45d0BA+K7wu3J3QLVgDaz5q3dAkCcKlHzkd0CUGE187hp4QDxjOE4MUXhAtKcbCbGCeEDl6L0us694QLaPkOoi13hA8j0Cp33weEDgOa9ivgt5QHDHdXyAHnlAKArlnRgoeUA4L8qD6Cd5QGAHGBVtHXlAgW+soWIQeUBYBwMX6/F4QJfzfOOvyHhA53DJvZOMeEAF9dbgBVB4QE+QRugdCXhAvge+1nq4d0BTQPPBc193QHsRVv66+XZAs2zoB7GRdkAY9/i/OCN2QCARMOZtr3VAklzTxzo3dUCUXTy+u7t0QGuovKn5PXRAQCEcWfa+c0B0bfkBvz1zQN/d9GF3v3JA6DPxJJhCckCV4R4q5sdxQAfcQlUWUHFA350TX8PbcEB2rXkR929wQOjeuPPCB3BA4FMGH7ZIb0BkpLB8FYxuQIAn7mYO2m1A5eVgUdwybUBMAJAWkJZsQOLs6XdJFWxAeNdZToeQa0DKLN3hqhdrQNXlDZczqWpAJAXKhrhEakCKpwKCmPVpQMCL6f3Hl2lAtPt4FK5UaUDrBCRVzBZpQF2RXgqz42hAlP7pt8O3aEDoMx4EupJoQNYUBjOodmhAAMa6miRfaEBTZvup+E1oQFSSDsjiQWhAMEjTP/pDaECct1ldj0ZoQAClYT5OT2hAlIBuyjxeaEBRNLndF1BoQFh8Iot6cmhAcF30lACaaEBc7+hqJMxoQNzo73HE/2hAt3tMIIg5aUDMxafrrXlpQBB+FgnUyGlAP+GrZ8AXakCdtI8ziGlqQF+q9qxdx2pASs3mxxAsa0BC6ty1gJdrQBXEGSxxCWxAnXmq6VyGbED8xV6NpghtQHouncMVkG1ABLUlVBIcbkCP9YCw5qtuQA/pzN0caW9AJhjGM40CcEDqBgownVFwQC7EexJFoXBAGPUXDinwcECneNj9qT9xQMYWygk3jnFAuIWNPtPdcUAsdb0SZSlyQO6YlYvbb3JAS3hMjdy2ckCXki2fwP1yQChrs/yMPnNA92qPQMZ8c0B0tAfsOLZzQEQL+1a863NAEcsCQEYddEDEKsmE3Up0QGHO6LMGdHRAQS0zOhCbdEBH/7vMk750QO8r7cjc3nRA+CVm/kL8dECcEiZRAxh1QLBSgoaDMXVAYKNF3KFIdUDSC+UeeV91QEgiWWicdXVATO7dcYaLdUDpc+NXrqF1QL51CH9ZvHVAeL4HWdzUdUDxhS056e51QGFJv53UCnZAQuBCZhksdkBs8QxaAk12QHXP7LaAcHZAXPizXuuPdkBwewL0+7l2QGGtKWWH5nZArlVLSnkVd0CVT1uNqkZ3QK0EqprieXdAzGZsBtiud0Cl5heZMeV3QOQeu5OHHHhA3CkoXxZZeEAvSOg60JF4QMYRSy8cynhAebhHqWsBeUBtgpl7Kjd5QEN4rfXAanlAUrBZFYebeUAAxqlxNMx5QHxkbK019nlA/2/c8cUbekA/1J0zXjx6QAr4xAWBV3pA3TLfPWhuekD1vHXZkn16QEin3KcjhnpAQHYvidSHekBk1Xn+doJ6QKC6bhnodXpA6L0UnxliekDKMSiRD0d6QPAzmOD8GXpAN6pGbpnyeUBFAClVJ8R5QNahGRv1jnlAPui4hFxTeUBkUSPHwRF5QLG3C7yRynhAYwDRRUB+eEBptdq5Ri14QL3G/1Yi2HdAhpwQxaJ4d0AIxi5iwR13QExt154LwHZAxVXNDAZgdkDtke3dMf51QIxuZQdIlnVAFEVlkwszdUCTmiAZQM50QKFXM0iQanRAK2faiCgHdEAQEJpmZ6RzQKyBEn+iQnNAi+ZNPybickDfGCm9NYNyQFkJKqwKJnJAtIlnsvrJcUD/+XJJBXFxQBs0bRxGGnFAVzfDj9PFcEB0dHnNu3NwQALwiRAaIXBALAf6tnCob0AlH+DfPRNvQMC5FUiGgm5AwOE+Eij2bUDdR0lC+G1tQAxtLo7D6WxAkpYSsE9pbECikl2rXOxrQFrIRAGmcmtAyhkmZqP3akBd6nPuMoRqQCobGI0JE2pAn/aLQt6jaUDUMfojaDZpQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]}},\"selected\":{\"id\":\"1225\"},\"selection_policy\":{\"id\":\"1224\"}},\"id\":\"1211\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1245\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1203\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_color\":\"#e6f598\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1249\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1197\",\"type\":\"PanTool\"},{\"attributes\":{\"background_fill_alpha\":0.25,\"background_fill_color\":\"#20262B\",\"border_line_alpha\":0,\"coordinates\":null,\"glyph_width\":15,\"group\":null,\"items\":[{\"id\":\"1228\"},{\"id\":\"1247\"},{\"id\":\"1268\"}],\"label_standoff\":8,\"label_text_color\":\"#E0E0E0\",\"label_text_font\":\"Helvetica\",\"label_text_font_size\":\"1.025em\",\"spacing\":8},\"id\":\"1227\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#e6f598\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1251\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[800]}},\"selected\":{\"id\":\"1266\"},\"selection_policy\":{\"id\":\"1265\"}},\"id\":\"1248\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#e6f598\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1250\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1222\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"Spin Down\"},\"renderers\":[{\"id\":\"1233\"}]},\"id\":\"1247\",\"type\":\"LegendItem\"},{\"attributes\":{\"tools\":[{\"id\":\"1197\"},{\"id\":\"1198\"},{\"id\":\"1199\"},{\"id\":\"1200\"},{\"id\":\"1201\"},{\"id\":\"1202\"}]},\"id\":\"1204\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1231\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1185\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1265\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1183\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1232\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1244\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"1211\"}},\"id\":\"1216\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Ho2Ti2O7 Polarization\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"1179\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1266\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1212\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"1189\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1192\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"Difference\"},\"renderers\":[{\"id\":\"1252\"}]},\"id\":\"1268\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1211\"},\"glyph\":{\"id\":\"1212\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1214\"},\"nonselection_glyph\":{\"id\":\"1213\"},\"view\":{\"id\":\"1216\"}},\"id\":\"1215\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"Spin Up\"},\"renderers\":[{\"id\":\"1215\"}]},\"id\":\"1228\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1229\"},\"glyph\":{\"id\":\"1230\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1232\"},\"nonselection_glyph\":{\"id\":\"1231\"},\"view\":{\"id\":\"1234\"}},\"id\":\"1233\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1181\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1214\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1198\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"source\":{\"id\":\"1248\"}},\"id\":\"1253\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1202\",\"type\":\"HelpTool\"}],\"root_ids\":[\"1178\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n const render_items = [{\"docid\":\"37057048-f301-4925-94dc-67f395126466\",\"root_ids\":[\"1178\"],\"roots\":{\"1178\":\"626ae1e5-dcc5-436f-86cc-de1e872d645c\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", + "application/vnd.bokehjs_exec.v0+json": "" }, - "execution_count": 26, "metadata": { - "application/vnd.holoviews_exec.v0+json": { - "id": "1958" + "application/vnd.bokehjs_exec.v0+json": { + "id": "1178" } }, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -513,7 +642,16 @@ "j2.create_simulation(x_data, 'down', pol_fn=lambda up, down: down)\n", "j2.create_simulation(x_data, 'difference', pol_fn=lambda up, down: up - down)\n", "\n", - "ds.hvplot.line(x='sim_pol2_tth', y=['sim_pol2_up', 'sim_pol2_down', 'sim_pol2_difference'],width=FIGURE_WIDTH, height=FIGURE_HEIGHT, legend='top')" + "\n", + "p1 = figure(**opts, title='Ho2Ti2O7 Polarization')\n", + "x_data = np.array(ds['sim_pol2_tth'])\n", + "p1.line(x_data, np.array(ds['sim_pol2_up']), legend='Spin Up', line_width=2, color=Spectral6[0])\n", + "p1.line(x_data, np.array(ds['sim_pol2_down']), legend='Spin Down', line_width=2, color=Spectral6[1])\n", + "p1.line(x_data, np.array(ds['sim_pol2_difference']), legend='Difference', line_width=2, color=Spectral6[2])\n", + "p1.yaxis.axis_label = 'Intensity'\n", + "p1.legend.location = 'top_right'\n", + "p1.xaxis.axis_label = '2theta'\n", + "show(p1)" ], "metadata": { "collapsed": false, @@ -522,11 +660,634 @@ } } }, + { + "cell_type": "markdown", + "source": [ + "### Load experimental data\n", + "\n", + "The data file contains the following columns; `tth`, `up`, `d_up`, `down`, `d_down`. The `d_` prefixes denote the uncertainty of the data. The data can be loaded with the `add_experimnent` method." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "outputs": [], - "source": [], + "source": [ + "j2.add_experiment('pol_exp','experiment_polarized.xye')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "This experimental data can then be used for simulation." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 19, + "outputs": [ + { + "data": { + "text/html": "\n
\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"f0647d6e-f841-46d4-9dce-c5d220fa032a\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"GridStack1\",\"overrides\":[],\"properties\":[{\"default\":\"warn\",\"kind\":null,\"name\":\"mode\"},{\"default\":null,\"kind\":null,\"name\":\"ncols\"},{\"default\":null,\"kind\":null,\"name\":\"nrows\"},{\"default\":true,\"kind\":null,\"name\":\"allow_resize\"},{\"default\":true,\"kind\":null,\"name\":\"allow_drag\"},{\"default\":[],\"kind\":null,\"name\":\"state\"}]},{\"extends\":null,\"module\":null,\"name\":\"click1\",\"overrides\":[],\"properties\":[{\"default\":\"\",\"kind\":null,\"name\":\"terminal_output\"},{\"default\":\"\",\"kind\":null,\"name\":\"debug_name\"},{\"default\":0,\"kind\":null,\"name\":\"clears\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationAreaBase1\",\"overrides\":[],\"properties\":[{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationArea1\",\"overrides\":[],\"properties\":[{\"default\":[],\"kind\":null,\"name\":\"notifications\"},{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"},{\"default\":[{\"background\":\"#ffc107\",\"icon\":{\"className\":\"fas fa-exclamation-triangle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"warning\"},{\"background\":\"#007bff\",\"icon\":{\"className\":\"fas fa-info-circle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"info\"}],\"kind\":null,\"name\":\"types\"}]},{\"extends\":null,\"module\":null,\"name\":\"Notification\",\"overrides\":[],\"properties\":[{\"default\":null,\"kind\":null,\"name\":\"background\"},{\"default\":3000,\"kind\":null,\"name\":\"duration\"},{\"default\":null,\"kind\":null,\"name\":\"icon\"},{\"default\":\"\",\"kind\":null,\"name\":\"message\"},{\"default\":null,\"kind\":null,\"name\":\"notification_type\"},{\"default\":false,\"kind\":null,\"name\":\"_destroyed\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"1378\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"1381\"},{\"id\":\"1385\"},{\"id\":\"1416\"}],\"height\":300,\"left\":[{\"id\":\"1382\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"1404\"},{\"id\":\"1422\"}],\"title\":{\"id\":\"1368\"},\"toolbar\":{\"id\":\"1393\"},\"width\":990,\"x_range\":{\"id\":\"1370\"},\"x_scale\":{\"id\":\"1374\"},\"y_range\":{\"id\":\"1372\"},\"y_scale\":{\"id\":\"1376\"}},\"id\":\"1367\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1409\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1411\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"1434\"},\"selection_policy\":{\"id\":\"1433\"}},\"id\":\"1418\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1387\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1372\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1374\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1403\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1400\"},\"glyph\":{\"id\":\"1401\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1403\"},\"nonselection_glyph\":{\"id\":\"1402\"},\"view\":{\"id\":\"1405\"}},\"id\":\"1404\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1383\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"Simulated Spin Up\"},\"renderers\":[{\"id\":\"1422\"}]},\"id\":\"1436\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1386\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1412\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1413\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1402\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"1382\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1385\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1392\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1376\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1408\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"1392\"}},\"id\":\"1388\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"Intensity\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1408\"},\"group\":null,\"major_label_policy\":{\"id\":\"1409\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1383\"}},\"id\":\"1382\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1420\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1379\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1433\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis\":{\"id\":\"1378\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1381\",\"type\":\"Grid\"},{\"attributes\":{\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1401\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1414\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1389\",\"type\":\"SaveTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"1414\"},\"selection_policy\":{\"id\":\"1413\"}},\"id\":\"1400\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1419\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1421\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1418\"}},\"id\":\"1423\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"1400\"}},\"id\":\"1405\",\"type\":\"CDSView\"},{\"attributes\":{\"axis_label\":\"2theta\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1411\"},\"group\":null,\"major_label_policy\":{\"id\":\"1412\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1379\"}},\"id\":\"1378\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"value\":\"Experimental Spin Up\"},\"renderers\":[{\"id\":\"1404\"}]},\"id\":\"1417\",\"type\":\"LegendItem\"},{\"attributes\":{\"tools\":[{\"id\":\"1386\"},{\"id\":\"1387\"},{\"id\":\"1388\"},{\"id\":\"1389\"},{\"id\":\"1390\"},{\"id\":\"1391\"}]},\"id\":\"1393\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1390\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1434\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1370\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1418\"},\"glyph\":{\"id\":\"1419\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1421\"},\"nonselection_glyph\":{\"id\":\"1420\"},\"view\":{\"id\":\"1423\"}},\"id\":\"1422\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Ho2Ti2O7 Polarization\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"1368\",\"type\":\"Title\"},{\"attributes\":{\"background_fill_alpha\":0.25,\"background_fill_color\":\"#20262B\",\"border_line_alpha\":0,\"coordinates\":null,\"glyph_width\":15,\"group\":null,\"items\":[{\"id\":\"1417\"},{\"id\":\"1436\"}],\"label_standoff\":8,\"label_text_color\":\"#E0E0E0\",\"label_text_font\":\"Helvetica\",\"label_text_font_size\":\"1.025em\",\"spacing\":8},\"id\":\"1416\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1391\",\"type\":\"HelpTool\"}],\"root_ids\":[\"1367\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n const render_items = [{\"docid\":\"f0647d6e-f841-46d4-9dce-c5d220fa032a\",\"root_ids\":[\"1367\"],\"roots\":{\"1367\":\"6af3018e-1bfe-44f9-a793-152818708009\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1367" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "j2.simulate_experiment('pol_exp', 'up', pol_fn=lambda up, down: up)\n", + "\n", + "p1 = figure(**opts, title='Ho2Ti2O7 Polarization')\n", + "x_data = np.array(ds['pol2_pol_exp_tth'])\n", + "p1.line(x_data, np.array(ds['pol2_pol_exp_I0']), legend='Experimental Spin Up', line_width=2, color=Spectral6[0])\n", + "p1.line(x_data, np.array(ds['sim_pol2_pol2_pol_expup']), legend='Simulated Spin Up', line_width=2, color=Spectral6[-1])\n", + "p1.yaxis.axis_label = 'Intensity'\n", + "p1.legend.location = 'top_right'\n", + "p1.xaxis.axis_label = '2theta'\n", + "show(p1)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "#### Adding a background\n", + "The simulation is missing a background. We can add a background to the simulation and allow the points to vary in the optimization." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 20, + "outputs": [], + "source": [ + "bkg = PointBackground(linked_experiment='pol2')\n", + "bkg.append(BackgroundPoint.from_pars(5.0, 480.0))\n", + "bkg.append(BackgroundPoint.from_pars(10.0, 420.0))\n", + "bkg.append(BackgroundPoint.from_pars(15.0, 360.0))\n", + "bkg.append(BackgroundPoint.from_pars(20.0, 360.0))\n", + "bkg.append(BackgroundPoint.from_pars(25.0, 325.0))\n", + "bkg.append(BackgroundPoint.from_pars(30.0, 325.0))\n", + "bkg.append(BackgroundPoint.from_pars(35.0, 325.0))\n", + "bkg.append(BackgroundPoint.from_pars(40.0, 250.0))\n", + "bkg.append(BackgroundPoint.from_pars(45.0, 275.0))\n", + "bkg.append(BackgroundPoint.from_pars(50.0, 245.0))\n", + "bkg.append(BackgroundPoint.from_pars(55.0, 270.0))\n", + "bkg.append(BackgroundPoint.from_pars(60.0, 215.0))\n", + "bkg.append(BackgroundPoint.from_pars(65.0, 260.0))\n", + "bkg.append(BackgroundPoint.from_pars(70.0, 250.0))\n", + "bkg.append(BackgroundPoint.from_pars(75.0, 230.0))\n", + "bkg.append(BackgroundPoint.from_pars(80.0, 225.0))\n", + "bkg.append(BackgroundPoint.from_pars(85.0, 250.0))\n", + "j2.set_background(bkg)\n", + "\n", + "for point in bkg:\n", + " point.y.fixed = False" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "Perform another simulation to verify that the background is now included in the simulation." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 21, + "outputs": [ + { + "data": { + "text/html": "\n
\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"85545f87-67d3-47a0-a672-635ebc8df78c\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"GridStack1\",\"overrides\":[],\"properties\":[{\"default\":\"warn\",\"kind\":null,\"name\":\"mode\"},{\"default\":null,\"kind\":null,\"name\":\"ncols\"},{\"default\":null,\"kind\":null,\"name\":\"nrows\"},{\"default\":true,\"kind\":null,\"name\":\"allow_resize\"},{\"default\":true,\"kind\":null,\"name\":\"allow_drag\"},{\"default\":[],\"kind\":null,\"name\":\"state\"}]},{\"extends\":null,\"module\":null,\"name\":\"click1\",\"overrides\":[],\"properties\":[{\"default\":\"\",\"kind\":null,\"name\":\"terminal_output\"},{\"default\":\"\",\"kind\":null,\"name\":\"debug_name\"},{\"default\":0,\"kind\":null,\"name\":\"clears\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationAreaBase1\",\"overrides\":[],\"properties\":[{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationArea1\",\"overrides\":[],\"properties\":[{\"default\":[],\"kind\":null,\"name\":\"notifications\"},{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"},{\"default\":[{\"background\":\"#ffc107\",\"icon\":{\"className\":\"fas fa-exclamation-triangle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"warning\"},{\"background\":\"#007bff\",\"icon\":{\"className\":\"fas fa-info-circle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"info\"}],\"kind\":null,\"name\":\"types\"}]},{\"extends\":null,\"module\":null,\"name\":\"Notification\",\"overrides\":[],\"properties\":[{\"default\":null,\"kind\":null,\"name\":\"background\"},{\"default\":3000,\"kind\":null,\"name\":\"duration\"},{\"default\":null,\"kind\":null,\"name\":\"icon\"},{\"default\":\"\",\"kind\":null,\"name\":\"message\"},{\"default\":null,\"kind\":null,\"name\":\"notification_type\"},{\"default\":false,\"kind\":null,\"name\":\"_destroyed\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"1548\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"1551\"},{\"id\":\"1555\"},{\"id\":\"1586\"}],\"height\":300,\"left\":[{\"id\":\"1552\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"1574\"},{\"id\":\"1592\"}],\"title\":{\"id\":\"1538\"},\"toolbar\":{\"id\":\"1563\"},\"width\":990,\"x_range\":{\"id\":\"1540\"},\"x_scale\":{\"id\":\"1544\"},\"y_range\":{\"id\":\"1542\"},\"y_scale\":{\"id\":\"1546\"}},\"id\":\"1537\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"label\":{\"value\":\"Experimental Spin Up\"},\"renderers\":[{\"id\":\"1574\"}]},\"id\":\"1587\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1581\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1542\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1560\",\"type\":\"ResetTool\"},{\"attributes\":{\"label\":{\"value\":\"Simulated Spin Up\"},\"renderers\":[{\"id\":\"1592\"}]},\"id\":\"1606\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1540\",\"type\":\"DataRange1d\"},{\"attributes\":{\"tools\":[{\"id\":\"1556\"},{\"id\":\"1557\"},{\"id\":\"1558\"},{\"id\":\"1559\"},{\"id\":\"1560\"},{\"id\":\"1561\"}]},\"id\":\"1563\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"1548\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1551\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"2theta\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1581\"},\"group\":null,\"major_label_policy\":{\"id\":\"1582\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1549\"}},\"id\":\"1548\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1546\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1549\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"1562\"}},\"id\":\"1558\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1582\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1570\"},\"glyph\":{\"id\":\"1571\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1573\"},\"nonselection_glyph\":{\"id\":\"1572\"},\"view\":{\"id\":\"1575\"}},\"id\":\"1574\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"1584\"},\"selection_policy\":{\"id\":\"1583\"}},\"id\":\"1570\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1588\"},\"glyph\":{\"id\":\"1589\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1591\"},\"nonselection_glyph\":{\"id\":\"1590\"},\"view\":{\"id\":\"1593\"}},\"id\":\"1592\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1544\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1590\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1573\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1578\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1583\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"background_fill_alpha\":0.25,\"background_fill_color\":\"#20262B\",\"border_line_alpha\":0,\"coordinates\":null,\"glyph_width\":15,\"group\":null,\"items\":[{\"id\":\"1587\"},{\"id\":\"1606\"}],\"label_standoff\":8,\"label_text_color\":\"#E0E0E0\",\"label_text_font\":\"Helvetica\",\"label_text_font_size\":\"1.025em\",\"spacing\":8},\"id\":\"1586\",\"type\":\"Legend\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"1604\"},\"selection_policy\":{\"id\":\"1603\"}},\"id\":\"1588\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1557\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"source\":{\"id\":\"1588\"}},\"id\":\"1593\",\"type\":\"CDSView\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1562\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1591\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1559\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1584\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Ho2Ti2O7 Polarization\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"1538\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1603\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1561\",\"type\":\"HelpTool\"},{\"attributes\":{\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1571\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1553\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1589\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1570\"}},\"id\":\"1575\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1579\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis_label\":\"Intensity\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1578\"},\"group\":null,\"major_label_policy\":{\"id\":\"1579\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1553\"}},\"id\":\"1552\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1556\",\"type\":\"PanTool\"},{\"attributes\":{\"axis\":{\"id\":\"1552\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1555\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#3288bd\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1572\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1604\",\"type\":\"Selection\"}],\"root_ids\":[\"1537\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n const render_items = [{\"docid\":\"85545f87-67d3-47a0-a672-635ebc8df78c\",\"root_ids\":[\"1537\"],\"roots\":{\"1537\":\"81026057-b05d-41cf-bf76-59523585adff\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1537" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "j2.simulate_experiment('pol_exp', 'up', pol_fn=lambda up, down: up)\n", + "\n", + "p1 = figure(**opts, title='Ho2Ti2O7 Polarization')\n", + "x_data = np.array(ds['pol2_pol_exp_tth'])\n", + "p1.line(x_data, np.array(ds['pol2_pol_exp_I0']), legend='Experimental Spin Up', line_width=2, color=Spectral6[0])\n", + "p1.line(x_data, np.array(ds['sim_pol2_pol2_pol_expup']), legend='Simulated Spin Up', line_width=2, color=Spectral6[-1])\n", + "p1.yaxis.axis_label = 'Intensity'\n", + "p1.legend.location = 'top_right'\n", + "p1.xaxis.axis_label = '2theta'\n", + "show(p1)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "### Optimization\n", + "\n", + "We can now optimize the model. To do this we need to specify what pattern components to optimize. In this case we want to optimize both the `Spin Up + spin Down` and `Spin Up - spin Down` components. Luckily there are helper functions to do this." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 22, + "outputs": [], + "source": [ + "# Experimental data\n", + "xx = np.array(ds['pol2_pol_exp_tth'])\n", + "ups = np.array(ds['pol2_pol_exp_I0'])\n", + "downs = np.array(ds['pol2_pol_exp_I1'])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 23, + "outputs": [], + "source": [ + "targets = [lambda u, d: u+d , lambda u, d: u-d]\n", + "x_, y_, f = j2.interface().generate_pol_fit_func(xx, ups, downs, targets)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "The optimization can now be performed." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 24, + "outputs": [], + "source": [ + "fit = Fitter(j2, f)\n", + "res = fit.fit(x_, y_)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "It is easier to visualize the results of the optimization." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 25, + "outputs": [ + { + "data": { + "text/html": "\n
\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"27e19014-97ae-4701-874c-dc065ae46874\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"GridStack1\",\"overrides\":[],\"properties\":[{\"default\":\"warn\",\"kind\":null,\"name\":\"mode\"},{\"default\":null,\"kind\":null,\"name\":\"ncols\"},{\"default\":null,\"kind\":null,\"name\":\"nrows\"},{\"default\":true,\"kind\":null,\"name\":\"allow_resize\"},{\"default\":true,\"kind\":null,\"name\":\"allow_drag\"},{\"default\":[],\"kind\":null,\"name\":\"state\"}]},{\"extends\":null,\"module\":null,\"name\":\"click1\",\"overrides\":[],\"properties\":[{\"default\":\"\",\"kind\":null,\"name\":\"terminal_output\"},{\"default\":\"\",\"kind\":null,\"name\":\"debug_name\"},{\"default\":0,\"kind\":null,\"name\":\"clears\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationAreaBase1\",\"overrides\":[],\"properties\":[{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationArea1\",\"overrides\":[],\"properties\":[{\"default\":[],\"kind\":null,\"name\":\"notifications\"},{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"},{\"default\":[{\"background\":\"#ffc107\",\"icon\":{\"className\":\"fas fa-exclamation-triangle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"warning\"},{\"background\":\"#007bff\",\"icon\":{\"className\":\"fas fa-info-circle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"info\"}],\"kind\":null,\"name\":\"types\"}]},{\"extends\":null,\"module\":null,\"name\":\"Notification\",\"overrides\":[],\"properties\":[{\"default\":null,\"kind\":null,\"name\":\"background\"},{\"default\":3000,\"kind\":null,\"name\":\"duration\"},{\"default\":null,\"kind\":null,\"name\":\"icon\"},{\"default\":\"\",\"kind\":null,\"name\":\"message\"},{\"default\":null,\"kind\":null,\"name\":\"notification_type\"},{\"default\":false,\"kind\":null,\"name\":\"_destroyed\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1719\"},{\"id\":\"1789\"}]},\"id\":\"1828\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"1801\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1741\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1742\",\"type\":\"ResetTool\"},{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"1800\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"1803\"},{\"id\":\"1807\"}],\"height\":150,\"left\":[{\"id\":\"1804\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"1826\"}],\"title\":{\"id\":\"1790\"},\"toolbar\":{\"id\":\"1815\"},\"width\":990,\"x_range\":{\"id\":\"1792\"},\"x_scale\":{\"id\":\"1796\"},\"y_range\":{\"id\":\"1794\"},\"y_scale\":{\"id\":\"1798\"}},\"id\":\"1789\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1773\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1724\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"1734\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1737\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1894\",\"type\":\"AllLabels\"},{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"1730\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"1733\"},{\"id\":\"1737\"},{\"id\":\"1768\"}],\"height\":300,\"left\":[{\"id\":\"1734\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"1756\"},{\"id\":\"1774\"}],\"title\":{\"id\":\"1720\"},\"toolbar\":{\"id\":\"1745\"},\"width\":990,\"x_range\":{\"id\":\"1722\"},\"x_scale\":{\"id\":\"1726\"},\"y_range\":{\"id\":\"1724\"},\"y_scale\":{\"id\":\"1728\"}},\"id\":\"1719\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1744\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1900\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1753\",\"type\":\"Scatter\"},{\"attributes\":{\"axis_label\":\"Intensity\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1760\"},\"group\":null,\"major_label_policy\":{\"id\":\"1761\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1735\"}},\"id\":\"1734\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1763\"},\"group\":null,\"major_label_policy\":{\"id\":\"1764\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1731\"}},\"id\":\"1730\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1755\",\"type\":\"Scatter\"},{\"attributes\":{\"overlay\":{\"id\":\"1814\"}},\"id\":\"1810\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Polarization, U + D\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"1720\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"1822\"}},\"id\":\"1827\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1811\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1766\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1726\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1792\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1901\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1771\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1785\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1809\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1761\",\"type\":\"AllLabels\"},{\"attributes\":{\"source\":{\"id\":\"1770\"}},\"id\":\"1775\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1805\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1722\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1763\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1825\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"1738\"},{\"id\":\"1739\"},{\"id\":\"1740\"},{\"id\":\"1741\"},{\"id\":\"1742\"},{\"id\":\"1743\"}]},\"id\":\"1745\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"1804\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1807\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Difference\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"1790\",\"type\":\"Title\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"hetRuB5BkEBcj8L1KMmWQKRwPQrXNpRAmpmZmZnrk0BI4XoUrr6TQAAAAAAAY5ZAHoXrUbhLlUDXo3A9Ci6WQOxRuB6FOppAzMzMzMzxlEBmZmZmZu6OQI/C9ShcepdAj8L1KFwHmkC4HoXrUVWjQPYoXI+CYbRAhetRuF4LvkCZmZmZGXq9QI/C9ShcvbNA9ihcj0KGpEA+CtejcO2cQNejcD2KIKlA4noUrgcws0CQwvUo3Fm1QGZmZmYmW7FAcD0K16PGokCkcD0K19CTQAAAAAAAw5NApHA9CtclkUDNzMzMzIiNQFK4HoXrBZBACtejcD2AkEDNzMzMzBOUQJqZmZmZy41AcD0K16OSj0C4HoXrUeqKQOxRuB6FyZBASOF6FK4FkkAK16NwPZ6RQB6F61G4DItAwvUoXI92kkAUrkfhehmaQOxRuB6FG59AhetRuJ5boECF61G4HqqbQArXo3A9oZJApHA9CtdFjkBcj8L1KBqJQPYoXI/C24tA9ihcj8KBi0AAAAAAAF6RQHsUrkfhi5JAkML1KNz+oECuR+F6FEisQB+F61F4yLBAXI/C9ahfr0AUrkfhehuoQMP1KFwPj6VArkfhepTHoUCuR+F6FB+eQB6F61G4NpVAAAAAAABxkUDNzMzMzD6RQLgehetRfI5ACtejcD2kjEAehetRuMiNQKRwPQrXu45ACtejcD2MkUD2KFyPwvOWQOF6FK7HSKJA7FG4HoVvpkDC9Shcj8+lQAAAAACAS6FAwvUoXI8UlEAK16NwPTCUQJDC9Shcx5ZAkML1KFzroECF61G43jWwQJqZmZnZ7rdAFK5H4bpbukCkcD0KV0W2QDMzMzMzKK1ApHA9ClctoECamZmZmdyWQJDC9ShcUpJAzczMzMwDkUBmZmZmZoiOQD4K16NwxY5AFK5H4Xq4j0Bcj8L1KEKPQFK4HoXrPZNApHA9CtfJmUAehetRuLycQOJ6FK5HOptAmpmZmZkHk0AUrkfhemqWQK5H4XoU65pAAAAAAADCpEAUrkfhejurQML1KFyPZ65A4XoUrscEqkD2KFyPwmyjQJqZmZmZsZlAUrgeheuBkUApXI/C9UKOQPYoXI/ChY1AzczMzMxjkUAUrkfhejiaQK5H4XoUhaNAw/UoXA9tqUDsUbgehcmqQDQzMzMzl6hA4XoUrsebo0DhehSux0+gQAAAAACAjaBAZmZmZmaxo0A+CtejcN6kQClcj8L15KRACtejcD39okDhehSuR7qbQPYoXI/CVZVApHA9CteCkkCamZmZmd+JQD4K16Nwp4xAKVyPwvXAjUAAAAAAAH2QQM3MzMzMZo9A4XoUrkdvkEB6FK5H4SaNQK5H4XoUI5BAj8L1KFyykECPwvUoXJqUQJDC9ShcsZhA4noUrkdsmEDiehSuR5iXQNejcD0KwZNAmpmZmZkskUBI4XoUrl+PQK5H4XoU3odAUrgeheuRikAfhetRuNqPQIbrUbgemZJAmpmZmZnVkkBI4XoUrr+UQHoUrkfhQppArkfhehScnEAUrkfhesucQNajcD0K/5xAcD0K16MwmEBSuB6F6/uUQNejcD0KdJJAKVyPwvXOj0CamZmZmfeLQHoUrkfhOo5A9ihcj8LRjkAzMzMzM5eQQBSuR+F695JA9ihcj8KPlUApXI/C9VqXQD4K16NwN5hAehSuR+GMl0BSuB6F6/yTQOxRuB6FxpJAUrgehesfkUApXI/C9d+QQFK4HoXrTJBAexSuR+Hck0DNzMzMzEmVQHoUrkfhsZpACtejcD2Jn0D2KFyPQmaiQGZmZmZmEaNApHA9Ctefo0CQwvUo3BqiQB+F61G4JqBA1qNwPQpLnEDhehSuR/ObQM3MzMzMuZpAcD0K16Osm0CPwvUoXL6cQAAAAAAAR55ArkfhehTBn0BI4XoUrlOfQKRwPQrXuJ9A7FG4HoXgnEC4HoXrUZuZQAAAAAAAmJZAKVyPwvVqlEBI4XoUrmuUQD0K16NwU5FACtejcD3QkEA0MzMzMx2UQClcj8L10ZZAFK5H4Xo5mkC4HoXrUeKbQB6F61G4lJtAwvUoXI81mkA0MzMzM6GXQI/C9Shcv5VAFK5H4XrwkUDC9Shcj+qRQD4K16Nw4Y9AH4XrUbgSkEDhehSuRyGMQOtRuB6FfY9AkML1KFz/jUBcj8L1KKqOQB6F61G4WotAmpmZmZkLjkCkcD0K1zuNQEjhehSutZFAZmZmZmaOlEBwPQrXo6GWQML1KFyPK5lA9ihcj8I1m0A9CtejcFidQDMzMzMz75xAehSuR+FnnUBSuB6F6wedQClcj8L1NptAZmZmZmbQmUBI4XoUri+aQClcj8L1eZtAZmZmZmZtnEAUrkfheiedQClcj8L1Gp1AFK5H4Xq8nEA0MzMzM/iZQM3MzMzMtZlAzczMzMxNlUD2KFyPwuKSQGZmZmZmeZBAUrgeheu1jUCuR+F6FECOQBSuR+F6/olAzMzMzMwOiUAAAAAAALCKQK5H4XoU0olAhetRuB7/ikA+CtejcKuLQArXo3A9cotAHoXrUbi+iUCkcD0K1wmKQLgehetRfopAkML1KFyPiUA0MzMzM3WKQOJ6FK5HdYpAAAAAAACgikCamZmZmcWMQPYoXI/C74tAPgrXo3BJj0DNzMzMzDKRQK5H4XoUwJVAH4XrUbj4lECQwvUoXCaXQMP1KFyPJZhAUrgehevil0C4HoXrUeCXQHA9CtejW5ZAPgrXo3B+lkBmZmZmZnuWQHA9CtejR5RAHoXrUbiHk0BxPQrXozuTQFK4HoXrs5JAzczMzMwzkkBmZmZmZqeQQGZmZmZmepBAPQrXo3DfjkCE61G4Hk+PQNejcD0KgY9AAAAAAABrkEDNzMzMzGqRQPYoXI/C95JAHoXrUbick0DNzMzMzOyVQFyPwvUosZZAZmZmZma7l0BmZmZmZtSXQFyPwvUosZdAkML1KFy5lUCkcD0K15uUQClcj8L14ZNAZmZmZmb8k0ApXI/C9XCTQAAAAAAAuZBAFK5H4XpPkUDNzMzMzGaNQMzMzMzMJotAZmZmZmaKiUA0MzMzM7GKQLgehetROopAPgrXo3C3iUC4HoXrUXqIQAAAAAAA1ohAehSuR+EcjUCamZmZmTeMQOJ6FK5HU49AMzMzMzOLkUDhehSuR02QQGZmZmZmYJJA7FG4HoV9lUApXI/C9eSWQFyPwvUoP5lAwvUoXI+AmUD2KFyPwm2cQGZmZmZm5ZtA7FG4HoVLnUBcj8L1KFadQM3MzMzMzpxAzMzMzMwkm0ApXI/C9WaZQGZmZmZmZZhASOF6FK6vlkA+CtejcIKWQLgehetR8pRA9ihcj8IdlEAehetRuJCRQFK4HoXrLJBArkfhehQRkUCkcD0K182NQJDC9Shc3pBAexSuR+FekEB7FK5H4fqQQFyPwvUoI5FAcT0K16NFkkAK16NwPZ+RQArXo3A91JFApHA9CtfokUA+CtejcJCTQM3MzMzMOZNA7FG4HoWFkkAehetRuKeSQML1KFyP45FAj8L1KFxqkkAUrkfheg+TQKRwPQrXQZFAkML1KFxOkEBSuB6F60uQQGZmZmZmr5FASOF6FK6MkkCuR+F6FE2SQBSuR+F6lJJAUrgehetBkkDXo3A9CgeRQK5H4XoUN5FAXI/C9SiRkkCF61G4HoqTQArXo3A9b5NAkML1KFyPk0BI4XoUruOSQK5H4XoUPZNAuB6F61EKkkAUrkfhelyTQIbrUbgepZRAFK5H4XoSlUCQwvUoXDqTQClcj8L1eZRA16NwPQqhlEBmZmZmZnGUQEjhehSuVZRAcD0K16PrkkC4HoXrUVqRQClcj8L1z5BAuB6F61FmkUBI4XoUrlyQQKRwPQrXWJBAzczMzMy0kUCPwvUoXG+QQHsUrkfhfJFAcD0K16NBkUCkcD0K17uQQOxRuB6FI5FAcD0K16NNkkCamZmZmbKTQArXo3A985JAwvUoXI+RkkD2KFyPwmqUQIXrUbgen5NAmpmZmZmPk0C4HoXrUQqVQHA9CtejkZNA9ihcj8Kuk0A+CtejcOORQML1KFyPrpJAcD0K16N0kkAUrkfhehqTQClcj8L1MJJAUrgehesEkUA=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"1766\"},\"selection_policy\":{\"id\":\"1765\"}},\"id\":\"1752\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"overlay\":{\"id\":\"1744\"}},\"id\":\"1740\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1798\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1890\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1754\",\"type\":\"Scatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1752\"},\"glyph\":{\"id\":\"1753\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1755\"},\"nonselection_glyph\":{\"id\":\"1754\"},\"view\":{\"id\":\"1757\"}},\"id\":\"1756\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1770\"},\"glyph\":{\"id\":\"1771\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1773\"},\"nonselection_glyph\":{\"id\":\"1772\"},\"view\":{\"id\":\"1775\"}},\"id\":\"1774\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"background_fill_alpha\":0.25,\"background_fill_color\":\"#20262B\",\"border_line_alpha\":0,\"coordinates\":null,\"glyph_width\":15,\"group\":null,\"items\":[{\"id\":\"1769\"},{\"id\":\"1788\"}],\"label_standoff\":8,\"label_text_color\":\"#E0E0E0\",\"label_text_font\":\"Helvetica\",\"label_text_font_size\":\"1.025em\",\"spacing\":8},\"id\":\"1768\",\"type\":\"Legend\"},{\"attributes\":{\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1823\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1772\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1739\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"U + D\"},\"renderers\":[{\"id\":\"1756\"}]},\"id\":\"1769\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1731\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1730\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1733\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1814\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1824\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1743\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1822\"},\"glyph\":{\"id\":\"1823\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1825\"},\"nonselection_glyph\":{\"id\":\"1824\"},\"view\":{\"id\":\"1827\"}},\"id\":\"1826\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1760\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"Sim\"},\"renderers\":[{\"id\":\"1774\"}]},\"id\":\"1788\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1890\"},\"group\":null,\"major_label_policy\":{\"id\":\"1891\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1805\"}},\"id\":\"1804\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1808\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1812\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1738\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1728\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1786\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1893\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1796\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"1786\"},\"selection_policy\":{\"id\":\"1785\"}},\"id\":\"1770\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1735\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"1901\"},\"selection_policy\":{\"id\":\"1900\"}},\"id\":\"1822\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1813\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1794\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1765\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"tools\":[{\"id\":\"1808\"},{\"id\":\"1809\"},{\"id\":\"1810\"},{\"id\":\"1811\"},{\"id\":\"1812\"},{\"id\":\"1813\"}]},\"id\":\"1815\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"1800\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"1803\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1891\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1764\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis_label\":\"2theta\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"1893\"},\"group\":null,\"major_label_policy\":{\"id\":\"1894\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"1801\"}},\"id\":\"1800\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"1752\"}},\"id\":\"1757\",\"type\":\"CDSView\"}],\"root_ids\":[\"1828\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n const render_items = [{\"docid\":\"27e19014-97ae-4701-874c-dc065ae46874\",\"root_ids\":[\"1828\"],\"roots\":{\"1828\":\"ab8713b1-1071-40bc-a2e4-b6fa65ec3758\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1828" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "p1 = figure(**opts, title='Polarization, U + D')\n", + "p1.scatter(x_[0::2], res.y_obs[0::2], legend='U + D', color=Spectral6[0])\n", + "p1.line(x_[0::2], res.y_calc[0::2], legend='Sim', line_width=2, color=Spectral6[-1])\n", + "p1.yaxis.axis_label = 'Intensity'\n", + "p1.legend.location = 'top_right'\n", + "p11 = figure(width=FIGURE_WIDTH, height=int(FIGURE_HEIGHT/2), min_border=0, title='Difference')\n", + "p11.line(x_[0::2], res.y_obs[0::2] - res.y_calc[0::2], line_width=2, color=Spectral6[1])\n", + "p11.xaxis.axis_label = '2theta'\n", + "show(column(p1, p11))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 26, + "outputs": [ + { + "data": { + "text/html": "\n
\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"c6af092f-7bfa-4a68-82a8-7a2d4c649a30\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"GridStack1\",\"overrides\":[],\"properties\":[{\"default\":\"warn\",\"kind\":null,\"name\":\"mode\"},{\"default\":null,\"kind\":null,\"name\":\"ncols\"},{\"default\":null,\"kind\":null,\"name\":\"nrows\"},{\"default\":true,\"kind\":null,\"name\":\"allow_resize\"},{\"default\":true,\"kind\":null,\"name\":\"allow_drag\"},{\"default\":[],\"kind\":null,\"name\":\"state\"}]},{\"extends\":null,\"module\":null,\"name\":\"click1\",\"overrides\":[],\"properties\":[{\"default\":\"\",\"kind\":null,\"name\":\"terminal_output\"},{\"default\":\"\",\"kind\":null,\"name\":\"debug_name\"},{\"default\":0,\"kind\":null,\"name\":\"clears\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationAreaBase1\",\"overrides\":[],\"properties\":[{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationArea1\",\"overrides\":[],\"properties\":[{\"default\":[],\"kind\":null,\"name\":\"notifications\"},{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"},{\"default\":[{\"background\":\"#ffc107\",\"icon\":{\"className\":\"fas fa-exclamation-triangle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"warning\"},{\"background\":\"#007bff\",\"icon\":{\"className\":\"fas fa-info-circle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"info\"}],\"kind\":null,\"name\":\"types\"}]},{\"extends\":null,\"module\":null,\"name\":\"Notification\",\"overrides\":[],\"properties\":[{\"default\":null,\"kind\":null,\"name\":\"background\"},{\"default\":3000,\"kind\":null,\"name\":\"duration\"},{\"default\":null,\"kind\":null,\"name\":\"icon\"},{\"default\":\"\",\"kind\":null,\"name\":\"message\"},{\"default\":null,\"kind\":null,\"name\":\"notification_type\"},{\"default\":false,\"kind\":null,\"name\":\"_destroyed\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"2013\"},{\"id\":\"2083\"}]},\"id\":\"2122\",\"type\":\"Column\"},{\"attributes\":{\"source\":{\"id\":\"2116\"}},\"id\":\"2121\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Difference\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"2084\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2029\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2105\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2065\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2207\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2079\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2210\",\"type\":\"AllLabels\"},{\"attributes\":{\"source\":{\"id\":\"2064\"}},\"id\":\"2069\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2016\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"2108\"}},\"id\":\"2104\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2018\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2064\"},\"glyph\":{\"id\":\"2065\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2067\"},\"nonselection_glyph\":{\"id\":\"2066\"},\"view\":{\"id\":\"2069\"}},\"id\":\"2068\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"background_fill_alpha\":0.25,\"background_fill_color\":\"#20262B\",\"border_line_alpha\":0,\"coordinates\":null,\"glyph_width\":15,\"group\":null,\"items\":[{\"id\":\"2063\"},{\"id\":\"2082\"}],\"label_standoff\":8,\"label_text_color\":\"#E0E0E0\",\"label_text_font\":\"Helvetica\",\"label_text_font_size\":\"1.025em\",\"spacing\":8},\"id\":\"2062\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"2025\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2206\"},\"group\":null,\"major_label_policy\":{\"id\":\"2207\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2099\"}},\"id\":\"2098\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2209\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2022\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Polarization, U - D\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"2014\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2057\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"2094\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"2097\"},{\"id\":\"2101\"}],\"height\":150,\"left\":[{\"id\":\"2098\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"2120\"}],\"title\":{\"id\":\"2084\"},\"toolbar\":{\"id\":\"2109\"},\"width\":990,\"x_range\":{\"id\":\"2086\"},\"x_scale\":{\"id\":\"2090\"},\"y_range\":{\"id\":\"2088\"},\"y_scale\":{\"id\":\"2092\"}},\"id\":\"2083\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis\":{\"id\":\"2028\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2031\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2099\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2032\",\"type\":\"PanTool\"},{\"attributes\":{\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2057\"},\"group\":null,\"major_label_policy\":{\"id\":\"2058\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2025\"}},\"id\":\"2024\",\"type\":\"LinearAxis\"},{\"attributes\":{\"tools\":[{\"id\":\"2032\"},{\"id\":\"2033\"},{\"id\":\"2034\"},{\"id\":\"2035\"},{\"id\":\"2036\"},{\"id\":\"2037\"}]},\"id\":\"2039\",\"type\":\"Toolbar\"},{\"attributes\":{\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2047\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"2090\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2080\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2088\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2035\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2037\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2059\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2054\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2048\",\"type\":\"Scatter\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2067\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2216\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2049\",\"type\":\"Scatter\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"ZmZmZmZmEkAzMzMzMzMTQAAAAAAAABRAzczMzMzMFECamZmZmZkVQGZmZmZmZhZAMzMzMzMzF0AAAAAAAAAYQM3MzMzMzBhAmpmZmZmZGUBmZmZmZmYaQDMzMzMzMxtAAAAAAAAAHEDNzMzMzMwcQJqZmZmZmR1AZmZmZmZmHkAzMzMzMzMfQAAAAAAAACBAZmZmZmZmIEDNzMzMzMwgQDMzMzMzMyFAmpmZmZmZIUAAAAAAAAAiQGZmZmZmZiJAzczMzMzMIkAzMzMzMzMjQJqZmZmZmSNAAAAAAAAAJEBmZmZmZmYkQM3MzMzMzCRAMzMzMzMzJUCamZmZmZklQAAAAAAAACZAZmZmZmZmJkDNzMzMzMwmQDMzMzMzMydAmpmZmZmZJ0AAAAAAAAAoQGZmZmZmZihAzczMzMzMKEAzMzMzMzMpQJqZmZmZmSlAAAAAAAAAKkBmZmZmZmYqQM3MzMzMzCpAMzMzMzMzK0CamZmZmZkrQAAAAAAAACxAZmZmZmZmLEDNzMzMzMwsQDMzMzMzMy1AmpmZmZmZLUAAAAAAAAAuQGZmZmZmZi5AzczMzMzMLkAzMzMzMzMvQJqZmZmZmS9AAAAAAAAAMEAzMzMzMzMwQGZmZmZmZjBAmpmZmZmZMEDNzMzMzMwwQAAAAAAAADFAMzMzMzMzMUBmZmZmZmYxQJqZmZmZmTFAzczMzMzMMUAAAAAAAAAyQDMzMzMzMzJAZmZmZmZmMkCamZmZmZkyQM3MzMzMzDJAAAAAAAAAM0AzMzMzMzMzQGZmZmZmZjNAmpmZmZmZM0DNzMzMzMwzQAAAAAAAADRAMzMzMzMzNEBmZmZmZmY0QJqZmZmZmTRAzczMzMzMNEAAAAAAAAA1QDMzMzMzMzVAZmZmZmZmNUCamZmZmZk1QM3MzMzMzDVAAAAAAAAANkAzMzMzMzM2QGZmZmZmZjZAmpmZmZmZNkDNzMzMzMw2QAAAAAAAADdAMzMzMzMzN0BmZmZmZmY3QJqZmZmZmTdAzczMzMzMN0AAAAAAAAA4QDMzMzMzMzhAZmZmZmZmOECamZmZmZk4QM3MzMzMzDhAAAAAAAAAOUAzMzMzMzM5QGZmZmZmZjlAmpmZmZmZOUDNzMzMzMw5QAAAAAAAADpAMzMzMzMzOkBmZmZmZmY6QJqZmZmZmTpAzczMzMzMOkAAAAAAAAA7QDMzMzMzMztAZmZmZmZmO0CamZmZmZk7QM3MzMzMzDtAAAAAAAAAPEAzMzMzMzM8QGZmZmZmZjxAmpmZmZmZPEDNzMzMzMw8QAAAAAAAAD1AMzMzMzMzPUBmZmZmZmY9QJqZmZmZmT1AzczMzMzMPUAAAAAAAAA+QDMzMzMzMz5AZmZmZmZmPkCamZmZmZk+QM3MzMzMzD5AAAAAAAAAP0AzMzMzMzM/QGZmZmZmZj9AmpmZmZmZP0DNzMzMzMw/QAAAAAAAAEBAmpmZmZkZQEAzMzMzMzNAQM3MzMzMTEBAZmZmZmZmQEAAAAAAAIBAQJqZmZmZmUBAMzMzMzOzQEDNzMzMzMxAQGZmZmZm5kBAAAAAAAAAQUCamZmZmRlBQDMzMzMzM0FAzczMzMxMQUBmZmZmZmZBQAAAAAAAgEFAmpmZmZmZQUAzMzMzM7NBQM3MzMzMzEFAZmZmZmbmQUAAAAAAAABCQJqZmZmZGUJAMzMzMzMzQkDNzMzMzExCQGZmZmZmZkJAAAAAAACAQkCamZmZmZlCQDMzMzMzs0JAzczMzMzMQkBmZmZmZuZCQAAAAAAAAENAmpmZmZkZQ0AzMzMzMzNDQM3MzMzMTENAZmZmZmZmQ0AAAAAAAIBDQJqZmZmZmUNAMzMzMzOzQ0DNzMzMzMxDQGZmZmZm5kNAAAAAAAAARECamZmZmRlEQDMzMzMzM0RAzczMzMxMREBmZmZmZmZEQAAAAAAAgERAmpmZmZmZREAzMzMzM7NEQM3MzMzMzERAZmZmZmbmREAAAAAAAABFQJqZmZmZGUVAMzMzMzMzRUDNzMzMzExFQGZmZmZmZkVAAAAAAACARUCamZmZmZlFQDMzMzMzs0VAzczMzMzMRUBmZmZmZuZFQAAAAAAAAEZAmpmZmZkZRkAzMzMzMzNGQM3MzMzMTEZAZmZmZmZmRkAAAAAAAIBGQJqZmZmZmUZAMzMzMzOzRkDNzMzMzMxGQGZmZmZm5kZAAAAAAAAAR0CamZmZmRlHQDMzMzMzM0dAzczMzMxMR0BmZmZmZmZHQAAAAAAAgEdAmpmZmZmZR0AzMzMzM7NHQM3MzMzMzEdAZmZmZmbmR0AAAAAAAABIQJqZmZmZGUhAMzMzMzMzSEDNzMzMzExIQGZmZmZmZkhAAAAAAACASECamZmZmZlIQDMzMzMzs0hAzczMzMzMSEBmZmZmZuZIQAAAAAAAAElAmpmZmZkZSUAzMzMzMzNJQM3MzMzMTElAZmZmZmZmSUAAAAAAAIBJQJqZmZmZmUlAMzMzMzOzSUDNzMzMzMxJQGZmZmZm5klAAAAAAAAASkCamZmZmRlKQDMzMzMzM0pAzczMzMxMSkBmZmZmZmZKQAAAAAAAgEpAmpmZmZmZSkAzMzMzM7NKQM3MzMzMzEpAZmZmZmbmSkAAAAAAAABLQJqZmZmZGUtAMzMzMzMzS0DNzMzMzExLQGZmZmZmZktAAAAAAACAS0CamZmZmZlLQDMzMzMzs0tAzczMzMzMS0BmZmZmZuZLQAAAAAAAAExAmpmZmZkZTEAzMzMzMzNMQM3MzMzMTExAZmZmZmZmTEAAAAAAAIBMQJqZmZmZmUxAMzMzMzOzTEDNzMzMzMxMQGZmZmZm5kxAAAAAAAAATUCamZmZmRlNQDMzMzMzM01AzczMzMxMTUBmZmZmZmZNQAAAAAAAgE1AmpmZmZmZTUAzMzMzM7NNQM3MzMzMzE1AZmZmZmbmTUAAAAAAAABOQJqZmZmZGU5AMzMzMzMzTkDNzMzMzExOQGZmZmZmZk5AAAAAAACATkCamZmZmZlOQDMzMzMzs05AzczMzMzMTkBmZmZmZuZOQAAAAAAAAE9AmpmZmZkZT0AzMzMzMzNPQM3MzMzMTE9AZmZmZmZmT0AAAAAAAIBPQJqZmZmZmU9AMzMzMzOzT0DNzMzMzMxPQGZmZmZm5k9AAAAAAAAAUEDNzMzMzAxQQJqZmZmZGVBAZmZmZmYmUEAzMzMzMzNQQAAAAAAAQFBAzczMzMxMUECamZmZmVlQQGZmZmZmZlBAMzMzMzNzUEAAAAAAAIBQQM3MzMzMjFBAmpmZmZmZUEBmZmZmZqZQQDMzMzMzs1BAAAAAAADAUEDNzMzMzMxQQJqZmZmZ2VBAZmZmZmbmUEAzMzMzM/NQQAAAAAAAAFFAzczMzMwMUUCamZmZmRlRQGZmZmZmJlFAMzMzMzMzUUAAAAAAAEBRQM3MzMzMTFFAmpmZmZlZUUBmZmZmZmZRQDMzMzMzc1FAAAAAAACAUUDNzMzMzIxRQJqZmZmZmVFAZmZmZmamUUAzMzMzM7NRQAAAAAAAwFFAzczMzMzMUUCamZmZmdlRQGZmZmZm5lFAMzMzMzPzUUAAAAAAAABSQM3MzMzMDFJAmpmZmZkZUkBmZmZmZiZSQDMzMzMzM1JAAAAAAABAUkDNzMzMzExSQJqZmZmZWVJAZmZmZmZmUkAzMzMzM3NSQAAAAAAAgFJAzczMzMyMUkCamZmZmZlSQGZmZmZmplJAMzMzMzOzUkAAAAAAAMBSQM3MzMzMzFJAmpmZmZnZUkBmZmZmZuZSQDMzMzMz81JAAAAAAAAAU0DNzMzMzAxTQJqZmZmZGVNAZmZmZmYmU0AzMzMzMzNTQAAAAAAAQFNAzczMzMxMU0CamZmZmVlTQGZmZmZmZlNAMzMzMzNzU0AAAAAAAIBTQM3MzMzMjFNAmpmZmZmZU0BmZmZmZqZTQDMzMzMzs1NAAAAAAADAU0DNzMzMzMxTQJqZmZmZ2VNAZmZmZmbmU0AzMzMzM/NTQAAAAAAAAFRAzczMzMwMVECamZmZmRlUQGZmZmZmJlRAMzMzMzMzVEAAAAAAAEBUQM3MzMzMTFRAmpmZmZlZVEBmZmZmZmZUQDMzMzMzc1RAAAAAAACAVEA=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"2080\"},\"selection_policy\":{\"id\":\"2079\"}},\"id\":\"2064\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"2094\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2097\",\"type\":\"Grid\"},{\"attributes\":{\"tools\":[{\"id\":\"2102\"},{\"id\":\"2103\"},{\"id\":\"2104\"},{\"id\":\"2105\"},{\"id\":\"2106\"},{\"id\":\"2107\"}]},\"id\":\"2109\",\"type\":\"Toolbar\"},{\"attributes\":{\"label\":{\"value\":\"Sim\"},\"renderers\":[{\"id\":\"2068\"}]},\"id\":\"2082\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2092\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2102\",\"type\":\"PanTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2116\"},\"glyph\":{\"id\":\"2117\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2119\"},\"nonselection_glyph\":{\"id\":\"2118\"},\"view\":{\"id\":\"2121\"}},\"id\":\"2120\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"2046\"}},\"id\":\"2051\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2036\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2086\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"2060\"},\"selection_policy\":{\"id\":\"2059\"}},\"id\":\"2046\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2103\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2060\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2055\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2107\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis\":{\"id\":\"2024\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2027\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2206\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2038\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2118\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"ukp+y3y0aUAP6IMUtndIwF6pZM3MxWBAYvm/nwD0UkAC1vPfSlxXQKUaKKUl6ylAy4vLZep+RkAAubTul/lYQByT8m+FR1DA+82z/F8tYMBWhtU/QT5KQL9oT2yA/m9AkLIlc0bwMcAQKW70hDVTwOx11l5fOHPAIFET//14bkAA0GTib5UTQEAc0bjNH1RAwGG6o0ukOUA4E4Q1PqhZwPBXvLWKY1RAaIiFDERgZMDg5JMkiq5jQCB0xjUrLFdAWLJgkfDjVEB4K+mRkBpTQCAwP7xaEVxAZH9AZoHraEA4QLT4c1FHQOnq9hAYw1FABvrWhyWVZkAC+XD7gYQ3wC53t3+nBkLAx+f3DjC6YMATOvizTL1HQBBbDGz2hew/lrHeb4IkG8CsGDoLx81ewOjiuops4FbAeDTx4PH3QcCAzAiEJiI0wLBewbRUK1lAgGpE/tiMRUCAA1HwPHBbQNBbnu5zAkZAUjI28S4YREAyiaTkTkocQP+4mNuMASHA5Qp4DVqPVsC4YjG2E0g3QAaJ70IldVhA/CSLqytxUEDQLHOcYM9FQKBJAcp2hlNAyBynsovTaUCQon0LzzZQQOCSwgozuj1AwL0SUg6pSsBAR0xTysUqQGjLGwEmxzFASGiCOYPsUkD1lqZTpFpYwLLGbVwnLEhA+BRTt08PT0AnhAcY0sJIwMTfSrwpLEtAOnb//44GY0DIWrq+aj1FQLCsu9pu+UlAwIcUYrP2N8DIEGb8ewxgwICzfFb1K17ANBSz5LibW8AcLFSvmIQ7wHh9y+DCAyjAmIf2JSF1QcCALTAGDMVXwDBSGk09rGXAoAFPf0YEb8DgE20N2HtCQCgoLFHK/WBApLe7ktMGXkCA1xS1ypcJQGMSFdFH7VhA9Vm1B8JSRcBxcC+erGVTQEbv4UloFCvAQNJaD+ukEMDAIRjxCNQzQDAqoI25QUDAUIG8F+FWQECgn7cwyEJSQEAAxzTXiyRAWgcYJUz3V0AgE7Q1mHsrQOAsOXzHBFvAaNPQG2KwVUDwkdjYljVMQJD1CVEvhkhAgGH1V2NwYUDe5O/ndFVkQGx0aX48ml9Aszg6PLkMU0C6n8F01ZoswEhSEPykaSJAcBJwqLYnTEBgBIcW9ltXQAASdgOt2VtAMMB76wV7V0AAGuzuWCcdQFDYqlYb/VNAbE75i6koYUDS16/8T9dhQL40r2ZpZ2BAMBUbwxaQSEBQB4HIMmhDQKD/1mKOuFNAqNQerEReVkDQzaNgCfNgQEgF4E6vdFZAbvJ7afUzS0AIllRZJrNRQMQlJC8bJzJAUuheECO6X0D1uY12NNpRQA3c/E96Rl1AJFe3uGCfRkB88VlDeDpOQLTbFR2wjVdAfujcNvPqUkD47pWPDyRaQJyNgFI9OmBAEhCFT5kGYkAA68dcwm9MQIjNHMD8R1FAJom4F0WYVUAAX9knB4IqQG98ZbfJcFRAgHYEAM4x4b8bXh3/I8tUQLmbMIkZM1dAaLx/OSSQNkDgRsj6RdVSQLy2h1zPxFZAgNEijBDcIECI74e7qV5SQIwm3wDSplVAGFGE/MIFQkD6R/a6XI5fQLRyPO46QElAAEKfV/X8CUA86e55IfMzQEgCbopeL0NAYGSpDePVLUDg9+p5ETw4QFgPdCTguEpAKGUHNx2nQkCAQHGZEVMSwABeMzl9Aew/vNA4jUDTUEBYFMdifw9KQKSNkV666UBAvi4gqOD8U0BYRDfs++RRQN7hr6Smd0tAIPY9rppwVUCoGywokuJMQMxbVLxsIlFAKGczQ4uEV0BkTLJ7XHFXQFgfhjiJ6lBAiLUQJPQ+UUBgneG1MpBWQJDzL+skikxAcLaO/mo7VkBA0ZLsdBYUQIAbN5KclUlAKC1ma+FfQkCYz2mze+1LQLiDAnaizFlATMFuTRYHYECUklV37EBQQPDid/GJVktAGHyWDzrASEDo9bmwCRBFQOyXWn1+kldACAmLpg20RkDYV6QnUtRHQJy4k2p+HURA+DKFv1DlQUDIvGJcMhYwQGy8mXtr+lFAoKcAIEjATUAg9Ttbwfk4QFiqG9HiKk9AWJbxDrKPRUAEXcgbBAVTQIDX73yEzx9AsKytkV4YNEBoo/3L4wczQGgKKtYob0VA6DFIMQrzQ0CUpN5if0hHQCC9IhWCQ0xAINS3U+WQUUBEohbGD/9TQHc4ndXLM1NA/F5Tgn+hT0As42U8yh1RQHiCK4zfM1xABtBIFue5WUBsLuWvuHpXQJxVTeSI02JAGOXVN6CnV0AgNhVNrsVRQHgAU+SjalpA+D+aHnL7QED8A5doAiBWQAAQrmaagbu/COZv9O8lRUD8hOcLCRFSQKSqf9VV+ldA5A0iTxDNVUCAxboKCzFaQGzWgCFG8F5ABDjUMsSYWEB8kQwW7EJXQOx9JdSvC1JAPBGTXDUPU0DQaT+BuXdSQKgxI8Kb1lFAzr+Pkh3CXkDKwfnnbspDQBf49YQaulNAJP3VDp/2QUCw5Dp3fEZeQHRjszNUjEhAVlSrAM52SkBwVbwdaw41QEAGNsEo/CdAjLvha5ZUPkBC022+ZZ1WQD7IzufHvkdAqBqxJzXIQEAiYh8rgpJEQPIBRE/Dy0lADChU95EZU0AmyfL6HE5RQLw553xTKVlAyJIVRn/xS0Dwq1kxWGVcQKINUCP4lVNAbmWlzNnUUEDQjTOeq9lVQHQ+s7lUIlhAsCFkdFKGOEBAjh7uEM0aQLBv+zCx40FAAKtwVVgvLEAIaCOlC2pMQGDQB/XZZzhAQL8DG4T2R0CwBWpmwQpPQHxPiE3tEVJAoIV0bqmUUEAIbGuDz/hIQDCtmI4XXiNAdCm0GQxZWkBuqs57y+tXQCpK75ErKlBAYFr/jaJ3UkDAg8VKHU1UQNT80sIyLFFAQB4bPG+FU0Bw+LPHSL5UQNB5AIe3j1NAeNqmuMuvQ0AQqzkM3/NCQHAHB01OiVFAgMNMeM9YPUAgd9oTK581QOCA+O3ZnDFAYA3fkj+lPECQR319zI03QEJfCJ0UFVNA7OJjcQKzVkCsngWfTTBTQGziqL7bNFhAmFrmOQkgP0BGyS5BBdNCQCTJfdNYljNAkGUrzllLTUALS23Kc49UQCyfdauMTUNAjNk47n38RkAQugjKSeM3QOgWVtfe40NAcqQZUKjGU0DA4QQI2oVZQLrrybaXclFA9A33X0ZQW0CQ1IH2u0tfQFgdyoUEcF9AYOE8WuxlXEDwyE8Rn0paQCwAyVbxDllAhKRszt3jU0C2HAtW6UhgQASt0MII4FVAGErJrb3cSkCILXL/72pSQLDtZB7VWE1AWJ6XwWorQ0AooAgTT6hdQDAWisOppEpAUMspbwUySUDQ9oBKhuVJQEax0WKDNlVAqKbdH5/4VEDYRroEoJpBQBD1RnxIgChAcIH+R+yhPEAQZUMcRlVLQJ4PrG4wB1FAYB22UqMVKEBS8ulrcfRXQLSw9b7QKkdAYLEC2o6iF8AuCEc0Q2NRQN7Yyv+Tj1FAAJwAxLEnKUBuVYJ6cBhbQIQwZUbwTU1AYBFd9BgIVED4ZeOMBQRKQPCdMq/O2FJAtFjKzvmgTUDyZyNZejNSQBAB8biLxExAGhtmM/g4WUBgqhr6DSY9QIqDQXSSDlBAQPEsshP7BUCAXxH7J9MaQMCPsbxk5xhAMNt0/m4VO0DIivMTrRVBQAjKYkcxxUBA0EzIyTC7PkBQPCrYjH89QIxN+87VqVJAAAMgss59PEDgrULzkTRFQHT4cA6oR1lAGAgThIZjQ0BAt0hUZIQ5QEA/sVY4rDtADOEThbTWVUDgzjRxap9GQAC0sShJ4PI/UCcceXo6WEA8RorP5m1bQADxqc8JswzAQJP2v7v3GEBc4gmFALJeQD+4WVdfu2FAXtcwFbOnWUCWW4CxDY9cQLhcikJnu0pARAxc4j4HWEDUug5SgI9NQECDxNDjMERAGL2I/G8WTkC4Tvnmq+9EQLTtGYeZXFlAEO0HSi59NEDoqJ7Z/jZMQMinlEWrnlpAWI4aH8ZDUEAIEynAk1dLQMDgcG0zqT7AED5VGlUGPkDI6UZXXjlPQBDQM/av809AAKYo9HFsJ0CsMc9lxAhfQKDbnI8NYDJArC4f+wQDUEA=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"2217\"},\"selection_policy\":{\"id\":\"2216\"}},\"id\":\"2116\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"2098\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2101\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2020\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"2theta\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2209\"},\"group\":null,\"major_label_policy\":{\"id\":\"2210\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2095\"}},\"id\":\"2094\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"value\":\"U - D\"},\"renderers\":[{\"id\":\"2050\"}]},\"id\":\"2063\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2066\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2108\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2033\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2217\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2119\",\"type\":\"Line\"},{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"2024\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"2027\"},{\"id\":\"2031\"},{\"id\":\"2062\"}],\"height\":300,\"left\":[{\"id\":\"2028\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"2050\"},{\"id\":\"2068\"}],\"title\":{\"id\":\"2014\"},\"toolbar\":{\"id\":\"2039\"},\"width\":990,\"x_range\":{\"id\":\"2016\"},\"x_scale\":{\"id\":\"2020\"},\"y_range\":{\"id\":\"2018\"},\"y_scale\":{\"id\":\"2022\"}},\"id\":\"2013\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"2058\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2117\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2095\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2106\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2046\"},\"glyph\":{\"id\":\"2047\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2049\"},\"nonselection_glyph\":{\"id\":\"2048\"},\"view\":{\"id\":\"2051\"}},\"id\":\"2050\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"Intensity\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2054\"},\"group\":null,\"major_label_policy\":{\"id\":\"2055\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2029\"}},\"id\":\"2028\",\"type\":\"LinearAxis\"},{\"attributes\":{\"overlay\":{\"id\":\"2038\"}},\"id\":\"2034\",\"type\":\"BoxZoomTool\"}],\"root_ids\":[\"2122\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n const render_items = [{\"docid\":\"c6af092f-7bfa-4a68-82a8-7a2d4c649a30\",\"root_ids\":[\"2122\"],\"roots\":{\"2122\":\"2d25047c-a899-4a8c-8e3a-e061207e04cd\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "2122" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "p2 = figure(**opts, title='Polarization, U - D')\n", + "p2.scatter(x_[1::2], res.y_obs[1::2], legend='U - D', color=Spectral6[0])\n", + "p2.line(x_[1::2], res.y_calc[1::2], legend='Sim', line_width=2, color=Spectral6[-1])\n", + "p2.yaxis.axis_label = 'Intensity'\n", + "p2.legend.location = 'top_right'\n", + "p22 = figure(width=FIGURE_WIDTH, height=int(FIGURE_HEIGHT/2), min_border=0, title='Difference')\n", + "p22.line(x_[1::2], res.y_obs[1::2] - res.y_calc[1::2], line_width=2, color=Spectral6[1])\n", + "p22.xaxis.axis_label = '2theta'\n", + "show(column(p2, p22))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "The optimization results are shown below." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 27, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "parameters = j2.get_fit_parameters()\n", + "for parameter in parameters:\n", + " print(parameter)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "#### Varying Magnetic Susceptibility" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "It looks like the magnetic susceptibility also needs to be optimized. We need to apply some constraints for optimization." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 28, + "outputs": [], + "source": [ + "from easyCore.Fitting.Constraints import ObjConstraint\n", + "c1 = ObjConstraint(j2.phases[0].atoms[0].msp.chi_22, '', j2.phases[0].atoms[0].msp.chi_11)\n", + "c2 = ObjConstraint(j2.phases[0].atoms[0].msp.chi_33, '', j2.phases[0].atoms[0].msp.chi_11)\n", + "c3 = ObjConstraint(j2.phases[0].atoms[0].msp.chi_13, '', j2.phases[0].atoms[0].msp.chi_12)\n", + "c4 = ObjConstraint(j2.phases[0].atoms[0].msp.chi_23, '', j2.phases[0].atoms[0].msp.chi_12)\n", + "\n", + "j2.phases[0].atoms[0].msp.chi_11.user_constraints['chi_22'] = c1\n", + "j2.phases[0].atoms[0].msp.chi_11.user_constraints['chi_33'] = c2\n", + "j2.phases[0].atoms[0].msp.chi_11.fixed = False\n", + "j2.phases[0].atoms[0].msp.chi_12.user_constraints['chi_13'] = c3\n", + "j2.phases[0].atoms[0].msp.chi_12.user_constraints['chi_23'] = c4\n", + "j2.phases[0].atoms[0].msp.chi_12.fixed = False" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 29, + "outputs": [], + "source": [ + "res = fit.fit(x_, y_)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "Visualize the results of the optimization." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 30, + "outputs": [ + { + "data": { + "text/html": "\n
\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"55f573f9-e5f7-44ea-98a0-08fcf3b9547d\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"GridStack1\",\"overrides\":[],\"properties\":[{\"default\":\"warn\",\"kind\":null,\"name\":\"mode\"},{\"default\":null,\"kind\":null,\"name\":\"ncols\"},{\"default\":null,\"kind\":null,\"name\":\"nrows\"},{\"default\":true,\"kind\":null,\"name\":\"allow_resize\"},{\"default\":true,\"kind\":null,\"name\":\"allow_drag\"},{\"default\":[],\"kind\":null,\"name\":\"state\"}]},{\"extends\":null,\"module\":null,\"name\":\"click1\",\"overrides\":[],\"properties\":[{\"default\":\"\",\"kind\":null,\"name\":\"terminal_output\"},{\"default\":\"\",\"kind\":null,\"name\":\"debug_name\"},{\"default\":0,\"kind\":null,\"name\":\"clears\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationAreaBase1\",\"overrides\":[],\"properties\":[{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationArea1\",\"overrides\":[],\"properties\":[{\"default\":[],\"kind\":null,\"name\":\"notifications\"},{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"},{\"default\":[{\"background\":\"#ffc107\",\"icon\":{\"className\":\"fas fa-exclamation-triangle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"warning\"},{\"background\":\"#007bff\",\"icon\":{\"className\":\"fas fa-info-circle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"info\"}],\"kind\":null,\"name\":\"types\"}]},{\"extends\":null,\"module\":null,\"name\":\"Notification\",\"overrides\":[],\"properties\":[{\"default\":null,\"kind\":null,\"name\":\"background\"},{\"default\":3000,\"kind\":null,\"name\":\"duration\"},{\"default\":null,\"kind\":null,\"name\":\"icon\"},{\"default\":\"\",\"kind\":null,\"name\":\"message\"},{\"default\":null,\"kind\":null,\"name\":\"notification_type\"},{\"default\":false,\"kind\":null,\"name\":\"_destroyed\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"2329\"},{\"id\":\"2399\"}]},\"id\":\"2438\",\"type\":\"Column\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2364\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"2418\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2338\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2404\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2370\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2544\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2354\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Polarization, U + D\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"2330\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2336\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2434\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2547\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2424\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2334\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2353\",\"type\":\"HelpTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2365\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"2555\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"2362\"}},\"id\":\"2367\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2406\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2419\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"U + D\"},\"renderers\":[{\"id\":\"2366\"}]},\"id\":\"2379\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2554\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"ZmZmZmZmEkAzMzMzMzMTQAAAAAAAABRAzczMzMzMFECamZmZmZkVQGZmZmZmZhZAMzMzMzMzF0AAAAAAAAAYQM3MzMzMzBhAmpmZmZmZGUBmZmZmZmYaQDMzMzMzMxtAAAAAAAAAHEDNzMzMzMwcQJqZmZmZmR1AZmZmZmZmHkAzMzMzMzMfQAAAAAAAACBAZmZmZmZmIEDNzMzMzMwgQDMzMzMzMyFAmpmZmZmZIUAAAAAAAAAiQGZmZmZmZiJAzczMzMzMIkAzMzMzMzMjQJqZmZmZmSNAAAAAAAAAJEBmZmZmZmYkQM3MzMzMzCRAMzMzMzMzJUCamZmZmZklQAAAAAAAACZAZmZmZmZmJkDNzMzMzMwmQDMzMzMzMydAmpmZmZmZJ0AAAAAAAAAoQGZmZmZmZihAzczMzMzMKEAzMzMzMzMpQJqZmZmZmSlAAAAAAAAAKkBmZmZmZmYqQM3MzMzMzCpAMzMzMzMzK0CamZmZmZkrQAAAAAAAACxAZmZmZmZmLEDNzMzMzMwsQDMzMzMzMy1AmpmZmZmZLUAAAAAAAAAuQGZmZmZmZi5AzczMzMzMLkAzMzMzMzMvQJqZmZmZmS9AAAAAAAAAMEAzMzMzMzMwQGZmZmZmZjBAmpmZmZmZMEDNzMzMzMwwQAAAAAAAADFAMzMzMzMzMUBmZmZmZmYxQJqZmZmZmTFAzczMzMzMMUAAAAAAAAAyQDMzMzMzMzJAZmZmZmZmMkCamZmZmZkyQM3MzMzMzDJAAAAAAAAAM0AzMzMzMzMzQGZmZmZmZjNAmpmZmZmZM0DNzMzMzMwzQAAAAAAAADRAMzMzMzMzNEBmZmZmZmY0QJqZmZmZmTRAzczMzMzMNEAAAAAAAAA1QDMzMzMzMzVAZmZmZmZmNUCamZmZmZk1QM3MzMzMzDVAAAAAAAAANkAzMzMzMzM2QGZmZmZmZjZAmpmZmZmZNkDNzMzMzMw2QAAAAAAAADdAMzMzMzMzN0BmZmZmZmY3QJqZmZmZmTdAzczMzMzMN0AAAAAAAAA4QDMzMzMzMzhAZmZmZmZmOECamZmZmZk4QM3MzMzMzDhAAAAAAAAAOUAzMzMzMzM5QGZmZmZmZjlAmpmZmZmZOUDNzMzMzMw5QAAAAAAAADpAMzMzMzMzOkBmZmZmZmY6QJqZmZmZmTpAzczMzMzMOkAAAAAAAAA7QDMzMzMzMztAZmZmZmZmO0CamZmZmZk7QM3MzMzMzDtAAAAAAAAAPEAzMzMzMzM8QGZmZmZmZjxAmpmZmZmZPEDNzMzMzMw8QAAAAAAAAD1AMzMzMzMzPUBmZmZmZmY9QJqZmZmZmT1AzczMzMzMPUAAAAAAAAA+QDMzMzMzMz5AZmZmZmZmPkCamZmZmZk+QM3MzMzMzD5AAAAAAAAAP0AzMzMzMzM/QGZmZmZmZj9AmpmZmZmZP0DNzMzMzMw/QAAAAAAAAEBAmpmZmZkZQEAzMzMzMzNAQM3MzMzMTEBAZmZmZmZmQEAAAAAAAIBAQJqZmZmZmUBAMzMzMzOzQEDNzMzMzMxAQGZmZmZm5kBAAAAAAAAAQUCamZmZmRlBQDMzMzMzM0FAzczMzMxMQUBmZmZmZmZBQAAAAAAAgEFAmpmZmZmZQUAzMzMzM7NBQM3MzMzMzEFAZmZmZmbmQUAAAAAAAABCQJqZmZmZGUJAMzMzMzMzQkDNzMzMzExCQGZmZmZmZkJAAAAAAACAQkCamZmZmZlCQDMzMzMzs0JAzczMzMzMQkBmZmZmZuZCQAAAAAAAAENAmpmZmZkZQ0AzMzMzMzNDQM3MzMzMTENAZmZmZmZmQ0AAAAAAAIBDQJqZmZmZmUNAMzMzMzOzQ0DNzMzMzMxDQGZmZmZm5kNAAAAAAAAARECamZmZmRlEQDMzMzMzM0RAzczMzMxMREBmZmZmZmZEQAAAAAAAgERAmpmZmZmZREAzMzMzM7NEQM3MzMzMzERAZmZmZmbmREAAAAAAAABFQJqZmZmZGUVAMzMzMzMzRUDNzMzMzExFQGZmZmZmZkVAAAAAAACARUCamZmZmZlFQDMzMzMzs0VAzczMzMzMRUBmZmZmZuZFQAAAAAAAAEZAmpmZmZkZRkAzMzMzMzNGQM3MzMzMTEZAZmZmZmZmRkAAAAAAAIBGQJqZmZmZmUZAMzMzMzOzRkDNzMzMzMxGQGZmZmZm5kZAAAAAAAAAR0CamZmZmRlHQDMzMzMzM0dAzczMzMxMR0BmZmZmZmZHQAAAAAAAgEdAmpmZmZmZR0AzMzMzM7NHQM3MzMzMzEdAZmZmZmbmR0AAAAAAAABIQJqZmZmZGUhAMzMzMzMzSEDNzMzMzExIQGZmZmZmZkhAAAAAAACASECamZmZmZlIQDMzMzMzs0hAzczMzMzMSEBmZmZmZuZIQAAAAAAAAElAmpmZmZkZSUAzMzMzMzNJQM3MzMzMTElAZmZmZmZmSUAAAAAAAIBJQJqZmZmZmUlAMzMzMzOzSUDNzMzMzMxJQGZmZmZm5klAAAAAAAAASkCamZmZmRlKQDMzMzMzM0pAzczMzMxMSkBmZmZmZmZKQAAAAAAAgEpAmpmZmZmZSkAzMzMzM7NKQM3MzMzMzEpAZmZmZmbmSkAAAAAAAABLQJqZmZmZGUtAMzMzMzMzS0DNzMzMzExLQGZmZmZmZktAAAAAAACAS0CamZmZmZlLQDMzMzMzs0tAzczMzMzMS0BmZmZmZuZLQAAAAAAAAExAmpmZmZkZTEAzMzMzMzNMQM3MzMzMTExAZmZmZmZmTEAAAAAAAIBMQJqZmZmZmUxAMzMzMzOzTEDNzMzMzMxMQGZmZmZm5kxAAAAAAAAATUCamZmZmRlNQDMzMzMzM01AzczMzMxMTUBmZmZmZmZNQAAAAAAAgE1AmpmZmZmZTUAzMzMzM7NNQM3MzMzMzE1AZmZmZmbmTUAAAAAAAABOQJqZmZmZGU5AMzMzMzMzTkDNzMzMzExOQGZmZmZmZk5AAAAAAACATkCamZmZmZlOQDMzMzMzs05AzczMzMzMTkBmZmZmZuZOQAAAAAAAAE9AmpmZmZkZT0AzMzMzMzNPQM3MzMzMTE9AZmZmZmZmT0AAAAAAAIBPQJqZmZmZmU9AMzMzMzOzT0DNzMzMzMxPQGZmZmZm5k9AAAAAAAAAUEDNzMzMzAxQQJqZmZmZGVBAZmZmZmYmUEAzMzMzMzNQQAAAAAAAQFBAzczMzMxMUECamZmZmVlQQGZmZmZmZlBAMzMzMzNzUEAAAAAAAIBQQM3MzMzMjFBAmpmZmZmZUEBmZmZmZqZQQDMzMzMzs1BAAAAAAADAUEDNzMzMzMxQQJqZmZmZ2VBAZmZmZmbmUEAzMzMzM/NQQAAAAAAAAFFAzczMzMwMUUCamZmZmRlRQGZmZmZmJlFAMzMzMzMzUUAAAAAAAEBRQM3MzMzMTFFAmpmZmZlZUUBmZmZmZmZRQDMzMzMzc1FAAAAAAACAUUDNzMzMzIxRQJqZmZmZmVFAZmZmZmamUUAzMzMzM7NRQAAAAAAAwFFAzczMzMzMUUCamZmZmdlRQGZmZmZm5lFAMzMzMzPzUUAAAAAAAABSQM3MzMzMDFJAmpmZmZkZUkBmZmZmZiZSQDMzMzMzM1JAAAAAAABAUkDNzMzMzExSQJqZmZmZWVJAZmZmZmZmUkAzMzMzM3NSQAAAAAAAgFJAzczMzMyMUkCamZmZmZlSQGZmZmZmplJAMzMzMzOzUkAAAAAAAMBSQM3MzMzMzFJAmpmZmZnZUkBmZmZmZuZSQDMzMzMz81JAAAAAAAAAU0DNzMzMzAxTQJqZmZmZGVNAZmZmZmYmU0AzMzMzMzNTQAAAAAAAQFNAzczMzMxMU0CamZmZmVlTQGZmZmZmZlNAMzMzMzNzU0AAAAAAAIBTQM3MzMzMjFNAmpmZmZmZU0BmZmZmZqZTQDMzMzMzs1NAAAAAAADAU0DNzMzMzMxTQJqZmZmZ2VNAZmZmZmbmU0AzMzMzM/NTQAAAAAAAAFRAzczMzMwMVECamZmZmRlUQGZmZmZmJlRAMzMzMzMzVEAAAAAAAEBUQM3MzMzMTFRAmpmZmZlZVEBmZmZmZmZUQDMzMzMzc1RAAAAAAACAVEA=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"2376\"},\"selection_policy\":{\"id\":\"2375\"}},\"id\":\"2362\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2408\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2432\"},\"glyph\":{\"id\":\"2433\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2435\"},\"nonselection_glyph\":{\"id\":\"2434\"},\"view\":{\"id\":\"2437\"}},\"id\":\"2436\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"overlay\":{\"id\":\"2354\"}},\"id\":\"2350\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"2424\"}},\"id\":\"2420\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2362\"},\"glyph\":{\"id\":\"2363\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2365\"},\"nonselection_glyph\":{\"id\":\"2364\"},\"view\":{\"id\":\"2367\"}},\"id\":\"2366\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2341\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"2432\"}},\"id\":\"2437\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2375\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2363\",\"type\":\"Scatter\"},{\"attributes\":{\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2433\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2415\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2381\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2402\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2332\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"2410\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2413\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2349\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2352\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2345\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2544\"},\"group\":null,\"major_label_policy\":{\"id\":\"2545\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2415\"}},\"id\":\"2414\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2435\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2422\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis_label\":\"Intensity\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2370\"},\"group\":null,\"major_label_policy\":{\"id\":\"2371\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2345\"}},\"id\":\"2344\",\"type\":\"LinearAxis\"},{\"attributes\":{\"background_fill_alpha\":0.25,\"background_fill_color\":\"#20262B\",\"border_line_alpha\":0,\"coordinates\":null,\"glyph_width\":15,\"group\":null,\"items\":[{\"id\":\"2379\"},{\"id\":\"2398\"}],\"label_standoff\":8,\"label_text_color\":\"#E0E0E0\",\"label_text_font\":\"Helvetica\",\"label_text_font_size\":\"1.025em\",\"spacing\":8},\"id\":\"2378\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"2340\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2343\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"2396\"},\"selection_policy\":{\"id\":\"2395\"}},\"id\":\"2380\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2374\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2351\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2421\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2376\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2371\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Difference\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"2400\",\"type\":\"Title\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2383\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2545\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"2414\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2417\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2373\"},\"group\":null,\"major_label_policy\":{\"id\":\"2374\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2341\"}},\"id\":\"2340\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2423\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2395\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"2410\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"2413\"},{\"id\":\"2417\"}],\"height\":150,\"left\":[{\"id\":\"2414\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"2436\"}],\"title\":{\"id\":\"2400\"},\"toolbar\":{\"id\":\"2425\"},\"width\":990,\"x_range\":{\"id\":\"2402\"},\"x_scale\":{\"id\":\"2406\"},\"y_range\":{\"id\":\"2404\"},\"y_scale\":{\"id\":\"2408\"}},\"id\":\"2399\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis\":{\"id\":\"2344\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2347\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"Sim\"},\"renderers\":[{\"id\":\"2384\"}]},\"id\":\"2398\",\"type\":\"LegendItem\"},{\"attributes\":{\"tools\":[{\"id\":\"2348\"},{\"id\":\"2349\"},{\"id\":\"2350\"},{\"id\":\"2351\"},{\"id\":\"2352\"},{\"id\":\"2353\"}]},\"id\":\"2355\",\"type\":\"Toolbar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2380\"},\"glyph\":{\"id\":\"2381\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2383\"},\"nonselection_glyph\":{\"id\":\"2382\"},\"view\":{\"id\":\"2385\"}},\"id\":\"2384\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"2380\"}},\"id\":\"2385\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2411\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"2theta\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2547\"},\"group\":null,\"major_label_policy\":{\"id\":\"2548\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2411\"}},\"id\":\"2410\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2348\",\"type\":\"PanTool\"},{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"2340\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"2343\"},{\"id\":\"2347\"},{\"id\":\"2378\"}],\"height\":300,\"left\":[{\"id\":\"2344\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"2366\"},{\"id\":\"2384\"}],\"title\":{\"id\":\"2330\"},\"toolbar\":{\"id\":\"2355\"},\"width\":990,\"x_range\":{\"id\":\"2332\"},\"x_scale\":{\"id\":\"2336\"},\"y_range\":{\"id\":\"2334\"},\"y_scale\":{\"id\":\"2338\"}},\"id\":\"2329\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2382\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2548\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2373\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"2555\"},\"selection_policy\":{\"id\":\"2554\"}},\"id\":\"2432\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2396\",\"type\":\"Selection\"},{\"attributes\":{\"tools\":[{\"id\":\"2418\"},{\"id\":\"2419\"},{\"id\":\"2420\"},{\"id\":\"2421\"},{\"id\":\"2422\"},{\"id\":\"2423\"}]},\"id\":\"2425\",\"type\":\"Toolbar\"}],\"root_ids\":[\"2438\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n const render_items = [{\"docid\":\"55f573f9-e5f7-44ea-98a0-08fcf3b9547d\",\"root_ids\":[\"2438\"],\"roots\":{\"2438\":\"ca388338-57b0-4c57-9639-599512ddd63f\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "2438" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "p1 = figure(**opts, title='Polarization, U + D')\n", + "p1.scatter(x_[0::2], res.y_obs[0::2], legend='U + D', color=Spectral6[0])\n", + "p1.line(x_[0::2], res.y_calc[0::2], legend='Sim', line_width=2, color=Spectral6[-1])\n", + "p1.yaxis.axis_label = 'Intensity'\n", + "p1.legend.location = 'top_right'\n", + "p11 = figure(width=FIGURE_WIDTH, height=int(FIGURE_HEIGHT / 2), min_border=0, title='Difference')\n", + "p11.line(x_[0::2], res.y_obs[0::2] - res.y_calc[0::2], line_width=2, color=Spectral6[1])\n", + "p11.xaxis.axis_label = '2theta'\n", + "show(column(p1, p11))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 31, + "outputs": [ + { + "data": { + "text/html": "\n
\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"cbc1eb52-6f47-4934-8458-59b8b9026eb3\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"GridStack1\",\"overrides\":[],\"properties\":[{\"default\":\"warn\",\"kind\":null,\"name\":\"mode\"},{\"default\":null,\"kind\":null,\"name\":\"ncols\"},{\"default\":null,\"kind\":null,\"name\":\"nrows\"},{\"default\":true,\"kind\":null,\"name\":\"allow_resize\"},{\"default\":true,\"kind\":null,\"name\":\"allow_drag\"},{\"default\":[],\"kind\":null,\"name\":\"state\"}]},{\"extends\":null,\"module\":null,\"name\":\"click1\",\"overrides\":[],\"properties\":[{\"default\":\"\",\"kind\":null,\"name\":\"terminal_output\"},{\"default\":\"\",\"kind\":null,\"name\":\"debug_name\"},{\"default\":0,\"kind\":null,\"name\":\"clears\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationAreaBase1\",\"overrides\":[],\"properties\":[{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"}]},{\"extends\":null,\"module\":null,\"name\":\"NotificationArea1\",\"overrides\":[],\"properties\":[{\"default\":[],\"kind\":null,\"name\":\"notifications\"},{\"default\":\"bottom-right\",\"kind\":null,\"name\":\"position\"},{\"default\":0,\"kind\":null,\"name\":\"_clear\"},{\"default\":[{\"background\":\"#ffc107\",\"icon\":{\"className\":\"fas fa-exclamation-triangle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"warning\"},{\"background\":\"#007bff\",\"icon\":{\"className\":\"fas fa-info-circle\",\"color\":\"white\",\"tagName\":\"i\"},\"type\":\"info\"}],\"kind\":null,\"name\":\"types\"}]},{\"extends\":null,\"module\":null,\"name\":\"Notification\",\"overrides\":[],\"properties\":[{\"default\":null,\"kind\":null,\"name\":\"background\"},{\"default\":3000,\"kind\":null,\"name\":\"duration\"},{\"default\":null,\"kind\":null,\"name\":\"icon\"},{\"default\":\"\",\"kind\":null,\"name\":\"message\"},{\"default\":null,\"kind\":null,\"name\":\"notification_type\"},{\"default\":false,\"kind\":null,\"name\":\"_destroyed\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"2667\"},{\"id\":\"2737\"}]},\"id\":\"2776\",\"type\":\"Column\"},{\"attributes\":{\"overlay\":{\"id\":\"2762\"}},\"id\":\"2758\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"2734\"},\"selection_policy\":{\"id\":\"2733\"}},\"id\":\"2718\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"2770\"}},\"id\":\"2775\",\"type\":\"CDSView\"},{\"attributes\":{\"tools\":[{\"id\":\"2756\"},{\"id\":\"2757\"},{\"id\":\"2758\"},{\"id\":\"2759\"},{\"id\":\"2760\"},{\"id\":\"2761\"}]},\"id\":\"2763\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"2718\"}},\"id\":\"2723\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2708\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2670\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2689\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2711\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"Sim\"},\"renderers\":[{\"id\":\"2722\"}]},\"id\":\"2736\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2703\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"2908\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2683\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"2748\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2751\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2759\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"2700\"}},\"id\":\"2705\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2756\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2714\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2914\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2718\"},\"glyph\":{\"id\":\"2719\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2721\"},\"nonselection_glyph\":{\"id\":\"2720\"},\"view\":{\"id\":\"2723\"}},\"id\":\"2722\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2753\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"2682\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2685\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2746\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2711\"},\"group\":null,\"major_label_policy\":{\"id\":\"2712\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2679\"}},\"id\":\"2678\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2709\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2733\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2904\"},\"group\":null,\"major_label_policy\":{\"id\":\"2905\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2753\"}},\"id\":\"2752\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2770\"},\"glyph\":{\"id\":\"2771\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2773\"},\"nonselection_glyph\":{\"id\":\"2772\"},\"view\":{\"id\":\"2775\"}},\"id\":\"2774\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"background_fill_alpha\":0.25,\"background_fill_color\":\"#20262B\",\"border_line_alpha\":0,\"coordinates\":null,\"glyph_width\":15,\"group\":null,\"items\":[{\"id\":\"2717\"},{\"id\":\"2736\"}],\"label_standoff\":8,\"label_text_color\":\"#E0E0E0\",\"label_text_font\":\"Helvetica\",\"label_text_font_size\":\"1.025em\",\"spacing\":8},\"id\":\"2716\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"2687\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2713\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2744\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"2714\"},\"selection_policy\":{\"id\":\"2713\"}},\"id\":\"2700\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"U - D\"},\"renderers\":[{\"id\":\"2704\"}]},\"id\":\"2717\",\"type\":\"LegendItem\"},{\"attributes\":{\"tools\":[{\"id\":\"2686\"},{\"id\":\"2687\"},{\"id\":\"2688\"},{\"id\":\"2689\"},{\"id\":\"2690\"},{\"id\":\"2691\"}]},\"id\":\"2693\",\"type\":\"Toolbar\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[388]}},\"selected\":{\"id\":\"2915\"},\"selection_policy\":{\"id\":\"2914\"}},\"id\":\"2770\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2772\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Polarization, U - D\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"2668\",\"type\":\"Title\"},{\"attributes\":{\"axis\":{\"id\":\"2678\"},\"coordinates\":null,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2681\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2761\",\"type\":\"HelpTool\"},{\"attributes\":{\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2701\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"2907\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2734\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2691\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Difference\",\"text_color\":\"#E0E0E0\",\"text_font\":\"Helvetica\",\"text_font_size\":\"1.15em\"},\"id\":\"2738\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2742\",\"type\":\"DataRange1d\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2720\",\"type\":\"Line\"},{\"attributes\":{\"axis_label\":\"Intensity\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2708\"},\"group\":null,\"major_label_policy\":{\"id\":\"2709\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2683\"}},\"id\":\"2682\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2712\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2674\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2760\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2676\",\"type\":\"LinearScale\"},{\"attributes\":{\"overlay\":{\"id\":\"2692\"}},\"id\":\"2688\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2719\",\"type\":\"Line\"},{\"attributes\":{\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2771\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2757\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2905\",\"type\":\"AllLabels\"},{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"2748\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"2751\"},{\"id\":\"2755\"}],\"height\":150,\"left\":[{\"id\":\"2752\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"2774\"}],\"title\":{\"id\":\"2738\"},\"toolbar\":{\"id\":\"2763\"},\"width\":990,\"x_range\":{\"id\":\"2740\"},\"x_scale\":{\"id\":\"2744\"},\"y_range\":{\"id\":\"2742\"},\"y_scale\":{\"id\":\"2746\"}},\"id\":\"2737\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"2749\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2672\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"2752\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.25,\"grid_line_color\":\"#E0E0E0\",\"group\":null,\"ticker\":null},\"id\":\"2755\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2692\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2762\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#3288bd\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#3288bd\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#3288bd\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2702\",\"type\":\"Scatter\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#99d594\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2773\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2740\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2679\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2690\",\"type\":\"ResetTool\"},{\"attributes\":{\"background_fill_color\":\"#3f3f3f\",\"below\":[{\"id\":\"2678\"}],\"border_fill_color\":\"#2f2f2f\",\"center\":[{\"id\":\"2681\"},{\"id\":\"2685\"},{\"id\":\"2716\"}],\"height\":300,\"left\":[{\"id\":\"2682\"}],\"min_border\":0,\"outline_line_alpha\":0.25,\"outline_line_color\":\"#E0E0E0\",\"renderers\":[{\"id\":\"2704\"},{\"id\":\"2722\"}],\"title\":{\"id\":\"2668\"},\"toolbar\":{\"id\":\"2693\"},\"width\":990,\"x_range\":{\"id\":\"2670\"},\"x_scale\":{\"id\":\"2674\"},\"y_range\":{\"id\":\"2672\"},\"y_scale\":{\"id\":\"2676\"}},\"id\":\"2667\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"2915\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2700\"},\"glyph\":{\"id\":\"2701\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2703\"},\"nonselection_glyph\":{\"id\":\"2702\"},\"view\":{\"id\":\"2705\"}},\"id\":\"2704\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2904\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#d53e4f\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2721\",\"type\":\"Line\"},{\"attributes\":{\"axis_label\":\"2theta\",\"axis_label_standoff\":10,\"axis_label_text_color\":\"#E0E0E0\",\"axis_label_text_font\":\"Helvetica\",\"axis_label_text_font_size\":\"1.25em\",\"axis_label_text_font_style\":\"normal\",\"axis_line_alpha\":0,\"axis_line_color\":\"#E0E0E0\",\"coordinates\":null,\"formatter\":{\"id\":\"2907\"},\"group\":null,\"major_label_policy\":{\"id\":\"2908\"},\"major_label_text_color\":\"#E0E0E0\",\"major_label_text_font\":\"Helvetica\",\"major_label_text_font_size\":\"1.025em\",\"major_tick_line_alpha\":0,\"major_tick_line_color\":\"#E0E0E0\",\"minor_tick_line_alpha\":0,\"minor_tick_line_color\":\"#E0E0E0\",\"ticker\":{\"id\":\"2749\"}},\"id\":\"2748\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2686\",\"type\":\"PanTool\"}],\"root_ids\":[\"2776\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n const render_items = [{\"docid\":\"cbc1eb52-6f47-4934-8458-59b8b9026eb3\",\"root_ids\":[\"2776\"],\"roots\":{\"2776\":\"25246255-9473-4004-8f74-0dda5386dd04\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "2776" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "p2 = figure(**opts, title='Polarization, U - D')\n", + "p2.scatter(x_[1::2], res.y_obs[1::2], legend='U - D', color=Spectral6[0])\n", + "p2.line(x_[1::2], res.y_calc[1::2], legend='Sim', line_width=2, color=Spectral6[-1])\n", + "p2.yaxis.axis_label = 'Intensity'\n", + "p2.legend.location = 'top_right'\n", + "p22 = figure(width=FIGURE_WIDTH, height=int(FIGURE_HEIGHT / 2), min_border=0, title='Difference')\n", + "p22.line(x_[1::2], res.y_obs[1::2] - res.y_calc[1::2], line_width=2, color=Spectral6[1])\n", + "p22.xaxis.axis_label = '2theta'\n", + "show(column(p2, p22))" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "The optimization results are shown below." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 32, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "parameters = j2.get_fit_parameters()\n", + "for parameter in parameters:\n", + " print(parameter)" + ], "metadata": { "collapsed": false, "pycharm": { diff --git a/examples/Simulation.ipynb b/examples/Simulation.ipynb index c9dc12c6..e7b40c76 100644 --- a/examples/Simulation.ipynb +++ b/examples/Simulation.ipynb @@ -3,7 +3,11 @@ { "cell_type": "markdown", "id": "8a365a14", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "# Simulation of the diffraction pattern\n", "This notebook shows how we can create a sample (phase) from atoms and calculate diffraction profiles using both constant wavelength and time-of-flight experiment types." @@ -13,7 +17,11 @@ "cell_type": "code", "execution_count": 1, "id": "9ecc4733", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -47,7 +55,11 @@ "cell_type": "code", "execution_count": 2, "id": "d76d50fc", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { @@ -371,7 +383,11 @@ { "cell_type": "markdown", "id": "283767f9", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Sample" ] @@ -379,7 +395,11 @@ { "cell_type": "markdown", "id": "19a39b25", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Create an atom using `Site` interface" ] @@ -388,7 +408,11 @@ "cell_type": "code", "execution_count": 3, "id": "41020330", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "atom = Site.from_pars(label=\"Cl\",\n", @@ -401,7 +425,11 @@ { "cell_type": "markdown", "id": "910aed87", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Create a phase, set space group, add atom" ] @@ -410,7 +438,11 @@ "cell_type": "code", "execution_count": 4, "id": "1e2f3193", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "phase = Phase(name=\"salt\")\n", @@ -423,7 +455,11 @@ { "cell_type": "markdown", "id": "d4532d8b", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Add another atom (using `Phase` interface)" ] @@ -432,7 +468,11 @@ "cell_type": "code", "execution_count": 5, "id": "4231d16a", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "phase.add_atom('Na', 'Na', 0.5, 0.5, 0.5)" @@ -441,7 +481,11 @@ { "cell_type": "markdown", "id": "81ace320", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Visualise the structure" ] @@ -450,7 +494,11 @@ "cell_type": "code", "execution_count": 6, "id": "e68ddbea", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { @@ -524,7 +572,11 @@ { "cell_type": "markdown", "id": "ebe0e0ee", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Create Phases object" ] @@ -533,7 +585,11 @@ "cell_type": "code", "execution_count": 7, "id": "29071aa2", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "phases = Phases()\n", @@ -543,7 +599,11 @@ { "cell_type": "markdown", "id": "07db27b5", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Experiment" ] @@ -551,7 +611,11 @@ { "cell_type": "markdown", "id": "e93c42b9", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Create and modify a `Parameters` object" ] @@ -560,7 +624,11 @@ "cell_type": "code", "execution_count": 8, "id": "83e3845f", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "parameters = CWParams.default()\n", @@ -575,7 +643,11 @@ { "cell_type": "markdown", "id": "370f0baa", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Create and modify a Pattern object" ] @@ -584,7 +656,11 @@ "cell_type": "code", "execution_count": 9, "id": "70fa1571", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "pattern = Powder1DParameters.default()\n", @@ -597,7 +673,11 @@ "cell_type": "code", "execution_count": 10, "id": "1ed88f8e", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "calculator = Calculator(interface_name='CrysPy') # this is the default" @@ -607,7 +687,11 @@ "cell_type": "code", "execution_count": 11, "id": "784fb8e5", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -624,7 +708,11 @@ { "cell_type": "markdown", "id": "42da041a", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Finally, create the job" ] @@ -633,7 +721,11 @@ "cell_type": "code", "execution_count": 12, "id": "c90662f7", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -651,7 +743,11 @@ "cell_type": "code", "execution_count": 13, "id": "210bc79d", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -670,7 +766,11 @@ { "cell_type": "markdown", "id": "eb234f76", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Analysis" ] @@ -678,7 +778,11 @@ { "cell_type": "markdown", "id": "00e24eab", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Calculate the profile using the calculator we defined previously.\n", "Note that we don't run anything on the `Sample` object but on a separate `Calculator` instance" @@ -688,7 +792,11 @@ "cell_type": "code", "execution_count": 14, "id": "f556cc94", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { @@ -757,7 +865,11 @@ { "cell_type": "markdown", "id": "0f2cb72f", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Experiment" ] @@ -765,7 +877,11 @@ { "cell_type": "markdown", "id": "161efebd", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Modify the parameters to correspond to a TOF experiment" ] @@ -774,7 +890,11 @@ "cell_type": "code", "execution_count": 15, "id": "59381e83", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "parameters = TOFParams.default()\n", @@ -787,7 +907,11 @@ { "cell_type": "markdown", "id": "ea998649", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Create new job (TOF) with new parameters, but old phase and calculator objects" ] @@ -796,7 +920,11 @@ "cell_type": "code", "execution_count": 16, "id": "2aa1648d", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -814,7 +942,11 @@ "cell_type": "code", "execution_count": 17, "id": "9d612a23", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -833,7 +965,11 @@ { "cell_type": "markdown", "id": "2245224b", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Analysis" ] @@ -841,7 +977,11 @@ { "cell_type": "markdown", "id": "f6676f54", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "#### Calculate the profile again, this time based on the TOF parameters" ] @@ -850,7 +990,11 @@ "cell_type": "code", "execution_count": 18, "id": "eac224b9", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { @@ -920,7 +1064,11 @@ "cell_type": "code", "execution_count": null, "id": "088510c2", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [] } diff --git a/examples/structure_polarized.cif b/examples/structure_polarized.cif index 57a091f2..a4473642 100644 --- a/examples/structure_polarized.cif +++ b/examples/structure_polarized.cif @@ -1,15 +1,14 @@ -data_phase1 +data_Ho2Ti2O7 -_space_group_name_H-M_ref "F d -3 m" -_space_group_IT_coordinate_system_code 2 - -_cell_length_a 10.26355 -_cell_length_b 10.26355 -_cell_length_c 10.26355 -_cell_angle_alpha 90.00 -_cell_angle_beta 90.00 -_cell_angle_gamma 90.00 +_space_group_name_H-M_alt 'F d -3 m' +_space_group.IT_coordinate_system_code 2 +_cell_length_a 10.225 +_cell_length_b 10.225 +_cell_length_c 10.225 +_cell_angle_alpha 90.0 +_cell_angle_beta 90.0 +_cell_angle_gamma 90.0 loop_ _atom_site_label @@ -19,18 +18,11 @@ _atom_site_fract_y _atom_site_fract_z _atom_site_occupancy _atom_site_adp_type -_atom_site_u_iso_or_equiv -_atom_site_multiplicity -Ho1 Ho3+ 0.500000 0.500000 0.500000 1.0 Uiso 0.0 16 -Ti1 Ti3+ 0.000000 0.000000 0.000000 1.0 Uiso 0.0 16 -O1 O2- 0.329600 0.125000 0.125000 1.0 Uiso 0.0 48 -O2 O2- 0.375000 0.375000 0.375000 1.0 Uiso 0.0 8 - -loop_ -_atom_site_scat_label -_atom_site_scat_Lande -_atom_site_scat_kappa -Ho1 2.0 1.0 +_atom_site_U_iso_or_equiv +Ho Ho3+ 0.5 0.5 0.5 1.0 Uiso 0.0 +Ti Ti3+ 0.0 0.0 0.0 1.0 Uiso 0.0 +O1 O2- 0.32858 0.125 0.125 1.0 Uiso 0.0 +O2 O2- 0.375 0.375 0.375 1.0 Uiso 0.0 loop_ _atom_site_susceptibility_label @@ -41,10 +33,10 @@ _atom_site_susceptibility_chi_33 _atom_site_susceptibility_chi_12 _atom_site_susceptibility_chi_13 _atom_site_susceptibility_chi_23 -Ho1 Cani 3.281(18) 3.28100 3.28100 3.712(16) 3.71200 3.71200 +Ho Cani 3.826 3.826 3.826 3.738 3.738 3.738 loop_ -_phase_label -_phase_scale -_phase_igsize -phase1 0.024678(78) 0.0 +_atom_site_scat_label +_atom_site_scat_lande +_atom_site_scat_kappa +Ho 2.0 1.0 \ No newline at end of file From 59ecaa7597a0f498f86e72101d042489d29e6fb4 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Thu, 21 Jul 2022 12:03:24 +0200 Subject: [PATCH 309/312] Use develop branch of easyCrystallography (with undo/redo fix) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 88175f32..237dc16a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fi CFML = '^0.0.1' GSASII = '^0.0.1' easyScienceCore = '>=0.2.3' -easyCrystallography = '>=0.1.2' +easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'develop' } #'>=0.1.2' [tool.poetry.dev-dependencies] pytest = "^7.1" From 3c12f5b9909d2670c33c0f1d64e2024e263b4c4f Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Thu, 21 Jul 2022 12:13:23 +0200 Subject: [PATCH 310/312] Added a conveience method --- easyDiffractionLib/Jobs.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/easyDiffractionLib/Jobs.py b/easyDiffractionLib/Jobs.py index 5ddb4008..fbc8677b 100644 --- a/easyDiffractionLib/Jobs.py +++ b/easyDiffractionLib/Jobs.py @@ -82,6 +82,24 @@ def plot_simulation(self, simulation_name=None): ) return self.datastore.store[sim_name].plot() + def add_experiment_data(self, x, y, e, experiment_name="None"): + + coord_name = self.name + "_" + experiment_name + "_" + self._x_axis_name + self.datastore.store.easyCore.add_coordinate(coord_name, x) + + j = 0 + for i in range(0, len(y)): + data_y = y[i] + data_e = e[i] + self.datastore.store.easyCore.add_variable( + self.name + "_" + experiment_name + f"_I{j}", [coord_name], data_y + ) + self.datastore.store.easyCore.sigma_attach( + self.name + "_" + experiment_name + f"_I{j}", data_e + ) + j += 1 + + def add_experiment(self, experiment_name, file_path): data = np.loadtxt(file_path, unpack=True) coord_name = self.name + "_" + experiment_name + "_" + self._x_axis_name From a2c3b5dc25425a7ec1a889b349d5232e59b7b66e Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Mon, 25 Jul 2022 13:52:41 +0200 Subject: [PATCH 311/312] version change 0.0.3 -> 0.0.4 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 237dc16a..fe210cbd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ repo = 'easyDiffractionLib' [tool.poetry] name = "easyDiffraction" -version = "0.0.3" +version = "0.0.4" description = 'Making diffraction data analysis and modelling easy.' license = "BSD-3-Clause" authors = ["Simon Ward", "Andrew Sazonov"] From 7ad16f2823b621c391037cf4e5e801d0a643c005 Mon Sep 17 00:00:00 2001 From: Piotr Rozyczko Date: Mon, 25 Jul 2022 17:40:10 +0200 Subject: [PATCH 312/312] switch to master on crystallography bump release number --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index fe210cbd..8b3a50e1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ repo = 'easyDiffractionLib' [tool.poetry] name = "easyDiffraction" -version = "0.0.4" +version = "0.0.5" description = 'Making diffraction data analysis and modelling easy.' license = "BSD-3-Clause" authors = ["Simon Ward", "Andrew Sazonov"] @@ -36,7 +36,7 @@ cryspy = { git = 'https://github.com/ikibalin/cryspy.git', rev = 'bravis_type_fi CFML = '^0.0.1' GSASII = '^0.0.1' easyScienceCore = '>=0.2.3' -easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'develop' } #'>=0.1.2' +easyCrystallography = { git = 'https://github.com/easyScience/easyCrystallography.git', rev = 'master' } #'>=0.1.2' [tool.poetry.dev-dependencies] pytest = "^7.1"